Refactoring: ControlFlowInstructionsGenerator.handleJumpInsideTryFinally

This commit is contained in:
Mikhail Glukhikh
2016-04-20 15:10:26 +03:00
parent d24528f6bb
commit 6980d28eb0
@@ -200,18 +200,15 @@ class ControlFlowInstructionsGenerator : ControlFlowBuilderAdapter() {
private fun handleJumpInsideTryFinally(jumpTarget: Label) { private fun handleJumpInsideTryFinally(jumpTarget: Label) {
val finallyBlocks = ArrayList<TryFinallyBlockInfo>() val finallyBlocks = ArrayList<TryFinallyBlockInfo>()
for (i in allBlocks.indices.reversed()) { for (blockInfo in allBlocks.asReversed()) {
val blockInfo = allBlocks[i] when (blockInfo) {
if (blockInfo is BreakableBlockInfo) { is BreakableBlockInfo -> if (blockInfo.referablePoints.contains(jumpTarget) || jumpTarget === error) {
if (blockInfo.referablePoints.contains(jumpTarget) || jumpTarget === error) { for (finallyBlockInfo in finallyBlocks) {
for (j in finallyBlocks.indices) { finallyBlockInfo.generateFinallyBlock()
finallyBlocks[j].generateFinallyBlock()
} }
break return
} }
} is TryFinallyBlockInfo -> finallyBlocks.add(blockInfo)
else if (blockInfo is TryFinallyBlockInfo) {
finallyBlocks.add(blockInfo)
} }
} }
} }