From 68ab129fac529f1ed35bbb70edcc3093e88a4fcc Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 4 Apr 2017 14:53:48 -0700 Subject: [PATCH] Add regression test --- .../reference/limitDeepInstantiations.errors.txt | 15 +++++++++++++++ .../reference/limitDeepInstantiations.js | 12 ++++++++++++ tests/cases/compiler/limitDeepInstantiations.ts | 5 +++++ 3 files changed, 32 insertions(+) create mode 100644 tests/baselines/reference/limitDeepInstantiations.errors.txt create mode 100644 tests/baselines/reference/limitDeepInstantiations.js create mode 100644 tests/cases/compiler/limitDeepInstantiations.ts diff --git a/tests/baselines/reference/limitDeepInstantiations.errors.txt b/tests/baselines/reference/limitDeepInstantiations.errors.txt new file mode 100644 index 00000000000..330e5fbc8e4 --- /dev/null +++ b/tests/baselines/reference/limitDeepInstantiations.errors.txt @@ -0,0 +1,15 @@ +tests/cases/compiler/limitDeepInstantiations.ts(3,35): error TS2550: Generic type instantiation is excessively deep and possibly infinite. +tests/cases/compiler/limitDeepInstantiations.ts(5,13): error TS2344: Type '"false"' does not satisfy the constraint '"true"'. + + +==== tests/cases/compiler/limitDeepInstantiations.ts (2 errors) ==== + // Repro from #14837 + + type Foo = { "true": Foo> }[T]; + ~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2550: Generic type instantiation is excessively deep and possibly infinite. + let f1: Foo<"true", {}>; + let f2: Foo<"false", {}>; + ~~~~~~~ +!!! error TS2344: Type '"false"' does not satisfy the constraint '"true"'. + \ No newline at end of file diff --git a/tests/baselines/reference/limitDeepInstantiations.js b/tests/baselines/reference/limitDeepInstantiations.js new file mode 100644 index 00000000000..7b70cbd5956 --- /dev/null +++ b/tests/baselines/reference/limitDeepInstantiations.js @@ -0,0 +1,12 @@ +//// [limitDeepInstantiations.ts] +// Repro from #14837 + +type Foo = { "true": Foo> }[T]; +let f1: Foo<"true", {}>; +let f2: Foo<"false", {}>; + + +//// [limitDeepInstantiations.js] +// Repro from #14837 +var f1; +var f2; diff --git a/tests/cases/compiler/limitDeepInstantiations.ts b/tests/cases/compiler/limitDeepInstantiations.ts new file mode 100644 index 00000000000..f478157ecc2 --- /dev/null +++ b/tests/cases/compiler/limitDeepInstantiations.ts @@ -0,0 +1,5 @@ +// Repro from #14837 + +type Foo = { "true": Foo> }[T]; +let f1: Foo<"true", {}>; +let f2: Foo<"false", {}>;