[JS IR] Add descriptive error message for js("...") call
Report a message instead of NPE if `js("...")`` code couldn't be emitted
This commit is contained in:
committed by
TeamCityServer
parent
920daac0a2
commit
070c64f9b5
+3
-1
@@ -192,7 +192,9 @@ class IrElementToJsExpressionTransformer : BaseIrElementToJsNodeTransformer<JsEx
|
|||||||
|
|
||||||
override fun visitCall(expression: IrCall, context: JsGenerationContext): JsExpression {
|
override fun visitCall(expression: IrCall, context: JsGenerationContext): JsExpression {
|
||||||
if (context.checkIfJsCode(expression.symbol)) {
|
if (context.checkIfJsCode(expression.symbol)) {
|
||||||
val statements = translateJsCodeIntoStatementList(expression.getValueArgument(0) ?: error("JsCode is expected"))!!
|
val statements = translateJsCodeIntoStatementList(expression.getValueArgument(0) ?: error("JsCode is expected"))
|
||||||
|
?: error("Cannot compute js code for ${expression.render()}")
|
||||||
|
|
||||||
if (statements.isEmpty()) return JsPrefixOperation(JsUnaryOperator.VOID, JsIntLiteral(3)) // TODO: report warning or even error
|
if (statements.isEmpty()) return JsPrefixOperation(JsUnaryOperator.VOID, JsIntLiteral(3)) // TODO: report warning or even error
|
||||||
|
|
||||||
val lastStatement = statements.last()
|
val lastStatement = statements.last()
|
||||||
|
|||||||
+2
-1
@@ -133,7 +133,8 @@ class IrElementToJsStatementTransformer : BaseIrElementToJsNodeTransformer<JsSta
|
|||||||
|
|
||||||
override fun visitCall(expression: IrCall, data: JsGenerationContext): JsStatement {
|
override fun visitCall(expression: IrCall, data: JsGenerationContext): JsStatement {
|
||||||
if (data.checkIfJsCode(expression.symbol)) {
|
if (data.checkIfJsCode(expression.symbol)) {
|
||||||
val statements = translateJsCodeIntoStatementList(expression.getValueArgument(0) ?: error("JsCode is expected"))!!
|
val statements = translateJsCodeIntoStatementList(expression.getValueArgument(0) ?: error("JsCode is expected"))
|
||||||
|
?: error("Cannot compute js code for ${expression.render()}")
|
||||||
return when (statements.size) {
|
return when (statements.size) {
|
||||||
0 -> JsEmpty
|
0 -> JsEmpty
|
||||||
1 -> statements.single().withSource(expression, data)
|
1 -> statements.single().withSource(expression, data)
|
||||||
|
|||||||
Reference in New Issue
Block a user