Bind JSDoc on SemicolonClassElement (#54044)

This commit is contained in:
Nathan Shively-Sanders
2023-04-27 11:47:16 -07:00
committed by GitHub
parent 3c43b6b1be
commit 063276aac9
9 changed files with 72 additions and 7 deletions
+2 -2
View File
@@ -7835,12 +7835,12 @@ namespace Parser {
function parseClassElement(): ClassElement {
const pos = getNodePos();
const hasJSDoc = hasPrecedingJSDocComment();
if (token() === SyntaxKind.SemicolonToken) {
nextToken();
return finishNode(factory.createSemicolonClassElement(), pos);
return withJSDoc(finishNode(factory.createSemicolonClassElement(), pos), hasJSDoc);
}
const hasJSDoc = hasPrecedingJSDocComment();
const modifiers = parseModifiers(/*allowDecorators*/ true, /*permitConstAsModifier*/ true, /*stopOnStartOfClassStaticBlock*/ true);
if (token() === SyntaxKind.StaticKeyword && lookAhead(nextTokenIsOpenBrace)) {
return parseClassStaticBlockDeclaration(pos, hasJSDoc, modifiers);
+2 -1
View File
@@ -1219,6 +1219,7 @@ export type HasJSDoc =
| PropertyDeclaration
| PropertySignature
| ReturnStatement
| SemicolonClassElement
| ShorthandPropertyAssignment
| SpreadAssignment
| SwitchStatement
@@ -2101,7 +2102,7 @@ export interface ConstructorDeclaration extends FunctionLikeDeclarationBase, Cla
}
/** For when we encounter a semicolon in a class declaration. ES6 allows these as class elements. */
export interface SemicolonClassElement extends ClassElement {
export interface SemicolonClassElement extends ClassElement, JSDocContainer {
readonly kind: SyntaxKind.SemicolonClassElement;
readonly parent: ClassLikeDeclaration;
}
+1
View File
@@ -4180,6 +4180,7 @@ export function canHaveJSDoc(node: Node): node is HasJSDoc {
case SyntaxKind.PropertyDeclaration:
case SyntaxKind.PropertySignature:
case SyntaxKind.ReturnStatement:
case SyntaxKind.SemicolonClassElement:
case SyntaxKind.SetAccessor:
case SyntaxKind.ShorthandPropertyAssignment:
case SyntaxKind.SpreadAssignment: