8000 fix(eslint-plugin): use AST_NODE_TYPES enum instead of strings (#1366) · sstephens/typescript-eslint@bd0276b · GitHub
[go: up one dir, main page]

Skip to content

Commit bd0276b

Browse files
armano2bradzacher
authored andcommitted
fix(eslint-plugin): use AST_NODE_TYPES enum instead of strings (typescript-eslint#1366)
1 parent 93390e6 commit bd0276b

12 files changed

+97
-67
lines changed

packages/eslint-plugin/src/rules/consistent-type-definitions.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import { TSESLint, TSESTree } from '@typescript-eslint/experimental-utils';
1+
import {
2+
AST_TOKEN_TYPES,
3+
TSESLint,
4+
TSESTree,
5+
} from '@typescript-eslint/experimental-utils';
26
import * as util from '../util';
37

48
export default util.createRule({
@@ -53,7 +57,7 @@ export default util.createRule({
5357
const afterToken = sourceCode.getTokenAfter(node.typeAnnotation);
5458
if (
5559
afterToken &&
56-
afterToken.type === 'Punctuator' &&
60+
afterToken.type === AST_TOKEN_TYPES.Punctuator &&
5761
afterToken.value === ';'
5862
) {
5963
fixes.push(fixer.remove(afterToken));

packages/eslint-plugin/src/rules/indent-new-do-not-use/index.ts

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@
44

55
import {
66
AST_NODE_TYPES,
7-
TSESTree,
87
AST_TOKEN_TYPES,
98
TSESLint,
9+
TSESTree,
1010
} from '@typescript-eslint/experimental-utils';
1111
import {
12-
isOpeningParenToken,
13-
isClosingParenToken,
14-
isNotOpeningParenToken,
15-
isSemicolonToken,
16-
isClosingBracketToken,
1712
isClosingBraceToken,
18-
isOpeningBraceToken,
19-
isNotClosingParenToken,
13+
isClosingBracketToken,
14+
isClosingParenToken,
2015
isColonToken,
2116
isCommentToken,
17+
isNotClosingParenToken,
18+
isNotOpeningParenToken,
19+
isOpeningBraceToken,
20+
isOpeningParenToken,
21+
isSemicolonToken,
2222
} from 'eslint-utils';
2323
import { TokenOrComment } from './BinarySearchTree';
2424
import { OffsetStorage } from './OffsetStorage';
@@ -523,7 +523,7 @@ export default createRule<Options, MessageIds>({
523523
*/
524524
if (
525525
!node.parent ||
526-
node.parent.type !== 'CallExpression' ||
526+
node.parent.type !== AST_NODE_TYPES.CallExpression ||
527527
node.parent.callee !== node
528528
) {
529529
return false;
@@ -659,7 +659,7 @@ export default createRule<Options, MessageIds>({
659659
* Scenarios are for or while statements without braces around them
660660
*/
661661
function addBlocklessNodeIndent(node: TSESTree.Node): void {
662-
if (node.type !== 'BlockStatement') {
662+
if (node.type !== AST_NODE_TYPES.BlockStatement) {
663663
const lastParentToken = sourceCode.getTokenBefore(
664664
node,
665665
isNotOpeningParenToken,
@@ -692,7 +692,7 @@ export default createRule<Options, MessageIds>({
692692

693693
if (
694694
lastToken &&
695-
node.type !== 'EmptyStatement' &&
695+
node.type !== AST_NODE_TYPES.EmptyStatement &&
696696
isSemicolonToken(lastToken)
697697
) {
698698
offsets.setDesiredOffset(lastToken, lastParentToken, 0);
@@ -1127,15 +1127,18 @@ export default createRule<Options, MessageIds>({
11271127

11281128
IfStatement(node) {
11291129
addBlocklessNodeIndent(node.consequent);
1130-
if (node.alternate && node.alternate.type !== 'IfStatement') {
1130+
if (
1131+
node.alternate &&
1132+
node.alternate.type !== AST_NODE_TYPES.IfStatement
1133+
) {
11311134
addBlocklessNodeIndent(node.alternate);
11321135
}
11331136
},
11341137

11351138
ImportDeclaration(node) {
11361139
if (
11371140
node.specifiers.some(
1138-
specifier => specifier.type === 'ImportSpecifier',
1141+
specifier => specifier.type === AST_NODE_TYPES.ImportSpecifier,
11391142
)
11401143
) {
11411144
const openingCurly = sourceCode.getFirstToken(
@@ -1149,7 +1152,7 @@ export default createRule<Options, MessageIds>({
11491152

11501153
addElementListIndent(
11511154
node.specifiers.filter(
1152-
specifier => specifier.type === 'ImportSpecifier',
1155+
specifier => specifier.type === AST_NODE_TYPES.ImportSpecifier,
11531156
),
11541157
openingCurly,
11551158
closingCurly,
@@ -1159,11 +1162,12 @@ export default createRule<Options, MessageIds>({
11591162

11601163
const fromToken = sourceCode.getLastToken(
11611164
node,
1162-
token => token.type === 'Identifier' && token.value === 'from',
1165+
token =>
1166+
token.type === AST_TOKEN_TYPES.Identifier && token.value === 'from',
11631167
)!;
11641168
const sourceToken = sourceCode.getLastToken(
11651169
node,
1166-
token => token.type === 'String',
1170 EED3 +
token => token.type === AST_TOKEN_TYPES.String,
11671171
)!;
11681172
const semiToken = sourceCode.getLastToken(
11691173
node,
@@ -1345,7 +1349,7 @@ export default createRule<Options, MessageIds>({
13451349
if (
13461350
!(
13471351
node.consequent.length === 1 &&
1348-
node.consequent[0].type === 'BlockStatement'
1352+
node.consequent[0].type === AST_NODE_TYPES.BlockStatement
13491353
)
13501354
) {
13511355
const caseKeyword = sourceCode.getFirstToken(node)!;

packages/eslint-plugin/src/rules/member-ordering.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,8 @@ export default util.createRule<Options, MessageIds>({
287287
}
288288

289289
const abstract =
290-
node.type === 'TSAbstractClassProperty' ||
291-
node.type === 'TSAbstractMethodDefinition';
290+
node.type === AST_NODE_TYPES.TSAbstractClassProperty ||
291+
node.type === AST_NODE_TYPES.TSAbstractMethodDefinition;
292292

293293
const scope =
294294
'static' in node && node.static

packages/eslint-plugin/src/rules/no-empty-function.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {
2-
TSESTree,
32
AST_NODE_TYPES,
3+
TSESTree,
44
} from '@typescript-eslint/experimental-utils';
55
import baseRule from 'eslint/lib/rules/no-empty-function';
66
import * as util from '../util';
@@ -99,7 +99,7 @@ export default util.createRule<Options, MessageIds>({
9999
const parent = node.parent;
100100
if (
101101
isBodyEmpty(node) &&
102-
parent?.type === 'MethodDefinition' &&
102+
parent?.type === AST_NODE_TYPES.MethodDefinition &&
103103
parent.kind === 'constructor'
104104
) {
105105
const { accessibility } = parent;

packages/eslint-plugin/src/rules/no-inferrable-types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {
2-
TSESTree,
32
AST_NODE_TYPES,
3+
TSESTree,
44
} from '@typescript-eslint/experimental-utils';
55
import * as util from '../util';
66

@@ -164,7 +164,7 @@ export default util.createRule<Options, MessageIds>({
164164
init.value instanceof RegExp;
165165
const isRegExpNewCall =
166166
init.type === AST_NODE_TYPES.NewExpression &&
167-
init.callee.type === 'Identifier' &&
167+
init.callee.type === AST_NODE_TYPES.Identifier &&
168168
init.callee.name === 'RegExp';
169169
const isRegExpCall = isFunctionCall(init, 'RegExp');
170170

packages/eslint-plugin/src/rules/no-unnecessary-qualifier.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
import { TSESTree } from '@typescript-eslint/experimental-utils';
1+
import {
2+
AST_NODE_TYPES,
3+
TSESTree,
4+
} from '@typescript-eslint/experimental-utils';
25
import ts from 'typescript';
36
import * as tsutils from 'tsutils';
47
import * as util from '../util';
@@ -146,12 +149,12 @@ export default util.createRule({
146149
function isPropertyAccessExpression(
147150
node: TSESTree.Node,
148151
): node is TSESTree.MemberExpression {
149-
return node.type === 'MemberExpression' && !node.computed;
152+
return node.type === AST_NODE_TYPES.MemberExpression && !node.computed;
150153
}
151154

152155
function isEntityNameExpression(node: TSESTree.Node): boolean {
153156
return (
154-
node.type === 'Identifier' ||
157+
node.type === AST_NODE_TYPES.Identifier ||
155158
(isPropertyAccessExpression(node) &&
156159
isEntityNameExpression(node.object))
157160
);

packages/eslint-plugin/src/rules/prefer-includes.ts

Lines changed: 8 additions & 8 deletions
10000
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {
2-
TSESTree,
32
AST_NODE_TYPES,
3+
TSESTree,
44
} from '@typescript-eslint/experimental-utils';
55
import { getStaticValue } from 'eslint-utils';
66
import { AST as RegExpAST, parseRegExpLiteral } from 'regexpp';
@@ -204,13 +204,13 @@ export default createRule({
204204
*fix(fixer) {
205205
const argNode = callNode.arguments[0];
206206
const needsParen =
207-
argNode.type !== 'Literal' &&
208-
argNode.type !== 'TemplateLiteral' &&
209-
argNode.type !== 'Identifier' &&
210-
argNode.type !== 'MemberExpression' &&
211-
argNode.type !== 'OptionalMemberExpression' &&
212-
argNode.type !== 'CallExpression' &&
213-
argNode.type !== 'OptionalCallExpression';
207+
argNode.type !== AST_NODE_TYPES.Literal &&
208+
argNode.type !== AST_NODE_TYPES.TemplateLiteral &&
209+
argNode.type !== AST_NODE_TYPES.Identifier &&
210+
argNode.type !== AST_NODE_TYPES.MemberExpression &&
211+
argNode.type !== AST_NODE_TYPES.OptionalMemberExpression &&
212+
argNode.type !== AST_NODE_TYPES.CallExpression &&
213+
argNode.type !== AST_NODE_TYPES.OptionalCallExpression;
214214

215215
yield fixer.removeRange([callNode.range[0], argNode.range[0]]);
216216
if (needsParen) {

packages/eslint-plugin/src/rules/prefer-readonly.ts

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,10 @@ type Options = [
1616
];
1717

1818
const functionScopeBoundaries = [
19-
'ArrowFunctionExpression',
20-
'FunctionDeclaration',
21-
'FunctionExpression',
22-
'GetAccessor',
23-
'MethodDefinition',
24-
'SetAccessor',
19+
AST_NODE_TYPES.ArrowFunctionExpression,
20+
AST_NODE_TYPES.FunctionDeclaration,
21+
AST_NODE_TYPES.FunctionExpression,
22+
AST_NODE_TYPES.MethodDefinition,
2523
].join(', ');
2624

2725
export default util.createRule<Options, MessageIds>({
@@ -221,7 +219,13 @@ export default util.createRule<Options, MessageIds>({
221219
);
222220
}
223221
},
224-
[functionScopeBoundaries](node: TSESTree.Node): void {
222+
[functionScopeBoundaries](
223+
node:
224+
| TSESTree.ArrowFunctionExpression
225+
| TSESTree.FunctionDeclaration
226+
| TSESTree.FunctionExpression
227+
| TSESTree.MethodDefinition,
228+
): void {
225229
if (isConstructor(node)) {
226230
classScopeStack[classScopeStack.length - 1].enterConstructor(
227231
parserServices.esTreeNodeToTSNodeMap.get<ts.ConstructorDeclaration>(
@@ -232,7 +236,13 @@ export default util.createRule<Options, MessageIds>({
232236
classScopeStack[classScopeStack.length - 1].enterNonConstructor();
233237
}
234238
},
235-
[`${functionScopeBoundaries}:exit`](node: TSESTree.Node): void {
239+
[`${functionScopeBoundaries}:exit`](
240+
node:
241+
| TSESTree.ArrowFunctionExpression
242+
| TSESTree.FunctionDeclaration
243+
| TSESTree.FunctionExpression
244+
| TSESTree.MethodDefinition,
245+
): void {
236246
if (isConstructor(node)) {
237247
classScopeStack[classScopeStack.length - 1].exitConstructor();
238248
} else if (isFunctionScopeBoundaryInStack(node)) {

packages/eslint-plugin/src/rules/prefer-string-starts-ends-with.ts

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1-
import { TSESLint, TSESTree } from '@typescript-eslint/experimental-utils';
21
import {
3-
isNotClosingParenToken,
2+
AST_NODE_TYPES,
3+
TSESLint,
4+
TSESTree,
5+
} from '@typescript-eslint/experimental-utils';
6+
import {
47
getPropertyName,
58
getStaticValue,
9+
isNotClosingParenToken,
610
} from 'eslint-utils';
7-
import { RegExpParser, AST as RegExpAST } from 'regexpp';
11+
import { AST as RegExpAST, RegExpParser } from 'regexpp';
812
import { createRule, getParserServices, getTypeName } from '../util';
913

1014
const EQ_OPERATORS = /^[=!]=/;
@@ -94,7 +98,8 @@ export default createRule({
9498
node: TSESTree.Node,
9599
): node is TSESTree.BinaryExpression {
96100
return (
97-
node.type === 'BinaryExpression' && EQ_OPERATORS.test(node.operator)
101+
node.type === AST_NODE_TYPES.BinaryExpression &&
102+
EQ_OPERATORS.test(node.operator)
98103
);
99104
}
100105

@@ -138,7 +143,7 @@ export default createRule({
138143
node: TSESTree.Node,
139144
expectedObjectNode: TSESTree.Node,
140145
): boolean {
141-
if (node.type === 'MemberExpression') {
146+
if (node.type === AST_NODE_TYPES.MemberExpression) {
142147
return (
143148
getPropertyName(node, globalScope) === 'length' &&
144149
isSameTokens(node.object, expectedObjectNode)
@@ -169,7 +174,7 @@ export default createRule({
169174
expectedObjectNode: TSESTree.Node,
170175
): boolean {
171176
return (
172-
node.type === 'BinaryExpression' &&
177+
node.type === AST_NODE_TYPES.BinaryExpression &&
173178
node.operator === '-' &&
174179
isLengthExpression(node.left, expectedObjectNode) &&
175180
isNumber(node.right, 1)
@@ -273,7 +278,7 @@ export default createRule({
273278
negative: boolean,
274279
): IterableIterator<TSESLint.RuleFix> {
275280
// left is CallExpression or MemberExpression.
276-
const leftNode = (node.left.type === 'CallExpression'
281+
const leftNode = (node.left.type === AST_NODE_TYPES.CallExpression
277282
? node.left.callee
278283
: node.left) as TSESTree.MemberExpression;
279284
const propertyRange = getPropertyRange(leftNode);
@@ -326,7 +331,7 @@ export default createRule({
326331
])](node: TSESTree.MemberExpression): void {
327332
let parentNode = node.parent!;
328333
let indexNode: TSESTree.Node | null = null;
329-
if (parentNode.type === 'CallExpression') {
334+
if (parentNode.type === AST_NODE_TYPES.CallExpression) {
330335
if (parentNode.arguments.length === 1) {
331336
indexNode = parentNode.arguments[0];
332337
}
@@ -411,7 +416,7 @@ export default createRule({
411416
callNode.arguments.length !== 1 ||
412417
!isEqualityComparison(parentNode) ||
413418
parentNode.left !== callNode ||
414-
parentNode.right.type !== 'BinaryExpression' ||
419+
parentNode.right.type !== AST_NODE_TYPES.BinaryExpression ||
415420
parentNode.right.operator !== '-' ||
416421
!isLengthExpression(parentNode.right.left, node.object) ||
417422
!isLengthExpression(parentNode.right.right, callNode.arguments[0]) ||
@@ -520,7 +525,7 @@ export default createRule({
520525
// Don't fix if it can change the behavior.
521526
if (
522527
eqNode.operator.length === 2 &&
523-
(eqNode.right.type !== 'Literal' ||
528+
(eqNode.right.type !== AST_NODE_TYPES.Literal ||
524529
typeof eqNode.right.value !== 'string')
525530
) {
526531
return null;
@@ -532,12 +537,12 @@ export default createRule({
532537
} else {
533538
const posNode = callNode.arguments[0];
534539
const posNodeIsAbsolutelyValid =
535-
(posNode.type === 'BinaryExpression' &&
540+
(posNode.type === AST_NODE_TYPES.BinaryExpression &&
536541
posNode.operator === '-' &&
537542
isLengthExpression(posNode.left, node.object) &&
538543
isLengthExpression(posNode.right, eqNode.right)) ||
539544
(negativeIndexSupported &&
540-
posNode.type === 'UnaryExpression' &&
545+
posNode.type === AST_NODE_TYPES.UnaryExpression &&
541546
posNode.operator === '-' &&
542547
isLengthExpression(posNode.argument, eqNode.right));
543548
if (!posNodeIsAbsolutelyValid) {
@@ -576,11 +581,11 @@ export default createRule({
576581
*fix(fixer) {
577582
const argNode = callNode.arguments[0];
578583
const needsParen =
579-
argNode.type !== 'Literal' &&
580-
argNode.type !== 'TemplateLiteral' &&
581-
argNode.type !== 'Identifier' &&
582-
argNode.type !== 'MemberExpression' &&
583-
argNode.type !== 'CallExpression';
584+
argNode.type !== AST_NODE_TYPES.Literal &&
585+
argNode.type !== AST_NODE_TYPES.TemplateLiteral &&
586+
argNode.type !== AST_NODE_TYPES.Identifier &&
587+
argNode.type !== AST_NODE_TYPES.MemberExpression &&
588+
argNode.type !== AST_NODE_TYPES.CallExpression;
584589

585590
yield fixer.removeRange([callNode.range[0], argNode.range[0]]);
586591
if (needsParen) {

0 commit comments

Comments
 (0)
0