[FIR] Prohibit access to members of companion of enum from enum entry initializer

^KT-49110
This commit is contained in:
Dmitriy Novozhilov
2021-10-29 14:50:41 +03:00
committed by TeamCityServer
parent 58889a2b5c
commit 877b53201b
13 changed files with 176 additions and 11 deletions
@@ -2028,7 +2028,7 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val enumEntry: KtSymbol
}
abstract class UninitializedEnumCompanion : KtFirDiagnostic<KtSimpleNameExpression>() {
abstract class UninitializedEnumCompanion : KtFirDiagnostic<KtExpression>() {
override val diagnosticClass get() = UninitializedEnumCompanion::class
abstract val enumClass: KtClassLikeSymbol
}
@@ -2446,7 +2446,7 @@ internal class UninitializedEnumCompanionImpl(
override val enumClass: KtClassLikeSymbol,
override val firDiagnostic: KtPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.UninitializedEnumCompanion(), KtAbstractFirDiagnostic<KtSimpleNameExpression>
) : KtFirDiagnostic.UninitializedEnumCompanion(), KtAbstractFirDiagnostic<KtExpression>
internal class ValReassignmentImpl(
override val variable: KtVariableLikeSymbol,
@@ -5751,6 +5751,18 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
runTest("compiler/testData/diagnostics/tests/controlFlowAnalysis/tryWithAssignmentUsedInCatch.kt");
}
@Test
@TestMetadata("uninitializedCompanionOfEnum_after.kt")
public void testUninitializedCompanionOfEnum_after() throws Exception {
runTest("compiler/testData/diagnostics/tests/controlFlowAnalysis/uninitializedCompanionOfEnum_after.kt");
}
@Test
@TestMetadata("uninitializedCompanionOfEnum_before.kt")
public void testUninitializedCompanionOfEnum_before() throws Exception {
runTest("compiler/testData/diagnostics/tests/controlFlowAnalysis/uninitializedCompanionOfEnum_before.kt");
}
@Test
@TestMetadata("UninitializedEnumCompanionVals.kt")
public void testUninitializedEnumCompanionVals() throws Exception {