diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/analysis/FirAnalyzerFacade.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/analysis/FirAnalyzerFacade.kt index 809157da5e3..1c17dcea33c 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/analysis/FirAnalyzerFacade.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/analysis/FirAnalyzerFacade.kt @@ -63,14 +63,14 @@ class FirAnalyzerFacade(val session: FirSession, val languageVersionSettings: La return collectedDiagnostics!! } - fun convertToIr(): Fir2IrResult { + fun convertToIr(generateFacades: Boolean = true): Fir2IrResult { if (scopeSession == null) runResolution() val signaturer = IdSignatureDescriptor(JvmManglerDesc()) return Fir2IrConverter.createModuleFragment( session, scopeSession!!, firFiles!!, languageVersionSettings, signaturer, - JvmGeneratorExtensions(), FirJvmKotlinMangler(session), IrFactoryImpl, + JvmGeneratorExtensions(generateFacades), FirJvmKotlinMangler(session), IrFactoryImpl, FirJvmVisibilityConverter ) } diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt index f93cf745523..99d8b597ea3 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt @@ -10,21 +10,11 @@ import com.intellij.openapi.project.Project import com.intellij.psi.PsiElementFinder import com.intellij.psi.search.GlobalSearchScope 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.config.languageVersionSettings -import org.jetbrains.kotlin.fir.backend.Fir2IrConverter -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.fir.analysis.FirAnalyzerFacade 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.impl.IrFactoryImpl import java.io.File abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() { @@ -67,34 +57,7 @@ abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() { val scope = GlobalSearchScope.filesScope(project, psiFiles.map { it.virtualFile }) .uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project)) val session = createSession(myEnvironment, scope) - - val firProvider = (session.firProvider as FirProviderImpl) - 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 + val firAnalyzerFacade = FirAnalyzerFacade(session, myEnvironment.configuration.languageVersionSettings, psiFiles) + return firAnalyzerFacade.convertToIr(generateFacades = false).irModuleFragment } } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt index dc57436df3f..7527dba1fe5 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt @@ -24,8 +24,6 @@ import com.intellij.psi.search.ProjectScope import org.jetbrains.kotlin.TestsCompiletimeError import org.jetbrains.kotlin.asJava.finder.JavaElementFinder 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.jvmPhases 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.container.get 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.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.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.serialization.JvmManglerDesc -import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.load.kotlin.PackagePartProvider import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.AnalyzingUtils @@ -128,31 +118,9 @@ object GenerationUtils { val librariesScope = ProjectScope.getLibrariesScope(project) val session = createSession(project, scope, librariesScope, "main", packagePartProvider) - val firProvider = (session.firProvider as FirProviderImpl) - val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false) - val resolveTransformer = FirTotalResolveProcessor(session) - 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 - ) + // TODO: add running checkers and check that it's safe to compile + val firAnalyzerFacade = FirAnalyzerFacade(session, configuration.languageVersionSettings, files) + val (moduleFragment, symbolTable, sourceManager, components) = firAnalyzerFacade.convertToIr() val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext val codegenFactory = JvmIrCodegenFactory(configuration.get(CLIConfigurationKeys.PHASE_CONFIG) ?: PhaseConfig(jvmPhases))