//// [tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassWithPrivateInstanceShadowingPublicInstance.ts] ////

=== derivedClassWithPrivateInstanceShadowingPublicInstance.ts ===
class Base {
>Base : Base
>     : ^^^^

    public x: string;
>x : string
>  : ^^^^^^

    public fn(): string {
>fn : () => string
>   : ^^^^^^      

        return '';
>'' : ""
>   : ^^
    }

    public get a() { return 1; }
>a : number
>  : ^^^^^^
>1 : 1
>  : ^

    public set a(v) { }
>a : number
>  : ^^^^^^
>v : number
>  : ^^^^^^
}

// error, not a subtype
class Derived extends Base {
>Derived : Derived
>        : ^^^^^^^
>Base : Base
>     : ^^^^

    private x: string; 
>x : string
>  : ^^^^^^

    private fn(): string {
>fn : () => string
>   : ^^^^^^      

        return '';
>'' : ""
>   : ^^
    }

    private get a() { return 1; }
>a : number
>  : ^^^^^^
>1 : 1
>  : ^

    private set a(v) { }
>a : number
>  : ^^^^^^
>v : number
>  : ^^^^^^
}

var r = Base.x; // ok
>r : any
>  : ^^^
>Base.x : any
>       : ^^^
>Base : typeof Base
>     : ^^^^^^^^^^^
>x : any
>  : ^^^

var r2 = Derived.x; // error
>r2 : any
>   : ^^^
>Derived.x : any
>          : ^^^
>Derived : typeof Derived
>        : ^^^^^^^^^^^^^^
>x : any
>  : ^^^

var r3 = Base.fn(); // ok
>r3 : any
>   : ^^^
>Base.fn() : any
>          : ^^^
>Base.fn : any
>        : ^^^
>Base : typeof Base
>     : ^^^^^^^^^^^
>fn : any
>   : ^^^

var r4 = Derived.fn(); // error
>r4 : any
>   : ^^^
>Derived.fn() : any
>             : ^^^
>Derived.fn : any
>           : ^^^
>Derived : typeof Derived
>        : ^^^^^^^^^^^^^^
>fn : any
>   : ^^^

var r5 = Base.a; // ok
>r5 : any
>   : ^^^
>Base.a : any
>       : ^^^
>Base : typeof Base
>     : ^^^^^^^^^^^
>a : any
>  : ^^^

Base.a = 2; // ok
>Base.a = 2 : 2
>           : ^
>Base.a : any
>       : ^^^
>Base : typeof Base
>     : ^^^^^^^^^^^
>a : any
>  : ^^^
>2 : 2
>  : ^

var r6 = Derived.a; // error
>r6 : any
>   : ^^^
>Derived.a : any
>          : ^^^
>Derived : typeof Derived
>        : ^^^^^^^^^^^^^^
>a : any
>  : ^^^

Derived.a = 2; // error
>Derived.a = 2 : 2
>              : ^
>Derived.a : any
>          : ^^^
>Derived : typeof Derived
>        : ^^^^^^^^^^^^^^
>a : any
>  : ^^^
>2 : 2
>  : ^

