tests/cases/conformance/expressions/functionCalls/overloadResolutionConstructors.ts(27,9): error TS2769: No overload matches this call.
  Overload 1 of 2, '(s: string): string', gave the following error.
    Argument of type '{}' is not assignable to parameter of type 'string'.
  Overload 2 of 2, '(s: number): number', gave the following error.
    Argument of type '{}' is not assignable to parameter of type 'number'.
tests/cases/conformance/expressions/functionCalls/overloadResolutionConstructors.ts(43,15): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
tests/cases/conformance/expressions/functionCalls/overloadResolutionConstructors.ts(67,9): error TS2558: Expected 3 type arguments, but got 4.
tests/cases/conformance/expressions/functionCalls/overloadResolutionConstructors.ts(77,25): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
tests/cases/conformance/expressions/functionCalls/overloadResolutionConstructors.ts(78,25): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
tests/cases/conformance/expressions/functionCalls/overloadResolutionConstructors.ts(88,9): error TS2344: Type 'boolean' does not satisfy the constraint 'number'.
tests/cases/conformance/expressions/functionCalls/overloadResolutionConstructors.ts(91,9): error TS2769: No overload matches this call.
  Overload 1 of 2, '(n: string, m: any): any', gave the following error.
    Argument of type 'boolean' is not assignable to parameter of type 'string'.
  Overload 2 of 2, '(n: number, m: any): any', gave the following error.
    Argument of type 'boolean' is not assignable to parameter of type 'number'.
tests/cases/conformance/expressions/functionCalls/overloadResolutionConstructors.ts(92,15): error TS2769: No overload matches this call.
  Overload 1 of 2, '(n: any, m: number): any', gave the following error.
    Argument of type 'boolean' is not assignable to parameter of type 'number'.
  Overload 2 of 2, '(n: any, m: string): any', gave the following error.
    Argument of type 'boolean' is not assignable to parameter of type 'string'.
tests/cases/conformance/expressions/functionCalls/overloadResolutionConstructors.ts(100,5): error TS2403: Subsequent variable declarations must have the same type.  Variable 'n' must be of type 'number', but here has type 'string'.
tests/cases/conformance/expressions/functionCalls/overloadResolutionConstructors.ts(100,26): error TS2339: Property 'toFixed' does not exist on type 'string'.


==== tests/cases/conformance/expressions/functionCalls/overloadResolutionConstructors.ts (10 errors) ====
    class SomeBase {
        private n;
    
        public s: string;
    }
    class SomeDerived1 extends SomeBase {
        private m;
    }
    class SomeDerived2 extends SomeBase {
        private m;
    }
    class SomeDerived3 extends SomeBase {
        private m;
    }
    
    interface fn1 {
        new (s: string): string;
        new (s: number): number;
    }
    var fn1: fn1;
    
    // Ambiguous call picks the first overload in declaration order
    var s = new fn1(undefined);
    var s: string;
    
    // No candidate overloads found
    new fn1({}); // Error
            ~~
!!! error TS2769: No overload matches this call.
!!! error TS2769:   Overload 1 of 2, '(s: string): string', gave the following error.
!!! error TS2769:     Argument of type '{}' is not assignable to parameter of type 'string'.
!!! error TS2769:   Overload 2 of 2, '(s: number): number', gave the following error.
!!! error TS2769:     Argument of type '{}' is not assignable to parameter of type 'number'.
    
    // Generic and non - generic overload where generic overload is the only candidate when called with type arguments
    interface fn2 {
        new (s: string, n: number): number;
        new <T>(n: number, t: T): T;
    }
    var fn2: fn2;
    
    var d = new fn2<Date>(0, undefined);
    var d: Date;
    
    // Generic and non - generic overload where generic overload is the only candidate when called without type arguments
    var s = new fn2(0, '');
    
    // Generic and non - generic overload where non - generic overload is the only candidate when called with type arguments
    new fn2<Date>('', 0); // Error
                  ~~
!!! error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
    
    // Generic and non - generic overload where non - generic overload is the only candidate when called without type arguments
    new fn2('', 0); // OK
    
    // Generic overloads with differing arity called without type arguments
    interface fn3 {
        new<T>(n: T): string;
        new<T, U>(s: string, t: T, u: U): U;
        new<T, U, V>(v: V, u: U, t: T): number;
    }
    var fn3: fn3;
    
    var s = new fn3(3);
    var s = new fn3('', 3, '');
    var n = new fn3(5, 5, 5);
    var n: number;
    
    // Generic overloads with differing arity called with type arguments matching each overload type parameter count
    var s = new fn3<number>(4);
    var s = new fn3<string, string>('', '', '');
    var n = new fn3<number, string, string>('', '', 3);
    
    // Generic overloads with differing arity called with type argument count that doesn't match any overload
    new fn3<number, number, number, number>(); // Error
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2558: Expected 3 type arguments, but got 4.
    
    // Generic overloads with constraints called with type arguments that satisfy the constraints
    interface fn4 {
        new<T extends string, U extends number>(n: T, m: U);
        new<T extends number, U extends string>(n: T, m: U);
    }
    var fn4: fn4;
    
    new fn4<string, number>('', 3);
    new fn4<string, number>(3, ''); // Error
                            ~
!!! error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
    new fn4<number, string>('', 3); // Error
                            ~~
!!! error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
    new fn4<number, string>(3, ''); 
    
    // Generic overloads with constraints called without type arguments but with types that satisfy the constraints
    new fn4('', 3);
    new fn4(3, '');
    new fn4(3, undefined);
    new fn4('', null);
    
    // Generic overloads with constraints called with type arguments that do not satisfy the constraints
    new fn4<boolean, Date>(null, null); // Error
            ~~~~~~~
!!! error TS2344: Type 'boolean' does not satisfy the constraint 'number'.
    
    // Generic overloads with constraints called without type arguments but with types that do not satisfy the constraints
    new fn4(true, null); // Error
            ~~~~
!!! error TS2769: No overload matches this call.
!!! error TS2769:   Overload 1 of 2, '(n: string, m: any): any', gave the following error.
!!! error TS2769:     Argument of type 'boolean' is not assignable to parameter of type 'string'.
!!! error TS2769:   Overload 2 of 2, '(n: number, m: any): any', gave the following error.
!!! error TS2769:     Argument of type 'boolean' is not assignable to parameter of type 'number'.
    new fn4(null, true); // Error
                  ~~~~
!!! error TS2769: No overload matches this call.
!!! error TS2769:   Overload 1 of 2, '(n: any, m: number): any', gave the following error.
!!! error TS2769:     Argument of type 'boolean' is not assignable to parameter of type 'number'.
!!! error TS2769:   Overload 2 of 2, '(n: any, m: string): any', gave the following error.
!!! error TS2769:     Argument of type 'boolean' is not assignable to parameter of type 'string'.
    
    // Non - generic overloads where contextual typing of function arguments has errors
    interface fn5 {
        new(f: (n: string) => void): string;
        new(f: (n: number) => void): number;
    }
    var fn5: fn5;
    var n = new fn5((n) => n.toFixed());
        ~
!!! error TS2403: Subsequent variable declarations must have the same type.  Variable 'n' must be of type 'number', but here has type 'string'.
!!! related TS6203 tests/cases/conformance/expressions/functionCalls/overloadResolutionConstructors.ts:58:5: 'n' was also declared here.
                             ~~~~~~~
!!! error TS2339: Property 'toFixed' does not exist on type 'string'.
    var s = new fn5((n) => n.substr(0));
    