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); |
} |
} |