=== tests/cases/compiler/declFileTypeAnnotationArrayType.ts === class c { >c : c } module m { >m : typeof m export class c { >c : c } export class g { >g : g >T : T } } class g { >g : g >T : T } // Just the name function foo(): c[] { >foo : () => c[] >c : c return [new c()]; >[new c()] : c[] >new c() : c >c : typeof c } function foo2() { >foo2 : () => c[] return [new c()]; >[new c()] : c[] >new c() : c >c : typeof c } // Qualified name function foo3(): m.c[] { >foo3 : () => m.c[] >m : unknown >c : m.c return [new m.c()]; >[new m.c()] : m.c[] >new m.c() : m.c >m.c : typeof m.c >m : typeof m >c : typeof m.c } function foo4() { >foo4 : () => typeof m.c return m.c; >m.c : typeof m.c >m : typeof m >c : typeof m.c } // Just the name with type arguments function foo5(): g[] { >foo5 : () => g[] >g : g return [new g()]; >[new g()] : g[] >new g() : g >g : typeof g } function foo6() { >foo6 : () => g[] return [new g()]; >[new g()] : g[] >new g() : g >g : typeof g } // Qualified name with type arguments function foo7(): m.g[] { >foo7 : () => m.g[] >m : unknown >g : m.g return [new m.g()]; >[new m.g()] : m.g[] >new m.g() : m.g >m.g : typeof m.g >m : typeof m >g : typeof m.g } function foo8() { >foo8 : () => m.g[] return [new m.g()]; >[new m.g()] : m.g[] >new m.g() : m.g >m.g : typeof m.g >m : typeof m >g : typeof m.g } // Array of function types function foo9(): (()=>c)[] { >foo9 : () => (() => c)[] >c : c return [() => new c()]; >[() => new c()] : (() => c)[] >() => new c() : () => c >new c() : c >c : typeof c } function foo10() { >foo10 : () => (() => c)[] return [() => new c()]; >[() => new c()] : (() => c)[] >() => new c() : () => c >new c() : c >c : typeof c }