From f23dd7a7b2682b6521b2be91dbf90655a9a22709 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Tue, 14 Feb 2023 11:16:12 -0500 Subject: [PATCH] Fix crash in getAwaitedType (#52752) --- src/compiler/checker.ts | 2 +- tests/baselines/reference/awaitedTypeCrash.js | 7 +++++++ tests/baselines/reference/awaitedTypeCrash.symbols | 9 +++++++++ tests/baselines/reference/awaitedTypeCrash.types | 5 +++++ tests/cases/compiler/awaitedTypeCrash.ts | 4 ++++ 5 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/awaitedTypeCrash.js create mode 100644 tests/baselines/reference/awaitedTypeCrash.symbols create mode 100644 tests/baselines/reference/awaitedTypeCrash.types create mode 100644 tests/cases/compiler/awaitedTypeCrash.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 0a2d154b449..d4da8647a6f 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -39028,7 +39028,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } - Debug.assert(getPromisedTypeOfPromise(type) === undefined, "type provided should not be a non-generic 'promise'-like."); + Debug.assert(isAwaitedTypeInstantiation(type) || getPromisedTypeOfPromise(type) === undefined, "type provided should not be a non-generic 'promise'-like."); return type; } diff --git a/tests/baselines/reference/awaitedTypeCrash.js b/tests/baselines/reference/awaitedTypeCrash.js new file mode 100644 index 00000000000..9cefb23cd49 --- /dev/null +++ b/tests/baselines/reference/awaitedTypeCrash.js @@ -0,0 +1,7 @@ +//// [awaitedTypeCrash.ts] +// https://github.com/microsoft/TypeScript/issues/51984 +async function* f>(): AsyncGenerator { } + +//// [awaitedTypeCrash.js] +// https://github.com/microsoft/TypeScript/issues/51984 +async function* f() { } diff --git a/tests/baselines/reference/awaitedTypeCrash.symbols b/tests/baselines/reference/awaitedTypeCrash.symbols new file mode 100644 index 00000000000..024b6d90efb --- /dev/null +++ b/tests/baselines/reference/awaitedTypeCrash.symbols @@ -0,0 +1,9 @@ +=== tests/cases/compiler/awaitedTypeCrash.ts === +// https://github.com/microsoft/TypeScript/issues/51984 +async function* f>(): AsyncGenerator { } +>f : Symbol(f, Decl(awaitedTypeCrash.ts, 0, 0)) +>T : Symbol(T, Decl(awaitedTypeCrash.ts, 1, 18)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2018.promise.d.ts, --, --)) +>AsyncGenerator : Symbol(AsyncGenerator, Decl(lib.es2018.asyncgenerator.d.ts, --, --)) +>T : Symbol(T, Decl(awaitedTypeCrash.ts, 1, 18)) + diff --git a/tests/baselines/reference/awaitedTypeCrash.types b/tests/baselines/reference/awaitedTypeCrash.types new file mode 100644 index 00000000000..010ac8795ec --- /dev/null +++ b/tests/baselines/reference/awaitedTypeCrash.types @@ -0,0 +1,5 @@ +=== tests/cases/compiler/awaitedTypeCrash.ts === +// https://github.com/microsoft/TypeScript/issues/51984 +async function* f>(): AsyncGenerator { } +>f : >() => AsyncGenerator + diff --git a/tests/cases/compiler/awaitedTypeCrash.ts b/tests/cases/compiler/awaitedTypeCrash.ts new file mode 100644 index 00000000000..b90f3236321 --- /dev/null +++ b/tests/cases/compiler/awaitedTypeCrash.ts @@ -0,0 +1,4 @@ +// @target: esnext + +// https://github.com/microsoft/TypeScript/issues/51984 +async function* f>(): AsyncGenerator { } \ No newline at end of file