diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ExposedVisibilityChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ExposedVisibilityChecker.kt index 36f23e3c76a..d298216cd9a 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ExposedVisibilityChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ExposedVisibilityChecker.kt @@ -144,7 +144,7 @@ class ExposedVisibilityChecker( } } } - return result and checkMemberReceiver(function.receiverTypeReference, functionDescriptor) + return result and checkMemberReceiver(function.receiverTypeReference, functionDescriptor, visibility) } fun checkProperty( @@ -160,13 +160,17 @@ class ExposedVisibilityChecker( reportExposure(EXPOSED_PROPERTY_TYPE, property.nameIdentifier ?: property, propertyVisibility, restricting) result = false } - return result and checkMemberReceiver(property.receiverTypeReference, propertyDescriptor) + return result and checkMemberReceiver(property.receiverTypeReference, propertyDescriptor, visibility) } - private fun checkMemberReceiver(typeReference: KtTypeReference?, memberDescriptor: CallableMemberDescriptor): Boolean { + private fun checkMemberReceiver( + typeReference: KtTypeReference?, + memberDescriptor: CallableMemberDescriptor, + visibility: DescriptorVisibility, + ): Boolean { if (typeReference == null) return true val receiverParameterDescriptor = memberDescriptor.extensionReceiverParameter ?: return true - val memberVisibility = memberDescriptor.effectiveVisibility() + val memberVisibility = memberDescriptor.effectiveVisibility(visibility) val restricting = receiverParameterDescriptor.type.leastPermissiveDescriptor(memberVisibility) if (restricting != null) { reportExposure(EXPOSED_RECEIVER_TYPE, typeReference, memberVisibility, restricting)