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.DeclarationDescriptorWithVisibility
|
||||||
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
||||||
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.isInheritable
|
||||||
import org.jetbrains.kotlin.idea.core.isOverridable
|
import org.jetbrains.kotlin.idea.core.isOverridable
|
||||||
import org.jetbrains.kotlin.idea.core.toDescriptor
|
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.quickfix.AddModifierFix
|
||||||
import org.jetbrains.kotlin.idea.refactoring.isConstructorDeclaredProperty
|
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.isCheapEnoughToSearchConsideringOperators
|
||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.dataClassComponentFunction
|
import org.jetbrains.kotlin.idea.search.usagesSearch.dataClassComponentFunction
|
||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
|
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.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
|
||||||
|
|
||||||
class MemberVisibilityCanBePrivateInspection : AbstractKotlinInspection() {
|
class MemberVisibilityCanBePrivateInspection : AbstractKotlinInspection() {
|
||||||
|
|
||||||
@@ -126,10 +124,9 @@ class MemberVisibilityCanBePrivateInspection : AbstractKotlinInspection() {
|
|||||||
}
|
}
|
||||||
val classOrObjectDescriptor = classOrObject.descriptor as? ClassDescriptor
|
val classOrObjectDescriptor = classOrObject.descriptor as? ClassDescriptor
|
||||||
if (classOrObjectDescriptor != null) {
|
if (classOrObjectDescriptor != null) {
|
||||||
val receiver = usage.getStrictParentOfType<KtQualifiedExpression>()?.receiverExpression
|
val receiverType = (usage as? KtElement)?.resolveToCall()?.dispatchReceiver?.type
|
||||||
val receiverDescriptor = (receiver?.getCallableDescriptor()?.returnType?.constructor?.declarationDescriptor
|
val receiverDescriptor = receiverType?.constructor?.declarationDescriptor
|
||||||
?: (receiver?.mainReference?.resolve() as? KtClassOrObject)?.descriptor) as? ClassDescriptor
|
if (receiverDescriptor != null && receiverDescriptor != classOrObjectDescriptor) {
|
||||||
if (receiverDescriptor != null && DescriptorUtils.isSubclass(receiverDescriptor, classOrObjectDescriptor)) {
|
|
||||||
otherUsageFound = true
|
otherUsageFound = true
|
||||||
return@Processor false
|
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");
|
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")
|
@TestMetadata("subClassFunctionCall.kt")
|
||||||
public void testSubClassFunctionCall() throws Exception {
|
public void testSubClassFunctionCall() throws Exception {
|
||||||
runTest("idea/testData/inspectionsLocal/memberVisibilityCanBePrivate/subClassFunctionCall.kt");
|
runTest("idea/testData/inspectionsLocal/memberVisibilityCanBePrivate/subClassFunctionCall.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user