From 984443623194ebbf3d126f7370cd20d6878dbe4c Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 24 Jan 2019 09:30:36 -0800 Subject: [PATCH] Match control flow logic for switch statements to conditional expressions --- src/compiler/checker.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index ac069d95fac..2dec31595ce 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -15780,9 +15780,6 @@ namespace ts { function getTypeAtSwitchClause(flow: FlowSwitchClause): FlowType { const expr = flow.switchStatement.expression; - if (containsMatchingReferenceDiscriminant(reference, expr)) { - return declaredType; - } const flowType = getTypeAtFlowNode(flow.antecedent); let type = getTypeFromFlowType(flowType); if (isMatchingReference(reference, expr)) { @@ -15797,6 +15794,9 @@ namespace ts { else if (expr.kind === SyntaxKind.TypeOfExpression && isMatchingReference(reference, (expr as TypeOfExpression).expression)) { type = narrowBySwitchOnTypeOf(type, flow.switchStatement, flow.clauseStart, flow.clauseEnd); } + else if (containsMatchingReferenceDiscriminant(reference, expr)) { + type = declaredType; + } return createFlowType(type, isIncomplete(flowType)); }