[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.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.lazy.Fir2IrLazyClass
|
import org.jetbrains.kotlin.fir.lazy.Fir2IrLazyClass
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
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.IrBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.KtDiagnosticReporterWithImplicitIrBasedContext
|
import org.jetbrains.kotlin.ir.KtDiagnosticReporterWithImplicitIrBasedContext
|
||||||
@@ -71,7 +72,7 @@ fun FirResult.convertToIrAndActualize(
|
|||||||
actualizerTypeContextProvider: (IrBuiltIns) -> IrTypeSystemContext,
|
actualizerTypeContextProvider: (IrBuiltIns) -> IrTypeSystemContext,
|
||||||
fir2IrResultPostCompute: (ModuleCompilerAnalyzedOutput, Fir2IrResult) -> Unit = { _, _ -> },
|
fir2IrResultPostCompute: (ModuleCompilerAnalyzedOutput, Fir2IrResult) -> Unit = { _, _ -> },
|
||||||
): Fir2IrActualizedResult {
|
): Fir2IrActualizedResult {
|
||||||
val commonMemberStorage = Fir2IrCommonMemberStorage(firMangler)
|
val commonMemberStorage = Fir2IrCommonMemberStorage(FirBasedSignatureComposer.create(firMangler, fir2IrConfiguration))
|
||||||
|
|
||||||
require(outputs.isNotEmpty()) { "No modules found" }
|
require(outputs.isNotEmpty()) { "No modules found" }
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -21,9 +21,7 @@ import java.util.concurrent.ConcurrentHashMap
|
|||||||
*
|
*
|
||||||
* See `/docs/fir/k2_kmp.md`
|
* See `/docs/fir/k2_kmp.md`
|
||||||
*/
|
*/
|
||||||
class Fir2IrCommonMemberStorage(firMangler: FirMangler) {
|
class Fir2IrCommonMemberStorage(val firSignatureComposer: FirBasedSignatureComposer) {
|
||||||
val firSignatureComposer = FirBasedSignatureComposer(firMangler)
|
|
||||||
|
|
||||||
val symbolTable = SymbolTable(signaturer = null, irFactory = IrFactoryImpl)
|
val symbolTable = SymbolTable(signaturer = null, irFactory = IrFactoryImpl)
|
||||||
|
|
||||||
val classCache: MutableMap<FirRegularClass, IrClassSymbol> = mutableMapOf()
|
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.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.fir.*
|
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.FirMangler
|
||||||
import org.jetbrains.kotlin.fir.backend.conversionData
|
import org.jetbrains.kotlin.fir.backend.conversionData
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
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.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
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 data class FirDeclarationWithParentId(val declaration: FirDeclaration, val classId: ClassId?, val forceExpect: Boolean)
|
||||||
|
|
||||||
private val signatureCache = mutableMapOf<FirDeclarationWithParentId, IdSignature.CommonSignature>()
|
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 }
|
declaration.signatureString(compatibleMode = false).let { it.hashMangle to it }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun composeSignature(
|
override fun composeSignature(
|
||||||
declaration: FirCallableDeclaration,
|
declaration: FirCallableDeclaration,
|
||||||
containingClass: ConeClassLikeLookupTag? = null,
|
containingClass: ConeClassLikeLookupTag?,
|
||||||
forceExpect: Boolean = false
|
forceExpect: Boolean
|
||||||
): IdSignature? {
|
): IdSignature? {
|
||||||
return composeSignatureImpl(declaration, containingClass, forceExpect)
|
return composeSignatureImpl(declaration, containingClass, forceExpect)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user