From 1d1b0092a3dee075e187771bd7b8884bbbbd627d Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Fri, 14 Jul 2023 15:30:11 +0200 Subject: [PATCH] [Test] Make `createModuleFragmentWithSignaturesIfNeeded` to be called once --- .../kotlin/fir/pipeline/convertToIr.kt | 41 ++++++++++--------- .../frontend/fir/Fir2IrJsResultsConverter.kt | 17 ++++---- .../fir/Fir2IrWasmResultsConverter.kt | 16 ++++---- .../jetbrains/kotlin/fir/FirAnalyzerFacade.kt | 15 +++---- 4 files changed, 41 insertions(+), 48 deletions(-) diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt index 7804aad2482..58d4962caf6 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt @@ -36,7 +36,27 @@ data class ModuleCompilerAnalyzedOutput( val session: FirSession, val scopeSession: ScopeSession, val fir: List -) +) { + fun convertToIr( + fir2IrExtensions: Fir2IrExtensions, + fir2IrConfiguration: Fir2IrConfiguration, + commonMemberStorage: Fir2IrCommonMemberStorage, + irBuiltIns: IrBuiltInsOverFir?, + irMangler: KotlinMangler.IrMangler, + visibilityConverter: Fir2IrVisibilityConverter, + kotlinBuiltIns: KotlinBuiltIns, + ): Fir2IrResult { + return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded( + session, scopeSession, fir, + fir2IrExtensions, fir2IrConfiguration, + irMangler, IrFactoryImpl, visibilityConverter, + Fir2IrJvmSpecialAnnotationSymbolProvider(), // TODO KT-60526: replace with appropriate (probably empty) implementation for other backends. + kotlinBuiltIns = kotlinBuiltIns, + commonMemberStorage = commonMemberStorage, + initializedIrBuiltIns = irBuiltIns + ) + } +} data class Fir2IrActualizedResult( val irModuleFragment: IrModuleFragment, @@ -165,22 +185,3 @@ fun IrPluginContext.applyIrGenerationExtensions(irModuleFragment: IrModuleFragme } } -private fun ModuleCompilerAnalyzedOutput.convertToIr( - fir2IrExtensions: Fir2IrExtensions, - fir2IrConfiguration: Fir2IrConfiguration, - commonMemberStorage: Fir2IrCommonMemberStorage, - irBuiltIns: IrBuiltInsOverFir?, - irMangler: KotlinMangler.IrMangler, - visibilityConverter: Fir2IrVisibilityConverter, - kotlinBuiltIns: KotlinBuiltIns, -): Fir2IrResult { - return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded( - session, scopeSession, fir, - fir2IrExtensions, fir2IrConfiguration, - irMangler, IrFactoryImpl, visibilityConverter, - Fir2IrJvmSpecialAnnotationSymbolProvider(), // TODO: replace with appropriate (probably empty) implementation for other backends. - kotlinBuiltIns = kotlinBuiltIns, - commonMemberStorage = commonMemberStorage, - initializedIrBuiltIns = irBuiltIns - ) -} diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrJsResultsConverter.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrJsResultsConverter.kt index 7ab09071b0c..78c55f8d458 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrJsResultsConverter.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrJsResultsConverter.kt @@ -22,11 +22,10 @@ import org.jetbrains.kotlin.fir.AbstractFirAnalyzerFacade import org.jetbrains.kotlin.fir.FirAnalyzerFacade import org.jetbrains.kotlin.fir.backend.* import org.jetbrains.kotlin.fir.backend.js.FirJsKotlinMangler -import org.jetbrains.kotlin.fir.backend.jvm.Fir2IrJvmSpecialAnnotationSymbolProvider import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor -import org.jetbrains.kotlin.fir.pipeline.applyIrGenerationExtensions +import org.jetbrains.kotlin.fir.pipeline.ModuleCompilerAnalyzedOutput import org.jetbrains.kotlin.fir.serialization.FirKLibSerializerExtension import org.jetbrains.kotlin.fir.serialization.serializeSingleFirFile import org.jetbrains.kotlin.incremental.components.LookupTracker @@ -36,7 +35,6 @@ import org.jetbrains.kotlin.ir.backend.js.incrementalDataProvider import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerIr import org.jetbrains.kotlin.ir.declarations.IrModuleFragment -import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.util.KotlinMangler import org.jetbrains.kotlin.library.metadata.resolver.KotlinResolvedLibrary import org.jetbrains.kotlin.library.unresolvedDependencies @@ -181,16 +179,15 @@ fun AbstractFirAnalyzerFacade.convertToJsIr( .putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()), inlineConstTracker = null, ) - return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded( - session, scopeSession, firFiles.toList(), + + return ModuleCompilerAnalyzedOutput(this.session, this.scopeSession, firFiles.toList()).convertToIr( fir2IrExtensions, fir2IrConfiguration, - irMangler, IrFactoryImpl, + commonMemberStorage, + irBuiltIns, + irMangler, Fir2IrVisibilityConverter.Default, - Fir2IrJvmSpecialAnnotationSymbolProvider(), // TODO: replace with appropriate (probably empty) implementation - kotlinBuiltIns = builtIns ?: DefaultBuiltIns.Instance, // TODO: consider passing externally, - commonMemberStorage = commonMemberStorage, - initializedIrBuiltIns = irBuiltIns + builtIns ?: DefaultBuiltIns.Instance // TODO: consider passing externally, ).also { (it.irModuleFragment.descriptor as? FirModuleDescriptor)?.let { it.allDependencyModules = dependencies } } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrWasmResultsConverter.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrWasmResultsConverter.kt index 94dbc91e335..afe435c784a 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrWasmResultsConverter.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrWasmResultsConverter.kt @@ -22,10 +22,10 @@ import org.jetbrains.kotlin.fir.AbstractFirAnalyzerFacade import org.jetbrains.kotlin.fir.FirAnalyzerFacade import org.jetbrains.kotlin.fir.backend.* import org.jetbrains.kotlin.fir.backend.js.FirJsKotlinMangler -import org.jetbrains.kotlin.fir.backend.jvm.Fir2IrJvmSpecialAnnotationSymbolProvider import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor +import org.jetbrains.kotlin.fir.pipeline.ModuleCompilerAnalyzedOutput import org.jetbrains.kotlin.fir.serialization.FirKLibSerializerExtension import org.jetbrains.kotlin.fir.serialization.serializeSingleFirFile import org.jetbrains.kotlin.incremental.components.LookupTracker @@ -35,7 +35,6 @@ import org.jetbrains.kotlin.ir.backend.js.incrementalDataProvider import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerIr import org.jetbrains.kotlin.ir.declarations.IrModuleFragment -import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.util.KotlinMangler import org.jetbrains.kotlin.library.metadata.resolver.KotlinResolvedLibrary import org.jetbrains.kotlin.library.unresolvedDependencies @@ -178,16 +177,15 @@ fun AbstractFirAnalyzerFacade.convertToWasmIr( .putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()), inlineConstTracker = null, ) - return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded( - session, scopeSession, firFiles.toList(), + + return ModuleCompilerAnalyzedOutput(this.session, this.scopeSession, firFiles.toList()).convertToIr( fir2IrExtensions, fir2IrConfiguration, - irMangler, IrFactoryImpl, + commonMemberStorage, + irBuiltIns, + irMangler, Fir2IrVisibilityConverter.Default, - Fir2IrJvmSpecialAnnotationSymbolProvider(), // TODO: replace with appropriate (probably empty) implementation - kotlinBuiltIns = builtIns ?: DefaultBuiltIns.Instance, // TODO: consider passing externally, - commonMemberStorage = commonMemberStorage, - initializedIrBuiltIns = irBuiltIns + builtIns ?: DefaultBuiltIns.Instance // TODO: consider passing externally, ).also { (it.irModuleFragment.descriptor as? FirModuleDescriptor)?.let { it.allDependencyModules = dependencies } } diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirAnalyzerFacade.kt b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirAnalyzerFacade.kt index 69116485700..48d5e98bf73 100644 --- a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirAnalyzerFacade.kt +++ b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirAnalyzerFacade.kt @@ -12,17 +12,16 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory import org.jetbrains.kotlin.diagnostics.KtDiagnostic import org.jetbrains.kotlin.fir.analysis.collectors.FirDiagnosticsCollector import org.jetbrains.kotlin.fir.backend.* -import org.jetbrains.kotlin.fir.backend.jvm.Fir2IrJvmSpecialAnnotationSymbolProvider import org.jetbrains.kotlin.fir.backend.jvm.FirJvmVisibilityConverter import org.jetbrains.kotlin.fir.builder.PsiRawFirBuilder import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir +import org.jetbrains.kotlin.fir.pipeline.ModuleCompilerAnalyzedOutput import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.providers.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.serialization.JvmIrMangler -import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.sourceFiles.LightTreeFile import org.jetbrains.kotlin.test.FirParser @@ -112,16 +111,14 @@ class FirAnalyzerFacade( ): Fir2IrResult { if (_scopeSession == null) runResolution() - return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded( - session, _scopeSession!!, firFiles!!, + return ModuleCompilerAnalyzedOutput(this.session, this.scopeSession, firFiles!!.toList()).convertToIr( fir2IrExtensions, fir2IrConfiguration, - JvmIrMangler, IrFactoryImpl, + commonMemberStorage, + irBuiltIns, + JvmIrMangler, FirJvmVisibilityConverter, - Fir2IrJvmSpecialAnnotationSymbolProvider(), - kotlinBuiltIns = DefaultBuiltIns.Instance, // TODO: consider passing externally, - commonMemberStorage = commonMemberStorage, - initializedIrBuiltIns = irBuiltIns + DefaultBuiltIns.Instance ) } }