[FIR] Implement DATA_CLASS_OVERRIDE_DEFAULT_VALUES diagnostic

#KT-59415 Fixed
This commit is contained in:
Kirill Rakhman
2023-07-24 15:53:15 +02:00
committed by Space Team
parent 53ff4584d4
commit 06d2befb72
12 changed files with 57 additions and 5 deletions
@@ -2463,6 +2463,14 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.DATA_CLASS_OVERRIDE_DEFAULT_VALUES) { firDiagnostic ->
DataClassOverrideDefaultValuesImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a),
firSymbolBuilder.classifierBuilder.buildClassLikeSymbol(firDiagnostic.b),
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.CANNOT_WEAKEN_ACCESS_PRIVILEGE) { firDiagnostic ->
CannotWeakenAccessPrivilegeImpl(
firDiagnostic.a,
@@ -1747,6 +1747,12 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
val baseMember: KtCallableSymbol
}
interface DataClassOverrideDefaultValues : KtFirDiagnostic<KtElement> {
override val diagnosticClass get() = DataClassOverrideDefaultValues::class
val overridingMember: KtCallableSymbol
val baseType: KtClassLikeSymbol
}
interface CannotWeakenAccessPrivilege : KtFirDiagnostic<KtModifierListOwner> {
override val diagnosticClass get() = CannotWeakenAccessPrivilege::class
val overridingVisibility: Visibility
@@ -2100,6 +2100,13 @@ internal class DataClassOverrideConflictImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtClassOrObject>(firDiagnostic, token), KtFirDiagnostic.DataClassOverrideConflict
internal class DataClassOverrideDefaultValuesImpl(
override val overridingMember: KtCallableSymbol,
override val baseType: KtClassLikeSymbol,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.DataClassOverrideDefaultValues
internal class CannotWeakenAccessPrivilegeImpl(
override val overridingVisibility: Visibility,
override val overridden: KtCallableSymbol,