@@ -14,6 +14,7 @@ import '../constants/values.dart';
1414import '../elements/entities.dart' ;
1515import '../elements/types.dart' ;
1616import '../ir/util.dart' ;
17+ import '../js_backend/native_data.dart' ;
1718import '../kernel/element_map.dart' ;
1819import '../kernel/runtime_type_analysis.dart' ;
1920import '../options.dart' ;
@@ -58,6 +59,8 @@ class KernelImpactBuilder extends ir.Visitor {
5859
5960 CommonElements get commonElements => elementMap.commonElements;
6061
62+ NativeBasicData get _nativeBasicData => elementMap.nativeBasicData;
63+
6164 /// Add a checked-mode type use of [type] if it is not `dynamic` .
6265 DartType checkType (ir.DartType irType, TypeUseKind kind) {
6366 DartType type = elementMap.getDartType (irType);
@@ -117,7 +120,7 @@ class KernelImpactBuilder extends ir.Visitor {
117120 if (field.isInstanceMember &&
118121 elementMap.isNativeClass (field.enclosingClass)) {
119122 MemberEntity member = elementMap.getMember (field);
120- bool isJsInterop = elementMap.nativeBasicData .isJsInteropMember (member);
123+ bool isJsInterop = _nativeBasicData .isJsInteropMember (member);
121124 impactBuilder.registerNativeData (elementMap
122125 .getNativeBehaviorForFieldLoad (field, isJsInterop: isJsInterop));
123126 impactBuilder
@@ -132,7 +135,7 @@ class KernelImpactBuilder extends ir.Visitor {
132135 visitNode (constructor.function.body);
133136 MemberEntity member = elementMap.getMember (constructor);
134137 if (constructor.isExternal && ! commonElements.isForeignHelper (member)) {
135- bool isJsInterop = elementMap.nativeBasicData .isJsInteropMember (member);
138+ bool isJsInterop = _nativeBasicData .isJsInteropMember (member);
136139 impactBuilder.registerNativeData (elementMap
137140 .getNativeBehaviorForMethod (constructor, isJsInterop: isJsInterop));
138141 }
@@ -187,7 +190,7 @@ class KernelImpactBuilder extends ir.Visitor {
187190 handleAsyncMarker (procedure.function);
188191 MemberEntity member = elementMap.getMember (procedure);
189192 if (procedure.isExternal && ! commonElements.isForeignHelper (member)) {
190- bool isJsInterop = elementMap.nativeBasicData .isJsInteropMember (member);
193+ bool isJsInterop = _nativeBasicData .isJsInteropMember (member);
191194 impactBuilder.registerNativeData (elementMap
192195 .getNativeBehaviorForMethod (procedure, isJsInterop: isJsInterop));
193196 }
@@ -493,7 +496,8 @@ class KernelImpactBuilder extends ir.Visitor {
493496 // TODO(johnniwinther): Restrict the dynamic use to only match the known
494497 // target.
495498 // TODO(johnniwinther): Restrict this to subclasses?
496- Object constraint = new StrongModeConstraint (member.enclosingClass);
499+ Object constraint = new StrongModeConstraint (
500+ commonElements, _nativeBasicData, member.enclosingClass);
497501 impactBuilder.registerDynamicUse (new ConstrainedDynamicUse (
498502 new Selector .call (
499503 member.memberName, elementMap.getCallStructure (node.arguments)),
@@ -606,7 +610,8 @@ class KernelImpactBuilder extends ir.Visitor {
606610 Object constraint;
607611 DartType receiverType = elementMap.getStaticType (node.receiver);
608612 if (receiverType is InterfaceType ) {
609- constraint = new StrongModeConstraint (receiverType.element);
613+ constraint = new StrongModeConstraint (
614+ commonElements, _nativeBasicData, receiverType.element);
610615 }
611616
612617 if (interfaceTarget is ir.Field ||
@@ -621,7 +626,8 @@ class KernelImpactBuilder extends ir.Visitor {
621626 DartType receiverType =
622627 elementMap.getDartType (interfaceTarget.getterType);
623628 if (receiverType is InterfaceType ) {
624- getterConstraint = new StrongModeConstraint (receiverType.element);
629+ getterConstraint = new StrongModeConstraint (
630+ commonElements, _nativeBasicData, receiverType.element);
625631 }
626632 }
627633
@@ -641,7 +647,8 @@ class KernelImpactBuilder extends ir.Visitor {
641647 Object constraint;
642648 DartType receiverType = elementMap.getStaticType (node.receiver);
643649 if (receiverType is InterfaceType ) {
644- constraint = new StrongModeConstraint (receiverType.element);
650+ constraint = new StrongModeConstraint (
651+ commonElements, _nativeBasicData, receiverType.element);
645652 }
646653 impactBuilder.registerDynamicUse (new ConstrainedDynamicUse (
647654 new Selector .getter (elementMap.getName (node.name)),
@@ -680,7 +687,8 @@ class KernelImpactBuilder extends ir.Visitor {
680687 Object constraint;
681688 DartType receiverType = elementMap.getStaticType (node.receiver);
682689 if (receiverType is InterfaceType ) {
683- constraint = new StrongModeConstraint (receiverType.element);
690+ constraint = new StrongModeConstraint (
691+ commonElements, _nativeBasicData, receiverType.element);
684692 }
685693 impactBuilder.registerDynamicUse (new ConstrainedDynamicUse (
686694 new Selector .setter (elementMap.getName (node.name)),
0 commit comments