[FIR2IR] Use convertToIrAndActualize() for JS CLI
This commit is contained in:
committed by
Space Team
parent
d8bae5a6f8
commit
8cbb6ff47a
@@ -50,7 +50,10 @@ import org.jetbrains.kotlin.fir.declarations.FirFile
|
|||||||
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
|
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
||||||
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
||||||
|
import org.jetbrains.kotlin.fir.pipeline.FirResult
|
||||||
|
import org.jetbrains.kotlin.fir.pipeline.ModuleCompilerAnalyzedOutput
|
||||||
import org.jetbrains.kotlin.fir.pipeline.buildResolveAndCheckFir
|
import org.jetbrains.kotlin.fir.pipeline.buildResolveAndCheckFir
|
||||||
|
import org.jetbrains.kotlin.fir.pipeline.convertToIrAndActualize
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.serialization.FirElementAwareSerializableStringTable
|
import org.jetbrains.kotlin.fir.serialization.FirElementAwareSerializableStringTable
|
||||||
import org.jetbrains.kotlin.fir.serialization.FirKLibSerializerExtension
|
import org.jetbrains.kotlin.fir.serialization.FirKLibSerializerExtension
|
||||||
@@ -604,57 +607,19 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
|
|||||||
moduleDescriptor
|
moduleDescriptor
|
||||||
}
|
}
|
||||||
|
|
||||||
val commonMemberStorage = Fir2IrCommonMemberStorage(
|
val firResult = FirResult(platformFirOutput, commonFirOutput)
|
||||||
generateSignatures = false,
|
val irResult = firResult.convertToIrAndActualize(
|
||||||
signatureComposerCreator = null,
|
|
||||||
manglerCreator = { FirJvmKotlinMangler() } // TODO: replace with potentially simpler JS version
|
|
||||||
)
|
|
||||||
|
|
||||||
// TODO: replace with appropriate (probably empty) implementation
|
|
||||||
val specialAnnotationSymbolProvider = Fir2IrJvmSpecialAnnotationSymbolProvider()
|
|
||||||
|
|
||||||
// TODO: consider passing externally
|
|
||||||
val builtIns = builtInsModule ?: DefaultBuiltIns.Instance
|
|
||||||
|
|
||||||
val commonIrOutput = if (isMppEnabled) {
|
|
||||||
Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
|
|
||||||
commonFirOutput!!.session, commonFirOutput.scopeSession, commonFirOutput.fir,
|
|
||||||
configuration.languageVersionSettings,
|
|
||||||
fir2IrExtensions,
|
|
||||||
JsManglerIr, IrFactoryImpl,
|
|
||||||
Fir2IrVisibilityConverter.Default,
|
|
||||||
specialAnnotationSymbolProvider,
|
|
||||||
IrGenerationExtension.getInstances(environmentForJS.project),
|
|
||||||
generateSignatures = false,
|
|
||||||
kotlinBuiltIns = builtIns,
|
|
||||||
commonMemberStorage = commonMemberStorage,
|
|
||||||
initializedIrBuiltIns = null
|
|
||||||
).also { fir2IrResult ->
|
|
||||||
(fir2IrResult.irModuleFragment.descriptor as? FirModuleDescriptor)?.let { it.allDependencyModules = librariesDescriptors }
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
null
|
|
||||||
}
|
|
||||||
|
|
||||||
val platformIrOutput = Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
|
|
||||||
platformFirOutput.session, platformFirOutput.scopeSession, platformFirOutput.fir,
|
|
||||||
configuration.languageVersionSettings,
|
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
JsManglerIr, IrFactoryImpl,
|
|
||||||
Fir2IrVisibilityConverter.Default,
|
|
||||||
specialAnnotationSymbolProvider,
|
|
||||||
IrGenerationExtension.getInstances(environmentForJS.project),
|
IrGenerationExtension.getInstances(environmentForJS.project),
|
||||||
generateSignatures = false,
|
linkViaSignatures = false,
|
||||||
kotlinBuiltIns = builtIns,
|
signatureComposerCreator = null,
|
||||||
commonMemberStorage = commonMemberStorage,
|
irMangler = JsManglerIr,
|
||||||
initializedIrBuiltIns = commonIrOutput?.components?.irBuiltIns
|
visibilityConverter = Fir2IrVisibilityConverter.Default,
|
||||||
).also { fir2IrResult ->
|
kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance,
|
||||||
(fir2IrResult.irModuleFragment.descriptor as? FirModuleDescriptor)?.let { it.allDependencyModules = librariesDescriptors }
|
fir2IrResultPostCompute = {
|
||||||
}
|
(this.irModuleFragment.descriptor as? FirModuleDescriptor)?.let { it.allDependencyModules = librariesDescriptors }
|
||||||
|
}
|
||||||
if (isMppEnabled) {
|
)
|
||||||
IrActualizer.actualize(platformIrOutput.irModuleFragment, listOf(commonIrOutput!!.irModuleFragment))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Serialize klib
|
// Serialize klib
|
||||||
|
|
||||||
@@ -682,7 +647,7 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
|
|||||||
sourceFiles,
|
sourceFiles,
|
||||||
klibPath = outputKlibPath,
|
klibPath = outputKlibPath,
|
||||||
resolvedLibraries.map { it.library },
|
resolvedLibraries.map { it.library },
|
||||||
platformIrOutput.irModuleFragment,
|
irResult.irModuleFragment,
|
||||||
expectDescriptorToSymbol = mutableMapOf(),
|
expectDescriptorToSymbol = mutableMapOf(),
|
||||||
cleanFiles = icData,
|
cleanFiles = icData,
|
||||||
nopack = true,
|
nopack = true,
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ fun FirResult.convertToIrAndActualize(
|
|||||||
irMangler: KotlinMangler.IrMangler,
|
irMangler: KotlinMangler.IrMangler,
|
||||||
visibilityConverter: Fir2IrVisibilityConverter,
|
visibilityConverter: Fir2IrVisibilityConverter,
|
||||||
kotlinBuiltIns: KotlinBuiltIns,
|
kotlinBuiltIns: KotlinBuiltIns,
|
||||||
|
fir2IrResultPostCompute: Fir2IrResult.() -> Unit = {},
|
||||||
): Fir2IrResult {
|
): Fir2IrResult {
|
||||||
val result: Fir2IrResult
|
val result: Fir2IrResult
|
||||||
|
|
||||||
@@ -76,7 +77,9 @@ fun FirResult.convertToIrAndActualize(
|
|||||||
irMangler,
|
irMangler,
|
||||||
visibilityConverter,
|
visibilityConverter,
|
||||||
kotlinBuiltIns,
|
kotlinBuiltIns,
|
||||||
)
|
).also {
|
||||||
|
fir2IrResultPostCompute(it)
|
||||||
|
}
|
||||||
result = platformOutput.convertToIr(
|
result = platformOutput.convertToIr(
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
irGeneratorExtensions,
|
irGeneratorExtensions,
|
||||||
@@ -86,7 +89,9 @@ fun FirResult.convertToIrAndActualize(
|
|||||||
irMangler,
|
irMangler,
|
||||||
visibilityConverter,
|
visibilityConverter,
|
||||||
kotlinBuiltIns,
|
kotlinBuiltIns,
|
||||||
)
|
).also {
|
||||||
|
fir2IrResultPostCompute(it)
|
||||||
|
}
|
||||||
IrActualizer.actualize(
|
IrActualizer.actualize(
|
||||||
result.irModuleFragment,
|
result.irModuleFragment,
|
||||||
listOf(commonIrOutput.irModuleFragment)
|
listOf(commonIrOutput.irModuleFragment)
|
||||||
|
|||||||
Reference in New Issue
Block a user