OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 dart2js.parser.element_listener; | 5 library dart2js.parser.element_listener; |
6 | 6 |
| 7 import '../compiler.dart' show |
| 8 Compiler; |
7 import '../common.dart'; | 9 import '../common.dart'; |
8 import '../diagnostics/messages.dart' show | 10 import '../diagnostics/messages.dart' show |
9 MessageTemplate; | 11 MessageTemplate; |
10 import '../elements/elements.dart' show | 12 import '../elements/elements.dart' show |
11 Element, | 13 Element, |
12 LibraryElement, | 14 LibraryElement, |
13 MetadataAnnotation; | 15 MetadataAnnotation; |
14 import '../elements/modelx.dart' show | 16 import '../elements/modelx.dart' show |
15 CompilationUnitElementX, | 17 CompilationUnitElementX, |
16 DeclarationSite, | 18 DeclarationSite, |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 closeBraceFor, | 52 closeBraceFor, |
51 Listener, | 53 Listener, |
52 ParserError, | 54 ParserError, |
53 VERBOSE; | 55 VERBOSE; |
54 | 56 |
55 typedef int IdGenerator(); | 57 typedef int IdGenerator(); |
56 | 58 |
57 /// Options used for scanning. | 59 /// Options used for scanning. |
58 /// | 60 /// |
59 /// Use this to conditionally support special tokens. | 61 /// Use this to conditionally support special tokens. |
| 62 /// |
| 63 /// TODO(johnniwinther): This class should be renamed, it is not about options |
| 64 /// in the same sense as `CompilerOptions` or `DiagnosticOptions`. |
60 class ScannerOptions { | 65 class ScannerOptions { |
61 /// If `true` the pseudo keyword `native` is supported. | 66 /// If `true` the pseudo keyword `native` is supported. |
62 final bool canUseNative; | 67 final bool canUseNative; |
63 | 68 |
64 const ScannerOptions({this.canUseNative: false}); | 69 const ScannerOptions({this.canUseNative: false}); |
| 70 |
| 71 ScannerOptions.from(Compiler compiler, LibraryElement libraryElement) : |
| 72 canUseNative = compiler.backend.canLibraryUseNative(libraryElement); |
65 } | 73 } |
66 | 74 |
67 /** | 75 /** |
68 * A parser event listener designed to work with [PartialParser]. It | 76 * A parser event listener designed to work with [PartialParser]. It |
69 * builds elements representing the top-level declarations found in | 77 * builds elements representing the top-level declarations found in |
70 * the parsed compilation unit and records them in | 78 * the parsed compilation unit and records them in |
71 * [compilationUnitElement]. | 79 * [compilationUnitElement]. |
72 */ | 80 */ |
73 class ElementListener extends Listener { | 81 class ElementListener extends Listener { |
74 final IdGenerator idGenerator; | 82 final IdGenerator idGenerator; |
(...skipping 704 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
779 MessageKind errorCode, | 787 MessageKind errorCode, |
780 [Map arguments = const {}]) { | 788 [Map arguments = const {}]) { |
781 if (currentMemberHasParseError) return; // Error already reported. | 789 if (currentMemberHasParseError) return; // Error already reported. |
782 if (suppressParseErrors) return; | 790 if (suppressParseErrors) return; |
783 if (!memberErrors.isEmpty) { | 791 if (!memberErrors.isEmpty) { |
784 memberErrors = memberErrors.tail.prepend(true); | 792 memberErrors = memberErrors.tail.prepend(true); |
785 } | 793 } |
786 reporter.reportErrorMessage(spannable, errorCode, arguments); | 794 reporter.reportErrorMessage(spannable, errorCode, arguments); |
787 } | 795 } |
788 } | 796 } |
OLD | NEW |