// FILE: f.kt class Dup { fun Dup() : Unit { this@Dup } } class A() { fun foo() : Unit { this@A this@a this } val x = this@A.foo() val y = this.foo() val z = foo() } fun foo1() : Unit { this this@a } // FILE: f.kt package closures class A(val a:Int) { class B() { val x = this@B : B val y = this@A : A val z = this : B val Int.xx = this : Int fun Char.xx() : Any { this : Char val a = {Double.() -> this : Double + this@xx : Char} val b = @a{Double.() -> this@a : Double + this@xx : Char} val c = @a{() -> this@a + this@xx : Char} return (@a{Double.() -> this@a : Double + this@xx : Char}) } } }