From 1471602c9fddfe388056472e5595067cb75f7428 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 7 Dec 2021 00:41:47 +0100 Subject: [PATCH] JVM IR: do not optimize properties with -Xno-optimized-callable-references #KT-50019 Fixed --- .../runners/codegen/FirBlackBoxCodegenTestGenerated.java | 6 ++++++ .../jvm/lower/PropertyReferenceDelegationLowering.kt | 1 + .../kt50019_noOptimizedCallableReferences.kt | 9 +++++++++ .../runners/codegen/BlackBoxCodegenTestGenerated.java | 6 ++++++ .../runners/codegen/IrBlackBoxCodegenTestGenerated.java | 6 ++++++ .../kotlin/codegen/LightAnalysisModeTestGenerated.java | 5 +++++ .../kotlin/js/test/JsCodegenBoxTestGenerated.java | 6 ++++++ .../kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java | 6 ++++++ .../blackboxtest/NativeExtBlackBoxTestGenerated.java | 6 ++++++ 9 files changed, 51 insertions(+) create mode 100644 compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt50019_noOptimizedCallableReferences.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 702ee0677a1..bec43f4c0d9 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 @@ -14083,6 +14083,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt49793_object.kt"); } + @Test + @TestMetadata("kt50019_noOptimizedCallableReferences.kt") + public void testKt50019_noOptimizedCallableReferences() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt50019_noOptimizedCallableReferences.kt"); + } + @Test @TestMetadata("mutable.kt") public void testMutable() throws Exception { diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceDelegationLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceDelegationLowering.kt index 601a7e4bb44..85a617895dd 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceDelegationLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceDelegationLowering.kt @@ -35,6 +35,7 @@ internal val propertyReferenceDelegationPhase = makeIrFilePhase( private class PropertyReferenceDelegationLowering(val context: JvmBackendContext) : FileLoweringPass { override fun lower(irFile: IrFile) { + if (!context.state.generateOptimizedCallableReferenceSuperClasses) return irFile.transform(PropertyReferenceDelegationTransformer(context), null) } } diff --git a/compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt50019_noOptimizedCallableReferences.kt b/compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt50019_noOptimizedCallableReferences.kt new file mode 100644 index 00000000000..f2aae9d1815 --- /dev/null +++ b/compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt50019_noOptimizedCallableReferences.kt @@ -0,0 +1,9 @@ +// WITH_STDLIB +// NO_OPTIMIZED_CALLABLE_REFERENCES + +class A { + val x = "OK" + val y by ::x +} + +fun box(): String = A().y 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 17f890dc253..0089a9e3d4e 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 @@ -13999,6 +13999,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt49793_object.kt"); } + @Test + @TestMetadata("kt50019_noOptimizedCallableReferences.kt") + public void testKt50019_noOptimizedCallableReferences() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt50019_noOptimizedCallableReferences.kt"); + } + @Test @TestMetadata("mutable.kt") public void testMutable() 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 e3ebcf1d474..b9c6aaefe4c 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 @@ -14083,6 +14083,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt49793_object.kt"); } + @Test + @TestMetadata("kt50019_noOptimizedCallableReferences.kt") + public void testKt50019_noOptimizedCallableReferences() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt50019_noOptimizedCallableReferences.kt"); + } + @Test @TestMetadata("mutable.kt") public void testMutable() 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 35c888c2c8e..f9b1f4c2bbb 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -11407,6 +11407,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt49793_object.kt"); } + @TestMetadata("kt50019_noOptimizedCallableReferences.kt") + public void testKt50019_noOptimizedCallableReferences() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt50019_noOptimizedCallableReferences.kt"); + } + @TestMetadata("mutable.kt") public void testMutable() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/mutable.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java index efe305702b7..bfd9bdfee9c 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java @@ -10731,6 +10731,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt49793_object.kt"); } + @Test + @TestMetadata("kt50019_noOptimizedCallableReferences.kt") + public void testKt50019_noOptimizedCallableReferences() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt50019_noOptimizedCallableReferences.kt"); + } + @Test @TestMetadata("mutable.kt") public void testMutable() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java index 5ba8f9a1fcd..ddc0fc85ece 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java @@ -10773,6 +10773,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt49793_object.kt"); } + @Test + @TestMetadata("kt50019_noOptimizedCallableReferences.kt") + public void testKt50019_noOptimizedCallableReferences() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt50019_noOptimizedCallableReferences.kt"); + } + @Test @TestMetadata("mutable.kt") public void testMutable() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeExtBlackBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeExtBlackBoxTestGenerated.java index 874c1b49a25..8d7fbb67ca0 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeExtBlackBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeExtBlackBoxTestGenerated.java @@ -11543,6 +11543,12 @@ public class NativeExtBlackBoxTestGenerated extends AbstractNativeBlackBoxTest { runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt49793_object.kt"); } + @Test + @TestMetadata("kt50019_noOptimizedCallableReferences.kt") + public void testKt50019_noOptimizedCallableReferences() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt50019_noOptimizedCallableReferences.kt"); + } + @Test @TestMetadata("mutable.kt") public void testMutable() throws Exception {