=== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingClass.ts === class C { >C : C foo: string; >foo : string thing() { } >thing : () => void static other() { } >other : () => void } class D extends C { >D : D >C : C bar: string; >bar : string } var d: D; >d : D >D : D var r = d.foo; >r : string >d.foo : string >d : D >foo : string var r2 = d.bar; >r2 : string >d.bar : string >d : D >bar : string var r3 = d.thing(); >r3 : void >d.thing() : void >d.thing : () => void >d : D >thing : () => void var r4 = D.other(); >r4 : void >D.other() : void >D.other : () => void >D : typeof D >other : () => void class C2 { >C2 : C2 >T : T foo: T; >foo : T >T : T thing(x: T) { } >thing : (x: T) => void >x : T >T : T static other(x: T) { } >other : (x: T) => void >T : T >x : T >T : T } class D2 extends C2 { >D2 : D2 >T : T >C2 : C2 >T : T bar: string; >bar : string } var d2: D2; >d2 : D2 >D2 : D2 var r5 = d2.foo; >r5 : string >d2.foo : string >d2 : D2 >foo : string var r6 = d2.bar; >r6 : string >d2.bar : string >d2 : D2 >bar : string var r7 = d2.thing(''); >r7 : void >d2.thing('') : void >d2.thing : (x: string) => void >d2 : D2 >thing : (x: string) => void >'' : string var r8 = D2.other(1); >r8 : void >D2.other(1) : void >D2.other : (x: T) => void >D2 : typeof D2 >other : (x: T) => void >1 : number