[FIR2IR] Don't compose signatures if f/o building with FIR is disabled
^KT-66341 Fixed
This commit is contained in:
committed by
Space Team
parent
3166a61b15
commit
52f6868b74
@@ -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" }
|
||||
|
||||
|
||||
+1
-3
@@ -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()
|
||||
|
||||
+31
-5
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user