Merge branch 'master' into bom

Conflicts:
	src/compiler/commandLineParser.ts
	src/compiler/emitter.ts
This commit is contained in:
Mohamed Hegazy
2014-08-06 12:55:57 -07:00
41 changed files with 5748 additions and 395 deletions

View File

@@ -0,0 +1,97 @@
// @module: commonjs
// @declaration: true
// @Filename: privacyClassExtendsClauseDeclFile_externalModule.ts
export module publicModule {
export class publicClassInPublicModule {
private f1() {
}
}
class privateClassInPublicModule {
}
class privateClassExtendingPublicClassInModule extends publicClassInPublicModule {
}
class privateClassExtendingPrivateClassInModule extends privateClassInPublicModule {
}
export class publicClassExtendingPublicClassInModule extends publicClassInPublicModule {
}
export class publicClassExtendingPrivateClassInModule extends privateClassInPublicModule { // Should error
}
class privateClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule {
}
export class publicClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule { // Should error
}
}
module privateModule {
export class publicClassInPrivateModule {
private f1() {
}
}
class privateClassInPrivateModule {
}
class privateClassExtendingPublicClassInModule extends publicClassInPrivateModule {
}
class privateClassExtendingPrivateClassInModule extends privateClassInPrivateModule {
}
export class publicClassExtendingPublicClassInModule extends publicClassInPrivateModule {
}
export class publicClassExtendingPrivateClassInModule extends privateClassInPrivateModule {
}
class privateClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule {
}
export class publicClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule {
}
}
export class publicClass {
private f1() {
}
}
class privateClass {
}
class privateClassExtendingPublicClass extends publicClass {
}
class privateClassExtendingPrivateClassInModule extends privateClass {
}
export class publicClassExtendingPublicClass extends publicClass {
}
export class publicClassExtendingPrivateClass extends privateClass { // Should error
}
class privateClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule {
}
export class publicClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule { // Should error
}
// @Filename: privacyClassExtendsClauseDeclFile_GlobalFile.ts
module publicModuleInGlobal {
export class publicClassInPublicModule {
private f1() {
}
}
class privateClassInPublicModule {
}
class privateClassExtendingPublicClassInModule extends publicClassInPublicModule {
}
class privateClassExtendingPrivateClassInModule extends privateClassInPublicModule {
}
export class publicClassExtendingPublicClassInModule extends publicClassInPublicModule {
}
export class publicClassExtendingPrivateClassInModule extends privateClassInPublicModule { // Should error
}
}
class publicClassInGlobal {
}
class publicClassExtendingPublicClassInGlobal extends publicClassInGlobal {
}

View File

@@ -0,0 +1,94 @@
// @module: commonjs
// @declaration: true
// @Filename: privacyClassImplementsClauseDeclFile_externalModule.ts
export module publicModule {
export interface publicInterfaceInPublicModule {
}
interface privateInterfaceInPublicModule {
}
class privateClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
}
class privateClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule {
}
export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
}
export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule { // Should error
}
class privateClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
}
export class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule { // Should error
}
export class publicClassImplementingPrivateAndPublicInterface implements privateInterfaceInPublicModule, publicInterfaceInPublicModule { // Should error
}
}
module privateModule {
export interface publicInterfaceInPrivateModule {
}
interface privateInterfaceInPrivateModule {
}
class privateClassImplementingPublicInterfaceInModule implements publicInterfaceInPrivateModule {
}
class privateClassImplementingPrivateInterfaceInModule implements privateInterfaceInPrivateModule {
}
export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPrivateModule {
}
export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPrivateModule {
}
class privateClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
}
export class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
}
}
export interface publicInterface {
}
interface privateInterface {
}
class privateClassImplementingPublicInterface implements publicInterface {
}
class privateClassImplementingPrivateInterfaceInModule implements privateInterface {
}
export class publicClassImplementingPublicInterface implements publicInterface {
}
export class publicClassImplementingPrivateInterface implements privateInterface { // Should error
}
class privateClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
}
export class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule { // Should error
}
// @Filename: privacyClassImplementsClauseDeclFile_GlobalFile.ts
module publicModuleInGlobal {
export interface publicInterfaceInPublicModule {
}
interface privateInterfaceInPublicModule {
}
class privateClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
}
class privateClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule {
}
export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
}
export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule { // Should error
}
}
interface publicInterfaceInGlobal {
}
class publicClassImplementingPublicInterfaceInGlobal implements publicInterfaceInGlobal {
}

