[FIR] Fix serialization of annotation vararg arguments

#KT-58937 Fixed
This commit is contained in:
Kirill Rakhman
2023-06-02 16:49:25 +02:00
committed by Space Team
parent fd4d4f516f
commit 8ff67218f5
19 changed files with 225 additions and 116 deletions
@@ -0,0 +1,42 @@
public final annotation class A : R|kotlin/Annotation| {
public final val s: R|kotlin/Array<out kotlin/String>|
public get(): R|kotlin/Array<out kotlin/String>|
public constructor(vararg s: R|kotlin/Array<out kotlin/String>|): R|test/A|
}
@R|test/A|(s = <implicitArrayOf>(String(1), String(2))) public final class B : R|kotlin/Any| {
public constructor(): R|test/B|
}
@R|test/A|(s = <implicitArrayOf>(String(1), String(2))) public final class D : R|kotlin/Any| {
public constructor(): R|test/D|
}
@R|test/A|(s = <implicitArrayOf>(String(1), String(2))) public final class E : R|kotlin/Any| {
public constructor(): R|test/E|
}
@R|test/A|(s = <implicitArrayOf>(String(1), String(2))) public final class F : R|kotlin/Any| {
public constructor(): R|test/F|
}
@R|test/A|(s = <implicitArrayOf>(String(1), String(2))) public final class H : R|kotlin/Any| {
public constructor(): R|test/H|
}
@R|test/A|(s = <implicitArrayOf>(String(1), String(2))) public final class I : R|kotlin/Any| {
public constructor(): R|test/I|
}
@R|test/A|(s = <implicitArrayOf>(String(1), String(2))) public final class J : R|kotlin/Any| {
public constructor(): R|test/J|
}
@@ -0,0 +1,24 @@
package test
annotation class A(vararg val s: String)
@A("1", "2")
class B
@A(*["1", "2"])
class D
@A(s = ["1", "2"])
class E
@A(s = *["1", "2"])
class F
@A(*arrayOf("1", "2"))
class H
@A(s = *arrayOf("1", "2"))
class I
@A(s = arrayOf("1", "2"))
class J
@@ -0,0 +1,35 @@
package test
public final annotation class A : kotlin.Annotation {
/*primary*/ public constructor A(/*0*/ vararg s: kotlin.String /*kotlin.Array<out kotlin.String>*/)
public final val s: kotlin.Array<out kotlin.String>
public final fun `<get-s>`(): kotlin.Array<out kotlin.String>
}
@test.A(s = {"1", "2"}) public final class B {
/*primary*/ public constructor B()
}
@test.A(s = {"1", "2"}) public final class D {
/*primary*/ public constructor D()
}
@test.A(s = {"1", "2"}) public final class E {
/*primary*/ public constructor E()
}
@test.A(s = {"1", "2"}) public final class F {
/*primary*/ public constructor F()
}
@test.A(s = {"1", "2"}) public final class H {
/*primary*/ public constructor H()
}
@test.A(s = {"1", "2"}) public final class I {
/*primary*/ public constructor I()
}
@test.A(s = {"1", "2"}) public final class J {
/*primary*/ public constructor J()
}
@@ -3,7 +3,7 @@ public final val bar: R|kotlin/Int|
@R|test/Anno|() public final fun baz(): R|kotlin/Unit|
@R|test/Anno|(t = String(live)) public final fun foo(): R|kotlin/Unit|
@R|test/Anno|(t = <implicitArrayOf>(String(live), String(long))) public final fun foo(): R|kotlin/Unit|
public final annotation class Anno : R|kotlin/Annotation| {
public final val t: R|kotlin/Array<out kotlin/String>|
@@ -1,46 +0,0 @@
@R|test/OptionGroups|(o1 = @R|test/StringOptions|(option = <implicitArrayOf>(String(abc), String(d), String(ef))) , o2 = @R|test/EnumOption|(option = R|test/E.ENTRY|) ) public final class AnnotationInAnnotationArguments : R|kotlin/Any| {
public constructor(): R|test/AnnotationInAnnotationArguments|
}
public final enum class E : R|kotlin/Enum<test/E>| {
private constructor(): R|test/E|
public final static enum entry ENTRY: R|test/E|
public final static fun values(): R|kotlin/Array<test/E>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|test/E| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/E>|
public get(): R|kotlin/enums/EnumEntries<test/E>|
}
public final annotation class EnumOption : R|kotlin/Annotation| {
public final val option: R|test/E|
public get(): R|test/E|
public constructor(option: R|test/E|): R|test/EnumOption|
}
public final annotation class OptionGroups : R|kotlin/Annotation| {
public final val o1: R|test/StringOptions|
public get(): R|test/StringOptions|
public final val o2: R|test/EnumOption|
public get(): R|test/EnumOption|
public constructor(o1: R|test/StringOptions|, o2: R|test/EnumOption|): R|test/OptionGroups|
}
public final annotation class StringOptions : R|kotlin/Annotation| {
public final val option: R|kotlin/Array<out kotlin/String>|
public get(): R|kotlin/Array<out kotlin/String>|
public constructor(vararg option: R|kotlin/Array<out kotlin/String>|): R|test/StringOptions|
}
@@ -1,46 +0,0 @@
@R|test/OptionGroups|(o1 = @R|test/StringOptions|(option = String(abc)) , o2 = @R|test/EnumOption|(option = R|test/E.ENTRY|) ) public final class AnnotationInAnnotationArguments : R|kotlin/Any| {
public constructor(): R|test/AnnotationInAnnotationArguments|
}
public final enum class E : R|kotlin/Enum<test/E>| {
private constructor(): R|test/E|
public final static enum entry ENTRY: R|test/E|
public final static fun values(): R|kotlin/Array<test/E>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|test/E| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/E>|
public get(): R|kotlin/enums/EnumEntries<test/E>|
}
public final annotation class EnumOption : R|kotlin/Annotation| {
public final val option: R|test/E|
public get(): R|test/E|
public constructor(option: R|test/E|): R|test/EnumOption|
}
public final annotation class OptionGroups : R|kotlin/Annotation| {
public final val o1: R|test/StringOptions|
public get(): R|test/StringOptions|
public final val o2: R|test/EnumOption|
public get(): R|test/EnumOption|
public constructor(o1: R|test/StringOptions|, o2: R|test/EnumOption|): R|test/OptionGroups|
}
public final annotation class StringOptions : R|kotlin/Annotation| {
public final val option: R|kotlin/Array<out kotlin/String>|
public get(): R|kotlin/Array<out kotlin/String>|
public constructor(vararg option: R|kotlin/Array<out kotlin/String>|): R|test/StringOptions|
}
@@ -1,4 +1,3 @@
// PLATFORM_DEPENDANT_METADATA
// ALLOW_AST_ACCESS
package test