=== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures3.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(subtypingWithConstructSignatures3.ts, 0, 0)) class Base { foo: string; } >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >foo : Symbol(foo, Decl(subtypingWithConstructSignatures3.ts, 4, 16)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >bar : Symbol(bar, Decl(subtypingWithConstructSignatures3.ts, 5, 32)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(subtypingWithConstructSignatures3.ts, 5, 47)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >baz : Symbol(baz, Decl(subtypingWithConstructSignatures3.ts, 6, 36)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(subtypingWithConstructSignatures3.ts, 6, 51)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >bing : Symbol(bing, Decl(subtypingWithConstructSignatures3.ts, 7, 37)) declare function foo2(a2: new (x: number) => string[]): typeof a2; >foo2 : Symbol(foo2, Decl(subtypingWithConstructSignatures3.ts, 7, 53), Decl(subtypingWithConstructSignatures3.ts, 9, 70)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 9, 26)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 9, 35)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 9, 26)) declare function foo2(a2: any): any; >foo2 : Symbol(foo2, Decl(subtypingWithConstructSignatures3.ts, 7, 53), Decl(subtypingWithConstructSignatures3.ts, 9, 70)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 10, 26)) declare function foo7(a2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2): typeof a2; >foo7 : Symbol(foo7, Decl(subtypingWithConstructSignatures3.ts, 10, 40), Decl(subtypingWithConstructSignatures3.ts, 12, 107)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 12, 26)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 12, 35)) >arg : Symbol(arg, Decl(subtypingWithConstructSignatures3.ts, 12, 43)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >r : Symbol(r, Decl(subtypingWithConstructSignatures3.ts, 12, 74)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >Derived2 : Symbol(Derived2, Decl(subtypingWithConstructSignatures3.ts, 5, 47)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 12, 26)) declare function foo7(a2: any): any; >foo7 : Symbol(foo7, Decl(subtypingWithConstructSignatures3.ts, 10, 40), Decl(subtypingWithConstructSignatures3.ts, 12, 107)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 13, 26)) declare function foo8(a2: new (x: new (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived): typeof a2; >foo8 : Symbol(foo8, Decl(subtypingWithConstructSignatures3.ts, 13, 40), Decl(subtypingWithConstructSignatures3.ts, 15, 138)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 15, 26)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 15, 35)) >arg : Symbol(arg, Decl(subtypingWithConstructSignatures3.ts, 15, 43)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >y : Symbol(y, Decl(subtypingWithConstructSignatures3.ts, 15, 65)) >arg2 : Symbol(arg2, Decl(subtypingWithConstructSignatures3.ts, 15, 74)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >r : Symbol(r, Decl(subtypingWithConstructSignatures3.ts, 15, 106)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 15, 26)) declare function foo8(a2: any): any; >foo8 : Symbol(foo8, Decl(subtypingWithConstructSignatures3.ts, 13, 40), Decl(subtypingWithConstructSignatures3.ts, 15, 138)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 16, 26)) declare function foo10(a2: new (...x: Base[]) => Base): typeof a2; >foo10 : Symbol(foo10, Decl(subtypingWithConstructSignatures3.ts, 16, 40), Decl(subtypingWithConstructSignatures3.ts, 18, 70)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 18, 27)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 18, 36)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 18, 27)) declare function foo10(a2: any): any; >foo10 : Symbol(foo10, Decl(subtypingWithConstructSignatures3.ts, 16, 40), Decl(subtypingWithConstructSignatures3.ts, 18, 70)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 19, 27)) declare function foo11(a2: new (x: { foo: string }, y: { foo: string; bar: string }) => Base): typeof a2; >foo11 : Symbol(foo11, Decl(subtypingWithConstructSignatures3.ts, 19, 41), Decl(subtypingWithConstructSignatures3.ts, 21, 109)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 21, 27)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 21, 36)) >foo : Symbol(foo, Decl(subtypingWithConstructSignatures3.ts, 21, 40)) >y : Symbol(y, Decl(subtypingWithConstructSignatures3.ts, 21, 55)) >foo : Symbol(foo, Decl(subtypingWithConstructSignatures3.ts, 21, 60)) >bar : Symbol(bar, Decl(subtypingWithConstructSignatures3.ts, 21, 73)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 21, 27)) declare function foo11(a2: any): any; >foo11 : Symbol(foo11, Decl(subtypingWithConstructSignatures3.ts, 19, 41), Decl(subtypingWithConstructSignatures3.ts, 21, 109)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 22, 27)) declare function foo12(a2: new (x: Array, y: Array) => Array): typeof a2; >foo12 : Symbol(foo12, Decl(subtypingWithConstructSignatures3.ts, 22, 41), Decl(subtypingWithConstructSignatures3.ts, 24, 102)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 24, 27)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 24, 36)) >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >y : Symbol(y, Decl(subtypingWithConstructSignatures3.ts, 24, 51)) >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Derived2 : Symbol(Derived2, Decl(subtypingWithConstructSignatures3.ts, 5, 47)) >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 24, 27)) declare function foo12(a2: any): any; >foo12 : Symbol(foo12, Decl(subtypingWithConstructSignatures3.ts, 22, 41), Decl(subtypingWithConstructSignatures3.ts, 24, 102)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 25, 27)) declare function foo15(a2: new (x: { a: string; b: number }) => number): typeof a2; >foo15 : Symbol(foo15, Decl(subtypingWithConstructSignatures3.ts, 25, 41), Decl(subtypingWithConstructSignatures3.ts, 27, 87)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 27, 27)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 27, 36)) >a : Symbol(a, Decl(subtypingWithConstructSignatures3.ts, 27, 40)) >b : Symbol(b, Decl(subtypingWithConstructSignatures3.ts, 27, 51)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 27, 27)) declare function foo15(a2: any): any; >foo15 : Symbol(foo15, Decl(subtypingWithConstructSignatures3.ts, 25, 41), Decl(subtypingWithConstructSignatures3.ts, 27, 87)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 28, 27)) declare function foo16(a2: { >foo16 : Symbol(foo16, Decl(subtypingWithConstructSignatures3.ts, 28, 41), Decl(subtypingWithConstructSignatures3.ts, 40, 18)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 30, 27)) // type of parameter is overload set which means we can't do inference based on this type new (x: { >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 32, 13)) new (a: number): number; >a : Symbol(a, Decl(subtypingWithConstructSignatures3.ts, 33, 17)) new (a?: number): number; >a : Symbol(a, Decl(subtypingWithConstructSignatures3.ts, 34, 17)) }): number[]; new (x: { >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 36, 13)) new (a: boolean): boolean; >a : Symbol(a, Decl(subtypingWithConstructSignatures3.ts, 37, 17)) new (a?: boolean): boolean; >a : Symbol(a, Decl(subtypingWithConstructSignatures3.ts, 38, 17)) }): boolean[]; }): typeof a2; >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 30, 27)) declare function foo16(a2: any): any; >foo16 : Symbol(foo16, Decl(subtypingWithConstructSignatures3.ts, 28, 41), Decl(subtypingWithConstructSignatures3.ts, 40, 18)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 41, 27)) declare function foo17(a2: { >foo17 : Symbol(foo17, Decl(subtypingWithConstructSignatures3.ts, 41, 41), Decl(subtypingWithConstructSignatures3.ts, 52, 18)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 43, 27)) new (x: { >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 44, 13)) new (a: T): T; >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 45, 17)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >a : Symbol(a, Decl(subtypingWithConstructSignatures3.ts, 45, 36)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 45, 17)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 45, 17)) new (a: T): T; >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 46, 17)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >a : Symbol(a, Decl(subtypingWithConstructSignatures3.ts, 46, 33)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 46, 17)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 46, 17)) }): any[]; new (x: { >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 48, 13)) new (a: T): T; >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 49, 17)) >Derived2 : Symbol(Derived2, Decl(subtypingWithConstructSignatures3.ts, 5, 47)) >a : Symbol(a, Decl(subtypingWithConstructSignatures3.ts, 49, 37)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 49, 17)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 49, 17)) new (a: T): T; >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 50, 17)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >a : Symbol(a, Decl(subtypingWithConstructSignatures3.ts, 50, 33)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 50, 17)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 50, 17)) }): any[]; }): typeof a2; >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 43, 27)) declare function foo17(a2: any): any; >foo17 : Symbol(foo17, Decl(subtypingWithConstructSignatures3.ts, 41, 41), Decl(subtypingWithConstructSignatures3.ts, 52, 18)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 53, 27)) var r1arg1: new (x: T) => U[]; >r1arg1 : Symbol(r1arg1, Decl(subtypingWithConstructSignatures3.ts, 55, 7)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 55, 21)) >U : Symbol(U, Decl(subtypingWithConstructSignatures3.ts, 55, 23)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 55, 27)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 55, 21)) >U : Symbol(U, Decl(subtypingWithConstructSignatures3.ts, 55, 23)) var r1arg2: new (x: number) => string[]; >r1arg2 : Symbol(r1arg2, Decl(subtypingWithConstructSignatures3.ts, 56, 7)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 56, 21)) var r1 = foo2(r1arg1); // any >r1 : Symbol(r1, Decl(subtypingWithConstructSignatures3.ts, 57, 7)) >foo2 : Symbol(foo2, Decl(subtypingWithConstructSignatures3.ts, 7, 53), Decl(subtypingWithConstructSignatures3.ts, 9, 70)) >r1arg1 : Symbol(r1arg1, Decl(subtypingWithConstructSignatures3.ts, 55, 7)) var r1a = [r1arg2, r1arg1]; >r1a : Symbol(r1a, Decl(subtypingWithConstructSignatures3.ts, 58, 7)) >r1arg2 : Symbol(r1arg2, Decl(subtypingWithConstructSignatures3.ts, 56, 7)) >r1arg1 : Symbol(r1arg1, Decl(subtypingWithConstructSignatures3.ts, 55, 7)) var r1b = [r1arg1, r1arg2]; >r1b : Symbol(r1b, Decl(subtypingWithConstructSignatures3.ts, 59, 7)) >r1arg1 : Symbol(r1arg1, Decl(subtypingWithConstructSignatures3.ts, 55, 7)) >r1arg2 : Symbol(r1arg2, Decl(subtypingWithConstructSignatures3.ts, 56, 7)) var r2arg1: new (x: new (arg: T) => U) => new (r: T) => V; >r2arg1 : Symbol(r2arg1, Decl(subtypingWithConstructSignatures3.ts, 61, 7)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 61, 21)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >U : Symbol(U, Decl(subtypingWithConstructSignatures3.ts, 61, 36)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >V : Symbol(V, Decl(subtypingWithConstructSignatures3.ts, 61, 55)) >Derived2 : Symbol(Derived2, Decl(subtypingWithConstructSignatures3.ts, 5, 47)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 61, 76)) >arg : Symbol(arg, Decl(subtypingWithConstructSignatures3.ts, 61, 84)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 61, 21)) >U : Symbol(U, Decl(subtypingWithConstructSignatures3.ts, 61, 36)) >r : Symbol(r, Decl(subtypingWithConstructSignatures3.ts, 61, 106)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 61, 21)) >V : Symbol(V, Decl(subtypingWithConstructSignatures3.ts, 61, 55)) var r2arg2: new (x: new (arg: Base) => Derived) => new (r: Base) => Derived2; >r2arg2 : Symbol(r2arg2, Decl(subtypingWithConstructSignatures3.ts, 62, 7)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 62, 21)) >arg : Symbol(arg, Decl(subtypingWithConstructSignatures3.ts, 62, 29)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >r : Symbol(r, Decl(subtypingWithConstructSignatures3.ts, 62, 60)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >Derived2 : Symbol(Derived2, Decl(subtypingWithConstructSignatures3.ts, 5, 47)) var r2 = foo7(r2arg1); // any >r2 : Symbol(r2, Decl(subtypingWithConstructSignatures3.ts, 63, 7)) >foo7 : Symbol(foo7, Decl(subtypingWithConstructSignatures3.ts, 10, 40), Decl(subtypingWithConstructSignatures3.ts, 12, 107)) >r2arg1 : Symbol(r2arg1, Decl(subtypingWithConstructSignatures3.ts, 61, 7)) var r2a = [r2arg2, r2arg1]; >r2a : Symbol(r2a, Decl(subtypingWithConstructSignatures3.ts, 64, 7)) >r2arg2 : Symbol(r2arg2, Decl(subtypingWithConstructSignatures3.ts, 62, 7)) >r2arg1 : Symbol(r2arg1, Decl(subtypingWithConstructSignatures3.ts, 61, 7)) var r2b = [r2arg1, r2arg2]; >r2b : Symbol(r2b, Decl(subtypingWithConstructSignatures3.ts, 65, 7)) >r2arg1 : Symbol(r2arg1, Decl(subtypingWithConstructSignatures3.ts, 61, 7)) >r2arg2 : Symbol(r2arg2, Decl(subtypingWithConstructSignatures3.ts, 62, 7)) var r3arg1: new (x: new (arg: T) => U, y: (arg2: { foo: number; }) => U) => new (r: T) => U; >r3arg1 : Symbol(r3arg1, Decl(subtypingWithConstructSignatures3.ts, 67, 7)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 67, 21)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >U : Symbol(U, Decl(subtypingWithConstructSignatures3.ts, 67, 36)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 67, 56)) >arg : Symbol(arg, Decl(subtypingWithConstructSignatures3.ts, 67, 64)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 67, 21)) >U : Symbol(U, Decl(subtypingWithConstructSignatures3.ts, 67, 36)) >y : Symbol(y, Decl(subtypingWithConstructSignatures3.ts, 67, 77)) >arg2 : Symbol(arg2, Decl(subtypingWithConstructSignatures3.ts, 67, 82)) >foo : Symbol(foo, Decl(subtypingWithConstructSignatures3.ts, 67, 89)) >U : Symbol(U, Decl(subtypingWithConstructSignatures3.ts, 67, 36)) >r : Symbol(r, Decl(subtypingWithConstructSignatures3.ts, 67, 120)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 67, 21)) >U : Symbol(U, Decl(subtypingWithConstructSignatures3.ts, 67, 36)) var r3arg2: new (x: (arg: Base) => Derived, y: new (arg2: Base) => Derived) => new (r: Base) => Derived; >r3arg2 : Symbol(r3arg2, Decl(subtypingWithConstructSignatures3.ts, 68, 7)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 68, 21)) >arg : Symbol(arg, Decl(subtypingWithConstructSignatures3.ts, 68, 25)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >y : Symbol(y, Decl(subtypingWithConstructSignatures3.ts, 68, 47)) >arg2 : Symbol(arg2, Decl(subtypingWithConstructSignatures3.ts, 68, 56)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >r : Symbol(r, Decl(subtypingWithConstructSignatures3.ts, 68, 88)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) var r3 = foo8(r3arg1); // any >r3 : Symbol(r3, Decl(subtypingWithConstructSignatures3.ts, 69, 7)) >foo8 : Symbol(foo8, Decl(subtypingWithConstructSignatures3.ts, 13, 40), Decl(subtypingWithConstructSignatures3.ts, 15, 138)) >r3arg1 : Symbol(r3arg1, Decl(subtypingWithConstructSignatures3.ts, 67, 7)) var r3a = [r3arg2, r3arg1]; >r3a : Symbol(r3a, Decl(subtypingWithConstructSignatures3.ts, 70, 7)) >r3arg2 : Symbol(r3arg2, Decl(subtypingWithConstructSignatures3.ts, 68, 7)) >r3arg1 : Symbol(r3arg1, Decl(subtypingWithConstructSignatures3.ts, 67, 7)) var r3b = [r3arg1, r3arg2]; >r3b : Symbol(r3b, Decl(subtypingWithConstructSignatures3.ts, 71, 7)) >r3arg1 : Symbol(r3arg1, Decl(subtypingWithConstructSignatures3.ts, 67, 7)) >r3arg2 : Symbol(r3arg2, Decl(subtypingWithConstructSignatures3.ts, 68, 7)) var r4arg1: new (...x: T[]) => T; >r4arg1 : Symbol(r4arg1, Decl(subtypingWithConstructSignatures3.ts, 73, 7)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 73, 21)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 73, 40)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 73, 21)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 73, 21)) var r4arg2: new (...x: Base[]) => Base; >r4arg2 : Symbol(r4arg2, Decl(subtypingWithConstructSignatures3.ts, 74, 7)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 74, 21)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) var r4 = foo10(r4arg1); // any >r4 : Symbol(r4, Decl(subtypingWithConstructSignatures3.ts, 75, 7)) >foo10 : Symbol(foo10, Decl(subtypingWithConstructSignatures3.ts, 16, 40), Decl(subtypingWithConstructSignatures3.ts, 18, 70)) >r4arg1 : Symbol(r4arg1, Decl(subtypingWithConstructSignatures3.ts, 73, 7)) var r4a = [r4arg2, r4arg1]; >r4a : Symbol(r4a, Decl(subtypingWithConstructSignatures3.ts, 76, 7)) >r4arg2 : Symbol(r4arg2, Decl(subtypingWithConstructSignatures3.ts, 74, 7)) >r4arg1 : Symbol(r4arg1, Decl(subtypingWithConstructSignatures3.ts, 73, 7)) var r4b = [r4arg1, r4arg2]; >r4b : Symbol(r4b, Decl(subtypingWithConstructSignatures3.ts, 77, 7)) >r4arg1 : Symbol(r4arg1, Decl(subtypingWithConstructSignatures3.ts, 73, 7)) >r4arg2 : Symbol(r4arg2, Decl(subtypingWithConstructSignatures3.ts, 74, 7)) var r5arg1: new (x: T, y: T) => T; >r5arg1 : Symbol(r5arg1, Decl(subtypingWithConstructSignatures3.ts, 79, 7)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 79, 21)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 79, 40)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 79, 21)) >y : Symbol(y, Decl(subtypingWithConstructSignatures3.ts, 79, 45)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 79, 21)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 79, 21)) var r5arg2: new (x: { foo: string }, y: { foo: string; bar: string }) => Base; >r5arg2 : Symbol(r5arg2, Decl(subtypingWithConstructSignatures3.ts, 80, 7)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 80, 21)) >foo : Symbol(foo, Decl(subtypingWithConstructSignatures3.ts, 80, 25)) >y : Symbol(y, Decl(subtypingWithConstructSignatures3.ts, 80, 40)) >foo : Symbol(foo, Decl(subtypingWithConstructSignatures3.ts, 80, 45)) >bar : Symbol(bar, Decl(subtypingWithConstructSignatures3.ts, 80, 58)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) var r5 = foo11(r5arg1); // any >r5 : Symbol(r5, Decl(subtypingWithConstructSignatures3.ts, 81, 7)) >foo11 : Symbol(foo11, Decl(subtypingWithConstructSignatures3.ts, 19, 41), Decl(subtypingWithConstructSignatures3.ts, 21, 109)) >r5arg1 : Symbol(r5arg1, Decl(subtypingWithConstructSignatures3.ts, 79, 7)) var r5a = [r5arg2, r5arg1]; >r5a : Symbol(r5a, Decl(subtypingWithConstructSignatures3.ts, 82, 7)) >r5arg2 : Symbol(r5arg2, Decl(subtypingWithConstructSignatures3.ts, 80, 7)) >r5arg1 : Symbol(r5arg1, Decl(subtypingWithConstructSignatures3.ts, 79, 7)) var r5b = [r5arg1, r5arg2]; >r5b : Symbol(r5b, Decl(subtypingWithConstructSignatures3.ts, 83, 7)) >r5arg1 : Symbol(r5arg1, Decl(subtypingWithConstructSignatures3.ts, 79, 7)) >r5arg2 : Symbol(r5arg2, Decl(subtypingWithConstructSignatures3.ts, 80, 7)) var r6arg1: new (x: Array, y: Array) => Array; >r6arg1 : Symbol(r6arg1, Decl(subtypingWithConstructSignatures3.ts, 85, 7)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 85, 21)) >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >y : Symbol(y, Decl(subtypingWithConstructSignatures3.ts, 85, 36)) >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Derived2 : Symbol(Derived2, Decl(subtypingWithConstructSignatures3.ts, 5, 47)) >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) var r6arg2: new >(x: Array, y: Array) => T; >r6arg2 : Symbol(r6arg2, Decl(subtypingWithConstructSignatures3.ts, 86, 7)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 86, 21)) >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Derived2 : Symbol(Derived2, Decl(subtypingWithConstructSignatures3.ts, 5, 47)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 86, 48)) >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >y : Symbol(y, Decl(subtypingWithConstructSignatures3.ts, 86, 63)) >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 86, 21)) var r6 = foo12(r6arg1); // new (x: Array, y: Array) => Array >r6 : Symbol(r6, Decl(subtypingWithConstructSignatures3.ts, 87, 7)) >foo12 : Symbol(foo12, Decl(subtypingWithConstructSignatures3.ts, 22, 41), Decl(subtypingWithConstructSignatures3.ts, 24, 102)) >r6arg1 : Symbol(r6arg1, Decl(subtypingWithConstructSignatures3.ts, 85, 7)) var r6a = [r6arg2, r6arg1]; >r6a : Symbol(r6a, Decl(subtypingWithConstructSignatures3.ts, 88, 7)) >r6arg2 : Symbol(r6arg2, Decl(subtypingWithConstructSignatures3.ts, 86, 7)) >r6arg1 : Symbol(r6arg1, Decl(subtypingWithConstructSignatures3.ts, 85, 7)) var r6b = [r6arg1, r6arg2]; >r6b : Symbol(r6b, Decl(subtypingWithConstructSignatures3.ts, 89, 7)) >r6arg1 : Symbol(r6arg1, Decl(subtypingWithConstructSignatures3.ts, 85, 7)) >r6arg2 : Symbol(r6arg2, Decl(subtypingWithConstructSignatures3.ts, 86, 7)) var r7arg1: new (x: { a: T; b: T }) => T; >r7arg1 : Symbol(r7arg1, Decl(subtypingWithConstructSignatures3.ts, 91, 7)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 91, 21)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 91, 24)) >a : Symbol(a, Decl(subtypingWithConstructSignatures3.ts, 91, 28)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 91, 21)) >b : Symbol(b, Decl(subtypingWithConstructSignatures3.ts, 91, 34)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 91, 21)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 91, 21)) var r7arg2: new (x: { a: string; b: number }) => number; >r7arg2 : Symbol(r7arg2, Decl(subtypingWithConstructSignatures3.ts, 92, 7)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 92, 21)) >a : Symbol(a, Decl(subtypingWithConstructSignatures3.ts, 92, 25)) >b : Symbol(b, Decl(subtypingWithConstructSignatures3.ts, 92, 36)) var r7 = foo15(r7arg1); // (x: { a: string; b: number }) => number): number; >r7 : Symbol(r7, Decl(subtypingWithConstructSignatures3.ts, 93, 7)) >foo15 : Symbol(foo15, Decl(subtypingWithConstructSignatures3.ts, 25, 41), Decl(subtypingWithConstructSignatures3.ts, 27, 87)) >r7arg1 : Symbol(r7arg1, Decl(subtypingWithConstructSignatures3.ts, 91, 7)) var r7a = [r7arg2, r7arg1]; >r7a : Symbol(r7a, Decl(subtypingWithConstructSignatures3.ts, 94, 7)) >r7arg2 : Symbol(r7arg2, Decl(subtypingWithConstructSignatures3.ts, 92, 7)) >r7arg1 : Symbol(r7arg1, Decl(subtypingWithConstructSignatures3.ts, 91, 7)) var r7b = [r7arg1, r7arg2]; >r7b : Symbol(r7b, Decl(subtypingWithConstructSignatures3.ts, 95, 7)) >r7arg1 : Symbol(r7arg1, Decl(subtypingWithConstructSignatures3.ts, 91, 7)) >r7arg2 : Symbol(r7arg2, Decl(subtypingWithConstructSignatures3.ts, 92, 7)) var r7arg3: new (x: { a: T; b: T }) => number; >r7arg3 : Symbol(r7arg3, Decl(subtypingWithConstructSignatures3.ts, 97, 7)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 97, 21)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 97, 37)) >a : Symbol(a, Decl(subtypingWithConstructSignatures3.ts, 97, 41)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 97, 21)) >b : Symbol(b, Decl(subtypingWithConstructSignatures3.ts, 97, 47)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 97, 21)) var r7c = foo15(r7arg3); // any >r7c : Symbol(r7c, Decl(subtypingWithConstructSignatures3.ts, 98, 7)) >foo15 : Symbol(foo15, Decl(subtypingWithConstructSignatures3.ts, 25, 41), Decl(subtypingWithConstructSignatures3.ts, 27, 87)) >r7arg3 : Symbol(r7arg3, Decl(subtypingWithConstructSignatures3.ts, 97, 7)) var r7d = [r7arg2, r7arg3]; >r7d : Symbol(r7d, Decl(subtypingWithConstructSignatures3.ts, 99, 7)) >r7arg2 : Symbol(r7arg2, Decl(subtypingWithConstructSignatures3.ts, 92, 7)) >r7arg3 : Symbol(r7arg3, Decl(subtypingWithConstructSignatures3.ts, 97, 7)) var r7e = [r7arg3, r7arg2]; >r7e : Symbol(r7e, Decl(subtypingWithConstructSignatures3.ts, 100, 7)) >r7arg3 : Symbol(r7arg3, Decl(subtypingWithConstructSignatures3.ts, 97, 7)) >r7arg2 : Symbol(r7arg2, Decl(subtypingWithConstructSignatures3.ts, 92, 7)) var r8arg: new (x: new (a: T) => T) => T[]; >r8arg : Symbol(r8arg, Decl(subtypingWithConstructSignatures3.ts, 102, 7)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 102, 20)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 102, 23)) >a : Symbol(a, Decl(subtypingWithConstructSignatures3.ts, 102, 31)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 102, 20)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 102, 20)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 102, 20)) var r8 = foo16(r8arg); // any >r8 : Symbol(r8, Decl(subtypingWithConstructSignatures3.ts, 103, 7)) >foo16 : Symbol(foo16, Decl(subtypingWithConstructSignatures3.ts, 28, 41), Decl(subtypingWithConstructSignatures3.ts, 40, 18)) >r8arg : Symbol(r8arg, Decl(subtypingWithConstructSignatures3.ts, 102, 7)) var r9arg: new (x: new (a: T) => T) => any[]; >r9arg : Symbol(r9arg, Decl(subtypingWithConstructSignatures3.ts, 105, 7)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 105, 20)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 105, 23)) >a : Symbol(a, Decl(subtypingWithConstructSignatures3.ts, 105, 31)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 105, 20)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 105, 20)) var r9 = foo17(r9arg); // // (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; >r9 : Symbol(r9, Decl(subtypingWithConstructSignatures3.ts, 106, 7)) >foo17 : Symbol(foo17, Decl(subtypingWithConstructSignatures3.ts, 41, 41), Decl(subtypingWithConstructSignatures3.ts, 52, 18)) >r9arg : Symbol(r9arg, Decl(subtypingWithConstructSignatures3.ts, 105, 7)) } module WithGenericSignaturesInBaseType { >WithGenericSignaturesInBaseType : Symbol(WithGenericSignaturesInBaseType, Decl(subtypingWithConstructSignatures3.ts, 107, 1)) declare function foo2(a2: new (x: T) => T[]): typeof a2; >foo2 : Symbol(foo2, Decl(subtypingWithConstructSignatures3.ts, 109, 40), Decl(subtypingWithConstructSignatures3.ts, 110, 63)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 110, 26)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 110, 35)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 110, 38)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 110, 35)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 110, 35)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 110, 26)) declare function foo2(a2: any): any; >foo2 : Symbol(foo2, Decl(subtypingWithConstructSignatures3.ts, 109, 40), Decl(subtypingWithConstructSignatures3.ts, 110, 63)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 111, 26)) var r2arg2: new (x: T) => string[]; >r2arg2 : Symbol(r2arg2, Decl(subtypingWithConstructSignatures3.ts, 112, 7)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 112, 21)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 112, 24)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 112, 21)) var r2 = foo2(r2arg2); // (x:T) => T[] since we can infer from generic signatures now >r2 : Symbol(r2, Decl(subtypingWithConstructSignatures3.ts, 113, 7)) >foo2 : Symbol(foo2, Decl(subtypingWithConstructSignatures3.ts, 109, 40), Decl(subtypingWithConstructSignatures3.ts, 110, 63)) >r2arg2 : Symbol(r2arg2, Decl(subtypingWithConstructSignatures3.ts, 112, 7)) declare function foo3(a2: new (x: T) => string[]): typeof a2; >foo3 : Symbol(foo3, Decl(subtypingWithConstructSignatures3.ts, 113, 26), Decl(subtypingWithConstructSignatures3.ts, 115, 68)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 115, 26)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 115, 35)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 115, 38)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 115, 35)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 115, 26)) declare function foo3(a2: any): any; >foo3 : Symbol(foo3, Decl(subtypingWithConstructSignatures3.ts, 113, 26), Decl(subtypingWithConstructSignatures3.ts, 115, 68)) >a2 : Symbol(a2, Decl(subtypingWithConstructSignatures3.ts, 116, 26)) var r3arg2: new (x: T) => T[]; >r3arg2 : Symbol(r3arg2, Decl(subtypingWithConstructSignatures3.ts, 117, 7)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 117, 21)) >x : Symbol(x, Decl(subtypingWithConstructSignatures3.ts, 117, 24)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 117, 21)) >T : Symbol(T, Decl(subtypingWithConstructSignatures3.ts, 117, 21)) var r3 = foo3(r3arg2); // any >r3 : Symbol(r3, Decl(subtypingWithConstructSignatures3.ts, 118, 7)) >foo3 : Symbol(foo3, Decl(subtypingWithConstructSignatures3.ts, 113, 26), Decl(subtypingWithConstructSignatures3.ts, 115, 68)) >r3arg2 : Symbol(r3arg2, Decl(subtypingWithConstructSignatures3.ts, 117, 7)) }