diff --git a/src/harness/tsconfig.json b/src/harness/tsconfig.json index 4a9af10818616..8444d1d4a751e 100644 --- a/src/harness/tsconfig.json +++ b/src/harness/tsconfig.json @@ -40,7 +40,6 @@ "../compiler/emitter.ts", "../compiler/program.ts", "../compiler/commandLineParser.ts", - "../compiler/tsc.ts", "../compiler/diagnosticInformationMap.generated.ts", "../services/breakpoints.ts", "../services/navigateTo.ts", diff --git a/tests/baselines/reference/asyncFunctionDeclaration15_es5.errors.txt b/tests/baselines/reference/asyncFunctionDeclaration15_es5.errors.txt index 62c64f2cd5401..3ea03927aa9ba 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration15_es5.errors.txt +++ b/tests/baselines/reference/asyncFunctionDeclaration15_es5.errors.txt @@ -6,7 +6,7 @@ tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration1 tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(10,23): error TS1055: Type 'typeof Thenable' is not a valid async function return type. Type 'Thenable' is not assignable to type 'PromiseLike'. Types of property 'then' are incompatible. - Type '() => void' is not assignable to type '{ (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => void): PromiseLike; }'. + Type '() => void' is not assignable to type '{ (onfulfilled?: (value: any) => any, onrejected?: (reason: any) => any): PromiseLike; (onfulfilled: (value: any) => any, onrejected: (reason: any) => TResult | PromiseLike): PromiseLike; (onfulfilled: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; (onfulfilled: (value: any) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): PromiseLike; }'. Type 'void' is not assignable to type 'PromiseLike'. tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(17,16): error TS1059: Return expression in async function does not have a valid callable 'then' member. tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(23,25): error TS1058: Operand for 'await' does not have a valid callable 'then' member. @@ -37,7 +37,7 @@ tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration1 !!! error TS1055: Type 'typeof Thenable' is not a valid async function return type. !!! error TS1055: Type 'Thenable' is not assignable to type 'PromiseLike'. !!! error TS1055: Types of property 'then' are incompatible. -!!! error TS1055: Type '() => void' is not assignable to type '{ (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => void): PromiseLike; }'. +!!! error TS1055: Type '() => void' is not assignable to type '{ (onfulfilled?: (value: any) => any, onrejected?: (reason: any) => any): PromiseLike; (onfulfilled: (value: any) => any, onrejected: (reason: any) => TResult | PromiseLike): PromiseLike; (onfulfilled: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; (onfulfilled: (value: any) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): PromiseLike; }'. !!! error TS1055: Type 'void' is not assignable to type 'PromiseLike'. async function fn7() { return; } // valid: Promise async function fn8() { return 1; } // valid: Promise diff --git a/tests/baselines/reference/promiseType.types b/tests/baselines/reference/promiseType.types index 3323b9d3844dc..3d055f73f0a9a 100644 --- a/tests/baselines/reference/promiseType.types +++ b/tests/baselines/reference/promiseType.types @@ -11,22 +11,22 @@ const a = p.then(); >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } const b = p.then(b => 1); ->b : Promise ->p.then(b => 1) : Promise +>b : Promise<1> +>p.then(b => 1) : Promise<1> >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->b => 1 : (b: boolean) => number +>b => 1 : (b: boolean) => 1 >b : boolean >1 : 1 const c = p.then(b => 1, e => 'error'); ->c : Promise ->p.then(b => 1, e => 'error') : Promise +>c : Promise +>p.then(b => 1, e => 'error') : Promise >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->b => 1 : (b: boolean) => number +>b => 1 : (b: boolean) => 1 >b : boolean >1 : 1 >e => 'error' : (e: any) => string @@ -34,24 +34,24 @@ const c = p.then(b => 1, e => 'error'); >'error' : "error" const d = p.then(b => 1, e => { }); ->d : Promise ->p.then(b => 1, e => { }) : Promise +>d : Promise +>p.then(b => 1, e => { }) : Promise >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->b => 1 : (b: boolean) => number +>b => 1 : (b: boolean) => 1 >b : boolean >1 : 1 >e => { } : (e: any) => void >e : any const e = p.then(b => 1, e => { throw Error(); }); ->e : Promise ->p.then(b => 1, e => { throw Error(); }) : Promise +>e : Promise<1> +>p.then(b => 1, e => { throw Error(); }) : Promise<1> >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->b => 1 : (b: boolean) => number +>b => 1 : (b: boolean) => 1 >b : boolean >1 : 1 >e => { throw Error(); } : (e: any) => never @@ -60,12 +60,12 @@ const e = p.then(b => 1, e => { throw Error(); }); >Error : ErrorConstructor const f = p.then(b => 1, e => Promise.reject(Error())); ->f : Promise ->p.then(b => 1, e => Promise.reject(Error())) : Promise +>f : Promise<1> +>p.then(b => 1, e => Promise.reject(Error())) : Promise<1> >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->b => 1 : (b: boolean) => number +>b => 1 : (b: boolean) => 1 >b : boolean >1 : 1 >e => Promise.reject(Error()) : (e: any) => Promise @@ -78,12 +78,12 @@ const f = p.then(b => 1, e => Promise.reject(Error())); >Error : ErrorConstructor const g = p.catch(e => 'error'); ->g : Promise ->p.catch(e => 'error') : Promise +>g : Promise +>p.catch(e => 'error') : Promise >p.catch : { (onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onrejected: (reason: any) => TResult | PromiseLike): Promise; } >p : Promise >catch : { (onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onrejected: (reason: any) => TResult | PromiseLike): Promise; } ->e => 'error' : (e: any) => string +>e => 'error' : (e: any) => "error" >e : any >'error' : "error" @@ -312,13 +312,13 @@ const p07 = p.catch(null); >null : null const p02 = p.catch(() => 1); ->p02 : Promise ->p.catch(() => 1) : Promise +>p02 : Promise +>p.catch(() => 1) : Promise >p.catch : { (onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onrejected: (reason: any) => TResult | PromiseLike): Promise; } >p : Promise >catch : { (onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onrejected: (reason: any) => TResult | PromiseLike): Promise; } ->() => 1 : () => number ->1 : number +>() => 1 : () => 1 +>1 : 1 const p03 = p.catch(() => {}); >p03 : Promise @@ -335,7 +335,7 @@ const p04 = p.catch(() => {throw 1}); >p : Promise >catch : { (onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onrejected: (reason: any) => TResult | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number +>1 : 1 const p05 = p.catch(() => Promise.reject(1)); >p05 : Promise @@ -348,7 +348,7 @@ const p05 = p.catch(() => Promise.reject(1)); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 const p06 = p.catch(() => Promise.resolve(1)); >p06 : Promise @@ -361,7 +361,7 @@ const p06 = p.catch(() => Promise.resolve(1)); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p10 = p.then(); >p10 : Promise @@ -379,13 +379,13 @@ const p20 = p.then(undefined); >undefined : undefined const p21 = p.then(() => 1); ->p21 : Promise ->p.then(() => 1) : Promise +>p21 : Promise<1> +>p.then(() => 1) : Promise<1> >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->() => 1 : () => number ->1 : number +>() => 1 : () => 1 +>1 : 1 const p22 = p.then(() => {}); >p22 : Promise @@ -402,7 +402,7 @@ const p23 = p.then(() => {throw 1}); >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number +>1 : 1 const p24 = p.then(() => Promise.resolve(1)); >p24 : Promise @@ -415,7 +415,7 @@ const p24 = p.then(() => Promise.resolve(1)); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p25 = p.then(() => Promise.reject(1)); >p25 : Promise @@ -428,7 +428,7 @@ const p25 = p.then(() => Promise.reject(1)); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 const p30 = p.then(undefined, undefined); >p30 : Promise @@ -440,14 +440,14 @@ const p30 = p.then(undefined, undefined); >undefined : undefined const p31 = p.then(undefined, () => 1); ->p31 : Promise ->p.then(undefined, () => 1) : Promise +>p31 : Promise +>p.then(undefined, () => 1) : Promise >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >undefined : undefined ->() => 1 : () => number ->1 : number +>() => 1 : () => 1 +>1 : 1 const p32 = p.then(undefined, () => {}); >p32 : Promise @@ -466,7 +466,7 @@ const p33 = p.then(undefined, () => {throw 1}); >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >undefined : undefined >() => {throw 1} : () => never ->1 : number +>1 : 1 const p34 = p.then(undefined, () => Promise.resolve(1)); >p34 : Promise @@ -480,7 +480,7 @@ const p34 = p.then(undefined, () => Promise.resolve(1)); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p35 = p.then(undefined, () => Promise.reject(1)); >p35 : Promise @@ -494,79 +494,79 @@ const p35 = p.then(undefined, () => Promise.reject(1)); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 const p40 = p.then(() => "1", undefined); ->p40 : Promise ->p.then(() => "1", undefined) : Promise +>p40 : Promise<"1"> +>p.then(() => "1", undefined) : Promise<"1"> >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->() => "1" : () => string ->"1" : string +>() => "1" : () => "1" +>"1" : "1" >undefined : undefined const p41 = p.then(() => "1", () => 1); ->p41 : Promise ->p.then(() => "1", () => 1) : Promise +>p41 : Promise +>p.then(() => "1", () => 1) : Promise >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->() => "1" : () => string ->"1" : string +>() => "1" : () => "1" +>"1" : "1" >() => 1 : () => number ->1 : number +>1 : 1 const p42 = p.then(() => "1", () => {}); ->p42 : Promise ->p.then(() => "1", () => {}) : Promise +>p42 : Promise +>p.then(() => "1", () => {}) : Promise >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->() => "1" : () => string ->"1" : string +>() => "1" : () => "1" +>"1" : "1" >() => {} : () => void const p43 = p.then(() => "1", () => {throw 1}); ->p43 : Promise ->p.then(() => "1", () => {throw 1}) : Promise +>p43 : Promise<"1"> +>p.then(() => "1", () => {throw 1}) : Promise<"1"> >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->() => "1" : () => string ->"1" : string +>() => "1" : () => "1" +>"1" : "1" >() => {throw 1} : () => never ->1 : number +>1 : 1 const p44 = p.then(() => "1", () => Promise.resolve(1)); ->p44 : Promise ->p.then(() => "1", () => Promise.resolve(1)) : Promise +>p44 : Promise +>p.then(() => "1", () => Promise.resolve(1)) : Promise >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->() => "1" : () => string ->"1" : string +>() => "1" : () => "1" +>"1" : "1" >() => Promise.resolve(1) : () => Promise >Promise.resolve(1) : Promise >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p45 = p.then(() => "1", () => Promise.reject(1)); ->p45 : Promise ->p.then(() => "1", () => Promise.reject(1)) : Promise +>p45 : Promise<"1"> +>p.then(() => "1", () => Promise.reject(1)) : Promise<"1"> >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->() => "1" : () => string ->"1" : string +>() => "1" : () => "1" +>"1" : "1" >() => Promise.reject(1) : () => Promise >Promise.reject(1) : Promise >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 const p50 = p.then(() => {}, undefined); >p50 : Promise @@ -585,7 +585,7 @@ const p51 = p.then(() => {}, () => 1); >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {} : () => void >() => 1 : () => number ->1 : number +>1 : 1 const p52 = p.then(() => {}, () => {}); >p52 : Promise @@ -604,7 +604,7 @@ const p53 = p.then(() => {}, () => {throw 1}); >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {} : () => void >() => {throw 1} : () => never ->1 : number +>1 : 1 const p54 = p.then(() => {}, () => Promise.resolve(1)); >p54 : Promise @@ -618,7 +618,7 @@ const p54 = p.then(() => {}, () => Promise.resolve(1)); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p55 = p.then(() => {}, () => Promise.reject(1)); >p55 : Promise @@ -632,7 +632,7 @@ const p55 = p.then(() => {}, () => Promise.reject(1)); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 const p60 = p.then(() => {throw 1}, undefined); >p60 : Promise @@ -641,19 +641,19 @@ const p60 = p.then(() => {throw 1}, undefined); >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number +>1 : 1 >undefined : undefined const p61 = p.then(() => {throw 1}, () => 1); ->p61 : Promise ->p.then(() => {throw 1}, () => 1) : Promise +>p61 : Promise +>p.then(() => {throw 1}, () => 1) : Promise >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number ->() => 1 : () => number ->1 : number +>1 : 1 +>() => 1 : () => 1 +>1 : 1 const p62 = p.then(() => {throw 1}, () => {}); >p62 : Promise @@ -662,7 +662,7 @@ const p62 = p.then(() => {throw 1}, () => {}); >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number +>1 : 1 >() => {} : () => void const p63 = p.then(() => {throw 1}, () => {throw 1}); @@ -672,9 +672,9 @@ const p63 = p.then(() => {throw 1}, () => {throw 1}); >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number +>1 : 1 >() => {throw 1} : () => never ->1 : number +>1 : 1 const p64 = p.then(() => {throw 1}, () => Promise.resolve(1)); >p64 : Promise @@ -683,13 +683,13 @@ const p64 = p.then(() => {throw 1}, () => Promise.resolve(1)); >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number +>1 : 1 >() => Promise.resolve(1) : () => Promise >Promise.resolve(1) : Promise >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p65 = p.then(() => {throw 1}, () => Promise.reject(1)); >p65 : Promise @@ -698,13 +698,13 @@ const p65 = p.then(() => {throw 1}, () => Promise.reject(1)); >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number +>1 : 1 >() => Promise.reject(1) : () => Promise >Promise.reject(1) : Promise >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 const p70 = p.then(() => Promise.resolve("1"), undefined); >p70 : Promise @@ -717,7 +717,7 @@ const p70 = p.then(() => Promise.resolve("1"), undefined); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->"1" : string +>"1" : "1" >undefined : undefined const p71 = p.then(() => Promise.resolve("1"), () => 1); @@ -731,9 +731,9 @@ const p71 = p.then(() => Promise.resolve("1"), () => 1); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->"1" : string +>"1" : "1" >() => 1 : () => number ->1 : number +>1 : 1 const p72 = p.then(() => Promise.resolve("1"), () => {}); >p72 : Promise @@ -746,7 +746,7 @@ const p72 = p.then(() => Promise.resolve("1"), () => {}); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->"1" : string +>"1" : "1" >() => {} : () => void const p73 = p.then(() => Promise.resolve("1"), () => {throw 1}); @@ -760,9 +760,9 @@ const p73 = p.then(() => Promise.resolve("1"), () => {throw 1}); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->"1" : string +>"1" : "1" >() => {throw 1} : () => never ->1 : number +>1 : 1 const p74 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1)); >p74 : Promise @@ -775,13 +775,13 @@ const p74 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1)); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->"1" : string +>"1" : "1" >() => Promise.resolve(1) : () => Promise >Promise.resolve(1) : Promise >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p75 = p.then(() => Promise.resolve("1"), () => Promise.reject(1)); >p75 : Promise @@ -794,13 +794,13 @@ const p75 = p.then(() => Promise.resolve("1"), () => Promise.reject(1)); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->"1" : string +>"1" : "1" >() => Promise.reject(1) : () => Promise >Promise.reject(1) : Promise >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 const p80 = p.then(() => Promise.reject(1), undefined); >p80 : Promise @@ -813,12 +813,12 @@ const p80 = p.then(() => Promise.reject(1), undefined); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 >undefined : undefined const p81 = p.then(() => Promise.reject(1), () => 1); ->p81 : Promise ->p.then(() => Promise.reject(1), () => 1) : Promise +>p81 : Promise +>p.then(() => Promise.reject(1), () => 1) : Promise >p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike, onrejected?: (reason: any) => boolean | PromiseLike): Promise; (onfulfilled: (value: boolean) => boolean | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } @@ -827,9 +827,9 @@ const p81 = p.then(() => Promise.reject(1), () => 1); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number ->() => 1 : () => number ->1 : number +>1 : 1 +>() => 1 : () => 1 +>1 : 1 const p82 = p.then(() => Promise.reject(1), () => {}); >p82 : Promise @@ -842,7 +842,7 @@ const p82 = p.then(() => Promise.reject(1), () => {}); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 >() => {} : () => void const p83 = p.then(() => Promise.reject(1), () => {throw 1}); @@ -856,9 +856,9 @@ const p83 = p.then(() => Promise.reject(1), () => {throw 1}); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 >() => {throw 1} : () => never ->1 : number +>1 : 1 const p84 = p.then(() => Promise.reject(1), () => Promise.resolve(1)); >p84 : Promise @@ -871,13 +871,13 @@ const p84 = p.then(() => Promise.reject(1), () => Promise.resolve(1)); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 >() => Promise.resolve(1) : () => Promise >Promise.resolve(1) : Promise >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p85 = p.then(() => Promise.reject(1), () => Promise.reject(1)); >p85 : Promise @@ -890,11 +890,11 @@ const p85 = p.then(() => Promise.reject(1), () => Promise.reject(1)); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 >() => Promise.reject(1) : () => Promise >Promise.reject(1) : Promise >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 diff --git a/tests/baselines/reference/promiseTypeStrictNull.types b/tests/baselines/reference/promiseTypeStrictNull.types index 951d4b5759012..a65547ec5f3ae 100644 --- a/tests/baselines/reference/promiseTypeStrictNull.types +++ b/tests/baselines/reference/promiseTypeStrictNull.types @@ -11,63 +11,63 @@ const a = p.then(); >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } const b = p.then(b => 1); ->b : Promise ->p.then(b => 1) : Promise +>b : Promise<1> +>p.then(b => 1) : Promise<1> >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->b => 1 : (b: boolean) => number +>b => 1 : (b: boolean) => 1 >b : boolean ->1 : number +>1 : 1 const c = p.then(b => 1, e => 'error'); ->c : Promise ->p.then(b => 1, e => 'error') : Promise +>c : Promise +>p.then(b => 1, e => 'error') : Promise >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->b => 1 : (b: boolean) => number +>b => 1 : (b: boolean) => 1 >b : boolean ->1 : number +>1 : 1 >e => 'error' : (e: any) => string >e : any ->'error' : string +>'error' : "error" const d = p.then(b => 1, e => { }); ->d : Promise ->p.then(b => 1, e => { }) : Promise +>d : Promise +>p.then(b => 1, e => { }) : Promise >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->b => 1 : (b: boolean) => number +>b => 1 : (b: boolean) => 1 >b : boolean ->1 : number +>1 : 1 >e => { } : (e: any) => void >e : any const e = p.then(b => 1, e => { throw Error(); }); ->e : Promise ->p.then(b => 1, e => { throw Error(); }) : Promise +>e : Promise<1> +>p.then(b => 1, e => { throw Error(); }) : Promise<1> >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->b => 1 : (b: boolean) => number +>b => 1 : (b: boolean) => 1 >b : boolean ->1 : number +>1 : 1 >e => { throw Error(); } : (e: any) => never >e : any >Error() : Error >Error : ErrorConstructor const f = p.then(b => 1, e => Promise.reject(Error())); ->f : Promise ->p.then(b => 1, e => Promise.reject(Error())) : Promise +>f : Promise<1> +>p.then(b => 1, e => Promise.reject(Error())) : Promise<1> >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->b => 1 : (b: boolean) => number +>b => 1 : (b: boolean) => 1 >b : boolean ->1 : number +>1 : 1 >e => Promise.reject(Error()) : (e: any) => Promise >e : any >Promise.reject(Error()) : Promise @@ -78,14 +78,14 @@ const f = p.then(b => 1, e => Promise.reject(Error())); >Error : ErrorConstructor const g = p.catch(e => 'error'); ->g : Promise ->p.catch(e => 'error') : Promise +>g : Promise +>p.catch(e => 'error') : Promise >p.catch : { (onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onrejected: (reason: any) => TResult | PromiseLike): Promise; } >p : Promise >catch : { (onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onrejected: (reason: any) => TResult | PromiseLike): Promise; } ->e => 'error' : (e: any) => string +>e => 'error' : (e: any) => "error" >e : any ->'error' : string +>'error' : "error" const h = p.catch(e => { }); >h : Promise @@ -143,7 +143,7 @@ async function B() { >p : Promise return 1; ->1 : number +>1 : 1 } // NOTE: This reports a "No best comment type exists among return expressions." error, and is @@ -159,7 +159,7 @@ async function B() { // } async function D() { ->D : () => Promise +>D : () => Promise<1 | undefined> try { const a = await p; @@ -168,7 +168,7 @@ async function D() { >p : Promise return 1; ->1 : number +>1 : 1 } catch (e) { >e : any @@ -185,7 +185,7 @@ async function E() { >p : Promise return 1; ->1 : number +>1 : 1 } catch (e) { >e : any @@ -206,7 +206,7 @@ async function F() { >p : Promise return 1; ->1 : number +>1 : 1 } catch (e) { >e : any @@ -312,13 +312,13 @@ const p07 = p.catch(null); >null : null const p02 = p.catch(() => 1); ->p02 : Promise ->p.catch(() => 1) : Promise +>p02 : Promise +>p.catch(() => 1) : Promise >p.catch : { (onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onrejected: (reason: any) => TResult | PromiseLike): Promise; } >p : Promise >catch : { (onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onrejected: (reason: any) => TResult | PromiseLike): Promise; } ->() => 1 : () => number ->1 : number +>() => 1 : () => 1 +>1 : 1 const p03 = p.catch(() => {}); >p03 : Promise @@ -335,7 +335,7 @@ const p04 = p.catch(() => {throw 1}); >p : Promise >catch : { (onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onrejected: (reason: any) => TResult | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number +>1 : 1 const p05 = p.catch(() => Promise.reject(1)); >p05 : Promise @@ -348,7 +348,7 @@ const p05 = p.catch(() => Promise.reject(1)); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 const p06 = p.catch(() => Promise.resolve(1)); >p06 : Promise @@ -361,7 +361,7 @@ const p06 = p.catch(() => Promise.resolve(1)); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p10 = p.then(); >p10 : Promise @@ -379,13 +379,13 @@ const p20 = p.then(undefined); >undefined : undefined const p21 = p.then(() => 1); ->p21 : Promise ->p.then(() => 1) : Promise +>p21 : Promise<1> +>p.then(() => 1) : Promise<1> >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->() => 1 : () => number ->1 : number +>() => 1 : () => 1 +>1 : 1 const p22 = p.then(() => {}); >p22 : Promise @@ -402,7 +402,7 @@ const p23 = p.then(() => {throw 1}); >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number +>1 : 1 const p24 = p.then(() => Promise.resolve(1)); >p24 : Promise @@ -415,7 +415,7 @@ const p24 = p.then(() => Promise.resolve(1)); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p25 = p.then(() => Promise.reject(1)); >p25 : Promise @@ -428,7 +428,7 @@ const p25 = p.then(() => Promise.reject(1)); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 const p30 = p.then(undefined, undefined); >p30 : Promise @@ -440,14 +440,14 @@ const p30 = p.then(undefined, undefined); >undefined : undefined const p31 = p.then(undefined, () => 1); ->p31 : Promise ->p.then(undefined, () => 1) : Promise +>p31 : Promise +>p.then(undefined, () => 1) : Promise >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >undefined : undefined ->() => 1 : () => number ->1 : number +>() => 1 : () => 1 +>1 : 1 const p32 = p.then(undefined, () => {}); >p32 : Promise @@ -466,7 +466,7 @@ const p33 = p.then(undefined, () => {throw 1}); >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >undefined : undefined >() => {throw 1} : () => never ->1 : number +>1 : 1 const p34 = p.then(undefined, () => Promise.resolve(1)); >p34 : Promise @@ -480,7 +480,7 @@ const p34 = p.then(undefined, () => Promise.resolve(1)); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p35 = p.then(undefined, () => Promise.reject(1)); >p35 : Promise @@ -494,79 +494,79 @@ const p35 = p.then(undefined, () => Promise.reject(1)); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 const p40 = p.then(() => "1", undefined); ->p40 : Promise ->p.then(() => "1", undefined) : Promise +>p40 : Promise<"1"> +>p.then(() => "1", undefined) : Promise<"1"> >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->() => "1" : () => string ->"1" : string +>() => "1" : () => "1" +>"1" : "1" >undefined : undefined const p41 = p.then(() => "1", () => 1); ->p41 : Promise ->p.then(() => "1", () => 1) : Promise +>p41 : Promise +>p.then(() => "1", () => 1) : Promise >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->() => "1" : () => string ->"1" : string +>() => "1" : () => "1" +>"1" : "1" >() => 1 : () => number ->1 : number +>1 : 1 const p42 = p.then(() => "1", () => {}); ->p42 : Promise ->p.then(() => "1", () => {}) : Promise +>p42 : Promise +>p.then(() => "1", () => {}) : Promise >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->() => "1" : () => string ->"1" : string +>() => "1" : () => "1" +>"1" : "1" >() => {} : () => void const p43 = p.then(() => "1", () => {throw 1}); ->p43 : Promise ->p.then(() => "1", () => {throw 1}) : Promise +>p43 : Promise<"1"> +>p.then(() => "1", () => {throw 1}) : Promise<"1"> >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->() => "1" : () => string ->"1" : string +>() => "1" : () => "1" +>"1" : "1" >() => {throw 1} : () => never ->1 : number +>1 : 1 const p44 = p.then(() => "1", () => Promise.resolve(1)); ->p44 : Promise ->p.then(() => "1", () => Promise.resolve(1)) : Promise +>p44 : Promise +>p.then(() => "1", () => Promise.resolve(1)) : Promise >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->() => "1" : () => string ->"1" : string +>() => "1" : () => "1" +>"1" : "1" >() => Promise.resolve(1) : () => Promise >Promise.resolve(1) : Promise >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p45 = p.then(() => "1", () => Promise.reject(1)); ->p45 : Promise ->p.then(() => "1", () => Promise.reject(1)) : Promise +>p45 : Promise<"1"> +>p.then(() => "1", () => Promise.reject(1)) : Promise<"1"> >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } ->() => "1" : () => string ->"1" : string +>() => "1" : () => "1" +>"1" : "1" >() => Promise.reject(1) : () => Promise >Promise.reject(1) : Promise >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 const p50 = p.then(() => {}, undefined); >p50 : Promise @@ -585,7 +585,7 @@ const p51 = p.then(() => {}, () => 1); >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {} : () => void >() => 1 : () => number ->1 : number +>1 : 1 const p52 = p.then(() => {}, () => {}); >p52 : Promise @@ -604,7 +604,7 @@ const p53 = p.then(() => {}, () => {throw 1}); >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {} : () => void >() => {throw 1} : () => never ->1 : number +>1 : 1 const p54 = p.then(() => {}, () => Promise.resolve(1)); >p54 : Promise @@ -618,7 +618,7 @@ const p54 = p.then(() => {}, () => Promise.resolve(1)); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p55 = p.then(() => {}, () => Promise.reject(1)); >p55 : Promise @@ -632,7 +632,7 @@ const p55 = p.then(() => {}, () => Promise.reject(1)); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 const p60 = p.then(() => {throw 1}, undefined); >p60 : Promise @@ -641,19 +641,19 @@ const p60 = p.then(() => {throw 1}, undefined); >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number +>1 : 1 >undefined : undefined const p61 = p.then(() => {throw 1}, () => 1); ->p61 : Promise ->p.then(() => {throw 1}, () => 1) : Promise +>p61 : Promise +>p.then(() => {throw 1}, () => 1) : Promise >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number ->() => 1 : () => number ->1 : number +>1 : 1 +>() => 1 : () => 1 +>1 : 1 const p62 = p.then(() => {throw 1}, () => {}); >p62 : Promise @@ -662,7 +662,7 @@ const p62 = p.then(() => {throw 1}, () => {}); >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number +>1 : 1 >() => {} : () => void const p63 = p.then(() => {throw 1}, () => {throw 1}); @@ -672,9 +672,9 @@ const p63 = p.then(() => {throw 1}, () => {throw 1}); >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number +>1 : 1 >() => {throw 1} : () => never ->1 : number +>1 : 1 const p64 = p.then(() => {throw 1}, () => Promise.resolve(1)); >p64 : Promise @@ -683,13 +683,13 @@ const p64 = p.then(() => {throw 1}, () => Promise.resolve(1)); >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number +>1 : 1 >() => Promise.resolve(1) : () => Promise >Promise.resolve(1) : Promise >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p65 = p.then(() => {throw 1}, () => Promise.reject(1)); >p65 : Promise @@ -698,13 +698,13 @@ const p65 = p.then(() => {throw 1}, () => Promise.reject(1)); >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >() => {throw 1} : () => never ->1 : number +>1 : 1 >() => Promise.reject(1) : () => Promise >Promise.reject(1) : Promise >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 const p70 = p.then(() => Promise.resolve("1"), undefined); >p70 : Promise @@ -717,7 +717,7 @@ const p70 = p.then(() => Promise.resolve("1"), undefined); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->"1" : string +>"1" : "1" >undefined : undefined const p71 = p.then(() => Promise.resolve("1"), () => 1); @@ -731,9 +731,9 @@ const p71 = p.then(() => Promise.resolve("1"), () => 1); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->"1" : string +>"1" : "1" >() => 1 : () => number ->1 : number +>1 : 1 const p72 = p.then(() => Promise.resolve("1"), () => {}); >p72 : Promise @@ -746,7 +746,7 @@ const p72 = p.then(() => Promise.resolve("1"), () => {}); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->"1" : string +>"1" : "1" >() => {} : () => void const p73 = p.then(() => Promise.resolve("1"), () => {throw 1}); @@ -760,9 +760,9 @@ const p73 = p.then(() => Promise.resolve("1"), () => {throw 1}); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->"1" : string +>"1" : "1" >() => {throw 1} : () => never ->1 : number +>1 : 1 const p74 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1)); >p74 : Promise @@ -775,13 +775,13 @@ const p74 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1)); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->"1" : string +>"1" : "1" >() => Promise.resolve(1) : () => Promise >Promise.resolve(1) : Promise >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p75 = p.then(() => Promise.resolve("1"), () => Promise.reject(1)); >p75 : Promise @@ -794,13 +794,13 @@ const p75 = p.then(() => Promise.resolve("1"), () => Promise.reject(1)); >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->"1" : string +>"1" : "1" >() => Promise.reject(1) : () => Promise >Promise.reject(1) : Promise >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 const p80 = p.then(() => Promise.reject(1), undefined); >p80 : Promise @@ -813,12 +813,12 @@ const p80 = p.then(() => Promise.reject(1), undefined); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 >undefined : undefined const p81 = p.then(() => Promise.reject(1), () => 1); ->p81 : Promise ->p.then(() => Promise.reject(1), () => 1) : Promise +>p81 : Promise +>p.then(() => Promise.reject(1), () => 1) : Promise >p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } >p : Promise >then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike) | null | undefined): Promise; (onfulfilled: ((value: boolean) => boolean | PromiseLike) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled: (value: boolean) => TResult | PromiseLike, onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; (onfulfilled: (value: boolean) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; } @@ -827,9 +827,9 @@ const p81 = p.then(() => Promise.reject(1), () => 1); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number ->() => 1 : () => number ->1 : number +>1 : 1 +>() => 1 : () => 1 +>1 : 1 const p82 = p.then(() => Promise.reject(1), () => {}); >p82 : Promise @@ -842,7 +842,7 @@ const p82 = p.then(() => Promise.reject(1), () => {}); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 >() => {} : () => void const p83 = p.then(() => Promise.reject(1), () => {throw 1}); @@ -856,9 +856,9 @@ const p83 = p.then(() => Promise.reject(1), () => {throw 1}); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 >() => {throw 1} : () => never ->1 : number +>1 : 1 const p84 = p.then(() => Promise.reject(1), () => Promise.resolve(1)); >p84 : Promise @@ -871,13 +871,13 @@ const p84 = p.then(() => Promise.reject(1), () => Promise.resolve(1)); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 >() => Promise.resolve(1) : () => Promise >Promise.resolve(1) : Promise >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor >resolve : { (value: T | PromiseLike): Promise; (): Promise; } ->1 : number +>1 : 1 const p85 = p.then(() => Promise.reject(1), () => Promise.reject(1)); >p85 : Promise @@ -890,11 +890,11 @@ const p85 = p.then(() => Promise.reject(1), () => Promise.reject(1)); >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1 >() => Promise.reject(1) : () => Promise >Promise.reject(1) : Promise >Promise.reject : { (reason: any): Promise; (reason: any): Promise; } >Promise : PromiseConstructor >reject : { (reason: any): Promise; (reason: any): Promise; } ->1 : number +>1 : 1