[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
-22
View File
@@ -1,22 +0,0 @@
Module: a
FILE fqName:a fileName:/a.kt
TYPEALIAS name:A visibility:public expandedType:kotlin.String
Module: b
FILE fqName:b fileName:/b.kt
FUN name:foo visibility:public modality:FINAL <> (f:kotlin.Function0<kotlin.String>) returnType:kotlin.String
VALUE_PARAMETER name:f index:0 type:kotlin.Function0<kotlin.String>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun foo (f: kotlin.Function0<kotlin.String>): kotlin.String declared in b'
CALL 'public abstract fun invoke (): R of kotlin.Function0 declared in kotlin.Function0' type=kotlin.String origin=INVOKE
$this: GET_VAR 'f: kotlin.Function0<kotlin.String> declared in b.foo' type=kotlin.Function0<kotlin.String> origin=VARIABLE_AS_FUNCTION
Module: c
FILE fqName:<root> fileName:/c.kt
FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
CALL 'public final fun foo (f: kotlin.Function0<kotlin.String>): kotlin.String declared in b' type=kotlin.String origin=null
f: FUN_EXPR type=kotlin.Function0<kotlin.String> origin=LAMBDA
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> () returnType:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.String declared in <root>.box'
CONST String type=kotlin.String value="OK"
-24
View File
@@ -1,24 +0,0 @@
// FIR_IDENTICAL
// SKIP_KT_DUMP
// IGNORE_BACKEND_K1: JS_IR
// IGNORE_BACKEND_K1: JS_IR_ES6
// MODULE: a
// FILE: a.kt
package a
typealias A = String
// MODULE: b(a)
// FILE: b.kt
package b
import a.A
fun foo(f: () -> A): A = f()
// MODULE: c(b)
// FILE: c.kt
import b.foo
fun box(): String = foo { "OK" }
@@ -1,35 +0,0 @@
// MODULE: a
// FILE: a.kt
package a
// CHECK:
// Mangled name: a.A
// Public signature: a/A|null[0]
typealias A = String
// MODULE: b
// FILE: b.kt
package b
// CHECK JVM_IR:
// Mangled name: b#foo(kotlin.Function0<kotlin.String>){}kotlin.String
// Public signature: b/foo|-5020381652845254261[0]
// Public signature debug description: foo(kotlin.Function0<kotlin.String>){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: b#foo(kotlin.Function0<kotlin.String>){}
// Public signature: b/foo|-2695324588787180624[0]
// Public signature debug description: foo(kotlin.Function0<kotlin.String>){}
fun foo(f: Function0<String>): String
// MODULE: c
// FILE: c.kt
// CHECK JVM_IR:
// Mangled name: #box(){}kotlin.String
// Public signature: /box|-9347091776561469[0]
// Public signature debug description: box(){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: #box(){}
// Public signature: /box|2173511048851971368[0]
// Public signature debug description: box(){}
fun box(): String