tests/cases/conformance/types/keyof/circularIndexedAccessErrors.ts(2,5): error TS2502: 'x' is referenced directly or indirectly in its own type annotation.
tests/cases/conformance/types/keyof/circularIndexedAccessErrors.ts(11,11): error TS2589: Type instantiation is excessively deep and possibly infinite.
tests/cases/conformance/types/keyof/circularIndexedAccessErrors.ts(18,5): error TS2502: 'x' is referenced directly or indirectly in its own type annotation.
tests/cases/conformance/types/keyof/circularIndexedAccessErrors.ts(22,5): error TS2502: 'x' is referenced directly or indirectly in its own type annotation.
tests/cases/conformance/types/keyof/circularIndexedAccessErrors.ts(37,24): error TS2313: Type parameter 'T' has a circular constraint.
tests/cases/conformance/types/keyof/circularIndexedAccessErrors.ts(37,30): error TS2536: Type '"hello"' cannot be used to index type 'T'.


==== tests/cases/conformance/types/keyof/circularIndexedAccessErrors.ts (6 errors) ====
    type T1 = {
        x: T1["x"];  // Error
        ~
!!! error TS2502: 'x' is referenced directly or indirectly in its own type annotation.
    };
    
    type T2<K extends "x" | "y"> = {
        x: T2<K>[K];  // Error
        y: number;
    }
    
    declare let x2: T2<"x">;
    let x2x = x2.x;
              ~~~~
!!! error TS2589: Type instantiation is excessively deep and possibly infinite.
    
    interface T3<T extends T3<T>> {
        x: T["x"];
    }
    
    interface T4<T extends T4<T>> {
        x: T4<T>["x"];  // Error
        ~
!!! error TS2502: 'x' is referenced directly or indirectly in its own type annotation.
    }
    
    class C1 {
        x: C1["x"];  // Error
        ~
!!! error TS2502: 'x' is referenced directly or indirectly in its own type annotation.
    }
    
    class C2 {
        x: this["y"];
        y: this["z"];
        z: this["x"];
    }
    
    // Repro from #12627
    
    interface Foo {
        hello: boolean;
    }
    
    function foo<T extends Foo | T["hello"]>() {
                           ~~~~~~~~~~~~~~~~
!!! error TS2313: Type parameter 'T' has a circular constraint.
                                 ~~~~~~~~~~
!!! error TS2536: Type '"hello"' cannot be used to index type 'T'.
    }
    