UNPKG

eslint-plugin-complete

Version:

An ESLint plugin that contains useful rules.

50 lines (49 loc) 1.91 kB
import { ESLintUtils } from "@typescript-eslint/utils"; import ts from "typescript"; import { createRule } from "../utils.js"; export const preferPlusplus = createRule({ name: "prefer-plusplus", meta: { type: "problem", docs: { description: 'Require "++" or "--" operators instead of assignment operators where applicable', recommended: true, requiresTypeChecking: false, }, schema: [], messages: { plusPlus: 'Use "++" instead, as it is more concise and easier to read.', minusMinus: 'Use "--" instead, as it is more concise and easier to read.', }, fixable: "code", }, defaultOptions: [], create(context) { const parserServices = ESLintUtils.getParserServices(context); return { AssignmentExpression(node) { if (node.operator !== "+=" && node.operator !== "-=") { return; } const tsNodeRight = parserServices.esTreeNodeToTSNodeMap.get(node.right); if (!ts.isNumericLiteral(tsNodeRight)) { return; } if (tsNodeRight.getText() !== "1") { return; } const messageId = node.operator === "+=" ? "plusPlus" : "minusMinus"; context.report({ loc: node.loc, messageId, fix(fixer) { const tsNodeLeft = parserServices.esTreeNodeToTSNodeMap.get(node.left); const newOperator = node.operator === "+=" ? "++" : "--"; const newExpression = tsNodeLeft.getText() + newOperator; return fixer.replaceText(node, newExpression); }, }); }, }; }, });