JVM: enable indy lambdas in some tests explicitly
To simplify enabling of indy lambdas by default.
This commit is contained in:
committed by
Space Team
parent
cd9209a7ee
commit
4d7506bae3
+6
@@ -27975,6 +27975,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
|
|||||||
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjection.kt");
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjection.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("genericWithInProjectionWithIndyLambdas.kt")
|
||||||
|
public void testGenericWithInProjectionWithIndyLambdas() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjectionWithIndyLambdas.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("genericWithStarProjection.kt")
|
@TestMetadata("genericWithStarProjection.kt")
|
||||||
public void testGenericWithStarProjection() throws Exception {
|
public void testGenericWithStarProjection() throws Exception {
|
||||||
|
|||||||
+6
@@ -27975,6 +27975,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
|
|||||||
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjection.kt");
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjection.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("genericWithInProjectionWithIndyLambdas.kt")
|
||||||
|
public void testGenericWithInProjectionWithIndyLambdas() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjectionWithIndyLambdas.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("genericWithStarProjection.kt")
|
@TestMetadata("genericWithStarProjection.kt")
|
||||||
public void testGenericWithStarProjection() throws Exception {
|
public void testGenericWithStarProjection() throws Exception {
|
||||||
|
|||||||
Vendored
+2
-1
@@ -1,10 +1,11 @@
|
|||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// SAM_CONVERSIONS: INDY
|
// SAM_CONVERSIONS: INDY
|
||||||
|
// LAMBDAS: INDY
|
||||||
|
|
||||||
// CHECK_BYTECODE_TEXT
|
// CHECK_BYTECODE_TEXT
|
||||||
// JVM_IR_TEMPLATES
|
// JVM_IR_TEMPLATES
|
||||||
// 1 java/lang/invoke/LambdaMetafactory
|
// 3 java/lang/invoke/LambdaMetafactory
|
||||||
|
|
||||||
// FILE: capturedSamArgument.kt
|
// FILE: capturedSamArgument.kt
|
||||||
fun box(): String {
|
fun box(): String {
|
||||||
|
|||||||
Vendored
+2
-1
@@ -1,10 +1,11 @@
|
|||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// SAM_CONVERSIONS: INDY
|
// SAM_CONVERSIONS: INDY
|
||||||
|
// LAMBDAS: INDY
|
||||||
|
|
||||||
// CHECK_BYTECODE_TEXT
|
// CHECK_BYTECODE_TEXT
|
||||||
// JVM_IR_TEMPLATES
|
// JVM_IR_TEMPLATES
|
||||||
// 1 java/lang/invoke/LambdaMetafactory
|
// 2 java/lang/invoke/LambdaMetafactory
|
||||||
|
|
||||||
// FILE: capturingLambda.kt
|
// FILE: capturingLambda.kt
|
||||||
fun box(): String {
|
fun box(): String {
|
||||||
|
|||||||
Vendored
+2
-1
@@ -1,10 +1,11 @@
|
|||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// SAM_CONVERSIONS: INDY
|
// SAM_CONVERSIONS: INDY
|
||||||
|
// LAMBDAS: INDY
|
||||||
|
|
||||||
// CHECK_BYTECODE_TEXT
|
// CHECK_BYTECODE_TEXT
|
||||||
// JVM_IR_TEMPLATES
|
// JVM_IR_TEMPLATES
|
||||||
// 1 java/lang/invoke/LambdaMetafactory
|
// 2 java/lang/invoke/LambdaMetafactory
|
||||||
|
|
||||||
// FILE: extensionLambda1.kt
|
// FILE: extensionLambda1.kt
|
||||||
fun samExtLambda(ext: String.() -> String) = Sam(ext)
|
fun samExtLambda(ext: String.() -> String) = Sam(ext)
|
||||||
|
|||||||
Vendored
+2
-1
@@ -1,10 +1,11 @@
|
|||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// SAM_CONVERSIONS: INDY
|
// SAM_CONVERSIONS: INDY
|
||||||
|
// LAMBDAS: INDY
|
||||||
|
|
||||||
// CHECK_BYTECODE_TEXT
|
// CHECK_BYTECODE_TEXT
|
||||||
// JVM_IR_TEMPLATES
|
// JVM_IR_TEMPLATES
|
||||||
// 1 java/lang/invoke/LambdaMetafactory
|
// 2 java/lang/invoke/LambdaMetafactory
|
||||||
|
|
||||||
// FILE: extensionLambda2.kt
|
// FILE: extensionLambda2.kt
|
||||||
fun samExtLambda(ext: String.(String) -> String) = Sam(ext)
|
fun samExtLambda(ext: String.(String) -> String) = Sam(ext)
|
||||||
|
|||||||
+2
-1
@@ -1,10 +1,11 @@
|
|||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// SAM_CONVERSIONS: INDY
|
// SAM_CONVERSIONS: INDY
|
||||||
|
// LAMBDAS: INDY
|
||||||
|
|
||||||
// CHECK_BYTECODE_TEXT
|
// CHECK_BYTECODE_TEXT
|
||||||
// JVM_IR_TEMPLATES
|
// JVM_IR_TEMPLATES
|
||||||
// 1 java/lang/invoke/LambdaMetafactory
|
// 2 java/lang/invoke/LambdaMetafactory
|
||||||
|
|
||||||
// FILE: genericSam2.kt
|
// FILE: genericSam2.kt
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -1,10 +1,11 @@
|
|||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// SAM_CONVERSIONS: INDY
|
// SAM_CONVERSIONS: INDY
|
||||||
|
// LAMBDAS: INDY
|
||||||
|
|
||||||
// CHECK_BYTECODE_TEXT
|
// CHECK_BYTECODE_TEXT
|
||||||
// JVM_IR_TEMPLATES
|
// JVM_IR_TEMPLATES
|
||||||
// 1 java/lang/invoke/LambdaMetafactory
|
// 2 java/lang/invoke/LambdaMetafactory
|
||||||
|
|
||||||
// FILE: simple.kt
|
// FILE: simple.kt
|
||||||
val lambda = { "OK" }
|
val lambda = { "OK" }
|
||||||
|
|||||||
Vendored
+2
-1
@@ -1,11 +1,12 @@
|
|||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// SAM_CONVERSIONS: INDY
|
// SAM_CONVERSIONS: INDY
|
||||||
|
// LAMBDAS: INDY
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
// CHECK_BYTECODE_TEXT
|
// CHECK_BYTECODE_TEXT
|
||||||
// JVM_IR_TEMPLATES
|
// JVM_IR_TEMPLATES
|
||||||
// 1 java/lang/invoke/LambdaMetafactory
|
// 2 java/lang/invoke/LambdaMetafactory
|
||||||
|
|
||||||
// FILE: highOrderFunRef.kt
|
// FILE: highOrderFunRef.kt
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
-1
@@ -1,11 +1,12 @@
|
|||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// SAM_CONVERSIONS: INDY
|
// SAM_CONVERSIONS: INDY
|
||||||
|
// LAMBDAS: INDY
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
// CHECK_BYTECODE_TEXT
|
// CHECK_BYTECODE_TEXT
|
||||||
// JVM_IR_TEMPLATES
|
// JVM_IR_TEMPLATES
|
||||||
// 1 java/lang/invoke/LambdaMetafactory
|
// 2 java/lang/invoke/LambdaMetafactory
|
||||||
|
|
||||||
// FILE: inlineHighOrderFunRef.kt
|
// FILE: inlineHighOrderFunRef.kt
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -1,12 +1,13 @@
|
|||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// SAM_CONVERSIONS: INDY
|
// SAM_CONVERSIONS: INDY
|
||||||
|
// LAMBDAS: INDY
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
// FULL_JDK
|
// FULL_JDK
|
||||||
|
|
||||||
// CHECK_BYTECODE_TEXT
|
// CHECK_BYTECODE_TEXT
|
||||||
// JVM_IR_TEMPLATES
|
// JVM_IR_TEMPLATES
|
||||||
// 1 java/lang/invoke/LambdaMetafactory
|
// 2 java/lang/invoke/LambdaMetafactory
|
||||||
|
|
||||||
// FILE: inlineFunWithPrivateMethod.kt
|
// FILE: inlineFunWithPrivateMethod.kt
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -1,6 +1,7 @@
|
|||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// SAM_CONVERSIONS: INDY
|
// SAM_CONVERSIONS: INDY
|
||||||
|
// LAMBDAS: CLASS
|
||||||
|
|
||||||
// CHECK_BYTECODE_TEXT
|
// CHECK_BYTECODE_TEXT
|
||||||
// JVM_IR_TEMPLATES
|
// JVM_IR_TEMPLATES
|
||||||
|
|||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
// TARGET_BACKEND: JVM
|
||||||
|
// JVM_TARGET: 1.8
|
||||||
|
// SAM_CONVERSIONS: INDY
|
||||||
|
// LAMBDAS: INDY
|
||||||
|
|
||||||
|
// CHECK_BYTECODE_TEXT
|
||||||
|
// JVM_IR_TEMPLATES
|
||||||
|
// 1 java/lang/invoke/LambdaMetafactory
|
||||||
|
|
||||||
|
// ^ Since indy for SAM types with contravariant projections is disabled (see genericWithInProjection.kt), the bytecode in this test is
|
||||||
|
// suboptimal. The lambda is generated via invokedynamic LambdaMetafactory and then wrapped into an instance of Cmp.
|
||||||
|
// The optimal way would be to generate the Cmp instance via invokedynamic LambdaMetafactory directly.
|
||||||
|
|
||||||
|
fun interface Cmp<T> {
|
||||||
|
fun compare(a: T, b: T): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <T> foo(comparator: Cmp<in T>, a: T, b: T) = comparator.compare(a, b)
|
||||||
|
|
||||||
|
fun bar(x: Int, y: Int) = foo({ a, b -> a - b}, x, y)
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
val t = bar(42, 117)
|
||||||
|
if (t != -75)
|
||||||
|
return "Failed: t=$t"
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// SAM_CONVERSIONS: INDY
|
// SAM_CONVERSIONS: INDY
|
||||||
|
// LAMBDAS: INDY
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
// FULL_JDK
|
// FULL_JDK
|
||||||
|
|
||||||
@@ -9,7 +10,7 @@
|
|||||||
|
|
||||||
// CHECK_BYTECODE_TEXT
|
// CHECK_BYTECODE_TEXT
|
||||||
// JVM_IR_TEMPLATES
|
// JVM_IR_TEMPLATES
|
||||||
// 1 java/lang/invoke/LambdaMetafactory
|
// 2 java/lang/invoke/LambdaMetafactory
|
||||||
|
|
||||||
import java.util.stream.Collectors
|
import java.util.stream.Collectors
|
||||||
|
|
||||||
|
|||||||
+6
@@ -26901,6 +26901,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjection.kt");
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjection.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("genericWithInProjectionWithIndyLambdas.kt")
|
||||||
|
public void testGenericWithInProjectionWithIndyLambdas() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjectionWithIndyLambdas.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("genericWithStarProjection.kt")
|
@TestMetadata("genericWithStarProjection.kt")
|
||||||
public void testGenericWithStarProjection() throws Exception {
|
public void testGenericWithStarProjection() throws Exception {
|
||||||
|
|||||||
+6
@@ -27975,6 +27975,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjection.kt");
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjection.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("genericWithInProjectionWithIndyLambdas.kt")
|
||||||
|
public void testGenericWithInProjectionWithIndyLambdas() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjectionWithIndyLambdas.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("genericWithStarProjection.kt")
|
@TestMetadata("genericWithStarProjection.kt")
|
||||||
public void testGenericWithStarProjection() throws Exception {
|
public void testGenericWithStarProjection() throws Exception {
|
||||||
|
|||||||
+6
@@ -27975,6 +27975,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack
|
|||||||
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjection.kt");
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjection.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("genericWithInProjectionWithIndyLambdas.kt")
|
||||||
|
public void testGenericWithInProjectionWithIndyLambdas() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjectionWithIndyLambdas.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("genericWithStarProjection.kt")
|
@TestMetadata("genericWithStarProjection.kt")
|
||||||
public void testGenericWithStarProjection() throws Exception {
|
public void testGenericWithStarProjection() throws Exception {
|
||||||
|
|||||||
+5
@@ -22699,6 +22699,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjection.kt");
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjection.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("genericWithInProjectionWithIndyLambdas.kt")
|
||||||
|
public void testGenericWithInProjectionWithIndyLambdas() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithInProjectionWithIndyLambdas.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("genericWithStarProjection.kt")
|
@TestMetadata("genericWithStarProjection.kt")
|
||||||
public void testGenericWithStarProjection() throws Exception {
|
public void testGenericWithStarProjection() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithStarProjection.kt");
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/specializedGenerics/genericWithStarProjection.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user