//// [tests/cases/compiler/classdecl.ts] ////

=== classdecl.ts ===
class a {
>a : Symbol(a, Decl(classdecl.ts, 0, 0))

    //constructor ();
    constructor (n: number);
>n : Symbol(n, Decl(classdecl.ts, 2, 17))

    constructor (s: string);
>s : Symbol(s, Decl(classdecl.ts, 3, 17))

    constructor (ns: any) {
>ns : Symbol(ns, Decl(classdecl.ts, 4, 17))

    }

    public pgF() { }
>pgF : Symbol(a.pgF, Decl(classdecl.ts, 6, 5))

    public pv;
>pv : Symbol(a.pv, Decl(classdecl.ts, 8, 20))

    public get d() {
>d : Symbol(a.d, Decl(classdecl.ts, 10, 14), Decl(classdecl.ts, 13, 5))

        return 30;
    }
    public set d(a: number) {
>d : Symbol(a.d, Decl(classdecl.ts, 10, 14), Decl(classdecl.ts, 13, 5))
>a : Symbol(a, Decl(classdecl.ts, 14, 17))
    }

    public static get p2() {
>p2 : Symbol(a.p2, Decl(classdecl.ts, 15, 5))

        return { x: 30, y: 40 };
>x : Symbol(x, Decl(classdecl.ts, 18, 16))
>y : Symbol(y, Decl(classdecl.ts, 18, 23))
    }

    private static d2() {
>d2 : Symbol(a.d2, Decl(classdecl.ts, 19, 5))
    }
    private static get p3() {
>p3 : Symbol(a.p3, Decl(classdecl.ts, 22, 5))

        return "string";
    }
    private pv3;
>pv3 : Symbol(a.pv3, Decl(classdecl.ts, 25, 5))

    private foo(n: number): string;
>foo : Symbol(a.foo, Decl(classdecl.ts, 26, 16), Decl(classdecl.ts, 28, 35), Decl(classdecl.ts, 29, 35))
>n : Symbol(n, Decl(classdecl.ts, 28, 16))

    private foo(s: string): string;
>foo : Symbol(a.foo, Decl(classdecl.ts, 26, 16), Decl(classdecl.ts, 28, 35), Decl(classdecl.ts, 29, 35))
>s : Symbol(s, Decl(classdecl.ts, 29, 16))

    private foo(ns: any) {
>foo : Symbol(a.foo, Decl(classdecl.ts, 26, 16), Decl(classdecl.ts, 28, 35), Decl(classdecl.ts, 29, 35))
>ns : Symbol(ns, Decl(classdecl.ts, 30, 16))

        return ns.toString();
>ns : Symbol(ns, Decl(classdecl.ts, 30, 16))
    }
}

class b extends a {
>b : Symbol(b, Decl(classdecl.ts, 33, 1))
>a : Symbol(a, Decl(classdecl.ts, 0, 0))
}

namespace m1 {
>m1 : Symbol(m1, Decl(classdecl.ts, 36, 1))

    export class b {
>b : Symbol(b, Decl(classdecl.ts, 38, 14))
    }
    class d {
>d : Symbol(d, Decl(classdecl.ts, 40, 5))
    }


    export interface ib {
>ib : Symbol(ib, Decl(classdecl.ts, 42, 5))
    }
}

namespace m2 {
>m2 : Symbol(m2, Decl(classdecl.ts, 47, 1))

    export namespace m3 {
>m3 : Symbol(m3, Decl(classdecl.ts, 49, 14))

        export class c extends b {
>c : Symbol(c, Decl(classdecl.ts, 51, 25))
>b : Symbol(b, Decl(classdecl.ts, 33, 1))
        }
        export class ib2 implements m1.ib {
>ib2 : Symbol(ib2, Decl(classdecl.ts, 53, 9))
>m1.ib : Symbol(m1.ib, Decl(classdecl.ts, 42, 5))
>m1 : Symbol(m1, Decl(classdecl.ts, 36, 1))
>ib : Symbol(m1.ib, Decl(classdecl.ts, 42, 5))
        }
    }
}

