diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt index d6d8c9b368d..216efafe8d0 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt @@ -34,6 +34,7 @@ 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.load.java.JavaDescriptorVisibilities import org.jetbrains.kotlin.name.Name @@ -231,7 +232,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 is IdSignature.CompositeSignature + val isTopLevelPrivate = irClass.symbol.signature.isComposite() signatureComposer.composeSignature(fakeOverrideFirDeclaration, forceTopLevelPrivate = isTopLevelPrivate) }?.takeIf { it.parent == irClass } ?: createIrDeclaration( @@ -283,7 +284,7 @@ class FakeOverrideGenerator( } } - fun createFirFunctionFakeOverride( + internal fun createFirFunctionFakeOverride( klass: FirClass, irClass: IrClass, originalSymbol: FirNamedFunctionSymbol, @@ -301,7 +302,7 @@ class FakeOverrideGenerator( scope ) - fun createFirPropertyFakeOverride( + internal fun createFirPropertyFakeOverride( klass: FirClass, irClass: IrClass, originalSymbol: FirPropertySymbol, diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt index 61baf9427cb..99934f96e91 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt @@ -26,10 +26,7 @@ import org.jetbrains.kotlin.ir.symbols.IrClassSymbol 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.IdSignature -import org.jetbrains.kotlin.ir.util.isEnumClass -import org.jetbrains.kotlin.ir.util.isObject +import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.util.OperatorNameConventions import org.jetbrains.kotlin.utils.addIfNotNull @@ -150,7 +147,7 @@ class Fir2IrLazyClass( } override val declarations: MutableList by lazyVar(lock) { - val isTopLevelPrivate = symbol.signature is IdSignature.CompositeSignature + val isTopLevelPrivate = symbol.signature.isComposite() val result = mutableListOf() // NB: it's necessary to take all callables from scope, // e.g. to avoid accessing un-enhanced Java declarations with FirJavaTypeRef etc. inside diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt index 78ace9414fa..d7aa1cdf7ad 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt @@ -32,7 +32,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.* import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.ir.expressions.IrExpressionBody import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol -import org.jetbrains.kotlin.ir.util.IdSignature +import org.jetbrains.kotlin.ir.util.isComposite class Fir2IrLazyProperty( components: Fir2IrComponents, @@ -165,7 +165,7 @@ class Fir2IrLazyProperty( fir, isSetter = false, containingClass?.symbol?.toLookupTag(), - forceTopLevelPrivate = symbol.signature is IdSignature.CompositeSignature + forceTopLevelPrivate = symbol.signature.isComposite() )!! symbolTable.declareSimpleFunction(signature, symbolFactory = { Fir2IrSimpleFunctionSymbol(signature) }) { symbol -> Fir2IrLazyPropertyAccessor( @@ -199,7 +199,7 @@ class Fir2IrLazyProperty( fir, isSetter = true, containingClass?.symbol?.toLookupTag(), - forceTopLevelPrivate = symbol.signature is IdSignature.CompositeSignature + forceTopLevelPrivate = symbol.signature.isComposite() )!! symbolTable.declareSimpleFunction(signature, symbolFactory = { Fir2IrSimpleFunctionSymbol(signature) }) { symbol -> Fir2IrLazyPropertyAccessor( diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt index 17ee395046a..c33c5d0fea8 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt @@ -1256,3 +1256,6 @@ private fun computeAllOverridden(function: IrSimpleFunction, result: MutableSet< fun IrBuiltIns.getKFunctionType(returnType: IrType, parameterTypes: List) = kFunctionN(parameterTypes.size).typeWith(parameterTypes + returnType) + +fun IdSignature?.isComposite(): Boolean = + this is IdSignature.CompositeSignature