Don't create externalVarargReceiverTmp when there's no need to create it
^KT-40689 fixed
This commit is contained in:
committed by
TeamCityServer
parent
6255f2bd77
commit
cac57e4178
+14
-10
@@ -164,19 +164,23 @@ fun translateCall(
|
|||||||
if (jsDispatchReceiver != null) {
|
if (jsDispatchReceiver != null) {
|
||||||
// TODO: Do not create IIFE when receiver expression is simple or has no side effects
|
// TODO: Do not create IIFE when receiver expression is simple or has no side effects
|
||||||
// TODO: Do not create IIFE at all? (Currently there is no reliable way to create temporary variable in current scope)
|
// TODO: Do not create IIFE at all? (Currently there is no reliable way to create temporary variable in current scope)
|
||||||
val receiverName = JsName("\$externalVarargReceiverTmp")
|
|
||||||
val receiverRef = receiverName.makeRef()
|
|
||||||
val iifeFun = JsFunction(
|
val iifeFun = JsFunction(
|
||||||
emptyScope,
|
emptyScope,
|
||||||
JsBlock(
|
if (argumentsAsSingleArray is JsArrayLiteral) {
|
||||||
JsVars(JsVars.JsVar(receiverName, jsDispatchReceiver)),
|
JsBlock(
|
||||||
JsReturn(
|
JsReturn(
|
||||||
if (argumentsAsSingleArray is JsArrayLiteral) {
|
|
||||||
JsInvocation(
|
JsInvocation(
|
||||||
JsNameRef(symbolName, receiverRef),
|
JsNameRef(symbolName, jsDispatchReceiver),
|
||||||
argumentsAsSingleArray.expressions
|
argumentsAsSingleArray.expressions
|
||||||
)
|
)
|
||||||
} else {
|
)
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
val receiverName = JsName("\$externalVarargReceiverTmp")
|
||||||
|
val receiverRef = receiverName.makeRef()
|
||||||
|
JsBlock(
|
||||||
|
JsVars(JsVars.JsVar(receiverName, jsDispatchReceiver)),
|
||||||
|
JsReturn(
|
||||||
JsInvocation(
|
JsInvocation(
|
||||||
JsNameRef("apply", JsNameRef(symbolName, receiverRef)),
|
JsNameRef("apply", JsNameRef(symbolName, receiverRef)),
|
||||||
listOf(
|
listOf(
|
||||||
@@ -184,9 +188,9 @@ fun translateCall(
|
|||||||
argumentsAsSingleArray
|
argumentsAsSingleArray
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
)
|
||||||
)
|
)
|
||||||
),
|
},
|
||||||
"VarargIIFE"
|
"VarargIIFE"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user