tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(164,21): error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(165,17): error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(166,25): error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(188,44): error TS4070: Parameter 'param' of public static method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(192,31): error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(196,28): error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(196,58): error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(196,87): error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(239,67): error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(248,82): error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(254,21): error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(255,17): error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(256,25): error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(259,44): error TS4070: Parameter 'param' of public static method from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(261,31): error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(263,28): error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(263,71): error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(263,113): error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(266,74): error TS4078: Parameter 'param' of exported function has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(268,89): error TS4078: Parameter 'param' of exported function has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(8,17): error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(9,13): error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(10,21): error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(32,40): error TS4070: Parameter 'param' of public static method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(36,27): error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(40,24): error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(40,54): error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(40,83): error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(83,63): error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(92,78): error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(98,17): error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(99,13): error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(100,21): error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(103,40): error TS4070: Parameter 'param' of public static method from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(105,27): error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(107,24): error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(107,67): error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(107,109): error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(110,70): error TS4078: Parameter 'param' of exported function has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(112,85): error TS4078: Parameter 'param' of exported function has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(140,21): error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(141,17): error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(142,25): error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(164,44): error TS4070: Parameter 'param' of public static method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(168,31): error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(172,28): error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(172,58): error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(172,87): error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(215,67): error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(224,82): error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(230,21): error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(231,17): error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(232,25): error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(235,44): error TS4070: Parameter 'param' of public static method from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(237,31): error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(239,28): error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(239,71): error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(239,113): error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(242,74): error TS4078: Parameter 'param' of exported function has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(244,89): error TS4078: Parameter 'param' of exported function has or is using private name 'privateModule'.


==== tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts (40 errors) ====
    class privateClass {
    }
    
    export class publicClass {
    }
    
    export interface publicInterfaceWithPrivateParmeterTypes {
        new (param: privateClass): publicClass; // Error
                    ~~~~~~~~~~~~
!!! error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateClass'.
        (param: privateClass): publicClass; // Error
                ~~~~~~~~~~~~
!!! error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateClass'.
        myMethod(param: privateClass): void; // Error
                        ~~~~~~~~~~~~
!!! error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateClass'.
    }
    
    export interface publicInterfaceWithPublicParmeterTypes {
        new (param: publicClass): publicClass;
        (param: publicClass): publicClass;
        myMethod(param: publicClass): void;
    }
    
    interface privateInterfaceWithPrivateParmeterTypes {
        new (param: privateClass): privateClass;
        (param: privateClass): privateClass;
        myMethod(param: privateClass): void;
    }
    
    interface privateInterfaceWithPublicParmeterTypes {
        new (param: publicClass): publicClass;
        (param: publicClass): publicClass;
        myMethod(param: publicClass): void;
    }
    
    export class publicClassWithWithPrivateParmeterTypes {
        static myPublicStaticMethod(param: privateClass) { // Error
                                           ~~~~~~~~~~~~
!!! error TS4070: Parameter 'param' of public static method from exported class has or is using private name 'privateClass'.
        }
        private static myPrivateStaticMethod(param: privateClass) {
        }
        myPublicMethod(param: privateClass) { // Error
                              ~~~~~~~~~~~~
!!! error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateClass'.
        }
        private myPrivateMethod(param: privateClass) {
        }
        constructor(param: privateClass, private param1: privateClass, public param2: privateClass) { // Error
                           ~~~~~~~~~~~~
!!! error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateClass'.
                                                         ~~~~~~~~~~~~
!!! error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateClass'.
                                                                                      ~~~~~~~~~~~~
!!! error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateClass'.
        }
    }
    
    export class publicClassWithWithPublicParmeterTypes {
        static myPublicStaticMethod(param: publicClass) {
        }
        private static myPrivateStaticMethod(param: publicClass) {
        }
        myPublicMethod(param: publicClass) {
        }
        private myPrivateMethod(param: publicClass) {
        }
        constructor(param: publicClass, private param1: publicClass, public param2: publicClass) {
        }
    }
    
    class privateClassWithWithPrivateParmeterTypes {
        static myPublicStaticMethod(param: privateClass) {
        }
        private static myPrivateStaticMethod(param: privateClass) {
        }
        myPublicMethod(param: privateClass) { 
        }
        private myPrivateMethod(param: privateClass) {
        }
        constructor(param: privateClass, private param1: privateClass, public param2: privateClass) {
        }
    }
    
    class privateClassWithWithPublicParmeterTypes {
        static myPublicStaticMethod(param: publicClass) {
        }
        private static myPrivateStaticMethod(param: publicClass) {
        }
        myPublicMethod(param: publicClass) {
        }
        private myPrivateMethod(param: publicClass) {
        }
        constructor(param: publicClass, private param1: publicClass, public param2: publicClass) {
        }
    }
    
    export function publicFunctionWithPrivateParmeterTypes(param: privateClass) { // Error
                                                                  ~~~~~~~~~~~~
!!! error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
    }
    export function publicFunctionWithPublicParmeterTypes(param: publicClass) {
    }
    function privateFunctionWithPrivateParmeterTypes(param: privateClass) {
    }
    function privateFunctionWithPublicParmeterTypes(param: publicClass) {
    }
    
    export declare function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void; // Error
                                                                                 ~~~~~~~~~~~~
