[FIR2IR] Fix infinite loop between annotation and annotation parameter
When an annotation constructor value parameter is annotated with the very same annotation, FIR2IR went in an infinite loop when trying to generate it. To fix this, the constructor is added to the Fir2IrDeclarationStorage cache before generating the value parameters. To accommodate for the missing parameters, the value arguments count is determined using the FIR.
This commit is contained in:
committed by
Space Team
parent
fc75402f65
commit
d1ce55cbd2
+37
@@ -0,0 +1,37 @@
|
||||
package test
|
||||
|
||||
public final annotation class Ann : kotlin.Annotation {
|
||||
/*primary*/ public constructor Ann(/*0*/ e: kotlin.Int)
|
||||
public final val e: kotlin.Int
|
||||
public final fun `<get-e>`(): kotlin.Int
|
||||
}
|
||||
|
||||
@test.MyRequiresOptIn(a = "", b = MyLevel.ERROR) public final annotation class MyRequiresOptIn : kotlin.Annotation {
|
||||
/*primary*/ public constructor MyRequiresOptIn(/*0*/ a: kotlin.String = ..., /*1*/ b: test.MyRequiresOptIn.MyLevel = ...)
|
||||
public final val a: kotlin.String = ""
|
||||
public final fun `<get-a>`(): kotlin.String
|
||||
public final val b: test.MyRequiresOptIn.MyLevel = MyLevel.ERROR
|
||||
public final fun `<get-b>`(): test.MyRequiresOptIn.MyLevel
|
||||
|
||||
public final enum class MyLevel : kotlin.Enum<test.MyRequiresOptIn.MyLevel> {
|
||||
enum entry WARNING
|
||||
|
||||
enum entry ERROR
|
||||
|
||||
/*primary*/ private constructor MyLevel()
|
||||
@kotlin.internal.IntrinsicConstEvaluation public final override /*1*/ /*fake_override*/ val name: kotlin.String
|
||||
public final override /*1*/ /*fake_override*/ fun `<get-name>`(): kotlin.String
|
||||
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
|
||||
public final override /*1*/ /*fake_override*/ fun `<get-ordinal>`(): kotlin.Int
|
||||
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
|
||||
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: test.MyRequiresOptIn.MyLevel): kotlin.Int
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
|
||||
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<test.MyRequiresOptIn.MyLevel!>!
|
||||
|
||||
// Static members
|
||||
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<test.MyRequiresOptIn.MyLevel>
|
||||
public final /*synthesized*/ fun `<get-entries>`(): kotlin.enums.EnumEntries<test.MyRequiresOptIn.MyLevel>
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): test.MyRequiresOptIn.MyLevel
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<test.MyRequiresOptIn.MyLevel>
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user