| Index: pkg/compiler/lib/src/js_backend/codegen/unsugar.dart
|
| diff --git a/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart b/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart
|
| index aa560120245f4bb17de3819344670be71add2986..6ac5781a5fee65a335af5ad6d7ac9b5c57ab2528 100644
|
| --- a/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart
|
| +++ b/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart
|
| @@ -6,9 +6,9 @@ import '../../cps_ir/cps_ir_nodes.dart';
|
| import '../../cps_ir/optimizers.dart';
|
| import '../../constants/expressions.dart';
|
| import '../../constants/values.dart';
|
| -import '../../elements/elements.dart' show ClassElement, FieldElement;
|
| +import '../../elements/elements.dart' show ClassElement, FieldElement, Element;
|
| import '../../js_backend/codegen/glue.dart';
|
| -import '../../dart2jslib.dart' show Selector;
|
| +import '../../dart2jslib.dart' show Selector, World;
|
|
|
| /// Rewrites the initial CPS IR to make Dart semantics explicit and inserts
|
| /// special nodes that respect JavaScript behavior.
|
| @@ -49,18 +49,14 @@ class UnsugarVisitor extends RecursiveVisitor {
|
|
|
| processInvokeMethod(InvokeMethod node) {
|
| Selector selector = node.selector;
|
| + // TODO(karlklose): should we rewrite all selectors?
|
| if (!_glue.isInterceptedSelector(selector)) return;
|
|
|
| - if (!selector.isCall && !selector.isOperator) {
|
| - // TODO(karlklose): handle special selectors.
|
| - return;
|
| - }
|
| -
|
| + Primitive receiver = node.receiver.definition;
|
| Set<ClassElement> interceptedClasses =
|
| _glue.getInterceptedClassesOn(selector);
|
| _glue.registerSpecializedGetInterceptor(interceptedClasses);
|
|
|
| - Primitive receiver = node.receiver.definition;
|
| Primitive intercepted = new Interceptor(receiver, interceptedClasses);
|
| insertLetPrim(intercepted, node);
|
| node.arguments.insert(0, node.receiver);
|
|
|