diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt index d3861a5c24f..ec4cefad648 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt @@ -1014,8 +1014,8 @@ internal class Fir2IrVisitor( ).apply { loopMap[doWhileLoop] = this label = doWhileLoop.label?.name - condition = doWhileLoop.condition.toIrExpression() body = doWhileLoop.block.convertToIrExpressionOrBlock() + condition = doWhileLoop.condition.toIrExpression() loopMap.remove(doWhileLoop) } } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirDoWhileLoopImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirDoWhileLoopImpl.kt index 1bfc062e315..22f8af2d65a 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirDoWhileLoopImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirDoWhileLoopImpl.kt @@ -6,7 +6,19 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.expressions.FirDoWhileLoop import org.jetbrains.kotlin.fir.expressions.FirExpression +import org.jetbrains.kotlin.fir.transformInplace +import org.jetbrains.kotlin.fir.transformSingle +import org.jetbrains.kotlin.fir.visitors.FirTransformer -class FirDoWhileLoopImpl(psi: PsiElement?, condition: FirExpression) : FirAbstractLoop(psi, condition), FirDoWhileLoop \ No newline at end of file +class FirDoWhileLoopImpl(psi: PsiElement?, condition: FirExpression) : FirAbstractLoop(psi, condition), FirDoWhileLoop { + override fun transformChildren(transformer: FirTransformer, data: D): FirElement { + block = block.transformSingle(transformer, data) + condition = condition.transformSingle(transformer, data) + label = label?.transformSingle(transformer, data) + annotations.transformInplace(transformer, data) + return this + } +} \ No newline at end of file diff --git a/compiler/testData/ir/irText/declarations/localVarInDoWhile.fir.txt b/compiler/testData/ir/irText/declarations/localVarInDoWhile.fir.txt index c8c4dfcdfeb..75009f307f7 100644 --- a/compiler/testData/ir/irText/declarations/localVarInDoWhile.fir.txt +++ b/compiler/testData/ir/irText/declarations/localVarInDoWhile.fir.txt @@ -7,5 +7,5 @@ FILE fqName: fileName:/localVarInDoWhile.kt CONST Int type=kotlin.Int value=42 condition: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ - arg0: ERROR_CALL 'Unresolved reference: #' type=IrErrorType + arg0: GET_VAR 'val x: kotlin.Int [val] declared in .foo' type=kotlin.Int origin=null arg1: CONST Int type=kotlin.Unit value=42