Restore some behavior for old annotations.
The regression was introduced in
64e3270a9a02eea66fb9beab9e423a14f60b6cec
Change-Id: I3f27ea193f54b50ed8d1b1a69098f42c4274cb32
diff --git a/dev/core/src/com/google/gwt/dev/javac/JsInteropUtil.java b/dev/core/src/com/google/gwt/dev/javac/JsInteropUtil.java
index 87dd845..b3ba633 100644
--- a/dev/core/src/com/google/gwt/dev/javac/JsInteropUtil.java
+++ b/dev/core/src/com/google/gwt/dev/javac/JsInteropUtil.java
@@ -54,7 +54,8 @@
exportName = jsPrototype.substring(indexOf + 1);
}
boolean isJsType = jsType != null;
- boolean isClassWideExport = JdtUtil.getAnnotation(annotations, JSEXPORT_CLASS) != null;
+ boolean isClassWideExport =
+ isJsNative || JdtUtil.getAnnotation(annotations, JSEXPORT_CLASS) != null;
boolean isJsFunction = JdtUtil.getAnnotation(annotations, JSFUNCTION_CLASS) != null;
boolean canBeImplementedExternally =
(type instanceof JInterfaceType && (isJsType || isJsFunction))
@@ -116,19 +117,21 @@
private static void setJsInteropProperties(
JMember member, Annotation[] annotations, boolean isPropertyAccessor) {
boolean hasExport = JdtUtil.getAnnotation(annotations, JSEXPORT_CLASS) != null;
+ JsMemberType memberType = getJsMemberType(member, isPropertyAccessor);
+ String namespace = maybeGetJsNamespace(annotations);
+ String exportName = maybeGetJsExportName(annotations);
+ if (hasExport) {
+ member.setJsMemberInfo(memberType, namespace, exportName, true);
+ return;
+ }
/* Apply class wide JsInterop annotations */
boolean ignore = JdtUtil.getAnnotation(annotations, JSNOEXPORT_CLASS) != null;
- if (ignore || (!member.isPublic() && !isNativeConstructor(member)) || !hasExport) {
+ if (ignore || (!member.isPublic() && !isNativeConstructor(member)) || hasExport) {
return;
}
- String namespace = maybeGetJsNamespace(annotations);
- String exportName = maybeGetJsExportName(annotations);
- JsMemberType memberType = getJsMemberType(member, isPropertyAccessor);
- member.setJsMemberInfo(memberType, namespace, exportName, hasExport);
-
JDeclaredType enclosingType = member.getEnclosingType();
if (enclosingType.isJsType() && member.needsDynamicDispatch()) {