JVM_IR: generate instance fields even when reification is needed
The inliner supports that, we just need to generate the reification markers on GETFIELD to instance fields.
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
// CHECK_BYTECODE_LISTING
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
inline fun <reified U> bar() = U::class.simpleName!!
|
||||
|
||||
inline fun <reified T> foo(): String {
|
||||
val x = { bar<Array<T>>() }
|
||||
return x()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
val result = foo<Int>()
|
||||
return if (result == "Array") "OK" else result
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
@kotlin.Metadata
|
||||
public final class _2Kt$box$$inlined$foo$1 {
|
||||
// source: '1.kt'
|
||||
enclosing method _2Kt.box()Ljava/lang/String;
|
||||
public final static field INSTANCE: _2Kt$box$$inlined$foo$1
|
||||
inner (anonymous) class _2Kt$box$$inlined$foo$1
|
||||
static method <clinit>(): void
|
||||
public method <init>(): void
|
||||
public synthetic bridge method invoke(): java.lang.Object
|
||||
public final @org.jetbrains.annotations.NotNull method invoke(): java.lang.String
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class _2Kt {
|
||||
// source: '2.kt'
|
||||
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class test/_1Kt$foo$x$1 {
|
||||
// source: '1.kt'
|
||||
enclosing method test/_1Kt.foo()Ljava/lang/String;
|
||||
public final static field INSTANCE: test._1Kt$foo$x$1
|
||||
inner (anonymous) class test/_1Kt$foo$x$1
|
||||
static method <clinit>(): void
|
||||
public method <init>(): void
|
||||
public synthetic bridge method invoke(): java.lang.Object
|
||||
public final @org.jetbrains.annotations.NotNull method invoke(): java.lang.String
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class test/_1Kt {
|
||||
// source: '1.kt'
|
||||
inner (anonymous) class test/_1Kt$foo$x$1
|
||||
public synthetic final static method bar(): java.lang.String
|
||||
public synthetic final static method foo(): java.lang.String
|
||||
}
|
||||
Reference in New Issue
Block a user