Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 6311f68

Browse files
johnniwintherCommit Bot
authored andcommitted
[cfe] Add SourceMemberBuilder and SourceFunctionBuilder
This is a step towards fully splitting DillMemberBuilder and its subclasses from the Source*Builder classes. Change-Id: I316c5c503c6d3ae86847340438b20c6f35009157 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/225725 Reviewed-by: Chloe Stefantsova <[email protected]> Commit-Queue: Johnni Winther <[email protected]>
1 parent b3a5dfa commit 6311f68

File tree

8 files changed

+35
-29
lines changed

8 files changed

+35
-29
lines changed

pkg/front_end/lib/src/fasta/builder/enum_builder.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -514,8 +514,8 @@ class EnumBuilder extends SourceClassBuilder {
514514
}
515515
}
516516

517-
ProcedureBuilder toStringBuilder =
518-
firstMemberNamed("toString") as ProcedureBuilder;
517+
SourceProcedureBuilder toStringBuilder =
518+
firstMemberNamed("toString") as SourceProcedureBuilder;
519519

520520
TypeBuilder supertypeBuilder = this.supertypeBuilder!;
521521
ClassBuilder enumClass = supertypeBuilder.declaration as ClassBuilder;

pkg/front_end/lib/src/fasta/builder/function_builder.dart

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ import 'type_variable_builder.dart';
4545

