[FIR] Implement UNRESOLVED_REFERENCE_WRONG_RECEIVER

This commit is contained in:
Ivan Kochurkin
2021-08-10 16:40:51 +03:00
committed by Space
parent 34cc7e5199
commit 84c5f58cab
129 changed files with 322 additions and 481 deletions
@@ -1,19 +0,0 @@
interface Tr
class A { companion object }
class B { companion object : Tr }
fun Any.f1() {}
fun Any?.f2() {}
fun Tr.f3() {}
fun Tr?.f4() {}
fun A.f5() {}
fun test() {
A.f1()
A.f2()
B.f3()
B.f4()
A.<!INAPPLICABLE_CANDIDATE!>f5<!>()
B.<!INAPPLICABLE_CANDIDATE!>f5<!>()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
interface Tr
class A { companion object }
@@ -1,16 +0,0 @@
// KT-3563 Compiler requiring java.io.File, and it's unclear why
package bar
import java.io.File
class Customer(name1: String)
fun foo(f: File, c: Customer) {
f.name1
c.<!INAPPLICABLE_CANDIDATE!>name1<!> // name1 should be unresolved here
}
val File.name1: String
get() = getName()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// KT-3563 Compiler requiring java.io.File, and it's unclear why
package bar
@@ -6,19 +6,19 @@ package bar
fun <R> List<R>.a() {}
fun test1(i: Int?) {
1.<!INAPPLICABLE_CANDIDATE!>a<!>()
i.<!INAPPLICABLE_CANDIDATE!>a<!>()
1.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>a<!>()
i.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>a<!>()
}
fun <R> test2(c: Collection<R>) {
c.<!INAPPLICABLE_CANDIDATE!>a<!>()
c.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>a<!>()
}
fun Int.foo() {}
fun test3(s: String?) {
"".<!INAPPLICABLE_CANDIDATE!>foo<!>()
s.<!INAPPLICABLE_CANDIDATE!>foo<!>()
"".<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>()
s.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>()
"".foo(<!TOO_MANY_ARGUMENTS!>1<!>)
s.foo(<!TOO_MANY_ARGUMENTS!>"a"<!>)
}
@@ -27,7 +27,7 @@ interface A
fun <T: A> T.c() {}
fun test4() {
1.<!INAPPLICABLE_CANDIDATE!>c<!>()
1.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>c<!>()
}
@@ -40,16 +40,16 @@ fun test5() {
fun <R: Any> R?.sure() : R = this!!
fun <T> test6(l: List<T>?) {
l.<!INAPPLICABLE_CANDIDATE!>sure<!><T>()
l.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>sure<!><T>()
}
fun List<String>.b() {}
fun test7(l: List<String?>) {
l.<!INAPPLICABLE_CANDIDATE!>b<!>()
l.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>b<!>()
}
fun test8(l: List<Any>?) {
l.<!INAPPLICABLE_CANDIDATE!>b<!>()
l.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>b<!>()
}
@@ -1,14 +0,0 @@
package a
class A {}
fun test(a1: A, a2: A) {
val range = "island".."isle"
a1<!INAPPLICABLE_CANDIDATE!>..<!>a2
}
public operator fun <T: Comparable<T>> T.rangeTo(that: T): ClosedRange<T> {
throw UnsupportedOperationException()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
package a
class A {}