Instead of creating clone of the jsxFactory's leaf node, create synthesized node

Fixes #12467
This avoid setting original node which would be something from isolated parsing and hence not valid when resolving expression
This commit is contained in:
Sheetal Nandi
2016-11-23 12:20:55 -08:00
parent 4701eb70e2
commit 4e7313b4f6
5 changed files with 98 additions and 10 deletions

View File

@@ -1677,16 +1677,10 @@ namespace ts {
function createJsxFactoryExpressionFromEntityName(jsxFactory: EntityName, parent: JsxOpeningLikeElement): Expression {
if (isQualifiedName(jsxFactory)) {
return createPropertyAccess(
createJsxFactoryExpressionFromEntityName(
jsxFactory.left,
parent
),
setEmitFlags(
getMutableClone(jsxFactory.right),
EmitFlags.NoSourceMap
)
);
const left = createJsxFactoryExpressionFromEntityName(jsxFactory.left, parent);
const right = <Identifier>createSynthesizedNode(SyntaxKind.Identifier);
right.text = jsxFactory.right.text;
return createPropertyAccess(left, right);
}
else {
return createReactNamespace(jsxFactory.text, parent);