Index: pkg/compiler/lib/src/inferrer/builder.dart |
diff --git a/pkg/compiler/lib/src/inferrer/builder.dart b/pkg/compiler/lib/src/inferrer/builder.dart |
index 125472e1ce9d51a877ed6b597ce2b489fc9901c1..513897d973e080b7183a86674a8b793925de6ae1 100644 |
--- a/pkg/compiler/lib/src/inferrer/builder.dart |
+++ b/pkg/compiler/lib/src/inferrer/builder.dart |
@@ -1126,7 +1126,7 @@ class ElementGraphBuilder extends ast.Visitor<TypeInformation> |
}); |
return inferrer.concreteTypes.putIfAbsent(node, () { |
- return types.allocateClosure(node, element.callMethod); |
+ return types.allocateClosure(element.callMethod); |
}); |
} |
@@ -1135,7 +1135,7 @@ class ElementGraphBuilder extends ast.Visitor<TypeInformation> |
elements.getFunctionDefinition(node.function); |
TypeInformation type = |
inferrer.concreteTypes.putIfAbsent(node.function, () { |
- return types.allocateClosure(node.function, element.callMethod); |
+ return types.allocateClosure(element.callMethod); |
}); |
locals.update(element, type, node); |
visit(node.function); |
@@ -2754,7 +2754,9 @@ class ElementGraphBuilder extends ast.Visitor<TypeInformation> |
// its type by refining it with the potential targets of the |
// calls. |
ast.Send send = node.asSend(); |
+ bool isConditional = false; |
if (send != null) { |
+ isConditional = send.isConditional; |
ast.Node receiver = send.receiver; |
if (receiver != null) { |
Element element = elements[receiver]; |
@@ -2767,7 +2769,7 @@ class ElementGraphBuilder extends ast.Visitor<TypeInformation> |
} |
return inferrer.registerCalledSelector(node, selector, mask, receiverType, |
- outermostElement, arguments, sideEffects, inLoop); |
+ outermostElement, arguments, sideEffects, inLoop, isConditional); |
} |
TypeInformation handleDynamicInvoke(ast.Send node) { |