[FIR] Implement DEFINITELY_NON_NULLABLE_AS_REIFIED diagnostic

#KT-55646 Fixed
This commit is contained in:
Kirill Rakhman
2023-04-20 10:43:55 +02:00
committed by Space Team
parent 509a97a7b5
commit 0a2477585a
9 changed files with 62 additions and 28 deletions
@@ -2074,6 +2074,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.DEFINITELY_NON_NULLABLE_AS_REIFIED) { firDiagnostic ->
DefinitelyNonNullableAsReifiedImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.FINAL_UPPER_BOUND) { firDiagnostic ->
FinalUpperBoundImpl(
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.a),
@@ -1474,6 +1474,10 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val type: KtType
}
abstract class DefinitelyNonNullableAsReified : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = DefinitelyNonNullableAsReified::class
}
abstract class FinalUpperBound : KtFirDiagnostic<KtTypeReference>() {
override val diagnosticClass get() = FinalUpperBound::class
abstract val type: KtType
@@ -1772,6 +1772,11 @@ internal class ReifiedTypeForbiddenSubstitutionImpl(
override val token: KtLifetimeToken,
) : KtFirDiagnostic.ReifiedTypeForbiddenSubstitution(), KtAbstractFirDiagnostic<PsiElement>
internal class DefinitelyNonNullableAsReifiedImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.DefinitelyNonNullableAsReified(), KtAbstractFirDiagnostic<PsiElement>
internal class FinalUpperBoundImpl(
override val type: KtType,
override val firDiagnostic: KtPsiDiagnostic,