Merge pull request #27964 from Igorbek/issue27854

Fix bug in reduceEachChild for tagged template expressions
This commit is contained in:
Daniel Rosenwasser
2018-10-22 15:49:54 -07:00
committed by GitHub
3 changed files with 24 additions and 0 deletions

View File

@@ -1111,6 +1111,7 @@ namespace ts {
case SyntaxKind.TaggedTemplateExpression:
result = reduceNode((<TaggedTemplateExpression>node).tag, cbNode, result);
result = reduceNodes((<TaggedTemplateExpression>node).typeArguments, cbNodes, result);
result = reduceNode((<TaggedTemplateExpression>node).template, cbNode, result);
break;

View File

@@ -40,6 +40,16 @@ namespace ts {
return (file: SourceFile) => file;
}
function replaceIdentifiersNamedOldNameWithNewName2(context: TransformationContext) {
const visitor: Visitor = (node) => {
if (isIdentifier(node) && node.text === "oldName") {
return createIdentifier("newName");
}
return visitEachChild(node, visitor, context);
};
return (node: SourceFile) => visitNode(node, visitor);
}
function transformSourceFile(sourceText: string, transformers: TransformerFactory<SourceFile>[]) {
const transformed = transform(createSourceFile("source.ts", sourceText, ScriptTarget.ES2015), transformers);
const printer = createPrinter({ newLine: NewLineKind.CarriageReturnLineFeed }, {
@@ -81,6 +91,18 @@ namespace ts {
}).outputText;
});
testBaseline("issue27854", () => {
return transpileModule(`oldName<{ a: string; }>\` ... \`;`, {
transformers: {
before: [replaceIdentifiersNamedOldNameWithNewName2]
},
compilerOptions: {
newLine: NewLineKind.CarriageReturnLineFeed,
target: ScriptTarget.Latest
}
}).outputText;
});
testBaseline("rewrittenNamespace", () => {
return transpileModule(`namespace Reflect { const x = 1; }`, {
transformers: {

View File

@@ -0,0 +1 @@
newName ` ... `;