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:
Mikhail Glukhikh
2020-07-15 11:17:23 +03:00
parent 07b0ffef84
commit 92d40c27e2
@@ -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(