Minor: report "redundant override" only on 'override fun'

Related to KT-19428
This commit is contained in:
Mikhail Glukhikh
2017-08-18 12:22:22 +03:00
parent 806aa7d4c1
commit 2b90a67bc1
@@ -18,17 +18,22 @@ package org.jetbrains.kotlin.idea.inspections
import com.intellij.codeInspection.* import com.intellij.codeInspection.*
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.openapi.util.TextRange
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.endOffset
import org.jetbrains.kotlin.psi.psiUtil.getCallNameExpression import org.jetbrains.kotlin.psi.psiUtil.getCallNameExpression
import org.jetbrains.kotlin.psi.psiUtil.startOffset
class KotlinRedundantOverrideInspection : AbstractKotlinInspection(), CleanupLocalInspectionTool { class KotlinRedundantOverrideInspection : AbstractKotlinInspection(), CleanupLocalInspectionTool {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession) = override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession) =
object : KtVisitorVoid() { object : KtVisitorVoid() {
override fun visitNamedFunction(function: KtNamedFunction) { override fun visitNamedFunction(function: KtNamedFunction) {
super.visitNamedFunction(function) super.visitNamedFunction(function)
if (!function.hasModifier(KtTokens.OVERRIDE_KEYWORD)) return val funKeyword = function.funKeyword ?: return
if (MODIFIER_EXCLUDE_OVERRIDE.any { function.hasModifier(it) }) return val modifierList = function.modifierList ?: return
if (!modifierList.hasModifier(KtTokens.OVERRIDE_KEYWORD)) return
if (MODIFIER_EXCLUDE_OVERRIDE.any { modifierList.hasModifier(it) }) return
if (function.annotationEntries.isNotEmpty()) return if (function.annotationEntries.isNotEmpty()) return
val bodyExpression = function.bodyExpression ?: return val bodyExpression = function.bodyExpression ?: return
@@ -55,10 +60,15 @@ class KotlinRedundantOverrideInspection : AbstractKotlinInspection(), CleanupLoc
if (!isSameFunctionName(superCallElement, function)) return if (!isSameFunctionName(superCallElement, function)) return
if (!isSameArguments(superCallElement, function)) return if (!isSameArguments(superCallElement, function)) return
holder.registerProblem(function, val descriptor = holder.manager.createProblemDescriptor(
"Redundant override", function,
ProblemHighlightType.LIKE_UNUSED_SYMBOL, TextRange(modifierList.startOffsetInParent, funKeyword.endOffset - function.startOffset),
RedundantOverrideFix()) "Redundant override",
ProblemHighlightType.LIKE_UNUSED_SYMBOL,
isOnTheFly,
RedundantOverrideFix()
)
holder.registerProblem(descriptor)
} }
} }
@@ -77,7 +87,7 @@ class KotlinRedundantOverrideInspection : AbstractKotlinInspection(), CleanupLoc
} }
private class RedundantOverrideFix : LocalQuickFix { private class RedundantOverrideFix : LocalQuickFix {
override fun getName() = "Remove redundant overrides" override fun getName() = "Remove redundant override"
override fun getFamilyName() = name override fun getFamilyName() = name
override fun applyFix(project: Project, descriptor: ProblemDescriptor) { override fun applyFix(project: Project, descriptor: ProblemDescriptor) {