fix corner case in collapse_vars (#4946)

This commit is contained in:
Alex Lam S.L
2021-05-19 22:11:39 +01:00
committed by GitHub
parent d930c705f6
commit d6152e6a76
3 changed files with 37 additions and 2 deletions

View File

@@ -1911,7 +1911,8 @@ merge(Compressor.prototype, {
if (!--replaced) abort = true; if (!--replaced) abort = true;
if (is_lhs(node, multi_replacer.parent())) return node; if (is_lhs(node, multi_replacer.parent())) return node;
var ref = rvalue.clone(); var ref = rvalue.clone();
value_def.references.push(ref); ref.scope = node.scope;
ref.reference();
if (replaced == assign_pos) { if (replaced == assign_pos) {
abort = true; abort = true;
return make_node(AST_Assign, candidate, { return make_node(AST_Assign, candidate, {

View File

@@ -9245,3 +9245,37 @@ issue_4935: {
} }
expect_stdout: "1 0" expect_stdout: "1 0"
} }
inline_throw: {
options = {
collapse_vars: true,
inline: true,
keep_fargs: false,
unused: true,
}
input: {
try {
(function() {
return function(a) {
return function(b) {
throw b;
}(a);
};
})()("PASS");
} catch (e) {
console.log(e);
}
}
expect: {
try {
(function(a) {
return function() {
throw a;
}();
})("PASS");
} catch (e) {
console.log(e);
}
}
expect_stdout: "PASS"
}

View File

@@ -46,7 +46,7 @@ module.exports = function reduce_test(testcase, minify_options, reduce_options)
if (verbose) { if (verbose) {
log("// Node.js " + process.version + " on " + os.platform() + " " + os.arch()); log("// Node.js " + process.version + " on " + os.platform() + " " + os.arch());
} }
if (differs.error && [ "DefaultsError", "SyntaxError" ].indexOf(differs.error.name) < 0) { if (differs && differs.error && [ "DefaultsError", "SyntaxError" ].indexOf(differs.error.name) < 0) {
test_for_diff = test_minify; test_for_diff = test_minify;
differs = test_for_diff(testcase, minify_options, result_cache, max_timeout); differs = test_for_diff(testcase, minify_options, result_cache, max_timeout);
} }