From b9dbf5d13b3bb7eff978dffc49198b6dc339c073 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Fri, 10 Nov 2017 14:42:24 -0800 Subject: [PATCH] Simplify literal/unique symbol widening --- src/compiler/checker.ts | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5ca986a2bf1..e15b57fbc2d 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -10666,16 +10666,6 @@ namespace ts { type; } - function getWidenedLiteralLikeType(type: Type): Type { - return type.flags & TypeFlags.EnumLiteral ? getBaseTypeOfEnumLiteralType(type) : - type.flags & TypeFlags.StringLiteral && type.flags & TypeFlags.FreshLiteral ? stringType : - type.flags & TypeFlags.NumberLiteral && type.flags & TypeFlags.FreshLiteral ? numberType : - type.flags & TypeFlags.BooleanLiteral ? booleanType : - type.flags & TypeFlags.UniqueESSymbol ? esSymbolType : - type.flags & TypeFlags.Union ? getUnionType(sameMap((type).types, getWidenedLiteralLikeType)) : - type; - } - function getWidenedLiteralType(type: Type): Type { return type.flags & TypeFlags.EnumLiteral ? getBaseTypeOfEnumLiteralType(type) : type.flags & TypeFlags.StringLiteral && type.flags & TypeFlags.FreshLiteral ? stringType : @@ -10692,12 +10682,13 @@ namespace ts { } function getWidenedLiteralLikeTypeForContextualType(type: Type, contextualType: Type) { - const widenLiterals = !isLiteralContextualType(contextualType); - const widenSymbols = !isUniqueESSymbolContextualType(contextualType); - return widenLiterals && widenSymbols ? getWidenedLiteralLikeType(type) : - widenLiterals ? getWidenedLiteralType(type) : - widenSymbols ? getWidenedUniqueESSymbolType(type) : - type; + if (!isLiteralContextualType(contextualType)) { + type = getWidenedLiteralType(type); + } + if (!isUniqueESSymbolContextualType(contextualType)) { + type = getWidenedUniqueESSymbolType(type); + } + return type; } /**