FIR checker: skip error named reference if receiver is unresolved

Currently, FIR reports errors caused by previous resolution failure. For
example with unresolved `a` and `b` in code `a.b`, both `a` and `b` are
highlighted. FE1.0 only highlights `a` since it's the root cause. This
change applies this heuristics when reporting FirDiagnostics.
This commit is contained in:
Tianyu Geng
2021-03-25 12:20:18 -07:00
committed by Dmitriy Novozhilov
parent d6907222cd
commit fb14b03824
73 changed files with 209 additions and 228 deletions
@@ -32,7 +32,7 @@ fun case4() {
run {
<!UNRESOLVED_REFERENCE!>s<!> = "hello"
}
<!UNRESOLVED_REFERENCE!>s<!>.<!UNRESOLVED_REFERENCE!>length<!>
<!UNRESOLVED_REFERENCE!>s<!>.length
}
}
}
@@ -14,6 +14,6 @@ suspend fun fib(n: Long) =
async {
when {
n < 2 -> n
else -> fib(n - 1).<!UNRESOLVED_REFERENCE!>await<!>() <!AMBIGUITY!>+<!> fib(n - 2).<!UNRESOLVED_REFERENCE!>await<!>()
else -> fib(n - 1).<!UNRESOLVED_REFERENCE!>await<!>() + fib(n - 2).<!UNRESOLVED_REFERENCE!>await<!>()
}
}
@@ -3,7 +3,7 @@ abstract class KFunctionKt9005WorkAround<out R: Any?>(private val _functionInsta
private val _reflectedFunction: kotlin.reflect.KFunction<R> = _functionInstance.<!UNRESOLVED_REFERENCE!>reflect<!>() ?: throw IllegalStateException("")
private val _parameters: List<kotlin.reflect.KParameter> = run {
_functionInstance.javaClass.methods.first().<!UNRESOLVED_REFERENCE!>parameters<!>.<!AMBIGUITY!>map<!> {
_functionInstance.javaClass.methods.first().<!UNRESOLVED_REFERENCE!>parameters<!>.map {
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>object<!> : kotlin.reflect.KParameter {
override val index: Int = 0
}