[JS FIR] Support JS module system FE diagnostics

Support CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM diagnostic
^KT-59377 Fixed

Support CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM diagnostic
^KT-59381 Fixed

Support CALL_FROM_UMD_MUST_BE_JS_MODULE_AND_JS_NON_MODULE diagnostic
^KT-59417 Fixed
This commit is contained in:
Alexander Korepanov
2023-07-13 15:30:04 +02:00
committed by Space Team
parent 30b012839c
commit 08d158f901
24 changed files with 319 additions and 169 deletions
@@ -1118,6 +1118,26 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirJsErrors.CALL_FROM_UMD_MUST_BE_JS_MODULE_AND_JS_NON_MODULE) { firDiagnostic ->
CallFromUmdMustBeJsModuleAndJsNonModuleImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJsErrors.CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM) { firDiagnostic ->
CallToJsModuleWithoutModuleSystemImpl(
firSymbolBuilder.buildSymbol(firDiagnostic.a),
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJsErrors.CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM) { firDiagnostic ->
CallToJsNonModuleWithModuleSystemImpl(
firSymbolBuilder.buildSymbol(firDiagnostic.a),
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJsErrors.RUNTIME_ANNOTATION_NOT_SUPPORTED) { firDiagnostic ->
RuntimeAnnotationNotSupportedImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -806,6 +806,20 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = NestedJsModuleProhibited::class
}
interface CallFromUmdMustBeJsModuleAndJsNonModule : KtFirDiagnostic<KtElement> {
override val diagnosticClass get() = CallFromUmdMustBeJsModuleAndJsNonModule::class
}
interface CallToJsModuleWithoutModuleSystem : KtFirDiagnostic<KtElement> {
override val diagnosticClass get() = CallToJsModuleWithoutModuleSystem::class
val callee: KtSymbol
}
interface CallToJsNonModuleWithModuleSystem : KtFirDiagnostic<KtElement> {
override val diagnosticClass get() = CallToJsNonModuleWithModuleSystem::class
val callee: KtSymbol
}
interface RuntimeAnnotationNotSupported : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = RuntimeAnnotationNotSupported::class
}
@@ -967,6 +967,23 @@ internal class NestedJsModuleProhibitedImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.NestedJsModuleProhibited
internal class CallFromUmdMustBeJsModuleAndJsNonModuleImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.CallFromUmdMustBeJsModuleAndJsNonModule
internal class CallToJsModuleWithoutModuleSystemImpl(
override val callee: KtSymbol,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.CallToJsModuleWithoutModuleSystem
internal class CallToJsNonModuleWithModuleSystemImpl(
override val callee: KtSymbol,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.CallToJsNonModuleWithModuleSystem
internal class RuntimeAnnotationNotSupportedImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,