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

560 lines
33 KiB
Plaintext

=== 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<Base>, y: Array<Derived2>) => Array<Derived>): 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 <T extends Derived>(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 <T extends Base>(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 <T extends Derived2>(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 <T extends Base>(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 <T, U>(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 <T extends Base, U extends Derived, V extends Derived2>(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 <T extends Base, U extends Derived>(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 <T extends Derived>(...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 <T extends Derived>(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<Base>, y: Array<Derived2>) => Array<Derived>;
>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 <T extends Array<Derived2>>(x: Array<Base>, y: Array<Base>) => 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<Base>, y: Array<Derived2>) => Array<Derived>
>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 <T>(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 <T extends Base>(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 <T>(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 <T>(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: { <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(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 <T>(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 <T>(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); // <T>(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 <T>(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 <T>(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))
}