tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(164,14): error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(165,10): error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(166,18): error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(188,37): 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,24): error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(196,21): error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(196,42): error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(196,72): error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(239,60): error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(248,75): error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(254,14): error TS4064: Parameter 'param' of constructor signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(255,10): error TS4066: Parameter 'param' of call signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(256,18): error TS4074: Parameter 'param' of method from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(259,37): error TS4069: Parameter 'param' of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(261,24): error TS4072: Parameter 'param' of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(263,21): error TS4062: Parameter 'param' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(263,55): error TS4062: Parameter 'param1' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(263,98): error TS4062: Parameter 'param2' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(266,67): error TS4077: Parameter 'param' of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.ts(268,82): error TS4077: Parameter 'param' of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(9,10): error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(10,6): error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(11,14): error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(33,33): error TS4070: Parameter 'param' of public static method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(37,20): error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(41,17): error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(41,38): error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(41,68): error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(84,56): error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(93,71): error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(99,10): error TS4064: Parameter 'param' of constructor signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(100,6): error TS4066: Parameter 'param' of call signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(101,14): error TS4074: Parameter 'param' of method from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(104,33): error TS4069: Parameter 'param' of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(106,20): error TS4072: Parameter 'param' of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(108,17): error TS4062: Parameter 'param' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(108,51): error TS4062: Parameter 'param1' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(108,94): error TS4062: Parameter 'param2' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(111,63): error TS4077: Parameter 'param' of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(113,78): error TS4077: Parameter 'param' of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(141,14): error TS4065: Parameter 'param' of constructor signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(142,10): error TS4067: Parameter 'param' of call signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(143,18): error TS4075: Parameter 'param' of method from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(165,37): error TS4070: Parameter 'param' of public static method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(169,24): error TS4073: Parameter 'param' of public method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(173,21): error TS4063: Parameter 'param' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(173,42): error TS4063: Parameter 'param1' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(173,72): error TS4063: Parameter 'param2' of constructor from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(216,60): error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(225,75): error TS4078: Parameter 'param' of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(231,14): error TS4064: Parameter 'param' of constructor signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(232,10): error TS4066: Parameter 'param' of call signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(233,18): error TS4074: Parameter 'param' of method from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(236,37): error TS4069: Parameter 'param' of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(238,24): error TS4072: Parameter 'param' of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(240,21): error TS4062: Parameter 'param' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(240,55): error TS4062: Parameter 'param1' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(240,98): error TS4062: Parameter 'param2' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(243,67): error TS4077: Parameter 'param' of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.ts(245,82): error TS4077: Parameter 'param' of exported function has or is using name 'privateModule.publicClass' from private module '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 TS4064: Parameter 'param' of constructor signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
        (param: privateModule.publicClass): publicClass; // Error
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4066: Parameter 'param' of call signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
        myMethod(param: privateModule.publicClass): void; // Error
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4074: Parameter 'param' of method from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
    }
    export class publicClassWithPrivateModuleParameterTypes {
        static myPublicStaticMethod(param: privateModule.publicClass) { // Error
                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4069: Parameter 'param' of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
        }
        myPublicMethod(param: privateModule.publicClass) { // Error
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4072: Parameter 'param' of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
        }
        constructor(param: privateModule.publicClass, private param1: privateModule.publicClass, public param2: privateModule.publicClass) { // Error
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4062: Parameter 'param' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
                                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4062: Parameter 'param1' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
                                                                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4062: Parameter 'param2' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
        }
    }
    export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) { // Error
                                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4077: Parameter 'param' of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'.
    }
    export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; // Error
                                                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4077: Parameter 'param' of exported function has or is using name 'privateModule.publicClass' from private module '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 TS4064: Parameter 'param' of constructor signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
            (param: privateModule.publicClass): publicClass; // Error
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4066: Parameter 'param' of call signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
            myMethod(param: privateModule.publicClass): void; // Error
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4074: Parameter 'param' of method from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
        }
        export class publicClassWithPrivateModuleParameterTypes {
            static myPublicStaticMethod(param: privateModule.publicClass) { // Error
                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4069: Parameter 'param' of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
            }
            myPublicMethod(param: privateModule.publicClass) { // Error
                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4072: Parameter 'param' of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
            }
            constructor(param: privateModule.publicClass, private param1: privateModule.publicClass, public param2: privateModule.publicClass) { // Error
                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4062: Parameter 'param' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
                                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4062: Parameter 'param1' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
                                                                                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4062: Parameter 'param2' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
            }
        }
        export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) { // Error
                                                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4077: Parameter 'param' of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'.
        }
        export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; // Error
                                                                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4077: Parameter 'param' of exported function has or is using name 'privateModule.publicClass' from private module '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 TS4064: Parameter 'param' of constructor signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
            (param: privateModule.publicClass): publicClass; // Error
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4066: Parameter 'param' of call signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
            myMethod(param: privateModule.publicClass): void; // Error
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4074: Parameter 'param' of method from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'.
        }
        export class publicClassWithPrivateModuleParameterTypes {
            static myPublicStaticMethod(param: privateModule.publicClass) { // Error
                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4069: Parameter 'param' of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
            }
            myPublicMethod(param: privateModule.publicClass) { // Error
                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4072: Parameter 'param' of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
            }
            constructor(param: privateModule.publicClass, private param1: privateModule.publicClass, public param2: privateModule.publicClass) { // Error
                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4062: Parameter 'param' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
                                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4062: Parameter 'param1' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
                                                                                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4062: Parameter 'param2' of constructor from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
            }
        }
        export function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass) { // Error
                                                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4077: Parameter 'param' of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'.
        }
        export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void; // Error
                                                                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4077: Parameter 'param' of exported function has or is using name 'privateModule.publicClass' from private module '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;
    }