!!! error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
    export declare function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
    declare function privateAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void;
    declare function privateAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
    
    export interface publicInterfaceWithPrivateModuleParameterTypes {
        new (param: privateModule.publicClass): publicClass; // Error
                    ~~~~~~~~~~~~~
!!! error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateModule'.
        (param: privateModule.publicClass): publicClass; // Error
                ~~~~~~~~~~~~~
!!! error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateModule'.
        myMethod(param: privateModule.publicClass): void; // Error
                        ~~~~~~~~~~~~~
!!! error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateModule'.
    }
    export class publicClassWithPrivateModuleParameterTypes {
        static myPublicStaticMethod(param: privateModule.publicClass) { // Error
                                           ~~~~~~~~~~~~~
!!! error TS4070: Parameter 'param' of public static method from exported class has or is using private name 'privateModule'.
        }
        myPublicMethod(param: privateModule.publicClass) { // Error
                              ~~~~~~~~~~~~~
!!! error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateModule'.
        }
        constructor(param: privateModule.publicClass, private param1: privateModule.publicClass, public param2: privateModule.publicClass) { // Error
                           ~~~~~~~~~~~~~
!!! error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateModule'.
                                                                      ~~~~~~~~~~~~~
!!! error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateModule'.
                                                                                                                ~~~~~~~~~~~~~
!!! error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateModule'.
        }
    }
    export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) { // Error
                                                                         ~~~~~~~~~~~~~
!!! error TS4078: Parameter 'param' of exported function has or is using private name 'privateModule'.
    }
    export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; // Error
                                                                                        ~~~~~~~~~~~~~
