| Index: pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| diff --git a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| index 67203061c4ba74b5f07c55a903933888fc4232bf..ec9ff8d303853f0cc3b7d224b10b80ae76237691 100644
|
| --- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| +++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| @@ -185,10 +185,26 @@ class CodeGenerator extends tree_ir.Visitor<dynamic, js.Expression> {
|
| return buildStaticInvoke(node.selector, node.target, node.arguments);
|
| }
|
|
|
| + void registerMethodInvoke(tree_ir.InvokeMethod node) {
|
| + Selector selector = node.selector;
|
| + // TODO(sigurdm): We should find a better place to register the call.
|
| + Selector call = new Selector.callClosureFrom(selector);
|
| + registry.registerDynamicInvocation(call);
|
| + registry.registerDynamicInvocation(selector);
|
| + }
|
| +
|
| @override
|
| js.Expression visitInvokeMethod(tree_ir.InvokeMethod node) {
|
| - return giveup(node);
|
| - // TODO: implement visitInvokeMethod
|
| + // TODO(sigurdm): Handle intercepted invocations.
|
| + if (glue.isIntercepted(node.selector)) giveup(node);
|
| + js.Expression receiver = visitExpression(node.receiver);
|
| +
|
| + List<js.Expression> arguments = visitArguments(node.arguments);
|
| +
|
| + String methodName = glue.invocationName(node.selector);
|
| + registerMethodInvoke(node);
|
| +
|
| + return js.propertyCall(receiver, methodName, arguments);
|
| }
|
|
|
| @override
|
|
|