==== tests/cases/compiler/privacyInterface.ts (22 errors) ====
    export module m1 {
        export class C1_public {
            private f1() {
            }
        }
    
    
        class C2_private {
        }
    
        export interface C3_public {
            (c1: C1_public);
            (c1: C2_private);
             ~~~~~~~~~~~~~~
!!! privacyInterface.ts(13,10): error TS2036: Parameter 'c1' of call signature from exported interface has or is using private type 'C2_private'.
            (): C1_public;
            (c2: number): C2_private;
                          ~~~~~~~~~~
!!! privacyInterface.ts(15,23): error TS2053: Return type of call signature from exported interface has or is using private type 'C2_private'.
    
            new (c1: C1_public);
            new (c1: C2_private);
                 ~~~~~~~~~~~~~~
!!! privacyInterface.ts(18,14): error TS2035: Parameter 'c1' of constructor signature from exported interface has or is using private type 'C2_private'.
            new (): C1_public;
            new (c2: number): C2_private;
                              ~~~~~~~~~~
!!! privacyInterface.ts(20,27): error TS2052: Return type of constructor signature from exported interface has or is using private type 'C2_private'.
    
            [c: number]: C1_public;
            [c: string]: C2_private;
                         ~~~~~~~~~~
!!! privacyInterface.ts(23,22): error TS2054: Return type of index signature from exported interface has or is using private type 'C2_private'.
    
            x: C1_public;
            y: C2_private;
            ~~~~~~~~~~~~~
!!! privacyInterface.ts(26,9): error TS2026: Property 'y' of exported interface has or is using private type 'C2_private'.
    
            a?: C1_public;
            b?: C2_private;
            ~~~~~~~~~~~~~~
!!! privacyInterface.ts(29,9): error TS2026: Property 'b' of exported interface has or is using private type 'C2_private'.
    
            f1(a1: C1_public);
            f2(a1: C2_private);
               ~~~~~~~~~~~~~~
!!! privacyInterface.ts(32,12): error TS2039: Parameter 'a1' of method from exported interface has or is using private type 'C2_private'.
            f3(): C1_public;
            f4(): C2_private;
                  ~~~~~~~~~~
!!! privacyInterface.ts(34,15): error TS2057: Return type of method from exported interface has or is using private type 'C2_private'.
    
        }
    
        interface C4_private {
            (c1: C1_public);
            (c1: C2_private);
            (): C1_public;
            (c2: number): C2_private;
    
            new (c1: C1_public);
            new (c1: C2_private);
            new (): C1_public;
            new (c2: number): C2_private;
    
            [c: number]: C1_public;
            [c: string]: C2_private;
    
            x: C1_public;
            y: C2_private;
    
            a?: C1_public;
            b?: C2_private;
    
            f1(a1: C1_public);
            f2(a1: C2_private);
            f3(): C1_public;
            f4(): C2_private;
    
        }
    }
    
    
    module m2 {
        export class C1_public {
            private f1() {
            }
        }
    
    
        class C2_private {
        }
    
        export interface C3_public {
            (c1: C1_public);
            (c1: C2_private);
            (): C1_public;
            (c2: number): C2_private;
    
            new (c1: C1_public);
            new (c1: C2_private);
            new (): C1_public;
            new (c2: number): C2_private;
    
            [c: number]: C1_public;
            [c: string]: C2_private;
    
            x: C1_public;
            y: C2_private;
    
            a?: C1_public;
            b?: C2_private;
    
            f1(a1: C1_public);
            f2(a1: C2_private);
            f3(): C1_public;
            f4(): C2_private;
    
        }
    
        interface C4_private {
            (c1: C1_public);
            (c1: C2_private);
            (): C1_public;
            (c2: number): C2_private;
    
            new (c1: C1_public);
            new (c1: C2_private);
            new (): C1_public;
            new (c2: number): C2_private;
    
            [c: number]: C1_public;
            [c: string]: C2_private;
    
            x: C1_public;
            y: C2_private;
    
            a?: C1_public;
            b?: C2_private;
    
            f1(a1: C1_public);
            f2(a1: C2_private);
            f3(): C1_public;
            f4(): C2_private;
    
        }
    }
    
    export class C5_public {
        private f1() {
        }
    }
    
    
    class C6_private {
    }
    
    export interface C7_public {
        (c1: C5_public);
        (c1: C6_private);
         ~~~~~~~~~~~~~~
!!! privacyInterface.ts(143,6): error TS2036: Parameter 'c1' of call signature from exported interface has or is using private type 'C6_private'.
        (): C5_public;
        (c2: number): C6_private;
                      ~~~~~~~~~~
!!! privacyInterface.ts(145,19): error TS2053: Return type of call signature from exported interface has or is using private type 'C6_private'.
    
        new (c1: C5_public);
        new (c1: C6_private);
             ~~~~~~~~~~~~~~
!!! privacyInterface.ts(148,10): error TS2035: Parameter 'c1' of constructor signature from exported interface has or is using private type 'C6_private'.
        new (): C5_public;
        new (c2: number): C6_private;
                          ~~~~~~~~~~
!!! privacyInterface.ts(150,23): error TS2052: Return type of constructor signature from exported interface has or is using private type 'C6_private'.
    
        [c: number]: C5_public;
        [c: string]: C6_private;
                     ~~~~~~~~~~
!!! privacyInterface.ts(153,18): error TS2054: Return type of index signature from exported interface has or is using private type 'C6_private'.
    
        x: C5_public;
        y: C6_private;
        ~~~~~~~~~~~~~
!!! privacyInterface.ts(156,5): error TS2026: Property 'y' of exported interface has or is using private type 'C6_private'.
    
        a?: C5_public;
        b?: C6_private;
        ~~~~~~~~~~~~~~
!!! privacyInterface.ts(159,5): error TS2026: Property 'b' of exported interface has or is using private type 'C6_private'.
    
        f1(a1: C5_public);
        f2(a1: C6_private);
           ~~~~~~~~~~~~~~
!!! privacyInterface.ts(162,8): error TS2039: Parameter 'a1' of method from exported interface has or is using private type 'C6_private'.
        f3(): C5_public;
        f4(): C6_private;
              ~~~~~~~~~~
!!! privacyInterface.ts(164,11): error TS2057: Return type of method from exported interface has or is using private type 'C6_private'.
    
    }
    
    interface C8_private {
        (c1: C5_public);
        (c1: C6_private);
        (): C5_public;
        (c2: number): C6_private;
    
        new (c1: C5_public);
        new (c1: C6_private);
        new (): C5_public;
        new (c2: number): C6_private;
    
        [c: number]: C5_public;
        [c: string]: C6_private;
    
        x: C5_public;
        y: C6_private;
    
        a?: C5_public;
        b?: C6_private;
    
        f1(a1: C5_public);
        f2(a1: C6_private);
        f3(): C5_public;
        f4(): C6_private;
    
    }
    
    export module m3 {
        export interface m3_i_public {
            f1(): number;
        }
    
        interface m3_i_private {
            f2(): string;
        }
    
        interface m3_C1_private extends m3_i_public {
        }
        interface m3_C2_private extends m3_i_private {
        }
        export interface m3_C3_public extends m3_i_public {
        }
        export interface m3_C4_public extends m3_i_private {
                                              ~~~~~~~~~~~~
!!! privacyInterface.ts(210,43): error TS2020: Exported interface 'm3_C4_public' extends private interface 'm3_i_private'.
        }
    
        interface m3_C5_private extends m3_i_private, m3_i_public {
        }
        export interface m3_C6_public extends  m3_i_private, m3_i_public {
                                               ~~~~~~~~~~~~
!!! privacyInterface.ts(215,44): error TS2020: Exported interface 'm3_C6_public' extends private interface 'm3_i_private'.
        }
    }
    
    
    module m4 {
        export interface m4_i_public {
            f1(): number;
        }
    
        interface m4_i_private {
            f2(): string;
        }
    
        interface m4_C1_private extends m4_i_public {
        }
        interface m4_C2_private extends m4_i_private {
        }
        export interface m4_C3_public extends m4_i_public {
        }
        export interface m4_C4_public extends m4_i_private {
        }
    
        interface m4_C5_private extends m4_i_private, m4_i_public {
        }
        export interface m4_C6_public extends  m4_i_private, m4_i_public {
        }
    }
    
    export interface glo_i_public {
        f1(): number;
    }
    
    interface glo_i_private {
        f2(): string;
    }
    
    interface glo_C1_private extends glo_i_public {
    }
    interface glo_C2_private extends glo_i_private {
    }
    export interface glo_C3_public extends glo_i_public {
    }
    export interface glo_C4_public extends glo_i_private {
                                           ~~~~~~~~~~~~~
!!! privacyInterface.ts(258,40): error TS2020: Exported interface 'glo_C4_public' extends private interface 'glo_i_private'.
    }
    
    interface glo_C5_private extends glo_i_private, glo_i_public {
    }
    export interface glo_C6_public extends  glo_i_private, glo_i_public {
                                            ~~~~~~~~~~~~~
!!! privacyInterface.ts(263,41): error TS2020: Exported interface 'glo_C6_public' extends private interface 'glo_i_private'.
    }