diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 6cb9e395f18..fddbffeeecb 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -1,3 +1,4 @@ + /* @internal */ namespace ts { export const enum ModuleInstanceState { @@ -953,7 +954,7 @@ namespace ts { } if ((expression.kind === SyntaxKind.TrueKeyword && flags & FlowFlags.FalseCondition || expression.kind === SyntaxKind.FalseKeyword && flags & FlowFlags.TrueCondition) && - !isExpressionOfOptionalChainRoot(expression) && !isQuestionQuestionExpression(expression.parent)) { + !isExpressionOfOptionalChainRoot(expression) && !isNullishCoalesce(expression.parent)) { return unreachableFlow; } if (!isNarrowingExpression(expression)) { diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 7c85f169b72..423fa992504 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -5953,7 +5953,7 @@ namespace ts { return isOptionalChainRoot(node.parent) && node.parent.expression === node; } - export function isQuestionQuestionExpression(node: Node) { + export function isNullishCoalesce(node: Node) { return node.kind === SyntaxKind.BinaryExpression && (node).operatorToken.kind === SyntaxKind.QuestionQuestionToken; }