@@ -21,20 +21,22 @@ interface Ari<T> {
2121>Ari : Symbol(Ari, Decl(booleanFilterAnyArray.ts, 4, 1))
2222>T : Symbol(T, Decl(booleanFilterAnyArray.ts, 6, 14))
2323
24- filter<S extends T>(cb1: (value: T) => value is S): Ari<S>;
25- >filter : Symbol(Ari.filter, Decl(booleanFilterAnyArray.ts, 6, 18), Decl(booleanFilterAnyArray.ts, 7, 63 ))
24+ filter<S extends T>(cb1: (value: T) => value is S): T extends any ? Ari<any> : Ari<S>;
25+ >filter : Symbol(Ari.filter, Decl(booleanFilterAnyArray.ts, 6, 18), Decl(booleanFilterAnyArray.ts, 7, 90 ))
2626>S : Symbol(S, Decl(booleanFilterAnyArray.ts, 7, 11))
2727>T : Symbol(T, Decl(booleanFilterAnyArray.ts, 6, 14))
2828>cb1 : Symbol(cb1, Decl(booleanFilterAnyArray.ts, 7, 24))
2929>value : Symbol(value, Decl(booleanFilterAnyArray.ts, 7, 30))
3030>T : Symbol(T, Decl(booleanFilterAnyArray.ts, 6, 14))
3131>value : Symbol(value, Decl(booleanFilterAnyArray.ts, 7, 30))
3232>S : Symbol(S, Decl(booleanFilterAnyArray.ts, 7, 11))
33+ >T : Symbol(T, Decl(booleanFilterAnyArray.ts, 6, 14))
34+ >Ari : Symbol(Ari, Decl(booleanFilterAnyArray.ts, 4, 1))
3335>Ari : Symbol(Ari, Decl(booleanFilterAnyArray.ts, 4, 1))
3436>S : Symbol(S, Decl(booleanFilterAnyArray.ts, 7, 11))
3537
3638 filter(cb2: (value: T) => unknown): Ari<T>;
37- >filter : Symbol(Ari.filter, Decl(booleanFilterAnyArray.ts, 6, 18), Decl(booleanFilterAnyArray.ts, 7, 63 ))
39+ >filter : Symbol(Ari.filter, Decl(booleanFilterAnyArray.ts, 6, 18), Decl(booleanFilterAnyArray.ts, 7, 90 ))
3840>cb2 : Symbol(cb2, Decl(booleanFilterAnyArray.ts, 8, 11))
3941>value : Symbol(value, Decl(booleanFilterAnyArray.ts, 8, 17))
4042>T : Symbol(T, Decl(booleanFilterAnyArray.ts, 6, 14))
@@ -55,18 +57,52 @@ var xs: Ari<any>;
5557
5658var xs = anys.filter(Bullean)
5759>xs : Symbol(xs, Decl(booleanFilterAnyArray.ts, 12, 3), Decl(booleanFilterAnyArray.ts, 13, 3))
58- >anys.filter : Symbol(Ari.filter, Decl(booleanFilterAnyArray.ts, 6, 18), Decl(booleanFilterAnyArray.ts, 7, 63 ))
60+ >anys.filter : Symbol(Ari.filter, Decl(booleanFilterAnyArray.ts, 6, 18), Decl(booleanFilterAnyArray.ts, 7, 90 ))
5961>anys : Symbol(anys, Decl(booleanFilterAnyArray.ts, 11, 11))
60- >filter : Symbol(Ari.filter, Decl(booleanFilterAnyArray.ts, 6, 18), Decl(booleanFilterAnyArray.ts, 7, 63 ))
62+ >filter : Symbol(Ari.filter, Decl(booleanFilterAnyArray.ts, 6, 18), Decl(booleanFilterAnyArray.ts, 7, 90 ))
6163>Bullean : Symbol(Bullean, Decl(booleanFilterAnyArray.ts, 0, 0), Decl(booleanFilterAnyArray.ts, 10, 11))
6264
6365declare let realanys: any[];
6466>realanys : Symbol(realanys, Decl(booleanFilterAnyArray.ts, 15, 11))
6567
68+ var ys: any[];
69+ >ys : Symbol(ys, Decl(booleanFilterAnyArray.ts, 16, 3), Decl(booleanFilterAnyArray.ts, 17, 3))
70+
6671var ys = realanys.filter(Boolean)
67- >ys : Symbol(ys, Decl(booleanFilterAnyArray.ts, 16, 3))
72+ >ys : Symbol(ys, Decl(booleanFilterAnyArray.ts, 16, 3), Decl(booleanFilterAnyArray.ts, 17, 3) )
6873>realanys.filter : Symbol(Array.filter, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
6974>realanys : Symbol(realanys, Decl(booleanFilterAnyArray.ts, 15, 11))
7075>filter : Symbol(Array.filter, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
7176>Boolean : Symbol(Boolean, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
7277
78+ var foo = [{ name: 'x' }]
79+ >foo : Symbol(foo, Decl(booleanFilterAnyArray.ts, 19, 3))
80+ >name : Symbol(name, Decl(booleanFilterAnyArray.ts, 19, 12))
81+
82+ var foor: Array<{name: string}>
83+ >foor : Symbol(foor, Decl(booleanFilterAnyArray.ts, 20, 3), Decl(booleanFilterAnyArray.ts, 21, 3))
84+ >Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
85+ >name : Symbol(name, Decl(booleanFilterAnyArray.ts, 20, 17))
86+
87+ var foor = foo.filter(x => x.name)
88+ >foor : Symbol(foor, Decl(booleanFilterAnyArray.ts, 20, 3), Decl(booleanFilterAnyArray.ts, 21, 3))
89+ >foo.filter : Symbol(Array.filter, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
90+ >foo : Symbol(foo, Decl(booleanFilterAnyArray.ts, 19, 3))
91+ >filter : Symbol(Array.filter, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
92+ >x : Symbol(x, Decl(booleanFilterAnyArray.ts, 21, 22))
93+ >x.name : Symbol(name, Decl(booleanFilterAnyArray.ts, 19, 12))
94+ >x : Symbol(x, Decl(booleanFilterAnyArray.ts, 21, 22))
95+ >name : Symbol(name, Decl(booleanFilterAnyArray.ts, 19, 12))
96+
97+ var foos: Array<boolean>
98+ >foos : Symbol(foos, Decl(booleanFilterAnyArray.ts, 22, 3), Decl(booleanFilterAnyArray.ts, 23, 3))
99+ >Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
100+
101+ var foos = [true, true, false, null].filter((thing): thing is boolean => thing !== null)
102+ >foos : Symbol(foos, Decl(booleanFilterAnyArray.ts, 22, 3), Decl(booleanFilterAnyArray.ts, 23, 3))
103+ >[true, true, false, null].filter : Symbol(Array.filter, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
104+ >filter : Symbol(Array.filter, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
105+ >thing : Symbol(thing, Decl(booleanFilterAnyArray.ts, 23, 45))
106+ >thing : Symbol(thing, Decl(booleanFilterAnyArray.ts, 23, 45))
107+ >thing : Symbol(thing, Decl(booleanFilterAnyArray.ts, 23, 45))
108+
0 commit comments