From 7cfe6a4cdbed168fc670945a16b24cc3ae51ed93 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Fri, 1 Dec 2017 15:00:37 -0800 Subject: [PATCH] Test:Mutually recursive types do not recur infinitely --- .../mutuallyRecursiveInference.errors.txt | 10 ++++++++++ .../reference/mutuallyRecursiveInference.js | 7 +++++++ .../mutuallyRecursiveInference.symbols | 18 ++++++++++++++++++ .../reference/mutuallyRecursiveInference.types | 18 ++++++++++++++++++ .../compiler/mutuallyRecursiveInference.ts | 3 +++ 5 files changed, 56 insertions(+) create mode 100644 tests/baselines/reference/mutuallyRecursiveInference.errors.txt create mode 100644 tests/baselines/reference/mutuallyRecursiveInference.js create mode 100644 tests/baselines/reference/mutuallyRecursiveInference.symbols create mode 100644 tests/baselines/reference/mutuallyRecursiveInference.types create mode 100644 tests/cases/compiler/mutuallyRecursiveInference.ts diff --git a/tests/baselines/reference/mutuallyRecursiveInference.errors.txt b/tests/baselines/reference/mutuallyRecursiveInference.errors.txt new file mode 100644 index 00000000000..ac6b66c7b5c --- /dev/null +++ b/tests/baselines/reference/mutuallyRecursiveInference.errors.txt @@ -0,0 +1,10 @@ +tests/cases/compiler/mutuallyRecursiveInference.ts(2,27): error TS2536: Type '"a"' cannot be used to index type 'RT'. + + +==== tests/cases/compiler/mutuallyRecursiveInference.ts (1 errors) ==== + interface T { a: A } + interface L extends T {} + ~~~~~~~ +!!! error TS2536: Type '"a"' cannot be used to index type 'RT'. + interface X extends L {} + \ No newline at end of file diff --git a/tests/baselines/reference/mutuallyRecursiveInference.js b/tests/baselines/reference/mutuallyRecursiveInference.js new file mode 100644 index 00000000000..1a12d8b3c2a --- /dev/null +++ b/tests/baselines/reference/mutuallyRecursiveInference.js @@ -0,0 +1,7 @@ +//// [mutuallyRecursiveInference.ts] +interface T { a: A } +interface L extends T {} +interface X extends L {} + + +//// [mutuallyRecursiveInference.js] diff --git a/tests/baselines/reference/mutuallyRecursiveInference.symbols b/tests/baselines/reference/mutuallyRecursiveInference.symbols new file mode 100644 index 00000000000..e956811b48b --- /dev/null +++ b/tests/baselines/reference/mutuallyRecursiveInference.symbols @@ -0,0 +1,18 @@ +=== tests/cases/compiler/mutuallyRecursiveInference.ts === +interface T { a: A } +>T : Symbol(T, Decl(mutuallyRecursiveInference.ts, 0, 0)) +>A : Symbol(A, Decl(mutuallyRecursiveInference.ts, 0, 12)) +>a : Symbol(T.a, Decl(mutuallyRecursiveInference.ts, 0, 16)) +>A : Symbol(A, Decl(mutuallyRecursiveInference.ts, 0, 12)) + +interface L extends T {} +>L : Symbol(L, Decl(mutuallyRecursiveInference.ts, 0, 23)) +>RT : Symbol(RT, Decl(mutuallyRecursiveInference.ts, 1, 12)) +>T : Symbol(T, Decl(mutuallyRecursiveInference.ts, 0, 0)) +>RT : Symbol(RT, Decl(mutuallyRecursiveInference.ts, 1, 12)) + +interface X extends L {} +>X : Symbol(X, Decl(mutuallyRecursiveInference.ts, 1, 37)) +>L : Symbol(L, Decl(mutuallyRecursiveInference.ts, 0, 23)) +>X : Symbol(X, Decl(mutuallyRecursiveInference.ts, 1, 37)) + diff --git a/tests/baselines/reference/mutuallyRecursiveInference.types b/tests/baselines/reference/mutuallyRecursiveInference.types new file mode 100644 index 00000000000..3c0b77e00bf --- /dev/null +++ b/tests/baselines/reference/mutuallyRecursiveInference.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/mutuallyRecursiveInference.ts === +interface T { a: A } +>T : T +>A : A +>a : A +>A : A + +interface L extends T {} +>L : L +>RT : RT +>T : T +>RT : RT + +interface X extends L {} +>X : X +>L : L +>X : X + diff --git a/tests/cases/compiler/mutuallyRecursiveInference.ts b/tests/cases/compiler/mutuallyRecursiveInference.ts new file mode 100644 index 00000000000..41cef0f54c1 --- /dev/null +++ b/tests/cases/compiler/mutuallyRecursiveInference.ts @@ -0,0 +1,3 @@ +interface T { a: A } +interface L extends T {} +interface X extends L {}