From 933e0984396b1f940cdb6b2791448f5792e25735 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Tue, 5 Dec 2023 10:12:31 -0800 Subject: [PATCH] Fix js-optimizer crash on empty array destructuring element Followup to #20835. Fixes: #20818 --- test/optimizer/JSDCE-objectPattern-output.js | 2 +- test/optimizer/JSDCE-objectPattern.js | 2 +- tools/acorn-optimizer.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/optimizer/JSDCE-objectPattern-output.js b/test/optimizer/JSDCE-objectPattern-output.js index 42e4892c4ce80..7aa8f6136f2fb 100644 --- a/test/optimizer/JSDCE-objectPattern-output.js +++ b/test/optimizer/JSDCE-objectPattern-output.js @@ -5,7 +5,7 @@ let z = 50; globalThis.f = function(r) { let {a: a, b: b} = r; let {z: c} = r; - let [i, {foo: p, bar: q}] = r; + let [, i, {foo: p, bar: q}] = r; return g(a, b, c, d, z); }; diff --git a/test/optimizer/JSDCE-objectPattern.js b/test/optimizer/JSDCE-objectPattern.js index 3b7899f4cc419..934791538ab69 100644 --- a/test/optimizer/JSDCE-objectPattern.js +++ b/test/optimizer/JSDCE-objectPattern.js @@ -13,7 +13,7 @@ let z = 50; globalThis.f = function(r) { let { a, b } = r; let { z: c } = r; - let [i, {foo : p, bar : q}] = r; + let [/*empty*/, i, {foo : p, bar : q}] = r; return g(a, b, c, d, z); }; diff --git a/tools/acorn-optimizer.js b/tools/acorn-optimizer.js index 7429fbef412d1..4edaec54ba5ec 100755 --- a/tools/acorn-optimizer.js +++ b/tools/acorn-optimizer.js @@ -433,7 +433,7 @@ function runJSDCE(ast, aggressive) { } } else if (id.type === 'ArrayPattern') { for (const elem of id.elements) { - traverse(elem); + if (elem) traverse(elem); } } else { assertAt(id.type === 'Identifier', id, `expected Indentifier but found ${id.type}`);