@@ -221,23 +221,24 @@ private void addApplication() {
221221 apps .add (getQualifiedClassName ());
222222 }
223223
224- private void checkAddApplet (ITypeBinding binding ) {
224+ private boolean checkAddApplet (ITypeBinding binding ) {
225225 if (Modifier .isAbstract (binding .getModifiers ()))
226- return ;
226+ return false ;
227227 ITypeBinding b = binding ;
228228 while ((binding = binding .getSuperclass ()) != null ) {
229229 String name = binding .getQualifiedName ();
230230 if (!("javax.swing.JApplet" .equals (name ))) {
231231 if (name .startsWith ("java." ) || name .startsWith ("javax" ))
232- return ;
232+ return false ;
233233 continue ;
234234 }
235235 if (applets == null )
236236 applets = new ArrayList <String >();
237237 name = b .getQualifiedName ();
238238 applets .add (name );
239- break ;
239+ return true ;
240240 }
241+ return false ;
241242 }
242243
243244 public ArrayList <String > getAppList (boolean isApplets ) {
@@ -265,6 +266,8 @@ private void setInnerGlobals(Java2ScriptVisitor parent, ASTNode node, String vis
265266
266267 private ASTNode innerTypeNode ;
267268
269+ private boolean isUserApplet ;
270+
268271 public boolean visit (PackageDeclaration node ) {
269272 setMapJavaDoc (node );
270273 String name = node .getName ().toString ();
@@ -613,16 +616,18 @@ public boolean visit(MethodDeclaration node) {
613616 if (key != null )
614617 methodDeclareNameStack .push (key );
615618
616- boolean isStatic = isStatic ( node );
617- boolean isNative = Modifier .isNative (node . getModifiers () );
618-
619+ int mods = node . getModifiers ( );
620+ boolean isNative = Modifier .isNative (mods );
621+
619622 if (node .getBody () == null && !isNative ) {
620623 // Abstract method
621624 return false ;
622625 }
623626
627+ boolean isStatic = Modifier .isStatic (mods );
624628 boolean isConstructor = node .isConstructor ();
625- String name = getMethodNameOrArrayForDeclaration (node , mBinding , isConstructor );
629+ boolean addUnqualified = isUserApplet && !isConstructor && !isStatic && Modifier .isPublic (mods );
630+ String name = getMethodNameOrArrayForDeclaration (node , mBinding , isConstructor , addUnqualified );
626631 if (isConstructor && name .equals ("'c$'" ) || mBinding .isVarargs () && mBinding .getParameterTypes ().length == 1 )
627632 haveDefaultConstructor = true ; // in case we are not qualifying
628633 // names here
@@ -1100,7 +1105,7 @@ private boolean addClassOrInterface(ASTNode node, ITypeBinding binding, List<?>
11001105 // check for a JApplet
11011106
11021107 if (isTopLevel && !isEnum ) {
1103- checkAddApplet (binding );
1108+ isUserApplet = checkAddApplet (binding );
11041109 }
11051110
11061111 // add the anonymous wrapper if needed
@@ -2050,10 +2055,10 @@ public boolean visit(Assignment node) {
20502055 left .accept (this );
20512056 switch (op ) {
20522057 case "|=" :
2053- buffer .append ("|| " );
2058+ buffer .append ("|" ); // surprise! | not ||
20542059 break ;
20552060 case "&=" :
2056- buffer .append ("&& " );
2061+ buffer .append ("&" ); // & not &&
20572062 break ;
20582063 default :
20592064 case "^=" :
@@ -3927,10 +3932,10 @@ private static void addGenericClassMethod(String classKey, String methodName, St
39273932 * @return j2s-qualified name or an array of j2s-qualified names
39283933 */
39293934 private String getMethodNameOrArrayForDeclaration (MethodDeclaration node , IMethodBinding mBinding ,
3930- boolean isConstructor ) {
3935+ boolean isConstructor , boolean addUnqualified ) {
39313936 SimpleName nodeName = node .getName ();
39323937 String methodName = (isConstructor ? "c$" : NameMapper .getJ2SName (nodeName ));
3933- String name = getJ2SQualifiedName (methodName , null , mBinding , null , false );
3938+ String qname = getJ2SQualifiedName (methodName , null , mBinding , null , false );
39343939 ITypeBinding methodClass = mBinding .getDeclaringClass ();
39353940 List <String > names = null ;
39363941 // System.err.println("checking methodList for " + nodeName.toString() +
@@ -3950,16 +3955,19 @@ private String getMethodNameOrArrayForDeclaration(MethodDeclaration node, IMetho
39503955 if (pname != null )
39513956 names .add (pname );
39523957 }
3958+ } else if (addUnqualified && !methodName .equals (qname )) {
3959+ names = new ArrayList <String >();
3960+ names .add (methodName );
39533961 }
39543962 if (names == null || names .size () == 0 )
3955- return "'" + name + "'" ;
3956- name = ",'" + name + "'" ;
3963+ return "'" + qname + "'" ;
3964+ qname = ",'" + qname + "'" ;
39573965 for (int i = names .size (); --i >= 0 ;) {
39583966 String next = ",'" + names .get (i ) + "'" ;
3959- if (name .indexOf (next ) < 0 )
3960- name += next ;
3967+ if (qname .indexOf (next ) < 0 )
3968+ qname += next ;
39613969 }
3962- return "[" + name .substring (1 ) + "]" ;
3970+ return "[" + qname .substring (1 ) + "]" ;
39633971 }
39643972
39653973 /**
0 commit comments