Index: pkg/compiler/lib/src/native/resolver.dart |
diff --git a/pkg/compiler/lib/src/native/resolver.dart b/pkg/compiler/lib/src/native/resolver.dart |
index b4da28b51b0f736e3fb92a2bd9e886279ed1ff5a..ab9d11f31cf5b1b0f74fcbfd564d0fbbab506403 100644 |
--- a/pkg/compiler/lib/src/native/resolver.dart |
+++ b/pkg/compiler/lib/src/native/resolver.dart |
@@ -12,6 +12,7 @@ import '../elements/elements.dart' |
show |
ClassElement, |
Element, |
+ FieldElement, |
LibraryElement, |
MemberElement, |
MetadataAnnotation, |
@@ -70,24 +71,25 @@ class NativeDataResolverImpl implements NativeDataResolver { |
element.isConstructor || |
element.isGetter || |
element.isSetter) { |
- bool isNative = _processMethodAnnotations(element); |
+ MethodElement method = element; |
+ bool isNative = _processMethodAnnotations(method); |
if (isNative || isJsInterop) { |
NativeBehavior behavior = NativeBehavior |
- .ofMethodElement(element, _compiler, isJsInterop: isJsInterop); |
- _nativeDataBuilder.setNativeMethodBehavior(element, behavior); |
+ .ofMethodElement(method, _compiler, isJsInterop: isJsInterop); |
+ _nativeDataBuilder.setNativeMethodBehavior(method, behavior); |
registry.registerNativeData(behavior); |
} |
} else if (element.isField) { |
- bool isNative = _processFieldAnnotations(element); |
+ FieldElement field = element; |
+ bool isNative = _processFieldAnnotations(field); |
if (isNative || isJsInterop) { |
NativeBehavior fieldLoadBehavior = NativeBehavior |
- .ofFieldElementLoad(element, _compiler, isJsInterop: isJsInterop); |
+ .ofFieldElementLoad(field, _compiler, isJsInterop: isJsInterop); |
NativeBehavior fieldStoreBehavior = |
- NativeBehavior.ofFieldElementStore(element, _compiler); |
- _nativeDataBuilder.setNativeFieldLoadBehavior( |
- element, fieldLoadBehavior); |
+ NativeBehavior.ofFieldElementStore(field, _compiler); |
+ _nativeDataBuilder.setNativeFieldLoadBehavior(field, fieldLoadBehavior); |
_nativeDataBuilder.setNativeFieldStoreBehavior( |
- element, fieldStoreBehavior); |
+ field, fieldStoreBehavior); |
// TODO(sra): Process fields for storing separately. |
// We have to handle both loading and storing to the field because we |
@@ -247,9 +249,10 @@ class NativeAnnotationHandler extends EagerAnnotationHandler<String> { |
String apply( |
Compiler compiler, Element element, MetadataAnnotation annotation) { |
if (element.isClass) { |
+ ClassElement cls = element; |
String native = getNativeAnnotation(annotation); |
if (native != null) { |
- _nativeClassDataBuilder.setNativeClassTagInfo(element, native); |
+ _nativeClassDataBuilder.setNativeClassTagInfo(cls, native); |
return native; |
} |
} |
@@ -280,8 +283,9 @@ void checkJsInteropClassAnnotations(Compiler compiler, LibraryElement library, |
} |
library.forEachLocalMember((Element element) { |
if (element.isClass) { |
+ ClassElement cls = element; |
if (checkJsInteropAnnotation(element)) { |
- nativeClassDataBuilder.markAsJsInteropClass(element); |
+ nativeClassDataBuilder.markAsJsInteropClass(cls); |
} |
} |
}); |