[FIR] Implement CANNOT_OVERRIDE_INVISIBLE_MEMBER diagnostic

This commit is contained in:
Andrey Zinovyev
2021-06-15 16:20:17 +03:00
committed by teamcityserver
parent f4c8108ee0
commit 9452b788bf
11 changed files with 67 additions and 58 deletions
@@ -1626,6 +1626,14 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.CANNOT_OVERRIDE_INVISIBLE_MEMBER) { firDiagnostic ->
CannotOverrideInvisibleMemberImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>,
token,
)
}
add(FirErrors.CANNOT_WEAKEN_ACCESS_PRIVILEGE) { firDiagnostic ->
CannotWeakenAccessPrivilegeImpl(
firDiagnostic.a,
@@ -1151,6 +1151,12 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val declaration: KtSymbol
}
abstract class CannotOverrideInvisibleMember : KtFirDiagnostic<KtNamedDeclaration>() {
override val diagnosticClass get() = CannotOverrideInvisibleMember::class
abstract val overridingMember: KtCallableSymbol
abstract val baseMember: KtCallableSymbol
}
abstract class CannotWeakenAccessPrivilege : KtFirDiagnostic<KtModifierListOwner>() {
override val diagnosticClass get() = CannotWeakenAccessPrivilege::class
abstract val overridingVisibility: Visibility
@@ -1854,6 +1854,15 @@ internal class NothingToOverrideImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class CannotOverrideInvisibleMemberImpl(
override val overridingMember: KtCallableSymbol,
override val baseMember: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>,
override val token: ValidityToken,
) : KtFirDiagnostic.CannotOverrideInvisibleMember(), KtAbstractFirDiagnostic<KtNamedDeclaration> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
}
internal class CannotWeakenAccessPrivilegeImpl(
override val overridingVisibility: Visibility,
override val overridden: KtCallableSymbol,