@@ -810,15 +810,15 @@ namespace ts {
810
810
: node ;
811
811
}
812
812
813
- export function createTupleTypeNode ( elementTypes : readonly TypeNode [ ] ) {
813
+ export function createTupleTypeNode ( elements : readonly ( TypeNode | NamedTupleMember ) [ ] ) {
814
814
const node = createSynthesizedNode ( SyntaxKind . TupleType ) as TupleTypeNode ;
815
- node . elementTypes = createNodeArray ( elementTypes ) ;
815
+ node . elements = createNodeArray ( elements ) ;
816
816
return node ;
817
817
}
818
818
819
- export function updateTupleTypeNode ( node : TupleTypeNode , elementTypes : readonly TypeNode [ ] ) {
820
- return node . elementTypes !== elementTypes
821
- ? updateNode ( createTupleTypeNode ( elementTypes ) , node )
819
+ export function updateTupleTypeNode ( node : TupleTypeNode , elements : readonly ( TypeNode | NamedTupleMember ) [ ] ) {
820
+ return node . elements !== elements
821
+ ? updateNode ( createTupleTypeNode ( elements ) , node )
822
822
: node ;
823
823
}
824
824
@@ -934,6 +934,24 @@ namespace ts {
934
934
: node ;
935
935
}
936
936
937
+ export function createNamedTupleMember ( dotDotDotToken : Token < SyntaxKind . DotDotDotToken > | undefined , name : Identifier , questionToken : Token < SyntaxKind . QuestionToken > | undefined , type : TypeNode ) {
938
+ const node = < NamedTupleMember > createSynthesizedNode ( SyntaxKind . NamedTupleMember ) ;
939
+ node . dotDotDotToken = dotDotDotToken ;
940
+ node . name = name ;
941
+ node . questionToken = questionToken ;
942
+ node . type = type ;
943
+ return node ;
944
+ }
945
+
946
+ export function updateNamedTupleMember ( node : NamedTupleMember , dotDotDotToken : Token < SyntaxKind . DotDotDotToken > | undefined , name : Identifier , questionToken : Token < SyntaxKind . QuestionToken > | undefined , type : TypeNode ) {
947
+ return node . dotDotDotToken !== dotDotDotToken
948
+ || node . name !== name
949
+ || node . questionToken !== questionToken
950
+ || node . type !== type
951
+ ? updateNode ( createNamedTupleMember ( dotDotDotToken , name , questionToken , type ) , node )
952
+ : node ;
953
+ }
954
+
937
955
export function createThisTypeNode ( ) {
938
956
return < ThisTypeNode > createSynthesizedNode ( SyntaxKind . ThisType ) ;
939
957
}
@@ -2592,30 +2610,45 @@ namespace ts {
2592
2610
}
2593
2611
2594
2612
export function createJSDocAuthorTag ( comment ?: string ) {
2595
- return createJSDocTag ( SyntaxKind . JSDocAuthorTag , "author" , comment ) ;
2613
+ return createJSDocTag < JSDocAuthorTag > ( SyntaxKind . JSDocAuthorTag , "author" , comment ) ;
2596
2614
}
2597
2615
2598
2616
export function createJSDocPublicTag ( ) {
2599
- return createJSDocTag ( SyntaxKind . JSDocPublicTag , "public" ) ;
2617
+ return createJSDocTag < JSDocPublicTag > ( SyntaxKind . JSDocPublicTag , "public" ) ;
2600
2618
}
2601
2619
2602
2620
export function createJSDocPrivateTag ( ) {
2603
- return createJSDocTag ( SyntaxKind . JSDocPrivateTag , "private" ) ;
2621
+ return createJSDocTag < JSDocPrivateTag > ( SyntaxKind . JSDocPrivateTag , "private" ) ;
2604
2622
}
2605
2623
2606
2624
export function createJSDocProtectedTag ( ) {
2607
- return createJSDocTag ( SyntaxKind . JSDocProtectedTag , "protected" ) ;
2625
+ return createJSDocTag < JSDocProtectedTag > ( SyntaxKind . JSDocProtectedTag , "protected" ) ;
2608
2626
}
2609
2627
2610
2628
export function createJSDocReadonlyTag ( ) {
2611
- return createJSDocTag ( SyntaxKind . JSDocReadonlyTag , "readonly" ) ;
2629
+ return createJSDocTag < JSDocReadonlyTag > ( SyntaxKind . JSDocReadonlyTag , "readonly" ) ;
2612
2630
}
2613
2631
2614
2632
export function appendJSDocToContainer ( node : JSDocContainer , jsdoc : JSDoc ) {
2615
2633
node . jsDoc = append ( node . jsDoc , jsdoc ) ;
2616
2634
return node ;
2617
2635
}
2618
2636
2637
+
2638
+ /* @internal */
2639
+ export function createJSDocVariadicType ( type : TypeNode ) : JSDocVariadicType {
2640
+ const node = createSynthesizedNode ( SyntaxKind . JSDocVariadicType ) as JSDocVariadicType ;
2641
+ node . type = type ;
2642
+ return node ;
2643
+ }
2644
+
2645
+ /* @internal */
2646
+ export function updateJSDocVariadicType ( node : JSDocVariadicType , type : TypeNode ) : JSDocVariadicType {
2647
+ return node . type !== type
2648
+ ? updateNode ( createJSDocVariadicType ( type ) , node )
2649
+ : node ;
2650
+ }
2651
+
2619
2652
// JSX
2620
2653
2621
2654
export function createJsxElement ( openingElement : JsxOpeningElement , children : readonly JsxChild [ ] , closingElement : JsxClosingElement ) {
0 commit comments