[LL FIR] simplify common library symbol provider

createCommonLibrarySymbolProvider is simplified to avoid module clashes
and extra search

^KTIJ-27159
^KT-58325
This commit is contained in:
Dmitrii Gridin
2023-10-06 14:21:47 +02:00
committed by Space Team
parent 79303ab2db
commit 5ebef0dfd1
2 changed files with 17 additions and 13 deletions
@@ -46,17 +46,15 @@ class LLStubBasedLibrarySymbolProviderFactory(private val project: Project) : LL
moduleDataProvider: SingleModuleDataProvider,
packagePartProvider: PackagePartProvider,
scope: GlobalSearchScope,
): List<FirSymbolProvider> {
return buildList {
add(createStubBasedFirSymbolProviderForCommonMetadataFiles(project, scope, session, moduleDataProvider, kotlinScopeProvider))
add(
// klib metadata symbol provider
createStubBasedFirSymbolProviderForKotlinNativeMetadataFiles(
project, scope, session, moduleDataProvider, kotlinScopeProvider
)
)
}
}
): List<FirSymbolProvider> = listOf(
createStubBasedFirSymbolProviderForCommonMetadataFiles(
project = project,
baseScope = scope,
session = session,
moduleDataProvider = moduleDataProvider,
kotlinScopeProvider = kotlinScopeProvider,
)
)
override fun createNativeLibrarySymbolProvider(
session: FirSession,
@@ -10,13 +10,13 @@ import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.search.DelegatingGlobalSearchScope
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinBuiltInFileType
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
import org.jetbrains.kotlin.library.KLIB_METADATA_FILE_EXTENSION
import org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragment
import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol
internal fun createStubBasedFirSymbolProviderForClassFiles(
@@ -41,7 +41,13 @@ internal fun createStubBasedFirSymbolProviderForCommonMetadataFiles(
kotlinScopeProvider: FirKotlinScopeProvider,
): FirSymbolProvider = createStubBasedFirSymbolProviderForScopeLimitedByFiles(
project, baseScope, session, moduleDataProvider, kotlinScopeProvider,
fileFilter = { file -> file.fileType == KotlinBuiltInFileType },
fileFilter = { file ->
val extension = file.extension
extension == BuiltInSerializerProtocol.BUILTINS_FILE_EXTENSION ||
extension == MetadataPackageFragment.METADATA_FILE_EXTENSION ||
// klib metadata symbol provider
extension == KLIB_METADATA_FILE_EXTENSION
},
)
internal fun createStubBasedFirSymbolProviderForKotlinNativeMetadataFiles(