Index: pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart |
diff --git a/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart b/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart |
index 9efa6020b2cd60dee2648d33178477ad6ff4b2a1..c36a394fa77728ca74c897c41f76bff613d5c370 100644 |
--- a/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart |
+++ b/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart |
@@ -581,6 +581,14 @@ class Builder implements cps_ir.Visitor/*<NodeCallback|Node>*/ { |
} |
Expression visitInvokeMethod(cps_ir.InvokeMethod node) { |
+ if (node.callingConvention == cps_ir.CallingConvention.OneShotIntercepted) { |
+ List<Expression> arguments = new List.generate( |
+ 1 + node.arguments.length, |
+ (n) => getVariableUse(n == 0 ? node.receiver : node.arguments[n - 1]), |
+ growable: false); |
+ return new OneShotInterceptor(node.selector, node.mask, arguments, |
+ node.sourceInformation); |
+ } |
InvokeMethod invoke = new InvokeMethod( |
getVariableUse(node.receiver), |
node.selector, |