FIR: convert Java type parameter bounds before reading annotations

This avoids a crash due to circular class references through annotation
arguments.
This commit is contained in:
pyos
2022-09-15 11:48:33 +02:00
committed by teamcity
parent 04dae17333
commit 5ba76ee757
11 changed files with 108 additions and 12 deletions
@@ -0,0 +1,18 @@
public open class ReferenceCycleThroughAnnotation : R|kotlin/Any| {
public constructor(): R|test/ReferenceCycleThroughAnnotation|
@R|test/ReferenceCycleThroughAnnotation.C|(value = <getClass>(<getClass>(R|ft<test/ReferenceCycleThroughAnnotation.B<ft<test/ReferenceCycleThroughAnnotation.A<*>, test/ReferenceCycleThroughAnnotation.A<*>?>>, test/ReferenceCycleThroughAnnotation.B<*>?>|))) public open inner class A<T : R|kotlin/Any!|> : R|kotlin/Any| {
public open fun foo(): R|kotlin/Unit|
public test/ReferenceCycleThroughAnnotation.constructor<T : R|kotlin/Any!|>(): R|test/ReferenceCycleThroughAnnotation.A<T>|
}
public open inner class B<T : R|ft<test/ReferenceCycleThroughAnnotation.A<ft<T & Any, T?>>, test/ReferenceCycleThroughAnnotation.A<ft<T & Any, T?>>?>|> : R|kotlin/Any| {
public test/ReferenceCycleThroughAnnotation.constructor<T : R|ft<test/ReferenceCycleThroughAnnotation.A<ft<T & Any, T?>>, test/ReferenceCycleThroughAnnotation.A<ft<T & Any, T?>>?>|>(): R|test/ReferenceCycleThroughAnnotation.B<T>|
}
public final annotation class C : R|kotlin/Annotation| {
public constructor(value: R|kotlin/reflect/KClass<*>|): R|test/ReferenceCycleThroughAnnotation.C|
}
}