[FIR] Improve diagnostic reporting & don't use error symbol for candidate if possible
Also introduce few new diagnostics: - NONE_APPLICABLE more many inapplicable candidates - HIDDEN for visible candidates
This commit is contained in:
committed by
Mikhail Glukhikh
parent
5c0528b61e
commit
f283f2db43
+2
-2
@@ -9,9 +9,9 @@ operator infix fun A.div(i : Int) {}
|
||||
operator infix fun A?.times(i : Int) {}
|
||||
|
||||
fun test(x : Int?, a : A?) {
|
||||
x.<!INAPPLICABLE_CANDIDATE!>plus<!>(1)
|
||||
x.<!NONE_APPLICABLE!>plus<!>(1)
|
||||
x?.plus(1)
|
||||
x <!INAPPLICABLE_CANDIDATE!>+<!> 1
|
||||
x <!NONE_APPLICABLE!>+<!> 1
|
||||
<!INAPPLICABLE_CANDIDATE!>-<!>x
|
||||
x.<!INAPPLICABLE_CANDIDATE!>unaryMinus<!>()
|
||||
x?.unaryMinus()
|
||||
|
||||
Vendored
+2
-2
@@ -2,7 +2,7 @@ fun test() {
|
||||
val out : Int? = null
|
||||
val x : Nothing? = null
|
||||
if (out != x)
|
||||
out.<!INAPPLICABLE_CANDIDATE!>plus<!>(1)
|
||||
out.<!NONE_APPLICABLE!>plus<!>(1)
|
||||
if (out == x) return
|
||||
out.<!INAPPLICABLE_CANDIDATE!>plus<!>(1)
|
||||
out.<!NONE_APPLICABLE!>plus<!>(1)
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ fun foo() {
|
||||
val y: Int? = 0
|
||||
val z: Int? = 0
|
||||
<!INAPPLICABLE_CANDIDATE!>bar<!>(if (y != null) y else z, y)
|
||||
y <!INAPPLICABLE_CANDIDATE!>+<!> 2
|
||||
y <!NONE_APPLICABLE!>+<!> 2
|
||||
<!INAPPLICABLE_CANDIDATE!>baz<!>(y, y, if (y == null) return else y, y)
|
||||
baz(y, z!!, z, y)
|
||||
}
|
||||
|
||||
@@ -6,11 +6,11 @@ package example
|
||||
fun test() {
|
||||
val p = test.Public()
|
||||
if (p.public is Int) p.public + 1
|
||||
if (p.<!INAPPLICABLE_CANDIDATE!>protected<!> is Int) p.<!INAPPLICABLE_CANDIDATE!>protected<!> + 1
|
||||
if (p.<!HIDDEN!>protected<!> is Int) p.<!HIDDEN!>protected<!> <!NONE_APPLICABLE!>+<!> 1
|
||||
if (p.internal is Int) p.internal + 1
|
||||
val i = test.Internal()
|
||||
if (i.public is Int) i.public + 1
|
||||
if (i.<!INAPPLICABLE_CANDIDATE!>protected<!> is Int) i.<!INAPPLICABLE_CANDIDATE!>protected<!> + 1
|
||||
if (i.<!HIDDEN!>protected<!> is Int) i.<!HIDDEN!>protected<!> <!NONE_APPLICABLE!>+<!> 1
|
||||
if (i.internal is Int) i.internal + 1
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -13,17 +13,17 @@ class B {
|
||||
|
||||
fun f() {
|
||||
a = A()
|
||||
a.<!INAPPLICABLE_CANDIDATE!>f<!>(true)
|
||||
takeInt(a.<!INAPPLICABLE_CANDIDATE!>f<!>(""))
|
||||
a.<!INAPPLICABLE_CANDIDATE!>f<!>()
|
||||
a.<!NONE_APPLICABLE!>f<!>(true)
|
||||
takeInt(a.<!NONE_APPLICABLE!>f<!>(""))
|
||||
a.<!NONE_APPLICABLE!>f<!>()
|
||||
}
|
||||
|
||||
fun g() {
|
||||
takeInt(if (3 > 2) {
|
||||
a = A()
|
||||
a.<!INAPPLICABLE_CANDIDATE!>f<!>(true)
|
||||
a.<!NONE_APPLICABLE!>f<!>(true)
|
||||
} else {
|
||||
6
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -9,6 +9,6 @@ var a: A? = null
|
||||
|
||||
fun smartCastInterference(b: B) {
|
||||
if (a != null) {
|
||||
a.<!INAPPLICABLE_CANDIDATE!>foo<!>(b)
|
||||
a.<!NONE_APPLICABLE!>foo<!>(b)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user