Skip to content

Commit c7f54d5

Browse files
committed
Broaden usage of getConditionalFlowTypeOfType to _all_ type lookups
1 parent 7772caf commit c7f54d5

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/compiler/checker.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11315,15 +11315,15 @@ namespace ts {
1131511315
}
1131611316
symbol = getExpandoSymbol(symbol) || symbol;
1131711317
if (symbol.flags & (SymbolFlags.Class | SymbolFlags.Interface)) {
11318-
return getConditionalFlowTypeOfType(getTypeFromClassOrInterfaceReference(node, symbol), node);
11318+
return getTypeFromClassOrInterfaceReference(node, symbol);
1131911319
}
1132011320
if (symbol.flags & SymbolFlags.TypeAlias) {
11321-
return getConditionalFlowTypeOfType(getTypeFromTypeAliasReference(node, symbol), node);
11321+
return getTypeFromTypeAliasReference(node, symbol);
1132211322
}
1132311323
// Get type from reference to named type that cannot be generic (enum or type parameter)
1132411324
const res = tryGetDeclaredTypeOfSymbol(symbol);
1132511325
if (res) {
11326-
return checkNoTypeArguments(node, symbol) ? getConditionalFlowTypeOfType(getRegularTypeOfLiteralType(res), node) : errorType;
11326+
return checkNoTypeArguments(node, symbol) ? getRegularTypeOfLiteralType(res) : errorType;
1132711327
}
1132811328
if (symbol.flags & SymbolFlags.Value && isJSDocTypeReference(node)) {
1132911329
const jsdocType = getTypeFromJSDocValueReference(node, symbol);
@@ -11333,7 +11333,7 @@ namespace ts {
1133311333
else {
1133411334
// Resolve the type reference as a Type for the purpose of reporting errors.
1133511335
resolveTypeReferenceName(getTypeReferenceName(node), SymbolFlags.Type);
11336-
return getConditionalFlowTypeOfType(getTypeOfSymbol(symbol), node);
11336+
return getTypeOfSymbol(symbol);
1133711337
}
1133811338
}
1133911339
return errorType;
@@ -12982,7 +12982,7 @@ namespace ts {
1298212982
node,
1298312983
checkType,
1298412984
extendsType: getTypeFromTypeNode(node.extendsType),
12985-
trueType: getConditionalFlowTypeOfType(getTypeFromTypeNode(node.trueType), node.trueType),
12985+
trueType: getTypeFromTypeNode(node.trueType),
1298612986
falseType: getTypeFromTypeNode(node.falseType),
1298712987
isDistributive: !!(checkType.flags & TypeFlags.TypeParameter),
1298812988
inferTypeParameters: getInferTypeParameters(node),
@@ -13422,6 +13422,10 @@ namespace ts {
1342213422
}
1342313423

1342413424
function getTypeFromTypeNode(node: TypeNode): Type {
13425+
return getConditionalFlowTypeOfType(getTypeFromTypeNodeWorker(node), node);
13426+
}
13427+
13428+
function getTypeFromTypeNodeWorker(node: TypeNode): Type {
1342513429
switch (node.kind) {
1342613430
case SyntaxKind.AnyKeyword:
1342713431
case SyntaxKind.JSDocAllType:
@@ -13756,7 +13760,7 @@ namespace ts {
1375613760
return !!tp.isThisType;
1375713761
case SyntaxKind.Identifier:
1375813762
return !tp.isThisType && isPartOfTypeNode(node) && maybeTypeParameterReference(node) &&
13759-
getTypeFromTypeNode(<TypeNode>node) === tp;
13763+
getTypeFromTypeNodeWorker(<TypeNode>node) === tp; // use worker because we're looking for === equality
1376013764
case SyntaxKind.TypeQuery:
1376113765
return true;
1376213766
}

0 commit comments

Comments
 (0)