From 857c07fa2509b0186ecc47f2e918430d2ca7f04a Mon Sep 17 00:00:00 2001 From: Artem Kobzar Date: Thu, 31 Aug 2023 14:24:45 +0200 Subject: [PATCH] [K/JS] Fix corutines build for 1.9.20 This reverts commit f0d6471a8bcbdfc52ddc840a6383032ef86976d1. --- .../kotlin/ir/backend/js/JsLoweringPhases.kt | 4 ++- .../backend/js/lower/AutoboxingTransformer.kt | 20 ++--------- .../js/test/fir/FirJsBoxTestGenerated.java | 6 ---- .../js/test/fir/FirJsES6BoxTestGenerated.java | 6 ---- .../js/test/ir/IrBoxJsES6TestGenerated.java | 6 ---- .../js/test/ir/IrBoxJsTestGenerated.java | 6 ---- .../boxingUnboxingInsideTheSuspendFunction.kt | 35 ------------------- 7 files changed, 6 insertions(+), 77 deletions(-) delete mode 100644 js/js.translator/testData/box/coroutines/boxingUnboxingInsideTheSuspendFunction.kt diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt index bf84ce54d8d..0fcf41f97ff 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.backend.common.lower.inline.LocalClassesInInlineFunc import org.jetbrains.kotlin.backend.common.lower.inline.LocalClassesInInlineLambdasLowering import org.jetbrains.kotlin.backend.common.lower.loops.ForLoopsLowering import org.jetbrains.kotlin.backend.common.phaser.* +import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.ir.backend.js.lower.* import org.jetbrains.kotlin.ir.backend.js.lower.calls.CallsLowering import org.jetbrains.kotlin.ir.backend.js.lower.cleanup.CleanupLowering @@ -22,6 +23,7 @@ import org.jetbrains.kotlin.ir.backend.js.lower.coroutines.AddContinuationToFunc import org.jetbrains.kotlin.ir.backend.js.lower.coroutines.JsSuspendArityStoreLowering import org.jetbrains.kotlin.ir.backend.js.lower.coroutines.JsSuspendFunctionsLowering import org.jetbrains.kotlin.ir.backend.js.lower.inline.* +import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.JsGenerationGranularity import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.interpreter.IrInterpreterConfiguration @@ -736,7 +738,7 @@ private val inlineClassUsageLoweringPhase = makeBodyLoweringPhase( ) private val autoboxingTransformerPhase = makeBodyLoweringPhase( - { AutoboxingTransformer(it, shouldCalculateActualTypeForInlinedFunction = true) }, + ::AutoboxingTransformer, name = "AutoboxingTransformer", description = "Insert box/unbox intrinsics" ) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/AutoboxingTransformer.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/AutoboxingTransformer.kt index c471844646b..873e686e261 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/AutoboxingTransformer.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/AutoboxingTransformer.kt @@ -31,10 +31,7 @@ import org.jetbrains.kotlin.ir.util.render // Copied and adapted from Kotlin/Native -abstract class AbstractValueUsageLowering( - val context: JsCommonBackendContext, - private val shouldCalculateActualTypeForInlinedFunction: Boolean = false -) : AbstractValueUsageTransformer(context.irBuiltIns), +abstract class AbstractValueUsageLowering(val context: JsCommonBackendContext) : AbstractValueUsageTransformer(context.irBuiltIns), BodyLoweringPass { val icUtils = context.inlineClassesUtils @@ -55,19 +52,11 @@ abstract class AbstractValueUsageLowering( abstract fun IrExpression.useExpressionAsType(actualType: IrType, expectedType: IrType): IrExpression - protected fun IrExpression.getActualType(): IrType = when (this) { + protected fun IrExpression.getActualType() = when (this) { is IrConstructorCall -> symbol.owner.returnType is IrCall -> symbol.owner.realOverrideTarget.returnType is IrGetField -> this.symbol.owner.type - is IrInlinedFunctionBlock -> { - if (shouldCalculateActualTypeForInlinedFunction) { - inlineCall.getActualType() - } else { - this.type - } - } - is IrTypeOperatorCall -> { if (operator == IrTypeOperator.REINTERPRET_CAST) { this.typeOperand @@ -131,10 +120,7 @@ abstract class AbstractValueUsageLowering( ) } -class AutoboxingTransformer( - context: JsCommonBackendContext, - shouldCalculateActualTypeForInlinedFunction: Boolean = false -) : AbstractValueUsageLowering(context, shouldCalculateActualTypeForInlinedFunction) { +class AutoboxingTransformer(context: JsCommonBackendContext) : AbstractValueUsageLowering(context) { private var processingReturnStack = mutableListOf() private fun IrExpression.useReturnableExpressionAsType(expectedType: IrType): IrExpression { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java index 48ecea61e85..4fbbdc1c9f6 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java @@ -872,12 +872,6 @@ public class FirJsBoxTestGenerated extends AbstractFirJsBoxTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/coroutines"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.JS_IR, true); } - @Test - @TestMetadata("boxingUnboxingInsideTheSuspendFunction.kt") - public void testBoxingUnboxingInsideTheSuspendFunction() throws Exception { - runTest("js/js.translator/testData/box/coroutines/boxingUnboxingInsideTheSuspendFunction.kt"); - } - @Test @TestMetadata("debugStatement.kt") public void testDebugStatement() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java index ed0071d167b..d87a4ea57b2 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java @@ -872,12 +872,6 @@ public class FirJsES6BoxTestGenerated extends AbstractFirJsES6BoxTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/coroutines"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.JS_IR_ES6, true); } - @Test - @TestMetadata("boxingUnboxingInsideTheSuspendFunction.kt") - public void testBoxingUnboxingInsideTheSuspendFunction() throws Exception { - runTest("js/js.translator/testData/box/coroutines/boxingUnboxingInsideTheSuspendFunction.kt"); - } - @Test @TestMetadata("debugStatement.kt") public void testDebugStatement() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java index 2a957b1a7e8..a80f0a62e1e 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java @@ -872,12 +872,6 @@ public class IrBoxJsES6TestGenerated extends AbstractIrBoxJsES6Test { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/coroutines"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.JS_IR_ES6, true); } - @Test - @TestMetadata("boxingUnboxingInsideTheSuspendFunction.kt") - public void testBoxingUnboxingInsideTheSuspendFunction() throws Exception { - runTest("js/js.translator/testData/box/coroutines/boxingUnboxingInsideTheSuspendFunction.kt"); - } - @Test @TestMetadata("debugStatement.kt") public void testDebugStatement() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java index 3745ca4d8bb..e7ce8bf74a0 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java @@ -872,12 +872,6 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/coroutines"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.JS_IR, true); } - @Test - @TestMetadata("boxingUnboxingInsideTheSuspendFunction.kt") - public void testBoxingUnboxingInsideTheSuspendFunction() throws Exception { - runTest("js/js.translator/testData/box/coroutines/boxingUnboxingInsideTheSuspendFunction.kt"); - } - @Test @TestMetadata("debugStatement.kt") public void testDebugStatement() throws Exception { diff --git a/js/js.translator/testData/box/coroutines/boxingUnboxingInsideTheSuspendFunction.kt b/js/js.translator/testData/box/coroutines/boxingUnboxingInsideTheSuspendFunction.kt deleted file mode 100644 index 0b1284924bb..00000000000 --- a/js/js.translator/testData/box/coroutines/boxingUnboxingInsideTheSuspendFunction.kt +++ /dev/null @@ -1,35 +0,0 @@ -// WITH_STDLIB -// EXPECTED_REACHABLE_NODES: 1292 -// KT-60785 - -import kotlin.coroutines.* -import kotlin.coroutines.intrinsics.* - -value class SomeValue(val a: String) { - override fun toString() = when (a) { - "fa" -> "O" - "il" -> "K" - else -> "" - } -} - -suspend fun foo() = mapOf(SomeValue("fa") to SomeValue("il")) - -fun builder(c: suspend () -> Unit) { - c.startCoroutine(object : Continuation { - override val context = EmptyCoroutineContext - override fun resumeWith(result: Result) {} - }) -} - -fun box(): String { - var result = "" - - builder { - for ((k, v) in foo()) { - result += "$k$v" - } - } - - return result -}