From 92d40c27e201f58d9b3332d7dc71be7467160636 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 15 Jul 2020 11:17:23 +0300 Subject: [PATCH] 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. --- .../kotlin/fir/signaturer/FirBasedSignatureComposer.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 775da7ef736..ffbff4bca81 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,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(