Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 409bf0b

Browse files
authored
fix: add missing intrinsic keyword node to AST (typescript-eslint#3081)
1 parent 0469102 commit 409bf0b

File tree

10 files changed

+1264
-1
lines changed

10 files changed

+1264
-1
lines changed

packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ function getGroup(node: TSESTree.TypeNode): Group {
4949
case AST_NODE_TYPES.TSSymbolKeyword:
5050
case AST_NODE_TYPES.TSThisType:
5151
case AST_NODE_TYPES.TSUnknownKeyword:
52+
case AST_NODE_TYPES.TSIntrinsicKeyword:
5253
return Group.keyword;
5354

5455
case AST_NODE_TYPES.TSNullKeyword:

packages/eslint-plugin/tests/rules/sort-type-union-intersection-members.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,13 @@ const valid = (operator: '|' | '&'): TSESLint.ValidTestCase<Options>[] => [
4343
type T =
4444
${operator} A
4545
${operator} B
46+
${operator} intrinsic
4647
${operator} number[]
4748
${operator} string[]
4849
${operator} any
4950
${operator} string
51+
${operator} symbol
52+
${operator} this
5053
${operator} readonly number[]
5154
${operator} readonly string[]
5255
${operator} 'a'
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
type Uppercase<S extends string> = intrinsic;
2+
type Lowercase<S extends string> = intrinsic;
3+
type Capitalize<S extends string> = intrinsic;
4+
type Uncapitalize<S extends string> = intrinsic;

packages/types/src/ast-node-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ enum AST_NODE_TYPES {
118118
TSInterfaceDeclaration = 'TSInterfaceDeclaration',
119119
TSInterfaceHeritage = 'TSInterfaceHeritage',
120120
TSIntersectionType = 'TSIntersectionType',
121+
TSIntrinsicKeyword = 'TSIntrinsicKeyword',
121122
TSLiteralType = 'TSLiteralType',
122123
TSMappedType = 'TSMappedType',
123124
TSMethodSignature = 'TSMethodSignature',

packages/types/src/ts-estree.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ export type Node =
249249
| TSInterfaceDeclaration
250250
| TSInterfaceHeritage
251251
| TSIntersectionType
252+
| TSIntrinsicKeyword
252253
| TSLiteralType
253254
| TSMappedType
254255
| TSMethodSignature
@@ -544,6 +545,7 @@ export type TypeNode =
544545
| TSInferType
545546
| TSInterfaceHeritage
546547
| TSIntersectionType
548+
| TSIntrinsicKeyword
547549
| TSLiteralType
548550
| TSMappedType
549551
| TSNamedTupleMember
@@ -1469,6 +1471,10 @@ export interface TSIntersectionType extends BaseNode {
14691471
types: TypeNode[];
14701472
}
14711473

1474+
export interface TSIntrinsicKeyword extends BaseNode {
1475+
type: AST_NODE_TYPES.TSIntrinsicKeyword;
1476+
}
1477+
14721478
export interface TSLiteralType extends BaseNode {
14731479
type: AST_NODE_TYPES.TSLiteralType;
14741480
literal: LiteralExpression | UnaryExpression | UpdateExpression;

packages/typescript-estree/src/convert.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2206,7 +2206,8 @@ export class Converter {
22062206
case SyntaxKind.SymbolKeyword:
22072207
case SyntaxKind.UnknownKeyword:
22082208
case SyntaxKind.VoidKeyword:
2209-
case SyntaxKind.UndefinedKeyword: {
2209+
case SyntaxKind.UndefinedKeyword:
2210+
case SyntaxKind.IntrinsicKeyword: {
22102211
return this.createNode<any>(node, {
22112212
type: AST_NODE_TYPES[`TS${SyntaxKind[node.kind]}` as AST_NODE_TYPES],
22122213
});

packages/typescript-estree/src/ts-estree/estree-to-ts-node-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ export interface EstreeToTsNodeTypes {
254254
[AST_NODE_TYPES.TSAnyKeyword]: ts.KeywordTypeNode;
255255
[AST_NODE_TYPES.TSBigIntKeyword]: ts.KeywordTypeNode;
256256
[AST_NODE_TYPES.TSBooleanKeyword]: ts.KeywordTypeNode;
257+
[AST_NODE_TYPES.TSIntrinsicKeyword]: ts.KeywordTypeNode;
257258
[AST_NODE_TYPES.TSNeverKeyword]: ts.KeywordTypeNode;
258259
[AST_NODE_TYPES.TSNumberKeyword]: ts.KeywordTypeNode;
259260
[AST_NODE_TYPES.TSObjectKeyword]: ts.KeywordTypeNode;

packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.test.ts.snap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1993,6 +1993,8 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
19931993

19941994
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/interface-without-type-annotation.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
19951995

1996+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/intrinsic-keyword.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
1997+
19961998
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/keyof-operator.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
19971999

19982000
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/keyword-variables.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;

0 commit comments

Comments
 (0)