From 4d49bdb8cac8fe935990e7794de583ed46a286a6 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Mon, 13 Nov 2023 22:43:05 +0100 Subject: [PATCH] K2: add a black box test to confirm KT-53718 now works properly (JVM IR only) Related to: KT-57584, KT-58110 --- ...LFirBlackBoxCodegenBasedTestGenerated.java | 6 ++++ ...rsedBlackBoxCodegenBasedTestGenerated.java | 6 ++++ ...LightTreeBlackBoxCodegenTestGenerated.java | 6 ++++ ...hIrFakeOverrideGeneratorTestGenerated.java | 6 ++++ .../FirPsiBlackBoxCodegenTestGenerated.java | 6 ++++ .../box/extensionClasses/noRedeclaration.kt | 34 +++++++++++++++++++ .../IrBlackBoxCodegenTestGenerated.java | 6 ++++ ...kBoxCodegenWithIrInlinerTestGenerated.java | 6 ++++ .../LightAnalysisModeTestGenerated.java | 5 +++ 9 files changed, 81 insertions(+) create mode 100644 compiler/testData/codegen/box/extensionClasses/noRedeclaration.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 753f650ca3e..9c399d3a0fb 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 @@ -17984,6 +17984,12 @@ public class LLFirBlackBoxCodegenBasedTestGenerated extends AbstractLLFirBlackBo runTest("compiler/testData/codegen/box/extensionClasses/multiple.kt"); } + @Test + @TestMetadata("noRedeclaration.kt") + public void testNoRedeclaration() throws Exception { + runTest("compiler/testData/codegen/box/extensionClasses/noRedeclaration.kt"); + } + @Test @TestMetadata("propertyWithContext.kt") public void testPropertyWithContext() 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 2a488548862..65f9be942fc 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 @@ -17984,6 +17984,12 @@ public class LLFirReversedBlackBoxCodegenBasedTestGenerated extends AbstractLLFi runTest("compiler/testData/codegen/box/extensionClasses/multiple.kt"); } + @Test + @TestMetadata("noRedeclaration.kt") + public void testNoRedeclaration() throws Exception { + runTest("compiler/testData/codegen/box/extensionClasses/noRedeclaration.kt"); + } + @Test @TestMetadata("propertyWithContext.kt") public void testPropertyWithContext() 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 67f49f9cca2..6c2a5dbb8b6 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 @@ -17913,6 +17913,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr runTest("compiler/testData/codegen/box/extensionClasses/multiple.kt"); } + @Test + @TestMetadata("noRedeclaration.kt") + public void testNoRedeclaration() throws Exception { + runTest("compiler/testData/codegen/box/extensionClasses/noRedeclaration.kt"); + } + @Test @TestMetadata("propertyWithContext.kt") public void testPropertyWithContext() 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 eddecbab49a..3b897add6d0 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 @@ -17913,6 +17913,12 @@ public class FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated runTest("compiler/testData/codegen/box/extensionClasses/multiple.kt"); } + @Test + @TestMetadata("noRedeclaration.kt") + public void testNoRedeclaration() throws Exception { + runTest("compiler/testData/codegen/box/extensionClasses/noRedeclaration.kt"); + } + @Test @TestMetadata("propertyWithContext.kt") public void testPropertyWithContext() 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 0890ee257a8..a806e6245be 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 @@ -17913,6 +17913,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo runTest("compiler/testData/codegen/box/extensionClasses/multiple.kt"); } + @Test + @TestMetadata("noRedeclaration.kt") + public void testNoRedeclaration() throws Exception { + runTest("compiler/testData/codegen/box/extensionClasses/noRedeclaration.kt"); + } + @Test @TestMetadata("propertyWithContext.kt") public void testPropertyWithContext() throws Exception { diff --git a/compiler/testData/codegen/box/extensionClasses/noRedeclaration.kt b/compiler/testData/codegen/box/extensionClasses/noRedeclaration.kt new file mode 100644 index 00000000000..5425ae079ef --- /dev/null +++ b/compiler/testData/codegen/box/extensionClasses/noRedeclaration.kt @@ -0,0 +1,34 @@ +// TARGET_BACKEND: JVM_IR +// Does not pass on other backends for various reasons, e.g. +// - FIR/WASM: IR declaration with signature "/x|{}x[0]" found in SymbolTable and not found in declaration storage +// - IR/JS: IrPropertyPublicSymbolImpl for /x|{}x[0] is already bound: PROPERTY name:x visibility:public modality:FINAL [val] +// - Old BE: Couldn't inline method call: with(A()) { ... } +// - See also: KT-57584, KT-58110 +// LANGUAGE: +ContextReceivers +// ISSUE: KT-53718 + +class A + +context(A) +val x: Int + get() = 1 + +val x: Int + get() = 2 + +context(A) +fun foo() = 3 + +fun foo() = 4 + +fun box(): String { + if (x != 2) return "x = $x" + if (foo() != 4) return "foo() = ${foo()}" + + with(A()) { + if (x != 1) return "context x = $x" + if (foo() != 3) return "context foo() = ${foo()}" + } + + return "OK" +} 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 1fcd0b91ce4..dcaa9b46c8f 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 @@ -17913,6 +17913,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/extensionClasses/multiple.kt"); } + @Test + @TestMetadata("noRedeclaration.kt") + public void testNoRedeclaration() throws Exception { + runTest("compiler/testData/codegen/box/extensionClasses/noRedeclaration.kt"); + } + @Test @TestMetadata("propertyWithContext.kt") public void testPropertyWithContext() 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 9a4894c3d5a..934223cdfff 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 @@ -17913,6 +17913,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack runTest("compiler/testData/codegen/box/extensionClasses/multiple.kt"); } + @Test + @TestMetadata("noRedeclaration.kt") + public void testNoRedeclaration() throws Exception { + runTest("compiler/testData/codegen/box/extensionClasses/noRedeclaration.kt"); + } + @Test @TestMetadata("propertyWithContext.kt") public void testPropertyWithContext() 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 a78078a9c32..c113775ca7e 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -14854,6 +14854,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/extensionClasses/multiple.kt"); } + @TestMetadata("noRedeclaration.kt") + public void testNoRedeclaration() throws Exception { + runTest("compiler/testData/codegen/box/extensionClasses/noRedeclaration.kt"); + } + @TestMetadata("propertyWithContext.kt") public void testPropertyWithContext() throws Exception { runTest("compiler/testData/codegen/box/extensionClasses/propertyWithContext.kt");