[FIR] Implement warnings for java nullability type mismatch on override

#KT-56989
This commit is contained in:
Kirill Rakhman
2023-09-20 17:32:41 +02:00
committed by Space Team
parent a6fdeeb7df
commit 2df1e9dde6
21 changed files with 330 additions and 158 deletions
@@ -5025,6 +5025,14 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirJvmErrors.WRONG_NULLABILITY_FOR_JAVA_OVERRIDE) { firDiagnostic ->
WrongNullabilityForJavaOverrideImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b),
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJvmErrors.JAVA_TYPE_MISMATCH) { firDiagnostic ->
JavaTypeMismatchImpl(
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.a),
@@ -3495,6 +3495,12 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = JvmInlineWithoutValueClass::class
}
interface WrongNullabilityForJavaOverride : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = WrongNullabilityForJavaOverride::class
val override: KtCallableSymbol
val base: KtCallableSymbol
}
interface JavaTypeMismatch : KtFirDiagnostic<KtExpression> {
override val diagnosticClass get() = JavaTypeMismatch::class
val expectedType: KtType
@@ -4217,6 +4217,13 @@ internal class JvmInlineWithoutValueClassImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.JvmInlineWithoutValueClass
internal class WrongNullabilityForJavaOverrideImpl(
override val override: KtCallableSymbol,
override val base: KtCallableSymbol,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.WrongNullabilityForJavaOverride
internal class JavaTypeMismatchImpl(
override val expectedType: KtType,
override val actualType: KtType,