FIR: Pull creation of JavaClassConverter to session factory
This commit is contained in:
committed by
TeamCityServer
parent
b6e3399cbd
commit
1fc2f13a35
+12
-2
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.fir.caches.FirCachesFactory
|
|||||||
import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
|
import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
|
||||||
import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProvider
|
import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProvider
|
||||||
import org.jetbrains.kotlin.fir.deserialization.ModuleDataProvider
|
import org.jetbrains.kotlin.fir.deserialization.ModuleDataProvider
|
||||||
|
import org.jetbrains.kotlin.fir.java.JavaClassConverter
|
||||||
import org.jetbrains.kotlin.fir.java.JavaSymbolProvider
|
import org.jetbrains.kotlin.fir.java.JavaSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.java.deserialization.KotlinDeserializedJvmSymbolsProvider
|
import org.jetbrains.kotlin.fir.java.deserialization.KotlinDeserializedJvmSymbolsProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirDependenciesSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.FirDependenciesSymbolProvider
|
||||||
@@ -138,7 +139,12 @@ internal object FirIdeSessionFactory {
|
|||||||
this,
|
this,
|
||||||
providers = listOf(
|
providers = listOf(
|
||||||
provider.symbolProvider,
|
provider.symbolProvider,
|
||||||
JavaSymbolProvider(this, moduleData, project.createJavaClassFinder(contentScope)),
|
JavaSymbolProvider(
|
||||||
|
this,
|
||||||
|
JavaClassConverter(
|
||||||
|
this, moduleData, project.createJavaClassFinder(contentScope)
|
||||||
|
)
|
||||||
|
),
|
||||||
),
|
),
|
||||||
dependencyProvider
|
dependencyProvider
|
||||||
)
|
)
|
||||||
@@ -176,13 +182,17 @@ internal object FirIdeSessionFactory {
|
|||||||
registerCommonJavaComponents(JavaModuleResolver.getInstance(project))
|
registerCommonJavaComponents(JavaModuleResolver.getInstance(project))
|
||||||
registerJavaSpecificResolveComponents()
|
registerJavaSpecificResolveComponents()
|
||||||
|
|
||||||
|
val mainModuleData = KtModuleBasedModuleData(sourceModule).apply { bindSession(this@session) }
|
||||||
|
|
||||||
val kotlinSymbolProvider = KotlinDeserializedJvmSymbolsProvider(
|
val kotlinSymbolProvider = KotlinDeserializedJvmSymbolsProvider(
|
||||||
this@session,
|
this@session,
|
||||||
moduleDataProvider = createModuleDataProvider(sourceModule, this),
|
moduleDataProvider = createModuleDataProvider(sourceModule, this),
|
||||||
kotlinScopeProvider = FirKotlinScopeProvider(::wrapScopeWithJvmMapped),
|
kotlinScopeProvider = FirKotlinScopeProvider(::wrapScopeWithJvmMapped),
|
||||||
packagePartProvider = project.createPackagePartProviderForLibrary(searchScope),
|
packagePartProvider = project.createPackagePartProviderForLibrary(searchScope),
|
||||||
kotlinClassFinder = VirtualFileFinderFactory.getInstance(project).create(searchScope),
|
kotlinClassFinder = VirtualFileFinderFactory.getInstance(project).create(searchScope),
|
||||||
javaClassFinder = project.createJavaClassFinder(searchScope)
|
javaClassConverter = JavaClassConverter(
|
||||||
|
this@session, mainModuleData, project.createJavaClassFinder(searchScope)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
val symbolProvider = FirCompositeSymbolProvider(this, listOf(kotlinSymbolProvider, builtinsAndCloneableSession.symbolProvider))
|
val symbolProvider = FirCompositeSymbolProvider(this, listOf(kotlinSymbolProvider, builtinsAndCloneableSession.symbolProvider))
|
||||||
register(FirProvider::class, FirIdeLibrariesSessionProvider(symbolProvider))
|
register(FirProvider::class, FirIdeLibrariesSessionProvider(symbolProvider))
|
||||||
|
|||||||
+7
-5
@@ -14,12 +14,12 @@ import com.intellij.psi.PsiFile
|
|||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import com.intellij.psi.search.ProjectScope
|
import com.intellij.psi.search.ProjectScope
|
||||||
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
||||||
|
import org.jetbrains.kotlin.fir.FirModuleData
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.java.FirJavaElementFinder
|
import org.jetbrains.kotlin.fir.java.FirJavaElementFinder
|
||||||
|
import org.jetbrains.kotlin.fir.java.JavaClassConverter
|
||||||
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment
|
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment
|
||||||
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope
|
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope
|
||||||
import org.jetbrains.kotlin.load.java.JavaClassFinder
|
|
||||||
import org.jetbrains.kotlin.load.java.JavaClassFinderImpl
|
|
||||||
import org.jetbrains.kotlin.load.java.createJavaClassFinder
|
import org.jetbrains.kotlin.load.java.createJavaClassFinder
|
||||||
import org.jetbrains.kotlin.load.kotlin.KotlinClassFinder
|
import org.jetbrains.kotlin.load.kotlin.KotlinClassFinder
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||||
@@ -50,9 +50,6 @@ class PsiBasedProjectEnvironment(
|
|||||||
override fun getKotlinClassFinder(fileSearchScope: AbstractProjectFileSearchScope): KotlinClassFinder =
|
override fun getKotlinClassFinder(fileSearchScope: AbstractProjectFileSearchScope): KotlinClassFinder =
|
||||||
VirtualFileFinderFactory.getInstance(project).create(fileSearchScope.asPsiSearchScope())
|
VirtualFileFinderFactory.getInstance(project).create(fileSearchScope.asPsiSearchScope())
|
||||||
|
|
||||||
override fun getJavaClassFinder(fileSearchScope: AbstractProjectFileSearchScope): JavaClassFinder =
|
|
||||||
project.createJavaClassFinder(fileSearchScope.asPsiSearchScope())
|
|
||||||
|
|
||||||
override fun getJavaModuleResolver(): JavaModuleResolver =
|
override fun getJavaModuleResolver(): JavaModuleResolver =
|
||||||
JavaModuleResolver.getInstance(project)
|
JavaModuleResolver.getInstance(project)
|
||||||
|
|
||||||
@@ -93,6 +90,11 @@ class PsiBasedProjectEnvironment(
|
|||||||
override fun getSearchScopeForProjectJavaSources(): AbstractProjectFileSearchScope =
|
override fun getSearchScopeForProjectJavaSources(): AbstractProjectFileSearchScope =
|
||||||
PsiBasedProjectFileSearchScope(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project))
|
PsiBasedProjectFileSearchScope(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project))
|
||||||
|
|
||||||
|
override fun getJavaClassConverter(
|
||||||
|
firSession: FirSession,
|
||||||
|
baseModuleData: FirModuleData,
|
||||||
|
fileSearchScope: AbstractProjectFileSearchScope
|
||||||
|
) = JavaClassConverter(firSession, baseModuleData, project.createJavaClassFinder(fileSearchScope.asPsiSearchScope()))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun AbstractProjectFileSearchScope.asPsiSearchScope() =
|
private fun AbstractProjectFileSearchScope.asPsiSearchScope() =
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ object FirSessionFactory {
|
|||||||
kotlinScopeProvider,
|
kotlinScopeProvider,
|
||||||
it.packagePartProvider,
|
it.packagePartProvider,
|
||||||
projectEnvironment.getKotlinClassFinder(it.scope),
|
projectEnvironment.getKotlinClassFinder(it.scope),
|
||||||
projectEnvironment.getJavaClassFinder(it.scope)
|
projectEnvironment.getJavaClassConverter(this, moduleData, it.scope),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,7 +165,7 @@ object FirSessionFactory {
|
|||||||
listOfNotNull(
|
listOfNotNull(
|
||||||
firProvider.symbolProvider,
|
firProvider.symbolProvider,
|
||||||
symbolProviderForBinariesFromIncrementalCompilation,
|
symbolProviderForBinariesFromIncrementalCompilation,
|
||||||
JavaSymbolProvider(this, moduleData, projectEnvironment.getJavaClassFinder(scope)),
|
JavaSymbolProvider(this, projectEnvironment.getJavaClassConverter(this, moduleData, scope)),
|
||||||
dependenciesSymbolProvider,
|
dependenciesSymbolProvider,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -213,7 +213,7 @@ object FirSessionFactory {
|
|||||||
kotlinScopeProvider,
|
kotlinScopeProvider,
|
||||||
packagePartProvider,
|
packagePartProvider,
|
||||||
projectEnvironment.getKotlinClassFinder(scope),
|
projectEnvironment.getKotlinClassFinder(scope),
|
||||||
projectEnvironment.getJavaClassFinder(scope)
|
projectEnvironment.getJavaClassConverter(this, moduleDataProvider.allModuleData.last(), scope)
|
||||||
)
|
)
|
||||||
|
|
||||||
val builtinsModuleData = createModuleDataForBuiltins(
|
val builtinsModuleData = createModuleDataForBuiltins(
|
||||||
|
|||||||
+8
-3
@@ -5,8 +5,9 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.session.environment
|
package org.jetbrains.kotlin.fir.session.environment
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.FirModuleData
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.load.java.JavaClassFinder
|
import org.jetbrains.kotlin.fir.java.JavaClassConverter
|
||||||
import org.jetbrains.kotlin.load.kotlin.KotlinClassFinder
|
import org.jetbrains.kotlin.load.kotlin.KotlinClassFinder
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||||
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleResolver
|
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleResolver
|
||||||
@@ -40,8 +41,6 @@ interface AbstractProjectFileSearchScope {
|
|||||||
interface AbstractProjectEnvironment {
|
interface AbstractProjectEnvironment {
|
||||||
fun getKotlinClassFinder(fileSearchScope: AbstractProjectFileSearchScope): KotlinClassFinder
|
fun getKotlinClassFinder(fileSearchScope: AbstractProjectFileSearchScope): KotlinClassFinder
|
||||||
|
|
||||||
fun getJavaClassFinder(fileSearchScope: AbstractProjectFileSearchScope): JavaClassFinder
|
|
||||||
|
|
||||||
fun getJavaModuleResolver(): JavaModuleResolver
|
fun getJavaModuleResolver(): JavaModuleResolver
|
||||||
|
|
||||||
fun getPackagePartProvider(fileSearchScope: AbstractProjectFileSearchScope): PackagePartProvider
|
fun getPackagePartProvider(fileSearchScope: AbstractProjectFileSearchScope): PackagePartProvider
|
||||||
@@ -53,4 +52,10 @@ interface AbstractProjectEnvironment {
|
|||||||
fun getSearchScopeForProjectLibraries(): AbstractProjectFileSearchScope
|
fun getSearchScopeForProjectLibraries(): AbstractProjectFileSearchScope
|
||||||
|
|
||||||
fun getSearchScopeForProjectJavaSources(): AbstractProjectFileSearchScope
|
fun getSearchScopeForProjectJavaSources(): AbstractProjectFileSearchScope
|
||||||
|
|
||||||
|
fun getJavaClassConverter(
|
||||||
|
firSession: FirSession,
|
||||||
|
baseModuleData: FirModuleData,
|
||||||
|
fileSearchScope: AbstractProjectFileSearchScope
|
||||||
|
): JavaClassConverter
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.fir.java
|
package org.jetbrains.kotlin.fir.java
|
||||||
|
|
||||||
import com.intellij.openapi.progress.ProcessCanceledException
|
import com.intellij.openapi.progress.ProcessCanceledException
|
||||||
import org.jetbrains.kotlin.fir.FirModuleData
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.caches.firCachesFactory
|
import org.jetbrains.kotlin.fir.caches.firCachesFactory
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||||
@@ -15,7 +14,6 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
|||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.load.java.JavaClassFinder
|
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -24,8 +22,10 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
// Use it in application sessions for loading classes from Java files listed on the command line.
|
// Use it in application sessions for loading classes from Java files listed on the command line.
|
||||||
// For library and incremental compilation sessions use `KotlinDeserializedJvmSymbolsProvider`
|
// For library and incremental compilation sessions use `KotlinDeserializedJvmSymbolsProvider`
|
||||||
// in order to load Kotlin classes as well.
|
// in order to load Kotlin classes as well.
|
||||||
class JavaSymbolProvider(session: FirSession, baseModuleData: FirModuleData, facade: JavaClassFinder) : FirSymbolProvider(session) {
|
class JavaSymbolProvider(
|
||||||
private val javaClassConverter = JavaClassConverter(session, baseModuleData, facade)
|
session: FirSession,
|
||||||
|
private val javaClassConverter: JavaClassConverter,
|
||||||
|
) : FirSymbolProvider(session) {
|
||||||
|
|
||||||
private val classCache =
|
private val classCache =
|
||||||
session.firCachesFactory.createCacheWithPostCompute(
|
session.firCachesFactory.createCacheWithPostCompute(
|
||||||
|
|||||||
+1
-2
@@ -38,9 +38,8 @@ class KotlinDeserializedJvmSymbolsProvider(
|
|||||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
private val packagePartProvider: PackagePartProvider,
|
private val packagePartProvider: PackagePartProvider,
|
||||||
private val kotlinClassFinder: KotlinClassFinder,
|
private val kotlinClassFinder: KotlinClassFinder,
|
||||||
javaClassFinder: JavaClassFinder
|
private val javaClassConverter: JavaClassConverter,
|
||||||
) : AbstractFirDeserializedSymbolsProvider(session, moduleDataProvider, kotlinScopeProvider) {
|
) : AbstractFirDeserializedSymbolsProvider(session, moduleDataProvider, kotlinScopeProvider) {
|
||||||
private val javaClassConverter = JavaClassConverter(session, moduleDataProvider.allModuleData.last(), javaClassFinder)
|
|
||||||
private val annotationsLoader = AnnotationsLoader(session, kotlinClassFinder)
|
private val annotationsLoader = AnnotationsLoader(session, kotlinClassFinder)
|
||||||
|
|
||||||
override fun computePackagePartsInfos(packageFqName: FqName): List<PackagePartsCacheData> {
|
override fun computePackagePartsInfos(packageFqName: FqName): List<PackagePartsCacheData> {
|
||||||
|
|||||||
Reference in New Issue
Block a user