|
| 1 | +=== tests/cases/compiler/awaitedOfT.ts === |
| 2 | +type T1 = Awaited<number>; // number (same as 'await') |
| 3 | +>T1 : Symbol(T1, Decl(awaitedOfT.ts, 0, 0)) |
| 4 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 5 | + |
| 6 | +type T2 = Awaited<Promise<number>>; // number (same as 'await') |
| 7 | +>T2 : Symbol(T2, Decl(awaitedOfT.ts, 0, 26)) |
| 8 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 9 | +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) |
| 10 | + |
| 11 | +type T3 = Awaited<Promise<Promise<number>>>; // number (same as 'await') |
| 12 | +>T3 : Symbol(T3, Decl(awaitedOfT.ts, 1, 35)) |
| 13 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 14 | +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) |
| 15 | +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) |
| 16 | + |
| 17 | +type T4 = Awaited<Promise<Promise<Promise<number>>>>; // number (same as 'await') |
| 18 | +>T4 : Symbol(T4, Decl(awaitedOfT.ts, 2, 44)) |
| 19 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 20 | +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) |
| 21 | +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) |
| 22 | +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) |
| 23 | + |
| 24 | +type T5 = Awaited<PromiseLike<number>>; // number (same as 'await') |
| 25 | +>T5 : Symbol(T5, Decl(awaitedOfT.ts, 3, 53)) |
| 26 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 27 | +>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --)) |
| 28 | + |
| 29 | +type T6 = Awaited<PromiseLike<PromiseLike<number>>>; // number (same as 'await') |
| 30 | +>T6 : Symbol(T6, Decl(awaitedOfT.ts, 4, 39)) |
| 31 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 32 | +>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --)) |
| 33 | +>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --)) |
| 34 | + |
| 35 | +type T7 = Awaited<PromiseLike<PromiseLike<PromiseLike<number>>>>; // number (same as 'await') |
| 36 | +>T7 : Symbol(T7, Decl(awaitedOfT.ts, 5, 52)) |
| 37 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 38 | +>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --)) |
| 39 | +>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --)) |
| 40 | +>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --)) |
| 41 | + |
| 42 | +type T8 = Awaited<Promise<PromiseLike<number>>>; // number (same as 'await') |
| 43 | +>T8 : Symbol(T8, Decl(awaitedOfT.ts, 6, 65)) |
| 44 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 45 | +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) |
| 46 | +>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --)) |
| 47 | + |
| 48 | +type T9 = Awaited<PromiseLike<Promise<number>>>; // number (same as 'await') |
| 49 | +>T9 : Symbol(T9, Decl(awaitedOfT.ts, 7, 48)) |
| 50 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 51 | +>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --)) |
| 52 | +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) |
| 53 | + |
| 54 | +type T10 = Awaited<{ then: any; }>; // never (no way to know what this might resolve to, differs from 'await') |
| 55 | +>T10 : Symbol(T10, Decl(awaitedOfT.ts, 8, 48)) |
| 56 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 57 | +>then : Symbol(then, Decl(awaitedOfT.ts, 9, 20)) |
| 58 | + |
| 59 | +type T11 = Awaited<{ then: number; }>; // { then: number; } (same as 'await') |
| 60 | +>T11 : Symbol(T11, Decl(awaitedOfT.ts, 9, 35)) |
| 61 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 62 | +>then : Symbol(then, Decl(awaitedOfT.ts, 10, 20)) |
| 63 | + |
| 64 | +type T12 = Awaited<{ then(): void; }>; // never (no way to know what this might resolve to, error for 'await') |
| 65 | +>T12 : Symbol(T12, Decl(awaitedOfT.ts, 10, 38)) |
| 66 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 67 | +>then : Symbol(then, Decl(awaitedOfT.ts, 11, 20)) |
| 68 | + |
| 69 | +type T13 = Awaited<{ then(x: any): void; }>; // never (no way to know what this might resolve to, error for 'await') |
| 70 | +>T13 : Symbol(T13, Decl(awaitedOfT.ts, 11, 38)) |
| 71 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 72 | +>then : Symbol(then, Decl(awaitedOfT.ts, 12, 20)) |
| 73 | +>x : Symbol(x, Decl(awaitedOfT.ts, 12, 26)) |
| 74 | + |
| 75 | +type T14 = Awaited<{ then(x: number): void; }>; // never (cannot be resolved correctly, error for 'await') |
| 76 | +>T14 : Symbol(T14, Decl(awaitedOfT.ts, 12, 44)) |
| 77 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 78 | +>then : Symbol(then, Decl(awaitedOfT.ts, 13, 20)) |
| 79 | +>x : Symbol(x, Decl(awaitedOfT.ts, 13, 26)) |
| 80 | + |
| 81 | +type T15 = Awaited<{ then(x: () => void): void; }>; // never (no way to know what this might resolve to) |
| 82 | +>T15 : Symbol(T15, Decl(awaitedOfT.ts, 13, 47)) |
| 83 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 84 | +>then : Symbol(then, Decl(awaitedOfT.ts, 14, 20)) |
| 85 | +>x : Symbol(x, Decl(awaitedOfT.ts, 14, 26)) |
| 86 | + |
| 87 | +type T16 = Awaited<{ then(x: (y: any) => void): void; }>; // any (same as 'await') |
| 88 | +>T16 : Symbol(T16, Decl(awaitedOfT.ts, 14, 51)) |
| 89 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 90 | +>then : Symbol(then, Decl(awaitedOfT.ts, 15, 20)) |
| 91 | +>x : Symbol(x, Decl(awaitedOfT.ts, 15, 26)) |
| 92 | +>y : Symbol(y, Decl(awaitedOfT.ts, 15, 30)) |
| 93 | + |
| 94 | +type T17 = Awaited<{ then(x: (y: number) => void): void; }>; // number (same as 'await') |
| 95 | +>T17 : Symbol(T17, Decl(awaitedOfT.ts, 15, 57)) |
| 96 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 97 | +>then : Symbol(then, Decl(awaitedOfT.ts, 16, 20)) |
| 98 | +>x : Symbol(x, Decl(awaitedOfT.ts, 16, 26)) |
| 99 | +>y : Symbol(y, Decl(awaitedOfT.ts, 16, 30)) |
| 100 | + |
| 101 | +type T18 = Awaited<{ then(x: (y: { then: any; }) => void): void; }>; // { then: any; } (no recursive unwrap, differs from 'await') |
| 102 | +>T18 : Symbol(T18, Decl(awaitedOfT.ts, 16, 60)) |
| 103 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 104 | +>then : Symbol(then, Decl(awaitedOfT.ts, 17, 20)) |
| 105 | +>x : Symbol(x, Decl(awaitedOfT.ts, 17, 26)) |
| 106 | +>y : Symbol(y, Decl(awaitedOfT.ts, 17, 30)) |
| 107 | +>then : Symbol(then, Decl(awaitedOfT.ts, 17, 34)) |
| 108 | + |
| 109 | +type T19 = Awaited<{ then(x: (y: { then: number; }) => void): void; }>; // { then: number; } (no recursive unwrap, differs from 'await') |
| 110 | +>T19 : Symbol(T19, Decl(awaitedOfT.ts, 17, 68)) |
| 111 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 112 | +>then : Symbol(then, Decl(awaitedOfT.ts, 18, 20)) |
| 113 | +>x : Symbol(x, Decl(awaitedOfT.ts, 18, 26)) |
| 114 | +>y : Symbol(y, Decl(awaitedOfT.ts, 18, 30)) |
| 115 | +>then : Symbol(then, Decl(awaitedOfT.ts, 18, 34)) |
| 116 | + |
| 117 | +type T20 = Awaited<{ then(x: (y: { then(): void; }) => void): void; }>; // { then(): void; } (no recursive unwrap, differs from 'await') |
| 118 | +>T20 : Symbol(T20, Decl(awaitedOfT.ts, 18, 71)) |
| 119 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 120 | +>then : Symbol(then, Decl(awaitedOfT.ts, 19, 20)) |
| 121 | +>x : Symbol(x, Decl(awaitedOfT.ts, 19, 26)) |
| 122 | +>y : Symbol(y, Decl(awaitedOfT.ts, 19, 30)) |
| 123 | +>then : Symbol(then, Decl(awaitedOfT.ts, 19, 34)) |
| 124 | + |
| 125 | +type T21 = Awaited<{ then(x: (y: { then(x: any): void; }) => void): void; }>; // { then(x: any): void; } (no recursive unwrap, differs from 'await') |
| 126 | +>T21 : Symbol(T21, Decl(awaitedOfT.ts, 19, 71)) |
| 127 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 128 | +>then : Symbol(then, Decl(awaitedOfT.ts, 20, 20)) |
| 129 | +>x : Symbol(x, Decl(awaitedOfT.ts, 20, 26)) |
| 130 | +>y : Symbol(y, Decl(awaitedOfT.ts, 20, 30)) |
| 131 | +>then : Symbol(then, Decl(awaitedOfT.ts, 20, 34)) |
| 132 | +>x : Symbol(x, Decl(awaitedOfT.ts, 20, 40)) |
| 133 | + |
| 134 | +type T22 = Awaited<{ then(x: (y: { then(x: number): void; }) => void): void; }>; // { then(x: number): void; } (no recursive unwrap, differs from 'await') |
| 135 | +>T22 : Symbol(T22, Decl(awaitedOfT.ts, 20, 77)) |
| 136 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 137 | +>then : Symbol(then, Decl(awaitedOfT.ts, 21, 20)) |
| 138 | +>x : Symbol(x, Decl(awaitedOfT.ts, 21, 26)) |
| 139 | +>y : Symbol(y, Decl(awaitedOfT.ts, 21, 30)) |
| 140 | +>then : Symbol(then, Decl(awaitedOfT.ts, 21, 34)) |
| 141 | +>x : Symbol(x, Decl(awaitedOfT.ts, 21, 40)) |
| 142 | + |
| 143 | +type T23 = Awaited<{ then(x: (y: { then(x: () => void): void; }) => void): void; }>; // { then(x: () => void): void; } (no recursive unwrap, differs from 'await') |
| 144 | +>T23 : Symbol(T23, Decl(awaitedOfT.ts, 21, 80)) |
| 145 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 146 | +>then : Symbol(then, Decl(awaitedOfT.ts, 22, 20)) |
| 147 | +>x : Symbol(x, Decl(awaitedOfT.ts, 22, 26)) |
| 148 | +>y : Symbol(y, Decl(awaitedOfT.ts, 22, 30)) |
| 149 | +>then : Symbol(then, Decl(awaitedOfT.ts, 22, 34)) |
| 150 | +>x : Symbol(x, Decl(awaitedOfT.ts, 22, 40)) |
| 151 | + |
| 152 | +type T24 = Awaited<{ then(x: (y: { then(x: (y: any) => void): void; }) => void): void; }>; // { then(x: (y: any) => void): void; } (no recursive unwrap, differs from 'await') |
| 153 | +>T24 : Symbol(T24, Decl(awaitedOfT.ts, 22, 84)) |
| 154 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 155 | +>then : Symbol(then, Decl(awaitedOfT.ts, 23, 20)) |
| 156 | +>x : Symbol(x, Decl(awaitedOfT.ts, 23, 26)) |
| 157 | +>y : Symbol(y, Decl(awaitedOfT.ts, 23, 30)) |
| 158 | +>then : Symbol(then, Decl(awaitedOfT.ts, 23, 34)) |
| 159 | +>x : Symbol(x, Decl(awaitedOfT.ts, 23, 40)) |
| 160 | +>y : Symbol(y, Decl(awaitedOfT.ts, 23, 44)) |
| 161 | + |
| 162 | +type T25 = Awaited<{ then(x: (y: { then(x: (y: number) => void): void; }) => void): void; }>; // { then(x: (y: number) => void): void; } (no recursive unwrap, differs from 'await') |
| 163 | +>T25 : Symbol(T25, Decl(awaitedOfT.ts, 23, 90)) |
| 164 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 165 | +>then : Symbol(then, Decl(awaitedOfT.ts, 24, 20)) |
| 166 | +>x : Symbol(x, Decl(awaitedOfT.ts, 24, 26)) |
| 167 | +>y : Symbol(y, Decl(awaitedOfT.ts, 24, 30)) |
| 168 | +>then : Symbol(then, Decl(awaitedOfT.ts, 24, 34)) |
| 169 | +>x : Symbol(x, Decl(awaitedOfT.ts, 24, 40)) |
| 170 | +>y : Symbol(y, Decl(awaitedOfT.ts, 24, 44)) |
| 171 | + |
| 172 | +// self recursive bad promise |
| 173 | +type T26 = Awaited<BadPromise>; // BadPromise (no recursive unwrap, differs from 'await') |
| 174 | +>T26 : Symbol(T26, Decl(awaitedOfT.ts, 24, 93)) |
| 175 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 176 | +>BadPromise : Symbol(BadPromise, Decl(awaitedOfT.ts, 27, 31)) |
| 177 | + |
| 178 | +interface BadPromise { then(cb: (value: BadPromise) => void): any; } |
| 179 | +>BadPromise : Symbol(BadPromise, Decl(awaitedOfT.ts, 27, 31)) |
| 180 | +>then : Symbol(BadPromise.then, Decl(awaitedOfT.ts, 28, 22)) |
| 181 | +>cb : Symbol(cb, Decl(awaitedOfT.ts, 28, 28)) |
| 182 | +>value : Symbol(value, Decl(awaitedOfT.ts, 28, 33)) |
| 183 | +>BadPromise : Symbol(BadPromise, Decl(awaitedOfT.ts, 27, 31)) |
| 184 | + |
| 185 | +// mutually recursive bad promises |
| 186 | +type T27 = Awaited<BadPromiseA>; // BadPromiseB (no recursive unwrap, differs from 'await') |
| 187 | +>T27 : Symbol(T27, Decl(awaitedOfT.ts, 28, 68)) |
| 188 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 189 | +>BadPromiseA : Symbol(BadPromiseA, Decl(awaitedOfT.ts, 31, 32)) |
| 190 | + |
| 191 | +interface BadPromiseA { then(cb: (value: BadPromiseB) => void): any; } |
| 192 | +>BadPromiseA : Symbol(BadPromiseA, Decl(awaitedOfT.ts, 31, 32)) |
| 193 | +>then : Symbol(BadPromiseA.then, Decl(awaitedOfT.ts, 32, 23)) |
| 194 | +>cb : Symbol(cb, Decl(awaitedOfT.ts, 32, 29)) |
| 195 | +>value : Symbol(value, Decl(awaitedOfT.ts, 32, 34)) |
| 196 | +>BadPromiseB : Symbol(BadPromiseB, Decl(awaitedOfT.ts, 32, 70)) |
| 197 | + |
| 198 | +interface BadPromiseB { then(cb: (value: BadPromiseA) => void): any; } |
| 199 | +>BadPromiseB : Symbol(BadPromiseB, Decl(awaitedOfT.ts, 32, 70)) |
| 200 | +>then : Symbol(BadPromiseB.then, Decl(awaitedOfT.ts, 33, 23)) |
| 201 | +>cb : Symbol(cb, Decl(awaitedOfT.ts, 33, 29)) |
| 202 | +>value : Symbol(value, Decl(awaitedOfT.ts, 33, 34)) |
| 203 | +>BadPromiseA : Symbol(BadPromiseA, Decl(awaitedOfT.ts, 31, 32)) |
| 204 | + |
| 205 | +type T28 = Awaited<never>; // never (same as 'await') |
| 206 | +>T28 : Symbol(T28, Decl(awaitedOfT.ts, 33, 70)) |
| 207 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 208 | + |
| 209 | +type T29 = Awaited<number | Promise<string>>; // string | number (same as 'await') |
| 210 | +>T29 : Symbol(T29, Decl(awaitedOfT.ts, 35, 26)) |
| 211 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 212 | +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) |
| 213 | + |
| 214 | +type T30 = Awaited<number | Promise<never>>; // number (same as 'await') |
| 215 | +>T30 : Symbol(T30, Decl(awaitedOfT.ts, 36, 45)) |
| 216 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 217 | +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) |
| 218 | + |
| 219 | +type T31 = Awaited<PromiseLike<number> | Promise<string>>; // string | number (same as 'await') |
| 220 | +>T31 : Symbol(T31, Decl(awaitedOfT.ts, 37, 44)) |
| 221 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 222 | +>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --)) |
| 223 | +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) |
| 224 | + |
| 225 | +type T32 = Awaited<Awaited<number>>; // number (same as 'await') |
| 226 | +>T32 : Symbol(T32, Decl(awaitedOfT.ts, 38, 58)) |
| 227 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 228 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 229 | + |
| 230 | +type T33 = Awaited<Promise<Awaited<Promise<number>>>>; // number (same as 'await') |
| 231 | +>T33 : Symbol(T33, Decl(awaitedOfT.ts, 39, 36)) |
| 232 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 233 | +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) |
| 234 | +>Awaited : Symbol(Awaited, Decl(lib.es5.d.ts, --, --)) |
| 235 | +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) |
| 236 | + |
0 commit comments