!!! error TS4078: Parameter 'param' of exported function has or is using private name 'privateModule'.
    
    interface privateInterfaceWithPrivateModuleParameterTypes {
        new (param: privateModule.publicClass): publicClass;
        (param: privateModule.publicClass): publicClass;
        myMethod(param: privateModule.publicClass): void;
    }
    class privateClassWithPrivateModuleParameterTypes {
        static myPublicStaticMethod(param: privateModule.publicClass) {
        }
        myPublicMethod(param: privateModule.publicClass) {
        }
        constructor(param: privateModule.publicClass, private param1: privateModule.publicClass, public param2: privateModule.publicClass) {
        }
    }
    function privateFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) {
    }
    declare function privateAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
    
    export module publicModule {
        class privateClass {
        }
    
        export class publicClass {
        }
    
    
        export interface publicInterfaceWithPrivateParmeterTypes {
            new (param: privateClass): publicClass; // Error
                        ~~~~~~~~~~~~
!!! error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateClass'.
            (param: privateClass): publicClass; // Error
                    ~~~~~~~~~~~~
!!! error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateClass'.
            myMethod(param: privateClass): void; // Error
                            ~~~~~~~~~~~~
!!! error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateClass'.
        }
    
        export interface publicInterfaceWithPublicParmeterTypes {
            new (param: publicClass): publicClass;
            (param: publicClass): publicClass;
            myMethod(param: publicClass): void;
        }
    
        interface privateInterfaceWithPrivateParmeterTypes {
            new (param: privateClass): privateClass;
            (param: privateClass): privateClass;
            myMethod(param: privateClass): void;
        }
    
        interface privateInterfaceWithPublicParmeterTypes {
            new (param: publicClass): publicClass;
            (param: publicClass): publicClass;
            myMethod(param: publicClass): void;
        }
    
        export class publicClassWithWithPrivateParmeterTypes {
            static myPublicStaticMethod(param: privateClass) { // Error
                                               ~~~~~~~~~~~~
!!! error TS4070: Parameter 'param' of public static method from exported class has or is using private name 'privateClass'.
            }
            private static myPrivateStaticMethod(param: privateClass) {
            }
            myPublicMethod(param: privateClass) { // Error
                                  ~~~~~~~~~~~~
!!! error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateClass'.
            }
            private myPrivateMethod(param: privateClass) {
            }
            constructor(param: privateClass, private param1: privateClass, public param2: privateClass) { // Error
                               ~~~~~~~~~~~~
!!! error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateClass'.
                                                             ~~~~~~~~~~~~
!!! error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateClass'.
                                                                                          ~~~~~~~~~~~~
!!! error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateClass'.
            }
        }
    
        export class publicClassWithWithPublicParmeterTypes {
            static myPublicStaticMethod(param: publicClass) {
            }
            private static myPrivateStaticMethod(param: publicClass) {
            }
            myPublicMethod(param: publicClass) {
            }
            private myPrivateMethod(param: publicClass) {
            }
            constructor(param: publicClass, private param1: publicClass, public param2: publicClass) {
            }
        }
    
        class privateClassWithWithPrivateParmeterTypes {
            static myPublicStaticMethod(param: privateClass) {
            }
            private static myPrivateStaticMethod(param: privateClass) {
            }
            myPublicMethod(param: privateClass) {
            }
            private myPrivateMethod(param: privateClass) {
            }
            constructor(param: privateClass, private param1: privateClass, public param2: privateClass) {
            }
        }
    
        class privateClassWithWithPublicParmeterTypes {
            static myPublicStaticMethod(param: publicClass) {
            }
            private static myPrivateStaticMethod(param: publicClass) {
            }
            myPublicMethod(param: publicClass) {
            }
            private myPrivateMethod(param: publicClass) {
            }
            constructor(param: publicClass, private param1: publicClass, public param2: publicClass) {
            }
        }
    
        export function publicFunctionWithPrivateParmeterTypes(param: privateClass) { // Error
                                                                      ~~~~~~~~~~~~
!!! error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
        }
        export function publicFunctionWithPublicParmeterTypes(param: publicClass) {
        }
        function privateFunctionWithPrivateParmeterTypes(param: privateClass) {
        }
        function privateFunctionWithPublicParmeterTypes(param: publicClass) {
        }
    
        export declare function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void; // Error
                                                                                     ~~~~~~~~~~~~
!!! error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
        export declare function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
        declare function privateAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void;
        declare function privateAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
    
        export interface publicInterfaceWithPrivateModuleParameterTypes {
            new (param: privateModule.publicClass): publicClass; // Error
                        ~~~~~~~~~~~~~
!!! error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateModule'.
            (param: privateModule.publicClass): publicClass; // Error
                    ~~~~~~~~~~~~~
!!! error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateModule'.
            myMethod(param: privateModule.publicClass): void; // Error
                            ~~~~~~~~~~~~~
!!! error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateModule'.
        }
        export class publicClassWithPrivateModuleParameterTypes {
            static myPublicStaticMethod(param: privateModule.publicClass) { // Error
                                               ~~~~~~~~~~~~~
!!! error TS4070: Parameter 'param' of public static method from exported class has or is using private name 'privateModule'.
            }
            myPublicMethod(param: privateModule.publicClass) { // Error
                                  ~~~~~~~~~~~~~
!!! error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateModule'.
            }
            constructor(param: privateModule.publicClass, private param1: privateModule.publicClass, public param2: privateModule.publicClass) { // Error
                               ~~~~~~~~~~~~~
!!! error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateModule'.
                                                                          ~~~~~~~~~~~~~
!!! error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateModule'.
                                                                                                                    ~~~~~~~~~~~~~
!!! error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateModule'.
            }
        }
        export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) { // Error
                                                                             ~~~~~~~~~~~~~
!!! error TS4078: Parameter 'param' of exported function has or is using private name 'privateModule'.
        }
        export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; // Error
                                                                                            ~~~~~~~~~~~~~
