[External] : Re: RFR: 8231436: Fix the applicability of a no- at Target annotation type

Alex Buckley alex.buckley at oracle.com
Sat Feb 6 01:56:12 UTC 2021

On 2/5/2021 5:13 PM, Liam Miller-Cushon wrote:
> If I was writing a CSR for this I'd probably estimate the compatibility 
> impact as 'low'--I think it's more than 'minimal', and it may deserve a 
> release note, but it's likely not prohibitively high. Does that sound right?

Yes. The real issue is that _any_ open-ended definition, even the 
middle-ground "all declaration contexts" one, can lead to 
incompatibilities in processors when annotations are applied in places 
newer than the processor. (Consider a no- at Target @Foo annotation being 
applied to a record component declaration, and thus showing up as a 
declaration annotation on both the corresponding component field and 
accessor method, versus an annotation processor that assumed @Foo would 
only ever appear on class declarations.)  We accept the low risk of 
incompatibilities because open-ended definitions are simple and because 
programmers can easily opt out by giving their desired applicability.

> [1] https://www.hyrumslaw.com/ 

a.k.a. Martin Buchholz's "Every change is an incompatible change."

More information about the compiler-dev mailing list