Annotation and compact constructor
Tagir Valeev
amaembo at gmail.com
Tue Aug 25 13:20:43 UTC 2020
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>:
> 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