[FIR2IR] Don't compose signatures if f/o building with FIR is disabled

^KT-66341 Fixed
This commit is contained in:
Dmitriy Novozhilov
2024-03-05 10:39:50 +02:00
committed by Space Team
parent 3166a61b15
commit 52f6868b74
3 changed files with 34 additions and 9 deletions
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.fir.backend.jvm.Fir2IrJvmSpecialAnnotationSymbolProv
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.lazy.Fir2IrLazyClass
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.signaturer.FirBasedSignatureComposer
import org.jetbrains.kotlin.ir.IrBuiltIns
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.KtDiagnosticReporterWithImplicitIrBasedContext
@@ -71,7 +72,7 @@ fun FirResult.convertToIrAndActualize(
actualizerTypeContextProvider: (IrBuiltIns) -> IrTypeSystemContext,
fir2IrResultPostCompute: (ModuleCompilerAnalyzedOutput, Fir2IrResult) -> Unit = { _, _ -> },
): Fir2IrActualizedResult {
val commonMemberStorage = Fir2IrCommonMemberStorage(firMangler)
val commonMemberStorage = Fir2IrCommonMemberStorage(FirBasedSignatureComposer.create(firMangler, fir2IrConfiguration))
require(outputs.isNotEmpty()) { "No modules found" }
@@ -21,9 +21,7 @@ import java.util.concurrent.ConcurrentHashMap
*
* See `/docs/fir/k2_kmp.md`
*/
class Fir2IrCommonMemberStorage(firMangler: FirMangler) {
val firSignatureComposer = FirBasedSignatureComposer(firMangler)
class Fir2IrCommonMemberStorage(val firSignatureComposer: FirBasedSignatureComposer) {
val symbolTable = SymbolTable(signaturer = null, irFactory = IrFactoryImpl)
val classCache: MutableMap<FirRegularClass, IrClassSymbol> = mutableMapOf()
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.signaturer
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
import org.jetbrains.kotlin.fir.backend.FirMangler
import org.jetbrains.kotlin.fir.backend.conversionData
import org.jetbrains.kotlin.fir.declarations.*
@@ -19,8 +20,33 @@ import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
// @NoMutableState -- we'll restore this annotation once we get rid of withFileSignature().
class FirBasedSignatureComposer(val mangler: FirMangler) {
sealed class FirBasedSignatureComposer(val mangler: FirMangler) {
companion object {
fun create(mangler: FirMangler, configuration: Fir2IrConfiguration): FirBasedSignatureComposer {
return when (configuration.useFirBasedFakeOverrideGenerator) {
false -> Empty(mangler)
true -> FirBasedSignatureComposerImpl(mangler)
}
}
}
abstract fun composeSignature(
declaration: FirCallableDeclaration,
containingClass: ConeClassLikeLookupTag? = null,
forceExpect: Boolean = false
): IdSignature?
class Empty(mangler: FirMangler) : FirBasedSignatureComposer(mangler) {
override fun composeSignature(
declaration: FirCallableDeclaration,
containingClass: ConeClassLikeLookupTag?,
forceExpect: Boolean
): IdSignature? = null
}
}
class FirBasedSignatureComposerImpl(mangler: FirMangler) : FirBasedSignatureComposer(mangler) {
private data class FirDeclarationWithParentId(val declaration: FirDeclaration, val classId: ClassId?, val forceExpect: Boolean)
private val signatureCache = mutableMapOf<FirDeclarationWithParentId, IdSignature.CommonSignature>()
@@ -29,10 +55,10 @@ class FirBasedSignatureComposer(val mangler: FirMangler) {
declaration.signatureString(compatibleMode = false).let { it.hashMangle to it }
}
fun composeSignature(
override fun composeSignature(
declaration: FirCallableDeclaration,
containingClass: ConeClassLikeLookupTag? = null,
forceExpect: Boolean = false
containingClass: ConeClassLikeLookupTag?,
forceExpect: Boolean
): IdSignature? {
return composeSignatureImpl(declaration, containingClass, forceExpect)
}