From 905e1dcd3ba35ded102588c6bb847914419efe71 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 25 May 2023 15:07:03 +0200 Subject: [PATCH] K2: introduce prioritized enum entries resolve by a 2.1 feature Related to KT-48872 --- ...CompilerTestFE10TestdataTestGenerated.java | 30 ++++++++ ...sticCompilerFE10TestDataTestGenerated.java | 30 ++++++++ ...eeOldFrontendDiagnosticsTestGenerated.java | 30 ++++++++ ...siOldFrontendDiagnosticsTestGenerated.java | 30 ++++++++ .../fir/resolve/calls/CandidateFactory.kt | 5 +- ...ictingPropertyEntriesAndReferenceOn.fir.kt | 2 +- ...onflictingPropertyEntriesAndReferenceOn.kt | 2 +- ...pertyEntriesAndReferencePrioritized.fir.kt | 16 ++++ ...ertyEntriesAndReferencePrioritized.fir.txt | 25 +++++++ ...gPropertyEntriesAndReferencePrioritized.kt | 16 ++++ .../entriesPropertyAsExtensionClashOn.fir.kt | 2 +- .../entriesPropertyAsExtensionClashOn.kt | 2 +- ...PropertyAsExtensionClashPrioritized.fir.kt | 30 ++++++++ ...ropertyAsExtensionClashPrioritized.fir.txt | 44 +++++++++++ ...riesPropertyAsExtensionClashPrioritized.kt | 30 ++++++++ .../entriesPropertyImportedClashOn.fir.kt | 2 +- .../entries/entriesPropertyImportedClashOn.kt | 2 +- ...iesPropertyImportedClashPrioritized.fir.kt | 23 ++++++ ...esPropertyImportedClashPrioritized.fir.txt | 35 +++++++++ ...entriesPropertyImportedClashPrioritized.kt | 23 ++++++ .../entriesPropertyInCompanionClashOn.fir.kt | 2 +- .../entriesPropertyInCompanionClashOn.kt | 2 +- ...entriesPropertyWithJvmStaticClashOn.fir.kt | 2 +- .../entriesPropertyWithJvmStaticClashOn.kt | 2 +- ...opertyWithJvmStaticClashPrioritized.fir.kt | 22 ++++++ ...pertyWithJvmStaticClashPrioritized.fir.txt | 34 +++++++++ ...esPropertyWithJvmStaticClashPrioritized.kt | 22 ++++++ .../enum/entries/enumEntriesAmbiguity.fir.kt | 2 +- .../enum/entries/enumEntriesAmbiguity.kt | 2 +- .../genericEntriesPropertyClashOn.fir.kt | 2 +- .../entries/genericEntriesPropertyClashOn.kt | 2 +- .../entries/javaEnumEntriesAmbiguityOn.fir.kt | 2 +- .../entries/javaEnumEntriesAmbiguityOn.kt | 2 +- ...adowingOfExternallyDefinedEntriesOn.fir.kt | 2 +- ...meShadowingOfExternallyDefinedEntriesOn.kt | 2 +- ...ExternallyDefinedEntriesPrioritized.fir.kt | 41 ++++++++++ ...xternallyDefinedEntriesPrioritized.fir.txt | 74 +++++++++++++++++++ ...ngOfExternallyDefinedEntriesPrioritized.kt | 41 ++++++++++ ...ionOfEnumEntriesNameWithIntrinsicOn.fir.kt | 2 +- ...arationOfEnumEntriesNameWithIntrinsicOn.kt | 2 +- .../test/runners/DiagnosticTestGenerated.java | 30 ++++++++ .../kotlin/config/LanguageVersionSettings.kt | 1 + 42 files changed, 651 insertions(+), 21 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.fir.kt create mode 100644 compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.fir.txt create mode 100644 compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.kt create mode 100644 compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.fir.kt create mode 100644 compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.fir.txt create mode 100644 compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.kt create mode 100644 compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.fir.kt create mode 100644 compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.fir.txt create mode 100644 compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.kt create mode 100644 compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.fir.kt create mode 100644 compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.fir.txt create mode 100644 compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.kt create mode 100644 compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.fir.kt create mode 100644 compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.fir.txt create mode 100644 compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.kt diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 38c3ca79816..5820f8f205b 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -11071,6 +11071,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferenceOn.kt"); } + @Test + @TestMetadata("conflictingPropertyEntriesAndReferencePrioritized.kt") + public void testConflictingPropertyEntriesAndReferencePrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyAsExtensionClash.kt") public void testEntriesPropertyAsExtensionClash() throws Exception { @@ -11083,6 +11089,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyAsExtensionClashPrioritized.kt") + public void testEntriesPropertyAsExtensionClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyImportedClash.kt") public void testEntriesPropertyImportedClash() throws Exception { @@ -11095,6 +11107,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyImportedClashPrioritized.kt") + public void testEntriesPropertyImportedClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyInCompanionClash.kt") public void testEntriesPropertyInCompanionClash() throws Exception { @@ -11119,6 +11137,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyWithJvmStaticClashPrioritized.kt") + public void testEntriesPropertyWithJvmStaticClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.kt"); + } + @Test @TestMetadata("entriesUnsupported.kt") public void testEntriesUnsupported() throws Exception { @@ -11167,6 +11191,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.kt"); } + @Test + @TestMetadata("nameShadowingOfExternallyDefinedEntriesPrioritized.kt") + public void testNameShadowingOfExternallyDefinedEntriesPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.kt"); + } + @Test @TestMetadata("redeclarationOfEnumEntriesNameWithIntrinsic.kt") public void testRedeclarationOfEnumEntriesNameWithIntrinsic() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index 301c28edca6..a3c7d6f96d5 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -11071,6 +11071,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferenceOn.kt"); } + @Test + @TestMetadata("conflictingPropertyEntriesAndReferencePrioritized.kt") + public void testConflictingPropertyEntriesAndReferencePrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyAsExtensionClash.kt") public void testEntriesPropertyAsExtensionClash() throws Exception { @@ -11083,6 +11089,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyAsExtensionClashPrioritized.kt") + public void testEntriesPropertyAsExtensionClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyImportedClash.kt") public void testEntriesPropertyImportedClash() throws Exception { @@ -11095,6 +11107,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyImportedClashPrioritized.kt") + public void testEntriesPropertyImportedClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyInCompanionClash.kt") public void testEntriesPropertyInCompanionClash() throws Exception { @@ -11119,6 +11137,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyWithJvmStaticClashPrioritized.kt") + public void testEntriesPropertyWithJvmStaticClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.kt"); + } + @Test @TestMetadata("entriesUnsupported.kt") public void testEntriesUnsupported() throws Exception { @@ -11167,6 +11191,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.kt"); } + @Test + @TestMetadata("nameShadowingOfExternallyDefinedEntriesPrioritized.kt") + public void testNameShadowingOfExternallyDefinedEntriesPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.kt"); + } + @Test @TestMetadata("redeclarationOfEnumEntriesNameWithIntrinsic.kt") public void testRedeclarationOfEnumEntriesNameWithIntrinsic() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index 1811450e002..4809c75e730 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -11071,6 +11071,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferenceOn.kt"); } + @Test + @TestMetadata("conflictingPropertyEntriesAndReferencePrioritized.kt") + public void testConflictingPropertyEntriesAndReferencePrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyAsExtensionClash.kt") public void testEntriesPropertyAsExtensionClash() throws Exception { @@ -11083,6 +11089,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyAsExtensionClashPrioritized.kt") + public void testEntriesPropertyAsExtensionClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyImportedClash.kt") public void testEntriesPropertyImportedClash() throws Exception { @@ -11095,6 +11107,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyImportedClashPrioritized.kt") + public void testEntriesPropertyImportedClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyInCompanionClash.kt") public void testEntriesPropertyInCompanionClash() throws Exception { @@ -11119,6 +11137,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyWithJvmStaticClashPrioritized.kt") + public void testEntriesPropertyWithJvmStaticClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.kt"); + } + @Test @TestMetadata("entriesUnsupported.kt") public void testEntriesUnsupported() throws Exception { @@ -11167,6 +11191,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.kt"); } + @Test + @TestMetadata("nameShadowingOfExternallyDefinedEntriesPrioritized.kt") + public void testNameShadowingOfExternallyDefinedEntriesPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.kt"); + } + @Test @TestMetadata("redeclarationOfEnumEntriesNameWithIntrinsic.kt") public void testRedeclarationOfEnumEntriesNameWithIntrinsic() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index 5a54463894c..ab91c509e63 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -11077,6 +11077,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferenceOn.kt"); } + @Test + @TestMetadata("conflictingPropertyEntriesAndReferencePrioritized.kt") + public void testConflictingPropertyEntriesAndReferencePrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyAsExtensionClash.kt") public void testEntriesPropertyAsExtensionClash() throws Exception { @@ -11089,6 +11095,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyAsExtensionClashPrioritized.kt") + public void testEntriesPropertyAsExtensionClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyImportedClash.kt") public void testEntriesPropertyImportedClash() throws Exception { @@ -11101,6 +11113,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyImportedClashPrioritized.kt") + public void testEntriesPropertyImportedClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyInCompanionClash.kt") public void testEntriesPropertyInCompanionClash() throws Exception { @@ -11125,6 +11143,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyWithJvmStaticClashPrioritized.kt") + public void testEntriesPropertyWithJvmStaticClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.kt"); + } + @Test @TestMetadata("entriesUnsupported.kt") public void testEntriesUnsupported() throws Exception { @@ -11173,6 +11197,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.kt"); } + @Test + @TestMetadata("nameShadowingOfExternallyDefinedEntriesPrioritized.kt") + public void testNameShadowingOfExternallyDefinedEntriesPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.kt"); + } + @Test @TestMetadata("redeclarationOfEnumEntriesNameWithIntrinsic.kt") public void testRedeclarationOfEnumEntriesNameWithIntrinsic() throws Exception { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CandidateFactory.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CandidateFactory.kt index d98fcaf06d5..36a68c8d8eb 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CandidateFactory.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CandidateFactory.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.fir.resolve.calls +import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin @@ -95,7 +96,9 @@ class CandidateFactory private constructor( // Flag all property references that are resolved from an convention operator call. result.addDiagnostic(PropertyAsOperator) } - if (symbol is FirPropertySymbol) { + if (symbol is FirPropertySymbol && + !context.session.languageVersionSettings.supportsFeature(LanguageFeature.PrioritizedEnumEntries) + ) { val containingClass = symbol.containingClassLookupTag()?.toFirRegularClass(context.session) if (containingClass != null && symbol.fir.isEnumEntries(containingClass)) { result.addDiagnostic(LowerPriorityToPreserveCompatibilityDiagnostic) diff --git a/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferenceOn.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferenceOn.fir.kt index 0fba517723c..9f47aab862e 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferenceOn.fir.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferenceOn.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferenceOn.kt b/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferenceOn.kt index 08251f24eb7..bb0a8e245e4 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferenceOn.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferenceOn.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.fir.kt new file mode 100644 index 00000000000..bb14a8a7159 --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.fir.kt @@ -0,0 +1,16 @@ +// !LANGUAGE: +EnumEntries +PrioritizedEnumEntries +// WITH_STDLIB +// FIR_DUMP + +enum class E { + ; + + val entries: Int = 0 +} + +fun test() { + E::entries + val ref = E::entries + val refType: (E) -> Int = E::entries + val refTypeWithAnyExpectedType: Any = E::entries +} diff --git a/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.fir.txt b/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.fir.txt new file mode 100644 index 00000000000..3b171f4fd27 --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.fir.txt @@ -0,0 +1,25 @@ +FILE: conflictingPropertyEntriesAndReferencePrioritized.fir.kt + public final enum class E : R|kotlin/Enum| { + private constructor(): R|E| { + super|>() + } + + public final val entries: R|kotlin/Int| = Int(0) + public get(): R|kotlin/Int| + + public final static fun values(): R|kotlin/Array| { + } + + public final static fun valueOf(value: R|kotlin/String|): R|E| { + } + + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + + } + public final fun test(): R|kotlin/Unit| { + Q|E|::R|/E.entries*s| + lval ref: R|kotlin/reflect/KProperty0>| = Q|E|::R|/E.entries*s| + lval refType: R|(E) -> kotlin/Int| = Q|E|::R|/E.entries| + lval refTypeWithAnyExpectedType: R|kotlin/Any| = Q|E|::R|/E.entries*s| + } diff --git a/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.kt b/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.kt new file mode 100644 index 00000000000..2fb7f5aa16f --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.kt @@ -0,0 +1,16 @@ +// !LANGUAGE: +EnumEntries +PrioritizedEnumEntries +// WITH_STDLIB +// FIR_DUMP + +enum class E { + ; + + val entries: Int = 0 +} + +fun test() { + E::entries + val ref = E::entries + val refType: (E) -> Int = E::entries + val refTypeWithAnyExpectedType: Any = E::entries +} diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashOn.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashOn.fir.kt index 776f7da67ea..cc65644bf40 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashOn.fir.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashOn.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashOn.kt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashOn.kt index 4b518253561..8c6544d121d 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashOn.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashOn.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.fir.kt new file mode 100644 index 00000000000..8fcf3dc3a12 --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.fir.kt @@ -0,0 +1,30 @@ +// !LANGUAGE: +EnumEntries +PrioritizedEnumEntries +// WITH_STDLIB +// FIR_DUMP + +package pckg + +enum class A { + ; + + companion object +} + +val A.Companion.entries: Int get() = 0 + +fun test() { + A.entries + A.Companion.entries + + with(A) { + this.entries + entries + } + + with(A.Companion) { + entries + } + + val aCompanion = A.Companion + aCompanion.entries +} diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.fir.txt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.fir.txt new file mode 100644 index 00000000000..4ef0555264d --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.fir.txt @@ -0,0 +1,44 @@ +FILE: entriesPropertyAsExtensionClashPrioritized.fir.kt + package pckg + + public final enum class A : R|kotlin/Enum| { + private constructor(): R|pckg/A| { + super|>() + } + + public final companion object Companion : R|kotlin/Any| { + private constructor(): R|pckg/A.Companion| { + super() + } + + } + + public final static fun values(): R|kotlin/Array| { + } + + public final static fun valueOf(value: R|kotlin/String|): R|pckg/A| { + } + + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + + } + public final val R|pckg/A.Companion|.entries: R|kotlin/Int| + public get(): R|kotlin/Int| { + ^ Int(0) + } + public final fun test(): R|kotlin/Unit| { + Q|pckg/A|.R|pckg/A.entries*s| + Q|pckg/A.Companion|.R|pckg/entries| + R|kotlin/with|(Q|pckg/A|, = with@fun R|pckg/A.Companion|.(): R|kotlin/Int| { + this@R|special/anonymous|.R|pckg/entries| + ^ this@R|special/anonymous|.R|pckg/entries| + } + ) + R|kotlin/with|(Q|pckg/A.Companion|, = with@fun R|pckg/A.Companion|.(): R|kotlin/Int| { + ^ this@R|special/anonymous|.R|pckg/entries| + } + ) + lval aCompanion: R|pckg/A.Companion| = Q|pckg/A.Companion| + R|/aCompanion|.R|pckg/entries| + } diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.kt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.kt new file mode 100644 index 00000000000..32221dcd80a --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.kt @@ -0,0 +1,30 @@ +// !LANGUAGE: +EnumEntries +PrioritizedEnumEntries +// WITH_STDLIB +// FIR_DUMP + +package pckg + +enum class A { + ; + + companion object +} + +val A.Companion.entries: Int get() = 0 + +fun test() { + A.entries + A.Companion.entries + + with(A) { + this.entries + entries + } + + with(A.Companion) { + entries + } + + val aCompanion = A.Companion + aCompanion.entries +} diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashOn.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashOn.fir.kt index e7b4de44288..9d69fd17383 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashOn.fir.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashOn.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashOn.kt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashOn.kt index 5f0809dcd82..f4129e12aef 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashOn.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashOn.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.fir.kt new file mode 100644 index 00000000000..af5f5ab197c --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.fir.kt @@ -0,0 +1,23 @@ +// !LANGUAGE: +EnumEntries +PrioritizedEnumEntries +// WITH_STDLIB +// FIR_DUMP + +package foo + +import foo.A.Companion.entries + +enum class A { + ; + + companion object { + val entries = 0 + } +} + +fun test() { + A.entries + + with(A) { + entries + } +} diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.fir.txt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.fir.txt new file mode 100644 index 00000000000..22562378271 --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.fir.txt @@ -0,0 +1,35 @@ +FILE: entriesPropertyImportedClashPrioritized.fir.kt + package foo + + public final enum class A : R|kotlin/Enum| { + private constructor(): R|foo/A| { + super|>() + } + + public final companion object Companion : R|kotlin/Any| { + private constructor(): R|foo/A.Companion| { + super() + } + + public final val entries: R|kotlin/Int| = Int(0) + public get(): R|kotlin/Int| + + } + + public final static fun values(): R|kotlin/Array| { + } + + public final static fun valueOf(value: R|kotlin/String|): R|foo/A| { + } + + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + + } + public final fun test(): R|kotlin/Unit| { + Q|foo/A|.R|foo/A.entries*s| + R|kotlin/with|(Q|foo/A|, = with@fun R|foo/A.Companion|.(): R|kotlin/Int| { + ^ this@R|special/anonymous|.R|foo/A.Companion.entries| + } + ) + } diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.kt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.kt new file mode 100644 index 00000000000..709fa4a5cb1 --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.kt @@ -0,0 +1,23 @@ +// !LANGUAGE: +EnumEntries +PrioritizedEnumEntries +// WITH_STDLIB +// FIR_DUMP + +package foo + +import foo.A.Companion.entries + +enum class A { + ; + + companion object { + val entries = 0 + } +} + +fun test() { + A.entries + + with(A) { + entries + } +} diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyInCompanionClashOn.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyInCompanionClashOn.fir.kt index 85c8a1809ef..bf0080025eb 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyInCompanionClashOn.fir.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyInCompanionClashOn.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyInCompanionClashOn.kt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyInCompanionClashOn.kt index a5806e98f9f..0a2183fcbf4 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyInCompanionClashOn.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyInCompanionClashOn.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashOn.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashOn.fir.kt index efa2b4b23f7..8b8d5d448f0 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashOn.fir.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashOn.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashOn.kt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashOn.kt index c015fe52293..9a7328e098b 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashOn.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashOn.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.fir.kt new file mode 100644 index 00000000000..603730c44d8 --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.fir.kt @@ -0,0 +1,22 @@ +// !LANGUAGE: +EnumEntries +PrioritizedEnumEntries +// WITH_STDLIB +// FIR_DUMP + +enum class A { + ; + + companion object { + @JvmStatic + val entries = 0 + } +} + +fun test() { + A.entries + + with(A) { + entries + } + + A.Companion.entries +} diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.fir.txt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.fir.txt new file mode 100644 index 00000000000..3c6edfea3d3 --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.fir.txt @@ -0,0 +1,34 @@ +FILE: entriesPropertyWithJvmStaticClashPrioritized.fir.kt + public final enum class A : R|kotlin/Enum| { + private constructor(): R|A| { + super|>() + } + + public final companion object Companion : R|kotlin/Any| { + private constructor(): R|A.Companion| { + super() + } + + @R|kotlin/jvm/JvmStatic|() public final val entries: R|kotlin/Int| = Int(0) + public get(): R|kotlin/Int| + + } + + 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(): R|kotlin/Unit| { + Q|A|.R|/A.entries*s| + R|kotlin/with|(Q|A|, = with@fun R|A.Companion|.(): R|kotlin/Int| { + ^ this@R|special/anonymous|.R|/A.Companion.entries| + } + ) + Q|A.Companion|.R|/A.Companion.entries| + } diff --git a/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.kt b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.kt new file mode 100644 index 00000000000..46db3177adf --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.kt @@ -0,0 +1,22 @@ +// !LANGUAGE: +EnumEntries +PrioritizedEnumEntries +// WITH_STDLIB +// FIR_DUMP + +enum class A { + ; + + companion object { + @JvmStatic + val entries = 0 + } +} + +fun test() { + A.entries + + with(A) { + entries + } + + A.Companion.entries +} diff --git a/compiler/testData/diagnostics/tests/enum/entries/enumEntriesAmbiguity.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/enumEntriesAmbiguity.fir.kt index 4f0f9084eae..6d2e715959f 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/enumEntriesAmbiguity.fir.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/enumEntriesAmbiguity.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/enumEntriesAmbiguity.kt b/compiler/testData/diagnostics/tests/enum/entries/enumEntriesAmbiguity.kt index 24be0845378..b65a60fca26 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/enumEntriesAmbiguity.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/enumEntriesAmbiguity.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/genericEntriesPropertyClashOn.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/genericEntriesPropertyClashOn.fir.kt index 3014485d4ac..040461806d6 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/genericEntriesPropertyClashOn.fir.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/genericEntriesPropertyClashOn.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/genericEntriesPropertyClashOn.kt b/compiler/testData/diagnostics/tests/enum/entries/genericEntriesPropertyClashOn.kt index 5fcd211cc4a..875be5ff5da 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/genericEntriesPropertyClashOn.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/genericEntriesPropertyClashOn.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/javaEnumEntriesAmbiguityOn.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/javaEnumEntriesAmbiguityOn.fir.kt index 604073d60c0..3f0203cafe0 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/javaEnumEntriesAmbiguityOn.fir.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/javaEnumEntriesAmbiguityOn.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/javaEnumEntriesAmbiguityOn.kt b/compiler/testData/diagnostics/tests/enum/entries/javaEnumEntriesAmbiguityOn.kt index 22cdc603e6d..5afcbc72880 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/javaEnumEntriesAmbiguityOn.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/javaEnumEntriesAmbiguityOn.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.fir.kt index af16bd3a256..d81d16cff44 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.fir.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.kt b/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.kt index 976a9ce55e8..aacf40aba28 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.fir.kt new file mode 100644 index 00000000000..8c7745a4e37 --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.fir.kt @@ -0,0 +1,41 @@ +// !LANGUAGE: +EnumEntries +PrioritizedEnumEntries +// WITH_STDLIB +// FIR_DUMP + +package pckg + +val entries = "E" + +enum class E { + ; + + fun foo() { + entries.length + pckg.entries.length + } +} + +class A { + enum class E { + ; + + class B { + fun foo() { + entries.length + pckg.entries.length + } + } + + class C { + val entries = 0 + + fun foo() { + // technically, this warning is incorrect but I believe it's OK to report anyway + // first, logic in the compiler will be complicated if we'll try to avoid reporting warnings here + // second, this code smells, it'd be better to use qualifiers here anyway + entries + 4 + this.entries + 4 + } + } + } +} diff --git a/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.fir.txt b/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.fir.txt new file mode 100644 index 00000000000..7a3564f378f --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.fir.txt @@ -0,0 +1,74 @@ +FILE: nameShadowingOfExternallyDefinedEntriesPrioritized.fir.kt + package pckg + + public final val entries: R|kotlin/String| = String(E) + public get(): R|kotlin/String| + public final enum class E : R|kotlin/Enum| { + private constructor(): R|pckg/E| { + super|>() + } + + public final fun foo(): R|kotlin/Unit| { + R|pckg/E.entries*s|.# + Q|pckg|.R|pckg/entries|.R|kotlin/String.length| + } + + public final static fun values(): R|kotlin/Array| { + } + + public final static fun valueOf(value: R|kotlin/String|): R|pckg/E| { + } + + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + + } + public final class A : R|kotlin/Any| { + public constructor(): R|pckg/A| { + super() + } + + public final enum class E : R|kotlin/Enum| { + private constructor(): R|pckg/A.E| { + super|>() + } + + public final class B : R|kotlin/Any| { + public constructor(): R|pckg/A.E.B| { + super() + } + + public final fun foo(): R|kotlin/Unit| { + R|pckg/A.E.entries*s|.# + Q|pckg|.R|pckg/entries|.R|kotlin/String.length| + } + + } + + public final class C : R|kotlin/Any| { + public constructor(): R|pckg/A.E.C| { + super() + } + + public final val entries: R|kotlin/Int| = Int(0) + public get(): R|kotlin/Int| + + public final fun foo(): R|kotlin/Unit| { + this@R|pckg/A.E.C|.R|pckg/A.E.C.entries|.R|kotlin/Int.plus|(Int(4)) + this@R|pckg/A.E.C|.R|pckg/A.E.C.entries|.R|kotlin/Int.plus|(Int(4)) + } + + } + + public final static fun values(): R|kotlin/Array| { + } + + public final static fun valueOf(value: R|kotlin/String|): R|pckg/A.E| { + } + + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + + } + + } diff --git a/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.kt b/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.kt new file mode 100644 index 00000000000..5fba339ed45 --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.kt @@ -0,0 +1,41 @@ +// !LANGUAGE: +EnumEntries +PrioritizedEnumEntries +// WITH_STDLIB +// FIR_DUMP + +package pckg + +val entries = "E" + +enum class E { + ; + + fun foo() { + entries.length + pckg.entries.length + } +} + +class A { + enum class E { + ; + + class B { + fun foo() { + entries.length + pckg.entries.length + } + } + + class C { + val entries = 0 + + fun foo() { + // technically, this warning is incorrect but I believe it's OK to report anyway + // first, logic in the compiler will be complicated if we'll try to avoid reporting warnings here + // second, this code smells, it'd be better to use qualifiers here anyway + entries + 4 + this.entries + 4 + } + } + } +} diff --git a/compiler/testData/diagnostics/tests/enum/entries/redeclarationOfEnumEntriesNameWithIntrinsicOn.fir.kt b/compiler/testData/diagnostics/tests/enum/entries/redeclarationOfEnumEntriesNameWithIntrinsicOn.fir.kt index e26fcd6cb98..ca999174acb 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/redeclarationOfEnumEntriesNameWithIntrinsicOn.fir.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/redeclarationOfEnumEntriesNameWithIntrinsicOn.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/enum/entries/redeclarationOfEnumEntriesNameWithIntrinsicOn.kt b/compiler/testData/diagnostics/tests/enum/entries/redeclarationOfEnumEntriesNameWithIntrinsicOn.kt index 846400beac6..72180868216 100644 --- a/compiler/testData/diagnostics/tests/enum/entries/redeclarationOfEnumEntriesNameWithIntrinsicOn.kt +++ b/compiler/testData/diagnostics/tests/enum/entries/redeclarationOfEnumEntriesNameWithIntrinsicOn.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +EnumEntries +// !LANGUAGE: +EnumEntries -PrioritizedEnumEntries // WITH_STDLIB // FIR_DUMP diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index c6f9f4789fb..93feec612cf 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -11077,6 +11077,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferenceOn.kt"); } + @Test + @TestMetadata("conflictingPropertyEntriesAndReferencePrioritized.kt") + public void testConflictingPropertyEntriesAndReferencePrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyAsExtensionClash.kt") public void testEntriesPropertyAsExtensionClash() throws Exception { @@ -11089,6 +11095,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyAsExtensionClashPrioritized.kt") + public void testEntriesPropertyAsExtensionClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyAsExtensionClashPrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyImportedClash.kt") public void testEntriesPropertyImportedClash() throws Exception { @@ -11101,6 +11113,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyImportedClashPrioritized.kt") + public void testEntriesPropertyImportedClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyImportedClashPrioritized.kt"); + } + @Test @TestMetadata("entriesPropertyInCompanionClash.kt") public void testEntriesPropertyInCompanionClash() throws Exception { @@ -11125,6 +11143,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashOn.kt"); } + @Test + @TestMetadata("entriesPropertyWithJvmStaticClashPrioritized.kt") + public void testEntriesPropertyWithJvmStaticClashPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.kt"); + } + @Test @TestMetadata("entriesUnsupported.kt") public void testEntriesUnsupported() throws Exception { @@ -11173,6 +11197,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.kt"); } + @Test + @TestMetadata("nameShadowingOfExternallyDefinedEntriesPrioritized.kt") + public void testNameShadowingOfExternallyDefinedEntriesPrioritized() throws Exception { + runTest("compiler/testData/diagnostics/tests/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.kt"); + } + @Test @TestMetadata("redeclarationOfEnumEntriesNameWithIntrinsic.kt") public void testRedeclarationOfEnumEntriesNameWithIntrinsic() throws Exception { diff --git a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt index e51216c6792..ea88077c78b 100644 --- a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt +++ b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt @@ -297,6 +297,7 @@ enum class LanguageFeature( ReferencesToSyntheticJavaProperties(KOTLIN_2_1), // KT-8575 ProhibitImplementingVarByInheritedVal(KOTLIN_2_1, kind = BUG_FIX), // KT-56779 + PrioritizedEnumEntries(KOTLIN_2_1, kind = UNSTABLE_FEATURE), // KT-xxxxx // End of 2.* language features --------------------------------------------------