View File

@@ -0,0 +1,94 @@
// @module: commonjs
// @declaration: true
// @Filename: privacyInterfaceExtendsClauseDeclFile_externalModule.ts
export module publicModule {
export interface publicInterfaceInPublicModule {
}
interface privateInterfaceInPublicModule {
}
interface privateInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule {
}
interface privateInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule {
}
export interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule {
}
export interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule { // Should error
}
interface privateInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule { // Should error
}
export interface publicInterfaceImplementingPrivateAndPublicInterface extends privateInterfaceInPublicModule, publicInterfaceInPublicModule { // Should error
}
}
module privateModule {
export interface publicInterfaceInPrivateModule {
}
interface privateInterfaceInPrivateModule {
}
interface privateInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPrivateModule {
}
interface privateInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPrivateModule {
}
interface privateInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule {
}
}
export interface publicInterface {
}
interface privateInterface {
}
interface privateInterfaceImplementingPublicInterface extends publicInterface {
}
interface privateInterfaceImplementingPrivateInterfaceInModule extends privateInterface {
}
export interface publicInterfaceImplementingPublicInterface extends publicInterface {
}
export interface publicInterfaceImplementingPrivateInterface extends privateInterface { // Should error
}
interface privateInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule { // Should error
}
// @Filename: privacyInterfaceExtendsClauseDeclFile_GlobalFile.ts
module publicModuleInGlobal {
export interface publicInterfaceInPublicModule {
}
interface privateInterfaceInPublicModule {
}
interface privateInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule {
}
interface privateInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule {
}
export interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule {
}
export interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule { // Should error
}
}
interface publicInterfaceInGlobal {
}
interface publicInterfaceImplementingPublicInterfaceInGlobal extends publicInterfaceInGlobal {
}

View File

@@ -1,3 +1,4 @@
// @module: commonjs
class privateClass {
}

View File

