[FIR2IR] Get rid of forceTopLevelPrivate parameter in signature composer
Seems like it has no sense now
This commit is contained in:
committed by
Space Team
parent
5f36f80d25
commit
a75d5353ee
@@ -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 ->
|
||||
|
||||
+11
-30
@@ -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
|
||||
|
||||
-1
@@ -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.*
|
||||
|
||||
+1
-3
@@ -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(
|
||||
|
||||
+3
-5
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user