This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


>>>>> "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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]