@@ -4450,12 +4450,12 @@ namespace ts {
44504450 }
44514451 const parameterTypeNode = typeToTypeNodeHelper(parameterType, context);
44524452
4453- const modifiers = !(context.flags & NodeBuilderFlags.OmitParameterModifiers) && preserveModifierFlags && parameterDeclaration && parameterDeclaration.modifiers ? parameterDeclaration.modifiers.map(getSynthesizedClone ) : undefined;
4453+ const modifiers = !(context.flags & NodeBuilderFlags.OmitParameterModifiers) && preserveModifierFlags && parameterDeclaration && parameterDeclaration.modifiers ? parameterDeclaration.modifiers.map(factory.cloneNode ) : undefined;
44544454 const isRest = parameterDeclaration && isRestParameter(parameterDeclaration) || getCheckFlags(parameterSymbol) & CheckFlags.RestParameter;
44554455 const dotDotDotToken = isRest ? factory.createToken(SyntaxKind.DotDotDotToken) : undefined;
44564456 const name = parameterDeclaration ? parameterDeclaration.name ?
4457- parameterDeclaration.name.kind === SyntaxKind.Identifier ? setEmitFlags(getSynthesizedClone (parameterDeclaration.name), EmitFlags.NoAsciiEscaping) :
4458- parameterDeclaration.name.kind === SyntaxKind.QualifiedName ? setEmitFlags(getSynthesizedClone (parameterDeclaration.name.right), EmitFlags.NoAsciiEscaping) :
4457+ parameterDeclaration.name.kind === SyntaxKind.Identifier ? setEmitFlags(factory.cloneNode (parameterDeclaration.name), EmitFlags.NoAsciiEscaping) :
4458+ parameterDeclaration.name.kind === SyntaxKind.QualifiedName ? setEmitFlags(factory.cloneNode (parameterDeclaration.name.right), EmitFlags.NoAsciiEscaping) :
44594459 cloneBindingName(parameterDeclaration.name) :
44604460 symbolName(parameterSymbol) :
44614461 symbolName(parameterSymbol);
@@ -4479,7 +4479,7 @@ namespace ts {
44794479 trackComputedName(node.expression, context.enclosingDeclaration, context);
44804480 }
44814481 const visited = visitEachChild(node, elideInitializerAndSetEmitFlags, nullTransformationContext, /*nodesVisitor*/ undefined, elideInitializerAndSetEmitFlags)!;
4482- const clone = nodeIsSynthesized(visited) ? visited : getSynthesizedClone (visited);
4482+ const clone = nodeIsSynthesized(visited) ? visited : factory.cloneNode (visited);
44834483 if (clone.kind === SyntaxKind.BindingElement) {
44844484 (<BindingElement>clone).initializer = undefined;
44854485 }
@@ -5935,7 +5935,7 @@ namespace ts {
59355935 // try to reuse the existing annotation
59365936 const existing = getEffectiveTypeAnnotationNode(declWithExistingAnnotation)!;
59375937 const transformed = visitNode(existing, visitExistingNodeTreeSymbols);
5938- return transformed === existing ? getMutableClone( existing) : transformed;
5938+ return transformed === existing ? setTextRange(factory.cloneNode(existing), existing) : transformed;
59395939 }
59405940 const oldFlags = context.flags;
59415941 if (type.flags & TypeFlags.UniqueESSymbol &&
@@ -6689,13 +6689,10 @@ namespace ts {
66896689 if (parentAccess && parentAccess.flowNode) {
66906690 const propName = getDestructuringPropertyName(node);
66916691 if (propName) {
6692- const result = <ElementAccessExpression>createNode(SyntaxKind.ElementAccessExpression, node.pos, node.end);
6693- result.parent = node;
6694- result.expression = <LeftHandSideExpression>parentAccess;
6695- const literal = <StringLiteral>createNode(SyntaxKind.StringLiteral, node.pos, node.end);
6692+ const literal = setTextRange(parseNodeFactory.createStringLiteral(propName), node);
6693+ const result = setTextRange(parseNodeFactory.createElementAccess(parentAccess, literal), node);
66966694 literal.parent = result;
6697- literal.text = propName;
6698- result.argumentExpression = literal;
6695+ result.parent = node;
66996696 result.flowNode = parentAccess.flowNode;
67006697 return result;
67016698 }
@@ -20231,7 +20228,8 @@ namespace ts {
2023120228 if (returnType && returnType.flags & TypeFlags.Union) {
2023220229 const unionTypes = (<UnionTypeNode>funcTypeNode.type).types;
2023320230 if (unionTypes && unionTypes[unionTypes.length - 1].kind === SyntaxKind.UndefinedKeyword) {
20234- const parenedFuncType = getMutableClone(funcTypeNode);
20231+ // TODO(rbuckton): Does this need to be parented?
20232+ const parenedFuncType = setParent(setTextRange(factory.cloneNode(funcTypeNode), funcTypeNode), funcTypeNode.parent);
2023520233 // Highlight to the end of the second to last constituent of the union
2023620234 parenedFuncType.end = unionTypes[unionTypes.length - 2].end;
2023720235 addRelatedInfo(diag, createDiagnosticForNode(parenedFuncType, Diagnostics.Did_you_mean_to_parenthesize_this_function_type));
@@ -23901,10 +23899,9 @@ namespace ts {
2390123899 }
2390223900
2390323901 function createSyntheticExpression(parent: Node, type: Type, isSpread?: boolean) {
23904- const result = <SyntheticExpression>createNode(SyntaxKind.SyntheticExpression, parent.pos, parent.end);
23902+ const result = parseNodeFactory.createSyntheticExpression(type, isSpread);
23903+ setTextRange(result, parent);
2390523904 result.parent = parent;
23906- result.type = type;
23907- result.isSpread = isSpread || false;
2390823905 return result;
2390923906 }
2391023907
0 commit comments