Skip to content

Commit

Permalink
fix: fix false positive of prefer-flat-map when flattening with depth…
Browse files Browse the repository at this point in the history
… != 1 (fixes #61)
  • Loading branch information
freaktechnik committed May 19, 2020
1 parent 349ee36 commit 98ab902
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 2 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,8 @@ This rule is auto fixable.
Code that triggers this rule:
```js
const flattenedAndMapped = array.map((p) => p).flat();

const flatWithDefaultDepth = array.map((r) => r).flat(1);
```

Code that doesn't trigger this rule:
Expand All @@ -209,6 +211,8 @@ const mapped = array.map((r) => r + 1);
const mappedThenFlattened = array.flat().map((r) => r + 1);

const flatMappedWithExtra = array.map((r) => r + 1).reverse().flat();

const flatWithDepth = array.map((p) => p).flat(99);
```

### `prefer-flat`
Expand Down
2 changes: 1 addition & 1 deletion rules/prefer-flat-map.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ module.exports = {
},
create(context) {
return {
'CallExpression[callee.type="MemberExpression"] > MemberExpression[property.name="flat"] > CallExpression[callee.type="MemberExpression"][callee.property.name="map"]'(node) {
'CallExpression[callee.type="MemberExpression"]:matches([arguments.length=0],[arguments.0.type="Literal"][arguments.0.value=1]) > MemberExpression[property.name="flat"] > CallExpression[callee.type="MemberExpression"][callee.property.name="map"]'(node) {
const parent = node,
callee = node.parent;
node = callee.parent;
Expand Down
12 changes: 11 additions & 1 deletion test/rules/prefer-flat-map.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ ruleTester.run('prefer-flat-map', rule, {
'array.flat()',
'array.map((r) => r + 1)',
'array.flat().map((r) => r + 1)',
'array.map((r) => r + 1).reverse().flat()'
'array.map((r) => r + 1).reverse().flat()',
'array.map((p) => p).flat(99)'
],
invalid: [
{
Expand All @@ -34,6 +35,15 @@ ruleTester.run('prefer-flat-map', rule, {
line: 1
} ],
output: 'foo(); array.flatMap((p) => p); test();'
},
{
code: 'array.map((r) => r).flat(1)',
errors: [ {
message: 'Use flatMap instead of .map().flat()',
column: 7,
line: 1
} ],
output: 'array.flatMap((r) => r)'
}
]
});

0 comments on commit 98ab902

Please sign in to comment.