subtypingWithConstructSignatures.ts(5,18): error TS2454: Variable 'rarg1' is used before being assigned.
subtypingWithConstructSignatures.ts(7,19): error TS2454: Variable 'rarg2' is used before being assigned.
subtypingWithConstructSignatures.ts(12,19): error TS2454: Variable 'r3arg1' is used before being assigned.
subtypingWithConstructSignatures.ts(14,19): error TS2454: Variable 'r4arg1' is used before being assigned.


==== subtypingWithConstructSignatures.ts (4 errors) ====
    namespace ConstructSignature {
        declare function foo1(cb: new (x: number) => void): typeof cb;
        declare function foo1(cb: any): any;
        var rarg1: new (x: number) => number;
        var r = foo1(rarg1); // ok because base returns void
                     ~~~~~
!!! error TS2454: Variable 'rarg1' is used before being assigned.
        var rarg2: new <T>(x: T) => string;
        var r2 = foo1(rarg2); // ok because base returns void
                      ~~~~~
!!! error TS2454: Variable 'rarg2' is used before being assigned.
    
        declare function foo2(cb: new (x: number, y: number) => void): typeof cb;
        declare function foo2(cb: any): any;
        var r3arg1: new (x: number, y: number) => number;
        var r3 = foo2(r3arg1); // ok because base returns void
                      ~~~~~~
!!! error TS2454: Variable 'r3arg1' is used before being assigned.
        var r4arg1: new <T>(x: T) => string;
        var r4 = foo2(r4arg1); // ok because base returns void
                      ~~~~~~
!!! error TS2454: Variable 'r4arg1' is used before being assigned.
    }