| // RUN_PIPELINE_TILL: FRONTEND |
| // ISSUE: KT-73256 |
| // LANGUAGE: +AnnotationAllUseSiteTarget |
| // FIR_DUMP |
| // FILE: JavaAnn.java |
| import java.lang.annotation.ElementType; |
| import java.lang.annotation.Target; |
| |
| @Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD}) |
| public @interface JavaAnn { |
| String value() default "OK"; |
| } |
| |
| // FILE: test.kt |
| @<!INAPPLICABLE_ALL_TARGET("elements other than properties")!>all<!>:Default |
| package p |
| |
| import JavaAnn |
| |
| @Target(AnnotationTarget.VALUE_PARAMETER) |
| annotation class ParamOnly |
| |
| @Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.PROPERTY) |
| annotation class ParamProperty |
| |
| @Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.FIELD) |
| annotation class ParamField |
| |
| @Target(AnnotationTarget.PROPERTY, AnnotationTarget.FIELD) |
| annotation class PropertyField |
| |
| @Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD) |
| annotation class ParamPropertyField |
| |
| @Target(AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER) |
| annotation class GetterSetter |
| |
| @Target(AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.VALUE_PARAMETER) |
| annotation class ParamGetter |
| |
| @Target(AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.VALUE_PARAMETER) |
| annotation class ParamGetterSetter |
| |
| annotation class Default |
| |
| @Target(AnnotationTarget.CLASS) |
| annotation class Inapplicable |
| |
| @<!INAPPLICABLE_ALL_TARGET("elements other than properties")!>all<!>:Default |
| class My( |
| @all:ParamOnly |
| @all:ParamProperty |
| @all:ParamField |
| @all:PropertyField |
| @all:ParamPropertyField |
| @all:GetterSetter |
| @all:ParamGetter |
| @all:ParamGetterSetter |
| @all:Default |
| <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@all:Inapplicable<!> |
| @all:JavaAnn |
| val valFromConstructor: Int, |
| |
| @all:ParamOnly |
| @all:ParamProperty |
| @all:ParamField |
| @all:PropertyField |
| @all:ParamPropertyField |
| @all:GetterSetter |
| @all:ParamGetter |
| @all:ParamGetterSetter |
| @all:Default |
| <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@all:Inapplicable<!> |
| @all:JavaAnn |
| var varFromConstructor: Int, |
| |
| @<!INAPPLICABLE_ALL_TARGET("constructor parameters without corresponding property (consider adding val/var)")!>all<!>:Default |
| param: Int, |
| ) { |
| <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@all:ParamOnly<!> |
| @all:ParamProperty |
| @all:ParamField |
| @all:PropertyField |
| @all:ParamPropertyField |
| @all:GetterSetter |
| @all:ParamGetter |
| @all:ParamGetterSetter |
| @all:Default |
| <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@all:Inapplicable<!> |
| @all:JavaAnn |
| val valInside: Int = 0 |
| |
| @all:ParamOnly |
| @all:ParamProperty |
| @all:ParamField |
| @all:PropertyField |
| @all:ParamPropertyField |
| @all:GetterSetter |
| @all:ParamGetter |
| @all:ParamGetterSetter |
| @all:Default |
| <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@all:Inapplicable<!> |
| @all:JavaAnn |
| var varInside: Int = 1 |
| |
| <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@all:ParamOnly<!> |
| @all:ParamProperty |
| @all:ParamField |
| @all:PropertyField |
| @all:ParamPropertyField |
| @all:GetterSetter |
| @all:ParamGetter |
| @all:ParamGetterSetter |
| @all:Default |
| <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@all:Inapplicable<!> |
| @all:JavaAnn |
| val valWithGetter: Int = 2 |
| get() = field |
| |
| <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@all:ParamOnly<!> |
| @all:ParamProperty |
| <!WRONG_ANNOTATION_TARGET!>@all:ParamField<!> |
| @all:PropertyField |
| @all:ParamPropertyField |
| @all:GetterSetter |
| @all:ParamGetter |
| @all:ParamGetterSetter |
| @all:Default |
| <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@all:Inapplicable<!> |
| <!WRONG_ANNOTATION_TARGET!>@all:JavaAnn<!> |
| val valWithoutField: Int |
| get() = 3 |
| |
| @all:ParamOnly |
| @all:ParamProperty |
| @all:ParamField |
| @all:PropertyField |
| @all:ParamPropertyField |
| @all:GetterSetter |
| @all:ParamGetter |
| @all:ParamGetterSetter |
| @all:Default |
| <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@all:Inapplicable<!> |
| @all:JavaAnn |
| var varWithSetter: Int = 4 |
| set(param) {} |
| |
| @all:ParamOnly |
| @all:ParamProperty |
| @all:ParamField |
| @all:PropertyField |
| @all:ParamPropertyField |
| @all:GetterSetter |
| @all:ParamGetter |
| @all:ParamGetterSetter |
| @all:Default |
| <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@all:Inapplicable<!> |
| @all:JavaAnn |
| var varWithSetterAndGetter: Int = 5 |
| get() = field |
| set(param) {} |
| |
| @all:ParamOnly |
| @all:ParamProperty |
| <!WRONG_ANNOTATION_TARGET!>@all:ParamField<!> |
| @all:PropertyField |
| @all:ParamPropertyField |
| @all:GetterSetter |
| @all:ParamGetter |
| @all:ParamGetterSetter |
| @all:Default |
| <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@all:Inapplicable<!> |
| <!WRONG_ANNOTATION_TARGET!>@all:JavaAnn<!> |
| var varWithoutField: Int |
| get() = 6 |
| set(param) {} |
| |
| @<!INAPPLICABLE_ALL_TARGET("delegated properties")!>all<!>:ParamOnly |
| @<!INAPPLICABLE_ALL_TARGET("delegated properties")!>all<!>:ParamProperty |
| @<!INAPPLICABLE_ALL_TARGET("delegated properties")!>all<!>:ParamField |
| @<!INAPPLICABLE_ALL_TARGET("delegated properties")!>all<!>:PropertyField |
| @<!INAPPLICABLE_ALL_TARGET("delegated properties")!>all<!>:ParamPropertyField |
| @<!INAPPLICABLE_ALL_TARGET("delegated properties")!>all<!>:GetterSetter |
| @<!INAPPLICABLE_ALL_TARGET("delegated properties")!>all<!>:ParamGetter |
| @<!INAPPLICABLE_ALL_TARGET("delegated properties")!>all<!>:ParamGetterSetter |
| @<!INAPPLICABLE_ALL_TARGET("delegated properties")!>all<!>:Default |
| @<!INAPPLICABLE_ALL_TARGET("delegated properties")!>all<!>:Inapplicable |
| @<!INAPPLICABLE_ALL_TARGET("delegated properties")!>all<!>:JavaAnn |
| val delegatedVal: Int by lazy { 7 } |
| |
| @<!INAPPLICABLE_ALL_TARGET("elements other than properties")!>all<!>:Default |
| fun foo(@<!INAPPLICABLE_ALL_TARGET("value parameters, only properties are allowed")!>all<!>:Default param: Int): <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@all:Default<!> Int { |
| @<!INAPPLICABLE_ALL_TARGET("local properties, only member or top-level properties are allowed")!>all<!>:Default val x = 8 |
| val y = <!WRONG_ANNOTATION_TARGET!>@all:Default<!> x |
| val z = object { |
| @all:Default val bar: Int = 0 |
| } |
| return y |
| } |
| |
| @<!INAPPLICABLE_ALL_TARGET("elements other than properties")!>all<!>:Default |
| constructor(@<!INAPPLICABLE_ALL_TARGET("constructor parameters without corresponding property (consider adding val/var)")!>all<!>:Default param: Int): this(0, 1, 2) |
| |
| var withIllegal: Int = 9 |
| @<!INAPPLICABLE_ALL_TARGET("elements other than properties")!>all<!>:Default get() = field |
| @<!INAPPLICABLE_ALL_TARGET("elements other than properties")!>all<!>:Default set(@<!INAPPLICABLE_ALL_TARGET!>all<!>:Default param) {} |
| } |
| |
| /* GENERATED_FIR_TAGS: annotationDeclaration, annotationUseSiteTargetAll, anonymousObjectExpression, classDeclaration, |
| functionDeclaration, getter, integerLiteral, javaType, lambdaLiteral, localProperty, primaryConstructor, |
| propertyDeclaration, propertyDelegate, secondaryConstructor, setter */ |