Skip to content

Commit

Permalink
fix(eslint-plugin): [prefer-reduce-type-parameter] handle already exi…
Browse files Browse the repository at this point in the history
…sting type params (#3706)
  • Loading branch information
yeonjuan committed Aug 30, 2021
1 parent 820965c commit 71dd273
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 16 deletions.
41 changes: 25 additions & 16 deletions packages/eslint-plugin/src/rules/prefer-reduce-type-parameter.ts
Expand Up @@ -77,22 +77,31 @@ export default util.createRule({
context.report({
messageId: 'preferTypeParameter',
node: secondArg,
fix: fixer => [
fixer.removeRange([
secondArg.range[0],
secondArg.expression.range[0],
]),
fixer.removeRange([
secondArg.expression.range[1],
secondArg.range[1],
]),
fixer.insertTextAfter(
callee,
`<${context
.getSourceCode()
.getText(secondArg.typeAnnotation)}>`,
),
],
fix: fixer => {
const fixes = [
fixer.removeRange([
secondArg.range[0],
secondArg.expression.range[0],
]),
fixer.removeRange([
secondArg.expression.range[1],
secondArg.range[1],
]),
];

if (!callee.parent.typeParameters) {
fixes.push(
fixer.insertTextAfter(
callee,
`<${context
.getSourceCode()
.getText(secondArg.typeAnnotation)}>`,
),
);
}

return fixes;
},
});

return;
Expand Down
Expand Up @@ -39,6 +39,23 @@ ruleTester.run('prefer-reduce-type-parameter', rule, {
'[1, 2, 3]?.reduce<number[]>((a, s) => a.concat(s * 2), []);',
],
invalid: [
{
code: `
declare const arr: string[];
arr.reduce<string>(acc => acc, arr.shift() as string);
`,
output: `
declare const arr: string[];
arr.reduce<string>(acc => acc, arr.shift());
`,
errors: [
{
messageId: 'preferTypeParameter',
column: 32,
line: 3,
},
],
},
{
code: '[1, 2, 3].reduce((a, s) => a.concat(s * 2), [] as number[]);',
output: '[1, 2, 3].reduce<number[]>((a, s) => a.concat(s * 2), []);',
Expand Down

0 comments on commit 71dd273

Please sign in to comment.