From bb9c5c96c80126a0ff78e1d3524b10adcfd1bed1 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Sat, 11 May 2019 11:15:37 -0700 Subject: [PATCH] Reuse existing type instantiations --- src/compiler/checker.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5d3bc864a504f..f016a8d3723fe 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -10379,7 +10379,7 @@ namespace ts { // Simplifications for types of the form `T extends U ? T : never` and `T extends U ? never : T`. if (root.falseType.flags & TypeFlags.Never && getActualTypeVariable(root.trueType) === getActualTypeVariable(root.checkType)) { if (checkType.flags & TypeFlags.Any || isTypeAssignableTo(getRestrictiveInstantiation(checkType), getRestrictiveInstantiation(extendsType))) { // Always true - return instantiateType(root.trueType, mapper); + return checkType; } else if (isIntersectionEmpty(checkType, extendsType)) { // Always false return neverType; @@ -10390,7 +10390,7 @@ namespace ts { return neverType; } else if (checkType.flags & TypeFlags.Any || isIntersectionEmpty(checkType, extendsType)) { // Always false - return instantiateType(root.falseType, mapper); + return checkType; } } const checkTypeInstantiable = maybeTypeOfKind(checkType, TypeFlags.Instantiable | TypeFlags.GenericMappedType);