1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
=== tests/cases/compiler/limitDeepInstantiations.ts ===
// Repro from #14837
type Foo<T extends "true", B> = { "true": Foo<T, Foo<T, B>> }[T];
>Foo : Symbol(Foo, Decl(limitDeepInstantiations.ts, 0, 0))
>T : Symbol(T, Decl(limitDeepInstantiations.ts, 2, 9))
>B : Symbol(B, Decl(limitDeepInstantiations.ts, 2, 26))
>"true" : Symbol("true", Decl(limitDeepInstantiations.ts, 2, 33))
>Foo : Symbol(Foo, Decl(limitDeepInstantiations.ts, 0, 0))
>T : Symbol(T, Decl(limitDeepInstantiations.ts, 2, 9))
>Foo : Symbol(Foo, Decl(limitDeepInstantiations.ts, 0, 0))
>T : Symbol(T, Decl(limitDeepInstantiations.ts, 2, 9))
>B : Symbol(B, Decl(limitDeepInstantiations.ts, 2, 26))
>T : Symbol(T, Decl(limitDeepInstantiations.ts, 2, 9))
let f1: Foo<"true", {}>;
>f1 : Symbol(f1, Decl(limitDeepInstantiations.ts, 3, 3))
>Foo : Symbol(Foo, Decl(limitDeepInstantiations.ts, 0, 0))
let f2: Foo<"false", {}>;
>f2 : Symbol(f2, Decl(limitDeepInstantiations.ts, 4, 3))
>Foo : Symbol(Foo, Decl(limitDeepInstantiations.ts, 0, 0))
|