[FIR] Properly handle callable references which were resolved with error

This commit is contained in:
Dmitriy Novozhilov
2021-04-15 14:06:30 +03:00
parent 450fb5e915
commit e869f8091a
74 changed files with 377 additions and 312 deletions
@@ -11,7 +11,7 @@ class Case1() {
}
fun case() {
<!NONE_APPLICABLE!>Companion<!>(::<!UNRESOLVED_REFERENCE!>x<!>)
<!NONE_APPLICABLE!>Companion<!>(::<!OVERLOAD_RESOLUTION_AMBIGUITY!>x<!>)
}
val x = ""
@@ -27,7 +27,7 @@ class Case2() {
}
fun case() {
<!NONE_APPLICABLE!>Companion<!>(::<!UNRESOLVED_REFERENCE!>x<!>)
<!NONE_APPLICABLE!>Companion<!>(::<!OVERLOAD_RESOLUTION_AMBIGUITY!>x<!>)
}
val x = C()
@@ -54,8 +54,8 @@ class Case3() : I {
fun x() = "" as CharSequence
fun case() {
I.<!OVERLOAD_RESOLUTION_AMBIGUITY!>invoke<!>(::<!UNRESOLVED_REFERENCE!>x<!>)
<!OVERLOAD_RESOLUTION_AMBIGUITY!>I<!>(::<!UNRESOLVED_REFERENCE!>x<!>)
<!OVERLOAD_RESOLUTION_AMBIGUITY!>Case3<!>(::<!UNRESOLVED_REFERENCE!>x<!>)
I.<!OVERLOAD_RESOLUTION_AMBIGUITY!>invoke<!>(::<!OVERLOAD_RESOLUTION_AMBIGUITY!>x<!>)
<!OVERLOAD_RESOLUTION_AMBIGUITY!>I<!>(::<!OVERLOAD_RESOLUTION_AMBIGUITY!>x<!>)
<!OVERLOAD_RESOLUTION_AMBIGUITY!>Case3<!>(::<!OVERLOAD_RESOLUTION_AMBIGUITY!>x<!>)
}
}
@@ -11,7 +11,7 @@ import libCase1.*
import kotlin.text.format
fun case1() {
val y1 =(String)::<!UNRESOLVED_REFERENCE!>format<!>
val y1 =(String)::<!OVERLOAD_RESOLUTION_AMBIGUITY!>format<!>
}
// FILE: LibCase1.kt
@@ -28,7 +28,7 @@ import libCase2.*
import kotlin.text.*
fun case2() {
val y1 =(String)::<!UNRESOLVED_REFERENCE!>format<!>
val y1 =(String)::<!OVERLOAD_RESOLUTION_AMBIGUITY!>format<!>
}
// FILE: LibCase2.kt
@@ -10,7 +10,7 @@ package testsCase1
import libCase1.*
fun case1() {
val y1 =(A)::<!UNRESOLVED_REFERENCE!>boo<!>
val y1 =(A)::<!OVERLOAD_RESOLUTION_AMBIGUITY!>boo<!>
}
// FILE: LibCase1.kt
@@ -31,7 +31,7 @@ import libCase2.A
import libCase2.boo
fun case2() {
val y1 =(A)::<!UNRESOLVED_REFERENCE!>boo<!>
val y1 =(A)::<!OVERLOAD_RESOLUTION_AMBIGUITY!>boo<!>
}
// FILE: LibCase2.kt
@@ -11,7 +11,7 @@ package testsCase1
import libCase1.boo
fun case1() {
val y1 =1::<!UNRESOLVED_REFERENCE!>boo<!>
val y1 =1::<!OVERLOAD_RESOLUTION_AMBIGUITY!>boo<!>
}
// FILE: LibCase1.kt
@@ -27,7 +27,7 @@ package testsCase2
import libCase2.*
fun case2() {
val y1 =1::<!UNRESOLVED_REFERENCE!>boo<!>
val y1 =1::<!OVERLOAD_RESOLUTION_AMBIGUITY!>boo<!>
}
// FILE: LibCase2.kt
@@ -11,7 +11,7 @@ package testsCase1
import libCase1.boo
fun case1() {
val y1 =::<!UNRESOLVED_REFERENCE!>boo<!>
val y1 =::<!OVERLOAD_RESOLUTION_AMBIGUITY!>boo<!>
}
// FILE: LibCase1.kt
@@ -27,7 +27,7 @@ package testsCase2
import libCase2.*
fun case2() {
val y1 =::<!UNRESOLVED_REFERENCE!>boo<!>
val y1 =::<!OVERLOAD_RESOLUTION_AMBIGUITY!>boo<!>
}
val boo: String
@@ -46,7 +46,7 @@ package testsCase3
import libCase3.*
fun case3() {
val y1 =::<!UNRESOLVED_REFERENCE!>boo<!>
val y1 =::<!OVERLOAD_RESOLUTION_AMBIGUITY!>boo<!>
}
val boo: String
@@ -180,7 +180,7 @@ fun case_12(x: TypealiasNullableStringIndirect, y: TypealiasNullableStringIndire
// TESTCASE NUMBER: 13
fun case_13(x: <!UNRESOLVED_REFERENCE!>otherpackage.Case13?<!>) =
<!DEBUG_INFO_EXPRESSION_TYPE("ERROR CLASS: Can't resolve when expression")!>if ((x == null !is Boolean) !== true) {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing")!>if ((x == null !is Boolean) !== true) {
throw Exception()
} else {
<!DEBUG_INFO_EXPRESSION_TYPE("ERROR CLASS: Symbol not found for otherpackage.Case13?")!>x<!>