Skip to content

Commit b2767ce

Browse files
authored
More type checking (#398)
1 parent fd96154 commit b2767ce

File tree

5 files changed

+931
-52
lines changed

5 files changed

+931
-52
lines changed

internal/ast/ast.go

+46-24
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,8 @@ func (n *Node) Expression() *Node {
287287
return n.AsExternalModuleReference().Expression
288288
case KindExportAssignment:
289289
return n.AsExportAssignment().Expression
290+
case KindDecorator:
291+
return n.AsDecorator().Expression
290292
}
291293
panic("Unhandled case in Node.Expression")
292294
}
@@ -402,6 +404,14 @@ func (n *Node) ModifierFlags() ModifierFlags {
402404
return ModifierFlagsNone
403405
}
404406

407+
func (n *Node) ModifierNodes() []*Node {
408+
modifiers := n.Modifiers()
409+
if modifiers != nil {
410+
return modifiers.Nodes
411+
}
412+
return nil
413+
}
414+
405415
func (n *Node) Type() *Node {
406416
switch n.Kind {
407417
case KindVariableDeclaration:
@@ -555,54 +565,62 @@ func (n *Node) PropertyNameOrName() *Node {
555565
return name
556566
}
557567

558-
func (n *Node) Comments() []*Node {
568+
func (n *Node) CommentList() *NodeList {
559569
switch n.Kind {
560570
case KindJSDoc:
561-
return n.AsJSDoc().Comment.Nodes
571+
return n.AsJSDoc().Comment
562572
case KindJSDocTag:
563-
return n.AsJSDocUnknownTag().Comment.Nodes
573+
return n.AsJSDocUnknownTag().Comment
564574
case KindJSDocAugmentsTag:
565-
return n.AsJSDocAugmentsTag().Comment.Nodes
575+
return n.AsJSDocAugmentsTag().Comment
566576
case KindJSDocImplementsTag:
567-
return n.AsJSDocImplementsTag().Comment.Nodes
577+
return n.AsJSDocImplementsTag().Comment
568578
case KindJSDocDeprecatedTag:
569-
return n.AsJSDocDeprecatedTag().Comment.Nodes
579+
return n.AsJSDocDeprecatedTag().Comment
570580
case KindJSDocPublicTag:
571-
return n.AsJSDocPublicTag().Comment.Nodes
581+
return n.AsJSDocPublicTag().Comment
572582
case KindJSDocPrivateTag:
573-
return n.AsJSDocPrivateTag().Comment.Nodes
583+
return n.AsJSDocPrivateTag().Comment
574584
case KindJSDocProtectedTag:
575-
return n.AsJSDocProtectedTag().Comment.Nodes
585+
return n.AsJSDocProtectedTag().Comment
576586
case KindJSDocReadonlyTag:
577-
return n.AsJSDocReadonlyTag().Comment.Nodes
587+
return n.AsJSDocReadonlyTag().Comment
578588
case KindJSDocOverrideTag:
579-
return n.AsJSDocOverrideTag().Comment.Nodes
589+
return n.AsJSDocOverrideTag().Comment
580590
case KindJSDocCallbackTag:
581-
return n.AsJSDocCallbackTag().Comment.Nodes
591+
return n.AsJSDocCallbackTag().Comment
582592
case KindJSDocOverloadTag:
583-
return n.AsJSDocOverloadTag().Comment.Nodes
593+
return n.AsJSDocOverloadTag().Comment
584594
case KindJSDocParameterTag:
585-
return n.AsJSDocParameterTag().Comment.Nodes
595+
return n.AsJSDocParameterTag().Comment
586596
case KindJSDocReturnTag:
587-
return n.AsJSDocReturnTag().Comment.Nodes
597+
return n.AsJSDocReturnTag().Comment
588598
case KindJSDocThisTag:
589-
return n.AsJSDocThisTag().Comment.Nodes
599+
return n.AsJSDocThisTag().Comment
590600
case KindJSDocTypeTag:
591-
return n.AsJSDocTypeTag().Comment.Nodes
601+
return n.AsJSDocTypeTag().Comment
592602
case KindJSDocTemplateTag:
593-
return n.AsJSDocTemplateTag().Comment.Nodes
603+
return n.AsJSDocTemplateTag().Comment
594604
case KindJSDocTypedefTag:
595-
return n.AsJSDocTypedefTag().Comment.Nodes
605+
return n.AsJSDocTypedefTag().Comment
596606
case KindJSDocSeeTag:
597-
return n.AsJSDocSeeTag().Comment.Nodes
607+
return n.AsJSDocSeeTag().Comment
598608
case KindJSDocPropertyTag:
599-
return n.AsJSDocPropertyTag().Comment.Nodes
609+
return n.AsJSDocPropertyTag().Comment
600610
case KindJSDocSatisfiesTag:
601-
return n.AsJSDocSatisfiesTag().Comment.Nodes
611+
return n.AsJSDocSatisfiesTag().Comment
602612
case KindJSDocImportTag:
603-
return n.AsJSDocImportTag().Comment.Nodes
613+
return n.AsJSDocImportTag().Comment
614+
}
615+
panic("Unhandled case in Node.CommentList: " + n.Kind.String())
616+
}
617+
618+
func (n *Node) Comments() []*Node {
619+
list := n.CommentList()
620+
if list != nil {
621+
return list.Nodes
604622
}
605-
panic("Unhandled case in Node.Comments: " + n.Kind.String())
623+
return nil
606624
}
607625

608626
func (n *Node) Label() *Node {
@@ -7872,6 +7890,10 @@ func (node *SourceFile) SetJSDocDiagnostics(diags []*Diagnostic) {
78727890
node.jsdocDiagnostics = diags
78737891
}
78747892

7893+
func (node *SourceFile) JSDocCache() map[*Node][]*Node {
7894+
return node.jsdocCache
7895+
}
7896+
78757897
func (node *SourceFile) SetJSDocCache(cache map[*Node][]*Node) {
78767898
node.jsdocCache = cache
78777899
}

0 commit comments

Comments
 (0)