From 27ce6ac86b96381a94ae6dd5b8e56b29e237a6a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Mon, 13 Feb 2023 13:24:52 +0100 Subject: [PATCH] Add an extra test case for inferring return type of generic class without a constructor --- ...rringReturnTypeFromConstructSignatureGeneric.js | 14 +++++++++++++- ...ReturnTypeFromConstructSignatureGeneric.symbols | 10 ++++++++++ ...ngReturnTypeFromConstructSignatureGeneric.types | 10 ++++++++++ ...rringReturnTypeFromConstructSignatureGeneric.ts | 6 +++++- 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.js b/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.js index a2f19cc2a3fe2..a23171298282c 100644 --- a/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.js +++ b/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.js @@ -27,7 +27,12 @@ g2.give(1); const g3 = g(GenericNumberOrString); g3.give(1); -g3.give('1'); +g3.give('1'); + +// repro from #35636 +class C {} +const g4 = g(C); + //// [inferringReturnTypeFromConstructSignatureGeneric.js] var GenericObject = /** @class */ (function () { @@ -64,3 +69,10 @@ g2.give(1); var g3 = g(GenericNumberOrString); g3.give(1); g3.give('1'); +// repro from #35636 +var C = /** @class */ (function () { + function C() { + } + return C; +}()); +var g4 = g(C); diff --git a/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.symbols b/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.symbols index 3d71137668153..3ee2e93636d24 100644 --- a/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.symbols +++ b/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.symbols @@ -85,3 +85,13 @@ g3.give('1'); >g3 : Symbol(g3, Decl(inferringReturnTypeFromConstructSignatureGeneric.ts, 26, 5)) >give : Symbol(GenericNumberOrString.give, Decl(inferringReturnTypeFromConstructSignatureGeneric.ts, 10, 56)) +// repro from #35636 +class C {} +>C : Symbol(C, Decl(inferringReturnTypeFromConstructSignatureGeneric.ts, 28, 13)) +>T : Symbol(T, Decl(inferringReturnTypeFromConstructSignatureGeneric.ts, 31, 8)) + +const g4 = g(C); +>g4 : Symbol(g4, Decl(inferringReturnTypeFromConstructSignatureGeneric.ts, 32, 5)) +>g : Symbol(g, Decl(inferringReturnTypeFromConstructSignatureGeneric.ts, 14, 1)) +>C : Symbol(C, Decl(inferringReturnTypeFromConstructSignatureGeneric.ts, 28, 13)) + diff --git a/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.types b/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.types index 5d641a66e09d6..8c7cb88992844 100644 --- a/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.types +++ b/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.types @@ -88,3 +88,13 @@ g3.give('1'); >give : (value: string | number) => string | number >'1' : "1" +// repro from #35636 +class C {} +>C : C + +const g4 = g(C); +>g4 : C +>g(C) : C +>g : (type: new () => T) => T +>C : typeof C + diff --git a/tests/cases/compiler/inferringReturnTypeFromConstructSignatureGeneric.ts b/tests/cases/compiler/inferringReturnTypeFromConstructSignatureGeneric.ts index dc8271f849bd7..acdb4b4d80e23 100644 --- a/tests/cases/compiler/inferringReturnTypeFromConstructSignatureGeneric.ts +++ b/tests/cases/compiler/inferringReturnTypeFromConstructSignatureGeneric.ts @@ -26,4 +26,8 @@ g2.give(1); const g3 = g(GenericNumberOrString); g3.give(1); -g3.give('1'); \ No newline at end of file +g3.give('1'); + +// repro from #35636 +class C {} +const g4 = g(C);