==== tests/cases/compiler/privacyTypeParametersOfInterfaceDeclFile.ts (20 errors) ==== class privateClass { } export class publicClass { } class privateClassT { } export class publicClassT { } export interface publicInterfaceWithPrivateTypeParameters { // Error ~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of exported interface has or is using private name 'privateClass'. myMethod(val: T): T; myMethod0(): publicClassT; myMethod1(): privateClassT; ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClass'. ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClassT'. myMethod2(): privateClassT; ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClassT'. myMethod3(): publicClassT; ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClass'. myMethod4(): publicClassT; } export interface publicInterfaceWithPublicTypeParameters { myMethod(val: T): T; myMethod0(): publicClassT myMethod1(): privateClassT; ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClass'. ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClassT'. myMethod2(): privateClassT; ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClassT'. myMethod3(): publicClassT; ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClass'. myMethod4(): publicClassT; } interface privateInterfaceWithPrivateTypeParameters { myMethod(val: T): T; myMethod0(): publicClassT; myMethod1(): privateClassT; myMethod2(): privateClassT; myMethod3(): publicClassT; myMethod4(): publicClassT; } interface privateInterfaceWithPublicTypeParameters { myMethod(val: T): T; myMethod0(): publicClassT; myMethod1(): privateClassT; myMethod2(): privateClassT; myMethod3(): publicClassT; myMethod4(): publicClassT; } export interface publicInterfaceWithPublicTypeParametersWithoutExtends { myMethod(val: T): T; myMethod0(): publicClassT; } interface privateInterfaceWithPublicTypeParametersWithoutExtends { myMethod(val: T): T; myMethod0(): publicClassT; } export interface publicInterfaceWithPrivateModuleTypeParameterConstraints { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of exported interface has or is using name 'privateModule.publicClassInPrivateModule' from private module 'privateModule'. } interface privateInterfaceWithPrivateModuleTypeParameterConstraints { // Error } export module publicModule { class privateClassInPublicModule { } export class publicClassInPublicModule { } class privateClassInPublicModuleT { } export class publicClassInPublicModuleT { } export interface publicInterfaceWithPrivateTypeParameters { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of exported interface has or is using private name 'privateClassInPublicModule'. myMethod(val: T): T; myMethod0(): publicClassInPublicModuleT; myMethod1(): privateClassInPublicModuleT; ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClassInPublicModule'. ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClassInPublicModuleT'. myMethod2(): privateClassInPublicModuleT; ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClassInPublicModuleT'. myMethod3(): publicClassInPublicModuleT; ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClassInPublicModule'. myMethod4(): publicClassInPublicModuleT; } export interface publicInterfaceWithPublicTypeParameters { myMethod(val: T): T; myMethod0(): publicClassInPublicModuleT myMethod1(): privateClassInPublicModuleT; ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClassInPublicModule'. ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClassInPublicModuleT'. myMethod2(): privateClassInPublicModuleT; ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClassInPublicModuleT'. myMethod3(): publicClassInPublicModuleT; ~~~~~~~~~ !!! Return type of method from exported interface has or is using private name 'privateClassInPublicModule'. myMethod4(): publicClassInPublicModuleT; } interface privateInterfaceWithPrivateTypeParameters { myMethod(val: T): T; myMethod0(): publicClassInPublicModuleT; myMethod1(): privateClassInPublicModuleT; myMethod2(): privateClassInPublicModuleT; myMethod3(): publicClassInPublicModuleT; myMethod4(): publicClassInPublicModuleT; } interface privateInterfaceWithPublicTypeParameters { myMethod(val: T): T; myMethod0(): publicClassInPublicModuleT; myMethod1(): privateClassInPublicModuleT; myMethod2(): privateClassInPublicModuleT; myMethod3(): publicClassInPublicModuleT; myMethod4(): publicClassInPublicModuleT; } export interface publicInterfaceWithPublicTypeParametersWithoutExtends { myMethod(val: T): T; myMethod0(): publicClassInPublicModuleT; } interface privateInterfaceWithPublicTypeParametersWithoutExtends { myMethod(val: T): T; myMethod0(): publicClassInPublicModuleT; } export interface publicInterfaceWithPrivateModuleTypeParameterConstraints { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of exported interface has or is using name 'privateModule.publicClassInPrivateModule' from private module 'privateModule'. } interface privateInterfaceWithPrivateModuleTypeParameterConstraints { // Error } } module privateModule { class privateClassInPrivateModule { } export class publicClassInPrivateModule { } class privateClassInPrivateModuleT { } export class publicClassInPrivateModuleT { } export interface publicInterfaceWithPrivateTypeParameters { myMethod(val: T): T; myMethod0(): publicClassInPrivateModuleT; myMethod1(): privateClassInPrivateModuleT; myMethod2(): privateClassInPrivateModuleT; myMethod3(): publicClassInPrivateModuleT; myMethod4(): publicClassInPrivateModuleT; } export interface publicInterfaceWithPublicTypeParameters { myMethod(val: T): T; myMethod0(): publicClassInPrivateModuleT myMethod1(): privateClassInPrivateModuleT; myMethod2(): privateClassInPrivateModuleT; myMethod3(): publicClassInPrivateModuleT; myMethod4(): publicClassInPrivateModuleT; } interface privateInterfaceWithPrivateTypeParameters { myMethod(val: T): T; myMethod0(): publicClassInPrivateModuleT; myMethod1(): privateClassInPrivateModuleT; myMethod2(): privateClassInPrivateModuleT; myMethod3(): publicClassInPrivateModuleT; myMethod4(): publicClassInPrivateModuleT; } interface privateInterfaceWithPublicTypeParameters { myMethod(val: T): T; myMethod0(): publicClassInPrivateModuleT; myMethod1(): privateClassInPrivateModuleT; myMethod2(): privateClassInPrivateModuleT; myMethod3(): publicClassInPrivateModuleT; myMethod4(): publicClassInPrivateModuleT; } export interface publicInterfaceWithPublicTypeParametersWithoutExtends { myMethod(val: T): T; myMethod0(): publicClassInPrivateModuleT; } interface privateInterfaceWithPublicTypeParametersWithoutExtends { myMethod(val: T): T; myMethod0(): publicClassInPrivateModuleT; } }