[FIR-TEST] Use FirAnalyzerFacade in BB and Fir2IrText tests
This commit is contained in:
@@ -63,14 +63,14 @@ class FirAnalyzerFacade(val session: FirSession, val languageVersionSettings: La
|
|||||||
return collectedDiagnostics!!
|
return collectedDiagnostics!!
|
||||||
}
|
}
|
||||||
|
|
||||||
fun convertToIr(): Fir2IrResult {
|
fun convertToIr(generateFacades: Boolean = true): Fir2IrResult {
|
||||||
if (scopeSession == null) runResolution()
|
if (scopeSession == null) runResolution()
|
||||||
val signaturer = IdSignatureDescriptor(JvmManglerDesc())
|
val signaturer = IdSignatureDescriptor(JvmManglerDesc())
|
||||||
|
|
||||||
return Fir2IrConverter.createModuleFragment(
|
return Fir2IrConverter.createModuleFragment(
|
||||||
session, scopeSession!!, firFiles!!,
|
session, scopeSession!!, firFiles!!,
|
||||||
languageVersionSettings, signaturer,
|
languageVersionSettings, signaturer,
|
||||||
JvmGeneratorExtensions(), FirJvmKotlinMangler(session), IrFactoryImpl,
|
JvmGeneratorExtensions(generateFacades), FirJvmKotlinMangler(session), IrFactoryImpl,
|
||||||
FirJvmVisibilityConverter
|
FirJvmVisibilityConverter
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,21 +10,11 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.psi.PsiElementFinder
|
import com.intellij.psi.PsiElementFinder
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor
|
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions
|
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrConverter
|
import org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler
|
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmVisibilityConverter
|
|
||||||
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
|
|
||||||
import org.jetbrains.kotlin.ir.AbstractIrTextTestCase
|
import org.jetbrains.kotlin.ir.AbstractIrTextTestCase
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() {
|
abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() {
|
||||||
@@ -67,34 +57,7 @@ abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() {
|
|||||||
val scope = GlobalSearchScope.filesScope(project, psiFiles.map { it.virtualFile })
|
val scope = GlobalSearchScope.filesScope(project, psiFiles.map { it.virtualFile })
|
||||||
.uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project))
|
.uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project))
|
||||||
val session = createSession(myEnvironment, scope)
|
val session = createSession(myEnvironment, scope)
|
||||||
|
val firAnalyzerFacade = FirAnalyzerFacade(session, myEnvironment.configuration.languageVersionSettings, psiFiles)
|
||||||
val firProvider = (session.firProvider as FirProviderImpl)
|
return firAnalyzerFacade.convertToIr(generateFacades = false).irModuleFragment
|
||||||
val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false)
|
|
||||||
|
|
||||||
val resolveTransformer = FirTotalResolveProcessor(session)
|
|
||||||
val firFiles = psiFiles.map {
|
|
||||||
val firFile = builder.buildFirFile(it)
|
|
||||||
firProvider.recordFile(firFile)
|
|
||||||
firFile
|
|
||||||
}.also {
|
|
||||||
try {
|
|
||||||
resolveTransformer.process(it)
|
|
||||||
} catch (e: Exception) {
|
|
||||||
throw e
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val signaturer = IdSignatureDescriptor(JvmManglerDesc())
|
|
||||||
|
|
||||||
return Fir2IrConverter.createModuleFragment(
|
|
||||||
session, resolveTransformer.scopeSession, firFiles,
|
|
||||||
myEnvironment.configuration.languageVersionSettings,
|
|
||||||
signaturer,
|
|
||||||
// TODO: differentiate JVM resolve from other targets, such as JS resolve.
|
|
||||||
JvmGeneratorExtensions(generateFacades = false),
|
|
||||||
FirJvmKotlinMangler(session),
|
|
||||||
IrFactoryImpl,
|
|
||||||
FirJvmVisibilityConverter
|
|
||||||
).irModuleFragment
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,8 +24,6 @@ import com.intellij.psi.search.ProjectScope
|
|||||||
import org.jetbrains.kotlin.TestsCompiletimeError
|
import org.jetbrains.kotlin.TestsCompiletimeError
|
||||||
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor
|
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions
|
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
|
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
|
||||||
import org.jetbrains.kotlin.backend.jvm.jvmPhases
|
import org.jetbrains.kotlin.backend.jvm.jvmPhases
|
||||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||||
@@ -41,19 +39,11 @@ import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
|||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrConverter
|
import org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver
|
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmClassCodegen
|
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmClassCodegen
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler
|
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmVisibilityConverter
|
|
||||||
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
|
|
||||||
import org.jetbrains.kotlin.fir.createSession
|
import org.jetbrains.kotlin.fir.createSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
|
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries
|
import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.AnalyzingUtils
|
import org.jetbrains.kotlin.resolve.AnalyzingUtils
|
||||||
@@ -128,31 +118,9 @@ object GenerationUtils {
|
|||||||
val librariesScope = ProjectScope.getLibrariesScope(project)
|
val librariesScope = ProjectScope.getLibrariesScope(project)
|
||||||
val session = createSession(project, scope, librariesScope, "main", packagePartProvider)
|
val session = createSession(project, scope, librariesScope, "main", packagePartProvider)
|
||||||
|
|
||||||
val firProvider = (session.firProvider as FirProviderImpl)
|
// TODO: add running checkers and check that it's safe to compile
|
||||||
val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false)
|
val firAnalyzerFacade = FirAnalyzerFacade(session, configuration.languageVersionSettings, files)
|
||||||
val resolveTransformer = FirTotalResolveProcessor(session)
|
val (moduleFragment, symbolTable, sourceManager, components) = firAnalyzerFacade.convertToIr()
|
||||||
val firFiles = files.map {
|
|
||||||
val firFile = builder.buildFirFile(it)
|
|
||||||
firProvider.recordFile(firFile)
|
|
||||||
firFile
|
|
||||||
}.also {
|
|
||||||
try {
|
|
||||||
resolveTransformer.process(it)
|
|
||||||
} catch (e: Exception) {
|
|
||||||
throw e
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val (moduleFragment, symbolTable, sourceManager, components) =
|
|
||||||
Fir2IrConverter.createModuleFragment(
|
|
||||||
session, resolveTransformer.scopeSession, firFiles,
|
|
||||||
configuration.languageVersionSettings,
|
|
||||||
IdSignatureDescriptor(JvmManglerDesc()),
|
|
||||||
// TODO: differentiate JVM resolve from other targets, such as JS resolve.
|
|
||||||
JvmGeneratorExtensions(),
|
|
||||||
FirJvmKotlinMangler(session),
|
|
||||||
IrFactoryImpl,
|
|
||||||
FirJvmVisibilityConverter
|
|
||||||
)
|
|
||||||
val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext
|
val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext
|
||||||
|
|
||||||
val codegenFactory = JvmIrCodegenFactory(configuration.get(CLIConfigurationKeys.PHASE_CONFIG) ?: PhaseConfig(jvmPhases))
|
val codegenFactory = JvmIrCodegenFactory(configuration.get(CLIConfigurationKeys.PHASE_CONFIG) ?: PhaseConfig(jvmPhases))
|
||||||
|
|||||||
Reference in New Issue
Block a user