Skip to content

Commit 68ce68d

Browse files
Merge pull request #27964 from Igorbek/issue27854
Fix bug in reduceEachChild for tagged template expressions
2 parents 3425614 + b930d57 commit 68ce68d

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

src/compiler/visitor.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,6 +1111,7 @@ namespace ts {
11111111

11121112
case SyntaxKind.TaggedTemplateExpression:
11131113
result = reduceNode((<TaggedTemplateExpression>node).tag, cbNode, result);
1114+
result = reduceNodes((<TaggedTemplateExpression>node).typeArguments, cbNodes, result);
11141115
result = reduceNode((<TaggedTemplateExpression>node).template, cbNode, result);
11151116
break;
11161117

src/testRunner/unittests/transform.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,16 @@ namespace ts {
4040
return (file: SourceFile) => file;
4141
}
4242

43+
function replaceIdentifiersNamedOldNameWithNewName2(context: TransformationContext) {
44+
const visitor: Visitor = (node) => {
45+
if (isIdentifier(node) && node.text === "oldName") {
46+
return createIdentifier("newName");
47+
}
48+
return visitEachChild(node, visitor, context);
49+
};
50+
return (node: SourceFile) => visitNode(node, visitor);
51+
}
52+
4353
function transformSourceFile(sourceText: string, transformers: TransformerFactory<SourceFile>[]) {
4454
const transformed = transform(createSourceFile("source.ts", sourceText, ScriptTarget.ES2015), transformers);
4555
const printer = createPrinter({ newLine: NewLineKind.CarriageReturnLineFeed }, {
@@ -81,6 +91,18 @@ namespace ts {
8191
}).outputText;
8292
});
8393

94+
testBaseline("issue27854", () => {
95+
return transpileModule(`oldName<{ a: string; }>\` ... \`;`, {
96+
transformers: {
97+
before: [replaceIdentifiersNamedOldNameWithNewName2]
98+
},
99+
compilerOptions: {
100+
newLine: NewLineKind.CarriageReturnLineFeed,
101+
target: ScriptTarget.Latest
102+
}
103+
}).outputText;
104+
});
105+
84106
testBaseline("rewrittenNamespace", () => {
85107
return transpileModule(`namespace Reflect { const x = 1; }`, {
86108
transformers: {
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
newName ` ... `;

0 commit comments

Comments
 (0)