@@ -11,6 +11,9 @@ declare let s: string;
11
11
declare let b: boolean;
12
12
>b : Symbol(b, Decl(narrowByEquality.ts, 3, 11))
13
13
14
+ declare let xUnknown: unknown;
15
+ >xUnknown : Symbol(xUnknown, Decl(narrowByEquality.ts, 4, 11))
16
+
14
17
if (x == n) {
15
18
>x : Symbol(x, Decl(narrowByEquality.ts, 0, 11))
16
19
>n : Symbol(n, Decl(narrowByEquality.ts, 1, 11))
@@ -71,43 +74,67 @@ if (x == false) {
71
74
}
72
75
73
76
declare let xAndObj: number | string | boolean | object
74
- >xAndObj : Symbol(xAndObj, Decl(narrowByEquality.ts, 37 , 11))
77
+ >xAndObj : Symbol(xAndObj, Decl(narrowByEquality.ts, 38 , 11))
75
78
76
79
if (xAndObj == {}) {
77
- >xAndObj : Symbol(xAndObj, Decl(narrowByEquality.ts, 37 , 11))
80
+ >xAndObj : Symbol(xAndObj, Decl(narrowByEquality.ts, 38 , 11))
78
81
79
82
xAndObj;
80
- >xAndObj : Symbol(xAndObj, Decl(narrowByEquality.ts, 37 , 11))
83
+ >xAndObj : Symbol(xAndObj, Decl(narrowByEquality.ts, 38 , 11))
81
84
}
82
85
83
86
if (x == xAndObj) {
84
87
>x : Symbol(x, Decl(narrowByEquality.ts, 0, 11))
85
- >xAndObj : Symbol(xAndObj, Decl(narrowByEquality.ts, 37 , 11))
88
+ >xAndObj : Symbol(xAndObj, Decl(narrowByEquality.ts, 38 , 11))
86
89
87
90
x;
88
91
>x : Symbol(x, Decl(narrowByEquality.ts, 0, 11))
89
92
90
93
xAndObj;
91
- >xAndObj : Symbol(xAndObj, Decl(narrowByEquality.ts, 37 , 11))
94
+ >xAndObj : Symbol(xAndObj, Decl(narrowByEquality.ts, 38 , 11))
92
95
}
93
96
94
97
// Repro from #24991
95
98
96
99
function test(level: number | string):number {
97
- >test : Symbol(test, Decl(narrowByEquality.ts, 46 , 1))
98
- >level : Symbol(level, Decl(narrowByEquality.ts, 50 , 14))
100
+ >test : Symbol(test, Decl(narrowByEquality.ts, 47 , 1))
101
+ >level : Symbol(level, Decl(narrowByEquality.ts, 51 , 14))
99
102
100
103
if (level == +level) {
101
- >level : Symbol(level, Decl(narrowByEquality.ts, 50 , 14))
102
- >level : Symbol(level, Decl(narrowByEquality.ts, 50 , 14))
104
+ >level : Symbol(level, Decl(narrowByEquality.ts, 51 , 14))
105
+ >level : Symbol(level, Decl(narrowByEquality.ts, 51 , 14))
103
106
104
107
const q2: number = level; // error
105
- >q2 : Symbol(q2, Decl(narrowByEquality.ts, 52 , 13))
106
- >level : Symbol(level, Decl(narrowByEquality.ts, 50 , 14))
108
+ >q2 : Symbol(q2, Decl(narrowByEquality.ts, 53 , 13))
109
+ >level : Symbol(level, Decl(narrowByEquality.ts, 51 , 14))
107
110
108
111
return level;
109
- >level : Symbol(level, Decl(narrowByEquality.ts, 50 , 14))
112
+ >level : Symbol(level, Decl(narrowByEquality.ts, 51 , 14))
110
113
}
111
114
return 0;
112
115
}
113
116
117
+ // From issue #32798
118
+ if (xUnknown == null) {
119
+ >xUnknown : Symbol(xUnknown, Decl(narrowByEquality.ts, 4, 11))
120
+
121
+ xUnknown;
122
+ >xUnknown : Symbol(xUnknown, Decl(narrowByEquality.ts, 4, 11))
123
+
124
+ } else {
125
+ xUnknown
126
+ >xUnknown : Symbol(xUnknown, Decl(narrowByEquality.ts, 4, 11))
127
+ }
128
+
129
+ if (xUnknown != null) {
130
+ >xUnknown : Symbol(xUnknown, Decl(narrowByEquality.ts, 4, 11))
131
+
132
+ xUnknown;
133
+ >xUnknown : Symbol(xUnknown, Decl(narrowByEquality.ts, 4, 11))
134
+
135
+ } else {
136
+ xUnknown;
137
+ >xUnknown : Symbol(xUnknown, Decl(narrowByEquality.ts, 4, 11))
138
+ }
139
+
140
+
0 commit comments