Files
kotlin-fork/compiler/testData/codegen/box/parametersMetadata/inlineClassMethodParameterModifiers.kt
T
Alexander Udalov 47c48efa33 JVM IR: do not generate extension receiver parameter as ACC_MANDATED
Otherwise Java reflection is not able to load its type as a
parameterized type.

 #KT-40857 Fixed
2023-03-06 20:57:52 +00:00

28 lines
856 B
Kotlin
Vendored

// SKIP_JDK6
// TARGET_BACKEND: JVM
// IGNORE_BACKEND: JVM
// WITH_STDLIB
// FULL_JDK
// PARAMETERS_METADATA
// FILE: A.kt
inline class A(val i: Int) {
fun f() = i
}
fun A.extension() = this.i
fun box(): String {
val method = Class.forName("A").declaredMethods.single { it.name == "f-impl" }
val parameters = method.getParameters()
if (!parameters[0].isSynthetic()) return "wrong modifier on receiver parameter: ${parameters[0].modifiers}"
val extensionMethod = Class.forName("AKt").declaredMethods.single { it.name.contains("extension") }
val extensionMethodParameters = extensionMethod.getParameters()
if (extensionMethodParameters[0].isSynthetic() || extensionMethodParameters[0].isImplicit())
return "wrong modifier on extension receiver parameter: ${extensionMethodParameters[0].modifiers}"
return "OK"
}