do not reset current flow after processing finally block if it was unreachable (#11310)

* do not reset current flow after processing finally block if it was unreachable

* fix tests
This commit is contained in:
Vladimir Matveev
2016-10-03 11:03:28 -07:00
committed by GitHub
parent 9afb07de5a
commit 4800464ed6
5 changed files with 88 additions and 1 deletions

View File

@@ -964,7 +964,11 @@ namespace ts {
currentFlow = preTryFlow;
bind(node.finallyBlock);
}
currentFlow = finishFlowLabel(postFinallyLabel);
// if try statement has finally block and flow after finally block is unreachable - keep it
// otherwise use whatever flow was accumulated at postFinallyLabel
if (!node.finallyBlock || !(currentFlow.flags & FlowFlags.Unreachable)) {
currentFlow = finishFlowLabel(postFinallyLabel);
}
}
function bindSwitchStatement(node: SwitchStatement): void {