diff --git a/rules/from-map.js b/rules/from-map.js index 19265f4..2c50484 100644 --- a/rules/from-map.js +++ b/rules/from-map.js @@ -10,6 +10,10 @@ const { ARROW_FUNCTION_EXPRESSION } = require("../lib/type"), { name: 'index' } ]; +function isFunction(node) { + return node.type === "ArrowFunctionExpression" || node.type === "FunctionExpression"; +} + module.exports = { meta: { docs: { @@ -35,8 +39,10 @@ module.exports = { node = callee.parent; if(mapCallback.type === "Identifier" || - mapCallback.params.length > ALL_PARAMS.length || - mapCallback.params.some((parameter) => parameter.type === "RestElement") + (isFunction(mapCallback) && ( + mapCallback.params.length > ALL_PARAMS.length || + mapCallback.params.some((parameter) => parameter.type === "RestElement") + )) ) { return; } diff --git a/test/helpers/from-map-test-cases.mjs b/test/helpers/from-map-test-cases.mjs index 563ce97..b294aa3 100644 --- a/test/helpers/from-map-test-cases.mjs +++ b/test/helpers/from-map-test-cases.mjs @@ -71,6 +71,15 @@ export default { line: 1 } ], output: 'Array.from(iterable, (item, index) => ((u, i) => u.name)((mapper).call(this, item, index), index))' + }, + { + code: 'Array.from(iterable).map(getValue ? (u, i) => getValue(i) : (u, i) => i)', + errors: [ { + messageId: 'useMapCb', + column: 1, + line: 1 + } ], + output: 'Array.from(iterable, getValue ? (u, i) => getValue(i) : (u, i) => i)' } ] };