[LL FIR] introduce platform-aware LL FIR session factories

KT-58769
This commit is contained in:
Pavel Kirpichenkov
2023-04-24 21:09:42 +03:00
committed by Space Team
parent e11f7daae4
commit 2a79643dcf
10 changed files with 833 additions and 493 deletions
@@ -50,9 +50,10 @@ object FirNativeSessionFactory : FirAbstractSessionFactory() {
).apply {
bindSession(session)
}
val kotlinLibraries = resolvedLibraries.map { it.library }
listOfNotNull(
KlibBasedSymbolProvider(session, moduleDataProvider, kotlinScopeProvider, resolvedLibraries.map { it.library }),
NativeForwardDeclarationsSymbolProvider(session, forwardDeclarationsModuleData, kotlinScopeProvider, resolvedLibraries),
KlibBasedSymbolProvider(session, moduleDataProvider, kotlinScopeProvider, kotlinLibraries),
NativeForwardDeclarationsSymbolProvider(session, forwardDeclarationsModuleData, kotlinScopeProvider, kotlinLibraries),
FirBuiltinSymbolProvider(session, builtinsModuleData, kotlinScopeProvider),
FirExtensionSyntheticFunctionInterfaceProvider.createIfNeeded(session, builtinsModuleData, kotlinScopeProvider),
FirCloneableSymbolProvider(session, builtinsModuleData, kotlinScopeProvider),
@@ -24,10 +24,10 @@ import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
import org.jetbrains.kotlin.fir.types.constructClassType
import org.jetbrains.kotlin.library.KotlinLibrary
import org.jetbrains.kotlin.library.includedForwardDeclarations
import org.jetbrains.kotlin.library.isInterop
import org.jetbrains.kotlin.library.metadata.impl.ForwardDeclarationKind
import org.jetbrains.kotlin.library.metadata.resolver.KotlinResolvedLibrary
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
@@ -36,7 +36,7 @@ class NativeForwardDeclarationsSymbolProvider(
session: FirSession,
private val forwardDeclarationsModuleData: FirModuleData,
private val kotlinScopeProvider: FirKotlinScopeProvider,
private val resolvedLibraries: Collection<KotlinResolvedLibrary>,
private val kotlinLibraries: Collection<KotlinLibrary>,
) : FirSymbolProvider(session) {
private companion object {
private val validPackages = ForwardDeclarationKind.packageFqNameToKind.keys
@@ -44,8 +44,7 @@ class NativeForwardDeclarationsSymbolProvider(
private val includedForwardDeclarations: Set<ClassId> by lazy {
buildSet {
for (resolvedLibrary in resolvedLibraries) {
val library = resolvedLibrary.library
for (library in kotlinLibraries) {
if (!library.isInterop) continue
for (fqName in library.includedForwardDeclarations) {