@@ -48,14 +48,11 @@ class KernelImpactBuilder extends ir.Visitor {
48
48
final DiagnosticReporter reporter;
49
49
final CompilerOptions _options;
50
50
final MemberEntity currentMember;
51
- _ClassEnsurer classEnsurer;
52
51
53
52
KernelImpactBuilder (
54
53
this .elementMap, this .currentMember, this .reporter, this ._options)
55
54
: this .impactBuilder =
56
- new ResolutionWorldImpactBuilder ('${currentMember }' ) {
57
- this .classEnsurer = new _ClassEnsurer (this , this .elementMap.types);
58
- }
55
+ new ResolutionWorldImpactBuilder ('${currentMember }' );
59
56
60
57
CommonElements get commonElements => elementMap.commonElements;
61
58
@@ -79,23 +76,16 @@ class KernelImpactBuilder extends ir.Visitor {
79
76
return type;
80
77
}
81
78
82
- void registerSeenClasses (ir.DartType irType) {
83
- DartType type = elementMap.getDartType (irType);
84
- classEnsurer.ensureClassesInType (type);
85
- }
86
-
87
79
/// Add checked-mode type use for the parameter type and constant for the
88
80
/// default value of [parameter] .
89
81
void handleParameter (ir.VariableDeclaration parameter) {
90
82
checkType (parameter.type, TypeUseKind .PARAMETER_CHECK );
91
- registerSeenClasses (parameter.type);
92
83
visitNode (parameter.initializer);
93
84
}
94
85
95
86
/// Add checked-mode type use for parameter and return types, and add
96
87
/// constants for default values.
97
88
void handleSignature (ir.FunctionNode node) {
98
- registerSeenClasses (node.returnType);
99
89
node.positionalParameters.forEach (handleParameter);
100
90
node.namedParameters.forEach (handleParameter);
101
91
for (ir.TypeParameter parameter in node.typeParameters) {
@@ -105,7 +95,6 @@ class KernelImpactBuilder extends ir.Visitor {
105
95
106
96
ResolutionImpact buildField (ir.Field field) {
107
97
checkType (field.type, TypeUseKind .PARAMETER_CHECK );
108
- registerSeenClasses (field.type);
109
98
if (field.initializer != null ) {
110
99
visitNode (field.initializer);
111
100
if (! field.isInstanceMember &&
@@ -261,7 +250,6 @@ class KernelImpactBuilder extends ir.Visitor {
261
250
void visitListLiteral (ir.ListLiteral literal) {
262
251
visitNodes (literal.expressions);
263
252
DartType elementType = elementMap.getDartType (literal.typeArgument);
264
- registerSeenClasses (literal.typeArgument);
265
253
266
254
impactBuilder.registerListLiteral (new ListLiteralUse (
267
255
commonElements.listType (elementType),
@@ -274,8 +262,6 @@ class KernelImpactBuilder extends ir.Visitor {
274
262
visitNodes (literal.entries);
275
263
DartType keyType = elementMap.getDartType (literal.keyType);
276
264
DartType valueType = elementMap.getDartType (literal.valueType);
277
- registerSeenClasses (literal.keyType);
278
- registerSeenClasses (literal.valueType);
279
265
impactBuilder.registerMapLiteral (new MapLiteralUse (
280
266
commonElements.mapType (keyType, valueType),
281
267
isConstant: literal.isConst,
@@ -326,7 +312,6 @@ class KernelImpactBuilder extends ir.Visitor {
326
312
327
313
InterfaceType type = elementMap.createInterfaceType (
328
314
target.enclosingClass, node.arguments.types);
329
- classEnsurer.ensureClassesInType (type);
330
315
CallStructure callStructure = elementMap.getCallStructure (node.arguments);
331
316
impactBuilder.registerStaticUse (isConst
332
317
? new StaticUse .constConstructorInvoke (constructor, callStructure, type)
@@ -456,7 +441,6 @@ class KernelImpactBuilder extends ir.Visitor {
456
441
@override
457
442
void visitStaticGet (ir.StaticGet node) {
458
443
ir.Member target = node.target;
459
- registerSeenClasses (target.getterType);
460
444
if (target is ir.Procedure && target.kind == ir.ProcedureKind .Method ) {
461
445
FunctionEntity method = elementMap.getMethod (target);
462
446
impactBuilder.registerStaticUse (new StaticUse .staticTearOff (method));
@@ -470,7 +454,6 @@ class KernelImpactBuilder extends ir.Visitor {
470
454
void visitStaticSet (ir.StaticSet node) {
471
455
visitNode (node.value);
472
456
MemberEntity member = elementMap.getMember (node.target);
473
- registerSeenClasses (node.target.setterType);
474
457
impactBuilder.registerStaticUse (new StaticUse .staticSet (member));
475
458
}
476
459
@@ -739,7 +722,6 @@ class KernelImpactBuilder extends ir.Visitor {
739
722
740
723
@override
741
724
void visitVariableDeclaration (ir.VariableDeclaration node) {
742
- registerSeenClasses (node.type);
743
725
if (node.initializer != null ) {
744
726
visitNode (node.initializer);
745
727
} else {
@@ -751,7 +733,6 @@ class KernelImpactBuilder extends ir.Visitor {
751
733
void visitIsExpression (ir.IsExpression node) {
752
734
impactBuilder.registerTypeUse (
753
735
new TypeUse .isCheck (elementMap.getDartType (node.type)));
754
- registerSeenClasses (node.type);
755
736
visitNode (node.operand);
756
737
}
757
738
@@ -763,7 +744,6 @@ class KernelImpactBuilder extends ir.Visitor {
763
744
} else {
764
745
impactBuilder.registerTypeUse (new TypeUse .asCast (type));
765
746
}
766
- registerSeenClasses (node.type);
767
747
visitNode (node.operand);
768
748
}
769
749
@@ -856,53 +836,3 @@ class KernelImpactBuilder extends ir.Visitor {
856
836
@override
857
837
void defaultNode (ir.Node node) => node.visitChildren (this );
858
838
}
859
-
860
- class _ClassEnsurer extends BaseDartTypeVisitor <dynamic , Null > {
861
- final KernelImpactBuilder builder;
862
- final DartTypes types;
863
- final seenTypes = new Set <InterfaceType >();
864
-
865
- _ClassEnsurer (this .builder, this .types);
866
-
867
- void ensureClassesInType (DartType type) {
868
- seenTypes.clear ();
869
- type.accept (this , null );
870
- }
871
-
872
- @override
873
- visitType (DartType type, _) {}
874
-
875
- @override
876
- visitFunctionType (FunctionType type, _) {
877
- type.returnType.accept (this , null );
878
- type.parameterTypes.forEach ((t) {
879
- t.accept (this , null );
880
- });
881
- type.optionalParameterTypes.forEach ((t) {
882
- t.accept (this , null );
883
- });
884
- type.namedParameterTypes.forEach ((t) {
885
- t.accept (this , null );
886
- });
887
- }
888
-
889
- @override
890
- visitInterfaceType (InterfaceType type, _) {
891
- if (! seenTypes.add (type)) {
892
- return ;
893
- }
894
- builder.impactBuilder.registerSeenClass (type.element);
895
- type.typeArguments.forEach ((t) {
896
- t.accept (this , null );
897
- });
898
- var supertype = types.getSupertype (type.element);
899
- supertype? .accept (this , null );
900
- }
901
-
902
- @override
903
- visitTypedefType (TypedefType type, _) {
904
- type.typeArguments.forEach ((t) {
905
- t.accept (this , null );
906
- });
907
- }
908
- }
0 commit comments