diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt index 6c1fd45cc05..b6fde228fd3 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.ir.expressions.impl.IrEnumConstructorCallImpl import org.jetbrains.kotlin.ir.expressions.impl.IrExpressionBodyImpl import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol +import org.jetbrains.kotlin.ir.symbols.IrTypeAliasSymbol import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl @@ -170,14 +171,22 @@ class Fir2IrClassifierStorage( return irClass } + private fun declareIrTypeAlias(signature: IdSignature?, factory: (IrTypeAliasSymbol) -> IrTypeAlias): IrTypeAlias { + if (signature == null) { + val descriptor = WrappedTypeAliasDescriptor() + return symbolTable.declareTypeAlias(descriptor, factory).apply { descriptor.bind(this) } + } + return symbolTable.declareTypeAlias(signature, { Fir2IrTypeAliasSymbol(signature) }, factory) + } + fun registerTypeAlias( typeAlias: FirTypeAlias, parent: IrFile ): IrTypeAlias { - val signature = signatureComposer.composeSignature(typeAlias)!! + val signature = signatureComposer.composeSignature(typeAlias) preCacheTypeParameters(typeAlias) return typeAlias.convertWithOffsets { startOffset, endOffset -> - symbolTable.declareTypeAlias(signature, { Fir2IrTypeAliasSymbol(signature) }) { symbol -> + declareIrTypeAlias(signature) { symbol -> IrTypeAliasImpl( startOffset, endOffset, symbol, typeAlias.name, typeAlias.visibility, diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/signaturer/FirBasedSignatureComposer.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/signaturer/FirBasedSignatureComposer.kt index 2b318cd8319..04d9b15f3b6 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/signaturer/FirBasedSignatureComposer.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/signaturer/FirBasedSignatureComposer.kt @@ -63,7 +63,12 @@ class FirBasedSignatureComposer(private val mangler: FirMangler) : Fir2IrSignatu override fun composeSignature(declaration: FirDeclaration): IdSignature? { if (declaration is FirAnonymousObject || declaration is FirAnonymousFunction) return null - if (declaration is FirMemberDeclaration && declaration.effectiveVisibility == FirEffectiveVisibilityImpl.Local) return null + if (declaration is FirMemberDeclaration) { + val effectiveVisibility = declaration.effectiveVisibility + if (effectiveVisibility == FirEffectiveVisibilityImpl.Local || + effectiveVisibility == FirEffectiveVisibilityImpl.Private + ) return null + } val builder = SignatureBuilder() declaration.accept(builder) return when {