[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:
Dmitriy Novozhilov
2020-07-22 16:40:14 +03:00
committed by Mikhail Glukhikh
parent 5c0528b61e
commit f283f2db43
365 changed files with 1400 additions and 1451 deletions
@@ -22,24 +22,24 @@ import j.JavaProtected
import j.JavaPackageLocal
class A {
val p1 = JavaPackageLocal.<!INAPPLICABLE_CANDIDATE!>javaPPackage<!>
val p2 = JavaProtected.<!INAPPLICABLE_CANDIDATE!>javaPProtectedStatic<!>
val p3 = JavaProtected().<!INAPPLICABLE_CANDIDATE!>javaPProtectedPackage<!>
val p1 = JavaPackageLocal.<!HIDDEN!>javaPPackage<!>
val p2 = JavaProtected.<!HIDDEN!>javaPProtectedStatic<!>
val p3 = JavaProtected().<!HIDDEN!>javaPProtectedPackage<!>
fun test() {
JavaProtected.<!INAPPLICABLE_CANDIDATE!>javaMProtectedStatic<!>()
JavaPackageLocal.<!INAPPLICABLE_CANDIDATE!>javaMPackage<!>()
JavaProtected.<!HIDDEN!>javaMProtectedStatic<!>()
JavaPackageLocal.<!HIDDEN!>javaMPackage<!>()
}
}
class B : JavaProtected() {
val p1 = JavaPackageLocal.<!INAPPLICABLE_CANDIDATE!>javaPPackage<!>
val p1 = JavaPackageLocal.<!HIDDEN!>javaPPackage<!>
val p2 = JavaProtected.javaPProtectedStatic
val p3 = javaPProtectedPackage
fun test() {
JavaProtected.javaMProtectedStatic()
JavaPackageLocal.<!INAPPLICABLE_CANDIDATE!>javaMPackage<!>()
JavaPackageLocal.<!HIDDEN!>javaMPackage<!>()
}
}
@@ -59,4 +59,4 @@ class C {
JavaProtected.javaMProtectedStatic()
JavaPackageLocal.javaMPackage()
}
}
}
@@ -27,9 +27,9 @@ import k.two
import k.all
fun test() {
<!INAPPLICABLE_CANDIDATE!>zero<!>()
<!INAPPLICABLE_CANDIDATE!>zero<!>(1)
<!INAPPLICABLE_CANDIDATE!>zero<!>("")
<!NONE_APPLICABLE!>zero<!>()
<!NONE_APPLICABLE!>zero<!>(1)
<!NONE_APPLICABLE!>zero<!>("")
one()
<!INAPPLICABLE_CANDIDATE!>one<!>(1)
@@ -42,4 +42,4 @@ fun test() {
all()
all(1)
all("")
}
}
@@ -29,9 +29,9 @@ private object TopLevelObject {
}
fun testAccess() {
<!INAPPLICABLE_CANDIDATE!>NestedClass<!>()
<!HIDDEN!>NestedClass<!>()
E1
InNested()
NestedEntry
inObject()
}
}
@@ -15,4 +15,4 @@ package p1
import p2.*
val <!EXPOSED_PROPERTY_TYPE!>x<!>: X = X()
val <!EXPOSED_PROPERTY_TYPE!>y<!>: Y = <!INAPPLICABLE_CANDIDATE!>Y<!>()
val <!EXPOSED_PROPERTY_TYPE!>y<!>: Y = <!HIDDEN!>Y<!>()
@@ -14,4 +14,4 @@ package a
import pack1.*
import pack2.*
class X : <!EXPOSED_SUPER_CLASS, INAPPLICABLE_CANDIDATE!>SomeClass<!>()
class X : <!EXPOSED_SUPER_CLASS, HIDDEN!>SomeClass<!>()
@@ -8,4 +8,4 @@ package a
import pack1.*
private class X : <!INAPPLICABLE_CANDIDATE!>SomeClass<!>()
private class X : <!HIDDEN!>SomeClass<!>()
@@ -17,5 +17,5 @@ package a
import pack1.SomeClass.*
import pack2.*
class X : <!EXPOSED_SUPER_CLASS, INAPPLICABLE_CANDIDATE!>N<!>()
class X : <!EXPOSED_SUPER_CLASS, HIDDEN!>N<!>()
class Y : PublicNested()
@@ -11,4 +11,4 @@ package a
import pack1.SomeClass.*
private class X : <!INAPPLICABLE_CANDIDATE!>N<!>()
private class X : <!HIDDEN!>N<!>()
@@ -3,7 +3,7 @@
import B.foo
fun test() {
<!INAPPLICABLE_CANDIDATE!>foo<!>
<!HIDDEN!>foo<!>
}
// FILE: B.kt
@@ -13,4 +13,4 @@ object B : C<String>()
open class C<T> {
private var foo: String = "abc"
}
}