[cfe] Move parent, fileUri, and charOffset to MemberBuilder subclasses
Change-Id: I3bc30c2e12c52f6886260068f6d0f852985b7973
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/390220
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
diff --git a/pkg/front_end/lib/src/builder/member_builder.dart b/pkg/front_end/lib/src/builder/member_builder.dart
index 6bbb6eb..9b2c2a9 100644
--- a/pkg/front_end/lib/src/builder/member_builder.dart
+++ b/pkg/front_end/lib/src/builder/member_builder.dart
@@ -90,49 +90,12 @@
abstract class MemberBuilderImpl extends BuilderImpl implements MemberBuilder {
@override
- String get name;
-
- /// For top-level members, the parent is set correctly during
- /// construction. However, for class members, the parent is initially the
- /// library and updated later.
- @override
- Builder parent;
+ Uri get fileUri;
@override
- final int charOffset;
-
- @override
- final Uri fileUri;
-
- MemberBuilderImpl(this.parent, this.fileUri, this.charOffset);
-
- @override
- DeclarationBuilder? get declarationBuilder =>
- parent is DeclarationBuilder ? parent as DeclarationBuilder : null;
-
- @override
- ClassBuilder? get classBuilder =>
- parent is ClassBuilder ? parent as ClassBuilder : null;
-
- @override
- LibraryBuilder get libraryBuilder {
- if (parent is LibraryBuilder) {
- LibraryBuilder library = parent as LibraryBuilder;
- return library.partOfLibrary ?? library;
- }
- // Coverage-ignore(suite): Not run.
- else if (parent is ExtensionBuilder) {
- ExtensionBuilder extension = parent as ExtensionBuilder;
- return extension.libraryBuilder;
- } else if (parent is ExtensionTypeDeclarationBuilder) {
- ExtensionTypeDeclarationBuilder extensionTypeDeclaration =
- parent as ExtensionTypeDeclarationBuilder;
- return extensionTypeDeclaration.libraryBuilder;
- } else {
- ClassBuilder cls = parent as ClassBuilder;
- return cls.libraryBuilder;
- }
- }
+ ClassBuilder? get classBuilder => declarationBuilder is ClassBuilder
+ ? declarationBuilder as ClassBuilder
+ : null;
@override
bool get isDeclarationInstanceMember => isDeclarationMember && !isStatic;
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 828a7b7..b33e506 100644
--- a/pkg/front_end/lib/src/dill/dill_class_builder.dart
+++ b/pkg/front_end/lib/src/dill/dill_class_builder.dart
@@ -158,22 +158,23 @@
List<TypeBuilder>? get onTypes => null;
void addField(Field field) {
- DillFieldBuilder builder = new DillFieldBuilder(field, this);
+ DillFieldBuilder builder =
+ new DillFieldBuilder(field, libraryBuilder, this);
String name = field.name.text;
nameSpace.addLocalMember(name, builder, setter: false);
}
void addConstructor(Constructor constructor, Procedure? constructorTearOff) {
- DillConstructorBuilder builder =
- new DillConstructorBuilder(constructor, constructorTearOff, this);
+ DillConstructorBuilder builder = new DillConstructorBuilder(
+ constructor, constructorTearOff, libraryBuilder, this);
String name = constructor.name.text;
nameSpace.addConstructor(name, builder);
}
void addFactory(Procedure factory, Procedure? factoryTearOff) {
String name = factory.name.text;
- nameSpace.addConstructor(
- name, new DillFactoryBuilder(factory, factoryTearOff, this));
+ nameSpace.addConstructor(name,
+ new DillFactoryBuilder(factory, factoryTearOff, libraryBuilder, this));
}
void addProcedure(Procedure procedure) {
@@ -183,19 +184,23 @@
// Coverage-ignore(suite): Not run.
throw new UnsupportedError("Use addFactory for adding factories");
case ProcedureKind.Setter:
- nameSpace.addLocalMember(name, new DillSetterBuilder(procedure, this),
+ nameSpace.addLocalMember(
+ name, new DillSetterBuilder(procedure, libraryBuilder, this),
setter: true);
break;
case ProcedureKind.Getter:
- nameSpace.addLocalMember(name, new DillGetterBuilder(procedure, this),
+ nameSpace.addLocalMember(
+ name, new DillGetterBuilder(procedure, libraryBuilder, this),
setter: false);
break;
case ProcedureKind.Operator:
- nameSpace.addLocalMember(name, new DillOperatorBuilder(procedure, this),
+ nameSpace.addLocalMember(
+ name, new DillOperatorBuilder(procedure, libraryBuilder, this),
setter: false);
break;
case ProcedureKind.Method:
- nameSpace.addLocalMember(name, new DillMethodBuilder(procedure, this),
+ nameSpace.addLocalMember(
+ name, new DillMethodBuilder(procedure, libraryBuilder, 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 54ba740..87e0c4b 100644
--- a/pkg/front_end/lib/src/dill/dill_extension_builder.dart
+++ b/pkg/front_end/lib/src/dill/dill_extension_builder.dart
@@ -16,7 +16,7 @@
class DillExtensionBuilder extends ExtensionBuilderImpl
with DillDeclarationBuilderMixin {
@override
- final DillLibraryBuilder parent;
+ final DillLibraryBuilder libraryBuilder;
@override
final Extension extension;
@@ -30,7 +30,7 @@
List<NominalVariableBuilder>? _typeParameters;
TypeBuilder? _onType;
- DillExtensionBuilder(this.extension, this.parent)
+ DillExtensionBuilder(this.extension, this.libraryBuilder)
: _nameSpace = new DeclarationNameSpaceImpl() {
_scope = new NameSpaceLookupScope(
_nameSpace, ScopeKind.declaration, "extension ${extension.name}",
@@ -46,7 +46,7 @@
nameSpace.addLocalMember(
name.text,
new DillExtensionStaticMethodBuilder(
- procedure, descriptor, this),
+ procedure, descriptor, libraryBuilder, this),
setter: false);
} else {
Procedure procedure = descriptor.memberReference.asProcedure;
@@ -55,32 +55,40 @@
nameSpace.addLocalMember(
name.text,
new DillExtensionInstanceMethodBuilder(
- procedure, descriptor, this, tearOff!),
+ procedure, descriptor, libraryBuilder, this, tearOff!),
setter: false);
}
break;
case ExtensionMemberKind.Getter:
Procedure procedure = descriptor.memberReference.asProcedure;
- nameSpace.addLocalMember(name.text,
- new DillExtensionGetterBuilder(procedure, descriptor, this),
+ nameSpace.addLocalMember(
+ name.text,
+ new DillExtensionGetterBuilder(
+ procedure, descriptor, libraryBuilder, this),
setter: false);
break;
case ExtensionMemberKind.Field:
Field field = descriptor.memberReference.asField;
nameSpace.addLocalMember(
- name.text, new DillExtensionFieldBuilder(field, descriptor, this),
+ name.text,
+ new DillExtensionFieldBuilder(
+ field, descriptor, libraryBuilder, this),
setter: false);
break;
case ExtensionMemberKind.Setter:
Procedure procedure = descriptor.memberReference.asProcedure;
- nameSpace.addLocalMember(name.text,
- new DillExtensionSetterBuilder(procedure, descriptor, this),
+ nameSpace.addLocalMember(
+ name.text,
+ new DillExtensionSetterBuilder(
+ procedure, descriptor, libraryBuilder, this),
setter: true);
break;
case ExtensionMemberKind.Operator:
Procedure procedure = descriptor.memberReference.asProcedure;
- nameSpace.addLocalMember(name.text,
- new DillExtensionOperatorBuilder(procedure, descriptor, this),
+ nameSpace.addLocalMember(
+ name.text,
+ new DillExtensionOperatorBuilder(
+ procedure, descriptor, libraryBuilder, this),
setter: false);
break;
}
@@ -88,6 +96,9 @@
}
@override
+ DillLibraryBuilder get parent => libraryBuilder;
+
+ @override
Reference get reference => extension.reference;
@override
diff --git a/pkg/front_end/lib/src/dill/dill_extension_member_builder.dart b/pkg/front_end/lib/src/dill/dill_extension_member_builder.dart
index 9b4dc9e..0bb8a1e 100644
--- a/pkg/front_end/lib/src/dill/dill_extension_member_builder.dart
+++ b/pkg/front_end/lib/src/dill/dill_extension_member_builder.dart
@@ -4,14 +4,14 @@
import 'package:kernel/ast.dart';
-import '../builder/builder.dart';
+import 'dill_extension_builder.dart';
import 'dill_member_builder.dart';
abstract class DillExtensionMemberBuilder extends DillMemberBuilder {
final ExtensionMemberDescriptor _descriptor;
- DillExtensionMemberBuilder(Member member, this._descriptor, Builder parent)
- : super(member, parent);
+ DillExtensionMemberBuilder(this._descriptor, super.libraryBuilder,
+ DillExtensionBuilder super.declarationBuilder);
@override
bool get isStatic => _descriptor.isStatic;
@@ -44,9 +44,8 @@
class DillExtensionFieldBuilder extends DillExtensionMemberBuilder {
final Field field;
- DillExtensionFieldBuilder(
- this.field, ExtensionMemberDescriptor descriptor, Builder parent)
- : super(field, descriptor, parent);
+ DillExtensionFieldBuilder(this.field, super.descriptor, super.libraryBuilder,
+ super.declarationBuilder);
@override
// Coverage-ignore(suite): Not run.
@@ -71,10 +70,9 @@
class DillExtensionSetterBuilder extends DillExtensionMemberBuilder {
final Procedure procedure;
- DillExtensionSetterBuilder(
- this.procedure, ExtensionMemberDescriptor descriptor, Builder parent)
- : assert(descriptor.kind == ExtensionMemberKind.Setter),
- super(procedure, descriptor, parent);
+ DillExtensionSetterBuilder(this.procedure, super.descriptor,
+ super.libraryBuilder, super.declarationBuilder)
+ : assert(descriptor.kind == ExtensionMemberKind.Setter);
@override
// Coverage-ignore(suite): Not run.
@@ -94,10 +92,9 @@
class DillExtensionGetterBuilder extends DillExtensionMemberBuilder {
final Procedure procedure;
- DillExtensionGetterBuilder(
- this.procedure, ExtensionMemberDescriptor descriptor, Builder parent)
- : assert(descriptor.kind == ExtensionMemberKind.Getter),
- super(procedure, descriptor, parent);
+ DillExtensionGetterBuilder(this.procedure, super.descriptor,
+ super.libraryBuilder, super.declarationBuilder)
+ : assert(descriptor.kind == ExtensionMemberKind.Getter);
@override
// Coverage-ignore(suite): Not run.
@@ -117,10 +114,9 @@
class DillExtensionOperatorBuilder extends DillExtensionMemberBuilder {
final Procedure procedure;
- DillExtensionOperatorBuilder(
- this.procedure, ExtensionMemberDescriptor descriptor, Builder parent)
- : assert(descriptor.kind == ExtensionMemberKind.Operator),
- super(procedure, descriptor, parent);
+ DillExtensionOperatorBuilder(this.procedure, super.descriptor,
+ super.libraryBuilder, super.declarationBuilder)
+ : assert(descriptor.kind == ExtensionMemberKind.Operator);
@override
// Coverage-ignore(suite): Not run.
@@ -140,11 +136,10 @@
class DillExtensionStaticMethodBuilder extends DillExtensionMemberBuilder {
final Procedure procedure;
- DillExtensionStaticMethodBuilder(
- this.procedure, ExtensionMemberDescriptor descriptor, Builder parent)
+ DillExtensionStaticMethodBuilder(this.procedure, super.descriptor,
+ super.libraryBuilder, super.declarationBuilder)
: assert(descriptor.kind == ExtensionMemberKind.Method),
- assert(descriptor.isStatic),
- super(procedure, descriptor, parent);
+ assert(descriptor.isStatic);
@override
// Coverage-ignore(suite): Not run.
@@ -166,14 +161,10 @@
final Procedure _extensionTearOff;
- DillExtensionInstanceMethodBuilder(
- this.procedure,
- ExtensionMemberDescriptor descriptor,
- Builder parent,
- this._extensionTearOff)
+ DillExtensionInstanceMethodBuilder(this.procedure, super.descriptor,
+ super.libraryBuilder, super.declarationBuilder, this._extensionTearOff)
: assert(descriptor.kind == ExtensionMemberKind.Method),
- assert(!descriptor.isStatic),
- super(procedure, descriptor, parent);
+ assert(!descriptor.isStatic);
@override
// Coverage-ignore(suite): Not run.
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 8ec3113..d21a93f 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
@@ -18,7 +18,7 @@
extends ExtensionTypeDeclarationBuilderImpl
with DillClassMemberAccessMixin, DillDeclarationBuilderMixin {
@override
- final DillLibraryBuilder parent;
+ final DillLibraryBuilder libraryBuilder;
final ExtensionTypeDeclaration _extensionTypeDeclaration;
@@ -35,7 +35,7 @@
TypeBuilder? _declaredRepresentationTypeBuilder;
DillExtensionTypeDeclarationBuilder(
- this._extensionTypeDeclaration, this.parent)
+ this._extensionTypeDeclaration, this.libraryBuilder)
: _nameSpace = new DeclarationNameSpaceImpl() {
_scope = new NameSpaceLookupScope(_nameSpace, ScopeKind.declaration,
"extension type ${_extensionTypeDeclaration.name}",
@@ -52,20 +52,23 @@
"$procedure (${procedure.kind}).");
case ProcedureKind.Setter:
// Coverage-ignore(suite): Not run.
- nameSpace.addLocalMember(name, new DillSetterBuilder(procedure, this),
+ nameSpace.addLocalMember(
+ name, new DillSetterBuilder(procedure, libraryBuilder, this),
setter: true);
break;
case ProcedureKind.Getter:
- nameSpace.addLocalMember(name, new DillGetterBuilder(procedure, this),
+ nameSpace.addLocalMember(
+ name, new DillGetterBuilder(procedure, libraryBuilder, this),
setter: false);
break;
case ProcedureKind.Operator:
nameSpace.addLocalMember(
- name, new DillOperatorBuilder(procedure, this),
+ name, new DillOperatorBuilder(procedure, libraryBuilder, this),
setter: false);
break;
case ProcedureKind.Method:
- nameSpace.addLocalMember(name, new DillMethodBuilder(procedure, this),
+ nameSpace.addLocalMember(
+ name, new DillMethodBuilder(procedure, libraryBuilder, this),
setter: false);
break;
}
@@ -80,7 +83,7 @@
nameSpace.addLocalMember(
name.text,
new DillExtensionTypeStaticMethodBuilder(
- procedure, descriptor, this),
+ procedure, descriptor, libraryBuilder, this),
setter: false);
} else {
Procedure procedure = descriptor.memberReference.asProcedure;
@@ -89,32 +92,40 @@
nameSpace.addLocalMember(
name.text,
new DillExtensionTypeInstanceMethodBuilder(
- procedure, descriptor, this, tearOff!),
+ procedure, descriptor, libraryBuilder, this, tearOff!),
setter: false);
}
break;
case ExtensionTypeMemberKind.Getter:
Procedure procedure = descriptor.memberReference.asProcedure;
- nameSpace.addLocalMember(name.text,
- new DillExtensionTypeGetterBuilder(procedure, descriptor, this),
+ nameSpace.addLocalMember(
+ name.text,
+ new DillExtensionTypeGetterBuilder(
+ procedure, descriptor, libraryBuilder, this),
setter: false);
break;
case ExtensionTypeMemberKind.Field:
Field field = descriptor.memberReference.asField;
- nameSpace.addLocalMember(name.text,
- new DillExtensionTypeFieldBuilder(field, descriptor, this),
+ nameSpace.addLocalMember(
+ name.text,
+ new DillExtensionTypeFieldBuilder(
+ field, descriptor, libraryBuilder, this),
setter: false);
break;
case ExtensionTypeMemberKind.Setter:
Procedure procedure = descriptor.memberReference.asProcedure;
- nameSpace.addLocalMember(name.text,
- new DillExtensionTypeSetterBuilder(procedure, descriptor, this),
+ nameSpace.addLocalMember(
+ name.text,
+ new DillExtensionTypeSetterBuilder(
+ procedure, descriptor, libraryBuilder, this),
setter: true);
break;
case ExtensionTypeMemberKind.Operator:
Procedure procedure = descriptor.memberReference.asProcedure;
- nameSpace.addLocalMember(name.text,
- new DillExtensionTypeOperatorBuilder(procedure, descriptor, this),
+ nameSpace.addLocalMember(
+ name.text,
+ new DillExtensionTypeOperatorBuilder(
+ procedure, descriptor, libraryBuilder, this),
setter: false);
break;
case ExtensionTypeMemberKind.Constructor:
@@ -123,7 +134,7 @@
nameSpace.addConstructor(
name.text,
new DillExtensionTypeConstructorBuilder(
- procedure, tearOff, descriptor, this));
+ procedure, tearOff, descriptor, libraryBuilder, this));
break;
case ExtensionTypeMemberKind.Factory:
case ExtensionTypeMemberKind.RedirectingFactory:
@@ -132,7 +143,7 @@
nameSpace.addConstructor(
name.text,
new DillExtensionTypeFactoryBuilder(
- procedure, tearOff, descriptor, this));
+ procedure, tearOff, descriptor, libraryBuilder, this));
break;
}
}
@@ -150,7 +161,7 @@
Uri get fileUri => _extensionTypeDeclaration.fileUri;
@override
- DillLibraryBuilder get libraryBuilder => parent;
+ DillLibraryBuilder get parent => libraryBuilder;
@override
// Coverage-ignore(suite): Not run.
diff --git a/pkg/front_end/lib/src/dill/dill_extension_type_member_builder.dart b/pkg/front_end/lib/src/dill/dill_extension_type_member_builder.dart
index 8b1b1aa..3d3bab1 100644
--- a/pkg/front_end/lib/src/dill/dill_extension_type_member_builder.dart
+++ b/pkg/front_end/lib/src/dill/dill_extension_type_member_builder.dart
@@ -4,16 +4,15 @@
import 'package:kernel/ast.dart';
-import '../builder/builder.dart';
import '../builder/constructor_builder.dart';
+import 'dill_extension_type_declaration_builder.dart';
import 'dill_member_builder.dart';
abstract class DillExtensionTypeMemberBuilder extends DillMemberBuilder {
final ExtensionTypeMemberDescriptor _descriptor;
- DillExtensionTypeMemberBuilder(
- Member member, this._descriptor, Builder parent)
- : super(member, parent);
+ DillExtensionTypeMemberBuilder(this._descriptor, super.libraryBuilder,
+ DillExtensionTypeDeclarationBuilder super.declarationBuilder);
@override
bool get isStatic => _descriptor.isStatic;
@@ -88,9 +87,8 @@
class DillExtensionTypeFieldBuilder extends DillExtensionTypeMemberBuilder {
final Field field;
- DillExtensionTypeFieldBuilder(
- this.field, ExtensionTypeMemberDescriptor descriptor, Builder parent)
- : super(field, descriptor, parent);
+ DillExtensionTypeFieldBuilder(this.field, super.descriptor,
+ super.libraryBuilder, super.declarationBuilder);
@override
Member get member => field;
@@ -114,10 +112,9 @@
class DillExtensionTypeSetterBuilder extends DillExtensionTypeMemberBuilder {
final Procedure procedure;
- DillExtensionTypeSetterBuilder(
- this.procedure, ExtensionTypeMemberDescriptor descriptor, Builder parent)
- : assert(descriptor.kind == ExtensionTypeMemberKind.Setter),
- super(procedure, descriptor, parent);
+ DillExtensionTypeSetterBuilder(this.procedure, super.descriptor,
+ super.libraryBuilder, super.declarationBuilder)
+ : assert(descriptor.kind == ExtensionTypeMemberKind.Setter);
@override
Member get member => procedure;
@@ -135,10 +132,9 @@
class DillExtensionTypeGetterBuilder extends DillExtensionTypeMemberBuilder {
final Procedure procedure;
- DillExtensionTypeGetterBuilder(
- this.procedure, ExtensionTypeMemberDescriptor descriptor, Builder parent)
- : assert(descriptor.kind == ExtensionTypeMemberKind.Getter),
- super(procedure, descriptor, parent);
+ DillExtensionTypeGetterBuilder(this.procedure, super.descriptor,
+ super.libraryBuilder, super.declarationBuilder)
+ : assert(descriptor.kind == ExtensionTypeMemberKind.Getter);
@override
Member get member => procedure;
@@ -157,10 +153,9 @@
class DillExtensionTypeOperatorBuilder extends DillExtensionTypeMemberBuilder {
final Procedure procedure;
- DillExtensionTypeOperatorBuilder(
- this.procedure, ExtensionTypeMemberDescriptor descriptor, Builder parent)
- : assert(descriptor.kind == ExtensionTypeMemberKind.Operator),
- super(procedure, descriptor, parent);
+ DillExtensionTypeOperatorBuilder(this.procedure, super.descriptor,
+ super.libraryBuilder, super.declarationBuilder)
+ : assert(descriptor.kind == ExtensionTypeMemberKind.Operator);
@override
Member get member => procedure;
@@ -180,11 +175,10 @@
extends DillExtensionTypeMemberBuilder {
final Procedure procedure;
- DillExtensionTypeStaticMethodBuilder(
- this.procedure, ExtensionTypeMemberDescriptor descriptor, Builder parent)
+ DillExtensionTypeStaticMethodBuilder(this.procedure, super.descriptor,
+ super.libraryBuilder, super.declarationBuilder)
: assert(descriptor.kind == ExtensionTypeMemberKind.Method),
- assert(descriptor.isStatic),
- super(procedure, descriptor, parent);
+ assert(descriptor.isStatic);
@override
Member get member => procedure;
@@ -206,14 +200,10 @@
final Procedure _extensionTearOff;
- DillExtensionTypeInstanceMethodBuilder(
- this.procedure,
- ExtensionTypeMemberDescriptor descriptor,
- Builder parent,
- this._extensionTearOff)
+ DillExtensionTypeInstanceMethodBuilder(this.procedure, super.descriptor,
+ super.libraryBuilder, super.declarationBuilder, this._extensionTearOff)
: assert(descriptor.kind == ExtensionTypeMemberKind.Method),
- assert(!descriptor.isStatic),
- super(procedure, descriptor, parent);
+ assert(!descriptor.isStatic);
@override
Member get member => procedure;
@@ -241,9 +231,9 @@
DillExtensionTypeConstructorBuilder(
this.constructor,
this._constructorTearOff,
- ExtensionTypeMemberDescriptor descriptor,
- Builder parent)
- : super(constructor, descriptor, parent);
+ super.descriptor,
+ super.libraryBuilder,
+ super.declarationBuilder);
@override
FunctionNode get function => constructor.function;
@@ -270,8 +260,7 @@
final Procedure? _factoryTearOff;
DillExtensionTypeFactoryBuilder(this._procedure, this._factoryTearOff,
- ExtensionTypeMemberDescriptor descriptor, Builder parent)
- : super(_procedure, descriptor, parent);
+ super.descriptor, super.libraryBuilder, super.declarationBuilder);
@override
Member get member => _procedure;
diff --git a/pkg/front_end/lib/src/dill/dill_member_builder.dart b/pkg/front_end/lib/src/dill/dill_member_builder.dart
index 838a6ab..07c999d 100644
--- a/pkg/front_end/lib/src/dill/dill_member_builder.dart
+++ b/pkg/front_end/lib/src/dill/dill_member_builder.dart
@@ -18,20 +18,37 @@
import '../builder/builder.dart';
import '../builder/constructor_builder.dart';
+import '../builder/declaration_builders.dart';
import '../builder/field_builder.dart';
import '../builder/member_builder.dart';
import '../builder/procedure_builder.dart';
import '../kernel/hierarchy/class_member.dart';
import '../kernel/hierarchy/members_builder.dart' show ClassMembersBuilder;
import '../kernel/member_covariance.dart';
+import 'dill_class_builder.dart';
+import 'dill_library_builder.dart';
abstract class DillMemberBuilder extends MemberBuilderImpl {
- DillMemberBuilder(Member member, Builder parent)
- : super(parent, member.fileUri, member.fileOffset);
+ @override
+ final DillLibraryBuilder libraryBuilder;
+
+ @override
+ final DeclarationBuilder? declarationBuilder;
+
+ DillMemberBuilder(this.libraryBuilder, this.declarationBuilder);
Member get member;
@override
+ int get charOffset => member.fileOffset;
+
+ @override
+ Uri get fileUri => member.fileUri;
+
+ @override
+ Builder get parent => declarationBuilder ?? libraryBuilder;
+
+ @override
Iterable<Member> get exportedMembers => [member];
@override
@@ -114,7 +131,8 @@
@override
final Field field;
- DillFieldBuilder(this.field, Builder parent) : super(field, parent);
+ DillFieldBuilder(this.field, super.libraryBuilder,
+ [super.declarationBuilder]);
@override
Member get member => field;
@@ -151,8 +169,8 @@
@override
final Procedure procedure;
- DillProcedureBuilder(this.procedure, Builder parent)
- : super(procedure, parent);
+ DillProcedureBuilder(this.procedure, super.libraryBuilder,
+ [super.declarationBuilder]);
@override
ProcedureKind get kind => procedure.kind;
@@ -169,9 +187,9 @@
}
class DillGetterBuilder extends DillProcedureBuilder {
- DillGetterBuilder(Procedure procedure, Builder parent)
- : assert(procedure.kind == ProcedureKind.Getter),
- super(procedure, parent);
+ DillGetterBuilder(super.procedure, super.libraryBuilder,
+ [super.declarationBuilder])
+ : assert(procedure.kind == ProcedureKind.Getter);
@override
Member get member => procedure;
@@ -188,9 +206,9 @@
}
class DillSetterBuilder extends DillProcedureBuilder {
- DillSetterBuilder(Procedure procedure, Builder parent)
- : assert(procedure.kind == ProcedureKind.Setter),
- super(procedure, parent);
+ DillSetterBuilder(super.procedure, super.libraryBuilder,
+ [super.declarationBuilder])
+ : assert(procedure.kind == ProcedureKind.Setter);
@override
Member get member => procedure;
@@ -206,9 +224,9 @@
}
class DillMethodBuilder extends DillProcedureBuilder {
- DillMethodBuilder(Procedure procedure, Builder parent)
- : assert(procedure.kind == ProcedureKind.Method),
- super(procedure, parent);
+ DillMethodBuilder(super.procedure, super.libraryBuilder,
+ [super.declarationBuilder])
+ : assert(procedure.kind == ProcedureKind.Method);
@override
Member get member => procedure;
@@ -224,9 +242,9 @@
}
class DillOperatorBuilder extends DillProcedureBuilder {
- DillOperatorBuilder(Procedure procedure, Builder parent)
- : assert(procedure.kind == ProcedureKind.Operator),
- super(procedure, parent);
+ DillOperatorBuilder(super.procedure, super.libraryBuilder,
+ [super.declarationBuilder])
+ : assert(procedure.kind == ProcedureKind.Operator);
@override
Member get member => procedure;
@@ -247,8 +265,8 @@
class DillFactoryBuilder extends DillProcedureBuilder {
final Procedure? _factoryTearOff;
- DillFactoryBuilder(Procedure procedure, this._factoryTearOff, Builder parent)
- : super(procedure, parent);
+ DillFactoryBuilder(super.procedure, this._factoryTearOff,
+ super.libraryBuilder, DillClassBuilder super.declarationBuilder);
@override
Member get member => procedure;
@@ -269,9 +287,8 @@
final Constructor constructor;
final Procedure? _constructorTearOff;
- DillConstructorBuilder(
- this.constructor, this._constructorTearOff, Builder parent)
- : super(constructor, parent);
+ DillConstructorBuilder(this.constructor, this._constructorTearOff,
+ super.libraryBuilder, ClassBuilder super.declarationBuilder);
@override
FunctionNode get function => constructor.function;
@@ -290,6 +307,7 @@
Constructor get invokeTarget => constructor;
@override
+ // Coverage-ignore(suite): Not run.
bool get isConst => constructor.isConst;
}
diff --git a/pkg/front_end/lib/src/kernel/kernel_target.dart b/pkg/front_end/lib/src/kernel/kernel_target.dart
index 0bba11d..acf8007 100644
--- a/pkg/front_end/lib/src/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/kernel/kernel_target.dart
@@ -1269,7 +1269,7 @@
}
SyntheticSourceConstructorBuilder constructorBuilder =
new SyntheticSourceConstructorBuilder(
- classBuilder, constructor, constructorTearOff,
+ libraryBuilder, classBuilder, constructor, constructorTearOff,
// We pass on the original constructor and the cloned function nodes
// to ensure that the default values are computed and cloned for the
// outline. It is needed to make the default values a part of the
@@ -1351,7 +1351,7 @@
registerDelayedDefaultValueCloner(delayedDefaultValueCloner);
}
return new SyntheticSourceConstructorBuilder(
- classBuilder, constructor, constructorTearOff);
+ libraryBuilder, classBuilder, constructor, constructorTearOff);
}
DartType makeConstructorReturnType(Class enclosingClass) {
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 82f7424..da5c2e5 100644
--- a/pkg/front_end/lib/src/source/source_constructor_builder.dart
+++ b/pkg/front_end/lib/src/source/source_constructor_builder.dart
@@ -30,7 +30,6 @@
import '../builder/metadata_builder.dart';
import '../builder/omitted_type_builder.dart';
import '../builder/type_builder.dart';
-import '../dill/dill_member_builder.dart';
import '../kernel/body_builder.dart' show BodyBuilder;
import '../kernel/body_builder_context.dart';
import '../kernel/constructor_tearoff_lowering.dart';
@@ -80,12 +79,6 @@
extends SourceFunctionBuilderImpl
implements SourceConstructorBuilder, Inferable, ConstructorDeclaration {
@override
- final SourceLibraryBuilder libraryBuilder;
-
- @override
- final DeclarationBuilder declarationBuilder;
-
- @override
final OmittedTypeBuilder returnType;
final int charOpenParenOffset;
@@ -101,15 +94,11 @@
String name,
List<NominalVariableBuilder>? typeVariables,
List<FormalParameterBuilder>? formals,
- this.libraryBuilder,
- this.declarationBuilder,
- Uri fileUri,
- int charOffset,
this.charOpenParenOffset,
String? nativeMethodName,
this.beginInitializers)
: super(metadata, modifiers, name, typeVariables, formals,
- declarationBuilder, fileUri, charOffset, nativeMethodName) {
+ nativeMethodName) {
if (formals != null) {
for (FormalParameterBuilder formal in formals) {
if (formal.isInitializingFormal || formal.isSuperInitializingFormal) {
@@ -409,6 +398,18 @@
"${name.isEmpty ? '' : '.$name'}";
}
+ @override
+ final int charOffset;
+
+ @override
+ final Uri fileUri;
+
+ @override
+ final SourceLibraryBuilder libraryBuilder;
+
+ @override
+ final DeclarationBuilder declarationBuilder;
+
DeclaredSourceConstructorBuilder(
List<MetadataBuilder>? metadata,
Modifiers modifiers,
@@ -416,11 +417,11 @@
String name,
List<NominalVariableBuilder>? typeVariables,
this.formals,
- SourceLibraryBuilder libraryBuilder,
- DeclarationBuilder declarationBuilder,
- Uri fileUri,
+ this.libraryBuilder,
+ this.declarationBuilder,
+ this.fileUri,
int startCharOffset,
- int charOffset,
+ this.charOffset,
int charOpenParenOffset,
int charEndOffset,
Reference? constructorReference,
@@ -433,20 +434,8 @@
: _hasSuperInitializingFormals =
formals?.any((formal) => formal.isSuperInitializingFormal) ?? false,
_memberName = nameScheme.getDeclaredName(name),
- super(
- metadata,
- modifiers,
- returnType,
- name,
- typeVariables,
- formals,
- libraryBuilder,
- declarationBuilder,
- fileUri,
- charOffset,
- charOpenParenOffset,
- nativeMethodName,
- beginInitializers) {
+ super(metadata, modifiers, returnType, name, typeVariables, formals,
+ charOpenParenOffset, nativeMethodName, beginInitializers) {
_constructor = new Constructor(new FunctionNode(null),
name: dummyName,
fileUri: fileUri,
@@ -468,6 +457,9 @@
}
@override
+ Builder get parent => declarationBuilder;
+
+ @override
// Coverage-ignore(suite): Not run.
Name get memberName => _memberName.name;
@@ -1034,9 +1026,18 @@
}
}
-class SyntheticSourceConstructorBuilder extends DillConstructorBuilder
+class SyntheticSourceConstructorBuilder extends MemberBuilderImpl
with SourceMemberBuilderMixin
implements SourceConstructorBuilder {
+ @override
+ final SourceLibraryBuilder libraryBuilder;
+
+ @override
+ final SourceClassBuilder classBuilder;
+
+ final Constructor _constructor;
+ final Procedure? _constructorTearOff;
+
/// The constructor from which this synthesized constructor is defined.
///
/// This defines the parameter structure and the default values of this
@@ -1049,7 +1050,7 @@
DelayedDefaultValueCloner? _delayedDefaultValueCloner;
TypeDependency? _typeDependency;
- SyntheticSourceConstructorBuilder(SourceClassBuilder parent,
+ SyntheticSourceConstructorBuilder(this.libraryBuilder, this.classBuilder,
Constructor constructor, Procedure? constructorTearOff,
{MemberBuilder? definingConstructor,
DelayedDefaultValueCloner? delayedDefaultValueCloner,
@@ -1057,21 +1058,91 @@
: _immediatelyDefiningConstructor = definingConstructor,
_delayedDefaultValueCloner = delayedDefaultValueCloner,
_typeDependency = typeDependency,
- super(constructor, constructorTearOff, parent);
+ _constructor = constructor,
+ _constructorTearOff = constructorTearOff;
@override
// Coverage-ignore(suite): Not run.
- SourceLibraryBuilder get libraryBuilder =>
- super.libraryBuilder as SourceLibraryBuilder;
+ int get charOffset => _constructor.fileOffset;
@override
// Coverage-ignore(suite): Not run.
- DeclarationBuilder get declarationBuilder => classBuilder!;
+ Uri get fileUri => _constructor.fileUri;
+
+ @override
+ Builder get parent => declarationBuilder;
+
+ @override
+ // Coverage-ignore(suite): Not run.
+ Iterable<Member> get exportedMembers => [_constructor];
+
+ @override
+ String get name => _constructor.name.text;
+
+ @override
+ // Coverage-ignore(suite): Not run.
+ Name get memberName => _constructor.name;
+
+ @override
+ bool get isConstructor => true;
+
+ @override
+ // Coverage-ignore(suite): Not run.
+ ProcedureKind? get kind => null;
+
+ @override
+ // Coverage-ignore(suite): Not run.
+ bool get isAbstract => false;
+
+ @override
+ // Coverage-ignore(suite): Not run.
+ bool get isExternal => _constructor.isExternal;
+
+ @override
+ // Coverage-ignore(suite): Not run.
+ bool get isSynthetic => _constructor.isSynthetic;
+
+ @override
+ // Coverage-ignore(suite): Not run.
+ bool get isAssignable => false;
+
+ @override
+ // Coverage-ignore(suite): Not run.
+ List<ClassMember> get localMembers =>
+ throw new UnsupportedError('${runtimeType}.localMembers');
+
+ @override
+ // Coverage-ignore(suite): Not run.
+ List<ClassMember> get localSetters =>
+ throw new UnsupportedError('${runtimeType}.localSetters');
+
+ @override
+ // Coverage-ignore(suite): Not run.
+ Iterable<Annotatable> get annotatables => [_constructor];
+
+ @override
+ FunctionNode get function => _constructor.function;
+
+ @override
+ Member get readTarget => _constructorTearOff ?? _constructor;
+
+ @override
+ // Coverage-ignore(suite): Not run.
+ Member? get writeTarget => null;
+
+ @override
+ Constructor get invokeTarget => _constructor;
+
+ @override
+ bool get isConst => _constructor.isConst;
+
+ @override
+ DeclarationBuilder get declarationBuilder => classBuilder;
@override
// Coverage-ignore(suite): Not run.
bool get isRedirecting {
- for (Initializer initializer in constructor.initializers) {
+ for (Initializer initializer in _constructor.initializers) {
if (initializer is RedirectingInitializer) {
return true;
}
@@ -1140,6 +1211,12 @@
class SourceExtensionTypeConstructorBuilder
extends AbstractSourceConstructorBuilder {
+ @override
+ final SourceLibraryBuilder libraryBuilder;
+
+ @override
+ final SourceExtensionTypeDeclarationBuilder declarationBuilder;
+
late final Procedure _constructor;
@override
@@ -1154,6 +1231,12 @@
DelayedDefaultValueCloner? _delayedDefaultValueCloner;
+ @override
+ final int charOffset;
+
+ @override
+ final Uri fileUri;
+
SourceExtensionTypeConstructorBuilder(
List<MetadataBuilder>? metadata,
Modifiers modifiers,
@@ -1161,11 +1244,11 @@
String name,
List<NominalVariableBuilder>? typeVariables,
List<FormalParameterBuilder>? formals,
- SourceLibraryBuilder libraryBuilder,
- SourceExtensionTypeDeclarationBuilder declarationBuilder,
- Uri fileUri,
+ this.libraryBuilder,
+ this.declarationBuilder,
+ this.fileUri,
int startCharOffset,
- int charOffset,
+ this.charOffset,
int charOpenParenOffset,
int charEndOffset,
Reference? constructorReference,
@@ -1175,20 +1258,8 @@
required bool forAbstractClassOrEnumOrMixin,
required Token? beginInitializers})
: _memberName = nameScheme.getDeclaredName(name),
- super(
- metadata,
- modifiers,
- returnType,
- name,
- typeVariables,
- formals,
- libraryBuilder,
- declarationBuilder,
- fileUri,
- charOffset,
- charOpenParenOffset,
- nativeMethodName,
- beginInitializers) {
+ super(metadata, modifiers, returnType, name, typeVariables, formals,
+ charOpenParenOffset, nativeMethodName, beginInitializers) {
_constructor = new Procedure(
dummyName, ProcedureKind.Method, new FunctionNode(null),
fileUri: fileUri, reference: constructorReference)
@@ -1209,6 +1280,9 @@
}
@override
+ Builder get parent => declarationBuilder;
+
+ @override
// Coverage-ignore(suite): Not run.
Name get memberName => _memberName.name;
diff --git a/pkg/front_end/lib/src/source/source_enum_builder.dart b/pkg/front_end/lib/src/source/source_enum_builder.dart
index 81d48cc..0a29f4d 100644
--- a/pkg/front_end/lib/src/source/source_enum_builder.dart
+++ b/pkg/front_end/lib/src/source/source_enum_builder.dart
@@ -331,12 +331,10 @@
customValuesDeclaration.next = valuesBuilder;
nameSpaceBuilder.checkTypeVariableConflict(libraryBuilder,
valuesBuilder.name, valuesBuilder, valuesBuilder.fileUri);
- valuesBuilder.parent = this;
} else {
nameSpace.addLocalMember("values", valuesBuilder, setter: false);
nameSpaceBuilder.checkTypeVariableConflict(libraryBuilder,
valuesBuilder.name, valuesBuilder, valuesBuilder.fileUri);
- valuesBuilder.parent = this;
}
// The default constructor is added if no generative or unnamed factory
@@ -388,7 +386,6 @@
synthesizedDefaultConstructorBuilder!.name,
synthesizedDefaultConstructorBuilder!,
synthesizedDefaultConstructorBuilder!.fileUri);
- synthesizedDefaultConstructorBuilder!.parent = this;
}
ProcedureBuilder toStringBuilder = new SourceProcedureBuilder(
@@ -501,7 +498,6 @@
setter: false);
nameSpaceBuilder.checkTypeVariableConflict(libraryBuilder,
fieldBuilder.name, fieldBuilder, fieldBuilder.fileUri);
- fieldBuilder.parent = this;
elementBuilders.add(fieldBuilder);
}
}
diff --git a/pkg/front_end/lib/src/source/source_factory_builder.dart b/pkg/front_end/lib/src/source/source_factory_builder.dart
index 19ade46..cdd8522 100644
--- a/pkg/front_end/lib/src/source/source_factory_builder.dart
+++ b/pkg/front_end/lib/src/source/source_factory_builder.dart
@@ -49,6 +49,9 @@
@override
final SourceLibraryBuilder libraryBuilder;
+ @override
+ final DeclarationBuilder declarationBuilder;
+
final int charOpenParenOffset;
AsyncMarker actualAsyncModifier = AsyncMarker.Sync;
@@ -70,6 +73,12 @@
DelayedDefaultValueCloner? _delayedDefaultValueCloner;
+ @override
+ final int charOffset;
+
+ @override
+ final Uri fileUri;
+
SourceFactoryBuilder(
List<MetadataBuilder>? metadata,
Modifiers modifiers,
@@ -78,10 +87,10 @@
List<NominalVariableBuilder>? typeVariables,
List<FormalParameterBuilder>? formals,
this.libraryBuilder,
- DeclarationBuilder declarationBuilder,
- Uri fileUri,
+ this.declarationBuilder,
+ this.fileUri,
int startCharOffset,
- int charOffset,
+ this.charOffset,
this.charOpenParenOffset,
int charEndOffset,
Reference? procedureReference,
@@ -91,7 +100,7 @@
{String? nativeMethodName})
: _memberName = nameScheme.getDeclaredName(name),
super(metadata, modifiers, name, typeVariables, formals,
- declarationBuilder, fileUri, charOffset, nativeMethodName) {
+ nativeMethodName) {
_procedureInternal = new Procedure(
dummyName,
nameScheme.isExtensionTypeMember
@@ -119,11 +128,11 @@
}
@override
- // Coverage-ignore(suite): Not run.
- Name get memberName => _memberName.name;
+ Builder get parent => declarationBuilder;
@override
- DeclarationBuilder get declarationBuilder => super.declarationBuilder!;
+ // Coverage-ignore(suite): Not run.
+ Name get memberName => _memberName.name;
// Coverage-ignore(suite): Not run.
List<SourceFactoryBuilder>? get augmentationsForTesting => _augmentations;
diff --git a/pkg/front_end/lib/src/source/source_field_builder.dart b/pkg/front_end/lib/src/source/source_field_builder.dart
index 3ecc32a..e36621b 100644
--- a/pkg/front_end/lib/src/source/source_field_builder.dart
+++ b/pkg/front_end/lib/src/source/source_field_builder.dart
@@ -16,6 +16,7 @@
import '../base/modifiers.dart' show Modifiers;
import '../base/problems.dart' show internalProblem;
import '../base/scope.dart' show LookupScope;
+import '../builder/builder.dart';
import '../builder/declaration_builders.dart';
import '../builder/field_builder.dart';
import '../builder/member_builder.dart';
@@ -81,6 +82,15 @@
/// element.
final bool isEnumElement;
+ @override
+ final DeclarationBuilder? declarationBuilder;
+
+ @override
+ final int charOffset;
+
+ @override
+ final Uri fileUri;
+
SourceFieldBuilder(
this.metadata,
this.type,
@@ -88,9 +98,9 @@
this.modifiers,
this.isTopLevel,
this.libraryBuilder,
- DeclarationBuilder? declarationBuilder,
- Uri fileUri,
- int charOffset,
+ this.declarationBuilder,
+ this.fileUri,
+ this.charOffset,
int charEndOffset,
NameScheme fieldNameScheme,
{Reference? fieldReference,
@@ -106,8 +116,7 @@
this.isSynthesized = false,
this.isEnumElement = false})
: _constInitializerToken = constInitializerToken,
- _memberName = fieldNameScheme.getDeclaredName(name),
- super(declarationBuilder ?? libraryBuilder, fileUri, charOffset) {
+ _memberName = fieldNameScheme.getDeclaredName(name) {
type.registerInferredTypeListener(this);
bool isInstanceMember = fieldNameScheme.isInstanceMember;
@@ -308,6 +317,9 @@
}
@override
+ Builder get parent => declarationBuilder ?? libraryBuilder;
+
+ @override
Name get memberName => _memberName.name;
bool _typeEnsured = false;
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 09dd1bd..51065ea 100644
--- a/pkg/front_end/lib/src/source/source_function_builder.dart
+++ b/pkg/front_end/lib/src/source/source_function_builder.dart
@@ -148,17 +148,8 @@
/// from the extension/extension type declaration.
List<TypeParameter>? _thisTypeParameters;
- SourceFunctionBuilderImpl(
- this.metadata,
- this.modifiers,
- this.name,
- this.typeVariables,
- this.formals,
- Builder parent,
- Uri fileUri,
- int charOffset,
- this.nativeMethodName)
- : super(parent, fileUri, charOffset) {
+ SourceFunctionBuilderImpl(this.metadata, this.modifiers, this.name,
+ this.typeVariables, this.formals, this.nativeMethodName) {
returnType.registerInferredTypeListener(this);
if (formals != null) {
for (int i = 0; i < formals!.length; i++) {
diff --git a/pkg/front_end/lib/src/source/source_loader.dart b/pkg/front_end/lib/src/source/source_loader.dart
index ce1a435..0d339cd 100644
--- a/pkg/front_end/lib/src/source/source_loader.dart
+++ b/pkg/front_end/lib/src/source/source_loader.dart
@@ -1317,14 +1317,14 @@
// support members from source, so we provide an empty [DeclarationMap].
new OffsetMap(libraryBuilder.fileUri));
- Builder parent = libraryBuilder;
+ DeclarationBuilder? declarationBuilder;
if (enclosingClassOrExtension != null) {
Builder? builder = dietListener.memberScope
.lookupGetable(enclosingClassOrExtension, -1, libraryBuilder.fileUri);
if (builder is TypeDeclarationBuilder) {
switch (builder) {
case ClassBuilder():
- parent = builder;
+ declarationBuilder = builder;
dietListener
..currentDeclaration = builder
..memberScope = new NameSpaceLookupScope(
@@ -1334,7 +1334,7 @@
parent: TypeParameterScope.fromList(
dietListener.memberScope, builder.typeVariables));
case ExtensionBuilder():
- parent = builder;
+ declarationBuilder = builder;
dietListener
..currentDeclaration = builder
..memberScope = new NameSpaceLookupScope(
@@ -1364,7 +1364,7 @@
/* formals = */ null,
ProcedureKind.Method,
libraryBuilder,
- null,
+ declarationBuilder,
libraryBuilder.fileUri,
/* start char offset = */ 0,
/* char offset = */ 0,
@@ -1377,8 +1377,7 @@
containerName: null,
containerType: ContainerType.Library,
isInstanceMember: false,
- libraryName: libraryBuilder.libraryName))
- ..parent = parent;
+ libraryName: libraryBuilder.libraryName));
BodyBuilder listener = dietListener.createListener(
new ExpressionCompilerProcedureBodyBuildContext(
dietListener, builder, builder.invokeTarget!,
diff --git a/pkg/front_end/lib/src/source/source_member_builder.dart b/pkg/front_end/lib/src/source/source_member_builder.dart
index d9802ff..707ff32 100644
--- a/pkg/front_end/lib/src/source/source_member_builder.dart
+++ b/pkg/front_end/lib/src/source/source_member_builder.dart
@@ -11,8 +11,6 @@
import '../base/common.dart';
import '../base/modifiers.dart';
import '../base/problems.dart' show unsupported;
-import '../builder/builder.dart';
-import '../builder/declaration_builders.dart';
import '../builder/member_builder.dart';
import '../kernel/body_builder_context.dart';
import '../kernel/kernel_helper.dart';
@@ -115,13 +113,12 @@
@override
MemberDataForTesting? dataForTesting;
- SourceMemberBuilderImpl(Builder parent, Uri fileUri, int charOffset)
+ SourceMemberBuilderImpl()
: dataForTesting = retainDataForTesting
?
// Coverage-ignore(suite): Not run.
new MemberDataForTesting()
- : null,
- super(parent, fileUri, charOffset);
+ : null;
Modifiers get modifiers;
@@ -200,11 +197,6 @@
return sb.toString();
}
- /// The builder for the enclosing class or extension, if any.
- @override
- DeclarationBuilder? get declarationBuilder =>
- parent is DeclarationBuilder ? parent as DeclarationBuilder : null;
-
@override
AugmentSuperTarget? get augmentSuperTarget {
throw new UnimplementedError('$runtimeType.augmentSuperTarget}');
diff --git a/pkg/front_end/lib/src/source/source_procedure_builder.dart b/pkg/front_end/lib/src/source/source_procedure_builder.dart
index b8f2879..6c1ce14 100644
--- a/pkg/front_end/lib/src/source/source_procedure_builder.dart
+++ b/pkg/front_end/lib/src/source/source_procedure_builder.dart
@@ -35,6 +35,9 @@
@override
final SourceLibraryBuilder libraryBuilder;
+ @override
+ final DeclarationBuilder? declarationBuilder;
+
final int charOpenParenOffset;
AsyncMarker actualAsyncModifier = AsyncMarker.Sync;
@@ -80,6 +83,12 @@
final MemberName _memberName;
+ @override
+ final int charOffset;
+
+ @override
+ final Uri fileUri;
+
SourceProcedureBuilder(
List<MetadataBuilder>? metadata,
Modifiers modifiers,
@@ -89,10 +98,10 @@
List<FormalParameterBuilder>? formals,
this.kind,
this.libraryBuilder,
- DeclarationBuilder? declarationBuilder,
- Uri fileUri,
+ this.declarationBuilder,
+ this.fileUri,
int startCharOffset,
- int charOffset,
+ this.charOffset,
this.charOpenParenOffset,
int charEndOffset,
Reference? procedureReference,
@@ -107,15 +116,7 @@
this.isExtensionTypeInstanceMember =
nameScheme.isInstanceMember && nameScheme.isExtensionTypeMember,
_memberName = nameScheme.getDeclaredName(name),
- super(
- metadata,
- modifiers,
- name,
- typeVariables,
- formals,
- declarationBuilder ?? libraryBuilder,
- fileUri,
- charOffset,
+ super(metadata, modifiers, name, typeVariables, formals,
nativeMethodName) {
_procedure = new Procedure(
dummyName,
@@ -147,6 +148,9 @@
}
@override
+ Builder get parent => declarationBuilder ?? libraryBuilder;
+
+ @override
Name get memberName => _memberName.name;
// Coverage-ignore(suite): Not run.
diff --git a/pkg/front_end/test/coverage_suite_expected.dart b/pkg/front_end/test/coverage_suite_expected.dart
index 983a61367c..4bdcd96 100644
--- a/pkg/front_end/test/coverage_suite_expected.dart
+++ b/pkg/front_end/test/coverage_suite_expected.dart
@@ -325,7 +325,7 @@
),
// 100.0%.
"package:front_end/src/builder/member_builder.dart": (
- hitCount: 128,
+ hitCount: 118,
missCount: 0,
),
// 100.0%.
@@ -425,27 +425,27 @@
),
// 100.0%.
"package:front_end/src/dill/dill_class_builder.dart": (
- hitCount: 181,
+ hitCount: 188,
missCount: 0,
),
// 100.0%.
"package:front_end/src/dill/dill_extension_builder.dart": (
- hitCount: 91,
+ hitCount: 99,
missCount: 0,
),
// 100.0%.
"package:front_end/src/dill/dill_extension_member_builder.dart": (
- hitCount: 73,
+ hitCount: 66,
missCount: 0,
),
// 100.0%.
"package:front_end/src/dill/dill_extension_type_declaration_builder.dart": (
- hitCount: 158,
+ hitCount: 169,
missCount: 0,
),
// 100.0%.
"package:front_end/src/dill/dill_extension_type_member_builder.dart": (
- hitCount: 131,
+ hitCount: 122,
missCount: 0,
),
// 100.0%.
@@ -460,7 +460,7 @@
),
// 100.0%.
"package:front_end/src/dill/dill_member_builder.dart": (
- hitCount: 198,
+ hitCount: 193,
missCount: 0,
),
// 100.0%.
@@ -820,12 +820,12 @@
),
// 100.0%.
"package:front_end/src/source/source_constructor_builder.dart": (
- hitCount: 856,
+ hitCount: 889,
missCount: 0,
),
// 100.0%.
"package:front_end/src/source/source_enum_builder.dart": (
- hitCount: 522,
+ hitCount: 517,
missCount: 0,
),
// 100.0%.
@@ -841,17 +841,17 @@
),
// 100.0%.
"package:front_end/src/source/source_factory_builder.dart": (
- hitCount: 582,
+ hitCount: 586,
missCount: 0,
),
// 100.0%.
"package:front_end/src/source/source_field_builder.dart": (
- hitCount: 1189,
+ hitCount: 1209,
missCount: 0,
),
// 100.0%.
"package:front_end/src/source/source_function_builder.dart": (
- hitCount: 303,
+ hitCount: 302,
missCount: 0,
),
// 100.0%.
@@ -866,12 +866,12 @@
),
// 100.0%.
"package:front_end/src/source/source_member_builder.dart": (
- hitCount: 40,
+ hitCount: 35,
missCount: 0,
),
// 100.0%.
"package:front_end/src/source/source_procedure_builder.dart": (
- hitCount: 518,
+ hitCount: 524,
missCount: 0,
),
// 100.0%.