@@ -2495,19 +2495,38 @@ private void appendFieldName(ASTNode parent, ITypeBinding declaringClass) {
24952495 buffer .append ("this.callbacks[\" " );
24962496 //buffer.append(shortenQualifiedName(name));
24972497 StringBuilder dollarBuilder = new StringBuilder ();
2498+ ArrayList <String > levels = new ArrayList <String >();
2499+ ArrayList <String > classes = new ArrayList <String >();
24982500 if (originalType != null ) {
2501+ levels .add (originalType .getBinaryName ());
2502+ classes .add (originalType .getSuperclass ().getBinaryName ());
24992503 ITypeBinding thisDeclaringClass = originalType .getDeclaringClass ();
25002504 while (thisDeclaringClass != null ) {
2505+ levels .add (thisDeclaringClass .getBinaryName ());
2506+ classes .add (thisDeclaringClass .getSuperclass ().getBinaryName ());
25012507 dollarBuilder .append ("$" );
25022508 thisDeclaringClass = thisDeclaringClass .getDeclaringClass ();
25032509 }
25042510 }
2505- declaringClass = declaringClass .getDeclaringClass ();
2506- while (declaringClass != null ) {
2507- if (dollarBuilder .length () > 0 ) {
2508- dollarBuilder .deleteCharAt (0 );
2511+ String binaryName = declaringClass .getBinaryName ();
2512+ int idx = levels .indexOf (binaryName );
2513+ if (idx == -1 ) {
2514+ idx = classes .indexOf (binaryName );
2515+ }
2516+ if (idx != -1 ) {
2517+ for (int i = idx + 1 ; i < levels .size (); i ++) {
2518+ if (dollarBuilder .length () > 0 ) {
2519+ dollarBuilder .deleteCharAt (0 );
2520+ }
25092521 }
2522+ } else {
25102523 declaringClass = declaringClass .getDeclaringClass ();
2524+ while (declaringClass != null ) {
2525+ if (dollarBuilder .length () > 0 ) {
2526+ dollarBuilder .deleteCharAt (0 );
2527+ }
2528+ declaringClass = declaringClass .getDeclaringClass ();
2529+ }
25112530 }
25122531 buffer .append (dollarBuilder );
25132532 buffer .append ("\" ]." );
0 commit comments