OLD | NEW |
---|---|
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 library fasta.body_builder; | 5 library fasta.body_builder; |
6 | 6 |
7 import '../fasta_codes.dart' | 7 import '../fasta_codes.dart' |
8 show FastaMessage, codeExpectedButGot, codeExpectedFunctionBody; | 8 show FastaMessage, codeExpectedButGot, codeExpectedFunctionBody; |
9 | 9 |
10 import '../parser/parser.dart' show FormalParameterType, optional; | 10 import '../parser/parser.dart' show FormalParameterType, optional; |
(...skipping 16 matching lines...) Expand all Loading... | |
27 import 'package:kernel/clone.dart' show CloneVisitor; | 27 import 'package:kernel/clone.dart' show CloneVisitor; |
28 | 28 |
29 import 'package:kernel/transformations/flags.dart' show TransformerFlag; | 29 import 'package:kernel/transformations/flags.dart' show TransformerFlag; |
30 | 30 |
31 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; | 31 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; |
32 | 32 |
33 import 'package:kernel/core_types.dart' show CoreTypes; | 33 import 'package:kernel/core_types.dart' show CoreTypes; |
34 | 34 |
35 import 'frontend_accessors.dart' show buildIsNull, makeBinary, makeLet; | 35 import 'frontend_accessors.dart' show buildIsNull, makeBinary, makeLet; |
36 | 36 |
37 import '../parser/dart_vm_native.dart' show skipNativeClause; | 37 import '../parser/dart2js_native.dart' show skipDart2jsNativeClause; |
38 | |
39 import '../parser/dart_vm_native.dart' show skipVmNativeClause; | |
38 | 40 |
39 import '../scanner/token.dart' | 41 import '../scanner/token.dart' |
40 show BeginGroupToken, Token, isBinaryOperator, isMinusOperator; | 42 show BeginGroupToken, Token, isBinaryOperator, isMinusOperator; |
41 | 43 |
42 import '../errors.dart' show formatUnexpected, internalError; | 44 import '../errors.dart' show formatUnexpected, internalError; |
43 | 45 |
44 import '../source/scope_listener.dart' | 46 import '../source/scope_listener.dart' |
45 show JumpTargetKind, NullValue, ScopeListener; | 47 show JumpTargetKind, NullValue, ScopeListener; |
46 | 48 |
47 import '../scope.dart' show ProblemBuilder; | 49 import '../scope.dart' show ProblemBuilder; |
(...skipping 2438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2486 @override | 2488 @override |
2487 void handleRecoverableError(Token token, FastaMessage message) { | 2489 void handleRecoverableError(Token token, FastaMessage message) { |
2488 bool silent = hasParserError; | 2490 bool silent = hasParserError; |
2489 super.handleRecoverableError(token, message); | 2491 super.handleRecoverableError(token, message); |
2490 addCompileTimeError(message.charOffset, message.message, silent: silent); | 2492 addCompileTimeError(message.charOffset, message.message, silent: silent); |
2491 } | 2493 } |
2492 | 2494 |
2493 @override | 2495 @override |
2494 Token handleUnrecoverableError(Token token, FastaMessage message) { | 2496 Token handleUnrecoverableError(Token token, FastaMessage message) { |
2495 if (isDartLibrary && message.code == codeExpectedFunctionBody) { | 2497 if (isDartLibrary && message.code == codeExpectedFunctionBody) { |
2496 Token recover = skipNativeClause(token); | 2498 if (library.loader.target.forDart2js) { |
ahe
2017/04/27 13:34:34
Can we move this to a subclass of BodyBuilder?
Siggi Cherem (dart-lang)
2017/04/28 21:37:20
this moved to the target, which is easier to overr
| |
2497 if (recover != null) return recover; | 2499 Token recover = skipDart2jsNativeClause(token); |
2500 if (recover != null) return recover; | |
2501 } else { | |
2502 Token recover = skipVmNativeClause(token); | |
2503 if (recover != null) return recover; | |
2504 } | |
2498 } else if (message.code == codeExpectedButGot) { | 2505 } else if (message.code == codeExpectedButGot) { |
2499 String expected = message.arguments["string"]; | 2506 String expected = message.arguments["string"]; |
2500 const List<String> trailing = const <String>[")", "}", ";", ","]; | 2507 const List<String> trailing = const <String>[")", "}", ";", ","]; |
2501 if (trailing.contains(token.stringValue) && trailing.contains(expected)) { | 2508 if (trailing.contains(token.stringValue) && trailing.contains(expected)) { |
2502 handleRecoverableError(token, message); | 2509 handleRecoverableError(token, message); |
2503 return newSyntheticToken(token); | 2510 return newSyntheticToken(token); |
2504 } | 2511 } |
2505 } | 2512 } |
2506 return super.handleUnrecoverableError(token, message); | 2513 return super.handleUnrecoverableError(token, message); |
2507 } | 2514 } |
(...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3094 } else if (node is PrefixBuilder) { | 3101 } else if (node is PrefixBuilder) { |
3095 return node.name; | 3102 return node.name; |
3096 } else if (node is ThisAccessor) { | 3103 } else if (node is ThisAccessor) { |
3097 return node.isSuper ? "super" : "this"; | 3104 return node.isSuper ? "super" : "this"; |
3098 } else if (node is FastaAccessor) { | 3105 } else if (node is FastaAccessor) { |
3099 return node.plainNameForRead; | 3106 return node.plainNameForRead; |
3100 } else { | 3107 } else { |
3101 return internalError("Unhandled: ${node.runtimeType}"); | 3108 return internalError("Unhandled: ${node.runtimeType}"); |
3102 } | 3109 } |
3103 } | 3110 } |
OLD | NEW |