==== tests/cases/compiler/privacyVarDeclFile_externalModule.ts (20 errors) ==== class privateClass { } export class publicClass { } export interface publicInterfaceWithPrivatePropertyTypes { myProperty: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Property 'myProperty' of exported interface has or is using private name 'privateClass'. } export interface publicInterfaceWithPublicPropertyTypes { myProperty: publicClass; } interface privateInterfaceWithPrivatePropertyTypes { myProperty: privateClass; } interface privateInterfaceWithPublicPropertyTypes { myProperty: publicClass; } export class publicClassWithWithPrivatePropertyTypes { static myPublicStaticProperty: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Public static property 'myPublicStaticProperty' of exported class has or is using private name 'privateClass'. private static myPrivateStaticProperty: privateClass; myPublicProperty: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Public property 'myPublicProperty' of exported class has or is using private name 'privateClass'. private myPrivateProperty: privateClass; } export class publicClassWithWithPublicPropertyTypes { static myPublicStaticProperty: publicClass; private static myPrivateStaticProperty: publicClass; myPublicProperty: publicClass; private myPrivateProperty: publicClass; } class privateClassWithWithPrivatePropertyTypes { static myPublicStaticProperty: privateClass; private static myPrivateStaticProperty: privateClass; myPublicProperty: privateClass; private myPrivateProperty: privateClass; } class privateClassWithWithPublicPropertyTypes { static myPublicStaticProperty: publicClass; private static myPrivateStaticProperty: publicClass; myPublicProperty: publicClass; private myPrivateProperty: publicClass; } export var publicVarWithPrivatePropertyTypes: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Exported variable 'publicVarWithPrivatePropertyTypes' has or is using private name 'privateClass'. export var publicVarWithPublicPropertyTypes: publicClass; var privateVarWithPrivatePropertyTypes: privateClass; var privateVarWithPublicPropertyTypes: publicClass; export declare var publicAmbientVarWithPrivatePropertyTypes: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Exported variable 'publicAmbientVarWithPrivatePropertyTypes' has or is using private name 'privateClass'. export declare var publicAmbientVarWithPublicPropertyTypes: publicClass; declare var privateAmbientVarWithPrivatePropertyTypes: privateClass; declare var privateAmbientVarWithPublicPropertyTypes: publicClass; export interface publicInterfaceWithPrivateModulePropertyTypes { myProperty: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Property 'myProperty' of exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. } export class publicClassWithPrivateModulePropertyTypes { static myPublicStaticProperty: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Public static property 'myPublicStaticProperty' of exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. myPublicProperty: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Public property 'myPublicProperty' of exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. } export var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Exported variable 'publicVarWithPrivateModulePropertyTypes' has or is using name 'privateModule.publicClass' from private module 'privateModule'. export declare var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Exported variable 'publicAmbientVarWithPrivateModulePropertyTypes' has or is using name 'privateModule.publicClass' from private module 'privateModule'. interface privateInterfaceWithPrivateModulePropertyTypes { myProperty: privateModule.publicClass; } class privateClassWithPrivateModulePropertyTypes { static myPublicStaticProperty: privateModule.publicClass; myPublicProperty: privateModule.publicClass; } var privateVarWithPrivateModulePropertyTypes: privateModule.publicClass; declare var privateAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; export module publicModule { class privateClass { } export class publicClass { } export interface publicInterfaceWithPrivatePropertyTypes { myProperty: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Property 'myProperty' of exported interface has or is using private name 'privateClass'. } export interface publicInterfaceWithPublicPropertyTypes { myProperty: publicClass; } interface privateInterfaceWithPrivatePropertyTypes { myProperty: privateClass; } interface privateInterfaceWithPublicPropertyTypes { myProperty: publicClass; } export class publicClassWithWithPrivatePropertyTypes { static myPublicStaticProperty: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Public static property 'myPublicStaticProperty' of exported class has or is using private name 'privateClass'. private static myPrivateStaticProperty: privateClass; myPublicProperty: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Public property 'myPublicProperty' of exported class has or is using private name 'privateClass'. private myPrivateProperty: privateClass; } export class publicClassWithWithPublicPropertyTypes { static myPublicStaticProperty: publicClass; private static myPrivateStaticProperty: publicClass; myPublicProperty: publicClass; private myPrivateProperty: publicClass; } class privateClassWithWithPrivatePropertyTypes { static myPublicStaticProperty: privateClass; private static myPrivateStaticProperty: privateClass; myPublicProperty: privateClass; private myPrivateProperty: privateClass; } class privateClassWithWithPublicPropertyTypes { static myPublicStaticProperty: publicClass; private static myPrivateStaticProperty: publicClass; myPublicProperty: publicClass; private myPrivateProperty: publicClass; } export var publicVarWithPrivatePropertyTypes: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Exported variable 'publicVarWithPrivatePropertyTypes' has or is using private name 'privateClass'. export var publicVarWithPublicPropertyTypes: publicClass; var privateVarWithPrivatePropertyTypes: privateClass; var privateVarWithPublicPropertyTypes: publicClass; export declare var publicAmbientVarWithPrivatePropertyTypes: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Exported variable 'publicAmbientVarWithPrivatePropertyTypes' has or is using private name 'privateClass'. export declare var publicAmbientVarWithPublicPropertyTypes: publicClass; declare var privateAmbientVarWithPrivatePropertyTypes: privateClass; declare var privateAmbientVarWithPublicPropertyTypes: publicClass; export interface publicInterfaceWithPrivateModulePropertyTypes { myProperty: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Property 'myProperty' of exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. } export class publicClassWithPrivateModulePropertyTypes { static myPublicStaticProperty: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Public static property 'myPublicStaticProperty' of exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. myPublicProperty: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Public property 'myPublicProperty' of exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. } export var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Exported variable 'publicVarWithPrivateModulePropertyTypes' has or is using name 'privateModule.publicClass' from private module 'privateModule'. export declare var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Exported variable 'publicAmbientVarWithPrivateModulePropertyTypes' has or is using name 'privateModule.publicClass' from private module 'privateModule'. interface privateInterfaceWithPrivateModulePropertyTypes { myProperty: privateModule.publicClass; } class privateClassWithPrivateModulePropertyTypes { static myPublicStaticProperty: privateModule.publicClass; myPublicProperty: privateModule.publicClass; } var privateVarWithPrivateModulePropertyTypes: privateModule.publicClass; declare var privateAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; } module privateModule { class privateClass { } export class publicClass { } export interface publicInterfaceWithPrivatePropertyTypes { myProperty: privateClass; } export interface publicInterfaceWithPublicPropertyTypes { myProperty: publicClass; } interface privateInterfaceWithPrivatePropertyTypes { myProperty: privateClass; } interface privateInterfaceWithPublicPropertyTypes { myProperty: publicClass; } export class publicClassWithWithPrivatePropertyTypes { static myPublicStaticProperty: privateClass; private static myPrivateStaticProperty: privateClass; myPublicProperty: privateClass; private myPrivateProperty: privateClass; } export class publicClassWithWithPublicPropertyTypes { static myPublicStaticProperty: publicClass; private static myPrivateStaticProperty: publicClass; myPublicProperty: publicClass; private myPrivateProperty: publicClass; } class privateClassWithWithPrivatePropertyTypes { static myPublicStaticProperty: privateClass; private static myPrivateStaticProperty: privateClass; myPublicProperty: privateClass; private myPrivateProperty: privateClass; } class privateClassWithWithPublicPropertyTypes { static myPublicStaticProperty: publicClass; private static myPrivateStaticProperty: publicClass; myPublicProperty: publicClass; private myPrivateProperty: publicClass; } export var publicVarWithPrivatePropertyTypes: privateClass; export var publicVarWithPublicPropertyTypes: publicClass; var privateVarWithPrivatePropertyTypes: privateClass; var privateVarWithPublicPropertyTypes: publicClass; export declare var publicAmbientVarWithPrivatePropertyTypes: privateClass; export declare var publicAmbientVarWithPublicPropertyTypes: publicClass; declare var privateAmbientVarWithPrivatePropertyTypes: privateClass; declare var privateAmbientVarWithPublicPropertyTypes: publicClass; export interface publicInterfaceWithPrivateModulePropertyTypes { myProperty: privateModule.publicClass; } export class publicClassWithPrivateModulePropertyTypes { static myPublicStaticProperty: privateModule.publicClass; myPublicProperty: privateModule.publicClass; } export var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass; export declare var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; interface privateInterfaceWithPrivateModulePropertyTypes { myProperty: privateModule.publicClass; } class privateClassWithPrivateModulePropertyTypes { static myPublicStaticProperty: privateModule.publicClass; myPublicProperty: privateModule.publicClass; } var privateVarWithPrivateModulePropertyTypes: privateModule.publicClass; declare var privateAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; } ==== tests/cases/compiler/privacyVarDeclFile_GlobalFile.ts (10 errors) ==== class publicClassInGlobal { } interface publicInterfaceWithPublicPropertyTypesInGlobal { myProperty: publicClassInGlobal; } class publicClassWithWithPublicPropertyTypesInGlobal { static myPublicStaticProperty: publicClassInGlobal; private static myPrivateStaticProperty: publicClassInGlobal; myPublicProperty: publicClassInGlobal; private myPrivateProperty: publicClassInGlobal; } var publicVarWithPublicPropertyTypesInGlobal: publicClassInGlobal; declare var publicAmbientVarWithPublicPropertyTypesInGlobal: publicClassInGlobal; module publicModuleInGlobal { class privateClass { } export class publicClass { } module privateModule { class privateClass { } export class publicClass { } export interface publicInterfaceWithPrivatePropertyTypes { myProperty: privateClass; } export interface publicInterfaceWithPublicPropertyTypes { myProperty: publicClass; } interface privateInterfaceWithPrivatePropertyTypes { myProperty: privateClass; } interface privateInterfaceWithPublicPropertyTypes { myProperty: publicClass; } export class publicClassWithWithPrivatePropertyTypes { static myPublicStaticProperty: privateClass; private static myPrivateStaticProperty: privateClass; myPublicProperty: privateClass; private myPrivateProperty: privateClass; } export class publicClassWithWithPublicPropertyTypes { static myPublicStaticProperty: publicClass; private static myPrivateStaticProperty: publicClass; myPublicProperty: publicClass; private myPrivateProperty: publicClass; } class privateClassWithWithPrivatePropertyTypes { static myPublicStaticProperty: privateClass; private static myPrivateStaticProperty: privateClass; myPublicProperty: privateClass; private myPrivateProperty: privateClass; } class privateClassWithWithPublicPropertyTypes { static myPublicStaticProperty: publicClass; private static myPrivateStaticProperty: publicClass; myPublicProperty: publicClass; private myPrivateProperty: publicClass; } export var publicVarWithPrivatePropertyTypes: privateClass; export var publicVarWithPublicPropertyTypes: publicClass; var privateVarWithPrivatePropertyTypes: privateClass; var privateVarWithPublicPropertyTypes: publicClass; export declare var publicAmbientVarWithPrivatePropertyTypes: privateClass; export declare var publicAmbientVarWithPublicPropertyTypes: publicClass; declare var privateAmbientVarWithPrivatePropertyTypes: privateClass; declare var privateAmbientVarWithPublicPropertyTypes: publicClass; export interface publicInterfaceWithPrivateModulePropertyTypes { myProperty: privateModule.publicClass; } export class publicClassWithPrivateModulePropertyTypes { static myPublicStaticProperty: privateModule.publicClass; myPublicProperty: privateModule.publicClass; } export var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass; export declare var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; interface privateInterfaceWithPrivateModulePropertyTypes { myProperty: privateModule.publicClass; } class privateClassWithPrivateModulePropertyTypes { static myPublicStaticProperty: privateModule.publicClass; myPublicProperty: privateModule.publicClass; } var privateVarWithPrivateModulePropertyTypes: privateModule.publicClass; declare var privateAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; } export interface publicInterfaceWithPrivatePropertyTypes { myProperty: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Property 'myProperty' of exported interface has or is using private name 'privateClass'. } export interface publicInterfaceWithPublicPropertyTypes { myProperty: publicClass; } interface privateInterfaceWithPrivatePropertyTypes { myProperty: privateClass; } interface privateInterfaceWithPublicPropertyTypes { myProperty: publicClass; } export class publicClassWithWithPrivatePropertyTypes { static myPublicStaticProperty: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Public static property 'myPublicStaticProperty' of exported class has or is using private name 'privateClass'. private static myPrivateStaticProperty: privateClass; myPublicProperty: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Public property 'myPublicProperty' of exported class has or is using private name 'privateClass'. private myPrivateProperty: privateClass; } export class publicClassWithWithPublicPropertyTypes { static myPublicStaticProperty: publicClass; private static myPrivateStaticProperty: publicClass; myPublicProperty: publicClass; private myPrivateProperty: publicClass; } class privateClassWithWithPrivatePropertyTypes { static myPublicStaticProperty: privateClass; private static myPrivateStaticProperty: privateClass; myPublicProperty: privateClass; private myPrivateProperty: privateClass; } class privateClassWithWithPublicPropertyTypes { static myPublicStaticProperty: publicClass; private static myPrivateStaticProperty: publicClass; myPublicProperty: publicClass; private myPrivateProperty: publicClass; } export var publicVarWithPrivatePropertyTypes: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Exported variable 'publicVarWithPrivatePropertyTypes' has or is using private name 'privateClass'. export var publicVarWithPublicPropertyTypes: publicClass; var privateVarWithPrivatePropertyTypes: privateClass; var privateVarWithPublicPropertyTypes: publicClass; export declare var publicAmbientVarWithPrivatePropertyTypes: privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Exported variable 'publicAmbientVarWithPrivatePropertyTypes' has or is using private name 'privateClass'. export declare var publicAmbientVarWithPublicPropertyTypes: publicClass; declare var privateAmbientVarWithPrivatePropertyTypes: privateClass; declare var privateAmbientVarWithPublicPropertyTypes: publicClass; export interface publicInterfaceWithPrivateModulePropertyTypes { myProperty: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Property 'myProperty' of exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. } export class publicClassWithPrivateModulePropertyTypes { static myPublicStaticProperty: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Public static property 'myPublicStaticProperty' of exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. myPublicProperty: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Public property 'myPublicProperty' of exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. } export var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Exported variable 'publicVarWithPrivateModulePropertyTypes' has or is using name 'privateModule.publicClass' from private module 'privateModule'. export declare var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Exported variable 'publicAmbientVarWithPrivateModulePropertyTypes' has or is using name 'privateModule.publicClass' from private module 'privateModule'. interface privateInterfaceWithPrivateModulePropertyTypes { myProperty: privateModule.publicClass; } class privateClassWithPrivateModulePropertyTypes { static myPublicStaticProperty: privateModule.publicClass; myPublicProperty: privateModule.publicClass; } var privateVarWithPrivateModulePropertyTypes: privateModule.publicClass; declare var privateAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass; }