==== tests/cases/compiler/privacyTypeParametersOfClassDeclFile.ts (4 errors) ==== class privateClass { } export class publicClass { } export class publicClassWithPrivateTypeParameters { // Error ~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of exported class has or is using private name 'privateClass'. myMethod(val: T): T { return val; } } export class publicClassWithPublicTypeParameters { myMethod(val: T): T { return val; } } class privateClassWithPrivateTypeParameters { myMethod(val: T): T { return val; } } class privateClassWithPublicTypeParameters { myMethod(val: T): T { return val; } } export class publicClassWithPublicTypeParametersWithoutExtends { myMethod(val: T): T { return val; } } class privateClassWithPublicTypeParametersWithoutExtends { myMethod(val: T): T { return val; } } export class publicClassWithTypeParametersFromPrivateModule { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of exported class has or is using name 'privateModule.publicClassInPrivateModule' from private module 'privateModule'. myMethod(val: T): T { return val; } } class privateClassWithTypeParametersFromPrivateModule { myMethod(val: T): T { return val; } } export module publicModule { class privateClassInPublicModule { } export class publicClassInPublicModule { } export class publicClassWithPrivateTypeParameters { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of exported class has or is using private name 'privateClassInPublicModule'. myMethod(val: T): T { return val; } } export class publicClassWithPublicTypeParameters { myMethod(val: T): T { return val; } } class privateClassWithPrivateTypeParameters { myMethod(val: T): T { return val; } } class privateClassWithPublicTypeParameters { myMethod(val: T): T { return val; } } export class publicClassWithPublicTypeParametersWithoutExtends { myMethod(val: T): T { return val; } } class privateClassWithPublicTypeParametersWithoutExtends { myMethod(val: T): T { return val; } } export class publicClassWithTypeParametersFromPrivateModule { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Type parameter 'T' of exported class has or is using name 'privateModule.publicClassInPrivateModule' from private module 'privateModule'. myMethod(val: T): T { return val; } } class privateClassWithTypeParametersFromPrivateModule { myMethod(val: T): T { return val; } } } module privateModule { class privateClassInPrivateModule { } export class publicClassInPrivateModule { } export class publicClassWithPrivateTypeParameters { myMethod(val: T): T { return val; } } export class publicClassWithPublicTypeParameters { myMethod(val: T): T { return val; } } class privateClassWithPrivateTypeParameters { myMethod(val: T): T { return val; } } class privateClassWithPublicTypeParameters { myMethod(val: T): T { return val; } } export class publicClassWithPublicTypeParametersWithoutExtends { myMethod(val: T): T { return val; } } class privateClassWithPublicTypeParametersWithoutExtends { myMethod(val: T): T { return val; } } }