[cfe] Introduce NameSpace
This adds a NameSpace interface to Scope and uses it for access to
local members. The NameSpace represents entities declared with a library
or class/extension (type) declaration and is to be used for creating
a Scope instead of being the scope itself. As such it is added to
LibraryBuilder and IDeclarationBuilder and used in place of the `scope`
property for accessing these entities.
Change-Id: Id9b03bc8e820ad8f6d185cc95d695ac4a5e59f8f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/376622
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
diff --git a/pkg/front_end/lib/src/base/incremental_compiler.dart b/pkg/front_end/lib/src/base/incremental_compiler.dart
index 55b7d11..66157f6 100644
--- a/pkg/front_end/lib/src/base/incremental_compiler.dart
+++ b/pkg/front_end/lib/src/base/incremental_compiler.dart
@@ -640,7 +640,7 @@
// Clear cached calculations that points (potential) to now replaced
// things.
- for (Builder builder in builder.scope.localMembers) {
+ for (Builder builder in builder.nameSpace.localMembers) {
if (builder is DillClassBuilder) {
builder.clearCachedValues();
}
@@ -1042,7 +1042,7 @@
if (builder.isBuiltAndMarked) {
// Clear cached calculations in classes which upon calculation can
// mark things as needed.
- for (Builder builder in builder.scope.localMembers) {
+ for (Builder builder in builder.nameSpace.localMembers) {
if (builder is DillClassBuilder) {
builder.clearCachedValues();
}
@@ -1886,8 +1886,8 @@
Class? cls;
if (className != null) {
- Builder? scopeMember =
- libraryBuilder.scope.lookupLocalMember(className, setter: false);
+ Builder? scopeMember = libraryBuilder.nameSpace
+ .lookupLocalMember(className, setter: false);
if (scopeMember is ClassBuilder) {
cls = scopeMember.cls;
} else {
@@ -1902,8 +1902,8 @@
if (indexOfDot >= 0) {
String beforeDot = methodName.substring(0, indexOfDot);
String afterDot = methodName.substring(indexOfDot + 1);
- Builder? builder =
- libraryBuilder.scope.lookupLocalMember(beforeDot, setter: false);
+ Builder? builder = libraryBuilder.nameSpace
+ .lookupLocalMember(beforeDot, setter: false);
extensionName = beforeDot;
if (builder is ExtensionBuilder) {
extension = builder.extension;
@@ -1983,14 +1983,14 @@
isPatch: false,
);
debugLibrary.compilationUnit.createLibrary();
- libraryBuilder.scope.forEachLocalMember((name, member) {
- debugLibrary.scope.addLocalMember(name, member, setter: false);
+ libraryBuilder.nameSpace.forEachLocalMember((name, member) {
+ debugLibrary.nameSpace.addLocalMember(name, member, setter: false);
});
- libraryBuilder.scope.forEachLocalSetter((name, member) {
- debugLibrary.scope.addLocalMember(name, member, setter: true);
+ libraryBuilder.nameSpace.forEachLocalSetter((name, member) {
+ debugLibrary.nameSpace.addLocalMember(name, member, setter: true);
});
- libraryBuilder.scope.forEachLocalExtension((member) {
- debugLibrary.scope.addExtension(member);
+ libraryBuilder.nameSpace.forEachLocalExtension((member) {
+ debugLibrary.nameSpace.addExtension(member);
});
_ticker.logMs("Created debug library");
diff --git a/pkg/front_end/lib/src/base/scope.dart b/pkg/front_end/lib/src/base/scope.dart
index 3ab8263..d7c9f0b 100644
--- a/pkg/front_end/lib/src/base/scope.dart
+++ b/pkg/front_end/lib/src/base/scope.dart
@@ -2,6 +2,8 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
+// ignore_for_file: annotate_overrides
+
library fasta.scope;
import 'package:kernel/ast.dart';
@@ -178,7 +180,68 @@
String toString() => "Scope(${kind}, $classNameOrDebugName, ${_local?.keys})";
}
-class Scope extends MutableScope implements ParentScope, LookupScope {
+abstract class NameSpace {
+ void addLocalMember(String name, Builder member, {required bool setter});
+
+ Builder? lookupLocalMember(String name, {required bool setter});
+
+ void forEachLocalMember(void Function(String name, Builder member) f);
+
+ void forEachLocalSetter(void Function(String name, MemberBuilder member) f);
+
+ void forEachLocalExtension(void Function(ExtensionBuilder member) f);
+
+ Iterable<Builder> get localMembers;
+
+ /// Returns an iterator of all members and setters mapped in this scope,
+ /// including duplicate members mapped to the same name.
+ ///
+ /// The iterator does _not_ include the members and setters mapped in the
+ /// [parent] scope.
+ Iterator<Builder> get unfilteredIterator;
+
+ /// Returns an iterator of all members and setters mapped in this scope,
+ /// including duplicate members mapped to the same name.
+ ///
+ /// The iterator does _not_ include the members and setters mapped in the
+ /// [parent] scope.
+ ///
+ /// Compared to [unfilteredIterator] this iterator also gives access to the
+ /// name that the builders are mapped to.
+ NameIterator get unfilteredNameIterator;
+
+ /// Returns a filtered iterator of members and setters mapped in this scope.
+ ///
+ /// Only members of type [T] are included. If [parent] is provided, on members
+ /// declared in [parent] are included. If [includeDuplicates] is `true`, all
+ /// duplicates of the same name are included, otherwise, only the first
+ /// declared member is included. If [includeAugmentations] is `true`, both
+ /// original and augmenting/patching members are included, otherwise, only
+ /// original members are included.
+ Iterator<T> filteredIterator<T extends Builder>(
+ {Builder? parent,
+ required bool includeDuplicates,
+ required bool includeAugmentations});
+
+ /// Returns a filtered iterator of members and setters mapped in this scope.
+ ///
+ /// Only members of type [T] are included. If [parent] is provided, on members
+ /// declared in [parent] are included. If [includeDuplicates] is `true`, all
+ /// duplicates of the same name are included, otherwise, only the first
+ /// declared member is included. If [includeAugmentations] is `true`, both
+ /// original and augmenting/patching members are included, otherwise, only
+ /// original members are included.
+ ///
+ /// Compared to [filteredIterator] this iterator also gives access to the
+ /// name that the builders are mapped to.
+ NameIterator<T> filteredNameIterator<T extends Builder>(
+ {Builder? parent,
+ required bool includeDuplicates,
+ required bool includeAugmentations});
+}
+
+class Scope extends MutableScope
+ implements ParentScope, LookupScope, NameSpace {
/// Indicates whether an attempt to declare new names in this scope should
/// succeed.
final bool isModifiable;
diff --git a/pkg/front_end/lib/src/builder/builder_mixins.dart b/pkg/front_end/lib/src/builder/builder_mixins.dart
index 70aebd5..803a236 100644
--- a/pkg/front_end/lib/src/builder/builder_mixins.dart
+++ b/pkg/front_end/lib/src/builder/builder_mixins.dart
@@ -58,7 +58,7 @@
}
void forEach(void f(String name, Builder builder)) {
- scope
+ nameSpace
.filteredNameIterator(
includeDuplicates: false, includeAugmentations: false)
.forEach(f);
@@ -72,7 +72,7 @@
{bool setter = false, bool required = false}) {
// TODO(johnniwinther): Support augmented on extensions/extension type
// declarations.
- Builder? builder = scope.lookupLocalMember(name, setter: setter);
+ Builder? builder = nameSpace.lookupLocalMember(name, setter: setter);
if (required && builder == null) {
internalProblem(
templateInternalProblemNotFoundIn.withArguments(
diff --git a/pkg/front_end/lib/src/builder/class_builder.dart b/pkg/front_end/lib/src/builder/class_builder.dart
index 58efb80..c7217cd 100644
--- a/pkg/front_end/lib/src/builder/class_builder.dart
+++ b/pkg/front_end/lib/src/builder/class_builder.dart
@@ -177,16 +177,9 @@
InterfaceType? _nonNullableRawType;
InterfaceType? _thisType;
- ClassBuilderImpl(
- List<MetadataBuilder>? metadata,
- int modifiers,
- String name,
- Scope scope,
- ConstructorScope constructorScope,
- LibraryBuilder parent,
- int charOffset)
- : super(metadata, modifiers, name, parent, charOffset, scope,
- constructorScope);
+ ClassBuilderImpl(List<MetadataBuilder>? metadata, int modifiers, String name,
+ LibraryBuilder parent, int charOffset)
+ : super(metadata, modifiers, name, parent, charOffset);
@override
String get debugName => "ClassBuilder";
@@ -236,10 +229,10 @@
@override
Builder? lookupLocalMember(String name,
{bool setter = false, bool required = false}) {
- Builder? builder = scope.lookupLocalMember(name, setter: setter);
+ Builder? builder = nameSpace.lookupLocalMember(name, setter: setter);
if (builder == null && isAugmenting) {
// Coverage-ignore-block(suite): Not run.
- builder = origin.scope.lookupLocalMember(name, setter: setter);
+ builder = origin.nameSpace.lookupLocalMember(name, setter: setter);
}
if (required && builder == null) {
internalProblem(
diff --git a/pkg/front_end/lib/src/builder/constructor_reference_builder.dart b/pkg/front_end/lib/src/builder/constructor_reference_builder.dart
index af514a2..c99d16e 100644
--- a/pkg/front_end/lib/src/builder/constructor_reference_builder.dart
+++ b/pkg/front_end/lib/src/builder/constructor_reference_builder.dart
@@ -34,7 +34,7 @@
"${suffix == null ? '' : '.$suffix'}";
}
- void resolveIn(Scope scope, LibraryBuilder accessingLibrary) {
+ void resolveIn(LookupScope scope, LibraryBuilder accessingLibrary) {
Builder? declaration;
String? qualifier = typeName.qualifier;
if (qualifier != null) {
diff --git a/pkg/front_end/lib/src/builder/declaration_builder.dart b/pkg/front_end/lib/src/builder/declaration_builder.dart
index 6c765dc..757db4c 100644
--- a/pkg/front_end/lib/src/builder/declaration_builder.dart
+++ b/pkg/front_end/lib/src/builder/declaration_builder.dart
@@ -7,6 +7,8 @@
abstract class IDeclarationBuilder implements ITypeDeclarationBuilder {
Scope get scope;
+ NameSpace get nameSpace;
+
LibraryBuilder get libraryBuilder;
@override
@@ -49,22 +51,10 @@
abstract class DeclarationBuilderImpl extends TypeDeclarationBuilderImpl
implements IDeclarationBuilder {
@override
- final Scope scope;
-
- @override
- final ConstructorScope constructorScope;
-
- @override
final Uri fileUri;
- DeclarationBuilderImpl(
- List<MetadataBuilder>? metadata,
- int modifiers,
- String name,
- LibraryBuilder parent,
- int charOffset,
- this.scope,
- this.constructorScope)
+ DeclarationBuilderImpl(List<MetadataBuilder>? metadata, int modifiers,
+ String name, LibraryBuilder parent, int charOffset)
: fileUri = parent.fileUri,
super(metadata, modifiers, name, parent, charOffset);
diff --git a/pkg/front_end/lib/src/builder/extension_builder.dart b/pkg/front_end/lib/src/builder/extension_builder.dart
index 1bc85be..4a3287c 100644
--- a/pkg/front_end/lib/src/builder/extension_builder.dart
+++ b/pkg/front_end/lib/src/builder/extension_builder.dart
@@ -34,9 +34,8 @@
with DeclarationBuilderMixin
implements ExtensionBuilder {
ExtensionBuilderImpl(List<MetadataBuilder>? metadata, int modifiers,
- String name, LibraryBuilder parent, int charOffset, Scope scope)
- : super(metadata, modifiers, name, parent, charOffset, scope,
- new ConstructorScope(name, const {}));
+ String name, LibraryBuilder parent, int charOffset)
+ : super(metadata, modifiers, name, parent, charOffset);
@override
DartType buildAliasedTypeWithBuiltArguments(
diff --git a/pkg/front_end/lib/src/builder/extension_type_declaration_builder.dart b/pkg/front_end/lib/src/builder/extension_type_declaration_builder.dart
index 17ac217..71e61f3 100644
--- a/pkg/front_end/lib/src/builder/extension_type_declaration_builder.dart
+++ b/pkg/front_end/lib/src/builder/extension_type_declaration_builder.dart
@@ -35,16 +35,9 @@
extends DeclarationBuilderImpl
with DeclarationBuilderMixin
implements ExtensionTypeDeclarationBuilder {
- ExtensionTypeDeclarationBuilderImpl(
- List<MetadataBuilder>? metadata,
- int modifiers,
- String name,
- LibraryBuilder parent,
- int charOffset,
- Scope scope,
- ConstructorScope constructorScope)
- : super(metadata, modifiers, name, parent, charOffset, scope,
- constructorScope);
+ ExtensionTypeDeclarationBuilderImpl(List<MetadataBuilder>? metadata,
+ int modifiers, String name, LibraryBuilder parent, int charOffset)
+ : super(metadata, modifiers, name, parent, charOffset);
@override
DartType buildAliasedTypeWithBuiltArguments(
diff --git a/pkg/front_end/lib/src/builder/library_builder.dart b/pkg/front_end/lib/src/builder/library_builder.dart
index ed8482f..5c105ab 100644
--- a/pkg/front_end/lib/src/builder/library_builder.dart
+++ b/pkg/front_end/lib/src/builder/library_builder.dart
@@ -260,6 +260,8 @@
abstract class LibraryBuilder implements Builder, ProblemReporting {
Scope get scope;
+ NameSpace get nameSpace;
+
Scope get exportScope;
List<Export> get exporters;
@@ -420,19 +422,19 @@
@override
Iterator<Builder> get localMembersIterator {
- return scope.filteredIterator(
+ return nameSpace.filteredIterator(
parent: this, includeDuplicates: true, includeAugmentations: true);
}
@override
Iterator<T> localMembersIteratorOfType<T extends Builder>() {
- return scope.filteredIterator<T>(
+ return nameSpace.filteredIterator<T>(
parent: this, includeDuplicates: true, includeAugmentations: true);
}
@override
NameIterator<Builder> get localMembersNameIterator {
- return scope.filteredNameIterator(
+ return nameSpace.filteredNameIterator(
parent: this, includeDuplicates: true, includeAugmentations: true);
}
@@ -523,7 +525,7 @@
@override
Builder? lookupLocalMember(String name, {bool required = false}) {
- Builder? builder = scope.lookupLocalMember(name, setter: false);
+ Builder? builder = nameSpace.lookupLocalMember(name, setter: false);
if (required && builder == null) {
internalProblem(
templateInternalProblemNotFoundIn.withArguments(
diff --git a/pkg/front_end/lib/src/builder/named_type_builder.dart b/pkg/front_end/lib/src/builder/named_type_builder.dart
index c932be2..df147b9 100644
--- a/pkg/front_end/lib/src/builder/named_type_builder.dart
+++ b/pkg/front_end/lib/src/builder/named_type_builder.dart
@@ -192,7 +192,7 @@
}
@override
- void resolveIn(Scope scope, int charOffset, Uri fileUri,
+ void resolveIn(LookupScope scope, int charOffset, Uri fileUri,
ProblemReporting problemReporting) {
if (_declaration != null) return;
Builder? member;
diff --git a/pkg/front_end/lib/src/builder/type_builder.dart b/pkg/front_end/lib/src/builder/type_builder.dart
index 0e7f423..815c9b1 100644
--- a/pkg/front_end/lib/src/builder/type_builder.dart
+++ b/pkg/front_end/lib/src/builder/type_builder.dart
@@ -491,7 +491,7 @@
@override
TypeName get typeName;
- void resolveIn(Scope scope, int charOffset, Uri fileUri,
+ void resolveIn(LookupScope scope, int charOffset, Uri fileUri,
ProblemReporting problemReporting);
void bind(
ProblemReporting problemReporting, TypeDeclarationBuilder declaration);
diff --git a/pkg/front_end/lib/src/dill/dill_class_builder.dart b/pkg/front_end/lib/src/dill/dill_class_builder.dart
index c5483b0..4ea03bf 100644
--- a/pkg/front_end/lib/src/dill/dill_class_builder.dart
+++ b/pkg/front_end/lib/src/dill/dill_class_builder.dart
@@ -52,6 +52,12 @@
@override
final Class cls;
+ @override
+ final Scope scope;
+
+ @override
+ final ConstructorScope constructorScope;
+
List<NominalVariableBuilder>? _typeVariables;
TypeBuilder? _supertypeBuilder;
@@ -59,20 +65,20 @@
List<TypeBuilder>? _interfaceBuilders;
DillClassBuilder(this.cls, DillLibraryBuilder parent)
- : super(
- /*metadata builders*/ null,
- computeModifiers(cls),
- cls.name,
- new Scope(
- kind: ScopeKind.declaration,
- local: <String, MemberBuilder>{},
- setters: <String, MemberBuilder>{},
- parent: parent.scope,
- debugName: "class ${cls.name}",
- isModifiable: false),
+ : scope = new Scope(
+ kind: ScopeKind.declaration,
+ local: <String, MemberBuilder>{},
+ setters: <String, MemberBuilder>{},
+ parent: parent.scope,
+ debugName: "class ${cls.name}",
+ isModifiable: false),
+ constructorScope =
new ConstructorScope(cls.name, <String, MemberBuilder>{}),
- parent,
- cls.fileOffset);
+ super(/*metadata builders*/ null, computeModifiers(cls), cls.name,
+ parent, cls.fileOffset);
+
+ @override
+ NameSpace get nameSpace => scope;
@override
bool get isEnum => cls.isEnum;
@@ -137,7 +143,7 @@
void addField(Field field) {
DillFieldBuilder builder = new DillFieldBuilder(field, this);
String name = field.name.text;
- scope.addLocalMember(name, builder, setter: false);
+ nameSpace.addLocalMember(name, builder, setter: false);
}
void addConstructor(Constructor constructor, Procedure? constructorTearOff) {
@@ -160,19 +166,19 @@
// Coverage-ignore(suite): Not run.
throw new UnsupportedError("Use addFactory for adding factories");
case ProcedureKind.Setter:
- scope.addLocalMember(name, new DillSetterBuilder(procedure, this),
+ nameSpace.addLocalMember(name, new DillSetterBuilder(procedure, this),
setter: true);
break;
case ProcedureKind.Getter:
- scope.addLocalMember(name, new DillGetterBuilder(procedure, this),
+ nameSpace.addLocalMember(name, new DillGetterBuilder(procedure, this),
setter: false);
break;
case ProcedureKind.Operator:
- scope.addLocalMember(name, new DillOperatorBuilder(procedure, this),
+ nameSpace.addLocalMember(name, new DillOperatorBuilder(procedure, this),
setter: false);
break;
case ProcedureKind.Method:
- scope.addLocalMember(name, new DillMethodBuilder(procedure, this),
+ nameSpace.addLocalMember(name, new DillMethodBuilder(procedure, this),
setter: false);
break;
}
diff --git a/pkg/front_end/lib/src/dill/dill_extension_builder.dart b/pkg/front_end/lib/src/dill/dill_extension_builder.dart
index 6e7a056..0c2d701 100644
--- a/pkg/front_end/lib/src/dill/dill_extension_builder.dart
+++ b/pkg/front_end/lib/src/dill/dill_extension_builder.dart
@@ -17,30 +17,34 @@
with DillDeclarationBuilderMixin {
@override
final Extension extension;
+
+ @override
+ final Scope scope;
+
+ @override
+ final ConstructorScope constructorScope;
+
List<NominalVariableBuilder>? _typeParameters;
TypeBuilder? _onType;
DillExtensionBuilder(this.extension, LibraryBuilder parent)
- : super(
- /* metadata = */ null,
- 0,
- extension.name,
- parent,
- extension.fileOffset,
- new Scope(
- kind: ScopeKind.declaration,
- local: <String, MemberBuilder>{},
- setters: <String, MemberBuilder>{},
- parent: parent.scope,
- debugName: "extension ${extension.name}",
- isModifiable: false)) {
+ : scope = new Scope(
+ kind: ScopeKind.declaration,
+ local: <String, MemberBuilder>{},
+ setters: <String, MemberBuilder>{},
+ parent: parent.scope,
+ debugName: "extension ${extension.name}",
+ isModifiable: false),
+ constructorScope = new ConstructorScope(extension.name, const {}),
+ super(/* metadata = */ null, 0, extension.name, parent,
+ extension.fileOffset) {
for (ExtensionMemberDescriptor descriptor in extension.memberDescriptors) {
Name name = descriptor.name;
switch (descriptor.kind) {
case ExtensionMemberKind.Method:
if (descriptor.isStatic) {
Procedure procedure = descriptor.memberReference.asProcedure;
- scope.addLocalMember(
+ nameSpace.addLocalMember(
name.text,
new DillExtensionStaticMethodBuilder(
procedure, descriptor, this),
@@ -51,7 +55,7 @@
assert(
tearOff != null, // Coverage-ignore(suite): Not run.
"No tear found for ${descriptor}");
- scope.addLocalMember(
+ nameSpace.addLocalMember(
name.text,
new DillExtensionInstanceMethodBuilder(
procedure, descriptor, this, tearOff!),
@@ -60,25 +64,25 @@
break;
case ExtensionMemberKind.Getter:
Procedure procedure = descriptor.memberReference.asProcedure;
- scope.addLocalMember(name.text,
+ nameSpace.addLocalMember(name.text,
new DillExtensionGetterBuilder(procedure, descriptor, this),
setter: false);
break;
case ExtensionMemberKind.Field:
Field field = descriptor.memberReference.asField;
- scope.addLocalMember(
+ nameSpace.addLocalMember(
name.text, new DillExtensionFieldBuilder(field, descriptor, this),
setter: false);
break;
case ExtensionMemberKind.Setter:
Procedure procedure = descriptor.memberReference.asProcedure;
- scope.addLocalMember(name.text,
+ nameSpace.addLocalMember(name.text,
new DillExtensionSetterBuilder(procedure, descriptor, this),
setter: true);
break;
case ExtensionMemberKind.Operator:
Procedure procedure = descriptor.memberReference.asProcedure;
- scope.addLocalMember(name.text,
+ nameSpace.addLocalMember(name.text,
new DillExtensionOperatorBuilder(procedure, descriptor, this),
setter: false);
break;
@@ -87,6 +91,9 @@
}
@override
+ NameSpace get nameSpace => scope;
+
+ @override
List<NominalVariableBuilder>? get typeParameters {
if (_typeParameters == null && extension.typeParameters.isNotEmpty) {
_typeParameters = computeTypeVariableBuilders(
diff --git a/pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart b/pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart
index 684a37a..7c7e42a 100644
--- a/pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart
+++ b/pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart
@@ -19,6 +19,12 @@
with DillClassMemberAccessMixin, DillDeclarationBuilderMixin {
final ExtensionTypeDeclaration _extensionTypeDeclaration;
+ @override
+ final Scope scope;
+
+ @override
+ final ConstructorScope constructorScope;
+
List<NominalVariableBuilder>? _typeParameters;
List<TypeBuilder>? _interfaceBuilders;
@@ -27,23 +33,23 @@
DillExtensionTypeDeclarationBuilder(
this._extensionTypeDeclaration, DillLibraryBuilder parent)
- : super(
+ : scope = new Scope(
+ kind: ScopeKind.declaration,
+ local: <String, MemberBuilder>{},
+ setters: <String, MemberBuilder>{},
+ parent: parent.scope,
+ debugName: "extension type ${_extensionTypeDeclaration.name}",
+ isModifiable: false),
+ constructorScope = new ConstructorScope(
+ _extensionTypeDeclaration.name, <String, MemberBuilder>{}),
+ super(
/*metadata builders*/
null,
/* modifiers*/
0,
_extensionTypeDeclaration.name,
parent,
- _extensionTypeDeclaration.fileOffset,
- new Scope(
- kind: ScopeKind.declaration,
- local: <String, MemberBuilder>{},
- setters: <String, MemberBuilder>{},
- parent: parent.scope,
- debugName: "extension type ${_extensionTypeDeclaration.name}",
- isModifiable: false),
- new ConstructorScope(
- _extensionTypeDeclaration.name, <String, MemberBuilder>{})) {
+ _extensionTypeDeclaration.fileOffset) {
for (Procedure procedure in _extensionTypeDeclaration.procedures) {
String name = procedure.name.text;
switch (procedure.kind) {
@@ -54,19 +60,20 @@
"$procedure (${procedure.kind}).");
case ProcedureKind.Setter:
// Coverage-ignore(suite): Not run.
- scope.addLocalMember(name, new DillSetterBuilder(procedure, this),
+ nameSpace.addLocalMember(name, new DillSetterBuilder(procedure, this),
setter: true);
break;
case ProcedureKind.Getter:
- scope.addLocalMember(name, new DillGetterBuilder(procedure, this),
+ nameSpace.addLocalMember(name, new DillGetterBuilder(procedure, this),
setter: false);
break;
case ProcedureKind.Operator:
- scope.addLocalMember(name, new DillOperatorBuilder(procedure, this),
+ nameSpace.addLocalMember(
+ name, new DillOperatorBuilder(procedure, this),
setter: false);
break;
case ProcedureKind.Method:
- scope.addLocalMember(name, new DillMethodBuilder(procedure, this),
+ nameSpace.addLocalMember(name, new DillMethodBuilder(procedure, this),
setter: false);
break;
}
@@ -78,7 +85,7 @@
case ExtensionTypeMemberKind.Method:
if (descriptor.isStatic) {
Procedure procedure = descriptor.memberReference.asProcedure;
- scope.addLocalMember(
+ nameSpace.addLocalMember(
name.text,
new DillExtensionTypeStaticMethodBuilder(
procedure, descriptor, this),
@@ -89,7 +96,7 @@
assert(
tearOff != null, // Coverage-ignore(suite): Not run.
"No tear found for ${descriptor}");
- scope.addLocalMember(
+ nameSpace.addLocalMember(
name.text,
new DillExtensionTypeInstanceMethodBuilder(
procedure, descriptor, this, tearOff!),
@@ -98,25 +105,25 @@
break;
case ExtensionTypeMemberKind.Getter:
Procedure procedure = descriptor.memberReference.asProcedure;
- scope.addLocalMember(name.text,
+ nameSpace.addLocalMember(name.text,
new DillExtensionTypeGetterBuilder(procedure, descriptor, this),
setter: false);
break;
case ExtensionTypeMemberKind.Field:
Field field = descriptor.memberReference.asField;
- scope.addLocalMember(name.text,
+ nameSpace.addLocalMember(name.text,
new DillExtensionTypeFieldBuilder(field, descriptor, this),
setter: false);
break;
case ExtensionTypeMemberKind.Setter:
Procedure procedure = descriptor.memberReference.asProcedure;
- scope.addLocalMember(name.text,
+ nameSpace.addLocalMember(name.text,
new DillExtensionTypeSetterBuilder(procedure, descriptor, this),
setter: true);
break;
case ExtensionTypeMemberKind.Operator:
Procedure procedure = descriptor.memberReference.asProcedure;
- scope.addLocalMember(name.text,
+ nameSpace.addLocalMember(name.text,
new DillExtensionTypeOperatorBuilder(procedure, descriptor, this),
setter: false);
break;
@@ -145,6 +152,9 @@
DillLibraryBuilder get libraryBuilder => parent as DillLibraryBuilder;
@override
+ NameSpace get nameSpace => scope;
+
+ @override
DartType get declaredRepresentationType =>
_extensionTypeDeclaration.declaredRepresentationType;
diff --git a/pkg/front_end/lib/src/dill/dill_library_builder.dart b/pkg/front_end/lib/src/dill/dill_library_builder.dart
index 3567774..c478e49 100644
--- a/pkg/front_end/lib/src/dill/dill_library_builder.dart
+++ b/pkg/front_end/lib/src/dill/dill_library_builder.dart
@@ -151,6 +151,9 @@
Scope get scope => _scope;
@override
+ Scope get nameSpace => _scope;
+
+ @override
Scope get exportScope => _exportScope;
@override
@@ -235,17 +238,17 @@
@override
void becomeCoreLibrary() {
- if (scope.lookupLocalMember("dynamic", setter: false) == null) {
+ if (nameSpace.lookupLocalMember("dynamic", setter: false) == null) {
_addBuilder("dynamic",
new DynamicTypeDeclarationBuilder(const DynamicType(), this, -1));
}
- if (scope.lookupLocalMember("Never", setter: false) == null) {
+ if (nameSpace.lookupLocalMember("Never", setter: false) == null) {
_addBuilder(
"Never",
new NeverTypeDeclarationBuilder(
const NeverType.nonNullable(), this, -1));
}
- assert(scope.lookupLocalMember("Null", setter: false) != null,
+ assert(nameSpace.lookupLocalMember("Null", setter: false) != null,
"No class 'Null' found in dart:core.");
}
@@ -346,12 +349,13 @@
bool isSetter = declaration.isSetter;
if (isSetter) {
- scope.addLocalMember(name, declaration as MemberBuilder, setter: true);
+ nameSpace.addLocalMember(name, declaration as MemberBuilder,
+ setter: true);
} else {
- scope.addLocalMember(name, declaration, setter: false);
+ nameSpace.addLocalMember(name, declaration, setter: false);
}
if (declaration.isExtension) {
- scope.addExtension(declaration as ExtensionBuilder);
+ nameSpace.addExtension(declaration as ExtensionBuilder);
}
if (!name.startsWith("_") && !name.contains('#')) {
if (isSetter) {
@@ -497,14 +501,14 @@
@override
// Coverage-ignore(suite): Not run.
Iterator<T> fullMemberIterator<T extends Builder>() {
- return scope.filteredIterator<T>(
+ return nameSpace.filteredIterator<T>(
includeDuplicates: false, includeAugmentations: false);
}
@override
// Coverage-ignore(suite): Not run.
NameIterator<T> fullMemberNameIterator<T extends Builder>() {
- return scope.filteredNameIterator(
+ return nameSpace.filteredNameIterator(
includeDuplicates: false, includeAugmentations: false);
}
diff --git a/pkg/front_end/lib/src/kernel/macro/annotation_parser.dart b/pkg/front_end/lib/src/kernel/macro/annotation_parser.dart
index b98b4cc..f065b9b 100644
--- a/pkg/front_end/lib/src/kernel/macro/annotation_parser.dart
+++ b/pkg/front_end/lib/src/kernel/macro/annotation_parser.dart
@@ -28,7 +28,7 @@
{required SourceLibraryBuilder enclosingLibrary,
required List<MetadataBuilder>? metadataBuilders,
required Uri fileUri,
- required Scope scope,
+ required LookupScope scope,
required Set<ClassBuilder> currentMacroDeclarations}) {
if (metadataBuilders == null) return null;
List<MacroApplication>? result;
@@ -154,7 +154,7 @@
@override
final Uri uri;
- final Scope scope;
+ final LookupScope scope;
final List<_Node> _stack = [];
diff --git a/pkg/front_end/lib/src/kernel/macro/introspectors.dart b/pkg/front_end/lib/src/kernel/macro/introspectors.dart
index a1aeba6..8a885f9 100644
--- a/pkg/front_end/lib/src/kernel/macro/introspectors.dart
+++ b/pkg/front_end/lib/src/kernel/macro/introspectors.dart
@@ -689,8 +689,8 @@
memberName = name.substring(0, name.length - 1);
isSetter = true;
}
- Builder? builder =
- libraryBuilder.scope.lookupLocalMember(memberName, setter: isSetter);
+ Builder? builder = libraryBuilder.nameSpace
+ .lookupLocalMember(memberName, setter: isSetter);
if (builder == null) {
return new Future.error(
new macro.MacroImplementationExceptionImpl(
diff --git a/pkg/front_end/lib/src/source/class_declaration.dart b/pkg/front_end/lib/src/source/class_declaration.dart
index 4fb9107..0489aef 100644
--- a/pkg/front_end/lib/src/source/class_declaration.dart
+++ b/pkg/front_end/lib/src/source/class_declaration.dart
@@ -247,7 +247,7 @@
ClassDeclarationMemberIterator._(
D classDeclaration, this.augmentationBuilders,
{required this.includeDuplicates})
- : _iterator = classDeclaration.scope.filteredIterator<T>(
+ : _iterator = classDeclaration.nameSpace.filteredIterator<T>(
parent: classDeclaration,
includeDuplicates: includeDuplicates,
includeAugmentations: false);
@@ -261,7 +261,7 @@
}
if (augmentationBuilders != null && augmentationBuilders!.moveNext()) {
D augmentationClassDeclaration = augmentationBuilders!.current;
- _iterator = augmentationClassDeclaration.scope.filteredIterator<T>(
+ _iterator = augmentationClassDeclaration.nameSpace.filteredIterator<T>(
parent: augmentationClassDeclaration,
includeDuplicates: includeDuplicates,
includeAugmentations: false);
@@ -299,7 +299,7 @@
ClassDeclarationMemberNameIterator._(
D classDeclaration, this.augmentationBuilders,
{required this.includeDuplicates})
- : _iterator = classDeclaration.scope.filteredNameIterator<T>(
+ : _iterator = classDeclaration.nameSpace.filteredNameIterator<T>(
parent: classDeclaration,
includeDuplicates: includeDuplicates,
includeAugmentations: false);
@@ -313,10 +313,11 @@
}
if (augmentationBuilders != null && augmentationBuilders!.moveNext()) {
D augmentationClassDeclaration = augmentationBuilders!.current;
- _iterator = augmentationClassDeclaration.scope.filteredNameIterator<T>(
- parent: augmentationClassDeclaration,
- includeDuplicates: includeDuplicates,
- includeAugmentations: false);
+ _iterator = augmentationClassDeclaration.nameSpace
+ .filteredNameIterator<T>(
+ parent: augmentationClassDeclaration,
+ includeDuplicates: includeDuplicates,
+ includeAugmentations: false);
}
if (_iterator != null) {
if (_iterator!.moveNext()) {
diff --git a/pkg/front_end/lib/src/source/source_builder_mixins.dart b/pkg/front_end/lib/src/source/source_builder_mixins.dart
index 7ed1776..48d01ec 100644
--- a/pkg/front_end/lib/src/source/source_builder_mixins.dart
+++ b/pkg/front_end/lib/src/source/source_builder_mixins.dart
@@ -48,7 +48,7 @@
/// library.
void buildInternal(LibraryBuilder coreLibrary,
{required bool addMembersToLibrary}) {
- SourceLibraryBuilder.checkMemberConflicts(libraryBuilder, scope,
+ SourceLibraryBuilder.checkMemberConflicts(libraryBuilder, nameSpace,
checkForInstanceVsStaticConflict: true,
checkForMethodVsSetterConflict: true);
@@ -94,13 +94,13 @@
}
}
- scope.unfilteredNameIterator.forEach(buildBuilders);
+ nameSpace.unfilteredNameIterator.forEach(buildBuilders);
constructorScope.unfilteredNameIterator.forEach(buildBuilders);
}
int buildBodyNodes({required bool addMembersToLibrary}) {
int count = 0;
- Iterator<SourceMemberBuilder> iterator = scope
+ Iterator<SourceMemberBuilder> iterator = nameSpace
.filteredIterator<SourceMemberBuilder>(
parent: this, includeDuplicates: false, includeAugmentations: true)
.join(constructorScope.filteredIterator<SourceMemberBuilder>(
@@ -132,7 +132,7 @@
libraryBuilder.checkTypesInFunctionBuilder(builder, typeEnvironment);
if (builder.isGetter) {
Builder? setterDeclaration =
- scope.lookupLocalMember(builder.name, setter: true);
+ nameSpace.lookupLocalMember(builder.name, setter: true);
if (setterDeclaration != null) {
libraryBuilder.checkGetterSetterTypes(builder,
setterDeclaration as ProcedureBuilder, typeEnvironment);
@@ -181,7 +181,7 @@
}
}
- Iterator<SourceMemberBuilder> iterator = scope.filteredIterator(
+ Iterator<SourceMemberBuilder> iterator = nameSpace.filteredIterator(
parent: this, includeDuplicates: false, includeAugmentations: true);
while (iterator.moveNext()) {
iterator.current.buildOutlineExpressions(
@@ -296,7 +296,7 @@
while (iterator.moveNext()) {
String name = iterator.name;
MemberBuilder constructor = iterator.current;
- Builder? member = scope.lookupLocalMember(name, setter: false);
+ Builder? member = nameSpace.lookupLocalMember(name, setter: false);
if (member == null) continue;
if (!member.isStatic) continue;
// TODO(ahe): Revisit these messages. It seems like the last two should
@@ -317,7 +317,7 @@
}
}
- scope.forEachLocalSetter((String name, Builder setter) {
+ nameSpace.forEachLocalSetter((String name, Builder setter) {
Builder? constructor = constructorScope.lookupLocalMember(name);
if (constructor == null || !setter.isStatic) return;
// Coverage-ignore-block(suite): Not run.
diff --git a/pkg/front_end/lib/src/source/source_class_builder.dart b/pkg/front_end/lib/src/source/source_class_builder.dart
index d6c5fa8..d1d0849 100644
--- a/pkg/front_end/lib/src/source/source_class_builder.dart
+++ b/pkg/front_end/lib/src/source/source_class_builder.dart
@@ -91,6 +91,12 @@
final Class actualCls;
@override
+ final Scope scope;
+
+ @override
+ final ConstructorScope constructorScope;
+
+ @override
List<NominalVariableBuilder>? typeVariables;
/// The scope in which the [typeParameters] are declared.
@@ -166,8 +172,8 @@
this.interfaceBuilders,
this.onTypes,
this.typeParameterScope,
- Scope scope,
- ConstructorScope constructors,
+ this.scope,
+ this.constructorScope,
SourceLibraryBuilder parent,
this.constructorReferences,
int startCharOffset,
@@ -188,11 +194,13 @@
startCharOffset, nameOffset, charEndOffset, indexedContainer,
isAugmentation: isAugmentation),
isAugmentation = isAugmentation,
- super(metadata, modifiers, name, scope, constructors, parent,
- nameOffset) {
+ super(metadata, modifiers, name, parent, nameOffset) {
actualCls.hasConstConstructor = declaresConstConstructor;
}
+ @override
+ NameSpace get nameSpace => scope;
+
MergedClassMemberScope get mergedScope => _mergedScope ??= isAugmenting
?
// Coverage-ignore(suite): Not run.
@@ -215,7 +223,7 @@
super.libraryBuilder as SourceLibraryBuilder;
Class build(LibraryBuilder coreLibrary) {
- SourceLibraryBuilder.checkMemberConflicts(libraryBuilder, scope,
+ SourceLibraryBuilder.checkMemberConflicts(libraryBuilder, nameSpace,
// These checks are performed as part of the class hierarchy
// computation.
checkForInstanceVsStaticConflict: false,
@@ -253,7 +261,7 @@
}
}
- scope.unfilteredIterator.forEach(buildBuilders);
+ nameSpace.unfilteredIterator.forEach(buildBuilders);
constructorScope.unfilteredIterator.forEach(buildBuilders);
if (supertypeBuilder != null) {
supertypeBuilder = _checkSupertype(supertypeBuilder!);
@@ -396,7 +404,7 @@
.filteredIterator(
parent: this, includeDuplicates: false, includeAugmentations: true)
.forEach(build);
- scope
+ nameSpace
.filteredIterator(
parent: this, includeDuplicates: false, includeAugmentations: true)
.forEach(build);
@@ -652,14 +660,14 @@
hierarchyBuilder.getNodeFromClass(interfaceClass);
for (String restrictedMemberName in restrictedNames) {
// TODO(johnniwinther): Handle injected members.
- Builder? member = superclassHierarchyNode.classBuilder.scope
+ Builder? member = superclassHierarchyNode.classBuilder.nameSpace
.lookupLocalMember(restrictedMemberName, setter: false);
if (member is MemberBuilder && !member.isAbstract) {
restrictedMembersInSuperclasses[restrictedMemberName] ??=
superclassHierarchyNode.classBuilder;
}
}
- Builder? member = superclassHierarchyNode.classBuilder.scope
+ Builder? member = superclassHierarchyNode.classBuilder.nameSpace
.lookupLocalMember("values", setter: false);
if (member is MemberBuilder && !member.isAbstract) {
superclassDeclaringConcreteValues ??= member.classBuilder;
@@ -680,7 +688,7 @@
if (hasEnumSuperinterface && cls != underscoreEnumClass) {
// Instance members named `values` are restricted.
Builder? customValuesDeclaration =
- scope.lookupLocalMember("values", setter: false);
+ nameSpace.lookupLocalMember("values", setter: false);
if (customValuesDeclaration != null &&
!customValuesDeclaration.isStatic) {
// Retrieve the earliest declaration for error reporting.
@@ -696,7 +704,7 @@
fileUri);
}
customValuesDeclaration =
- scope.lookupLocalMember("values", setter: true);
+ nameSpace.lookupLocalMember("values", setter: true);
if (customValuesDeclaration != null &&
!customValuesDeclaration.isStatic) {
// Retrieve the earliest declaration for error reporting.
@@ -724,7 +732,7 @@
// operator == are restricted.
for (String restrictedMemberName in restrictedNames) {
Builder? member =
- scope.lookupLocalMember(restrictedMemberName, setter: false);
+ nameSpace.lookupLocalMember(restrictedMemberName, setter: false);
if (member is MemberBuilder && !member.isAbstract) {
libraryBuilder.addProblem(
templateEnumImplementerContainsRestrictedInstanceDeclaration
@@ -1165,7 +1173,7 @@
}
}
- scope
+ nameSpace
.filteredIterator(
parent: this, includeDuplicates: true, includeAugmentations: true)
.forEach(buildMembers);
diff --git a/pkg/front_end/lib/src/source/source_extension_builder.dart b/pkg/front_end/lib/src/source/source_extension_builder.dart
index 4e107b5..1dbe80f 100644
--- a/pkg/front_end/lib/src/source/source_extension_builder.dart
+++ b/pkg/front_end/lib/src/source/source_extension_builder.dart
@@ -33,6 +33,12 @@
MergedClassMemberScope? _mergedScope;
@override
+ final Scope scope;
+
+ @override
+ final ConstructorScope constructorScope;
+
+ @override
final List<NominalVariableBuilder>? typeParameters;
@override
@@ -50,7 +56,7 @@
this.typeParameters,
this.onType,
this.typeParameterScope,
- Scope scope,
+ this.scope,
SourceLibraryBuilder parent,
int startOffset,
int nameOffset,
@@ -65,12 +71,15 @@
..isExtensionTypeDeclaration = false
..isUnnamedExtension = extensionName.isUnnamedExtension
..fileOffset = nameOffset,
- super(metadata, modifiers, extensionName.name, parent, nameOffset,
- scope) {
+ constructorScope = new ConstructorScope(extensionName.name, const {}),
+ super(metadata, modifiers, extensionName.name, parent, nameOffset) {
extensionName.attachExtension(_extension);
}
@override
+ NameSpace get nameSpace => scope;
+
+ @override
SourceLibraryBuilder get libraryBuilder =>
super.libraryBuilder as SourceLibraryBuilder;
@@ -197,16 +206,16 @@
// TODO(johnniwinther): Check that type parameters and on-type match
// with origin declaration.
- scope.forEachLocalMember((String name, Builder member) {
+ nameSpace.forEachLocalMember((String name, Builder member) {
Builder? memberAugmentation =
- augmentation.scope.lookupLocalMember(name, setter: false);
+ augmentation.nameSpace.lookupLocalMember(name, setter: false);
if (memberAugmentation != null) {
member.applyAugmentation(memberAugmentation);
}
});
- scope.forEachLocalSetter((String name, Builder member) {
+ nameSpace.forEachLocalSetter((String name, Builder member) {
Builder? memberAugmentation =
- augmentation.scope.lookupLocalMember(name, setter: true);
+ augmentation.nameSpace.lookupLocalMember(name, setter: true);
if (memberAugmentation != null) {
member.applyAugmentation(memberAugmentation);
}
diff --git a/pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart b/pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart
index 81d9c42..e6512c9 100644
--- a/pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart
+++ b/pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart
@@ -56,6 +56,12 @@
MergedClassMemberScope? _mergedScope;
@override
+ final Scope scope;
+
+ @override
+ final ConstructorScope constructorScope;
+
+ @override
final List<NominalVariableBuilder>? typeParameters;
@override
@@ -75,8 +81,8 @@
this.typeParameters,
this.interfaceBuilders,
this.typeParameterScope,
- Scope scope,
- ConstructorScope constructorScope,
+ this.scope,
+ this.constructorScope,
SourceLibraryBuilder parent,
this.constructorReferences,
int startOffset,
@@ -91,8 +97,10 @@
typeParameters),
reference: indexedContainer?.reference)
..fileOffset = nameOffset,
- super(metadata, modifiers, name, parent, nameOffset, scope,
- constructorScope);
+ super(metadata, modifiers, name, parent, nameOffset);
+
+ @override
+ NameSpace get nameSpace => scope;
@override
SourceLibraryBuilder get libraryBuilder =>
@@ -686,16 +694,16 @@
void applyAugmentation(Builder augmentation) {
if (augmentation is SourceExtensionTypeDeclarationBuilder) {
augmentation._origin = this;
- scope.forEachLocalMember((String name, Builder member) {
+ nameSpace.forEachLocalMember((String name, Builder member) {
Builder? memberAugmentation =
- augmentation.scope.lookupLocalMember(name, setter: false);
+ augmentation.nameSpace.lookupLocalMember(name, setter: false);
if (memberAugmentation != null) {
member.applyAugmentation(memberAugmentation);
}
});
- scope.forEachLocalSetter((String name, Builder member) {
+ nameSpace.forEachLocalSetter((String name, Builder member) {
Builder? memberAugmentation =
- augmentation.scope.lookupLocalMember(name, setter: true);
+ augmentation.nameSpace.lookupLocalMember(name, setter: true);
if (memberAugmentation != null) {
member.applyAugmentation(memberAugmentation);
}
diff --git a/pkg/front_end/lib/src/source/source_library_builder.dart b/pkg/front_end/lib/src/source/source_library_builder.dart
index 1ce347c3..317d20f5e 100644
--- a/pkg/front_end/lib/src/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/source/source_library_builder.dart
@@ -384,6 +384,10 @@
@override
Scope get scope => _scope;
+
+ @override
+ Scope get nameSpace => _scope;
+
@override
Scope get exportScope => _exportScope;
@@ -503,8 +507,8 @@
return compilationUnit.addBuilder(name, declaration, charOffset);
}
- /// Checks [scope] for conflicts between setters and non-setters and reports
- /// them in [sourceLibraryBuilder].
+ /// Checks [nameSpace] for conflicts between setters and non-setters and
+ /// reports them in [sourceLibraryBuilder].
///
/// If [checkForInstanceVsStaticConflict] is `true`, conflicts between
/// instance and static members of the same name are reported.
@@ -512,11 +516,11 @@
/// If [checkForMethodVsSetterConflict] is `true`, conflicts between
/// methods and setters of the same name are reported.
static void checkMemberConflicts(
- SourceLibraryBuilder sourceLibraryBuilder, Scope scope,
+ SourceLibraryBuilder sourceLibraryBuilder, NameSpace nameSpace,
{required bool checkForInstanceVsStaticConflict,
required bool checkForMethodVsSetterConflict}) {
- scope.forEachLocalSetter((String name, MemberBuilder setter) {
- Builder? getable = scope.lookupLocalMember(name, setter: false);
+ nameSpace.forEachLocalSetter((String name, MemberBuilder setter) {
+ Builder? getable = nameSpace.lookupLocalMember(name, setter: false);
if (getable == null) {
// Setter without getter.
return;
@@ -646,7 +650,7 @@
}
void buildInitialScopes() {
- NameIterator iterator = scope.filteredNameIterator(
+ NameIterator iterator = nameSpace.filteredNameIterator(
includeDuplicates: false, includeAugmentations: false);
UriOffset uriOffset = new UriOffset(fileUri, TreeNode.noOffset);
while (iterator.moveNext()) {
@@ -876,7 +880,7 @@
localMembersIteratorOfType();
while (extensionIterator.moveNext()) {
SourceExtensionBuilder extension_ = extensionIterator.current;
- for (Builder member in extension_.scope.localMembers) {
+ for (Builder member in extension_.nameSpace.localMembers) {
if (member is SourceProcedureBuilder &&
!member.isStatic &&
member.isGetter) {
@@ -899,7 +903,7 @@
individualPropertyReasons[representationGetter] =
PropertyNonPromotabilityReason.isNotPrivate;
}
- for (Builder member in extensionType.scope.localMembers) {
+ for (Builder member in extensionType.nameSpace.localMembers) {
if (member is SourceProcedureBuilder &&
!member.isStatic &&
member.isGetter) {
@@ -948,18 +952,18 @@
@override
// Coverage-ignore(suite): Not run.
void becomeCoreLibrary() {
- if (scope.lookupLocalMember("dynamic", setter: false) == null) {
+ if (nameSpace.lookupLocalMember("dynamic", setter: false) == null) {
addBuilder("dynamic",
new DynamicTypeDeclarationBuilder(const DynamicType(), this, -1), -1);
}
- if (scope.lookupLocalMember("Never", setter: false) == null) {
+ if (nameSpace.lookupLocalMember("Never", setter: false) == null) {
addBuilder(
"Never",
new NeverTypeDeclarationBuilder(
const NeverType.nonNullable(), this, -1),
-1);
}
- assert(scope.lookupLocalMember("Null", setter: false) != null,
+ assert(nameSpace.lookupLocalMember("Null", setter: false) != null,
"No class 'Null' found in dart:core.");
}
@@ -2158,7 +2162,7 @@
declaration.checkTypes(this, typeEnvironment);
if (declaration.isGetter) {
Builder? setterDeclaration =
- scope.lookupLocalMember(declaration.name, setter: true);
+ nameSpace.lookupLocalMember(declaration.name, setter: true);
if (setterDeclaration != null) {
checkGetterSetterTypes(declaration,
setterDeclaration as ProcedureBuilder, typeEnvironment);
@@ -2750,7 +2754,7 @@
SourceLibraryBuilderMemberNameIterator._(
SourceLibraryBuilder libraryBuilder, this.augmentationBuilders,
{required this.includeDuplicates})
- : _iterator = libraryBuilder.scope.filteredNameIterator<T>(
+ : _iterator = libraryBuilder.nameSpace.filteredNameIterator<T>(
parent: libraryBuilder,
includeDuplicates: includeDuplicates,
includeAugmentations: false);
@@ -2765,7 +2769,7 @@
if (augmentationBuilders != null && augmentationBuilders!.moveNext()) {
SourceLibraryBuilder augmentationLibraryBuilder =
augmentationBuilders!.current;
- _iterator = augmentationLibraryBuilder.scope.filteredNameIterator<T>(
+ _iterator = augmentationLibraryBuilder.nameSpace.filteredNameIterator<T>(
parent: augmentationLibraryBuilder,
includeDuplicates: includeDuplicates,
includeAugmentations: false);
diff --git a/pkg/front_end/lib/src/testing/id_testing_utils.dart b/pkg/front_end/lib/src/testing/id_testing_utils.dart
index a711e0d..f896aae 100644
--- a/pkg/front_end/lib/src/testing/id_testing_utils.dart
+++ b/pkg/front_end/lib/src/testing/id_testing_utils.dart
@@ -140,7 +140,7 @@
LibraryBuilder libraryBuilder = lookupLibraryBuilder(
compilerResult, cls.enclosingLibrary,
required: required)!;
- ClassBuilder? clsBuilder = libraryBuilder.scope
+ ClassBuilder? clsBuilder = libraryBuilder.nameSpace
.lookupLocalMember(cls.name, setter: false) as ClassBuilder?;
if (clsBuilder == null && required) {
throw new ArgumentError("ClassBuilder for $cls not found.");
@@ -155,7 +155,7 @@
compilerResult, extension.enclosingLibrary,
required: required)!;
ExtensionBuilder? extensionBuilder;
- libraryBuilder.scope.forEachLocalExtension((ExtensionBuilder builder) {
+ libraryBuilder.nameSpace.forEachLocalExtension((ExtensionBuilder builder) {
if (builder.extension == extension) {
extensionBuilder = builder;
}
@@ -179,7 +179,7 @@
memberBuilder =
classBuilder.constructorScope.lookupLocalMember(memberName);
} else {
- memberBuilder = classBuilder.scope.lookupLocalMember(memberName,
+ memberBuilder = classBuilder.nameSpace.lookupLocalMember(memberName,
setter: member is Procedure && member.isSetter) as MemberBuilder?;
}
}
@@ -218,7 +218,7 @@
LibraryBuilder libraryBuilder = lookupLibraryBuilder(
compilerResult, member.enclosingLibrary,
required: required)!;
- memberBuilder = libraryBuilder.scope.lookupLocalMember(member.name.text,
+ memberBuilder = libraryBuilder.nameSpace.lookupLocalMember(member.name.text,
setter: member is Procedure && member.isSetter) as MemberBuilder?;
}
if (memberBuilder == null && required) {
@@ -240,7 +240,7 @@
lookupExtensionBuilder(compilerResult, extension, required: required);
MemberBuilder? memberBuilder;
if (extensionBuilder != null) {
- memberBuilder = extensionBuilder.scope
+ memberBuilder = extensionBuilder.nameSpace
.lookupLocalMember(memberName, setter: isSetter) as MemberBuilder?;
}
if (memberBuilder == null && required) {
diff --git a/pkg/front_end/test/coverage_suite_expected.dart b/pkg/front_end/test/coverage_suite_expected.dart
index 261dd04..e0fbba4 100644
--- a/pkg/front_end/test/coverage_suite_expected.dart
+++ b/pkg/front_end/test/coverage_suite_expected.dart
@@ -163,10 +163,10 @@
hitCount: 25,
missCount: 0,
),
- // 84.0%.
+ // 86.0655737704918%.
"package:front_end/src/base/local_scope.dart": (
hitCount: 105,
- missCount: 20,
+ missCount: 17,
),
// 100.0%.
"package:front_end/src/base/messages.dart": (
@@ -260,7 +260,7 @@
),
// 100.0%.
"package:front_end/src/builder/extension_builder.dart": (
- hitCount: 4,
+ hitCount: 3,
missCount: 0,
),
// 100.0%.
@@ -410,12 +410,12 @@
),
// 100.0%.
"package:front_end/src/dill/dill_class_builder.dart": (
- hitCount: 169,
+ hitCount: 171,
missCount: 0,
),
// 100.0%.
"package:front_end/src/dill/dill_extension_builder.dart": (
- hitCount: 72,
+ hitCount: 76,
missCount: 0,
),
// 100.0%.
@@ -425,7 +425,7 @@
),
// 100.0%.
"package:front_end/src/dill/dill_extension_type_declaration_builder.dart": (
- hitCount: 146,
+ hitCount: 148,
missCount: 0,
),
// 100.0%.
@@ -435,7 +435,7 @@
),
// 100.0%.
"package:front_end/src/dill/dill_library_builder.dart": (
- hitCount: 336,
+ hitCount: 338,
missCount: 0,
),
// 100.0%.
@@ -708,6 +708,11 @@
hitCount: 0,
missCount: 0,
),
+ // 0.0%.
+ "package:front_end/src/macros/macro_injected_impl.dart": (
+ hitCount: 0,
+ missCount: 1,
+ ),
// 100.0%.
"package:front_end/src/macros/macro_serializer.dart": (
hitCount: 0,
@@ -780,7 +785,7 @@
),
// 100.0%.
"package:front_end/src/source/source_class_builder.dart": (
- hitCount: 1211,
+ hitCount: 1213,
missCount: 0,
),
// 99.4729907773386%.
@@ -800,18 +805,18 @@
),
// 100.0%.
"package:front_end/src/source/source_extension_builder.dart": (
- hitCount: 68,
+ hitCount: 72,
missCount: 0,
),
// 100.0%.
"package:front_end/src/source/source_extension_type_declaration_builder.dart":
(
- hitCount: 424,
+ hitCount: 426,
missCount: 0,
),
// 100.0%.
"package:front_end/src/source/source_factory_builder.dart": (
- hitCount: 581,
+ hitCount: 570,
missCount: 0,
),
// 100.0%.
@@ -826,7 +831,7 @@
),
// 100.0%.
"package:front_end/src/source/source_library_builder.dart": (
- hitCount: 1404,
+ hitCount: 1406,
missCount: 0,
),
// 100.0%.
@@ -891,7 +896,7 @@
),
// 100.0%.
"package:front_end/src/type_inference/inference_visitor.dart": (
- hitCount: 7796,
+ hitCount: 7798,
missCount: 0,
),
// 100.0%.
diff --git a/pkg/front_end/test/dill_type_alias_builder_type_calc_test.dart b/pkg/front_end/test/dill_type_alias_builder_type_calc_test.dart
index 1b2b0bc..6081dd6 100644
--- a/pkg/front_end/test/dill_type_alias_builder_type_calc_test.dart
+++ b/pkg/front_end/test/dill_type_alias_builder_type_calc_test.dart
@@ -39,7 +39,7 @@
];
for (LibraryBuilder builder in builders) {
if (builder is! DillLibraryBuilder) continue;
- builder.scope.forEachLocalMember((name, member) {
+ builder.nameSpace.forEachLocalMember((name, member) {
if (member is! DillTypeAliasBuilder) return;
try {
member.type;