Index: pkg/compiler/lib/src/inferrer/type_graph_nodes.dart |
diff --git a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart |
index 3a62a544c2191e073cbdd61aa28282b2056ee591..5ecd80392f1b7042669e33bc8cab1a68e8a382e1 100644 |
--- a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart |
+++ b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart |
@@ -807,7 +807,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation { |
final TypeInformation receiver; |
/// Cached targets of this call. |
- Iterable<Element> targets; |
+ Iterable<MemberEntity> targets; |
DynamicCallSiteTypeInformation( |
MemberTypeInformation context, |
@@ -828,7 +828,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation { |
if (arguments != null) { |
arguments.forEach((info) => info.addUser(this)); |
} |
- for (Element element in targets) { |
+ for (MemberElement element in targets) { |
MemberTypeInformation callee = inferrer.types.getInferredTypeOf(element); |
callee.addCall(caller, call); |
callee.addUser(this); |
@@ -838,7 +838,8 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation { |
} |
} |
- Iterable<Element> get callees => targets.map((e) => e.implementation); |
+ Iterable<Element> get callees => |
+ targets.map((MemberElement e) => e.implementation); |
TypeMask computeTypedSelector(InferrerEngine inferrer) { |
TypeMask receiverType = receiver.type; |
@@ -853,7 +854,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation { |
} |
bool targetsIncludeComplexNoSuchMethod(InferrerEngine inferrer) { |
- return targets.any((Element e) { |
+ return targets.any((MemberElement e) { |
return e is MethodElement && |
e.isInstanceMember && |
e.name == Identifiers.noSuchMethod_ && |
@@ -970,7 +971,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation { |
} |
TypeMask computeType(InferrerEngine inferrer) { |
- Iterable<Element> oldTargets = targets; |
+ Iterable<MemberEntity> oldTargets = targets; |
TypeMask typeMask = computeTypedSelector(inferrer); |
inferrer.updateSelectorInTree(caller, call, selector, typeMask); |
@@ -986,7 +987,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation { |
// and a call to `delegate`), we iterate over all these methods to |
// update their parameter types. |
targets = inferrer.closedWorld.allFunctions.filter(selector, maskToUse); |
- Iterable<Element> typedTargets = canReachAll |
+ Iterable<MemberEntity> typedTargets = canReachAll |
? inferrer.closedWorld.allFunctions.filter(selector, typeMask) |
: targets; |
@@ -995,7 +996,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation { |
// Add calls to new targets to the graph. |
targets |
.where((target) => !oldTargets.contains(target)) |
- .forEach((element) { |
+ .forEach((MemberElement element) { |
MemberTypeInformation callee = |
inferrer.types.getInferredTypeOf(element); |
callee.addCall(caller, call); |
@@ -1008,7 +1009,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation { |
// Walk over the old targets, and remove calls that cannot happen anymore. |
oldTargets |
.where((target) => !targets.contains(target)) |
- .forEach((element) { |
+ .forEach((MemberElement element) { |
MemberTypeInformation callee = |
inferrer.types.getInferredTypeOf(element); |
callee.removeCall(caller, call); |
@@ -1021,7 +1022,8 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation { |
// Walk over the found targets, and compute the joined union type mask |
// for all these targets. |
- TypeMask result = inferrer.types.joinTypeMasks(targets.map((element) { |
+ TypeMask result = |
+ inferrer.types.joinTypeMasks(targets.map((MemberElement element) { |
// If [canReachAll] is true, then we are iterating over all |
// targets that satisfy the untyped selector. We skip the return |
// type of the targets that can only be reached through |
@@ -1081,9 +1083,9 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation { |
void giveUp(InferrerEngine inferrer, {bool clearAssignments: true}) { |
if (!abandonInferencing) { |
inferrer.updateSelectorInTree(caller, call, selector, mask); |
- Iterable<Element> oldTargets = targets; |
+ Iterable<MemberEntity> oldTargets = targets; |
targets = inferrer.closedWorld.allFunctions.filter(selector, mask); |
- for (Element element in targets) { |
+ for (MemberElement element in targets) { |
if (!oldTargets.contains(element)) { |
MemberTypeInformation callee = |
inferrer.types.getInferredTypeOf(element); |
@@ -1098,7 +1100,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation { |
} |
void removeAndClearReferences(InferrerEngine inferrer) { |
- for (Element element in targets) { |
+ for (MemberElement element in targets) { |
ElementTypeInformation callee = inferrer.types.getInferredTypeOf(element); |
callee.removeUser(this); |
} |
@@ -1116,8 +1118,8 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation { |
bool hasStableType(InferrerEngine inferrer) { |
return receiver.isStable && |
- targets.every( |
- (element) => inferrer.types.getInferredTypeOf(element).isStable) && |
+ targets.every((MemberElement element) => |
+ inferrer.types.getInferredTypeOf(element).isStable) && |
(arguments == null || arguments.every((info) => info.isStable)) && |
super.hasStableType(inferrer); |
} |