=== tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinClass.ts === // no errors class C { >C : C protected x: string; >x : string protected get y() { return this.x; } >y : string >this.x : string >this : C >x : string protected set y(x) { this.y = this.x; } >y : string >x : string >this.y = this.x : string >this.y : string >this : C >y : string >this.x : string >this : C >x : string protected foo() { return this.foo; } >foo : () => any >this.foo : () => any >this : C >foo : () => any protected static x: string; >x : string protected static get y() { return this.x; } >y : string >this.x : string >this : typeof C >x : string protected static set y(x) { this.y = this.x; } >y : string >x : string >this.y = this.x : string >this.y : string >this : typeof C >y : string >this.x : string >this : typeof C >x : string protected static foo() { return this.foo; } >foo : () => typeof C.foo >this.foo : () => typeof C.foo >this : typeof C >foo : () => typeof C.foo protected static bar() { this.foo(); } >bar : () => void >this.foo() : () => typeof C.foo >this.foo : () => typeof C.foo >this : typeof C >foo : () => typeof C.foo } // added level of function nesting class C2 { >C2 : C2 protected x: string; >x : string protected get y() { () => this.x; return null; } >y : any >() => this.x : () => string >this.x : string >this : C2 >x : string protected set y(x) { () => { this.y = this.x; } } >y : any >x : any >() => { this.y = this.x; } : () => void >this.y = this.x : string >this.y : any >this : C2 >y : any >this.x : string >this : C2 >x : string protected foo() { () => this.foo; } >foo : () => void >() => this.foo : () => () => void >this.foo : () => void >this : C2 >foo : () => void protected static x: string; >x : string protected static get y() { () => this.x; return null; } >y : any >() => this.x : () => string >this.x : string >this : typeof C2 >x : string protected static set y(x) { >y : any >x : any () => { this.y = this.x; } >() => { this.y = this.x; } : () => void >this.y = this.x : string >this.y : any >this : typeof C2 >y : any >this.x : string >this : typeof C2 >x : string } protected static foo() { () => this.foo; } >foo : () => void >() => this.foo : () => () => void >this.foo : () => void >this : typeof C2 >foo : () => void protected static bar() { () => this.foo(); } >bar : () => void >() => this.foo() : () => void >this.foo() : void >this.foo : () => void >this : typeof C2 >foo : () => void }