@@ -1032,19 +1032,32 @@ namespace ts {
10321032 : node ;
10331033 }
10341034
1035- export function createTaggedTemplate ( tag : Expression , typeArguments : NodeArray < TypeNode > , template : TemplateLiteral ) {
1035+ export function createTaggedTemplate ( tag : Expression , template : TemplateLiteral ) : TaggedTemplateExpression ;
1036+ export function createTaggedTemplate ( tag : Expression , typeArguments : ReadonlyArray < TypeNode > , template : TemplateLiteral ) : TaggedTemplateExpression ;
1037+ /** @internal */
1038+ export function createTaggedTemplate ( tag : Expression , typeArgumentsOrTemplate : ReadonlyArray < TypeNode > | TemplateLiteral , template ?: TemplateLiteral ) : TaggedTemplateExpression ;
1039+ export function createTaggedTemplate ( tag : Expression , typeArgumentsOrTemplate : ReadonlyArray < TypeNode > | TemplateLiteral , template ?: TemplateLiteral ) {
10361040 const node = < TaggedTemplateExpression > createSynthesizedNode ( SyntaxKind . TaggedTemplateExpression ) ;
10371041 node . tag = parenthesizeForAccess ( tag ) ;
1038- node . typeArguments = typeArguments ;
1039- node . template = template ;
1042+ if ( template ) {
1043+ node . typeArguments = asNodeArray ( typeArgumentsOrTemplate as ReadonlyArray < TypeNode > ) ;
1044+ node . template = template ! ;
1045+ }
1046+ else {
1047+ node . typeArguments = undefined ;
1048+ node . template = typeArgumentsOrTemplate as TemplateLiteral ;
1049+ }
10401050 return node ;
10411051 }
10421052
1043- export function updateTaggedTemplate ( node : TaggedTemplateExpression , tag : Expression , typeArguments : NodeArray < TypeNode > , template : TemplateLiteral ) {
1053+ export function updateTaggedTemplate ( node : TaggedTemplateExpression , tag : Expression , template : TemplateLiteral ) : TaggedTemplateExpression ;
1054+ export function updateTaggedTemplate ( node : TaggedTemplateExpression , tag : Expression , typeArguments : ReadonlyArray < TypeNode > , template : TemplateLiteral ) : TaggedTemplateExpression ;
1055+ export function updateTaggedTemplate ( node : TaggedTemplateExpression , tag : Expression , typeArgumentsOrTemplate : ReadonlyArray < TypeNode > | TemplateLiteral , template ?: TemplateLiteral ) {
10441056 return node . tag !== tag
1045- || node . typeArguments !== typeArguments
1046- || node . template !== template
1047- ? updateNode ( createTaggedTemplate ( tag , typeArguments , template ) , node )
1057+ || ( template
1058+ ? node . typeArguments !== typeArgumentsOrTemplate || node . template !== template
1059+ : node . typeArguments !== undefined || node . template !== typeArgumentsOrTemplate )
1060+ ? updateNode ( createTaggedTemplate ( tag , typeArgumentsOrTemplate , template ) , node )
10481061 : node ;
10491062 }
10501063
0 commit comments