Skip to content

Commit 149a38d

Browse files
committed
feature: @putout/plugin-variables: remove-unused: ArrayPattern: filter before check
1 parent 9e149c0 commit 149a38d

File tree

5 files changed

+15
-1
lines changed

5 files changed

+15
-1
lines changed

packages/plugin-variables/lib/remove-unused/fixture/array-pattern-fix.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ const [c] = array;
55
console.log(c);
66

77
const [] = array;
8+
9+
filter(([, v]) => v);

packages/plugin-variables/lib/remove-unused/fixture/array-pattern.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ console.log(c);
66

77
const [z] = array;
88

9+
filter(([k, v]) => v);

packages/plugin-variables/lib/remove-unused/get-vars.spec.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,10 @@ test('remove-unused-variables: get-vars: array pattern', (t) => {
252252
z: d_,
253253
array: _u,
254254
console: _u,
255+
filter: _u,
256+
}, {
257+
v: du,
258+
k: d_,
255259
}];
256260

257261
t.deepEqual(result, expected);

packages/plugin-variables/lib/remove-unused/get-vars/traverse.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,13 @@ export const traverseObjectExpression = (use) => {
118118
};
119119
};
120120

121+
const exists = ({node}) => Boolean(node);
122+
121123
export const traverseArrayExpression = (use) => {
122124
const traverseObjExpression = traverseObjectExpression(use);
123125

124126
return (elementsPaths) => {
125-
for (const elementPath of elementsPaths) {
127+
for (const elementPath of elementsPaths.filter(exists)) {
126128
const {node} = elementPath;
127129

128130
if (isIdentifier(node))

packages/plugin-variables/lib/remove-unused/index.spec.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,8 @@ test('putout: plugin-variables: remove-unused: report', (t) => {
1111
t.reportCode('const a = 5', `'a' is defined but never used`);
1212
t.end();
1313
});
14+
15+
test('putout: plugin-variables: remove-unused: transform: array-pattern', (t) => {
16+
t.transform('array-pattern');
17+
t.end();
18+
});

0 commit comments

Comments
 (0)