@@ -334,9 +334,13 @@ export class NodeParser {
334
334
}
335
335
}
336
336
337
+ /**
338
+ * Used by `_parseParamBlock()`, this parses a JSDoc expression remainder like `string}` or `="]"]` from
339
+ * an input like `@param {string} [x="]"] - the X value`. It detects nested balanced pairs of delimiters
340
+ * and escaped string literals.
341
+ */
337
342
private _tryParseJSDocTypeOrValueRest ( tokenReader : TokenReader , openKind : TokenKind , closeKind : TokenKind ) : TokenSequence | undefined {
338
343
const startMarker : number = tokenReader . createMarker ( ) ;
339
- tokenReader . readToken ( ) ;
340
344
341
345
let quoteKind : TokenKind | undefined ;
342
346
let openCount : number = 1 ;
@@ -382,6 +386,10 @@ export class NodeParser {
382
386
return tokenReader . tryExtractAccumulatedSequence ( ) ;
383
387
}
384
388
389
+ /**
390
+ * Used by `_parseParamBlock()`, this parses a JSDoc expression like `{string}` from
391
+ * an input like `@param {string} x - the X value`.
392
+ */
385
393
private _tryParseUnsupportedJSDocType ( tokenReader : TokenReader , docBlockTag : DocBlockTag , tagName : string ) : TokenSequence | undefined {
386
394
tokenReader . assertAccumulatedSequenceIsEmpty ( ) ;
387
395
@@ -390,6 +398,7 @@ export class NodeParser {
390
398
tokenReader . peekTokenAfterKind ( ) === TokenKind . AtSign ) {
391
399
return undefined ;
392
400
}
401
+ tokenReader . readToken ( ) ; // read the "{"
393
402
394
403
let jsdocTypeExcerpt : TokenSequence | undefined = this . _tryParseJSDocTypeOrValueRest ( tokenReader , TokenKind . LeftCurlyBracket , TokenKind . RightCurlyBracket ) ;
395
404
if ( jsdocTypeExcerpt ) {
@@ -411,6 +420,10 @@ export class NodeParser {
411
420
return jsdocTypeExcerpt ;
412
421
}
413
422
423
+ /**
424
+ * Used by `_parseParamBlock()`, this parses a JSDoc expression remainder like `=[]]` from
425
+ * an input like `@param {string} [x=[]] - the X value`.
426
+ */
414
427
private _tryParseJSDocOptionalNameRest ( tokenReader : TokenReader ) : TokenSequence | undefined {
415
428
tokenReader . assertAccumulatedSequenceIsEmpty ( ) ;
416
429
if ( tokenReader . peekTokenKind ( ) !== TokenKind . EndOfInput ) {
@@ -431,7 +444,7 @@ export class NodeParser {
431
444
// Parse opening of invalid JSDoc optional parameter name (e.g., '[')
432
445
let unsupportedJsdocOptionalNameOpenBracketExcerpt : TokenSequence | undefined ;
433
446
if ( tokenReader . peekTokenKind ( ) === TokenKind . LeftSquareBracket ) {
434
- tokenReader . readToken ( ) ;
447
+ tokenReader . readToken ( ) ; // read the "["
435
448
unsupportedJsdocOptionalNameOpenBracketExcerpt = tokenReader . extractAccumulatedSequence ( ) ;
436
449
}
437
450
0 commit comments