[FIR] DATA_CLASS_OVERRIDE_CONFLICT diagnostic

This commit is contained in:
Andrey Zinovyev
2021-06-21 15:43:01 +03:00
committed by teamcityserver
parent b44785c24e
commit b36f8ed8f5
17 changed files with 93 additions and 44 deletions
@@ -1630,7 +1630,15 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
CannotOverrideInvisibleMemberImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>,
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.DATA_CLASS_OVERRIDE_CONFLICT) { firDiagnostic ->
DataClassOverrideConflictImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic,
token,
)
}
@@ -1664,7 +1672,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
ReturnTypeMismatchOnInheritanceImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>,
firDiagnostic as FirPsiDiagnostic,
token,
)
}
@@ -1672,7 +1680,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
PropertyTypeMismatchOnInheritanceImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>,
firDiagnostic as FirPsiDiagnostic,
token,
)
}
@@ -1680,7 +1688,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
VarTypeMismatchOnInheritanceImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>,
firDiagnostic as FirPsiDiagnostic,
token,
)
}
@@ -1688,7 +1696,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
ReturnTypeMismatchByDelegationImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>,
firDiagnostic as FirPsiDiagnostic,
token,
)
}
@@ -1696,7 +1704,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
PropertyTypeMismatchByDelegationImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>,
firDiagnostic as FirPsiDiagnostic,
token,
)
}
@@ -1704,7 +1712,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
VarOverriddenByValByDelegationImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>,
firDiagnostic as FirPsiDiagnostic,
token,
)
}
@@ -1713,7 +1721,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
firDiagnostic.a.map { firCallableDeclaration ->
firSymbolBuilder.callableBuilder.buildCallableSymbol(firCallableDeclaration as FirCallableDeclaration)
},
firDiagnostic as FirPsiDiagnostic<*>,
firDiagnostic as FirPsiDiagnostic,
token,
)
}
@@ -1157,6 +1157,12 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val baseMember: KtCallableSymbol
}
abstract class DataClassOverrideConflict : KtFirDiagnostic<KtClassOrObject>() {
override val diagnosticClass get() = DataClassOverrideConflict::class
abstract val overridingMember: KtCallableSymbol
abstract val baseMember: KtCallableSymbol
}
abstract class CannotWeakenAccessPrivilege : KtFirDiagnostic<KtModifierListOwner>() {
override val diagnosticClass get() = CannotWeakenAccessPrivilege::class
abstract val overridingVisibility: Visibility
@@ -1857,10 +1857,19 @@ internal class NothingToOverrideImpl(
internal class CannotOverrideInvisibleMemberImpl(
override val overridingMember: KtCallableSymbol,
override val baseMember: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.CannotOverrideInvisibleMember(), KtAbstractFirDiagnostic<KtNamedDeclaration> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class DataClassOverrideConflictImpl(
override val overridingMember: KtCallableSymbol,
override val baseMember: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.DataClassOverrideConflict(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class CannotWeakenAccessPrivilegeImpl(
@@ -1895,63 +1904,63 @@ internal class OverridingFinalMemberImpl(
internal class ReturnTypeMismatchOnInheritanceImpl(
override val conflictingDeclaration1: KtCallableSymbol,
override val conflictingDeclaration2: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ReturnTypeMismatchOnInheritance(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class PropertyTypeMismatchOnInheritanceImpl(
override val conflictingDeclaration1: KtCallableSymbol,
override val conflictingDeclaration2: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.PropertyTypeMismatchOnInheritance(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class VarTypeMismatchOnInheritanceImpl(
override val conflictingDeclaration1: KtCallableSymbol,
override val conflictingDeclaration2: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.VarTypeMismatchOnInheritance(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ReturnTypeMismatchByDelegationImpl(
override val delegateDeclaration: KtCallableSymbol,
override val baseDeclaration: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ReturnTypeMismatchByDelegation(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class PropertyTypeMismatchByDelegationImpl(
override val delegateDeclaration: KtCallableSymbol,
override val baseDeclaration: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.PropertyTypeMismatchByDelegation(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class VarOverriddenByValByDelegationImpl(
override val delegateDeclaration: KtCallableSymbol,
override val baseDeclaration: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.VarOverriddenByValByDelegation(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ConflictingInheritedMembersImpl(
override val conflictingDeclarations: List<KtCallableSymbol>,
firDiagnostic: FirPsiDiagnostic<*>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ConflictingInheritedMembers(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class AbstractMemberNotImplementedImpl(