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? {
|
override fun composeSignature(declaration: FirDeclaration): IdSignature? {
|
||||||
if (declaration is FirAnonymousObject || declaration is FirAnonymousFunction) return null
|
if (declaration is FirAnonymousObject || declaration is FirAnonymousFunction) return null
|
||||||
if (declaration is FirMemberDeclaration) {
|
if (declaration is FirMemberDeclaration && declaration.effectiveVisibility == FirEffectiveVisibilityImpl.Local) {
|
||||||
val effectiveVisibility = declaration.effectiveVisibility
|
return null
|
||||||
if (effectiveVisibility == FirEffectiveVisibilityImpl.Local ||
|
|
||||||
effectiveVisibility == FirEffectiveVisibilityImpl.Private
|
|
||||||
) return null
|
|
||||||
}
|
}
|
||||||
val builder = SignatureBuilder()
|
val builder = SignatureBuilder()
|
||||||
declaration.accept(builder)
|
declaration.accept(builder)
|
||||||
return when {
|
return when {
|
||||||
declaration is FirRegularClass && declaration.visibility != Visibilities.LOCAL -> {
|
declaration is FirRegularClass && declaration.visibility != Visibilities.LOCAL -> {
|
||||||
|
// TODO: private classes are probably not acceptable here too
|
||||||
val classId = declaration.classId
|
val classId = declaration.classId
|
||||||
IdSignature.PublicSignature(
|
IdSignature.PublicSignature(
|
||||||
classId.packageFqName.asString(), classId.relativeClassName.asString(), builder.hashId, builder.mask
|
classId.packageFqName.asString(), classId.relativeClassName.asString(), builder.hashId, builder.mask
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
declaration is FirTypeAlias -> {
|
declaration is FirTypeAlias -> {
|
||||||
|
if (declaration.visibility == Visibilities.PRIVATE) return null
|
||||||
val classId = declaration.symbol.classId
|
val classId = declaration.symbol.classId
|
||||||
IdSignature.PublicSignature(
|
IdSignature.PublicSignature(
|
||||||
classId.packageFqName.asString(), classId.relativeClassName.asString(), builder.hashId, builder.mask
|
classId.packageFqName.asString(), classId.relativeClassName.asString(), builder.hashId, builder.mask
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
declaration is FirCallableMemberDeclaration<*> -> {
|
declaration is FirCallableMemberDeclaration<*> -> {
|
||||||
|
if (declaration.visibility == Visibilities.PRIVATE) return null
|
||||||
val callableId = declaration.symbol.callableId
|
val callableId = declaration.symbol.callableId
|
||||||
if (callableId.classId?.isLocal == true) return null
|
if (callableId.classId?.isLocal == true) return null
|
||||||
IdSignature.PublicSignature(
|
IdSignature.PublicSignature(
|
||||||
|
|||||||
Reference in New Issue
Block a user