=== tests/cases/compiler/typeInferenceReturnTypeCallback.ts === interface IList { >IList : IList, Symbol(IList, Decl(typeInferenceReturnTypeCallback.ts, 0, 0)) >A : A, Symbol(A, Decl(typeInferenceReturnTypeCallback.ts, 0, 16)) map(f: (t: A) => B): IList; >map : (f: (t: A) => B) => IList, Symbol(map, Decl(typeInferenceReturnTypeCallback.ts, 0, 20)) >B : B, Symbol(B, Decl(typeInferenceReturnTypeCallback.ts, 1, 8)) >f : (t: A) => B, Symbol(f, Decl(typeInferenceReturnTypeCallback.ts, 1, 11)) >t : A, Symbol(t, Decl(typeInferenceReturnTypeCallback.ts, 1, 15)) >A : A, Symbol(A, Decl(typeInferenceReturnTypeCallback.ts, 0, 16)) >B : B, Symbol(B, Decl(typeInferenceReturnTypeCallback.ts, 1, 8)) >IList : IList, Symbol(IList, Decl(typeInferenceReturnTypeCallback.ts, 0, 0)) >B : B, Symbol(B, Decl(typeInferenceReturnTypeCallback.ts, 1, 8)) } class Nil implements IList{ >Nil : Nil, Symbol(Nil, Decl(typeInferenceReturnTypeCallback.ts, 2, 1)) >C : C, Symbol(C, Decl(typeInferenceReturnTypeCallback.ts, 4, 10)) >IList : IList, Symbol(IList, Decl(typeInferenceReturnTypeCallback.ts, 0, 0)) >C : C, Symbol(C, Decl(typeInferenceReturnTypeCallback.ts, 4, 10)) map(f: (t: C) => D): IList { >map : (f: (t: C) => D) => IList, Symbol(map, Decl(typeInferenceReturnTypeCallback.ts, 4, 33)) >D : D, Symbol(D, Decl(typeInferenceReturnTypeCallback.ts, 5, 8)) >f : (t: C) => D, Symbol(f, Decl(typeInferenceReturnTypeCallback.ts, 5, 11)) >t : C, Symbol(t, Decl(typeInferenceReturnTypeCallback.ts, 5, 15)) >C : C, Symbol(C, Decl(typeInferenceReturnTypeCallback.ts, 4, 10)) >D : D, Symbol(D, Decl(typeInferenceReturnTypeCallback.ts, 5, 8)) >IList : IList, Symbol(IList, Decl(typeInferenceReturnTypeCallback.ts, 0, 0)) >D : D, Symbol(D, Decl(typeInferenceReturnTypeCallback.ts, 5, 8)) return null; >null : null } } class Cons implements IList{ >Cons : Cons, Symbol(Cons, Decl(typeInferenceReturnTypeCallback.ts, 8, 1)) >T : T, Symbol(T, Decl(typeInferenceReturnTypeCallback.ts, 10, 11)) >IList : IList, Symbol(IList, Decl(typeInferenceReturnTypeCallback.ts, 0, 0)) >T : T, Symbol(T, Decl(typeInferenceReturnTypeCallback.ts, 10, 11)) map(f: (t: T) => U): IList { >map : (f: (t: T) => U) => IList, Symbol(map, Decl(typeInferenceReturnTypeCallback.ts, 10, 34)) >U : U, Symbol(U, Decl(typeInferenceReturnTypeCallback.ts, 11, 8)) >f : (t: T) => U, Symbol(f, Decl(typeInferenceReturnTypeCallback.ts, 11, 11)) >t : T, Symbol(t, Decl(typeInferenceReturnTypeCallback.ts, 11, 15)) >T : T, Symbol(T, Decl(typeInferenceReturnTypeCallback.ts, 10, 11)) >U : U, Symbol(U, Decl(typeInferenceReturnTypeCallback.ts, 11, 8)) >IList : IList, Symbol(IList, Decl(typeInferenceReturnTypeCallback.ts, 0, 0)) >U : U, Symbol(U, Decl(typeInferenceReturnTypeCallback.ts, 11, 8)) return this.foldRight(new Nil(), (t, acc) => { >this.foldRight(new Nil(), (t, acc) => { return new Cons(); }) : Nil >this.foldRight : (z: E, f: (t: T, acc: E) => E) => E, Symbol(foldRight, Decl(typeInferenceReturnTypeCallback.ts, 15, 5)) >this : Cons, Symbol(Cons, Decl(typeInferenceReturnTypeCallback.ts, 8, 1)) >foldRight : (z: E, f: (t: T, acc: E) => E) => E, Symbol(foldRight, Decl(typeInferenceReturnTypeCallback.ts, 15, 5)) >new Nil() : Nil >Nil : typeof Nil, Symbol(Nil, Decl(typeInferenceReturnTypeCallback.ts, 2, 1)) >U : U, Symbol(U, Decl(typeInferenceReturnTypeCallback.ts, 11, 8)) >(t, acc) => { return new Cons(); } : (t: T, acc: Nil) => Cons >t : T, Symbol(t, Decl(typeInferenceReturnTypeCallback.ts, 12, 45)) >acc : Nil, Symbol(acc, Decl(typeInferenceReturnTypeCallback.ts, 12, 47)) return new Cons(); >new Cons() : Cons >Cons : typeof Cons, Symbol(Cons, Decl(typeInferenceReturnTypeCallback.ts, 8, 1)) >U : U, Symbol(U, Decl(typeInferenceReturnTypeCallback.ts, 11, 8)) }); } foldRight(z: E, f: (t: T, acc: E) => E): E { >foldRight : (z: E, f: (t: T, acc: E) => E) => E, Symbol(foldRight, Decl(typeInferenceReturnTypeCallback.ts, 15, 5)) >E : E, Symbol(E, Decl(typeInferenceReturnTypeCallback.ts, 17, 14)) >z : E, Symbol(z, Decl(typeInferenceReturnTypeCallback.ts, 17, 17)) >E : E, Symbol(E, Decl(typeInferenceReturnTypeCallback.ts, 17, 14)) >f : (t: T, acc: E) => E, Symbol(f, Decl(typeInferenceReturnTypeCallback.ts, 17, 22)) >t : T, Symbol(t, Decl(typeInferenceReturnTypeCallback.ts, 17, 27)) >T : T, Symbol(T, Decl(typeInferenceReturnTypeCallback.ts, 10, 11)) >acc : E, Symbol(acc, Decl(typeInferenceReturnTypeCallback.ts, 17, 32)) >E : E, Symbol(E, Decl(typeInferenceReturnTypeCallback.ts, 17, 14)) >E : E, Symbol(E, Decl(typeInferenceReturnTypeCallback.ts, 17, 14)) >E : E, Symbol(E, Decl(typeInferenceReturnTypeCallback.ts, 17, 14)) return null; >null : null } }