From 4bd9b62fa6e02cc72eb511a23cc42ea1dc153f86 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 3 Sep 2019 17:23:43 -0700 Subject: [PATCH] Add regression tests --- .../contextualSignatureInstantiation4.ts | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 tests/cases/compiler/contextualSignatureInstantiation4.ts diff --git a/tests/cases/compiler/contextualSignatureInstantiation4.ts b/tests/cases/compiler/contextualSignatureInstantiation4.ts new file mode 100644 index 0000000000..6c29ca3d40 --- /dev/null +++ b/tests/cases/compiler/contextualSignatureInstantiation4.ts @@ -0,0 +1,20 @@ +// @strict: true + +// Repros from #32976 + +declare class Banana { constructor(a: string, property: T) } + +declare function fruitFactory1(Fruit: new (...args: any[]) => TFruit): TFruit +const banana1 = fruitFactory1(Banana) // Banana + +declare function fruitFactory2(Fruit: new (a: string, ...args: any[]) => TFruit): TFruit +const banana2 = fruitFactory2(Banana) // Banana + +declare function fruitFactory3(Fruit: new (a: string, s: "foo", ...args: any[]) => TFruit): TFruit +const banana3 = fruitFactory3(Banana) // Banana<"foo"> + +declare function fruitFactory4(Fruit: new (a: string, ...args: "foo"[]) => TFruit): TFruit +const banana4 = fruitFactory4(Banana) // Banana<"foo"> + +declare function fruitFactory5(Fruit: new (...args: "foo"[]) => TFruit): TFruit +const banana5 = fruitFactory5(Banana) // Banana<"foo">