------- Additional Comments From mark at gcc dot gnu dot org 2005-09-11 22:29 ------- And I tracked our problems with The javax.swing.Box inner class AccessibleBox extends AccessibleAWTContainer in GNU Classpath to a similar order problem.
Take the following source files: p/AClass.java :::::::::::::: package p; public class AClass { protected abstract class InnerA { protected InnerA() { } } } :::::::::::::: q/BClass.java :::::::::::::: package q; import p.*; public class BClass extends AClass { protected class InnerB extends AClass.InnerA { } } :::::::::::::: q/CClass.java :::::::::::::: package q; import p.AClass; public class CClass extends BClass { protected class InnerC extends AClass.InnerA { } } When compiled as follows all goes well: $ gcj -C p/AClass.java q/BClass.java q/CClass.java But when we change the order to: $ gcj -C p/AClass.java q/CClass.java q/BClass.java q/CClass.java:5: error: Nested class p.AClass$InnerA is protected; cannot be accessed from here. protected class InnerC extends AClass.InnerA ^ 1 error -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21418