@@ -170,24 +170,42 @@ func (node *Node) Expression() *Node {
170170 return node .AsAsExpression ().Expression
171171 case KindSatisfiesExpression :
172172 return node .AsSatisfiesExpression ().Expression
173+ case KindTypeOfExpression :
174+ return node .AsTypeOfExpression ().Expression
173175 case KindSpreadAssignment :
174176 return node .AsSpreadAssignment ().Expression
177+ case KindSpreadElement :
178+ return node .AsSpreadElement ().Expression
175179 case KindTemplateSpan :
176180 return node .AsTemplateSpan ().Expression
181+ case KindDeleteExpression :
182+ return node .AsDeleteExpression ().Expression
183+ case KindVoidExpression :
184+ return node .AsVoidExpression ().Expression
185+ case KindAwaitExpression :
186+ return node .AsAwaitExpression ().Expression
187+ case KindYieldExpression :
188+ return node .AsYieldExpression ().Expression
177189 case KindForInStatement , KindForOfStatement :
178190 return node .AsForInOrOfStatement ().Expression
179191 }
180192 panic ("Unhandled case in Node.Expression" )
181193}
182194
183195func (node * Node ) Arguments () []* Node {
196+ var arguments * NodeList
184197 switch node .Kind {
185198 case KindCallExpression :
186- return node .AsCallExpression ().Arguments . Nodes
199+ arguments = node .AsCallExpression ().Arguments
187200 case KindNewExpression :
188- return node .AsNewExpression ().Arguments .Nodes
201+ arguments = node .AsNewExpression ().Arguments
202+ default :
203+ panic ("Unhandled case in Node.Arguments" )
189204 }
190- panic ("Unhandled case in Node.Arguments" )
205+ if arguments != nil {
206+ return arguments .Nodes
207+ }
208+ return nil
191209}
192210
193211func (node * Node ) ModifierFlags () ModifierFlags {
@@ -677,6 +695,15 @@ func (n *Node) AsJSDocNameReference() *JSDocNameReference {
677695func (n * Node ) AsTemplateLiteralTypeNode () * TemplateLiteralTypeNode {
678696 return n .data .(* TemplateLiteralTypeNode )
679697}
698+ func (n * Node ) AsVoidExpression () * VoidExpression {
699+ return n .data .(* VoidExpression )
700+ }
701+ func (n * Node ) AsAwaitExpression () * AwaitExpression {
702+ return n .data .(* AwaitExpression )
703+ }
704+ func (n * Node ) AsYieldExpression () * YieldExpression {
705+ return n .data .(* YieldExpression )
706+ }
680707
681708// NodeData
682709
@@ -1186,8 +1213,15 @@ func (node *ForInOrOfStatement) ForEachChild(v Visitor) bool {
11861213 return visit (v , node .AwaitModifier ) || visit (v , node .Initializer ) || visit (v , node .Expression ) || visit (v , node .Statement )
11871214}
11881215
1216+ func IsForInStatement (node * Node ) bool {
1217+ return node .Kind == KindForInStatement
1218+ }
1219+ func IsForOfStatement (node * Node ) bool {
1220+ return node .Kind == KindForOfStatement
1221+ }
1222+
11891223func IsForInOrOfStatement (node * Node ) bool {
1190- return node . Kind == KindForInStatement || node . Kind == KindForOfStatement
1224+ return IsForInStatement ( node ) || IsForOfStatement ( node )
11911225}
11921226
11931227// BreakStatement
@@ -1859,6 +1893,10 @@ func (node *EnumMember) Name() *DeclarationName {
18591893 return node .name
18601894}
18611895
1896+ func IsEnumMember (node * Node ) bool {
1897+ return node .Kind == KindEnumMember
1898+ }
1899+
18621900// EnumDeclaration
18631901
18641902type EnumDeclaration struct {
@@ -2654,6 +2692,10 @@ func (f *NodeFactory) NewOmittedExpression() *Node {
26542692 return f .newNode (KindOmittedExpression , & OmittedExpression {})
26552693}
26562694
2695+ func IsOmittedExpression (node * Node ) bool {
2696+ return node .Kind == KindOmittedExpression
2697+ }
2698+
26572699// KeywordExpression
26582700
26592701type KeywordExpression struct {
@@ -3223,6 +3265,10 @@ func (node *TaggedTemplateExpression) ForEachChild(v Visitor) bool {
32233265 return visit (v , node .Tag ) || visit (v , node .QuestionDotToken ) || visitNodeList (v , node .TypeArguments ) || visit (v , node .Template )
32243266}
32253267
3268+ func IsTaggedTemplateExpression (node * Node ) bool {
3269+ return node .Kind == KindTaggedTemplateExpression
3270+ }
3271+
32263272// ParenthesizedExpression
32273273
32283274type ParenthesizedExpression struct {
@@ -3870,6 +3916,10 @@ func (node *TypeLiteralNode) ForEachChild(v Visitor) bool {
38703916 return visitNodeList (v , node .Members )
38713917}
38723918
3919+ func IsTypeLiteralNode (node * Node ) bool {
3920+ return node .Kind == KindTypeLiteral
3921+ }
3922+
38733923// TupleTypeNode
38743924
38753925type TupleTypeNode struct {
0 commit comments