TypeScript/tests/baselines/reference/subtypingWithCallSignatures3.symbols
2015-04-15 16:44:20 -07:00

560 lines
31 KiB
Plaintext

=== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures3.ts ===
// checking subtype relations for function types as it relates to contextual signature instantiation
// error cases, so function calls will all result in 'any'
module Errors {
>Errors : Symbol(Errors, Decl(subtypingWithCallSignatures3.ts, 0, 0))
class Base { foo: string; }
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>foo : Symbol(foo, Decl(subtypingWithCallSignatures3.ts, 4, 16))
class Derived extends Base { bar: string; }
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>bar : Symbol(bar, Decl(subtypingWithCallSignatures3.ts, 5, 32))
class Derived2 extends Derived { baz: string; }
>Derived2 : Symbol(Derived2, Decl(subtypingWithCallSignatures3.ts, 5, 47))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>baz : Symbol(baz, Decl(subtypingWithCallSignatures3.ts, 6, 36))
class OtherDerived extends Base { bing: string; }
>OtherDerived : Symbol(OtherDerived, Decl(subtypingWithCallSignatures3.ts, 6, 51))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>bing : Symbol(bing, Decl(subtypingWithCallSignatures3.ts, 7, 37))
declare function foo2(a2: (x: number) => string[]): typeof a2;
>foo2 : Symbol(foo2, Decl(subtypingWithCallSignatures3.ts, 7, 53), Decl(subtypingWithCallSignatures3.ts, 9, 66))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 9, 26))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 9, 31))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 9, 26))
declare function foo2(a2: any): any;
>foo2 : Symbol(foo2, Decl(subtypingWithCallSignatures3.ts, 7, 53), Decl(subtypingWithCallSignatures3.ts, 9, 66))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 10, 26))
declare function foo7(a2: (x: (arg: Base) => Derived) => (r: Base) => Derived2): typeof a2;
>foo7 : Symbol(foo7, Decl(subtypingWithCallSignatures3.ts, 10, 40), Decl(subtypingWithCallSignatures3.ts, 12, 95))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 12, 26))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 12, 31))
>arg : Symbol(arg, Decl(subtypingWithCallSignatures3.ts, 12, 35))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>r : Symbol(r, Decl(subtypingWithCallSignatures3.ts, 12, 62))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>Derived2 : Symbol(Derived2, Decl(subtypingWithCallSignatures3.ts, 5, 47))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 12, 26))
declare function foo7(a2: any): any;
>foo7 : Symbol(foo7, Decl(subtypingWithCallSignatures3.ts, 10, 40), Decl(subtypingWithCallSignatures3.ts, 12, 95))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 13, 26))
declare function foo8(a2: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived): typeof a2;
>foo8 : Symbol(foo8, Decl(subtypingWithCallSignatures3.ts, 13, 40), Decl(subtypingWithCallSignatures3.ts, 15, 122))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 15, 26))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 15, 31))
>arg : Symbol(arg, Decl(subtypingWithCallSignatures3.ts, 15, 35))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>y : Symbol(y, Decl(subtypingWithCallSignatures3.ts, 15, 57))
>arg2 : Symbol(arg2, Decl(subtypingWithCallSignatures3.ts, 15, 62))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>r : Symbol(r, Decl(subtypingWithCallSignatures3.ts, 15, 90))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 15, 26))
declare function foo8(a2: any): any;
>foo8 : Symbol(foo8, Decl(subtypingWithCallSignatures3.ts, 13, 40), Decl(subtypingWithCallSignatures3.ts, 15, 122))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 16, 26))
declare function foo10(a2: (...x: Base[]) => Base): typeof a2;
>foo10 : Symbol(foo10, Decl(subtypingWithCallSignatures3.ts, 16, 40), Decl(subtypingWithCallSignatures3.ts, 18, 66))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 18, 27))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 18, 32))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 18, 27))
declare function foo10(a2: any): any;
>foo10 : Symbol(foo10, Decl(subtypingWithCallSignatures3.ts, 16, 40), Decl(subtypingWithCallSignatures3.ts, 18, 66))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 19, 27))
declare function foo11(a2: (x: { foo: string }, y: { foo: string; bar: string }) => Base): typeof a2;
>foo11 : Symbol(foo11, Decl(subtypingWithCallSignatures3.ts, 19, 41), Decl(subtypingWithCallSignatures3.ts, 21, 105))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 21, 27))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 21, 32))
>foo : Symbol(foo, Decl(subtypingWithCallSignatures3.ts, 21, 36))
>y : Symbol(y, Decl(subtypingWithCallSignatures3.ts, 21, 51))
>foo : Symbol(foo, Decl(subtypingWithCallSignatures3.ts, 21, 56))
>bar : Symbol(bar, Decl(subtypingWithCallSignatures3.ts, 21, 69))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 21, 27))
declare function foo11(a2: any): any;
>foo11 : Symbol(foo11, Decl(subtypingWithCallSignatures3.ts, 19, 41), Decl(subtypingWithCallSignatures3.ts, 21, 105))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 22, 27))
declare function foo12(a2: (x: Array<Base>, y: Array<Derived2>) => Array<Derived>): typeof a2;
>foo12 : Symbol(foo12, Decl(subtypingWithCallSignatures3.ts, 22, 41), Decl(subtypingWithCallSignatures3.ts, 24, 98))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 24, 27))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 24, 32))
>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>y : Symbol(y, Decl(subtypingWithCallSignatures3.ts, 24, 47))
>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
>Derived2 : Symbol(Derived2, Decl(subtypingWithCallSignatures3.ts, 5, 47))
>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 24, 27))
declare function foo12(a2: any): any;
>foo12 : Symbol(foo12, Decl(subtypingWithCallSignatures3.ts, 22, 41), Decl(subtypingWithCallSignatures3.ts, 24, 98))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 25, 27))
declare function foo15(a2: (x: { a: string; b: number }) => number): typeof a2;
>foo15 : Symbol(foo15, Decl(subtypingWithCallSignatures3.ts, 25, 41), Decl(subtypingWithCallSignatures3.ts, 27, 83))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 27, 27))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 27, 32))
>a : Symbol(a, Decl(subtypingWithCallSignatures3.ts, 27, 36))
>b : Symbol(b, Decl(subtypingWithCallSignatures3.ts, 27, 47))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 27, 27))
declare function foo15(a2: any): any;
>foo15 : Symbol(foo15, Decl(subtypingWithCallSignatures3.ts, 25, 41), Decl(subtypingWithCallSignatures3.ts, 27, 83))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 28, 27))
declare function foo16(a2: {
>foo16 : Symbol(foo16, Decl(subtypingWithCallSignatures3.ts, 28, 41), Decl(subtypingWithCallSignatures3.ts, 40, 18))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 30, 27))
// type of parameter is overload set which means we can't do inference based on this type
(x: {
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 32, 9))
(a: number): number;
>a : Symbol(a, Decl(subtypingWithCallSignatures3.ts, 33, 13))
(a?: number): number;
>a : Symbol(a, Decl(subtypingWithCallSignatures3.ts, 34, 13))
}): number[];
(x: {
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 36, 9))
(a: boolean): boolean;
>a : Symbol(a, Decl(subtypingWithCallSignatures3.ts, 37, 13))
(a?: boolean): boolean;
>a : Symbol(a, Decl(subtypingWithCallSignatures3.ts, 38, 13))
}): boolean[];
}): typeof a2;
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 30, 27))
declare function foo16(a2: any): any;
>foo16 : Symbol(foo16, Decl(subtypingWithCallSignatures3.ts, 28, 41), Decl(subtypingWithCallSignatures3.ts, 40, 18))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 41, 27))
declare function foo17(a2: {
>foo17 : Symbol(foo17, Decl(subtypingWithCallSignatures3.ts, 41, 41), Decl(subtypingWithCallSignatures3.ts, 52, 18))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 43, 27))
(x: {
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 44, 9))
<T extends Derived>(a: T): T;
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 45, 13))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>a : Symbol(a, Decl(subtypingWithCallSignatures3.ts, 45, 32))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 45, 13))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 45, 13))
<T extends Base>(a: T): T;
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 46, 13))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>a : Symbol(a, Decl(subtypingWithCallSignatures3.ts, 46, 29))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 46, 13))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 46, 13))
}): any[];
(x: {
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 48, 9))
<T extends Derived2>(a: T): T;
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 49, 13))
>Derived2 : Symbol(Derived2, Decl(subtypingWithCallSignatures3.ts, 5, 47))
>a : Symbol(a, Decl(subtypingWithCallSignatures3.ts, 49, 33))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 49, 13))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 49, 13))
<T extends Base>(a: T): T;
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 50, 13))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>a : Symbol(a, Decl(subtypingWithCallSignatures3.ts, 50, 29))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 50, 13))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 50, 13))
}): any[];
}): typeof a2;
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 43, 27))
declare function foo17(a2: any): any;
>foo17 : Symbol(foo17, Decl(subtypingWithCallSignatures3.ts, 41, 41), Decl(subtypingWithCallSignatures3.ts, 52, 18))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 53, 27))
var r1 = foo2(<T, U>(x: T) => <U[]>null); // any
>r1 : Symbol(r1, Decl(subtypingWithCallSignatures3.ts, 55, 7))
>foo2 : Symbol(foo2, Decl(subtypingWithCallSignatures3.ts, 7, 53), Decl(subtypingWithCallSignatures3.ts, 9, 66))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 55, 19))
>U : Symbol(U, Decl(subtypingWithCallSignatures3.ts, 55, 21))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 55, 25))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 55, 19))
>U : Symbol(U, Decl(subtypingWithCallSignatures3.ts, 55, 21))
var r1a = [(x: number) => [''], <T, U>(x: T) => <U[]>null];
>r1a : Symbol(r1a, Decl(subtypingWithCallSignatures3.ts, 56, 7))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 56, 16))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 56, 37))
>U : Symbol(U, Decl(subtypingWithCallSignatures3.ts, 56, 39))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 56, 43))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 56, 37))
>U : Symbol(U, Decl(subtypingWithCallSignatures3.ts, 56, 39))
var r1b = [<T, U>(x: T) => <U[]>null, (x: number) => ['']];
>r1b : Symbol(r1b, Decl(subtypingWithCallSignatures3.ts, 57, 7))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 57, 16))
>U : Symbol(U, Decl(subtypingWithCallSignatures3.ts, 57, 18))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 57, 22))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 57, 16))
>U : Symbol(U, Decl(subtypingWithCallSignatures3.ts, 57, 18))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 57, 43))
var r2arg = <T extends Base, U extends Derived, V extends Derived2>(x: (arg: T) => U) => (r: T) => <V>null;
>r2arg : Symbol(r2arg, Decl(subtypingWithCallSignatures3.ts, 59, 7))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 59, 17))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>U : Symbol(U, Decl(subtypingWithCallSignatures3.ts, 59, 32))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>V : Symbol(V, Decl(subtypingWithCallSignatures3.ts, 59, 51))
>Derived2 : Symbol(Derived2, Decl(subtypingWithCallSignatures3.ts, 5, 47))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 59, 72))
>arg : Symbol(arg, Decl(subtypingWithCallSignatures3.ts, 59, 76))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 59, 17))
>U : Symbol(U, Decl(subtypingWithCallSignatures3.ts, 59, 32))
>r : Symbol(r, Decl(subtypingWithCallSignatures3.ts, 59, 94))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 59, 17))
>V : Symbol(V, Decl(subtypingWithCallSignatures3.ts, 59, 51))
var r2arg2 = (x: (arg: Base) => Derived) => (r: Base) => <Derived2>null;
>r2arg2 : Symbol(r2arg2, Decl(subtypingWithCallSignatures3.ts, 60, 7))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 60, 18))
>arg : Symbol(arg, Decl(subtypingWithCallSignatures3.ts, 60, 22))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>r : Symbol(r, Decl(subtypingWithCallSignatures3.ts, 60, 49))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>Derived2 : Symbol(Derived2, Decl(subtypingWithCallSignatures3.ts, 5, 47))
var r2 = foo7(r2arg); // any
>r2 : Symbol(r2, Decl(subtypingWithCallSignatures3.ts, 61, 7))
>foo7 : Symbol(foo7, Decl(subtypingWithCallSignatures3.ts, 10, 40), Decl(subtypingWithCallSignatures3.ts, 12, 95))
>r2arg : Symbol(r2arg, Decl(subtypingWithCallSignatures3.ts, 59, 7))
var r2a = [r2arg2, r2arg];
>r2a : Symbol(r2a, Decl(subtypingWithCallSignatures3.ts, 62, 7))
>r2arg2 : Symbol(r2arg2, Decl(subtypingWithCallSignatures3.ts, 60, 7))
>r2arg : Symbol(r2arg, Decl(subtypingWithCallSignatures3.ts, 59, 7))
var r2b = [r2arg, r2arg2];
>r2b : Symbol(r2b, Decl(subtypingWithCallSignatures3.ts, 63, 7))
>r2arg : Symbol(r2arg, Decl(subtypingWithCallSignatures3.ts, 59, 7))
>r2arg2 : Symbol(r2arg2, Decl(subtypingWithCallSignatures3.ts, 60, 7))
var r3arg = <T extends Base, U extends Derived>(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => <U>null;
>r3arg : Symbol(r3arg, Decl(subtypingWithCallSignatures3.ts, 65, 7))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 65, 17))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>U : Symbol(U, Decl(subtypingWithCallSignatures3.ts, 65, 32))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 65, 52))
>arg : Symbol(arg, Decl(subtypingWithCallSignatures3.ts, 65, 56))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 65, 17))
>U : Symbol(U, Decl(subtypingWithCallSignatures3.ts, 65, 32))
>y : Symbol(y, Decl(subtypingWithCallSignatures3.ts, 65, 69))
>arg2 : Symbol(arg2, Decl(subtypingWithCallSignatures3.ts, 65, 74))
>foo : Symbol(foo, Decl(subtypingWithCallSignatures3.ts, 65, 81))
>U : Symbol(U, Decl(subtypingWithCallSignatures3.ts, 65, 32))
>r : Symbol(r, Decl(subtypingWithCallSignatures3.ts, 65, 108))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 65, 17))
>U : Symbol(U, Decl(subtypingWithCallSignatures3.ts, 65, 32))
var r3arg2 = (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => <Derived>null;
>r3arg2 : Symbol(r3arg2, Decl(subtypingWithCallSignatures3.ts, 66, 7))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 66, 18))
>arg : Symbol(arg, Decl(subtypingWithCallSignatures3.ts, 66, 22))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>y : Symbol(y, Decl(subtypingWithCallSignatures3.ts, 66, 44))
>arg2 : Symbol(arg2, Decl(subtypingWithCallSignatures3.ts, 66, 49))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>r : Symbol(r, Decl(subtypingWithCallSignatures3.ts, 66, 77))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
var r3 = foo8(r3arg); // any
>r3 : Symbol(r3, Decl(subtypingWithCallSignatures3.ts, 67, 7))
>foo8 : Symbol(foo8, Decl(subtypingWithCallSignatures3.ts, 13, 40), Decl(subtypingWithCallSignatures3.ts, 15, 122))
>r3arg : Symbol(r3arg, Decl(subtypingWithCallSignatures3.ts, 65, 7))
var r3a = [r3arg2, r3arg];
>r3a : Symbol(r3a, Decl(subtypingWithCallSignatures3.ts, 68, 7))
>r3arg2 : Symbol(r3arg2, Decl(subtypingWithCallSignatures3.ts, 66, 7))
>r3arg : Symbol(r3arg, Decl(subtypingWithCallSignatures3.ts, 65, 7))
var r3b = [r3arg, r3arg2];
>r3b : Symbol(r3b, Decl(subtypingWithCallSignatures3.ts, 69, 7))
>r3arg : Symbol(r3arg, Decl(subtypingWithCallSignatures3.ts, 65, 7))
>r3arg2 : Symbol(r3arg2, Decl(subtypingWithCallSignatures3.ts, 66, 7))
var r4arg = <T extends Derived>(...x: T[]) => <T>null;
>r4arg : Symbol(r4arg, Decl(subtypingWithCallSignatures3.ts, 71, 7))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 71, 17))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 71, 36))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 71, 17))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 71, 17))
var r4arg2 = (...x: Base[]) => <Base>null;
>r4arg2 : Symbol(r4arg2, Decl(subtypingWithCallSignatures3.ts, 72, 7))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 72, 18))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
var r4 = foo10(r4arg); // any
>r4 : Symbol(r4, Decl(subtypingWithCallSignatures3.ts, 73, 7))
>foo10 : Symbol(foo10, Decl(subtypingWithCallSignatures3.ts, 16, 40), Decl(subtypingWithCallSignatures3.ts, 18, 66))
>r4arg : Symbol(r4arg, Decl(subtypingWithCallSignatures3.ts, 71, 7))
var r4a = [r4arg2, r4arg];
>r4a : Symbol(r4a, Decl(subtypingWithCallSignatures3.ts, 74, 7))
>r4arg2 : Symbol(r4arg2, Decl(subtypingWithCallSignatures3.ts, 72, 7))
>r4arg : Symbol(r4arg, Decl(subtypingWithCallSignatures3.ts, 71, 7))
var r4b = [r4arg, r4arg2];
>r4b : Symbol(r4b, Decl(subtypingWithCallSignatures3.ts, 75, 7))
>r4arg : Symbol(r4arg, Decl(subtypingWithCallSignatures3.ts, 71, 7))
>r4arg2 : Symbol(r4arg2, Decl(subtypingWithCallSignatures3.ts, 72, 7))
var r5arg = <T extends Derived>(x: T, y: T) => <T>null;
>r5arg : Symbol(r5arg, Decl(subtypingWithCallSignatures3.ts, 77, 7))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 77, 17))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 77, 36))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 77, 17))
>y : Symbol(y, Decl(subtypingWithCallSignatures3.ts, 77, 41))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 77, 17))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 77, 17))
var r5arg2 = (x: { foo: string }, y: { foo: string; bar: string }) => <Base>null;
>r5arg2 : Symbol(r5arg2, Decl(subtypingWithCallSignatures3.ts, 78, 7))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 78, 18))
>foo : Symbol(foo, Decl(subtypingWithCallSignatures3.ts, 78, 22))
>y : Symbol(y, Decl(subtypingWithCallSignatures3.ts, 78, 37))
>foo : Symbol(foo, Decl(subtypingWithCallSignatures3.ts, 78, 42))
>bar : Symbol(bar, Decl(subtypingWithCallSignatures3.ts, 78, 55))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
var r5 = foo11(r5arg); // any
>r5 : Symbol(r5, Decl(subtypingWithCallSignatures3.ts, 79, 7))
>foo11 : Symbol(foo11, Decl(subtypingWithCallSignatures3.ts, 19, 41), Decl(subtypingWithCallSignatures3.ts, 21, 105))
>r5arg : Symbol(r5arg, Decl(subtypingWithCallSignatures3.ts, 77, 7))
var r5a = [r5arg2, r5arg];
>r5a : Symbol(r5a, Decl(subtypingWithCallSignatures3.ts, 80, 7))
>r5arg2 : Symbol(r5arg2, Decl(subtypingWithCallSignatures3.ts, 78, 7))
>r5arg : Symbol(r5arg, Decl(subtypingWithCallSignatures3.ts, 77, 7))
var r5b = [r5arg, r5arg2];
>r5b : Symbol(r5b, Decl(subtypingWithCallSignatures3.ts, 81, 7))
>r5arg : Symbol(r5arg, Decl(subtypingWithCallSignatures3.ts, 77, 7))
>r5arg2 : Symbol(r5arg2, Decl(subtypingWithCallSignatures3.ts, 78, 7))
var r6arg = (x: Array<Base>, y: Array<Derived2>) => <Array<Derived>>null;
>r6arg : Symbol(r6arg, Decl(subtypingWithCallSignatures3.ts, 83, 7))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 83, 17))
>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>y : Symbol(y, Decl(subtypingWithCallSignatures3.ts, 83, 32))
>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
>Derived2 : Symbol(Derived2, Decl(subtypingWithCallSignatures3.ts, 5, 47))
>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
>Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31))
var r6arg2 = <T extends Array<Derived2>>(x: Array<Base>, y: Array<Base>) => <T>null;
>r6arg2 : Symbol(r6arg2, Decl(subtypingWithCallSignatures3.ts, 84, 7))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 84, 18))
>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
>Derived2 : Symbol(Derived2, Decl(subtypingWithCallSignatures3.ts, 5, 47))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 84, 45))
>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>y : Symbol(y, Decl(subtypingWithCallSignatures3.ts, 84, 60))
>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 84, 18))
var r6 = foo12(r6arg); // (x: Array<Base>, y: Array<Derived2>) => Array<Derived>
>r6 : Symbol(r6, Decl(subtypingWithCallSignatures3.ts, 85, 7))
>foo12 : Symbol(foo12, Decl(subtypingWithCallSignatures3.ts, 22, 41), Decl(subtypingWithCallSignatures3.ts, 24, 98))
>r6arg : Symbol(r6arg, Decl(subtypingWithCallSignatures3.ts, 83, 7))
var r6a = [r6arg2, r6arg];
>r6a : Symbol(r6a, Decl(subtypingWithCallSignatures3.ts, 86, 7))
>r6arg2 : Symbol(r6arg2, Decl(subtypingWithCallSignatures3.ts, 84, 7))
>r6arg : Symbol(r6arg, Decl(subtypingWithCallSignatures3.ts, 83, 7))
var r6b = [r6arg, r6arg2];
>r6b : Symbol(r6b, Decl(subtypingWithCallSignatures3.ts, 87, 7))
>r6arg : Symbol(r6arg, Decl(subtypingWithCallSignatures3.ts, 83, 7))
>r6arg2 : Symbol(r6arg2, Decl(subtypingWithCallSignatures3.ts, 84, 7))
var r7arg = <T>(x: { a: T; b: T }) => <T>null;
>r7arg : Symbol(r7arg, Decl(subtypingWithCallSignatures3.ts, 89, 7))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 89, 17))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 89, 20))
>a : Symbol(a, Decl(subtypingWithCallSignatures3.ts, 89, 24))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 89, 17))
>b : Symbol(b, Decl(subtypingWithCallSignatures3.ts, 89, 30))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 89, 17))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 89, 17))
var r7arg2 = (x: { a: string; b: number }) => 1;
>r7arg2 : Symbol(r7arg2, Decl(subtypingWithCallSignatures3.ts, 90, 7))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 90, 18))
>a : Symbol(a, Decl(subtypingWithCallSignatures3.ts, 90, 22))
>b : Symbol(b, Decl(subtypingWithCallSignatures3.ts, 90, 33))
var r7 = foo15(r7arg); // any
>r7 : Symbol(r7, Decl(subtypingWithCallSignatures3.ts, 91, 7))
>foo15 : Symbol(foo15, Decl(subtypingWithCallSignatures3.ts, 25, 41), Decl(subtypingWithCallSignatures3.ts, 27, 83))
>r7arg : Symbol(r7arg, Decl(subtypingWithCallSignatures3.ts, 89, 7))
var r7a = [r7arg2, r7arg];
>r7a : Symbol(r7a, Decl(subtypingWithCallSignatures3.ts, 92, 7))
>r7arg2 : Symbol(r7arg2, Decl(subtypingWithCallSignatures3.ts, 90, 7))
>r7arg : Symbol(r7arg, Decl(subtypingWithCallSignatures3.ts, 89, 7))
var r7b = [r7arg, r7arg2];
>r7b : Symbol(r7b, Decl(subtypingWithCallSignatures3.ts, 93, 7))
>r7arg : Symbol(r7arg, Decl(subtypingWithCallSignatures3.ts, 89, 7))
>r7arg2 : Symbol(r7arg2, Decl(subtypingWithCallSignatures3.ts, 90, 7))
var r7arg3 = <T extends Base>(x: { a: T; b: T }) => 1;
>r7arg3 : Symbol(r7arg3, Decl(subtypingWithCallSignatures3.ts, 95, 7))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 95, 18))
>Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 95, 34))
>a : Symbol(a, Decl(subtypingWithCallSignatures3.ts, 95, 38))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 95, 18))
>b : Symbol(b, Decl(subtypingWithCallSignatures3.ts, 95, 44))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 95, 18))
var r7c = foo15(r7arg3); // (x: { a: string; b: number }) => number): number;
>r7c : Symbol(r7c, Decl(subtypingWithCallSignatures3.ts, 96, 7))
>foo15 : Symbol(foo15, Decl(subtypingWithCallSignatures3.ts, 25, 41), Decl(subtypingWithCallSignatures3.ts, 27, 83))
>r7arg3 : Symbol(r7arg3, Decl(subtypingWithCallSignatures3.ts, 95, 7))
var r7d = [r7arg2, r7arg3];
>r7d : Symbol(r7d, Decl(subtypingWithCallSignatures3.ts, 97, 7))
>r7arg2 : Symbol(r7arg2, Decl(subtypingWithCallSignatures3.ts, 90, 7))
>r7arg3 : Symbol(r7arg3, Decl(subtypingWithCallSignatures3.ts, 95, 7))
var r7e = [r7arg3, r7arg2];
>r7e : Symbol(r7e, Decl(subtypingWithCallSignatures3.ts, 98, 7))
>r7arg3 : Symbol(r7arg3, Decl(subtypingWithCallSignatures3.ts, 95, 7))
>r7arg2 : Symbol(r7arg2, Decl(subtypingWithCallSignatures3.ts, 90, 7))
var r8arg = <T>(x: (a: T) => T) => <T[]>null;
>r8arg : Symbol(r8arg, Decl(subtypingWithCallSignatures3.ts, 100, 7))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 100, 17))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 100, 20))
>a : Symbol(a, Decl(subtypingWithCallSignatures3.ts, 100, 24))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 100, 17))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 100, 17))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 100, 17))
var r8 = foo16(r8arg); // any
>r8 : Symbol(r8, Decl(subtypingWithCallSignatures3.ts, 101, 7))
>foo16 : Symbol(foo16, Decl(subtypingWithCallSignatures3.ts, 28, 41), Decl(subtypingWithCallSignatures3.ts, 40, 18))
>r8arg : Symbol(r8arg, Decl(subtypingWithCallSignatures3.ts, 100, 7))
var r9arg = <T>(x: (a: T) => T) => <any[]>null;
>r9arg : Symbol(r9arg, Decl(subtypingWithCallSignatures3.ts, 103, 7))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 103, 17))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 103, 20))
>a : Symbol(a, Decl(subtypingWithCallSignatures3.ts, 103, 24))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 103, 17))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 103, 17))
var r9 = foo17(r9arg); // (x: { <T extends Derived >(a: T): T; <T extends Base >(a: T): T; }): any[]; (x: { <T extends Derived2>(a: T): T; <T extends Base>(a: T): T; }): any[];
>r9 : Symbol(r9, Decl(subtypingWithCallSignatures3.ts, 104, 7))
>foo17 : Symbol(foo17, Decl(subtypingWithCallSignatures3.ts, 41, 41), Decl(subtypingWithCallSignatures3.ts, 52, 18))
>r9arg : Symbol(r9arg, Decl(subtypingWithCallSignatures3.ts, 103, 7))
}
module WithGenericSignaturesInBaseType {
>WithGenericSignaturesInBaseType : Symbol(WithGenericSignaturesInBaseType, Decl(subtypingWithCallSignatures3.ts, 105, 1))
declare function foo2(a2: <T>(x: T) => T[]): typeof a2;
>foo2 : Symbol(foo2, Decl(subtypingWithCallSignatures3.ts, 107, 40), Decl(subtypingWithCallSignatures3.ts, 108, 59))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 108, 26))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 108, 31))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 108, 34))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 108, 31))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 108, 31))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 108, 26))
declare function foo2(a2: any): any;
>foo2 : Symbol(foo2, Decl(subtypingWithCallSignatures3.ts, 107, 40), Decl(subtypingWithCallSignatures3.ts, 108, 59))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 109, 26))
var r2arg2 = <T>(x: T) => [''];
>r2arg2 : Symbol(r2arg2, Decl(subtypingWithCallSignatures3.ts, 110, 7))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 110, 18))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 110, 21))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 110, 18))
var r2 = foo2(r2arg2); // <T>(x:T) => T[] since we can infer from generic signatures now
>r2 : Symbol(r2, Decl(subtypingWithCallSignatures3.ts, 111, 7))
>foo2 : Symbol(foo2, Decl(subtypingWithCallSignatures3.ts, 107, 40), Decl(subtypingWithCallSignatures3.ts, 108, 59))
>r2arg2 : Symbol(r2arg2, Decl(subtypingWithCallSignatures3.ts, 110, 7))
declare function foo3(a2: <T>(x: T) => string[]): typeof a2;
>foo3 : Symbol(foo3, Decl(subtypingWithCallSignatures3.ts, 111, 26), Decl(subtypingWithCallSignatures3.ts, 113, 64))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 113, 26))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 113, 31))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 113, 34))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 113, 31))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 113, 26))
declare function foo3(a2: any): any;
>foo3 : Symbol(foo3, Decl(subtypingWithCallSignatures3.ts, 111, 26), Decl(subtypingWithCallSignatures3.ts, 113, 64))
>a2 : Symbol(a2, Decl(subtypingWithCallSignatures3.ts, 114, 26))
var r3arg2 = <T>(x: T) => <T[]>null;
>r3arg2 : Symbol(r3arg2, Decl(subtypingWithCallSignatures3.ts, 115, 7))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 115, 18))
>x : Symbol(x, Decl(subtypingWithCallSignatures3.ts, 115, 21))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 115, 18))
>T : Symbol(T, Decl(subtypingWithCallSignatures3.ts, 115, 18))
var r3 = foo3(r3arg2); // any
>r3 : Symbol(r3, Decl(subtypingWithCallSignatures3.ts, 116, 7))
>foo3 : Symbol(foo3, Decl(subtypingWithCallSignatures3.ts, 111, 26), Decl(subtypingWithCallSignatures3.ts, 113, 64))
>r3arg2 : Symbol(r3arg2, Decl(subtypingWithCallSignatures3.ts, 115, 7))
}