Skip to content

Commit 98ab902

Browse files
committed
fix: fix false positive of prefer-flat-map when flattening with depth != 1 (fixes #61)
1 parent 349ee36 commit 98ab902

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@ This rule is auto fixable.
196196
Code that triggers this rule:
197197
```js
198198
const flattenedAndMapped = array.map((p) => p).flat();
199+
200+
const flatWithDefaultDepth = array.map((r) => r).flat(1);
199201
```
200202

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

211213
const flatMappedWithExtra = array.map((r) => r + 1).reverse().flat();
214+
215+
const flatWithDepth = array.map((p) => p).flat(99);
212216
```
213217

214218
### `prefer-flat`

rules/prefer-flat-map.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ module.exports = {
1616
},
1717
create(context) {
1818
return {
19-
'CallExpression[callee.type="MemberExpression"] > MemberExpression[property.name="flat"] > CallExpression[callee.type="MemberExpression"][callee.property.name="map"]'(node) {
19+
'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) {
2020
const parent = node,
2121
callee = node.parent;
2222
node = callee.parent;

test/rules/prefer-flat-map.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ ruleTester.run('prefer-flat-map', rule, {
1414
'array.flat()',
1515
'array.map((r) => r + 1)',
1616
'array.flat().map((r) => r + 1)',
17-
'array.map((r) => r + 1).reverse().flat()'
17+
'array.map((r) => r + 1).reverse().flat()',
18+
'array.map((p) => p).flat(99)'
1819
],
1920
invalid: [
2021
{
@@ -34,6 +35,15 @@ ruleTester.run('prefer-flat-map', rule, {
3435
line: 1
3536
} ],
3637
output: 'foo(); array.flatMap((p) => p); test();'
38+
},
39+
{
40+
code: 'array.map((r) => r).flat(1)',
41+
errors: [ {
42+
message: 'Use flatMap instead of .map().flat()',
43+
column: 7,
44+
line: 1
45+
} ],
46+
output: 'array.flatMap((r) => r)'
3747
}
3848
]
3949
});

0 commit comments

Comments
 (0)