=== tests/cases/compiler/promiseIdentityWithConstraints.ts === interface IPromise { >IPromise : Symbol(IPromise, Decl(promiseIdentityWithConstraints.ts, 0, 0)) >T : Symbol(T, Decl(promiseIdentityWithConstraints.ts, 0, 19)) >V : Symbol(V, Decl(promiseIdentityWithConstraints.ts, 0, 21)) then(callback: (x: T) => IPromise): IPromise; >then : Symbol(then, Decl(promiseIdentityWithConstraints.ts, 0, 26)) >U : Symbol(U, Decl(promiseIdentityWithConstraints.ts, 1, 9)) >T : Symbol(T, Decl(promiseIdentityWithConstraints.ts, 0, 19)) >W : Symbol(W, Decl(promiseIdentityWithConstraints.ts, 1, 21)) >V : Symbol(V, Decl(promiseIdentityWithConstraints.ts, 0, 21)) >callback : Symbol(callback, Decl(promiseIdentityWithConstraints.ts, 1, 35)) >x : Symbol(x, Decl(promiseIdentityWithConstraints.ts, 1, 46)) >T : Symbol(T, Decl(promiseIdentityWithConstraints.ts, 0, 19)) >IPromise : Symbol(IPromise, Decl(promiseIdentityWithConstraints.ts, 0, 0)) >U : Symbol(U, Decl(promiseIdentityWithConstraints.ts, 1, 9)) >W : Symbol(W, Decl(promiseIdentityWithConstraints.ts, 1, 21)) >IPromise : Symbol(IPromise, Decl(promiseIdentityWithConstraints.ts, 0, 0)) >U : Symbol(U, Decl(promiseIdentityWithConstraints.ts, 1, 9)) >W : Symbol(W, Decl(promiseIdentityWithConstraints.ts, 1, 21)) } interface Promise { >Promise : Symbol(Promise, Decl(promiseIdentityWithConstraints.ts, 2, 1)) >T : Symbol(T, Decl(promiseIdentityWithConstraints.ts, 3, 18)) >V : Symbol(V, Decl(promiseIdentityWithConstraints.ts, 3, 20)) then(callback: (x: T) => Promise): Promise; >then : Symbol(then, Decl(promiseIdentityWithConstraints.ts, 3, 25)) >U : Symbol(U, Decl(promiseIdentityWithConstraints.ts, 4, 9)) >T : Symbol(T, Decl(promiseIdentityWithConstraints.ts, 3, 18)) >W : Symbol(W, Decl(promiseIdentityWithConstraints.ts, 4, 21)) >V : Symbol(V, Decl(promiseIdentityWithConstraints.ts, 3, 20)) >callback : Symbol(callback, Decl(promiseIdentityWithConstraints.ts, 4, 35)) >x : Symbol(x, Decl(promiseIdentityWithConstraints.ts, 4, 46)) >T : Symbol(T, Decl(promiseIdentityWithConstraints.ts, 3, 18)) >Promise : Symbol(Promise, Decl(promiseIdentityWithConstraints.ts, 2, 1)) >U : Symbol(U, Decl(promiseIdentityWithConstraints.ts, 4, 9)) >W : Symbol(W, Decl(promiseIdentityWithConstraints.ts, 4, 21)) >Promise : Symbol(Promise, Decl(promiseIdentityWithConstraints.ts, 2, 1)) >U : Symbol(U, Decl(promiseIdentityWithConstraints.ts, 4, 9)) >W : Symbol(W, Decl(promiseIdentityWithConstraints.ts, 4, 21)) } // Error because constraint V doesn't match var x: IPromise; >x : Symbol(x, Decl(promiseIdentityWithConstraints.ts, 8, 3), Decl(promiseIdentityWithConstraints.ts, 9, 3)) >IPromise : Symbol(IPromise, Decl(promiseIdentityWithConstraints.ts, 0, 0)) var x: Promise; >x : Symbol(x, Decl(promiseIdentityWithConstraints.ts, 8, 3), Decl(promiseIdentityWithConstraints.ts, 9, 3)) >Promise : Symbol(Promise, Decl(promiseIdentityWithConstraints.ts, 2, 1))