Skip to content

Commit 4bfb1a3

Browse files
Avoid breaking change by introducing overloads for 'createTaggedTemplate'/'updateTaggedTemplate'.
1 parent a2073f1 commit 4bfb1a3

2 files changed

Lines changed: 20 additions & 8 deletions

File tree

src/compiler/factory.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

src/compiler/parser.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4370,7 +4370,6 @@ namespace ts {
43704370

43714371
return <MemberExpression>expression;
43724372
}
4373-
43744373
}
43754374

43764375
function isTemplateStartOfTaggedTemplate() {

0 commit comments

Comments
 (0)