Type annotation of tuple type emit in the declaration file

This commit is contained in:
Sheetal Nandi 2014-11-10 16:45:42 -08:00
parent 737b72d73d
commit 5207bd9625
3 changed files with 148 additions and 0 deletions

View File

@ -0,0 +1,68 @@
//// [declFileTypeAnnotationTupleType.ts]
class c {
}
module m {
export class c {
}
export class g<T> {
}
}
class g<T> {
}
// Just the name
var k: [c, m.c] = [new c(), new m.c()];
var l = k;
var x: [g<string>, m.g<number>, () => c] = [new g<string>(), new m.g<number>(), () => new c()];
var y = x;
//// [declFileTypeAnnotationTupleType.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
var k = [new c(), new m.c()];
var l = k;
var x = [new g(), new m.g(), function () { return new c(); }];
var y = x;
//// [declFileTypeAnnotationTupleType.d.ts]
declare class c {
}
declare module m {
class c {
}
class g<T> {
}
}
declare class g<T> {
}
declare var k: [c, m.c];
declare var l: [c, m.c];
declare var x: [g<string>, m.g<number>, () => c];
declare var y: [g<string>, m.g<number>, () => c];

View File

@ -0,0 +1,60 @@
=== tests/cases/compiler/declFileTypeAnnotationTupleType.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
var k: [c, m.c] = [new c(), new m.c()];
>k : [c, m.c]
>c : c
>m : unknown
>c : m.c
>[new c(), new m.c()] : [c, m.c]
>new c() : c
>c : typeof c
>new m.c() : m.c
>m.c : typeof m.c
>m : typeof m
>c : typeof m.c
var l = k;
>l : [c, m.c]
>k : [c, m.c]
var x: [g<string>, m.g<number>, () => c] = [new g<string>(), new m.g<number>(), () => new c()];
>x : [g<string>, m.g<number>, () => c]
>g : g<T>
>m : unknown
>g : m.g<T>
>c : c
>[new g<string>(), new m.g<number>(), () => new c()] : [g<string>, m.g<number>, () => c]
>new g<string>() : g<string>
>g : typeof g
>new m.g<number>() : m.g<number>
>m.g : typeof m.g
>m : typeof m
>g : typeof m.g
>() => new c() : () => c
>new c() : c
>c : typeof c
var y = x;
>y : [g<string>, m.g<number>, () => c]
>x : [g<string>, m.g<number>, () => c]

View File

@ -0,0 +1,20 @@
// @target: ES5
// @declaration: true
class c {
}
module m {
export class c {
}
export class g<T> {
}
}
class g<T> {
}
// Just the name
var k: [c, m.c] = [new c(), new m.c()];
var l = k;
var x: [g<string>, m.g<number>, () => c] = [new g<string>(), new m.g<number>(), () => new c()];
var y = x;