5
5
6
6
module tsgen {
7
7
8
+ export var internal = ts ;
8
9
9
10
export interface INodeHandler {
10
11
( n :ts . Node , after :boolean , context :any ) :boolean ;
@@ -17,6 +18,9 @@ module tsgen {
17
18
MultiLineCommentTrivia ?: INodeHandler ;
18
19
NewLineTrivia ?: INodeHandler ;
19
20
WhitespaceTrivia ?: INodeHandler ;
21
+ // We detect and provide better error recovery when we encounter a git merge marker. This
22
+ // allows us to edit files with git-conflict markers in them in a much more pleasant manner.
23
+ ConflictMarkerTrivia ?: INodeHandler ;
20
24
// Literals
21
25
NumericLiteral ?: INodeHandler ;
22
26
StringLiteral ?: INodeHandler ;
@@ -118,6 +122,7 @@ module tsgen {
118
122
WhileKeyword ?: INodeHandler ;
119
123
WithKeyword ?: INodeHandler ;
120
124
// Strict mode reserved words
125
+ AsKeyword ?: INodeHandler ;
121
126
ImplementsKeyword ?: INodeHandler ;
122
127
InterfaceKeyword ?: INodeHandler ;
123
128
LetKeyword ?: INodeHandler ;
@@ -127,7 +132,7 @@ module tsgen {
127
132
PublicKeyword ?: INodeHandler ;
128
133
StaticKeyword ?: INodeHandler ;
129
134
YieldKeyword ?: INodeHandler ;
130
- // TypeScript keywords
135
+ // Contextual keywords
131
136
AnyKeyword ?: INodeHandler ;
132
137
BooleanKeyword ?: INodeHandler ;
133
138
ConstructorKeyword ?: INodeHandler ;
@@ -138,17 +143,24 @@ module tsgen {
138
143
NumberKeyword ?: INodeHandler ;
139
144
SetKeyword ?: INodeHandler ;
140
145
StringKeyword ?: INodeHandler ;
146
+ SymbolKeyword ?: INodeHandler ;
141
147
TypeKeyword ?: INodeHandler ;
148
+ FromKeyword ?: INodeHandler ;
149
+ OfKeyword ?: INodeHandler ; // LastKeyword and LastToken
150
+
142
151
// Parse tree nodes
143
- Missing ?: INodeHandler ;
152
+
144
153
// Names
145
154
QualifiedName ?: INodeHandler ;
155
+ ComputedPropertyName ?: INodeHandler ;
146
156
// Signature elements
147
157
TypeParameter ?: INodeHandler ;
148
158
Parameter ?: INodeHandler ;
149
159
// TypeMember
150
- Property ?: INodeHandler ;
151
- Method ?: INodeHandler ;
160
+ PropertySignature ?: INodeHandler ;
161
+ PropertyDeclaration ?: INodeHandler ;
162
+ MethodSignature ?: INodeHandler ;
163
+ MethodDeclaration ?: INodeHandler ;
152
164
Constructor ?: INodeHandler ;
153
165
GetAccessor ?: INodeHandler ;
154
166
SetAccessor ?: INodeHandler ;
@@ -164,28 +176,36 @@ module tsgen {
164
176
ArrayType ?: INodeHandler ;
165
177
TupleType ?: INodeHandler ;
166
178
UnionType ?: INodeHandler ;
167
- ParenType ?: INodeHandler ;
179
+ ParenthesizedType ?: INodeHandler ;
180
+ // Binding patterns
181
+ ObjectBindingPattern ?: INodeHandler ;
182
+ ArrayBindingPattern ?: INodeHandler ;
183
+ BindingElement ?: INodeHandler ;
168
184
// Expression
169
- ArrayLiteral ?: INodeHandler ;
170
- ObjectLiteral ?: INodeHandler ;
171
- PropertyAssignment ?: INodeHandler ;
172
- ShorthandPropertyAssignment ?: INodeHandler ;
173
- PropertyAccess ?: INodeHandler ;
174
- IndexedAccess ?: INodeHandler ;
185
+ ArrayLiteralExpression ?: INodeHandler ;
186
+ ObjectLiteralExpression ?: INodeHandler ;
187
+ PropertyAccessExpression ?: INodeHandler ;
188
+ ElementAccessExpression ?: INodeHandler ;
175
189
CallExpression ?: INodeHandler ;
176
190
NewExpression ?: INodeHandler ;
177
191
TaggedTemplateExpression ?: INodeHandler ;
178
- TypeAssertion ?: INodeHandler ;
179
- ParenExpression ?: INodeHandler ;
192
+ TypeAssertionExpression ?: INodeHandler ;
193
+ ParenthesizedExpression ?: INodeHandler ;
180
194
FunctionExpression ?: INodeHandler ;
181
195
ArrowFunction ?: INodeHandler ;
182
- PrefixOperator ?: INodeHandler ;
183
- PostfixOperator ?: INodeHandler ;
196
+ DeleteExpression ?: INodeHandler ;
197
+ TypeOfExpression ?: INodeHandler ;
198
+ VoidExpression ?: INodeHandler ;
199
+ PrefixUnaryExpression ?: INodeHandler ;
200
+ PostfixUnaryExpression ?: INodeHandler ;
184
201
BinaryExpression ?: INodeHandler ;
185
202
ConditionalExpression ?: INodeHandler ;
186
203
TemplateExpression ?: INodeHandler ;
187
- TemplateSpan ?: INodeHandler ;
204
+ YieldExpression ?: INodeHandler ;
205
+ SpreadElementExpression ?: INodeHandler ;
188
206
OmittedExpression ?: INodeHandler ;
207
+ // Misc
208
+ TemplateSpan ?: INodeHandler ;
189
209
// Element
190
210
Block ?: INodeHandler ;
191
211
VariableStatement ?: INodeHandler ;
@@ -196,44 +216,61 @@ module tsgen {
196
216
WhileStatement ?: INodeHandler ;
197
217
ForStatement ?: INodeHandler ;
198
218
ForInStatement ?: INodeHandler ;
219
+ ForOfStatement ?: INodeHandler ;
199
220
ContinueStatement ?: INodeHandler ;
200
221
BreakStatement ?: INodeHandler ;
201
222
ReturnStatement ?: INodeHandler ;
202
223
WithStatement ?: INodeHandler ;
203
224
SwitchStatement ?: INodeHandler ;
204
- CaseClause ?: INodeHandler ;
205
- DefaultClause ?: INodeHandler ;
206
225
LabeledStatement ?: INodeHandler ;
207
226
ThrowStatement ?: INodeHandler ;
208
227
TryStatement ?: INodeHandler ;
209
- TryBlock ?: INodeHandler ;
210
- CatchBlock ?: INodeHandler ;
211
- FinallyBlock ?: INodeHandler ;
212
228
DebuggerStatement ?: INodeHandler ;
213
229
VariableDeclaration ?: INodeHandler ;
230
+ VariableDeclarationList ?: INodeHandler ;
214
231
FunctionDeclaration ?: INodeHandler ;
215
- FunctionBlock ?: INodeHandler ;
216
232
ClassDeclaration ?: INodeHandler ;
217
233
InterfaceDeclaration ?: INodeHandler ;
218
234
TypeAliasDeclaration ?: INodeHandler ;
219
235
EnumDeclaration ?: INodeHandler ;
220
236
ModuleDeclaration ?: INodeHandler ;
221
237
ModuleBlock ?: INodeHandler ;
238
+ CaseBlock ?: INodeHandler ;
239
+ ImportEqualsDeclaration ?: INodeHandler ;
222
240
ImportDeclaration ?: INodeHandler ;
241
+ ImportClause ?: INodeHandler ;
242
+ NamespaceImport ?: INodeHandler ;
243
+ NamedImports ?: INodeHandler ;
244
+ ImportSpecifier ?: INodeHandler ;
223
245
ExportAssignment ?: INodeHandler ;
246
+ ExportDeclaration ?: INodeHandler ;
247
+ NamedExports ?: INodeHandler ;
248
+ ExportSpecifier ?: INodeHandler ;
249
+
250
+ // Module references
251
+ ExternalModuleReference ?: INodeHandler ;
252
+
253
+ // Clauses
254
+ CaseClause ?: INodeHandler ;
255
+ DefaultClause ?: INodeHandler ;
256
+ HeritageClause ?: INodeHandler ;
257
+ CatchClause ?: INodeHandler ;
258
+
259
+ // Property assignments
260
+ PropertyAssignment ?: INodeHandler ;
261
+ ShorthandPropertyAssignment ?: INodeHandler ;
262
+
224
263
// Enum
225
264
EnumMember ?: INodeHandler ;
226
265
// Top-level nodes
227
266
SourceFile ?: INodeHandler ;
228
- Program ?: INodeHandler ;
267
+
229
268
// Synthesized list
230
269
SyntaxList ?: INodeHandler ;
231
- // Enum value count
232
- Count ?: INodeHandler ;
233
270
234
271
default ?: INodeHandler ;
235
- operator ?: INodeHandler ;
236
- binaryOperator ?: INodeHandler ;
272
+ operator ?: INodeHandler ;
273
+ binaryOperator ?: INodeHandler ;
237
274
}
238
275
239
276
@@ -243,8 +280,12 @@ module tsgen {
243
280
244
281
interface IGenericWalker {
245
282
[ k :string ] :tsgen . INodeHandler ;
246
- default :tsgen . INodeHandler ;
247
- binaryOperator :tsgen . INodeHandler ;
283
+ default :tsgen . INodeHandler ;
284
+ binaryOperator :tsgen . INodeHandler ;
285
+ }
286
+
287
+ export function getJsDocComments ( node :any , sourcefile :any ) :CommentRange [ ] {
288
+ return ts . getJsDocComments ( node , sourcefile ) ;
248
289
}
249
290
250
291
export function walkProgram ( filenames :string [ ] , nodeHandler :( context : any , node : any , after : boolean ) => boolean ) {
@@ -253,50 +294,50 @@ module tsgen {
253
294
254
295
export function walkProgramNodes ( filenames :string [ ] , nodeWalker :tsgen . INodeWalker ) {
255
296
256
- var walker :IGenericWalker = < IGenericWalker > nodeWalker ;
257
- var sk = tsgen . SyntaxKind ;
297
+ var walker :IGenericWalker = < IGenericWalker > nodeWalker ;
298
+ var sk = tsgen . SyntaxKind ;
258
299
259
- for ( var i = 0 ; i < sk . Count ; ++ i ) {
260
- var k = sk [ i ] ;
261
- if ( null == walker [ k ] ) {
262
- if ( i >= sk . FirstBinaryOperator && i <= sk . LastBinaryOperator ) {
263
- walker [ k ] = walker . binaryOperator || walker . default ;
264
- } else {
265
- walker [ k ] = walker . default ;
266
- }
267
- }
268
- }
300
+ for ( var i = 0 ; i < sk . Count ; ++ i ) {
301
+ var k = sk [ i ] ;
302
+ if ( null == walker [ k ] ) {
303
+ if ( i >= sk . FirstBinaryOperator && i <= sk . LastBinaryOperator ) {
304
+ walker [ k ] = walker . binaryOperator || walker . default ;
305
+ } else {
306
+ walker [ k ] = walker . default ;
307
+ }
308
+ }
309
+ }
269
310
ts . walkProgram ( filenames , ( context , node , after ) => walker [ sk [ node . kind ] ] ( node , after , context ) ) ;
270
311
}
271
312
272
313
273
314
interface IGenericVisitor {
274
- [ k :string ] : ( n :ts . Node ) => void ;
315
+ [ k :string ] : ( n :ts . Node ) => void ;
275
316
}
276
317
277
318
class NodeVisitor {
278
- walk ( n :ts . Node ) :boolean {
279
- this . visit ( n ) ;
280
- return false ;
281
- }
282
- visit ( n :ts . Node ) {
283
- var k = getNodeKind ( n ) ;
284
- var m = ( < IGenericVisitor > < any > this ) [ k ] ;
285
- if ( m ) m . call ( this , n ) ;
319
+ walk ( n :ts . Node ) :boolean {
320
+ this . visit ( n ) ;
321
+ return false ;
322
+ }
323
+ visit ( n :ts . Node ) {
324
+ var k = getNodeKind ( n ) ;
325
+ var m = ( < IGenericVisitor > < any > this ) [ k ] ;
326
+ if ( m ) m . call ( this , n ) ;
286
327
287
- }
328
+ }
288
329
}
289
330
}
290
331
291
332
/** for node.js: */
292
333
declare var module : {
293
- exports : any ;
294
- require ( id : string ) : any ;
295
- id : string ;
296
- filename : string ;
297
- loaded : boolean ;
298
- parent : any ;
299
- children : any [ ] ;
334
+ exports : any ;
335
+ require ( id : string ) : any ;
336
+ id : string ;
337
+ filename : string ;
338
+ loaded : boolean ;
339
+ parent : any ;
340
+ children : any [ ] ;
300
341
} ;
301
342
302
343
( module ) . exports = tsgen ;
0 commit comments