Version 3.6.0-68.0.dev Merge 0b965a1ac8370935ccefa7ca11076b79a2a73037 into dev
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/local_scope.dart b/pkg/front_end/lib/src/base/local_scope.dart index 7210c70..8db0333 100644 --- a/pkg/front_end/lib/src/base/local_scope.dart +++ b/pkg/front_end/lib/src/base/local_scope.dart
@@ -3,7 +3,6 @@ // BSD-style license that can be found in the LICENSE file. import '../builder/builder.dart'; -import '../builder/member_builder.dart'; import '../kernel/body_builder.dart' show JumpTarget; import 'scope.dart'; @@ -43,20 +42,17 @@ void addLocalMember(String name, Builder member, {required bool setter}); void declareLabel(String name, JumpTarget target); + JumpTarget? lookupLabel(String name); @override Builder? lookup(String name, int charOffset, Uri fileUri); + @override Builder? lookupSetter(String name, int charOffset, Uri uri); Map<String, List<int>>? get usedNames; - Iterator<T> filteredIterator<T extends Builder>( - {Builder? parent, - required bool includeDuplicates, - required bool includeAugmentations}); - SwitchScope get switchScope; } @@ -85,24 +81,13 @@ } } -mixin LocalScopeMixin implements LocalScope { - LocalScope? get _parent; +mixin LocalScopeMixin implements LookupScopeMixin, LocalScope { + LookupScope? get _parent; Map<String, Builder>? get _local; - String get classNameOrDebugName; - @override - Iterator<T> filteredIterator<T extends Builder>( - {Builder? parent, - required bool includeDuplicates, - required bool includeAugmentations}) { - return new FilteredIterator<T>( - new ScopeIterator.fromIterators(_local?.values.iterator, null, null), - parent: parent, - includeDuplicates: includeDuplicates, - includeAugmentations: includeAugmentations); - } + String get classNameOrDebugName; @override Iterable<Builder> get localMembers => _local?.values ?? const {}; @@ -126,43 +111,15 @@ @override Builder? lookupSetter(String name, int charOffset, Uri fileUri) { recordUse(name, charOffset); - Builder? builder; - if (_local != null) { - builder = lookupIn(name, charOffset, fileUri, _local!); - if (builder != null && !builder.hasProblem) { - return new AccessErrorBuilder(name, builder, charOffset, fileUri); - } - } + Builder? builder = lookupSetterIn(name, charOffset, fileUri, _local); return builder ?? _parent?.lookupSetter(name, charOffset, fileUri); } void recordUse(String name, int charOffset) {} - - Builder? lookupIn( - String name, int charOffset, Uri fileUri, Map<String, Builder> map) { - Builder? builder = map[name]; - if (builder == null) return null; - if (builder.next != null) { - return new AmbiguousBuilder( - name.isEmpty - ? - // Coverage-ignore(suite): Not run. - classNameOrDebugName - : name, - builder, - charOffset, - fileUri); - } else if (builder is MemberBuilder && builder.isConflictingSetter) { - // TODO(johnniwinther): Use a variant of [AmbiguousBuilder] for this case. - return null; - } else { - return builder; - } - } } final class LocalScopeImpl extends BaseLocalScope - with LocalScopeMixin, SwitchScopeMixin + with LookupScopeMixin, LocalScopeMixin, SwitchScopeMixin implements LocalScope, SwitchScope { @override final LocalScope? _parent; @@ -304,7 +261,7 @@ } final class FixedLocalScope extends BaseLocalScope - with ImmutableLocalScopeMixin, LocalScopeMixin { + with LookupScopeMixin, ImmutableLocalScopeMixin, LocalScopeMixin { @override final LocalScope? _parent; @override @@ -334,28 +291,42 @@ "$runtimeType(${kind}, $classNameOrDebugName, ${_local?.keys})"; } -final class EnclosingLocalScope extends BaseLocalScope - with ImmutableLocalScopeMixin { - final Scope _scope; +final class FormalParameterScope extends BaseLocalScope + with LookupScopeMixin, ImmutableLocalScopeMixin, LocalScopeMixin { + @override + final LookupScope? _parent; + @override + final Map<String, Builder>? _local; - EnclosingLocalScope(this._scope); + FormalParameterScope({LookupScope? parent, Map<String, Builder>? local}) + : _parent = parent, + _local = local; @override - Iterator<T> filteredIterator<T extends Builder>( - {Builder? parent, - required bool includeDuplicates, - required bool includeAugmentations}) { - return _scope.filteredIterator( - parent: parent, - includeDuplicates: includeDuplicates, - includeAugmentations: includeAugmentations); - } + ScopeKind get kind => ScopeKind.formals; + + @override + JumpTarget? lookupLabel(String name) => null; + + @override + String get classNameOrDebugName => "formal parameter"; + + @override + String toString() => + "$runtimeType(${kind}, $classNameOrDebugName, ${_local?.keys})"; +} + +final class EnclosingLocalScope extends BaseLocalScope + with ImmutableLocalScopeMixin { + final LookupScope _scope; + + EnclosingLocalScope(this._scope); @override ScopeKind get kind => _scope.kind; @override - Iterable<Builder> get localMembers => _scope.localMembers; + Iterable<Builder> get localMembers => const []; @override Builder? lookup(String name, int charOffset, Uri fileUri) { @@ -366,9 +337,7 @@ JumpTarget? lookupLabel(String name) => null; @override - Builder? lookupLocalMember(String name, {required bool setter}) { - return _scope.lookupLocalMember(name, setter: setter); - } + Builder? lookupLocalMember(String name, {required bool setter}) => null; @override Builder? lookupSetter(String name, int charOffset, Uri uri) {
diff --git a/pkg/front_end/lib/src/base/scope.dart b/pkg/front_end/lib/src/base/scope.dart index 3ab8263..946a340 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'; @@ -27,7 +29,6 @@ import '../source/source_library_builder.dart'; import '../source/source_member_builder.dart'; import '../util/helpers.dart' show DelayedActionPerformer; -import 'local_scope.dart'; import 'messages.dart'; import 'uri_offset.dart'; @@ -112,7 +113,71 @@ abstract class LookupScope { ScopeKind get kind; Builder? lookup(String name, int charOffset, Uri fileUri); - Builder? lookupSetter(String name, int charOffset, Uri uri); + Builder? lookupSetter(String name, int charOffset, Uri fileUri); +} + +mixin LookupScopeMixin implements LookupScope { + String get classNameOrDebugName; + + Builder? lookupIn( + String name, int charOffset, Uri fileUri, Map<String, Builder> map) { + Builder? builder = map[name]; + if (builder == null) return null; + if (builder.next != null) { + return new AmbiguousBuilder( + name.isEmpty + ? + // Coverage-ignore(suite): Not run. + classNameOrDebugName + : name, + builder, + charOffset, + fileUri); + } else if (builder is MemberBuilder && builder.isConflictingSetter) { + // TODO(johnniwinther): Use a variant of [AmbiguousBuilder] for this case. + return null; + } else { + return builder; + } + } + + Builder? lookupSetterIn( + String name, int charOffset, Uri fileUri, Map<String, Builder>? map) { + Builder? builder; + if (map != null) { + builder = lookupIn(name, charOffset, fileUri, map); + if (builder != null && !builder.hasProblem) { + return new AccessErrorBuilder(name, builder, charOffset, fileUri); + } + } + return builder; + } +} + +class TypeParameterScope with LookupScopeMixin { + final LookupScope _parent; + final Map<String, Builder> _typeParameters; + + TypeParameterScope(this._parent, this._typeParameters); + + @override + ScopeKind get kind => ScopeKind.typeParameters; + + @override + Builder? lookup(String name, int charOffset, Uri fileUri) { + return lookupIn(name, charOffset, fileUri, _typeParameters) ?? + _parent.lookup(name, charOffset, fileUri); + } + + @override + Builder? lookupSetter(String name, int charOffset, Uri fileUri) { + Builder? builder = + lookupSetterIn(name, charOffset, fileUri, _typeParameters); + return builder ?? _parent.lookupSetter(name, charOffset, fileUri); + } + + @override + String get classNameOrDebugName => "type parameter"; } abstract class ParentScope { @@ -178,7 +243,64 @@ 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 name space, + /// including duplicate members mapped to the same name. + Iterator<Builder> get unfilteredIterator; + + /// Returns an iterator of all members and setters mapped in this name space, + /// including duplicate members mapped to the same name. + /// + /// 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 name + /// space. + /// + /// 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 name + /// space. + /// + /// 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; @@ -222,12 +344,6 @@ isModifiable: isModifiable, local: local); - LocalScope toLocalScope() => new EnclosingLocalScope(this); - - // TODO(johnniwinther): Remove this. - @override - Scope? get parent => _parent as Scope?; - /// Returns an iterator of all members and setters mapped in this scope, /// including duplicate members mapped to the same name. ///
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/formal_parameter_builder.dart b/pkg/front_end/lib/src/builder/formal_parameter_builder.dart index c1ffe2c..8128c30 100644 --- a/pkg/front_end/lib/src/builder/formal_parameter_builder.dart +++ b/pkg/front_end/lib/src/builder/formal_parameter_builder.dart
@@ -13,7 +13,7 @@ import '../base/constant_context.dart' show ConstantContext; import '../base/modifier.dart'; -import '../base/scope.dart' show Scope; +import '../base/scope.dart' show LookupScope; import '../kernel/body_builder.dart' show BodyBuilder; import '../kernel/body_builder_context.dart'; import '../kernel/internal_ast.dart' show VariableDeclarationImpl; @@ -279,7 +279,7 @@ if (initializerToken != null) { final DeclarationBuilder declarationBuilder = parent!.parent as DeclarationBuilder; - Scope scope = declarationBuilder.scope; + LookupScope scope = declarationBuilder.scope; BodyBuilderContext bodyBuilderContext = new ParameterBodyBuilderContext( this, inOutlineBuildingPhase: true,
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/metadata_builder.dart b/pkg/front_end/lib/src/builder/metadata_builder.dart index aef335d..2e7c2da 100644 --- a/pkg/front_end/lib/src/builder/metadata_builder.dart +++ b/pkg/front_end/lib/src/builder/metadata_builder.dart
@@ -8,7 +8,7 @@ import 'package:kernel/ast.dart'; import 'package:kernel/clone.dart'; -import '../base/scope.dart' show Scope; +import '../base/scope.dart' show LookupScope; import '../kernel/body_builder.dart' show BodyBuilder; import '../kernel/body_builder_context.dart'; import '../source/source_library_builder.dart' show SourceLibraryBuilder; @@ -41,7 +41,7 @@ BodyBuilderContext bodyBuilderContext, SourceLibraryBuilder library, Uri fileUri, - Scope scope, + LookupScope scope, {bool createFileUriExpression = false}) { if (metadata == null) return;
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/builder/type_variable_builder.dart b/pkg/front_end/lib/src/builder/type_variable_builder.dart index 9694a88..eb4e364 100644 --- a/pkg/front_end/lib/src/builder/type_variable_builder.dart +++ b/pkg/front_end/lib/src/builder/type_variable_builder.dart
@@ -401,7 +401,7 @@ BodyBuilderContext bodyBuilderContext, ClassHierarchy classHierarchy, List<DelayedActionPerformer> delayedActionPerformers, - Scope scope) { + LookupScope scope) { MetadataBuilder.buildAnnotations(parameter, metadata, bodyBuilderContext, libraryBuilder, fileUri!, scope); }
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/body_builder.dart b/pkg/front_end/lib/src/kernel/body_builder.dart index 8fc1cd6..e68eb6a 100644 --- a/pkg/front_end/lib/src/kernel/body_builder.dart +++ b/pkg/front_end/lib/src/kernel/body_builder.dart
@@ -446,12 +446,11 @@ context.needsImplicitSuperInitializer(coreTypes), benchmarker = libraryBuilder.loader.target.benchmarker, _localScopes = new LocalStack([enclosingScope]) { - Iterator<VariableBuilder>? iterator = - formalParameterScope?.filteredIterator<VariableBuilder>( - includeDuplicates: false, includeAugmentations: false); - if (iterator != null) { - while (iterator.moveNext()) { - typeInferrer.assignedVariables.declare(iterator.current.variable!); + if (formalParameterScope != null) { + for (Builder builder in formalParameterScope!.localMembers) { + if (builder is VariableBuilder) { + typeInferrer.assignedVariables.declare(builder.variable!); + } } } if (thisVariable != null && context.isConstructor) { @@ -464,13 +463,13 @@ BodyBuilder.forField( SourceLibraryBuilder libraryBuilder, BodyBuilderContext bodyBuilderContext, - Scope enclosingScope, + LookupScope enclosingScope, TypeInferrer typeInferrer, Uri uri) : this( libraryBuilder: libraryBuilder, context: bodyBuilderContext, - enclosingScope: enclosingScope.toLocalScope(), + enclosingScope: new EnclosingLocalScope(enclosingScope), formalParameterScope: null, hierarchy: libraryBuilder.loader.hierarchy, coreTypes: libraryBuilder.loader.coreTypes, @@ -479,12 +478,12 @@ typeInferrer: typeInferrer); BodyBuilder.forOutlineExpression(SourceLibraryBuilder library, - BodyBuilderContext bodyBuilderContext, Scope scope, Uri fileUri, + BodyBuilderContext bodyBuilderContext, LookupScope scope, Uri fileUri, {LocalScope? formalParameterScope}) : this( libraryBuilder: library, context: bodyBuilderContext, - enclosingScope: scope.toLocalScope(), + enclosingScope: new EnclosingLocalScope(scope), formalParameterScope: formalParameterScope, hierarchy: library.loader.hierarchy, coreTypes: library.loader.coreTypes,
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/diet_listener.dart b/pkg/front_end/lib/src/source/diet_listener.dart index 8e35f74..6669d49 100644 --- a/pkg/front_end/lib/src/source/diet_listener.dart +++ b/pkg/front_end/lib/src/source/diet_listener.dart
@@ -27,6 +27,7 @@ import '../base/identifiers.dart' show Identifier, OperatorIdentifier, QualifiedName, SimpleIdentifier; import '../base/ignored_parser_errors.dart' show isIgnoredParserError; +import '../base/local_scope.dart'; import '../base/problems.dart' show DebugAbort; import '../base/scope.dart'; import '../builder/builder.dart'; @@ -826,10 +827,10 @@ } BodyBuilder createListener( - BodyBuilderContext bodyBuilderContext, Scope memberScope, + BodyBuilderContext bodyBuilderContext, LookupScope memberScope, {VariableDeclaration? thisVariable, List<TypeParameter>? thisTypeParameters, - Scope? formalParameterScope, + LocalScope? formalParameterScope, InferenceDataForTesting? inferenceDataForTesting}) { _benchmarker // Coverage-ignore(suite): Not run. @@ -859,8 +860,8 @@ BodyBuilder createListenerInternal( BodyBuilderContext bodyBuilderContext, - Scope memberScope, - Scope? formalParameterScope, + LookupScope memberScope, + LocalScope? formalParameterScope, VariableDeclaration? thisVariable, List<TypeParameter>? thisTypeParameters, TypeInferrer typeInferrer, @@ -868,8 +869,8 @@ return new BodyBuilder( libraryBuilder: libraryBuilder, context: bodyBuilderContext, - enclosingScope: memberScope.toLocalScope(), - formalParameterScope: formalParameterScope?.toLocalScope(), + enclosingScope: new EnclosingLocalScope(memberScope), + formalParameterScope: formalParameterScope, hierarchy: hierarchy, coreTypes: coreTypes, thisVariable: thisVariable, @@ -883,9 +884,9 @@ {required bool inOutlineBuildingPhase, required bool inMetadata, required bool inConstFields}) { - final Scope typeParameterScope = + final LookupScope typeParameterScope = builder.computeTypeParameterScope(memberScope); - final Scope formalParameterScope = + final LocalScope formalParameterScope = builder.computeFormalParameterScope(typeParameterScope); return createListener( builder.createBodyBuilderContext(
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..a4312eb 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( @@ -241,7 +241,7 @@ List<NominalVariableBuilder>? get typeParameters; /// The scope in which the [typeParameters] are declared. - Scope get typeParameterScope; + LookupScope get typeParameterScope; @override List<DartType> buildAliasedTypeArguments(LibraryBuilder library, @@ -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..582a4a7 100644 --- a/pkg/front_end/lib/src/source/source_class_builder.dart +++ b/pkg/front_end/lib/src/source/source_class_builder.dart
@@ -91,10 +91,16 @@ final Class actualCls; @override + final Scope scope; + + @override + final ConstructorScope constructorScope; + + @override List<NominalVariableBuilder>? typeVariables; /// The scope in which the [typeParameters] are declared. - final Scope typeParameterScope; + final LookupScope typeParameterScope; @override TypeBuilder? supertypeBuilder; @@ -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_constructor_builder.dart b/pkg/front_end/lib/src/source/source_constructor_builder.dart index edfd577..f3f8bc9 100644 --- a/pkg/front_end/lib/src/source/source_constructor_builder.dart +++ b/pkg/front_end/lib/src/source/source_constructor_builder.dart
@@ -303,15 +303,14 @@ void _buildConstructorForOutline( Token? beginInitializers, List<DelayedActionPerformer> delayedActionPerformers, - Scope declarationScope) { + LookupScope declarationScope) { if (beginInitializers != null) { final LocalScope? formalParameterScope; if (isConst) { // We're going to fully build the constructor so we need scopes. formalParameterScope = computeFormalParameterInitializerScope( computeFormalParameterScope( - computeTypeParameterScope(declarationBuilder.scope)) - .toLocalScope()); + computeTypeParameterScope(declarationBuilder.scope))); } else { formalParameterScope = null; } @@ -1230,7 +1229,7 @@ if (isConst) { // For modular compilation purposes we need to include initializers // for const constructors into the outline. - Scope typeParameterScope = + LookupScope typeParameterScope = computeTypeParameterScope(extensionTypeDeclarationBuilder.scope); _buildConstructorForOutline( beginInitializers, delayedActionPerformers, typeParameterScope);
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..b7e99cf 100644 --- a/pkg/front_end/lib/src/source/source_extension_builder.dart +++ b/pkg/front_end/lib/src/source/source_extension_builder.dart
@@ -33,10 +33,16 @@ MergedClassMemberScope? _mergedScope; @override + final Scope scope; + + @override + final ConstructorScope constructorScope; + + @override final List<NominalVariableBuilder>? typeParameters; @override - final Scope typeParameterScope; + final LookupScope typeParameterScope; @override final TypeBuilder onType; @@ -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..1bcb965 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,10 +56,16 @@ MergedClassMemberScope? _mergedScope; @override + final Scope scope; + + @override + final ConstructorScope constructorScope; + + @override final List<NominalVariableBuilder>? typeParameters; @override - final Scope typeParameterScope; + final LookupScope typeParameterScope; @override List<TypeBuilder>? interfaceBuilders; @@ -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_function_builder.dart b/pkg/front_end/lib/src/source/source_function_builder.dart index ab51332..b57062b 100644 --- a/pkg/front_end/lib/src/source/source_function_builder.dart +++ b/pkg/front_end/lib/src/source/source_function_builder.dart
@@ -75,14 +75,14 @@ /// This is the formal parameter scope as specified in the Dart Programming /// Language Specification, 4th ed, section 9.2. - Scope computeFormalParameterScope(Scope parent); + LocalScope computeFormalParameterScope(LookupScope parent); LocalScope computeFormalParameterInitializerScope(LocalScope parent); /// This scope doesn't correspond to any scope specified in the Dart /// Programming Language Specification, 4th ed. It's an unspecified extension /// to support generic methods. - Scope computeTypeParameterScope(Scope parent); + LookupScope computeTypeParameterScope(LookupScope parent); FormalParameterBuilder? getFormal(Identifier identifier); @@ -206,8 +206,8 @@ bool get isAugmented; @override - Scope computeFormalParameterScope(Scope parent) { - if (formals == null) return parent; + LocalScope computeFormalParameterScope(LookupScope parent) { + if (formals == null) return new FormalParameterScope(parent: parent); Map<String, Builder> local = <String, Builder>{}; for (FormalParameterBuilder formal in formals!) { if (formal.isWildcard) { @@ -218,12 +218,7 @@ local[formal.name] = formal; } } - return new Scope( - kind: ScopeKind.formals, - local: local, - parent: parent, - debugName: "formal parameter", - isModifiable: false); + return new FormalParameterScope(local: local, parent: parent); } @override @@ -259,19 +254,14 @@ } @override - Scope computeTypeParameterScope(Scope parent) { + LookupScope computeTypeParameterScope(LookupScope parent) { if (typeVariables == null) return parent; Map<String, Builder> local = <String, Builder>{}; for (NominalVariableBuilder variable in typeVariables!) { if (variable.isWildcard) continue; local[variable.name] = variable; } - return new Scope( - kind: ScopeKind.typeParameters, - local: local, - parent: parent, - debugName: "type parameter", - isModifiable: false); + return new TypeParameterScope(parent, local); } @override
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/source/source_loader.dart b/pkg/front_end/lib/src/source/source_loader.dart index c67865d..963311e 100644 --- a/pkg/front_end/lib/src/source/source_loader.dart +++ b/pkg/front_end/lib/src/source/source_loader.dart
@@ -871,7 +871,7 @@ BodyBuilder createBodyBuilderForOutlineExpression( SourceLibraryBuilder library, BodyBuilderContext bodyBuilderContext, - Scope scope, + LookupScope scope, Uri fileUri, {LocalScope? formalParameterScope}) { return new BodyBuilder.forOutlineExpression( @@ -3078,7 +3078,7 @@ BodyBuilder createBodyBuilderForField( SourceLibraryBuilder libraryBuilder, BodyBuilderContext bodyBuilderContext, - Scope enclosingScope, + LookupScope enclosingScope, TypeInferrer typeInferrer, Uri uri) { return new BodyBuilder.forField(
diff --git a/pkg/front_end/lib/src/source/source_type_alias_builder.dart b/pkg/front_end/lib/src/source/source_type_alias_builder.dart index cc5c617..0e1eadb 100644 --- a/pkg/front_end/lib/src/source/source_type_alias_builder.dart +++ b/pkg/front_end/lib/src/source/source_type_alias_builder.dart
@@ -363,18 +363,13 @@ }); } - Scope computeTypeParameterScope(Scope parent) { + LookupScope computeTypeParameterScope(LookupScope parent) { if (typeVariables == null) return parent; Map<String, Builder> local = <String, Builder>{}; for (NominalVariableBuilder variable in typeVariables!) { local[variable.name] = variable; } - return new Scope( - kind: ScopeKind.typeParameters, - local: local, - parent: parent, - debugName: "type parameter", - isModifiable: false); + return new TypeParameterScope(parent, local); } Map<Procedure, Member>? _tearOffDependencies;
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/compiler_test_helper.dart b/pkg/front_end/test/compiler_test_helper.dart index 5068e73..9076451 100644 --- a/pkg/front_end/test/compiler_test_helper.dart +++ b/pkg/front_end/test/compiler_test_helper.dart
@@ -228,7 +228,7 @@ BodyBuilder createBodyBuilderForOutlineExpression( SourceLibraryBuilder library, BodyBuilderContext bodyBuilderContext, - Scope scope, + LookupScope scope, Uri fileUri, {LocalScope? formalParameterScope}) { return bodyBuilderCreator.createForOutlineExpression( @@ -240,7 +240,7 @@ BodyBuilder createBodyBuilderForField( SourceLibraryBuilder libraryBuilder, BodyBuilderContext bodyBuilderContext, - Scope enclosingScope, + LookupScope enclosingScope, TypeInferrer typeInferrer, Uri uri) { return bodyBuilderCreator.createForField( @@ -257,8 +257,8 @@ @override BodyBuilder createListenerInternal( BodyBuilderContext bodyBuilderContext, - Scope memberScope, - Scope? formalParameterScope, + LookupScope memberScope, + LocalScope? formalParameterScope, VariableDeclaration? extensionThis, List<TypeParameter>? extensionTypeParameters, TypeInferrer typeInferrer, @@ -281,8 +281,8 @@ typedef BodyBuilderCreatorUnnamed = BodyBuilderTest Function( {required SourceLibraryBuilder libraryBuilder, required BodyBuilderContext context, - required Scope enclosingScope, - Scope? formalParameterScope, + required LookupScope enclosingScope, + LocalScope? formalParameterScope, required ClassHierarchy hierarchy, required CoreTypes coreTypes, VariableDeclaration? thisVariable, @@ -293,14 +293,14 @@ typedef BodyBuilderCreatorForField = BodyBuilderTest Function( SourceLibraryBuilder libraryBuilder, BodyBuilderContext bodyBuilderContext, - Scope enclosingScope, + LookupScope enclosingScope, TypeInferrer typeInferrer, Uri uri); typedef BodyBuilderCreatorForOutlineExpression = BodyBuilderTest Function( SourceLibraryBuilder library, BodyBuilderContext bodyBuilderContext, - Scope scope, + LookupScope scope, Uri fileUri, {LocalScope? formalParameterScope}); @@ -321,8 +321,8 @@ BodyBuilderTest( {required SourceLibraryBuilder libraryBuilder, required BodyBuilderContext context, - required Scope enclosingScope, - Scope? formalParameterScope, + required LookupScope enclosingScope, + LocalScope? formalParameterScope, required ClassHierarchy hierarchy, required CoreTypes coreTypes, VariableDeclaration? thisVariable, @@ -332,8 +332,8 @@ : super( libraryBuilder: libraryBuilder, context: context, - enclosingScope: enclosingScope.toLocalScope(), - formalParameterScope: formalParameterScope?.toLocalScope(), + enclosingScope: new EnclosingLocalScope(enclosingScope), + formalParameterScope: formalParameterScope, hierarchy: hierarchy, coreTypes: coreTypes, thisVariable: thisVariable, @@ -345,7 +345,7 @@ BodyBuilderTest.forField( SourceLibraryBuilder libraryBuilder, BodyBuilderContext bodyBuilderContext, - Scope enclosingScope, + LookupScope enclosingScope, TypeInferrer typeInferrer, Uri uri) : super.forField(libraryBuilder, bodyBuilderContext, enclosingScope, @@ -353,7 +353,7 @@ @override BodyBuilderTest.forOutlineExpression(SourceLibraryBuilder library, - BodyBuilderContext bodyBuilderContext, Scope scope, Uri fileUri, + BodyBuilderContext bodyBuilderContext, LookupScope scope, Uri fileUri, {LocalScope? formalParameterScope}) : super.forOutlineExpression(library, bodyBuilderContext, scope, fileUri, formalParameterScope: formalParameterScope);
diff --git a/pkg/front_end/test/coverage_suite_expected.dart b/pkg/front_end/test/coverage_suite_expected.dart index 261dd04..89b7422 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%. + // 90.29126213592234%. "package:front_end/src/base/local_scope.dart": ( - hitCount: 105, - missCount: 20, + hitCount: 93, + missCount: 10, ), // 100.0%. "package:front_end/src/base/messages.dart": ( @@ -193,10 +193,10 @@ hitCount: 246, missCount: 0, ), - // 97.1141781681305%. + // 96.57282741738065%. "package:front_end/src/base/scope.dart": ( - hitCount: 774, - missCount: 23, + hitCount: 789, + missCount: 28, ), // 100.0%. "package:front_end/src/base/ticker.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%. @@ -468,9 +468,9 @@ hitCount: 0, missCount: 0, ), - // 99.38501144164759%. + // 99.38509938509938%. "package:front_end/src/kernel/body_builder.dart": ( - hitCount: 6949, + hitCount: 6950, missCount: 43, ), // 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, @@ -740,7 +745,7 @@ ), // 100.0%. "package:front_end/src/source/diet_listener.dart": ( - hitCount: 651, + hitCount: 650, missCount: 0, ), // 100.0%. @@ -780,7 +785,7 @@ ), // 100.0%. "package:front_end/src/source/source_class_builder.dart": ( - hitCount: 1211, + hitCount: 1213, missCount: 0, ), // 99.4729907773386%. @@ -790,7 +795,7 @@ ), // 100.0%. "package:front_end/src/source/source_constructor_builder.dart": ( - hitCount: 859, + hitCount: 858, missCount: 0, ), // 100.0%. @@ -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%. @@ -821,12 +826,12 @@ ), // 100.0%. "package:front_end/src/source/source_function_builder.dart": ( - hitCount: 295, + hitCount: 296, missCount: 0, ), // 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;
diff --git a/tools/VERSION b/tools/VERSION index 9e26780..1a35dfd 100644 --- a/tools/VERSION +++ b/tools/VERSION
@@ -27,5 +27,5 @@ MAJOR 3 MINOR 6 PATCH 0 -PRERELEASE 67 +PRERELEASE 68 PRERELEASE_PATCH 0