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. ]