Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
rename thennable -> thenable
  • Loading branch information
iisaduan committed May 15, 2024
commit 43762421733e18acf1b633cb4262aaa59b89ad1c
26 changes: 13 additions & 13 deletions tests/baselines/reference/awaitedTypeNoLib.errors.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ error TS2318: Cannot find global type 'Object'.
error TS2318: Cannot find global type 'RegExp'.
error TS2318: Cannot find global type 'String'.
awaitedTypeNoLib.ts(3,15): error TS2304: Cannot find name 'PromiseLike'.
awaitedTypeNoLib.ts(18,27): error TS2345: Argument of type 'NotPromise<TResult> | Thennable<NotPromise<TResult>>' is not assignable to parameter of type 'Thennable<TResult>'.
Type 'NotPromise<TResult>' is not assignable to type 'Thennable<TResult>'.
Type 'TResult | (TResult extends PromiseLike<unknown> ? never : TResult)' is not assignable to type 'Thennable<TResult>'.
Type 'Thennable<unknown> & TResult' is not assignable to type 'Thennable<TResult>'.
awaitedTypeNoLib.ts(18,27): error TS2345: Argument of type 'NotPromise<TResult> | Thenable<NotPromise<TResult>>' is not assignable to parameter of type 'Thenable<TResult>'.
Type 'NotPromise<TResult>' is not assignable to type 'Thenable<TResult>'.
Type 'TResult | (TResult extends PromiseLike<unknown> ? never : TResult)' is not assignable to type 'Thenable<TResult>'.
Type 'Thenable<unknown> & TResult' is not assignable to type 'Thenable<TResult>'.
Type 'unknown' is not assignable to type 'TResult'.
'TResult' could be instantiated with an arbitrary type which could be unrelated to 'unknown'.

Expand All @@ -26,7 +26,7 @@ awaitedTypeNoLib.ts(18,27): error TS2345: Argument of type 'NotPromise<TResult>
!!! error TS2318: Cannot find global type 'RegExp'.
!!! error TS2318: Cannot find global type 'String'.
==== awaitedTypeNoLib.ts (2 errors) ====
type NotPromise<T> = T extends Thennable<unknown>
type NotPromise<T> = T extends Thenable<unknown>
? T
: T extends PromiseLike<unknown>
~~~~~~~~~~~
Expand All @@ -36,28 +36,28 @@ awaitedTypeNoLib.ts(18,27): error TS2345: Argument of type 'NotPromise<TResult>

type Receiver<T> = (value: NotPromise<T>) => void;

