=== tests/cases/compiler/privacyInterface.ts === export module m1 { >m1 : typeof m1 export class C1_public { >C1_public : C1_public private f1() { >f1 : () => void } } class C2_private { >C2_private : C2_private } export interface C3_public { >C3_public : C3_public (c1: C1_public); >c1 : C1_public >C1_public : C1_public (c1: C2_private); >c1 : C2_private >C2_private : C2_private (): C1_public; >C1_public : C1_public (c2: number): C2_private; >c2 : number >C2_private : C2_private new (c1: C1_public); >c1 : C1_public >C1_public : C1_public new (c1: C2_private); >c1 : C2_private >C2_private : C2_private new (): C1_public; >C1_public : C1_public new (c2: number): C2_private; >c2 : number >C2_private : C2_private [c: number]: C1_public; >c : number >C1_public : C1_public [c: string]: C2_private; >c : string >C2_private : C2_private x: C1_public; >x : C1_public >C1_public : C1_public y: C2_private; >y : C2_private >C2_private : C2_private a?: C1_public; >a : C1_public >C1_public : C1_public b?: C2_private; >b : C2_private >C2_private : C2_private f1(a1: C1_public); >f1 : (a1: C1_public) => any >a1 : C1_public >C1_public : C1_public f2(a1: C2_private); >f2 : (a1: C2_private) => any >a1 : C2_private >C2_private : C2_private f3(): C1_public; >f3 : () => C1_public >C1_public : C1_public f4(): C2_private; >f4 : () => C2_private >C2_private : C2_private } interface C4_private { >C4_private : C4_private (c1: C1_public); >c1 : C1_public >C1_public : C1_public (c1: C2_private); >c1 : C2_private >C2_private : C2_private (): C1_public; >C1_public : C1_public (c2: number): C2_private; >c2 : number >C2_private : C2_private new (c1: C1_public); >c1 : C1_public >C1_public : C1_public new (c1: C2_private); >c1 : C2_private >C2_private : C2_private new (): C1_public; >C1_public : C1_public new (c2: number): C2_private; >c2 : number >C2_private : C2_private [c: number]: C1_public; >c : number >C1_public : C1_public [c: string]: C2_private; >c : string >C2_private : C2_private x: C1_public; >x : C1_public >C1_public : C1_public y: C2_private; >y : C2_private >C2_private : C2_private a?: C1_public; >a : C1_public >C1_public : C1_public b?: C2_private; >b : C2_private >C2_private : C2_private f1(a1: C1_public); >f1 : (a1: C1_public) => any >a1 : C1_public >C1_public : C1_public f2(a1: C2_private); >f2 : (a1: C2_private) => any >a1 : C2_private >C2_private : C2_private f3(): C1_public; >f3 : () => C1_public >C1_public : C1_public f4(): C2_private; >f4 : () => C2_private >C2_private : C2_private } } module m2 { >m2 : typeof m2 export class C1_public { >C1_public : C1_public private f1() { >f1 : () => void } } class C2_private { >C2_private : C2_private } export interface C3_public { >C3_public : C3_public (c1: C1_public); >c1 : C1_public >C1_public : C1_public (c1: C2_private); >c1 : C2_private >C2_private : C2_private (): C1_public; >C1_public : C1_public (c2: number): C2_private; >c2 : number >C2_private : C2_private new (c1: C1_public); >c1 : C1_public >C1_public : C1_public new (c1: C2_private); >c1 : C2_private >C2_private : C2_private new (): C1_public; >C1_public : C1_public new (c2: number): C2_private; >c2 : number >C2_private : C2_private [c: number]: C1_public; >c : number >C1_public : C1_public [c: string]: C2_private; >c : string >C2_private : C2_private x: C1_public; >x : C1_public >C1_public : C1_public y: C2_private; >y : C2_private >C2_private : C2_private a?: C1_public; >a : C1_public >C1_public : C1_public b?: C2_private; >b : C2_private >C2_private : C2_private f1(a1: C1_public); >f1 : (a1: C1_public) => any >a1 : C1_public >C1_public : C1_public f2(a1: C2_private); >f2 : (a1: C2_private) => any >a1 : C2_private >C2_private : C2_private f3(): C1_public; >f3 : () => C1_public >C1_public : C1_public f4(): C2_private; >f4 : () => C2_private >C2_private : C2_private } interface C4_private { >C4_private : C4_private (c1: C1_public); >c1 : C1_public >C1_public : C1_public (c1: C2_private); >c1 : C2_private >C2_private : C2_private (): C1_public; >C1_public : C1_public (c2: number): C2_private; >c2 : number >C2_private : C2_private new (c1: C1_public); >c1 : C1_public >C1_public : C1_public new (c1: C2_private); >c1 : C2_private >C2_private : C2_private new (): C1_public; >C1_public : C1_public new (c2: number): C2_private; >c2 : number >C2_private : C2_private [c: number]: C1_public; >c : number >C1_public : C1_public [c: string]: C2_private; >c : string >C2_private : C2_private x: C1_public; >x : C1_public >C1_public : C1_public y: C2_private; >y : C2_private >C2_private : C2_private a?: C1_public; >a : C1_public >C1_public : C1_public b?: C2_private; >b : C2_private >C2_private : C2_private f1(a1: C1_public); >f1 : (a1: C1_public) => any >a1 : C1_public >C1_public : C1_public f2(a1: C2_private); >f2 : (a1: C2_private) => any >a1 : C2_private >C2_private : C2_private f3(): C1_public; >f3 : () => C1_public >C1_public : C1_public f4(): C2_private; >f4 : () => C2_private >C2_private : C2_private } } export class C5_public { >C5_public : C5_public private f1() { >f1 : () => void } } class C6_private { >C6_private : C6_private } export interface C7_public { >C7_public : C7_public (c1: C5_public); >c1 : C5_public >C5_public : C5_public (c1: C6_private); >c1 : C6_private >C6_private : C6_private (): C5_public; >C5_public : C5_public (c2: number): C6_private; >c2 : number >C6_private : C6_private new (c1: C5_public); >c1 : C5_public >C5_public : C5_public new (c1: C6_private); >c1 : C6_private >C6_private : C6_private new (): C5_public; >C5_public : C5_public new (c2: number): C6_private; >c2 : number >C6_private : C6_private [c: number]: C5_public; >c : number >C5_public : C5_public [c: string]: C6_private; >c : string >C6_private : C6_private x: C5_public; >x : C5_public >C5_public : C5_public y: C6_private; >y : C6_private >C6_private : C6_private a?: C5_public; >a : C5_public >C5_public : C5_public b?: C6_private; >b : C6_private >C6_private : C6_private f1(a1: C5_public); >f1 : (a1: C5_public) => any >a1 : C5_public >C5_public : C5_public f2(a1: C6_private); >f2 : (a1: C6_private) => any >a1 : C6_private >C6_private : C6_private f3(): C5_public; >f3 : () => C5_public >C5_public : C5_public f4(): C6_private; >f4 : () => C6_private >C6_private : C6_private } interface C8_private { >C8_private : C8_private (c1: C5_public); >c1 : C5_public >C5_public : C5_public (c1: C6_private); >c1 : C6_private >C6_private : C6_private (): C5_public; >C5_public : C5_public (c2: number): C6_private; >c2 : number >C6_private : C6_private new (c1: C5_public); >c1 : C5_public >C5_public : C5_public new (c1: C6_private); >c1 : C6_private >C6_private : C6_private new (): C5_public; >C5_public : C5_public new (c2: number): C6_private; >c2 : number >C6_private : C6_private [c: number]: C5_public; >c : number >C5_public : C5_public [c: string]: C6_private; >c : string >C6_private : C6_private x: C5_public; >x : C5_public >C5_public : C5_public y: C6_private; >y : C6_private >C6_private : C6_private a?: C5_public; >a : C5_public >C5_public : C5_public b?: C6_private; >b : C6_private >C6_private : C6_private f1(a1: C5_public); >f1 : (a1: C5_public) => any >a1 : C5_public >C5_public : C5_public f2(a1: C6_private); >f2 : (a1: C6_private) => any >a1 : C6_private >C6_private : C6_private f3(): C5_public; >f3 : () => C5_public >C5_public : C5_public f4(): C6_private; >f4 : () => C6_private >C6_private : C6_private } export module m3 { >m3 : any export interface m3_i_public { >m3_i_public : m3_i_public f1(): number; >f1 : () => number } interface m3_i_private { >m3_i_private : m3_i_private f2(): string; >f2 : () => string } interface m3_C1_private extends m3_i_public { >m3_C1_private : m3_C1_private >m3_i_public : m3_i_public } interface m3_C2_private extends m3_i_private { >m3_C2_private : m3_C2_private >m3_i_private : m3_i_private } export interface m3_C3_public extends m3_i_public { >m3_C3_public : m3_C3_public >m3_i_public : m3_i_public } export interface m3_C4_public extends m3_i_private { >m3_C4_public : m3_C4_public >m3_i_private : m3_i_private } interface m3_C5_private extends m3_i_private, m3_i_public { >m3_C5_private : m3_C5_private >m3_i_private : m3_i_private >m3_i_public : m3_i_public } export interface m3_C6_public extends m3_i_private, m3_i_public { >m3_C6_public : m3_C6_public >m3_i_private : m3_i_private >m3_i_public : m3_i_public } } module m4 { >m4 : any export interface m4_i_public { >m4_i_public : m4_i_public f1(): number; >f1 : () => number } interface m4_i_private { >m4_i_private : m4_i_private f2(): string; >f2 : () => string } interface m4_C1_private extends m4_i_public { >m4_C1_private : m4_C1_private >m4_i_public : m4_i_public } interface m4_C2_private extends m4_i_private { >m4_C2_private : m4_C2_private >m4_i_private : m4_i_private } export interface m4_C3_public extends m4_i_public { >m4_C3_public : m4_C3_public >m4_i_public : m4_i_public } export interface m4_C4_public extends m4_i_private { >m4_C4_public : m4_C4_public >m4_i_private : m4_i_private } interface m4_C5_private extends m4_i_private, m4_i_public { >m4_C5_private : m4_C5_private >m4_i_private : m4_i_private >m4_i_public : m4_i_public } export interface m4_C6_public extends m4_i_private, m4_i_public { >m4_C6_public : m4_C6_public >m4_i_private : m4_i_private >m4_i_public : m4_i_public } } export interface glo_i_public { >glo_i_public : glo_i_public f1(): number; >f1 : () => number } interface glo_i_private { >glo_i_private : glo_i_private f2(): string; >f2 : () => string } interface glo_C1_private extends glo_i_public { >glo_C1_private : glo_C1_private >glo_i_public : glo_i_public } interface glo_C2_private extends glo_i_private { >glo_C2_private : glo_C2_private >glo_i_private : glo_i_private } export interface glo_C3_public extends glo_i_public { >glo_C3_public : glo_C3_public >glo_i_public : glo_i_public } export interface glo_C4_public extends glo_i_private { >glo_C4_public : glo_C4_public >glo_i_private : glo_i_private } interface glo_C5_private extends glo_i_private, glo_i_public { >glo_C5_private : glo_C5_private >glo_i_private : glo_i_private >glo_i_public : glo_i_public } export interface glo_C6_public extends glo_i_private, glo_i_public { >glo_C6_public : glo_C6_public >glo_i_private : glo_i_private >glo_i_public : glo_i_public }