Compiler crash on annotation handling

Werner Dietl wdietl at gmail.com
Mon Jul 15 10:41:55 PDT 2013


Joel, all,

I added a test case in the type-annotations repository at:

langtools/test/tools/javac/annotations/typeAnnotations/failures/TypeVariableMissingTA.java

It currently results in the NullPointerException reproduced below.

The simplest fix is to add a guard against null. But I wanted to check
whether we should look at a more general solution, setting the
annotation position to non-null even for invalid annotation types.

Thoughts?

Thanks,
cu, WMD.

java.lang.NullPointerException
at com.sun.tools.javac.code.Symbol$TypeVariableSymbol.onlyTypeVariableAnnotations(Symbol.java:778)
at com.sun.tools.javac.code.Symbol$TypeVariableSymbol.getAnnotationMirrors(Symbol.java:770)
at com.sun.tools.javac.model.JavacElements.getAllAnnotationMirrors(JavacElements.java:408)
at com.sun.tools.javac.model.JavacElements.getAllAnnotationMirrors(JavacElements.java:61)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$ComputeAnnotationSet.addAnnotations(JavacProcessingEnvironment.java:777)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$ComputeAnnotationSet.scan(JavacProcessingEnvironment.java:785)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$ComputeAnnotationSet.scan(JavacProcessingEnvironment.java:746)
at javax.lang.model.util.ElementScanner6.scan(ElementScanner6.java:133)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$ComputeAnnotationSet.visitType(JavacProcessingEnvironment.java:764)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$ComputeAnnotationSet.visitType(JavacProcessingEnvironment.java:746)
at com.sun.tools.javac.code.Symbol$ClassSymbol.accept(Symbol.java:1076)
at javax.lang.model.util.ElementScanner6.scan(ElementScanner6.java:146)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$ComputeAnnotationSet.scan(JavacProcessingEnvironment.java:786)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.findAnnotationsPresent(JavacProcessingEnvironment.java:981)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.<init>(JavacProcessingEnvironment.java:879)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1163)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1146)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:832)
at com.sun.tools.javac.main.Main.compile(Main.java:518)
at com.sun.tools.javac.main.Main.compile(Main.java:376)
at com.sun.tools.javac.main.Main.compile(Main.java:365)
at com.sun.tools.javac.main.Main.compile(Main.java:356)
at com.sun.tools.javac.Main.compile(Main.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.sun.javatest.regtest.RegressionCompileCommand.run(RegressionCompileCommand.java:247)
at com.sun.javatest.regtest.CompileAction.runCompile(CompileAction.java:556)
at com.sun.javatest.regtest.CompileAction.runSameJVM(CompileAction.java:395)
at com.sun.javatest.regtest.CompileAction.run(CompileAction.java:250)
at com.sun.javatest.regtest.RegressionScript.run(RegressionScript.java:146)
at com.sun.javatest.Script.run(Script.java:228)
at com.sun.javatest.DefaultTestRunner.runTest(DefaultTestRunner.java:174)
at com.sun.javatest.DefaultTestRunner.access$100(DefaultTestRunner.java:43)
at com.sun.javatest.DefaultTestRunner$1.run(DefaultTestRunner.java:66)

--
http://www.google.com/profiles/wdietl


More information about the type-annotations-dev mailing list