=== tests/cases/compiler/genericsAndHigherOrderFunctions.ts === // no errors expected var combine: (f: (_: T) => S) => >combine : (f: (_: T) => S) => (g: (_: U) => T) => (x: U) => S >T : T >S : S >f : (_: T) => S >_ : T >T : T >S : S (g: (_: U) => T) => >U : U >g : (_: U) => T >_ : U >U : U >T : T (x: U) => S >x : U >U : U >S : S = (f: (_: T) => S) => >(f: (_: T) => S) => (g: (_: U) => T) => (x: U) => f(g(x)) : (f: (_: T) => S) => (g: (_: U) => T) => (x: U) => S >T : T >S : S >f : (_: T) => S >_ : T >T : T >S : S (g: (_: U) => T) => >(g: (_: U) => T) => (x: U) => f(g(x)) : (g: (_: U) => T) => (x: U) => S >U : U >g : (_: U) => T >_ : U >U : U >T : T (x: U) => f(g(x)) >(x: U) => f(g(x)) : (x: U) => S >x : U >U : U >f(g(x)) : S >f : (_: T) => S >g(x) : T >g : (_: U) => T >x : U var foo: (g: (x: K) => N) => >foo : (g: (x: K) => N) => (h: (_: (_: K) => (_: M) => M) => (_: M) => M) => (f: (_: N) => (_: R) => R) => (_: R) => R >K : K >N : N >g : (x: K) => N >x : K >K : K >N : N (h: (_: (_: K) => (_: M) => M) => (_: M) => M) => >h : (_: (_: K) => (_: M) => M) => (_: M) => M >M : M >_ : (_: K) => (_: M) => M >_ : K >K : K >_ : M >M : M >M : M >_ : M >M : M >M : M (f: (_: N) => (_: R) => R) => (_: R) => R >R : R >f : (_: N) => (_: R) => R >_ : N >N : N >_ : R >R : R >R : R >_ : R >R : R >R : R = (g: (x: K) => N) => >(g: (x: K) => N) => (h: (_: (_: K) => (_: M) => M) => (_: M) => M) => (f: (_: N) => (_: R) => R) => h(combine(f)(g)) : (g: (x: K) => N) => (h: (_: (_: K) => (_: M) => M) => (_: M) => M) => (f: (_: N) => (_: R) => R) => (_: R) => R >K : K >N : N >g : (x: K) => N >x : K >K : K >N : N (h: (_: (_: K) => (_: M) => M) => (_: M) => M) => >(h: (_: (_: K) => (_: M) => M) => (_: M) => M) => (f: (_: N) => (_: R) => R) => h(combine(f)(g)) : (h: (_: (_: K) => (_: M) => M) => (_: M) => M) => (f: (_: N) => (_: R) => R) => (_: R) => R >h : (_: (_: K) => (_: M) => M) => (_: M) => M >M : M >_ : (_: K) => (_: M) => M >_ : K >K : K >_ : M >M : M >M : M >_ : M >M : M >M : M (f: (_: N) => (_: R) => R) => h(combine(f)(g)) >(f: (_: N) => (_: R) => R) => h(combine(f)(g)) : (f: (_: N) => (_: R) => R) => (_: R) => R >R : R >f : (_: N) => (_: R) => R >_ : N >N : N >_ : R >R : R >R : R >h(combine(f)(g)) : (_: R) => R >h : (_: (_: K) => (_: M) => M) => (_: M) => M >combine(f)(g) : (x: K) => (_: R) => R >combine(f) : (g: (_: U) => N) => (x: U) => (_: R) => R >combine : (f: (_: T) => S) => (g: (_: U) => T) => (x: U) => S >f : (_: N) => (_: R) => R >g : (x: K) => N