Annotation and compact constructor
Vicente Romero
vicente.romero at oracle.com
Tue Aug 25 13:24:26 UTC 2020
I have created: https://bugs.openjdk.java.net/browse/JDK-8252307 to
track it,
Thanks,
Vicente
On 8/25/20 9:20 AM, Tagir Valeev wrote:
> Hello!
>
> Sorry for confusion about compact constructor declaration. Yes, I
> meant fields.
>
> With best regards,
> Tagir Valeev
>
> вт, 25 авг. 2020 г., 20:15 Vicente Romero <vicente.romero at oracle.com
> <mailto:vicente.romero at oracle.com>>:
>
> Hi Tagir,
>
> Given that the annotation is applicable to fields, it should be
> accepted
> and propagated to the field. We didn't visualize annotations
> targeted to
> constructors as applicable to record components. We propagate the
> annotation in the record component to the corresponding parameter
> in the
> canonical constructor (if targeted to parameters only). But still
> as I
> said the compiler should accept the code as the annotation is
> applicable
> to fields. I will file a bug,
>
> Thanks,
> Vicente
>
> On 8/25/20 1:49 AM, Tagir Valeev wrote:
> > Hello!
> >
> > The following code cannot be compiled by javac (tried build
> 15-ea+33-1546):
> >
> > import java.lang.annotation.*;
> >
> > @Target({ElementType.FIELD, ElementType.CONSTRUCTOR})
> > @Retention(RetentionPolicy.RUNTIME)
> > @interface Ann {
> > }
> > record R(@Ann String str) {
> > R {}
> > }
> >
> > Error message:
> > R.java:7: error: annotation type not applicable to this kind of
> declaration
> > record R(@Ann String str) {
> > ^
> > 1 error
> > 1 warning
> >
> > I would expect that the annotation is silently propagated to the
> > compact constructor declaration. Is this correct behavior?
> >
> > With best regards,
> > Tagir Valeev.
>
More information about the amber-dev
mailing list