diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java index 0438cd948c5..7d515a3582d 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java @@ -10249,6 +10249,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr runTest("compiler/testData/codegen/box/coroutines/defaultParametersInSuspendWithJvmOverloads.kt"); } + @Test + @TestMetadata("defaultParamterLambdaInSuspend.kt") + public void testDefaultParamterLambdaInSuspend() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt"); + } + @Test @TestMetadata("delegatedSuspendMember.kt") public void testDelegatedSuspendMember() throws Exception { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java index 37e68ac92dd..a361cc66380 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java @@ -10249,6 +10249,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo runTest("compiler/testData/codegen/box/coroutines/defaultParametersInSuspendWithJvmOverloads.kt"); } + @Test + @TestMetadata("defaultParamterLambdaInSuspend.kt") + public void testDefaultParamterLambdaInSuspend() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt"); + } + @Test @TestMetadata("delegatedSuspendMember.kt") public void testDelegatedSuspendMember() throws Exception { diff --git a/compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt b/compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt new file mode 100644 index 00000000000..6386e84b5cb --- /dev/null +++ b/compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt @@ -0,0 +1,71 @@ +// WITH_STDLIB +// WITH_COROUTINES + +// lowered IR can be dependent on file order here, so we will test both + +// FILE: A.kt + +import helpers.* +import kotlin.coroutines.* +import kotlin.coroutines.intrinsics.* + +class Controller1 { + suspend fun suspendHere(block : () -> String = { "DEF" }): String = suspendCoroutineUninterceptedOrReturn { x -> + x.resume(block()) + COROUTINE_SUSPENDED + } +} + +fun builder1(c: suspend Controller1.() -> Unit) { + c.startCoroutine(Controller1(), EmptyContinuation) +} + +// FILE: B.kt + +import helpers.* +import kotlin.coroutines.* +import kotlin.coroutines.intrinsics.* + +fun box(): String { + var result = "FAIL 1" + + builder1 { + if (suspendHere() != "DEF") { + result = "FAIL" + return@builder1 + } + result = suspendHere { "OK" } + } + if (result != "OK") return result + result = "FAIL 2" + + builder2 { + if (suspendHere() != "DEF") { + result = "FAIL" + return@builder2 + } + result = suspendHere { "OK" } + } + + return result +} + +// FILE: C.kt + +import helpers.* +import kotlin.coroutines.* +import kotlin.coroutines.intrinsics.* + + +class Controller2 { + suspend fun suspendHere(block : () -> String = { "DEF" }): String = suspendCoroutineUninterceptedOrReturn { x -> + x.resume(block()) + COROUTINE_SUSPENDED + } +} + +fun builder2(c: suspend Controller2.() -> Unit) { + c.startCoroutine(Controller2(), EmptyContinuation) +} + + diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index 801e5268d39..237bd1760e5 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -10009,6 +10009,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/coroutines/defaultParametersInSuspendWithJvmOverloads.kt"); } + @Test + @TestMetadata("defaultParamterLambdaInSuspend.kt") + public void testDefaultParamterLambdaInSuspend() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt"); + } + @Test @TestMetadata("delegatedSuspendMember.kt") public void testDelegatedSuspendMember() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 6c9db954504..adf1e2e8814 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -10249,6 +10249,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/coroutines/defaultParametersInSuspendWithJvmOverloads.kt"); } + @Test + @TestMetadata("defaultParamterLambdaInSuspend.kt") + public void testDefaultParamterLambdaInSuspend() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt"); + } + @Test @TestMetadata("delegatedSuspendMember.kt") public void testDelegatedSuspendMember() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java index 28fadf899c1..fb4b983f21f 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java @@ -10249,6 +10249,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack runTest("compiler/testData/codegen/box/coroutines/defaultParametersInSuspendWithJvmOverloads.kt"); } + @Test + @TestMetadata("defaultParamterLambdaInSuspend.kt") + public void testDefaultParamterLambdaInSuspend() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt"); + } + @Test @TestMetadata("delegatedSuspendMember.kt") public void testDelegatedSuspendMember() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index a4017ff24a3..e851df35793 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -7877,6 +7877,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/coroutines/defaultParametersInSuspendWithJvmOverloads.kt"); } + @TestMetadata("defaultParamterLambdaInSuspend.kt") + public void testDefaultParamterLambdaInSuspend() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt"); + } + @TestMetadata("delegatedSuspendMember.kt") public void testDelegatedSuspendMember() throws Exception { runTest("compiler/testData/codegen/box/coroutines/delegatedSuspendMember.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java index a8196aefad0..7f0bcedf021 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java @@ -7029,6 +7029,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/defaultParametersInSuspend.kt"); } + @Test + @TestMetadata("defaultParamterLambdaInSuspend.kt") + public void testDefaultParamterLambdaInSuspend() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt"); + } + @Test @TestMetadata("delegatedSuspendMember.kt") public void testDelegatedSuspendMember() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java index 8cb6bab19fd..3330613873a 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java @@ -7125,6 +7125,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/defaultParametersInSuspend.kt"); } + @Test + @TestMetadata("defaultParamterLambdaInSuspend.kt") + public void testDefaultParamterLambdaInSuspend() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt"); + } + @Test @TestMetadata("delegatedSuspendMember.kt") public void testDelegatedSuspendMember() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java index a1b949e96f8..5d702221bdb 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java @@ -7125,6 +7125,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/defaultParametersInSuspend.kt"); } + @Test + @TestMetadata("defaultParamterLambdaInSuspend.kt") + public void testDefaultParamterLambdaInSuspend() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt"); + } + @Test @TestMetadata("delegatedSuspendMember.kt") public void testDelegatedSuspendMember() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java index 4d02c3a80a3..e30d404eafc 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java @@ -7125,6 +7125,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes runTest("compiler/testData/codegen/box/coroutines/defaultParametersInSuspend.kt"); } + @Test + @TestMetadata("defaultParamterLambdaInSuspend.kt") + public void testDefaultParamterLambdaInSuspend() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt"); + } + @Test @TestMetadata("delegatedSuspendMember.kt") public void testDelegatedSuspendMember() throws Exception { diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt index 261fc7ec307..90aea26deef 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt @@ -316,6 +316,12 @@ private class DeclarationsGeneratorVisitor(override val generationState: NativeG return KotlinObjCClassLlvmDeclarations(classInfoGlobal, bodyOffsetGlobal) } + override fun visitValueParameter(declaration: IrValueParameter) { + // In some cases because of inconsistencies of previous lowerings, default values can be not removed. + // If they contain class or function, they would not be processed by code generator + // So we are skipping them here too. + } + private tailrec fun gcd(a: Long, b: Long) : Long = if (b == 0L) a else gcd(b, a % b) override fun visitField(declaration: IrField) { @@ -392,6 +398,9 @@ private class DeclarationsGeneratorVisitor(override val generationState: NativeG else -> LLVMLinkage.LLVMInternalLinkage } val proto = LlvmFunctionProto(declaration, symbolName, this, linkage) + context.log { + "Creating llvm function ${symbolName} for ${declaration.render()}" + } proto.createLlvmFunction(context, llvm.module) } diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/K2NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/K2NativeCodegenBoxTestGenerated.java index b4a3ab118d0..f3841c170ee 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/K2NativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/K2NativeCodegenBoxTestGenerated.java @@ -8082,6 +8082,12 @@ public class K2NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTes runTest("compiler/testData/codegen/box/coroutines/defaultParametersInSuspend.kt"); } + @Test + @TestMetadata("defaultParamterLambdaInSuspend.kt") + public void testDefaultParamterLambdaInSuspend() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt"); + } + @Test @TestMetadata("delegatedSuspendMember.kt") public void testDelegatedSuspendMember() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java index 792fdb65e52..c931f4f308c 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java @@ -7993,6 +7993,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest runTest("compiler/testData/codegen/box/coroutines/defaultParametersInSuspend.kt"); } + @Test + @TestMetadata("defaultParamterLambdaInSuspend.kt") + public void testDefaultParamterLambdaInSuspend() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt"); + } + @Test @TestMetadata("delegatedSuspendMember.kt") public void testDelegatedSuspendMember() throws Exception { diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/IrCodegenBoxWasmTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/IrCodegenBoxWasmTestGenerated.java index 84c2cfcfd1e..6b859a916df 100644 --- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/IrCodegenBoxWasmTestGenerated.java +++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/IrCodegenBoxWasmTestGenerated.java @@ -6272,6 +6272,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest runTest("compiler/testData/codegen/box/coroutines/defaultParametersInSuspend.kt"); } + @TestMetadata("defaultParamterLambdaInSuspend.kt") + public void testDefaultParamterLambdaInSuspend() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/defaultParamterLambdaInSuspend.kt"); + } + @TestMetadata("delegatedSuspendMember.kt") public void testDelegatedSuspendMember() throws Exception { runTest("compiler/testData/codegen/box/coroutines/delegatedSuspendMember.kt");