diff --git a/tests/baselines/reference/promiseType.js b/tests/baselines/reference/promiseType.js index 84d9d713b4810..b51996ebebb6d 100644 --- a/tests/baselines/reference/promiseType.js +++ b/tests/baselines/reference/promiseType.js @@ -217,6 +217,26 @@ const pc6 = p.then(() => Promise.reject("1"), () => {}); const pc7 = p.then(() => Promise.reject("1"), () => {throw 1}); const pc8 = p.then(() => Promise.reject("1"), () => Promise.resolve(1)); const pc9 = p.then(() => Promise.reject("1"), () => Promise.reject(1)); + +// #27711 + +const p2: Promise = new Promise>(() => {}); + +declare const x2: Promise | string; + +// #28427 + +Promise.all([x2]); + +Promise.resolve(x2); + +declare function f1(resolve: (value: Promise | string) => void); +new Promise(f1); + +// #30390 + +declare function f2(): Promise | string; +p.then(f2); //// [promiseType.js] @@ -440,3 +460,10 @@ const pc6 = p.then(() => Promise.reject("1"), () => { }); const pc7 = p.then(() => Promise.reject("1"), () => { throw 1; }); const pc8 = p.then(() => Promise.reject("1"), () => Promise.resolve(1)); const pc9 = p.then(() => Promise.reject("1"), () => Promise.reject(1)); +// #27711 +const p2 = new Promise(() => { }); +// #28427 +Promise.all([x2]); +Promise.resolve(x2); +new Promise(f1); +p.then(f2); diff --git a/tests/baselines/reference/promiseType.symbols b/tests/baselines/reference/promiseType.symbols index cec81cd7d8266..4aad78b90ee3b 100644 --- a/tests/baselines/reference/promiseType.symbols +++ b/tests/baselines/reference/promiseType.symbols @@ -1089,3 +1089,51 @@ const pc9 = p.then(() => Promise.reject("1"), () => Promise.reject(1)); >Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --)) +// #27711 + +const p2: Promise = new Promise>(() => {}); +>p2 : Symbol(p2, Decl(promiseType.ts, 221, 5)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +declare const x2: Promise | string; +>x2 : Symbol(x2, Decl(promiseType.ts, 223, 13)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +// #28427 + +Promise.all([x2]); +>Promise.all : Symbol(PromiseConstructor.all, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --) ... and 6 more) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>all : Symbol(PromiseConstructor.all, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --) ... and 6 more) +>x2 : Symbol(x2, Decl(promiseType.ts, 223, 13)) + +Promise.resolve(x2); +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>x2 : Symbol(x2, Decl(promiseType.ts, 223, 13)) + +declare function f1(resolve: (value: Promise | string) => void); +>f1 : Symbol(f1, Decl(promiseType.ts, 229, 20)) +>resolve : Symbol(resolve, Decl(promiseType.ts, 231, 20)) +>value : Symbol(value, Decl(promiseType.ts, 231, 30)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +new Promise(f1); +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>f1 : Symbol(f1, Decl(promiseType.ts, 229, 20)) + +// #30390 + +declare function f2(): Promise | string; +>f2 : Symbol(f2, Decl(promiseType.ts, 232, 16)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +p.then(f2); +>p.then : Symbol(Promise.then, Decl(lib.es5.d.ts, --, --)) +>p : Symbol(p, Decl(promiseType.ts, 0, 11)) +>then : Symbol(Promise.then, Decl(lib.es5.d.ts, --, --)) +>f2 : Symbol(f2, Decl(promiseType.ts, 232, 16)) + diff --git a/tests/baselines/reference/promiseType.types b/tests/baselines/reference/promiseType.types index e0580f999033d..ea7c281250e91 100644 --- a/tests/baselines/reference/promiseType.types +++ b/tests/baselines/reference/promiseType.types @@ -1583,3 +1583,53 @@ const pc9 = p.then(() => Promise.reject("1"), () => Promise.reject(1)); >reject : (reason?: any) => Promise >1 : 1 +// #27711 + +const p2: Promise = new Promise>(() => {}); +>p2 : Promise +>new Promise>(() => {}) : Promise +>Promise : PromiseConstructor +>() => {} : () => void + +declare const x2: Promise | string; +>x2 : string | Promise + +// #28427 + +Promise.all([x2]); +>Promise.all([x2]) : Promise<(string | number)[]> +>Promise.all : { (values: Iterable): Promise<(TAll extends PromiseLike ? UAll : TAll)[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } +>Promise : PromiseConstructor +>all : { (values: Iterable): Promise<(TAll extends PromiseLike ? UAll : TAll)[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } +>[x2] : (string | Promise)[] +>x2 : string | Promise + +Promise.resolve(x2); +>Promise.resolve(x2) : Promise +>Promise.resolve : { (value: T): Promise>; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T): Promise>; (): Promise; } +>x2 : string | Promise + +declare function f1(resolve: (value: Promise | string) => void); +>f1 : (resolve: (value: string | Promise) => void) => any +>resolve : (value: string | Promise) => void +>value : string | Promise + +new Promise(f1); +>new Promise(f1) : Promise +>Promise : PromiseConstructor +>f1 : (resolve: (value: string | Promise) => void) => any + +// #30390 + +declare function f2(): Promise | string; +>f2 : () => string | Promise + +p.then(f2); +>p.then(f2) : Promise +>p.then : (onfulfilled?: (value: boolean) => TResult1, onrejected?: (reason: any) => TResult2) => Promise<(TResult1 extends PromiseLike ? UResult1 : TResult1) | (TResult2 extends PromiseLike ? UResult2 : TResult2)> +>p : Promise +>then : (onfulfilled?: (value: boolean) => TResult1, onrejected?: (reason: any) => TResult2) => Promise<(TResult1 extends PromiseLike ? UResult1 : TResult1) | (TResult2 extends PromiseLike ? UResult2 : TResult2)> +>f2 : () => string | Promise + diff --git a/tests/cases/compiler/promiseType.ts b/tests/cases/compiler/promiseType.ts index ba4a7f6041396..d78e50530177e 100644 --- a/tests/cases/compiler/promiseType.ts +++ b/tests/cases/compiler/promiseType.ts @@ -217,3 +217,23 @@ const pc6 = p.then(() => Promise.reject("1"), () => {}); const pc7 = p.then(() => Promise.reject("1"), () => {throw 1}); const pc8 = p.then(() => Promise.reject("1"), () => Promise.resolve(1)); const pc9 = p.then(() => Promise.reject("1"), () => Promise.reject(1)); + +// #27711 + +const p2: Promise = new Promise>(() => {}); + +declare const x2: Promise | string; + +// #28427 + +Promise.all([x2]); + +Promise.resolve(x2); + +declare function f1(resolve: (value: Promise | string) => void); +new Promise(f1); + +// #30390 + +declare function f2(): Promise | string; +p.then(f2);