Skip to content

Commit 6d0ff95

Browse files
johnniwintherCommit Queue
authored andcommitted
[cfe] Remove _BodyBuilderCloner
Cloning is only performed on fully inferred expressions so we no longer need the specialized cloner. `_BodyBuilderCloner` is removed along with the unused `isOrphaned` method and `_FindChildVisitor`. Change-Id: I9fa2ca519af95d5d6bb2c116da3163eb552792f5 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/448201 Commit-Queue: Johnni Winther <[email protected]> Reviewed-by: Chloe Stefantsova <[email protected]>
1 parent d763d7f commit 6d0ff95

File tree

3 files changed

+7
-102
lines changed

3 files changed

+7
-102
lines changed

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ class BodyBuilder extends StackListenerImpl
279279

280280
final LocalStack<LabelScope?> _switchScopes = new LocalStack([]);
281281

282-
late _BodyBuilderCloner _cloner = new _BodyBuilderCloner(this);
282+
late CloneVisitorNotMembers _simpleCloner = new CloneVisitorNotMembers();
283283

284284
@override
285285
ConstantContext constantContext = ConstantContext.none;
@@ -1381,7 +1381,7 @@ class BodyBuilder extends StackListenerImpl
13811381
i,
13821382
);
13831383
if (tearOffParameter != null) {
1384-
Expression tearOffInitializer = _cloner.cloneInContext(
1384+
Expression tearOffInitializer = _simpleCloner.cloneInContext(
13851385
initializer!,
13861386
);
13871387
tearOffParameter.initializer = tearOffInitializer
@@ -1785,7 +1785,9 @@ class BodyBuilder extends StackListenerImpl
17851785
for (int i = 1; i < variables.length; i++) {
17861786
VariableDeclaration variable = variables[i];
17871787
for (int i = 0; i < annotations.length; i++) {
1788-
variable.addAnnotation(_cloner.cloneInContext(annotations[i]));
1788+
variable.addAnnotation(
1789+
_simpleCloner.cloneInContext(annotations[i]),
1790+
);
17891791
}
17901792
}
17911793
}

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

Lines changed: 0 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -402,105 +402,6 @@ class ForInElements {
402402
(explicitVariableDeclaration ?? syntheticVariableDeclaration)!;
403403
}
404404

405-
class _BodyBuilderCloner extends CloneVisitorNotMembers {
406-
final BodyBuilder bodyBuilder;
407-
408-
_BodyBuilderCloner(this.bodyBuilder);
409-
410-
@override
411-
// Coverage-ignore(suite): Not run.
412-
TreeNode visitStaticInvocation(StaticInvocation node) {
413-
if (node is FactoryConstructorInvocation) {
414-
FactoryConstructorInvocation result = new FactoryConstructorInvocation(
415-
node.target,
416-
clone(node.arguments),
417-
isConst: node.isConst,
418-
)..hasBeenInferred = node.hasBeenInferred;
419-
return result;
420-
} else if (node is TypeAliasedFactoryInvocation) {
421-
TypeAliasedFactoryInvocation result = new TypeAliasedFactoryInvocation(
422-
node.typeAliasBuilder,
423-
node.target,
424-
clone(node.arguments),
425-
isConst: node.isConst,
426-
)..hasBeenInferred = node.hasBeenInferred;
427-
return result;
428-
}
429-
return super.visitStaticInvocation(node);
430-
}
431-
432-
@override
433-
TreeNode visitConstructorInvocation(ConstructorInvocation node) {
434-
if (node is TypeAliasedConstructorInvocation) {
435-
// Coverage-ignore-block(suite): Not run.
436-
TypeAliasedConstructorInvocation result =
437-
new TypeAliasedConstructorInvocation(
438-
node.typeAliasBuilder,
439-
node.target,
440-
clone(node.arguments),
441-
isConst: node.isConst,
442-
)..hasBeenInferred = node.hasBeenInferred;
443-
return result;
444-
}
445-
return super.visitConstructorInvocation(node);
446-
}
447-
448-
@override
449-
TreeNode visitArguments(Arguments node) {
450-
if (node is ArgumentsImpl) {
451-
return ArgumentsImpl.clone(
452-
node,
453-
node.positional.map(clone).toList(),
454-
node.named.map(clone).toList(),
455-
node.types.map(visitType).toList(),
456-
);
457-
}
458-
return super.visitArguments(node);
459-
}
460-
}
461-
462-
// Coverage-ignore(suite): Not run.
463-
/// Returns `true` if [node] is not part of its parent member.
464-
///
465-
/// This computation is costly and should only be used in assertions to verify
466-
/// that [node] has been removed from the AST.
467-
bool isOrphaned(TreeNode node) {
468-
TreeNode? parent = node;
469-
Member? member;
470-
while (parent != null) {
471-
if (parent is Member) {
472-
member = parent;
473-
break;
474-
}
475-
parent = parent.parent;
476-
}
477-
if (member == null) {
478-
return true;
479-
}
480-
_FindChildVisitor visitor = new _FindChildVisitor(node);
481-
member.accept(visitor);
482-
return !visitor.foundNode;
483-
}
484-
485-
// Coverage-ignore(suite): Not run.
486-
class _FindChildVisitor extends VisitorDefault<void> with VisitorVoidMixin {
487-
final TreeNode soughtNode;
488-
bool foundNode = false;
489-
490-
_FindChildVisitor(this.soughtNode);
491-
492-
@override
493-
void defaultNode(Node node) {
494-
if (!foundNode) {
495-
if (identical(node, soughtNode)) {
496-
foundNode = true;
497-
} else {
498-
node.visitChildren(this);
499-
}
500-
}
501-
}
502-
}
503-
504405
class Condition {
505406
final Expression expression;
506407
final PatternGuard? patternGuard;

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,7 @@ class ArgumentsImpl extends Arguments {
436436
/// super-positional, the field is null.
437437
Set<String>? namedSuperParameterNames;
438438

439+
// Coverage-ignore(suite): Not run.
439440
ArgumentsImpl.internal({
440441
required List<Expression> positional,
441442
required List<DartType>? types,
@@ -503,6 +504,7 @@ class ArgumentsImpl extends Arguments {
503504
..addAll(_normalizeTypeArguments(typeParameterCount, typeArguments)),
504505
);
505506

507+
// Coverage-ignore(suite): Not run.
506508
static ArgumentsImpl clone(
507509
ArgumentsImpl node,
508510
List<Expression> positional,

0 commit comments

Comments
 (0)