JDK-6954300 : Annotation with generics causes javac to fail when annotation processor present
  • Type: Bug
  • Component: tools
  • Sub-Component: javac
  • Affected Version: 6,6u10
  • Priority: P2
  • Status: Closed
  • Resolution: Duplicate
  • OS: linux,windows
  • CPU: x86
  • Submitted: 2010-05-20
  • Updated: 2012-03-20
  • Resolved: 2011-03-17
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java -version:
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)


javac version:
javac 1.6.0_20


ADDITIONAL OS VERSION INFORMATION :
Linux madams-desktop 2.6.32-22-generic #33-Ubuntu SMP Wed Apr 28 13:28:05 UTC 2010 x86_64 GNU/Linux

A DESCRIPTION OF THE PROBLEM :
Note:  This bug is a related to bug #6951911 (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6951911).  I failed to include another scenario that causes compiler failure.

  Description:  The following annotation definition causes the javac compiler to fail (error below) when an annotation processor is present:

@Target( { ElementType.METHOD, ElementType.CONSTRUCTOR })

@Retention(RetentionPolicy.RUNTIME)

public @interface RequiresMutability {

    boolean value() default true;


    Class<? extends RuntimeException> flings() default RuntimeException.class;

}


This is the annotation processor in use:

public class DummyProcessor extends AbstractProcessor {
    @Override
    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
        return false;
    }
}


STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Included the "Source code for an executable test case" section is a base64 encoded zip file with the reproducible test case.  Two projects each in their own folder:  annproc (compile it first using included compile script), and testcase (see two compile scripts -- the one with an annotation processor on the classpath reproduces the compilation error).

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Successful compilation with or without an annotation processor present.
ACTUAL -
Compiler failure with annotation processor present.  Successful compilation without.

ERROR MESSAGES/STACK TRACES THAT OCCUR :
Compiler error:
madams@madams-desktop:~/dev/testcase$ ./compile-with-dummy-processor
[parsing started src/main/java/ann/RequiresMutability.java]
[parsing completed 16ms]
[parsing started src/main/java/ann/ValidatedTime.java]
[parsing completed 0ms]
[search path for source files: ../annproc/target/classes]
[search path for class files: /home/madams/programs/java/jdk1.6.0_20/jre/lib/resources.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/rt.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/sunrsasign.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/jsse.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/jce.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/charsets.jar,/home/madams/programs/java/jdk1.6.0_20/jre/classes,/home/madams/programs/java/jdk1.6.0_20/jre/lib/ext/localedata.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/ext/dnsns.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/ext/sunjce_provider.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/ext/sunpkcs11.jar,../annproc/target/classes]
[loading java/lang/annotation/ElementType.class(java/lang/annotation:ElementType.class)]
[loading java/lang/annotation/Retention.class(java/lang/annotation:Retention.class)]
[loading java/lang/annotation/RetentionPolicy.class(java/lang/annotation:RetentionPolicy.class)]
[loading java/lang/annotation/Target.class(java/lang/annotation:Target.class)]
[loading java/lang/annotation/Annotation.class(java/lang/annotation:Annotation.class)]
[loading java/lang/Object.class(java/lang:Object.class)]
[loading java/lang/Class.class(java/lang:Class.class)]
[loading java/lang/RuntimeException.class(java/lang:RuntimeException.class)]
[loading java/lang/Enum.class(java/lang:Enum.class)]
[loading java/lang/Comparable.class(java/lang:Comparable.class)]
[loading java/io/Serializable.class(java/io:Serializable.class)]
[loading java/lang/String.class(java/lang:String.class)]
Round 1:
	input files: {ann.RequiresMutability, ann.ValidatedTime}
	annotations: [java.lang.annotation.Target, java.lang.annotation.Retention]
	last round: false
Round 2:
	input files: {}
	annotations: []
	last round: true
