Skip to content

Commit fc3e040

Browse files
committed
Revert "Merge pull request microsoft#7235 from weswigham/narrow-all-types"
This reverts commit ef0f6c8, reversing changes made to 9f087cb.
1 parent 7e00d7e commit fc3e040

14 files changed

+2
-409
lines changed

src/compiler/checker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7662,7 +7662,7 @@ namespace ts {
76627662

76637663
function getFlowTypeOfReference(reference: Node, declaredType: Type, assumeInitialized: boolean, includeOuterFunctions: boolean) {
76647664
let key: string;
7665-
if (!reference.flowNode || assumeInitialized && (declaredType.flags & TypeFlags.NotNarrowable)) {
7665+
if (!reference.flowNode || assumeInitialized && !(declaredType.flags & TypeFlags.Narrowable)) {
76667666
return declaredType;
76677667
}
76687668
const initialType = assumeInitialized ? declaredType : addNullableKind(declaredType, TypeFlags.Undefined);

src/compiler/types.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2218,13 +2218,7 @@ namespace ts {
22182218
ObjectType = Class | Interface | Reference | Tuple | Anonymous,
22192219
UnionOrIntersection = Union | Intersection,
22202220
StructuredType = ObjectType | Union | Intersection,
2221-
2222-
// 'NotNarrowable' types are types where narrowing reverts to the original type, rather than actually narrow.
2223-
// This is never really correct - you can _always_ narrow to an intersection with that type, _but_ we keep
2224-
// Void as the only non-narrowable type, since it's a non-value type construct (representing a lack of a value)
2225-
// and, generally speaking, narrowing `void` should fail in some way, as it is nonsensical. (`void` narrowing
2226-
// to `void & T`, in a structural sense, is just narrowing to T, which we wouldn't allow under normal rules)
2227-
NotNarrowable = Void,
2221+
Narrowable = Any | ObjectType | Union | TypeParameter,
22282222
/* @internal */
22292223
RequiresWidening = ContainsUndefinedOrNull | ContainsObjectLiteral,
22302224
/* @internal */

tests/baselines/reference/typeGuardNarrowsPrimitiveIntersection.js

Lines changed: 0 additions & 38 deletions
This file was deleted.

tests/baselines/reference/typeGuardNarrowsPrimitiveIntersection.symbols

Lines changed: 0 additions & 70 deletions
This file was deleted.

tests/baselines/reference/typeGuardNarrowsPrimitiveIntersection.types

Lines changed: 0 additions & 76 deletions
This file was deleted.

tests/baselines/reference/typeGuardNarrowsToLiteralType.js

Lines changed: 0 additions & 21 deletions
This file was deleted.

tests/baselines/reference/typeGuardNarrowsToLiteralType.symbols

Lines changed: 0 additions & 32 deletions
This file was deleted.

tests/baselines/reference/typeGuardNarrowsToLiteralType.types

Lines changed: 0 additions & 35 deletions
This file was deleted.

tests/baselines/reference/typeGuardNarrowsToLiteralTypeUnion.js

Lines changed: 0 additions & 21 deletions
This file was deleted.

tests/baselines/reference/typeGuardNarrowsToLiteralTypeUnion.symbols

Lines changed: 0 additions & 32 deletions
This file was deleted.

tests/baselines/reference/typeGuardNarrowsToLiteralTypeUnion.types

Lines changed: 0 additions & 35 deletions
This file was deleted.

0 commit comments

Comments
 (0)