diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java index f51b02d90b6..59847a43942 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java @@ -12940,6 +12940,24 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity.kt"); } + @Test + @TestMetadata("EnumEntryVsStaticAmbiguity2.kt") + public void testEnumEntryVsStaticAmbiguity2() throws Exception { + runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity2.kt"); + } + + @Test + @TestMetadata("EnumEntryVsStaticAmbiguity3.kt") + public void testEnumEntryVsStaticAmbiguity3() throws Exception { + runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.kt"); + } + + @Test + @TestMetadata("EnumEntryVsStaticAmbiguity4.kt") + public void testEnumEntryVsStaticAmbiguity4() throws Exception { + runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity4.kt"); + } + @Test @TestMetadata("ExplicitImportsAmbiguity.kt") public void testExplicitImportsAmbiguity() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java index e986b1bfd40..59394aeb9fb 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java @@ -12940,6 +12940,24 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity.kt"); } + @Test + @TestMetadata("EnumEntryVsStaticAmbiguity2.kt") + public void testEnumEntryVsStaticAmbiguity2() throws Exception { + runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity2.kt"); + } + + @Test + @TestMetadata("EnumEntryVsStaticAmbiguity3.kt") + public void testEnumEntryVsStaticAmbiguity3() throws Exception { + runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.kt"); + } + + @Test + @TestMetadata("EnumEntryVsStaticAmbiguity4.kt") + public void testEnumEntryVsStaticAmbiguity4() throws Exception { + runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity4.kt"); + } + @Test @TestMetadata("ExplicitImportsAmbiguity.kt") public void testExplicitImportsAmbiguity() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java index aa0fd212a51..d839e7d7d22 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java @@ -12940,6 +12940,24 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity.kt"); } + @Test + @TestMetadata("EnumEntryVsStaticAmbiguity2.kt") + public void testEnumEntryVsStaticAmbiguity2() throws Exception { + runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity2.kt"); + } + + @Test + @TestMetadata("EnumEntryVsStaticAmbiguity3.kt") + public void testEnumEntryVsStaticAmbiguity3() throws Exception { + runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.kt"); + } + + @Test + @TestMetadata("EnumEntryVsStaticAmbiguity4.kt") + public void testEnumEntryVsStaticAmbiguity4() throws Exception { + runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity4.kt"); + } + @Test @TestMetadata("ExplicitImportsAmbiguity.kt") public void testExplicitImportsAmbiguity() throws Exception { diff --git a/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity2.fir.kt b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity2.fir.kt new file mode 100644 index 00000000000..4d37b5dc026 --- /dev/null +++ b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity2.fir.kt @@ -0,0 +1,37 @@ +// KT-49200 +// FILE: first/KtNodeTypes.java + +package first; + +public interface KtNodeTypes { + String SOME = "Some"; +} + +// FILE: SomeEnum.kt + +package second + +enum class SomeEnum { + SOME; +} + +// FILE: OtherEnum.kt + +package third + +enum class SomeEnum { + SOME; +} + +// FILE: test.kt + +import first.KtNodeTypes.* +import second.SomeEnum.* +import third.SomeEnum.* + +fun test(arg: String): Boolean { + return when (arg) { + SOME -> true + else -> false + } +} diff --git a/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity2.kt b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity2.kt new file mode 100644 index 00000000000..9c0ed43d34d --- /dev/null +++ b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity2.kt @@ -0,0 +1,37 @@ +// KT-49200 +// FILE: first/KtNodeTypes.java + +package first; + +public interface KtNodeTypes { + String SOME = "Some"; +} + +// FILE: SomeEnum.kt + +package second + +enum class SomeEnum { + SOME; +} + +// FILE: OtherEnum.kt + +package third + +enum class SomeEnum { + SOME; +} + +// FILE: test.kt + +import first.KtNodeTypes.* +import second.SomeEnum.* +import third.SomeEnum.* + +fun test(arg: String): Boolean { + return when (arg) { + SOME -> true + else -> false + } +} diff --git a/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity2.txt b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity2.txt new file mode 100644 index 00000000000..b79831712b1 --- /dev/null +++ b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity2.txt @@ -0,0 +1,59 @@ +package + +public fun test(/*0*/ arg: kotlin.String): kotlin.Boolean + +package first { + + public interface KtNodeTypes { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + // Static members + public const final val SOME: kotlin.String = "Some" + } +} + +package second { + + public final enum class SomeEnum : kotlin.Enum { + enum entry SOME + + private constructor SomeEnum() + @kotlin.internal.IntrinsicConstEvaluation public final override /*1*/ /*fake_override*/ val name: kotlin.String + public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int + protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any + public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: second.SomeEnum): kotlin.Int + public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit + public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class! + public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + // Static members + public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): second.SomeEnum + public final /*synthesized*/ fun values(): kotlin.Array + } +} + +package third { + + public final enum class SomeEnum : kotlin.Enum { + enum entry SOME + + private constructor SomeEnum() + @kotlin.internal.IntrinsicConstEvaluation public final override /*1*/ /*fake_override*/ val name: kotlin.String + public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int + protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any + public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: third.SomeEnum): kotlin.Int + public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit + public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class! + public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + // Static members + public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): third.SomeEnum + public final /*synthesized*/ fun values(): kotlin.Array + } +} diff --git a/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.diag.txt b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.diag.txt new file mode 100644 index 00000000000..d997ff7a7e1 --- /dev/null +++ b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.diag.txt @@ -0,0 +1,3 @@ +/test.kt:26:9: warning: ambiguous access to property 'first.KtNodeTypes.SOME' is deprecated because similar enum entry 'second.SomeEnum.SOME' is available. Please add explicit named import or use fully qualified name + SOME -> true + ^ diff --git a/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.fir.kt b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.fir.kt new file mode 100644 index 00000000000..9b849dbee92 --- /dev/null +++ b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.fir.kt @@ -0,0 +1,29 @@ +// KT-49200 +// !RENDER_DIAGNOSTICS_FULL_TEXT +// FILE: first/KtNodeTypes.java + +package first; + +public interface KtNodeTypes { + String SOME = "Some"; +} + +// FILE: SomeEnum.kt + +package second + +enum class SomeEnum { + SOME; +} + +// FILE: test.kt + +import first.KtNodeTypes.SOME +import second.SomeEnum.SOME + +fun test(arg: String): Boolean { + return when (arg) { + SOME -> true + else -> false + } +} diff --git a/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.kt b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.kt new file mode 100644 index 00000000000..1edaaeda1da --- /dev/null +++ b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.kt @@ -0,0 +1,29 @@ +// KT-49200 +// !RENDER_DIAGNOSTICS_FULL_TEXT +// FILE: first/KtNodeTypes.java + +package first; + +public interface KtNodeTypes { + String SOME = "Some"; +} + +// FILE: SomeEnum.kt + +package second + +enum class SomeEnum { + SOME; +} + +// FILE: test.kt + +import first.KtNodeTypes.SOME +import second.SomeEnum.SOME + +fun test(arg: String): Boolean { + return when (arg) { + SOME -> true + else -> false + } +} diff --git a/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.txt b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.txt new file mode 100644 index 00000000000..9e2def9a15f --- /dev/null +++ b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.txt @@ -0,0 +1,37 @@ +package + +public fun test(/*0*/ arg: kotlin.String): kotlin.Boolean + +package first { + + public interface KtNodeTypes { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + // Static members + public const final val SOME: kotlin.String = "Some" + } +} + +package second { + + public final enum class SomeEnum : kotlin.Enum { + enum entry SOME + + private constructor SomeEnum() + @kotlin.internal.IntrinsicConstEvaluation public final override /*1*/ /*fake_override*/ val name: kotlin.String + public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int + protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any + public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: second.SomeEnum): kotlin.Int + public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit + public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class! + public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + // Static members + public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): second.SomeEnum + public final /*synthesized*/ fun values(): kotlin.Array + } +} diff --git a/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity4.kt b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity4.kt new file mode 100644 index 00000000000..ee0f4f37e19 --- /dev/null +++ b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity4.kt @@ -0,0 +1,38 @@ +// FIR_IDENTICAL +// KT-49200 +// FILE: first/KtNodeTypes.java + +package first; + +public interface KtNodeTypes { + String SOME = "Some"; +} + +// FILE: SomeEnum.kt + +package second + +enum class SomeEnum { + SOME; +} + +// FILE: third/OtherTypes.java + +package third + +public interface OtherTypes { + String SOME = "Other"; +} + +// FILE: test.kt + +import first.KtNodeTypes.* +import second.SomeEnum.* +import third.OtherTypes.* + +fun test(arg: String): Boolean { + return when (arg) { + SOME -> true + else -> false + } +} diff --git a/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity4.txt b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity4.txt new file mode 100644 index 00000000000..52a55219f01 --- /dev/null +++ b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity4.txt @@ -0,0 +1,49 @@ +package + +public fun test(/*0*/ arg: kotlin.String): kotlin.Boolean + +package first { + + public interface KtNodeTypes { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + // Static members + public const final val SOME: kotlin.String = "Some" + } +} + +package second { + + public final enum class SomeEnum : kotlin.Enum { + enum entry SOME + + private constructor SomeEnum() + @kotlin.internal.IntrinsicConstEvaluation public final override /*1*/ /*fake_override*/ val name: kotlin.String + public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int + protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any + public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: second.SomeEnum): kotlin.Int + public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit + public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class! + public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + // Static members + public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): second.SomeEnum + public final /*synthesized*/ fun values(): kotlin.Array + } +} + +package third { + + public interface OtherTypes { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + // Static members + public const final val SOME: kotlin.String = "Other" + } +} 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 48ed0783eb0..c8a629058f7 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 @@ -12946,6 +12946,24 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity.kt"); } + @Test + @TestMetadata("EnumEntryVsStaticAmbiguity2.kt") + public void testEnumEntryVsStaticAmbiguity2() throws Exception { + runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity2.kt"); + } + + @Test + @TestMetadata("EnumEntryVsStaticAmbiguity3.kt") + public void testEnumEntryVsStaticAmbiguity3() throws Exception { + runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.kt"); + } + + @Test + @TestMetadata("EnumEntryVsStaticAmbiguity4.kt") + public void testEnumEntryVsStaticAmbiguity4() throws Exception { + runTest("compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity4.kt"); + } + @Test @TestMetadata("ExplicitImportsAmbiguity.kt") public void testExplicitImportsAmbiguity() throws Exception {