@@ -82,14 +82,13 @@ if (!(u === 42)) {
8282>isTrue : Symbol(isTrue, Decl(unknownType2.ts, 0, 53))
8383>isUnknown : Symbol(isUnknown, Decl(unknownType2.ts, 0, 0))
8484>u : Symbol(u, Decl(unknownType2.ts, 6, 5))
85-
8685}
8786
8887if (u !== 42) {
8988>u : Symbol(u, Decl(unknownType2.ts, 6, 5))
9089
9190 type B = isTrue<isUnknown<typeof u>>
92- >B : Symbol(B, Decl(unknownType2.ts, 35 , 15))
91+ >B : Symbol(B, Decl(unknownType2.ts, 34 , 15))
9392>isTrue : Symbol(isTrue, Decl(unknownType2.ts, 0, 53))
9493>isUnknown : Symbol(isUnknown, Decl(unknownType2.ts, 0, 0))
9594>u : Symbol(u, Decl(unknownType2.ts, 6, 5))
@@ -99,7 +98,7 @@ if (u == 42) {
9998>u : Symbol(u, Decl(unknownType2.ts, 6, 5))
10099
101100 type C = isTrue<isUnknown<typeof u>>
102- >C : Symbol(C, Decl(unknownType2.ts, 39 , 14))
101+ >C : Symbol(C, Decl(unknownType2.ts, 38 , 14))
103102>isTrue : Symbol(isTrue, Decl(unknownType2.ts, 0, 53))
104103>isUnknown : Symbol(isUnknown, Decl(unknownType2.ts, 0, 0))
105104>u : Symbol(u, Decl(unknownType2.ts, 6, 5))
@@ -109,7 +108,7 @@ if (u == true) {
109108>u : Symbol(u, Decl(unknownType2.ts, 6, 5))
110109
111110 type D = isTrue<isUnknown<typeof u>>
112- >D : Symbol(D, Decl(unknownType2.ts, 43 , 16))
111+ >D : Symbol(D, Decl(unknownType2.ts, 42 , 16))
113112>isTrue : Symbol(isTrue, Decl(unknownType2.ts, 0, 53))
114113>isUnknown : Symbol(isUnknown, Decl(unknownType2.ts, 0, 0))
115114>u : Symbol(u, Decl(unknownType2.ts, 6, 5))
@@ -120,9 +119,177 @@ if (u == Object) {
120119>Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
121120
122121 type E = isTrue<isUnknown<typeof u>>
123- >E : Symbol(E, Decl(unknownType2.ts, 47 , 18))
122+ >E : Symbol(E, Decl(unknownType2.ts, 46 , 18))
124123>isTrue : Symbol(isTrue, Decl(unknownType2.ts, 0, 53))
125124>isUnknown : Symbol(isUnknown, Decl(unknownType2.ts, 0, 0))
126125>u : Symbol(u, Decl(unknownType2.ts, 6, 5))
127126}
128127
128+ declare const aString: string;
129+ >aString : Symbol(aString, Decl(unknownType2.ts, 50, 13))
130+
131+ declare const aBoolean: boolean;
132+ >aBoolean : Symbol(aBoolean, Decl(unknownType2.ts, 51, 13))
133+
134+ declare const aNumber: number;
135+ >aNumber : Symbol(aNumber, Decl(unknownType2.ts, 52, 13))
136+
137+ declare const anObject: object;
138+ >anObject : Symbol(anObject, Decl(unknownType2.ts, 53, 13))
139+
140+ declare const anObjectLiteral: { x: number };
141+ >anObjectLiteral : Symbol(anObjectLiteral, Decl(unknownType2.ts, 54, 13))
142+ >x : Symbol(x, Decl(unknownType2.ts, 54, 32))
143+
144+ declare const aUnion: { x: number } | { y: string };
145+ >aUnion : Symbol(aUnion, Decl(unknownType2.ts, 55, 13))
146+ >x : Symbol(x, Decl(unknownType2.ts, 55, 23))
147+ >y : Symbol(y, Decl(unknownType2.ts, 55, 39))
148+
149+ declare const anIntersection: { x: number } & { y: string };
150+ >anIntersection : Symbol(anIntersection, Decl(unknownType2.ts, 56, 13))
151+ >x : Symbol(x, Decl(unknownType2.ts, 56, 31))
152+ >y : Symbol(y, Decl(unknownType2.ts, 56, 47))
153+
154+ declare const aFunction: () => number;
155+ >aFunction : Symbol(aFunction, Decl(unknownType2.ts, 57, 13))
156+
157+ if (u === aString) {
158+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
159+ >aString : Symbol(aString, Decl(unknownType2.ts, 50, 13))
160+
161+ let uString: string = u;
162+ >uString : Symbol(uString, Decl(unknownType2.ts, 60, 7))
163+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
164+ }
165+
166+ if (u === aBoolean) {
167+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
168+ >aBoolean : Symbol(aBoolean, Decl(unknownType2.ts, 51, 13))
169+
170+ let uString: boolean = u;
171+ >uString : Symbol(uString, Decl(unknownType2.ts, 64, 7))
172+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
173+ }
174+
175+ if (u === aNumber) {
176+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
177+ >aNumber : Symbol(aNumber, Decl(unknownType2.ts, 52, 13))
178+
179+ let uNumber: number = u;
180+ >uNumber : Symbol(uNumber, Decl(unknownType2.ts, 68, 7))
181+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
182+ }
183+
184+ if (u === anObject) {
185+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
186+ >anObject : Symbol(anObject, Decl(unknownType2.ts, 53, 13))
187+
188+ let uObject: object = u;
189+ >uObject : Symbol(uObject, Decl(unknownType2.ts, 72, 7))
190+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
191+ }
192+
193+ if (u === anObjectLiteral) {
194+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
195+ >anObjectLiteral : Symbol(anObjectLiteral, Decl(unknownType2.ts, 54, 13))
196+
197+ let uObjectLiteral: object = u;
198+ >uObjectLiteral : Symbol(uObjectLiteral, Decl(unknownType2.ts, 76, 7))
199+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
200+ }
201+
202+ if (u === aUnion) {
203+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
204+ >aUnion : Symbol(aUnion, Decl(unknownType2.ts, 55, 13))
205+
206+ type unionDoesNotNarrow = isTrue<isUnknown<typeof u>>
207+ >unionDoesNotNarrow : Symbol(unionDoesNotNarrow, Decl(unknownType2.ts, 79, 19))
208+ >isTrue : Symbol(isTrue, Decl(unknownType2.ts, 0, 53))
209+ >isUnknown : Symbol(isUnknown, Decl(unknownType2.ts, 0, 0))
210+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
211+ }
212+
213+ if (u === anIntersection) {
214+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
215+ >anIntersection : Symbol(anIntersection, Decl(unknownType2.ts, 56, 13))
216+
217+ type intersectionDoesNotNarrow = isTrue<isUnknown<typeof u>>
218+ >intersectionDoesNotNarrow : Symbol(intersectionDoesNotNarrow, Decl(unknownType2.ts, 83, 27))
219+ >isTrue : Symbol(isTrue, Decl(unknownType2.ts, 0, 53))
220+ >isUnknown : Symbol(isUnknown, Decl(unknownType2.ts, 0, 0))
221+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
222+ }
223+
224+ if (u === aFunction) {
225+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
226+ >aFunction : Symbol(aFunction, Decl(unknownType2.ts, 57, 13))
227+
228+ let uFunction: object = u;
229+ >uFunction : Symbol(uFunction, Decl(unknownType2.ts, 88, 7))
230+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
231+ }
232+
233+ enum NumberEnum {
234+ >NumberEnum : Symbol(NumberEnum, Decl(unknownType2.ts, 89, 1))
235+
236+ A,
237+ >A : Symbol(NumberEnum.A, Decl(unknownType2.ts, 91, 17))
238+
239+ B,
240+ >B : Symbol(NumberEnum.B, Decl(unknownType2.ts, 92, 6))
241+
242+ C
243+ >C : Symbol(NumberEnum.C, Decl(unknownType2.ts, 93, 6))
244+ }
245+
246+ enum StringEnum {
247+ >StringEnum : Symbol(StringEnum, Decl(unknownType2.ts, 95, 1))
248+
249+ A = "A",
250+ >A : Symbol(StringEnum.A, Decl(unknownType2.ts, 97, 17))
251+
252+ B = "B",
253+ >B : Symbol(StringEnum.B, Decl(unknownType2.ts, 98, 12))
254+
255+ C = "C"
256+ >C : Symbol(StringEnum.C, Decl(unknownType2.ts, 99, 12))
257+ }
258+
259+ if (u === NumberEnum || u === StringEnum) {
260+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
261+ >NumberEnum : Symbol(NumberEnum, Decl(unknownType2.ts, 89, 1))
262+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
263+ >StringEnum : Symbol(StringEnum, Decl(unknownType2.ts, 95, 1))
264+
265+ let enumObj: object = u;
266+ >enumObj : Symbol(enumObj, Decl(unknownType2.ts, 104, 7))
267+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
268+ }
269+
270+ if(u === NumberEnum.A) {
271+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
272+ >NumberEnum.A : Symbol(NumberEnum.A, Decl(unknownType2.ts, 91, 17))
273+ >NumberEnum : Symbol(NumberEnum, Decl(unknownType2.ts, 89, 1))
274+ >A : Symbol(NumberEnum.A, Decl(unknownType2.ts, 91, 17))
275+
276+ let a: NumberEnum.A = u
277+ >a : Symbol(a, Decl(unknownType2.ts, 108, 7))
278+ >NumberEnum : Symbol(NumberEnum, Decl(unknownType2.ts, 89, 1))
279+ >A : Symbol(NumberEnum.A, Decl(unknownType2.ts, 91, 17))
280+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
281+ }
282+
283+ if(u === StringEnum.B) {
284+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
285+ >StringEnum.B : Symbol(StringEnum.B, Decl(unknownType2.ts, 98, 12))
286+ >StringEnum : Symbol(StringEnum, Decl(unknownType2.ts, 95, 1))
287+ >B : Symbol(StringEnum.B, Decl(unknownType2.ts, 98, 12))
288+
289+ let b: StringEnum.B = u
290+ >b : Symbol(b, Decl(unknownType2.ts, 112, 7))
291+ >StringEnum : Symbol(StringEnum, Decl(unknownType2.ts, 95, 1))
292+ >B : Symbol(StringEnum.B, Decl(unknownType2.ts, 98, 12))
293+ >u : Symbol(u, Decl(unknownType2.ts, 6, 5))
294+ }
295+
0 commit comments