Make DescriptorVisibility delegate to Visibility
This commit is contained in:
+17
-12
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -267,8 +267,8 @@ internal class InlineChecker(private val descriptor: FunctionDescriptor) : CallC
|
||||
|
||||
if (calledDescriptor !is ConstructorDescriptor &&
|
||||
isInlineFunPublicOrPublishedApi &&
|
||||
inlineFunEffectiveVisibility.toVisibility() !== DescriptorVisibilities.PROTECTED &&
|
||||
calledFunEffectiveVisibility.toVisibility() === DescriptorVisibilities.PROTECTED) {
|
||||
inlineFunEffectiveVisibility.toVisibility() !== Visibilities.Protected &&
|
||||
calledFunEffectiveVisibility.toVisibility() === Visibilities.Protected) {
|
||||
if (prohibitProtectedCallFromInline) {
|
||||
context.trace.report(PROTECTED_CALL_FROM_PUBLIC_INLINE_ERROR.on(expression, calledDescriptor))
|
||||
} else {
|
||||
|
||||
+2
-2
@@ -105,8 +105,8 @@ class ExplicitApiDeclarationChecker : DeclarationChecker {
|
||||
val callableMemberDescriptor = descriptor as? CallableMemberDescriptor
|
||||
|
||||
val visibility = callableMemberDescriptor?.effectiveVisibility()?.toVisibility()
|
||||
return (checkForPublicApi && visibility?.isPublicAPI == true) || (checkForInternal && visibility == DescriptorVisibilities.INTERNAL) ||
|
||||
(checkForPrivate && visibility == DescriptorVisibilities.PRIVATE)
|
||||
return (checkForPublicApi && visibility?.isPublicAPI == true) || (checkForInternal && visibility == Visibilities.Internal) ||
|
||||
(checkForPrivate && visibility == Visibilities.Internal)
|
||||
}
|
||||
|
||||
fun returnTypeCheckIsApplicable(element: KtCallableDeclaration): Boolean {
|
||||
|
||||
Reference in New Issue
Block a user