Fir2Ir: pass file data to Fir2IrSignatureComposer
This commit is contained in:
committed by
Alexander Udalov
parent
ae158e4c5b
commit
9ea14a6eab
@@ -428,8 +428,9 @@ class Fir2IrConverter(
|
||||
irGenerationExtensions: Collection<IrGenerationExtension>
|
||||
): Fir2IrResult {
|
||||
val moduleDescriptor = FirModuleDescriptor(session)
|
||||
val symbolTable = SymbolTable(signaturer, irFactory)
|
||||
val signatureComposer = FirBasedSignatureComposer(mangler)
|
||||
val wrappedSignaturer = WrappedDescriptorSignatureComposer(signaturer, signatureComposer)
|
||||
val symbolTable = SymbolTable(wrappedSignaturer, irFactory)
|
||||
val components = Fir2IrComponentsStorage(session, scopeSession, symbolTable, irFactory, signatureComposer, fir2IrExtensions)
|
||||
val converter = Fir2IrConverter(moduleDescriptor, components)
|
||||
|
||||
@@ -532,3 +533,14 @@ class Fir2IrConverter(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class WrappedDescriptorSignatureComposer(
|
||||
private val delegate: IdSignatureComposer,
|
||||
private val firComposer: Fir2IrSignatureComposer
|
||||
) : IdSignatureComposer by delegate {
|
||||
override fun withFileSignature(fileSignature: IdSignature.FileSignature, body: () -> Unit) {
|
||||
firComposer.withFileSignature(fileSignature) {
|
||||
delegate.withFileSignature(fileSignature, body)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,10 +7,13 @@ package org.jetbrains.kotlin.fir.backend
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.signaturer.FirMangler
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||
|
||||
interface Fir2IrSignatureComposer {
|
||||
val mangler: FirMangler
|
||||
fun composeSignature(declaration: FirDeclaration, containingClass: ConeClassLikeLookupTag? = null): IdSignature?
|
||||
fun composeAccessorSignature(property: FirProperty, isSetter: Boolean, containingClass: ConeClassLikeLookupTag? = null): IdSignature?
|
||||
fun withFileSignature(sig: IdSignature.FileSignature, body: () -> Unit)
|
||||
}
|
||||
|
||||
+9
-1
@@ -17,7 +17,15 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||
|
||||
@NoMutableState
|
||||
class FirBasedSignatureComposer(private val mangler: FirMangler) : Fir2IrSignatureComposer {
|
||||
class FirBasedSignatureComposer(override val mangler: FirMangler) : Fir2IrSignatureComposer {
|
||||
var fileSignature: IdSignature.FileSignature? = null
|
||||
|
||||
override fun withFileSignature(sig: IdSignature.FileSignature, body: () -> Unit) {
|
||||
fileSignature = sig
|
||||
body()
|
||||
fileSignature = null
|
||||
}
|
||||
|
||||
inner class SignatureBuilder : FirVisitor<Unit, Any?>() {
|
||||
var hashId: Long? = null
|
||||
var mask = 0L
|
||||
|
||||
Reference in New Issue
Block a user