Put reification markers came from super object signature

#KT-44770 Fixed
  #KT-30696 Open
This commit is contained in:
Mikhael Bogdanov
2021-04-29 10:42:45 +02:00
parent 8dd307573a
commit 95d95f9a9b
19 changed files with 209 additions and 14 deletions
@@ -1,7 +1,8 @@
// TARGET_BACKEND: JVM
// NO_CHECK_LAMBDA_INLINING
// WITH_RUNTIME
// IGNORE_BACKEND: JVM
// IGNORE_BACKEND: JVM, JVM_IR
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_MULTI_MODULE: JVM, JVM_IR, JVM_MULTI_MODULE_OLD_AGAINST_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD
// FILE: 1.kt
+25
View File
@@ -0,0 +1,25 @@
// TARGET_BACKEND: JVM
// FULL_JDK
// WITH_RUNTIME
// IGNORE_BACKEND: ANDROID
// FILE: 1.kt
package test
import java.lang.reflect.*
class OK
interface S<A>
inline fun <reified T : Any> test(): String {
return (object : S<T> {
}::class.java.genericInterfaces[0] as ParameterizedType).actualTypeArguments[0].getTypeName()
// FILE: 2.kt
import test.*
fun box():String {
val test = test<OK>()
return if (test == OK::class.qualifiedName) "OK" else "fail: $test"
}
@@ -0,0 +1,25 @@
// TARGET_BACKEND: JVM
// FULL_JDK
// WITH_RUNTIME
// IGNORE_BACKEND: ANDROID
// FILE: 1.kt
package test
import java.lang.reflect.*
class OK
interface S<A>
inline fun <reified T : Any> test(): String {
return ((object : S<S<T>> {
}::class.java.genericInterfaces[0] as ParameterizedType).actualTypeArguments[0] as ParameterizedType).actualTypeArguments[0].getTypeName()
// FILE: 2.kt
import test.*
fun box():String {
val test = test<OK>()
return if (test == OK::class.qualifiedName) "OK" else "fail: $test"
}