@@ -12,14 +12,16 @@ import {
12
12
ESTreeToken
13
13
} from './temp-types-based-on-js-source' ;
14
14
import { TSNode } from './ts-nodes' ;
15
+ import { AST_NODE_TYPES } from './ast-node-types' ;
15
16
16
17
const SyntaxKind = ts . SyntaxKind ;
17
18
18
- const ASSIGNMENT_OPERATORS = [
19
+ const ASSIGNMENT_OPERATORS : ts . AssignmentOperator [ ] = [
19
20
SyntaxKind . EqualsToken ,
20
21
SyntaxKind . PlusEqualsToken ,
21
22
SyntaxKind . MinusEqualsToken ,
22
23
SyntaxKind . AsteriskEqualsToken ,
24
+ SyntaxKind . AsteriskAsteriskEqualsToken ,
23
25
SyntaxKind . SlashEqualsToken ,
24
26
SyntaxKind . PercentEqualsToken ,
25
27
SyntaxKind . LessThanLessThanEqualsToken ,
@@ -30,72 +32,73 @@ const ASSIGNMENT_OPERATORS = [
30
32
SyntaxKind . CaretEqualsToken
31
33
] ;
32
34
33
- const LOGICAL_OPERATORS = [
35
+ const LOGICAL_OPERATORS : ts . LogicalOperator [ ] = [
34
36
SyntaxKind . BarBarToken ,
35
37
SyntaxKind . AmpersandAmpersandToken
36
38
] ;
37
39
38
- const TOKEN_TO_TEXT : { [ key : number ] : string } = { } ;
39
- TOKEN_TO_TEXT [ SyntaxKind . OpenBraceToken ] = '{' ;
40
- TOKEN_TO_TEXT [ SyntaxKind . CloseBraceToken ] = '}' ;
41
- TOKEN_TO_TEXT [ SyntaxKind . OpenParenToken ] = '(' ;
42
- TOKEN_TO_TEXT [ SyntaxKind . CloseParenToken ] = ')' ;
43
- TOKEN_TO_TEXT [ SyntaxKind . OpenBracketToken ] = '[' ;
44
- TOKEN_TO_TEXT [ SyntaxKind . CloseBracketToken ] = ']' ;
45
- TOKEN_TO_TEXT [ SyntaxKind . DotToken ] = '.' ;
46
- TOKEN_TO_TEXT [ SyntaxKind . DotDotDotToken ] = '...' ;
47
- TOKEN_TO_TEXT [ SyntaxKind . SemicolonToken ] = ';' ;
48
- TOKEN_TO_TEXT [ SyntaxKind . CommaToken ] = ',' ;
49
- TOKEN_TO_TEXT [ SyntaxKind . LessThanToken ] = '<' ;
50
- TOKEN_TO_TEXT [ SyntaxKind . GreaterThanToken ] = '>' ;
51
- TOKEN_TO_TEXT [ SyntaxKind . LessThanEqualsToken ] = '<=' ;
52
- TOKEN_TO_TEXT [ SyntaxKind . GreaterThanEqualsToken ] = '>=' ;
53
- TOKEN_TO_TEXT [ SyntaxKind . EqualsEqualsToken ] = '==' ;
54
- TOKEN_TO_TEXT [ SyntaxKind . ExclamationEqualsToken ] = '!=' ;
55
- TOKEN_TO_TEXT [ SyntaxKind . EqualsEqualsEqualsToken ] = '===' ;
56
- TOKEN_TO_TEXT [ SyntaxKind . InstanceOfKeyword ] = 'instanceof' ;
57
- TOKEN_TO_TEXT [ SyntaxKind . ExclamationEqualsEqualsToken ] = '!==' ;
58
- TOKEN_TO_TEXT [ SyntaxKind . EqualsGreaterThanToken ] = '=>' ;
59
- TOKEN_TO_TEXT [ SyntaxKind . PlusToken ] = '+' ;
60
- TOKEN_TO_TEXT [ SyntaxKind . MinusToken ] = '-' ;
61
- TOKEN_TO_TEXT [ SyntaxKind . AsteriskToken ] = '*' ;
62
- TOKEN_TO_TEXT [ SyntaxKind . AsteriskAsteriskToken ] = '**' ;
63
- TOKEN_TO_TEXT [ SyntaxKind . SlashToken ] = '/' ;
64
- TOKEN_TO_TEXT [ SyntaxKind . PercentToken ] = '%' ;
65
- TOKEN_TO_TEXT [ SyntaxKind . PlusPlusToken ] = '++' ;
66
- TOKEN_TO_TEXT [ SyntaxKind . MinusMinusToken ] = '--' ;
67
- TOKEN_TO_TEXT [ SyntaxKind . LessThanLessThanToken ] = '<<' ;
68
- TOKEN_TO_TEXT [ SyntaxKind . LessThanSlashToken ] = '</' ;
69
- TOKEN_TO_TEXT [ SyntaxKind . GreaterThanGreaterThanToken ] = '>>' ;
70
- TOKEN_TO_TEXT [ SyntaxKind . GreaterThanGreaterThanGreaterThanToken ] = '>>>' ;
71
- TOKEN_TO_TEXT [ SyntaxKind . AmpersandToken ] = '&' ;
72
- TOKEN_TO_TEXT [ SyntaxKind . BarToken ] = '|' ;
73
- TOKEN_TO_TEXT [ SyntaxKind . CaretToken ] = '^' ;
74
- TOKEN_TO_TEXT [ SyntaxKind . ExclamationToken ] = '!' ;
75
- TOKEN_TO_TEXT [ SyntaxKind . TildeToken ] = '~' ;
76
- TOKEN_TO_TEXT [ SyntaxKind . AmpersandAmpersandToken ] = '&&' ;
77
- TOKEN_TO_TEXT [ SyntaxKind . BarBarToken ] = '||' ;
78
- TOKEN_TO_TEXT [ SyntaxKind . QuestionToken ] = '?' ;
79
- TOKEN_TO_TEXT [ SyntaxKind . ColonToken ] = ':' ;
80
- TOKEN_TO_TEXT [ SyntaxKind . EqualsToken ] = '=' ;
81
- TOKEN_TO_TEXT [ SyntaxKind . PlusEqualsToken ] = '+=' ;
82
- TOKEN_TO_TEXT [ SyntaxKind . MinusEqualsToken ] = '-=' ;
83
- TOKEN_TO_TEXT [ SyntaxKind . AsteriskEqualsToken ] = '*=' ;
84
- TOKEN_TO_TEXT [ SyntaxKind . AsteriskAsteriskEqualsToken ] = '**=' ;
85
- TOKEN_TO_TEXT [ SyntaxKind . SlashEqualsToken ] = '/=' ;
86
- TOKEN_TO_TEXT [ SyntaxKind . PercentEqualsToken ] = '%=' ;
87
- TOKEN_TO_TEXT [ SyntaxKind . LessThanLessThanEqualsToken ] = '<<=' ;
88
- TOKEN_TO_TEXT [ SyntaxKind . GreaterThanGreaterThanEqualsToken ] = '>>=' ;
89
- TOKEN_TO_TEXT [ SyntaxKind . GreaterThanGreaterThanGreaterThanEqualsToken ] = '>>>=' ;
90
- TOKEN_TO_TEXT [ SyntaxKind . AmpersandEqualsToken ] = '&=' ;
91
- TOKEN_TO_TEXT [ SyntaxKind . BarEqualsToken ] = '|=' ;
92
- TOKEN_TO_TEXT [ SyntaxKind . CaretEqualsToken ] = '^=' ;
93
- TOKEN_TO_TEXT [ SyntaxKind . AtToken ] = '@' ;
94
- TOKEN_TO_TEXT [ SyntaxKind . InKeyword ] = 'in' ;
95
- TOKEN_TO_TEXT [ SyntaxKind . UniqueKeyword ] = 'unique' ;
96
- TOKEN_TO_TEXT [ SyntaxKind . KeyOfKeyword ] = 'keyof' ;
97
- TOKEN_TO_TEXT [ SyntaxKind . NewKeyword ] = 'new' ;
98
- TOKEN_TO_TEXT [ SyntaxKind . ImportKeyword ] = 'import' ;
40
+ const TOKEN_TO_TEXT : { readonly [ P in ts . SyntaxKind ] ?: string } = {
41
+ [ SyntaxKind . OpenBraceToken ] : '{' ,
42
+ [ SyntaxKind . CloseBraceToken ] : '}' ,
43
+ [ SyntaxKind . OpenParenToken ] : '(' ,
44
+ [ SyntaxKind . CloseParenToken ] : ')' ,
45
+ [ SyntaxKind . OpenBracketToken ] : '[' ,
46
+ [ SyntaxKind . CloseBracketToken ] : ']' ,
47
+ [ SyntaxKind . DotToken ] : '.' ,
48
+ [ SyntaxKind . DotDotDotToken ] : '...' ,
49
+ [ SyntaxKind . SemicolonToken ] : ',' ,
50
+ [ SyntaxKind . CommaToken ] : ',' ,
51
+ [ SyntaxKind . LessThanToken ] : '<' ,
52
+ [ SyntaxKind . GreaterThanToken ] : '>' ,
53
+ [ SyntaxKind . LessThanEqualsToken ] : '<=' ,
54
+ [ SyntaxKind . GreaterThanEqualsToken ] : '>=' ,
55
+ [ SyntaxKind . EqualsEqualsToken ] : '==' ,
56
+ [ SyntaxKind . ExclamationEqualsToken ] : '!=' ,
57
+ [ SyntaxKind . EqualsEqualsEqualsToken ] : '===' ,
58
+ [ SyntaxKind . InstanceOfKeyword ] : 'instanceof' ,
59
+ [ SyntaxKind . ExclamationEqualsEqualsToken ] : '!==' ,
60
+ [ SyntaxKind . EqualsGreaterThanToken ] : '=>' ,
61
+ [ SyntaxKind . PlusToken ] : '+' ,
62
+ [ SyntaxKind . MinusToken ] : '-' ,
63
+ [ SyntaxKind . AsteriskToken ] : '*' ,
64
+ [ SyntaxKind . AsteriskAsteriskToken ] : '**' ,
65
+ [ SyntaxKind . SlashToken ] : '/' ,
66
+ [ SyntaxKind . PercentToken ] : '%' ,
67
+ [ SyntaxKind . PlusPlusToken ] : '++' ,
68
+ [ SyntaxKind . MinusMinusToken ] : '--' ,
69
+ [ SyntaxKind . LessThanLessThanToken ] : '<<' ,
70
+ [ SyntaxKind . LessThanSlashToken ] : '</' ,
71
+ [ SyntaxKind . GreaterThanGreaterThanToken ] : '>>' ,
72
+ [ SyntaxKind . GreaterThanGreaterThanGreaterThanToken ] : '>>>' ,
73
+ [ SyntaxKind . AmpersandToken ] : '&' ,
74
+ [ SyntaxKind . BarToken ] : '|' ,
75
+ [ SyntaxKind . CaretToken ] : '^' ,
76
+ [ SyntaxKind . ExclamationToken ] : '!' ,
77
+ [ SyntaxKind . TildeToken ] : '~' ,
78
+ [ SyntaxKind . AmpersandAmpersandToken ] : '&&' ,
79
+ [ SyntaxKind . BarBarToken ] : '||' ,
80
+ [ SyntaxKind . QuestionToken ] : '?' ,
81
+ [ SyntaxKind . ColonToken ] : ':' ,
82
+ [ SyntaxKind . EqualsToken ] : '=' ,
83
+ [ SyntaxKind . PlusEqualsToken ] : '+=' ,
84
+ [ SyntaxKind . MinusEqualsToken ] : '-=' ,
85
+ [ SyntaxKind . AsteriskEqualsToken ] : '*=' ,
86
+ [ SyntaxKind . AsteriskAsteriskEqualsToken ] : '**=' ,
87
+ [ SyntaxKind . SlashEqualsToken ] : '/=' ,
88
+ [ SyntaxKind . PercentEqualsToken ] : '%=' ,
89
+ [ SyntaxKind . LessThanLessThanEqualsToken ] : '<<=' ,
90
+ [ SyntaxKind . GreaterThanGreaterThanEqualsToken ] : '>>=' ,
91
+ [ SyntaxKind . GreaterThanGreaterThanGreaterThanEqualsToken ] : '>>>=' ,
92
+ [ SyntaxKind . AmpersandEqualsToken ] : '&=' ,
93
+ [ SyntaxKind . BarEqualsToken ] : '|=' ,
94
+ [ SyntaxKind . CaretEqualsToken ] : '^=' ,
95
+ [ SyntaxKind . AtToken ] : '@' ,
96
+ [ SyntaxKind . InKeyword ] : 'in' ,
97
+ [ SyntaxKind . UniqueKeyword ] : 'unique' ,
98
+ [ SyntaxKind . KeyOfKeyword ] : 'keyof' ,
99
+ [ SyntaxKind . NewKeyword ] : 'new' ,
100
+ [ SyntaxKind . ImportKeyword ] : 'import'
101
+ } ;
99
102
100
103
/**
101
104
* Find the first matching child based on the given sourceFile and predicate function.
@@ -188,7 +191,7 @@ function isLogicalOperator(operator: ts.Token<any>): boolean {
188
191
* @param {number } kind the token's SyntaxKind
189
192
* @returns {string } the token applicable token as a string
190
193
*/
191
- function getTextForTokenKind ( kind : number ) : string {
194
+ function getTextForTokenKind ( kind : ts . SyntaxKind ) : string | undefined {
192
195
return TOKEN_TO_TEXT [ kind ] ;
193
196
}
194
197
@@ -252,11 +255,11 @@ function isJSDocComment(node: ts.Node): boolean {
252
255
*/
253
256
function getBinaryExpressionType ( operator : ts . Token < any > ) : string {
254
257
if ( isAssignmentOperator ( operator ) ) {
255
- return ' AssignmentExpression' ;
258
+ return AST_NODE_TYPES . AssignmentExpression ;
256
259
} else if ( isLogicalOperator ( operator ) ) {
257
- return ' LogicalExpression' ;
260
+ return AST_NODE_TYPES . LogicalExpression ;
258
261
}
259
- return ' BinaryExpression' ;
262
+ return AST_NODE_TYPES . BinaryExpression ;
260
263
}
261
264
262
265
/**
0 commit comments