[FIR2IR] Get rid of forceTopLevelPrivate parameter in signature composer

Seems like it has no sense now
This commit is contained in:
Dmitriy Novozhilov
2023-07-12 16:24:41 +03:00
committed by Space Team
parent 5f36f80d25
commit a75d5353ee
10 changed files with 31 additions and 71 deletions
@@ -59,7 +59,6 @@ import org.jetbrains.kotlin.psi.psiUtil.startOffsetSkippingComments
import org.jetbrains.kotlin.types.ConstantValueKind
import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.util.OperatorNameConventions
import java.util.HashMap
fun AbstractKtSourceElement?.startOffsetSkippingComments(): Int? {
return when (this) {
@@ -525,7 +525,6 @@ class Fir2IrClassifierStorage(
enumEntry: FirEnumEntry,
irParent: IrClass,
predefinedOrigin: IrDeclarationOrigin? = null,
forceTopLevelPrivate: Boolean = false,
): IrEnumEntry {
getCachedIrEnumEntry(enumEntry)?.let { return it }
val containingFile = firProvider.getFirCallableContainerFile(enumEntry.symbol)
@@ -539,8 +538,7 @@ class Fir2IrClassifierStorage(
return createIrEnumEntry(
enumEntry,
irParent = irParent,
predefinedOrigin = predefinedOrigin,
forceTopLevelPrivate
predefinedOrigin = predefinedOrigin
)
}
@@ -561,10 +559,9 @@ class Fir2IrClassifierStorage(
enumEntry: FirEnumEntry,
irParent: IrClass?,
predefinedOrigin: IrDeclarationOrigin? = null,
forceTopLevelPrivate: Boolean = false,
): IrEnumEntry {
return enumEntry.convertWithOffsets { startOffset, endOffset ->
val signature = signatureComposer.composeSignature(enumEntry, forceTopLevelPrivate = forceTopLevelPrivate)
val signature = signatureComposer.composeSignature(enumEntry)
val result = declareIrEnumEntry(signature) { symbol ->
val origin = enumEntry.computeIrOrigin(predefinedOrigin)
irFactory.createEnumEntry(
@@ -600,7 +597,7 @@ class Fir2IrClassifierStorage(
return initializer is FirAnonymousObjectExpression && initializer.anonymousObject.declarations.any { it !is FirConstructor }
}
fun getIrClassSymbol(firClassSymbol: FirClassSymbol<*>, forceTopLevelPrivate: Boolean = false): IrClassSymbol {
fun getIrClassSymbol(firClassSymbol: FirClassSymbol<*>): IrClassSymbol {
val firClass = firClassSymbol.fir
getCachedIrClass(firClass)?.let { return it.symbol }
if (firClass is FirAnonymousObject || firClass is FirRegularClass && firClass.visibility == Visibilities.Local) {
@@ -616,7 +613,7 @@ class Fir2IrClassifierStorage(
getCachedIrClass(firClass)?.let { return it.symbol }
val signature = runIf(configuration.linkViaSignatures) {
signatureComposer.composeSignature(firClass, forceTopLevelPrivate = forceTopLevelPrivate)
signatureComposer.composeSignature(firClass)
}
val irClass = firClass.convertWithOffsets { startOffset, endOffset ->
declareIrClass(signature) { irClassSymbol ->
@@ -510,15 +510,13 @@ class Fir2IrDeclarationStorage(
function: FirSimpleFunction,
irParent: IrDeclarationParent?,
isLocal: Boolean = false,
forceTopLevelPrivate: Boolean = false,
): IrSimpleFunction {
getCachedIrFunction(function)?.let { return it }
return createIrFunction(
function,
irParent,
fakeOverrideOwnerLookupTag = function.containingClassLookupTag(),
isLocal = isLocal,
forceTopLevelPrivate = forceTopLevelPrivate
fakeOverrideOwnerLookupTag = function.containingClassLookupTag()
)
}
@@ -529,7 +527,6 @@ class Fir2IrDeclarationStorage(
predefinedOrigin: IrDeclarationOrigin? = null,
isLocal: Boolean = false,
fakeOverrideOwnerLookupTag: ConeClassLikeLookupTag? = null,
forceTopLevelPrivate: Boolean = false,
): IrSimpleFunction = convertCatching(function) {
val simpleFunction = function as? FirSimpleFunction
val isLambda = function is FirAnonymousFunction && function.isLambda
@@ -559,7 +556,7 @@ class Fir2IrDeclarationStorage(
function.dispatchReceiverType?.isPrimitive != true && function.containerSource == null &&
updatedOrigin != IrDeclarationOrigin.FAKE_OVERRIDE && !function.isOverride
) {
signatureComposer.composeSignature(function, fakeOverrideOwnerLookupTag, forceTopLevelPrivate)
signatureComposer.composeSignature(function, fakeOverrideOwnerLookupTag)
}
if (irParent is Fir2IrLazyClass && signature != null) {
// For private functions signature is null, fallback to non-lazy function
@@ -659,13 +656,12 @@ class Fir2IrDeclarationStorage(
irParent: IrClass,
predefinedOrigin: IrDeclarationOrigin? = null,
isLocal: Boolean = false,
forceTopLevelPrivate: Boolean = false,
): IrConstructor = convertCatching(constructor) {
val origin = constructor.computeIrOrigin(predefinedOrigin)
val isPrimary = constructor.isPrimary
val signature =
runUnless(isLocal || !configuration.linkViaSignatures) {
signatureComposer.composeSignature(constructor, forceTopLevelPrivate = forceTopLevelPrivate)
signatureComposer.composeSignature(constructor)
}
val visibility = if (irParent.isAnonymousObject) Visibilities.Public else constructor.visibility
return constructor.convertWithOffsets { startOffset, endOffset ->
@@ -701,10 +697,9 @@ class Fir2IrDeclarationStorage(
irParent: IrClass,
predefinedOrigin: IrDeclarationOrigin? = null,
isLocal: Boolean = false,
forceTopLevelPrivate: Boolean = false,
): IrConstructor {
getCachedIrConstructor(constructor)?.let { return it }
return createIrConstructor(constructor, irParent, predefinedOrigin, isLocal, forceTopLevelPrivate = forceTopLevelPrivate)
return createIrConstructor(constructor, irParent, predefinedOrigin, isLocal)
}
private fun declareIrAccessor(
@@ -730,12 +725,11 @@ class Fir2IrDeclarationStorage(
dontUseSignature: Boolean = false,
fakeOverrideOwnerLookupTag: ConeClassLikeLookupTag? = null,
propertyAccessorForAnnotations: FirPropertyAccessor? = propertyAccessor,
forceTopLevelPrivate: Boolean = false,
): IrSimpleFunction = convertCatching(propertyAccessor ?: property) {
val prefix = if (isSetter) "set" else "get"
val signature =
runUnless(dontUseSignature) {
signatureComposer.composeAccessorSignature(property, isSetter, fakeOverrideOwnerLookupTag, forceTopLevelPrivate)
signatureComposer.composeAccessorSignature(property, isSetter, fakeOverrideOwnerLookupTag)
}
val containerSource = (correspondingProperty as? IrProperty)?.containerSource
return declareIrAccessor(
@@ -862,10 +856,9 @@ class Fir2IrDeclarationStorage(
property: FirProperty,
irParent: IrDeclarationParent?,
isLocal: Boolean = false,
forceTopLevelPrivate: Boolean = false,
): IrProperty {
getCachedIrProperty(property)?.let { return it }
return createIrProperty(property, irParent, isLocal = isLocal, forceTopLevelPrivate = forceTopLevelPrivate)
return createIrProperty(property, irParent, isLocal = isLocal)
}
fun getOrCreateIrPropertyByPureField(
@@ -912,7 +905,6 @@ class Fir2IrDeclarationStorage(
predefinedOrigin: IrDeclarationOrigin? = null,
isLocal: Boolean = false,
fakeOverrideOwnerLookupTag: ConeClassLikeLookupTag? = (irParent as? IrClass)?.classId?.toLookupTag(),
forceTopLevelPrivate: Boolean = false,
): IrProperty = convertCatching(property) {
val origin =
if (property.isStatic && property.name in ENUM_SYNTHETIC_NAMES) IrDeclarationOrigin.ENUM_CLASS_SPECIAL_MEMBER
@@ -925,7 +917,7 @@ class Fir2IrDeclarationStorage(
property.dispatchReceiverType?.isPrimitive != true && property.containerSource == null &&
origin != IrDeclarationOrigin.FAKE_OVERRIDE && !property.isOverride
) {
signatureComposer.composeSignature(property, fakeOverrideOwnerLookupTag, forceTopLevelPrivate)
signatureComposer.composeSignature(property, fakeOverrideOwnerLookupTag)
}
if (irParent is Fir2IrLazyClass && signature != null) {
// For private functions signature is null, fallback to non-lazy property
@@ -1007,7 +999,6 @@ class Fir2IrDeclarationStorage(
startOffset, endOffset,
dontUseSignature = signature == null, fakeOverrideOwnerLookupTag,
property.unwrapFakeOverrides().getter,
forceTopLevelPrivate = forceTopLevelPrivate,
)
if (property.isVar) {
this.setter = createIrPropertyAccessor(
@@ -1022,7 +1013,6 @@ class Fir2IrDeclarationStorage(
startOffset, endOffset,
dontUseSignature = signature == null, fakeOverrideOwnerLookupTag,
property.unwrapFakeOverrides().setter,
forceTopLevelPrivate = forceTopLevelPrivate,
)
}
leaveScope(this)
@@ -1368,14 +1358,14 @@ class Fir2IrDeclarationStorage(
}
}
fun getIrConstructorSymbol(firConstructorSymbol: FirConstructorSymbol, forceTopLevelPrivate: Boolean = false): IrConstructorSymbol {
fun getIrConstructorSymbol(firConstructorSymbol: FirConstructorSymbol): IrConstructorSymbol {
val fir = firConstructorSymbol.fir
return getIrCallableSymbol(
firConstructorSymbol,
fakeOverrideOwnerLookupTag = null,
getCachedIrDeclaration = { constructor: FirConstructor, _, calculator -> getCachedIrConstructor(constructor, calculator) },
createIrDeclaration = { parent, origin ->
createIrConstructor(fir, parent as IrClass, predefinedOrigin = origin, forceTopLevelPrivate = forceTopLevelPrivate)
createIrConstructor(fir, parent as IrClass, predefinedOrigin = origin)
},
createIrLazyDeclaration = { signature, lazyParent, declarationOrigin ->
val symbol = Fir2IrConstructorSymbol(signature)
@@ -1393,14 +1383,12 @@ class Fir2IrDeclarationStorage(
(irConstructor as Fir2IrLazyConstructor).prepareTypeParameters()
irConstructor
},
forceTopLevelPrivate = forceTopLevelPrivate
) as IrConstructorSymbol
}
fun getIrFunctionSymbol(
firFunctionSymbol: FirFunctionSymbol<*>,
fakeOverrideOwnerLookupTag: ConeClassLikeLookupTag? = null,
forceTopLevelPrivate: Boolean = false,
): IrFunctionSymbol {
return when (val fir = firFunctionSymbol.fir) {
is FirAnonymousFunction -> {
@@ -1423,14 +1411,12 @@ class Fir2IrDeclarationStorage(
createIrFunction(
fir, parent,
predefinedOrigin = origin,
forceTopLevelPrivate = forceTopLevelPrivate,
fakeOverrideOwnerLookupTag = fakeOverrideOwnerLookupTag,
)
},
createIrLazyDeclaration = { signature, lazyParent, declarationOrigin ->
createIrLazyFunction(fir, signature, lazyParent, declarationOrigin)
},
forceTopLevelPrivate = forceTopLevelPrivate
) as IrFunctionSymbol
if (unmatchedOwner && fakeOverrideOwnerLookupTag is ConeClassLookupTagWithFixedSymbol) {
val originalFunction = originalSymbol.owner as IrSimpleFunction
@@ -1440,7 +1426,7 @@ class Fir2IrDeclarationStorage(
}
}
is FirConstructor -> {
getIrConstructorSymbol(fir.symbol, forceTopLevelPrivate = forceTopLevelPrivate)
getIrConstructorSymbol(fir.symbol)
}
else -> error("Unknown kind of function: ${fir::class.java}: ${fir.render()}")
}
@@ -1473,7 +1459,6 @@ class Fir2IrDeclarationStorage(
fun getIrPropertySymbol(
firPropertySymbol: FirPropertySymbol,
fakeOverrideOwnerLookupTag: ConeClassLikeLookupTag? = null,
forceTopLevelPrivate: Boolean = false,
): IrSymbol {
val fir = firPropertySymbol.fir
if (fir.isLocal) {
@@ -1491,14 +1476,12 @@ class Fir2IrDeclarationStorage(
getCachedIrDeclaration = ::getCachedIrProperty,
createIrDeclaration = { parent, origin ->
createIrProperty(
fir, parent, predefinedOrigin = origin, forceTopLevelPrivate = forceTopLevelPrivate,
fakeOverrideOwnerLookupTag = fakeOverrideOwnerLookupTag,
fir, parent, predefinedOrigin = origin, fakeOverrideOwnerLookupTag = fakeOverrideOwnerLookupTag,
)
},
createIrLazyDeclaration = { signature, lazyParent, declarationOrigin ->
createIrLazyProperty(fir, signature, lazyParent, declarationOrigin)
},
forceTopLevelPrivate = forceTopLevelPrivate
)
val originalSymbol = fakeOverrideOwnerLookupTag.getIrCallableSymbol()
@@ -1594,7 +1577,6 @@ class Fir2IrDeclarationStorage(
getCachedIrDeclaration: (firDeclaration: F, dispatchReceiverLookupTag: ConeClassLikeLookupTag?, () -> IdSignature?) -> I?,
createIrDeclaration: (parent: IrDeclarationParent?, origin: IrDeclarationOrigin) -> I,
createIrLazyDeclaration: (signature: IdSignature, lazyOwner: IrDeclarationParent, origin: IrDeclarationOrigin) -> I,
forceTopLevelPrivate: Boolean = false,
): IrSymbol {
val fir = firSymbol.fir as F
val irParent by lazy { findIrParent(fir) }
@@ -1602,7 +1584,6 @@ class Fir2IrDeclarationStorage(
signatureComposer.composeSignature(
fir,
fakeOverrideOwnerLookupTag,
forceTopLevelPrivate = forceTopLevelPrivate,
forceExpect = fakeOverrideOwnerLookupTag?.toSymbol(session)?.isExpect == true
)
}
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.backend
import org.jetbrains.kotlin.backend.common.extensions.FirIncompatiblePluginAPI
import org.jetbrains.kotlin.backend.common.extensions.IrAnnotationsFromPluginRegistrar
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
import org.jetbrains.kotlin.backend.common.ir.BuiltinSymbolsBase
import org.jetbrains.kotlin.config.LanguageVersionSettings
@@ -19,6 +18,7 @@ import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
import org.jetbrains.kotlin.fir.scopes.*
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
import org.jetbrains.kotlin.ir.IrBuiltIns
@@ -7,11 +7,9 @@ package org.jetbrains.kotlin.fir.backend
import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData.SymbolKind
import org.jetbrains.kotlin.backend.common.serialization.kind
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fir.backend.generators.FakeOverrideGenerator
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.classId
import org.jetbrains.kotlin.fir.declarations.utils.visibility
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
@@ -75,7 +73,6 @@ class FirIrProvider(val fir2IrComponents: Fir2IrComponents) : IrProvider {
val firCandidates: List<FirDeclaration>
val parent: IrDeclarationParent
var isTopLevelPrivate = false
if (nameSegments.size == 1 && kind != SymbolKind.CLASS_SYMBOL) {
firCandidates = symbolProvider.getTopLevelCallableSymbols(packageFqName, topName).map { it.fir }
parent = packageFragment // TODO: need to insert file facade class on JVM
@@ -90,7 +87,6 @@ class FirIrProvider(val fir2IrComponents: Fir2IrComponents) : IrProvider {
firClass = firClass.declarations.singleOrNull { (it as? FirRegularClass)?.name?.asString() == midName } as? FirRegularClass
?: return null
}
isTopLevelPrivate = topLevelClass.visibility == Visibilities.Private
val classId = firClass.classId
val scope = firClass.unsubstitutedScope(
fir2IrComponents.session,
@@ -171,23 +167,22 @@ class FirIrProvider(val fir2IrComponents: Fir2IrComponents) : IrProvider {
return when (kind) {
SymbolKind.CLASS_SYMBOL -> classifierStorage.getIrClassSymbol(
(firDeclaration as FirRegularClass).symbol,
forceTopLevelPrivate = isTopLevelPrivate
(firDeclaration as FirRegularClass).symbol
).owner
SymbolKind.ENUM_ENTRY_SYMBOL -> classifierStorage.getIrEnumEntry(
firDeclaration as FirEnumEntry, parent as IrClass, forceTopLevelPrivate = isTopLevelPrivate
firDeclaration as FirEnumEntry, parent as IrClass
)
SymbolKind.CONSTRUCTOR_SYMBOL -> {
val firConstructor = firDeclaration as FirConstructor
declarationStorage.getOrCreateIrConstructor(firConstructor, parent as IrClass, forceTopLevelPrivate = isTopLevelPrivate)
declarationStorage.getOrCreateIrConstructor(firConstructor, parent as IrClass)
}
SymbolKind.FUNCTION_SYMBOL -> {
val firSimpleFunction = firDeclaration as FirSimpleFunction
declarationStorage.getOrCreateIrFunction(firSimpleFunction, parent, forceTopLevelPrivate = isTopLevelPrivate)
declarationStorage.getOrCreateIrFunction(firSimpleFunction, parent)
}
SymbolKind.PROPERTY_SYMBOL -> {
val firProperty = firDeclaration as FirProperty
declarationStorage.getOrCreateIrProperty(firProperty, parent, forceTopLevelPrivate = isTopLevelPrivate)
declarationStorage.getOrCreateIrProperty(firProperty, parent)
}
SymbolKind.FIELD_SYMBOL -> {
val firField = firDeclaration as FirField
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.fir.backend.generators
import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fir.backend.*
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.types.*
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.ir.util.isComposite
import org.jetbrains.kotlin.ir.util.parentAsClass
import org.jetbrains.kotlin.name.Name
@@ -283,8 +282,7 @@ class FakeOverrideGenerator(
// have the same signature.
// Now we avoid this problem by signature caching,
// so both FIR overrides correspond to one IR fake override
val isTopLevelPrivate = irClass.symbol.signature.isComposite()
signatureComposer.composeSignature(fakeOverrideFirDeclaration, forceTopLevelPrivate = isTopLevelPrivate)
signatureComposer.composeSignature(fakeOverrideFirDeclaration)
}?.takeIf { it.parent == irClass }
?: createIrDeclaration(
fakeOverrideFirDeclaration,
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.ir.types.IrSimpleType
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
import org.jetbrains.kotlin.ir.util.DeserializableClass
import org.jetbrains.kotlin.ir.util.isComposite
import org.jetbrains.kotlin.ir.util.isEnumClass
import org.jetbrains.kotlin.ir.util.isObject
import org.jetbrains.kotlin.name.Name
@@ -151,14 +150,13 @@ class Fir2IrLazyClass(
}
override val declarations: MutableList<IrDeclaration> by lazyVar(lock) {
val isTopLevelPrivate = symbol.signature.isComposite()
val result = mutableListOf<IrDeclaration>()
// NB: it's necessary to take all callables from scope,
// e.g. to avoid accessing un-enhanced Java declarations with FirJavaTypeRef etc. inside
val scope = fir.unsubstitutedScope(session, scopeSession, withForcedTypeCalculator = true, memberRequiredPhase = null)
scope.processDeclaredConstructors {
if (shouldBuildStub(it.fir)) {
result += declarationStorage.getIrConstructorSymbol(it, forceTopLevelPrivate = isTopLevelPrivate).owner
result += declarationStorage.getIrConstructorSymbol(it).owner
}
}
@@ -166,7 +164,7 @@ class Fir2IrLazyClass(
scope.processClassifiersByName(name) {
val declaration = it.fir as? FirRegularClass ?: return@processClassifiersByName
if (declaration.classId.outerClassId == fir.classId && shouldBuildStub(declaration)) {
val nestedSymbol = classifierStorage.getIrClassSymbol(declaration.symbol, forceTopLevelPrivate = isTopLevelPrivate)
val nestedSymbol = classifierStorage.getIrClassSymbol(declaration.symbol)
result += nestedSymbol.owner
}
}
@@ -192,7 +190,7 @@ class Fir2IrLazyClass(
if (it.isAbstractMethodOfAny()) {
return@processFunctionsByName
}
result += declarationStorage.getIrFunctionSymbol(it, forceTopLevelPrivate = isTopLevelPrivate).owner
result += declarationStorage.getIrFunctionSymbol(it).owner
}
}
scope.processPropertiesByName(name) {
@@ -200,7 +198,7 @@ class Fir2IrLazyClass(
if (!shouldBuildStub(it.fir)) return@processPropertiesByName
if (it is FirPropertySymbol && (it.isStatic || it.dispatchReceiverClassLookupTagOrNull() == ownerLookupTag)) {
result.addIfNotNull(
declarationStorage.getIrPropertySymbol(it, forceTopLevelPrivate = isTopLevelPrivate).owner as? IrDeclaration
declarationStorage.getIrPropertySymbol(it).owner as? IrDeclaration
)
}
}
@@ -25,10 +25,7 @@ import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
import org.jetbrains.kotlin.ir.types.IrErrorType
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.isComposite
import org.jetbrains.kotlin.ir.util.isInterface
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.NameUtils
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
@@ -170,8 +167,7 @@ class Fir2IrLazyProperty(
val signature = signatureComposer.composeAccessorSignature(
fir,
isSetter = false,
containingClass?.symbol?.toLookupTag(),
forceTopLevelPrivate = symbol.signature.isComposite()
containingClass?.symbol?.toLookupTag()
)!!
symbolTable.declareSimpleFunction(signature, symbolFactory = { Fir2IrSimpleFunctionSymbol(signature) }) { symbol ->
Fir2IrLazyPropertyAccessor(
@@ -203,8 +199,7 @@ class Fir2IrLazyProperty(
val signature = signatureComposer.composeAccessorSignature(
fir,
isSetter = true,
containingClass?.symbol?.toLookupTag(),
forceTopLevelPrivate = symbol.signature.isComposite()
containingClass?.symbol?.toLookupTag()
)!!
symbolTable.declareSimpleFunction(signature, symbolFactory = { Fir2IrSimpleFunctionSymbol(signature) }) { symbol ->
Fir2IrLazyPropertyAccessor(
@@ -87,7 +87,6 @@ class FirBasedSignatureComposer(val mangler: FirMangler) {
fun composeSignature(
declaration: FirDeclaration,
containingClass: ConeClassLikeLookupTag? = null,
forceTopLevelPrivate: Boolean = false,
forceExpect: Boolean = false,
): IdSignature? {
if (declaration is FirAnonymousObject || declaration is FirAnonymousFunction) return null
@@ -102,7 +101,7 @@ class FirBasedSignatureComposer(val mangler: FirMangler) {
calculatePublicSignature(declarationWithParentId)
}
val resultSignature: IdSignature = if (isTopLevelPrivate(declaration) || forceTopLevelPrivate) {
val resultSignature: IdSignature = if (isTopLevelPrivate(declaration)) {
val fileSig = fileSignature ?: declaration.fakeFileSignature(publicSignature)
IdSignature.CompositeSignature(fileSig, publicSignature)
} else
@@ -181,12 +180,11 @@ class FirBasedSignatureComposer(val mangler: FirMangler) {
fun composeAccessorSignature(
property: FirProperty,
isSetter: Boolean,
containingClass: ConeClassLikeLookupTag? = null,
forceTopLevelPrivate: Boolean = false
containingClass: ConeClassLikeLookupTag? = null
): IdSignature? {
val propSig: IdSignature.CommonSignature
val fileSig: IdSignature.FileSignature?
when (val propertySignature = composeSignature(property, containingClass, forceTopLevelPrivate)) {
when (val propertySignature = composeSignature(property, containingClass)) {
is IdSignature.CompositeSignature -> {
propSig = propertySignature.inner as? IdSignature.CommonSignature ?: return null
fileSig = propertySignature.container as? IdSignature.FileSignature ?: return null