[FIR] Implement RETURN_TYPE_MISMATCH_BY_DELEGATION diagnostic
This commit is contained in:
committed by
teamcityserver
parent
94da1e37aa
commit
8c7ee0b714
+9
-2
@@ -1654,9 +1654,16 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
}
|
||||
add(FirErrors.RETURN_TYPE_MISMATCH_ON_INHERITANCE) { firDiagnostic ->
|
||||
ReturnTypeMismatchOnInheritanceImpl(
|
||||
firSymbolBuilder.classifierBuilder.buildClassLikeSymbol(firDiagnostic.a),
|
||||
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
|
||||
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
|
||||
firDiagnostic as FirPsiDiagnostic<*>,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.RETURN_TYPE_MISMATCH_BY_DELEGATION) { firDiagnostic ->
|
||||
ReturnTypeMismatchByDelegationImpl(
|
||||
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
|
||||
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
|
||||
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.c as FirCallableDeclaration),
|
||||
firDiagnostic as FirPsiDiagnostic<*>,
|
||||
token,
|
||||
)
|
||||
|
||||
+6
-1
@@ -1173,11 +1173,16 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
|
||||
abstract class ReturnTypeMismatchOnInheritance : KtFirDiagnostic<KtClassOrObject>() {
|
||||
override val diagnosticClass get() = ReturnTypeMismatchOnInheritance::class
|
||||
abstract val classOrObject: KtClassLikeSymbol
|
||||
abstract val conflictingDeclaration1: KtCallableSymbol
|
||||
abstract val conflictingDeclaration2: KtCallableSymbol
|
||||
}
|
||||
|
||||
abstract class ReturnTypeMismatchByDelegation : KtFirDiagnostic<KtClassOrObject>() {
|
||||
override val diagnosticClass get() = ReturnTypeMismatchByDelegation::class
|
||||
abstract val delegateDeclaration: KtCallableSymbol
|
||||
abstract val baseDeclaration: KtCallableSymbol
|
||||
}
|
||||
|
||||
abstract class AbstractMemberNotImplemented : KtFirDiagnostic<KtClassOrObject>() {
|
||||
override val diagnosticClass get() = AbstractMemberNotImplemented::class
|
||||
abstract val classOrObject: KtClassLikeSymbol
|
||||
|
||||
+9
-1
@@ -1884,7 +1884,6 @@ internal class OverridingFinalMemberImpl(
|
||||
}
|
||||
|
||||
internal class ReturnTypeMismatchOnInheritanceImpl(
|
||||
override val classOrObject: KtClassLikeSymbol,
|
||||
override val conflictingDeclaration1: KtCallableSymbol,
|
||||
override val conflictingDeclaration2: KtCallableSymbol,
|
||||
firDiagnostic: FirPsiDiagnostic<*>,
|
||||
@@ -1893,6 +1892,15 @@ internal class ReturnTypeMismatchOnInheritanceImpl(
|
||||
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
|
||||
}
|
||||
|
||||
internal class ReturnTypeMismatchByDelegationImpl(
|
||||
override val delegateDeclaration: KtCallableSymbol,
|
||||
override val baseDeclaration: KtCallableSymbol,
|
||||
firDiagnostic: FirPsiDiagnostic<*>,
|
||||
override val token: ValidityToken,
|
||||
) : KtFirDiagnostic.ReturnTypeMismatchByDelegation(), KtAbstractFirDiagnostic<KtClassOrObject> {
|
||||
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
|
||||
}
|
||||
|
||||
internal class AbstractMemberNotImplementedImpl(
|
||||
override val classOrObject: KtClassLikeSymbol,
|
||||
override val missingDeclaration: KtCallableSymbol,
|
||||
|
||||
Reference in New Issue
Block a user