JS backend: Add support for safe call
This commit is contained in:
@@ -95,8 +95,16 @@ trait CallCase<I : BaseCallInfo> {
|
|||||||
throw unsupported()
|
throw unsupported()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun constructSafeCall(result: JsExpression): JsExpression {
|
||||||
|
return CallType.SAFE.constructCall(callInfo.nullableReceiverForSafeCall, object : CallType.CallConstructor {
|
||||||
|
override fun construct(receiver: JsExpression?): JsExpression {
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
}, callInfo.context)
|
||||||
|
}
|
||||||
|
|
||||||
final fun translate(): JsExpression {
|
final fun translate(): JsExpression {
|
||||||
return if (callInfo.thisObject == null) {
|
val result = if (callInfo.thisObject == null) {
|
||||||
if (callInfo.receiverObject == null)
|
if (callInfo.receiverObject == null)
|
||||||
callInfo.noReceivers()
|
callInfo.noReceivers()
|
||||||
else
|
else
|
||||||
@@ -107,6 +115,11 @@ trait CallCase<I : BaseCallInfo> {
|
|||||||
else
|
else
|
||||||
callInfo.bothReceivers()
|
callInfo.bothReceivers()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return if (callInfo.isSafeCall())
|
||||||
|
constructSafeCall(result)
|
||||||
|
else
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user