From 81c805a75498ede7d0531018b452439df47e22ee Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Sat, 11 Dec 2021 11:05:03 +0300 Subject: [PATCH] JVM_IR KT-50171 add missing parent to temporary vals for proxy fun --- .../FirBlackBoxCodegenTestGenerated.java | 6 ++++++ .../jvm/lower/FunctionReferenceLowering.kt | 1 + compiler/testData/codegen/box/sam/kt50171.kt | 21 +++++++++++++++++++ .../codegen/BlackBoxCodegenTestGenerated.java | 6 ++++++ .../IrBlackBoxCodegenTestGenerated.java | 6 ++++++ .../LightAnalysisModeTestGenerated.java | 5 +++++ 6 files changed, 45 insertions(+) create mode 100644 compiler/testData/codegen/box/sam/kt50171.kt diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index 88c58fad1f2..940c4d4b10f 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -41231,6 +41231,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/sam/kt49226.kt"); } + @Test + @TestMetadata("kt50171.kt") + public void testKt50171() throws Exception { + runTest("compiler/testData/codegen/box/sam/kt50171.kt"); + } + @Test @TestMetadata("nonInlinedSamWrapper.kt") public void testNonInlinedSamWrapper() throws Exception { diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt index 27ba0150da6..cb9a9abaf38 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt @@ -361,6 +361,7 @@ internal class FunctionReferenceLowering(private val context: JvmBackendContext) isVar = false, isConst = false, isLateinit = false ) tmpVal.initializer = initializer + tmpVal.parent = proxyFun.parent temporaryVals.add(tmpVal) return IrGetValueImpl(startOffset, endOffset, tmpVal.symbol) } diff --git a/compiler/testData/codegen/box/sam/kt50171.kt b/compiler/testData/codegen/box/sam/kt50171.kt new file mode 100644 index 00000000000..fd36cbdafcc --- /dev/null +++ b/compiler/testData/codegen/box/sam/kt50171.kt @@ -0,0 +1,21 @@ +// TARGET_BACKEND: JVM + +// FULL_JDK +// SKIP_JDK6 + +import java.util.function.DoubleConsumer + +var value: Double = 3.14 + +fun f() = { + g(::value::set) +} + +fun g(consumer: DoubleConsumer) { + consumer.accept(42.0) +} + +fun box(): String { + f()() + return if (value == 42.0) "OK" else "Fail" +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index 93cddfe471f..9e072c9cab1 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -40799,6 +40799,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/sam/kt49226.kt"); } + @Test + @TestMetadata("kt50171.kt") + public void testKt50171() throws Exception { + runTest("compiler/testData/codegen/box/sam/kt50171.kt"); + } + @Test @TestMetadata("nonInlinedSamWrapper.kt") public void testNonInlinedSamWrapper() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 5b85138d33d..55f1887075c 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -41231,6 +41231,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/sam/kt49226.kt"); } + @Test + @TestMetadata("kt50171.kt") + public void testKt50171() throws Exception { + runTest("compiler/testData/codegen/box/sam/kt50171.kt"); + } + @Test @TestMetadata("nonInlinedSamWrapper.kt") public void testNonInlinedSamWrapper() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 33716d0898b..bb5e63ceca4 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -32760,6 +32760,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/sam/kt49226.kt"); } + @TestMetadata("kt50171.kt") + public void testKt50171() throws Exception { + runTest("compiler/testData/codegen/box/sam/kt50171.kt"); + } + @TestMetadata("nonInlinedSamWrapper.kt") public void testNonInlinedSamWrapper() throws Exception { runTest("compiler/testData/codegen/box/sam/nonInlinedSamWrapper.kt");