Chromium Code Reviews| 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 |