The following construct seems to have issues with gij (3.4 and 4.0) but works ok
with kaffe and jamvm (output lower down)

public class C {
  public static void main(String[] arg) {
    System.err.println(A.instance);
    System.err.println(A.instance.getInstance());
  }
}
 
interface A {
  public static A instance = new A() {
    public A getInstance() {
      return instance;
    }
  };
 
  public abstract A getInstance();
}

JamVM output:

[EMAIL PROTECTED] ~> jamvm C
[EMAIL PROTECTED]
[EMAIL PROTECTED]

GIJ-3.4 output:
[EMAIL PROTECTED] ~> gij-3.4 C
[EMAIL PROTECTED]
Exception in thread "main" java.lang.IncompatibleClassChangeError: field
A$1.instance was not found.
   at _Jv_ResolvePoolEntry(java.lang.Class, int) (/usr/lib/libgcj.so.5.0.0)
   at A$1.getInstance() (Unknown Source)
   at C.main(java.lang.String[]) (Unknown Source)
[EMAIL PROTECTED] ~> /home/mkoch/local/gcc-
gcc-3.4-debian  gcc-4.0         gcc-awt

GIJ-4.0 output:
[EMAIL PROTECTED] ~> /home/mkoch/local/gcc-4.0/bin/gij-4.0 C
[EMAIL PROTECTED]
Exception in thread "main" java.lang.IncompatibleClassChangeError: field
A$1.instance was not found.
   at _Jv_Linker.resolve_pool_entry(java.lang.Class, int)
(/home/mkoch/local/gcc-4.0/lib/libgcj.so.6.0.0)
   at A$1.getInstance() (Unknown Source)
   at C.main(java.lang.String[]) (Unknown Source)

Kaffe output:
[EMAIL PROTECTED] ~> kaffe C
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED] ~>

-- 
           Summary: Interface containing anonymous class breaks gij
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: java
        AssignedTo: konqueror at gmx dot de
        ReportedBy: steph at tangency dot co dot uk
                CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu
                    dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18868

Reply via email to