Files
kotlin-fork/compiler/testData/diagnostics/tests/extensions/throwOutCandidatesByReceiver.fir.kt
T
Tianyu Geng 761a0a7d0d FIR checkers: report specific errors instead of INAPPLICABLE_CANDIDATE
Specifically, the report the following 4 errors.

* NON_VARARG_SPREAD
* ARGUMENT_PASSED_TWICE
* TOO_MANY_ARGUMENTS
* NO_VALUE_FOR_PARAMETER

Also added/updated the following position strategies.
* NAME_OF_NAMED_ARGUMENT
* VALUE_ARGUMENTS
2021-04-02 14:36:14 +03:00

57 lines
940 B
Kotlin
Vendored

// !WITH_NEW_INFERENCE
package bar
// should be thrown away
fun <R> List<R>.a() {}
fun test1(i: Int?) {
1.<!INAPPLICABLE_CANDIDATE!>a<!>()
i<!UNSAFE_CALL!>.<!>a()
}
fun <R> test2(c: Collection<R>) {
c.<!INAPPLICABLE_CANDIDATE!>a<!>()
}
fun Int.foo() {}
fun test3(s: String?) {
"".<!INAPPLICABLE_CANDIDATE!>foo<!>()
s<!UNSAFE_CALL!>.<!>foo()
"".foo(<!TOO_MANY_ARGUMENTS!>1<!>)
s.foo(<!TOO_MANY_ARGUMENTS!>"a"<!>)
}
interface A
fun <T: A> T.c() {}
fun test4() {
1.<!INAPPLICABLE_CANDIDATE!>c<!>()
}
// should be an error on receiver, shouldn't be thrown away
fun test5() {
1.(<!UNRESOLVED_REFERENCE!>fun String.()=1<!>)()
}
fun <R: Any> R?.sure() : R = this!!
fun <T> test6(l: List<T>?) {
l.<!INAPPLICABLE_CANDIDATE!>sure<!><T>()
}
fun List<String>.b() {}
fun test7(l: List<String?>) {
l.<!INAPPLICABLE_CANDIDATE!>b<!>()
}
fun test8(l: List<Any>?) {
l<!UNSAFE_CALL!>.<!>b()
}