FIR: Make 'suspend fun', where 'suspend' is not builtin error in 1.8

#KT-49264
This commit is contained in:
Ilmir Usmanov
2022-03-30 00:37:37 +02:00
committed by teamcity
parent f75a8109d2
commit f473998e8b
9 changed files with 73 additions and 40 deletions
@@ -3872,6 +3872,18 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN.errorFactory) { firDiagnostic ->
ModifierFormForNonBuiltInSuspendFunErrorImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN.warningFactory) { firDiagnostic ->
ModifierFormForNonBuiltInSuspendFunWarningImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.RETURN_FOR_BUILT_IN_SUSPEND) { firDiagnostic ->
ReturnForBuiltInSuspendImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -2699,6 +2699,14 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = ModifierFormForNonBuiltInSuspend::class
}
abstract class ModifierFormForNonBuiltInSuspendFunError : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = ModifierFormForNonBuiltInSuspendFunError::class
}
abstract class ModifierFormForNonBuiltInSuspendFunWarning : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = ModifierFormForNonBuiltInSuspendFunWarning::class
}
abstract class ReturnForBuiltInSuspend : KtFirDiagnostic<KtReturnExpression>() {
override val diagnosticClass get() = ReturnForBuiltInSuspend::class
}
@@ -3256,6 +3256,16 @@ internal class ModifierFormForNonBuiltInSuspendImpl(
override val token: ValidityToken,
) : KtFirDiagnostic.ModifierFormForNonBuiltInSuspend(), KtAbstractFirDiagnostic<PsiElement>
internal class ModifierFormForNonBuiltInSuspendFunErrorImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ModifierFormForNonBuiltInSuspendFunError(), KtAbstractFirDiagnostic<PsiElement>
internal class ModifierFormForNonBuiltInSuspendFunWarningImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ModifierFormForNonBuiltInSuspendFunWarning(), KtAbstractFirDiagnostic<PsiElement>
internal class ReturnForBuiltInSuspendImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: ValidityToken,