diff --git a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt index 62d84318dbe..e1244c1169d 100644 --- a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt +++ b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt @@ -669,9 +669,14 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) { FirLabelImpl(this@RawFirBuilder.session, expression, it.asString()) } val bodyExpression = literal.bodyExpression.toFirExpression("Lambda has no body") - if (destructuringBlock is FirBlock && bodyExpression is FirBlockImpl) { - for ((index, statement) in destructuringBlock.statements.withIndex()) { - bodyExpression.statements.add(index, statement) + if (bodyExpression is FirBlockImpl) { + if (bodyExpression.statements.isEmpty()) { + bodyExpression.statements.add(FirUnitExpression(this@RawFirBuilder.session, expression)) + } + if (destructuringBlock is FirBlock) { + for ((index, statement) in destructuringBlock.statements.withIndex()) { + bodyExpression.statements.add(index, statement) + } } } body = FirSingleExpressionBlock(this@RawFirBuilder.session, bodyExpression.toReturn()) diff --git a/compiler/fir/psi2fir/testData/rawBuilder/expressions/lambda.kt b/compiler/fir/psi2fir/testData/rawBuilder/expressions/lambda.kt index 9f9934e3e19..aa1505af1e2 100644 --- a/compiler/fir/psi2fir/testData/rawBuilder/expressions/lambda.kt +++ b/compiler/fir/psi2fir/testData/rawBuilder/expressions/lambda.kt @@ -26,4 +26,8 @@ fun bar(): Int { fun test(list: List) { val map = mutableMapOf() list.forEach { map.getOrPut(it, { mutableListOf() }) += "" } -} \ No newline at end of file +} + +val simple = { } + +val another = { 42 } \ No newline at end of file diff --git a/compiler/fir/psi2fir/testData/rawBuilder/expressions/lambda.txt b/compiler/fir/psi2fir/testData/rawBuilder/expressions/lambda.txt index ad20de869e7..15669f49995 100644 --- a/compiler/fir/psi2fir/testData/rawBuilder/expressions/lambda.txt +++ b/compiler/fir/psi2fir/testData/rawBuilder/expressions/lambda.txt @@ -81,3 +81,19 @@ FILE: lambda.kt } ) } + public? final? val simple: = fun .(): { + ^ { + Unit + } + + } + + public? get(): + public? final? val another: = fun .(): { + ^ { + Int(42) + } + + } + + public? get():