[IDE] EXPOSED_RECEIVER_TYPE: add quickfix to decrease visibility on the use side
^KTIJ-23267 Fixed
This commit is contained in:
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(
|
fun checkProperty(
|
||||||
@@ -160,13 +160,17 @@ class ExposedVisibilityChecker(
|
|||||||
reportExposure(EXPOSED_PROPERTY_TYPE, property.nameIdentifier ?: property, propertyVisibility, restricting)
|
reportExposure(EXPOSED_PROPERTY_TYPE, property.nameIdentifier ?: property, propertyVisibility, restricting)
|
||||||
result = false
|
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
|
if (typeReference == null) return true
|
||||||
val receiverParameterDescriptor = memberDescriptor.extensionReceiverParameter ?: return true
|
val receiverParameterDescriptor = memberDescriptor.extensionReceiverParameter ?: return true
|
||||||
val memberVisibility = memberDescriptor.effectiveVisibility()
|
val memberVisibility = memberDescriptor.effectiveVisibility(visibility)
|
||||||
val restricting = receiverParameterDescriptor.type.leastPermissiveDescriptor(memberVisibility)
|
val restricting = receiverParameterDescriptor.type.leastPermissiveDescriptor(memberVisibility)
|
||||||
if (restricting != null) {
|
if (restricting != null) {
|
||||||
reportExposure(EXPOSED_RECEIVER_TYPE, typeReference, memberVisibility, restricting)
|
reportExposure(EXPOSED_RECEIVER_TYPE, typeReference, memberVisibility, restricting)
|
||||||
|
|||||||
Reference in New Issue
Block a user