[FIR2IR] Don't compose signatures for private declarations
This commit is contained in:
+11
-2
@@ -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,
|
||||
|
||||
+6
-1
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user