From 54705e5afc9a660d4b21bd2d0397dc58dc8d3648 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 13 Nov 2023 16:08:00 +0100 Subject: [PATCH] IR: copy context receiver parameters count in FakeOverrideCopier #KT-63430 Fixed --- ...LFirBlackBoxCodegenBasedTestGenerated.java | 6 +++++ ...rsedBlackBoxCodegenBasedTestGenerated.java | 6 +++++ ...LightTreeBlackBoxCodegenTestGenerated.java | 6 +++++ ...hIrFakeOverrideGeneratorTestGenerated.java | 6 +++++ .../FirPsiBlackBoxCodegenTestGenerated.java | 6 +++++ .../kotlin/ir/overrides/FakeOverrideCopier.kt | 1 + .../contextReceivers/kt63430.kt | 26 +++++++++++++++++++ .../IrBlackBoxCodegenTestGenerated.java | 6 +++++ ...kBoxCodegenWithIrInlinerTestGenerated.java | 6 +++++ .../LightAnalysisModeTestGenerated.java | 5 ++++ 10 files changed, 74 insertions(+) create mode 100644 compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt63430.kt diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java index 3f23d67004b..351314ff47c 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java @@ -18351,6 +18351,12 @@ public class LLFirBlackBoxCodegenBasedTestGenerated extends AbstractLLFirBlackBo runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt58476.kt"); } + @Test + @TestMetadata("kt63430.kt") + public void testKt63430() throws Exception { + runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt63430.kt"); + } + @Test @TestMetadata("overload.kt") public void testOverload() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java index f00d5c8e00b..8ca5b3daadf 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java @@ -18351,6 +18351,12 @@ public class LLFirReversedBlackBoxCodegenBasedTestGenerated extends AbstractLLFi runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt58476.kt"); } + @Test + @TestMetadata("kt63430.kt") + public void testKt63430() throws Exception { + runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt63430.kt"); + } + @Test @TestMetadata("overload.kt") public void testOverload() throws Exception { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java index fc71a8162ed..6e7d00e6bc7 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java @@ -18280,6 +18280,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt58476.kt"); } + @Test + @TestMetadata("kt63430.kt") + public void testKt63430() throws Exception { + runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt63430.kt"); + } + @Test @TestMetadata("overload.kt") public void testOverload() throws Exception { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java index 27b1c779023..f11567b7472 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java @@ -18280,6 +18280,12 @@ public class FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt58476.kt"); } + @Test + @TestMetadata("kt63430.kt") + public void testKt63430() throws Exception { + runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt63430.kt"); + } + @Test @TestMetadata("overload.kt") public void testOverload() throws Exception { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java index 169b670476f..e584b9417ec 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java @@ -18280,6 +18280,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt58476.kt"); } + @Test + @TestMetadata("kt63430.kt") + public void testKt63430() throws Exception { + runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt63430.kt"); + } + @Test @TestMetadata("overload.kt") public void testOverload() throws Exception { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideCopier.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideCopier.kt index de2c1175166..f3058838408 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideCopier.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideCopier.kt @@ -35,6 +35,7 @@ class FakeOverrideCopier( isInfix = declaration.isInfix, isExternal = declaration.isExternal, ).apply { + contextReceiverParametersCount = declaration.contextReceiverParametersCount transformAnnotations(declaration) copyTypeParametersFrom(declaration) typeRemapper.withinScope(this) { diff --git a/compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt63430.kt b/compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt63430.kt new file mode 100644 index 00000000000..3150351ecb1 --- /dev/null +++ b/compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt63430.kt @@ -0,0 +1,26 @@ +// !LANGUAGE: +ContextReceivers +// TARGET_BACKEND: JVM_IR +// WITH_STDLIB + +abstract class A { + context(C) + fun P.foo(): String = result +} + +class B : A() { + val p = P() + + context(C) + fun test(): String = + p.run { + foo() + } +} + +class P +class C(val result: String) + +fun box(): String = + with(C("OK")) { + B().test() + } 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 050ca6c7217..b765dc7e4a5 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 @@ -18280,6 +18280,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt58476.kt"); } + @Test + @TestMetadata("kt63430.kt") + public void testKt63430() throws Exception { + runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt63430.kt"); + } + @Test @TestMetadata("overload.kt") public void testOverload() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java index 64dee0bd438..9a9e1eb0ea3 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java @@ -18280,6 +18280,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt58476.kt"); } + @Test + @TestMetadata("kt63430.kt") + public void testKt63430() throws Exception { + runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt63430.kt"); + } + @Test @TestMetadata("overload.kt") public void testOverload() 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 f180e51c4ad..491da1fd69c 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -15169,6 +15169,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt58476.kt"); } + @TestMetadata("kt63430.kt") + public void testKt63430() throws Exception { + runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt63430.kt"); + } + @TestMetadata("overload.kt") public void testOverload() throws Exception { runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/overload.kt");