JS backend: Add support for safe call

This commit is contained in:
Erokhin Stanislav
2013-12-20 22:41:36 +04:00
parent 083e789692
commit 392da838ca
@@ -95,8 +95,16 @@ trait CallCase<I : BaseCallInfo> {
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 {
return if (callInfo.thisObject == null) {
val result = if (callInfo.thisObject == null) {
if (callInfo.receiverObject == null)
callInfo.noReceivers()
else
@@ -107,6 +115,11 @@ trait CallCase<I : BaseCallInfo> {
else
callInfo.bothReceivers()
}
return if (callInfo.isSafeCall())
constructSafeCall(result)
else
return result
}
}