@@ -2464,64 +2464,155 @@ namespace ts {
2464
2464
2465
2465
// JSDoc
2466
2466
2467
- /* @internal */
2468
2467
export function createJSDocTypeExpression ( type : TypeNode ) : JSDocTypeExpression {
2469
2468
const node = createSynthesizedNode ( SyntaxKind . JSDocTypeExpression ) as JSDocTypeExpression ;
2470
2469
node . type = type ;
2471
2470
return node ;
2472
2471
}
2473
2472
2474
- /* @internal */
2475
2473
export function createJSDocTypeTag ( typeExpression : JSDocTypeExpression , comment ?: string ) : JSDocTypeTag {
2476
- const tag = createJSDocTag < JSDocTypeTag > ( SyntaxKind . JSDocTypeTag , "type" ) ;
2474
+ const tag = createJSDocTag < JSDocTypeTag > ( SyntaxKind . JSDocTypeTag , "type" , comment ) ;
2477
2475
tag . typeExpression = typeExpression ;
2478
- tag . comment = comment ;
2479
2476
return tag ;
2480
2477
}
2481
2478
2482
- /* @internal */
2483
2479
export function createJSDocReturnTag ( typeExpression ?: JSDocTypeExpression , comment ?: string ) : JSDocReturnTag {
2484
- const tag = createJSDocTag < JSDocReturnTag > ( SyntaxKind . JSDocReturnTag , "returns" ) ;
2480
+ const tag = createJSDocTag < JSDocReturnTag > ( SyntaxKind . JSDocReturnTag , "returns" , comment ) ;
2485
2481
tag . typeExpression = typeExpression ;
2486
- tag . comment = comment ;
2487
2482
return tag ;
2488
2483
}
2489
2484
2490
- /** @internal */
2491
2485
export function createJSDocThisTag ( typeExpression ?: JSDocTypeExpression ) : JSDocThisTag {
2492
2486
const tag = createJSDocTag < JSDocThisTag > ( SyntaxKind . JSDocThisTag , "this" ) ;
2493
2487
tag . typeExpression = typeExpression ;
2494
2488
return tag ;
2495
2489
}
2496
2490
2497
- /* @internal */
2491
+ /**
2492
+ * @deprecated Use `createJSDocParameterTag` to create jsDoc param tag.
2493
+ */
2498
2494
export function createJSDocParamTag ( name : EntityName , isBracketed : boolean , typeExpression ?: JSDocTypeExpression , comment ?: string ) : JSDocParameterTag {
2499
- const tag = createJSDocTag < JSDocParameterTag > ( SyntaxKind . JSDocParameterTag , "param" ) ;
2495
+ const tag = createJSDocTag < JSDocParameterTag > ( SyntaxKind . JSDocParameterTag , "param" , comment ) ;
2500
2496
tag . typeExpression = typeExpression ;
2501
2497
tag . name = name ;
2502
2498
tag . isBracketed = isBracketed ;
2503
- tag . comment = comment ;
2504
2499
return tag ;
2505
2500
}
2506
2501
2507
- /* @internal */
2508
- export function createJSDocClassTag ( ) : JSDocClassTag {
2509
- return createJSDocTag < JSDocClassTag > ( SyntaxKind . JSDocClassTag , "class" ) ;
2502
+ export function createJSDocClassTag ( comment ?: string ) : JSDocClassTag {
2503
+ return createJSDocTag < JSDocClassTag > ( SyntaxKind . JSDocClassTag , "class" , comment ) ;
2510
2504
}
2511
2505
2512
2506
2513
- /* @internal */
2514
2507
export function createJSDocComment ( comment ?: string | undefined , tags ?: NodeArray < JSDocTag > | undefined ) {
2515
2508
const node = createSynthesizedNode ( SyntaxKind . JSDocComment ) as JSDoc ;
2516
2509
node . comment = comment ;
2517
2510
node . tags = tags ;
2518
2511
return node ;
2519
2512
}
2520
2513
2521
- /* @internal */
2522
- function createJSDocTag < T extends JSDocTag > ( kind : T [ "kind" ] , tagName : string ) : T {
2514
+ export function createJSDocTag < T extends JSDocTag > ( kind : T [ "kind" ] , tagName : string , comment ?: string ) : T {
2523
2515
const node = createSynthesizedNode ( kind ) as T ;
2524
2516
node . tagName = createIdentifier ( tagName ) ;
2517
+ node . comment = comment ;
2518
+ return node ;
2519
+ }
2520
+
2521
+ export function createJSDocAugmentsTag ( classExpression : JSDocAugmentsTag [ "class" ] , comment ?: string ) {
2522
+ const tag = createJSDocTag < JSDocAugmentsTag > ( SyntaxKind . JSDocAugmentsTag , "augments" , comment ) ;
2523
+ tag . class = classExpression ;
2524
+ return tag ;
2525
+ }
2526
+
2527
+ export function createJSDocEnumTag ( typeExpression ?: JSDocTypeExpression , comment ?: string ) {
2528
+ const tag = createJSDocTag < JSDocEnumTag > ( SyntaxKind . JSDocEnumTag , "enum" , comment ) ;
2529
+ tag . typeExpression = typeExpression ;
2530
+ return tag ;
2531
+ }
2532
+
2533
+ export function createJSDocTemplateTag ( constraint : JSDocTypeExpression | undefined , typeParameters : readonly TypeParameterDeclaration [ ] , comment ?: string ) {
2534
+ const tag = createJSDocTag < JSDocTemplateTag > ( SyntaxKind . JSDocTemplateTag , "template" , comment ) ;
2535
+ tag . constraint = constraint ;
2536
+ tag . typeParameters = asNodeArray ( typeParameters ) ;
2537
+ return tag ;
2538
+ }
2539
+
2540
+ export function createJSDocTypedefTag ( fullName ?: JSDocNamespaceDeclaration | Identifier , name ?: Identifier , comment ?: string , typeExpression ?: JSDocTypeExpression | JSDocTypeLiteral ) {
2541
+ const tag = createJSDocTag < JSDocTypedefTag > ( SyntaxKind . JSDocTypedefTag , "typedef" , comment ) ;
2542
+ tag . fullName = fullName ;
2543
+ tag . name = name ;
2544
+ tag . typeExpression = typeExpression ;
2545
+ return tag ;
2546
+ }
2547
+
2548
+ export function createJSDocCallbackTag ( fullName : JSDocNamespaceDeclaration | Identifier | undefined , name : Identifier | undefined , comment : string | undefined , typeExpression : JSDocSignature ) {
2549
+ const tag = createJSDocTag < JSDocCallbackTag > ( SyntaxKind . JSDocCallbackTag , "callback" , comment ) ;
2550
+ tag . fullName = fullName ;
2551
+ tag . name = name ;
2552
+ tag . typeExpression = typeExpression ;
2553
+ return tag ;
2554
+ }
2555
+
2556
+ export function createJSDocSignature ( typeParameters : readonly JSDocTemplateTag [ ] | undefined , parameters : readonly JSDocParameterTag [ ] , type ?: JSDocReturnTag ) {
2557
+ const tag = createSynthesizedNode ( SyntaxKind . JSDocSignature ) as JSDocSignature ;
2558
+ tag . typeParameters = typeParameters ;
2559
+ tag . parameters = parameters ;
2560
+ tag . type = type ;
2561
+ return tag ;
2562
+ }
2563
+
2564
+ function createJSDocPropertyLikeTag < T extends JSDocPropertyLikeTag > ( kind : T [ "kind" ] , tagName : "arg" | "argument" | "param" , typeExpression : JSDocTypeExpression | undefined , name : EntityName , isNameFirst : boolean , isBracketed : boolean , comment ?: string ) {
2565
+ const tag = createJSDocTag < T > ( kind , tagName , comment ) ;
2566
+ tag . typeExpression = typeExpression ;
2567
+ tag . name = name ;
2568
+ tag . isNameFirst = isNameFirst ;
2569
+ tag . isBracketed = isBracketed ;
2570
+ return tag ;
2571
+ }
2572
+
2573
+ export function createJSDocPropertyTag ( typeExpression : JSDocTypeExpression | undefined , name : EntityName , isNameFirst : boolean , isBracketed : boolean , comment ?: string ) {
2574
+ return createJSDocPropertyLikeTag < JSDocPropertyTag > ( SyntaxKind . JSDocPropertyTag , "param" , typeExpression , name , isNameFirst , isBracketed , comment ) ;
2575
+ }
2576
+
2577
+ export function createJSDocParameterTag ( typeExpression : JSDocTypeExpression | undefined , name : EntityName , isNameFirst : boolean , isBracketed : boolean , comment ?: string ) {
2578
+ return createJSDocPropertyLikeTag < JSDocParameterTag > ( SyntaxKind . JSDocParameterTag , "param" , typeExpression , name , isNameFirst , isBracketed , comment ) ;
2579
+ }
2580
+
2581
+ export function createJSDocTypeLiteral ( jsDocPropertyTags ?: readonly JSDocPropertyLikeTag [ ] , isArrayType ?: boolean ) {
2582
+ const tag = createSynthesizedNode ( SyntaxKind . JSDocTypeLiteral ) as JSDocTypeLiteral ;
2583
+ tag . jsDocPropertyTags = jsDocPropertyTags ;
2584
+ tag . isArrayType = isArrayType ;
2585
+ return tag ;
2586
+ }
2587
+
2588
+ export function createJSDocImplementsTag ( classExpression : JSDocImplementsTag [ "class" ] , comment ?: string ) {
2589
+ const tag = createJSDocTag < JSDocImplementsTag > ( SyntaxKind . JSDocImplementsTag , "implements" , comment ) ;
2590
+ tag . class = classExpression ;
2591
+ return tag ;
2592
+ }
2593
+
2594
+ export function createJSDocAuthorTag ( comment ?: string ) {
2595
+ return createJSDocTag ( SyntaxKind . JSDocAuthorTag , "author" , comment ) ;
2596
+ }
2597
+
2598
+ export function createJSDocPublicTag ( ) {
2599
+ return createJSDocTag ( SyntaxKind . JSDocPublicTag , "public" ) ;
2600
+ }
2601
+
2602
+ export function createJSDocPrivateTag ( ) {
2603
+ return createJSDocTag ( SyntaxKind . JSDocPrivateTag , "private" ) ;
2604
+ }
2605
+
2606
+ export function createJSDocProtectedTag ( ) {
2607
+ return createJSDocTag ( SyntaxKind . JSDocProtectedTag , "protected" ) ;
2608
+ }
2609
+
2610
+ export function createJSDocReadonlyTag ( ) {
2611
+ return createJSDocTag ( SyntaxKind . JSDocReadonlyTag , "readonly" ) ;
2612
+ }
2613
+
2614
+ export function appendJSDocToContainer ( node : JSDocContainer , jsdoc : JSDoc ) {
2615
+ node . jsDoc = append ( node . jsDoc , jsdoc ) ;
2525
2616
return node ;
2526
2617
}
2527
2618
0 commit comments