Skip to content

Commit 1207250

Browse files
johnniwintherCommit Queue
authored andcommitted
[cfe] Remove FormalParameterBuilder._parent
Change-Id: I6b4e6dbbdfa4b1a3dad82d622b17d521644eb8bf Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/398240 Reviewed-by: Jens Johansen <[email protected]> Commit-Queue: Johnni Winther <[email protected]>
1 parent d5cf7e2 commit 1207250

File tree

5 files changed

+29
-43
lines changed

5 files changed

+29
-43
lines changed

pkg/front_end/lib/src/builder/formal_parameter_builder.dart

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ import '../source/builder_factory.dart';
2020
import '../source/constructor_declaration.dart';
2121
import '../source/source_factory_builder.dart';
2222
import '../source/source_field_builder.dart';
23-
import '../source/source_function_builder.dart';
2423
import '../source/source_library_builder.dart';
2524
import 'builder.dart';
2625
import 'constructor_builder.dart';
2726
import 'declaration_builders.dart';
27+
import 'member_builder.dart';
2828
import 'omitted_type_builder.dart';
2929
import 'type_builder.dart';
3030
import 'variable_builder.dart';
@@ -53,8 +53,6 @@ class FormalParameterBuilder extends BuilderImpl
5353
implements VariableBuilder, ParameterBuilder, InferredTypeListener {
5454
static const String noNameSentinel = 'no name sentinel';
5555

56-
SourceFunctionBuilder? _parent;
57-
5856
@override
5957
final int fileOffset;
6058

@@ -107,15 +105,8 @@ class FormalParameterBuilder extends BuilderImpl
107105
}
108106

109107
@override
110-
SourceFunctionBuilder get parent {
111-
assert(_parent != null, "Parent has not been set for $this.");
112-
return _parent!;
113-
}
114-
115-
void set parent(SourceFunctionBuilder value) {
116-
assert(_parent == null, "Parent has already been set for $this.");
117-
_parent = value;
118-
}
108+
// Coverage-ignore(suite): Not run.
109+
Builder? get parent => null;
119110

120111
@override
121112
bool get isRequiredPositional => kind.isRequiredPositional;
@@ -200,7 +191,6 @@ class FormalParameterBuilder extends BuilderImpl
200191
fileUri: fileUri,
201192
isExtensionThis: isExtensionThis,
202193
hasImmediatelyDeclaredInitializer: hasImmediatelyDeclaredInitializer)
203-
.._parent = _parent
204194
..variable = variable;
205195
}
206196

@@ -215,7 +205,6 @@ class FormalParameterBuilder extends BuilderImpl
215205
fileUri: fileUri,
216206
isExtensionThis: isExtensionThis,
217207
hasImmediatelyDeclaredInitializer: hasImmediatelyDeclaredInitializer)
218-
..parent = parent
219208
..variable = variable;
220209
} else if (isSuperInitializingFormal) {
221210
return new FormalParameterBuilder(
@@ -227,7 +216,6 @@ class FormalParameterBuilder extends BuilderImpl
227216
fileUri: fileUri,
228217
isExtensionThis: isExtensionThis,
229218
hasImmediatelyDeclaredInitializer: hasImmediatelyDeclaredInitializer)
230-
..parent = parent
231219
..variable = variable;
232220
} else {
233221
return this;
@@ -249,7 +237,8 @@ class FormalParameterBuilder extends BuilderImpl
249237
}
250238
}
251239

