From bb1c91fac6945481e0a56cebce98b855482377e4 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 17 Jan 2019 17:04:29 -0800 Subject: [PATCH] Remove literal freshness when contextual type is a literal type --- src/compiler/checker.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 352a5c31592..f66667d2ddc 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -22962,7 +22962,9 @@ namespace ts { context.contextualMapper = contextualMapper; const checkMode = contextualMapper === identityMapper ? CheckMode.SkipContextSensitive : contextualMapper ? CheckMode.Inferential : CheckMode.Contextual; - const result = checkExpression(node, checkMode); + const type = checkExpression(node, checkMode); + const result = maybeTypeOfKind(type, TypeFlags.Literal) && isLiteralOfContextualType(type, instantiateContextualType(contextualType, node)) ? + getRegularTypeOfLiteralType(type) : type; context.contextualType = saveContextualType; context.contextualMapper = saveContextualMapper; return result;