5510ef63a6
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>