diff --git a/sources/net.sf.j2s.core/dist/dropins/net.sf.j2s.core.jar b/sources/net.sf.j2s.core/dist/dropins/net.sf.j2s.core.jar index a2090f30c..06d20c310 100644 Binary files a/sources/net.sf.j2s.core/dist/dropins/net.sf.j2s.core.jar and b/sources/net.sf.j2s.core/dist/dropins/net.sf.j2s.core.jar differ diff --git a/sources/net.sf.j2s.core/dist/net.sf.j2s.core_3.1.1.jar b/sources/net.sf.j2s.core/dist/net.sf.j2s.core_3.1.1.jar index a2090f30c..06d20c310 100644 Binary files a/sources/net.sf.j2s.core/dist/net.sf.j2s.core_3.1.1.jar and b/sources/net.sf.j2s.core/dist/net.sf.j2s.core_3.1.1.jar differ diff --git a/sources/net.sf.j2s.core/src/net/sf/j2s/core/astvisitors/Java2ScriptVisitor.java b/sources/net.sf.j2s.core/src/net/sf/j2s/core/astvisitors/Java2ScriptVisitor.java index 13a5c9493..143dc927a 100644 --- a/sources/net.sf.j2s.core/src/net/sf/j2s/core/astvisitors/Java2ScriptVisitor.java +++ b/sources/net.sf.j2s.core/src/net/sf/j2s/core/astvisitors/Java2ScriptVisitor.java @@ -3941,7 +3941,6 @@ private String getMethodNameOrArrayForDeclaration(MethodDeclaration node, IMetho // System.err.println("checking methodList for " + nodeName.toString() + // " in " + methodClass.getKey()); List methodList = getGenericMethodList(methodClass, nodeName.toString()); - if (methodList != null) { // System.err.println("have methodList for " + nodeName + " " + // methodList.size()); @@ -3955,7 +3954,7 @@ private String getMethodNameOrArrayForDeclaration(MethodDeclaration node, IMetho if (pname != null) names.add(pname); } - } else if (addUnqualified && !methodName.equals(qname)) { + } else if (addUnqualified && !methodName.equals(qname) && !classHasMethod(methodClass, methodName)) { names = new ArrayList(); names.add(methodName); } @@ -3970,6 +3969,20 @@ private String getMethodNameOrArrayForDeclaration(MethodDeclaration node, IMetho return "[" + qname.substring(1) + "]"; } + private static boolean classHasMethod(ITypeBinding methodClass, String methodName) { + while (methodClass != null) { + IMethodBinding[] methods = methodClass.getDeclaredMethods(); + for (int i = methods.length; --i >= 0;) { + IMethodBinding m = methods[i]; + if (m.getName().equals(methodName) && m.getParameterTypes().length == 0 + && !Modifier.isPrivate(m.getModifiers())) + return true; + } + methodClass = methodClass.getSuperclass(); + } + return false; + } + /** * Determine the qualified parameter suffix for method names, including * constructors.