=== tests/cases/compiler/commentsInheritance.ts === /** i1 is interface with properties*/ interface i1 { >i1 : i1 /** i1_p1*/ i1_p1: number; >i1_p1 : number /** i1_f1*/ i1_f1(): void; >i1_f1 : () => void /** i1_l1*/ i1_l1: () => void; >i1_l1 : () => void // il_nc_p1 i1_nc_p1: number; >i1_nc_p1 : number i1_nc_f1(): void; >i1_nc_f1 : () => void i1_nc_l1: () => void; >i1_nc_l1 : () => void p1: number; >p1 : number f1(): void; >f1 : () => void l1: () => void; >l1 : () => void nc_p1: number; >nc_p1 : number nc_f1(): void; >nc_f1 : () => void nc_l1: () => void; >nc_l1 : () => void } class c1 implements i1 { >c1 : c1 >i1 : i1 public i1_p1: number; >i1_p1 : number // i1_f1 public i1_f1() { >i1_f1 : () => void } public i1_l1: () => void; >i1_l1 : () => void public i1_nc_p1: number; >i1_nc_p1 : number public i1_nc_f1() { >i1_nc_f1 : () => void } public i1_nc_l1: () => void; >i1_nc_l1 : () => void /** c1_p1*/ public p1: number; >p1 : number /** c1_f1*/ public f1() { >f1 : () => void } /** c1_l1*/ public l1: () => void; >l1 : () => void /** c1_nc_p1*/ public nc_p1: number; >nc_p1 : number /** c1_nc_f1*/ public nc_f1() { >nc_f1 : () => void } /** c1_nc_l1*/ public nc_l1: () => void; >nc_l1 : () => void } var i1_i: i1; >i1_i : i1 >i1 : i1 var c1_i = new c1(); >c1_i : c1 >new c1() : c1 >c1 : typeof c1 // assign to interface i1_i = c1_i; >i1_i = c1_i : c1 >i1_i : i1 >c1_i : c1 class c2 { >c2 : c2 /** c2 c2_p1*/ public c2_p1: number; >c2_p1 : number /** c2 c2_f1*/ public c2_f1() { >c2_f1 : () => void } /** c2 c2_prop*/ public get c2_prop() { >c2_prop : number return 10; } public c2_nc_p1: number; >c2_nc_p1 : number public c2_nc_f1() { >c2_nc_f1 : () => void } public get c2_nc_prop() { >c2_nc_prop : number return 10; } /** c2 p1*/ public p1: number; >p1 : number /** c2 f1*/ public f1() { >f1 : () => void } /** c2 prop*/ public get prop() { >prop : number return 10; } public nc_p1: number; >nc_p1 : number public nc_f1() { >nc_f1 : () => void } public get nc_prop() { >nc_prop : number return 10; } /** c2 constructor*/ constructor(a: number) { >a : number this.c2_p1 = a; >this.c2_p1 = a : number >this.c2_p1 : number >this : c2 >c2_p1 : number >a : number } } class c3 extends c2 { >c3 : c3 >c2 : c2 constructor() { super(10); >super(10) : void >super : typeof c2 } /** c3 p1*/ public p1: number; >p1 : number /** c3 f1*/ public f1() { >f1 : () => void } /** c3 prop*/ public get prop() { >prop : number return 10; } public nc_p1: number; >nc_p1 : number public nc_f1() { >nc_f1 : () => void } public get nc_prop() { >nc_prop : number return 10; } } var c2_i = new c2(10); >c2_i : c2 >new c2(10) : c2 >c2 : typeof c2 var c3_i = new c3(); >c3_i : c3 >new c3() : c3 >c3 : typeof c3 // assign c2_i = c3_i; >c2_i = c3_i : c3 >c2_i : c2 >c3_i : c3 class c4 extends c2 { >c4 : c4 >c2 : c2 } var c4_i = new c4(10); >c4_i : c4 >new c4(10) : c4 >c4 : typeof c4 interface i2 { >i2 : i2 /** i2_p1*/ i2_p1: number; >i2_p1 : number /** i2_f1*/ i2_f1(): void; >i2_f1 : () => void /** i2_l1*/ i2_l1: () => void; >i2_l1 : () => void // i2_nc_p1 i2_nc_p1: number; >i2_nc_p1 : number i2_nc_f1(): void; >i2_nc_f1 : () => void i2_nc_l1: () => void; >i2_nc_l1 : () => void /** i2 p1*/ p1: number; >p1 : number /** i2 f1*/ f1(): void; >f1 : () => void /** i2 l1*/ l1: () => void; >l1 : () => void nc_p1: number; >nc_p1 : number nc_f1(): void; >nc_f1 : () => void nc_l1: () => void; >nc_l1 : () => void } interface i3 extends i2 { >i3 : i3 >i2 : i2 /** i3 p1 */ p1: number; >p1 : number /** * i3 f1 */ f1(): void; >f1 : () => void /** i3 l1*/ l1: () => void; >l1 : () => void nc_p1: number; >nc_p1 : number nc_f1(): void; >nc_f1 : () => void nc_l1: () => void; >nc_l1 : () => void } var i2_i: i2; >i2_i : i2 >i2 : i2 var i3_i: i3; >i3_i : i3 >i3 : i3 // assign to interface i2_i = i3_i; >i2_i = i3_i : i3 >i2_i : i2 >i3_i : i3