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 4dab6b62d97..1abf7f6248b 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 @@ -14583,6 +14583,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT public void testWithSideEffects() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffects.kt"); } + + @Test + @TestMetadata("withSideEffectsFromFileClass.kt") + public void testWithSideEffectsFromFileClass() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffectsFromFileClass.kt"); + } } @Nested 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 a9cd416422b..617b8ca166e 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 @@ -172,7 +172,13 @@ private class PropertyReferenceDelegationTransformer(val context: JvmBackendCont // When the receiver is inlined, it can have side effects in form of class initialization, so it should be evaluated here. val receiverBlock = receiver.takeIf { backingField == null }?.let { val symbol = IrAnonymousInitializerSymbolImpl(parentAsClass.symbol) - context.irFactory.createAnonymousInitializer(it.startOffset, it.endOffset, IrDeclarationOrigin.DEFINED, symbol).apply { + context.irFactory.createAnonymousInitializer( + it.startOffset, + it.endOffset, + IrDeclarationOrigin.DEFINED, + symbol, + parentAsClass.isFacadeClass + ).apply { body = context.irFactory.createBlockBody(startOffset, endOffset, listOf(it.inline(null, null))) } } diff --git a/compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffectsFromFileClass.kt b/compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffectsFromFileClass.kt new file mode 100644 index 00000000000..0dbfed79f1c --- /dev/null +++ b/compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffectsFromFileClass.kt @@ -0,0 +1,11 @@ +// WITH_STDLIB +var initialized = false + +object O { + val z = "OK" + init { initialized = true } +} + +val x by O::z + +fun box(): String = if (initialized) x 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 c9d38d1d068..e28a3f607ac 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 @@ -14463,6 +14463,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { public void testWithSideEffects() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffects.kt"); } + + @Test + @TestMetadata("withSideEffectsFromFileClass.kt") + public void testWithSideEffectsFromFileClass() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffectsFromFileClass.kt"); + } } @Nested 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 86c63c1131c..50352303282 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 @@ -14583,6 +14583,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes public void testWithSideEffects() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffects.kt"); } + + @Test + @TestMetadata("withSideEffectsFromFileClass.kt") + public void testWithSideEffectsFromFileClass() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffectsFromFileClass.kt"); + } } @Nested diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 020aaca6afd..afef4c6262c 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -11797,6 +11797,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes public void testWithSideEffects() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffects.kt"); } + + @TestMetadata("withSideEffectsFromFileClass.kt") + public void testWithSideEffectsFromFileClass() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffectsFromFileClass.kt"); + } } @TestMetadata("compiler/testData/codegen/box/delegatedProperty/local") 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 237e9d74a00..14f5e81f8b9 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 @@ -11027,6 +11027,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { public void testWithSideEffects() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffects.kt"); } + + @Test + @TestMetadata("withSideEffectsFromFileClass.kt") + public void testWithSideEffectsFromFileClass() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffectsFromFileClass.kt"); + } } @Nested 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 4d748c9e11a..d206c0bb622 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 @@ -11069,6 +11069,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { public void testWithSideEffects() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffects.kt"); } + + @Test + @TestMetadata("withSideEffectsFromFileClass.kt") + public void testWithSideEffectsFromFileClass() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffectsFromFileClass.kt"); + } } @Nested diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java index a8491e2e6b1..db6691252c0 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java @@ -9792,6 +9792,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest public void testWithSideEffects() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffects.kt"); } + + @TestMetadata("withSideEffectsFromFileClass.kt") + public void testWithSideEffectsFromFileClass() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffectsFromFileClass.kt"); + } } @TestMetadata("compiler/testData/codegen/box/delegatedProperty/local") diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java index 03f8b84854b..b3802e43e6a 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java @@ -12029,6 +12029,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest public void testWithSideEffects() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffects.kt"); } + + @Test + @TestMetadata("withSideEffectsFromFileClass.kt") + public void testWithSideEffectsFromFileClass() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/withSideEffectsFromFileClass.kt"); + } } @Nested