Skip to content

Commit e7cbfc4

Browse files
committed
Update API to be backwards compatible
1 parent 0599f84 commit e7cbfc4

File tree

3 files changed

+16
-7
lines changed

3 files changed

+16
-7
lines changed

src/compiler/checker.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4235,7 +4235,7 @@ namespace ts {
42354235
setEmitFlags(createIdentifier(typePredicate.parameterName), EmitFlags.NoAsciiEscaping) :
42364236
createThisTypeNode();
42374237
const typeNode = typePredicate.type && typeToTypeNodeHelper(typePredicate.type, context);
4238-
returnTypeNode = createTypePredicateNode(assertsModifier, parameterName, typeNode);
4238+
returnTypeNode = createTypePredicateNodeWithModifier(assertsModifier, parameterName, typeNode);
42394239
}
42404240
else {
42414241
const returnType = getReturnTypeOfSignature(signature);
@@ -4703,7 +4703,7 @@ namespace ts {
47034703
return writer ? typePredicateToStringWorker(writer).getText() : usingSingleLineStringWriter(typePredicateToStringWorker);
47044704

47054705
function typePredicateToStringWorker(writer: EmitTextWriter) {
4706-
const predicate = createTypePredicateNode(
4706+
const predicate = createTypePredicateNodeWithModifier(
47074707
typePredicate.kind === TypePredicateKind.AssertsThis || typePredicate.kind === TypePredicateKind.AssertsIdentifier ? createToken(SyntaxKind.AssertsKeyword) : undefined,
47084708
typePredicate.kind === TypePredicateKind.Identifier || typePredicate.kind === TypePredicateKind.AssertsIdentifier ? createIdentifier(typePredicate.parameterName) : createThisTypeNode(),
47094709
typePredicate.type && nodeBuilder.typeToTypeNode(typePredicate.type, enclosingDeclaration, toNodeBuilderFlags(flags) | NodeBuilderFlags.IgnoreErrors | NodeBuilderFlags.WriteTypeParametersInQualifiedName)! // TODO: GH#18217

src/compiler/factory.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -667,18 +667,27 @@ namespace ts {
667667
return <KeywordTypeNode>createSynthesizedNode(kind);
668668
}
669669

670-
export function createTypePredicateNode(assertsModifier: AssertsToken | undefined, parameterName: Identifier | ThisTypeNode | string, type: TypeNode | undefined) {
670+
export function createTypePredicateNode(parameterName: Identifier | ThisTypeNode | string, type: TypeNode | undefined) {
671+
return createTypePredicateNodeWithModifier(/*assertsModifier*/ undefined, parameterName, type);
672+
}
673+
674+
export function createTypePredicateNodeWithModifier(assertsModifier: AssertsToken | undefined, parameterName: Identifier | ThisTypeNode | string, type: TypeNode | undefined) {
671675
const node = createSynthesizedNode(SyntaxKind.TypePredicate) as TypePredicateNode;
672676
node.assertsModifier = assertsModifier;
673677
node.parameterName = asName(parameterName);
674678
node.type = type;
675679
return node;
676680
}
677681

678-
export function updateTypePredicateNode(node: TypePredicateNode, assertsModifier: AssertsToken | undefined, parameterName: Identifier | ThisTypeNode, type: TypeNode | undefined) {
679-
return node.parameterName !== parameterName
682+
export function updateTypePredicateNode(node: TypePredicateNode, parameterName: Identifier | ThisTypeNode, type: TypeNode | undefined) {
683+
return updateTypePredicateNodeWithModifier(node, node.assertsModifier, parameterName, type);
684+
}
685+
686+
export function updateTypePredicateNodeWithModifier(node: TypePredicateNode, assertsModifier: AssertsToken | undefined, parameterName: Identifier | ThisTypeNode, type: TypeNode | undefined) {
687+
return node.assertsModifier !== assertsModifier
688+
|| node.parameterName !== parameterName
680689
|| node.type !== type
681-
? updateNode(createTypePredicateNode(assertsModifier, parameterName, type), node)
690+
? updateNode(createTypePredicateNodeWithModifier(assertsModifier, parameterName, type), node)
682691
: node;
683692
}
684693

src/compiler/visitor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ namespace ts {
339339
// Types
340340

341341
case SyntaxKind.TypePredicate:
342-
return updateTypePredicateNode(<TypePredicateNode>node,
342+
return updateTypePredicateNodeWithModifier(<TypePredicateNode>node,
343343
visitNode((<TypePredicateNode>node).assertsModifier, visitor),
344344
visitNode((<TypePredicateNode>node).parameterName, visitor),
345345
visitNode((<TypePredicateNode>node).type, visitor, isTypeNode));

0 commit comments

Comments
 (0)