Skip to content

Commit 56f6e76

Browse files
authored
prefer-array-find: Use generator for fix (#762)
1 parent 5159c24 commit 56f6e76

File tree

1 file changed

+18
-24
lines changed

1 file changed

+18
-24
lines changed

rules/prefer-array-find.js

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -134,21 +134,19 @@ const getDestructuringLeftAndRight = node => {
134134
return {};
135135
};
136136

137-
const fixDestructuring = (node, source, fixer) => {
137+
function * fixDestructuring(node, source, fixer) {
138138
const {left} = getDestructuringLeftAndRight(node);
139139
const [element] = left.elements;
140140

141141
const leftText = source.getText(element.type === 'AssignmentPattern' ? element.left : element);
142-
const fixes = [fixer.replaceText(left, leftText)];
142+
yield fixer.replaceText(left, leftText);
143143

144144
// `AssignmentExpression` always starts with `[` or `(`, so we don't need check ASI
145145
if (assignmentNeedParenthesize(node, source)) {
146-
fixes.push(fixer.insertTextBefore(node, '('));
147-
fixes.push(fixer.insertTextAfter(node, ')'));
146+
yield fixer.insertTextBefore(node, '(');
147+
yield fixer.insertTextAfter(node, ')');
148148
}
149-
150-
return fixes;
151-
};
149+
}
152150

153151
const hasDefaultValue = node => getDestructuringLeftAndRight(node).left.elements[0].type === 'AssignmentPattern';
154152

@@ -177,17 +175,17 @@ const fixDestructuringAndReplaceFilter = (source, node) => {
177175
{operator: '||', messageId: SUGGESTION_LOGICAL_OR_OPERATOR}
178176
].map(({messageId, operator}) => ({
179177
messageId,
180-
fix: fixer => [
181-
fixer.replaceText(property, 'find'),
182-
fixDestructuringDefaultValue(node, source, fixer, operator),
183-
...fixDestructuring(node, source, fixer)
184-
]
178+
* fix(fixer) {
179+
yield fixer.replaceText(property, 'find');
180+
yield fixDestructuringDefaultValue(node, source, fixer, operator);
181+
yield * fixDestructuring(node, source, fixer);
182+
}
185183
}));
186184
} else {
187-
fix = fixer => [
188-
fixer.replaceText(property, 'find'),
189-
...fixDestructuring(node, source, fixer)
190-
];
185+
fix = function * (fixer) {
186+
yield fixer.replaceText(property, 'find');
187+
yield * fixDestructuring(node, source, fixer);
188+
};
191189
}
192190

193191
return {fix, suggest};
@@ -278,20 +276,16 @@ const create = context => {
278276

279277
// `const [foo = bar] = baz` is not fixable
280278
if (!destructuringNodes.some(node => hasDefaultValue(node))) {
281-
problem.fix = fixer => {
282-
const fixes = [
283-
fixer.replaceText(node.init.callee.property, 'find')
284-
];
279+
problem.fix = function * (fixer) {
280+
yield fixer.replaceText(node.init.callee.property, 'find');
285281

286282
for (const node of zeroIndexNodes) {
287-
fixes.push(fixer.removeRange([node.object.range[1], node.range[1]]));
283+
yield fixer.removeRange([node.object.range[1], node.range[1]]);
288284
}
289285

290286
for (const node of destructuringNodes) {
291-
fixes.push(...fixDestructuring(node, source, fixer));
287+
yield * fixDestructuring(node, source, fixer);
292288
}
293-
294-
return fixes;
295289
};
296290
}
297291

0 commit comments

Comments
 (0)