8000 prep: add rename_arg · terser/terser@247abce · GitHub
[go: up one dir, main page]

Skip to content

Commit 247abce

Browse files
committed
prep: add rename_arg
1 parent 208e584 commit 247abce

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

lib/compress/index.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5603,15 +5603,31 @@ def_optimize(AST_Call, function(self, compressor) {
56035603
if (has_flag(arg, UNUSED)) continue;
56045604
if (!safe_to_inject
56055605
|| block_scoped.has(arg.name)
5606-
|| identifier_atom.has(arg.name)
5607-
|| scope.conflicting_def(arg.name)) {
5606+
|| identifier_atom.has(arg.name)) {
56085607
return false;
56095608
}
5609+
if (scope.conflicting_def(arg.name)) {
5610+
rename_arg(arg);
5611+
}
56105612
if (in_loop) in_loop.push(arg.definition());
56115613
}
56125614
return true;
56135615
}
56145616

5617+
function rename_arg(arg) {
5618+
const newArgName = fn.create_symbol(AST_SymbolFunarg, {
5619+
source: fn,
5620+
scope: fn,
5621+
tentative_name: "argument_" + fn.argnames.length,
5622+
});
5623+
walk(fn, (node) => {
5624+
if (node instanceof AST_SymbolRef && node.thedef.name === arg.name) {
5625+
node.thedef.name = newArgName;
5626+
}
5627+
return node;
5628+
});
5629+
}
5630+
56155631
function can_inject_vars(block_scoped, safe_to_inject) {
56165632
var len = fn.body.length;
56175633
for (var i = 0; i < len; i++) {

test/compress.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ function log_test(name) {
6161

6262
function find_test_files(dir) {
6363
var files = fs.readdirSync(dir).filter(function(name) {
64-
return /\.js$/i.test(name);
64+
return /toplevel-pure-method\.js$/i.test(name);
6565
});
6666
if (process.argv.length > 2) {
6767
var x = process.argv.slice(2);

test/compress/toplevel-pure-method.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ inline_different_name: {
4545
}
4646
}
4747

48-
// TODO:
4948
rename_and_inline: {
5049
options = {
5150
toplevel: true,

0 commit comments

Comments
 (0)
0