diff --git a/compiler/testData/codegen/box/javaInterop/genericSamProjectedOutWithNewInference.kt b/compiler/testData/codegen/box/javaInterop/genericSamProjectedOutWithNewInference.kt new file mode 100644 index 00000000000..892d86441ea --- /dev/null +++ b/compiler/testData/codegen/box/javaInterop/genericSamProjectedOutWithNewInference.kt @@ -0,0 +1,79 @@ +// !LANGUAGE: +NewInference +// TARGET_BACKEND: JVM +// IGNORE_BACKEND: JVM_IR + +// FILE: example/Hello.java + +package example; + +@FunctionalInterface +public interface Hello { + void invoke(A a); +} + +// FILE: example/SomeJavaClass.java +package example; + +public class SomeJavaClass { + public void someFunction(Hello hello) { + ((Hello)hello).invoke("OK"); + } + + public SomeJavaClass plus(Hello hello) { + ((Hello)hello).invoke("OK"); + return this; + } + + public void get(Hello hello) { + ((Hello)hello).invoke("OK"); + } + + public void set(int i, Hello hello) { + ((Hello)hello).invoke("OK"); + } +} + +// FILE: main.kt +import example.SomeJavaClass + +fun box(): String { + var a: SomeJavaClass = SomeJavaClass() + + var result = "fail" + + a.someFunction { + result = it + } + + if (result != "OK") return "fail 1: $result" + result = "fail" + + a + { + result = it + } + + if (result != "OK") return "fail 2: $result" + result = "fail" + + a[{ + result = it + }] + + if (result != "OK") return "fail 3: $result" + + result = "fail" + + a += { + result = it + } + + if (result != "OK") return "fail 4: $result" + + result = "fail" + + a[0] = { result = it } + + if (result != "OK") return "fail 5: $result" + + return "OK" +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index e05b688ad9d..197483e3ecf 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -13811,6 +13811,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/javaInterop/genericSamProjectedOut.kt"); } + @TestMetadata("genericSamProjectedOutWithNewInference.kt") + public void testGenericSamProjectedOutWithNewInference() throws Exception { + runTest("compiler/testData/codegen/box/javaInterop/genericSamProjectedOutWithNewInference.kt"); + } + @TestMetadata("lambdaInstanceOf.kt") public void testLambdaInstanceOf() throws Exception { runTest("compiler/testData/codegen/box/javaInterop/lambdaInstanceOf.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 337a44232ed..ab5ee9baf1f 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -13811,6 +13811,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/javaInterop/genericSamProjectedOut.kt"); } + @TestMetadata("genericSamProjectedOutWithNewInference.kt") + public void testGenericSamProjectedOutWithNewInference() throws Exception { + runTest("compiler/testData/codegen/box/javaInterop/genericSamProjectedOutWithNewInference.kt"); + } + @TestMetadata("lambdaInstanceOf.kt") public void testLambdaInstanceOf() throws Exception { runTest("compiler/testData/codegen/box/javaInterop/lambdaInstanceOf.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index ab0b5efa667..0ffe278b308 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -13816,6 +13816,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/javaInterop/genericSamProjectedOut.kt"); } + @TestMetadata("genericSamProjectedOutWithNewInference.kt") + public void testGenericSamProjectedOutWithNewInference() throws Exception { + runTest("compiler/testData/codegen/box/javaInterop/genericSamProjectedOutWithNewInference.kt"); + } + @TestMetadata("lambdaInstanceOf.kt") public void testLambdaInstanceOf() throws Exception { runTest("compiler/testData/codegen/box/javaInterop/lambdaInstanceOf.kt");