Files
sdk/pkg/_fe_analyzer_shared/test
Paul Berry 5510ef63a6 Clean up shared Operations classes.
The classes `Operations`, `TypeOperations`, and `VariableOperations`
are reworked as follows:

- The class `FlowAnalysisOperations<Variable, Type>` contains the API
  used by flow analysis to manipulate the client's representation of
  types and variables. This class (and the classes that support it) is
  located in `flow_analysis_operations.dart`, a sibling of
  `flow_analysis.dart`.

- Note that `FlowAnalysisOperations<Variable, Type>` has a supertype,
  `FlowAnalysisTypeOperations<Type>`, which contains the portion of
  the API that is only concerned with types. This simplifies the
  implementation of flow analysis, by letting some of its lower-level
  operations be agnostic to how the client represents variables.

- The class `TypeAnalyzerOperations<Variable, Type>` contains the API
  used by the shared type analyzer to manipulate the client's
  representation of types and variables. This class (and the classes
  that support it) is located in `type_analyzer_operations.dart`, a
  sibling of `type_analyzer.dart`.

- Several abstract methods and getters that were previously in the
  `TypeAnalyzer` class are moved to `TypeAnalyzerOperations`, for
  consistency with `FlowAnalysisOperations`.

Since the type analyzer calls out to flow analysis, the class
`TypeAnalyzerOperations` is a subtype of
`FlowAnalysisOperations`. This means that clients only need to
implement a single API, `TypeAnalyzerOperations`.

Change-Id: I7f33976d49bc998a7edd3f07f31576fe54886999
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/343280
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2023-12-22 21:33:32 +00:00
..