[FIR] Implement VAR_OVERRIDDEN_BY_VAL_BY_DELEGATION diagnostic

This commit is contained in:
Andrey Zinovyev
2021-06-11 13:53:46 +03:00
committed by teamcityserver
parent c98cd3b190
commit 78519f851e
11 changed files with 126 additions and 138 deletions
@@ -1692,6 +1692,14 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.VAR_OVERRIDDEN_BY_VAL_BY_DELEGATION) { firDiagnostic ->
VarOverriddenByValByDelegationImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>,
token,
)
}
add(FirErrors.ABSTRACT_MEMBER_NOT_IMPLEMENTED) { firDiagnostic ->
AbstractMemberNotImplementedImpl(
firSymbolBuilder.classifierBuilder.buildClassLikeSymbol(firDiagnostic.a),
@@ -1201,6 +1201,12 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val baseDeclaration: KtCallableSymbol
}
abstract class VarOverriddenByValByDelegation : KtFirDiagnostic<KtClassOrObject>() {
override val diagnosticClass get() = VarOverriddenByValByDelegation::class
abstract val delegateDeclaration: KtCallableSymbol
abstract val baseDeclaration: KtCallableSymbol
}
abstract class AbstractMemberNotImplemented : KtFirDiagnostic<KtClassOrObject>() {
override val diagnosticClass get() = AbstractMemberNotImplemented::class
abstract val classOrObject: KtClassLikeSymbol
@@ -1928,6 +1928,15 @@ internal class PropertyTypeMismatchByDelegationImpl(
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
}
internal class VarOverriddenByValByDelegationImpl(
override val delegateDeclaration: KtCallableSymbol,
override val baseDeclaration: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>,
override val token: ValidityToken,
) : KtFirDiagnostic.VarOverriddenByValByDelegation(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
}
internal class AbstractMemberNotImplementedImpl(
override val classOrObject: KtClassLikeSymbol,
override val missingDeclaration: KtCallableSymbol,