@@ -196,6 +196,7 @@ import {
196
196
JSDocTemplateTag,
197
197
JSDocText,
198
198
JSDocThisTag,
199
+ JSDocThrowsTag,
199
200
JSDocTypedefTag,
200
201
JSDocTypeExpression,
201
202
JSDocTypeLiteral,
@@ -1100,10 +1101,11 @@ const forEachChildTable: ForEachChildTable = {
1100
1101
visitNode(cbNode, node.typeExpression) ||
1101
1102
(typeof node.comment === "string" ? undefined : visitNodes(cbNode, cbNodes, node.comment));
1102
1103
},
1103
- [SyntaxKind.JSDocReturnTag]: forEachChildInJSDocReturnTag,
1104
- [SyntaxKind.JSDocTypeTag]: forEachChildInJSDocReturnTag,
1105
- [SyntaxKind.JSDocThisTag]: forEachChildInJSDocReturnTag,
1106
- [SyntaxKind.JSDocEnumTag]: forEachChildInJSDocReturnTag,
1104
+ [SyntaxKind.JSDocReturnTag]: forEachChildInJSDocTypeLikeTag,
1105
+ [SyntaxKind.JSDocTypeTag]: forEachChildInJSDocTypeLikeTag,
1106
+ [SyntaxKind.JSDocThisTag]: forEachChildInJSDocTypeLikeTag,
1107
+ [SyntaxKind.JSDocEnumTag]: forEachChildInJSDocTypeLikeTag,
1108
+ [SyntaxKind.JSDocThrowsTag]: forEachChildInJSDocTypeLikeTag,
1107
1109
[SyntaxKind.JSDocSignature]: function forEachChildInJSDocSignature<T>(node: JSDocSignature, cbNode: (node: Node) => T | undefined, _cbNodes?: (nodes: NodeArray<Node>) => T | undefined): T | undefined {
1108
1110
return forEach(node.typeParameters, cbNode) ||
1109
1111
forEach(node.parameters, cbNode) ||
@@ -1197,7 +1199,7 @@ function forEachChildInJSDocParameterOrPropertyTag<T>(node: JSDocParameterTag |
1197
1199
(typeof node.comment === "string" ? undefined : visitNodes(cbNode, cbNodes, node.comment));
1198
1200
}
1199
1201
1200
- function forEachChildInJSDocReturnTag <T>(node: JSDocReturnTag | JSDocTypeTag | JSDocThisTag | JSDocEnumTag, cbNode: (node: Node) => T | undefined, cbNodes?: (nodes: NodeArray<Node>) => T | undefined): T | undefined {
1202
+ function forEachChildInJSDocTypeLikeTag <T>(node: JSDocReturnTag | JSDocTypeTag | JSDocThisTag | JSDocEnumTag | JSDocThrowsTag , cbNode: (node: Node) => T | undefined, cbNodes?: (nodes: NodeArray<Node>) => T | undefined): T | undefined {
1201
1203
return visitNode(cbNode, node.tagName) ||
1202
1204
visitNode(cbNode, node.typeExpression) ||
1203
1205
(typeof node.comment === "string" ? undefined : visitNodes(cbNode, cbNodes, node.comment));
@@ -8785,6 +8787,10 @@ namespace Parser {
8785
8787
case "see":
8786
8788
tag = parseSeeTag(start, tagName, margin, indentText);
8787
8789
break;
8790
+ case "exception":
8791
+ case "throws":
8792
+ tag = parseThrowsTag(start, tagName, margin, indentText);
8793
+ break;
8788
8794
default:
8789
8795
tag = parseUnknownTag(start, tagName, margin, indentText);
8790
8796
break;
@@ -9090,6 +9096,12 @@ namespace Parser {
9090
9096
return finishNode(factory.createJSDocSeeTag(tagName, nameExpression, comments), start);
9091
9097
}
9092
9098
9099
+ function parseThrowsTag(start: number, tagName: Identifier, indent: number, indentText: string): JSDocThrowsTag {
9100
+ const typeExpression = tryParseTypeExpression();
9101
+ const comment = parseTrailingTagComments(start, getNodePos(), indent, indentText);
9102
+ return finishNode(factory.createJSDocThrowsTag(tagName, typeExpression, comment), start);
9103
+ }
9104
+
9093
9105
function parseAuthorTag(start: number, tagName: Identifier, indent: number, indentText: string): JSDocAuthorTag {
9094
9106
const commentStart = getNodePos();
9095
9107
const textOnly = parseAuthorNameAndEmail();
0 commit comments