Date: Sat, 14 Jun 2003 18:39:10 -0400 (EDT)
From: C. Scott Ananian
To: jsr14-prototype-comments@sun.com
Subject: Broken array signature parsing in -novariance compiler.

If this class is compiled (with any compiler you please):

abstract class A {
    abstract void foo(A[] a);
}

and then this (correct) class is compiled with the 2.0 prototype's
'-novariance' compiler:

class B extends A {
    void foo(A[] a) { }
}

You will get this error message:

B.java:1: B is not abstract and does not override abstract method foo(A[=]) in Aclass B extends A {

Apparently the 'novariance' compiler is misparsing the signature
attribute.  This example works (no bug) if:
  1) both classes are named at once on the command-line (instead of
     compiling first A, then B)
  2) the 'variance' compiler is used to compile B
     (but perhaps the bug is more subtle and just isn't observable?)
  3) the standard 1.4.2 compiler is used to compile B (obviously)

The attached file 'sunbug1.tgz' contains both source files and a Makefile
discussing and illustrating the bug.
 --scott

Clinton Attache Indonesia DC OVER THE HORIZON RADAR jihad Marxist 
SEAL Team 6 SSBN 743 Blair assassination mail drop Flintlock Waco, Texas 
                         ( http://cscott.net/ )

    [ Part 2, ""  Application/OCTET-STREAM (Name: "sunbug1.tgz")  1.1KB. ]

Valid XHTML 1.0!