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

Side by Side 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, 11 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 unified diff | Download patch
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/dart/ast/utilities.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 library analyzer.dart.ast.visitor;
6
7 import 'dart:collection';
8
9 import 'package:analyzer/src/generated/ast.dart';
10
11 /**
12 * An AST visitor that will recursively visit all of the nodes in an AST
13 * structure, similar to [GeneralizingAstVisitor]. This visitor uses a
14 * breadth-first ordering rather than the depth-first ordering of
15 * [GeneralizingAstVisitor].
16 *
17 * Subclasses that override a visit method must either invoke the overridden
18 * visit method or explicitly invoke the more general visit method. Failure to
19 * do so will cause the visit methods for superclasses of the node to not be
20 * invoked and will cause the children of the visited node to not be visited.
21 *
22 * In addition, subclasses should <b>not</b> explicitly visit the children of a
23 * node, but should ensure that the method [visitNode] is used to visit the
24 * children (either directly or indirectly). Failure to do will break the order
25 * in which nodes are visited.
26 *
27 * Note that, unlike other visitors that begin to visit a structure of nodes by
28 * asking the root node in the structure to accept the visitor, this visitor
29 * requires that clients start the visit by invoking the method [visitAllNodes]
30 * defined on the visitor with the root node as the argument:
31 *
32 * visitor.visitAllNodes(rootNode);
33 *
34 * Clients may extend or implement this class.
35 */
36 class BreadthFirstVisitor<R> extends GeneralizingAstVisitor<R> {
37 /**
38 * A queue holding the nodes that have not yet been visited in the order in
39 * which they ought to be visited.
40 */
41 Queue<AstNode> _queue = new Queue<AstNode>();
42
43 /**
44 * A visitor, used to visit the children of the current node, that will add
45 * the nodes it visits to the [_queue].
46 */
47 _BreadthFirstChildVisitor _childVisitor;
48
49 /**
50 * Initialize a newly created visitor.
51 */
52 BreadthFirstVisitor() {
53 _childVisitor = new _BreadthFirstChildVisitor(this);
54 }
55
56 /**
57 * Visit all nodes in the tree starting at the given [root] node, in
58 * breadth-first order.
59 */
60 void visitAllNodes(AstNode root) {
61 _queue.add(root);
62 while (!_queue.isEmpty) {
63 AstNode next = _queue.removeFirst();
64 next.accept(this);
65 }
66 }
67
68 @override
69 R visitNode(AstNode node) {
70 node.visitChildren(_childVisitor);
71 return null;
72 }
73 }
74
75 /**
76 * An AST visitor that will recursively visit all of the nodes in an AST
77 * structure (like instances of the class [RecursiveAstVisitor]). In addition,
78 * when a node of a specific type is visited not only will the visit method for
79 * that specific type of node be invoked, but additional methods for the
80 * superclasses of that node will also be invoked. For example, using an
81 * instance of this class to visit a [Block] will cause the method [visitBlock]
82 * to be invoked but will also cause the methods [visitStatement] and
83 * [visitNode] to be subsequently invoked. This allows visitors to be written
84 * that visit all statements without needing to override the visit method for
85 * each of the specific subclasses of [Statement].
86 *
87 * Subclasses that override a visit method must either invoke the overridden
88 * visit method or explicitly invoke the more general visit method. Failure to
89 * do so will cause the visit methods for superclasses of the node to not be
90 * invoked and will cause the children of the visited node to not be visited.
91 *
92 * Clients may extend or implement this class.
93 */
94 class GeneralizingAstVisitor<R> implements AstVisitor<R> {
95 @override
96 R visitAdjacentStrings(AdjacentStrings node) => visitStringLiteral(node);
97
98 R visitAnnotatedNode(AnnotatedNode node) => visitNode(node);
99
100 @override
101 R visitAnnotation(Annotation node) => visitNode(node);
102
103 @override
104 R visitArgumentList(ArgumentList node) => visitNode(node);
105
106 @override
107 R visitAsExpression(AsExpression node) => visitExpression(node);
108
109 @override
110 R visitAssertStatement(AssertStatement node) => visitStatement(node);
111
112 @override
113 R visitAssignmentExpression(AssignmentExpression node) =>
114 visitExpression(node);
115
116 @override
117 R visitAwaitExpression(AwaitExpression node) => visitExpression(node);
118
119 @override
120 R visitBinaryExpression(BinaryExpression node) => visitExpression(node);
121
122 @override
123 R visitBlock(Block node) => visitStatement(node);
124
125 @override
126 R visitBlockFunctionBody(BlockFunctionBody node) => visitFunctionBody(node);
127
128 @override
129 R visitBooleanLiteral(BooleanLiteral node) => visitLiteral(node);
130
131 @override
132 R visitBreakStatement(BreakStatement node) => visitStatement(node);
133
134 @override
135 R visitCascadeExpression(CascadeExpression node) => visitExpression(node);
136
137 @override
138 R visitCatchClause(CatchClause node) => visitNode(node);
139
140 @override
141 R visitClassDeclaration(ClassDeclaration node) =>
142 visitNamedCompilationUnitMember(node);
143
144 R visitClassMember(ClassMember node) => visitDeclaration(node);
145
146 @override
147 R visitClassTypeAlias(ClassTypeAlias node) => visitTypeAlias(node);
148
149 R visitCombinator(Combinator node) => visitNode(node);
150
151 @override
152 R visitComment(Comment node) => visitNode(node);
153
154 @override
155 R visitCommentReference(CommentReference node) => visitNode(node);
156
157 @override
158 R visitCompilationUnit(CompilationUnit node) => visitNode(node);
159
160 R visitCompilationUnitMember(CompilationUnitMember node) =>
161 visitDeclaration(node);
162
163 @override
164 R visitConditionalExpression(ConditionalExpression node) =>
165 visitExpression(node);
166
167 @override
168 R visitConfiguration(Configuration node) => visitNode(node);
169
170 @override
171 R visitConstructorDeclaration(ConstructorDeclaration node) =>
172 visitClassMember(node);
173
174 @override
175 R visitConstructorFieldInitializer(ConstructorFieldInitializer node) =>
176 visitConstructorInitializer(node);
177
178 R visitConstructorInitializer(ConstructorInitializer node) => visitNode(node);
179
180 @override
181 R visitConstructorName(ConstructorName node) => visitNode(node);
182
183 @override
184 R visitContinueStatement(ContinueStatement node) => visitStatement(node);
185
186 R visitDeclaration(Declaration node) => visitAnnotatedNode(node);
187
188 @override
189 R visitDeclaredIdentifier(DeclaredIdentifier node) => visitDeclaration(node);
190
191 @override
192 R visitDefaultFormalParameter(DefaultFormalParameter node) =>
193 visitFormalParameter(node);
194
195 R visitDirective(Directive node) => visitAnnotatedNode(node);
196
197 @override
198 R visitDoStatement(DoStatement node) => visitStatement(node);
199
200 @override
201 R visitDottedName(DottedName node) => visitNode(node);
202
203 @override
204 R visitDoubleLiteral(DoubleLiteral node) => visitLiteral(node);
205
206 @override
207 R visitEmptyFunctionBody(EmptyFunctionBody node) => visitFunctionBody(node);
208
209 @override
210 R visitEmptyStatement(EmptyStatement node) => visitStatement(node);
211
212 @override
213 R visitEnumConstantDeclaration(EnumConstantDeclaration node) =>
214 visitDeclaration(node);
215
216 @override
217 R visitEnumDeclaration(EnumDeclaration node) =>
218 visitNamedCompilationUnitMember(node);
219
220 @override
221 R visitExportDirective(ExportDirective node) => visitNamespaceDirective(node);
222
223 R visitExpression(Expression node) => visitNode(node);
224
225 @override
226 R visitExpressionFunctionBody(ExpressionFunctionBody node) =>
227 visitFunctionBody(node);
228
229 @override
230 R visitExpressionStatement(ExpressionStatement node) => visitStatement(node);
231
232 @override
233 R visitExtendsClause(ExtendsClause node) => visitNode(node);
234
235 @override
236 R visitFieldDeclaration(FieldDeclaration node) => visitClassMember(node);
237
238 @override
239 R visitFieldFormalParameter(FieldFormalParameter node) =>
240 visitNormalFormalParameter(node);
241
242 @override
243 R visitForEachStatement(ForEachStatement node) => visitStatement(node);
244
245 R visitFormalParameter(FormalParameter node) => visitNode(node);
246
247 @override
248 R visitFormalParameterList(FormalParameterList node) => visitNode(node);
249
250 @override
251 R visitForStatement(ForStatement node) => visitStatement(node);
252
253 R visitFunctionBody(FunctionBody node) => visitNode(node);
254
255 @override
256 R visitFunctionDeclaration(FunctionDeclaration node) =>
257 visitNamedCompilationUnitMember(node);
258
259 @override
260 R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
261 visitStatement(node);
262
263 @override
264 R visitFunctionExpression(FunctionExpression node) => visitExpression(node);
265
266 @override
267 R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) =>
268 visitExpression(node);
269
270 @override
271 R visitFunctionTypeAlias(FunctionTypeAlias node) => visitTypeAlias(node);
272
273 @override
274 R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) =>
275 visitNormalFormalParameter(node);
276
277 @override
278 R visitHideCombinator(HideCombinator node) => visitCombinator(node);
279
280 R visitIdentifier(Identifier node) => visitExpression(node);
281
282 @override
283 R visitIfStatement(IfStatement node) => visitStatement(node);
284
285 @override
286 R visitImplementsClause(ImplementsClause node) => visitNode(node);
287
288 @override
289 R visitImportDirective(ImportDirective node) => visitNamespaceDirective(node);
290
291 @override
292 R visitIndexExpression(IndexExpression node) => visitExpression(node);
293
294 @override
295 R visitInstanceCreationExpression(InstanceCreationExpression node) =>
296 visitExpression(node);
297
298 @override
299 R visitIntegerLiteral(IntegerLiteral node) => visitLiteral(node);
300
301 R visitInterpolationElement(InterpolationElement node) => visitNode(node);
302
303 @override
304 R visitInterpolationExpression(InterpolationExpression node) =>
305 visitInterpolationElement(node);
306
307 @override
308 R visitInterpolationString(InterpolationString node) =>
309 visitInterpolationElement(node);
310
311 @override
312 R visitIsExpression(IsExpression node) => visitExpression(node);
313
314 @override
315 R visitLabel(Label node) => visitNode(node);
316
317 @override
318 R visitLabeledStatement(LabeledStatement node) => visitStatement(node);
319
320 @override
321 R visitLibraryDirective(LibraryDirective node) => visitDirective(node);
322
323 @override
324 R visitLibraryIdentifier(LibraryIdentifier node) => visitIdentifier(node);
325
326 @override
327 R visitListLiteral(ListLiteral node) => visitTypedLiteral(node);
328
329 R visitLiteral(Literal node) => visitExpression(node);
330
331 @override
332 R visitMapLiteral(MapLiteral node) => visitTypedLiteral(node);
333
334 @override
335 R visitMapLiteralEntry(MapLiteralEntry node) => visitNode(node);
336
337 @override
338 R visitMethodDeclaration(MethodDeclaration node) => visitClassMember(node);
339
340 @override
341 R visitMethodInvocation(MethodInvocation node) => visitExpression(node);
342
343 R visitNamedCompilationUnitMember(NamedCompilationUnitMember node) =>
344 visitCompilationUnitMember(node);
345
346 @override
347 R visitNamedExpression(NamedExpression node) => visitExpression(node);
348
349 R visitNamespaceDirective(NamespaceDirective node) =>
350 visitUriBasedDirective(node);
351
352 @override
353 R visitNativeClause(NativeClause node) => visitNode(node);
354
355 @override
356 R visitNativeFunctionBody(NativeFunctionBody node) => visitFunctionBody(node);
357
358 R visitNode(AstNode node) {
359 node.visitChildren(this);
360 return null;
361 }
362
363 R visitNormalFormalParameter(NormalFormalParameter node) =>
364 visitFormalParameter(node);
365
366 @override
367 R visitNullLiteral(NullLiteral node) => visitLiteral(node);
368
369 @override
370 R visitParenthesizedExpression(ParenthesizedExpression node) =>
371 visitExpression(node);
372
373 @override
374 R visitPartDirective(PartDirective node) => visitUriBasedDirective(node);
375
376 @override
377 R visitPartOfDirective(PartOfDirective node) => visitDirective(node);
378
379 @override
380 R visitPostfixExpression(PostfixExpression node) => visitExpression(node);
381
382 @override
383 R visitPrefixedIdentifier(PrefixedIdentifier node) => visitIdentifier(node);
384
385 @override
386 R visitPrefixExpression(PrefixExpression node) => visitExpression(node);
387
388 @override
389 R visitPropertyAccess(PropertyAccess node) => visitExpression(node);
390
391 @override
392 R visitRedirectingConstructorInvocation(
393 RedirectingConstructorInvocation node) =>
394 visitConstructorInitializer(node);
395
396 @override
397 R visitRethrowExpression(RethrowExpression node) => visitExpression(node);
398
399 @override
400 R visitReturnStatement(ReturnStatement node) => visitStatement(node);
401
402 @override
403 R visitScriptTag(ScriptTag scriptTag) => visitNode(scriptTag);
404
405 @override
406 R visitShowCombinator(ShowCombinator node) => visitCombinator(node);
407
408 @override
409 R visitSimpleFormalParameter(SimpleFormalParameter node) =>
410 visitNormalFormalParameter(node);
411
412 @override
413 R visitSimpleIdentifier(SimpleIdentifier node) => visitIdentifier(node);
414
415 @override
416 R visitSimpleStringLiteral(SimpleStringLiteral node) =>
417 visitSingleStringLiteral(node);
418
419 R visitSingleStringLiteral(SingleStringLiteral node) =>
420 visitStringLiteral(node);
421
422 R visitStatement(Statement node) => visitNode(node);
423
424 @override
425 R visitStringInterpolation(StringInterpolation node) =>
426 visitSingleStringLiteral(node);
427
428 R visitStringLiteral(StringLiteral node) => visitLiteral(node);
429
430 @override
431 R visitSuperConstructorInvocation(SuperConstructorInvocation node) =>
432 visitConstructorInitializer(node);
433
434 @override
435 R visitSuperExpression(SuperExpression node) => visitExpression(node);
436
437 @override
438 R visitSwitchCase(SwitchCase node) => visitSwitchMember(node);
439
440 @override
441 R visitSwitchDefault(SwitchDefault node) => visitSwitchMember(node);
442
443 R visitSwitchMember(SwitchMember node) => visitNode(node);
444
445 @override
446 R visitSwitchStatement(SwitchStatement node) => visitStatement(node);
447
448 @override
449 R visitSymbolLiteral(SymbolLiteral node) => visitLiteral(node);
450
451 @override
452 R visitThisExpression(ThisExpression node) => visitExpression(node);
453
454 @override
455 R visitThrowExpression(ThrowExpression node) => visitExpression(node);
456
457 @override
458 R visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) =>
459 visitCompilationUnitMember(node);
460
461 @override
462 R visitTryStatement(TryStatement node) => visitStatement(node);
463
464 R visitTypeAlias(TypeAlias node) => visitNamedCompilationUnitMember(node);
465
466 @override
467 R visitTypeArgumentList(TypeArgumentList node) => visitNode(node);
468
469 R visitTypedLiteral(TypedLiteral node) => visitLiteral(node);
470
471 @override
472 R visitTypeName(TypeName node) => visitNode(node);
473
474 @override
475 R visitTypeParameter(TypeParameter node) => visitNode(node);
476
477 @override
478 R visitTypeParameterList(TypeParameterList node) => visitNode(node);
479
480 R visitUriBasedDirective(UriBasedDirective node) => visitDirective(node);
481
482 @override
483 R visitVariableDeclaration(VariableDeclaration node) =>
484 visitDeclaration(node);
485
486 @override
487 R visitVariableDeclarationList(VariableDeclarationList node) =>
488 visitNode(node);
489
490 @override
491 R visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
492 visitStatement(node);
493
494 @override
495 R visitWhileStatement(WhileStatement node) => visitStatement(node);
496
497 @override
498 R visitWithClause(WithClause node) => visitNode(node);
499
500 @override
501 R visitYieldStatement(YieldStatement node) => visitStatement(node);
502 }
503
504 /**
505 * An AST visitor that will recursively visit all of the nodes in an AST
506 * structure. For example, using an instance of this class to visit a [Block]
507 * will also cause all of the statements in the block to be visited.
508 *
509 * Subclasses that override a visit method must either invoke the overridden
510 * visit method or must explicitly ask the visited node to visit its children.
511 * Failure to do so will cause the children of the visited node to not be
512 * visited.
513 *
514 * Clients may extend or implement this class.
515 */
516 class RecursiveAstVisitor<R> implements AstVisitor<R> {
517 @override
518 R visitAdjacentStrings(AdjacentStrings node) {
519 node.visitChildren(this);
520 return null;
521 }
522
523 @override
524 R visitAnnotation(Annotation node) {
525 node.visitChildren(this);
526 return null;
527 }
528
529 @override
530 R visitArgumentList(ArgumentList node) {
531 node.visitChildren(this);
532 return null;
533 }
534
535 @override
536 R visitAsExpression(AsExpression node) {
537 node.visitChildren(this);
538 return null;
539 }
540
541 @override
542 R visitAssertStatement(AssertStatement node) {
543 node.visitChildren(this);
544 return null;
545 }
546
547 @override
548 R visitAssignmentExpression(AssignmentExpression node) {
549 node.visitChildren(this);
550 return null;
551 }
552
553 @override
554 R visitAwaitExpression(AwaitExpression node) {
555 node.visitChildren(this);
556 return null;
557 }
558
559 @override
560 R visitBinaryExpression(BinaryExpression node) {
561 node.visitChildren(this);
562 return null;
563 }
564
565 @override
566 R visitBlock(Block node) {
567 node.visitChildren(this);
568 return null;
569 }
570
571 @override
572 R visitBlockFunctionBody(BlockFunctionBody node) {
573 node.visitChildren(this);
574 return null;
575 }
576
577 @override
578 R visitBooleanLiteral(BooleanLiteral node) {
579 node.visitChildren(this);
580 return null;
581 }
582
583 @override
584 R visitBreakStatement(BreakStatement node) {
585 node.visitChildren(this);
586 return null;
587 }
588
589 @override
590 R visitCascadeExpression(CascadeExpression node) {
591 node.visitChildren(this);
592 return null;
593 }
594
595 @override
596 R visitCatchClause(CatchClause node) {
597 node.visitChildren(this);
598 return null;
599 }
600
601 @override
602 R visitClassDeclaration(ClassDeclaration node) {
603 node.visitChildren(this);
604 return null;
605 }
606
607 @override
608 R visitClassTypeAlias(ClassTypeAlias node) {
609 node.visitChildren(this);
610 return null;
611 }
612
613 @override
614 R visitComment(Comment node) {
615 node.visitChildren(this);
616 return null;
617 }
618
619 @override
620 R visitCommentReference(CommentReference node) {
621 node.visitChildren(this);
622 return null;
623 }
624
625 @override
626 R visitCompilationUnit(CompilationUnit node) {
627 node.visitChildren(this);
628 return null;
629 }
630
631 @override
632 R visitConditionalExpression(ConditionalExpression node) {
633 node.visitChildren(this);
634 return null;
635 }
636
637 @override
638 R visitConfiguration(Configuration node) {
639 node.visitChildren(this);
640 return null;
641 }
642
643 @override
644 R visitConstructorDeclaration(ConstructorDeclaration node) {
645 node.visitChildren(this);
646 return null;
647 }
648
649 @override
650 R visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
651 node.visitChildren(this);
652 return null;
653 }
654
655 @override
656 R visitConstructorName(ConstructorName node) {
657 node.visitChildren(this);
658 return null;
659 }
660
661 @override
662 R visitContinueStatement(ContinueStatement node) {
663 node.visitChildren(this);
664 return null;
665 }
666
667 @override
668 R visitDeclaredIdentifier(DeclaredIdentifier node) {
669 node.visitChildren(this);
670 return null;
671 }
672
673 @override
674 R visitDefaultFormalParameter(DefaultFormalParameter node) {
675 node.visitChildren(this);
676 return null;
677 }
678
679 @override
680 R visitDoStatement(DoStatement node) {
681 node.visitChildren(this);
682 return null;
683 }
684
685 @override
686 R visitDottedName(DottedName node) {
687 node.visitChildren(this);
688 return null;
689 }
690
691 @override
692 R visitDoubleLiteral(DoubleLiteral node) {
693 node.visitChildren(this);
694 return null;
695 }
696
697 @override
698 R visitEmptyFunctionBody(EmptyFunctionBody node) {
699 node.visitChildren(this);
700 return null;
701 }
702
703 @override
704 R visitEmptyStatement(EmptyStatement node) {
705 node.visitChildren(this);
706 return null;
707 }
708
709 @override
710 R visitEnumConstantDeclaration(EnumConstantDeclaration node) {
711 node.visitChildren(this);
712 return null;
713 }
714
715 @override
716 R visitEnumDeclaration(EnumDeclaration node) {
717 node.visitChildren(this);
718 return null;
719 }
720
721 @override
722 R visitExportDirective(ExportDirective node) {
723 node.visitChildren(this);
724 return null;
725 }
726
727 @override
728 R visitExpressionFunctionBody(ExpressionFunctionBody node) {
729 node.visitChildren(this);
730 return null;
731 }
732
733 @override
734 R visitExpressionStatement(ExpressionStatement node) {
735 node.visitChildren(this);
736 return null;
737 }
738
739 @override
740 R visitExtendsClause(ExtendsClause node) {
741 node.visitChildren(this);
742 return null;
743 }
744
745 @override
746 R visitFieldDeclaration(FieldDeclaration node) {
747 node.visitChildren(this);
748 return null;
749 }
750
751 @override
752 R visitFieldFormalParameter(FieldFormalParameter node) {
753 node.visitChildren(this);
754 return null;
755 }
756
757 @override
758 R visitForEachStatement(ForEachStatement node) {
759 node.visitChildren(this);
760 return null;
761 }
762
763 @override
764 R visitFormalParameterList(FormalParameterList node) {
765 node.visitChildren(this);
766 return null;
767 }
768
769 @override
770 R visitForStatement(ForStatement node) {
771 node.visitChildren(this);
772 return null;
773 }
774
775 @override
776 R visitFunctionDeclaration(FunctionDeclaration node) {
777 node.visitChildren(this);
778 return null;
779 }
780
781 @override
782 R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
783 node.visitChildren(this);
784 return null;
785 }
786
787 @override
788 R visitFunctionExpression(FunctionExpression node) {
789 node.visitChildren(this);
790 return null;
791 }
792
793 @override
794 R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
795 node.visitChildren(this);
796 return null;
797 }
798
799 @override
800 R visitFunctionTypeAlias(FunctionTypeAlias node) {
801 node.visitChildren(this);
802 return null;
803 }
804
805 @override
806 R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
807 node.visitChildren(this);
808 return null;
809 }
810
811 @override
812 R visitHideCombinator(HideCombinator node) {
813 node.visitChildren(this);
814 return null;
815 }
816
817 @override
818 R visitIfStatement(IfStatement node) {
819 node.visitChildren(this);
820 return null;
821 }
822
823 @override
824 R visitImplementsClause(ImplementsClause node) {
825 node.visitChildren(this);
826 return null;
827 }
828
829 @override
830 R visitImportDirective(ImportDirective node) {
831 node.visitChildren(this);
832 return null;
833 }
834
835 @override
836 R visitIndexExpression(IndexExpression node) {
837 node.visitChildren(this);
838 return null;
839 }
840
841 @override
842 R visitInstanceCreationExpression(InstanceCreationExpression node) {
843 node.visitChildren(this);
844 return null;
845 }
846
847 @override
848 R visitIntegerLiteral(IntegerLiteral node) {
849 node.visitChildren(this);
850 return null;
851 }
852
853 @override
854 R visitInterpolationExpression(InterpolationExpression node) {
855 node.visitChildren(this);
856 return null;
857 }
858
859 @override
860 R visitInterpolationString(InterpolationString node) {
861 node.visitChildren(this);
862 return null;
863 }
864
865 @override
866 R visitIsExpression(IsExpression node) {
867 node.visitChildren(this);
868 return null;
869 }
870
871 @override
872 R visitLabel(Label node) {
873 node.visitChildren(this);
874 return null;
875 }
876
877 @override
878 R visitLabeledStatement(LabeledStatement node) {
879 node.visitChildren(this);
880 return null;
881 }
882
883 @override
884 R visitLibraryDirective(LibraryDirective node) {
885 node.visitChildren(this);
886 return null;
887 }
888
889 @override
890 R visitLibraryIdentifier(LibraryIdentifier node) {
891 node.visitChildren(this);
892 return null;
893 }
894
895 @override
896 R visitListLiteral(ListLiteral node) {
897 node.visitChildren(this);
898 return null;
899 }
900
901 @override
902 R visitMapLiteral(MapLiteral node) {
903 node.visitChildren(this);
904 return null;
905 }
906
907 @override
908 R visitMapLiteralEntry(MapLiteralEntry node) {
909 node.visitChildren(this);
910 return null;
911 }
912
913 @override
914 R visitMethodDeclaration(MethodDeclaration node) {
915 node.visitChildren(this);
916 return null;
917 }
918
919 @override
920 R visitMethodInvocation(MethodInvocation node) {
921 node.visitChildren(this);
922 return null;
923 }
924
925 @override
926 R visitNamedExpression(NamedExpression node) {
927 node.visitChildren(this);
928 return null;
929 }
930
931 @override
932 R visitNativeClause(NativeClause node) {
933 node.visitChildren(this);
934 return null;
935 }
936
937 @override
938 R visitNativeFunctionBody(NativeFunctionBody node) {
939 node.visitChildren(this);
940 return null;
941 }
942
943 @override
944 R visitNullLiteral(NullLiteral node) {
945 node.visitChildren(this);
946 return null;
947 }
948
949 @override
950 R visitParenthesizedExpression(ParenthesizedExpression node) {
951 node.visitChildren(this);
952 return null;
953 }
954
955 @override
956 R visitPartDirective(PartDirective node) {
957 node.visitChildren(this);
958 return null;
959 }
960
961 @override
962 R visitPartOfDirective(PartOfDirective node) {
963 node.visitChildren(this);
964 return null;
965 }
966
967 @override
968 R visitPostfixExpression(PostfixExpression node) {
969 node.visitChildren(this);
970 return null;
971 }
972
973 @override
974 R visitPrefixedIdentifier(PrefixedIdentifier node) {
975 node.visitChildren(this);
976 return null;
977 }
978
979 @override
980 R visitPrefixExpression(PrefixExpression node) {
981 node.visitChildren(this);
982 return null;
983 }
984
985 @override
986 R visitPropertyAccess(PropertyAccess node) {
987 node.visitChildren(this);
988 return null;
989 }
990
991 @override
992 R visitRedirectingConstructorInvocation(
993 RedirectingConstructorInvocation node) {
994 node.visitChildren(this);
995 return null;
996 }
997
998 @override
999 R visitRethrowExpression(RethrowExpression node) {
1000 node.visitChildren(this);
1001 return null;
1002 }
1003
1004 @override
1005 R visitReturnStatement(ReturnStatement node) {
1006 node.visitChildren(this);
1007 return null;
1008 }
1009
1010 @override
1011 R visitScriptTag(ScriptTag node) {
1012 node.visitChildren(this);
1013 return null;
1014 }
1015
1016 @override
1017 R visitShowCombinator(ShowCombinator node) {
1018 node.visitChildren(this);
1019 return null;
1020 }
1021
1022 @override
1023 R visitSimpleFormalParameter(SimpleFormalParameter node) {
1024 node.visitChildren(this);
1025 return null;
1026 }
1027
1028 @override
1029 R visitSimpleIdentifier(SimpleIdentifier node) {
1030 node.visitChildren(this);
1031 return null;
1032 }
1033
1034 @override
1035 R visitSimpleStringLiteral(SimpleStringLiteral node) {
1036 node.visitChildren(this);
1037 return null;
1038 }
1039
1040 @override
1041 R visitStringInterpolation(StringInterpolation node) {
1042 node.visitChildren(this);
1043 return null;
1044 }
1045
1046 @override
1047 R visitSuperConstructorInvocation(SuperConstructorInvocation node) {
1048 node.visitChildren(this);
1049 return null;
1050 }
1051
1052 @override
1053 R visitSuperExpression(SuperExpression node) {
1054 node.visitChildren(this);
1055 return null;
1056 }
1057
1058 @override
1059 R visitSwitchCase(SwitchCase node) {
1060 node.visitChildren(this);
1061 return null;
1062 }
1063
1064 @override
1065 R visitSwitchDefault(SwitchDefault node) {
1066 node.visitChildren(this);
1067 return null;
1068 }
1069
1070 @override
1071 R visitSwitchStatement(SwitchStatement node) {
1072 node.visitChildren(this);
1073 return null;
1074 }
1075
1076 @override
1077 R visitSymbolLiteral(SymbolLiteral node) {
1078 node.visitChildren(this);
1079 return null;
1080 }
1081
1082 @override
1083 R visitThisExpression(ThisExpression node) {
1084 node.visitChildren(this);
1085 return null;
1086 }
1087
1088 @override
1089 R visitThrowExpression(ThrowExpression node) {
1090 node.visitChildren(this);
1091 return null;
1092 }
1093
1094 @override
1095 R visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
1096 node.visitChildren(this);
1097 return null;
1098 }
1099
1100 @override
1101 R visitTryStatement(TryStatement node) {
1102 node.visitChildren(this);
1103 return null;
1104 }
1105
1106 @override
1107 R visitTypeArgumentList(TypeArgumentList node) {
1108 node.visitChildren(this);
1109 return null;
1110 }
1111
1112 @override
1113 R visitTypeName(TypeName node) {
1114 node.visitChildren(this);
1115 return null;
1116 }
1117
1118 @override
1119 R visitTypeParameter(TypeParameter node) {
1120 node.visitChildren(this);
1121 return null;
1122 }
1123
1124 @override
1125 R visitTypeParameterList(TypeParameterList node) {
1126 node.visitChildren(this);
1127 return null;
1128 }
1129
1130 @override
1131 R visitVariableDeclaration(VariableDeclaration node) {
1132 node.visitChildren(this);
1133 return null;
1134 }
1135
1136 @override
1137 R visitVariableDeclarationList(VariableDeclarationList node) {
1138 node.visitChildren(this);
1139 return null;
1140 }
1141
1142 @override
1143 R visitVariableDeclarationStatement(VariableDeclarationStatement node) {
1144 node.visitChildren(this);
1145 return null;
1146 }
1147
1148 @override
1149 R visitWhileStatement(WhileStatement node) {
1150 node.visitChildren(this);
1151 return null;
1152 }
1153
1154 @override
1155 R visitWithClause(WithClause node) {
1156 node.visitChildren(this);
1157 return null;
1158 }
1159
1160 @override
1161 R visitYieldStatement(YieldStatement node) {
1162 node.visitChildren(this);
1163 return null;
1164 }
1165 }
1166
1167 /**
1168 * An AST visitor that will do nothing when visiting an AST node. It is intended
1169 * to be a superclass for classes that use the visitor pattern primarily as a
1170 * dispatch mechanism (and hence don't need to recursively visit a whole
1171 * structure) and that only need to visit a small number of node types.
1172 *
1173 * Clients may extend or implement this class.
1174 */
1175 class SimpleAstVisitor<R> implements AstVisitor<R> {
1176 @override
1177 R visitAdjacentStrings(AdjacentStrings node) => null;
1178
1179 @override
1180 R visitAnnotation(Annotation node) => null;
1181
1182 @override
1183 R visitArgumentList(ArgumentList node) => null;
1184
1185 @override
1186 R visitAsExpression(AsExpression node) => null;
1187
1188 @override
1189 R visitAssertStatement(AssertStatement node) => null;
1190
1191 @override
1192 R visitAssignmentExpression(AssignmentExpression node) => null;
1193
1194 @override
1195 R visitAwaitExpression(AwaitExpression node) => null;
1196
1197 @override
1198 R visitBinaryExpression(BinaryExpression node) => null;
1199
1200 @override
1201 R visitBlock(Block node) => null;
1202
1203 @override
1204 R visitBlockFunctionBody(BlockFunctionBody node) => null;
1205
1206 @override
1207 R visitBooleanLiteral(BooleanLiteral node) => null;
1208
1209 @override
1210 R visitBreakStatement(BreakStatement node) => null;
1211
1212 @override
1213 R visitCascadeExpression(CascadeExpression node) => null;
1214
1215 @override
1216 R visitCatchClause(CatchClause node) => null;
1217
1218 @override
1219 R visitClassDeclaration(ClassDeclaration node) => null;
1220
1221 @override
1222 R visitClassTypeAlias(ClassTypeAlias node) => null;
1223
1224 @override
1225 R visitComment(Comment node) => null;
1226
1227 @override
1228 R visitCommentReference(CommentReference node) => null;
1229
1230 @override
1231 R visitCompilationUnit(CompilationUnit node) => null;
1232
1233 @override
1234 R visitConditionalExpression(ConditionalExpression node) => null;
1235
1236 @override
1237 R visitConfiguration(Configuration node) => null;
1238
1239 @override
1240 R visitConstructorDeclaration(ConstructorDeclaration node) => null;
1241
1242 @override
1243 R visitConstructorFieldInitializer(ConstructorFieldInitializer node) => null;
1244
1245 @override
1246 R visitConstructorName(ConstructorName node) => null;
1247
1248 @override
1249 R visitContinueStatement(ContinueStatement node) => null;
1250
1251 @override
1252 R visitDeclaredIdentifier(DeclaredIdentifier node) => null;
1253
1254 @override
1255 R visitDefaultFormalParameter(DefaultFormalParameter node) => null;
1256
1257 @override
1258 R visitDoStatement(DoStatement node) => null;
1259
1260 @override
1261 R visitDottedName(DottedName node) => null;
1262
1263 @override
1264 R visitDoubleLiteral(DoubleLiteral node) => null;
1265
1266 @override
1267 R visitEmptyFunctionBody(EmptyFunctionBody node) => null;
1268
1269 @override
1270 R visitEmptyStatement(EmptyStatement node) => null;
1271
1272 @override
1273 R visitEnumConstantDeclaration(EnumConstantDeclaration node) => null;
1274
1275 @override
1276 R visitEnumDeclaration(EnumDeclaration node) => null;
1277
1278 @override
1279 R visitExportDirective(ExportDirective node) => null;
1280
1281 @override
1282 R visitExpressionFunctionBody(ExpressionFunctionBody node) => null;
1283
1284 @override
1285 R visitExpressionStatement(ExpressionStatement node) => null;
1286
1287 @override
1288 R visitExtendsClause(ExtendsClause node) => null;
1289
1290 @override
1291 R visitFieldDeclaration(FieldDeclaration node) => null;
1292
1293 @override
1294 R visitFieldFormalParameter(FieldFormalParameter node) => null;
1295
1296 @override
1297 R visitForEachStatement(ForEachStatement node) => null;
1298
1299 @override
1300 R visitFormalParameterList(FormalParameterList node) => null;
1301
1302 @override
1303 R visitForStatement(ForStatement node) => null;
1304
1305 @override
1306 R visitFunctionDeclaration(FunctionDeclaration node) => null;
1307
1308 @override
1309 R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
1310 null;
1311
1312 @override
1313 R visitFunctionExpression(FunctionExpression node) => null;
1314
1315 @override
1316 R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) =>
1317 null;
1318
1319 @override
1320 R visitFunctionTypeAlias(FunctionTypeAlias node) => null;
1321
1322 @override
1323 R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) =>
1324 null;
1325
1326 @override
1327 R visitHideCombinator(HideCombinator node) => null;
1328
1329 @override
1330 R visitIfStatement(IfStatement node) => null;
1331
1332 @override
1333 R visitImplementsClause(ImplementsClause node) => null;
1334
1335 @override
1336 R visitImportDirective(ImportDirective node) => null;
1337
1338 @override
1339 R visitIndexExpression(IndexExpression node) => null;
1340
1341 @override
1342 R visitInstanceCreationExpression(InstanceCreationExpression node) => null;
1343
1344 @override
1345 R visitIntegerLiteral(IntegerLiteral node) => null;
1346
1347 @override
1348 R visitInterpolationExpression(InterpolationExpression node) => null;
1349
1350 @override
1351 R visitInterpolationString(InterpolationString node) => null;
1352
1353 @override
1354 R visitIsExpression(IsExpression node) => null;
1355
1356 @override
1357 R visitLabel(Label node) => null;
1358
1359 @override
1360 R visitLabeledStatement(LabeledStatement node) => null;
1361
1362 @override
1363 R visitLibraryDirective(LibraryDirective node) => null;
1364
1365 @override
1366 R visitLibraryIdentifier(LibraryIdentifier node) => null;
1367
1368 @override
1369 R visitListLiteral(ListLiteral node) => null;
1370
1371 @override
1372 R visitMapLiteral(MapLiteral node) => null;
1373
1374 @override
1375 R visitMapLiteralEntry(MapLiteralEntry node) => null;
1376
1377 @override
1378 R visitMethodDeclaration(MethodDeclaration node) => null;
1379
1380 @override
1381 R visitMethodInvocation(MethodInvocation node) => null;
1382
1383 @override
1384 R visitNamedExpression(NamedExpression node) => null;
1385
1386 @override
1387 R visitNativeClause(NativeClause node) => null;
1388
1389 @override
1390 R visitNativeFunctionBody(NativeFunctionBody node) => null;
1391
1392 @override
1393 R visitNullLiteral(NullLiteral node) => null;
1394
1395 @override
1396 R visitParenthesizedExpression(ParenthesizedExpression node) => null;
1397
1398 @override
1399 R visitPartDirective(PartDirective node) => null;
1400
1401 @override
1402 R visitPartOfDirective(PartOfDirective node) => null;
1403
1404 @override
1405 R visitPostfixExpression(PostfixExpression node) => null;
1406
1407 @override
1408 R visitPrefixedIdentifier(PrefixedIdentifier node) => null;
1409
1410 @override
1411 R visitPrefixExpression(PrefixExpression node) => null;
1412
1413 @override
1414 R visitPropertyAccess(PropertyAccess node) => null;
1415
1416 @override
1417 R visitRedirectingConstructorInvocation(
1418 RedirectingConstructorInvocation node) =>
1419 null;
1420
1421 @override
1422 R visitRethrowExpression(RethrowExpression node) => null;
1423
1424 @override
1425 R visitReturnStatement(ReturnStatement node) => null;
1426
1427 @override
1428 R visitScriptTag(ScriptTag node) => null;
1429
1430 @override
1431 R visitShowCombinator(ShowCombinator node) => null;
1432
1433 @override
1434 R visitSimpleFormalParameter(SimpleFormalParameter node) => null;
1435
1436 @override
1437 R visitSimpleIdentifier(SimpleIdentifier node) => null;
1438
1439 @override
1440 R visitSimpleStringLiteral(SimpleStringLiteral node) => null;
1441
1442 @override
1443 R visitStringInterpolation(StringInterpolation node) => null;
1444
1445 @override
1446 R visitSuperConstructorInvocation(SuperConstructorInvocation node) => null;
1447
1448 @override
1449 R visitSuperExpression(SuperExpression node) => null;
1450
1451 @override
1452 R visitSwitchCase(SwitchCase node) => null;
1453
1454 @override
1455 R visitSwitchDefault(SwitchDefault node) => null;
1456
1457 @override
1458 R visitSwitchStatement(SwitchStatement node) => null;
1459
1460 @override
1461 R visitSymbolLiteral(SymbolLiteral node) => null;
1462
1463 @override
1464 R visitThisExpression(ThisExpression node) => null;
1465
1466 @override
1467 R visitThrowExpression(ThrowExpression node) => null;
1468
1469 @override
1470 R visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) => null;
1471
1472 @override
1473 R visitTryStatement(TryStatement node) => null;
1474
1475 @override
1476 R visitTypeArgumentList(TypeArgumentList node) => null;
1477
1478 @override
1479 R visitTypeName(TypeName node) => null;
1480
1481 @override
1482 R visitTypeParameter(TypeParameter node) => null;
1483
1484 @override
1485 R visitTypeParameterList(TypeParameterList node) => null;
1486
1487 @override
1488 R visitVariableDeclaration(VariableDeclaration node) => null;
1489
1490 @override
1491 R visitVariableDeclarationList(VariableDeclarationList node) => null;
1492
1493 @override
1494 R visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
1495 null;
1496
1497 @override
1498 R visitWhileStatement(WhileStatement node) => null;
1499
1500 @override
1501 R visitWithClause(WithClause node) => null;
1502
1503 @override
1504 R visitYieldStatement(YieldStatement node) => null;
1505 }
1506
1507 /**
1508 * An AST visitor that will recursively visit all of the nodes in an AST
1509 * structure (like instances of the class [RecursiveAstVisitor]). In addition,
1510 * every node will also be visited by using a single unified [visitNode] method.
1511 *
1512 * Subclasses that override a visit method must either invoke the overridden
1513 * visit method or explicitly invoke the more general [visitNode] method.
1514 * Failure to do so will cause the children of the visited node to not be
1515 * visited.
1516 *
1517 * Clients may extend or implement this class.
1518 */
1519 class UnifyingAstVisitor<R> implements AstVisitor<R> {
1520 @override
1521 R visitAdjacentStrings(AdjacentStrings node) => visitNode(node);
1522
1523 @override
1524 R visitAnnotation(Annotation node) => visitNode(node);
1525
1526 @override
1527 R visitArgumentList(ArgumentList node) => visitNode(node);
1528
1529 @override
1530 R visitAsExpression(AsExpression node) => visitNode(node);
1531
1532 @override
1533 R visitAssertStatement(AssertStatement node) => visitNode(node);
1534
1535 @override
1536 R visitAssignmentExpression(AssignmentExpression node) => visitNode(node);
1537
1538 @override
1539 R visitAwaitExpression(AwaitExpression node) => visitNode(node);
1540
1541 @override
1542 R visitBinaryExpression(BinaryExpression node) => visitNode(node);
1543
1544 @override
1545 R visitBlock(Block node) => visitNode(node);
1546
1547 @override
1548 R visitBlockFunctionBody(BlockFunctionBody node) => visitNode(node);
1549
1550 @override
1551 R visitBooleanLiteral(BooleanLiteral node) => visitNode(node);
1552
1553 @override
1554 R visitBreakStatement(BreakStatement node) => visitNode(node);
1555
1556 @override
1557 R visitCascadeExpression(CascadeExpression node) => visitNode(node);
1558
1559 @override
1560 R visitCatchClause(CatchClause node) => visitNode(node);
1561
1562 @override
1563 R visitClassDeclaration(ClassDeclaration node) => visitNode(node);
1564
1565 @override
1566 R visitClassTypeAlias(ClassTypeAlias node) => visitNode(node);
1567
1568 @override
1569 R visitComment(Comment node) => visitNode(node);
1570
1571 @override
1572 R visitCommentReference(CommentReference node) => visitNode(node);
1573
1574 @override
1575 R visitCompilationUnit(CompilationUnit node) => visitNode(node);
1576
1577 @override
1578 R visitConditionalExpression(ConditionalExpression node) => visitNode(node);
1579
1580 @override
1581 R visitConfiguration(Configuration node) => visitNode(node);
1582
1583 @override
1584 R visitConstructorDeclaration(ConstructorDeclaration node) => visitNode(node);
1585
1586 @override
1587 R visitConstructorFieldInitializer(ConstructorFieldInitializer node) =>
1588 visitNode(node);
1589
1590 @override
1591 R visitConstructorName(ConstructorName node) => visitNode(node);
1592
1593 @override
1594 R visitContinueStatement(ContinueStatement node) => visitNode(node);
1595
1596 @override
1597 R visitDeclaredIdentifier(DeclaredIdentifier node) => visitNode(node);
1598
1599 @override
1600 R visitDefaultFormalParameter(DefaultFormalParameter node) => visitNode(node);
1601
1602 @override
1603 R visitDoStatement(DoStatement node) => visitNode(node);
1604
1605 @override
1606 R visitDottedName(DottedName node) => visitNode(node);
1607
1608 @override
1609 R visitDoubleLiteral(DoubleLiteral node) => visitNode(node);
1610
1611 @override
1612 R visitEmptyFunctionBody(EmptyFunctionBody node) => visitNode(node);
1613
1614 @override
1615 R visitEmptyStatement(EmptyStatement node) => visitNode(node);
1616
1617 @override
1618 R visitEnumConstantDeclaration(EnumConstantDeclaration node) =>
1619 visitNode(node);
1620
1621 @override
1622 R visitEnumDeclaration(EnumDeclaration node) => visitNode(node);
1623
1624 @override
1625 R visitExportDirective(ExportDirective node) => visitNode(node);
1626
1627 @override
1628 R visitExpressionFunctionBody(ExpressionFunctionBody node) => visitNode(node);
1629
1630 @override
1631 R visitExpressionStatement(ExpressionStatement node) => visitNode(node);
1632
1633 @override
1634 R visitExtendsClause(ExtendsClause node) => visitNode(node);
1635
1636 @override
1637 R visitFieldDeclaration(FieldDeclaration node) => visitNode(node);
1638
1639 @override
1640 R visitFieldFormalParameter(FieldFormalParameter node) => visitNode(node);
1641
1642 @override
1643 R visitForEachStatement(ForEachStatement node) => visitNode(node);
1644
1645 @override
1646 R visitFormalParameterList(FormalParameterList node) => visitNode(node);
1647
1648 @override
1649 R visitForStatement(ForStatement node) => visitNode(node);
1650
1651 @override
1652 R visitFunctionDeclaration(FunctionDeclaration node) => visitNode(node);
1653
1654 @override
1655 R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
1656 visitNode(node);
1657
1658 @override
1659 R visitFunctionExpression(FunctionExpression node) => visitNode(node);
1660
1661 @override
1662 R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) =>
1663 visitNode(node);
1664
1665 @override
1666 R visitFunctionTypeAlias(FunctionTypeAlias node) => visitNode(node);
1667
1668 @override
1669 R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) =>
1670 visitNode(node);
1671
1672 @override
1673 R visitHideCombinator(HideCombinator node) => visitNode(node);
1674
1675 @override
1676 R visitIfStatement(IfStatement node) => visitNode(node);
1677
1678 @override
1679 R visitImplementsClause(ImplementsClause node) => visitNode(node);
1680
1681 @override
1682 R visitImportDirective(ImportDirective node) => visitNode(node);
1683
1684 @override
1685 R visitIndexExpression(IndexExpression node) => visitNode(node);
1686
1687 @override
1688 R visitInstanceCreationExpression(InstanceCreationExpression node) =>
1689 visitNode(node);
1690
1691 @override
1692 R visitIntegerLiteral(IntegerLiteral node) => visitNode(node);
1693
1694 @override
1695 R visitInterpolationExpression(InterpolationExpression node) =>
1696 visitNode(node);
1697
1698 @override
1699 R visitInterpolationString(InterpolationString node) => visitNode(node);
1700
1701 @override
1702 R visitIsExpression(IsExpression node) => visitNode(node);
1703
1704 @override
1705 R visitLabel(Label node) => visitNode(node);
1706
1707 @override
1708 R visitLabeledStatement(LabeledStatement node) => visitNode(node);
1709
1710 @override
1711 R visitLibraryDirective(LibraryDirective node) => visitNode(node);
1712
1713 @override
1714 R visitLibraryIdentifier(LibraryIdentifier node) => visitNode(node);
1715
1716 @override
1717 R visitListLiteral(ListLiteral node) => visitNode(node);
1718
1719 @override
1720 R visitMapLiteral(MapLiteral node) => visitNode(node);
1721
1722 @override
1723 R visitMapLiteralEntry(MapLiteralEntry node) => visitNode(node);
1724
1725 @override
1726 R visitMethodDeclaration(MethodDeclaration node) => visitNode(node);
1727
1728 @override
1729 R visitMethodInvocation(MethodInvocation node) => visitNode(node);
1730
1731 @override
1732 R visitNamedExpression(NamedExpression node) => visitNode(node);
1733
1734 @override
1735 R visitNativeClause(NativeClause node) => visitNode(node);
1736
1737 @override
1738 R visitNativeFunctionBody(NativeFunctionBody node) => visitNode(node);
1739
1740 R visitNode(AstNode node) {
1741 node.visitChildren(this);
1742 return null;
1743 }
1744
1745 @override
1746 R visitNullLiteral(NullLiteral node) => visitNode(node);
1747
1748 @override
1749 R visitParenthesizedExpression(ParenthesizedExpression node) =>
1750 visitNode(node);
1751
1752 @override
1753 R visitPartDirective(PartDirective node) => visitNode(node);
1754
1755 @override
1756 R visitPartOfDirective(PartOfDirective node) => visitNode(node);
1757
1758 @override
1759 R visitPostfixExpression(PostfixExpression node) => visitNode(node);
1760
1761 @override
1762 R visitPrefixedIdentifier(PrefixedIdentifier node) => visitNode(node);
1763
1764 @override
1765 R visitPrefixExpression(PrefixExpression node) => visitNode(node);
1766
1767 @override
1768 R visitPropertyAccess(PropertyAccess node) => visitNode(node);
1769
1770 @override
1771 R visitRedirectingConstructorInvocation(
1772 RedirectingConstructorInvocation node) =>
1773 visitNode(node);
1774
1775 @override
1776 R visitRethrowExpression(RethrowExpression node) => visitNode(node);
1777
1778 @override
1779 R visitReturnStatement(ReturnStatement node) => visitNode(node);
1780
1781 @override
1782 R visitScriptTag(ScriptTag scriptTag) => visitNode(scriptTag);
1783
1784 @override
1785 R visitShowCombinator(ShowCombinator node) => visitNode(node);
1786
1787 @override
1788 R visitSimpleFormalParameter(SimpleFormalParameter node) => visitNode(node);
1789
1790 @override
1791 R visitSimpleIdentifier(SimpleIdentifier node) => visitNode(node);
1792
1793 @override
1794 R visitSimpleStringLiteral(SimpleStringLiteral node) => visitNode(node);
1795
1796 @override
1797 R visitStringInterpolation(StringInterpolation node) => visitNode(node);
1798
1799 @override
1800 R visitSuperConstructorInvocation(SuperConstructorInvocation node) =>
1801 visitNode(node);
1802
1803 @override
1804 R visitSuperExpression(SuperExpression node) => visitNode(node);
1805
1806 @override
1807 R visitSwitchCase(SwitchCase node) => visitNode(node);
1808
1809 @override
1810 R visitSwitchDefault(SwitchDefault node) => visitNode(node);
1811
1812 @override
1813 R visitSwitchStatement(SwitchStatement node) => visitNode(node);
1814
1815 @override
1816 R visitSymbolLiteral(SymbolLiteral node) => visitNode(node);
1817
1818 @override
1819 R visitThisExpression(ThisExpression node) => visitNode(node);
1820
1821 @override
1822 R visitThrowExpression(ThrowExpression node) => visitNode(node);
1823
1824 @override
1825 R visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) =>
1826 visitNode(node);
1827
1828 @override
1829 R visitTryStatement(TryStatement node) => visitNode(node);
1830
1831 @override
1832 R visitTypeArgumentList(TypeArgumentList node) => visitNode(node);
1833
1834 @override
1835 R visitTypeName(TypeName node) => visitNode(node);
1836
1837 @override
1838 R visitTypeParameter(TypeParameter node) => visitNode(node);
1839
1840 @override
1841 R visitTypeParameterList(TypeParameterList node) => visitNode(node);
1842
1843 @override
1844 R visitVariableDeclaration(VariableDeclaration node) => visitNode(node);
1845
1846 @override
1847 R visitVariableDeclarationList(VariableDeclarationList node) =>
1848 visitNode(node);
1849
1850 @override
1851 R visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
1852 visitNode(node);
1853
1854 @override
1855 R visitWhileStatement(WhileStatement node) => visitNode(node);
1856
1857 @override
1858 R visitWithClause(WithClause node) => visitNode(node);
1859
1860 @override
1861 R visitYieldStatement(YieldStatement node) => visitNode(node);
1862 }
1863
1864 /**
1865 * A helper class used to implement the correct order of visits for a
1866 * [BreadthFirstVisitor].
1867 */
1868 class _BreadthFirstChildVisitor extends UnifyingAstVisitor<Object> {
1869 /**
1870 * The [BreadthFirstVisitor] being helped by this visitor.
1871 */
1872 final BreadthFirstVisitor outerVisitor;
1873
1874 /**
1875 * Initialize a newly created visitor to help the [outerVisitor].
1876 */
1877 _BreadthFirstChildVisitor(this.outerVisitor);
1878
1879 @override
1880 Object visitNode(AstNode node) {
1881 outerVisitor._queue.add(node);
1882 return null;
1883 }
1884 }
OLDNEW
« 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