=== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstraintsTypeArgumentInference.ts === // Basic type inference with generic calls and constraints, no errors expected class Base { foo: string; } >Base : Base, Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >foo : string, Symbol(foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >Base : Base, Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >bar : string, Symbol(bar, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Derived2, Symbol(Derived2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 3, 43)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >baz : string, Symbol(baz, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 4, 32)) var b: Base; >b : Base, Symbol(b, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 5, 3)) >Base : Base, Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) var d1: Derived; >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) var d2: Derived2; >d2 : Derived2, Symbol(d2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 3)) >Derived2 : Derived2, Symbol(Derived2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 3, 43)) function foo(t: T) { >foo : (t: T) => T, Symbol(foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 17)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 9, 13)) >Base : Base, Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 9, 29)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 9, 13)) return t; >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 9, 29)) } var r = foo(b); // Base >r : Base, Symbol(r, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 13, 3)) >foo(b) : Base >foo : (t: T) => T, Symbol(foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 17)) >b : Base, Symbol(b, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 5, 3)) var r2 = foo(d1); // Derived >r2 : Derived, Symbol(r2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 14, 3)) >foo(d1) : Derived >foo : (t: T) => T, Symbol(foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 17)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) function foo2(t: T, u: U) { >foo2 : (t: T, u: U) => U, Symbol(foo2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 14, 17)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 16, 14)) >Base : Base, Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 16, 29)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 16, 49)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 16, 14)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 16, 54)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 16, 29)) return u; >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 16, 54)) } function foo2b(u: U) { >foo2b : (u: U) => T, Symbol(foo2b, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 18, 1)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 20, 15)) >Base : Base, Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 20, 30)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 20, 50)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 20, 30)) var x: T; >x : T, Symbol(x, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 21, 7)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 20, 15)) return x; >x : T, Symbol(x, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 21, 7)) } function foo2c() { >foo2c : () => T, Symbol(foo2c, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 23, 1)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 25, 15)) >Base : Base, Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 25, 30)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) var x: T; >x : T, Symbol(x, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 26, 7)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 25, 15)) return x; >x : T, Symbol(x, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 26, 7)) } var r3 = foo2b(d1); // Base >r3 : Base, Symbol(r3, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 30, 3)) >foo2b(d1) : Base >foo2b : (u: U) => T, Symbol(foo2b, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 18, 1)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) var r3b = foo2c(); // Base >r3b : Base, Symbol(r3b, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 31, 3)) >foo2c() : Base >foo2c : () => T, Symbol(foo2c, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 23, 1)) class C { >C : C, Symbol(C, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 31, 18)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 33, 8)) >Base : Base, Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 33, 23)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) constructor(public t: T, public u: U) { >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 34, 16)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 33, 8)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 34, 28)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 33, 23)) } foo(t: T, u: U) { >foo : (t: T, u: U) => T, Symbol(foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 35, 5)) >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 37, 8)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 33, 8)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 37, 13)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 33, 23)) return t; >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 37, 8)) } foo2(t: T, u: U) { >foo2 : (t: T, u: U) => U, Symbol(foo2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 39, 5)) >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 41, 9)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 33, 8)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 41, 14)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 33, 23)) return u; >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 41, 14)) } foo3(t: T, u: U) { >foo3 : (t: T, u: U) => T, Symbol(foo3, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 43, 5)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 45, 9)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 45, 28)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 45, 9)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 45, 33)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 33, 23)) return t; >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 45, 28)) } foo4(t: T, u: U) { >foo4 : (t: T, u: U) => T, Symbol(foo4, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 47, 5)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 49, 9)) >Derived2 : Derived2, Symbol(Derived2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 3, 43)) >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 49, 29)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 33, 8)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 49, 34)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 49, 9)) return t; >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 49, 29)) } foo5(t: T, u: U) { >foo5 : (t: T, u: U) => T, Symbol(foo5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 51, 5)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 53, 9)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 53, 27)) >Derived2 : Derived2, Symbol(Derived2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 3, 43)) >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 53, 48)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 53, 9)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 53, 53)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 53, 27)) return t; >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 53, 48)) } foo6() { >foo6 : () => T, Symbol(foo6, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 55, 5)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 57, 9)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 57, 27)) >Derived2 : Derived2, Symbol(Derived2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 3, 43)) var x: T; >x : T, Symbol(x, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 58, 11)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 57, 9)) return x; >x : T, Symbol(x, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 58, 11)) } foo7(u: U) { >foo7 : (u: U) => T, Symbol(foo7, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 60, 5)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 62, 9)) >Base : Base, Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 62, 24)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 62, 44)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 62, 24)) var x: T; >x : T, Symbol(x, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 63, 11)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 62, 9)) return x; >x : T, Symbol(x, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 63, 11)) } foo8() { >foo8 : () => T, Symbol(foo8, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 65, 5)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 67, 9)) >Base : Base, Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 67, 24)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) var x: T; >x : T, Symbol(x, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 68, 11)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 67, 9)) return x; >x : T, Symbol(x, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 68, 11)) } } var c = new C(b, d1); >c : C, Symbol(c, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 73, 3)) >new C(b, d1) : C >C : typeof C, Symbol(C, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 31, 18)) >b : Base, Symbol(b, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 5, 3)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) var r4 = c.foo(d1, d2); // Base >r4 : Base, Symbol(r4, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 74, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 97, 3)) >c.foo(d1, d2) : Base >c.foo : (t: Base, u: Derived) => Base, Symbol(C.foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 35, 5)) >c : C, Symbol(c, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 73, 3)) >foo : (t: Base, u: Derived) => Base, Symbol(C.foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 35, 5)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) >d2 : Derived2, Symbol(d2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 3)) var r5 = c.foo2(b, d2); // Derived >r5 : Derived, Symbol(r5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 75, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 98, 3)) >c.foo2(b, d2) : Derived >c.foo2 : (t: Base, u: Derived) => Derived, Symbol(C.foo2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 39, 5)) >c : C, Symbol(c, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 73, 3)) >foo2 : (t: Base, u: Derived) => Derived, Symbol(C.foo2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 39, 5)) >b : Base, Symbol(b, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 5, 3)) >d2 : Derived2, Symbol(d2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 3)) var r6 = c.foo3(d1, d1); // Derived >r6 : Derived, Symbol(r6, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 76, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 99, 3)) >c.foo3(d1, d1) : Derived >c.foo3 : (t: T, u: Derived) => T, Symbol(C.foo3, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 43, 5)) >c : C, Symbol(c, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 73, 3)) >foo3 : (t: T, u: Derived) => T, Symbol(C.foo3, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 43, 5)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) var r7 = c.foo4(d1, d2); // Base >r7 : Base, Symbol(r7, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 77, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 100, 3)) >c.foo4(d1, d2) : Base >c.foo4 : (t: Base, u: U) => Base, Symbol(C.foo4, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 47, 5)) >c : C, Symbol(c, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 73, 3)) >foo4 : (t: Base, u: U) => Base, Symbol(C.foo4, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 47, 5)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) >d2 : Derived2, Symbol(d2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 3)) var r8 = c.foo5(d1, d2); // Derived >r8 : Derived, Symbol(r8, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 78, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 101, 3)) >c.foo5(d1, d2) : Derived >c.foo5 : (t: T, u: U) => T, Symbol(C.foo5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 51, 5)) >c : C, Symbol(c, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 73, 3)) >foo5 : (t: T, u: U) => T, Symbol(C.foo5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 51, 5)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) >d2 : Derived2, Symbol(d2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 3)) var r8b = c.foo5(d2, d2); // Derived2 >r8b : Derived2, Symbol(r8b, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 79, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 102, 3)) >c.foo5(d2, d2) : Derived2 >c.foo5 : (t: T, u: U) => T, Symbol(C.foo5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 51, 5)) >c : C, Symbol(c, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 73, 3)) >foo5 : (t: T, u: U) => T, Symbol(C.foo5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 51, 5)) >d2 : Derived2, Symbol(d2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 3)) >d2 : Derived2, Symbol(d2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 3)) var r9 = c.foo6(); // Derived >r9 : Derived, Symbol(r9, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 80, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 103, 3)) >c.foo6() : Derived >c.foo6 : () => T, Symbol(C.foo6, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 55, 5)) >c : C, Symbol(c, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 73, 3)) >foo6 : () => T, Symbol(C.foo6, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 55, 5)) var r10 = c.foo7(d1); // Base >r10 : Base, Symbol(r10, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 81, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 104, 3)) >c.foo7(d1) : Base >c.foo7 : (u: U) => T, Symbol(C.foo7, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 60, 5)) >c : C, Symbol(c, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 73, 3)) >foo7 : (u: U) => T, Symbol(C.foo7, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 60, 5)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) var r11 = c.foo8(); // Base >r11 : Base, Symbol(r11, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 82, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 105, 3)) >c.foo8() : Base >c.foo8 : () => T, Symbol(C.foo8, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 65, 5)) >c : C, Symbol(c, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 73, 3)) >foo8 : () => T, Symbol(C.foo8, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 65, 5)) interface I { >I : I, Symbol(I, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 82, 19)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 12)) >Base : Base, Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 27)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) new (t: T, u: U); >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 85, 9)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 12)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 85, 14)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 27)) foo(t: T, u: U): T; >foo : (t: T, u: U) => T, Symbol(foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 85, 21)) >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 86, 8)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 12)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 86, 13)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 27)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 12)) foo2(t: T, u: U): U; >foo2 : (t: T, u: U) => U, Symbol(foo2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 86, 23)) >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 87, 9)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 12)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 87, 14)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 27)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 27)) foo3(t: T, u: U): T; >foo3 : (t: T, u: U) => T, Symbol(foo3, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 87, 24)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 88, 9)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 88, 28)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 88, 9)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 88, 33)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 27)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 88, 9)) foo4(t: T, u: U): T; >foo4 : (t: T, u: U) => T, Symbol(foo4, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 88, 43)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 89, 9)) >Derived2 : Derived2, Symbol(Derived2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 3, 43)) >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 89, 29)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 12)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 89, 34)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 89, 9)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 12)) foo5(t: T, u: U): T; >foo5 : (t: T, u: U) => T, Symbol(foo5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 89, 44)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 9)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 27)) >Derived2 : Derived2, Symbol(Derived2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 3, 43)) >t : T, Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 48)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 9)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 53)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 27)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 9)) foo6(): T; >foo6 : () => T, Symbol(foo6, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 63)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 91, 9)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 91, 27)) >Derived2 : Derived2, Symbol(Derived2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 3, 43)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 91, 9)) foo7(u: U): T; >foo7 : (u: U) => T, Symbol(foo7, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 91, 53)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 92, 9)) >Base : Base, Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 92, 24)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >u : U, Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 92, 44)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 92, 24)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 92, 9)) foo8(): T; >foo8 : () => T, Symbol(foo8, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 92, 53)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 93, 9)) >Base : Base, Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >U : U, Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 93, 24)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >T : T, Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 93, 9)) } var i: I; >i : I, Symbol(i, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 96, 3)) >I : I, Symbol(I, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 82, 19)) >Base : Base, Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >Derived : Derived, Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) var r4 = i.foo(d1, d2); // Base >r4 : Base, Symbol(r4, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 74, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 97, 3)) >i.foo(d1, d2) : Base >i.foo : (t: Base, u: Derived) => Base, Symbol(I.foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 85, 21)) >i : I, Symbol(i, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 96, 3)) >foo : (t: Base, u: Derived) => Base, Symbol(I.foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 85, 21)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) >d2 : Derived2, Symbol(d2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 3)) var r5 = i.foo2(b, d2); // Derived >r5 : Derived, Symbol(r5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 75, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 98, 3)) >i.foo2(b, d2) : Derived >i.foo2 : (t: Base, u: Derived) => Derived, Symbol(I.foo2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 86, 23)) >i : I, Symbol(i, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 96, 3)) >foo2 : (t: Base, u: Derived) => Derived, Symbol(I.foo2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 86, 23)) >b : Base, Symbol(b, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 5, 3)) >d2 : Derived2, Symbol(d2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 3)) var r6 = i.foo3(d1, d1); // Derived >r6 : Derived, Symbol(r6, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 76, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 99, 3)) >i.foo3(d1, d1) : Derived >i.foo3 : (t: T, u: Derived) => T, Symbol(I.foo3, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 87, 24)) >i : I, Symbol(i, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 96, 3)) >foo3 : (t: T, u: Derived) => T, Symbol(I.foo3, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 87, 24)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) var r7 = i.foo4(d1, d2); // Base >r7 : Base, Symbol(r7, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 77, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 100, 3)) >i.foo4(d1, d2) : Base >i.foo4 : (t: Base, u: U) => Base, Symbol(I.foo4, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 88, 43)) >i : I, Symbol(i, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 96, 3)) >foo4 : (t: Base, u: U) => Base, Symbol(I.foo4, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 88, 43)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) >d2 : Derived2, Symbol(d2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 3)) var r8 = i.foo5(d1, d2); // Derived >r8 : Derived, Symbol(r8, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 78, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 101, 3)) >i.foo5(d1, d2) : Derived >i.foo5 : (t: T, u: U) => T, Symbol(I.foo5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 89, 44)) >i : I, Symbol(i, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 96, 3)) >foo5 : (t: T, u: U) => T, Symbol(I.foo5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 89, 44)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) >d2 : Derived2, Symbol(d2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 3)) var r8b = i.foo5(d2, d2); // Derived2 >r8b : Derived2, Symbol(r8b, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 79, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 102, 3)) >i.foo5(d2, d2) : Derived2 >i.foo5 : (t: T, u: U) => T, Symbol(I.foo5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 89, 44)) >i : I, Symbol(i, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 96, 3)) >foo5 : (t: T, u: U) => T, Symbol(I.foo5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 89, 44)) >d2 : Derived2, Symbol(d2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 3)) >d2 : Derived2, Symbol(d2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 7, 3)) var r9 = i.foo6(); // Derived >r9 : Derived, Symbol(r9, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 80, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 103, 3)) >i.foo6() : Derived >i.foo6 : () => T, Symbol(I.foo6, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 63)) >i : I, Symbol(i, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 96, 3)) >foo6 : () => T, Symbol(I.foo6, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 63)) var r10 = i.foo7(d1); // Base >r10 : Base, Symbol(r10, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 81, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 104, 3)) >i.foo7(d1) : Base >i.foo7 : (u: U) => T, Symbol(I.foo7, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 91, 53)) >i : I, Symbol(i, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 96, 3)) >foo7 : (u: U) => T, Symbol(I.foo7, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 91, 53)) >d1 : Derived, Symbol(d1, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 6, 3)) var r11 = i.foo8(); // Base >r11 : Base, Symbol(r11, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 82, 3), Decl(genericCallWithConstraintsTypeArgumentInference.ts, 105, 3)) >i.foo8() : Base >i.foo8 : () => T, Symbol(I.foo8, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 92, 53)) >i : I, Symbol(i, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 96, 3)) >foo8 : () => T, Symbol(I.foo8, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 92, 53))