=== tests/cases/compiler/promiseTest.ts === interface Promise { >Promise : Symbol(Promise, Decl(promiseTest.ts, 0, 0)) >T : Symbol(T, Decl(promiseTest.ts, 1, 18)) then(success?: (value: T) => Promise): Promise; >then : Symbol(then, Decl(promiseTest.ts, 1, 22), Decl(promiseTest.ts, 2, 60)) >A : Symbol(A, Decl(promiseTest.ts, 2, 9)) >success : Symbol(success, Decl(promiseTest.ts, 2, 12)) >value : Symbol(value, Decl(promiseTest.ts, 2, 23)) >T : Symbol(T, Decl(promiseTest.ts, 1, 18)) >Promise : Symbol(Promise, Decl(promiseTest.ts, 0, 0)) >A : Symbol(A, Decl(promiseTest.ts, 2, 9)) >Promise : Symbol(Promise, Decl(promiseTest.ts, 0, 0)) >A : Symbol(A, Decl(promiseTest.ts, 2, 9)) then(success?: (value: T) => B): Promise; >then : Symbol(then, Decl(promiseTest.ts, 1, 22), Decl(promiseTest.ts, 2, 60)) >B : Symbol(B, Decl(promiseTest.ts, 3, 9)) >success : Symbol(success, Decl(promiseTest.ts, 3, 12)) >value : Symbol(value, Decl(promiseTest.ts, 3, 23)) >T : Symbol(T, Decl(promiseTest.ts, 1, 18)) >B : Symbol(B, Decl(promiseTest.ts, 3, 9)) >Promise : Symbol(Promise, Decl(promiseTest.ts, 0, 0)) >B : Symbol(B, Decl(promiseTest.ts, 3, 9)) data: T; >data : Symbol(data, Decl(promiseTest.ts, 3, 51)) >T : Symbol(T, Decl(promiseTest.ts, 1, 18)) } var p: Promise = null; >p : Symbol(p, Decl(promiseTest.ts, 7, 3)) >Promise : Symbol(Promise, Decl(promiseTest.ts, 0, 0)) var p2 = p.then(function (x) { >p2 : Symbol(p2, Decl(promiseTest.ts, 8, 3)) >p.then : Symbol(Promise.then, Decl(promiseTest.ts, 1, 22), Decl(promiseTest.ts, 2, 60)) >p : Symbol(p, Decl(promiseTest.ts, 7, 3)) >then : Symbol(Promise.then, Decl(promiseTest.ts, 1, 22), Decl(promiseTest.ts, 2, 60)) >x : Symbol(x, Decl(promiseTest.ts, 8, 26)) return p; >p : Symbol(p, Decl(promiseTest.ts, 7, 3)) } ); var x = p2.data; // number >x : Symbol(x, Decl(promiseTest.ts, 12, 3)) >p2.data : Symbol(Promise.data, Decl(promiseTest.ts, 3, 51)) >p2 : Symbol(p2, Decl(promiseTest.ts, 8, 3)) >data : Symbol(Promise.data, Decl(promiseTest.ts, 3, 51))