[FIR] Support creation of IR of common + platform sources in FirAnalyzerFacade

This commit is contained in:
Dmitriy Novozhilov
2021-06-03 16:28:39 +03:00
committed by teamcityserver
parent df11ccf755
commit 37c096cb10
16 changed files with 173 additions and 32 deletions
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.fir.builder.PsiHandlingMode
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir
import org.jetbrains.kotlin.fir.moduleData
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.firProvider
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl
@@ -101,8 +102,13 @@ class FirAnalyzerFacade(
if (_scopeSession == null) runResolution()
val signaturer = JvmIdSignatureDescriptor(JvmDescriptorMangler(null))
val commonFirFiles = session.moduleData.dependsOnDependencies
.map { it.session }
.filter { it.kind == FirSession.Kind.Source }
.flatMap { (it.firProvider as FirProviderImpl).getAllFirFiles() }
return Fir2IrConverter.createModuleFragment(
session, _scopeSession!!, firFiles!!,
session, _scopeSession!!, firFiles!! + commonFirFiles,
languageVersionSettings, signaturer,
extensions, FirJvmKotlinMangler(session), IrFactoryImpl,
FirJvmVisibilityConverter,
@@ -290,6 +290,10 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: FirKotli
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
return state.classesInPackage[fqName] ?: emptySet()
}
fun getAllFirFiles(): List<FirFile> {
return state.fileMap.values.flatten()
}
}
private const val rebuildIndex = true