| 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 '../elements/elements.dart' show MetadataAnnotation; | 8 import '../elements/elements.dart' show MetadataAnnotation; |
| 9 import 'package:front_end/src/fasta/scanner/precedence.dart' as Precedence | 9 import 'package:front_end/src/fasta/scanner/precedence.dart' as Precedence |
| 10 show FUNCTION_INFO; | 10 show FUNCTION_INFO; |
| 11 import 'package:front_end/src/fasta/scanner.dart' show BeginGroupToken, Token; | 11 import 'package:front_end/src/fasta/scanner.dart' show BeginGroupToken, Token; |
| 12 import 'package:front_end/src/fasta/scanner/token_constants.dart' as Tokens | 12 import 'package:front_end/src/fasta/scanner/token_constants.dart' as Tokens |
| 13 show PLUS_TOKEN; | 13 show PLUS_TOKEN; |
| 14 import 'package:front_end/src/fasta/scanner/characters.dart'; | 14 import 'package:front_end/src/fasta/scanner/characters.dart'; |
| 15 import '../util/util.dart'; | 15 import '../util/util.dart'; |
| 16 import 'dartstring.dart'; | 16 import 'dartstring.dart'; |
| 17 import 'prettyprint.dart'; | 17 import 'prettyprint.dart'; |
| 18 import 'unparser.dart'; | 18 import 'unparser.dart'; |
| 19 import 'package:front_end/src/fasta/parser.dart' show ErrorKind; | 19 import 'package:front_end/src/fasta/fasta_codes.dart' show FastaMessage; |
| 20 | 20 |
| 21 abstract class Visitor<R> { | 21 abstract class Visitor<R> { |
| 22 const Visitor(); | 22 const Visitor(); |
| 23 | 23 |
| 24 R visitNode(Node node); | 24 R visitNode(Node node); |
| 25 | 25 |
| 26 R visitAssert(Assert node) => visitStatement(node); | 26 R visitAssert(Assert node) => visitStatement(node); |
| 27 R visitAsyncForIn(AsyncForIn node) => visitForIn(node); | 27 R visitAsyncForIn(AsyncForIn node) => visitForIn(node); |
| 28 R visitAsyncModifier(AsyncModifier node) => visitNode(node); | 28 R visitAsyncModifier(AsyncModifier node) => visitNode(node); |
| 29 R visitAwait(Await node) => visitExpression(node); | 29 R visitAwait(Await node) => visitExpression(node); |
| (...skipping 3135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3165 bool visitStringJuxtaposition(StringJuxtaposition node) => | 3165 bool visitStringJuxtaposition(StringJuxtaposition node) => |
| 3166 node.isInterpolation; | 3166 node.isInterpolation; |
| 3167 } | 3167 } |
| 3168 | 3168 |
| 3169 /// Erroneous node used to recover from parser errors. Implements various | 3169 /// Erroneous node used to recover from parser errors. Implements various |
| 3170 /// interfaces and provides bare minimum of implementation to avoid unnecessary | 3170 /// interfaces and provides bare minimum of implementation to avoid unnecessary |
| 3171 /// messages. | 3171 /// messages. |
| 3172 class ErrorNode extends Node | 3172 class ErrorNode extends Node |
| 3173 implements FunctionExpression, VariableDefinitions, Typedef { | 3173 implements FunctionExpression, VariableDefinitions, Typedef { |
| 3174 final Token token; | 3174 final Token token; |
| 3175 final ErrorKind kind; | 3175 final FastaMessage message; |
| 3176 final Map arguments; | |
| 3177 final Identifier name; | 3176 final Identifier name; |
| 3178 final NodeList definitions; | 3177 final NodeList definitions; |
| 3179 | 3178 |
| 3180 ErrorNode.internal( | 3179 ErrorNode.internal(this.token, this.message, this.name, this.definitions); |
| 3181 this.token, this.kind, this.arguments, this.name, this.definitions); | |
| 3182 | 3180 |
| 3183 factory ErrorNode(Token token, ErrorKind kind, Map arguments) { | 3181 factory ErrorNode(Token token, FastaMessage message) { |
| 3184 Identifier name = new Identifier(token); | 3182 Identifier name = new Identifier(token); |
| 3185 NodeList definitions = | 3183 NodeList definitions = |
| 3186 new NodeList(null, const Link<Node>().prepend(name), null, null); | 3184 new NodeList(null, const Link<Node>().prepend(name), null, null); |
| 3187 return new ErrorNode.internal(token, kind, arguments, name, definitions); | 3185 return new ErrorNode.internal(token, message, name, definitions); |
| 3188 } | 3186 } |
| 3189 | 3187 |
| 3190 Token get beginToken => token; | 3188 Token get beginToken => token; |
| 3191 Token get endToken => token; | 3189 Token get endToken => token; |
| 3192 | 3190 |
| 3193 Token getBeginToken() => token; | 3191 Token getBeginToken() => token; |
| 3194 | 3192 |
| 3195 Token getEndToken() => token; | 3193 Token getEndToken() => token; |
| 3196 | 3194 |
| 3197 accept(Visitor visitor) {} | 3195 accept(Visitor visitor) {} |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3280 */ | 3278 */ |
| 3281 Object getTreeElement(TreeElementMixin node) => node._element; | 3279 Object getTreeElement(TreeElementMixin node) => node._element; |
| 3282 | 3280 |
| 3283 /** | 3281 /** |
| 3284 * Do not call this method directly. Instead, use an instance of | 3282 * Do not call this method directly. Instead, use an instance of |
| 3285 * TreeElements. | 3283 * TreeElements. |
| 3286 */ | 3284 */ |
| 3287 void setTreeElement(TreeElementMixin node, Object value) { | 3285 void setTreeElement(TreeElementMixin node, Object value) { |
| 3288 node._element = value; | 3286 node._element = value; |
| 3289 } | 3287 } |
| OLD | NEW |