-
Notifications
You must be signed in to change notification settings - Fork 60
/
get_node_kind.go
500 lines (495 loc) · 10.3 KB
/
get_node_kind.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
// Code generated by the `ir/codegen` package. DO NOT EDIT.
package ir
import (
"fmt"
)
type NodeKind int
const (
KindAnonClassExpr NodeKind = iota
KindArgument
KindArrayDimFetchExpr
KindArrayExpr
KindArrayItemExpr
KindArrowFunctionExpr
KindAssign
KindAssignBitwiseAnd
KindAssignBitwiseOr
KindAssignBitwiseXor
KindAssignCoalesce
KindAssignConcat
KindAssignDiv
KindAssignMinus
KindAssignMod
KindAssignMul
KindAssignPlus
KindAssignPow
KindAssignReference
KindAssignShiftLeft
KindAssignShiftRight
KindAttribute
KindAttributeGroup
KindBadString
KindBitwiseAndExpr
KindBitwiseNotExpr
KindBitwiseOrExpr
KindBitwiseXorExpr
KindBooleanAndExpr
KindBooleanNotExpr
KindBooleanOrExpr
KindBreakStmt
KindCaseStmt
KindCatchStmt
KindClassConstFetchExpr
KindClassConstListStmt
KindClassExtendsStmt
KindClassImplementsStmt
KindClassMethodStmt
KindClassStmt
KindCloneExpr
KindCloseTagStmt
KindClosureExpr
KindClosureUsesExpr
KindCoalesceExpr
KindConcatExpr
KindConstFetchExpr
KindConstListStmt
KindConstantStmt
KindContinueStmt
KindDeclareStmt
KindDefaultStmt
KindDivExpr
KindDnumber
KindDoStmt
KindEchoStmt
KindElseIfStmt
KindElseStmt
KindEmptyExpr
KindEncapsed
KindEncapsedStringPart
KindEqualExpr
KindErrorSuppressExpr
KindEvalExpr
KindExitExpr
KindExpressionStmt
KindFinallyStmt
KindForStmt
KindForeachStmt
KindFunctionCallExpr
KindFunctionStmt
KindGlobalStmt
KindGotoStmt
KindGreaterExpr
KindGreaterOrEqualExpr
KindGroupUseStmt
KindHaltCompilerStmt
KindHeredoc
KindIdenticalExpr
KindIdentifier
KindIfStmt
KindImportExpr
KindInlineHTMLStmt
KindInstanceOfExpr
KindInterfaceExtendsStmt
KindInterfaceStmt
KindIssetExpr
KindLabelStmt
KindListExpr
KindLnumber
KindLogicalAndExpr
KindLogicalOrExpr
KindLogicalXorExpr
KindMagicConstant
KindMatchArm
KindMatchExpr
KindMethodCallExpr
KindMinusExpr
KindModExpr
KindMulExpr
KindName
KindNamespaceStmt
KindNewExpr
KindNopStmt
KindNotEqualExpr
KindNotIdenticalExpr
KindNullable
KindNullsafeMethodCallExpr
KindNullsafePropertyFetchExpr
KindParameter
KindParenExpr
KindPlusExpr
KindPostDecExpr
KindPostIncExpr
KindPowExpr
KindPreDecExpr
KindPreIncExpr
KindPrintExpr
KindPropertyFetchExpr
KindPropertyListStmt
KindPropertyStmt
KindReferenceExpr
KindReturnStmt
KindRoot
KindShellExecExpr
KindShiftLeftExpr
KindShiftRightExpr
KindSimpleVar
KindSmallerExpr
KindSmallerOrEqualExpr
KindSpaceshipExpr
KindStaticCallExpr
KindStaticPropertyFetchExpr
KindStaticStmt
KindStaticVarStmt
KindStmtList
KindString
KindSwitchStmt
KindTernaryExpr
KindThrowExpr
KindThrowStmt
KindTraitAdaptationListStmt
KindTraitMethodRefStmt
KindTraitStmt
KindTraitUseAliasStmt
KindTraitUsePrecedenceStmt
KindTraitUseStmt
KindTryStmt
KindTypeCastExpr
KindUnaryMinusExpr
KindUnaryPlusExpr
KindUnion
KindUnsetCastExpr
KindUnsetStmt
KindUseListStmt
KindUseStmt
KindVar
KindWhileStmt
KindYieldExpr
KindYieldFromExpr
NumKinds
)
func GetNodeKind(x Node) NodeKind {
switch x := x.(type) {
case *AnonClassExpr:
return KindAnonClassExpr
case *Argument:
return KindArgument
case *ArrayDimFetchExpr:
return KindArrayDimFetchExpr
case *ArrayExpr:
return KindArrayExpr
case *ArrayItemExpr:
return KindArrayItemExpr
case *ArrowFunctionExpr:
return KindArrowFunctionExpr
case *Assign:
return KindAssign
case *AssignBitwiseAnd:
return KindAssignBitwiseAnd
case *AssignBitwiseOr:
return KindAssignBitwiseOr
case *AssignBitwiseXor:
return KindAssignBitwiseXor
case *AssignCoalesce:
return KindAssignCoalesce
case *AssignConcat:
return KindAssignConcat
case *AssignDiv:
return KindAssignDiv
case *AssignMinus:
return KindAssignMinus
case *AssignMod:
return KindAssignMod
case *AssignMul:
return KindAssignMul
case *AssignPlus:
return KindAssignPlus
case *AssignPow:
return KindAssignPow
case *AssignReference:
return KindAssignReference
case *AssignShiftLeft:
return KindAssignShiftLeft
case *AssignShiftRight:
return KindAssignShiftRight
case *Attribute:
return KindAttribute
case *AttributeGroup:
return KindAttributeGroup
case *BadString:
return KindBadString
case *BitwiseAndExpr:
return KindBitwiseAndExpr
case *BitwiseNotExpr:
return KindBitwiseNotExpr
case *BitwiseOrExpr:
return KindBitwiseOrExpr
case *BitwiseXorExpr:
return KindBitwiseXorExpr
case *BooleanAndExpr:
return KindBooleanAndExpr
case *BooleanNotExpr:
return KindBooleanNotExpr
case *BooleanOrExpr:
return KindBooleanOrExpr
case *BreakStmt:
return KindBreakStmt
case *CaseStmt:
return KindCaseStmt
case *CatchStmt:
return KindCatchStmt
case *ClassConstFetchExpr:
return KindClassConstFetchExpr
case *ClassConstListStmt:
return KindClassConstListStmt
case *ClassExtendsStmt:
return KindClassExtendsStmt
case *ClassImplementsStmt:
return KindClassImplementsStmt
case *ClassMethodStmt:
return KindClassMethodStmt
case *ClassStmt:
return KindClassStmt
case *CloneExpr:
return KindCloneExpr
case *CloseTagStmt:
return KindCloseTagStmt
case *ClosureExpr:
return KindClosureExpr
case *ClosureUsesExpr:
return KindClosureUsesExpr
case *CoalesceExpr:
return KindCoalesceExpr
case *ConcatExpr:
return KindConcatExpr
case *ConstFetchExpr:
return KindConstFetchExpr
case *ConstListStmt:
return KindConstListStmt
case *ConstantStmt:
return KindConstantStmt
case *ContinueStmt:
return KindContinueStmt
case *DeclareStmt:
return KindDeclareStmt
case *DefaultStmt:
return KindDefaultStmt
case *DivExpr:
return KindDivExpr
case *Dnumber:
return KindDnumber
case *DoStmt:
return KindDoStmt
case *EchoStmt:
return KindEchoStmt
case *ElseIfStmt:
return KindElseIfStmt
case *ElseStmt:
return KindElseStmt
case *EmptyExpr:
return KindEmptyExpr
case *Encapsed:
return KindEncapsed
case *EncapsedStringPart:
return KindEncapsedStringPart
case *EqualExpr:
return KindEqualExpr
case *ErrorSuppressExpr:
return KindErrorSuppressExpr
case *EvalExpr:
return KindEvalExpr
case *ExitExpr:
return KindExitExpr
case *ExpressionStmt:
return KindExpressionStmt
case *FinallyStmt:
return KindFinallyStmt
case *ForStmt:
return KindForStmt
case *ForeachStmt:
return KindForeachStmt
case *FunctionCallExpr:
return KindFunctionCallExpr
case *FunctionStmt:
return KindFunctionStmt
case *GlobalStmt:
return KindGlobalStmt
case *GotoStmt:
return KindGotoStmt
case *GreaterExpr:
return KindGreaterExpr
case *GreaterOrEqualExpr:
return KindGreaterOrEqualExpr
case *GroupUseStmt:
return KindGroupUseStmt
case *HaltCompilerStmt:
return KindHaltCompilerStmt
case *Heredoc:
return KindHeredoc
case *IdenticalExpr:
return KindIdenticalExpr
case *Identifier:
return KindIdentifier
case *IfStmt:
return KindIfStmt
case *ImportExpr:
return KindImportExpr
case *InlineHTMLStmt:
return KindInlineHTMLStmt
case *InstanceOfExpr:
return KindInstanceOfExpr
case *InterfaceExtendsStmt:
return KindInterfaceExtendsStmt
case *InterfaceStmt:
return KindInterfaceStmt
case *IssetExpr:
return KindIssetExpr
case *LabelStmt:
return KindLabelStmt
case *ListExpr:
return KindListExpr
case *Lnumber:
return KindLnumber
case *LogicalAndExpr:
return KindLogicalAndExpr
case *LogicalOrExpr:
return KindLogicalOrExpr
case *LogicalXorExpr:
return KindLogicalXorExpr
case *MagicConstant:
return KindMagicConstant
case *MatchArm:
return KindMatchArm
case *MatchExpr:
return KindMatchExpr
case *MethodCallExpr:
return KindMethodCallExpr
case *MinusExpr:
return KindMinusExpr
case *ModExpr:
return KindModExpr
case *MulExpr:
return KindMulExpr
case *Name:
return KindName
case *NamespaceStmt:
return KindNamespaceStmt
case *NewExpr:
return KindNewExpr
case *NopStmt:
return KindNopStmt
case *NotEqualExpr:
return KindNotEqualExpr
case *NotIdenticalExpr:
return KindNotIdenticalExpr
case *Nullable:
return KindNullable
case *NullsafeMethodCallExpr:
return KindNullsafeMethodCallExpr
case *NullsafePropertyFetchExpr:
return KindNullsafePropertyFetchExpr
case *Parameter:
return KindParameter
case *ParenExpr:
return KindParenExpr
case *PlusExpr:
return KindPlusExpr
case *PostDecExpr:
return KindPostDecExpr
case *PostIncExpr:
return KindPostIncExpr
case *PowExpr:
return KindPowExpr
case *PreDecExpr:
return KindPreDecExpr
case *PreIncExpr:
return KindPreIncExpr
case *PrintExpr:
return KindPrintExpr
case *PropertyFetchExpr:
return KindPropertyFetchExpr
case *PropertyListStmt:
return KindPropertyListStmt
case *PropertyStmt:
return KindPropertyStmt
case *ReferenceExpr:
return KindReferenceExpr
case *ReturnStmt:
return KindReturnStmt
case *Root:
return KindRoot
case *ShellExecExpr:
return KindShellExecExpr
case *ShiftLeftExpr:
return KindShiftLeftExpr
case *ShiftRightExpr:
return KindShiftRightExpr
case *SimpleVar:
return KindSimpleVar
case *SmallerExpr:
return KindSmallerExpr
case *SmallerOrEqualExpr:
return KindSmallerOrEqualExpr
case *SpaceshipExpr:
return KindSpaceshipExpr
case *StaticCallExpr:
return KindStaticCallExpr
case *StaticPropertyFetchExpr:
return KindStaticPropertyFetchExpr
case *StaticStmt:
return KindStaticStmt
case *StaticVarStmt:
return KindStaticVarStmt
case *StmtList:
return KindStmtList
case *String:
return KindString
case *SwitchStmt:
return KindSwitchStmt
case *TernaryExpr:
return KindTernaryExpr
case *ThrowExpr:
return KindThrowExpr
case *ThrowStmt:
return KindThrowStmt
case *TraitAdaptationListStmt:
return KindTraitAdaptationListStmt
case *TraitMethodRefStmt:
return KindTraitMethodRefStmt
case *TraitStmt:
return KindTraitStmt
case *TraitUseAliasStmt:
return KindTraitUseAliasStmt
case *TraitUsePrecedenceStmt:
return KindTraitUsePrecedenceStmt
case *TraitUseStmt:
return KindTraitUseStmt
case *TryStmt:
return KindTryStmt
case *TypeCastExpr:
return KindTypeCastExpr
case *UnaryMinusExpr:
return KindUnaryMinusExpr
case *UnaryPlusExpr:
return KindUnaryPlusExpr
case *Union:
return KindUnion
case *UnsetCastExpr:
return KindUnsetCastExpr
case *UnsetStmt:
return KindUnsetStmt
case *UseListStmt:
return KindUseListStmt
case *UseStmt:
return KindUseStmt
case *Var:
return KindVar
case *WhileStmt:
return KindWhileStmt
case *YieldExpr:
return KindYieldExpr
case *YieldFromExpr:
return KindYieldFromExpr
default:
panic(fmt.Sprintf(`unhandled type %T`, x))
}
}