@@ -4450,12 +4450,12 @@ namespace ts {
4450
4450
}
4451
4451
const parameterTypeNode = typeToTypeNodeHelper(parameterType, context);
4452
4452
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;
4454
4454
const isRest = parameterDeclaration && isRestParameter(parameterDeclaration) || getCheckFlags(parameterSymbol) & CheckFlags.RestParameter;
4455
4455
const dotDotDotToken = isRest ? factory.createToken(SyntaxKind.DotDotDotToken) : undefined;
4456
4456
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) :
4459
4459
cloneBindingName(parameterDeclaration.name) :
4460
4460
symbolName(parameterSymbol) :
4461
4461
symbolName(parameterSymbol);
@@ -4479,7 +4479,7 @@ namespace ts {
4479
4479
trackComputedName(node.expression, context.enclosingDeclaration, context);
4480
4480
}
4481
4481
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);
4483
4483
if (clone.kind === SyntaxKind.BindingElement) {
4484
4484
(<BindingElement>clone).initializer = undefined;
4485
4485
}
@@ -5935,7 +5935,7 @@ namespace ts {
5935
5935
// try to reuse the existing annotation
5936
5936
const existing = getEffectiveTypeAnnotationNode(declWithExistingAnnotation)!;
5937
5937
const transformed = visitNode(existing, visitExistingNodeTreeSymbols);
5938
- return transformed === existing ? getMutableClone( existing) : transformed;
5938
+ return transformed === existing ? setTextRange(factory.cloneNode(existing), existing) : transformed;
5939
5939
}
5940
5940
const oldFlags = context.flags;
5941
5941
if (type.flags & TypeFlags.UniqueESSymbol &&
@@ -6689,13 +6689,10 @@ namespace ts {
6689
6689
if (parentAccess && parentAccess.flowNode) {
6690
6690
const propName = getDestructuringPropertyName(node);
6691
6691
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);
6696
6694
literal.parent = result;
6697
- literal.text = propName;
6698
- result.argumentExpression = literal;
6695
+ result.parent = node;
6699
6696
result.flowNode = parentAccess.flowNode;
6700
6697
return result;
6701
6698
}
@@ -20231,7 +20228,8 @@ namespace ts {
20231
20228
if (returnType && returnType.flags & TypeFlags.Union) {
20232
20229
const unionTypes = (<UnionTypeNode>funcTypeNode.type).types;
20233
20230
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);
20235
20233
// Highlight to the end of the second to last constituent of the union
20236
20234
parenedFuncType.end = unionTypes[unionTypes.length - 2].end;
20237
20235
addRelatedInfo(diag, createDiagnosticForNode(parenedFuncType, Diagnostics.Did_you_mean_to_parenthesize_this_function_type));
@@ -23901,10 +23899,9 @@ namespace ts {
23901
23899
}
23902
23900
23903
23901
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);
23905
23904
result.parent = parent;
23906
- result.type = type;
23907
- result.isSpread = isSpread || false;
23908
23905
return result;
23909
23906
}
23910
23907
0 commit comments