[FIR] Create checker for simple enum entries with missing overrides
Complex enum entries (those with bodies) with missing overrides are covered by an existing checker that checks all types of classes. But simple enum entries (those without bodies) were not covered and require a separate checker for missing overrides. #KT-58637 Fixed
This commit is contained in:
+10
@@ -2474,6 +2474,16 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.ABSTRACT_MEMBER_NOT_IMPLEMENTED_BY_ENUM_ENTRY) { firDiagnostic ->
|
||||
AbstractMemberNotImplementedByEnumEntryImpl(
|
||||
firSymbolBuilder.buildSymbol(firDiagnostic.a),
|
||||
firDiagnostic.b.map { firCallableSymbol ->
|
||||
firSymbolBuilder.callableBuilder.buildCallableSymbol(firCallableSymbol)
|
||||
},
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED) { firDiagnostic ->
|
||||
AbstractClassMemberNotImplementedImpl(
|
||||
firSymbolBuilder.classifierBuilder.buildClassLikeSymbol(firDiagnostic.a),
|
||||
|
||||
+6
@@ -1758,6 +1758,12 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
val missingDeclaration: KtCallableSymbol
|
||||
}
|
||||
|
||||
interface AbstractMemberNotImplementedByEnumEntry : KtFirDiagnostic<KtEnumEntry> {
|
||||
override val diagnosticClass get() = AbstractMemberNotImplementedByEnumEntry::class
|
||||
val enumEntry: KtSymbol
|
||||
val missingDeclarations: List<KtCallableSymbol>
|
||||
}
|
||||
|
||||
interface AbstractClassMemberNotImplemented : KtFirDiagnostic<KtClassOrObject> {
|
||||
override val diagnosticClass get() = AbstractClassMemberNotImplemented::class
|
||||
val classOrObject: KtClassLikeSymbol
|
||||
|
||||
+7
@@ -2110,6 +2110,13 @@ internal class AbstractMemberNotImplementedImpl(
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtClassOrObject>(firDiagnostic, token), KtFirDiagnostic.AbstractMemberNotImplemented
|
||||
|
||||
internal class AbstractMemberNotImplementedByEnumEntryImpl(
|
||||
override val enumEntry: KtSymbol,
|
||||
override val missingDeclarations: List<KtCallableSymbol>,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtEnumEntry>(firDiagnostic, token), KtFirDiagnostic.AbstractMemberNotImplementedByEnumEntry
|
||||
|
||||
internal class AbstractClassMemberNotImplementedImpl(
|
||||
override val classOrObject: KtClassLikeSymbol,
|
||||
override val missingDeclaration: KtCallableSymbol,
|
||||
|
||||
Reference in New Issue
Block a user