2a16fe1d0f
In K1, upper bound violated causes candidate to have lower applicability due to constraint errors, in K2 however constraint errors has to be reported explicitly
56 lines
1.0 KiB
Kotlin
Vendored
56 lines
1.0 KiB
Kotlin
Vendored
package bar
|
|
|
|
|
|
// should be thrown away
|
|
|
|
fun <R> List<R>.a() {}
|
|
|
|
fun test1(i: Int?) {
|
|
1.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>a<!>()
|
|
i.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>a<!>()
|
|
}
|
|
|
|
fun <R> test2(c: Collection<R>) {
|
|
c.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>a<!>()
|
|
}
|
|
|
|
fun Int.foo() {}
|
|
|
|
fun test3(s: String?) {
|
|
"".<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>()
|
|
s.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>()
|
|
"".foo(<!TOO_MANY_ARGUMENTS!>1<!>)
|
|
s.foo(<!TOO_MANY_ARGUMENTS!>"a"<!>)
|
|
}
|
|
|
|
interface A
|
|
fun <T: A> T.c() {}
|
|
|
|
fun test4() {
|
|
1.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>c<!>()
|
|
}
|
|
|
|
|
|
// should be an error on receiver, shouldn't be thrown away
|
|
|
|
fun test5() {
|
|
<!ARGUMENT_TYPE_MISMATCH!>1<!>.(fun String.()=1)()
|
|
}
|
|
|
|
fun <R: Any> R?.sure() : R = this!!
|
|
|
|
fun <T> test6(l: List<T>?) {
|
|
l.sure<<!UPPER_BOUND_VIOLATED!>T<!>>()
|
|
}
|
|
|
|
|
|
fun List<String>.b() {}
|
|
|
|
fun test7(l: List<String?>) {
|
|
l.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>b<!>()
|
|
}
|
|
|
|
fun test8(l: List<Any>?) {
|
|
l.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>b<!>()
|
|
}
|