| Index: pkg/front_end/lib/src/fasta/builder/library_builder.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/builder/library_builder.dart b/pkg/front_end/lib/src/fasta/builder/library_builder.dart
|
| index 2010800716e5cdfd9685084464300f6db8da4f6a..efd77e5ed09bd5163be43e75e380fbb7566bfff5 100644
|
| --- a/pkg/front_end/lib/src/fasta/builder/library_builder.dart
|
| +++ b/pkg/front_end/lib/src/fasta/builder/library_builder.dart
|
| @@ -22,35 +22,40 @@ import 'builder.dart'
|
| DynamicTypeBuilder,
|
| ClassBuilder,
|
| Scope,
|
| + ScopeBuilder,
|
| TypeBuilder,
|
| VoidTypeBuilder;
|
|
|
| abstract class LibraryBuilder<T extends TypeBuilder, R> extends Builder {
|
| - final List<Export> exporters = <Export>[];
|
| + final Scope scope;
|
|
|
| - final List<InputError> compileTimeErrors = <InputError>[];
|
| + final Scope exports;
|
|
|
| - LibraryBuilder partOfLibrary;
|
| + final ScopeBuilder scopeBuilder;
|
|
|
| - Loader get loader;
|
| + final ScopeBuilder exportScopeBuilder;
|
|
|
| - Uri get uri;
|
| + final List<Export> exporters = <Export>[];
|
|
|
| - final Uri fileUri;
|
| - final String relativeFileUri;
|
| + final List<InputError> compileTimeErrors = <InputError>[];
|
|
|
| - Map<String, Builder> get members;
|
| + final Uri fileUri;
|
|
|
| - // TODO(ahe): Move this to SourceLibraryBuilder.
|
| - Scope get scope;
|
| + final String relativeFileUri;
|
|
|
| - Map<String, Builder> get exports;
|
| + LibraryBuilder partOfLibrary;
|
|
|
| - LibraryBuilder(Uri fileUri)
|
| + LibraryBuilder(Uri fileUri, this.scope, this.exports)
|
| : fileUri = fileUri,
|
| relativeFileUri = relativizeUri(fileUri),
|
| + scopeBuilder = new ScopeBuilder(scope),
|
| + exportScopeBuilder = new ScopeBuilder(exports),
|
| super(null, -1, fileUri);
|
|
|
| + Loader get loader;
|
| +
|
| + Uri get uri;
|
| +
|
| Builder addBuilder(String name, Builder builder, int charOffset);
|
|
|
| void addExporter(
|
| @@ -104,7 +109,7 @@ abstract class LibraryBuilder<T extends TypeBuilder, R> extends Builder {
|
| Builder getConstructor(String className,
|
| {String constructorName, bool isPrivate: false}) {
|
| constructorName ??= "";
|
| - Builder cls = (isPrivate ? members : exports)[className];
|
| + Builder cls = (isPrivate ? scope : exports).lookup(className, -1, null);
|
| if (cls is ClassBuilder) {
|
| // TODO(ahe): This code is similar to code in `endNewExpression` in
|
| // `body_builder.dart`, try to share it.
|
| @@ -133,16 +138,16 @@ abstract class LibraryBuilder<T extends TypeBuilder, R> extends Builder {
|
| }
|
|
|
| void forEach(void f(String name, Builder builder)) {
|
| - members.forEach(f);
|
| + scope.forEach(f);
|
| }
|
|
|
| /// Don't use for scope lookup. Only use when an element is known to exist
|
| /// (and not a setter).
|
| Builder operator [](String name) {
|
| - return members[name] ?? internalError("Not found: '$name'.");
|
| + return scope.local[name] ?? internalError("Not found: '$name'.");
|
| }
|
|
|
| Builder lookup(String name, int charOffset, Uri fileUri) {
|
| - return members[name];
|
| + return scope.lookup(name, charOffset, fileUri);
|
| }
|
| }
|
|
|