[IR] Add API into IdSignature to filter inaccessible function in IC

This commit is contained in:
Roman Artemev
2021-08-20 16:17:33 +03:00
committed by TeamCityServer
parent 35e16d2db6
commit 03b66ab51e
@@ -47,6 +47,9 @@ sealed class IdSignature {
open val isLocal: Boolean get() = !isPubliclyVisible
// TODO: this API is a bit hacky, consider to act somehow else
open val visibleCrossFile: Boolean get() = true
override fun toString(): String =
"${if (isLocal) "local " else ""}${render()}"
@@ -107,6 +110,9 @@ sealed class IdSignature {
override val isLocal: Boolean
get() = inner.isLocal
override val visibleCrossFile: Boolean
get() = container.visibleCrossFile
override fun topLevelSignature(): IdSignature {
return if (container is FileSignature)
CompositeSignature(container, inner.topLevelSignature())
@@ -169,6 +175,9 @@ sealed class IdSignature {
override val isPubliclyVisible: Boolean
get() = true
override val visibleCrossFile: Boolean
get() = false
override fun isPackageSignature(): Boolean = true
override fun topLevelSignature(): IdSignature = this
@@ -294,6 +303,9 @@ sealed class IdSignature {
override fun packageFqName(): FqName = container.packageFqName()
override val visibleCrossFile: Boolean
get() = false
override fun topLevelSignature(): IdSignature {
val topLevelContainer = container.topLevelSignature()
if (topLevelContainer === container) {
@@ -324,6 +336,9 @@ sealed class IdSignature {
override val isPubliclyVisible: Boolean get() = false
override val visibleCrossFile: Boolean
get() = false
override val hasTopLevel: Boolean get() = false
override fun topLevelSignature(): IdSignature = error("Is not supported for Local ID")
@@ -345,6 +360,9 @@ sealed class IdSignature {
override val hasTopLevel: Boolean get() = true
override val visibleCrossFile: Boolean
get() = original.visibleCrossFile
override fun topLevelSignature(): IdSignature = this
override fun nearestPublicSig(): IdSignature = this