PR java/19870 (Part 2/2): Handle private static methods accessed across nested classes

Tom Tromey tromey@redhat.com
Sun Jun 19 05:06:00 GMT 2005


>>>>> "Ranjit" == Ranjit Mathew <rmathew@gmail.com> writes:

Ranjit>   FAIL: 15.12.3-explicit-constructor-9

Ranjit> The latter confuses me (but both Jikes and javac 1.5.0.03
Ranjit> compile it without errors). I'd be grateful if someone could
Ranjit> explain exactly why it should *not* be an error.

The test case:

    class T15123ec9 {
	private int m() { return 1; }
	T15123ec9(int i) {}
	class Sub extends T15123ec9 {
	    Sub() {
		super(m()); // m is not inherited, so it is the enclosing m
	    }
	}
    }


If m() were not private, the call would be to Sub.m(), which would be
invalid because it would be a use of 'this' in a static context.

However, m() is not inherited.  So, the call is to
'T15123ec9.this.m()', which is valid as it doesn't refer to the object
being constructed.

gcjx still has a few bugs in this area fwiw.

Tom



More information about the Gcc-patches mailing list