KT-1436 Allow break/continue in inlined lambdas
This commit is contained in:
committed by
teamcity
parent
ba7df005a1
commit
8ba80b4b7b
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrLoop
|
||||
import org.jetbrains.kotlin.ir.util.DeepCopyIrTreeWithSymbols
|
||||
import org.jetbrains.kotlin.ir.util.DeepCopySymbolRemapper
|
||||
import org.jetbrains.kotlin.ir.util.DeepCopyTypeRemapper
|
||||
@@ -19,12 +18,5 @@ fun <T : IrElement> T.deepCopyWithVariables(): T {
|
||||
|
||||
val typesRemapper = DeepCopyTypeRemapper(symbolsRemapper)
|
||||
|
||||
return this.transform(
|
||||
object : DeepCopyIrTreeWithSymbols(symbolsRemapper, typesRemapper) {
|
||||
override fun getNonTransformedLoop(irLoop: IrLoop): IrLoop {
|
||||
return irLoop
|
||||
}
|
||||
},
|
||||
null
|
||||
) as T
|
||||
return this.transform(DeepCopyIrTreeWithSymbols(symbolsRemapper, typesRemapper), null) as T
|
||||
}
|
||||
|
||||
@@ -738,10 +738,7 @@ open class DeepCopyIrTreeWithSymbols(
|
||||
private val transformedLoops = HashMap<IrLoop, IrLoop>()
|
||||
|
||||
private fun getTransformedLoop(irLoop: IrLoop): IrLoop =
|
||||
transformedLoops.getOrElse(irLoop) { getNonTransformedLoop(irLoop) }
|
||||
|
||||
protected open fun getNonTransformedLoop(irLoop: IrLoop): IrLoop =
|
||||
throw AssertionError("Outer loop was not transformed: ${irLoop.render()}")
|
||||
transformedLoops.getOrDefault(irLoop, irLoop)
|
||||
|
||||
override fun visitWhileLoop(loop: IrWhileLoop): IrWhileLoop =
|
||||
IrWhileLoopImpl(loop.startOffset, loop.endOffset, loop.type.remapType(), mapStatementOrigin(loop.origin)).also { newLoop ->
|
||||
|
||||
Reference in New Issue
Block a user