Make FirArrayOfCallTransformer recursive #KT-49076 Fixed

This commit is contained in:
Mikhail Glukhikh
2021-10-13 15:27:38 +03:00
committed by TeamCityServer
parent ad3502a952
commit c5a4a5de42
9 changed files with 89 additions and 9 deletions
@@ -0,0 +1,33 @@
FILE: arrayOfImports.kt
@R|kotlin/Deprecated|(message = String(Use ...), replaceWith = R|kotlin/ReplaceWith.ReplaceWith|(String(bar), vararg(imports = <implicitArrayOf>(String(my.package.bar))))) @R|Third|(first = R|/First.First|(<implicitArrayOf>(<getClass>(Q|kotlin/String|))), second = R|/Second.Second|(<implicitArrayOf>(R|/First.First|(<implicitArrayOf>(<getClass>(Q|kotlin/Int|))), R|/First.First|(<implicitArrayOf>(<getClass>(Q|kotlin/Double|)))))) @R|Second|(value = <implicitArrayOf>(<implicitArrayOf>(String()), <implicitArrayOf>(R|/First.First|(<implicitArrayOf>())))) public final fun foo(): R|kotlin/Unit| {
}
public final annotation class First : R|kotlin/Annotation| {
public constructor(value: R|kotlin/Array<kotlin/reflect/KClass<*>>|): R|First| {
super<R|kotlin/Any|>()
}
public final val value: R|kotlin/Array<kotlin/reflect/KClass<*>>| = R|<local>/value|
public get(): R|kotlin/Array<kotlin/reflect/KClass<*>>|
}
public final annotation class Second : R|kotlin/Annotation| {
public constructor(value: R|kotlin/Array<First>|): R|Second| {
super<R|kotlin/Any|>()
}
public final val value: R|kotlin/Array<First>| = R|<local>/value|
public get(): R|kotlin/Array<First>|
}
public final annotation class Third : R|kotlin/Annotation| {
public constructor(first: R|First|, second: R|Second|): R|Third| {
super<R|kotlin/Any|>()
}
public final val first: R|First| = R|<local>/first|
public get(): R|First|
public final val second: R|Second| = R|<local>/second|
public get(): R|Second|
}
@@ -0,0 +1,20 @@
// WITH_REFLECT
import kotlin.reflect.KClass
// See KT-49076
@Deprecated("Use ...", ReplaceWith("bar", imports = arrayOf("my.package.bar")))
@Third(
First(arrayOf(String::class)),
Second(arrayOf(First(arrayOf(Int::class)), First(arrayOf(Double::class))))
)
// Incorrect array inside
@Second(<!ARGUMENT_TYPE_MISMATCH!>arrayOf(arrayOf(""), arrayOf(First(arrayOf())))<!>)
fun foo() {}
annotation class First(val value: Array<KClass<*>>)
annotation class Second(val value: Array<First>)
annotation class Third(val first: First, val second: Second)