!!! error TS4078: Parameter 'param' of exported function has or is using private name 'privateModule'.
    
        interface privateInterfaceWithPrivateModuleParameterTypes {
            new (param: privateModule.publicClass): publicClass;
            (param: privateModule.publicClass): publicClass;
            myMethod(param: privateModule.publicClass): void;
        }
        class privateClassWithPrivateModuleParameterTypes {
            static myPublicStaticMethod(param: privateModule.publicClass) {
            }
            myPublicMethod(param: privateModule.publicClass) {
            }
            constructor(param: privateModule.publicClass, private param1: privateModule.publicClass, public param2: privateModule.publicClass) {
            }
        }
        function privateFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) {
        }
        declare function privateAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
    
    }
    
    module privateModule {
        class privateClass {
        }
    
        export class publicClass {
        }
    
        export interface publicInterfaceWithPrivateParmeterTypes {
            new (param: privateClass): publicClass;
            (param: privateClass): publicClass;
            myMethod(param: privateClass): void;
        }
    
        export interface publicInterfaceWithPublicParmeterTypes {
            new (param: publicClass): publicClass;
            (param: publicClass): publicClass;
            myMethod(param: publicClass): void;
        }
    
        interface privateInterfaceWithPrivateParmeterTypes {
            new (param: privateClass): privateClass;
            (param: privateClass): privateClass;
            myMethod(param: privateClass): void;
        }
    
        interface privateInterfaceWithPublicParmeterTypes {
            new (param: publicClass): publicClass;
            (param: publicClass): publicClass;
            myMethod(param: publicClass): void;
        }
    
        export class publicClassWithWithPrivateParmeterTypes {
            static myPublicStaticMethod(param: privateClass) {
            }
            private static myPrivateStaticMethod(param: privateClass) {
            }
            myPublicMethod(param: privateClass) {
            }
            private myPrivateMethod(param: privateClass) {
            }
            constructor(param: privateClass, private param1: privateClass, public param2: privateClass) {
            }
        }
    
        export class publicClassWithWithPublicParmeterTypes {
            static myPublicStaticMethod(param: publicClass) {
            }
            private static myPrivateStaticMethod(param: publicClass) {
            }
            myPublicMethod(param: publicClass) {
            }
            private myPrivateMethod(param: publicClass) {
            }
            constructor(param: publicClass, private param1: publicClass, public param2: publicClass) {
            }
        }
    
        class privateClassWithWithPrivateParmeterTypes {
            static myPublicStaticMethod(param: privateClass) {
            }
            private static myPrivateStaticMethod(param: privateClass) {
            }
            myPublicMethod(param: privateClass) {
            }
            private myPrivateMethod(param: privateClass) {
            }
            constructor(param: privateClass, private param1: privateClass, public param2: privateClass) {
            }
        }
    
        class privateClassWithWithPublicParmeterTypes {
            static myPublicStaticMethod(param: publicClass) {
            }
            private static myPrivateStaticMethod(param: publicClass) {
            }
            myPublicMethod(param: publicClass) {
            }
            private myPrivateMethod(param: publicClass) {
            }
            constructor(param: publicClass, private param1: publicClass, public param2: publicClass) {
            }
        }
    
        export function publicFunctionWithPrivateParmeterTypes(param: privateClass) {
        }
        export function publicFunctionWithPublicParmeterTypes(param: publicClass) {
        }
        function privateFunctionWithPrivateParmeterTypes(param: privateClass) {
        }
        function privateFunctionWithPublicParmeterTypes(param: publicClass) {
        }
    
        export declare function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void;
        export declare function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
        declare function privateAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void;
        declare function privateAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
    
        export interface publicInterfaceWithPrivateModuleParameterTypes {
            new (param: privateModule.publicClass): publicClass;
            (param: privateModule.publicClass): publicClass;
            myMethod(param: privateModule.publicClass): void;
        }
        export class publicClassWithPrivateModuleParameterTypes {
            static myPublicStaticMethod(param: privateModule.publicClass) {
            }
            myPublicMethod(param: privateModule.publicClass) {
            }
            constructor(param: privateModule.publicClass, private param1: privateModule.publicClass, public param2: privateModule.publicClass) {
            }
        }
        export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) {
        }
        export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
    
        interface privateInterfaceWithPrivateModuleParameterTypes {
            new (param: privateModule.publicClass): publicClass;
            (param: privateModule.publicClass): publicClass;
            myMethod(param: privateModule.publicClass): void;
        }
        class privateClassWithPrivateModuleParameterTypes {
            static myPublicStaticMethod(param: privateModule.publicClass) {
            }
            myPublicMethod(param: privateModule.publicClass) {
            }
            constructor(param: privateModule.publicClass, private param1: privateModule.publicClass, public param2: privateModule.publicClass) {
            }
        }
        function privateFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) {
        }
        declare function privateAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
    }
    
==== tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts (20 errors) ====
    class publicClassInGlobal {
    }
    interface publicInterfaceWithPublicParmeterTypesInGlobal {
        new (param: publicClassInGlobal): publicClassInGlobal;
        (param: publicClassInGlobal): publicClassInGlobal;
        myMethod(param: publicClassInGlobal): void;
    }
    class publicClassWithWithPublicParmeterTypesInGlobal {
        static myPublicStaticMethod(param: publicClassInGlobal) {
        }
        private static myPrivateStaticMethod(param: publicClassInGlobal) {
        }
        myPublicMethod(param: publicClassInGlobal) {
        }
        private myPrivateMethod(param: publicClassInGlobal) {
        }
        constructor(param: publicClassInGlobal, private param1: publicClassInGlobal, public param2: publicClassInGlobal) {
        }
    }
    function publicFunctionWithPublicParmeterTypesInGlobal(param: publicClassInGlobal) {
    }
    declare function publicAmbientFunctionWithPublicParmeterTypesInGlobal(param: publicClassInGlobal): void;
    
    module publicModuleInGlobal {
        class privateClass {
        }
    
        export class publicClass {
        }
    
        module privateModule {
            class privateClass {
            }
    
            export class publicClass {
            }
    
            export interface publicInterfaceWithPrivateParmeterTypes {
                new (param: privateClass): publicClass;
                (param: privateClass): publicClass;
                myMethod(param: privateClass): void;
            }
    
            export interface publicInterfaceWithPublicParmeterTypes {
                new (param: publicClass): publicClass;
                (param: publicClass): publicClass;
                myMethod(param: publicClass): void;
            }
    
            interface privateInterfaceWithPrivateParmeterTypes {
                new (param: privateClass): privateClass;
                (param: privateClass): privateClass;
                myMethod(param: privateClass): void;
            }
    
            interface privateInterfaceWithPublicParmeterTypes {
                new (param: publicClass): publicClass;
                (param: publicClass): publicClass;
                myMethod(param: publicClass): void;
            }
    
            export class publicClassWithWithPrivateParmeterTypes {
                static myPublicStaticMethod(param: privateClass) {
                }
                private static myPrivateStaticMethod(param: privateClass) {
                }
                myPublicMethod(param: privateClass) {
                }
                private myPrivateMethod(param: privateClass) {
                }
                constructor(param: privateClass, private param1: privateClass, public param2: privateClass) {
                }
            }
    
            export class publicClassWithWithPublicParmeterTypes {
                static myPublicStaticMethod(param: publicClass) {
                }
                private static myPrivateStaticMethod(param: publicClass) {
                }
                myPublicMethod(param: publicClass) {
                }
                private myPrivateMethod(param: publicClass) {
                }
                constructor(param: publicClass, private param1: publicClass, public param2: publicClass) {
                }
            }
    
            class privateClassWithWithPrivateParmeterTypes {
                static myPublicStaticMethod(param: privateClass) {
                }
                private static myPrivateStaticMethod(param: privateClass) {
                }
                myPublicMethod(param: privateClass) {
                }
                private myPrivateMethod(param: privateClass) {
                }
                constructor(param: privateClass, private param1: privateClass, public param2: privateClass) {
                }
            }
    
            class privateClassWithWithPublicParmeterTypes {
                static myPublicStaticMethod(param: publicClass) {
                }
                private static myPrivateStaticMethod(param: publicClass) {
                }
                myPublicMethod(param: publicClass) {
                }
                private myPrivateMethod(param: publicClass) {
                }
                constructor(param: publicClass, private param1: publicClass, public param2: publicClass) {
                }
            }
    
            export function publicFunctionWithPrivateParmeterTypes(param: privateClass) {
            }
            export function publicFunctionWithPublicParmeterTypes(param: publicClass) {
            }
            function privateFunctionWithPrivateParmeterTypes(param: privateClass) {
            }
            function privateFunctionWithPublicParmeterTypes(param: publicClass) {
            }
    
            export declare function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void;
            export declare function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
            declare function privateAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void;
            declare function privateAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
    
            export interface publicInterfaceWithPrivateModuleParameterTypes {
                new (param: privateModule.publicClass): publicClass;
                (param: privateModule.publicClass): publicClass;
                myMethod(param: privateModule.publicClass): void;
            }
            export class publicClassWithPrivateModuleParameterTypes {
                static myPublicStaticMethod(param: privateModule.publicClass) {
                }
                myPublicMethod(param: privateModule.publicClass) {
                }
                constructor(param: privateModule.publicClass, private param1: privateModule.publicClass, public param2: privateModule.publicClass) {
                }
            }
            export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) {
            }
            export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
    
            interface privateInterfaceWithPrivateModuleParameterTypes {
                new (param: privateModule.publicClass): publicClass;
                (param: privateModule.publicClass): publicClass;
                myMethod(param: privateModule.publicClass): void;
            }
            class privateClassWithPrivateModuleParameterTypes {
                static myPublicStaticMethod(param: privateModule.publicClass) {
                }
                myPublicMethod(param: privateModule.publicClass) {
                }
                constructor(param: privateModule.publicClass, private param1: privateModule.publicClass, public param2: privateModule.publicClass) {
                }
            }
            function privateFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) {
            }
            declare function privateAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
        }
    
        export interface publicInterfaceWithPrivateParmeterTypes {
            new (param: privateClass): publicClass; // Error
                        ~~~~~~~~~~~~
!!! error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateClass'.
            (param: privateClass): publicClass; // Error
                    ~~~~~~~~~~~~
!!! error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateClass'.
            myMethod(param: privateClass): void; // Error
                            ~~~~~~~~~~~~
!!! error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateClass'.
        }
    
        export interface publicInterfaceWithPublicParmeterTypes {
            new (param: publicClass): publicClass;
            (param: publicClass): publicClass;
            myMethod(param: publicClass): void;
        }
    
        interface privateInterfaceWithPrivateParmeterTypes {
            new (param: privateClass): privateClass;
            (param: privateClass): privateClass;
            myMethod(param: privateClass): void;
        }
    
        interface privateInterfaceWithPublicParmeterTypes {
            new (param: publicClass): publicClass;
            (param: publicClass): publicClass;
            myMethod(param: publicClass): void;
        }
    
        export class publicClassWithWithPrivateParmeterTypes {
            static myPublicStaticMethod(param: privateClass) { // Error
                                               ~~~~~~~~~~~~
!!! error TS4070: Parameter 'param' of public static method from exported class has or is using private name 'privateClass'.
            }
            private static myPrivateStaticMethod(param: privateClass) {
            }
            myPublicMethod(param: privateClass) { // Error
                                  ~~~~~~~~~~~~
!!! error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateClass'.
            }
            private myPrivateMethod(param: privateClass) {
            }
            constructor(param: privateClass, private param1: privateClass, public param2: privateClass) { // Error
                               ~~~~~~~~~~~~
!!! error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateClass'.
                                                             ~~~~~~~~~~~~
!!! error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateClass'.
                                                                                          ~~~~~~~~~~~~
!!! error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateClass'.
            }
        }
    
        export class publicClassWithWithPublicParmeterTypes {
            static myPublicStaticMethod(param: publicClass) {
            }
            private static myPrivateStaticMethod(param: publicClass) {
            }
            myPublicMethod(param: publicClass) {
            }
            private myPrivateMethod(param: publicClass) {
            }
            constructor(param: publicClass, private param1: publicClass, public param2: publicClass) {
            }
        }
    
        class privateClassWithWithPrivateParmeterTypes {
            static myPublicStaticMethod(param: privateClass) {
            }
            private static myPrivateStaticMethod(param: privateClass) {
            }
            myPublicMethod(param: privateClass) {
            }
            private myPrivateMethod(param: privateClass) {
            }
            constructor(param: privateClass, private param1: privateClass, public param2: privateClass) {
            }
        }
    
        class privateClassWithWithPublicParmeterTypes {
            static myPublicStaticMethod(param: publicClass) {
            }
            private static myPrivateStaticMethod(param: publicClass) {
            }
            myPublicMethod(param: publicClass) {
            }
            private myPrivateMethod(param: publicClass) {
            }
            constructor(param: publicClass, private param1: publicClass, public param2: publicClass) {
            }
        }
    
        export function publicFunctionWithPrivateParmeterTypes(param: privateClass) { // Error
                                                                      ~~~~~~~~~~~~
!!! error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
        }
        export function publicFunctionWithPublicParmeterTypes(param: publicClass) {
        }
        function privateFunctionWithPrivateParmeterTypes(param: privateClass) {
        }
        function privateFunctionWithPublicParmeterTypes(param: publicClass) {
        }
    
        export declare function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void; // Error
                                                                                     ~~~~~~~~~~~~
