[IDE] EXPOSED_RECEIVER_TYPE: add quickfix to decrease visibility on the use side

^KTIJ-23267 Fixed
This commit is contained in:
Toshiaki Kameyama
2023-04-20 17:17:58 +09:00
committed by Space Team
parent 088c25ea41
commit 833edfb209
@@ -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)