Files
kotlin-fork/compiler/testData/codegen/box/annotations/javaAnnotationArrayValueDefault.kt
T
Alexander Udalov 019836e9c7 IR: use origin DEFINED for value parameters of fake overrides
Fake overrides created by K1, as well as fir2ir in K2, use DEFINED. So
this gets rid of a lot of differences in IR text dumps between the K2
normal mode and K2 with IR fake overrides, and will ultimately help in
implementing and testing KT-61360.

The change in AddContinuationLowering is needed to fix tests like
kt47549. When creating anonymous classes for SAM implementations, we're
reusing the same fake override building machinery. And since we can't
extract any meaningful information from the fake override parameter's
origin anymore, we have to get the parameter from the original symbol.
2023-09-15 12:52:57 +00:00

44 lines
1.3 KiB
Kotlin
Vendored

// TARGET_BACKEND: JVM
// WITH_STDLIB
// DUMP_IR
// MODULE: lib
// FILE: JavaAnn.java
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
@interface JavaAnn {
String[] value() default {"d1", "d2"};
}
// MODULE: main(lib)
// FILE: 1.kt
@JavaAnn class MyClass1
@JavaAnn() class MyClass2
@JavaAnn("asd") class MyClass3
@JavaAnn(*arrayOf()) class MyClass4
fun box(): String {
val value1 = MyClass1::class.java.getAnnotation(JavaAnn::class.java).value
if (value1.size != 2) return "fail1: ${value1.size}"
if (value1[0] != "d1") return "fail2: ${value1[0]}"
if (value1[1] != "d2") return "fail3: ${value1[1]}"
val value2 = MyClass2::class.java.getAnnotation(JavaAnn::class.java).value
if (value2.size != 2) return "fail4: ${value2.size}"
if (value2[0] != "d1") return "fail5: ${value2[0]}"
if (value2[1] != "d2") return "fail6: ${value2[1]}"
val value3 = MyClass3::class.java.getAnnotation(JavaAnn::class.java).value
if (value3.size != 1) return "fail7: ${value3.size}"
if (value3[0] != "asd") return "fail8: ${value3[0]}"
val value4 = MyClass4::class.java.getAnnotation(JavaAnn::class.java).value
if (value4.size != 0) return "fail 9: ${value4.size}"
return "OK"
}