Revert the behavior change related to JsNoExport
Revert a change that was unintentionally submitted as part of an earlier
patch:
e775da6f902d932770c3737f44e948614c98a327
Change-Id: I52f4de736f6fb2f72c028f428c4097c3316d889a
diff --git a/dev/core/src/com/google/gwt/dev/javac/JSORestrictionsChecker.java b/dev/core/src/com/google/gwt/dev/javac/JSORestrictionsChecker.java
index ffc0809..c742559 100644
--- a/dev/core/src/com/google/gwt/dev/javac/JSORestrictionsChecker.java
+++ b/dev/core/src/com/google/gwt/dev/javac/JSORestrictionsChecker.java
@@ -253,8 +253,9 @@
}
}
Map<String, MethodBinding> methodSignatures = new HashMap<String, MethodBinding>();
+ Map<String, MethodBinding> noExports = new HashMap<String, MethodBinding>();
- checkJsTypeMethodsForOverloads(methodSignatures, binding);
+ checkJsTypeMethodsForOverloads(methodSignatures, noExports, binding);
for (MethodBinding mb : binding.methods()) {
checkJsProperty(mb, true);
}
@@ -332,10 +333,14 @@
}
private void checkJsTypeMethodsForOverloads(Map<String, MethodBinding> methodNamesAndSigs,
- ReferenceBinding binding) {
+ Map<String, MethodBinding> noExports, ReferenceBinding binding) {
if (isJsType(binding)) {
for (MethodBinding mb : binding.methods()) {
String methodName = String.valueOf(mb.selector);
+ if (JdtUtil.getAnnotation(mb, JsInteropUtil.JSNOEXPORT_CLASS) != null) {
+ noExports.put(methodName, mb);
+ continue;
+ }
if (mb.isConstructor() || mb.isStatic()) {
continue;
}
@@ -347,6 +352,10 @@
}
if (methodNamesAndSigs.containsKey(methodName)) {
if (!methodNamesAndSigs.get(methodName).areParameterErasuresEqual(mb)) {
+ if (noExports.containsKey(methodName)
+ && noExports.get(methodName).areParameterErasuresEqual(mb)) {
+ continue;
+ }
errorOn(mb, ERR_JSTYPE_OVERLOADS_NOT_ALLOWED);
}
} else {
@@ -355,7 +364,7 @@
}
}
for (ReferenceBinding rb : binding.superInterfaces()) {
- checkJsTypeMethodsForOverloads(methodNamesAndSigs, rb);
+ checkJsTypeMethodsForOverloads(methodNamesAndSigs, noExports, rb);
}
}