overloadBindingAcrossDeclarationBoundaries.ts(32,10): error TS2454: Variable 'a' is used before being assigned.
overloadBindingAcrossDeclarationBoundaries.ts(33,10): error TS2454: Variable 'a' is used before being assigned.
overloadBindingAcrossDeclarationBoundaries.ts(34,14): error TS2454: Variable 'a' is used before being assigned.


==== overloadBindingAcrossDeclarationBoundaries.ts (3 errors) ====
    interface Opt1 {
        p?: any;
    }
    interface Opt2 {
        q?: any;
    }
    interface Opt3 {
        r?: any;
    }
    interface Opt4 {
        s?: any;
    }
    interface A {
        a(o: Opt1): Opt1;
        a(o: Opt2): Opt2;
        (o: Opt1): Opt1;
        (o: Opt2): Opt2;
        new (o: Opt1): Opt1;
        new (o: Opt2): Opt2;
    }
    interface A {
        a(o: Opt3): Opt3;
        a(o: Opt4): Opt4;
        (o: Opt3): Opt3;
        (o: Opt4): Opt4;
        new (o: Opt3): Opt3;
        new (o: Opt4): Opt4;
    }
    
    var a: A;
    // These should all be Opt3
    var a1 = a.a({});
             ~
!!! error TS2454: Variable 'a' is used before being assigned.
    var a1 = a({});
             ~
!!! error TS2454: Variable 'a' is used before being assigned.
    var a1 = new a({});
                 ~
!!! error TS2454: Variable 'a' is used before being assigned.