tests/cases/compiler/implicitAnyFromCircularInference.ts(2,5): error TS2502: 'a' is referenced directly or indirectly in its own type annotation.
tests/cases/compiler/implicitAnyFromCircularInference.ts(5,5): error TS2502: 'b' is referenced directly or indirectly in its own type annotation.
tests/cases/compiler/implicitAnyFromCircularInference.ts(6,5): error TS2502: 'c' is referenced directly or indirectly in its own type annotation.
tests/cases/compiler/implicitAnyFromCircularInference.ts(9,5): error TS2502: 'd' is referenced directly or indirectly in its own type annotation.
tests/cases/compiler/implicitAnyFromCircularInference.ts(22,5): error TS7023: 'f2' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.
tests/cases/compiler/implicitAnyFromCircularInference.ts(25,10): error TS7023: 'h' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.
tests/cases/compiler/implicitAnyFromCircularInference.ts(27,14): error TS7023: 'foo' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.
tests/cases/compiler/implicitAnyFromCircularInference.ts(44,9): error TS7023: 'x' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.


==== tests/cases/compiler/implicitAnyFromCircularInference.ts (8 errors) ====
    // Error expected
    var a: typeof a;
        ~
!!! error TS2502: 'a' is referenced directly or indirectly in its own type annotation.
    
    // Error expected on b or c
    var b: typeof c;
        ~
!!! error TS2502: 'b' is referenced directly or indirectly in its own type annotation.
    var c: typeof b;
        ~
!!! error TS2502: 'c' is referenced directly or indirectly in its own type annotation.
    
    // Error expected
    var d: Array<typeof d>;
        ~
!!! error TS2502: 'd' is referenced directly or indirectly in its own type annotation.
    
    function f() { return f; }
    
    // Error expected
    function g() { return g(); }
    
    // Error expected
    var f1 = function () {
        return f1();
    };
    
    // Error expected
    var f2 = () => f2();
        ~~
!!! error TS7023: 'f2' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.
    
    // Error expected
    function h() {
             ~
!!! error TS7023: 'h' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.
        return foo();
        function foo() {
                 ~~~
!!! error TS7023: 'foo' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.
            return h() || "hello";
        }
    }
    
    interface A {
        s: string;
    }
    
    function foo(x: A): string { return "abc"; }
    
    class C {
        s = foo(this);
    }
    
    class D {
        // Error expected
        get x() {
            ~
!!! error TS7023: 'x' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.
            return this.x;
        }
    }
    