=== 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
}
}