| // TARGET_BACKEND: JVM |
| // WITH_STDLIB |
| // FULL_JDK |
| // JAVAC_OPTIONS: -parameters |
| // PARAMETERS_METADATA |
| // JVM_TARGET: 1.8 |
| // 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" |
| } |