[LL FIR] refactoring, extract LLFirLibrarySymbolProviderFactory implementation to the standalone module
^KT-61371
This commit is contained in:
committed by
Space Team
parent
575c7ea0d9
commit
2422fc6df3
+43
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.analysis.api.standalone.base.project.structure
|
||||||
|
|
||||||
|
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.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider
|
||||||
|
import org.jetbrains.kotlin.fir.java.FirJavaFacade
|
||||||
|
import org.jetbrains.kotlin.fir.java.deserialization.JvmClassFileBasedSymbolProvider
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||||
|
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||||
|
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||||
|
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
|
||||||
|
|
||||||
|
class LLFirStandaloneLibrarySymbolProviderFactory : LLFirLibrarySymbolProviderFactory() {
|
||||||
|
override fun createJvmFirDeserializedSymbolProviders(
|
||||||
|
project: Project,
|
||||||
|
session: FirSession,
|
||||||
|
moduleData: LLFirModuleData,
|
||||||
|
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
|
moduleDataProvider: SingleModuleDataProvider,
|
||||||
|
firJavaFacade: FirJavaFacade,
|
||||||
|
packagePartProvider: PackagePartProvider,
|
||||||
|
scope: GlobalSearchScope,
|
||||||
|
): List<FirSymbolProvider> {
|
||||||
|
return listOf(
|
||||||
|
JvmClassFileBasedSymbolProvider(
|
||||||
|
session,
|
||||||
|
moduleDataProvider,
|
||||||
|
kotlinScopeProvider,
|
||||||
|
packagePartProvider,
|
||||||
|
VirtualFileFinderFactory.getInstance(project).create(scope),
|
||||||
|
firJavaFacade
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-1
@@ -16,6 +16,7 @@ import com.intellij.psi.search.GlobalSearchScope
|
|||||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.FirStandaloneServiceRegistrar
|
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.FirStandaloneServiceRegistrar
|
||||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtStaticProjectStructureProvider
|
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtStaticProjectStructureProvider
|
||||||
|
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.LLFirStandaloneLibrarySymbolProviderFactory
|
||||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory
|
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirLibrarySymbolProviderFactory
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirLibrarySymbolProviderFactory
|
||||||
@@ -158,7 +159,7 @@ public class StandaloneAnalysisAPISessionBuilder(
|
|||||||
KotlinStaticPackagePartProviderFactory(packagePartProvider)
|
KotlinStaticPackagePartProviderFactory(packagePartProvider)
|
||||||
)
|
)
|
||||||
|
|
||||||
registerService(LLFirLibrarySymbolProviderFactory::class.java, LLFirLibrarySymbolProviderFactory::class.java)
|
registerService(LLFirLibrarySymbolProviderFactory::class.java, LLFirStandaloneLibrarySymbolProviderFactory::class.java)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
|||||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeTokenProvider
|
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeTokenProvider
|
||||||
import org.jetbrains.kotlin.analysis.api.standalone.KtAlwaysAccessibleLifetimeTokenProvider
|
import org.jetbrains.kotlin.analysis.api.standalone.KtAlwaysAccessibleLifetimeTokenProvider
|
||||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtStaticModuleProvider
|
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtStaticModuleProvider
|
||||||
|
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.LLFirStandaloneLibrarySymbolProviderFactory
|
||||||
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.project.structure.KtBinaryModule
|
import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider
|
import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider
|
||||||
@@ -29,6 +30,7 @@ public object StandaloneModeTestServiceRegistrar : AnalysisApiTestServiceRegistr
|
|||||||
override fun registerProjectServices(project: MockProject, testServices: TestServices) {
|
override fun registerProjectServices(project: MockProject, testServices: TestServices) {
|
||||||
project.apply {
|
project.apply {
|
||||||
registerService(KtLifetimeTokenProvider::class.java, KtAlwaysAccessibleLifetimeTokenProvider::class.java)
|
registerService(KtLifetimeTokenProvider::class.java, KtAlwaysAccessibleLifetimeTokenProvider::class.java)
|
||||||
|
registerService(LLFirLibrarySymbolProviderFactory::class.java, LLFirStandaloneLibrarySymbolProviderFactory::class.java)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,7 +49,6 @@ public object StandaloneModeTestServiceRegistrar : AnalysisApiTestServiceRegistr
|
|||||||
projectEnvironment.environment.jarFileSystem as CoreJarFileSystem
|
projectEnvironment.environment.jarFileSystem as CoreJarFileSystem
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
registerService(LLFirLibrarySymbolProviderFactory::class.java, LLFirLibrarySymbolProviderFactory::class.java)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-16
@@ -10,14 +10,12 @@ import com.intellij.psi.search.GlobalSearchScope
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider
|
import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider
|
||||||
import org.jetbrains.kotlin.fir.java.FirJavaFacade
|
import org.jetbrains.kotlin.fir.java.FirJavaFacade
|
||||||
import org.jetbrains.kotlin.fir.java.deserialization.JvmClassFileBasedSymbolProvider
|
|
||||||
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
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||||
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
|
|
||||||
|
|
||||||
open class LLFirLibrarySymbolProviderFactory {
|
abstract class LLFirLibrarySymbolProviderFactory {
|
||||||
open fun createJvmFirDeserializedSymbolProviders(
|
abstract fun createJvmFirDeserializedSymbolProviders(
|
||||||
project: Project,
|
project: Project,
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
moduleData: LLFirModuleData,
|
moduleData: LLFirModuleData,
|
||||||
@@ -26,16 +24,5 @@ open class LLFirLibrarySymbolProviderFactory {
|
|||||||
firJavaFacade: FirJavaFacade,
|
firJavaFacade: FirJavaFacade,
|
||||||
packagePartProvider: PackagePartProvider,
|
packagePartProvider: PackagePartProvider,
|
||||||
scope: GlobalSearchScope
|
scope: GlobalSearchScope
|
||||||
): List<FirSymbolProvider> {
|
): List<FirSymbolProvider>
|
||||||
return listOf(
|
|
||||||
JvmClassFileBasedSymbolProvider(
|
|
||||||
session,
|
|
||||||
moduleDataProvider,
|
|
||||||
kotlinScopeProvider,
|
|
||||||
packagePartProvider,
|
|
||||||
VirtualFileFinderFactory.getInstance(project).create(scope),
|
|
||||||
firJavaFacade
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user