[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 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 = override fun toString(): String =
"${if (isLocal) "local " else ""}${render()}" "${if (isLocal) "local " else ""}${render()}"
@@ -107,6 +110,9 @@ sealed class IdSignature {
override val isLocal: Boolean override val isLocal: Boolean
get() = inner.isLocal get() = inner.isLocal
override val visibleCrossFile: Boolean
get() = container.visibleCrossFile
override fun topLevelSignature(): IdSignature { override fun topLevelSignature(): IdSignature {
return if (container is FileSignature) return if (container is FileSignature)
CompositeSignature(container, inner.topLevelSignature()) CompositeSignature(container, inner.topLevelSignature())
@@ -169,6 +175,9 @@ sealed class IdSignature {
override val isPubliclyVisible: Boolean override val isPubliclyVisible: Boolean
get() = true get() = true
override val visibleCrossFile: Boolean
get() = false
override fun isPackageSignature(): Boolean = true override fun isPackageSignature(): Boolean = true
override fun topLevelSignature(): IdSignature = this override fun topLevelSignature(): IdSignature = this
@@ -294,6 +303,9 @@ sealed class IdSignature {
override fun packageFqName(): FqName = container.packageFqName() override fun packageFqName(): FqName = container.packageFqName()
override val visibleCrossFile: Boolean
get() = false
override fun topLevelSignature(): IdSignature { override fun topLevelSignature(): IdSignature {
val topLevelContainer = container.topLevelSignature() val topLevelContainer = container.topLevelSignature()
if (topLevelContainer === container) { if (topLevelContainer === container) {
@@ -324,6 +336,9 @@ sealed class IdSignature {
override val isPubliclyVisible: Boolean get() = false override val isPubliclyVisible: Boolean get() = false
override val visibleCrossFile: Boolean
get() = false
override val hasTopLevel: Boolean get() = false override val hasTopLevel: Boolean get() = false
override fun topLevelSignature(): IdSignature = error("Is not supported for Local ID") 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 hasTopLevel: Boolean get() = true
override val visibleCrossFile: Boolean
get() = original.visibleCrossFile
override fun topLevelSignature(): IdSignature = this override fun topLevelSignature(): IdSignature = this
override fun nearestPublicSig(): IdSignature = this override fun nearestPublicSig(): IdSignature = this