Hello! I still feel that there should be a compilation error if record component annotation is ineffective due to explicit specification of accessor method and/or non-compact canonical constructor and completely support Remi's argument.
> [I am expecting that most developers in this case would have added the > RECORD_COMPONENT target, so the annotation does not disappear completely.] I should also note that it's hard to add a RECORD_COMPONENT target to the library annotation if it's intended to be used with earlier Java versions (don't tell me about multi-release jars!) And the semantics of RECORD_COMPONENT target is not very clear, as clients work directly with constructors and accessors (call them), but they don't work with record components. For most of the clients, the record is not very different from the ordinary class, and I'm not sure that all the clients should check if the called method is a record accessor, find the corresponding component and check its annotations, in addition to checking the method annotations in the first place. Also, I expect that people will sometimes convert records to ordinary classes (e.g. suppose that at some point it becomes desired to have a private mutable field to cache something). In this case, they can mechanically translate the record to the class (IntelliJ already provides this facility) but the annotation will disappear completely. Well, if all of this is not convincing, let's stop this discussion. I filed an enhancement request for IntelliJ to report the warning in this case: https://youtrack.jetbrains.com/issue/IDEA-253317 For our users, this will be enough (after all, anyone may set a severity level to 'ERROR'). Other IDEs may also do the same. With best regards, Tagir Valeev. On Mon, Oct 19, 2020 at 11:35 PM Gavin Bierman <gavin.bier...@oracle.com> wrote: > > Following the announcement of JEP 395 [1] the latest version of the spec is > now available at: > > http://cr.openjdk.java.net/~gbierman/jep395/latest/ > > This covers the various bugs in an earlier draft that have been reported on > this list. As per my earlier email this spec does not treat a non-propagating > annotation in the case where an explicit accessor method has been declared as > a compile-time error. I still think this is a better design, but if anyone > feels strongly, please email the list! > > Thanks, > Gavin > > [1] https://openjdk.java.net/jeps/395