From 02615ec569ceb6dd7fd2943aa9331de4b5abd013 Mon Sep 17 00:00:00 2001 From: Svyatoslav Kuzmich Date: Tue, 26 Jan 2021 16:12:30 +0300 Subject: [PATCH] [JS IR] Fix: Use proper parameter in ExportedDefaultParameterStub --- .../js/lower/ExportedDefaultParameterStub.kt | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ExportedDefaultParameterStub.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ExportedDefaultParameterStub.kt index 8987e488be0..70fc7c882de 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ExportedDefaultParameterStub.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ExportedDefaultParameterStub.kt @@ -32,16 +32,19 @@ private fun IrConstructorCall.isAnnotation(name: FqName): Boolean { class ExportedDefaultParameterStub(val context: JsIrBackendContext) : DeclarationTransformer { - private fun IrBuilderWithScope.createDefaultResolutionExpression(value: IrValueParameter): IrExpression? { - return value.defaultValue?.let { defaultValue -> + private fun IrBuilderWithScope.createDefaultResolutionExpression( + fromParameter: IrValueParameter, + toParameter: IrValueParameter, + ): IrExpression? { + return fromParameter.defaultValue?.let { defaultValue -> irIfThenElse( - value.type, + toParameter.type, irEqeqeq( - irGet(value), + irGet(toParameter), irCall(this@ExportedDefaultParameterStub.context.intrinsics.jsUndefined) ), defaultValue.expression, - irGet(value) + irGet(toParameter) ) } } @@ -52,7 +55,7 @@ class ExportedDefaultParameterStub(val context: JsIrBackendContext) : Declaratio val variables = mutableMapOf() val defaultResolutionStatements = valueParameters.mapNotNull { valueParameter -> - irBuilder.createDefaultResolutionExpression(valueParameter)?.let { initializer -> + irBuilder.createDefaultResolutionExpression(valueParameter, valueParameter)?.let { initializer -> JsIrBuilder.buildVar( valueParameter.type, this@introduceDefaultResolution, @@ -116,7 +119,8 @@ class ExportedDefaultParameterStub(val context: JsIrBackendContext) : Declaratio extensionReceiver = exportedDefaultStubFun.extensionReceiverParameter?.let { irGet(it) } 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) } })