class c extends m1.b {
>c : Symbol(c, Decl(classdecl.ts, 57, 1))
>m1.b : Symbol(m1.b, Decl(classdecl.ts, 38, 14))
>m1 : Symbol(m1, Decl(classdecl.ts, 36, 1))
>b : Symbol(m1.b, Decl(classdecl.ts, 38, 14))
}

class ib2 implements m1.ib {
>ib2 : Symbol(ib2, Decl(classdecl.ts, 60, 1))
>m1.ib : Symbol(m1.ib, Decl(classdecl.ts, 42, 5))
>m1 : Symbol(m1, Decl(classdecl.ts, 36, 1))
>ib : Symbol(m1.ib, Decl(classdecl.ts, 42, 5))
}

declare class aAmbient {
>aAmbient : Symbol(aAmbient, Decl(classdecl.ts, 63, 1))

    constructor (n: number);
>n : Symbol(n, Decl(classdecl.ts, 66, 17))

    constructor (s: string);
>s : Symbol(s, Decl(classdecl.ts, 67, 17))

    public pgF(): void;
>pgF : Symbol(aAmbient.pgF, Decl(classdecl.ts, 67, 28))

    public pv;
>pv : Symbol(aAmbient.pv, Decl(classdecl.ts, 68, 23))

    public d : number;
>d : Symbol(aAmbient.d, Decl(classdecl.ts, 69, 14))

    static p2 : { x: number; y: number; };
>p2 : Symbol(aAmbient.p2, Decl(classdecl.ts, 70, 22))
>x : Symbol(x, Decl(classdecl.ts, 71, 17))
>y : Symbol(y, Decl(classdecl.ts, 71, 28))

    static d2();
>d2 : Symbol(aAmbient.d2, Decl(classdecl.ts, 71, 42))

    static p3;
>p3 : Symbol(aAmbient.p3, Decl(classdecl.ts, 72, 16))

    private pv3;
>pv3 : Symbol(aAmbient.pv3, Decl(classdecl.ts, 73, 14))

    private foo(s);
>foo : Symbol(aAmbient.foo, Decl(classdecl.ts, 74, 16))
>s : Symbol(s, Decl(classdecl.ts, 75, 16))
}

class d {
>d : Symbol(d, Decl(classdecl.ts, 76, 1))

    private foo(n: number): string;
>foo : Symbol(d.foo, Decl(classdecl.ts, 78, 9), Decl(classdecl.ts, 79, 35), Decl(classdecl.ts, 80, 35))
>n : Symbol(n, Decl(classdecl.ts, 79, 16))

    private foo(s: string): string;
>foo : Symbol(d.foo, Decl(classdecl.ts, 78, 9), Decl(classdecl.ts, 79, 35), Decl(classdecl.ts, 80, 35))
>s : Symbol(s, Decl(classdecl.ts, 80, 16))

    private foo(ns: any) {
>foo : Symbol(d.foo, Decl(classdecl.ts, 78, 9), Decl(classdecl.ts, 79, 35), Decl(classdecl.ts, 80, 35))
>ns : Symbol(ns, Decl(classdecl.ts, 81, 16))

        return ns.toString();
>ns : Symbol(ns, Decl(classdecl.ts, 81, 16))
    }    
}

class e {    
>e : Symbol(e, Decl(classdecl.ts, 84, 1))

    private foo(s: string): string;
>foo : Symbol(e.foo, Decl(classdecl.ts, 86, 9), Decl(classdecl.ts, 87, 35), Decl(classdecl.ts, 88, 35))
>s : Symbol(s, Decl(classdecl.ts, 87, 16))

    private foo(n: number): string;
>foo : Symbol(e.foo, Decl(classdecl.ts, 86, 9), Decl(classdecl.ts, 87, 35), Decl(classdecl.ts, 88, 35))
>n : Symbol(n, Decl(classdecl.ts, 88, 16))

    private foo(ns: any) {
>foo : Symbol(e.foo, Decl(classdecl.ts, 86, 9), Decl(classdecl.ts, 87, 35), Decl(classdecl.ts, 88, 35))
>ns : Symbol(ns, Decl(classdecl.ts, 89, 16))

        return ns.toString();
>ns : Symbol(ns, Decl(classdecl.ts, 89, 16))
    }
}
