Fix using concat() on single Doc (#9994)

Co-authored-by: Sosuke Suzuki <aosukeke@gmail.com>
This commit is contained in:
fisker CheungandSosuke Suzuki authored and GitHub committed 2021-01-04 14:40:02 +08:00
1 parent 6c37b1979a
commit 7ec7a0f21f
11 files changed
+71 -13

No files matched your search

@@ -7,6 +7,7 @@ module.exports = {
"jsx-identifier-case": require("./jsx-identifier-case"),
"no-doc-builder-concat": require("./no-doc-builder-concat"),
"no-node-comments": require("./no-node-comments"),
"no-single-doc-concat": require("./no-single-doc-concat"),
"prefer-fast-path-each": require("./prefer-fast-path-each"),
"prefer-is-non-empty-array": require("./prefer-is-non-empty-array"),
"require-json-extensions": require("./require-json-extensions"),
@@ -0,0 +1,44 @@
"use strict";
// TODO: Remove this rule when deprecated `concat` is not using in codebase, #9993.
const selector = [
"CallExpression",
'[callee.type="Identifier"]',
'[callee.name="concat"]',
"[arguments.length=1]",
'[arguments.0.type="ArrayExpression"]',
"[arguments.0.elements.length=1]",
].join("");
const messageId = "no-single-doc-concat";
module.exports = {
meta: {
type: "suggestion",
docs: {
url:
"https://github.com/prettier/prettier/blob/master/scripts/eslint-plugin-prettier-internal-rules/no-single-doc-concat.js",
},
messages: {
[messageId]: "Do not use `concat()` to concat single `Doc`.",
},
fixable: "code",
},
create(context) {
const sourceCode = context.getSourceCode();
return {
[selector](node) {
context.report({
node,
messageId,
fix: (fixer) =>
fixer.replaceText(
node,
sourceCode.getText(node.arguments[0].elements[0])
),
});
},
};
},
};
@@ -144,6 +144,17 @@ test("no-node-comments", {
],
});
test("no-single-doc-concat", {
valid: [],
invalid: [
{
code: 'concat([path.call(print, "params")])',
output: 'path.call(print, "params")',
errors: 1,
},
],
});
test("prefer-fast-path-each", {
valid: ["const foo = path.map()"],
invalid: [