// @target: ES5 // @declaration: true class c { } module m { export class c { } export class g { } } class g { } // Just the name function foo(): c[] { return [new c()]; } function foo2() { return [new c()]; } // Qualified name function foo3(): m.c[] { return [new m.c()]; } function foo4() { return m.c; } // Just the name with type arguments function foo5(): g[] { return [new g()]; } function foo6() { return [new g()]; } // Qualified name with type arguments function foo7(): m.g[] { return [new m.g()]; } function foo8() { return [new m.g()]; } // Array of function types function foo9(): (()=>c)[] { return [() => new c()]; } function foo10() { return [() => new c()]; }