[Analysis API Standalone] use compiler FirSymbolProvider for standalone mode
^KT-61371 fixed
This commit is contained in:
committed by
Space Team
parent
d377d87c77
commit
b25185530f
+26
@@ -25,6 +25,32 @@ abstract class LLFirLibrarySymbolProviderFactory {
|
||||
scope: GlobalSearchScope,
|
||||
): List<FirSymbolProvider>
|
||||
|
||||
abstract fun createCommonLibrarySymbolProvider(
|
||||
session: FirSession,
|
||||
moduleData: LLFirModuleData,
|
||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||
moduleDataProvider: SingleModuleDataProvider,
|
||||
packagePartProvider: PackagePartProvider,
|
||||
scope: GlobalSearchScope,
|
||||
): List<FirSymbolProvider>
|
||||
|
||||
abstract fun createNativeLibrarySymbolProvider(
|
||||
session: FirSession,
|
||||
moduleData: LLFirModuleData,
|
||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||
moduleDataProvider: SingleModuleDataProvider,
|
||||
scope: GlobalSearchScope,
|
||||
): List<FirSymbolProvider>
|
||||
|
||||
|
||||
abstract fun createJsLibrarySymbolProvider(
|
||||
session: FirSession,
|
||||
moduleData: LLFirModuleData,
|
||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||
moduleDataProvider: SingleModuleDataProvider,
|
||||
scope: GlobalSearchScope,
|
||||
): List<FirSymbolProvider>
|
||||
|
||||
companion object {
|
||||
fun getService(project: Project): LLFirLibrarySymbolProviderFactory =
|
||||
project.getService(LLFirLibrarySymbolProviderFactory::class.java)
|
||||
|
||||
+6
-2
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.sessions
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
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.LLFirModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirModuleWithDependenciesSymbolProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.stubBased.deserialization.createStubBasedFirSymbolProviderForCommonMetadataFiles
|
||||
@@ -90,8 +91,11 @@ internal class LLFirCommonSessionFactory(project: Project) : LLFirAbstractSessio
|
||||
val moduleDataProvider = SingleModuleDataProvider(moduleData)
|
||||
val packagePartProvider = project.createPackagePartProvider(scope)
|
||||
return buildList {
|
||||
add(createStubBasedFirSymbolProviderForCommonMetadataFiles(project, scope, session, moduleDataProvider, kotlinScopeProvider))
|
||||
add(createStubBasedFirSymbolProviderForKotlinNativeMetadataFiles(project, scope, session, moduleDataProvider, kotlinScopeProvider))
|
||||
addAll(
|
||||
LLFirLibrarySymbolProviderFactory.getService(project).createCommonLibrarySymbolProvider(
|
||||
session, moduleData, kotlinScopeProvider, moduleDataProvider, packagePartProvider, scope,
|
||||
)
|
||||
)
|
||||
|
||||
addIfNotNull(
|
||||
OptionalAnnotationClassesProvider.createIfNeeded(
|
||||
|
||||
+5
-1
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.sessions
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
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.LLFirModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirModuleWithDependenciesSymbolProvider
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule
|
||||
@@ -20,6 +21,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.FirPlatformDiagnosticSuppresso
|
||||
import org.jetbrains.kotlin.fir.analysis.js.checkers.FirJsPlatformDiagnosticSuppressor
|
||||
import org.jetbrains.kotlin.fir.analysis.jvm.FirJvmOverridesBackwardCompatibilityHelper
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeSpecificityComparatorProvider
|
||||
import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.ConeCallConflictResolverFactory
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||
@@ -80,7 +82,9 @@ internal class LLFirJsSessionFactory(project: Project) : LLFirAbstractSessionFac
|
||||
builtinTypes: BuiltinTypes,
|
||||
scope: GlobalSearchScope,
|
||||
): List<FirSymbolProvider> {
|
||||
return emptyList() // TODO(kirpichenkov)
|
||||
val moduleDataProvider = SingleModuleDataProvider(moduleData)
|
||||
return LLFirLibrarySymbolProviderFactory.getService(project)
|
||||
.createJsLibrarySymbolProvider(session, moduleData, kotlinScopeProvider, moduleDataProvider, scope)
|
||||
}
|
||||
|
||||
private fun LLFirSession.registerModuleIndependentJsComponents() {
|
||||
|
||||
+4
-3
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.sessions
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
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.LLFirModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirModuleWithDependenciesSymbolProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.stubBased.deserialization.createStubBasedFirSymbolProviderForKotlinNativeMetadataFiles
|
||||
@@ -82,9 +83,9 @@ internal class LLFirNativeSessionFactory(project: Project) : LLFirAbstractSessio
|
||||
val moduleDataProvider = SingleModuleDataProvider(moduleData)
|
||||
val packagePartProvider = project.createPackagePartProvider(scope)
|
||||
return buildList {
|
||||
add(
|
||||
createStubBasedFirSymbolProviderForKotlinNativeMetadataFiles(
|
||||
project, scope, session, moduleDataProvider, kotlinScopeProvider
|
||||
addAll(
|
||||
LLFirLibrarySymbolProviderFactory.getService(project).createNativeLibrarySymbolProvider(
|
||||
session, moduleData, kotlinScopeProvider, moduleDataProvider, scope
|
||||
)
|
||||
)
|
||||
addIfNotNull(
|
||||
|
||||
+44
-1
@@ -27,7 +27,7 @@ class LLStubBasedLibrarySymbolProviderFactory(private val project: Project) : LL
|
||||
moduleDataProvider: SingleModuleDataProvider,
|
||||
firJavaFacade: FirJavaFacade,
|
||||
packagePartProvider: PackagePartProvider,
|
||||
scope: GlobalSearchScope
|
||||
scope: GlobalSearchScope,
|
||||
): List<FirSymbolProvider> {
|
||||
return buildList {
|
||||
//stub based provider here works over kotlin-only indices and thus provides only kotlin declarations
|
||||
@@ -38,4 +38,47 @@ class LLStubBasedLibrarySymbolProviderFactory(private val project: Project) : LL
|
||||
add(LLFirJavaSymbolProvider(session, moduleData, project, scope))
|
||||
}
|
||||
}
|
||||
|
||||
override fun createCommonLibrarySymbolProvider(
|
||||
session: FirSession,
|
||||
moduleData: LLFirModuleData,
|
||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||
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
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun createNativeLibrarySymbolProvider(
|
||||
session: FirSession,
|
||||
moduleData: LLFirModuleData,
|
||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||
moduleDataProvider: SingleModuleDataProvider,
|
||||
scope: GlobalSearchScope,
|
||||
): List<FirSymbolProvider> {
|
||||
return listOf(
|
||||
createStubBasedFirSymbolProviderForKotlinNativeMetadataFiles(
|
||||
project, scope, session, moduleDataProvider, kotlinScopeProvider
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun createJsLibrarySymbolProvider(
|
||||
session: FirSession,
|
||||
moduleData: LLFirModuleData,
|
||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||
moduleDataProvider: SingleModuleDataProvider,
|
||||
scope: GlobalSearchScope,
|
||||
): List<FirSymbolProvider> {
|
||||
return emptyList() // TODO(kirpichenkov)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user