[FE] Don't report cycle on annotation parameters if argument is vararg or array

^KT-52742 Fixed
^KT-47932
This commit is contained in:
Dmitriy Novozhilov
2022-06-14 13:37:29 +03:00
committed by teamcity
parent 4775855fd7
commit 12ce433bc2
12 changed files with 60 additions and 7 deletions
@@ -6,7 +6,7 @@
import kotlin.reflect.KClass
annotation class X(<!CYCLE_IN_ANNOTATION_PARAMETER_ERROR!>val value: X<!>) // error
annotation class Y(<!CYCLE_IN_ANNOTATION_PARAMETER_ERROR!>val value: Array<Y><!>) // error
annotation class Y(val value: Array<Y>) //no error
annotation class Z1(<!CYCLE_IN_ANNOTATION_PARAMETER_ERROR!>val a: Z2<!>, <!CYCLE_IN_ANNOTATION_PARAMETER_ERROR!>val b: Z2<!>) // error
annotation class Z2(<!CYCLE_IN_ANNOTATION_PARAMETER_ERROR!>val value: Z1<!>) // error
@@ -0,0 +1,11 @@
// FIR_IDENTICAL
// LANGUAGE: +ProhibitCyclesInAnnotations
// ISSUE: KT-52742
annotation class AnnotationWithArray(
val array: Array<AnnotationWithArray>
)
annotation class AnnotationWithVararg(
vararg val args: AnnotationWithVararg
)
@@ -0,0 +1,17 @@
package
public final annotation class AnnotationWithArray : kotlin.Annotation {
public constructor AnnotationWithArray(/*0*/ array: kotlin.Array<AnnotationWithArray>)
public final val array: kotlin.Array<AnnotationWithArray>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final annotation class AnnotationWithVararg : kotlin.Annotation {
public constructor AnnotationWithVararg(/*0*/ vararg args: AnnotationWithVararg /*kotlin.Array<out AnnotationWithVararg>*/)
public final val args: kotlin.Array<out AnnotationWithVararg>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -6,7 +6,7 @@
import kotlin.reflect.KClass
annotation class X(<!CYCLE_IN_ANNOTATION_PARAMETER_WARNING!>val value: X<!>) // error
annotation class Y(<!CYCLE_IN_ANNOTATION_PARAMETER_WARNING!>val value: Array<Y><!>) // error
annotation class Y(val value: Array<Y>) // no error
annotation class Z1(<!CYCLE_IN_ANNOTATION_PARAMETER_WARNING!>val a: Z2<!>, <!CYCLE_IN_ANNOTATION_PARAMETER_WARNING!>val b: Z2<!>) // error
annotation class Z2(<!CYCLE_IN_ANNOTATION_PARAMETER_WARNING!>val value: Z1<!>) // error
@@ -28,9 +28,8 @@ annotation class C5(val value: Array<A5>, val irrelevant: String)
annotation class A6
annotation class C6(val irrelevant: Double, val value: Array<A6> = [])
// Should be an error after fixing KT-47932.
@R(A7::class)
annotation class A7(<!CYCLE_IN_ANNOTATION_PARAMETER_WARNING!>val value: Array<A7><!>)
annotation class A7(val value: Array<A7>)
@@ -28,9 +28,8 @@ annotation class C5(val value: Array<A5>, val irrelevant: String)
annotation class A6
annotation class C6(val irrelevant: Double, val value: Array<A6> = [])
// Should be an error after fixing KT-47932.
@R(A7::class)
annotation class A7(<!CYCLE_IN_ANNOTATION_PARAMETER_WARNING!>val value: Array<A7><!>)
annotation class A7(val value: Array<A7>)