changed local extensions priority

local extensions aren't longer chosen before members
This commit is contained in:
Svetlana Isakova
2013-06-07 13:41:57 +04:00
parent 132d74200b
commit 3cf133bff7
20 changed files with 210 additions and 203 deletions
@@ -1,75 +0,0 @@
fun box() : String {
if (!B().test()) return "fail 1";
if (!D().test()) return "fail 2"
if (!F().test()) return "fail 3"
if (!L().test()) return "fail 4"
if (!H().test()) return "fail 5"
if (!N().test()) return "fail 6"
return "OK"
}
class A {
fun foo() = 1
}
class B {
fun foo() = 2
fun A.bar() = foo()
fun test() = A().bar() == 1
}
class C {
fun D.foo() = 2
}
class D {
fun C.foo() = 1
fun C.bar() = foo()
fun test() = C().bar() == 1
}
class E
fun E.foo() = 2
class F {
fun foo() = 1
fun E.bar() = foo()
fun test() = E().bar() == 1
}
class G
fun G.foo() = 2
class H {
fun G.foo() = 1
fun G.bar() = foo()
fun test() = G().bar() == 1
}
class K
class L {
fun K.bar() = foo()
fun test() = K().bar() == 1
}
fun K.foo() = 1
fun L.foo() = 2
class M
class N {
fun foo() = 1
fun M.foo() = 2
fun M.bar() = foo()
fun test() = M().bar() == 1
}
@@ -0,0 +1,9 @@
class A {
fun B.foo() = 2
}
class B {
~A.foo~fun A.foo() = 1
fun A.bar() = `A.foo`foo()
}
@@ -0,0 +1,9 @@
class A
class B {
fun A.bar() = `A.foo`foo()
}
~A.foo~fun A.foo() = 1
fun B.foo() = 2
@@ -0,0 +1,7 @@
class A
class B {
fun foo() = 1
~A.foo~fun A.foo() = 2
fun A.bar() = `A.foo`foo()
}
@@ -0,0 +1,8 @@
class A
fun A.foo() = 2
class B {
~foo~fun A.foo() = 1
fun A.bar() = `foo`foo()
}
@@ -0,0 +1,16 @@
class A {
fun foo() = 1
}
class B {
}
~B.foo~fun B.foo() = 2
fun test(a: A, b: B) {
with (a) {
with (b) {
`B.foo`foo()
}
}
}
fun <T, R> with(receiver: T, f: T.() -> R) : R = receiver.f()
@@ -0,0 +1,12 @@
class A {
}
~extension~fun A.foo() = 1
fun foo() = 2
fun test(a: A) {
with (a) {
`extension`foo()
}
}
fun <T, R> with(receiver: T, f: T.() -> R) : R = receiver.f()
@@ -0,0 +1,8 @@
class A {
fun foo() = 1
fun test() {
fun ~local~foo() = 2
`local`foo()
}
}
@@ -0,0 +1,9 @@
class A {
fun ~member~foo() = 1
fun test() {
this.`member`foo()
}
}
fun A.foo() = 2
@@ -0,0 +1,10 @@
class A {
fun ~member~foo() = 1
fun test() {
this.`member`foo()
}
fun A.foo() = 2
}
@@ -0,0 +1,13 @@
class A {
fun ~member~foo() = 1
}
fun A.foo() = 2
fun test(a: A) {
with (a) {
this.`member`foo()
}
}
fun <T, R> with(receiver: T, f: T.() -> R) : R = receiver.f()
@@ -0,0 +1,8 @@
class A {
fun ~member~foo() = 1
fun test() {
fun A.foo() = 2
this.`member`foo()
}
}
@@ -0,0 +1,9 @@
class A {
~A.foo~fun foo() = 1
}
class B {
fun foo() = 2
fun A.bar() = `A.foo`foo()
}
@@ -0,0 +1,9 @@
class A
class B {
fun foo() = 2
fun A.bar() = `A.foo`foo()
}
~A.foo~fun A.foo() = 1