[JS IR] Fix: Use proper parameter in ExportedDefaultParameterStub
This commit is contained in:
+11
-7
@@ -32,16 +32,19 @@ private fun IrConstructorCall.isAnnotation(name: FqName): Boolean {
|
|||||||
|
|
||||||
class ExportedDefaultParameterStub(val context: JsIrBackendContext) : DeclarationTransformer {
|
class ExportedDefaultParameterStub(val context: JsIrBackendContext) : DeclarationTransformer {
|
||||||
|
|
||||||
private fun IrBuilderWithScope.createDefaultResolutionExpression(value: IrValueParameter): IrExpression? {
|
private fun IrBuilderWithScope.createDefaultResolutionExpression(
|
||||||
return value.defaultValue?.let { defaultValue ->
|
fromParameter: IrValueParameter,
|
||||||
|
toParameter: IrValueParameter,
|
||||||
|
): IrExpression? {
|
||||||
|
return fromParameter.defaultValue?.let { defaultValue ->
|
||||||
irIfThenElse(
|
irIfThenElse(
|
||||||
value.type,
|
toParameter.type,
|
||||||
irEqeqeq(
|
irEqeqeq(
|
||||||
irGet(value),
|
irGet(toParameter),
|
||||||
irCall(this@ExportedDefaultParameterStub.context.intrinsics.jsUndefined)
|
irCall(this@ExportedDefaultParameterStub.context.intrinsics.jsUndefined)
|
||||||
),
|
),
|
||||||
defaultValue.expression,
|
defaultValue.expression,
|
||||||
irGet(value)
|
irGet(toParameter)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -52,7 +55,7 @@ class ExportedDefaultParameterStub(val context: JsIrBackendContext) : Declaratio
|
|||||||
val variables = mutableMapOf<IrValueParameter, IrValueDeclaration>()
|
val variables = mutableMapOf<IrValueParameter, IrValueDeclaration>()
|
||||||
|
|
||||||
val defaultResolutionStatements = valueParameters.mapNotNull { valueParameter ->
|
val defaultResolutionStatements = valueParameters.mapNotNull { valueParameter ->
|
||||||
irBuilder.createDefaultResolutionExpression(valueParameter)?.let { initializer ->
|
irBuilder.createDefaultResolutionExpression(valueParameter, valueParameter)?.let { initializer ->
|
||||||
JsIrBuilder.buildVar(
|
JsIrBuilder.buildVar(
|
||||||
valueParameter.type,
|
valueParameter.type,
|
||||||
this@introduceDefaultResolution,
|
this@introduceDefaultResolution,
|
||||||
@@ -116,7 +119,8 @@ class ExportedDefaultParameterStub(val context: JsIrBackendContext) : Declaratio
|
|||||||
extensionReceiver = exportedDefaultStubFun.extensionReceiverParameter?.let { irGet(it) }
|
extensionReceiver = exportedDefaultStubFun.extensionReceiverParameter?.let { irGet(it) }
|
||||||
|
|
||||||
declaration.valueParameters.forEachIndexed { index, irValueParameter ->
|
declaration.valueParameters.forEachIndexed { index, irValueParameter ->
|
||||||
val value = createDefaultResolutionExpression(irValueParameter) ?: irGet(irValueParameter)
|
val exportedParameter = exportedDefaultStubFun.valueParameters[index]
|
||||||
|
val value = createDefaultResolutionExpression(irValueParameter, exportedParameter) ?: irGet(exportedParameter)
|
||||||
putValueArgument(index, value)
|
putValueArgument(index, value)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user