class Thennable<T> {
class Thenable<T> {
then(a: Receiver<T>) {}

private handleResolve<TResult>(
result: NotPromise<TResult> | Thennable<NotPromise<TResult>>,
result: NotPromise<TResult> | Thenable<NotPromise<TResult>>,
resolve: Receiver<TResult>,
) {
if (result instanceof Thennable) {
if (result instanceof Thenable) {
// #58547 This previously was a Debug Failure. False expression: type provided should not be a non-generic 'promise'-like.
this.resolvePromise(result, resolve);
~~~~~~
!!! error TS2345: Argument of type 'NotPromise<TResult> | Thennable<NotPromise<TResult>>' is not assignable to parameter of type 'Thennable<TResult>'.
!!! error TS2345: Type 'NotPromise<TResult>' is not assignable to type 'Thennable<TResult>'.
!!! error TS2345: Type 'TResult | (TResult extends PromiseLike<unknown> ? never : TResult)' is not assignable to type 'Thennable<TResult>'.
!!! error TS2345: Type 'Thennable<unknown> & TResult' is not assignable to type 'Thennable<TResult>'.
!!! error TS2345: Argument of type 'NotPromise<TResult> | Thenable<NotPromise<TResult>>' is not assignable to parameter of type 'Thenable<TResult>'.
!!! error TS2345: Type 'NotPromise<TResult>' is not assignable to type 'Thenable<TResult>'.
!!! error TS2345: Type 'TResult | (TResult extends PromiseLike<unknown> ? never : TResult)' is not assignable to type 'Thenable<TResult>'.
!!! error TS2345: Type 'Thenable<unknown> & TResult' is not assignable to type 'Thenable<TResult>'.
!!! error TS2345: Type 'unknown' is not assignable to type 'TResult'.
!!! error TS2345: 'TResult' could be instantiated with an arbitrary type which could be unrelated to 'unknown'.
}
}

private resolvePromise<TResult>(
result: Thennable<TResult>,
result: Thenable<TResult>,
resolve: Receiver<TResult>,
) {}
}
24 changes: 12 additions & 12 deletions tests/baselines/reference/awaitedTypeNoLib.js
Original file line number Diff line number Diff line change
@@ -1,44 +1,44 @@
//// [tests/cases/compiler/awaitedTypeNoLib.ts] ////

//// [awaitedTypeNoLib.ts]
type NotPromise<T> = T extends Thennable<unknown>
type NotPromise<T> = T extends Thenable<unknown>
? T
: T extends PromiseLike<unknown>
? never
: T;

type Receiver<T> = (value: NotPromise<T>) => void;

class Thennable<T> {
class Thenable<T> {
then(a: Receiver<T>) {}

private handleResolve<TResult>(
result: NotPromise<TResult> | Thennable<NotPromise<TResult>>,
result: NotPromise<TResult> | Thenable<NotPromise<TResult>>,
resolve: Receiver<TResult>,
) {
if (result instanceof Thennable) {
if (result instanceof Thenable) {
// #58547 This previously was a Debug Failure. False expression: type provided should not be a non-generic 'promise'-like.
this.resolvePromise(result, resolve);
}
}

private resolvePromise<TResult>(
result: Thennable<TResult>,
result: Thenable<TResult>,
resolve: Receiver<TResult>,
) {}
}

//// [awaitedTypeNoLib.js]
var Thennable = /** @class */ (function () {
function Thennable() {
var Thenable = /** @class */ (function () {
function Thenable() {
}
Thennable.prototype.then = function (a) { };
Thennable.prototype.handleResolve = function (result, resolve) {
if (result instanceof Thennable) {
Thenable.prototype.then = function (a) { };
Thenable.prototype.handleResolve = function (result, resolve) {
if (result instanceof Thenable) {
// #58547 This previously was a Debug Failure. False expression: type provided should not be a non-generic 'promise'-like.
this.resolvePromise(result, resolve);
}
};
Thennable.prototype.resolvePromise = function (result, resolve) { };
return Thennable;
Thenable.prototype.resolvePromise = function (result, resolve) { };
return Thenable;
}());
42 changes: 21 additions & 21 deletions tests/baselines/reference/awaitedTypeNoLib.symbols
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
//// [tests/cases/compiler/awaitedTypeNoLib.ts] ////

=== awaitedTypeNoLib.ts ===
type NotPromise<T> = T extends Thennable<unknown>
type NotPromise<T> = T extends Thenable<unknown>
>NotPromise : Symbol(NotPromise, Decl(awaitedTypeNoLib.ts, 0, 0))
>T : Symbol(T, Decl(awaitedTypeNoLib.ts, 0, 16))
>T : Symbol(T, Decl(awaitedTypeNoLib.ts, 0, 16))
>Thennable : Symbol(Thennable, Decl(awaitedTypeNoLib.ts, 6, 50))
>Thenable : Symbol(Thenable, Decl(awaitedTypeNoLib.ts, 6, 50))

? T
>T : Symbol(T, Decl(awaitedTypeNoLib.ts, 0, 16))
Expand All @@ -25,59 +25,59 @@ type Receiver<T> = (value: NotPromise<T>) => void;
>NotPromise : Symbol(NotPromise, Decl(awaitedTypeNoLib.ts, 0, 0))
>T : Symbol(T, Decl(awaitedTypeNoLib.ts, 6, 14))

class Thennable<T> {
>Thennable : Symbol(Thennable, Decl(awaitedTypeNoLib.ts, 6, 50))
>T : Symbol(T, Decl(awaitedTypeNoLib.ts, 8, 16))
class Thenable<T> {
>Thenable : Symbol(Thenable, Decl(awaitedTypeNoLib.ts, 6, 50))
>T : Symbol(T, Decl(awaitedTypeNoLib.ts, 8, 15))

then(a: Receiver<T>) {}
>then : Symbol(Thennable.then, Decl(awaitedTypeNoLib.ts, 8, 20))
>then : Symbol(Thenable.then, Decl(awaitedTypeNoLib.ts, 8, 19))
>a : Symbol(a, Decl(awaitedTypeNoLib.ts, 9, 7))
>Receiver : Symbol(Receiver, Decl(awaitedTypeNoLib.ts, 4, 6))
>T : Symbol(T, Decl(awaitedTypeNoLib.ts, 8, 16))
>T : Symbol(T, Decl(awaitedTypeNoLib.ts, 8, 15))

private handleResolve<TResult>(
>handleResolve : Symbol(Thennable.handleResolve, Decl(awaitedTypeNoLib.ts, 9, 25))
>handleResolve : Symbol(Thenable.handleResolve, Decl(awaitedTypeNoLib.ts, 9, 25))
>TResult : Symbol(TResult, Decl(awaitedTypeNoLib.ts, 11, 24))

result: NotPromise<TResult> | Thennable<NotPromise<TResult>>,
result: NotPromise<TResult> | Thenable<NotPromise<TResult>>,
>result : Symbol(result, Decl(awaitedTypeNoLib.ts, 11, 33))
>NotPromise : Symbol(NotPromise, Decl(awaitedTypeNoLib.ts, 0, 0))
>TResult : Symbol(TResult, Decl(awaitedTypeNoLib.ts, 11, 24))
>Thennable : Symbol(Thennable, Decl(awaitedTypeNoLib.ts, 6, 50))
>Thenable : Symbol(Thenable, Decl(awaitedTypeNoLib.ts, 6, 50))
>NotPromise : Symbol(NotPromise, Decl(awaitedTypeNoLib.ts, 0, 0))
>TResult : Symbol(TResult, Decl(awaitedTypeNoLib.ts, 11, 24))

resolve: Receiver<TResult>,
>resolve : Symbol(resolve, Decl(awaitedTypeNoLib.ts, 12, 65))
>resolve : Symbol(resolve, Decl(awaitedTypeNoLib.ts, 12, 64))
>Receiver : Symbol(Receiver, Decl(awaitedTypeNoLib.ts, 4, 6))
>TResult : Symbol(TResult, Decl(awaitedTypeNoLib.ts, 11, 24))

) {
if (result instanceof Thennable) {
if (result instanceof Thenable) {
>result : Symbol(result, Decl(awaitedTypeNoLib.ts, 11, 33))
>Thennable : Symbol(Thennable, Decl(awaitedTypeNoLib.ts, 6, 50))
>Thenable : Symbol(Thenable, Decl(awaitedTypeNoLib.ts, 6, 50))

// #58547 This previously was a Debug Failure. False expression: type provided should not be a non-generic 'promise'-like.
this.resolvePromise(result, resolve);
>this.resolvePromise : Symbol(Thennable.resolvePromise, Decl(awaitedTypeNoLib.ts, 19, 3))
>this : Symbol(Thennable, Decl(awaitedTypeNoLib.ts, 6, 50))
>resolvePromise : Symbol(Thennable.resolvePromise, Decl(awaitedTypeNoLib.ts, 19, 3))
>this.resolvePromise : Symbol(Thenable.resolvePromise, Decl(awaitedTypeNoLib.ts, 19, 3))
>this : Symbol(Thenable, Decl(awaitedTypeNoLib.ts, 6, 50))
>resolvePromise : Symbol(Thenable.resolvePromise, Decl(awaitedTypeNoLib.ts, 19, 3))
>result : Symbol(result, Decl(awaitedTypeNoLib.ts, 11, 33))
>resolve : Symbol(resolve, Decl(awaitedTypeNoLib.ts, 12, 65))
>resolve : Symbol(resolve, Decl(awaitedTypeNoLib.ts, 12, 64))
}
}

private resolvePromise<TResult>(
>resolvePromise : Symbol(Thennable.resolvePromise, Decl(awaitedTypeNoLib.ts, 19, 3))
>resolvePromise : Symbol(Thenable.resolvePromise, Decl(awaitedTypeNoLib.ts, 19, 3))
>TResult : Symbol(TResult, Decl(awaitedTypeNoLib.ts, 21, 25))

result: Thennable<TResult>,
result: Thenable<TResult>,
>result : Symbol(result, Decl(awaitedTypeNoLib.ts, 21, 34))
>Thennable : Symbol(Thennable, Decl(awaitedTypeNoLib.ts, 6, 50))
>Thenable : Symbol(Thenable, Decl(awaitedTypeNoLib.ts, 6, 50))
>TResult : Symbol(TResult, Decl(awaitedTypeNoLib.ts, 21, 25))

resolve: Receiver<TResult>,
>resolve : Symbol(resolve, Decl(awaitedTypeNoLib.ts, 22, 31))
>resolve : Symbol(resolve, Decl(awaitedTypeNoLib.ts, 22, 30))
>Receiver : Symbol(Receiver, Decl(awaitedTypeNoLib.ts, 4, 6))
>TResult : Symbol(TResult, Decl(awaitedTypeNoLib.ts, 21, 25))

Expand Down
54 changes: 27 additions & 27 deletions tests/baselines/reference/awaitedTypeNoLib.types
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//// [tests/cases/compiler/awaitedTypeNoLib.ts] ////

=== awaitedTypeNoLib.ts ===
type NotPromise<T> = T extends Thennable<unknown>
type NotPromise<T> = T extends Thenable<unknown>
>NotPromise : NotPromise<T>
> : ^^^^^^^^^^^^^

Expand All @@ -16,9 +16,9 @@ type Receiver<T> = (value: NotPromise<T>) => void;
>value : NotPromise<T>
> : ^^^^^^^^^^^^^

class Thennable<T> {
>Thennable : Thennable<T>
> : ^^^^^^^^^^^^
class Thenable<T> {
>Thenable : Thenable<T>
> : ^^^^^^^^^^^

then(a: Receiver<T>) {}
>then : (a: Receiver<T>) => void
Expand All @@ -27,50 +27,50 @@ class Thennable<T> {
> : ^^^^^^^^^^^

private handleResolve<TResult>(
>handleResolve : <TResult>(result: NotPromise<TResult> | Thennable<NotPromise<TResult>>, resolve: Receiver<TResult>) => void
> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^
>handleResolve : <TResult>(result: NotPromise<TResult> | Thenable<NotPromise<TResult>>, resolve: Receiver<TResult>) => void
> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^

result: NotPromise<TResult> | Thennable<NotPromise<TResult>>,
>result : NotPromise<TResult> | Thennable<NotPromise<TResult>>
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
result: NotPromise<TResult> | Thenable<NotPromise<TResult>>,
>result : NotPromise<TResult> | Thenable<NotPromise<TResult>>
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

resolve: Receiver<TResult>,
>resolve : Receiver<TResult>
> : ^^^^^^^^^^^^^^^^^

) {
if (result instanceof Thennable) {
>result instanceof Thennable : boolean
> : ^^^^^^^
>result : NotPromise<TResult> | Thennable<NotPromise<TResult>>
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>Thennable : typeof Thennable
> : ^^^^^^^^^^^^^^^^
if (result instanceof Thenable) {
>result instanceof Thenable : boolean
> : ^^^^^^^
>result : NotPromise<TResult> | Thenable<NotPromise<TResult>>
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>Thenable : typeof Thenable
> : ^^^^^^^^^^^^^^^

// #58547 This previously was a Debug Failure. False expression: type provided should not be a non-generic 'promise'-like.
this.resolvePromise(result, resolve);
>this.resolvePromise(result, resolve) : void
> : ^^^^
>this.resolvePromise : <TResult_1>(result: Thennable<TResult_1>, resolve: Receiver<TResult_1>) => void
> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^
>this.resolvePromise : <TResult_1>(result: Thenable<TResult_1>, resolve: Receiver<TResult_1>) => void
> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^
>this : this
> : ^^^^
>resolvePromise : <TResult_1>(result: Thennable<TResult_1>, resolve: Receiver<TResult_1>) => void
> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^
>result : NotPromise<TResult> | Thennable<NotPromise<TResult>>
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>resolvePromise : <TResult_1>(result: Thenable<TResult_1>, resolve: Receiver<TResult_1>) => void
> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^
>result : NotPromise<TResult> | Thenable<NotPromise<TResult>>
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>resolve : Receiver<TResult>
> : ^^^^^^^^^^^^^^^^^
}
}

private resolvePromise<TResult>(
>resolvePromise : <TResult>(result: Thennable<TResult>, resolve: Receiver<TResult>) => void
> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^
>resolvePromise : <TResult>(result: Thenable<TResult>, resolve: Receiver<TResult>) => void
> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^

result: Thennable<TResult>,
>result : Thennable<TResult>
> : ^^^^^^^^^^^^^^^^^^
result: Thenable<TResult>,
>result : Thenable<TResult>
> : ^^^^^^^^^^^^^^^^^

resolve: Receiver<TResult>,
>resolve : Receiver<TResult>
Expand Down
10 changes: 5 additions & 5 deletions tests/cases/compiler/awaitedTypeNoLib.ts
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
// @strictFunctionTypes: true
// @noLib: true

type NotPromise<T> = T extends Thennable<unknown>
type NotPromise<T> = T extends Thenable<unknown>
? T
: T extends PromiseLike<unknown>
? never
: T;

type Receiver<T> = (value: NotPromise<T>) => void;

class Thennable<T> {
class Thenable<T> {
then(a: Receiver<T>) {}

private handleResolve<TResult>(
result: NotPromise<TResult> | Thennable<NotPromise<TResult>>,
result: NotPromise<TResult> | Thenable<NotPromise<TResult>>,
resolve: Receiver<TResult>,
) {
if (result instanceof Thennable) {
if (result instanceof Thenable) {
// #58547 This previously was a Debug Failure. False expression: type provided should not be a non-generic 'promise'-like.
this.resolvePromise(result, resolve);
}
}

private resolvePromise<TResult>(
result: Thennable<TResult>,
result: Thenable<TResult>,
resolve: Receiver<TResult>,
) {}
}