[FIR] Do not include transitive friend dependencies in symbol provider

When flattening a dependency FirSymbolProvider, make sure transitive
dependency FirSymbolProviders are not included. This requires checking
that nested symbol provider sessions match the composite symbol provider
session when they are both source sessions.

^KT-60614 Fixed
This commit is contained in:
Brian Norman
2023-10-26 11:32:26 -05:00
committed by Space Team
parent 33ab1871c7
commit c1f6fe1e76
25 changed files with 285 additions and 132 deletions
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE
// MODULE: m1
// FILE: a.kt
@@ -35,3 +34,20 @@ fun test() {
inst.B()
}
// MODULE: m3()(m2)
// FILE: c.kt
import <!UNRESOLVED_REFERENCE!>p<!>.*
fun test3() {
val _a = <!UNRESOLVED_REFERENCE!>a<!>
val _v = <!UNRESOLVED_REFERENCE!>v<!>
<!UNRESOLVED_REFERENCE!>a<!>()
<!UNRESOLVED_REFERENCE!>B<!>()
val inst = <!UNRESOLVED_REFERENCE!>A<!>()
val ia = <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>inst<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>a<!>
val iv = <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>inst<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>v<!>
<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>inst<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>a<!>()
<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>inst<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>B<!>()
}