tests/cases/compiler/privacyClassImplementsClauseDeclFile_GlobalFile.ts(14,77): error TS4019: Implements clause of exported class 'publicClassImplementingPrivateInterfaceInModule' has or is using private name 'privateInterfaceInPublicModule'.
tests/cases/compiler/privacyClassImplementsClauseDeclFile_externalModule.ts(15,77): error TS4019: Implements clause of exported class 'publicClassImplementingPrivateInterfaceInModule' has or is using private name 'privateInterfaceInPublicModule'.
tests/cases/compiler/privacyClassImplementsClauseDeclFile_externalModule.ts(20,79): error TS4017: Implements clause of exported class 'publicClassImplementingFromPrivateModuleInterface' has or is using name 'privateModule.publicInterfaceInPrivateModule' from private module 'privateModule'.
tests/cases/compiler/privacyClassImplementsClauseDeclFile_externalModule.ts(23,78): error TS4019: Implements clause of exported class 'publicClassImplementingPrivateAndPublicInterface' has or is using private name 'privateInterfaceInPublicModule'.
tests/cases/compiler/privacyClassImplementsClauseDeclFile_externalModule.ts(63,65): error TS4019: Implements clause of exported class 'publicClassImplementingPrivateInterface' has or is using private name 'privateInterface'.
tests/cases/compiler/privacyClassImplementsClauseDeclFile_externalModule.ts(68,75): error TS4017: Implements clause of exported class 'publicClassImplementingFromPrivateModuleInterface' has or is using name 'privateModule.publicInterfaceInPrivateModule' from private module 'privateModule'.


==== tests/cases/compiler/privacyClassImplementsClauseDeclFile_externalModule.ts (5 errors) ====
    
    export module publicModule {
        export interface publicInterfaceInPublicModule {
        }
    
        interface privateInterfaceInPublicModule {
        }
    
        class privateClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
        }
        class privateClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule {
        }
        export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
        }
        export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule { // Should error
                                                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4019: Implements clause of exported class 'publicClassImplementingPrivateInterfaceInModule' has or is using private name 'privateInterfaceInPublicModule'.
        }
    
        class privateClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
        }
        export class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule { // Should error
                                                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4017: Implements clause of exported class 'publicClassImplementingFromPrivateModuleInterface' has or is using name 'privateModule.publicInterfaceInPrivateModule' from private module 'privateModule'.
        }
    
        export class publicClassImplementingPrivateAndPublicInterface implements privateInterfaceInPublicModule, publicInterfaceInPublicModule { // Should error
                                                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4019: Implements clause of exported class 'publicClassImplementingPrivateAndPublicInterface' has or is using private name 'privateInterfaceInPublicModule'.
        }
    }
    
    module privateModule {
        export interface publicInterfaceInPrivateModule {
    
        }
    
        interface privateInterfaceInPrivateModule {
        }
    
        class privateClassImplementingPublicInterfaceInModule implements publicInterfaceInPrivateModule {
        }
        class privateClassImplementingPrivateInterfaceInModule implements privateInterfaceInPrivateModule {
        }
        export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPrivateModule {
        }
        export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPrivateModule { 
        }
    
        class privateClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
        }
        export class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
        }
    }
    
    export interface publicInterface {
    
    }
    
    interface privateInterface {
    }
    
    class privateClassImplementingPublicInterface implements publicInterface {
    }
    class privateClassImplementingPrivateInterfaceInModule implements privateInterface {
    }
    export class publicClassImplementingPublicInterface implements publicInterface {
    }
    export class publicClassImplementingPrivateInterface implements privateInterface { // Should error
                                                                    ~~~~~~~~~~~~~~~~
!!! error TS4019: Implements clause of exported class 'publicClassImplementingPrivateInterface' has or is using private name 'privateInterface'.
    }
    
    class privateClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
    }
    export class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule { // Should error
                                                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4017: Implements clause of exported class 'publicClassImplementingFromPrivateModuleInterface' has or is using name 'privateModule.publicInterfaceInPrivateModule' from private module 'privateModule'.
    }
    
==== tests/cases/compiler/privacyClassImplementsClauseDeclFile_GlobalFile.ts (1 errors) ====
    module publicModuleInGlobal {
        export interface publicInterfaceInPublicModule {
        }
    
        interface privateInterfaceInPublicModule {
        }
    
        class privateClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
        }
        class privateClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule {
        }
        export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
        }
        export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule { // Should error
                                                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4019: Implements clause of exported class 'publicClassImplementingPrivateInterfaceInModule' has or is using private name 'privateInterfaceInPublicModule'.
        }
    }
    interface publicInterfaceInGlobal {
    }
    class publicClassImplementingPublicInterfaceInGlobal implements publicInterfaceInGlobal {
    }
    