From f75cf7fe9a70ec7041f758f061ac45deed18f4ab Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 17 Apr 2019 10:34:54 -0700 Subject: Fix if else JS printing when if body is a labelled block (#2017) Before, we'd print if (..) label: { .. }; else .. But that is wrong, as it ends the if too early. After this, we print if (..) label: { .. } else .. The bug was we checked if the if body was a block, but not if it was a labelled block. --- src/emscripten-optimizer/simple_ast.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/emscripten-optimizer/simple_ast.h b/src/emscripten-optimizer/simple_ast.h index f38377e70..777dfc77f 100644 --- a/src/emscripten-optimizer/simple_ast.h +++ b/src/emscripten-optimizer/simple_ast.h @@ -635,7 +635,10 @@ struct JSPrinter { } bool isBlock(Ref node) { - return node->isArray() && node[0] == BLOCK; + if (node->isArray() && node[0] == BLOCK) return true; + // Check for a label on a block + if (node->isArray() && node[0] == LABEL && isBlock(node[2])) return true; + return false; } bool isIf(Ref node) { -- cgit v1.2.3