[FIR] Implement deprecation for implementing var by inherited val

#KT-56779 Fixed
This commit is contained in:
Kirill Rakhman
2023-05-12 12:58:04 +02:00
committed by Space Team
parent 941446ea39
commit df03f0df0a
19 changed files with 303 additions and 19 deletions
@@ -2571,6 +2571,24 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.VAR_IMPLEMENTED_BY_INHERITED_VAL.errorFactory) { firDiagnostic ->
VarImplementedByInheritedValErrorImpl(
firSymbolBuilder.classifierBuilder.buildClassLikeSymbol(firDiagnostic.a),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.c),
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.VAR_IMPLEMENTED_BY_INHERITED_VAL.warningFactory) { firDiagnostic ->
VarImplementedByInheritedValWarningImpl(
firSymbolBuilder.classifierBuilder.buildClassLikeSymbol(firDiagnostic.a),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.c),
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.NON_FINAL_MEMBER_IN_FINAL_CLASS) { firDiagnostic ->
NonFinalMemberInFinalClassImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -1829,6 +1829,20 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val overriddenDeclaration: KtCallableSymbol
}
abstract class VarImplementedByInheritedValError : KtFirDiagnostic<KtNamedDeclaration>() {
override val diagnosticClass get() = VarImplementedByInheritedValError::class
abstract val classOrObject: KtClassLikeSymbol
abstract val overridingDeclaration: KtCallableSymbol
abstract val overriddenDeclaration: KtCallableSymbol
}
abstract class VarImplementedByInheritedValWarning : KtFirDiagnostic<KtNamedDeclaration>() {
override val diagnosticClass get() = VarImplementedByInheritedValWarning::class
abstract val classOrObject: KtClassLikeSymbol
abstract val overridingDeclaration: KtCallableSymbol
abstract val overriddenDeclaration: KtCallableSymbol
}
abstract class NonFinalMemberInFinalClass : KtFirDiagnostic<KtNamedDeclaration>() {
override val diagnosticClass get() = NonFinalMemberInFinalClass::class
}
@@ -2193,6 +2193,22 @@ internal class VarOverriddenByValImpl(
override val token: KtLifetimeToken,
) : KtFirDiagnostic.VarOverriddenByVal(), KtAbstractFirDiagnostic<KtNamedDeclaration>
internal class VarImplementedByInheritedValErrorImpl(
override val classOrObject: KtClassLikeSymbol,
override val overridingDeclaration: KtCallableSymbol,
override val overriddenDeclaration: KtCallableSymbol,
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.VarImplementedByInheritedValError(), KtAbstractFirDiagnostic<KtNamedDeclaration>
internal class VarImplementedByInheritedValWarningImpl(
override val classOrObject: KtClassLikeSymbol,
override val overridingDeclaration: KtCallableSymbol,
override val overriddenDeclaration: KtCallableSymbol,
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.VarImplementedByInheritedValWarning(), KtAbstractFirDiagnostic<KtNamedDeclaration>
internal class NonFinalMemberInFinalClassImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
@@ -23756,6 +23756,18 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
runTest("compiler/testData/diagnostics/tests/override/ToAbstractMembersFromSuper-kt1996.kt");
}
@Test
@TestMetadata("varImplementedByInheritedVal.kt")
public void testVarImplementedByInheritedVal() throws Exception {
runTest("compiler/testData/diagnostics/tests/override/varImplementedByInheritedVal.kt");
}
@Test
@TestMetadata("varImplementedByInheritedValError.kt")
public void testVarImplementedByInheritedValError() throws Exception {
runTest("compiler/testData/diagnostics/tests/override/varImplementedByInheritedValError.kt");
}
@Nested
@TestMetadata("compiler/testData/diagnostics/tests/override/clashesOnInheritance")
@TestDataPath("$PROJECT_ROOT")
@@ -23756,6 +23756,18 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
runTest("compiler/testData/diagnostics/tests/override/ToAbstractMembersFromSuper-kt1996.kt");
}
@Test
@TestMetadata("varImplementedByInheritedVal.kt")
public void testVarImplementedByInheritedVal() throws Exception {
runTest("compiler/testData/diagnostics/tests/override/varImplementedByInheritedVal.kt");
}
@Test
@TestMetadata("varImplementedByInheritedValError.kt")
public void testVarImplementedByInheritedValError() throws Exception {
runTest("compiler/testData/diagnostics/tests/override/varImplementedByInheritedValError.kt");
}
@Nested
@TestMetadata("compiler/testData/diagnostics/tests/override/clashesOnInheritance")
@TestDataPath("$PROJECT_ROOT")