From 03b66ab51e4ec03cb2e11668782500f40624f98e Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Fri, 20 Aug 2021 16:17:33 +0300 Subject: [PATCH] [IR] Add API into IdSignature to filter inaccessible function in IC --- .../jetbrains/kotlin/ir/util/IdSignature.kt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IdSignature.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IdSignature.kt index 2fbe25c7677..8d6d9e86489 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IdSignature.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IdSignature.kt @@ -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