Can be private: simplification
Related to KT-22030
This commit is contained in:
+4
-7
@@ -32,13 +32,12 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithVisibility
|
||||
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
||||
import org.jetbrains.kotlin.descriptors.effectiveVisibility
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
|
||||
import org.jetbrains.kotlin.idea.core.isInheritable
|
||||
import org.jetbrains.kotlin.idea.core.isOverridable
|
||||
import org.jetbrains.kotlin.idea.core.toDescriptor
|
||||
import org.jetbrains.kotlin.idea.intentions.getCallableDescriptor
|
||||
import org.jetbrains.kotlin.idea.quickfix.AddModifierFix
|
||||
import org.jetbrains.kotlin.idea.refactoring.isConstructorDeclaredProperty
|
||||
import org.jetbrains.kotlin.idea.references.mainReference
|
||||
import org.jetbrains.kotlin.idea.search.isCheapEnoughToSearchConsideringOperators
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.dataClassComponentFunction
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
|
||||
@@ -47,7 +46,6 @@ import org.jetbrains.kotlin.idea.util.isExpectDeclaration
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
|
||||
class MemberVisibilityCanBePrivateInspection : AbstractKotlinInspection() {
|
||||
|
||||
@@ -126,10 +124,9 @@ class MemberVisibilityCanBePrivateInspection : AbstractKotlinInspection() {
|
||||
}
|
||||
val classOrObjectDescriptor = classOrObject.descriptor as? ClassDescriptor
|
||||
if (classOrObjectDescriptor != null) {
|
||||
val receiver = usage.getStrictParentOfType<KtQualifiedExpression>()?.receiverExpression
|
||||
val receiverDescriptor = (receiver?.getCallableDescriptor()?.returnType?.constructor?.declarationDescriptor
|
||||
?: (receiver?.mainReference?.resolve() as? KtClassOrObject)?.descriptor) as? ClassDescriptor
|
||||
if (receiverDescriptor != null && DescriptorUtils.isSubclass(receiverDescriptor, classOrObjectDescriptor)) {
|
||||
val receiverType = (usage as? KtElement)?.resolveToCall()?.dispatchReceiver?.type
|
||||
val receiverDescriptor = receiverType?.constructor?.declarationDescriptor
|
||||
if (receiverDescriptor != null && receiverDescriptor != classOrObjectDescriptor) {
|
||||
otherUsageFound = true
|
||||
return@Processor false
|
||||
}
|
||||
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
open class A {
|
||||
<caret>internal fun foo() {}
|
||||
|
||||
fun bar(a: A) {
|
||||
a.foo()
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
open class A {
|
||||
private fun foo() {}
|
||||
|
||||
fun bar(a: A) {
|
||||
a.foo()
|
||||
}
|
||||
}
|
||||
+5
@@ -2549,6 +2549,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest {
|
||||
runTest("idea/testData/inspectionsLocal/memberVisibilityCanBePrivate/JvmFieldOnProperty.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("sameClassFunctionCall.kt")
|
||||
public void testSameClassFunctionCall() throws Exception {
|
||||
runTest("idea/testData/inspectionsLocal/memberVisibilityCanBePrivate/sameClassFunctionCall.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("subClassFunctionCall.kt")
|
||||
public void testSubClassFunctionCall() throws Exception {
|
||||
runTest("idea/testData/inspectionsLocal/memberVisibilityCanBePrivate/subClassFunctionCall.kt");
|
||||
|
||||
Reference in New Issue
Block a user