[search path for source files: ../annproc/target/classes]
[search path for class files: /home/madams/programs/java/jdk1.6.0_20/jre/lib/resources.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/rt.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/sunrsasign.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/jsse.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/jce.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/charsets.jar,/home/madams/programs/java/jdk1.6.0_20/jre/classes,/home/madams/programs/java/jdk1.6.0_20/jre/lib/ext/localedata.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/ext/dnsns.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/ext/sunjce_provider.jar,/home/madams/programs/java/jdk1.6.0_20/jre/lib/ext/sunpkcs11.jar,../annproc/target/classes]
[loading java/lang/annotation/ElementType.class(java/lang/annotation:ElementType.class)]
[loading java/lang/annotation/Retention.class(java/lang/annotation:Retention.class)]
[loading java/lang/annotation/RetentionPolicy.class(java/lang/annotation:RetentionPolicy.class)]
[loading java/lang/annotation/Target.class(java/lang/annotation:Target.class)]
[loading java/lang/annotation/Annotation.class(java/lang/annotation:Annotation.class)]
[loading java/lang/Object.class(java/lang:Object.class)]
[loading java/lang/Class.class(java/lang:Class.class)]
[loading java/lang/RuntimeException.class(java/lang:RuntimeException.class)]
[loading java/lang/Enum.class(java/lang:Enum.class)]
[loading java/lang/Comparable.class(java/lang:Comparable.class)]
[loading java/io/Serializable.class(java/io:Serializable.class)]
[loading java/lang/String.class(java/lang:String.class)]
[loading java/lang/Exception.class(java/lang:Exception.class)]
[loading java/lang/Throwable.class(java/lang:Throwable.class)]
src/main/java/ann/RequiresMutability.java:13: incompatible types
found   : java.lang.Class<java.lang.RuntimeException>
required: java.lang.Class<? extends java.lang.RuntimeException>
    Class<? extends RuntimeException> flings() default RuntimeException.class;
                                                                       ^
src/main/java/ann/ValidatedTime.java:11: incompatible types
found   : ann.ValidatedTime.Precision
required: ann.ValidatedTime.Precision
    Precision precision() default Precision.SECOND;
                                           ^
[checking ann.RequiresMutability]
[loading java/lang/Exception.class(java/lang:Exception.class)]
[loading java/lang/Throwable.class(java/lang:Throwable.class)]
[checking ann.ValidatedTime]
[loading java/lang/CloneNotSupportedException.class(java/lang:CloneNotSupportedException.class)]
[total 397ms]
2 errors


REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
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
AAAAAAAAABAA7UHrAwAAdGVzdGNhc2UvVVQFAANgB/RLdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAA
AAAAXX+rPAAAAAAAAAAAAAAAABAAGAAAAAAAAAAQAO1BLgQAAHRlc3RjYXNlL3RhcmdldC9VVAUA
AzHh6Ut1eAsAAQToAwAABOgDAABQSwECHgMKAAAAAAAqRrM8AAAAAAAAAAAAAAAAGAAYAAAAAAAA
ABAA7UF4BAAAdGVzdGNhc2UvdGFyZ2V0L2NsYXNzZXMvVVQFAAOACPRLdXgLAAEE6AMAAAToAwAA
UEsBAh4DCgAAAAAAWX+rPAAAAAAAAAAAAAAAACIAGAAAAAAAAAAQAO1BygQAAHRlc3RjYXNlL3Rh
cmdldC9nZW5lcmF0ZWQtc291cmNlcy9VVAUAAyrh6Ut1eAsAAQToAwAABOgDAABQSwECHgMKAAAA
AABZf6s8AAAAAAAAAAAAAAAALgAYAAAAAAAAABAA7UEmBQAAdGVzdGNhc2UvdGFyZ2V0L2dlbmVy
YXRlZC1zb3VyY2VzL2Fubm90YXRpb25zL1VUBQADKuHpS3V4CwABBOgDAAAE6AMAAFBLAQIeAxQA
AAAIAJBFszz/WypHUAAAAF4AAAAoABgAAAAAAAEAAADtgY4FAAB0ZXN0Y2FzZS9jb21waWxlLXdp
dGhvdXQtZHVtbXktcHJvY2Vzc29yVVQFAANgB/RLdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAA
Gn+rPAAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1BQAYAAHRlc3RjYXNlL3NyYy9VVAUAA7Pg6Ut1
eAsAAQToAwAABOgDAABQSwECHgMKAAAAAAAbf6s8AAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UGH
BgAAdGVzdGNhc2Uvc3JjL21haW4vVVQFAAO24OlLdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAA
ekysPAAAAAAAAAAAAAAAABcAGAAAAAAAAAAQAO1B0wYAAHRlc3RjYXNlL3NyYy9tYWluL2phdmEv
VVQFAAPn2OpLdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAA3EWzPAAAAAAAAAAAAAAAABsAGAAA
AAAAAAAQAO1BJAcAAHRlc3RjYXNlL3NyYy9tYWluL2phdmEvYW5uL1VUBQAD7wf0S3V4CwABBOgD
AAAE6AMAAFBLAQIeAxQAAAAIAH1FszxDJeLd2wAAAKoBAAAtABgAAAAAAAEAAACkgXkHAAB0ZXN0
Y2FzZS9zcmMvbWFpbi9qYXZhL2Fubi9WYWxpZGF0ZWRUaW1lLmphdmFVVAUAAz4H9Et1eAsAAQTo
AwAABOgDAABQSwECHgMUAAAACADcRbM8yyhFgeoAAAC5AQAAMgAYAAAAAAABAAAApIG7CAAAdGVz
dGNhc2Uvc3JjL21haW4vamF2YS9hbm4vUmVxdWlyZXNNdXRhYmlsaXR5LmphdmFVVAUAA+8H9Et1
eAsAAQToAwAABOgDAABQSwECHgMUAAAACACJRbM82ayIUoQAAADJAAAAJQAYAAAAAAABAAAA7YER
CgAAdGVzdGNhc2UvY29tcGlsZS13aXRoLWR1bW15LXByb2Nlc3NvclVUBQADUQf0S3V4CwABBOgD
AAAE6AMAAFBLBQYAAAAAFgAWADkIAAD0CgAAAAA=
---------- END SOURCE ----------
UPDATED DESCRIPTION:

Testcase provided by Licensee and uploaded to attachment.
Testcase is Not reproducible using JDK 7 b44 and higher.

See Comments for additional detail that is Licensee specific.

Comments
SUGGESTED FIX See patch for CR 6512707. Testcase provided by Licensee passes on 6u24 + patch.
17-03-2011

EVALUATION This is a dup of 6512707. The relevant fix, to backport to 6, is as follows diff -r e2f8f6daee9d -r 7a595d92e252 src/share/classes/com/sun/tools/javac/tree/TreeScanner.java --- a/src/share/classes/com/sun/tools/javac/tree/TreeScanner.java Fri Dec 19 10:39:02 2008 -0800 +++ b/src/share/classes/com/sun/tools/javac/tree/TreeScanner.java Wed Jan 07 14:48:29 2009 -0800 @@ -86,6 +86,7 @@ scan(tree.typarams); scan(tree.params); scan(tree.thrown); + scan(tree.defaultValue); scan(tree.body); } The OpenJDK changeset in jdk7/jdk7/langtools is 7a595d92e252. changeset: 180:7a595d92e252 parent: 178:e2f8f6daee9d user: jjg date: Wed Jan 07 14:48:29 2009 -0800 summary: 6512707: "incompatible types" after (unrelated) annotation processing
17-03-2011

EVALUATION Suspect a problem cleaning trees between processing rounds -- specifically, the default value for an annotation.
17-03-2011