[JS FIR] Generate FIR checker components

Generate components for JSCODE_ARGUMENT_NON_CONST_EXPRESSION

^KT-59435
This commit is contained in:
Alexander Korepanov
2023-10-16 12:51:14 +02:00
committed by Space Team
parent 720fe2ac89
commit 2d934f6357
7 changed files with 25 additions and 0 deletions
@@ -5651,6 +5651,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirJsErrors.JSCODE_ARGUMENT_NON_CONST_EXPRESSION) { firDiagnostic ->
JscodeArgumentNonConstExpressionImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirSyntaxErrors.SYNTAX) { firDiagnostic ->
SyntaxImpl(
firDiagnostic.a,
@@ -3929,6 +3929,10 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
val operation: String
}
interface JscodeArgumentNonConstExpression : KtFirDiagnostic<KtElement> {
override val diagnosticClass get() = JscodeArgumentNonConstExpression::class
}
interface Syntax : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = Syntax::class
val message: String
@@ -4748,6 +4748,11 @@ internal class WrongOperationWithDynamicImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.WrongOperationWithDynamic
internal class JscodeArgumentNonConstExpressionImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.JscodeArgumentNonConstExpression
internal class SyntaxImpl(
override val message: String,
firDiagnostic: KtPsiDiagnostic,
@@ -150,4 +150,8 @@ object JS_DIAGNOSTICS_LIST : DiagnosticList("FirJsErrors") {
parameter<String>("operation")
}
}
val JSCODE by object : DiagnosticGroup("JsCode") {
val JSCODE_ARGUMENT_NON_CONST_EXPRESSION by error<KtElement>()
}
}
@@ -103,6 +103,9 @@ object FirJsErrors {
val SPREAD_OPERATOR_IN_DYNAMIC_CALL by error0<KtElement>(SourceElementPositioningStrategies.SPREAD_OPERATOR)
val WRONG_OPERATION_WITH_DYNAMIC by error1<KtElement, String>()
// JsCode
val JSCODE_ARGUMENT_NON_CONST_EXPRESSION by error0<KtElement>()
init {
RootDiagnosticRendererFactory.registerFactory(FirJsErrorsDefaultMessages)
}
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors.ENUM_CLASS_I
import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors.EXTERNAL_INTERFACE_AS_REIFIED_TYPE_ARGUMENT
import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors.JS_EXTERNAL_INHERITORS_ONLY
import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors.INLINE_EXTERNAL_DECLARATION
import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors.JSCODE_ARGUMENT_NON_CONST_EXPRESSION
import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors.JS_BUILTIN_NAME_CLASH
import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors.JS_EXTERNAL_ARGUMENT
import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors.JS_MODULE_PROHIBITED_ON_NON_NATIVE
@@ -247,5 +248,6 @@ object FirJsErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
"Exported declaration contains non-consumable identifier ''{0}'', which cannot be represented inside TS definitions and ESM.",
CommonRenderers.STRING,
)
map.put(JSCODE_ARGUMENT_NON_CONST_EXPRESSION, "An argument for the 'js()' function must be a constant string expression.")
}
}
@@ -650,6 +650,7 @@ val FIR_NON_SUPPRESSIBLE_ERROR_NAMES: Set<String> = setOf(
"PROPERTY_DELEGATION_BY_DYNAMIC",
"SPREAD_OPERATOR_IN_DYNAMIC_CALL",
"WRONG_OPERATION_WITH_DYNAMIC",
"JSCODE_ARGUMENT_NON_CONST_EXPRESSION",
"THROWS_LIST_EMPTY",
"INCOMPATIBLE_THROWS_OVERRIDE",
"INCOMPATIBLE_THROWS_INHERITED",