Skip to content

Commit

Permalink
fix corner cases in inline
Browse files Browse the repository at this point in the history
fixes #5263
fixes #5264
  • Loading branch information
alexlamsl committed Jan 4, 2022
1 parent 2f568b9 commit 97fc336
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 1 deletion.
3 changes: 2 additions & 1 deletion lib/compress.js
Original file line number Diff line number Diff line change
Expand Up @@ -12999,14 +12999,15 @@ Compressor.prototype.compress = function(node) {
});
var body = [];
fn.variables.each(function(def, name) {
if (name == "arguments") return;
names.set(name, true);
scope.enclosed.push(def);
scope.variables.set(name, def);
def.single_use = false;
if (!in_loop) return;
if (fn.functions.has(name) && def.orig.length == 1) return;
if (def.references.length == def.replaced) return;
if (!all(def.orig, function(sym) {
if (def.scope.resolve() === fn && !all(def.orig, function(sym) {
return !(sym instanceof AST_SymbolConst
|| sym instanceof AST_SymbolFunarg
|| sym instanceof AST_SymbolLet);
Expand Down
102 changes: 102 additions & 0 deletions test/compress/functions.js
Original file line number Diff line number Diff line change
Expand Up @@ -7875,3 +7875,105 @@ issue_5254_2: {
"undefined",
]
}

issue_5263: {
options = {
inline: true,
side_effects: true,
toplevel: true,
}
input: {
for (var i = 0; i < 2; i++) (function() {
while (console.log(i));
(function(a) {
console.log(a) && a,
a++;
})();
})();
}
expect: {
for (var i = 0; i < 2; i++) {
a = void 0;
while (console.log(i));
console.log(a),
a++;
var a;
}
}
expect_stdout: [
"0",
"undefined",
"1",
"undefined",
]
}

issue_5264_1: {
options = {
if_return: true,
inline: true,
reduce_vars: true,
unused: true,
}
input: {
console.log(function() {
function f(arguments) {
console.log(arguments);
(function() {
while (console.log("foo"));
})();
}
f("bar");
return arguments;
}("baz")[0]);
}
expect: {
console.log(function() {
(function(arguments) {
console.log(arguments);
while (console.log("foo"));
})("bar");
return arguments;
}("baz")[0]);
}
expect_stdout: [
"bar",
"foo",
"baz",
]
}

issue_5264_2: {
options = {
inline: true,
reduce_vars: true,
side_effects: true,
unused: true,
}
input: {
console.log(function() {
function f(arguments) {
console.log(arguments);
(function() {
while (console.log("foo"));
})();
}
f("bar");
return arguments;
}("baz")[0]);
}
expect: {
console.log(function() {
(function(arguments) {
console.log(arguments);
while (console.log("foo"));
})("bar");
return arguments;
}("baz")[0]);
}
expect_stdout: [
"bar",
"foo",
"baz",
]
}

0 comments on commit 97fc336

Please sign in to comment.