@@ -0,0 +1,440 @@
// @module: commonjs
// @declaration: true
class privateClass {
}
export class publicClass {
}
export interface publicInterfaceWithPrivateTypeParameters {
new <T extends privateClass>(): privateClass; // Error
<T extends privateClass>(): privateClass; // Error
myMethod<T extends privateClass>(): privateClass; // Error
}
export interface publicInterfaceWithPublicTypeParameters {
new <T extends publicClass>(): publicClass;
<T extends publicClass>(): publicClass;
myMethod<T extends publicClass>(): publicClass;
}
interface privateInterfaceWithPrivateTypeParameters {
new <T extends privateClass>(): privateClass;
<T extends privateClass>(): privateClass;
myMethod<T extends privateClass>(): privateClass;
}
interface privateInterfaceWithPublicTypeParameters {
new <T extends publicClass>(): publicClass;
<T extends publicClass>(): publicClass;
myMethod<T extends publicClass>(): publicClass;
}
export class publicClassWithWithPrivateTypeParameters {
static myPublicStaticMethod<T extends privateClass>() { // Error
}
private static myPrivateStaticMethod<T extends privateClass>() {
}
myPublicMethod<T extends privateClass>() { // Error
}
private myPrivateMethod<T extends privateClass>() {
}
}
export class publicClassWithWithPublicTypeParameters {
static myPublicStaticMethod<T extends publicClass>() {
}
private static myPrivateStaticMethod<T extends publicClass>() {
}
myPublicMethod<T extends publicClass>() {
}
private myPrivateMethod<T extends publicClass>() {
}
}
class privateClassWithWithPrivateTypeParameters {
static myPublicStaticMethod<T extends privateClass>() {
}
private static myPrivateStaticMethod<T extends privateClass>() {
}
myPublicMethod<T extends privateClass>() {
}
private myPrivateMethod<T extends privateClass>() {
}
}
class privateClassWithWithPublicTypeParameters {
static myPublicStaticMethod<T extends publicClass>() {
}
private static myPrivateStaticMethod<T extends publicClass>() {
}
myPublicMethod<T extends publicClass>() {
}
private myPrivateMethod<T extends publicClass>() {
}
}
export function publicFunctionWithPrivateTypeParameters<T extends privateClass>() { // Error
}
export function publicFunctionWithPublicTypeParameters<T extends publicClass>() {
}
function privateFunctionWithPrivateTypeParameters<T extends privateClass>() {
}
function privateFunctionWithPublicTypeParameters<T extends publicClass>() {
}
export interface publicInterfaceWithPublicTypeParametersWithoutExtends {
new <T>(): publicClass;
<T>(): publicClass;
myMethod<T>(): publicClass;
}
interface privateInterfaceWithPublicTypeParametersWithoutExtends {
new <T>(): publicClass;
<T>(): publicClass;
myMethod<T>(): publicClass;
}
export class publicClassWithWithPublicTypeParametersWithoutExtends {
static myPublicStaticMethod<T>() {
}
private static myPrivateStaticMethod<T>() {
}
myPublicMethod<T>() {
}
private myPrivateMethod<T>() {
}
}
class privateClassWithWithPublicTypeParametersWithoutExtends {
static myPublicStaticMethod<T>() {
}
private static myPrivateStaticMethod<T>() {
}
myPublicMethod<T>() {
}
private myPrivateMethod<T>() {
}
}
export function publicFunctionWithPublicTypeParametersWithoutExtends<T>() {
}
function privateFunctionWithPublicTypeParametersWithoutExtends<T>() {
}
export interface publicInterfaceWithPrivatModuleTypeParameters {
new <T extends privateModule.publicClass>(): privateModule.publicClass; // Error
<T extends privateModule.publicClass>(): privateModule.publicClass; // Error
myMethod<T extends privateModule.publicClass>(): privateModule.publicClass; // Error
}
export class publicClassWithWithPrivateModuleTypeParameters {
static myPublicStaticMethod<T extends privateModule.publicClass>() { // Error
}
myPublicMethod<T extends privateModule.publicClass>() { // Error
}
}
export function publicFunctionWithPrivateMopduleTypeParameters<T extends privateModule.publicClass>() { // Error
}
interface privateInterfaceWithPrivatModuleTypeParameters {
new <T extends privateModule.publicClass>(): privateModule.publicClass;
<T extends privateModule.publicClass>(): privateModule.publicClass;
myMethod<T extends privateModule.publicClass>(): privateModule.publicClass;
}
class privateClassWithWithPrivateModuleTypeParameters {
static myPublicStaticMethod<T extends privateModule.publicClass>() {
}
myPublicMethod<T extends privateModule.publicClass>() {
}
}
function privateFunctionWithPrivateMopduleTypeParameters<T extends privateModule.publicClass>() {
}
export module publicModule {
class privateClass {
}
export class publicClass {
}
export interface publicInterfaceWithPrivateTypeParameters {
new <T extends privateClass>(): privateClass; // Error
<T extends privateClass>(): privateClass; // Error
myMethod<T extends privateClass>(): privateClass; // Error
}
export interface publicInterfaceWithPublicTypeParameters {
new <T extends publicClass>(): publicClass;
<T extends publicClass>(): publicClass;
myMethod<T extends publicClass>(): publicClass;
}
interface privateInterfaceWithPrivateTypeParameters {
new <T extends privateClass>(): privateClass;
<T extends privateClass>(): privateClass;
myMethod<T extends privateClass>(): privateClass;
}
interface privateInterfaceWithPublicTypeParameters {
new <T extends publicClass>(): publicClass;
<T extends publicClass>(): publicClass;
myMethod<T extends publicClass>(): publicClass;
}
export class publicClassWithWithPrivateTypeParameters {
static myPublicStaticMethod<T extends privateClass>() { // Error
}
private static myPrivateStaticMethod<T extends privateClass>() {
}
myPublicMethod<T extends privateClass>() { // Error
}
private myPrivateMethod<T extends privateClass>() {
}
}
export class publicClassWithWithPublicTypeParameters {
static myPublicStaticMethod<T extends publicClass>() {
}
private static myPrivateStaticMethod<T extends publicClass>() {
}
myPublicMethod<T extends publicClass>() {
}
private myPrivateMethod<T extends publicClass>() {
}
}
class privateClassWithWithPrivateTypeParameters {
static myPublicStaticMethod<T extends privateClass>() {
}
private static myPrivateStaticMethod<T extends privateClass>() {
}
myPublicMethod<T extends privateClass>() {
}
private myPrivateMethod<T extends privateClass>() {
}
}
class privateClassWithWithPublicTypeParameters {
static myPublicStaticMethod<T extends publicClass>() {
}
private static myPrivateStaticMethod<T extends publicClass>() {
}
myPublicMethod<T extends publicClass>() {
}
private myPrivateMethod<T extends publicClass>() {
}
}
export function publicFunctionWithPrivateTypeParameters<T extends privateClass>() { // Error
}
export function publicFunctionWithPublicTypeParameters<T extends publicClass>() {
}
function privateFunctionWithPrivateTypeParameters<T extends privateClass>() {
}
function privateFunctionWithPublicTypeParameters<T extends publicClass>() {
}
export interface publicInterfaceWithPublicTypeParametersWithoutExtends {
new <T>(): publicClass;
<T>(): publicClass;
myMethod<T>(): publicClass;
}
interface privateInterfaceWithPublicTypeParametersWithoutExtends {
new <T>(): publicClass;
<T>(): publicClass;
myMethod<T>(): publicClass;
}
export class publicClassWithWithPublicTypeParametersWithoutExtends {
static myPublicStaticMethod<T>() {
}
private static myPrivateStaticMethod<T>() {
}
myPublicMethod<T>() {
}
private myPrivateMethod<T>() {
}
}
class privateClassWithWithPublicTypeParametersWithoutExtends {
static myPublicStaticMethod<T>() {
}
private static myPrivateStaticMethod<T>() {
}
myPublicMethod<T>() {
}
private myPrivateMethod<T>() {
}
}
export function publicFunctionWithPublicTypeParametersWithoutExtends<T>() {
}
function privateFunctionWithPublicTypeParametersWithoutExtends<T>() {
}
export interface publicInterfaceWithPrivatModuleTypeParameters {
new <T extends privateModule.publicClass>(): privateModule.publicClass; // Error
<T extends privateModule.publicClass>(): privateModule.publicClass; // Error
myMethod<T extends privateModule.publicClass>(): privateModule.publicClass; // Error
}
export class publicClassWithWithPrivateModuleTypeParameters {
static myPublicStaticMethod<T extends privateModule.publicClass>() { // Error
}
myPublicMethod<T extends privateModule.publicClass>() { // Error
}
}
export function publicFunctionWithPrivateMopduleTypeParameters<T extends privateModule.publicClass>() { // Error
}
interface privateInterfaceWithPrivatModuleTypeParameters {
new <T extends privateModule.publicClass>(): privateModule.publicClass;
<T extends privateModule.publicClass>(): privateModule.publicClass;
myMethod<T extends privateModule.publicClass>(): privateModule.publicClass;
}
class privateClassWithWithPrivateModuleTypeParameters {
static myPublicStaticMethod<T extends privateModule.publicClass>() {
}
myPublicMethod<T extends privateModule.publicClass>() {
}
}
function privateFunctionWithPrivateMopduleTypeParameters<T extends privateModule.publicClass>() {
}
}
module privateModule {
class privateClass {
}
export class publicClass {
}
export interface publicInterfaceWithPrivateTypeParameters {
new <T extends privateClass>(): privateClass;
<T extends privateClass>(): privateClass;
myMethod<T extends privateClass>(): privateClass;
}
export interface publicInterfaceWithPublicTypeParameters {
new <T extends publicClass>(): publicClass;
<T extends publicClass>(): publicClass;
myMethod<T extends publicClass>(): publicClass;
}
interface privateInterfaceWithPrivateTypeParameters {
new <T extends privateClass>(): privateClass;
<T extends privateClass>(): privateClass;
myMethod<T extends privateClass>(): privateClass;
}
interface privateInterfaceWithPublicTypeParameters {
new <T extends publicClass>(): publicClass;
<T extends publicClass>(): publicClass;
myMethod<T extends publicClass>(): publicClass;
}
export class publicClassWithWithPrivateTypeParameters {
static myPublicStaticMethod<T extends privateClass>() {
}
private static myPrivateStaticMethod<T extends privateClass>() {
}
myPublicMethod<T extends privateClass>() {
}
private myPrivateMethod<T extends privateClass>() {
}
}
export class publicClassWithWithPublicTypeParameters {
static myPublicStaticMethod<T extends publicClass>() {
}
private static myPrivateStaticMethod<T extends publicClass>() {
}
myPublicMethod<T extends publicClass>() {
}
private myPrivateMethod<T extends publicClass>() {
}
}
class privateClassWithWithPrivateTypeParameters {
static myPublicStaticMethod<T extends privateClass>() {
}
private static myPrivateStaticMethod<T extends privateClass>() {
}
myPublicMethod<T extends privateClass>() {
}
private myPrivateMethod<T extends privateClass>() {
}
}
class privateClassWithWithPublicTypeParameters {
static myPublicStaticMethod<T extends publicClass>() {
}
private static myPrivateStaticMethod<T extends publicClass>() {
}
myPublicMethod<T extends publicClass>() {
}
private myPrivateMethod<T extends publicClass>() {
}
}
export function publicFunctionWithPrivateTypeParameters<T extends privateClass>() {
}
export function publicFunctionWithPublicTypeParameters<T extends publicClass>() {
}
function privateFunctionWithPrivateTypeParameters<T extends privateClass>() {
}
function privateFunctionWithPublicTypeParameters<T extends publicClass>() {
}
export interface publicInterfaceWithPublicTypeParametersWithoutExtends {
new <T>(): publicClass;
<T>(): publicClass;
myMethod<T>(): publicClass;
}
interface privateInterfaceWithPublicTypeParametersWithoutExtends {
new <T>(): publicClass;
<T>(): publicClass;
myMethod<T>(): publicClass;
}
export class publicClassWithWithPublicTypeParametersWithoutExtends {
static myPublicStaticMethod<T>() {
}
private static myPrivateStaticMethod<T>() {
}
myPublicMethod<T>() {
}
private myPrivateMethod<T>() {
}
}
class privateClassWithWithPublicTypeParametersWithoutExtends {
static myPublicStaticMethod<T>() {
}
private static myPrivateStaticMethod<T>() {
}
myPublicMethod<T>() {
}
private myPrivateMethod<T>() {
}
}
export function publicFunctionWithPublicTypeParametersWithoutExtends<T>() {
}
function privateFunctionWithPublicTypeParametersWithoutExtends<T>() {
}
}

