diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java index b217df045da..04df878fdb3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java @@ -33,6 +33,8 @@ public interface JetControlFlowBuilder { // General label management @NotNull Label createUnboundLabel(); + @NotNull + Label createUnboundLabel(@NotNull String name); void bindLabel(@NotNull Label label); void allowDead(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java index d80fb19074f..05f837a3566 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java @@ -48,6 +48,13 @@ public class JetControlFlowBuilderAdapter implements JetControlFlowBuilder { return builder.createUnboundLabel(); } + @NotNull + @Override + public Label createUnboundLabel(@NotNull String name) { + assert builder != null; + return builder.createUnboundLabel(name); + } + @Override public void bindLabel(@NotNull Label label) { assert builder != null; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java index 068a4552f39..8ece537a383 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java @@ -368,26 +368,26 @@ public class JetControlFlowProcessor { final boolean hasCatches = !catchClauses.isEmpty(); Label onException = null; if (hasCatches) { - onException = builder.createUnboundLabel(); + onException = builder.createUnboundLabel("onException"); builder.nondeterministicJump(onException); } Label onExceptionToFinallyBlock = null; if (finallyBlock != null) { - onExceptionToFinallyBlock = builder.createUnboundLabel(); + onExceptionToFinallyBlock = builder.createUnboundLabel("onExceptionToFinallyBlock"); builder.nondeterministicJump(onExceptionToFinallyBlock); } value(expression.getTryBlock(), inCondition); if (hasCatches) { builder.allowDead(); - Label afterCatches = builder.createUnboundLabel(); + Label afterCatches = builder.createUnboundLabel("afterCatches"); builder.jump(afterCatches); builder.bindLabel(onException); LinkedList