FIR: implement checker for open members
Specifically, 1. NON_FINAL_MEMBER_IN_FINAL_CLASS 2. NON_FINAL_MEMBER_IN_OBJECT
This commit is contained in:
committed by
Mikhail Glukhikh
parent
3e9ff3ecda
commit
6b453d9b23
+12
@@ -723,6 +723,18 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.NON_FINAL_MEMBER_IN_FINAL_CLASS) { firDiagnostic ->
|
||||
NonFinalMemberInFinalClassImpl(
|
||||
firDiagnostic as FirPsiDiagnostic<*>,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.NON_FINAL_MEMBER_IN_OBJECT) { firDiagnostic ->
|
||||
NonFinalMemberInObjectImpl(
|
||||
firDiagnostic as FirPsiDiagnostic<*>,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.MANY_COMPANION_OBJECTS) { firDiagnostic ->
|
||||
ManyCompanionObjectsImpl(
|
||||
firDiagnostic as FirPsiDiagnostic<*>,
|
||||
|
||||
+8
@@ -515,6 +515,14 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
abstract val overriddenDeclaration: KtSymbol
|
||||
}
|
||||
|
||||
abstract class NonFinalMemberInFinalClass : KtFirDiagnostic<KtNamedDeclaration>() {
|
||||
override val diagnosticClass get() = NonFinalMemberInFinalClass::class
|
||||
}
|
||||
|
||||
abstract class NonFinalMemberInObject : KtFirDiagnostic<KtNamedDeclaration>() {
|
||||
override val diagnosticClass get() = NonFinalMemberInObject::class
|
||||
}
|
||||
|
||||
abstract class ManyCompanionObjects : KtFirDiagnostic<PsiElement>() {
|
||||
override val diagnosticClass get() = ManyCompanionObjects::class
|
||||
}
|
||||
|
||||
+14
@@ -822,6 +822,20 @@ internal class VarOverriddenByValImpl(
|
||||
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
|
||||
}
|
||||
|
||||
internal class NonFinalMemberInFinalClassImpl(
|
||||
firDiagnostic: FirPsiDiagnostic<*>,
|
||||
override val token: ValidityToken,
|
||||
) : KtFirDiagnostic.NonFinalMemberInFinalClass(), KtAbstractFirDiagnostic<KtNamedDeclaration> {
|
||||
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
|
||||
}
|
||||
|
||||
internal class NonFinalMemberInObjectImpl(
|
||||
firDiagnostic: FirPsiDiagnostic<*>,
|
||||
override val token: ValidityToken,
|
||||
) : KtFirDiagnostic.NonFinalMemberInObject(), KtAbstractFirDiagnostic<KtNamedDeclaration> {
|
||||
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
|
||||
}
|
||||
|
||||
internal class ManyCompanionObjectsImpl(
|
||||
firDiagnostic: FirPsiDiagnostic<*>,
|
||||
override val token: ValidityToken,
|
||||
|
||||
Reference in New Issue
Block a user