Control-flow analysis: do-while scope is ended after condition but before jump #KT-15334 Fixed
This commit is contained in:
@@ -734,6 +734,7 @@ class ControlFlowProcessor(private val trace: BindingTrace) {
|
||||
builder.bindLabel(loopInfo.conditionEntryPoint)
|
||||
val condition = expression.condition
|
||||
generateInstructions(condition)
|
||||
builder.exitBlockScope(expression)
|
||||
if (!CompileTimeConstantUtils.canBeReducedToBooleanConstant(condition, trace.bindingContext, true)) {
|
||||
builder.jumpOnTrue(loopInfo.entryPoint, expression, builder.getBoundValue(expression.condition))
|
||||
}
|
||||
@@ -744,7 +745,6 @@ class ControlFlowProcessor(private val trace: BindingTrace) {
|
||||
}
|
||||
builder.bindLabel(loopInfo.exitPoint)
|
||||
builder.loadUnit(expression)
|
||||
builder.exitBlockScope(expression)
|
||||
}
|
||||
|
||||
override fun visitForExpression(expression: KtForExpression) {
|
||||
|
||||
Reference in New Issue
Block a user