<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi Tagir,<div class=""><br class=""></div><div class="">Upon reflection I think it’s best that we don’t treat this as a compile-time error, but just as the specified behaviour. The warning vs error thing is a grey area, especially in Java, but having bounced this around it seems like it has fallen (just) in the warning side of the divide. As you say, this is a great opportunity for IDEs to be helpful :-)</div><div class=""><br class=""></div><div class="">Just to be clear:</div><div class=""><br class=""></div><div class=""><div class=""><font face="Courier" class="">  @Target(ElementType.METHOD)</font></div><div class=""><font face="Courier" class="">  @interface A { }</font></div><div class=""><font face="Courier" class="">  record R1(@A int x) {     // Where did the annotation go?</font></div><div class=""><font face="Courier" class="">      int x() { return x; }</font></div><div class=""><font face="Courier" class="">  }</font></div></div><div class=""><br class=""></div><div class="">In this example, what I am proposing is that there is no compile-time error and the A annotation will simply not be propagated anywhere. [I am expecting that most developers in this case would have added the RECORD_COMPONENT target, so the annotation does not disappear completely.]</div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Gavin</div><div class=""><br class=""></div><div class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 5 Oct 2020, at 05:47, Tagir Valeev <<a href="mailto:amaembo@gmail.com" class="">amaembo@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">On Sat, Oct 3, 2020 at 12:09 AM Brian Goetz <<a href="mailto:brian.goetz@oracle.com" class="">brian.goetz@oracle.com</a>> wrote:<br class=""><blockquote type="cite" class=""><br class="">I think we're reaching diminishing returns here.<br class=""></blockquote><br class="">Well, to me, it's not diminishing. It's certainly a piece of code that<br class="">will not have any effect after compilation, so it's a mistake.<br class="">Reporting it is not that hard. Having a class/runtime annotation in<br class="">source code that disappears completely in the compiled class-file<br class="">without any warning sounds confusing and may cause subtle problems.<br class="">Well, of course, we can create an inspection in IntelliJ IDEA to warn<br class="">about these cases, and people will like IntelliJ IDEA even more, but I<br class="">believe it's a compiler job to reject this, like Java already does<br class="">with e.g. unreachable code.<br class=""><br class="">With best regards,<br class="">Tagir Valeev.<br class=""></div></div></blockquote></div><br class=""></div></body></html>