@@ -2495,19 +2495,38 @@ private void appendFieldName(ASTNode parent, ITypeBinding declaringClass) {
2495
2495
buffer .append ("this.callbacks[\" " );
2496
2496
//buffer.append(shortenQualifiedName(name));
2497
2497
StringBuilder dollarBuilder = new StringBuilder ();
2498
+ ArrayList <String > levels = new ArrayList <String >();
2499
+ ArrayList <String > classes = new ArrayList <String >();
2498
2500
if (originalType != null ) {
2501
+ levels .add (originalType .getBinaryName ());
2502
+ classes .add (originalType .getSuperclass ().getBinaryName ());
2499
2503
ITypeBinding thisDeclaringClass = originalType .getDeclaringClass ();
2500
2504
while (thisDeclaringClass != null ) {
2505
+ levels .add (thisDeclaringClass .getBinaryName ());
2506
+ classes .add (thisDeclaringClass .getSuperclass ().getBinaryName ());
2501
2507
dollarBuilder .append ("$" );
2502
2508
thisDeclaringClass = thisDeclaringClass .getDeclaringClass ();
2503
2509
}
2504
2510
}
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
+ }
2509
2521
}
2522
+ } else {
2510
2523
declaringClass = declaringClass .getDeclaringClass ();
2524
+ while (declaringClass != null ) {
2525
+ if (dollarBuilder .length () > 0 ) {
2526
+ dollarBuilder .deleteCharAt (0 );
2527
+ }
2528
+ declaringClass = declaringClass .getDeclaringClass ();
2529
+ }
2511
2530
}
2512
2531
buffer .append (dollarBuilder );
2513
2532
buffer .append ("\" ]." );
0 commit comments