[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,