UnnecessaryVariableInspection: don't report for overriding property

#KT-39263 Fixed
This commit is contained in:
Toshiaki Kameyama
2020-06-09 23:31:03 +09:00
committed by Ilya Kirillov
parent c29dbee65e
commit 122bba9102
3 changed files with 24 additions and 0 deletions
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
import org.jetbrains.kotlin.idea.core.NewDeclarationNameValidator
import org.jetbrains.kotlin.idea.refactoring.inline.KotlinInlineValHandler
import org.jetbrains.kotlin.idea.util.nameIdentifierTextRangeInThis
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getNextSiblingIgnoringWhitespaceAndComments
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
@@ -66,6 +67,7 @@ class UnnecessaryVariableInspection : AbstractApplicabilityBasedInspection<KtPro
}
private fun statusFor(property: KtProperty): Status? {
if (property.hasModifier(KtTokens.OVERRIDE_KEYWORD)) return null
val enclosingElement = KtPsiUtil.getEnclosingElementForLocalDeclaration(property) ?: return null
val initializer = property.initializer ?: return null
@@ -0,0 +1,17 @@
// PROBLEM: none
abstract class Foo {
abstract val bar: Int
abstract fun baz()
}
fun println(i: Int) {}
fun test() {
val i = 1
object : Foo() {
override val <caret>bar = i
override fun baz() {
println(bar)
}
}
}
@@ -13680,6 +13680,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest {
runTest("idea/testData/inspectionsLocal/unnecessaryVariable/it.kt");
}
@TestMetadata("override.kt")
public void testOverride() throws Exception {
runTest("idea/testData/inspectionsLocal/unnecessaryVariable/override.kt");
}
@TestMetadata("paramCopy.kt")
public void testParamCopy() throws Exception {
runTest("idea/testData/inspectionsLocal/unnecessaryVariable/paramCopy.kt");