2e5399e39e
Changes the API of `FlowAnalysis.logicalNot_end` so that it accepts an `ExpressionInfo` object describing the subexpression, and returns an `ExpressionInfo` object describing the whole expression; the client is responsible for getting the `ExpressionInfo` object prior to the call and storing it afterwards. In the process of making this change, I noticed the opportunity to make a small optimization: when the subexpression of a logical not expression has no associated `ExpressionInfo`, it is not necessary to create an `ExpressionInfo` for the whole logical not expression. Eventually all flow analysis APIs will be adjusted in a similar way, so that the clients become fully responsible for keeping track of the association between expressions and `ExpressionInfo` objects. Once that is done, clients will be free to maintain the mapping between expressions and `ExpressionInfo` objects in whatever way they see fit, they won't be required to store the assocation in a map. Change-Id: I6a6a6964313da85a94a52c5b59b663568058d84d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/471981 Commit-Queue: Paul Berry <paulberry@google.com> Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
FE/analyzer shared code
This package contains logic that is shared between the front_end and analyzer packages. It is intended solely to facilitate development of the Dart SDK, and is not intended for use by end users. In particular, this package has no public API, so no guarantee is made of compatibility between one version of the package and the next.
End users should consider using the analyzer package to analyze Dart source code.