With jdk-1.3.1 it's possible to use inner interfaces inside the package. GCC does not compile the example below, but the jdk-1.3.1 does. DisplayRenderer.java: --------------------- package test_pack; import test_pack.StyledText.*; class DisplayRenderer { StyledText text; DisplayRenderer(StyledText parent ) { text = parent; } protected void test() { LineCache lineCache; } } StyledText.java: ---------------- package test_pack; public class StyledText { LineCache lineCache; public StyledText(int a){ } public LineCache getCache() { return lineCache; } interface LineCache { public void calculate(int startLine, int lineCount); } // end LineCache } // end StyledText with $ gcj -C test_pack/*.java you get test_pack/DisplayRenderer.java:13: Type `LineCache' not found in the declaration of the local variable `lineCache'. LineCache lineCache; ^ 1 error Release: gcc 3.2 and gcc 3.1.1 Environment: $ gcj -v Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/3.2/specs Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../libgcj.spec rename spec lib to liborig Configured with: /netrel/src/gcc-3.2-1/configure --enable-languages=c,c++,f77,java --enable-libgcj --enable-threads=posix --with-system-zlib --enable-nls --without-included-gettext --enable-interpreter --disable-sjlj-exceptions --disable-version-specific-runtime-libs --enable-shared --build=i686-pc-linux --host=i686-pc-cygwin --target=i686-pc-cygwin --enable-haifa --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --includedir=/nonexistent/include --libexecdir=/usr/sbin Thread model: posix gcc version 3.2 20020818 (prerelease) the same problem was seen with gcc-3.1.1 on linux
Confirmed on mainline (20030525): tin:~/src/gnu/gcctest>gcj -C test_pack/*.java test_pack/DisplayRenderer.java:15: error: Type `LineCache' not found in the declaration of the local variable `lineCache'. LineCache lineCache; ^ 1 error tin:~/src/gnu/gcctest>javac test_pack/*.java tin:~/src/gnu/gcctest>
This bug precludes the use of java.util.Map.Entry, which is a J2SE class library that follows this pattern. I can confirm that this happens on a recent build: [richardl@andrew cms]$ gij -version gij (GNU libgcj) version 3.5.0 20040119 (experimental)
FYI, you can work around this by writing "StyledText.LineCache" instead of just "LineCache". I realize this isn't always feasible though.
I'm still running into this with gcj-3.4.1 while building eclipse.
*** Bug 24792 has been marked as a duplicate of this bug. ***
All gcj front end bugs have been fixed by the gcj-eclipse branch merge. I'm mass-closing the affected PRs. If you believe one of these was closed in error, please reopen it with a note explaining why. Thanks.