Skip to content

Commit abe4323

Browse files
committed
Remove unnecessary containsMatchingReferenceDiscriminant logic
1 parent 5fc917b commit abe4323

File tree

1 file changed

+0
-38
lines changed

1 file changed

+0
-38
lines changed

src/compiler/checker.ts

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -18452,32 +18452,6 @@ namespace ts {
1845218452
return false;
1845318453
}
1845418454

18455-
// Return true if target is a property access xxx.yyy, source is a property access xxx.zzz, the declared
18456-
// type of xxx is a union type, and yyy is a property that is possibly a discriminant. We consider a property
18457-
// a possible discriminant if its type differs in the constituents of containing union type, and if every
18458-
// choice is a unit type or a union of unit types.
18459-
function containsMatchingReferenceDiscriminant(source: Node, target: Node) {
18460-
let name;
18461-
return isAccessExpression(target) &&
18462-
containsMatchingReference(source, target.expression) &&
18463-
(name = getAccessedPropertyName(target)) !== undefined &&
18464-
isDiscriminantProperty(getDeclaredTypeOfReference(target.expression), name);
18465-
}
18466-
18467-
function getDeclaredTypeOfReference(expr: Node): Type | undefined {
18468-
if (expr.kind === SyntaxKind.Identifier) {
18469-
return getTypeOfSymbol(getResolvedSymbol(<Identifier>expr));
18470-
}
18471-
if (isAccessExpression(expr)) {
18472-
const type = getDeclaredTypeOfReference(expr.expression);
18473-
if (type) {
18474-
const propName = getAccessedPropertyName(expr);
18475-
return propName !== undefined ? getTypeOfPropertyOfType(type, propName) : undefined;
18476-
}
18477-
}
18478-
return undefined;
18479-
}
18480-
1848118455
function isDiscriminantProperty(type: Type | undefined, name: __String) {
1848218456
if (type && type.flags & TypeFlags.Union) {
1848318457
const prop = getUnionOrIntersectionProperty(<UnionType>type, name);
@@ -19509,9 +19483,6 @@ namespace ts {
1950919483
type = narrowTypeByDiscriminant(type, expr as AccessExpression,
1951019484
t => narrowTypeBySwitchOnDiscriminant(t, flow.switchStatement, flow.clauseStart, flow.clauseEnd));
1951119485
}
19512-
else if (containsMatchingReferenceDiscriminant(reference, expr)) {
19513-
type = declaredType;
19514-
}
1951519486
}
1951619487
return createFlowType(type, isIncomplete(flowType));
1951719488
}
@@ -19696,9 +19667,6 @@ namespace ts {
1969619667
if (isMatchingReferenceDiscriminant(expr, declaredType)) {
1969719668
return narrowTypeByDiscriminant(type, <AccessExpression>expr, t => getTypeWithFacts(t, assumeTrue ? TypeFacts.Truthy : TypeFacts.Falsy));
1969819669
}
19699-
if (containsMatchingReferenceDiscriminant(reference, expr)) {
19700-
return declaredType;
19701-
}
1970219670
return type;
1970319671
}
1970419672

@@ -19758,9 +19726,6 @@ namespace ts {
1975819726
if (isMatchingReferenceDiscriminant(right, declaredType)) {
1975919727
return narrowTypeByDiscriminant(type, <AccessExpression>right, t => narrowTypeByEquality(t, operator, left, assumeTrue));
1976019728
}
19761-
if (containsMatchingReferenceDiscriminant(reference, left) || containsMatchingReferenceDiscriminant(reference, right)) {
19762-
return declaredType;
19763-
}
1976419729
break;
1976519730
case SyntaxKind.InstanceOfKeyword:
1976619731
return narrowTypeByInstanceof(type, expr, assumeTrue);
@@ -20172,9 +20137,6 @@ namespace ts {
2017220137
if (isMatchingReferenceDiscriminant(expr, declaredType)) {
2017320138
return narrowTypeByDiscriminant(type, <AccessExpression>expr, t => getTypeWithFacts(t, assumePresent ? TypeFacts.NEUndefinedOrNull : TypeFacts.EQUndefinedOrNull));
2017420139
}
20175-
if (containsMatchingReferenceDiscriminant(reference, expr)) {
20176-
return declaredType;
20177-
}
2017820140
return type;
2017920141
}
2018020142
}

0 commit comments

Comments
 (0)