Don't report 'protected in final' for implicitly protected
So #KT-16339 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
f13997750f
commit
8fb818fc74
@@ -20,6 +20,7 @@ import com.intellij.codeInsight.FileModificationService
|
|||||||
import com.intellij.codeInspection.*
|
import com.intellij.codeInspection.*
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.psi.PsiElementVisitor
|
import com.intellij.psi.PsiElementVisitor
|
||||||
|
import org.jetbrains.kotlin.idea.core.implicitVisibility
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.psi.KtClass
|
import org.jetbrains.kotlin.psi.KtClass
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
@@ -38,7 +39,8 @@ class ProtectedInFinalInspection : AbstractKotlinInspection() {
|
|||||||
val modifierType = visibilityModifier.node?.elementType
|
val modifierType = visibilityModifier.node?.elementType
|
||||||
if (modifierType == KtTokens.PROTECTED_KEYWORD) {
|
if (modifierType == KtTokens.PROTECTED_KEYWORD) {
|
||||||
val parentClass = declaration.getParentOfType<KtClass>(true) ?: return
|
val parentClass = declaration.getParentOfType<KtClass>(true) ?: return
|
||||||
if (!parentClass.isInheritable() && !parentClass.isEnum()) {
|
if (!parentClass.isInheritable() && !parentClass.isEnum() &&
|
||||||
|
declaration.implicitVisibility() != KtTokens.PROTECTED_KEYWORD) {
|
||||||
holder.registerProblem(visibilityModifier,
|
holder.registerProblem(visibilityModifier,
|
||||||
"'protected' visibility is effectively 'private' in a final class",
|
"'protected' visibility is effectively 'private' in a final class",
|
||||||
ProblemHighlightType.WEAK_WARNING,
|
ProblemHighlightType.WEAK_WARNING,
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
open class Test {
|
||||||
|
open protected fun test() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Subclass : Test() {
|
||||||
|
protected override fun test() {
|
||||||
|
super.test()
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user