Tests for type reference annotation

This commit is contained in:
Sheetal Nandi
2014-11-10 16:30:09 -08:00
parent cee6452e93
commit e11fa3fcc7
3 changed files with 263 additions and 0 deletions

View File

@@ -0,0 +1,120 @@
//// [declFileTypeAnnotationTypeReference.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 new 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>();
}
//// [declFileTypeAnnotationTypeReference.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 new 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();
}
//// [declFileTypeAnnotationTypeReference.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(): m.c;
declare function foo5(): g<string>;
declare function foo6(): g<string>;
declare function foo7(): m.g<number>;
declare function foo8(): m.g<number>;

View File

@@ -0,0 +1,98 @@
=== tests/cases/compiler/declFileTypeAnnotationTypeReference.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
>c : typeof c
}
function foo2() {
>foo2 : () => c
return new 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
>m.c : typeof m.c
>m : typeof m
>c : typeof m.c
}
function foo4() {
>foo4 : () => m.c
return new m.c();
>new m.c() : 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>
>g : typeof g
}
function foo6() {
>foo6 : () => g<string>
return new 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>
>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>
>m.g : typeof m.g
>m : typeof m
>g : typeof m.g
}

View File

@@ -0,0 +1,45 @@
// @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 new 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>();
}