RFR: JDK-8213103: RoundEnvironment.getElementsAnnotatedWith(Class) crashes with -source 8

joe darcy joe.darcy at oracle.com
Thu Nov 1 17:20:13 UTC 2018


Hi Jan,

If we had considered this situation more careful during JSR 269, we 
might have specified this condition to be an error. However, as you 
point out, the long-standing behavior has been to return null so it is 
probably best to preserve that.

I've filed a follow-up spec bug, JDK-8213256: "Clarify runtime vs 
compile time annotations for 
RoundEnvironment.getElementsAnnotatedWith(Class)", to make the 
possibility of the Class -> TypeElement failing explicit.

For the annotation processor in the test file, consider subclassing 
test/langtools/tools/javac/lib/JavacTestingAbstractProcessor.

Looks good to me to push as-is or with a possible test update.

Thanks,

-Joe

On 11/1/2018 5:34 AM, Jan Lahoda wrote:
> Hi Joe,
>
> Thanks for the comments. An updated webrev that uses Feature.MODULES 
> instead of Elements.getAllModules, and also updates the copyright year 
> as noted by Vicente, is here:
> http://cr.openjdk.java.net/~jlahoda/8213103/webrev.01/
>
> (As a side note, Elements.getAllModules() should be OK 
> performance-wise for this purpose, it basically reads an 
> existing/pre-filed field.)
>
> For changing the method to throw IAE, while I agree this situation may 
> point out an unintended difference between the compile- and run-time 
> environments, sometimes the difference may be intentional (runtime 
> dependencies need to be transitive, while compile time don't need to 
> be) and may be benign, as is in the case where I've noticed this 
> problem. So given the method didn't throw the exception in such cases 
> before, I'd rather keep the behavior compatible.
>
> Thanks,
>     Jan
>



More information about the compiler-dev mailing list