diff --git a/internal/js_parser/js_parser.go b/internal/js_parser/js_parser.go index 024509bf088..515915f6976 100644 --- a/internal/js_parser/js_parser.go +++ b/internal/js_parser/js_parser.go @@ -6776,6 +6776,9 @@ func (p *parser) mangleStmts(stmts []js_ast.Stmt, kind stmtsKind) []js_ast.Stmt } } result = appendIfBodyPreservingScope(result, stmt) + if isJumpStatement(stmt.Data) { + isControlFlowDead = true + } continue } } diff --git a/internal/js_parser/js_parser_test.go b/internal/js_parser/js_parser_test.go index 828fdc38821..cab2fcbba57 100644 --- a/internal/js_parser/js_parser_test.go +++ b/internal/js_parser/js_parser_test.go @@ -2723,6 +2723,8 @@ func TestMangleReturn(t *testing.T) { expectPrintedMangle(t, "if (!!a) return b(); return c()", "return a ? b() : c();\n") expectPrintedMangle(t, "if (!!!a) return b(); return c()", "return a ? c() : b();\n") + expectPrintedMangle(t, "if (a) return b; else return c; return d;\n", "return a ? b : c;\n") + // Optimize implicit return expectPrintedMangle(t, "function x() { if (y) return; z(); }", "function x() {\n y || z();\n}\n") expectPrintedMangle(t, "function x() { if (y) return; else z(); w(); }", "function x() {\n y || (z(), w());\n}\n")