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.loader; | 5 library fasta.loader; |
6 | 6 |
7 import 'dart:async' show Future; | 7 import 'dart:async' show Future; |
8 | 8 |
9 import 'dart:collection' show Queue; | 9 import 'dart:collection' show Queue; |
10 | 10 |
11 import 'builder/builder.dart' show Builder, LibraryBuilder; | 11 import 'builder/builder.dart' show Builder, LibraryBuilder; |
12 | 12 |
13 import 'errors.dart' show InputError, firstSourceUri; | 13 import 'errors.dart' show InputError, firstSourceUri; |
14 | 14 |
15 import 'target_implementation.dart' show TargetImplementation; | 15 import 'target_implementation.dart' show TargetImplementation; |
16 | 16 |
17 import 'ticker.dart' show Ticker; | 17 import 'ticker.dart' show Ticker; |
18 | 18 |
19 abstract class Loader<L> { | 19 abstract class Loader<L> { |
20 final Map<Uri, LibraryBuilder> builders = <Uri, LibraryBuilder>{}; | 20 final Map<Uri, LibraryBuilder> builders = <Uri, LibraryBuilder>{}; |
21 | 21 |
22 final Queue<LibraryBuilder> unparsedLibraries = new Queue<LibraryBuilder>(); | 22 final Queue<LibraryBuilder> unparsedLibraries = new Queue<LibraryBuilder>(); |
23 | 23 |
24 final List<L> libraries = <L>[]; | 24 final List<L> libraries = <L>[]; |
25 | 25 |
26 final TargetImplementation target; | 26 final TargetImplementation target; |
27 | 27 |
| 28 final List<InputError> errors = <InputError>[]; |
| 29 |
28 LibraryBuilder coreLibrary; | 30 LibraryBuilder coreLibrary; |
29 | 31 |
30 LibraryBuilder first; | 32 LibraryBuilder first; |
31 | 33 |
32 int byteCount = 0; | 34 int byteCount = 0; |
33 | 35 |
34 Uri currentUriForCrashReporting; | 36 Uri currentUriForCrashReporting; |
35 | 37 |
36 Loader(this.target); | 38 Loader(this.target); |
37 | 39 |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 ${format(ms / libraryCount, 3, 12)} ms/compilation unit."""); | 133 ${format(ms / libraryCount, 3, 12)} ms/compilation unit."""); |
132 }); | 134 }); |
133 } | 135 } |
134 | 136 |
135 Future<Null> buildOutline(covariant LibraryBuilder library); | 137 Future<Null> buildOutline(covariant LibraryBuilder library); |
136 | 138 |
137 /// Builds all the method bodies found in the given [library]. | 139 /// Builds all the method bodies found in the given [library]. |
138 Future<Null> buildBody(covariant LibraryBuilder library); | 140 Future<Null> buildBody(covariant LibraryBuilder library); |
139 | 141 |
140 List<InputError> collectCompileTimeErrors() { | 142 List<InputError> collectCompileTimeErrors() { |
141 List<InputError> errors = <InputError>[]; | 143 List<InputError> errors = <InputError>[]..addAll(this.errors); |
142 for (LibraryBuilder library in builders.values) { | 144 for (LibraryBuilder library in builders.values) { |
143 if (library.loader == this) { | 145 if (library.loader == this) { |
144 errors.addAll(library.compileTimeErrors); | 146 errors.addAll(library.compileTimeErrors); |
145 } | 147 } |
146 } | 148 } |
147 return errors; | 149 return errors; |
148 } | 150 } |
149 | 151 |
| 152 Builder getAbstractClassInstantiationError() { |
| 153 return target.getAbstractClassInstantiationError(this); |
| 154 } |
| 155 |
150 Builder getCompileTimeError() => target.getCompileTimeError(this); | 156 Builder getCompileTimeError() => target.getCompileTimeError(this); |
151 | 157 |
| 158 Builder getDuplicatedFieldInitializerError() { |
| 159 return target.getDuplicatedFieldInitializerError(this); |
| 160 } |
| 161 |
| 162 Builder getFallThroughError() => target.getFallThroughError(this); |
| 163 |
152 Builder getNativeAnnotation() => target.getNativeAnnotation(this); | 164 Builder getNativeAnnotation() => target.getNativeAnnotation(this); |
153 | 165 |
154 Builder getAbstractClassInstantiationError() { | 166 Builder getNoSuchMethodError() => target.getNoSuchMethodError(this); |
155 return target.getAbstractClassInstantiationError(this); | |
156 } | |
157 } | 167 } |
158 | 168 |
159 String format(double d, int fractionDigits, int width) { | 169 String format(double d, int fractionDigits, int width) { |
160 return d.toStringAsFixed(fractionDigits).padLeft(width); | 170 return d.toStringAsFixed(fractionDigits).padLeft(width); |
161 } | 171 } |
OLD | NEW |