Move JVM8 box test to common
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
// FULL_JDK
|
||||
// KOTLIN_CONFIGURATION_FLAGS: +JVM.PARAMETERS_METADATA
|
||||
|
||||
interface Test {
|
||||
fun test(OK: String) = "123"
|
||||
}
|
||||
|
||||
|
||||
fun box(): String {
|
||||
val testMethod = Class.forName("Test\$DefaultImpls").declaredMethods.single()
|
||||
val parameters = testMethod.getParameters()
|
||||
|
||||
if (!parameters[0].isSynthetic()) return "wrong modifier on receiver parameter: ${parameters[0].modifiers}"
|
||||
|
||||
if (parameters[1].modifiers != 0) return "wrong modifier on value parameter: ${parameters[1].modifiers}"
|
||||
|
||||
return parameters[1].name
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
// FULL_JDK
|
||||
// JAVAC_OPTIONS: -parameters
|
||||
// KOTLIN_CONFIGURATION_FLAGS: +JVM.PARAMETERS_METADATA
|
||||
|
||||
// FILE: JavaInterface.java
|
||||
|
||||
public interface JavaInterface {
|
||||
void plugin(String id);
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
interface KotlinInterface {
|
||||
fun plugin(id: String)
|
||||
}
|
||||
|
||||
class KotlinDelegate(impl: KotlinInterface) : KotlinInterface by impl
|
||||
|
||||
class JavaDelegate(impl: JavaInterface) : JavaInterface by impl
|
||||
|
||||
private fun check(javaClass: Class<*>) {
|
||||
val pluginMethod = javaClass.getDeclaredMethod("plugin", String::class.java)
|
||||
assertEquals(listOf("id"), pluginMethod.parameters.map { it.name }, "Incorrect parameters for $javaClass")
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
check(JavaInterface::class.java)
|
||||
check(KotlinInterface::class.java)
|
||||
check(KotlinDelegate::class.java)
|
||||
check(JavaDelegate::class.java)
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
// FULL_JDK
|
||||
// KOTLIN_CONFIGURATION_FLAGS: +JVM.PARAMETERS_METADATA
|
||||
|
||||
enum class A(val OK: String) {
|
||||
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val clazz = A::class.java
|
||||
val constructor = clazz.getDeclaredConstructor(String::class.java, Int::class.java, String::class.java)
|
||||
val parameters = constructor.getParameters()
|
||||
|
||||
if (parameters[0].name != "\$enum\$name") return "wrong entry name: ${parameters[0].name}"
|
||||
if (!parameters[0].isSynthetic() || parameters[0].isImplicit()) return "wrong name flags: ${parameters[0].modifiers}"
|
||||
|
||||
if (parameters[1].name != "\$enum\$ordinal") return "wrong ordinal name: ${parameters[1].name}"
|
||||
if (!parameters[1].isSynthetic() || parameters[1].isImplicit()) return "wrong ordinal flags: ${parameters[1].modifiers}"
|
||||
|
||||
if (parameters[2].modifiers != 0) return "wrong modifier on value parameter: ${parameters[2].modifiers}"
|
||||
return parameters[2].name
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
// FULL_JDK
|
||||
// KOTLIN_CONFIGURATION_FLAGS: +JVM.PARAMETERS_METADATA
|
||||
|
||||
class A() {
|
||||
fun String.test(OK: String) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val clazz = A::class.java
|
||||
val method = clazz.getDeclaredMethod("test", String::class.java, String::class.java)
|
||||
val parameters = method.getParameters()
|
||||
|
||||
if (!parameters[0].isImplicit() || parameters[0].isSynthetic()) return "wrong modifier on receiver parameter: ${parameters[0].modifiers}"
|
||||
|
||||
return parameters[1].name
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
// FULL_JDK
|
||||
// KOTLIN_CONFIGURATION_FLAGS: +JVM.PARAMETERS_METADATA
|
||||
|
||||
class A() {
|
||||
fun test(OK: String) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val clazz = A::class.java
|
||||
val method = clazz.getDeclaredMethod("test", String::class.java)
|
||||
val parameters = method.getParameters()
|
||||
|
||||
if (parameters[0].modifiers != 0) return "wrong modifier on value parameter: ${parameters[0].modifiers}"
|
||||
return parameters[0].name
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
// FULL_JDK
|
||||
// KOTLIN_CONFIGURATION_FLAGS: +JVM.PARAMETERS_METADATA
|
||||
|
||||
class A {
|
||||
inner class B
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val clazz = A.B::class.java
|
||||
val constructor = clazz.getDeclaredConstructors().single()
|
||||
val parameters = constructor.getParameters()
|
||||
|
||||
if (parameters[0].name != "this$0") return "wrong outer name: ${parameters[0].name}"
|
||||
if (!parameters[0].isImplicit() || parameters[0].isSynthetic()) return "wrong outer flags: ${parameters[0].modifiers}"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
// FULL_JDK
|
||||
// KOTLIN_CONFIGURATION_FLAGS: +JVM.PARAMETERS_METADATA
|
||||
|
||||
open class A(val s: String)
|
||||
|
||||
fun test(OK: String) = object : A(OK) {
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val value = test("OK")
|
||||
val clazz = value.javaClass
|
||||
val constructor = clazz.getDeclaredConstructors().single()
|
||||
val parameters = constructor.getParameters()
|
||||
|
||||
if (!parameters[0].isSynthetic() || parameters[0].isImplicit()) return "wrong modifier on value parameter: ${parameters[0].modifiers}"
|
||||
return value.s
|
||||
}
|
||||
Reference in New Issue
Block a user