summaryrefslogtreecommitdiff
path: root/libjava/testsuite/libjava.lang/invoke_from_inner.java
blob: 8659ac6d55927a42d28d598d108fa10d14522821 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// 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());
    }
}