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"
}
@@ -0,0 +1,5 @@
// KOTLIN_CONFIGURATION_FLAGS: SAM_CONVERSIONS=CLASS
// WITH_SIGNATURES
// FILE: t.kt
inline fun <reified T> foo(s: String = "123") {}
@@ -0,0 +1,6 @@
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public synthetic final static <<T:Ljava/lang/Object;>(Ljava/lang/String;)V> method foo(p0: java.lang.String): void
public synthetic static <null> method foo$default(p0: java.lang.String, p1: int, p2: java.lang.Object): void
}
@@ -24,7 +24,7 @@ public final class<null> test/SamAdapterAndInlinedOneKt {
public final static @org.jetbrains.annotations.NotNull <(Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;)Ljava/lang/Runnable;> method makeRunnable2(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Runnable
public final static @org.jetbrains.annotations.NotNull <(Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;)Ljava/lang/Runnable;> method noInline(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Runnable
public final static @org.jetbrains.annotations.NotNull <(Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;)Ljava/lang/Runnable;> method noInline2(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Runnable
public synthetic final static <null> method makeRunnable(p0: kotlin.jvm.functions.Function0): java.lang.Runnable
public synthetic final static <<T:Ljava/lang/Object;>(Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;)Ljava/lang/Runnable;> method makeRunnable(p0: kotlin.jvm.functions.Function0): java.lang.Runnable
inner (anonymous) class test/SamAdapterAndInlinedOneKt$sam$i$java_lang_Runnable$0
inner (anonymous) class test/SamAdapterAndInlinedOneKt$sam$java_lang_Runnable$0
}