diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt index 8f2c0b60bf0..45be879b920 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt @@ -1957,7 +1957,7 @@ sealed class KtFirDiagnostic : KtDiagnosticWithPsi { abstract val expectedType: KtType } - abstract class UninitializedVariable : KtFirDiagnostic() { + abstract class UninitializedVariable : KtFirDiagnostic() { override val diagnosticClass get() = UninitializedVariable::class abstract val variable: KtVariableSymbol } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt index 38abe2707f9..d76bff3b519 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt @@ -2361,7 +2361,7 @@ internal class UninitializedVariableImpl( override val variable: KtVariableSymbol, override val firDiagnostic: FirPsiDiagnostic, override val token: ValidityToken, -) : KtFirDiagnostic.UninitializedVariable(), KtAbstractFirDiagnostic +) : KtFirDiagnostic.UninitializedVariable(), KtAbstractFirDiagnostic internal class UninitializedParameterImpl( override val parameter: KtSymbol, 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 07b64d98a6c..47face8396d 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 @@ -5745,6 +5745,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/controlFlowAnalysis/tryWithAssignmentUsedInCatch.kt"); } + @Test + @TestMetadata("UninitializedEnumCompanionVals.kt") + public void testUninitializedEnumCompanionVals() throws Exception { + runTest("compiler/testData/diagnostics/tests/controlFlowAnalysis/UninitializedEnumCompanionVals.kt"); + } + @Test @TestMetadata("uninitializedInLocalDeclarations.kt") public void testUninitializedInLocalDeclarations() 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 fa79eece089..b910d1ab1b7 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 @@ -5745,6 +5745,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/tests/controlFlowAnalysis/tryWithAssignmentUsedInCatch.kt"); } + @Test + @TestMetadata("UninitializedEnumCompanionVals.kt") + public void testUninitializedEnumCompanionVals() throws Exception { + runTest("compiler/testData/diagnostics/tests/controlFlowAnalysis/UninitializedEnumCompanionVals.kt"); + } + @Test @TestMetadata("uninitializedInLocalDeclarations.kt") public void testUninitializedInLocalDeclarations() 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 59fd1f040e3..bf7be3c4707 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 @@ -5745,6 +5745,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac runTest("compiler/testData/diagnostics/tests/controlFlowAnalysis/tryWithAssignmentUsedInCatch.kt"); } + @Test + @TestMetadata("UninitializedEnumCompanionVals.kt") + public void testUninitializedEnumCompanionVals() throws Exception { + runTest("compiler/testData/diagnostics/tests/controlFlowAnalysis/UninitializedEnumCompanionVals.kt"); + } + @Test @TestMetadata("uninitializedInLocalDeclarations.kt") public void testUninitializedInLocalDeclarations() throws Exception { diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt index a255bf02479..9f4577dd376 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt @@ -996,7 +996,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { } val CONTROL_FLOW by object : DiagnosticGroup("Control flow diagnostics") { - val UNINITIALIZED_VARIABLE by error { + val UNINITIALIZED_VARIABLE by error { parameter("variable") } val UNINITIALIZED_PARAMETER by error { diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt index 7209f8b4923..58a22c7930f 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt @@ -543,7 +543,7 @@ object FirErrors { val COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH by error3() // Control flow diagnostics - val UNINITIALIZED_VARIABLE by error1() + val UNINITIALIZED_VARIABLE by error1() val UNINITIALIZED_PARAMETER by error1() val UNINITIALIZED_ENUM_ENTRY by error1() val UNINITIALIZED_ENUM_COMPANION by error1(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) diff --git a/compiler/testData/diagnostics/tests/controlFlowAnalysis/UninitializedEnumCompanionVals.fir.kt b/compiler/testData/diagnostics/tests/controlFlowAnalysis/UninitializedEnumCompanionVals.fir.kt new file mode 100644 index 00000000000..7aa91241b67 --- /dev/null +++ b/compiler/testData/diagnostics/tests/controlFlowAnalysis/UninitializedEnumCompanionVals.fir.kt @@ -0,0 +1,17 @@ +// SKIP_TXT + +enum class A(val z: Any) { + Y(x); + + companion object { + val x = A.Y.ordinal + } +} + +enum class B(val z: Any) { + Y(B.x); + + companion object { + val x = B.Y.ordinal + } +} diff --git a/compiler/testData/diagnostics/tests/controlFlowAnalysis/UninitializedEnumCompanionVals.kt b/compiler/testData/diagnostics/tests/controlFlowAnalysis/UninitializedEnumCompanionVals.kt new file mode 100644 index 00000000000..02fc1d595f3 --- /dev/null +++ b/compiler/testData/diagnostics/tests/controlFlowAnalysis/UninitializedEnumCompanionVals.kt @@ -0,0 +1,17 @@ +// SKIP_TXT + +enum class A(val z: Any) { + Y(x); + + companion object { + val x = A.Y.ordinal + } +} + +enum class B(val z: Any) { + Y(B.x); + + companion object { + val x = B.Y.ordinal + } +} 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 60b2b361c73..dcddeed5242 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 @@ -5751,6 +5751,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/controlFlowAnalysis/tryWithAssignmentUsedInCatch.kt"); } + @Test + @TestMetadata("UninitializedEnumCompanionVals.kt") + public void testUninitializedEnumCompanionVals() throws Exception { + runTest("compiler/testData/diagnostics/tests/controlFlowAnalysis/UninitializedEnumCompanionVals.kt"); + } + @Test @TestMetadata("uninitializedInLocalDeclarations.kt") public void testUninitializedInLocalDeclarations() throws Exception {