| Index: pkg/front_end/lib/src/fasta/loader.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/loader.dart b/pkg/front_end/lib/src/fasta/loader.dart
|
| index 61e908c65d0d015ec4599ba949a2048a7bdba048..5a8e64a29cca8dee39fbd3039dad53a614c9ae65 100644
|
| --- a/pkg/front_end/lib/src/fasta/loader.dart
|
| +++ b/pkg/front_end/lib/src/fasta/loader.dart
|
| @@ -25,7 +25,19 @@ abstract class Loader<L> {
|
|
|
| final TargetImplementation target;
|
|
|
| - final List<InputError> errors = <InputError>[];
|
| + /// List of all handled compile-time errors seen so far by libraries loaded
|
| + /// by this loader.
|
| + ///
|
| + /// A handled error is an error that has been added to the generated AST
|
| + /// already, for example, as a throw expression.
|
| + final List<InputError> handledErrors = <InputError>[];
|
| +
|
| + /// List of all unhandled compile-time errors seen so far by libraries loaded
|
| + /// by this loader.
|
| + ///
|
| + /// An unhandled error is an error that hasn't been handled, see
|
| + /// [handledErrors].
|
| + final List<InputError> unhandledErrors = <InputError>[];
|
|
|
| LibraryBuilder coreLibrary;
|
|
|
| @@ -85,9 +97,8 @@ abstract class Loader<L> {
|
| uri.scheme == "dart" &&
|
| uri.path.startsWith("_") &&
|
| accessor.uri.scheme != "dart") {
|
| - const String message = "Can't access platform private library.";
|
| - printUnexpected(accessor.fileUri, charOffset, message);
|
| - errors.add(new InputError(accessor.fileUri, charOffset, message));
|
| + accessor.addCompileTimeError(
|
| + charOffset, "Can't access platform private library.");
|
| }
|
| return builder;
|
| }
|
| @@ -146,14 +157,20 @@ ${format(ms / libraryCount, 3, 12)} ms/compilation unit.""");
|
| /// Builds all the method bodies found in the given [library].
|
| Future<Null> buildBody(covariant LibraryBuilder library);
|
|
|
| - List<InputError> collectCompileTimeErrors() {
|
| - List<InputError> errors = <InputError>[]..addAll(this.errors);
|
| - for (LibraryBuilder library in builders.values) {
|
| - if (library.loader == this) {
|
| - errors.addAll(library.compileTimeErrors);
|
| - }
|
| + /// Register [message] as a compile-time error.
|
| + ///
|
| + /// If [silent] is true, no error is printed as it is assumed the error has
|
| + /// been previously reported.
|
| + ///
|
| + /// If [wasHandled] is true, this error is added to [handledErrors],
|
| + /// otherwise it is added to [unhandledErrors].
|
| + void addCompileTimeError(Uri fileUri, int charOffset, Object message,
|
| + {bool silent: false, bool wasHandled: false}) {
|
| + if (!silent) {
|
| + printUnexpected(fileUri, charOffset, message);
|
| }
|
| - return errors;
|
| + (wasHandled ? handledErrors : unhandledErrors)
|
| + .add(new InputError(fileUri, charOffset, message));
|
| }
|
|
|
| Builder getAbstractClassInstantiationError() {
|
|
|