JVM_IR KT-46840 don't generate special function references with indy

This commit is contained in:
Dmitry Petrov
2021-05-20 17:12:24 +03:00
committed by TeamCityServer
parent 3fc7e0ed03
commit c0fbdb1535
16 changed files with 396 additions and 102 deletions
@@ -0,0 +1,16 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 0 java/lang/invoke/LambdaMetafactory
// FILE: anyNToString.kt
fun box() =
Sam(Any?::toString).get("OK")
// FILE: Sam.java
public interface Sam {
String get(String s);
}
@@ -0,0 +1,22 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 0 java/lang/invoke/LambdaMetafactory
// FILE: arrayConstructor.kt
fun box(): String {
val sam = Sam(::IntArray)
val arr = sam.get(2)
if (arr.size != 2 || arr[0] != 0 || arr[1] != 0)
return "Failed"
return "OK"
}
// FILE: Sam.java
public interface Sam {
int[] get(int x);
}
@@ -0,0 +1,20 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 0 java/lang/invoke/LambdaMetafactory
// FILE: enumValues.kt
enum class ABC(val x: String = "") {
A("OK"), B, C
}
fun box() =
Sam(::enumValueOf).get("A").x
// FILE: Sam.java
public interface Sam {
ABC get(String x);
}
@@ -0,0 +1,20 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 0 java/lang/invoke/LambdaMetafactory
// FILE: enumValues.kt
enum class ABC(val x: String = "") {
A("OK"), B, C
}
fun box() =
Sam(::enumValues).get()[0].x
// FILE: Sam.java
public interface Sam {
ABC[] get();
}
@@ -0,0 +1,19 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 0 java/lang/invoke/LambdaMetafactory
// FILE: stringNPlus.kt
fun test(x: String?, y: Any?) =
Sam(String?::plus).get(x, y)
fun box() =
test("O", "K")
// FILE: Sam.java
public interface Sam {
String get(String x, Object y);
}