FirBasedSignatureComposer: build signature even for private classes
FIR2IR assumes that we can build signature for any non-local class. Later we can drop this assumption.
This commit is contained in:
+5
-5
@@ -63,28 +63,28 @@ 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) {
|
||||
val effectiveVisibility = declaration.effectiveVisibility
|
||||
if (effectiveVisibility == FirEffectiveVisibilityImpl.Local ||
|
||||
effectiveVisibility == FirEffectiveVisibilityImpl.Private
|
||||
) return null
|
||||
if (declaration is FirMemberDeclaration && declaration.effectiveVisibility == FirEffectiveVisibilityImpl.Local) {
|
||||
return null
|
||||
}
|
||||
val builder = SignatureBuilder()
|
||||
declaration.accept(builder)
|
||||
return when {
|
||||
declaration is FirRegularClass && declaration.visibility != Visibilities.LOCAL -> {
|
||||
// TODO: private classes are probably not acceptable here too
|
||||
val classId = declaration.classId
|
||||
IdSignature.PublicSignature(
|
||||
classId.packageFqName.asString(), classId.relativeClassName.asString(), builder.hashId, builder.mask
|
||||
)
|
||||
}
|
||||
declaration is FirTypeAlias -> {
|
||||
if (declaration.visibility == Visibilities.PRIVATE) return null
|
||||
val classId = declaration.symbol.classId
|
||||
IdSignature.PublicSignature(
|
||||
classId.packageFqName.asString(), classId.relativeClassName.asString(), builder.hashId, builder.mask
|
||||
)
|
||||
}
|
||||
declaration is FirCallableMemberDeclaration<*> -> {
|
||||
if (declaration.visibility == Visibilities.PRIVATE) return null
|
||||
val callableId = declaration.symbol.callableId
|
||||
if (callableId.classId?.isLocal == true) return null
|
||||
IdSignature.PublicSignature(
|
||||
|
||||
Reference in New Issue
Block a user