View File

@@ -1,3 +1,4 @@
// @module: commonjs
class privateClass {
}

View File

@@ -0,0 +1,155 @@
// @module: commonjs
// @declaration: true
class privateClass {
}
export class publicClass {
}
export class publicClassWithPrivateTypeParameters<T extends privateClass> { // Error
myMethod(val: T): T {
return val;
}
}
export class publicClassWithPublicTypeParameters<T extends publicClass> {
myMethod(val: T): T {
return val;
}
}
class privateClassWithPrivateTypeParameters<T extends privateClass> {
myMethod(val: T): T {
return val;
}
}
class privateClassWithPublicTypeParameters<T extends publicClass> {
myMethod(val: T): T {
return val;
}
}
export class publicClassWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T {
return val;
}
}
class privateClassWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T {
return val;
}
}
export class publicClassWithTypeParametersFromPrivateModule<T extends privateModule.publicClassInPrivateModule> { // Error
myMethod(val: T): T {
return val;
}
}
class privateClassWithTypeParametersFromPrivateModule<T extends privateModule.publicClassInPrivateModule> {
myMethod(val: T): T {
return val;
}
}
export module publicModule {
class privateClassInPublicModule {
}
export class publicClassInPublicModule {
}
export class publicClassWithPrivateTypeParameters<T extends privateClassInPublicModule> { // Error
myMethod(val: T): T {
return val;
}
}
export class publicClassWithPublicTypeParameters<T extends publicClassInPublicModule> {
myMethod(val: T): T {
return val;
}
}
class privateClassWithPrivateTypeParameters<T extends privateClassInPublicModule> {
myMethod(val: T): T {
return val;
}
}
class privateClassWithPublicTypeParameters<T extends publicClassInPublicModule> {
myMethod(val: T): T {
return val;
}
}
export class publicClassWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T {
return val;
}
}
class privateClassWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T {
return val;
}
}
export class publicClassWithTypeParametersFromPrivateModule<T extends privateModule.publicClassInPrivateModule> { // Error
myMethod(val: T): T {
return val;
}
}
class privateClassWithTypeParametersFromPrivateModule<T extends privateModule.publicClassInPrivateModule> {
myMethod(val: T): T {
return val;
}
}
}
module privateModule {
class privateClassInPrivateModule {
}
export class publicClassInPrivateModule {
}
export class publicClassWithPrivateTypeParameters<T extends privateClassInPrivateModule> {
myMethod(val: T): T {
return val;
}
}
export class publicClassWithPublicTypeParameters<T extends publicClassInPrivateModule> {
myMethod(val: T): T {
return val;
}
}
class privateClassWithPrivateTypeParameters<T extends privateClassInPrivateModule> {
myMethod(val: T): T {
return val;
}
}
class privateClassWithPublicTypeParameters<T extends publicClassInPrivateModule> {
myMethod(val: T): T {
return val;
}
}
export class publicClassWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T {
return val;
}
}
class privateClassWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T {
return val;
}
}
}