4646
/// Common base class for constructor and procedure builders.
4747
abstract class FunctionBuilder implements MemberBuilder {
48+
FunctionNode get function;
49+
}
50+
51+
abstract class SourceFunctionBuilder
52+
implements FunctionBuilder, SourceMemberBuilder {
4853
List<MetadataBuilder>? get metadata;
4954

5055
TypeBuilder? get returnType;
@@ -94,8 +99,6 @@ abstract class FunctionBuilder implements MemberBuilder {
9499

95100
String? get nativeMethodName;
96101

97-
FunctionNode get function;
98-
99102
Statement? get body;
100103

101104
void set body(Statement? newBody);
@@ -135,7 +138,7 @@ abstract class FunctionBuilder implements MemberBuilder {
135138

136139
/// Common base class for constructor and procedure builders.
137140
abstract class FunctionBuilderImpl extends MemberBuilderImpl
138-
implements FunctionBuilder {
141+
implements SourceFunctionBuilder {
139142
@override
140143
final List<MetadataBuilder>? metadata;
141144

pkg/front_end/lib/src/fasta/builder/member_builder.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,10 @@ abstract class MemberBuilder implements ModifierBuilder {
9898
List<ClassMember> get localSetters;
9999
}
100100

101+
abstract class SourceMemberBuilder implements MemberBuilder {}
102+
101103
abstract class MemberBuilderImpl extends ModifierBuilderImpl
102-
implements MemberBuilder {
104+
implements SourceMemberBuilder {
103105
/// For top-level members, the parent is set correctly during
104106
/// construction. However, for class members, the parent is initially the
105107
/// library and updated later.

pkg/front_end/lib/src/fasta/kernel/body_builder.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -939,7 +939,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
939939
}
940940

941941
void prepareInitializers() {
942-
FunctionBuilder member = this.member as FunctionBuilder;
942+
SourceFunctionBuilder member = this.member as SourceFunctionBuilder;
943943
scope = member.computeFormalParameterInitializerScope(scope);
944944
if (member is SourceConstructorBuilder) {
945945
member.prepareInitializers();
@@ -1054,7 +1054,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
10541054
}
10551055

10561056
DartType _computeReturnTypeContext(MemberBuilder member) {
1057-
if (member is ProcedureBuilder) {
1057+
if (member is SourceProcedureBuilder) {
10581058
final bool isReturnTypeUndeclared = member.returnType == null &&
10591059
member.function.returnType is DynamicType;
10601060
return isReturnTypeUndeclared && libraryBuilder.isNonNullableByDefault
@@ -1073,7 +1073,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
10731073
debugEvent("finishFunction");
10741074
typeInferrer.assignedVariables.finish();
10751075

1076-
final FunctionBuilder builder = member as FunctionBuilder;
1076+
final SourceFunctionBuilder builder = member as SourceFunctionBuilder;
10771077
if (extensionThis != null) {
10781078
typeInferrer.flowAnalysis.declare(extensionThis!, true);
10791079
}
@@ -1126,7 +1126,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
11261126
}
11271127
if (builder is SourceConstructorBuilder) {
11281128
finishConstructor(builder, asyncModifier, body);
1129-
} else if (builder is ProcedureBuilder) {
1129+
} else if (builder is SourceProcedureBuilder) {
11301130
builder.asyncModifier = asyncModifier;
11311131
} else if (builder is SourceFactoryBuilder) {
11321132
builder.asyncModifier = asyncModifier;
@@ -4163,7 +4163,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
41634163
if (!inCatchClause &&
41644164
functionNestingLevel == 0 &&
41654165
memberKind != MemberKind.GeneralizedFunctionType) {
4166-
FunctionBuilder member = this.member as FunctionBuilder;
4166+
SourceFunctionBuilder member = this.member as SourceFunctionBuilder;
41674167
parameter = member.getFormal(name!);
41684168
if (parameter == null) {
41694169
// This happens when the list of formals (originally) contains a

pkg/front_end/lib/src/fasta/source/source_class_builder.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ class SourceClassBuilder extends ClassBuilderImpl
550550
// Check fields.
551551
checkVarianceInField(builder, typeEnvironment, cls.typeParameters);
552552
library.checkTypesInField(builder, typeEnvironment);
553-
} else if (builder is ProcedureBuilder) {
553+
} else if (builder is SourceProcedureBuilder) {
554554
// Check procedures
555555
checkVarianceInFunction(
556556
builder.procedure, typeEnvironment, cls.typeParameters);
@@ -562,7 +562,7 @@ class SourceClassBuilder extends ClassBuilderImpl
562562
});
563563

564564
forEachConstructor((String name, MemberBuilder builder) {
565-
if (builder is ConstructorBuilder) {
565+
if (builder is SourceConstructorBuilder) {
566566
library.checkTypesInConstructorBuilder(builder, typeEnvironment);
567567
} else if (builder is RedirectingFactoryBuilder) {
568568
library.checkTypesInRedirectingFactoryBuilder(builder, typeEnvironment);

pkg/front_end/lib/src/fasta/source/source_extension_builder.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ class SourceExtensionBuilder extends ExtensionBuilderImpl {
262262
if (builder is SourceFieldBuilder) {
263263
// Check fields.
264264
library.checkTypesInField(builder, typeEnvironment);
265-
} else if (builder is ProcedureBuilder) {
265+
} else if (builder is SourceProcedureBuilder) {
266266
// Check procedures
267267
library.checkTypesInFunctionBuilder(builder, typeEnvironment);
268268
if (builder.isGetter) {

pkg/front_end/lib/src/fasta/source/source_library_builder.dart

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
186186

187187
final SourceLibraryBuilder? _origin;
188188

189-
final List<FunctionBuilder> nativeMethods = <FunctionBuilder>[];
189+
final List<SourceFunctionBuilder> nativeMethods = <SourceFunctionBuilder>[];
190190

191191
final List<TypeVariableBuilder> unboundTypeVariables =
192192
<TypeVariableBuilder>[];
@@ -2657,7 +2657,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
26572657
}
26582658
}
26592659
}
2660-
ProcedureBuilder procedureBuilder = new SourceProcedureBuilder(
2660+
SourceProcedureBuilder procedureBuilder = new SourceProcedureBuilder(
26612661
metadata,
26622662
modifiers,
26632663
returnType,
@@ -3302,7 +3302,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
33023302
return count;
33033303
}
33043304

3305-
void addNativeMethod(FunctionBuilder method) {
3305+
void addNativeMethod(SourceFunctionBuilder method) {
33063306
nativeMethods.add(method);
33073307
}
33083308

@@ -3316,7 +3316,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
33163316
}
33173317
}
33183318

3319-
for (FunctionBuilder method in nativeMethods) {
3319+
for (SourceFunctionBuilder method in nativeMethods) {
33203320
method.becomeNative(loader);
33213321
}
33223322
count += nativeMethods.length;
@@ -3678,9 +3678,9 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
36783678
inErrorRecovery: issues.isNotEmpty);
36793679
formals = member.formals;
36803680
} else {
3681-
assert(member is ConstructorBuilder,
3681+
assert(member is SourceConstructorBuilder,
36823682
"Unexpected constructor member (${member.runtimeType}).");
3683-
formals = (member as ConstructorBuilder).formals;
3683+
formals = (member as SourceConstructorBuilder).formals;
36843684
}
36853685
if (formals != null && formals.isNotEmpty) {
36863686
for (FormalParameterBuilder formal in formals) {
@@ -3694,7 +3694,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
36943694
});
36953695
}
36963696
declaration.forEach((String name, Builder member) {
3697-
if (member is ProcedureBuilder) {
3697+
if (member is SourceProcedureBuilder) {
36983698
List<NonSimplicityIssue> issues =
36993699
getNonSimplicityIssuesForTypeVariables(member.typeVariables);
37003700
if (member.formals != null && member.formals!.isNotEmpty) {
@@ -3733,7 +3733,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
37333733
count += computeDefaultTypesForVariables(declaration.typeVariables,
37343734
inErrorRecovery: issues.isNotEmpty);
37353735
_recursivelyReportGenericFunctionTypesAsBoundsForType(declaration.type);
3736-
} else if (declaration is FunctionBuilder) {
3736+
} else if (declaration is SourceFunctionBuilder) {
37373737
List<NonSimplicityIssue> issues =
37383738
getNonSimplicityIssuesForTypeVariables(declaration.typeVariables);
37393739
if (declaration.formals != null && declaration.formals!.isNotEmpty) {
@@ -3761,7 +3761,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
37613761
inErrorRecovery: issues.isNotEmpty);
37623762
}
37633763
declaration.forEach((String name, Builder member) {
3764-
if (member is ProcedureBuilder) {
3764+
if (member is SourceProcedureBuilder) {
37653765
List<NonSimplicityIssue> issues =
37663766
getNonSimplicityIssuesForTypeVariables(member.typeVariables);
37673767
if (member.formals != null && member.formals!.isNotEmpty) {
@@ -3809,10 +3809,10 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
38093809
for (Builder declaration
38103810
in _libraryTypeParameterScopeBuilder.setters!.values) {
38113811
assert(
3812-
declaration is ProcedureBuilder,
3812+
declaration is SourceProcedureBuilder,
38133813
"Expected setter to be a ProcedureBuilder, "
38143814
"but got '${declaration.runtimeType}'");
3815-
if (declaration is ProcedureBuilder &&
3815+
if (declaration is SourceProcedureBuilder &&
38163816
declaration.formals != null &&
38173817
declaration.formals!.isNotEmpty) {
38183818
for (FormalParameterBuilder formal in declaration.formals!) {
@@ -4235,7 +4235,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
42354235
}
42364236

42374237
void checkTypesInFunctionBuilder(
4238-
FunctionBuilder procedureBuilder, TypeEnvironment typeEnvironment) {
4238+
SourceFunctionBuilder procedureBuilder, TypeEnvironment typeEnvironment) {
42394239
checkBoundsInFunctionNode(
42404240
procedureBuilder.function, typeEnvironment, procedureBuilder.fileUri!);
42414241
if (procedureBuilder.formals != null &&
@@ -4245,7 +4245,8 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
42454245
}
42464246

42474247
void checkTypesInConstructorBuilder(
4248-
ConstructorBuilder constructorBuilder, TypeEnvironment typeEnvironment) {
4248+
SourceConstructorBuilder constructorBuilder,
4249+
TypeEnvironment typeEnvironment) {
42494250
checkBoundsInFunctionNode(
42504251
constructorBuilder.constructor.function, typeEnvironment, fileUri);
42514252
if (!constructorBuilder.isExternal && constructorBuilder.formals != null) {
@@ -4549,7 +4550,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
45494550
Builder declaration = iterator.current;
45504551
if (declaration is FieldBuilder) {
45514552
checkTypesInField(declaration, typeEnvironment);
4552-
} else if (declaration is ProcedureBuilder) {
4553+
} else if (declaration is SourceProcedureBuilder) {
45534554
checkTypesInFunctionBuilder(declaration, typeEnvironment);
45544555
if (declaration.isGetter) {
45554556
Builder? setterDeclaration =

pkg/front_end/test/extensions/extensions_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ class ExtensionsDataExtractor extends CfeDataExtractor<Features> {
240240
MemberBuilder memberBuilder = lookupMemberBuilder(compilerResult, member)!;
241241
Features features = new Features();
242242
features[Tags.builderName] = memberBuilder.name;
243-
if (memberBuilder is FunctionBuilder) {
243+
if (memberBuilder is SourceFunctionBuilder) {
244244
if (memberBuilder.formals != null) {
245245
for (FormalParameterBuilder parameter in memberBuilder.formals!) {
246246
if (parameter.isRequired) {

0 commit comments

Comments
 (0)