Do not report "can be private" on expect or actual declarations

So #KT-24374 Fixed
So #KT-24537 Fixed
This commit is contained in:
Mikhail Glukhikh
2018-06-06 14:45:46 +03:00
parent 11acea51b7
commit d1155070a7
2 changed files with 14 additions and 4 deletions
@@ -39,12 +39,11 @@ import org.jetbrains.kotlin.idea.refactoring.isConstructorDeclaredProperty
import org.jetbrains.kotlin.idea.search.isCheapEnoughToSearchConsideringOperators
import org.jetbrains.kotlin.idea.search.usagesSearch.dataClassComponentFunction
import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope
import org.jetbrains.kotlin.idea.util.isEffectivelyActual
import org.jetbrains.kotlin.idea.util.isExpectDeclaration
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
import org.jetbrains.kotlin.psi.psiUtil.isPrivate
import org.jetbrains.kotlin.psi.psiUtil.visibilityModifier
import org.jetbrains.kotlin.psi.psiUtil.*
import org.jetbrains.kotlin.resolve.jvm.annotations.hasJvmFieldAnnotation
class MemberVisibilityCanBePrivateInspection : AbstractKotlinInspection() {
@@ -76,6 +75,7 @@ class MemberVisibilityCanBePrivateInspection : AbstractKotlinInspection() {
private fun canBePrivate(declaration: KtNamedDeclaration): Boolean {
if (declaration.hasModifier(KtTokens.PRIVATE_KEYWORD) || declaration.hasModifier(KtTokens.OVERRIDE_KEYWORD)) return false
if (declaration.hasActualModifier() || declaration.isExpectDeclaration()) return false
val descriptor = (declaration.toDescriptor() as? DeclarationDescriptorWithVisibility) ?: return false
when (descriptor.effectiveVisibility()) {
@@ -209,3 +209,13 @@ fun withLocal(): Int {
class Math {
@test.anno.EntryPoint fun fact(n: Int) = if (n < 2) 1 else n * fact(n - 1)
}
expect class Expect {
fun foo()
val bar: Int
}
actual class Actual {
actual fun foo() {}
actual val bar = 42
}