[FIR] Add SUSPENSION_POINT_INSIDE_CRITICAL_SECTION

This commit is contained in:
Ivan Kochurkin
2021-09-08 23:46:37 +03:00
committed by teamcityserver
parent e97933a9e5
commit 0ffd6ccb34
12 changed files with 90 additions and 120 deletions
@@ -3990,6 +3990,13 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirJvmErrors.SUSPENSION_POINT_INSIDE_CRITICAL_SECTION) { firDiagnostic ->
SuspensionPointInsideCriticalSectionImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a.fir),
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirJvmErrors.INAPPLICABLE_JVM_FIELD) { firDiagnostic ->
InapplicableJvmFieldImpl(
firDiagnostic.a,
@@ -2777,6 +2777,11 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = RepeatableAnnotationHasNestedClassNamedContainerWarning::class
}
abstract class SuspensionPointInsideCriticalSection : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = SuspensionPointInsideCriticalSection::class
abstract val function: KtCallableSymbol
}
abstract class InapplicableJvmField : KtFirDiagnostic<KtAnnotationEntry>() {
override val diagnosticClass get() = InapplicableJvmField::class
abstract val message: String
@@ -4515,6 +4515,14 @@ internal class RepeatableAnnotationHasNestedClassNamedContainerWarningImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class SuspensionPointInsideCriticalSectionImpl(
override val function: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.SuspensionPointInsideCriticalSection(), KtAbstractFirDiagnostic<PsiElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class InapplicableJvmFieldImpl(
override val message: String,
firDiagnostic: FirPsiDiagnostic,