Forbid callable references to members and extensions with empty LHS

This syntax is reserved to be likely used in the future as a shorthand for
"this::foo" where the resulting expression doesn't take the receiver as a
parameter but has "this" already bound to it
This commit is contained in:
Alexander Udalov
2015-10-02 21:56:15 +03:00
parent f310d4c10e
commit 661f4efc68
48 changed files with 114 additions and 378 deletions
@@ -1,7 +1,7 @@
class A {
fun foo(k: Int) = k
fun result() = (::foo)(this, 111)
fun result() = (A::foo)(this, 111)
}
fun box(): String {
@@ -3,7 +3,7 @@ class A {
fun k(k: Int) = k
}
fun A.foo() = (::o)(this) + (A::k)(this, 222)
fun A.foo() = (A::o)(this) + (A::k)(this, 222)
fun box(): String {
val result = A().foo()
@@ -1,5 +1,5 @@
class A {
fun result() = (::foo)(this, "OK")
fun result() = (A::foo)(this, "OK")
}
fun A.foo(x: String) = x
@@ -4,7 +4,7 @@ class A {
val k = 222
}
fun result() = (A::Inner)(this).o + (::Inner)(this).k
fun result() = (A::Inner)(this).o + (A::Inner)(this).k
}
fun box(): String {
@@ -5,7 +5,7 @@ class A {
}
}
fun A.foo() = (A::Inner)(this).o + (::Inner)(this).k
fun A.foo() = (A::Inner)(this).o + (A::Inner)(this).k
fun box(): String {
val result = A().foo()
@@ -1,7 +1,7 @@
class A {
private fun foo() = "OK"
fun bar() = (::foo)(this)
fun bar() = (A::foo)(this)
}
fun box() = A().bar()
@@ -4,7 +4,7 @@ interface T {
class B : T {
inner class C {
fun bar() = (::foo)(this@B)
fun bar() = (T::foo)(this@B)
}
}