Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Unified Diff: pkg/front_end/lib/src/fasta/builder/library_builder.dart

Issue 2788153002: Create separate scopes for constructors, setters, and other members. (Closed)
Patch Set: One more flaky standalone/io test. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}
}
« no previous file with comments | « pkg/front_end/lib/src/fasta/builder/class_builder.dart ('k') | pkg/front_end/lib/src/fasta/builder/mixed_accessor.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698