252-
bool get needsDefaultValuesBuiltAsOutlineExpressions {
240+
static bool needsDefaultValuesBuiltAsOutlineExpressions(
241+
MemberBuilder memberBuilder) {
253242
// For modular compilation we need to include default values for optional
254243
// and named parameters in several cases:
255244
// * for const constructors to enable constant evaluation,
@@ -259,25 +248,27 @@ class FormalParameterBuilder extends BuilderImpl
259248
// in mixin applications, and
260249
// * for factories, to uphold the invariant that optional parameters always
261250
// have default values, even during modular compilation.
262-
if (parent is ConstructorBuilder) {
251+
if (memberBuilder is ConstructorBuilder) {
263252
return true;
264-
} else if (parent is SourceFactoryBuilder) {
265-
return parent.isFactory;
253+
} else if (memberBuilder is SourceFactoryBuilder) {
254+
return memberBuilder.isFactory;
266255
} else {
267-
return parent.isClassInstanceMember;
256+
return memberBuilder.isClassInstanceMember;
268257
}
269258
}
270259

271260
/// Builds the default value from this [initializerToken] if this is a
272261
/// formal parameter on a const constructor or instance method.
273-
void buildOutlineExpressions(SourceLibraryBuilder libraryBuilder) {
274-
if (needsDefaultValuesBuiltAsOutlineExpressions) {
262+
void buildOutlineExpressions(SourceLibraryBuilder libraryBuilder,
263+
DeclarationBuilder? declarationBuilder,
264+
{required bool buildDefaultValue}) {
265+
if (buildDefaultValue) {
275266
if (initializerToken != null) {
276-
final DeclarationBuilder declarationBuilder =
277-
parent.declarationBuilder!;
278-
LookupScope scope = declarationBuilder.scope;
279-
BodyBuilderContext bodyBuilderContext =
280-
new ParameterBodyBuilderContext(this);
267+
LookupScope scope =
268+
declarationBuilder?.scope ?? // Coverage-ignore(suite): Not run.
269+
libraryBuilder.scope;
270+
BodyBuilderContext bodyBuilderContext = new ParameterBodyBuilderContext(
271+
libraryBuilder, declarationBuilder, this);
281272
BodyBuilder bodyBuilder = libraryBuilder.loader
282273
.createBodyBuilderForOutlineExpression(
283274
libraryBuilder, bodyBuilderContext, scope, fileUri);

pkg/front_end/lib/src/kernel/body_builder_context.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,11 +1023,11 @@ class RedirectingFactoryBodyBuilderContext extends BodyBuilderContext
10231023

10241024
class ParameterBodyBuilderContext extends BodyBuilderContext {
10251025
factory ParameterBodyBuilderContext(
1026+
LibraryBuilder libraryBuilder,
1027+
DeclarationBuilder? declarationBuilder,
10261028
FormalParameterBuilder formalParameterBuilder) {
1027-
final DeclarationBuilder declarationBuilder =
1028-
formalParameterBuilder.parent.declarationBuilder!;
1029-
return new ParameterBodyBuilderContext._(declarationBuilder.libraryBuilder,
1030-
declarationBuilder, formalParameterBuilder);
1029+
return new ParameterBodyBuilderContext._(
1030+
libraryBuilder, declarationBuilder, formalParameterBuilder);
10311031
}
10321032

10331033
ParameterBodyBuilderContext._(

pkg/front_end/lib/src/source/source_enum_builder.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,14 +176,12 @@ class SourceEnumBuilder extends SourceClassBuilder {
176176
Modifiers.empty, stringType, "#name", fileOffset,
177177
fileUri: fileUri, hasImmediatelyDeclaredInitializer: false);
178178
member.formals!.insert(0, nameFormalParameterBuilder);
179-
nameFormalParameterBuilder.parent = member;
180179

181180
FormalParameterBuilder indexFormalParameterBuilder =
182181
new FormalParameterBuilder(FormalParameterKind.requiredPositional,
183182
Modifiers.empty, intType, "#index", fileOffset,
184183
fileUri: fileUri, hasImmediatelyDeclaredInitializer: false);
185184
member.formals!.insert(0, indexFormalParameterBuilder);
186-
indexFormalParameterBuilder.parent = member;
187185
}
188186
}
189187

pkg/front_end/lib/src/source/source_function_builder.dart

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,6 @@ abstract class SourceFunctionBuilderImpl extends SourceMemberBuilderImpl
143143
SourceFunctionBuilderImpl(this.metadata, this.modifiers, this.name,
144144
this.typeParameters, this.formals, this.nativeMethodName) {
145145
returnType.registerInferredTypeListener(this);
146-
if (formals != null) {
147-
for (int i = 0; i < formals!.length; i++) {
148-
formals![i].parent = this;
149-
}
150-
}
151146
}
152147

153148
@override
@@ -512,7 +507,9 @@ abstract class SourceFunctionBuilderImpl extends SourceMemberBuilderImpl
512507
// buildOutlineExpressions to clear initializerToken to prevent
513508
// consuming too much memory.
514509
for (FormalParameterBuilder formal in formals!) {
515-
formal.buildOutlineExpressions(libraryBuilder);
510+
formal.buildOutlineExpressions(libraryBuilder, declarationBuilder,
511+
buildDefaultValue: FormalParameterBuilder
512+
.needsDefaultValuesBuiltAsOutlineExpressions(this));
516513
}
517514
}
518515
hasBuiltOutlineExpressions = true;

pkg/front_end/test/coverage_suite_expected.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
290290
),
291291
// 100.0%.
292292
"package:front_end/src/builder/formal_parameter_builder.dart": (
293-
hitCount: 188,
293+
hitCount: 169,
294294
missCount: 0,
295295
),
296296
// 100.0%.
@@ -565,7 +565,7 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
565565
),
566566
// 100.0%.
567567
"package:front_end/src/kernel/body_builder_context.dart": (
568-
hitCount: 357,
568+
hitCount: 354,
569569
missCount: 0,
570570
),
571571
// 100.0%.
@@ -905,7 +905,7 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
905905
),
906906
// 100.0%.
907907
"package:front_end/src/source/source_enum_builder.dart": (
908-
hitCount: 517,
908+
hitCount: 515,
909909
missCount: 0,
910910
),
911911
// 100.0%.
@@ -931,7 +931,7 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
931931
),
932932
// 100.0%.
933933
"package:front_end/src/source/source_function_builder.dart": (
934-
hitCount: 345,
934+
hitCount: 339,
935935
missCount: 0,
936936
),
937937
// 100.0%.

0 commit comments

Comments
 (0)