1 // This test case once showed that `f[0].execute(x)' woudln't be
2 // expanded properly, attempting to retrieve this$0 to be used in
3 // place of `f[0]'.
4 
5 abstract class A {
execute(C x)6     abstract public void execute(C x);
7 }
8 
9 class C {}
10 
11 class Z extends A {
execute(C x)12     public void execute (C x) {
13 	System.out.println ("Z.execute");
14     }
15 }
16 
17 public class invoke_from_inner extends A {
18 
19     Z f[] = new Z[1];
20     class D extends C {
D(C x)21 	D (C x) {
22 	    f[0].execute (x);
23 	    execute (x);
24 	}
25     }
execute(C x)26     public void execute (C x) {
27       System.out.println ("invoke_from_inner.execute");
28     }
29 
main(String a[])30     public static void main (String a[]) {
31 	new invoke_from_inner().foo();
32     }
foo()33     void foo () {
34 	f[0] = new Z();
35 	new D(new C());
36     }
37 }
38