@@ -3745,14 +3745,17 @@ Compressor.prototype.compress = function(node) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (!(ab instanceof AST_LoopControl)) return false;
|
if (!(ab instanceof AST_LoopControl)) return false;
|
||||||
if (jump && self instanceof AST_SwitchBranch) {
|
if (self instanceof AST_SwitchBranch) {
|
||||||
if (jump instanceof AST_Exit) {
|
if (jump instanceof AST_Exit) {
|
||||||
if (!in_lambda) return false;
|
if (!in_lambda) return false;
|
||||||
if (jump.value) 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;
|
return false;
|
||||||
}
|
}
|
||||||
merge_jump = true;
|
|
||||||
}
|
}
|
||||||
var lct = compressor.loopcontrol_target(ab);
|
var lct = compressor.loopcontrol_target(ab);
|
||||||
if (ab instanceof AST_Continue) return match_target(loop_body(lct));
|
if (ab instanceof AST_Continue) return match_target(loop_body(lct));
|
||||||
@@ -3789,7 +3792,7 @@ Compressor.prototype.compress = function(node) {
|
|||||||
end = statements.lastIndexOf(stop);
|
end = statements.lastIndexOf(stop);
|
||||||
} else {
|
} else {
|
||||||
stop = statements[end];
|
stop = statements[end];
|
||||||
if (stop !== jump) jump = null;
|
if (stop !== jump) jump = false;
|
||||||
}
|
}
|
||||||
var tail = statements.splice(start, end - start).filter(function(stat) {
|
var tail = statements.splice(start, end - start).filter(function(stat) {
|
||||||
if (stat instanceof AST_LambdaDefinition) {
|
if (stat instanceof AST_LambdaDefinition) {
|
||||||
|
|||||||
@@ -126,6 +126,17 @@ function parse_test(file) {
|
|||||||
croak(node);
|
croak(node);
|
||||||
}
|
}
|
||||||
var name = node.left.name;
|
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);
|
test[name] = evaluate(node.right);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2442,3 +2442,41 @@ issue_5649: {
|
|||||||
}
|
}
|
||||||
expect_stdout: "PASS"
|
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