tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(281,17): error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(282,13): error TS4047: Return type of call signature from exported interface has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(283,22): error TS4049: Return type of index signature from exported interface has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(284,21): error TS4057: Return type of method from exported interface has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(309,40): error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(315,27): error TS4055: Return type of public method from exported class has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(321,16): error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(327,9): error TS4055: Return type of public method from exported class has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(416,63): error TS4060: Return type of exported function has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(428,21): error TS4060: Return type of exported function has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(441,78): error TS4060: Return type of exported function has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(447,17): error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(448,13): error TS4047: Return type of call signature from exported interface has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(449,22): error TS4049: Return type of index signature from exported interface has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(450,21): error TS4057: Return type of method from exported interface has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(453,40): error TS4052: Return type of public static method from exported class has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(456,27): error TS4055: Return type of public method from exported class has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(459,16): error TS4051: Return type of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(462,9): error TS4054: Return type of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(466,70): error TS4060: Return type of exported function has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(469,21): error TS4059: Return type of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(472,85): error TS4060: Return type of exported function has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(9,13): error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(10,9): error TS4047: Return type of call signature from exported interface has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(11,18): error TS4049: Return type of index signature from exported interface has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(12,17): error TS4057: Return type of method from exported interface has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(37,36): error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(43,23): error TS4055: Return type of public method from exported class has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(49,12): error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(55,5): error TS4055: Return type of public method from exported class has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(144,59): error TS4060: Return type of exported function has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(156,17): error TS4060: Return type of exported function has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(169,74): error TS4060: Return type of exported function has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(175,13): error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(176,9): error TS4047: Return type of call signature from exported interface has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(177,18): error TS4049: Return type of index signature from exported interface has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(178,17): error TS4057: Return type of method from exported interface has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(181,36): error TS4052: Return type of public static method from exported class has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(184,23): error TS4055: Return type of public method from exported class has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(187,12): error TS4051: Return type of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(190,5): error TS4054: Return type of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(194,66): error TS4060: Return type of exported function has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(197,17): error TS4059: Return type of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(200,81): error TS4060: Return type of exported function has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(238,17): error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(239,13): error TS4047: Return type of call signature from exported interface has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(240,22): error TS4049: Return type of index signature from exported interface has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(241,21): error TS4057: Return type of method from exported interface has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(266,40): error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(272,27): error TS4055: Return type of public method from exported class has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(278,16): error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(284,9): error TS4055: Return type of public method from exported class has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(373,63): error TS4060: Return type of exported function has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(385,21): error TS4060: Return type of exported function has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(398,78): error TS4060: Return type of exported function has or is using private name 'privateClass'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(404,17): error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(405,13): error TS4047: Return type of call signature from exported interface has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(406,22): error TS4049: Return type of index signature from exported interface has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(407,21): error TS4057: Return type of method from exported interface has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(410,40): error TS4052: Return type of public static method from exported class has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(413,27): error TS4055: Return type of public method from exported class has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(416,16): error TS4051: Return type of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(419,9): error TS4054: Return type of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(423,70): error TS4060: Return type of exported function has or is using private name 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(426,21): error TS4059: Return type of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'. tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(429,85): error TS4060: Return type of exported function has or is using private name 'privateModule'. ==== tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts (44 errors) ==== class privateClass { } export class publicClass { } export interface publicInterfaceWithPrivateParmeterTypes { new (): privateClass; // Error ~~~~~~~~~~~~ !!! error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateClass'. (): privateClass; // Error ~~~~~~~~~~~~ !!! error TS4047: Return type of call signature from exported interface has or is using private name 'privateClass'. [x: number]: privateClass; // Error ~~~~~~~~~~~~ !!! error TS4049: Return type of index signature from exported interface has or is using private name 'privateClass'. myMethod(): privateClass; // Error ~~~~~~~~~~~~ !!! error TS4057: Return type of method from exported interface has or is using private name 'privateClass'. } export interface publicInterfaceWithPublicParmeterTypes { new (): publicClass; (): publicClass; [x: number]: publicClass; myMethod(): publicClass; } interface privateInterfaceWithPrivateParmeterTypes { new (): privateClass; (): privateClass; [x: number]: privateClass; myMethod(): privateClass; } interface privateInterfaceWithPublicParmeterTypes { new (): publicClass; (): publicClass; [x: number]: publicClass; myMethod(): publicClass; } export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(): privateClass { // Error ~~~~~~~~~~~~ !!! error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'. return null; } private static myPrivateStaticMethod(): privateClass { return null; } myPublicMethod(): privateClass { // Error ~~~~~~~~~~~~ !!! error TS4055: Return type of public method from exported class has or is using private name 'privateClass'. return null; } private myPrivateMethod(): privateClass { return null; } static myPublicStaticMethod1() { // Error ~~~~~~~~~~~~~~~~~~~~~ !!! error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'. return new privateClass(); } private static myPrivateStaticMethod1() { return new privateClass(); } myPublicMethod1() { // Error ~~~~~~~~~~~~~~~ !!! error TS4055: Return type of public method from exported class has or is using private name 'privateClass'. return new privateClass(); } private myPrivateMethod1() { return new privateClass(); } } export class publicClassWithWithPublicParmeterTypes { static myPublicStaticMethod(): publicClass { return null; } private static myPrivateStaticMethod(): publicClass { return null; } myPublicMethod(): publicClass { return null; } private myPrivateMethod(): publicClass { return null; } static myPublicStaticMethod1() { return new publicClass(); } private static myPrivateStaticMethod1() { return new publicClass(); } myPublicMethod1() { return new publicClass(); } private myPrivateMethod1() { return new publicClass(); } } class privateClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(): privateClass { return null; } private static myPrivateStaticMethod(): privateClass { return null; } myPublicMethod(): privateClass { return null; } private myPrivateMethod(): privateClass { return null; } static myPublicStaticMethod1() { return new privateClass(); } private static myPrivateStaticMethod1() { return new privateClass(); } myPublicMethod1() { return new privateClass(); } private myPrivateMethod1() { return new privateClass(); } } class privateClassWithWithPublicParmeterTypes { static myPublicStaticMethod(): publicClass { return null; } private static myPrivateStaticMethod(): publicClass { return null; } myPublicMethod(): publicClass { return null; } private myPrivateMethod(): publicClass { return null; } static myPublicStaticMethod1() { return new publicClass(); } private static myPrivateStaticMethod1() { return new publicClass(); } myPublicMethod1() { return new publicClass(); } private myPrivateMethod1() { return new publicClass(); } } export function publicFunctionWithPrivateParmeterTypes(): privateClass { // Error ~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateClass'. return null; } export function publicFunctionWithPublicParmeterTypes(): publicClass { return null; } function privateFunctionWithPrivateParmeterTypes(): privateClass { return null; } function privateFunctionWithPublicParmeterTypes(): publicClass { return null; } export function publicFunctionWithPrivateParmeterTypes1() { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateClass'. return new privateClass(); } export function publicFunctionWithPublicParmeterTypes1() { return new publicClass(); } function privateFunctionWithPrivateParmeterTypes1() { return new privateClass(); } function privateFunctionWithPublicParmeterTypes1() { return new publicClass(); } export declare function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; // Error ~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateClass'. export declare function publicAmbientFunctionWithPublicParmeterTypes(): publicClass; declare function privateAmbientFunctionWithPrivateParmeterTypes(): privateClass; declare function privateAmbientFunctionWithPublicParmeterTypes(): publicClass; export interface publicInterfaceWithPrivateModuleParameterTypes { new (): privateModule.publicClass; // Error ~~~~~~~~~~~~~ !!! error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateModule'. (): privateModule.publicClass; // Error ~~~~~~~~~~~~~ !!! error TS4047: Return type of call signature from exported interface has or is using private name 'privateModule'. [x: number]: privateModule.publicClass // Error ~~~~~~~~~~~~~ !!! error TS4049: Return type of index signature from exported interface has or is using private name 'privateModule'. myMethod(): privateModule.publicClass; // Error ~~~~~~~~~~~~~ !!! error TS4057: Return type of method from exported interface has or is using private name 'privateModule'. } export class publicClassWithPrivateModuleParameterTypes { static myPublicStaticMethod(): privateModule.publicClass { // Error ~~~~~~~~~~~~~ !!! error TS4052: Return type of public static method from exported class has or is using private name 'privateModule'. return null; } myPublicMethod(): privateModule.publicClass { // Error ~~~~~~~~~~~~~ !!! error TS4055: Return type of public method from exported class has or is using private name 'privateModule'. return null; } static myPublicStaticMethod1() { // Error ~~~~~~~~~~~~~~~~~~~~~ !!! error TS4051: Return type of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. return new privateModule.publicClass(); } myPublicMethod1() { // Error ~~~~~~~~~~~~~~~ !!! error TS4054: Return type of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. return new privateModule.publicClass(); } } export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { // Error ~~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateModule'. return null; } export function publicFunctionWithPrivateModuleParameterTypes1() { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS4059: Return type of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'. return new privateModule.publicClass(); } export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; // Error ~~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateModule'. interface privateInterfaceWithPrivateModuleParameterTypes { new (): privateModule.publicClass; (): privateModule.publicClass; [x: number]: privateModule.publicClass myMethod(): privateModule.publicClass; } class privateClassWithPrivateModuleParameterTypes { static myPublicStaticMethod(): privateModule.publicClass { return null; } myPublicMethod(): privateModule.publicClass { return null; } static myPublicStaticMethod1() { return new privateModule.publicClass(); } myPublicMethod1() { return new privateModule.publicClass(); } } function privateFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { return null; } function privateFunctionWithPrivateModuleParameterTypes1() { return new privateModule.publicClass(); } declare function privateAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; export module publicModule { class privateClass { } export class publicClass { } export interface publicInterfaceWithPrivateParmeterTypes { new (): privateClass; // Error ~~~~~~~~~~~~ !!! error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateClass'. (): privateClass; // Error ~~~~~~~~~~~~ !!! error TS4047: Return type of call signature from exported interface has or is using private name 'privateClass'. [x: number]: privateClass; // Error ~~~~~~~~~~~~ !!! error TS4049: Return type of index signature from exported interface has or is using private name 'privateClass'. myMethod(): privateClass; // Error ~~~~~~~~~~~~ !!! error TS4057: Return type of method from exported interface has or is using private name 'privateClass'. } export interface publicInterfaceWithPublicParmeterTypes { new (): publicClass; (): publicClass; [x: number]: publicClass; myMethod(): publicClass; } interface privateInterfaceWithPrivateParmeterTypes { new (): privateClass; (): privateClass; [x: number]: privateClass; myMethod(): privateClass; } interface privateInterfaceWithPublicParmeterTypes { new (): publicClass; (): publicClass; [x: number]: publicClass; myMethod(): publicClass; } export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(): privateClass { // Error ~~~~~~~~~~~~ !!! error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'. return null; } private static myPrivateStaticMethod(): privateClass { return null; } myPublicMethod(): privateClass { // Error ~~~~~~~~~~~~ !!! error TS4055: Return type of public method from exported class has or is using private name 'privateClass'. return null; } private myPrivateMethod(): privateClass { return null; } static myPublicStaticMethod1() { // Error ~~~~~~~~~~~~~~~~~~~~~ !!! error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'. return new privateClass(); } private static myPrivateStaticMethod1() { return new privateClass(); } myPublicMethod1() { // Error ~~~~~~~~~~~~~~~ !!! error TS4055: Return type of public method from exported class has or is using private name 'privateClass'. return new privateClass(); } private myPrivateMethod1() { return new privateClass(); } } export class publicClassWithWithPublicParmeterTypes { static myPublicStaticMethod(): publicClass { return null; } private static myPrivateStaticMethod(): publicClass { return null; } myPublicMethod(): publicClass { return null; } private myPrivateMethod(): publicClass { return null; } static myPublicStaticMethod1() { return new publicClass(); } private static myPrivateStaticMethod1() { return new publicClass(); } myPublicMethod1() { return new publicClass(); } private myPrivateMethod1() { return new publicClass(); } } class privateClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(): privateClass { return null; } private static myPrivateStaticMethod(): privateClass { return null; } myPublicMethod(): privateClass { return null; } private myPrivateMethod(): privateClass { return null; } static myPublicStaticMethod1() { return new privateClass(); } private static myPrivateStaticMethod1() { return new privateClass(); } myPublicMethod1() { return new privateClass(); } private myPrivateMethod1() { return new privateClass(); } } class privateClassWithWithPublicParmeterTypes { static myPublicStaticMethod(): publicClass { return null; } private static myPrivateStaticMethod(): publicClass { return null; } myPublicMethod(): publicClass { return null; } private myPrivateMethod(): publicClass { return null; } static myPublicStaticMethod1() { return new publicClass(); } private static myPrivateStaticMethod1() { return new publicClass(); } myPublicMethod1() { return new publicClass(); } private myPrivateMethod1() { return new publicClass(); } } export function publicFunctionWithPrivateParmeterTypes(): privateClass { // Error ~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateClass'. return null; } export function publicFunctionWithPublicParmeterTypes(): publicClass { return null; } function privateFunctionWithPrivateParmeterTypes(): privateClass { return null; } function privateFunctionWithPublicParmeterTypes(): publicClass { return null; } export function publicFunctionWithPrivateParmeterTypes1() { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateClass'. return new privateClass(); } export function publicFunctionWithPublicParmeterTypes1() { return new publicClass(); } function privateFunctionWithPrivateParmeterTypes1() { return new privateClass(); } function privateFunctionWithPublicParmeterTypes1() { return new publicClass(); } export declare function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; // Error ~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateClass'. export declare function publicAmbientFunctionWithPublicParmeterTypes(): publicClass; declare function privateAmbientFunctionWithPrivateParmeterTypes(): privateClass; declare function privateAmbientFunctionWithPublicParmeterTypes(): publicClass; export interface publicInterfaceWithPrivateModuleParameterTypes { new (): privateModule.publicClass; // Error ~~~~~~~~~~~~~ !!! error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateModule'. (): privateModule.publicClass; // Error ~~~~~~~~~~~~~ !!! error TS4047: Return type of call signature from exported interface has or is using private name 'privateModule'. [x: number]: privateModule.publicClass; // Error ~~~~~~~~~~~~~ !!! error TS4049: Return type of index signature from exported interface has or is using private name 'privateModule'. myMethod(): privateModule.publicClass; // Error ~~~~~~~~~~~~~ !!! error TS4057: Return type of method from exported interface has or is using private name 'privateModule'. } export class publicClassWithPrivateModuleParameterTypes { static myPublicStaticMethod(): privateModule.publicClass { // Error ~~~~~~~~~~~~~ !!! error TS4052: Return type of public static method from exported class has or is using private name 'privateModule'. return null; } myPublicMethod(): privateModule.publicClass { // Error ~~~~~~~~~~~~~ !!! error TS4055: Return type of public method from exported class has or is using private name 'privateModule'. return null; } static myPublicStaticMethod1() { // Error ~~~~~~~~~~~~~~~~~~~~~ !!! error TS4051: Return type of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. return new privateModule.publicClass(); } myPublicMethod1() { // Error ~~~~~~~~~~~~~~~ !!! error TS4054: Return type of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. return new privateModule.publicClass(); } } export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { // Error ~~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateModule'. return null; } export function publicFunctionWithPrivateModuleParameterTypes1() { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS4059: Return type of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'. return new privateModule.publicClass(); } export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; // Error ~~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateModule'. interface privateInterfaceWithPrivateModuleParameterTypes { new (): privateModule.publicClass; (): privateModule.publicClass; [x: number]: privateModule.publicClass; myMethod(): privateModule.publicClass; } class privateClassWithPrivateModuleParameterTypes { static myPublicStaticMethod(): privateModule.publicClass { return null; } myPublicMethod(): privateModule.publicClass { return null; } static myPublicStaticMethod1() { return new privateModule.publicClass(); } myPublicMethod1() { return new privateModule.publicClass(); } } function privateFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { return null; } function privateFunctionWithPrivateModuleParameterTypes1() { return new privateModule.publicClass(); } declare function privateAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; } module privateModule { class privateClass { } export class publicClass { } export interface publicInterfaceWithPrivateParmeterTypes { new (): privateClass; (): privateClass; [x: number]: privateClass; myMethod(): privateClass; } export interface publicInterfaceWithPublicParmeterTypes { new (): publicClass; (): publicClass; [x: number]: publicClass; myMethod(): publicClass; } interface privateInterfaceWithPrivateParmeterTypes { new (): privateClass; (): privateClass; [x: number]: privateClass; myMethod(): privateClass; } interface privateInterfaceWithPublicParmeterTypes { new (): publicClass; (): publicClass; [x: number]: publicClass; myMethod(): publicClass; } export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(): privateClass { return null; } private static myPrivateStaticMethod(): privateClass { return null; } myPublicMethod(): privateClass { return null; } private myPrivateMethod(): privateClass { return null; } static myPublicStaticMethod1() { return new privateClass(); } private static myPrivateStaticMethod1() { return new privateClass(); } myPublicMethod1() { return new privateClass(); } private myPrivateMethod1() { return new privateClass(); } } export class publicClassWithWithPublicParmeterTypes { static myPublicStaticMethod(): publicClass { return null; } private static myPrivateStaticMethod(): publicClass { return null; } myPublicMethod(): publicClass { return null; } private myPrivateMethod(): publicClass { return null; } static myPublicStaticMethod1() { return new publicClass(); } private static myPrivateStaticMethod1() { return new publicClass(); } myPublicMethod1() { return new publicClass(); } private myPrivateMethod1() { return new publicClass(); } } class privateClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(): privateClass { return null; } private static myPrivateStaticMethod(): privateClass { return null; } myPublicMethod(): privateClass { return null; } private myPrivateMethod(): privateClass { return null; } static myPublicStaticMethod1() { return new privateClass(); } private static myPrivateStaticMethod1() { return new privateClass(); } myPublicMethod1() { return new privateClass(); } private myPrivateMethod1() { return new privateClass(); } } class privateClassWithWithPublicParmeterTypes { static myPublicStaticMethod(): publicClass { return null; } private static myPrivateStaticMethod(): publicClass { return null; } myPublicMethod(): publicClass { return null; } private myPrivateMethod(): publicClass { return null; } static myPublicStaticMethod1() { return new publicClass(); } private static myPrivateStaticMethod1() { return new publicClass(); } myPublicMethod1() { return new publicClass(); } private myPrivateMethod1() { return new publicClass(); } } export function publicFunctionWithPrivateParmeterTypes(): privateClass { return null; } export function publicFunctionWithPublicParmeterTypes(): publicClass { return null; } function privateFunctionWithPrivateParmeterTypes(): privateClass { return null; } function privateFunctionWithPublicParmeterTypes(): publicClass { return null; } export function publicFunctionWithPrivateParmeterTypes1() { return new privateClass(); } export function publicFunctionWithPublicParmeterTypes1() { return new publicClass(); } function privateFunctionWithPrivateParmeterTypes1() { return new privateClass(); } function privateFunctionWithPublicParmeterTypes1() { return new publicClass(); } export declare function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; export declare function publicAmbientFunctionWithPublicParmeterTypes(): publicClass; declare function privateAmbientFunctionWithPrivateParmeterTypes(): privateClass; declare function privateAmbientFunctionWithPublicParmeterTypes(): publicClass; export interface publicInterfaceWithPrivateModuleParameterTypes { new (): privateModule.publicClass; (): privateModule.publicClass; [x: number]: privateModule.publicClass; myMethod(): privateModule.publicClass; } export class publicClassWithPrivateModuleParameterTypes { static myPublicStaticMethod(): privateModule.publicClass { return null; } myPublicMethod(): privateModule.publicClass { return null; } static myPublicStaticMethod1() { return new privateModule.publicClass(); } myPublicMethod1() { return new privateModule.publicClass(); } } export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { return null; } export function publicFunctionWithPrivateModuleParameterTypes1() { return new privateModule.publicClass(); } export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; interface privateInterfaceWithPrivateModuleParameterTypes { new (): privateModule.publicClass; (): privateModule.publicClass; [x: number]: privateModule.publicClass; myMethod(): privateModule.publicClass; } class privateClassWithPrivateModuleParameterTypes { static myPublicStaticMethod(): privateModule.publicClass { return null; } myPublicMethod(): privateModule.publicClass { return null; } static myPublicStaticMethod1() { return new privateModule.publicClass(); } myPublicMethod1() { return new privateModule.publicClass(); } } function privateFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { return null; } function privateFunctionWithPrivateModuleParameterTypes1() { return new privateModule.publicClass(); } declare function privateAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; } ==== tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts (22 errors) ==== class publicClassInGlobal { } interface publicInterfaceWithPublicParmeterTypesInGlobal { new (): publicClassInGlobal; (): publicClassInGlobal; [x: number]: publicClassInGlobal; myMethod(): publicClassInGlobal; } class publicClassWithWithPublicParmeterTypesInGlobal { static myPublicStaticMethod(): publicClassInGlobal { return null; } private static myPrivateStaticMethod(): publicClassInGlobal { return null; } myPublicMethod(): publicClassInGlobal { return null; } private myPrivateMethod(): publicClassInGlobal { return null; } static myPublicStaticMethod1() { return new publicClassInGlobal(); } private static myPrivateStaticMethod1() { return new publicClassInGlobal(); } myPublicMethod1() { return new publicClassInGlobal(); } private myPrivateMethod1() { return new publicClassInGlobal(); } } function publicFunctionWithPublicParmeterTypesInGlobal(): publicClassInGlobal { return null; } function publicFunctionWithPublicParmeterTypesInGlobal1() { return new publicClassInGlobal(); } declare function publicAmbientFunctionWithPublicParmeterTypesInGlobal(): publicClassInGlobal; module publicModuleInGlobal { class privateClass { } export class publicClass { } module privateModule { class privateClass { } export class publicClass { } export interface publicInterfaceWithPrivateParmeterTypes { new (): privateClass; (): privateClass; [x: number]: privateClass; myMethod(): privateClass; } export interface publicInterfaceWithPublicParmeterTypes { new (): publicClass; (): publicClass; [x: number]: publicClass; myMethod(): publicClass; } interface privateInterfaceWithPrivateParmeterTypes { new (): privateClass; (): privateClass; [x: number]: privateClass; myMethod(): privateClass; } interface privateInterfaceWithPublicParmeterTypes { new (): publicClass; (): publicClass; [x: number]: publicClass; myMethod(): publicClass; } export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(): privateClass { return null; } private static myPrivateStaticMethod(): privateClass { return null; } myPublicMethod(): privateClass { return null; } private myPrivateMethod(): privateClass { return null; } static myPublicStaticMethod1() { return new privateClass(); } private static myPrivateStaticMethod1() { return new privateClass(); } myPublicMethod1() { return new privateClass(); } private myPrivateMethod1() { return new privateClass(); } } export class publicClassWithWithPublicParmeterTypes { static myPublicStaticMethod(): publicClass { return null; } private static myPrivateStaticMethod(): publicClass { return null; } myPublicMethod(): publicClass { return null; } private myPrivateMethod(): publicClass { return null; } static myPublicStaticMethod1() { return new publicClass(); } private static myPrivateStaticMethod1() { return new publicClass(); } myPublicMethod1() { return new publicClass(); } private myPrivateMethod1() { return new publicClass(); } } class privateClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(): privateClass { return null; } private static myPrivateStaticMethod(): privateClass { return null; } myPublicMethod(): privateClass { return null; } private myPrivateMethod(): privateClass { return null; } static myPublicStaticMethod1() { return new privateClass(); } private static myPrivateStaticMethod1() { return new privateClass(); } myPublicMethod1() { return new privateClass(); } private myPrivateMethod1() { return new privateClass(); } } class privateClassWithWithPublicParmeterTypes { static myPublicStaticMethod(): publicClass { return null; } private static myPrivateStaticMethod(): publicClass { return null; } myPublicMethod(): publicClass { return null; } private myPrivateMethod(): publicClass { return null; } static myPublicStaticMethod1() { return new publicClass(); } private static myPrivateStaticMethod1() { return new publicClass(); } myPublicMethod1() { return new publicClass(); } private myPrivateMethod1() { return new publicClass(); } } export function publicFunctionWithPrivateParmeterTypes(): privateClass { return null; } export function publicFunctionWithPublicParmeterTypes(): publicClass { return null; } function privateFunctionWithPrivateParmeterTypes(): privateClass { return null; } function privateFunctionWithPublicParmeterTypes(): publicClass { return null; } export function publicFunctionWithPrivateParmeterTypes1() { return new privateClass(); } export function publicFunctionWithPublicParmeterTypes1() { return new publicClass(); } function privateFunctionWithPrivateParmeterTypes1() { return new privateClass(); } function privateFunctionWithPublicParmeterTypes1() { return new publicClass(); } export declare function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; export declare function publicAmbientFunctionWithPublicParmeterTypes(): publicClass; declare function privateAmbientFunctionWithPrivateParmeterTypes(): privateClass; declare function privateAmbientFunctionWithPublicParmeterTypes(): publicClass; export interface publicInterfaceWithPrivateModuleParameterTypes { new (): privateModule.publicClass; (): privateModule.publicClass; [x: number]: privateModule.publicClass; myMethod(): privateModule.publicClass; } export class publicClassWithPrivateModuleParameterTypes { static myPublicStaticMethod(): privateModule.publicClass { return null; } myPublicMethod(): privateModule.publicClass { return null; } static myPublicStaticMethod1() { return new privateModule.publicClass(); } myPublicMethod1() { return new privateModule.publicClass(); } } export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { return null; } export function publicFunctionWithPrivateModuleParameterTypes1() { return new privateModule.publicClass(); } export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; interface privateInterfaceWithPrivateModuleParameterTypes { new (): privateModule.publicClass; (): privateModule.publicClass; [x: number]: privateModule.publicClass; myMethod(): privateModule.publicClass; } class privateClassWithPrivateModuleParameterTypes { static myPublicStaticMethod(): privateModule.publicClass { return null; } myPublicMethod(): privateModule.publicClass { return null; } static myPublicStaticMethod1() { return new privateModule.publicClass(); } myPublicMethod1() { return new privateModule.publicClass(); } } function privateFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { return null; } function privateFunctionWithPrivateModuleParameterTypes1() { return new privateModule.publicClass(); } declare function privateAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; } export interface publicInterfaceWithPrivateParmeterTypes { new (): privateClass; // Error ~~~~~~~~~~~~ !!! error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateClass'. (): privateClass; // Error ~~~~~~~~~~~~ !!! error TS4047: Return type of call signature from exported interface has or is using private name 'privateClass'. [x: number]: privateClass; // Error ~~~~~~~~~~~~ !!! error TS4049: Return type of index signature from exported interface has or is using private name 'privateClass'. myMethod(): privateClass; // Error ~~~~~~~~~~~~ !!! error TS4057: Return type of method from exported interface has or is using private name 'privateClass'. } export interface publicInterfaceWithPublicParmeterTypes { new (): publicClass; (): publicClass; [x: number]: publicClass; myMethod(): publicClass; } interface privateInterfaceWithPrivateParmeterTypes { new (): privateClass; (): privateClass; [x: number]: privateClass; myMethod(): privateClass; } interface privateInterfaceWithPublicParmeterTypes { new (): publicClass; (): publicClass; [x: number]: publicClass; myMethod(): publicClass; } export class publicClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(): privateClass { // Error ~~~~~~~~~~~~ !!! error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'. return null; } private static myPrivateStaticMethod(): privateClass { return null; } myPublicMethod(): privateClass { // Error ~~~~~~~~~~~~ !!! error TS4055: Return type of public method from exported class has or is using private name 'privateClass'. return null; } private myPrivateMethod(): privateClass { return null; } static myPublicStaticMethod1() { // Error ~~~~~~~~~~~~~~~~~~~~~ !!! error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'. return new privateClass(); } private static myPrivateStaticMethod1() { return new privateClass(); } myPublicMethod1() { // Error ~~~~~~~~~~~~~~~ !!! error TS4055: Return type of public method from exported class has or is using private name 'privateClass'. return new privateClass(); } private myPrivateMethod1() { return new privateClass(); } } export class publicClassWithWithPublicParmeterTypes { static myPublicStaticMethod(): publicClass { return null; } private static myPrivateStaticMethod(): publicClass { return null; } myPublicMethod(): publicClass { return null; } private myPrivateMethod(): publicClass { return null; } static myPublicStaticMethod1() { return new publicClass(); } private static myPrivateStaticMethod1() { return new publicClass(); } myPublicMethod1() { return new publicClass(); } private myPrivateMethod1() { return new publicClass(); } } class privateClassWithWithPrivateParmeterTypes { static myPublicStaticMethod(): privateClass { return null; } private static myPrivateStaticMethod(): privateClass { return null; } myPublicMethod(): privateClass { return null; } private myPrivateMethod(): privateClass { return null; } static myPublicStaticMethod1() { return new privateClass(); } private static myPrivateStaticMethod1() { return new privateClass(); } myPublicMethod1() { return new privateClass(); } private myPrivateMethod1() { return new privateClass(); } } class privateClassWithWithPublicParmeterTypes { static myPublicStaticMethod(): publicClass { return null; } private static myPrivateStaticMethod(): publicClass { return null; } myPublicMethod(): publicClass { return null; } private myPrivateMethod(): publicClass { return null; } static myPublicStaticMethod1() { return new publicClass(); } private static myPrivateStaticMethod1() { return new publicClass(); } myPublicMethod1() { return new publicClass(); } private myPrivateMethod1() { return new publicClass(); } } export function publicFunctionWithPrivateParmeterTypes(): privateClass { // Error ~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateClass'. return null; } export function publicFunctionWithPublicParmeterTypes(): publicClass { return null; } function privateFunctionWithPrivateParmeterTypes(): privateClass { return null; } function privateFunctionWithPublicParmeterTypes(): publicClass { return null; } export function publicFunctionWithPrivateParmeterTypes1() { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateClass'. return new privateClass(); } export function publicFunctionWithPublicParmeterTypes1() { return new publicClass(); } function privateFunctionWithPrivateParmeterTypes1() { return new privateClass(); } function privateFunctionWithPublicParmeterTypes1() { return new publicClass(); } export declare function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; // Error ~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateClass'. export declare function publicAmbientFunctionWithPublicParmeterTypes(): publicClass; declare function privateAmbientFunctionWithPrivateParmeterTypes(): privateClass; declare function privateAmbientFunctionWithPublicParmeterTypes(): publicClass; export interface publicInterfaceWithPrivateModuleParameterTypes { new (): privateModule.publicClass; // Error ~~~~~~~~~~~~~ !!! error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateModule'. (): privateModule.publicClass; // Error ~~~~~~~~~~~~~ !!! error TS4047: Return type of call signature from exported interface has or is using private name 'privateModule'. [x: number]: privateModule.publicClass; // Error ~~~~~~~~~~~~~ !!! error TS4049: Return type of index signature from exported interface has or is using private name 'privateModule'. myMethod(): privateModule.publicClass; // Error ~~~~~~~~~~~~~ !!! error TS4057: Return type of method from exported interface has or is using private name 'privateModule'. } export class publicClassWithPrivateModuleParameterTypes { static myPublicStaticMethod(): privateModule.publicClass { // Error ~~~~~~~~~~~~~ !!! error TS4052: Return type of public static method from exported class has or is using private name 'privateModule'. return null; } myPublicMethod(): privateModule.publicClass { // Error ~~~~~~~~~~~~~ !!! error TS4055: Return type of public method from exported class has or is using private name 'privateModule'. return null; } static myPublicStaticMethod1() { // Error ~~~~~~~~~~~~~~~~~~~~~ !!! error TS4051: Return type of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. return new privateModule.publicClass(); } myPublicMethod1() { // Error ~~~~~~~~~~~~~~~ !!! error TS4054: Return type of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. return new privateModule.publicClass(); } } export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { // Error ~~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateModule'. return null; } export function publicFunctionWithPrivateModuleParameterTypes1() { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS4059: Return type of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'. return new privateModule.publicClass(); } export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; // Error ~~~~~~~~~~~~~ !!! error TS4060: Return type of exported function has or is using private name 'privateModule'. interface privateInterfaceWithPrivateModuleParameterTypes { new (): privateModule.publicClass; (): privateModule.publicClass; [x: number]: privateModule.publicClass; myMethod(): privateModule.publicClass; } class privateClassWithPrivateModuleParameterTypes { static myPublicStaticMethod(): privateModule.publicClass { return null; } myPublicMethod(): privateModule.publicClass { return null; } static myPublicStaticMethod1() { return new privateModule.publicClass(); } myPublicMethod1() { return new privateModule.publicClass(); } } function privateFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { return null; } function privateFunctionWithPrivateModuleParameterTypes1() { return new privateModule.publicClass(); } declare function privateAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; }