Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions _packages/api/src/node/protocol.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ export const childProperties: Readonly<Partial<Record<SyntaxKind, readonly strin
[SyntaxKind.JSDocImplementsTag]: ["tagName", "class", "comment"],
[SyntaxKind.JSDocAugmentsTag]: ["tagName", "class", "comment"],
[SyntaxKind.JSDocSatisfiesTag]: ["tagName", "typeExpression", "comment"],
[SyntaxKind.JSDocThrowsTag]: ["tagName", "typeExpression", "comment"],
[SyntaxKind.JSDocThisTag]: ["tagName", "typeExpression", "comment"],
[SyntaxKind.JSDocImportTag]: ["tagName", "importClause", "moduleSpecifier", "attributes", "comment"],
[SyntaxKind.JSDocCallbackTag]: ["tagName", "typeExpression", "fullName", "comment"],
Expand Down
27 changes: 14 additions & 13 deletions _packages/ast/src/enums/syntaxKind.enum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -349,19 +349,20 @@ export enum SyntaxKind {
JSDocTypedefTag = 339,
JSDocSeeTag = 340,
JSDocPropertyTag = 341,
JSDocSatisfiesTag = 342,
JSDocImportTag = 343,
SyntaxList = 344,
JSTypeAliasDeclaration = 345,
JSExportAssignment = 346,
CommonJSExport = 347,
JSImportDeclaration = 348,
NotEmittedStatement = 349,
PartiallyEmittedExpression = 350,
CommaListExpression = 351,
SyntheticReferenceExpression = 352,
NotEmittedTypeElement = 353,
Count = 354,
JSDocThrowsTag = 342,
JSDocSatisfiesTag = 343,
JSDocImportTag = 344,
SyntaxList = 345,
JSTypeAliasDeclaration = 346,
JSExportAssignment = 347,
CommonJSExport = 348,
JSImportDeclaration = 349,
NotEmittedStatement = 350,
PartiallyEmittedExpression = 351,
CommaListExpression = 352,
SyntheticReferenceExpression = 353,
NotEmittedTypeElement = 354,
Count = 355,
FirstAssignment = EqualsToken,
LastAssignment = CaretEqualsToken,
FirstCompoundAssignment = PlusEqualsToken,
Expand Down
31 changes: 16 additions & 15 deletions _packages/ast/src/enums/syntaxKind.ts
Original file line number Diff line number Diff line change
Expand Up @@ -350,19 +350,20 @@ export var SyntaxKind: any;
SyntaxKind[SyntaxKind["JSDocTypedefTag"] = 339] = "JSDocTypedefTag";
SyntaxKind[SyntaxKind["JSDocSeeTag"] = 340] = "JSDocSeeTag";
SyntaxKind[SyntaxKind["JSDocPropertyTag"] = 341] = "JSDocPropertyTag";
SyntaxKind[SyntaxKind["JSDocSatisfiesTag"] = 342] = "JSDocSatisfiesTag";
SyntaxKind[SyntaxKind["JSDocImportTag"] = 343] = "JSDocImportTag";
SyntaxKind[SyntaxKind["SyntaxList"] = 344] = "SyntaxList";
SyntaxKind[SyntaxKind["JSTypeAliasDeclaration"] = 345] = "JSTypeAliasDeclaration";
SyntaxKind[SyntaxKind["JSExportAssignment"] = 346] = "JSExportAssignment";
SyntaxKind[SyntaxKind["CommonJSExport"] = 347] = "CommonJSExport";
SyntaxKind[SyntaxKind["JSImportDeclaration"] = 348] = "JSImportDeclaration";
SyntaxKind[SyntaxKind["NotEmittedStatement"] = 349] = "NotEmittedStatement";
SyntaxKind[SyntaxKind["PartiallyEmittedExpression"] = 350] = "PartiallyEmittedExpression";
SyntaxKind[SyntaxKind["CommaListExpression"] = 351] = "CommaListExpression";
SyntaxKind[SyntaxKind["SyntheticReferenceExpression"] = 352] = "SyntheticReferenceExpression";
SyntaxKind[SyntaxKind["NotEmittedTypeElement"] = 353] = "NotEmittedTypeElement";
SyntaxKind[SyntaxKind["Count"] = 354] = "Count";
SyntaxKind[SyntaxKind["JSDocThrowsTag"] = 342] = "JSDocThrowsTag";
SyntaxKind[SyntaxKind["JSDocSatisfiesTag"] = 343] = "JSDocSatisfiesTag";
SyntaxKind[SyntaxKind["JSDocImportTag"] = 344] = "JSDocImportTag";
SyntaxKind[SyntaxKind["SyntaxList"] = 345] = "SyntaxList";
SyntaxKind[SyntaxKind["JSTypeAliasDeclaration"] = 346] = "JSTypeAliasDeclaration";
SyntaxKind[SyntaxKind["JSExportAssignment"] = 347] = "JSExportAssignment";
SyntaxKind[SyntaxKind["CommonJSExport"] = 348] = "CommonJSExport";
SyntaxKind[SyntaxKind["JSImportDeclaration"] = 349] = "JSImportDeclaration";
SyntaxKind[SyntaxKind["NotEmittedStatement"] = 350] = "NotEmittedStatement";
SyntaxKind[SyntaxKind["PartiallyEmittedExpression"] = 351] = "PartiallyEmittedExpression";
SyntaxKind[SyntaxKind["CommaListExpression"] = 352] = "CommaListExpression";
SyntaxKind[SyntaxKind["SyntheticReferenceExpression"] = 353] = "SyntheticReferenceExpression";
SyntaxKind[SyntaxKind["NotEmittedTypeElement"] = 354] = "NotEmittedTypeElement";
SyntaxKind[SyntaxKind["Count"] = 355] = "Count";
SyntaxKind[SyntaxKind["FirstAssignment"] = 63] = "FirstAssignment";
SyntaxKind[SyntaxKind["LastAssignment"] = 78] = "LastAssignment";
SyntaxKind[SyntaxKind["FirstCompoundAssignment"] = 64] = "FirstCompoundAssignment";
Expand All @@ -389,9 +390,9 @@ export var SyntaxKind: any;
SyntaxKind[SyntaxKind["LastStatement"] = 260] = "LastStatement";
SyntaxKind[SyntaxKind["FirstNode"] = 167] = "FirstNode";
SyntaxKind[SyntaxKind["FirstJSDocNode"] = 308] = "FirstJSDocNode";
SyntaxKind[SyntaxKind["LastJSDocNode"] = 343] = "LastJSDocNode";
SyntaxKind[SyntaxKind["LastJSDocNode"] = 344] = "LastJSDocNode";
SyntaxKind[SyntaxKind["FirstJSDocTagNode"] = 323] = "FirstJSDocTagNode";
SyntaxKind[SyntaxKind["LastJSDocTagNode"] = 343] = "LastJSDocTagNode";
SyntaxKind[SyntaxKind["LastJSDocTagNode"] = 344] = "LastJSDocTagNode";
SyntaxKind[SyntaxKind["FirstContextualKeyword"] = 127] = "FirstContextualKeyword";
SyntaxKind[SyntaxKind["LastContextualKeyword"] = 166] = "LastContextualKeyword";
SyntaxKind[SyntaxKind["Comment"] = 3] = "Comment";
Expand Down
7 changes: 7 additions & 0 deletions internal/api/encoder/decoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -1055,6 +1055,13 @@ func (d *astDecoder) createChildrenNode(kind ast.Kind, data uint32, childIndices
comment := d.nodeListAt(it.nextIf(mask, 2))
return d.factory.NewJSDocSatisfiesTag(tagName, typeExpr, comment), nil

case ast.KindJSDocThrowsTag:
it := newChildIter(childIndices)
tagName := d.nodeAt(it.nextIf(mask, 0))
typeExpr := d.nodeAt(it.nextIf(mask, 1))
comment := d.nodeListAt(it.nextIf(mask, 2))
return d.factory.NewJSDocThrowsTag(tagName, typeExpr, comment), nil

case ast.KindJSDocThisTag:
it := newChildIter(childIndices)
tagName := d.nodeAt(it.nextIf(mask, 0))
Expand Down
3 changes: 3 additions & 0 deletions internal/api/encoder/encoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -834,6 +834,9 @@ func getChildrenPropertyMask(node *ast.Node) uint8 {
case ast.KindJSDocSatisfiesTag:
n := node.AsJSDocSatisfiesTag()
return (boolToByte(n.TagName != nil) << 0) | (boolToByte(n.TypeExpression != nil) << 1) | (boolToByte(n.Comment != nil) << 2)
case ast.KindJSDocThrowsTag:
n := node.AsJSDocThrowsTag()
return (boolToByte(n.TagName != nil) << 0) | (boolToByte(n.TypeExpression != nil) << 1) | (boolToByte(n.Comment != nil) << 2)
case ast.KindJSDocThisTag:
n := node.AsJSDocThisTag()
return (boolToByte(n.TagName != nil) << 0) | (boolToByte(n.TypeExpression != nil) << 1) | (boolToByte(n.Comment != nil) << 2)
Expand Down
48 changes: 48 additions & 0 deletions internal/ast/ast.go
Original file line number Diff line number Diff line change
Expand Up @@ -902,6 +902,8 @@ func (n *Node) TagName() *Node {
return n.AsJSDocSeeTag().TagName
case KindJSDocSatisfiesTag:
return n.AsJSDocSatisfiesTag().TagName
case KindJSDocThrowsTag:
return n.AsJSDocThrowsTag().TagName
case KindJSDocImportTag:
return n.AsJSDocImportTag().TagName
}
Expand Down Expand Up @@ -987,6 +989,8 @@ func (n *Node) CommentList() *NodeList {
return n.AsJSDocSeeTag().Comment
case KindJSDocSatisfiesTag:
return n.AsJSDocSatisfiesTag().Comment
case KindJSDocThrowsTag:
return n.AsJSDocThrowsTag().Comment
case KindJSDocImportTag:
return n.AsJSDocImportTag().Comment
}
Expand Down Expand Up @@ -1183,6 +1187,8 @@ func (n *Node) TypeExpression() *Node {
return n.AsJSDocTypedefTag().TypeExpression
case KindJSDocSatisfiesTag:
return n.AsJSDocSatisfiesTag().TypeExpression
case KindJSDocThrowsTag:
return n.AsJSDocThrowsTag().TypeExpression
}
panic("Unhandled case in Node.TypeExpression: " + n.Kind.String())
}
Expand Down Expand Up @@ -1931,6 +1937,10 @@ func (n *Node) AsJSDocSatisfiesTag() *JSDocSatisfiesTag {
return n.data.(*JSDocSatisfiesTag)
}

func (n *Node) AsJSDocThrowsTag() *JSDocThrowsTag {
return n.data.(*JSDocThrowsTag)
}

func (n *Node) AsJSDocThisTag() *JSDocThisTag {
return n.data.(*JSDocThisTag)
}
Expand Down Expand Up @@ -10597,6 +10607,44 @@ func IsJSDocSatisfiesTag(node *Node) bool {
return node.Kind == KindJSDocSatisfiesTag
}

// JSDocThrowsTag

type JSDocThrowsTag struct {
JSDocTagBase
TypeExpression *TypeNode
}

func (f *NodeFactory) NewJSDocThrowsTag(tagName *IdentifierNode, typeExpression *TypeNode, comment *NodeList) *Node {
data := &JSDocThrowsTag{}
data.TagName = tagName
data.TypeExpression = typeExpression
data.Comment = comment
return f.newNode(KindJSDocThrowsTag, data)
}

func (f *NodeFactory) UpdateJSDocThrowsTag(node *JSDocThrowsTag, tagName *IdentifierNode, typeExpression *TypeNode, comment *NodeList) *Node {
if tagName != node.TagName || typeExpression != node.TypeExpression || comment != node.Comment {
return updateNode(f.NewJSDocThrowsTag(tagName, typeExpression, comment), node.AsNode(), f.hooks)
}
return node.AsNode()
}

func (node *JSDocThrowsTag) ForEachChild(v Visitor) bool {
return visit(v, node.TagName) || visit(v, node.TypeExpression) || visitNodeList(v, node.Comment)
}

func (node *JSDocThrowsTag) VisitEachChild(v *NodeVisitor) *Node {
return v.Factory.UpdateJSDocThrowsTag(node, v.visitNode(node.TagName), v.visitNode(node.TypeExpression), v.visitNodes(node.Comment))
}

func (node *JSDocThrowsTag) Clone(f NodeFactoryCoercible) *Node {
return cloneNode(f.AsNodeFactory().NewJSDocThrowsTag(node.TagName, node.TypeExpression, node.Comment), node.AsNode(), f.AsNodeFactory().hooks)
}

func IsJSDocThrowsTag(node *Node) bool {
return node.Kind == KindJSDocThrowsTag
}

// JSDocThisTag

type JSDocThisTag struct {
Expand Down
1 change: 1 addition & 0 deletions internal/ast/kind.go
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,7 @@ const (
KindJSDocTypedefTag
KindJSDocSeeTag
KindJSDocPropertyTag
KindJSDocThrowsTag
KindJSDocSatisfiesTag
KindJSDocImportTag
// Synthesized list
Expand Down
Loading