diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt index d58b750882d..9669f2ee72a 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt @@ -65,7 +65,7 @@ fun FirAnonymousFunction.addReturnToLastStatementIfNeeded() { if (lastStatement is FirReturnExpression) return val returnType = (body.typeRef as? FirResolvedTypeRef) ?: return - if (returnType.isNothing || returnType.isUnit) return + if (returnType.isNothing) return val returnTarget = FirFunctionTarget(null, isLambda = isLambda).also { it.bind(this) } val returnExpression = buildReturnExpression { diff --git a/compiler/testData/debug/localVariables/suspend/mergeLvt.kt b/compiler/testData/debug/localVariables/suspend/mergeLvt.kt index b0ce4085bae..9bf4f6fc371 100644 --- a/compiler/testData/debug/localVariables/suspend/mergeLvt.kt +++ b/compiler/testData/debug/localVariables/suspend/mergeLvt.kt @@ -43,7 +43,11 @@ suspend fun box() { // test.kt:16 box: $continuation:kotlin.coroutines.Continuation=TestKt$box$1, $result:java.lang.Object=null, $i$f$suspendBar:int=0:int, $this$extensionFun$iv$iv:AtomicInt=AtomicInt, $i$f$extensionFun:int=0:int // test.kt:20 box: $continuation:kotlin.coroutines.Continuation=TestKt$box$1, $result:java.lang.Object=null, $i$f$suspendBar:int=0:int // test.kt:21 box: $continuation:kotlin.coroutines.Continuation=TestKt$box$1, $result:java.lang.Object=null, $i$f$suspendBar:int=0:int, $i$a$-suspendCoroutineUninterceptedOrReturn-TestKt$suspendBar$2$iv:int=0:int + +// EXPECTATIONS ClassicFrontend JVM JVM_IR // test.kt:22 box: $continuation:kotlin.coroutines.Continuation=TestKt$box$1, $result:java.lang.Object=null, $i$f$suspendBar:int=0:int, $i$a$-suspendCoroutineUninterceptedOrReturn-TestKt$suspendBar$2$iv:int=0:int + +// EXPECTATIONS ClassicFrontend FIR JVM JVM_IR // test.kt:20 box: $continuation:kotlin.coroutines.Continuation=TestKt$box$1, $result:java.lang.Object=null, $i$f$suspendBar:int=0:int // test.kt:23 box: $continuation:kotlin.coroutines.Continuation=TestKt$box$1, $result:java.lang.Object=null, $i$f$suspendBar:int=0:int // test.kt:26 box: $continuation:kotlin.coroutines.Continuation=TestKt$box$1, $result:java.lang.Object=null diff --git a/compiler/testData/ir/irText/lambdas/lambdaReturningUnit.fir.ir.txt b/compiler/testData/ir/irText/lambdas/lambdaReturningUnit.fir.ir.txt index a3963177d69..de94d045322 100644 --- a/compiler/testData/ir/irText/lambdas/lambdaReturningUnit.fir.ir.txt +++ b/compiler/testData/ir/irText/lambdas/lambdaReturningUnit.fir.ir.txt @@ -11,4 +11,5 @@ FILE fqName: fileName:/lambdaReturningUnit.kt block: FUN_EXPR type=kotlin.Function0 origin=LAMBDA FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> () returnType:kotlin.Any? BLOCK_BODY - GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit + RETURN type=kotlin.Nothing from='local final fun (): kotlin.Any? declared in .box' + GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit diff --git a/compiler/testData/ir/irText/lambdas/lambdaReturningUnit.fir.kt.txt b/compiler/testData/ir/irText/lambdas/lambdaReturningUnit.fir.kt.txt index 0d430a654ee..7f77b344a30 100644 --- a/compiler/testData/ir/irText/lambdas/lambdaReturningUnit.fir.kt.txt +++ b/compiler/testData/ir/irText/lambdas/lambdaReturningUnit.fir.kt.txt @@ -4,7 +4,7 @@ inline fun flaf(block: Function0) { suspend fun box() { flaf(block = local fun (): Any? { - Unit + return Unit } ) } diff --git a/js/js.translator/testData/box/expression/function/lambdaReturnValue.kt b/js/js.translator/testData/box/expression/function/lambdaReturnValue.kt index 7624991cdf7..9809cce2756 100644 --- a/js/js.translator/testData/box/expression/function/lambdaReturnValue.kt +++ b/js/js.translator/testData/box/expression/function/lambdaReturnValue.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_K2: JS_IR // EXPECTED_REACHABLE_NODES: 1285 fun rawReturnValue(fn: () -> T): Any {