"Make private" intention: fix some false positive cases

This commit is contained in:
Toshiaki Kameyama
2018-09-28 13:17:05 +03:00
committed by Mikhail Glukhikh
parent 7488056249
commit 061aa63a73
10 changed files with 88 additions and 5 deletions
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
import org.jetbrains.kotlin.idea.util.hasJvmFieldAnnotation
import org.jetbrains.kotlin.idea.util.isExpectDeclaration
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.Name
@@ -282,6 +283,17 @@ fun KtModifierListOwner.canBePrivate(): Boolean {
if (modifierList?.hasModifier(KtTokens.ABSTRACT_KEYWORD) == true) return false
if (this.isAnnotationClassPrimaryConstructor()) return false
if (this is KtProperty && this.hasJvmFieldAnnotation()) return false
if (this is KtDeclaration) {
if (hasActualModifier() || isExpectDeclaration()) return false
val containingClassOrObject = containingClassOrObject ?: return true
if (containingClassOrObject is KtClass &&
(containingClassOrObject.isInterface() || containingClassOrObject.isAnnotation())
) {
return false
}
}
return true
}