Test cases for array type annotation

This commit is contained in:
Sheetal Nandi 2014-11-10 16:38:15 -08:00
parent ab1558828a
commit 737b72d73d
3 changed files with 315 additions and 0 deletions

View File

@ -0,0 +1,137 @@
//// [declFileTypeAnnotationArrayType.ts]
class c {
}
module m {
export class c {
}
export class g<T> {
}
}
class g<T> {
}
// 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<string>[] {
return [new g<string>()];
}
function foo6() {
return [new g<string>()];
}
// Qualified name with type arguments
function foo7(): m.g<number>[] {
return [new m.g<number>()];
}
function foo8() {
return [new m.g<number>()];
}
// Array of function types
function foo9(): (()=>c)[] {
return [() => new c()];
}
function foo10() {
return [() => new c()];
}
//// [declFileTypeAnnotationArrayType.js]
var c = (function () {
function c() {
}
return c;
})();
var m;
(function (m) {
var c = (function () {
function c() {
}
return c;
})();
m.c = c;
var g = (function () {
function g() {
}
return g;
})();
m.g = g;
})(m || (m = {}));
var g = (function () {
function g() {
}
return g;
})();
// Just the name
function foo() {
return [new c()];
}
function foo2() {
return [new c()];
}
// Qualified name
function foo3() {
return [new m.c()];
}
function foo4() {
return m.c;
}
// Just the name with type arguments
function foo5() {
return [new g()];
}
function foo6() {
return [new g()];
}
// Qualified name with type arguments
function foo7() {
return [new m.g()];
}
function foo8() {
return [new m.g()];
}
// Array of function types
function foo9() {
return [function () { return new c(); }];
}
function foo10() {
return [function () { return new c(); }];
}
//// [declFileTypeAnnotationArrayType.d.ts]
declare class c {
}
declare module m {
class c {
}
class g<T> {
}
}
declare class g<T> {
}
declare function foo(): c[];
declare function foo2(): c[];
declare function foo3(): m.c[];
declare function foo4(): typeof m.c;
declare function foo5(): g<string>[];
declare function foo6(): g<string>[];
declare function foo7(): m.g<number>[];
declare function foo8(): m.g<number>[];
declare function foo9(): (() => c)[];
declare function foo10(): (() => c)[];

View File

@ -0,0 +1,125 @@
=== tests/cases/compiler/declFileTypeAnnotationArrayType.ts ===
class c {
>c : c
}
module m {
>m : typeof m
export class c {
>c : c
}
export class g<T> {
>g : g<T>
>T : T
}
}
class g<T> {
>g : g<T>
>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<string>[] {
>foo5 : () => g<string>[]
>g : g<T>
return [new g<string>()];
>[new g<string>()] : g<string>[]
>new g<string>() : g<string>
>g : typeof g
}
function foo6() {
>foo6 : () => g<string>[]
return [new g<string>()];
>[new g<string>()] : g<string>[]
>new g<string>() : g<string>
>g : typeof g
}
// Qualified name with type arguments
function foo7(): m.g<number>[] {
>foo7 : () => m.g<number>[]
>m : unknown
>g : m.g<T>
return [new m.g<number>()];
>[new m.g<number>()] : m.g<number>[]
>new m.g<number>() : m.g<number>
>m.g : typeof m.g
>m : typeof m
>g : typeof m.g
}
function foo8() {
>foo8 : () => m.g<number>[]
return [new m.g<number>()];
>[new m.g<number>()] : m.g<number>[]
>new m.g<number>() : m.g<number>
>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
}

View File

@ -0,0 +1,53 @@
// @target: ES5
// @declaration: true
class c {
}
module m {
export class c {
}
export class g<T> {
}
}
class g<T> {
}
// 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<string>[] {
return [new g<string>()];
}
function foo6() {
return [new g<string>()];
}
// Qualified name with type arguments
function foo7(): m.g<number>[] {
return [new m.g<number>()];
}
function foo8() {
return [new m.g<number>()];
}
// Array of function types
function foo9(): (()=>c)[] {
return [() => new c()];
}
function foo10() {
return [() => new c()];
}