View File

@@ -1,3 +1,4 @@
// @module: commonjs
class privateClass {
}

View File

@@ -0,0 +1,192 @@
// @module: commonjs
// @declaration: true
class privateClass {
}
export class publicClass {
}
class privateClassT<T> {
}
export class publicClassT<T> {
}
export interface publicInterfaceWithPrivateTypeParameters<T extends privateClass> { // Error
myMethod(val: T): T;
myMethod0(): publicClassT<T>;
myMethod1(): privateClassT<privateClass>;
myMethod2(): privateClassT<publicClass>;
myMethod3(): publicClassT<privateClass>;
myMethod4(): publicClassT<publicClass>;
}
export interface publicInterfaceWithPublicTypeParameters<T extends publicClass> {
myMethod(val: T): T;
myMethod0(): publicClassT<T>
myMethod1(): privateClassT<privateClass>;
myMethod2(): privateClassT<publicClass>;
myMethod3(): publicClassT<privateClass>;
myMethod4(): publicClassT<publicClass>;
}
interface privateInterfaceWithPrivateTypeParameters<T extends privateClass> {
myMethod(val: T): T;
myMethod0(): publicClassT<T>;
myMethod1(): privateClassT<privateClass>;
myMethod2(): privateClassT<publicClass>;
myMethod3(): publicClassT<privateClass>;
myMethod4(): publicClassT<publicClass>;
}
interface privateInterfaceWithPublicTypeParameters<T extends publicClass> {
myMethod(val: T): T;
myMethod0(): publicClassT<T>;
myMethod1(): privateClassT<privateClass>;
myMethod2(): privateClassT<publicClass>;
myMethod3(): publicClassT<privateClass>;
myMethod4(): publicClassT<publicClass>;
}
export interface publicInterfaceWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T;
myMethod0(): publicClassT<T>;
}
interface privateInterfaceWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T;
myMethod0(): publicClassT<T>;
}
export interface publicInterfaceWithPrivateModuleTypeParameterConstraints<T extends privateModule.publicClassInPrivateModule> { // Error
}
interface privateInterfaceWithPrivateModuleTypeParameterConstraints<T extends privateModule.publicClassInPrivateModule> { // Error
}
export module publicModule {
class privateClassInPublicModule {
}
export class publicClassInPublicModule {
}
class privateClassInPublicModuleT<T> {
}
export class publicClassInPublicModuleT<T> {
}
export interface publicInterfaceWithPrivateTypeParameters<T extends privateClassInPublicModule> { // Error
myMethod(val: T): T;
myMethod0(): publicClassInPublicModuleT<T>;
myMethod1(): privateClassInPublicModuleT<privateClassInPublicModule>;
myMethod2(): privateClassInPublicModuleT<publicClassInPublicModule>;
myMethod3(): publicClassInPublicModuleT<privateClassInPublicModule>;
myMethod4(): publicClassInPublicModuleT<publicClassInPublicModule>;
}
export interface publicInterfaceWithPublicTypeParameters<T extends publicClassInPublicModule> {
myMethod(val: T): T;
myMethod0(): publicClassInPublicModuleT<T>
myMethod1(): privateClassInPublicModuleT<privateClassInPublicModule>;
myMethod2(): privateClassInPublicModuleT<publicClassInPublicModule>;
myMethod3(): publicClassInPublicModuleT<privateClassInPublicModule>;
myMethod4(): publicClassInPublicModuleT<publicClassInPublicModule>;
}
interface privateInterfaceWithPrivateTypeParameters<T extends privateClassInPublicModule> {
myMethod(val: T): T;
myMethod0(): publicClassInPublicModuleT<T>;
myMethod1(): privateClassInPublicModuleT<privateClassInPublicModule>;
myMethod2(): privateClassInPublicModuleT<publicClassInPublicModule>;
myMethod3(): publicClassInPublicModuleT<privateClassInPublicModule>;
myMethod4(): publicClassInPublicModuleT<publicClassInPublicModule>;
}
interface privateInterfaceWithPublicTypeParameters<T extends publicClassInPublicModule> {
myMethod(val: T): T;
myMethod0(): publicClassInPublicModuleT<T>;
myMethod1(): privateClassInPublicModuleT<privateClassInPublicModule>;
myMethod2(): privateClassInPublicModuleT<publicClassInPublicModule>;
myMethod3(): publicClassInPublicModuleT<privateClassInPublicModule>;
myMethod4(): publicClassInPublicModuleT<publicClassInPublicModule>;
}
export interface publicInterfaceWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T;
myMethod0(): publicClassInPublicModuleT<T>;
}
interface privateInterfaceWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T;
myMethod0(): publicClassInPublicModuleT<T>;
}
export interface publicInterfaceWithPrivateModuleTypeParameterConstraints<T extends privateModule.publicClassInPrivateModule> { // Error
}
interface privateInterfaceWithPrivateModuleTypeParameterConstraints<T extends privateModule.publicClassInPrivateModule> { // Error
}
}
module privateModule {
class privateClassInPrivateModule {
}
export class publicClassInPrivateModule {
}
class privateClassInPrivateModuleT<T> {
}
export class publicClassInPrivateModuleT<T> {
}
export interface publicInterfaceWithPrivateTypeParameters<T extends privateClassInPrivateModule> {
myMethod(val: T): T;
myMethod0(): publicClassInPrivateModuleT<T>;
myMethod1(): privateClassInPrivateModuleT<privateClassInPrivateModule>;
myMethod2(): privateClassInPrivateModuleT<publicClassInPrivateModule>;
myMethod3(): publicClassInPrivateModuleT<privateClassInPrivateModule>;
myMethod4(): publicClassInPrivateModuleT<publicClassInPrivateModule>;
}
export interface publicInterfaceWithPublicTypeParameters<T extends publicClassInPrivateModule> {
myMethod(val: T): T;
myMethod0(): publicClassInPrivateModuleT<T>
myMethod1(): privateClassInPrivateModuleT<privateClassInPrivateModule>;
myMethod2(): privateClassInPrivateModuleT<publicClassInPrivateModule>;
myMethod3(): publicClassInPrivateModuleT<privateClassInPrivateModule>;
myMethod4(): publicClassInPrivateModuleT<publicClassInPrivateModule>;
}
interface privateInterfaceWithPrivateTypeParameters<T extends privateClassInPrivateModule> {
myMethod(val: T): T;
myMethod0(): publicClassInPrivateModuleT<T>;
myMethod1(): privateClassInPrivateModuleT<privateClassInPrivateModule>;
myMethod2(): privateClassInPrivateModuleT<publicClassInPrivateModule>;
myMethod3(): publicClassInPrivateModuleT<privateClassInPrivateModule>;
myMethod4(): publicClassInPrivateModuleT<publicClassInPrivateModule>;
}
interface privateInterfaceWithPublicTypeParameters<T extends publicClassInPrivateModule> {
myMethod(val: T): T;
myMethod0(): publicClassInPrivateModuleT<T>;
myMethod1(): privateClassInPrivateModuleT<privateClassInPrivateModule>;
myMethod2(): privateClassInPrivateModuleT<publicClassInPrivateModule>;
myMethod3(): publicClassInPrivateModuleT<privateClassInPrivateModule>;
myMethod4(): publicClassInPrivateModuleT<publicClassInPrivateModule>;
}
export interface publicInterfaceWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T;
myMethod0(): publicClassInPrivateModuleT<T>;
}
interface privateInterfaceWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T;
myMethod0(): publicClassInPrivateModuleT<T>;
}
}

View File

@@ -0,0 +1,22 @@
// @module: commonjs
// @declaration: true
class privateClass {
}
export class publicClass {
}
export class publicClassWithWithPrivateTypeParameters {
private static myPrivateStaticMethod1<T extends privateClass>() { // do not emit extends clause
}
private myPrivateMethod1<T extends privateClass>() { // do not emit extends clause
}
private static myPrivateStaticMethod2<T extends publicClass>() { // do not emit extends clause
}
private myPrivateMethod2<T extends publicClass>() { // do not emit extends clause
}
public static myPublicStaticMethod<T extends publicClass>() {
}
public myPublicMethod<T extends publicClass>() {
}
}