@@ -11315,15 +11315,15 @@ namespace ts {
11315
11315
}
11316
11316
symbol = getExpandoSymbol(symbol) || symbol;
11317
11317
if (symbol.flags & (SymbolFlags.Class | SymbolFlags.Interface)) {
11318
- return getConditionalFlowTypeOfType( getTypeFromClassOrInterfaceReference(node, symbol), node );
11318
+ return getTypeFromClassOrInterfaceReference(node, symbol);
11319
11319
}
11320
11320
if (symbol.flags & SymbolFlags.TypeAlias) {
11321
- return getConditionalFlowTypeOfType( getTypeFromTypeAliasReference(node, symbol), node );
11321
+ return getTypeFromTypeAliasReference(node, symbol);
11322
11322
}
11323
11323
// Get type from reference to named type that cannot be generic (enum or type parameter)
11324
11324
const res = tryGetDeclaredTypeOfSymbol(symbol);
11325
11325
if (res) {
11326
- return checkNoTypeArguments(node, symbol) ? getConditionalFlowTypeOfType( getRegularTypeOfLiteralType(res), node ) : errorType;
11326
+ return checkNoTypeArguments(node, symbol) ? getRegularTypeOfLiteralType(res) : errorType;
11327
11327
}
11328
11328
if (symbol.flags & SymbolFlags.Value && isJSDocTypeReference(node)) {
11329
11329
const jsdocType = getTypeFromJSDocValueReference(node, symbol);
@@ -11333,7 +11333,7 @@ namespace ts {
11333
11333
else {
11334
11334
// Resolve the type reference as a Type for the purpose of reporting errors.
11335
11335
resolveTypeReferenceName(getTypeReferenceName(node), SymbolFlags.Type);
11336
- return getConditionalFlowTypeOfType( getTypeOfSymbol(symbol), node );
11336
+ return getTypeOfSymbol(symbol);
11337
11337
}
11338
11338
}
11339
11339
return errorType;
@@ -12982,7 +12982,7 @@ namespace ts {
12982
12982
node,
12983
12983
checkType,
12984
12984
extendsType: getTypeFromTypeNode(node.extendsType),
12985
- trueType: getConditionalFlowTypeOfType( getTypeFromTypeNode(node.trueType), node.trueType),
12985
+ trueType: getTypeFromTypeNode(node.trueType),
12986
12986
falseType: getTypeFromTypeNode(node.falseType),
12987
12987
isDistributive: !!(checkType.flags & TypeFlags.TypeParameter),
12988
12988
inferTypeParameters: getInferTypeParameters(node),
@@ -13422,6 +13422,10 @@ namespace ts {
13422
13422
}
13423
13423
13424
13424
function getTypeFromTypeNode(node: TypeNode): Type {
13425
+ return getConditionalFlowTypeOfType(getTypeFromTypeNodeWorker(node), node);
13426
+ }
13427
+
13428
+ function getTypeFromTypeNodeWorker(node: TypeNode): Type {
13425
13429
switch (node.kind) {
13426
13430
case SyntaxKind.AnyKeyword:
13427
13431
case SyntaxKind.JSDocAllType:
@@ -13756,7 +13760,7 @@ namespace ts {
13756
13760
return !!tp.isThisType;
13757
13761
case SyntaxKind.Identifier:
13758
13762
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
13760
13764
case SyntaxKind.TypeQuery:
13761
13765
return true;
13762
13766
}
0 commit comments