=== tests/cases/compiler/genericClasses4.ts === // once caused stack overflow class Vec2_T >Vec2_T : Vec2_T, Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) >A : A, Symbol(A, Decl(genericClasses4.ts, 1, 13)) { constructor(public x: A, public y: A) { } >x : A, Symbol(x, Decl(genericClasses4.ts, 3, 16)) >A : A, Symbol(A, Decl(genericClasses4.ts, 1, 13)) >y : A, Symbol(y, Decl(genericClasses4.ts, 3, 28)) >A : A, Symbol(A, Decl(genericClasses4.ts, 1, 13)) fmap(f: (a: A) => B): Vec2_T { >fmap : (f: (a: A) => B) => Vec2_T, Symbol(fmap, Decl(genericClasses4.ts, 3, 45)) >B : B, Symbol(B, Decl(genericClasses4.ts, 4, 9)) >f : (a: A) => B, Symbol(f, Decl(genericClasses4.ts, 4, 12)) >a : A, Symbol(a, Decl(genericClasses4.ts, 4, 16)) >A : A, Symbol(A, Decl(genericClasses4.ts, 1, 13)) >B : B, Symbol(B, Decl(genericClasses4.ts, 4, 9)) >Vec2_T : Vec2_T, Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) >B : B, Symbol(B, Decl(genericClasses4.ts, 4, 9)) var x:B = f(this.x); >x : B, Symbol(x, Decl(genericClasses4.ts, 5, 11)) >B : B, Symbol(B, Decl(genericClasses4.ts, 4, 9)) >f(this.x) : B >f : (a: A) => B, Symbol(f, Decl(genericClasses4.ts, 4, 12)) >this.x : A, Symbol(x, Decl(genericClasses4.ts, 3, 16)) >this : Vec2_T, Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) >x : A, Symbol(x, Decl(genericClasses4.ts, 3, 16)) var y:B = f(this.y); >y : B, Symbol(y, Decl(genericClasses4.ts, 6, 11)) >B : B, Symbol(B, Decl(genericClasses4.ts, 4, 9)) >f(this.y) : B >f : (a: A) => B, Symbol(f, Decl(genericClasses4.ts, 4, 12)) >this.y : A, Symbol(y, Decl(genericClasses4.ts, 3, 28)) >this : Vec2_T, Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) >y : A, Symbol(y, Decl(genericClasses4.ts, 3, 28)) var retval: Vec2_T = new Vec2_T(x, y); >retval : Vec2_T, Symbol(retval, Decl(genericClasses4.ts, 7, 11)) >Vec2_T : Vec2_T, Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) >B : B, Symbol(B, Decl(genericClasses4.ts, 4, 9)) >new Vec2_T(x, y) : Vec2_T >Vec2_T : typeof Vec2_T, Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) >x : B, Symbol(x, Decl(genericClasses4.ts, 5, 11)) >y : B, Symbol(y, Decl(genericClasses4.ts, 6, 11)) return retval; >retval : Vec2_T, Symbol(retval, Decl(genericClasses4.ts, 7, 11)) } apply(f: Vec2_T<(a: A) => B>): Vec2_T { >apply : (f: Vec2_T<(a: A) => B>) => Vec2_T, Symbol(apply, Decl(genericClasses4.ts, 9, 5)) >B : B, Symbol(B, Decl(genericClasses4.ts, 10, 10)) >f : Vec2_T<(a: A) => B>, Symbol(f, Decl(genericClasses4.ts, 10, 13)) >Vec2_T : Vec2_T, Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) >a : A, Symbol(a, Decl(genericClasses4.ts, 10, 24)) >A : A, Symbol(A, Decl(genericClasses4.ts, 1, 13)) >B : B, Symbol(B, Decl(genericClasses4.ts, 10, 10)) >Vec2_T : Vec2_T, Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) >B : B, Symbol(B, Decl(genericClasses4.ts, 10, 10)) var x:B = f.x(this.x); >x : B, Symbol(x, Decl(genericClasses4.ts, 11, 11)) >B : B, Symbol(B, Decl(genericClasses4.ts, 10, 10)) >f.x(this.x) : B >f.x : (a: A) => B, Symbol(Vec2_T.x, Decl(genericClasses4.ts, 3, 16)) >f : Vec2_T<(a: A) => B>, Symbol(f, Decl(genericClasses4.ts, 10, 13)) >x : (a: A) => B, Symbol(Vec2_T.x, Decl(genericClasses4.ts, 3, 16)) >this.x : A, Symbol(x, Decl(genericClasses4.ts, 3, 16)) >this : Vec2_T, Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) >x : A, Symbol(x, Decl(genericClasses4.ts, 3, 16)) var y:B = f.y(this.y); >y : B, Symbol(y, Decl(genericClasses4.ts, 12, 11)) >B : B, Symbol(B, Decl(genericClasses4.ts, 10, 10)) >f.y(this.y) : B >f.y : (a: A) => B, Symbol(Vec2_T.y, Decl(genericClasses4.ts, 3, 28)) >f : Vec2_T<(a: A) => B>, Symbol(f, Decl(genericClasses4.ts, 10, 13)) >y : (a: A) => B, Symbol(Vec2_T.y, Decl(genericClasses4.ts, 3, 28)) >this.y : A, Symbol(y, Decl(genericClasses4.ts, 3, 28)) >this : Vec2_T, Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) >y : A, Symbol(y, Decl(genericClasses4.ts, 3, 28)) var retval: Vec2_T = new Vec2_T(x, y); >retval : Vec2_T, Symbol(retval, Decl(genericClasses4.ts, 13, 11)) >Vec2_T : Vec2_T, Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) >B : B, Symbol(B, Decl(genericClasses4.ts, 10, 10)) >new Vec2_T(x, y) : Vec2_T >Vec2_T : typeof Vec2_T, Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) >x : B, Symbol(x, Decl(genericClasses4.ts, 11, 11)) >y : B, Symbol(y, Decl(genericClasses4.ts, 12, 11)) return retval; >retval : Vec2_T, Symbol(retval, Decl(genericClasses4.ts, 13, 11)) } }