Files
sdk/pkg/_fe_analyzer_shared
Paul Berry 34b30f4371 [flow analysis] Make callers store expression info for null aware access and cascades.
Changes the signature of the following flow analysis methods:
- `cascadeExpression_end`
- `nullAwareAccess_rightBegin`

so that they return an `ExpressionInfo`, which the caller is
responsible for storing.

Also changes `cascadeExpression_afterTarget` so that it no longer
passes the return value from `_nullAwareAccess_rightBegin` to
`_storeExpressionInfo`. This is unnecessary because the target of a
cascade is never be used as an argument to `_getExpressionInfo`.

Finally, changes the call sites of `nullAwareAccess_end` that do not
have to do with cascades, so that they are responsible for clearing
out the full expression info (by calling
`storeExpressionInfo(wholeExpression, null)`. This was previously done
by `nullAwareAccess_end` itself. (This is not necessary for cascades
because in cascades, the call to `nullAwareAccess_end` is always
followed by a call to `cascadeExpression_end`, and the caller stores
the expression info after *that* call).

Note that since one of the callers to `storeExpressionInfo` is now in
`NullShortingMixin` (which only has access to flow analysis via the
abstract base class `FlowAnalysisNullShortingInterface`), the abstract
declaration of `storeExpressionInfo` had to be moved from
`FlowAnalysis` to `FlowAnalysisNullShortingInterface`.

Change-Id: I6a6a696472bb914d408346b1ec8c264f6bc5f63f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/475160
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2026-01-23 06:48:26 -08:00
..
2025-02-19 09:33:31 -08:00

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.