Skip to content

Commit

Permalink
Fix support for JS destructuring in acorn optimizer pass
Browse files Browse the repository at this point in the history
  • Loading branch information
sbc100 committed Nov 6, 2023
1 parent 1375c03 commit 7c1bb63
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 4 deletions.
6 changes: 4 additions & 2 deletions test/optimizer/JSDCE-defaultArg-output.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
var usedAsDefaultArg = 42;

function g(a, b = usedAsDefaultArg) {
return a + b + 1;
var usedAsDefaultArg2 = [ 1, 2 ];

function g({notUsed: notUsed}, a, b = usedAsDefaultArg, [c, d] = usedAsDefaultArg2) {
return a + b + notUsed + 1;
}

Module["g"] = g;
5 changes: 3 additions & 2 deletions test/optimizer/JSDCE-defaultArg.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
var usedAsDefaultArg = 42;
var usedAsDefaultArg2 = [1,2];
var notUsed = 43;

// exported
function g(a, b = usedAsDefaultArg) {
return a+b+1;
function g({notUsed}, a, b = usedAsDefaultArg, [c, d] = usedAsDefaultArg2) {
return a+b+notUsed+1;
}

Module['g'] = g;
16 changes: 16 additions & 0 deletions tools/acorn-optimizer.js
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,22 @@ function runJSDCE(ast, aggressive) {
c(param.right);
param = param.left;
}
if (param.type === 'ArrayPattern') {
for (var elem of param.elements) {
const name = elem.name;
ensureData(scope, name).def = 1;
scope[name].param = 1;
}
return;
}
if (param.type === 'ObjectPattern') {
for (var prop of param.properties) {
const name = prop.key.name;
ensureData(scope, name).def = 1;
scope[name].param = 1;
}
return;
}
assert(param.type === 'Identifier', param.type);
const name = param.name;
ensureData(scope, name).def = 1;
Expand Down

0 comments on commit 7c1bb63

Please sign in to comment.