From b60e0aa5a10090bce296dbba032350143f0a7dfd Mon Sep 17 00:00:00 2001 From: Johnni Winther Date: Tue, 9 Feb 2021 12:41:12 +0000 Subject: [PATCH] Revert "[kernel] Ensure that visitors don't implicitly returns `null`" This reverts commit ce812168850795eb192567ccda926f0b8c64f12c. Reason for revert: Flutter dependency Original change's description: > [kernel] Ensure that visitors don't implicitly returns `null` > > This is in preparation to migrate package:kernel to null safety. > For the visitor interfaces to support non-nullable return types, the > implementations must avoid using `null` as return value in its base case. > > TEST=Refactoring > > Change-Id: Ie5e4153f8d3779d94957bb13b3d2d2a942040ff2 > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179760 > Commit-Queue: Johnni Winther > Reviewed-by: Jens Johansen TBR=jensj@google.com,johnniwinther@google.com Change-Id: I61b838d3371e6b1de2427716d056324c120be499 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183689 Reviewed-by: Johnni Winther Commit-Queue: Johnni Winther --- .../lib/js_interop_checks.dart | 2 +- .../lib/src/inferrer/builder_kernel.dart | 3 +- pkg/compiler/lib/src/ir/debug.dart | 3 +- pkg/compiler/lib/src/ir/scope_visitor.dart | 2 +- pkg/compiler/lib/src/ir/static_type_base.dart | 3 +- pkg/compiler/lib/src/ir/visitors.dart | 8 - pkg/compiler/lib/src/js_model/locals.dart | 2 +- .../lib/src/serialization/node_indexer.dart | 3 +- pkg/compiler/lib/src/ssa/builder_kernel.dart | 12 +- .../lib/src/ssa/kernel_string_builder.dart | 2 +- pkg/compiler/lib/src/ssa/loop_handler.dart | 5 +- .../lib/src/ssa/switch_continue_analysis.dart | 5 +- .../lib/src/kernel/expression_compiler.dart | 10 +- .../lib/src/kernel/kernel_helpers.dart | 3 - .../lib/src/kernel/nullable_inference.dart | 2 +- pkg/dev_compiler/lib/src/kernel/target.dart | 2 +- .../scope_offset_test.dart | 2 +- .../test/nullable_inference_test.dart | 2 +- .../src/fasta/kernel/constant_evaluator.dart | 2 +- .../lib/src/testing/id_extractor.dart | 3 +- .../comments_on_certain_arguments_tool.dart | 2 +- .../test/fasta/assert_locations_test.dart | 2 +- pkg/front_end/test/fasta/testing/suite.dart | 9 +- .../type_inference/type_schema_test.dart | 4 +- .../test/static_types/analysis_helper.dart | 2 +- .../lib/src/to_string_transformer.dart | 2 +- pkg/kernel/lib/binary/ast_to_binary.dart | 2 +- pkg/kernel/lib/src/bounds_checks.dart | 23 ++- .../src/tool/find_referenced_libraries.dart | 6 +- pkg/kernel/lib/text/ast_to_text.dart | 4 +- pkg/kernel/lib/text/text_serializer.dart | 23 --- pkg/kernel/lib/transformations/scanner.dart | 4 +- pkg/kernel/lib/verifier.dart | 14 +- pkg/kernel/lib/visitor.dart | 165 +++--------------- pkg/kernel/test/metadata_test.dart | 2 +- .../transformations/call_site_annotator.dart | 2 +- .../lib/transformations/devirtualization.dart | 2 +- .../transformations/mixin_deduplication.dart | 2 +- .../no_dynamic_invocations_annotator.dart | 2 +- .../type_flow/signature_shaking.dart | 4 +- .../type_flow/summary_collector.dart | 4 +- .../type_flow/transformer.dart | 4 +- pkg/vm/test/incremental_compiler_test.dart | 2 +- .../type_flow/summary_collector_test.dart | 2 +- 44 files changed, 103 insertions(+), 261 deletions(-) diff --git a/pkg/_js_interop_checks/lib/js_interop_checks.dart b/pkg/_js_interop_checks/lib/js_interop_checks.dart index 4f3ba97e0647..5bec8c49da19 100644 --- a/pkg/_js_interop_checks/lib/js_interop_checks.dart +++ b/pkg/_js_interop_checks/lib/js_interop_checks.dart @@ -23,7 +23,7 @@ import 'package:_fe_analyzer_shared/src/messages/codes.dart' import 'src/js_interop.dart'; -class JsInteropChecks extends RecursiveVisitor { +class JsInteropChecks extends RecursiveVisitor { final CoreTypes _coreTypes; final DiagnosticReporter _diagnosticsReporter; final Map _nativeClasses; diff --git a/pkg/compiler/lib/src/inferrer/builder_kernel.dart b/pkg/compiler/lib/src/inferrer/builder_kernel.dart index 1a91ae192a6f..337c54727363 100644 --- a/pkg/compiler/lib/src/inferrer/builder_kernel.dart +++ b/pkg/compiler/lib/src/inferrer/builder_kernel.dart @@ -37,8 +37,7 @@ import 'type_system.dart'; /// Calling [run] will start the work of visiting the body of the code to /// construct a set of inference-nodes that abstractly represent what the code /// is doing. -class KernelTypeGraphBuilder extends ir.Visitor - with ir.VisitorNullMixin { +class KernelTypeGraphBuilder extends ir.Visitor { final CompilerOptions _options; final JsClosedWorld _closedWorld; final InferrerEngine _inferrer; diff --git a/pkg/compiler/lib/src/ir/debug.dart b/pkg/compiler/lib/src/ir/debug.dart index 8e2adfad8485..01fc1f0d4fe4 100644 --- a/pkg/compiler/lib/src/ir/debug.dart +++ b/pkg/compiler/lib/src/ir/debug.dart @@ -11,8 +11,7 @@ import 'package:kernel/visitor.dart'; import '../util/util.dart' show Indentation, Tagging; -class DebugPrinter extends Visitor - with Indentation, Tagging, VisitorVoidMixin { +class DebugPrinter extends Visitor with Indentation, Tagging { @override StringBuffer sb = new StringBuffer(); diff --git a/pkg/compiler/lib/src/ir/scope_visitor.dart b/pkg/compiler/lib/src/ir/scope_visitor.dart index e5ff3263aca1..d2f8225d7887 100644 --- a/pkg/compiler/lib/src/ir/scope_visitor.dart +++ b/pkg/compiler/lib/src/ir/scope_visitor.dart @@ -14,7 +14,7 @@ import 'scope.dart'; /// a [VariableScopeModel] that can respond to queries about how a particular /// variable is being used at any point in the code. class ScopeModelBuilder extends ir.Visitor - with VariableCollectorMixin, ir.VisitorNullMixin { + with VariableCollectorMixin { final Dart2jsConstantEvaluator _constantEvaluator; ir.StaticTypeContext _staticTypeContext; diff --git a/pkg/compiler/lib/src/ir/static_type_base.dart b/pkg/compiler/lib/src/ir/static_type_base.dart index 67c60140b757..fe3d62b971c0 100644 --- a/pkg/compiler/lib/src/ir/static_type_base.dart +++ b/pkg/compiler/lib/src/ir/static_type_base.dart @@ -57,8 +57,7 @@ class ExactInterfaceType extends ir.InterfaceType { /// expression kind. For instance method invocations whose static type depend /// on the static types of the receiver and type arguments and the signature /// of the targeted procedure. -abstract class StaticTypeBase extends ir.Visitor - with ir.VisitorNullMixin { +abstract class StaticTypeBase extends ir.Visitor { final ir.TypeEnvironment _typeEnvironment; StaticTypeBase(this._typeEnvironment); diff --git a/pkg/compiler/lib/src/ir/visitors.dart b/pkg/compiler/lib/src/ir/visitors.dart index 94db2ae1b0f2..8d3d4970c139 100644 --- a/pkg/compiler/lib/src/ir/visitors.dart +++ b/pkg/compiler/lib/src/ir/visitors.dart @@ -35,9 +35,6 @@ class Stringifier extends ir.ExpressionVisitor { } return null; } - - @override - String defaultExpression(ir.Expression node) => null; } /// Visitor that converts kernel dart types into [DartType]. @@ -185,11 +182,6 @@ class DartTypeConverter extends ir.DartTypeVisitor { DartType visitNullType(ir.NullType node) { return elementMap.commonElements.nullType; } - - @override - DartType defaultDartType(ir.DartType node) { - throw UnsupportedError('Unsupported type $node (${node.runtimeType})'); - } } class ConstantValuefier extends ir.ComputeOnceConstantVisitor { diff --git a/pkg/compiler/lib/src/js_model/locals.dart b/pkg/compiler/lib/src/js_model/locals.dart index 103c5a84cee0..1d5cd004eeec 100644 --- a/pkg/compiler/lib/src/js_model/locals.dart +++ b/pkg/compiler/lib/src/js_model/locals.dart @@ -292,7 +292,7 @@ class KernelToLocalsMapImpl implements KernelToLocalsMap { } } -class JumpVisitor extends ir.Visitor with ir.VisitorVoidMixin { +class JumpVisitor extends ir.Visitor { int jumpIndex = 0; int labelIndex = 0; final MemberEntity member; diff --git a/pkg/compiler/lib/src/serialization/node_indexer.dart b/pkg/compiler/lib/src/serialization/node_indexer.dart index 52b27ac2c5aa..edc81ae20d9b 100644 --- a/pkg/compiler/lib/src/serialization/node_indexer.dart +++ b/pkg/compiler/lib/src/serialization/node_indexer.dart @@ -6,8 +6,7 @@ part of 'serialization.dart'; /// Visitor that ascribes an index to all [ir.TreeNode]s that potentially /// needed for serialization and deserialization. -class _TreeNodeIndexerVisitor extends ir.Visitor - with ir.VisitorVoidMixin { +class _TreeNodeIndexerVisitor extends ir.Visitor { int _currentIndex = 0; final Map _indexToNodeMap; final Map _nodeToIndexMap; diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart index 5b4f99fc968f..4bd37c89ef5f 100644 --- a/pkg/compiler/lib/src/ssa/builder_kernel.dart +++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart @@ -84,7 +84,7 @@ class StackFrame { this.staticTypeProvider); } -class KernelSsaGraphBuilder extends ir.Visitor with ir.VisitorVoidMixin { +class KernelSsaGraphBuilder extends ir.Visitor { /// Holds the resulting SSA graph. final HGraph graph = new HGraph(); @@ -6560,8 +6560,7 @@ class KernelTypeBuilder extends TypeBuilder { } } -class _ErroneousInitializerVisitor extends ir.Visitor - with ir.VisitorDefaultValueMixin { +class _ErroneousInitializerVisitor extends ir.Visitor { _ErroneousInitializerVisitor(); // TODO(30809): Use const constructor. @@ -6581,7 +6580,7 @@ class _ErroneousInitializerVisitor extends ir.Visitor // Expressions: Does the expression always throw? @override - bool get defaultValue => false; + bool defaultExpression(ir.Expression node) => false; @override bool visitThrow(ir.Throw node) => true; @@ -6840,7 +6839,7 @@ class InlineDataCache { } } -class InlineWeeder extends ir.Visitor with ir.VisitorVoidMixin { +class InlineWeeder extends ir.Visitor { // Invariant: *INSIDE_LOOP* > *OUTSIDE_LOOP* static const INLINING_NODES_OUTSIDE_LOOP = 15; static const INLINING_NODES_OUTSIDE_LOOP_ARG_FACTOR = 3; @@ -7398,8 +7397,7 @@ class InlineWeeder extends ir.Visitor with ir.VisitorVoidMixin { /// Visitor to detect environment-rewriting that prevents inlining /// (e.g. closures). -class InlineWeederBodyClosure extends ir.Visitor - with ir.VisitorVoidMixin { +class InlineWeederBodyClosure extends ir.Visitor { bool tooDifficult = false; InlineWeederBodyClosure(); diff --git a/pkg/compiler/lib/src/ssa/kernel_string_builder.dart b/pkg/compiler/lib/src/ssa/kernel_string_builder.dart index b6f69b64ded5..0d8a57a75917 100644 --- a/pkg/compiler/lib/src/ssa/kernel_string_builder.dart +++ b/pkg/compiler/lib/src/ssa/kernel_string_builder.dart @@ -10,7 +10,7 @@ import 'builder_kernel.dart'; import 'nodes.dart'; /// Visits and concatenates the expressions in a string concatenation. -class KernelStringBuilder extends ir.Visitor with ir.VisitorVoidMixin { +class KernelStringBuilder extends ir.Visitor { final KernelSsaGraphBuilder builder; /// The string value generated so far. diff --git a/pkg/compiler/lib/src/ssa/loop_handler.dart b/pkg/compiler/lib/src/ssa/loop_handler.dart index d729feff4975..9138b8b9b3c9 100644 --- a/pkg/compiler/lib/src/ssa/loop_handler.dart +++ b/pkg/compiler/lib/src/ssa/loop_handler.dart @@ -329,10 +329,9 @@ class KernelLoopHandler extends LoopHandler { int loopKind(ir.TreeNode node) => node.accept(new _KernelLoopTypeVisitor()); } -class _KernelLoopTypeVisitor extends ir.Visitor - with ir.VisitorDefaultValueMixin { +class _KernelLoopTypeVisitor extends ir.Visitor { @override - int get defaultValue => HLoopBlockInformation.NOT_A_LOOP; + int defaultNode(ir.Node node) => HLoopBlockInformation.NOT_A_LOOP; @override int visitWhileStatement(ir.WhileStatement node) => diff --git a/pkg/compiler/lib/src/ssa/switch_continue_analysis.dart b/pkg/compiler/lib/src/ssa/switch_continue_analysis.dart index 776a5d5ed08f..1733898d2c6f 100644 --- a/pkg/compiler/lib/src/ssa/switch_continue_analysis.dart +++ b/pkg/compiler/lib/src/ssa/switch_continue_analysis.dart @@ -7,8 +7,7 @@ import 'package:kernel/ast.dart' as ir; /// Helper class that traverses a kernel AST subtree to see if it has any /// continue statements in the body of any switch cases (having continue /// statements results in a more complex generated code). -class SwitchContinueAnalysis extends ir.Visitor - with ir.VisitorDefaultValueMixin { +class SwitchContinueAnalysis extends ir.Visitor { SwitchContinueAnalysis._(); static bool containsContinue(ir.Statement switchCaseBody) { @@ -128,5 +127,5 @@ class SwitchContinueAnalysis extends ir.Visitor } @override - bool get defaultValue => false; + bool defaultNode(ir.Node node) => false; } diff --git a/pkg/dev_compiler/lib/src/kernel/expression_compiler.dart b/pkg/dev_compiler/lib/src/kernel/expression_compiler.dart index 58af2ac6cbaa..212601cc55a1 100644 --- a/pkg/dev_compiler/lib/src/kernel/expression_compiler.dart +++ b/pkg/dev_compiler/lib/src/kernel/expression_compiler.dart @@ -36,9 +36,7 @@ import 'package:kernel/ast.dart' TreeNode, TypeParameter, VariableDeclaration, - Visitor, - VisitorNullMixin, - VisitorVoidMixin; + Visitor; DiagnosticMessage _createInternalError(Uri uri, int line, int col, String msg) { return Message(Code('Expression Compiler Internal error'), @@ -86,7 +84,7 @@ class DartScope { /// - locals /// - formals /// - captured variables (for closures) -class DartScopeBuilder extends Visitor with VisitorVoidMixin { +class DartScopeBuilder extends Visitor { final Component _component; final int _line; final int _column; @@ -198,7 +196,7 @@ class DartScopeBuilder extends Visitor with VisitorVoidMixin { /// that do not have .fileEndOffset field. /// /// For example - [Block] -class FileEndOffsetCalculator extends Visitor with VisitorNullMixin { +class FileEndOffsetCalculator extends Visitor { static const int noOffset = -1; final int _startOffset; @@ -268,7 +266,7 @@ class FileEndOffsetCalculator extends Visitor with VisitorNullMixin { /// in the JavaScript scope, so we need to redefine them. /// /// See [_addSymbolDefinitions] -class PrivateFieldsVisitor extends Visitor with VisitorVoidMixin { +class PrivateFieldsVisitor extends Visitor { final Map privateFields = {}; @override diff --git a/pkg/dev_compiler/lib/src/kernel/kernel_helpers.dart b/pkg/dev_compiler/lib/src/kernel/kernel_helpers.dart index dc76a82c587b..64eb246db30d 100644 --- a/pkg/dev_compiler/lib/src/kernel/kernel_helpers.dart +++ b/pkg/dev_compiler/lib/src/kernel/kernel_helpers.dart @@ -332,9 +332,6 @@ class LabelContinueFinder extends StatementVisitor { visit(node.body); visit(node.finalizer); } - - @override - void defaultStatement(Statement node) {} } /// Ensures that all of the known DartType implementors are handled. diff --git a/pkg/dev_compiler/lib/src/kernel/nullable_inference.dart b/pkg/dev_compiler/lib/src/kernel/nullable_inference.dart index b9303662c07b..bd952b2f6660 100644 --- a/pkg/dev_compiler/lib/src/kernel/nullable_inference.dart +++ b/pkg/dev_compiler/lib/src/kernel/nullable_inference.dart @@ -364,7 +364,7 @@ class NullableInference extends ExpressionVisitor { /// variables that have already been determined to be nullable. /// // TODO(jmesserly): Introduce flow analysis. -class _NullableVariableInference extends RecursiveVisitor { +class _NullableVariableInference extends RecursiveVisitor { NullableInference _nullInference; /// Variables that are currently believed to be not-null. diff --git a/pkg/dev_compiler/lib/src/kernel/target.dart b/pkg/dev_compiler/lib/src/kernel/target.dart index 81fadbfaa9cc..bdcbc1d4ca10 100644 --- a/pkg/dev_compiler/lib/src/kernel/target.dart +++ b/pkg/dev_compiler/lib/src/kernel/target.dart @@ -245,7 +245,7 @@ class DevCompilerTarget extends Target { /// members can be eliminated, and adjusts the flags to remove those checks. /// /// See [_CovarianceTransformer.transform]. -class _CovarianceTransformer extends RecursiveVisitor { +class _CovarianceTransformer extends RecursiveVisitor { /// The set of private instance members in [_library] that (potentially) need /// covariance checks. /// diff --git a/pkg/dev_compiler/test/expression_compiler/scope_offset_test.dart b/pkg/dev_compiler/test/expression_compiler/scope_offset_test.dart index 413ae5e0a069..5fa3f1f9c9d5 100644 --- a/pkg/dev_compiler/test/expression_compiler/scope_offset_test.dart +++ b/pkg/dev_compiler/test/expression_compiler/scope_offset_test.dart @@ -34,7 +34,7 @@ void main(List args) { }); } -class ScopeOffsetValidator extends Visitor with VisitorVoidMixin { +class ScopeOffsetValidator extends Visitor { int classCount = 0; int memberCount = 0; int blockCount = 0; diff --git a/pkg/dev_compiler/test/nullable_inference_test.dart b/pkg/dev_compiler/test/nullable_inference_test.dart index 6177a5bc608a..e07790616653 100644 --- a/pkg/dev_compiler/test/nullable_inference_test.dart +++ b/pkg/dev_compiler/test/nullable_inference_test.dart @@ -536,7 +536,7 @@ Future expectAllNotNull(String code) async { bool useAnnotations = false; NullableInference inference; -class _TestRecursiveVisitor extends RecursiveVisitor { +class _TestRecursiveVisitor extends RecursiveVisitor { final Set librariesFromDill; int _functionNesting = 0; TypeEnvironment _typeEnvironment; diff --git a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart index 9456de18de8d..02b730048815 100644 --- a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart +++ b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart @@ -792,7 +792,7 @@ class ConstantsTransformer extends Transformer { } } -class ConstantEvaluator extends RecursiveResultVisitor { +class ConstantEvaluator extends RecursiveVisitor { final ConstantsBackend backend; final NumberSemantics numberSemantics; ConstantIntFolder intFolder; diff --git a/pkg/front_end/lib/src/testing/id_extractor.dart b/pkg/front_end/lib/src/testing/id_extractor.dart index ebee200688f9..93af7c63dff1 100644 --- a/pkg/front_end/lib/src/testing/id_extractor.dart +++ b/pkg/front_end/lib/src/testing/id_extractor.dart @@ -33,8 +33,7 @@ TreeNode computeTreeNodeWithOffset(TreeNode node) { /// Abstract visitor for computing data corresponding to a node or element, /// and record it with a generic [Id] -abstract class DataExtractor extends Visitor - with VisitorVoidMixin, DataRegistry { +abstract class DataExtractor extends Visitor with DataRegistry { @override final Map> actualMap; diff --git a/pkg/front_end/test/comments_on_certain_arguments_tool.dart b/pkg/front_end/test/comments_on_certain_arguments_tool.dart index 9109db83f2d3..d83bf847e8dc 100644 --- a/pkg/front_end/test/comments_on_certain_arguments_tool.dart +++ b/pkg/front_end/test/comments_on_certain_arguments_tool.dart @@ -159,7 +159,7 @@ api.CompilerOptions getOptions() { return options; } -class InvocationVisitor extends RecursiveVisitor { +class InvocationVisitor extends RecursiveVisitor { void visitProcedure(Procedure node) { if (node.isNoSuchMethodForwarder) return; super.visitProcedure(node); diff --git a/pkg/front_end/test/fasta/assert_locations_test.dart b/pkg/front_end/test/fasta/assert_locations_test.dart index 3ef159ba7600..c94a1e46a5ca 100644 --- a/pkg/front_end/test/fasta/assert_locations_test.dart +++ b/pkg/front_end/test/fasta/assert_locations_test.dart @@ -102,7 +102,7 @@ void main() {} /// Visitor that verifies that all [AssertStatement]s in the Kernel AST /// have expected spans for their conditions. -class VerifyingVisitor extends RecursiveVisitor { +class VerifyingVisitor extends RecursiveVisitor { final Test test; /// Set of names of verified [Procedure]s. diff --git a/pkg/front_end/test/fasta/testing/suite.dart b/pkg/front_end/test/fasta/testing/suite.dart index 62858c6c2620..2b4078a302be 100644 --- a/pkg/front_end/test/fasta/testing/suite.dart +++ b/pkg/front_end/test/fasta/testing/suite.dart @@ -109,15 +109,14 @@ import 'package:kernel/ast.dart' TreeNode, UnevaluatedConstant, Version, - Visitor, - VisitorVoidMixin; + Visitor; import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; import 'package:kernel/core_types.dart' show CoreTypes; import 'package:kernel/kernel.dart' - show RecursiveResultVisitor, loadComponentFromBytes; + show RecursiveVisitor, loadComponentFromBytes; import 'package:kernel/reference_from_index.dart' show ReferenceFromIndex; @@ -863,7 +862,7 @@ class StressConstantEvaluatorStep } } -class StressConstantEvaluatorVisitor extends RecursiveResultVisitor +class StressConstantEvaluatorVisitor extends RecursiveVisitor implements ErrorReporter { ConstantEvaluator constantEvaluator; ConstantEvaluator constantEvaluatorWithEmptyEnvironment; @@ -1917,7 +1916,7 @@ class Verify extends Step { /// Visitor that checks that the component has been transformed properly. // TODO(johnniwinther): Add checks for all nodes that are unsupported after // transformation. -class VerifyTransformed extends Visitor with VisitorVoidMixin { +class VerifyTransformed extends Visitor { final Target target; List errors = []; diff --git a/pkg/front_end/test/fasta/type_inference/type_schema_test.dart b/pkg/front_end/test/fasta/type_inference/type_schema_test.dart index bc794f010f0c..289191552253 100644 --- a/pkg/front_end/test/fasta/type_inference/type_schema_test.dart +++ b/pkg/front_end/test/fasta/type_inference/type_schema_test.dart @@ -113,7 +113,7 @@ class UnknownTypeTest { } } -class _OrdinaryVisitor extends Visitor with VisitorNullMixin { +class _OrdinaryVisitor extends Visitor { final _UnaryFunction _defaultDartType; _OrdinaryVisitor({_UnaryFunction defaultDartType}) @@ -129,7 +129,7 @@ class _OrdinaryVisitor extends Visitor with VisitorNullMixin { } } -class _TypeSchemaVisitor extends Visitor with VisitorNullMixin { +class _TypeSchemaVisitor extends Visitor { final _UnaryFunction _defaultDartType; final _UnaryFunction _visitUnknownType; diff --git a/pkg/front_end/test/static_types/analysis_helper.dart b/pkg/front_end/test/static_types/analysis_helper.dart index fcd3b9f2d9ac..539d58e5e1b1 100644 --- a/pkg/front_end/test/static_types/analysis_helper.dart +++ b/pkg/front_end/test/static_types/analysis_helper.dart @@ -42,7 +42,7 @@ run(Uri entryPoint, String allowedListPath, .run(verbose: verbose, generate: generate); } -class StaticTypeVisitorBase extends RecursiveVisitor { +class StaticTypeVisitorBase extends RecursiveVisitor { final TypeEnvironment typeEnvironment; StaticTypeContext staticTypeContext; diff --git a/pkg/frontend_server/lib/src/to_string_transformer.dart b/pkg/frontend_server/lib/src/to_string_transformer.dart index 9942dd477565..8969e5165cbc 100644 --- a/pkg/frontend_server/lib/src/to_string_transformer.dart +++ b/pkg/frontend_server/lib/src/to_string_transformer.dart @@ -11,7 +11,7 @@ import '../frontend_server.dart'; /// A [RecursiveVisitor] that replaces [Object.toString] overrides with /// `super.toString()`. -class ToStringVisitor extends RecursiveVisitor { +class ToStringVisitor extends RecursiveVisitor { /// The [packageUris] must not be null. ToStringVisitor(this._packageUris) : assert(_packageUris != null); diff --git a/pkg/kernel/lib/binary/ast_to_binary.dart b/pkg/kernel/lib/binary/ast_to_binary.dart index 821b2f9fc46c..25c299ba70f7 100644 --- a/pkg/kernel/lib/binary/ast_to_binary.dart +++ b/pkg/kernel/lib/binary/ast_to_binary.dart @@ -2711,7 +2711,7 @@ class SwitchCaseIndexer { int operator [](SwitchCase node) => index[node]; } -class ConstantIndexer extends RecursiveResultVisitor { +class ConstantIndexer extends RecursiveVisitor { final StringIndexer stringIndexer; final List entries = []; diff --git a/pkg/kernel/lib/src/bounds_checks.dart b/pkg/kernel/lib/src/bounds_checks.dart index c8353fad4e49..272679fac09d 100644 --- a/pkg/kernel/lib/src/bounds_checks.dart +++ b/pkg/kernel/lib/src/bounds_checks.dart @@ -74,35 +74,35 @@ class TypeVariableGraph extends Graph { } } -class OccurrenceCollectorVisitor extends DartTypeVisitor { +class OccurrenceCollectorVisitor extends DartTypeVisitor { final Set typeParameters; Set occurred = new Set(); OccurrenceCollectorVisitor(this.typeParameters); - void visit(DartType node) => node.accept(this); + visit(DartType node) => node.accept(this); - void visitNamedType(NamedType node) { + visitNamedType(NamedType node) { node.type.accept(this); } - void visitInvalidType(InvalidType node); - void visitDynamicType(DynamicType node); - void visitVoidType(VoidType node); + visitInvalidType(InvalidType node); + visitDynamicType(DynamicType node); + visitVoidType(VoidType node); - void visitInterfaceType(InterfaceType node) { + visitInterfaceType(InterfaceType node) { for (DartType argument in node.typeArguments) { argument.accept(this); } } - void visitTypedefType(TypedefType node) { + visitTypedefType(TypedefType node) { for (DartType argument in node.typeArguments) { argument.accept(this); } } - void visitFunctionType(FunctionType node) { + visitFunctionType(FunctionType node) { for (TypeParameter typeParameter in node.typeParameters) { typeParameter.bound.accept(this); typeParameter.defaultType?.accept(this); @@ -116,14 +116,11 @@ class OccurrenceCollectorVisitor extends DartTypeVisitor { node.returnType.accept(this); } - void visitTypeParameterType(TypeParameterType node) { + visitTypeParameterType(TypeParameterType node) { if (typeParameters.contains(node.parameter)) { occurred.add(node.parameter); } } - - @override - void defaultDartType(DartType node) {} } DartType instantiateToBounds( diff --git a/pkg/kernel/lib/src/tool/find_referenced_libraries.dart b/pkg/kernel/lib/src/tool/find_referenced_libraries.dart index 9988f13577af..73733caef31c 100644 --- a/pkg/kernel/lib/src/tool/find_referenced_libraries.dart +++ b/pkg/kernel/lib/src/tool/find_referenced_libraries.dart @@ -23,10 +23,10 @@ bool duplicateLibrariesReachable(List from) { return false; } -class _LibraryCollector extends RecursiveVisitor { +class _LibraryCollector extends RecursiveVisitor { Set allSeenLibraries = {}; - void defaultNode(Node node) { + Null defaultNode(Node node) { if (node is NamedNode) { // Named nodes can be linked to. seen(node); @@ -38,7 +38,7 @@ class _LibraryCollector extends RecursiveVisitor { super.defaultNode(node); } - void defaultMemberReference(Member node) { + Null defaultMemberReference(Member node) { seen(node); super.defaultMemberReference(node); } diff --git a/pkg/kernel/lib/text/ast_to_text.dart b/pkg/kernel/lib/text/ast_to_text.dart index 26699f0bd718..a7faeea6539a 100644 --- a/pkg/kernel/lib/text/ast_to_text.dart +++ b/pkg/kernel/lib/text/ast_to_text.dart @@ -29,7 +29,7 @@ class NormalNamer extends Namer { NormalNamer(this.prefix); } -class ConstantNamer extends RecursiveResultVisitor with Namer { +class ConstantNamer extends RecursiveVisitor with Namer { final String prefix; ConstantNamer(this.prefix); @@ -271,7 +271,7 @@ abstract class Annotator { } /// A quick and dirty ambiguous text printer. -class Printer extends Visitor with VisitorVoidMixin { +class Printer extends Visitor { final NameSystem syntheticNames; final StringSink sink; final Annotator annotator; diff --git a/pkg/kernel/lib/text/text_serializer.dart b/pkg/kernel/lib/text/text_serializer.dart index 3ababf6e79c1..f3b00a15c2b2 100644 --- a/pkg/kernel/lib/text/text_serializer.dart +++ b/pkg/kernel/lib/text/text_serializer.dart @@ -107,12 +107,6 @@ class ExpressionTagger extends ExpressionVisitor String visitLoadLibrary(LoadLibrary _) => "load"; String visitConstantExpression(ConstantExpression _) => "const"; String visitInstanceCreation(InstanceCreation _) => "object"; - - @override - String defaultExpression(Expression node) { - throw new UnimplementedError( - 'Unimplemented expression $node (${node.runtimeType})'); - } } const TextSerializer invalidExpressionSerializer = @@ -852,11 +846,6 @@ class DartTypeTagger extends DartTypeVisitor String visitTypedefType(TypedefType _) => "typedef"; String visitFutureOrType(FutureOrType _) => "futureor"; String visitNullType(NullType _) => "null-type"; - - @override - String defaultDartType(DartType node) { - throw UnimplementedError('Unimplemented type $node (${node.runtimeType})'); - } } const TextSerializer invalidTypeSerializer = @@ -1042,12 +1031,6 @@ class StatementTagger extends StatementVisitor String visitContinueSwitchStatement(ContinueSwitchStatement node) => "continue"; String visitFunctionDeclaration(FunctionDeclaration node) => "local-fun"; - - @override - String defaultStatement(Statement node) { - throw new UnimplementedError( - "Unimplemented statement $node (${node.runtimeType})"); - } } TextSerializer expressionStatementSerializer = new Wrapped( @@ -1812,12 +1795,6 @@ class ConstantTagger extends ConstantVisitor String visitTearOffConstant(TearOffConstant node) => "const-tearoff"; String visitTypeLiteralConstant(TypeLiteralConstant node) => "const-type"; String visitUnevaluatedConstant(UnevaluatedConstant node) => "const-expr"; - - @override - String defaultConstant(Constant node) { - throw new UnimplementedError( - 'Unimplemented constant $node (${node.runtimeType})'); - } } TextSerializer boolConstantSerializer = diff --git a/pkg/kernel/lib/transformations/scanner.dart b/pkg/kernel/lib/transformations/scanner.dart index ee9b66030388..5aac0a8a48fe 100644 --- a/pkg/kernel/lib/transformations/scanner.dart +++ b/pkg/kernel/lib/transformations/scanner.dart @@ -218,7 +218,7 @@ abstract class ProcedureScanner } abstract class ExpressionScanner - extends RecursiveResultVisitor implements Scanner { + extends RecursiveVisitor implements Scanner { final Scanner next; ScanResult _result; @@ -242,7 +242,7 @@ abstract class ExpressionScanner } abstract class MethodInvocationScanner - extends RecursiveVisitor implements Scanner { + extends RecursiveVisitor implements Scanner { final Scanner next; ScanResult _result; diff --git a/pkg/kernel/lib/verifier.dart b/pkg/kernel/lib/verifier.dart index 00dc2af38e56..cdd2f22b629c 100644 --- a/pkg/kernel/lib/verifier.dart +++ b/pkg/kernel/lib/verifier.dart @@ -48,7 +48,7 @@ enum TypedefState { Done, BeingChecked } /// Checks that a kernel component is well-formed. /// /// This does not include any kind of type checking. -class VerifyingVisitor extends RecursiveResultVisitor { +class VerifyingVisitor extends RecursiveVisitor { final Set classes = new Set(); final Set typedefs = new Set(); Set typeParametersInScope = new Set(); @@ -883,14 +883,14 @@ class VerifyGetStaticType extends RecursiveVisitor { : _staticTypeContext = new StatefulStaticTypeContext.stacked(env); @override - void visitLibrary(Library node) { + visitLibrary(Library node) { _staticTypeContext.enterLibrary(node); super.visitLibrary(node); _staticTypeContext.leaveLibrary(node); } @override - void visitField(Field node) { + visitField(Field node) { currentMember = node; _staticTypeContext.enterMember(node); super.visitField(node); @@ -899,7 +899,7 @@ class VerifyGetStaticType extends RecursiveVisitor { } @override - void visitProcedure(Procedure node) { + visitProcedure(Procedure node) { currentMember = node; _staticTypeContext.enterMember(node); super.visitProcedure(node); @@ -908,7 +908,7 @@ class VerifyGetStaticType extends RecursiveVisitor { } @override - void visitConstructor(Constructor node) { + visitConstructor(Constructor node) { currentMember = node; _staticTypeContext.enterMember(node); super.visitConstructor(node); @@ -917,7 +917,7 @@ class VerifyGetStaticType extends RecursiveVisitor { } @override - void defaultExpression(Expression node) { + defaultExpression(Expression node) { try { node.getStaticType(_staticTypeContext); } catch (_) { @@ -929,7 +929,7 @@ class VerifyGetStaticType extends RecursiveVisitor { } } -class CheckParentPointers extends Visitor with VisitorVoidMixin { +class CheckParentPointers extends Visitor { static void check(TreeNode node) { node.accept(new CheckParentPointers(node.parent)); } diff --git a/pkg/kernel/lib/visitor.dart b/pkg/kernel/lib/visitor.dart index 8854f83c57b1..fefa9708c219 100644 --- a/pkg/kernel/lib/visitor.dart +++ b/pkg/kernel/lib/visitor.dart @@ -14,7 +14,7 @@ import 'ast.dart'; abstract class ExpressionVisitor { const ExpressionVisitor(); - R defaultExpression(Expression node); + R defaultExpression(Expression node) => null; R defaultBasicLiteral(BasicLiteral node) => defaultExpression(node); R visitInvalidExpression(InvalidExpression node) => defaultExpression(node); @@ -87,7 +87,7 @@ abstract class ExpressionVisitor { abstract class StatementVisitor { const StatementVisitor(); - R defaultStatement(Statement node); + R defaultStatement(Statement node) => null; R visitExpressionStatement(ExpressionStatement node) => defaultStatement(node); @@ -118,7 +118,7 @@ abstract class StatementVisitor { abstract class MemberVisitor { const MemberVisitor(); - R defaultMember(Member node); + R defaultMember(Member node) => null; R visitConstructor(Constructor node) => defaultMember(node); R visitProcedure(Procedure node) => defaultMember(node); @@ -131,7 +131,7 @@ abstract class MemberVisitor { abstract class InitializerVisitor { const InitializerVisitor(); - R defaultInitializer(Initializer node); + R defaultInitializer(Initializer node) => null; R visitInvalidInitializer(InvalidInitializer node) => defaultInitializer(node); @@ -143,7 +143,7 @@ abstract class InitializerVisitor { R visitAssertInitializer(AssertInitializer node) => defaultInitializer(node); } -abstract class TreeVisitor +class TreeVisitor implements ExpressionVisitor, StatementVisitor, @@ -151,7 +151,7 @@ abstract class TreeVisitor InitializerVisitor { const TreeVisitor(); - R defaultTreeNode(TreeNode node); + R defaultTreeNode(TreeNode node) => null; // Expressions R defaultExpression(Expression node) => defaultTreeNode(node); @@ -289,10 +289,10 @@ abstract class TreeVisitor R visitComponent(Component node) => defaultTreeNode(node); } -abstract class DartTypeVisitor { +class DartTypeVisitor { const DartTypeVisitor(); - R defaultDartType(DartType node); + R defaultDartType(DartType node) => null; R visitInvalidType(InvalidType node) => defaultDartType(node); R visitDynamicType(DynamicType node) => defaultDartType(node); @@ -307,8 +307,8 @@ abstract class DartTypeVisitor { R visitNullType(NullType node) => defaultDartType(node); } -abstract class DartTypeVisitor1 { - R defaultDartType(DartType node, T arg); +class DartTypeVisitor1 { + R defaultDartType(DartType node, T arg) => null; R visitInvalidType(InvalidType node, T arg) => defaultDartType(node, arg); R visitDynamicType(DynamicType node, T arg) => defaultDartType(node, arg); @@ -332,10 +332,10 @@ abstract class DartTypeVisitor1 { /// /// Use [ComputeOnceConstantVisitor] or [VisitOnceConstantVisitor] to visit /// a constant node while ensuring each subnode is only visited once. -abstract class ConstantVisitor { +class ConstantVisitor { const ConstantVisitor(); - R defaultConstant(Constant node); + R defaultConstant(Constant node) => null; R visitNullConstant(NullConstant node) => defaultConstant(node); R visitBoolConstant(BoolConstant node) => defaultConstant(node); @@ -435,7 +435,7 @@ class _ConstantCallbackVisitor implements ConstantVisitor { /// Visitor-like class used for visiting a [Constant] node while computing a /// value for each subnode. The visitor caches the computed values ensuring that /// each subnode is only visited once. -abstract class ComputeOnceConstantVisitor implements _ConstantCallback { +class ComputeOnceConstantVisitor implements _ConstantCallback { _ConstantCallbackVisitor _visitor; Map cache = new LinkedHashMap.identity(); @@ -461,7 +461,7 @@ abstract class ComputeOnceConstantVisitor implements _ConstantCallback { return value; } - R defaultConstant(Constant node); + R defaultConstant(Constant node) => null; R visitNullConstant(NullConstant node) => defaultConstant(node); R visitBoolConstant(BoolConstant node) => defaultConstant(node); @@ -484,7 +484,7 @@ abstract class ComputeOnceConstantVisitor implements _ConstantCallback { /// /// The visitor records the visited node to ensure that each subnode is only /// visited once. -abstract class VisitOnceConstantVisitor implements _ConstantCallback { +class VisitOnceConstantVisitor implements _ConstantCallback { _ConstantCallbackVisitor _visitor; Set cache = new LinkedHashSet.identity(); @@ -502,7 +502,7 @@ abstract class VisitOnceConstantVisitor implements _ConstantCallback { } } - void defaultConstant(Constant node); + void defaultConstant(Constant node) => null; void visitNullConstant(NullConstant node) => defaultConstant(node); void visitBoolConstant(BoolConstant node) => defaultConstant(node); @@ -523,10 +523,10 @@ abstract class VisitOnceConstantVisitor implements _ConstantCallback { defaultConstant(node); } -abstract class MemberReferenceVisitor { +class MemberReferenceVisitor { const MemberReferenceVisitor(); - R defaultMemberReference(Member node); + R defaultMemberReference(Member node) => null; R visitFieldReference(Field node) => defaultMemberReference(node); R visitConstructorReference(Constructor node) => defaultMemberReference(node); @@ -537,7 +537,7 @@ abstract class MemberReferenceVisitor { } } -abstract class Visitor extends TreeVisitor +class Visitor extends TreeVisitor implements DartTypeVisitor, ConstantVisitor, @@ -545,7 +545,7 @@ abstract class Visitor extends TreeVisitor const Visitor(); /// The catch-all case, except for references. - R defaultNode(Node node); + R defaultNode(Node node) => null; R defaultTreeNode(TreeNode node) => defaultNode(node); // DartTypes @@ -581,13 +581,11 @@ abstract class Visitor extends TreeVisitor R visitUnevaluatedConstant(UnevaluatedConstant node) => defaultConstant(node); // Class references - R visitClassReference(Class node); - - R visitTypedefReference(Typedef node); + R visitClassReference(Class node) => null; + R visitTypedefReference(Typedef node) => null; // Constant references - R defaultConstantReference(Constant node); - + R defaultConstantReference(Constant node) => null; R visitNullConstantReference(NullConstant node) => defaultConstantReference(node); R visitBoolConstantReference(BoolConstant node) => @@ -619,8 +617,7 @@ abstract class Visitor extends TreeVisitor defaultConstantReference(node); // Member references - R defaultMemberReference(Member node); - + R defaultMemberReference(Member node) => null; R visitFieldReference(Field node) => defaultMemberReference(node); R visitConstructorReference(Constructor node) => defaultMemberReference(node); R visitProcedureReference(Procedure node) => defaultMemberReference(node); @@ -634,115 +631,9 @@ abstract class Visitor extends TreeVisitor R visitNamedType(NamedType node) => defaultNode(node); } -/// Visitor mixin that throws as its base case. -mixin VisitorThrowingMixin implements Visitor { - @override - R defaultNode(Node node) { - throw new UnimplementedError('Unimplemented ${runtimeType}.defaultNode for ' - '${node} (${node.runtimeType})'); - } - - @override - R visitClassReference(Class node) { - throw new UnimplementedError( - 'Unimplemented ${runtimeType}.visitClassReference for ' - '${node} (${node.runtimeType})'); - } - - @override - R visitTypedefReference(Typedef node) { - throw new UnimplementedError( - 'Unimplemented ${runtimeType}.visitTypedefReference for ' - '${node} (${node.runtimeType})'); - } - - @override - R defaultConstantReference(Constant node) { - throw new UnimplementedError( - 'Unimplemented ${runtimeType}.defaultConstantReference for ' - '${node} (${node.runtimeType})'); - } - - @override - R defaultMemberReference(Member node) { - throw new UnimplementedError( - 'Unimplemented ${runtimeType}.defaultMemberReference for ' - '${node} (${node.runtimeType})'); - } -} - -/// Visitor mixin that returns a value of type [R] or `null` and uses `null` as -/// its base case. -mixin VisitorNullMixin implements Visitor { - @override - R defaultNode(Node node) => null; - - @override - R visitClassReference(Class node) => null; - - @override - R visitTypedefReference(Typedef node) => null; - - @override - R defaultConstantReference(Constant node) => null; - - @override - R defaultMemberReference(Member node) => null; -} - -/// Visitor mixin that returns void. -mixin VisitorVoidMixin implements Visitor { - @override - void defaultNode(Node node) {} - - @override - void visitClassReference(Class node) {} - - @override - void visitTypedefReference(Typedef node) {} - - @override - void defaultConstantReference(Constant node) {} - - @override - void defaultMemberReference(Member node) {} -} - -/// Visitor mixin that returns a [defaultValue] of type [R] as its base case. -mixin VisitorDefaultValueMixin implements Visitor { - R get defaultValue; - - @override - R defaultNode(Node node) => defaultValue; - - @override - R visitClassReference(Class node) => defaultValue; - - @override - R visitTypedefReference(Typedef node) => defaultValue; - - @override - R defaultConstantReference(Constant node) => defaultValue; - - @override - R defaultMemberReference(Member node) => defaultValue; -} - -/// Recursive visitor that doesn't return anything from its visit methods. -class RecursiveVisitor extends Visitor with VisitorVoidMixin { +class RecursiveVisitor extends Visitor { const RecursiveVisitor(); - void defaultNode(Node node) { - node.visitChildren(this); - } -} - -/// Recursive visitor that returns a result of type [R] or `null` from its -/// visit methods. -class RecursiveResultVisitor extends Visitor - with VisitorNullMixin { - const RecursiveResultVisitor(); - R defaultNode(Node node) { node.visitChildren(this); return null; @@ -794,7 +685,7 @@ class Transformer extends TreeVisitor { abstract class ExpressionVisitor1 { const ExpressionVisitor1(); - R defaultExpression(Expression node, T arg); + R defaultExpression(Expression node, T arg) => null; R defaultBasicLiteral(BasicLiteral node, T arg) => defaultExpression(node, arg); R visitInvalidExpression(InvalidExpression node, T arg) => @@ -893,7 +784,7 @@ abstract class ExpressionVisitor1 { abstract class StatementVisitor1 { const StatementVisitor1(); - R defaultStatement(Statement node, T arg); + R defaultStatement(Statement node, T arg) => null; R visitExpressionStatement(ExpressionStatement node, T arg) => defaultStatement(node, arg); @@ -934,7 +825,7 @@ abstract class BodyVisitor1 extends ExpressionVisitor1 implements StatementVisitor1 { const BodyVisitor1(); - R defaultStatement(Statement node, T arg); + R defaultStatement(Statement node, T arg) => null; R visitExpressionStatement(ExpressionStatement node, T arg) => defaultStatement(node, arg); R visitBlock(Block node, T arg) => defaultStatement(node, arg); diff --git a/pkg/kernel/test/metadata_test.dart b/pkg/kernel/test/metadata_test.dart index d1214b61ea6e..377ad22fe5cf 100644 --- a/pkg/kernel/test/metadata_test.dart +++ b/pkg/kernel/test/metadata_test.dart @@ -96,7 +96,7 @@ typedef NodePredicate = bool Function(TreeNode node); /// Visitor calling [handle] function on every node which can have metadata /// associated with it and also satisfies the given [predicate]. -class Visitor extends RecursiveVisitor { +class Visitor extends RecursiveVisitor { final NodePredicate predicate; final void Function(TreeNode) handle; diff --git a/pkg/vm/lib/transformations/call_site_annotator.dart b/pkg/vm/lib/transformations/call_site_annotator.dart index 8a45c5a0722f..324401f1d9b8 100644 --- a/pkg/vm/lib/transformations/call_site_annotator.dart +++ b/pkg/vm/lib/transformations/call_site_annotator.dart @@ -30,7 +30,7 @@ void transformLibraries(Component component, List libraries, libraries.forEach(transformer.visitLibrary); } -class AnnotateWithStaticTypes extends RecursiveVisitor { +class AnnotateWithStaticTypes extends RecursiveVisitor { final CallSiteAttributesMetadataRepository _metadata; final TypeEnvironment env; StaticTypeContext _staticTypeContext; diff --git a/pkg/vm/lib/transformations/devirtualization.dart b/pkg/vm/lib/transformations/devirtualization.dart index a81d089d08c7..acbfa39b50d0 100644 --- a/pkg/vm/lib/transformations/devirtualization.dart +++ b/pkg/vm/lib/transformations/devirtualization.dart @@ -27,7 +27,7 @@ Component transformComponent(CoreTypes coreTypes, Component component) { /// Subclasses should implement particular devirtualization strategy in /// [getDirectCall] method. Once direct target is determined, the invocation /// node is annotated with direct call metadata. -abstract class Devirtualization extends RecursiveVisitor { +abstract class Devirtualization extends RecursiveVisitor { /// Toggles tracing (useful for debugging). static const _trace = const bool.fromEnvironment('trace.devirtualization'); diff --git a/pkg/vm/lib/transformations/mixin_deduplication.dart b/pkg/vm/lib/transformations/mixin_deduplication.dart index 31481a85dc57..7f7662625c80 100644 --- a/pkg/vm/lib/transformations/mixin_deduplication.dart +++ b/pkg/vm/lib/transformations/mixin_deduplication.dart @@ -153,7 +153,7 @@ class DeduplicateMixinsTransformer extends Transformer { /// Rewrites references to the deduplicated mixin application /// classes. Updates interface targets and types. -class ReferenceUpdater extends RecursiveVisitor { +class ReferenceUpdater extends RecursiveVisitor { final DeduplicateMixinsTransformer transformer; final _visitedConstants = new Set.identity(); diff --git a/pkg/vm/lib/transformations/no_dynamic_invocations_annotator.dart b/pkg/vm/lib/transformations/no_dynamic_invocations_annotator.dart index 9b7e27c5d07a..e838c805777b 100644 --- a/pkg/vm/lib/transformations/no_dynamic_invocations_annotator.dart +++ b/pkg/vm/lib/transformations/no_dynamic_invocations_annotator.dart @@ -149,7 +149,7 @@ class NoDynamicUsesAnnotator { } } -class DynamicSelectorsCollector extends RecursiveVisitor { +class DynamicSelectorsCollector extends RecursiveVisitor { final Set dynamicSelectors = new Set(); final Set nonThisSelectors = new Set(); final Set tearOffSelectors = new Set(); diff --git a/pkg/vm/lib/transformations/type_flow/signature_shaking.dart b/pkg/vm/lib/transformations/type_flow/signature_shaking.dart index 20a0412188d6..4adf6c64ec77 100644 --- a/pkg/vm/lib/transformations/type_flow/signature_shaking.dart +++ b/pkg/vm/lib/transformations/type_flow/signature_shaking.dart @@ -198,7 +198,7 @@ class _ParameterInfo { } } -class _Collect extends RecursiveVisitor { +class _Collect extends RecursiveVisitor { final SignatureShaker shaker; /// Parameters of the current function. @@ -332,7 +332,7 @@ class _Collect extends RecursiveVisitor { } } -class _Transform extends RecursiveVisitor { +class _Transform extends RecursiveVisitor { final SignatureShaker shaker; StaticTypeContext typeContext; diff --git a/pkg/vm/lib/transformations/type_flow/summary_collector.dart b/pkg/vm/lib/transformations/type_flow/summary_collector.dart index aed40a03e499..789d1e134544 100644 --- a/pkg/vm/lib/transformations/type_flow/summary_collector.dart +++ b/pkg/vm/lib/transformations/type_flow/summary_collector.dart @@ -308,7 +308,7 @@ class _FallthroughDetector extends ast.StatementVisitor { /// Collects sets of captured variables, as well as variables /// modified in loops and try blocks. -class _VariablesInfoCollector extends RecursiveVisitor { +class _VariablesInfoCollector extends RecursiveVisitor { /// Maps declared variables to their declaration index. final Map varIndex = {}; @@ -514,7 +514,7 @@ Iterable getSelectors(ClassHierarchy hierarchy, Class cls, enum FieldSummaryType { kFieldGuard, kInitializer } /// Create a type flow summary for a member from the kernel AST. -class SummaryCollector extends RecursiveResultVisitor { +class SummaryCollector extends RecursiveVisitor { final Target target; final TypeEnvironment _environment; final ClosedWorldClassHierarchy _hierarchy; diff --git a/pkg/vm/lib/transformations/type_flow/transformer.dart b/pkg/vm/lib/transformations/type_flow/transformer.dart index ba36509ff571..b8b187c67cde 100644 --- a/pkg/vm/lib/transformations/type_flow/transformer.dart +++ b/pkg/vm/lib/transformations/type_flow/transformer.dart @@ -144,7 +144,7 @@ class TFADevirtualization extends Devirtualization { } /// Annotates kernel AST with metadata using results of type flow analysis. -class AnnotateKernel extends RecursiveVisitor { +class AnnotateKernel extends RecursiveVisitor { final TypeFlowAnalysis _typeFlowAnalysis; final FieldMorpher fieldMorpher; final DirectCallMetadataRepository _directCallMetadataRepository; @@ -741,7 +741,7 @@ class FieldMorpher { /// Visits Dart types and collects all classes and typedefs used in types. /// This visitor is used during pass 1 of tree shaking. It is a separate /// visitor because [Transformer] does not provide a way to traverse types. -class _TreeShakerTypeVisitor extends RecursiveVisitor { +class _TreeShakerTypeVisitor extends RecursiveVisitor { final TreeShaker shaker; _TreeShakerTypeVisitor(this.shaker); diff --git a/pkg/vm/test/incremental_compiler_test.dart b/pkg/vm/test/incremental_compiler_test.dart index 2fc1928f426a..179c37b7c8d8 100644 --- a/pkg/vm/test/incremental_compiler_test.dart +++ b/pkg/vm/test/incremental_compiler_test.dart @@ -1618,7 +1618,7 @@ _writeProgramToFile(Component component, File outputFile) async { await sink.close(); } -class LibraryReferenceCollector extends RecursiveVisitor { +class LibraryReferenceCollector extends RecursiveVisitor { Set librariesReferenced = {}; void defaultMemberReference(Member node) { diff --git a/pkg/vm/test/transformations/type_flow/summary_collector_test.dart b/pkg/vm/test/transformations/type_flow/summary_collector_test.dart index a04663477a9a..1e631096bdfb 100644 --- a/pkg/vm/test/transformations/type_flow/summary_collector_test.dart +++ b/pkg/vm/test/transformations/type_flow/summary_collector_test.dart @@ -61,7 +61,7 @@ class FakeEntryPointsListener implements EntryPointsListener { void recordTearOff(Procedure target) {} } -class PrintSummaries extends RecursiveVisitor { +class PrintSummaries extends RecursiveVisitor { SummaryCollector _summaryCollector; final StringBuffer _buf = new StringBuffer();