diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/reference/ClearCallTranslator.kt b/js/js.translator/src/org/jetbrains/k2js/translate/reference/ClearCallTranslator.kt index 91526ec8e55..b7d2feb7f61 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/reference/ClearCallTranslator.kt +++ b/js/js.translator/src/org/jetbrains/k2js/translate/reference/ClearCallTranslator.kt @@ -95,8 +95,16 @@ trait CallCase { 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 { else callInfo.bothReceivers() } + + return if (callInfo.isSafeCall()) + constructSafeCall(result) + else + return result } }