!!! error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
        export declare function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
        declare function privateAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void;
        declare function privateAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
    
        export interface publicInterfaceWithPrivateModuleParameterTypes {
            new (param: privateModule.publicClass): publicClass; // Error
                        ~~~~~~~~~~~~~
!!! error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateModule'.
            (param: privateModule.publicClass): publicClass; // Error
                    ~~~~~~~~~~~~~
!!! error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateModule'.
            myMethod(param: privateModule.publicClass): void; // Error
                            ~~~~~~~~~~~~~
!!! error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateModule'.
        }
        export class publicClassWithPrivateModuleParameterTypes {
            static myPublicStaticMethod(param: privateModule.publicClass) { // Error
                                               ~~~~~~~~~~~~~
!!! error TS4070: Parameter 'param' of public static method from exported class has or is using private name 'privateModule'.
            }
            myPublicMethod(param: privateModule.publicClass) { // Error
                                  ~~~~~~~~~~~~~
!!! error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateModule'.
            }
            constructor(param: privateModule.publicClass, private param1: privateModule.publicClass, public param2: privateModule.publicClass) { // Error
                               ~~~~~~~~~~~~~
!!! error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateModule'.
                                                                          ~~~~~~~~~~~~~
!!! error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateModule'.
                                                                                                                    ~~~~~~~~~~~~~
!!! error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateModule'.
            }
        }
        export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) { // Error
                                                                             ~~~~~~~~~~~~~
!!! error TS4078: Parameter 'param' of exported function has or is using private name 'privateModule'.
        }
        export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; // Error
                                                                                            ~~~~~~~~~~~~~
!!! error TS4078: Parameter 'param' of exported function has or is using private name 'privateModule'.
    
        interface privateInterfaceWithPrivateModuleParameterTypes {
            new (param: privateModule.publicClass): publicClass;
            (param: privateModule.publicClass): publicClass;
            myMethod(param: privateModule.publicClass): void;
        }
        class privateClassWithPrivateModuleParameterTypes {
            static myPublicStaticMethod(param: privateModule.publicClass) {
            }
            myPublicMethod(param: privateModule.publicClass) {
            }
            constructor(param: privateModule.publicClass, private param1: privateModule.publicClass, public param2: privateModule.publicClass) {
            }
        }
        function privateFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) {
        }
        declare function privateAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
    }