=== tests/cases/compiler/selfInLambdas.ts === interface MouseEvent { >MouseEvent : MouseEvent x: number; >x : number y: number; >y : number } declare var window: Window; >window : Window >Window : Window interface Window { >Window : Window onmousemove: (ev: MouseEvent) => any; >onmousemove : (ev: MouseEvent) => any >ev : MouseEvent >MouseEvent : MouseEvent } var o = { >o : { counter: number; start: () => void; } >{ counter: 0, start: function() { window.onmousemove = () => { this.counter++ var f = () => this.counter; } }} : { counter: number; start: () => void; } counter: 0, >counter : number >0 : number start: function() { >start : () => void >function() { window.onmousemove = () => { this.counter++ var f = () => this.counter; } } : () => void window.onmousemove = () => { >window.onmousemove = () => { this.counter++ var f = () => this.counter; } : () => void >window.onmousemove : (ev: MouseEvent) => any >window : Window >onmousemove : (ev: MouseEvent) => any >() => { this.counter++ var f = () => this.counter; } : () => void this.counter++ >this.counter++ : number >this.counter : any >this : any >counter : any var f = () => this.counter; >f : () => any >() => this.counter : () => any >this.counter : any >this : any >counter : any } } } class X { >X : X private value = "value"; >value : string >"value" : string public foo() { >foo : () => void var outer= () => { >outer : () => void >() => { var x = this.value; var inner = () => { var y = this.value; } inner(); } : () => void var x = this.value; >x : string >this.value : string >this : X >value : string var inner = () => { >inner : () => void >() => { var y = this.value; } : () => void var y = this.value; >y : string >this.value : string >this : X >value : string } inner(); >inner() : void >inner : () => void }; outer(); >outer() : void >outer : () => void } }