| Index: sdk/lib/_internal/compiler/implementation/ssa/builder.dart
|
| ===================================================================
|
| --- sdk/lib/_internal/compiler/implementation/ssa/builder.dart (revision 15008)
|
| +++ sdk/lib/_internal/compiler/implementation/ssa/builder.dart (working copy)
|
| @@ -2291,6 +2291,17 @@
|
| return result;
|
| }
|
|
|
| + Element getInterceptor(Send send, Selector selector) {
|
| + if (!methodInterceptionEnabled) return null;
|
| + if (!backend.isInterceptorClass(currentElement.getEnclosingClass())
|
| + && send.receiver == null) {
|
| + // The call applies to [:this:] which can not be an interceptor
|
| + // object.
|
| + return null;
|
| + }
|
| + return interceptors.getStaticInterceptor(selector);
|
| + }
|
| +
|
| void generateInstanceGetterWithCompiledReceiver(Send send,
|
| HInstruction receiver) {
|
| assert(Elements.isInstanceSend(send, elements));
|
| @@ -2302,10 +2313,8 @@
|
| : elements.getSelector(send.selector);
|
| assert(selector.isGetter());
|
| SourceString getterName = selector.name;
|
| - Element interceptor = null;
|
| - if (methodInterceptionEnabled) {
|
| - interceptor = interceptors.getStaticInterceptor(selector);
|
| - }
|
| + Element interceptor = getInterceptor(send, selector);
|
| +
|
| bool hasGetter = compiler.world.hasAnyUserDefinedGetter(selector);
|
| if (interceptor == backend.getInterceptorMethod && interceptor != null) {
|
| // If we're using an interceptor class, emit a call to the
|
| @@ -2386,10 +2395,7 @@
|
| Selector selector = elements.getSelector(send);
|
| assert(selector.isSetter());
|
| SourceString setterName = selector.name;
|
| - Element interceptor = null;
|
| - if (methodInterceptionEnabled) {
|
| - interceptor = interceptors.getStaticInterceptor(selector);
|
| - }
|
| + Element interceptor = getInterceptor(send, selector);
|
| bool hasSetter = compiler.world.hasAnyUserDefinedSetter(selector);
|
| if (interceptor != null && interceptor == backend.getInterceptorMethod) {
|
| compiler.internalError(
|
| @@ -2659,10 +2665,7 @@
|
| dartMethodName = node.selector.asIdentifier().source;
|
| }
|
|
|
| - Element interceptor = null;
|
| - if (methodInterceptionEnabled) {
|
| - interceptor = interceptors.getStaticInterceptor(selector);
|
| - }
|
| + Element interceptor = getInterceptor(node, selector);
|
|
|
| if (interceptor != null) {
|
| if (interceptor == backend.getInterceptorMethod) {
|
|
|