mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-11 15:53:46 +00:00
This allows working with constructors with inline class parameters using Kotlin reflection, as described in https://youtrack.jetbrains.com/issue/KT-27429#focus=streamItem-27-3161148-0-0 #KT-27913 #KT-27429
21 lines
707 B
Kotlin
Vendored
21 lines
707 B
Kotlin
Vendored
// IGNORE_BACKEND: JVM_IR, JS_IR, JS, NATIVE
|
|
// WITH_REFLECT
|
|
import kotlin.reflect.full.primaryConstructor
|
|
import kotlin.reflect.jvm.javaConstructor
|
|
import kotlin.reflect.jvm.kotlinFunction
|
|
import kotlin.test.assertEquals
|
|
|
|
inline class Z(val x: Int)
|
|
|
|
class Test(val x: Z)
|
|
|
|
fun box(): String {
|
|
val kctor1 = Test::class.primaryConstructor ?: throw AssertionError("No primary constructor")
|
|
val jctor1 = kctor1.javaConstructor ?: throw AssertionError("No javaConstructor for $kctor1")
|
|
val kctor2 = jctor1.kotlinFunction ?: throw AssertionError("No kotlinFunction for $jctor1")
|
|
|
|
assertEquals(kctor1, kctor2)
|
|
assertEquals("[x]", kctor2.parameters.map { it.name }.toString())
|
|
|
|
return "OK"
|
|
} |