@@ -3745,14 +3745,17 @@ Compressor.prototype.compress = function(node) {
|
||||
return true;
|
||||
}
|
||||
if (!(ab instanceof AST_LoopControl)) return false;
|
||||
if (jump && self instanceof AST_SwitchBranch) {
|
||||
if (self instanceof AST_SwitchBranch) {
|
||||
if (jump instanceof AST_Exit) {
|
||||
if (!in_lambda) return false;
|
||||
if (jump.value) return false;
|
||||
} else if (compressor.loopcontrol_target(jump) !== parent) {
|
||||
merge_jump = true;
|
||||
} else if (jump) {
|
||||
if (compressor.loopcontrol_target(jump) !== parent) return false;
|
||||
merge_jump = true;
|
||||
} else if (jump === false) {
|
||||
return false;
|
||||
}
|
||||
merge_jump = true;
|
||||
}
|
||||
var lct = compressor.loopcontrol_target(ab);
|
||||
if (ab instanceof AST_Continue) return match_target(loop_body(lct));
|
||||
@@ -3789,7 +3792,7 @@ Compressor.prototype.compress = function(node) {
|
||||
end = statements.lastIndexOf(stop);
|
||||
} else {
|
||||
stop = statements[end];
|
||||
if (stop !== jump) jump = null;
|
||||
if (stop !== jump) jump = false;
|
||||
}
|
||||
var tail = statements.splice(start, end - start).filter(function(stat) {
|
||||
if (stat instanceof AST_LambdaDefinition) {
|
||||
|
||||
@@ -126,6 +126,17 @@ function parse_test(file) {
|
||||
croak(node);
|
||||
}
|
||||
var name = node.left.name;
|
||||
assert.ok([
|
||||
"beautify",
|
||||
"expression",
|
||||
"mangle",
|
||||
"options",
|
||||
"rename",
|
||||
].indexOf(name) >= 0, tmpl("Unsupported setting {name} [{line},{col}]", {
|
||||
name: name,
|
||||
line: node.start.line,
|
||||
col: node.start.col,
|
||||
}));
|
||||
test[name] = evaluate(node.right);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2442,3 +2442,41 @@ issue_5649: {
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
}
|
||||
|
||||
issue_5688: {
|
||||
options = {
|
||||
conditionals: true,
|
||||
if_return: true,
|
||||
}
|
||||
input: {
|
||||
L: do {
|
||||
switch (console) {
|
||||
default:
|
||||
if (console)
|
||||
break;
|
||||
if (FAIL_1)
|
||||
;
|
||||
else
|
||||
break L;
|
||||
break;
|
||||
case 42:
|
||||
FAIL_2;
|
||||
}
|
||||
} while (console.log("PASS"));
|
||||
}
|
||||
expect: {
|
||||
L: do {
|
||||
switch (console) {
|
||||
default:
|
||||
if (console)
|
||||
break;
|
||||
if (FAIL_1)
|
||||
break;
|
||||
break L;
|
||||
case 42:
|
||||
FAIL_2;
|
||||
}
|
||||
} while (console.log("PASS"));
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user