[FIR] Add REPEATED_ANNOTATION, REPEATED_ANNOTATION_WARNING
This commit is contained in:
committed by
TeamCityServer
parent
fa12e72551
commit
55f33999f1
+4
-4
@@ -5,10 +5,10 @@ annotation class A1
|
||||
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class A2(val some: Int = 12)
|
||||
|
||||
class TopLevelClass<@A1 @A2(3) @A2 @A1(<!TOO_MANY_ARGUMENTS!>12<!>) @A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> {
|
||||
class InnerClass<@A1 @A2(3) @A2 @A1(<!TOO_MANY_ARGUMENTS!>12<!>) @A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> {
|
||||
class TopLevelClass<@A1 @A2(3) <!REPEATED_ANNOTATION!>@A2<!> <!REPEATED_ANNOTATION!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
class InnerClass<@A1 @A2(3) <!REPEATED_ANNOTATION!>@A2<!> <!REPEATED_ANNOTATION!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
fun test() {
|
||||
class InFun<@A1 @A2(3) @A2 @A1(<!TOO_MANY_ARGUMENTS!>12<!>) @A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T>
|
||||
class InFun<@A1 @A2(3) <!REPEATED_ANNOTATION!>@A2<!> <!REPEATED_ANNOTATION!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
-6
@@ -8,18 +8,18 @@ annotation class TA1
|
||||
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class TA2(val some: Int = 12)
|
||||
|
||||
class TopLevelClass<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
class InnerClass<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
class TopLevelClass<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
class InnerClass<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
fun test() {
|
||||
class InFun<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T>
|
||||
class InFun<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class TTopLevelClass<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) @TA2 <!WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> {
|
||||
class TInnerClass<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) @TA2 <!WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> {
|
||||
class TTopLevelClass<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) <!REPEATED_ANNOTATION!>@TA2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
class TInnerClass<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) <!REPEATED_ANNOTATION!>@TA2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
fun test() {
|
||||
class TInFun<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) @TA2 <!WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T>
|
||||
class TInFun<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) <!REPEATED_ANNOTATION!>@TA2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+6
-6
@@ -9,18 +9,18 @@ annotation class TA1
|
||||
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class TA2(val some: Int = 12)
|
||||
|
||||
class TopLevelClass<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
class InnerClass<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
class TopLevelClass<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
class InnerClass<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
fun test() {
|
||||
class InFun<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T>
|
||||
class InFun<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class TTopLevelClass<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) @TA2 <!WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> {
|
||||
class TInnerClass<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) @TA2 <!WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> {
|
||||
class TTopLevelClass<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) <!REPEATED_ANNOTATION!>@TA2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
class TInnerClass<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) <!REPEATED_ANNOTATION!>@TA2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
fun test() {
|
||||
class TInFun<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) @TA2 <!WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T>
|
||||
class TInFun<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) <!REPEATED_ANNOTATION!>@TA2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
-6
@@ -1,13 +1,13 @@
|
||||
annotation class A1
|
||||
annotation class A2(val some: Int = 12)
|
||||
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> topFun() = 12
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> topFun() = 12
|
||||
|
||||
class SomeClass {
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> method() = 12
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> method() = 12
|
||||
|
||||
fun foo() {
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> innerFun() = 12
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> innerFun() = 12
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,12 +16,12 @@ annotation class TA
|
||||
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class TPA(val some: Int = 12)
|
||||
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@TA<!> @TPA(3) @TPA <!WRONG_ANNOTATION_TARGET!>@TA(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TPA(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> topFunTPA() = 12
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@TA<!> @TPA(3) <!REPEATED_ANNOTATION!>@TPA<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@TA(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@TPA(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> topFunTPA() = 12
|
||||
|
||||
class SomeClassTPA {
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@TA<!> @TPA(3) @TPA <!WRONG_ANNOTATION_TARGET!>@TA(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TPA(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> method() = 12
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@TA<!> @TPA(3) <!REPEATED_ANNOTATION!>@TPA<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@TA(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@TPA(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> method() = 12
|
||||
|
||||
fun foo() {
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@TA<!> @TPA(3) @TPA <!WRONG_ANNOTATION_TARGET!>@TA(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TPA(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> innerFun() = 12
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@TA<!> @TPA(3) <!REPEATED_ANNOTATION!>@TPA<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@TA(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@TPA(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> innerFun() = 12
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -3,10 +3,10 @@
|
||||
annotation class A1
|
||||
annotation class A2(val some: Int = 12)
|
||||
|
||||
val <<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> T.topProp: Int get() = 12
|
||||
val <<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> T.topProp: Int get() = 12
|
||||
|
||||
class SomeClass {
|
||||
val <<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> T.field: Int get() = 12
|
||||
val <<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> T.field: Int get() = 12
|
||||
|
||||
fun foo() {
|
||||
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS!><@A1 @A2(3) @A2 @A1(12) @A2("Test") T><!> localVal = 12
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
annotation class unrepann(val x: Int)
|
||||
|
||||
annotation class ann(val y: Int)
|
||||
|
||||
@unrepann(1) @unrepann(2) class DoubleAnnotated
|
||||
|
||||
@ann(3) @ann(7) @ann(42) class TripleAnnotated
|
||||
|
||||
@Target(AnnotationTarget.EXPRESSION)
|
||||
@Retention(AnnotationRetention.SOURCE)
|
||||
annotation class annexpr
|
||||
|
||||
@ann(0) @ann(1) fun foo(@ann(7) @ann(2) x: Int): Int {
|
||||
@annexpr @annexpr return x
|
||||
}
|
||||
|
||||
@unrepann(0)
|
||||
@get:unrepann(1)
|
||||
var annotated = 1 // No errors should be here
|
||||
|
||||
@unrepann(0)
|
||||
@property:unrepann(1)
|
||||
var annotated2 = 2
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
annotation class unrepann(val x: Int)
|
||||
|
||||
annotation class ann(val y: Int)
|
||||
|
||||
-142
@@ -1,142 +0,0 @@
|
||||
// !LANGUAGE: -RepeatableAnnotations
|
||||
// FULL_JDK
|
||||
// FILE: JR.java
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Repeatable(JR.Container.class)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface JR {
|
||||
public @interface Container {
|
||||
JR[] value();
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: JS.java
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Repeatable(JS.Container.class)
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface JS {
|
||||
public @interface Container {
|
||||
JS[] value();
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: KR.kt
|
||||
|
||||
@java.lang.annotation.Repeatable(KR.Container::class)
|
||||
@Retention(AnnotationRetention.RUNTIME)
|
||||
annotation class KR {
|
||||
annotation class Container(val value: Array<KR>)
|
||||
}
|
||||
|
||||
// FILE: KS.kt
|
||||
|
||||
@java.lang.annotation.Repeatable(KS.Container::class)
|
||||
@Retention(AnnotationRetention.SOURCE)
|
||||
annotation class KS {
|
||||
annotation class Container(val value: Array<KS>)
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
// Java runtime-retained annotation
|
||||
|
||||
@JR
|
||||
@JR.Container()
|
||||
fun jr1() {}
|
||||
|
||||
@JR
|
||||
@JR.Container()
|
||||
<!NON_SOURCE_REPEATED_ANNOTATION!>@JR<!>
|
||||
fun jr2() {}
|
||||
|
||||
@JR
|
||||
@JR.Container(JR())
|
||||
<!NON_SOURCE_REPEATED_ANNOTATION!>@JR<!>
|
||||
fun jr3() {}
|
||||
|
||||
@JR
|
||||
@JR.Container(JR())
|
||||
fun jr4() {}
|
||||
|
||||
@JR
|
||||
@JR.Container(JR(), JR())
|
||||
fun jr5() {}
|
||||
|
||||
|
||||
// Java source-retained annotation
|
||||
|
||||
@JS
|
||||
@JS.Container()
|
||||
fun js1() {}
|
||||
|
||||
@JS
|
||||
@JS.Container()
|
||||
@JS
|
||||
fun js2() {}
|
||||
|
||||
@JS
|
||||
@JS.Container(JS())
|
||||
@JS
|
||||
fun js3() {}
|
||||
|
||||
@JS
|
||||
@JS.Container(JS())
|
||||
fun js4() {}
|
||||
|
||||
@JS
|
||||
@JS.Container(JS(), JS())
|
||||
fun js5() {}
|
||||
|
||||
|
||||
// Kotlin runtime-retained annotation
|
||||
|
||||
@KR.Container([])
|
||||
@KR
|
||||
fun kr1() {}
|
||||
|
||||
@KR.Container([])
|
||||
@KR
|
||||
@KR
|
||||
fun kr2() {}
|
||||
|
||||
@KR
|
||||
@KR
|
||||
@KR.Container([KR()])
|
||||
fun kr3() {}
|
||||
|
||||
@KR.Container([KR()])
|
||||
@KR
|
||||
fun kr4() {}
|
||||
|
||||
@KR
|
||||
@KR.Container([KR(), KR()])
|
||||
fun kr5() {}
|
||||
|
||||
|
||||
// Kotlin source-retained annotation
|
||||
|
||||
@KS.Container([])
|
||||
@KS
|
||||
fun ks1() {}
|
||||
|
||||
@KS.Container([])
|
||||
@KS
|
||||
@KS
|
||||
fun ks2() {}
|
||||
|
||||
@KS
|
||||
@KS
|
||||
@KS.Container([KS()])
|
||||
fun ks3() {}
|
||||
|
||||
@KS.Container([KS()])
|
||||
@KS
|
||||
fun ks4() {}
|
||||
|
||||
@KS
|
||||
@KS.Container([KS(), KS()])
|
||||
fun ks5() {}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: -RepeatableAnnotations
|
||||
// FULL_JDK
|
||||
// FILE: JR.java
|
||||
|
||||
-48
@@ -1,48 +0,0 @@
|
||||
// !LANGUAGE: -RepeatableAnnotations
|
||||
// FULL_JDK
|
||||
// FILE: Runtime.java
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Repeatable(Runtime.Container.class)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface Runtime {
|
||||
public @interface Container {
|
||||
Runtime[] value();
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: Clazz.java
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Repeatable(Clazz.Container.class)
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
public @interface Clazz {
|
||||
public @interface Container {
|
||||
Clazz[] value();
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: Source.java
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Repeatable(Source.Container.class)
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface Source {
|
||||
public @interface Container {
|
||||
Source[] value();
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: usage.kt
|
||||
|
||||
@Runtime <!NON_SOURCE_REPEATED_ANNOTATION!>@Runtime<!>
|
||||
class UseRuntime
|
||||
|
||||
@Clazz <!NON_SOURCE_REPEATED_ANNOTATION!>@Clazz<!>
|
||||
class UseClazz
|
||||
|
||||
@Source @Source
|
||||
class UseSource
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: -RepeatableAnnotations
|
||||
// FULL_JDK
|
||||
// FILE: Runtime.java
|
||||
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
// !LANGUAGE: -RepeatableAnnotations
|
||||
// FULL_JDK
|
||||
// FILE: Runtime.java
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface Runtime {}
|
||||
|
||||
// FILE: Clazz.java
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
public @interface Clazz {}
|
||||
|
||||
// FILE: Source.java
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface Source {}
|
||||
|
||||
// FILE: usage.kt
|
||||
|
||||
@Runtime @Runtime
|
||||
class UseRuntime
|
||||
|
||||
@Clazz @Clazz
|
||||
class UseClazz
|
||||
|
||||
@Source @Source
|
||||
class UseSource
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: -RepeatableAnnotations
|
||||
// FULL_JDK
|
||||
// FILE: Runtime.java
|
||||
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
// !LANGUAGE: +RepeatableAnnotations
|
||||
// FULL_JDK
|
||||
// FILE: Runtime.java
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface Runtime {}
|
||||
|
||||
// FILE: Clazz.java
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
public @interface Clazz {}
|
||||
|
||||
// FILE: Source.java
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface Source {}
|
||||
|
||||
// FILE: usage.kt
|
||||
|
||||
@Runtime @Runtime
|
||||
class UseRuntime
|
||||
|
||||
@Clazz @Clazz
|
||||
class UseClazz
|
||||
|
||||
@Source @Source
|
||||
class UseSource
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: +RepeatableAnnotations
|
||||
// FULL_JDK
|
||||
// FILE: Runtime.java
|
||||
|
||||
-22
@@ -1,22 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// !LANGUAGE: -ProhibitRepeatedUseSiteTargetAnnotations
|
||||
|
||||
// Ann is not repeatable
|
||||
annotation class Ann(val x: Int)
|
||||
|
||||
@get:Ann(10)
|
||||
val a: String
|
||||
@Ann(20) get() = "foo"
|
||||
|
||||
@set:Ann(10)
|
||||
var b: String = ""
|
||||
@Ann(20) set(value) { field = value }
|
||||
|
||||
@setparam:Ann(10)
|
||||
var c = " "
|
||||
set(@Ann(20) x) {}
|
||||
|
||||
@get:Ann(10)
|
||||
@get:Ann(20)
|
||||
val d: String
|
||||
@Ann(30) @Ann(40) get() = "foo"
|
||||
+2
-1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// !LANGUAGE: -ProhibitRepeatedUseSiteTargetAnnotations
|
||||
|
||||
@@ -19,4 +20,4 @@ var c = " "
|
||||
<!REPEATED_ANNOTATION_WARNING!>@get:Ann(10)<!>
|
||||
<!REPEATED_ANNOTATION, REPEATED_ANNOTATION_WARNING!>@get:Ann(20)<!>
|
||||
val d: String
|
||||
@Ann(30) <!REPEATED_ANNOTATION!>@Ann(40)<!> get() = "foo"
|
||||
@Ann(30) <!REPEATED_ANNOTATION!>@Ann(40)<!> get() = "foo"
|
||||
|
||||
+6
-6
@@ -4,19 +4,19 @@
|
||||
// Ann is not repeatable
|
||||
annotation class Ann(val x: Int)
|
||||
|
||||
@get:Ann(10)
|
||||
<!REPEATED_ANNOTATION!>@get:Ann(10)<!>
|
||||
val a: String
|
||||
@Ann(20) get() = "foo"
|
||||
|
||||
@set:Ann(10)
|
||||
<!REPEATED_ANNOTATION!>@set:Ann(10)<!>
|
||||
var b: String = ""
|
||||
@Ann(20) set(value) { field = value }
|
||||
|
||||
@setparam:Ann(10)
|
||||
<!REPEATED_ANNOTATION!>@setparam:Ann(10)<!>
|
||||
var c = " "
|
||||
set(@Ann(20) x) {}
|
||||
|
||||
@get:Ann(10)
|
||||
@get:Ann(20)
|
||||
<!REPEATED_ANNOTATION!>@get:Ann(10)<!>
|
||||
<!REPEATED_ANNOTATION, REPEATED_ANNOTATION!>@get:Ann(20)<!>
|
||||
val d: String
|
||||
@Ann(30) @Ann(40) get() = "foo"
|
||||
@Ann(30) <!REPEATED_ANNOTATION!>@Ann(40)<!> get() = "foo"
|
||||
|
||||
+7
-7
@@ -9,12 +9,12 @@ class CustomDelegate {
|
||||
operator fun getValue(thisRef: Any?, prop: KProperty<*>): String = prop.name
|
||||
}
|
||||
|
||||
public class A(@param:Ann @Ann val x: Int, @param: RepeatableAnn @Ann val y: Int) {
|
||||
public class A(@param:Ann <!REPEATED_ANNOTATION!>@Ann<!> val x: Int, @param: RepeatableAnn @Ann val y: Int) {
|
||||
|
||||
@field:Ann @property:Ann @RepeatableAnn @property:RepeatableAnn
|
||||
val a: Int = 0
|
||||
|
||||
@Ann @field:Ann @property:Ann
|
||||
@Ann @field:Ann <!REPEATED_ANNOTATION!>@property:Ann<!>
|
||||
val b: Int = 0
|
||||
|
||||
@field:RepeatableAnn @field:RepeatableAnn
|
||||
@@ -46,14 +46,14 @@ annotation class fieldOrPropAnn
|
||||
annotation class getSetAndParamAnn
|
||||
|
||||
public class B(<!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@param:fieldOrPropAnn<!> @fieldOrPropAnn val x: Int,
|
||||
@property:fieldOrPropAnn @fieldOrPropAnn val y: Int) {
|
||||
@property:fieldOrPropAnn <!REPEATED_ANNOTATION, REPEATED_ANNOTATION!>@fieldOrPropAnn<!> val y: Int) {
|
||||
@fieldOrPropAnn @field:fieldOrPropAnn
|
||||
val z: Int = 42
|
||||
|
||||
<!WRONG_ANNOTATION_TARGET!>@getSetAndParamAnn<!>
|
||||
@setparam:getSetAndParamAnn
|
||||
<!REPEATED_ANNOTATION!>@setparam:getSetAndParamAnn<!>
|
||||
var w: Int
|
||||
@getSetAndParamAnn @get:getSetAndParamAnn get() = 0
|
||||
@getSetAndParamAnn <!REPEATED_ANNOTATION!>@get:getSetAndParamAnn<!> get() = 0
|
||||
// See KT-15470: fake INAPPLICABLE_TARGET_ON_PROPERTY
|
||||
@getSetAndParamAnn <!INAPPLICABLE_TARGET_ON_PROPERTY!>@set:getSetAndParamAnn<!> set(arg) {}
|
||||
}
|
||||
@getSetAndParamAnn <!INAPPLICABLE_TARGET_ON_PROPERTY, REPEATED_ANNOTATION!>@set:getSetAndParamAnn<!> set(arg) {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user