[FIR] KT-59368 context receiver subtyping checker

This commit is contained in:
Tomas Husak
2023-11-29 16:52:01 +01:00
committed by Space Team
parent 3d77d09260
commit d7eb67a436
17 changed files with 181 additions and 268 deletions
@@ -2105,6 +2105,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.SUBTYPING_BETWEEN_CONTEXT_RECEIVERS) { firDiagnostic ->
SubtypingBetweenContextReceiversImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.RECURSION_IN_IMPLICIT_TYPES) { firDiagnostic ->
RecursionInImplicitTypesImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -1500,6 +1500,10 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = UnsupportedContextualDeclarationCall::class
}
interface SubtypingBetweenContextReceivers : KtFirDiagnostic<KtElement> {
override val diagnosticClass get() = SubtypingBetweenContextReceivers::class
}
interface RecursionInImplicitTypes : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = RecursionInImplicitTypes::class
}
@@ -1800,6 +1800,11 @@ internal class UnsupportedContextualDeclarationCallImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.UnsupportedContextualDeclarationCall
internal class SubtypingBetweenContextReceiversImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.SubtypingBetweenContextReceivers
internal class RecursionInImplicitTypesImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,