changeset 477:8280e6bfafc0

"else break" decl split test was insufficient Was only testing the if-else block, but e.g. an outer decl could start before and end in the else clause to be split but not detected (maybe depending on the exact configuration of the split test)
author tehtmi
date Thu, 06 Jan 2022 23:28:47 -0800
parents de789ec7a77e
children 42bb160e9ea7
files src/unluac/decompile/ControlFlowHandler.java
diffstat 1 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/unluac/decompile/ControlFlowHandler.java	Thu Jan 06 22:33:00 2022 -0800
+++ b/src/unluac/decompile/ControlFlowHandler.java	Thu Jan 06 23:28:47 2022 -0800
@@ -991,7 +991,9 @@
               state.resolved[hanger.targetSecond] == state.resolved[breakable.end]
               && line + 1 < state.branches.length && state.branches[line + 1] != null
               && state.branches[line + 1].targetFirst == hanger.targetSecond
-              && !splits_decl(hanger.line, hanger.targetFirst, b.line, declList)
+              && !splits_decl(hanger.line, hanger.targetFirst, b.line, declList) // if else
+              && !splits_decl(b.line, b.line + 1, b.line + 2, declList) // else break
+              && !splits_decl(hanger.line, hanger.targetFirst, b.line + 2, declList) // full
             ) {
               // resolve intervening hangers
               for(int j = i; j > 0; j--) {