Make DescriptorVisibility delegate to Visibility

This commit is contained in:
Dmitriy Novozhilov
2020-09-01 17:01:33 +03:00
parent a05d6da43b
commit 696f089b3e
14 changed files with 206 additions and 227 deletions
@@ -32,29 +32,34 @@ fun FunctionDescriptor.hasJavaOriginInHierarchy(): Boolean {
original.overriddenDescriptors.any { it.hasJavaOriginInHierarchy() }
}
fun DescriptorVisibility.isVisibleOutside() = this != DescriptorVisibilities.PRIVATE && this != DescriptorVisibilities.PRIVATE_TO_THIS && this != DescriptorVisibilities.INVISIBLE_FAKE
fun DescriptorVisibility.isVisibleOutside() =
this != DescriptorVisibilities.PRIVATE && this != DescriptorVisibilities.PRIVATE_TO_THIS && this != DescriptorVisibilities.INVISIBLE_FAKE
fun syntheticVisibility(originalDescriptor: DeclarationDescriptorWithVisibility, isUsedForExtension: Boolean): DescriptorVisibility {
val originalVisibility = originalDescriptor.visibility
return when (originalVisibility) {
return when (val originalVisibility = originalDescriptor.visibility) {
DescriptorVisibilities.PUBLIC -> DescriptorVisibilities.PUBLIC
else -> object : DescriptorVisibility(originalVisibility.name, originalVisibility.isPublicAPI) {
else -> object : DescriptorVisibility() {
override val delegate: Visibility
get() = originalVisibility.delegate
override fun isVisible(
receiver: ReceiverValue?,
what: DeclarationDescriptorWithVisibility,
from: DeclarationDescriptor
receiver: ReceiverValue?,
what: DeclarationDescriptorWithVisibility,
from: DeclarationDescriptor
) = originalVisibility.isVisible(
if (isUsedForExtension) DescriptorVisibilities.ALWAYS_SUITABLE_RECEIVER else receiver, originalDescriptor, from)
if (isUsedForExtension) DescriptorVisibilities.ALWAYS_SUITABLE_RECEIVER else receiver, originalDescriptor, from
)
override fun mustCheckInImports()
= throw UnsupportedOperationException("Should never be called for this visibility")
override fun mustCheckInImports() = throw UnsupportedOperationException("Should never be called for this visibility")
override fun normalize()
= originalVisibility.normalize()
override fun normalize() = originalVisibility.normalize()
override val internalDisplayName: String
get() = originalVisibility.internalDisplayName + " for synthetic extension"
override val externalDisplayName: String
get() = internalDisplayName
}
}