| // This test case once showed that `f[0].execute(x)' woudln't be |
| // expanded properly, attempting to retrieve this$0 to be used in |
| // place of `f[0]'. |
| |
| abstract class A { |
| abstract public void execute(C x); |
| } |
| |
| class C {} |
| |
| class Z extends A { |
| public void execute (C x) { |
| System.out.println ("Z.execute"); |
| } |
| } |
| |
| public class invoke_from_inner extends A { |
| |
| Z f[] = new Z[1]; |
| class D extends C { |
| D (C x) { |
| f[0].execute (x); |
| execute (x); |
| } |
| } |
| public void execute (C x) { |
| System.out.println ("invoke_from_inner.execute"); |
| } |
| |
| public static void main (String a[]) { |
| new invoke_from_inner().foo(); |
| } |
| void foo () { |
| f[0] = new Z(); |
| new D(new C()); |
| } |
| } |