diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFirTestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFirTestdataTestGenerated.java index ccf75fa6cc3..517d77f894b 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFirTestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFirTestdataTestGenerated.java @@ -4941,6 +4941,12 @@ public class DiagnosticCompilerTestFirTestdataTestGenerated extends AbstractDiag runTest("compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/correctJava.kt"); } + @Test + @TestMetadata("enumWithTheSameNameAsEntry.kt") + public void testEnumWithTheSameNameAsEntry() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/enumWithTheSameNameAsEntry.kt"); + } + @Test @TestMetadata("incorrectJava.kt") public void testIncorrectJava() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFirTestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFirTestDataTestGenerated.java index 870db1a3369..ad0dc210622 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFirTestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFirTestDataTestGenerated.java @@ -4941,6 +4941,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFirTestDataTestGenerated runTest("compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/correctJava.kt"); } + @Test + @TestMetadata("enumWithTheSameNameAsEntry.kt") + public void testEnumWithTheSameNameAsEntry() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/enumWithTheSameNameAsEntry.kt"); + } + @Test @TestMetadata("incorrectJava.kt") public void testIncorrectJava() throws Exception { diff --git a/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTestGenerated.java b/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTestGenerated.java index 9f51ac83826..1845ba88e29 100644 --- a/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTestGenerated.java +++ b/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTestGenerated.java @@ -4400,6 +4400,11 @@ public class LazyBodyIsNotTouchedTestGenerated extends AbstractLazyBodyIsNotTouc runTest("compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/correctJava.kt"); } + @TestMetadata("enumWithTheSameNameAsEntry.kt") + public void testEnumWithTheSameNameAsEntry() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/enumWithTheSameNameAsEntry.kt"); + } + @TestMetadata("incorrectJava.kt") public void testIncorrectJava() throws Exception { runTest("compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/incorrectJava.kt"); diff --git a/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/enumWithTheSameNameAsEntry.fir.txt b/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/enumWithTheSameNameAsEntry.fir.txt new file mode 100644 index 00000000000..f966f8faa38 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/enumWithTheSameNameAsEntry.fir.txt @@ -0,0 +1,29 @@ +FILE: enumWithTheSameNameAsEntry.kt + public final enum class A : R|kotlin/Enum| { + private constructor(): R|A| { + super|>() + } + + public final static enum entry A: R|A| + public final static enum entry B: R|A| + public final static fun values(): R|kotlin/Array| { + } + + public final static fun valueOf(value: R|kotlin/String|): R|A| { + } + + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + + } + public final fun test(a: R|A|): R|kotlin/Unit| { + ^test when (R|/a|) { + ==($subj$, R|/A.A|.#) -> { + String(A) + } + ==($subj$, R|/A.A|.#) -> { + String(B) + } + } + + } diff --git a/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/enumWithTheSameNameAsEntry.kt b/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/enumWithTheSameNameAsEntry.kt new file mode 100644 index 00000000000..dadc9226a21 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/enumWithTheSameNameAsEntry.kt @@ -0,0 +1,12 @@ +// LANGUAGE: +ContextSensitiveEnumResolutionInWhen +// KT-58939 + +enum class A { + A, + B, +} + +fun test(a: A) = when (a) { + A.A -> "A" + A.B -> "B" +} diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeDiagnosticsTestGenerated.java index 4039cfdef55..7081378ac1b 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeDiagnosticsTestGenerated.java @@ -4941,6 +4941,12 @@ public class FirLightTreeDiagnosticsTestGenerated extends AbstractFirLightTreeDi runTest("compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/correctJava.kt"); } + @Test + @TestMetadata("enumWithTheSameNameAsEntry.kt") + public void testEnumWithTheSameNameAsEntry() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/enumWithTheSameNameAsEntry.kt"); + } + @Test @TestMetadata("incorrectJava.kt") public void testIncorrectJava() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiDiagnosticTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiDiagnosticTestGenerated.java index 9e682ba97ea..9cd3cff32a5 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiDiagnosticTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiDiagnosticTestGenerated.java @@ -4941,6 +4941,12 @@ public class FirPsiDiagnosticTestGenerated extends AbstractFirPsiDiagnosticTest runTest("compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/correctJava.kt"); } + @Test + @TestMetadata("enumWithTheSameNameAsEntry.kt") + public void testEnumWithTheSameNameAsEntry() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/enumWithTheSameNameAsEntry.kt"); + } + @Test @TestMetadata("incorrectJava.kt") public void testIncorrectJava() throws Exception {