Synthetic extensions wins against top-level extension.

This commit is contained in:
Stanislav Erokhin
2015-12-18 15:23:11 +03:00
parent e8a697cb6d
commit 1574dc78df
16 changed files with 189 additions and 45 deletions
@@ -0,0 +1,38 @@
// !CHECK_TYPE
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE
// FILE: A.java
public class A {
public A getFoo() { return 3; }
}
// FILE: B.java
public class B {
public B getFoo() { return ""; }
}
// FILE: 1.kt
class C(val foo: C)
fun test(a: A, b: B, c: C) {
with(a) {
with(b) {
foo checkType { _<B>() }
}
foo checkType { _<A>() }
}
with(a) {
with(c) {
foo checkType { _<C>() }
}
}
with(c) {
with(a) {
foo checkType { _<C>() } // todo
}
}
}
fun <T, R> with(receiver: T, f: T.() -> R): R = receiver.f()