FIR: Minor. Rename JavaClassConverter -> FirJavaFacade

This commit is contained in:
Denis.Zharkov
2021-09-14 12:54:50 +03:00
committed by TeamCityServer
parent 9902d36d57
commit 54a97a860a
8 changed files with 26 additions and 27 deletions
@@ -28,7 +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.FirJavaFacade
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
@@ -141,7 +141,7 @@ internal object FirIdeSessionFactory {
provider.symbolProvider, provider.symbolProvider,
JavaSymbolProvider( JavaSymbolProvider(
this, this,
JavaClassConverter( FirJavaFacade(
this, moduleData, project.createJavaClassFinder(contentScope) this, moduleData, project.createJavaClassFinder(contentScope)
) )
), ),
@@ -190,7 +190,7 @@ internal object FirIdeSessionFactory {
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),
javaClassConverter = JavaClassConverter( javaFacade = FirJavaFacade(
this@session, mainModuleData, project.createJavaClassFinder(searchScope) this@session, mainModuleData, project.createJavaClassFinder(searchScope)
) )
) )
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
import org.jetbrains.kotlin.fir.FirModuleData 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.java.FirJavaFacade
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.createJavaClassFinder import org.jetbrains.kotlin.load.java.createJavaClassFinder
@@ -90,11 +90,11 @@ class PsiBasedProjectEnvironment(
override fun getSearchScopeForProjectJavaSources(): AbstractProjectFileSearchScope = override fun getSearchScopeForProjectJavaSources(): AbstractProjectFileSearchScope =
PsiBasedProjectFileSearchScope(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project)) PsiBasedProjectFileSearchScope(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project))
override fun getJavaClassConverter( override fun getFirJavaFacade(
firSession: FirSession, firSession: FirSession,
baseModuleData: FirModuleData, baseModuleData: FirModuleData,
fileSearchScope: AbstractProjectFileSearchScope fileSearchScope: AbstractProjectFileSearchScope
) = JavaClassConverter(firSession, baseModuleData, project.createJavaClassFinder(fileSearchScope.asPsiSearchScope())) ) = FirJavaFacade(firSession, baseModuleData, project.createJavaClassFinder(fileSearchScope.asPsiSearchScope()))
} }
private fun AbstractProjectFileSearchScope.asPsiSearchScope() = private fun AbstractProjectFileSearchScope.asPsiSearchScope() =
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.fir.analysis.jvm.checkers.isJvm6
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.classId import org.jetbrains.kotlin.fir.declarations.utils.classId
import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.java.JavaClassConverter import org.jetbrains.kotlin.fir.java.FirJavaFacade
import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.fir.languageVersionSettings
import org.jetbrains.kotlin.fir.resolve.defaultType import org.jetbrains.kotlin.fir.resolve.defaultType
import org.jetbrains.kotlin.fir.resolve.symbolProvider import org.jetbrains.kotlin.fir.resolve.symbolProvider
@@ -153,7 +153,7 @@ object FirSessionFactory {
kotlinScopeProvider, kotlinScopeProvider,
it.packagePartProvider, it.packagePartProvider,
projectEnvironment.getKotlinClassFinder(it.scope), projectEnvironment.getKotlinClassFinder(it.scope),
projectEnvironment.getJavaClassConverter(this, moduleData, it.scope), projectEnvironment.getFirJavaFacade(this, moduleData, it.scope),
) )
} }
@@ -165,7 +165,7 @@ object FirSessionFactory {
listOfNotNull( listOfNotNull(
firProvider.symbolProvider, firProvider.symbolProvider,
symbolProviderForBinariesFromIncrementalCompilation, symbolProviderForBinariesFromIncrementalCompilation,
JavaSymbolProvider(this, projectEnvironment.getJavaClassConverter(this, moduleData, scope)), JavaSymbolProvider(this, projectEnvironment.getFirJavaFacade(this, moduleData, scope)),
dependenciesSymbolProvider, dependenciesSymbolProvider,
) )
) )
@@ -213,7 +213,7 @@ object FirSessionFactory {
kotlinScopeProvider, kotlinScopeProvider,
packagePartProvider, packagePartProvider,
projectEnvironment.getKotlinClassFinder(scope), projectEnvironment.getKotlinClassFinder(scope),
projectEnvironment.getJavaClassConverter(this, moduleDataProvider.allModuleData.last(), scope) projectEnvironment.getFirJavaFacade(this, moduleDataProvider.allModuleData.last(), scope)
) )
val builtinsModuleData = createModuleDataForBuiltins( val builtinsModuleData = createModuleDataForBuiltins(
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.session.environment
import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.java.JavaClassConverter import org.jetbrains.kotlin.fir.java.FirJavaFacade
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
@@ -53,9 +53,9 @@ interface AbstractProjectEnvironment {
fun getSearchScopeForProjectJavaSources(): AbstractProjectFileSearchScope fun getSearchScopeForProjectJavaSources(): AbstractProjectFileSearchScope
fun getJavaClassConverter( fun getFirJavaFacade(
firSession: FirSession, firSession: FirSession,
baseModuleData: FirModuleData, baseModuleData: FirModuleData,
fileSearchScope: AbstractProjectFileSearchScope fileSearchScope: AbstractProjectFileSearchScope
): JavaClassConverter ): FirJavaFacade
} }
@@ -46,7 +46,7 @@ import org.jetbrains.kotlin.types.Variance.INVARIANT
import org.jetbrains.kotlin.util.OperatorNameConventions import org.jetbrains.kotlin.util.OperatorNameConventions
@ThreadSafeMutableState @ThreadSafeMutableState
class JavaClassConverter( class FirJavaFacade(
private val session: FirSession, private val session: FirSession,
private val baseModuleData: FirModuleData, private val baseModuleData: FirModuleData,
private val classFinder: JavaClassFinder private val classFinder: JavaClassFinder
@@ -24,28 +24,28 @@ import org.jetbrains.kotlin.name.Name
// in order to load Kotlin classes as well. // in order to load Kotlin classes as well.
class JavaSymbolProvider( class JavaSymbolProvider(
session: FirSession, session: FirSession,
private val javaClassConverter: JavaClassConverter, private val javaFacade: FirJavaFacade,
) : FirSymbolProvider(session) { ) : FirSymbolProvider(session) {
private val classCache = private val classCache =
session.firCachesFactory.createCacheWithPostCompute( session.firCachesFactory.createCacheWithPostCompute(
createValue = { classId: ClassId, parentClassSymbol: FirRegularClassSymbol? -> createValue = { classId: ClassId, parentClassSymbol: FirRegularClassSymbol? ->
javaClassConverter.findClass(classId)?.let { FirRegularClassSymbol(classId) to (it to parentClassSymbol) } javaFacade.findClass(classId)?.let { FirRegularClassSymbol(classId) to (it to parentClassSymbol) }
?: null to (null to null) ?: null to (null to null)
}, },
postCompute = { _, classSymbol, (javaClass, parentClassSymbol) -> postCompute = { _, classSymbol, (javaClass, parentClassSymbol) ->
if (classSymbol != null && javaClass != null) { if (classSymbol != null && javaClass != null) {
javaClassConverter.convertJavaClassToFir(classSymbol, parentClassSymbol, javaClass) javaFacade.convertJavaClassToFir(classSymbol, parentClassSymbol, javaClass)
} }
} }
) )
override fun getPackage(fqName: FqName): FqName? = override fun getPackage(fqName: FqName): FqName? =
javaClassConverter.getPackage(fqName) javaFacade.getPackage(fqName)
override fun getClassLikeSymbolByClassId(classId: ClassId): FirRegularClassSymbol? = override fun getClassLikeSymbolByClassId(classId: ClassId): FirRegularClassSymbol? =
try { try {
if (javaClassConverter.hasTopLevelClassOf(classId)) getFirJavaClass(classId) else null if (javaFacade.hasTopLevelClassOf(classId)) getFirJavaClass(classId) else null
} catch (e: ProcessCanceledException) { } catch (e: ProcessCanceledException) {
null null
} }
@@ -12,11 +12,10 @@ import org.jetbrains.kotlin.fir.ThreadSafeMutableState
import org.jetbrains.kotlin.fir.declarations.getDeprecationInfos import org.jetbrains.kotlin.fir.declarations.getDeprecationInfos
import org.jetbrains.kotlin.fir.deserialization.* import org.jetbrains.kotlin.fir.deserialization.*
import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.java.JavaClassConverter import org.jetbrains.kotlin.fir.java.FirJavaFacade
import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.fir.languageVersionSettings
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
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.load.kotlin.* import org.jetbrains.kotlin.load.kotlin.*
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmMetadataVersion import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmMetadataVersion
@@ -38,14 +37,14 @@ class KotlinDeserializedJvmSymbolsProvider(
kotlinScopeProvider: FirKotlinScopeProvider, kotlinScopeProvider: FirKotlinScopeProvider,
private val packagePartProvider: PackagePartProvider, private val packagePartProvider: PackagePartProvider,
private val kotlinClassFinder: KotlinClassFinder, private val kotlinClassFinder: KotlinClassFinder,
private val javaClassConverter: JavaClassConverter, private val javaFacade: FirJavaFacade,
) : AbstractFirDeserializedSymbolsProvider(session, moduleDataProvider, kotlinScopeProvider) { ) : AbstractFirDeserializedSymbolsProvider(session, moduleDataProvider, kotlinScopeProvider) {
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> {
return packagePartProvider.findPackageParts(packageFqName.asString()).mapNotNull { partName -> return packagePartProvider.findPackageParts(packageFqName.asString()).mapNotNull { partName ->
val classId = ClassId.topLevel(JvmClassName.byInternalName(partName).fqNameForTopLevelClassMaybeWithDollars) val classId = ClassId.topLevel(JvmClassName.byInternalName(partName).fqNameForTopLevelClassMaybeWithDollars)
if (!javaClassConverter.hasTopLevelClassOf(classId)) return@mapNotNull null if (!javaFacade.hasTopLevelClassOf(classId)) return@mapNotNull null
val (kotlinJvmBinaryClass, byteContent) = val (kotlinJvmBinaryClass, byteContent) =
kotlinClassFinder.findKotlinClassOrContent(classId) as? KotlinClassFinder.Result.KotlinClass ?: return@mapNotNull null kotlinClassFinder.findKotlinClassOrContent(classId) as? KotlinClassFinder.Result.KotlinClass ?: return@mapNotNull null
@@ -89,18 +88,18 @@ class KotlinDeserializedJvmSymbolsProvider(
private fun loadJavaClass(classId: ClassId, content: ByteArray?): ClassMetadataFindResult? { private fun loadJavaClass(classId: ClassId, content: ByteArray?): ClassMetadataFindResult? {
val javaClass = try { val javaClass = try {
javaClassConverter.findClass(classId, content) ?: return null javaFacade.findClass(classId, content) ?: return null
} catch (e: ProcessCanceledException) { } catch (e: ProcessCanceledException) {
return null return null
} }
return ClassMetadataFindResult.NoMetadata { symbol -> return ClassMetadataFindResult.NoMetadata { symbol ->
javaClassConverter.convertJavaClassToFir(symbol, classId.outerClassId?.let(::getClass), javaClass) javaFacade.convertJavaClassToFir(symbol, classId.outerClassId?.let(::getClass), javaClass)
} }
} }
override fun extractClassMetadata(classId: ClassId, parentContext: FirDeserializationContext?): ClassMetadataFindResult? { override fun extractClassMetadata(classId: ClassId, parentContext: FirDeserializationContext?): ClassMetadataFindResult? {
// Kotlin classes are annotated Java classes, so this check also looks for them. // Kotlin classes are annotated Java classes, so this check also looks for them.
if (!javaClassConverter.hasTopLevelClassOf(classId)) return null if (!javaFacade.hasTopLevelClassOf(classId)) return null
val result = try { val result = try {
kotlinClassFinder.findKotlinClassOrContent(classId) kotlinClassFinder.findKotlinClassOrContent(classId)
@@ -128,7 +127,7 @@ class KotlinDeserializedJvmSymbolsProvider(
} }
override fun getPackage(fqName: FqName): FqName? = override fun getPackage(fqName: FqName): FqName? =
javaClassConverter.getPackage(fqName) javaFacade.getPackage(fqName)
private fun loadAnnotationsFromClassFile( private fun loadAnnotationsFromClassFile(
kotlinClass: KotlinClassFinder.Result.KotlinClass, kotlinClass: KotlinClassFinder.Result.KotlinClass,