=== tests/cases/compiler/noUnusedLocals_selfReference.ts ===
export {}; // Make this a module scope, so these are local variables.

function f() {
>f : Symbol(f, Decl(noUnusedLocals_selfReference.ts, 0, 10))

    f;
>f : Symbol(f, Decl(noUnusedLocals_selfReference.ts, 0, 10))

    function g() {
>g : Symbol(g, Decl(noUnusedLocals_selfReference.ts, 3, 6))

        g;
>g : Symbol(g, Decl(noUnusedLocals_selfReference.ts, 3, 6))
    }
}
class C {
>C : Symbol(C, Decl(noUnusedLocals_selfReference.ts, 7, 1))

    m() { C; }
>m : Symbol(C.m, Decl(noUnusedLocals_selfReference.ts, 8, 9))
>C : Symbol(C, Decl(noUnusedLocals_selfReference.ts, 7, 1))
}
enum E { A = 0, B = E.A }
>E : Symbol(E, Decl(noUnusedLocals_selfReference.ts, 10, 1))
>A : Symbol(E.A, Decl(noUnusedLocals_selfReference.ts, 11, 8))
>B : Symbol(E.B, Decl(noUnusedLocals_selfReference.ts, 11, 15))
>E.A : Symbol(E.A, Decl(noUnusedLocals_selfReference.ts, 11, 8))
>E : Symbol(E, Decl(noUnusedLocals_selfReference.ts, 10, 1))
>A : Symbol(E.A, Decl(noUnusedLocals_selfReference.ts, 11, 8))

class P { private m() { this.m; } }
>P : Symbol(P, Decl(noUnusedLocals_selfReference.ts, 11, 25))
>m : Symbol(P.m, Decl(noUnusedLocals_selfReference.ts, 13, 9))
>this.m : Symbol(P.m, Decl(noUnusedLocals_selfReference.ts, 13, 9))
>this : Symbol(P, Decl(noUnusedLocals_selfReference.ts, 11, 25))
>m : Symbol(P.m, Decl(noUnusedLocals_selfReference.ts, 13, 9))

P;
>P : Symbol(P, Decl(noUnusedLocals_selfReference.ts, 11, 25))

// Does not detect mutual recursion.
function g() { D; }
>g : Symbol(g, Decl(noUnusedLocals_selfReference.ts, 14, 2))
>D : Symbol(D, Decl(noUnusedLocals_selfReference.ts, 17, 19))

class D { m() { g; } }
>D : Symbol(D, Decl(noUnusedLocals_selfReference.ts, 17, 19))
>m : Symbol(D.m, Decl(noUnusedLocals_selfReference.ts, 18, 9))
>g : Symbol(g, Decl(noUnusedLocals_selfReference.ts, 14, 2))

