JVM_IR wrap function into a proxy if indy SAM-conversion becomes valid

This commit is contained in:
Dmitry Petrov
2021-10-06 18:53:29 +03:00
committed by teamcityserver
parent 9ad62eb1fd
commit 40fe67880b
21 changed files with 583 additions and 66 deletions
@@ -4,7 +4,7 @@
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 0 java/lang/invoke/LambdaMetafactory
// 1 java/lang/invoke/LambdaMetafactory
// FILE: anyNToString.kt
fun box() =
@@ -4,7 +4,7 @@
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 0 java/lang/invoke/LambdaMetafactory
// 1 java/lang/invoke/LambdaMetafactory
// FILE: arrayConstructor.kt
fun box(): String {
@@ -4,7 +4,7 @@
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 0 java/lang/invoke/LambdaMetafactory
// 1 java/lang/invoke/LambdaMetafactory
// FILE: charArrayOf.kt
fun box(): String {
@@ -0,0 +1,19 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: intArrayOf.kt
fun box(): String {
val sam = Sam(::intArrayOf)
val arr = sam.get(intArrayOf('O'.toInt(), 'K'.toInt()))
return "${arr[0].toChar()}${arr[1].toChar()}"
}
// FILE: Sam.java
public interface Sam {
int[] get(int[] s);
}
@@ -4,7 +4,7 @@
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 0 java/lang/invoke/LambdaMetafactory
// 1 java/lang/invoke/LambdaMetafactory
// FILE: stringNPlus.kt
fun test(x: String?, y: Any?) =