Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Unified Diff: pkg/analyzer/lib/dart/ast/visitor.dart

Issue 1558843002: First step towards a public API for AST nodes (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Add new files Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/dart/ast/utilities.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/dart/ast/visitor.dart
diff --git a/pkg/analyzer/lib/dart/ast/visitor.dart b/pkg/analyzer/lib/dart/ast/visitor.dart
new file mode 100644
index 0000000000000000000000000000000000000000..c9b345a3b344ad90e7ce5fe44c60aa28948af491
--- /dev/null
+++ b/pkg/analyzer/lib/dart/ast/visitor.dart
@@ -0,0 +1,1884 @@
+// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library analyzer.dart.ast.visitor;
+
+import 'dart:collection';
+
+import 'package:analyzer/src/generated/ast.dart';
+
+/**
+ * An AST visitor that will recursively visit all of the nodes in an AST
+ * structure, similar to [GeneralizingAstVisitor]. This visitor uses a
+ * breadth-first ordering rather than the depth-first ordering of
+ * [GeneralizingAstVisitor].
+ *
+ * Subclasses that override a visit method must either invoke the overridden
+ * visit method or explicitly invoke the more general visit method. Failure to
+ * do so will cause the visit methods for superclasses of the node to not be
+ * invoked and will cause the children of the visited node to not be visited.
+ *
+ * In addition, subclasses should <b>not</b> explicitly visit the children of a
+ * node, but should ensure that the method [visitNode] is used to visit the
+ * children (either directly or indirectly). Failure to do will break the order
+ * in which nodes are visited.
+ *
+ * Note that, unlike other visitors that begin to visit a structure of nodes by
+ * asking the root node in the structure to accept the visitor, this visitor
+ * requires that clients start the visit by invoking the method [visitAllNodes]
+ * defined on the visitor with the root node as the argument:
+ *
+ * visitor.visitAllNodes(rootNode);
+ *
+ * Clients may extend or implement this class.
+ */
+class BreadthFirstVisitor<R> extends GeneralizingAstVisitor<R> {
+ /**
+ * A queue holding the nodes that have not yet been visited in the order in
+ * which they ought to be visited.
+ */
+ Queue<AstNode> _queue = new Queue<AstNode>();
+
+ /**
+ * A visitor, used to visit the children of the current node, that will add
+ * the nodes it visits to the [_queue].
+ */
+ _BreadthFirstChildVisitor _childVisitor;
+
+ /**
+ * Initialize a newly created visitor.
+ */
+ BreadthFirstVisitor() {
+ _childVisitor = new _BreadthFirstChildVisitor(this);
+ }
+
+ /**
+ * Visit all nodes in the tree starting at the given [root] node, in
+ * breadth-first order.
+ */
+ void visitAllNodes(AstNode root) {
+ _queue.add(root);
+ while (!_queue.isEmpty) {
+ AstNode next = _queue.removeFirst();
+ next.accept(this);
+ }
+ }
+
+ @override
+ R visitNode(AstNode node) {
+ node.visitChildren(_childVisitor);
+ return null;
+ }
+}
+
+/**
+ * An AST visitor that will recursively visit all of the nodes in an AST
+ * structure (like instances of the class [RecursiveAstVisitor]). In addition,
+ * when a node of a specific type is visited not only will the visit method for
+ * that specific type of node be invoked, but additional methods for the
+ * superclasses of that node will also be invoked. For example, using an
+ * instance of this class to visit a [Block] will cause the method [visitBlock]
+ * to be invoked but will also cause the methods [visitStatement] and
+ * [visitNode] to be subsequently invoked. This allows visitors to be written
+ * that visit all statements without needing to override the visit method for
+ * each of the specific subclasses of [Statement].
+ *
+ * Subclasses that override a visit method must either invoke the overridden
+ * visit method or explicitly invoke the more general visit method. Failure to
+ * do so will cause the visit methods for superclasses of the node to not be
+ * invoked and will cause the children of the visited node to not be visited.
+ *
+ * Clients may extend or implement this class.
+ */
+class GeneralizingAstVisitor<R> implements AstVisitor<R> {
+ @override
+ R visitAdjacentStrings(AdjacentStrings node) => visitStringLiteral(node);
+
+ R visitAnnotatedNode(AnnotatedNode node) => visitNode(node);
+
+ @override
+ R visitAnnotation(Annotation node) => visitNode(node);
+
+ @override
+ R visitArgumentList(ArgumentList node) => visitNode(node);
+
+ @override
+ R visitAsExpression(AsExpression node) => visitExpression(node);
+
+ @override
+ R visitAssertStatement(AssertStatement node) => visitStatement(node);
+
+ @override
+ R visitAssignmentExpression(AssignmentExpression node) =>
+ visitExpression(node);
+
+ @override
+ R visitAwaitExpression(AwaitExpression node) => visitExpression(node);
+
+ @override
+ R visitBinaryExpression(BinaryExpression node) => visitExpression(node);
+
+ @override
+ R visitBlock(Block node) => visitStatement(node);
+
+ @override
+ R visitBlockFunctionBody(BlockFunctionBody node) => visitFunctionBody(node);
+
+ @override
+ R visitBooleanLiteral(BooleanLiteral node) => visitLiteral(node);
+
+ @override
+ R visitBreakStatement(BreakStatement node) => visitStatement(node);
+
+ @override
+ R visitCascadeExpression(CascadeExpression node) => visitExpression(node);
+
+ @override
+ R visitCatchClause(CatchClause node) => visitNode(node);
+
+ @override
+ R visitClassDeclaration(ClassDeclaration node) =>
+ visitNamedCompilationUnitMember(node);
+
+ R visitClassMember(ClassMember node) => visitDeclaration(node);
+
+ @override
+ R visitClassTypeAlias(ClassTypeAlias node) => visitTypeAlias(node);
+
+ R visitCombinator(Combinator node) => visitNode(node);
+
+ @override
+ R visitComment(Comment node) => visitNode(node);
+
+ @override
+ R visitCommentReference(CommentReference node) => visitNode(node);
+
+ @override
+ R visitCompilationUnit(CompilationUnit node) => visitNode(node);
+
+ R visitCompilationUnitMember(CompilationUnitMember node) =>
+ visitDeclaration(node);
+
+ @override
+ R visitConditionalExpression(ConditionalExpression node) =>
+ visitExpression(node);
+
+ @override
+ R visitConfiguration(Configuration node) => visitNode(node);
+
+ @override
+ R visitConstructorDeclaration(ConstructorDeclaration node) =>
+ visitClassMember(node);
+
+ @override
+ R visitConstructorFieldInitializer(ConstructorFieldInitializer node) =>
+ visitConstructorInitializer(node);
+
+ R visitConstructorInitializer(ConstructorInitializer node) => visitNode(node);
+
+ @override
+ R visitConstructorName(ConstructorName node) => visitNode(node);
+
+ @override
+ R visitContinueStatement(ContinueStatement node) => visitStatement(node);
+
+ R visitDeclaration(Declaration node) => visitAnnotatedNode(node);
+
+ @override
+ R visitDeclaredIdentifier(DeclaredIdentifier node) => visitDeclaration(node);
+
+ @override
+ R visitDefaultFormalParameter(DefaultFormalParameter node) =>
+ visitFormalParameter(node);
+
+ R visitDirective(Directive node) => visitAnnotatedNode(node);
+
+ @override
+ R visitDoStatement(DoStatement node) => visitStatement(node);
+
+ @override
+ R visitDottedName(DottedName node) => visitNode(node);
+
+ @override
+ R visitDoubleLiteral(DoubleLiteral node) => visitLiteral(node);
+
+ @override
+ R visitEmptyFunctionBody(EmptyFunctionBody node) => visitFunctionBody(node);
+
+ @override
+ R visitEmptyStatement(EmptyStatement node) => visitStatement(node);
+
+ @override
+ R visitEnumConstantDeclaration(EnumConstantDeclaration node) =>
+ visitDeclaration(node);
+
+ @override
+ R visitEnumDeclaration(EnumDeclaration node) =>
+ visitNamedCompilationUnitMember(node);
+
+ @override
+ R visitExportDirective(ExportDirective node) => visitNamespaceDirective(node);
+
+ R visitExpression(Expression node) => visitNode(node);
+
+ @override
+ R visitExpressionFunctionBody(ExpressionFunctionBody node) =>
+ visitFunctionBody(node);
+
+ @override
+ R visitExpressionStatement(ExpressionStatement node) => visitStatement(node);
+
+ @override
+ R visitExtendsClause(ExtendsClause node) => visitNode(node);
+
+ @override
+ R visitFieldDeclaration(FieldDeclaration node) => visitClassMember(node);
+
+ @override
+ R visitFieldFormalParameter(FieldFormalParameter node) =>
+ visitNormalFormalParameter(node);
+
+ @override
+ R visitForEachStatement(ForEachStatement node) => visitStatement(node);
+
+ R visitFormalParameter(FormalParameter node) => visitNode(node);
+
+ @override
+ R visitFormalParameterList(FormalParameterList node) => visitNode(node);
+
+ @override
+ R visitForStatement(ForStatement node) => visitStatement(node);
+
+ R visitFunctionBody(FunctionBody node) => visitNode(node);
+
+ @override
+ R visitFunctionDeclaration(FunctionDeclaration node) =>
+ visitNamedCompilationUnitMember(node);
+
+ @override
+ R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
+ visitStatement(node);
+
+ @override
+ R visitFunctionExpression(FunctionExpression node) => visitExpression(node);
+
+ @override
+ R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) =>
+ visitExpression(node);
+
+ @override
+ R visitFunctionTypeAlias(FunctionTypeAlias node) => visitTypeAlias(node);
+
+ @override
+ R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) =>
+ visitNormalFormalParameter(node);
+
+ @override
+ R visitHideCombinator(HideCombinator node) => visitCombinator(node);
+
+ R visitIdentifier(Identifier node) => visitExpression(node);
+
+ @override
+ R visitIfStatement(IfStatement node) => visitStatement(node);
+
+ @override
+ R visitImplementsClause(ImplementsClause node) => visitNode(node);
+
+ @override
+ R visitImportDirective(ImportDirective node) => visitNamespaceDirective(node);
+
+ @override
+ R visitIndexExpression(IndexExpression node) => visitExpression(node);
+
+ @override
+ R visitInstanceCreationExpression(InstanceCreationExpression node) =>
+ visitExpression(node);
+
+ @override
+ R visitIntegerLiteral(IntegerLiteral node) => visitLiteral(node);
+
+ R visitInterpolationElement(InterpolationElement node) => visitNode(node);
+
+ @override
+ R visitInterpolationExpression(InterpolationExpression node) =>
+ visitInterpolationElement(node);
+
+ @override
+ R visitInterpolationString(InterpolationString node) =>
+ visitInterpolationElement(node);
+
+ @override
+ R visitIsExpression(IsExpression node) => visitExpression(node);
+
+ @override
+ R visitLabel(Label node) => visitNode(node);
+
+ @override
+ R visitLabeledStatement(LabeledStatement node) => visitStatement(node);
+
+ @override
+ R visitLibraryDirective(LibraryDirective node) => visitDirective(node);
+
+ @override
+ R visitLibraryIdentifier(LibraryIdentifier node) => visitIdentifier(node);
+
+ @override
+ R visitListLiteral(ListLiteral node) => visitTypedLiteral(node);
+
+ R visitLiteral(Literal node) => visitExpression(node);
+
+ @override
+ R visitMapLiteral(MapLiteral node) => visitTypedLiteral(node);
+
+ @override
+ R visitMapLiteralEntry(MapLiteralEntry node) => visitNode(node);
+
+ @override
+ R visitMethodDeclaration(MethodDeclaration node) => visitClassMember(node);
+
+ @override
+ R visitMethodInvocation(MethodInvocation node) => visitExpression(node);
+
+ R visitNamedCompilationUnitMember(NamedCompilationUnitMember node) =>
+ visitCompilationUnitMember(node);
+
+ @override
+ R visitNamedExpression(NamedExpression node) => visitExpression(node);
+
+ R visitNamespaceDirective(NamespaceDirective node) =>
+ visitUriBasedDirective(node);
+
+ @override
+ R visitNativeClause(NativeClause node) => visitNode(node);
+
+ @override
+ R visitNativeFunctionBody(NativeFunctionBody node) => visitFunctionBody(node);
+
+ R visitNode(AstNode node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ R visitNormalFormalParameter(NormalFormalParameter node) =>
+ visitFormalParameter(node);
+
+ @override
+ R visitNullLiteral(NullLiteral node) => visitLiteral(node);
+
+ @override
+ R visitParenthesizedExpression(ParenthesizedExpression node) =>
+ visitExpression(node);
+
+ @override
+ R visitPartDirective(PartDirective node) => visitUriBasedDirective(node);
+
+ @override
+ R visitPartOfDirective(PartOfDirective node) => visitDirective(node);
+
+ @override
+ R visitPostfixExpression(PostfixExpression node) => visitExpression(node);
+
+ @override
+ R visitPrefixedIdentifier(PrefixedIdentifier node) => visitIdentifier(node);
+
+ @override
+ R visitPrefixExpression(PrefixExpression node) => visitExpression(node);
+
+ @override
+ R visitPropertyAccess(PropertyAccess node) => visitExpression(node);
+
+ @override
+ R visitRedirectingConstructorInvocation(
+ RedirectingConstructorInvocation node) =>
+ visitConstructorInitializer(node);
+
+ @override
+ R visitRethrowExpression(RethrowExpression node) => visitExpression(node);
+
+ @override
+ R visitReturnStatement(ReturnStatement node) => visitStatement(node);
+
+ @override
+ R visitScriptTag(ScriptTag scriptTag) => visitNode(scriptTag);
+
+ @override
+ R visitShowCombinator(ShowCombinator node) => visitCombinator(node);
+
+ @override
+ R visitSimpleFormalParameter(SimpleFormalParameter node) =>
+ visitNormalFormalParameter(node);
+
+ @override
+ R visitSimpleIdentifier(SimpleIdentifier node) => visitIdentifier(node);
+
+ @override
+ R visitSimpleStringLiteral(SimpleStringLiteral node) =>
+ visitSingleStringLiteral(node);
+
+ R visitSingleStringLiteral(SingleStringLiteral node) =>
+ visitStringLiteral(node);
+
+ R visitStatement(Statement node) => visitNode(node);
+
+ @override
+ R visitStringInterpolation(StringInterpolation node) =>
+ visitSingleStringLiteral(node);
+
+ R visitStringLiteral(StringLiteral node) => visitLiteral(node);
+
+ @override
+ R visitSuperConstructorInvocation(SuperConstructorInvocation node) =>
+ visitConstructorInitializer(node);
+
+ @override
+ R visitSuperExpression(SuperExpression node) => visitExpression(node);
+
+ @override
+ R visitSwitchCase(SwitchCase node) => visitSwitchMember(node);
+
+ @override
+ R visitSwitchDefault(SwitchDefault node) => visitSwitchMember(node);
+
+ R visitSwitchMember(SwitchMember node) => visitNode(node);
+
+ @override
+ R visitSwitchStatement(SwitchStatement node) => visitStatement(node);
+
+ @override
+ R visitSymbolLiteral(SymbolLiteral node) => visitLiteral(node);
+
+ @override
+ R visitThisExpression(ThisExpression node) => visitExpression(node);
+
+ @override
+ R visitThrowExpression(ThrowExpression node) => visitExpression(node);
+
+ @override
+ R visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) =>
+ visitCompilationUnitMember(node);
+
+ @override
+ R visitTryStatement(TryStatement node) => visitStatement(node);
+
+ R visitTypeAlias(TypeAlias node) => visitNamedCompilationUnitMember(node);
+
+ @override
+ R visitTypeArgumentList(TypeArgumentList node) => visitNode(node);
+
+ R visitTypedLiteral(TypedLiteral node) => visitLiteral(node);
+
+ @override
+ R visitTypeName(TypeName node) => visitNode(node);
+
+ @override
+ R visitTypeParameter(TypeParameter node) => visitNode(node);
+
+ @override
+ R visitTypeParameterList(TypeParameterList node) => visitNode(node);
+
+ R visitUriBasedDirective(UriBasedDirective node) => visitDirective(node);
+
+ @override
+ R visitVariableDeclaration(VariableDeclaration node) =>
+ visitDeclaration(node);
+
+ @override
+ R visitVariableDeclarationList(VariableDeclarationList node) =>
+ visitNode(node);
+
+ @override
+ R visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
+ visitStatement(node);
+
+ @override
+ R visitWhileStatement(WhileStatement node) => visitStatement(node);
+
+ @override
+ R visitWithClause(WithClause node) => visitNode(node);
+
+ @override
+ R visitYieldStatement(YieldStatement node) => visitStatement(node);
+}
+
+/**
+ * An AST visitor that will recursively visit all of the nodes in an AST
+ * structure. For example, using an instance of this class to visit a [Block]
+ * will also cause all of the statements in the block to be visited.
+ *
+ * Subclasses that override a visit method must either invoke the overridden
+ * visit method or must explicitly ask the visited node to visit its children.
+ * Failure to do so will cause the children of the visited node to not be
+ * visited.
+ *
+ * Clients may extend or implement this class.
+ */
+class RecursiveAstVisitor<R> implements AstVisitor<R> {
+ @override
+ R visitAdjacentStrings(AdjacentStrings node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitAnnotation(Annotation node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitArgumentList(ArgumentList node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitAsExpression(AsExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitAssertStatement(AssertStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitAssignmentExpression(AssignmentExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitAwaitExpression(AwaitExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitBinaryExpression(BinaryExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitBlock(Block node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitBlockFunctionBody(BlockFunctionBody node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitBooleanLiteral(BooleanLiteral node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitBreakStatement(BreakStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitCascadeExpression(CascadeExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitCatchClause(CatchClause node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitClassDeclaration(ClassDeclaration node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitClassTypeAlias(ClassTypeAlias node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitComment(Comment node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitCommentReference(CommentReference node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitCompilationUnit(CompilationUnit node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitConditionalExpression(ConditionalExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitConfiguration(Configuration node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitConstructorDeclaration(ConstructorDeclaration node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitConstructorName(ConstructorName node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitContinueStatement(ContinueStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitDeclaredIdentifier(DeclaredIdentifier node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitDefaultFormalParameter(DefaultFormalParameter node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitDoStatement(DoStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitDottedName(DottedName node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitDoubleLiteral(DoubleLiteral node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitEmptyFunctionBody(EmptyFunctionBody node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitEmptyStatement(EmptyStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitEnumConstantDeclaration(EnumConstantDeclaration node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitEnumDeclaration(EnumDeclaration node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitExportDirective(ExportDirective node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitExpressionFunctionBody(ExpressionFunctionBody node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitExpressionStatement(ExpressionStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitExtendsClause(ExtendsClause node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitFieldDeclaration(FieldDeclaration node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitFieldFormalParameter(FieldFormalParameter node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitForEachStatement(ForEachStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitFormalParameterList(FormalParameterList node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitForStatement(ForStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitFunctionDeclaration(FunctionDeclaration node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitFunctionExpression(FunctionExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitFunctionTypeAlias(FunctionTypeAlias node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitHideCombinator(HideCombinator node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitIfStatement(IfStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitImplementsClause(ImplementsClause node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitImportDirective(ImportDirective node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitIndexExpression(IndexExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitInstanceCreationExpression(InstanceCreationExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitIntegerLiteral(IntegerLiteral node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitInterpolationExpression(InterpolationExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitInterpolationString(InterpolationString node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitIsExpression(IsExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitLabel(Label node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitLabeledStatement(LabeledStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitLibraryDirective(LibraryDirective node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitLibraryIdentifier(LibraryIdentifier node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitListLiteral(ListLiteral node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitMapLiteral(MapLiteral node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitMapLiteralEntry(MapLiteralEntry node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitMethodDeclaration(MethodDeclaration node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitMethodInvocation(MethodInvocation node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitNamedExpression(NamedExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitNativeClause(NativeClause node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitNativeFunctionBody(NativeFunctionBody node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitNullLiteral(NullLiteral node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitParenthesizedExpression(ParenthesizedExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitPartDirective(PartDirective node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitPartOfDirective(PartOfDirective node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitPostfixExpression(PostfixExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitPrefixedIdentifier(PrefixedIdentifier node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitPrefixExpression(PrefixExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitPropertyAccess(PropertyAccess node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitRedirectingConstructorInvocation(
+ RedirectingConstructorInvocation node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitRethrowExpression(RethrowExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitReturnStatement(ReturnStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitScriptTag(ScriptTag node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitShowCombinator(ShowCombinator node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitSimpleFormalParameter(SimpleFormalParameter node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitSimpleIdentifier(SimpleIdentifier node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitSimpleStringLiteral(SimpleStringLiteral node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitStringInterpolation(StringInterpolation node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitSuperConstructorInvocation(SuperConstructorInvocation node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitSuperExpression(SuperExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitSwitchCase(SwitchCase node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitSwitchDefault(SwitchDefault node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitSwitchStatement(SwitchStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitSymbolLiteral(SymbolLiteral node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitThisExpression(ThisExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitThrowExpression(ThrowExpression node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitTryStatement(TryStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitTypeArgumentList(TypeArgumentList node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitTypeName(TypeName node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitTypeParameter(TypeParameter node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitTypeParameterList(TypeParameterList node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitVariableDeclaration(VariableDeclaration node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitVariableDeclarationList(VariableDeclarationList node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitVariableDeclarationStatement(VariableDeclarationStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitWhileStatement(WhileStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitWithClause(WithClause node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitYieldStatement(YieldStatement node) {
+ node.visitChildren(this);
+ return null;
+ }
+}
+
+/**
+ * An AST visitor that will do nothing when visiting an AST node. It is intended
+ * to be a superclass for classes that use the visitor pattern primarily as a
+ * dispatch mechanism (and hence don't need to recursively visit a whole
+ * structure) and that only need to visit a small number of node types.
+ *
+ * Clients may extend or implement this class.
+ */
+class SimpleAstVisitor<R> implements AstVisitor<R> {
+ @override
+ R visitAdjacentStrings(AdjacentStrings node) => null;
+
+ @override
+ R visitAnnotation(Annotation node) => null;
+
+ @override
+ R visitArgumentList(ArgumentList node) => null;
+
+ @override
+ R visitAsExpression(AsExpression node) => null;
+
+ @override
+ R visitAssertStatement(AssertStatement node) => null;
+
+ @override
+ R visitAssignmentExpression(AssignmentExpression node) => null;
+
+ @override
+ R visitAwaitExpression(AwaitExpression node) => null;
+
+ @override
+ R visitBinaryExpression(BinaryExpression node) => null;
+
+ @override
+ R visitBlock(Block node) => null;
+
+ @override
+ R visitBlockFunctionBody(BlockFunctionBody node) => null;
+
+ @override
+ R visitBooleanLiteral(BooleanLiteral node) => null;
+
+ @override
+ R visitBreakStatement(BreakStatement node) => null;
+
+ @override
+ R visitCascadeExpression(CascadeExpression node) => null;
+
+ @override
+ R visitCatchClause(CatchClause node) => null;
+
+ @override
+ R visitClassDeclaration(ClassDeclaration node) => null;
+
+ @override
+ R visitClassTypeAlias(ClassTypeAlias node) => null;
+
+ @override
+ R visitComment(Comment node) => null;
+
+ @override
+ R visitCommentReference(CommentReference node) => null;
+
+ @override
+ R visitCompilationUnit(CompilationUnit node) => null;
+
+ @override
+ R visitConditionalExpression(ConditionalExpression node) => null;
+
+ @override
+ R visitConfiguration(Configuration node) => null;
+
+ @override
+ R visitConstructorDeclaration(ConstructorDeclaration node) => null;
+
+ @override
+ R visitConstructorFieldInitializer(ConstructorFieldInitializer node) => null;
+
+ @override
+ R visitConstructorName(ConstructorName node) => null;
+
+ @override
+ R visitContinueStatement(ContinueStatement node) => null;
+
+ @override
+ R visitDeclaredIdentifier(DeclaredIdentifier node) => null;
+
+ @override
+ R visitDefaultFormalParameter(DefaultFormalParameter node) => null;
+
+ @override
+ R visitDoStatement(DoStatement node) => null;
+
+ @override
+ R visitDottedName(DottedName node) => null;
+
+ @override
+ R visitDoubleLiteral(DoubleLiteral node) => null;
+
+ @override
+ R visitEmptyFunctionBody(EmptyFunctionBody node) => null;
+
+ @override
+ R visitEmptyStatement(EmptyStatement node) => null;
+
+ @override
+ R visitEnumConstantDeclaration(EnumConstantDeclaration node) => null;
+
+ @override
+ R visitEnumDeclaration(EnumDeclaration node) => null;
+
+ @override
+ R visitExportDirective(ExportDirective node) => null;
+
+ @override
+ R visitExpressionFunctionBody(ExpressionFunctionBody node) => null;
+
+ @override
+ R visitExpressionStatement(ExpressionStatement node) => null;
+
+ @override
+ R visitExtendsClause(ExtendsClause node) => null;
+
+ @override
+ R visitFieldDeclaration(FieldDeclaration node) => null;
+
+ @override
+ R visitFieldFormalParameter(FieldFormalParameter node) => null;
+
+ @override
+ R visitForEachStatement(ForEachStatement node) => null;
+
+ @override
+ R visitFormalParameterList(FormalParameterList node) => null;
+
+ @override
+ R visitForStatement(ForStatement node) => null;
+
+ @override
+ R visitFunctionDeclaration(FunctionDeclaration node) => null;
+
+ @override
+ R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
+ null;
+
+ @override
+ R visitFunctionExpression(FunctionExpression node) => null;
+
+ @override
+ R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) =>
+ null;
+
+ @override
+ R visitFunctionTypeAlias(FunctionTypeAlias node) => null;
+
+ @override
+ R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) =>
+ null;
+
+ @override
+ R visitHideCombinator(HideCombinator node) => null;
+
+ @override
+ R visitIfStatement(IfStatement node) => null;
+
+ @override
+ R visitImplementsClause(ImplementsClause node) => null;
+
+ @override
+ R visitImportDirective(ImportDirective node) => null;
+
+ @override
+ R visitIndexExpression(IndexExpression node) => null;
+
+ @override
+ R visitInstanceCreationExpression(InstanceCreationExpression node) => null;
+
+ @override
+ R visitIntegerLiteral(IntegerLiteral node) => null;
+
+ @override
+ R visitInterpolationExpression(InterpolationExpression node) => null;
+
+ @override
+ R visitInterpolationString(InterpolationString node) => null;
+
+ @override
+ R visitIsExpression(IsExpression node) => null;
+
+ @override
+ R visitLabel(Label node) => null;
+
+ @override
+ R visitLabeledStatement(LabeledStatement node) => null;
+
+ @override
+ R visitLibraryDirective(LibraryDirective node) => null;
+
+ @override
+ R visitLibraryIdentifier(LibraryIdentifier node) => null;
+
+ @override
+ R visitListLiteral(ListLiteral node) => null;
+
+ @override
+ R visitMapLiteral(MapLiteral node) => null;
+
+ @override
+ R visitMapLiteralEntry(MapLiteralEntry node) => null;
+
+ @override
+ R visitMethodDeclaration(MethodDeclaration node) => null;
+
+ @override
+ R visitMethodInvocation(MethodInvocation node) => null;
+
+ @override
+ R visitNamedExpression(NamedExpression node) => null;
+
+ @override
+ R visitNativeClause(NativeClause node) => null;
+
+ @override
+ R visitNativeFunctionBody(NativeFunctionBody node) => null;
+
+ @override
+ R visitNullLiteral(NullLiteral node) => null;
+
+ @override
+ R visitParenthesizedExpression(ParenthesizedExpression node) => null;
+
+ @override
+ R visitPartDirective(PartDirective node) => null;
+
+ @override
+ R visitPartOfDirective(PartOfDirective node) => null;
+
+ @override
+ R visitPostfixExpression(PostfixExpression node) => null;
+
+ @override
+ R visitPrefixedIdentifier(PrefixedIdentifier node) => null;
+
+ @override
+ R visitPrefixExpression(PrefixExpression node) => null;
+
+ @override
+ R visitPropertyAccess(PropertyAccess node) => null;
+
+ @override
+ R visitRedirectingConstructorInvocation(
+ RedirectingConstructorInvocation node) =>
+ null;
+
+ @override
+ R visitRethrowExpression(RethrowExpression node) => null;
+
+ @override
+ R visitReturnStatement(ReturnStatement node) => null;
+
+ @override
+ R visitScriptTag(ScriptTag node) => null;
+
+ @override
+ R visitShowCombinator(ShowCombinator node) => null;
+
+ @override
+ R visitSimpleFormalParameter(SimpleFormalParameter node) => null;
+
+ @override
+ R visitSimpleIdentifier(SimpleIdentifier node) => null;
+
+ @override
+ R visitSimpleStringLiteral(SimpleStringLiteral node) => null;
+
+ @override
+ R visitStringInterpolation(StringInterpolation node) => null;
+
+ @override
+ R visitSuperConstructorInvocation(SuperConstructorInvocation node) => null;
+
+ @override
+ R visitSuperExpression(SuperExpression node) => null;
+
+ @override
+ R visitSwitchCase(SwitchCase node) => null;
+
+ @override
+ R visitSwitchDefault(SwitchDefault node) => null;
+
+ @override
+ R visitSwitchStatement(SwitchStatement node) => null;
+
+ @override
+ R visitSymbolLiteral(SymbolLiteral node) => null;
+
+ @override
+ R visitThisExpression(ThisExpression node) => null;
+
+ @override
+ R visitThrowExpression(ThrowExpression node) => null;
+
+ @override
+ R visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) => null;
+
+ @override
+ R visitTryStatement(TryStatement node) => null;
+
+ @override
+ R visitTypeArgumentList(TypeArgumentList node) => null;
+
+ @override
+ R visitTypeName(TypeName node) => null;
+
+ @override
+ R visitTypeParameter(TypeParameter node) => null;
+
+ @override
+ R visitTypeParameterList(TypeParameterList node) => null;
+
+ @override
+ R visitVariableDeclaration(VariableDeclaration node) => null;
+
+ @override
+ R visitVariableDeclarationList(VariableDeclarationList node) => null;
+
+ @override
+ R visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
+ null;
+
+ @override
+ R visitWhileStatement(WhileStatement node) => null;
+
+ @override
+ R visitWithClause(WithClause node) => null;
+
+ @override
+ R visitYieldStatement(YieldStatement node) => null;
+}
+
+/**
+ * An AST visitor that will recursively visit all of the nodes in an AST
+ * structure (like instances of the class [RecursiveAstVisitor]). In addition,
+ * every node will also be visited by using a single unified [visitNode] method.
+ *
+ * Subclasses that override a visit method must either invoke the overridden
+ * visit method or explicitly invoke the more general [visitNode] method.
+ * Failure to do so will cause the children of the visited node to not be
+ * visited.
+ *
+ * Clients may extend or implement this class.
+ */
+class UnifyingAstVisitor<R> implements AstVisitor<R> {
+ @override
+ R visitAdjacentStrings(AdjacentStrings node) => visitNode(node);
+
+ @override
+ R visitAnnotation(Annotation node) => visitNode(node);
+
+ @override
+ R visitArgumentList(ArgumentList node) => visitNode(node);
+
+ @override
+ R visitAsExpression(AsExpression node) => visitNode(node);
+
+ @override
+ R visitAssertStatement(AssertStatement node) => visitNode(node);
+
+ @override
+ R visitAssignmentExpression(AssignmentExpression node) => visitNode(node);
+
+ @override
+ R visitAwaitExpression(AwaitExpression node) => visitNode(node);
+
+ @override
+ R visitBinaryExpression(BinaryExpression node) => visitNode(node);
+
+ @override
+ R visitBlock(Block node) => visitNode(node);
+
+ @override
+ R visitBlockFunctionBody(BlockFunctionBody node) => visitNode(node);
+
+ @override
+ R visitBooleanLiteral(BooleanLiteral node) => visitNode(node);
+
+ @override
+ R visitBreakStatement(BreakStatement node) => visitNode(node);
+
+ @override
+ R visitCascadeExpression(CascadeExpression node) => visitNode(node);
+
+ @override
+ R visitCatchClause(CatchClause node) => visitNode(node);
+
+ @override
+ R visitClassDeclaration(ClassDeclaration node) => visitNode(node);
+
+ @override
+ R visitClassTypeAlias(ClassTypeAlias node) => visitNode(node);
+
+ @override
+ R visitComment(Comment node) => visitNode(node);
+
+ @override
+ R visitCommentReference(CommentReference node) => visitNode(node);
+
+ @override
+ R visitCompilationUnit(CompilationUnit node) => visitNode(node);
+
+ @override
+ R visitConditionalExpression(ConditionalExpression node) => visitNode(node);
+
+ @override
+ R visitConfiguration(Configuration node) => visitNode(node);
+
+ @override
+ R visitConstructorDeclaration(ConstructorDeclaration node) => visitNode(node);
+
+ @override
+ R visitConstructorFieldInitializer(ConstructorFieldInitializer node) =>
+ visitNode(node);
+
+ @override
+ R visitConstructorName(ConstructorName node) => visitNode(node);
+
+ @override
+ R visitContinueStatement(ContinueStatement node) => visitNode(node);
+
+ @override
+ R visitDeclaredIdentifier(DeclaredIdentifier node) => visitNode(node);
+
+ @override
+ R visitDefaultFormalParameter(DefaultFormalParameter node) => visitNode(node);
+
+ @override
+ R visitDoStatement(DoStatement node) => visitNode(node);
+
+ @override
+ R visitDottedName(DottedName node) => visitNode(node);
+
+ @override
+ R visitDoubleLiteral(DoubleLiteral node) => visitNode(node);
+
+ @override
+ R visitEmptyFunctionBody(EmptyFunctionBody node) => visitNode(node);
+
+ @override
+ R visitEmptyStatement(EmptyStatement node) => visitNode(node);
+
+ @override
+ R visitEnumConstantDeclaration(EnumConstantDeclaration node) =>
+ visitNode(node);
+
+ @override
+ R visitEnumDeclaration(EnumDeclaration node) => visitNode(node);
+
+ @override
+ R visitExportDirective(ExportDirective node) => visitNode(node);
+
+ @override
+ R visitExpressionFunctionBody(ExpressionFunctionBody node) => visitNode(node);
+
+ @override
+ R visitExpressionStatement(ExpressionStatement node) => visitNode(node);
+
+ @override
+ R visitExtendsClause(ExtendsClause node) => visitNode(node);
+
+ @override
+ R visitFieldDeclaration(FieldDeclaration node) => visitNode(node);
+
+ @override
+ R visitFieldFormalParameter(FieldFormalParameter node) => visitNode(node);
+
+ @override
+ R visitForEachStatement(ForEachStatement node) => visitNode(node);
+
+ @override
+ R visitFormalParameterList(FormalParameterList node) => visitNode(node);
+
+ @override
+ R visitForStatement(ForStatement node) => visitNode(node);
+
+ @override
+ R visitFunctionDeclaration(FunctionDeclaration node) => visitNode(node);
+
+ @override
+ R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
+ visitNode(node);
+
+ @override
+ R visitFunctionExpression(FunctionExpression node) => visitNode(node);
+
+ @override
+ R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) =>
+ visitNode(node);
+
+ @override
+ R visitFunctionTypeAlias(FunctionTypeAlias node) => visitNode(node);
+
+ @override
+ R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) =>
+ visitNode(node);
+
+ @override
+ R visitHideCombinator(HideCombinator node) => visitNode(node);
+
+ @override
+ R visitIfStatement(IfStatement node) => visitNode(node);
+
+ @override
+ R visitImplementsClause(ImplementsClause node) => visitNode(node);
+
+ @override
+ R visitImportDirective(ImportDirective node) => visitNode(node);
+
+ @override
+ R visitIndexExpression(IndexExpression node) => visitNode(node);
+
+ @override
+ R visitInstanceCreationExpression(InstanceCreationExpression node) =>
+ visitNode(node);
+
+ @override
+ R visitIntegerLiteral(IntegerLiteral node) => visitNode(node);
+
+ @override
+ R visitInterpolationExpression(InterpolationExpression node) =>
+ visitNode(node);
+
+ @override
+ R visitInterpolationString(InterpolationString node) => visitNode(node);
+
+ @override
+ R visitIsExpression(IsExpression node) => visitNode(node);
+
+ @override
+ R visitLabel(Label node) => visitNode(node);
+
+ @override
+ R visitLabeledStatement(LabeledStatement node) => visitNode(node);
+
+ @override
+ R visitLibraryDirective(LibraryDirective node) => visitNode(node);
+
+ @override
+ R visitLibraryIdentifier(LibraryIdentifier node) => visitNode(node);
+
+ @override
+ R visitListLiteral(ListLiteral node) => visitNode(node);
+
+ @override
+ R visitMapLiteral(MapLiteral node) => visitNode(node);
+
+ @override
+ R visitMapLiteralEntry(MapLiteralEntry node) => visitNode(node);
+
+ @override
+ R visitMethodDeclaration(MethodDeclaration node) => visitNode(node);
+
+ @override
+ R visitMethodInvocation(MethodInvocation node) => visitNode(node);
+
+ @override
+ R visitNamedExpression(NamedExpression node) => visitNode(node);
+
+ @override
+ R visitNativeClause(NativeClause node) => visitNode(node);
+
+ @override
+ R visitNativeFunctionBody(NativeFunctionBody node) => visitNode(node);
+
+ R visitNode(AstNode node) {
+ node.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R visitNullLiteral(NullLiteral node) => visitNode(node);
+
+ @override
+ R visitParenthesizedExpression(ParenthesizedExpression node) =>
+ visitNode(node);
+
+ @override
+ R visitPartDirective(PartDirective node) => visitNode(node);
+
+ @override
+ R visitPartOfDirective(PartOfDirective node) => visitNode(node);
+
+ @override
+ R visitPostfixExpression(PostfixExpression node) => visitNode(node);
+
+ @override
+ R visitPrefixedIdentifier(PrefixedIdentifier node) => visitNode(node);
+
+ @override
+ R visitPrefixExpression(PrefixExpression node) => visitNode(node);
+
+ @override
+ R visitPropertyAccess(PropertyAccess node) => visitNode(node);
+
+ @override
+ R visitRedirectingConstructorInvocation(
+ RedirectingConstructorInvocation node) =>
+ visitNode(node);
+
+ @override
+ R visitRethrowExpression(RethrowExpression node) => visitNode(node);
+
+ @override
+ R visitReturnStatement(ReturnStatement node) => visitNode(node);
+
+ @override
+ R visitScriptTag(ScriptTag scriptTag) => visitNode(scriptTag);
+
+ @override
+ R visitShowCombinator(ShowCombinator node) => visitNode(node);
+
+ @override
+ R visitSimpleFormalParameter(SimpleFormalParameter node) => visitNode(node);
+
+ @override
+ R visitSimpleIdentifier(SimpleIdentifier node) => visitNode(node);
+
+ @override
+ R visitSimpleStringLiteral(SimpleStringLiteral node) => visitNode(node);
+
+ @override
+ R visitStringInterpolation(StringInterpolation node) => visitNode(node);
+
+ @override
+ R visitSuperConstructorInvocation(SuperConstructorInvocation node) =>
+ visitNode(node);
+
+ @override
+ R visitSuperExpression(SuperExpression node) => visitNode(node);
+
+ @override
+ R visitSwitchCase(SwitchCase node) => visitNode(node);
+
+ @override
+ R visitSwitchDefault(SwitchDefault node) => visitNode(node);
+
+ @override
+ R visitSwitchStatement(SwitchStatement node) => visitNode(node);
+
+ @override
+ R visitSymbolLiteral(SymbolLiteral node) => visitNode(node);
+
+ @override
+ R visitThisExpression(ThisExpression node) => visitNode(node);
+
+ @override
+ R visitThrowExpression(ThrowExpression node) => visitNode(node);
+
+ @override
+ R visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) =>
+ visitNode(node);
+
+ @override
+ R visitTryStatement(TryStatement node) => visitNode(node);
+
+ @override
+ R visitTypeArgumentList(TypeArgumentList node) => visitNode(node);
+
+ @override
+ R visitTypeName(TypeName node) => visitNode(node);
+
+ @override
+ R visitTypeParameter(TypeParameter node) => visitNode(node);
+
+ @override
+ R visitTypeParameterList(TypeParameterList node) => visitNode(node);
+
+ @override
+ R visitVariableDeclaration(VariableDeclaration node) => visitNode(node);
+
+ @override
+ R visitVariableDeclarationList(VariableDeclarationList node) =>
+ visitNode(node);
+
+ @override
+ R visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
+ visitNode(node);
+
+ @override
+ R visitWhileStatement(WhileStatement node) => visitNode(node);
+
+ @override
+ R visitWithClause(WithClause node) => visitNode(node);
+
+ @override
+ R visitYieldStatement(YieldStatement node) => visitNode(node);
+}
+
+/**
+ * A helper class used to implement the correct order of visits for a
+ * [BreadthFirstVisitor].
+ */
+class _BreadthFirstChildVisitor extends UnifyingAstVisitor<Object> {
+ /**
+ * The [BreadthFirstVisitor] being helped by this visitor.
+ */
+ final BreadthFirstVisitor outerVisitor;
+
+ /**
+ * Initialize a newly created visitor to help the [outerVisitor].
+ */
+ _BreadthFirstChildVisitor(this.outerVisitor);
+
+ @override
+ Object visitNode(AstNode node) {
+ outerVisitor._queue.add(node);
+ return null;
+ }
+}
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/dart/ast/utilities.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698