classExtendsItselfIndirectly_file1.ts(1,7): error TS2506: 'C' is referenced directly or indirectly in its own base expression.
classExtendsItselfIndirectly_file1.ts(1,21): error TS2564: Property 'foo' has no initializer and is not definitely assigned in the constructor.
classExtendsItselfIndirectly_file2.ts(1,7): error TS2506: 'D' is referenced directly or indirectly in its own base expression.
classExtendsItselfIndirectly_file2.ts(1,21): error TS2564: Property 'bar' has no initializer and is not definitely assigned in the constructor.
classExtendsItselfIndirectly_file3.ts(1,7): error TS2506: 'E' is referenced directly or indirectly in its own base expression.
classExtendsItselfIndirectly_file3.ts(1,21): error TS2564: Property 'baz' has no initializer and is not definitely assigned in the constructor.
classExtendsItselfIndirectly_file4.ts(1,7): error TS2506: 'C2' is referenced directly or indirectly in its own base expression.
classExtendsItselfIndirectly_file4.ts(1,29): error TS2564: Property 'foo' has no initializer and is not definitely assigned in the constructor.
classExtendsItselfIndirectly_file5.ts(1,7): error TS2506: 'D2' is referenced directly or indirectly in its own base expression.
classExtendsItselfIndirectly_file5.ts(1,29): error TS2564: Property 'bar' has no initializer and is not definitely assigned in the constructor.
classExtendsItselfIndirectly_file6.ts(1,7): error TS2506: 'E2' is referenced directly or indirectly in its own base expression.
classExtendsItselfIndirectly_file6.ts(1,29): error TS2564: Property 'baz' has no initializer and is not definitely assigned in the constructor.


==== classExtendsItselfIndirectly_file1.ts (2 errors) ====
    class C extends E { foo: string; } // error
          ~
!!! error TS2506: 'C' is referenced directly or indirectly in its own base expression.
                        ~~~
!!! error TS2564: Property 'foo' has no initializer and is not definitely assigned in the constructor.
    
==== classExtendsItselfIndirectly_file2.ts (2 errors) ====
    class D extends C { bar: string; }
          ~
!!! error TS2506: 'D' is referenced directly or indirectly in its own base expression.
                        ~~~
!!! error TS2564: Property 'bar' has no initializer and is not definitely assigned in the constructor.
    
==== classExtendsItselfIndirectly_file3.ts (2 errors) ====
    class E extends D { baz: number; }
          ~
!!! error TS2506: 'E' is referenced directly or indirectly in its own base expression.
                        ~~~
!!! error TS2564: Property 'baz' has no initializer and is not definitely assigned in the constructor.
    
==== classExtendsItselfIndirectly_file4.ts (2 errors) ====
    class C2<T> extends E2<T> { foo: T; } // error
          ~~
!!! error TS2506: 'C2' is referenced directly or indirectly in its own base expression.
                                ~~~
!!! error TS2564: Property 'foo' has no initializer and is not definitely assigned in the constructor.
    
==== classExtendsItselfIndirectly_file5.ts (2 errors) ====
    class D2<T> extends C2<T> { bar: T; }
          ~~
!!! error TS2506: 'D2' is referenced directly or indirectly in its own base expression.
                                ~~~
!!! error TS2564: Property 'bar' has no initializer and is not definitely assigned in the constructor.
    
==== classExtendsItselfIndirectly_file6.ts (2 errors) ====
    class E2<T> extends D2<T> { baz: T; }
          ~~
!!! error TS2506: 'E2' is referenced directly or indirectly in its own base expression.
                                ~~~
!!! error TS2564: Property 'baz' has no initializer and is not definitely assigned in the constructor.