Map Kotlin TYPE target to Java TYPE_USE in bytecode

And TYPE_PARAMETER -> TYPE_PARAMETER similarly

 #KT-23857 Fixed
This commit is contained in:
Alexander Udalov
2018-04-25 15:48:13 +02:00
parent fbb0a3e06c
commit d122406dca
5 changed files with 76 additions and 1 deletions
@@ -0,0 +1,21 @@
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FULL_JDK
// FILE: A.java
import java.util.List;
public class A<@Anno(1) T> {}
// FILE: Anno.kt
import kotlin.test.assertEquals
@Target(AnnotationTarget.TYPE_PARAMETER)
annotation class Anno(val value: Int = 0)
fun box(): String {
val typeParameter = A::class.java.typeParameters.single()
assertEquals("[@Anno(value=1)]", typeParameter.annotations.toList().toString())
return "OK"
}
@@ -0,0 +1,29 @@
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FULL_JDK
// FILE: A.java
import java.util.List;
public class A {
public static @Anno(1) String test(List<@Anno(2) String> list) {
return list.get(0);
}
}
// FILE: Anno.kt
import java.lang.reflect.AnnotatedParameterizedType
import kotlin.test.assertEquals
@Target(AnnotationTarget.TYPE)
annotation class Anno(val value: Int = 0)
fun box(): String {
val method = A::class.java.declaredMethods.single()
assertEquals("[@Anno(value=1)]", method.annotatedReturnType.annotations.toList().toString())
val parameterType = method.parameters.single().annotatedType as AnnotatedParameterizedType
assertEquals("[@Anno(value=2)]", parameterType.annotatedActualTypeArguments.single().annotations.toList().toString())
return "OK"
}