=== tests/cases/compiler/genericClasses3.ts === class B { >B : B, Symbol(B, Decl(genericClasses3.ts, 0, 0)) >T : T, Symbol(T, Decl(genericClasses3.ts, 0, 8)) a: T; >a : T, Symbol(a, Decl(genericClasses3.ts, 0, 12)) >T : T, Symbol(T, Decl(genericClasses3.ts, 0, 8)) b: T; >b : T, Symbol(b, Decl(genericClasses3.ts, 1, 9)) >T : T, Symbol(T, Decl(genericClasses3.ts, 0, 8)) } class C extends B { >C : C, Symbol(C, Decl(genericClasses3.ts, 3, 1)) >T : T, Symbol(T, Decl(genericClasses3.ts, 5, 8)) >B : B, Symbol(B, Decl(genericClasses3.ts, 0, 0)) >T : T, Symbol(T, Decl(genericClasses3.ts, 5, 8)) public x: T; >x : T, Symbol(x, Decl(genericClasses3.ts, 5, 25)) >T : T, Symbol(T, Decl(genericClasses3.ts, 5, 8)) } var v2: C ; >v2 : C, Symbol(v2, Decl(genericClasses3.ts, 9, 3)) >C : C, Symbol(C, Decl(genericClasses3.ts, 3, 1)) var y = v2.x; // should be 'string' >y : string, Symbol(y, Decl(genericClasses3.ts, 11, 3)) >v2.x : string, Symbol(C.x, Decl(genericClasses3.ts, 5, 25)) >v2 : C, Symbol(v2, Decl(genericClasses3.ts, 9, 3)) >x : string, Symbol(C.x, Decl(genericClasses3.ts, 5, 25)) var u = v2.a; // should be 'string' >u : string, Symbol(u, Decl(genericClasses3.ts, 12, 3)) >v2.a : string, Symbol(B.a, Decl(genericClasses3.ts, 0, 12)) >v2 : C, Symbol(v2, Decl(genericClasses3.ts, 9, 3)) >a : string, Symbol(B.a, Decl(genericClasses3.ts, 0, 12)) var z = v2.b; >z : string, Symbol(z, Decl(genericClasses3.ts, 14, 3)) >v2.b : string, Symbol(B.b, Decl(genericClasses3.ts, 1, 9)) >v2 : C, Symbol(v2, Decl(genericClasses3.ts, 9, 3)) >b : string, Symbol(B.b, Decl(genericClasses3.ts, 1, 9))