8aafcbfe80
Previously, flow analysis used the class `ReferenceWithType` to track references for which it knew the type, and `Reference` (and its subclasses) to track references for which it didn't know the type (or for which the type was unimportant). This change removes the `Reference` class hierarchy, in favor of just using the integer promotion keys. This should reduce the number of memory allocations that flow analysis needs to make. A few pieces of information previously maintained by the `Reference` class hierarchy are now tracked elsewhere: the logic for computing non-promotion reasons is now in `_FlowAnalysisImpl._getNonPromotionReasons`, and the property name and property member (previously maintained by `_PropertyGetReference`) is now maintained by `_PropertyReferenceWithType` (a new subclass of `ReferenceWithType`). Bug: https://github.com/dart-lang/language/issues/2020 Change-Id: I72f2d80b3256bf8b9c9a30bcc55666ecb7c31e47 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/250242 Reviewed-by: Johnni Winther <johnniwinther@google.com> Commit-Queue: Paul Berry <paulberry@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.