JVM_IR KT-45998 protected companion object member accessors with indy

This commit is contained in:
Dmitry Petrov
2021-04-16 21:02:25 +03:00
committed by TeamCityServer
parent 9a4a39e680
commit 7f4da93cc3
7 changed files with 128 additions and 27 deletions
@@ -8,6 +8,7 @@
// CHECK_BYTECODE_TEXT
// 1 java/lang/invoke/LambdaMetafactory
// 1 c2/C2\.access\$test\$s[0-9]+\(\)Ljava/lang/String\;
// FILE: test.kt
import c2.*
@@ -29,8 +30,15 @@ open class C1 {
package c2
import c1.*
import java.util.function.Supplier
import j.*
class C2 : C1() {
fun supplier() = Supplier<String>(::test)
fun supplier() = J(::test)
}
// FILE: j/J.java
package j;
public interface J {
public String get();
}
@@ -0,0 +1,41 @@
// TARGET_BACKEND: JVM
// IGNORE_LIGHT_ANALYSIS
// IGNORE_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// WITH_RUNTIME
// FULL_JDK
// CHECK_BYTECODE_TEXT
// 1 java/lang/invoke/LambdaMetafactory
// FILE: test.kt
import c2.*
fun box(): String =
C2().supplier().get()
// FILE: C1.kt
package c1
open class C1 {
protected fun test(): String = "OK"
}
// FILE: C2.kt
package c2
import c1.*
import j.*
class C2 : C1() {
fun supplier() = J(this::test)
}
// FILE: j/J.java
package j;
public interface J {
public String get();
}