[FIR] Add TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM diagnostics, ^KT-52327 Fixed

This commit is contained in:
Ivan Kochurkin
2022-06-01 00:29:32 +03:00
committed by teamcity
parent c5648fd449
commit 9f69ea1786
27 changed files with 109 additions and 50 deletions
@@ -3125,6 +3125,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM) { firDiagnostic ->
TypecheckerHasRunIntoRecursiveProblemImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.UNSAFE_CALL) { firDiagnostic ->
UnsafeCallImpl(
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.a),
@@ -2184,6 +2184,10 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = SenselessNullInWhen::class
}
abstract class TypecheckerHasRunIntoRecursiveProblem : KtFirDiagnostic<KtExpression>() {
override val diagnosticClass get() = TypecheckerHasRunIntoRecursiveProblem::class
}
abstract class UnsafeCall : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = UnsafeCall::class
abstract val receiverType: KtType
@@ -2629,6 +2629,11 @@ internal class SenselessNullInWhenImpl(
override val token: KtLifetimeToken,
) : KtFirDiagnostic.SenselessNullInWhen(), KtAbstractFirDiagnostic<KtElement>
internal class TypecheckerHasRunIntoRecursiveProblemImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.TypecheckerHasRunIntoRecursiveProblem(), KtAbstractFirDiagnostic<KtExpression>
internal class UnsafeCallImpl(
override val receiverType: KtType,
override val receiverExpression: KtExpression?,