| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'dart:collection' show IterableMixin; | 5 import 'dart:collection' show IterableMixin; |
| 6 | 6 |
| 7 import '../common.dart'; | 7 import '../common.dart'; |
| 8 import '../tokens/precedence_constants.dart' as Precedence show FUNCTION_INFO; | 8 import '../tokens/precedence_constants.dart' as Precedence show FUNCTION_INFO; |
| 9 import '../tokens/token.dart' show BeginGroupToken, Token; | 9 import '../tokens/token.dart' show BeginGroupToken, Token; |
| 10 import '../tokens/token_constants.dart' as Tokens show IDENTIFIER_TOKEN, KEYWORD
_TOKEN, PLUS_TOKEN; | 10 import '../tokens/token_constants.dart' as Tokens show IDENTIFIER_TOKEN, KEYWORD
_TOKEN, PLUS_TOKEN; |
| 11 import '../util/util.dart'; | 11 import '../util/util.dart'; |
| 12 import '../util/characters.dart'; | 12 import '../util/characters.dart'; |
| 13 import '../resolution/secret_tree_element.dart' show NullTreeElementMixin, Store
dTreeElementMixin; | 13 import '../resolution/secret_tree_element.dart' show NullTreeElementMixin, Store
dTreeElementMixin; |
| 14 import '../elements/elements.dart' show MetadataAnnotation; | 14 import '../elements/elements.dart' show MetadataAnnotation; |
| 15 import 'dartstring.dart'; | 15 import 'dartstring.dart'; |
| 16 import 'prettyprint.dart'; | 16 import 'prettyprint.dart'; |
| 17 import 'unparser.dart'; | 17 import 'unparser.dart'; |
| 18 | 18 |
| 19 abstract class Visitor<R> { | 19 abstract class Visitor<R> { |
| 20 const Visitor(); | 20 const Visitor(); |
| 21 | 21 |
| 22 R visitNode(Node node); | 22 R visitNode(Node node); |
| 23 | 23 |
| 24 R visitAssert(Assert node) => visitStatement(node); | 24 R visitAssert(Assert node) => visitStatement(node); |
| 25 R visitAsyncForIn(AsyncForIn node) => visitLoop(node); | 25 R visitAsyncForIn(AsyncForIn node) => visitForIn(node); |
| 26 R visitAsyncModifier(AsyncModifier node) => visitNode(node); | 26 R visitAsyncModifier(AsyncModifier node) => visitNode(node); |
| 27 R visitAwait(Await node) => visitExpression(node); | 27 R visitAwait(Await node) => visitExpression(node); |
| 28 R visitBlock(Block node) => visitStatement(node); | 28 R visitBlock(Block node) => visitStatement(node); |
| 29 R visitBreakStatement(BreakStatement node) => visitGotoStatement(node); | 29 R visitBreakStatement(BreakStatement node) => visitGotoStatement(node); |
| 30 R visitCascade(Cascade node) => visitExpression(node); | 30 R visitCascade(Cascade node) => visitExpression(node); |
| 31 R visitCascadeReceiver(CascadeReceiver node) => visitExpression(node); | 31 R visitCascadeReceiver(CascadeReceiver node) => visitExpression(node); |
| 32 R visitCaseMatch(CaseMatch node) => visitNode(node); | 32 R visitCaseMatch(CaseMatch node) => visitNode(node); |
| 33 R visitCatchBlock(CatchBlock node) => visitNode(node); | 33 R visitCatchBlock(CatchBlock node) => visitNode(node); |
| 34 R visitClassNode(ClassNode node) => visitNode(node); | 34 R visitClassNode(ClassNode node) => visitNode(node); |
| 35 R visitCombinator(Combinator node) => visitNode(node); | 35 R visitCombinator(Combinator node) => visitNode(node); |
| 36 R visitConditional(Conditional node) => visitExpression(node); | 36 R visitConditional(Conditional node) => visitExpression(node); |
| 37 R visitConditionalUri(ConditionalUri node) => visitNode(node); | 37 R visitConditionalUri(ConditionalUri node) => visitNode(node); |
| 38 R visitContinueStatement(ContinueStatement node) => visitGotoStatement(node); | 38 R visitContinueStatement(ContinueStatement node) => visitGotoStatement(node); |
| 39 R visitDottedName(DottedName node) => visitExpression(node); | 39 R visitDottedName(DottedName node) => visitExpression(node); |
| 40 R visitDoWhile(DoWhile node) => visitLoop(node); | 40 R visitDoWhile(DoWhile node) => visitLoop(node); |
| 41 R visitEmptyStatement(EmptyStatement node) => visitStatement(node); | 41 R visitEmptyStatement(EmptyStatement node) => visitStatement(node); |
| 42 R visitEnum(Enum node) => visitNode(node); | 42 R visitEnum(Enum node) => visitNode(node); |
| 43 R visitExport(Export node) => visitLibraryDependency(node); | 43 R visitExport(Export node) => visitLibraryDependency(node); |
| 44 R visitExpression(Expression node) => visitNode(node); | 44 R visitExpression(Expression node) => visitNode(node); |
| 45 R visitExpressionStatement(ExpressionStatement node) => visitStatement(node); | 45 R visitExpressionStatement(ExpressionStatement node) => visitStatement(node); |
| 46 R visitFor(For node) => visitLoop(node); | 46 R visitFor(For node) => visitLoop(node); |
| 47 R visitForIn(ForIn node) => visitLoop(node); |
| 47 R visitFunctionDeclaration(FunctionDeclaration node) => visitStatement(node); | 48 R visitFunctionDeclaration(FunctionDeclaration node) => visitStatement(node); |
| 48 R visitFunctionExpression(FunctionExpression node) => visitExpression(node); | 49 R visitFunctionExpression(FunctionExpression node) => visitExpression(node); |
| 49 R visitGotoStatement(GotoStatement node) => visitStatement(node); | 50 R visitGotoStatement(GotoStatement node) => visitStatement(node); |
| 50 R visitIdentifier(Identifier node) => visitExpression(node); | 51 R visitIdentifier(Identifier node) => visitExpression(node); |
| 51 R visitImport(Import node) => visitLibraryDependency(node); | 52 R visitImport(Import node) => visitLibraryDependency(node); |
| 52 R visitIf(If node) => visitStatement(node); | 53 R visitIf(If node) => visitStatement(node); |
| 53 R visitLabel(Label node) => visitNode(node); | 54 R visitLabel(Label node) => visitNode(node); |
| 54 R visitLabeledStatement(LabeledStatement node) => visitStatement(node); | 55 R visitLabeledStatement(LabeledStatement node) => visitStatement(node); |
| 55 R visitLibraryDependency(LibraryDependency node) => visitLibraryTag(node); | 56 R visitLibraryDependency(LibraryDependency node) => visitLibraryTag(node); |
| 56 R visitLibraryName(LibraryName node) => visitLibraryTag(node); | 57 R visitLibraryName(LibraryName node) => visitLibraryTag(node); |
| 57 R visitLibraryTag(LibraryTag node) => visitNode(node); | 58 R visitLibraryTag(LibraryTag node) => visitNode(node); |
| 58 R visitLiteral(Literal node) => visitExpression(node); | 59 R visitLiteral(Literal node) => visitExpression(node); |
| 59 R visitLiteralBool(LiteralBool node) => visitLiteral(node); | 60 R visitLiteralBool(LiteralBool node) => visitLiteral(node); |
| 60 R visitLiteralDouble(LiteralDouble node) => visitLiteral(node); | 61 R visitLiteralDouble(LiteralDouble node) => visitLiteral(node); |
| 61 R visitLiteralInt(LiteralInt node) => visitLiteral(node); | 62 R visitLiteralInt(LiteralInt node) => visitLiteral(node); |
| 62 R visitLiteralList(LiteralList node) => visitExpression(node); | 63 R visitLiteralList(LiteralList node) => visitExpression(node); |
| 63 R visitLiteralMap(LiteralMap node) => visitExpression(node); | 64 R visitLiteralMap(LiteralMap node) => visitExpression(node); |
| 64 R visitLiteralMapEntry(LiteralMapEntry node) => visitNode(node); | 65 R visitLiteralMapEntry(LiteralMapEntry node) => visitNode(node); |
| 65 R visitLiteralNull(LiteralNull node) => visitLiteral(node); | 66 R visitLiteralNull(LiteralNull node) => visitLiteral(node); |
| 66 R visitLiteralString(LiteralString node) => visitStringNode(node); | 67 R visitLiteralString(LiteralString node) => visitStringNode(node); |
| 67 R visitStringJuxtaposition(StringJuxtaposition node) => visitStringNode(node); | 68 R visitStringJuxtaposition(StringJuxtaposition node) => visitStringNode(node); |
| 68 R visitSyncForIn(SyncForIn node) => visitLoop(node); | 69 R visitSyncForIn(SyncForIn node) => visitForIn(node); |
| 69 R visitLoop(Loop node) => visitStatement(node); | 70 R visitLoop(Loop node) => visitStatement(node); |
| 70 R visitMetadata(Metadata node) => visitNode(node); | 71 R visitMetadata(Metadata node) => visitNode(node); |
| 71 R visitMixinApplication(MixinApplication node) => visitNode(node); | 72 R visitMixinApplication(MixinApplication node) => visitNode(node); |
| 72 R visitModifiers(Modifiers node) => visitNode(node); | 73 R visitModifiers(Modifiers node) => visitNode(node); |
| 73 R visitNamedArgument(NamedArgument node) => visitExpression(node); | 74 R visitNamedArgument(NamedArgument node) => visitExpression(node); |
| 74 R visitNamedMixinApplication(NamedMixinApplication node) { | 75 R visitNamedMixinApplication(NamedMixinApplication node) { |
| 75 return visitMixinApplication(node); | 76 return visitMixinApplication(node); |
| 76 } | 77 } |
| 77 R visitNewExpression(NewExpression node) => visitExpression(node); | 78 R visitNewExpression(NewExpression node) => visitExpression(node); |
| 78 R visitNodeList(NodeList node) => visitNode(node); | 79 R visitNodeList(NodeList node) => visitNode(node); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 } | 112 } |
| 112 | 113 |
| 113 /// Visitor for [Node]s that take an additional argument of type [A] and returns | 114 /// Visitor for [Node]s that take an additional argument of type [A] and returns |
| 114 /// a value of type [R]. | 115 /// a value of type [R]. |
| 115 abstract class Visitor1<R, A> { | 116 abstract class Visitor1<R, A> { |
| 116 const Visitor1(); | 117 const Visitor1(); |
| 117 | 118 |
| 118 R visitNode(Node node, A arg); | 119 R visitNode(Node node, A arg); |
| 119 | 120 |
| 120 R visitAssert(Assert node, A arg) => visitStatement(node, arg); | 121 R visitAssert(Assert node, A arg) => visitStatement(node, arg); |
| 121 R visitAsyncForIn(AsyncForIn node, A arg) => visitLoop(node, arg); | 122 R visitAsyncForIn(AsyncForIn node, A arg) => visitForIn(node, arg); |
| 122 R visitAsyncModifier(AsyncModifier node, A arg) => visitNode(node, arg); | 123 R visitAsyncModifier(AsyncModifier node, A arg) => visitNode(node, arg); |
| 123 R visitAwait(Await node, A arg) => visitExpression(node, arg); | 124 R visitAwait(Await node, A arg) => visitExpression(node, arg); |
| 124 R visitBlock(Block node, A arg) => visitStatement(node, arg); | 125 R visitBlock(Block node, A arg) => visitStatement(node, arg); |
| 125 R visitBreakStatement(BreakStatement node, A arg) { | 126 R visitBreakStatement(BreakStatement node, A arg) { |
| 126 return visitGotoStatement(node, arg); | 127 return visitGotoStatement(node, arg); |
| 127 } | 128 } |
| 128 R visitCascade(Cascade node, A arg) => visitExpression(node, arg); | 129 R visitCascade(Cascade node, A arg) => visitExpression(node, arg); |
| 129 R visitCascadeReceiver(CascadeReceiver node, A arg) { | 130 R visitCascadeReceiver(CascadeReceiver node, A arg) { |
| 130 return visitExpression(node, arg); | 131 return visitExpression(node, arg); |
| 131 } | 132 } |
| (...skipping 15 matching lines...) Expand all Loading... |
| 147 R visitEmptyStatement(EmptyStatement node, A arg) { | 148 R visitEmptyStatement(EmptyStatement node, A arg) { |
| 148 return visitStatement(node, arg); | 149 return visitStatement(node, arg); |
| 149 } | 150 } |
| 150 R visitEnum(Enum node, A arg) => visitNode(node, arg); | 151 R visitEnum(Enum node, A arg) => visitNode(node, arg); |
| 151 R visitExport(Export node, A arg) => visitLibraryDependency(node, arg); | 152 R visitExport(Export node, A arg) => visitLibraryDependency(node, arg); |
| 152 R visitExpression(Expression node, A arg) => visitNode(node, arg); | 153 R visitExpression(Expression node, A arg) => visitNode(node, arg); |
| 153 R visitExpressionStatement(ExpressionStatement node, A arg) { | 154 R visitExpressionStatement(ExpressionStatement node, A arg) { |
| 154 return visitStatement(node, arg); | 155 return visitStatement(node, arg); |
| 155 } | 156 } |
| 156 R visitFor(For node, A arg) => visitLoop(node, arg); | 157 R visitFor(For node, A arg) => visitLoop(node, arg); |
| 158 R visitForIn(ForIn node, A arg) => visitLoop(node, arg); |
| 157 R visitFunctionDeclaration(FunctionDeclaration node, A arg) { | 159 R visitFunctionDeclaration(FunctionDeclaration node, A arg) { |
| 158 return visitStatement(node, arg); | 160 return visitStatement(node, arg); |
| 159 } | 161 } |
| 160 R visitFunctionExpression(FunctionExpression node, A arg) { | 162 R visitFunctionExpression(FunctionExpression node, A arg) { |
| 161 return visitExpression(node, arg); | 163 return visitExpression(node, arg); |
| 162 } | 164 } |
| 163 R visitGotoStatement(GotoStatement node, A arg) { | 165 R visitGotoStatement(GotoStatement node, A arg) { |
| 164 return visitStatement(node, arg); | 166 return visitStatement(node, arg); |
| 165 } | 167 } |
| 166 R visitIdentifier(Identifier node, A arg) { | 168 R visitIdentifier(Identifier node, A arg) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 184 R visitLiteralDouble(LiteralDouble node, A arg) => visitLiteral(node, arg); | 186 R visitLiteralDouble(LiteralDouble node, A arg) => visitLiteral(node, arg); |
| 185 R visitLiteralInt(LiteralInt node, A arg) => visitLiteral(node, arg); | 187 R visitLiteralInt(LiteralInt node, A arg) => visitLiteral(node, arg); |
| 186 R visitLiteralList(LiteralList node, A arg) => visitExpression(node, arg); | 188 R visitLiteralList(LiteralList node, A arg) => visitExpression(node, arg); |
| 187 R visitLiteralMap(LiteralMap node, A arg) => visitExpression(node, arg); | 189 R visitLiteralMap(LiteralMap node, A arg) => visitExpression(node, arg); |
| 188 R visitLiteralMapEntry(LiteralMapEntry node, A arg) => visitNode(node, arg); | 190 R visitLiteralMapEntry(LiteralMapEntry node, A arg) => visitNode(node, arg); |
| 189 R visitLiteralNull(LiteralNull node, A arg) => visitLiteral(node, arg); | 191 R visitLiteralNull(LiteralNull node, A arg) => visitLiteral(node, arg); |
| 190 R visitLiteralString(LiteralString node, A arg) => visitStringNode(node, arg); | 192 R visitLiteralString(LiteralString node, A arg) => visitStringNode(node, arg); |
| 191 R visitStringJuxtaposition(StringJuxtaposition node, A arg) { | 193 R visitStringJuxtaposition(StringJuxtaposition node, A arg) { |
| 192 return visitStringNode(node, arg); | 194 return visitStringNode(node, arg); |
| 193 } | 195 } |
| 194 R visitSyncForIn(SyncForIn node, A arg) => visitLoop(node, arg); | 196 R visitSyncForIn(SyncForIn node, A arg) => visitForIn(node, arg); |
| 195 R visitLoop(Loop node, A arg) => visitStatement(node, arg); | 197 R visitLoop(Loop node, A arg) => visitStatement(node, arg); |
| 196 R visitMetadata(Metadata node, A arg) => visitNode(node, arg); | 198 R visitMetadata(Metadata node, A arg) => visitNode(node, arg); |
| 197 R visitMixinApplication(MixinApplication node, A arg) => visitNode(node, arg); | 199 R visitMixinApplication(MixinApplication node, A arg) => visitNode(node, arg); |
| 198 R visitModifiers(Modifiers node, A arg) => visitNode(node, arg); | 200 R visitModifiers(Modifiers node, A arg) => visitNode(node, arg); |
| 199 R visitNamedArgument(NamedArgument node, A arg) => visitExpression(node, arg); | 201 R visitNamedArgument(NamedArgument node, A arg) => visitExpression(node, arg); |
| 200 R visitNamedMixinApplication(NamedMixinApplication node, A arg) { | 202 R visitNamedMixinApplication(NamedMixinApplication node, A arg) { |
| 201 return visitMixinApplication(node, arg); | 203 return visitMixinApplication(node, arg); |
| 202 } | 204 } |
| 203 R visitNewExpression(NewExpression node, A arg) => visitExpression(node, arg); | 205 R visitNewExpression(NewExpression node, A arg) => visitExpression(node, arg); |
| 204 R visitNodeList(NodeList node, A arg) => visitNode(node, arg); | 206 R visitNodeList(NodeList node, A arg) => visitNode(node, arg); |
| (...skipping 2875 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3080 | 3082 |
| 3081 // VariableDefinitions. | 3083 // VariableDefinitions. |
| 3082 get metadata => null; | 3084 get metadata => null; |
| 3083 get type => null; | 3085 get type => null; |
| 3084 | 3086 |
| 3085 // Typedef. | 3087 // Typedef. |
| 3086 get typeParameters => null; | 3088 get typeParameters => null; |
| 3087 get formals => null; | 3089 get formals => null; |
| 3088 get typedefKeyword => null; | 3090 get typedefKeyword => null; |
| 3089 } | 3091 } |
| OLD | NEW |