[LL] Fix rest library symbol providers computing the wrong package sets
- See KT-63718 for a detailed description of the issue. This fix is a workaround (see KT-64236). - It's worth mentioning that it's too expensive to compute package sets for "all libraries except one". Package sets are just an optimization. ^KT-63718 fixed
This commit is contained in:
committed by
Space Team
parent
f2cb0f1407
commit
fa3da87401
+4
@@ -44,6 +44,7 @@ class LLFirStandaloneLibrarySymbolProviderFactory(private val project: Project)
|
|||||||
firJavaFacade: FirJavaFacade,
|
firJavaFacade: FirJavaFacade,
|
||||||
packagePartProvider: PackagePartProvider,
|
packagePartProvider: PackagePartProvider,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider> {
|
): List<FirSymbolProvider> {
|
||||||
return listOf(
|
return listOf(
|
||||||
JvmClassFileBasedSymbolProvider(
|
JvmClassFileBasedSymbolProvider(
|
||||||
@@ -64,6 +65,7 @@ class LLFirStandaloneLibrarySymbolProviderFactory(private val project: Project)
|
|||||||
moduleDataProvider: SingleModuleDataProvider,
|
moduleDataProvider: SingleModuleDataProvider,
|
||||||
packagePartProvider: PackagePartProvider,
|
packagePartProvider: PackagePartProvider,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider> {
|
): List<FirSymbolProvider> {
|
||||||
return buildList {
|
return buildList {
|
||||||
add(
|
add(
|
||||||
@@ -88,6 +90,7 @@ class LLFirStandaloneLibrarySymbolProviderFactory(private val project: Project)
|
|||||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
moduleDataProvider: SingleModuleDataProvider,
|
moduleDataProvider: SingleModuleDataProvider,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider> {
|
): List<FirSymbolProvider> {
|
||||||
val forwardDeclarationsModuleData = BinaryModuleData.createDependencyModuleData(
|
val forwardDeclarationsModuleData = BinaryModuleData.createDependencyModuleData(
|
||||||
FORWARD_DECLARATIONS_MODULE_NAME,
|
FORWARD_DECLARATIONS_MODULE_NAME,
|
||||||
@@ -109,6 +112,7 @@ class LLFirStandaloneLibrarySymbolProviderFactory(private val project: Project)
|
|||||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
moduleDataProvider: SingleModuleDataProvider,
|
moduleDataProvider: SingleModuleDataProvider,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider> {
|
): List<FirSymbolProvider> {
|
||||||
val kLibs = moduleData.getLibraryKLibs()
|
val kLibs = moduleData.getLibraryKLibs()
|
||||||
|
|
||||||
|
|||||||
+4
-3
@@ -23,6 +23,7 @@ abstract class LLFirLibrarySymbolProviderFactory {
|
|||||||
firJavaFacade: FirJavaFacade,
|
firJavaFacade: FirJavaFacade,
|
||||||
packagePartProvider: PackagePartProvider,
|
packagePartProvider: PackagePartProvider,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider>
|
): List<FirSymbolProvider>
|
||||||
|
|
||||||
abstract fun createCommonLibrarySymbolProvider(
|
abstract fun createCommonLibrarySymbolProvider(
|
||||||
@@ -32,6 +33,7 @@ abstract class LLFirLibrarySymbolProviderFactory {
|
|||||||
moduleDataProvider: SingleModuleDataProvider,
|
moduleDataProvider: SingleModuleDataProvider,
|
||||||
packagePartProvider: PackagePartProvider,
|
packagePartProvider: PackagePartProvider,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider>
|
): List<FirSymbolProvider>
|
||||||
|
|
||||||
abstract fun createNativeLibrarySymbolProvider(
|
abstract fun createNativeLibrarySymbolProvider(
|
||||||
@@ -40,25 +42,24 @@ abstract class LLFirLibrarySymbolProviderFactory {
|
|||||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
moduleDataProvider: SingleModuleDataProvider,
|
moduleDataProvider: SingleModuleDataProvider,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider>
|
): List<FirSymbolProvider>
|
||||||
|
|
||||||
|
|
||||||
abstract fun createJsLibrarySymbolProvider(
|
abstract fun createJsLibrarySymbolProvider(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
moduleData: LLFirModuleData,
|
moduleData: LLFirModuleData,
|
||||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
moduleDataProvider: SingleModuleDataProvider,
|
moduleDataProvider: SingleModuleDataProvider,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider>
|
): List<FirSymbolProvider>
|
||||||
|
|
||||||
|
|
||||||
abstract fun createBuiltinsSymbolProvider(
|
abstract fun createBuiltinsSymbolProvider(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
moduleData: LLFirModuleData,
|
moduleData: LLFirModuleData,
|
||||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
): List<FirSymbolProvider>
|
): List<FirSymbolProvider>
|
||||||
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun getService(project: Project): LLFirLibrarySymbolProviderFactory =
|
fun getService(project: Project): LLFirLibrarySymbolProviderFactory =
|
||||||
project.getService(LLFirLibrarySymbolProviderFactory::class.java)
|
project.getService(LLFirLibrarySymbolProviderFactory::class.java)
|
||||||
|
|||||||
+8
-2
@@ -95,6 +95,7 @@ internal abstract class LLFirAbstractSessionFactory(protected val project: Proje
|
|||||||
project: Project,
|
project: Project,
|
||||||
builtinTypes: BuiltinTypes,
|
builtinTypes: BuiltinTypes,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean = false,
|
||||||
): List<FirSymbolProvider>
|
): List<FirSymbolProvider>
|
||||||
|
|
||||||
fun createScriptSession(module: KtScriptModule): LLFirScriptSession {
|
fun createScriptSession(module: KtScriptModule): LLFirScriptSession {
|
||||||
@@ -386,8 +387,13 @@ internal abstract class LLFirAbstractSessionFactory(protected val project: Proje
|
|||||||
.intersectWith(GlobalSearchScope.notScope(libraryModule.contentScope))
|
.intersectWith(GlobalSearchScope.notScope(libraryModule.contentScope))
|
||||||
|
|
||||||
val restLibrariesProvider = createProjectLibraryProvidersForScope(
|
val restLibrariesProvider = createProjectLibraryProvidersForScope(
|
||||||
session, moduleData, scopeProvider,
|
session,
|
||||||
project, builtinTypes, librariesSearchScope
|
moduleData,
|
||||||
|
scopeProvider,
|
||||||
|
project,
|
||||||
|
builtinTypes,
|
||||||
|
librariesSearchScope,
|
||||||
|
isFallbackDependenciesProvider = true,
|
||||||
)
|
)
|
||||||
|
|
||||||
addAll(restLibrariesProvider)
|
addAll(restLibrariesProvider)
|
||||||
|
|||||||
+8
-1
@@ -80,13 +80,20 @@ internal class LLFirCommonSessionFactory(project: Project) : LLFirAbstractSessio
|
|||||||
project: Project,
|
project: Project,
|
||||||
builtinTypes: BuiltinTypes,
|
builtinTypes: BuiltinTypes,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider> {
|
): List<FirSymbolProvider> {
|
||||||
val moduleDataProvider = SingleModuleDataProvider(moduleData)
|
val moduleDataProvider = SingleModuleDataProvider(moduleData)
|
||||||
val packagePartProvider = project.createPackagePartProvider(scope)
|
val packagePartProvider = project.createPackagePartProvider(scope)
|
||||||
return buildList {
|
return buildList {
|
||||||
addAll(
|
addAll(
|
||||||
LLFirLibrarySymbolProviderFactory.getService(project).createCommonLibrarySymbolProvider(
|
LLFirLibrarySymbolProviderFactory.getService(project).createCommonLibrarySymbolProvider(
|
||||||
session, moduleData, kotlinScopeProvider, moduleDataProvider, packagePartProvider, scope,
|
session,
|
||||||
|
moduleData,
|
||||||
|
kotlinScopeProvider,
|
||||||
|
moduleDataProvider,
|
||||||
|
packagePartProvider,
|
||||||
|
scope,
|
||||||
|
isFallbackDependenciesProvider,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+9
-2
@@ -81,10 +81,17 @@ internal class LLFirJsSessionFactory(project: Project) : LLFirAbstractSessionFac
|
|||||||
project: Project,
|
project: Project,
|
||||||
builtinTypes: BuiltinTypes,
|
builtinTypes: BuiltinTypes,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider> {
|
): List<FirSymbolProvider> {
|
||||||
val moduleDataProvider = SingleModuleDataProvider(moduleData)
|
val moduleDataProvider = SingleModuleDataProvider(moduleData)
|
||||||
return LLFirLibrarySymbolProviderFactory.getService(project)
|
return LLFirLibrarySymbolProviderFactory.getService(project).createJsLibrarySymbolProvider(
|
||||||
.createJsLibrarySymbolProvider(session, moduleData, kotlinScopeProvider, moduleDataProvider, scope)
|
session,
|
||||||
|
moduleData,
|
||||||
|
kotlinScopeProvider,
|
||||||
|
moduleDataProvider,
|
||||||
|
scope,
|
||||||
|
isFallbackDependenciesProvider,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun LLFirSession.registerModuleIndependentJsComponents() {
|
private fun LLFirSession.registerModuleIndependentJsComponents() {
|
||||||
|
|||||||
+3
-1
@@ -86,6 +86,7 @@ internal class LLFirJvmSessionFactory(project: Project) : LLFirAbstractSessionFa
|
|||||||
project: Project,
|
project: Project,
|
||||||
builtinTypes: BuiltinTypes,
|
builtinTypes: BuiltinTypes,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider> {
|
): List<FirSymbolProvider> {
|
||||||
val moduleDataProvider = SingleModuleDataProvider(moduleData)
|
val moduleDataProvider = SingleModuleDataProvider(moduleData)
|
||||||
val packagePartProvider = project.createPackagePartProvider(scope)
|
val packagePartProvider = project.createPackagePartProvider(scope)
|
||||||
@@ -100,7 +101,8 @@ internal class LLFirJvmSessionFactory(project: Project) : LLFirAbstractSessionFa
|
|||||||
moduleDataProvider,
|
moduleDataProvider,
|
||||||
firJavaFacade,
|
firJavaFacade,
|
||||||
packagePartProvider,
|
packagePartProvider,
|
||||||
scope
|
scope,
|
||||||
|
isFallbackDependenciesProvider,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
addIfNotNull(
|
addIfNotNull(
|
||||||
|
|||||||
+7
-2
@@ -10,7 +10,6 @@ import com.intellij.psi.search.GlobalSearchScope
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirLibrarySymbolProviderFactory
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirLibrarySymbolProviderFactory
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirModuleData
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirModuleData
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirModuleWithDependenciesSymbolProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirModuleWithDependenciesSymbolProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.stubBased.deserialization.createStubBasedFirSymbolProviderForKotlinNativeMetadataFiles
|
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule
|
import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
|
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
|
||||||
@@ -79,13 +78,19 @@ internal class LLFirNativeSessionFactory(project: Project) : LLFirAbstractSessio
|
|||||||
project: Project,
|
project: Project,
|
||||||
builtinTypes: BuiltinTypes,
|
builtinTypes: BuiltinTypes,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider> {
|
): List<FirSymbolProvider> {
|
||||||
val moduleDataProvider = SingleModuleDataProvider(moduleData)
|
val moduleDataProvider = SingleModuleDataProvider(moduleData)
|
||||||
val packagePartProvider = project.createPackagePartProvider(scope)
|
val packagePartProvider = project.createPackagePartProvider(scope)
|
||||||
return buildList {
|
return buildList {
|
||||||
addAll(
|
addAll(
|
||||||
LLFirLibrarySymbolProviderFactory.getService(project).createNativeLibrarySymbolProvider(
|
LLFirLibrarySymbolProviderFactory.getService(project).createNativeLibrarySymbolProvider(
|
||||||
session, moduleData, kotlinScopeProvider, moduleDataProvider, scope
|
session,
|
||||||
|
moduleData,
|
||||||
|
kotlinScopeProvider,
|
||||||
|
moduleDataProvider,
|
||||||
|
scope,
|
||||||
|
isFallbackDependenciesProvider,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
addIfNotNull(
|
addIfNotNull(
|
||||||
|
|||||||
+28
-3
@@ -34,13 +34,23 @@ class LLStubBasedLibrarySymbolProviderFactory(private val project: Project) : LL
|
|||||||
firJavaFacade: FirJavaFacade,
|
firJavaFacade: FirJavaFacade,
|
||||||
packagePartProvider: PackagePartProvider,
|
packagePartProvider: PackagePartProvider,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider> {
|
): List<FirSymbolProvider> {
|
||||||
return buildList {
|
return buildList {
|
||||||
//stub based provider here works over kotlin-only indices and thus provides only kotlin declarations
|
//stub based provider here works over kotlin-only indices and thus provides only kotlin declarations
|
||||||
//in order to find java declarations, one need to explicitly setup java symbol provider.
|
//in order to find java declarations, one need to explicitly setup java symbol provider.
|
||||||
//for ProtoBuf based provider (used in compiler), there is no need in separated java provider,
|
//for ProtoBuf based provider (used in compiler), there is no need in separated java provider,
|
||||||
//because all declarations are retrieved at once and are not distinguished
|
//because all declarations are retrieved at once and are not distinguished
|
||||||
add(createStubBasedFirSymbolProviderForClassFiles(project, scope, session, moduleDataProvider, kotlinScopeProvider))
|
add(
|
||||||
|
createStubBasedFirSymbolProviderForClassFiles(
|
||||||
|
project,
|
||||||
|
scope,
|
||||||
|
session,
|
||||||
|
moduleDataProvider,
|
||||||
|
kotlinScopeProvider,
|
||||||
|
isFallbackDependenciesProvider,
|
||||||
|
)
|
||||||
|
)
|
||||||
add(LLFirJavaSymbolProvider(session, moduleData, project, scope))
|
add(LLFirJavaSymbolProvider(session, moduleData, project, scope))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -52,6 +62,7 @@ class LLStubBasedLibrarySymbolProviderFactory(private val project: Project) : LL
|
|||||||
moduleDataProvider: SingleModuleDataProvider,
|
moduleDataProvider: SingleModuleDataProvider,
|
||||||
packagePartProvider: PackagePartProvider,
|
packagePartProvider: PackagePartProvider,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider> = listOf(
|
): List<FirSymbolProvider> = listOf(
|
||||||
createStubBasedFirSymbolProviderForCommonMetadataFiles(
|
createStubBasedFirSymbolProviderForCommonMetadataFiles(
|
||||||
project = project,
|
project = project,
|
||||||
@@ -59,6 +70,7 @@ class LLStubBasedLibrarySymbolProviderFactory(private val project: Project) : LL
|
|||||||
session = session,
|
session = session,
|
||||||
moduleDataProvider = moduleDataProvider,
|
moduleDataProvider = moduleDataProvider,
|
||||||
kotlinScopeProvider = kotlinScopeProvider,
|
kotlinScopeProvider = kotlinScopeProvider,
|
||||||
|
isFallbackDependenciesProvider = isFallbackDependenciesProvider,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -68,10 +80,16 @@ class LLStubBasedLibrarySymbolProviderFactory(private val project: Project) : LL
|
|||||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
moduleDataProvider: SingleModuleDataProvider,
|
moduleDataProvider: SingleModuleDataProvider,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider> {
|
): List<FirSymbolProvider> {
|
||||||
return listOf(
|
return listOf(
|
||||||
createStubBasedFirSymbolProviderForKotlinNativeMetadataFiles(
|
createStubBasedFirSymbolProviderForKotlinNativeMetadataFiles(
|
||||||
project, scope, session, moduleDataProvider, kotlinScopeProvider
|
project,
|
||||||
|
scope,
|
||||||
|
session,
|
||||||
|
moduleDataProvider,
|
||||||
|
kotlinScopeProvider,
|
||||||
|
isFallbackDependenciesProvider,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -82,10 +100,16 @@ class LLStubBasedLibrarySymbolProviderFactory(private val project: Project) : LL
|
|||||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
moduleDataProvider: SingleModuleDataProvider,
|
moduleDataProvider: SingleModuleDataProvider,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): List<FirSymbolProvider> {
|
): List<FirSymbolProvider> {
|
||||||
return listOf(
|
return listOf(
|
||||||
createStubBasedFirSymbolProviderForKotlinNativeMetadataFiles(
|
createStubBasedFirSymbolProviderForKotlinNativeMetadataFiles(
|
||||||
project, scope, session, moduleDataProvider, kotlinScopeProvider
|
project,
|
||||||
|
scope,
|
||||||
|
session,
|
||||||
|
moduleDataProvider,
|
||||||
|
kotlinScopeProvider,
|
||||||
|
isFallbackDependenciesProvider,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -112,6 +136,7 @@ private class StubBasedBuiltInsSymbolProvider(
|
|||||||
kotlinScopeProvider,
|
kotlinScopeProvider,
|
||||||
project,
|
project,
|
||||||
createBuiltInsScope(project),
|
createBuiltInsScope(project),
|
||||||
|
isFallbackDependenciesProvider = false,
|
||||||
) {
|
) {
|
||||||
private val syntheticFunctionInterfaceProvider = FirBuiltinSyntheticFunctionInterfaceProvider(
|
private val syntheticFunctionInterfaceProvider = FirBuiltinSyntheticFunctionInterfaceProvider(
|
||||||
session,
|
session,
|
||||||
|
|||||||
+7
-1
@@ -54,10 +54,16 @@ internal open class StubBasedFirDeserializedSymbolProvider(
|
|||||||
private val kotlinScopeProvider: FirKotlinScopeProvider,
|
private val kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
project: Project,
|
project: Project,
|
||||||
scope: GlobalSearchScope,
|
scope: GlobalSearchScope,
|
||||||
|
|
||||||
|
// A workaround for KT-63718. It should be removed with KT-64236.
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
) : LLFirKotlinSymbolProvider(session) {
|
) : LLFirKotlinSymbolProvider(session) {
|
||||||
private val moduleData = moduleDataProvider.getModuleData(null)
|
private val moduleData = moduleDataProvider.getModuleData(null)
|
||||||
|
|
||||||
final override val declarationProvider = project.createDeclarationProvider(scope, session.llFirModuleData.ktModule)
|
final override val declarationProvider = project.createDeclarationProvider(
|
||||||
|
scope,
|
||||||
|
contextualModule = session.llFirModuleData.ktModule.takeIf { !isFallbackDependenciesProvider },
|
||||||
|
)
|
||||||
|
|
||||||
override val symbolNamesProvider: FirSymbolNamesProvider = LLFirKotlinSymbolNamesProvider.cached(session, declarationProvider)
|
override val symbolNamesProvider: FirSymbolNamesProvider = LLFirKotlinSymbolNamesProvider.cached(session, declarationProvider)
|
||||||
|
|
||||||
|
|||||||
+28
-5
@@ -11,7 +11,6 @@ import com.intellij.openapi.vfs.VirtualFile
|
|||||||
import com.intellij.psi.search.DelegatingGlobalSearchScope
|
import com.intellij.psi.search.DelegatingGlobalSearchScope
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
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.deserialization.SingleModuleDataProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||||
@@ -25,8 +24,14 @@ internal fun createStubBasedFirSymbolProviderForClassFiles(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
moduleDataProvider: SingleModuleDataProvider,
|
moduleDataProvider: SingleModuleDataProvider,
|
||||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): FirSymbolProvider = createStubBasedFirSymbolProviderForScopeLimitedByFiles(
|
): FirSymbolProvider = createStubBasedFirSymbolProviderForScopeLimitedByFiles(
|
||||||
project, baseScope, session, moduleDataProvider, kotlinScopeProvider,
|
project,
|
||||||
|
baseScope,
|
||||||
|
session,
|
||||||
|
moduleDataProvider,
|
||||||
|
kotlinScopeProvider,
|
||||||
|
isFallbackDependenciesProvider,
|
||||||
fileFilter = { file ->
|
fileFilter = { file ->
|
||||||
val extension = file.extension
|
val extension = file.extension
|
||||||
extension == JavaClassFileType.INSTANCE.defaultExtension || extension == BuiltInSerializerProtocol.BUILTINS_FILE_EXTENSION
|
extension == JavaClassFileType.INSTANCE.defaultExtension || extension == BuiltInSerializerProtocol.BUILTINS_FILE_EXTENSION
|
||||||
@@ -39,8 +44,14 @@ internal fun createStubBasedFirSymbolProviderForCommonMetadataFiles(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
moduleDataProvider: SingleModuleDataProvider,
|
moduleDataProvider: SingleModuleDataProvider,
|
||||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): FirSymbolProvider = createStubBasedFirSymbolProviderForScopeLimitedByFiles(
|
): FirSymbolProvider = createStubBasedFirSymbolProviderForScopeLimitedByFiles(
|
||||||
project, baseScope, session, moduleDataProvider, kotlinScopeProvider,
|
project,
|
||||||
|
baseScope,
|
||||||
|
session,
|
||||||
|
moduleDataProvider,
|
||||||
|
kotlinScopeProvider,
|
||||||
|
isFallbackDependenciesProvider,
|
||||||
fileFilter = { file ->
|
fileFilter = { file ->
|
||||||
val extension = file.extension
|
val extension = file.extension
|
||||||
extension == BuiltInSerializerProtocol.BUILTINS_FILE_EXTENSION ||
|
extension == BuiltInSerializerProtocol.BUILTINS_FILE_EXTENSION ||
|
||||||
@@ -56,8 +67,14 @@ internal fun createStubBasedFirSymbolProviderForKotlinNativeMetadataFiles(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
moduleDataProvider: SingleModuleDataProvider,
|
moduleDataProvider: SingleModuleDataProvider,
|
||||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
): FirSymbolProvider = createStubBasedFirSymbolProviderForScopeLimitedByFiles(
|
): FirSymbolProvider = createStubBasedFirSymbolProviderForScopeLimitedByFiles(
|
||||||
project, baseScope, session, moduleDataProvider, kotlinScopeProvider,
|
project,
|
||||||
|
baseScope,
|
||||||
|
session,
|
||||||
|
moduleDataProvider,
|
||||||
|
kotlinScopeProvider,
|
||||||
|
isFallbackDependenciesProvider,
|
||||||
fileFilter = { file -> file.extension == KLIB_METADATA_FILE_EXTENSION },
|
fileFilter = { file -> file.extension == KLIB_METADATA_FILE_EXTENSION },
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -67,13 +84,19 @@ internal fun createStubBasedFirSymbolProviderForScopeLimitedByFiles(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
moduleDataProvider: SingleModuleDataProvider,
|
moduleDataProvider: SingleModuleDataProvider,
|
||||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
|
isFallbackDependenciesProvider: Boolean,
|
||||||
fileFilter: (VirtualFile) -> Boolean,
|
fileFilter: (VirtualFile) -> Boolean,
|
||||||
): StubBasedFirDeserializedSymbolProvider {
|
): StubBasedFirDeserializedSymbolProvider {
|
||||||
return createFirSymbolProviderForScopeLimitedByFiles(
|
return createFirSymbolProviderForScopeLimitedByFiles(
|
||||||
project, baseScope, fileFilter,
|
project, baseScope, fileFilter,
|
||||||
symbolProviderFactory = { reducedScope: GlobalSearchScope ->
|
symbolProviderFactory = { reducedScope: GlobalSearchScope ->
|
||||||
StubBasedFirDeserializedSymbolProvider(
|
StubBasedFirDeserializedSymbolProvider(
|
||||||
session, moduleDataProvider, kotlinScopeProvider, project, reducedScope,
|
session,
|
||||||
|
moduleDataProvider,
|
||||||
|
kotlinScopeProvider,
|
||||||
|
project,
|
||||||
|
reducedScope,
|
||||||
|
isFallbackDependenciesProvider,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user