==== tests/cases/compiler/privacyTypeParameterOfFunctionDeclFile.ts (36 errors) ==== class privateClass { } export class publicClass { } export interface publicInterfaceWithPrivateTypeParameters { new (): privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Return type of constructor signature from exported interface has or is using private name 'privateClass'. ~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of constructor signature from exported interface has or is using private name 'privateClass'. (): privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Return type of call signature from exported interface has or is using private name 'privateClass'. ~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of call signature from exported interface has or is using private name 'privateClass'. myMethod(): privateClass; // Error ~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClass'. ~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of method from exported interface has or is using private name 'privateClass'. } export interface publicInterfaceWithPublicTypeParameters { new (): publicClass; (): publicClass; myMethod(): publicClass; } interface privateInterfaceWithPrivateTypeParameters { new (): privateClass; (): privateClass; myMethod(): privateClass; } interface privateInterfaceWithPublicTypeParameters { new (): publicClass; (): publicClass; myMethod(): publicClass; } export class publicClassWithWithPrivateTypeParameters { static myPublicStaticMethod() { // Error ~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of public static method from exported class has or is using private name 'privateClass'. } private static myPrivateStaticMethod() { } myPublicMethod() { // Error ~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of public method from exported class has or is using private name 'privateClass'. } private myPrivateMethod() { } } export class publicClassWithWithPublicTypeParameters { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } class privateClassWithWithPrivateTypeParameters { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } class privateClassWithWithPublicTypeParameters { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } export function publicFunctionWithPrivateTypeParameters() { // Error ~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of exported function has or is using private name 'privateClass'. } export function publicFunctionWithPublicTypeParameters() { } function privateFunctionWithPrivateTypeParameters() { } function privateFunctionWithPublicTypeParameters() { } export interface publicInterfaceWithPublicTypeParametersWithoutExtends { new (): publicClass; (): publicClass; myMethod(): publicClass; } interface privateInterfaceWithPublicTypeParametersWithoutExtends { new (): publicClass; (): publicClass; myMethod(): publicClass; } export class publicClassWithWithPublicTypeParametersWithoutExtends { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } class privateClassWithWithPublicTypeParametersWithoutExtends { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } export function publicFunctionWithPublicTypeParametersWithoutExtends() { } function privateFunctionWithPublicTypeParametersWithoutExtends() { } export interface publicInterfaceWithPrivatModuleTypeParameters { new (): privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Return type of constructor signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of constructor signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. (): privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Return type of call signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of call signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. myMethod(): privateModule.publicClass; // Error ~~~~~~~~ !!! Return type of method from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of method from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. } export class publicClassWithWithPrivateModuleTypeParameters { static myPublicStaticMethod() { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. } myPublicMethod() { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. } } export function publicFunctionWithPrivateMopduleTypeParameters() { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'. } interface privateInterfaceWithPrivatModuleTypeParameters { new (): privateModule.publicClass; (): privateModule.publicClass; myMethod(): privateModule.publicClass; } class privateClassWithWithPrivateModuleTypeParameters { static myPublicStaticMethod() { } myPublicMethod() { } } function privateFunctionWithPrivateMopduleTypeParameters() { } export module publicModule { class privateClass { } export class publicClass { } export interface publicInterfaceWithPrivateTypeParameters { new (): privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Return type of constructor signature from exported interface has or is using private name 'privateClass'. ~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of constructor signature from exported interface has or is using private name 'privateClass'. (): privateClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Return type of call signature from exported interface has or is using private name 'privateClass'. ~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of call signature from exported interface has or is using private name 'privateClass'. myMethod(): privateClass; // Error ~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClass'. ~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of method from exported interface has or is using private name 'privateClass'. } export interface publicInterfaceWithPublicTypeParameters { new (): publicClass; (): publicClass; myMethod(): publicClass; } interface privateInterfaceWithPrivateTypeParameters { new (): privateClass; (): privateClass; myMethod(): privateClass; } interface privateInterfaceWithPublicTypeParameters { new (): publicClass; (): publicClass; myMethod(): publicClass; } export class publicClassWithWithPrivateTypeParameters { static myPublicStaticMethod() { // Error ~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of public static method from exported class has or is using private name 'privateClass'. } private static myPrivateStaticMethod() { } myPublicMethod() { // Error ~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of public method from exported class has or is using private name 'privateClass'. } private myPrivateMethod() { } } export class publicClassWithWithPublicTypeParameters { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } class privateClassWithWithPrivateTypeParameters { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } class privateClassWithWithPublicTypeParameters { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } export function publicFunctionWithPrivateTypeParameters() { // Error ~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of exported function has or is using private name 'privateClass'. } export function publicFunctionWithPublicTypeParameters() { } function privateFunctionWithPrivateTypeParameters() { } function privateFunctionWithPublicTypeParameters() { } export interface publicInterfaceWithPublicTypeParametersWithoutExtends { new (): publicClass; (): publicClass; myMethod(): publicClass; } interface privateInterfaceWithPublicTypeParametersWithoutExtends { new (): publicClass; (): publicClass; myMethod(): publicClass; } export class publicClassWithWithPublicTypeParametersWithoutExtends { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } class privateClassWithWithPublicTypeParametersWithoutExtends { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } export function publicFunctionWithPublicTypeParametersWithoutExtends() { } function privateFunctionWithPublicTypeParametersWithoutExtends() { } export interface publicInterfaceWithPrivatModuleTypeParameters { new (): privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Return type of constructor signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of constructor signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. (): privateModule.publicClass; // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Return type of call signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of call signature from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. myMethod(): privateModule.publicClass; // Error ~~~~~~~~ !!! Return type of method from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of method from exported interface has or is using name 'privateModule.publicClass' from private module 'privateModule'. } export class publicClassWithWithPrivateModuleTypeParameters { static myPublicStaticMethod() { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. } myPublicMethod() { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'. } } export function publicFunctionWithPrivateMopduleTypeParameters() { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'. } interface privateInterfaceWithPrivatModuleTypeParameters { new (): privateModule.publicClass; (): privateModule.publicClass; myMethod(): privateModule.publicClass; } class privateClassWithWithPrivateModuleTypeParameters { static myPublicStaticMethod() { } myPublicMethod() { } } function privateFunctionWithPrivateMopduleTypeParameters() { } } module privateModule { class privateClass { } export class publicClass { } export interface publicInterfaceWithPrivateTypeParameters { new (): privateClass; (): privateClass; myMethod(): privateClass; } export interface publicInterfaceWithPublicTypeParameters { new (): publicClass; (): publicClass; myMethod(): publicClass; } interface privateInterfaceWithPrivateTypeParameters { new (): privateClass; (): privateClass; myMethod(): privateClass; } interface privateInterfaceWithPublicTypeParameters { new (): publicClass; (): publicClass; myMethod(): publicClass; } export class publicClassWithWithPrivateTypeParameters { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } export class publicClassWithWithPublicTypeParameters { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } class privateClassWithWithPrivateTypeParameters { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } class privateClassWithWithPublicTypeParameters { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } export function publicFunctionWithPrivateTypeParameters() { } export function publicFunctionWithPublicTypeParameters() { } function privateFunctionWithPrivateTypeParameters() { } function privateFunctionWithPublicTypeParameters() { } export interface publicInterfaceWithPublicTypeParametersWithoutExtends { new (): publicClass; (): publicClass; myMethod(): publicClass; } interface privateInterfaceWithPublicTypeParametersWithoutExtends { new (): publicClass; (): publicClass; myMethod(): publicClass; } export class publicClassWithWithPublicTypeParametersWithoutExtends { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } class privateClassWithWithPublicTypeParametersWithoutExtends { static myPublicStaticMethod() { } private static myPrivateStaticMethod() { } myPublicMethod() { } private myPrivateMethod() { } } export function publicFunctionWithPublicTypeParametersWithoutExtends() { } function privateFunctionWithPublicTypeParametersWithoutExtends() { } }