[kotlin] Setter backing field should be assigned: fix highlighting range

closes https://github.com/JetBrains/intellij-community/pull/2236

GitOrigin-RevId: 9c0ad1119827c31ce0811c2ceceaa477e3e585af
This commit is contained in:
Toshiaki Kameyama
2022-11-20 10:41:40 +00:00
committed by intellij-monorepo-bot
parent 84a1e92483
commit 7a44409107
5 changed files with 19 additions and 2 deletions
@@ -4,6 +4,7 @@ package org.jetbrains.kotlin.idea.inspections
import com.intellij.codeInspection.*
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiElementVisitor
import com.intellij.psi.PsiWhiteSpace
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
@@ -18,6 +19,8 @@ import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.calls.util.getResolvedCall
import org.jetbrains.kotlin.idea.codeinsight.api.classic.inspections.AbstractKotlinInspection
import org.jetbrains.kotlin.psi.psiUtil.endOffset
import org.jetbrains.kotlin.psi.psiUtil.startOffset
class SetterBackingFieldAssignmentInspection : AbstractKotlinInspection(), CleanupLocalInspectionTool {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor =
@@ -52,10 +55,13 @@ class SetterBackingFieldAssignmentInspection : AbstractKotlinInspection(), Clean
}
}) return
val name = accessor.namePlaceholder
val highlightRange = TextRange(name.startOffset, (accessor.rightParenthesis ?: name).endOffset).shiftLeft(accessor.startOffset)
holder.registerProblem(
accessor,
KotlinBundle.message("existing.backing.field.is.not.assigned.by.the.setter"),
ProblemHighlightType.GENERIC_ERROR_OR_WARNING,
highlightRange,
AssignBackingFieldFix()
)
})
@@ -14306,6 +14306,11 @@ public abstract class LocalInspectionTestGenerated extends AbstractLocalInspecti
runTest("testData/inspectionsLocal/setterBackingFieldAssignment/noBackingField.kt");
}
@TestMetadata("onLeftBrace.kt")
public void testOnLeftBrace() throws Exception {
runTest("testData/inspectionsLocal/setterBackingFieldAssignment/onLeftBrace.kt");
}
@TestMetadata("plusAssign.kt")
public void testPlusAssign() throws Exception {
runTest("testData/inspectionsLocal/setterBackingFieldAssignment/plusAssign.kt");
@@ -1,6 +1,6 @@
class Test {
var foo: Int = 1
<caret>set(value) {
set(value)<caret> {
bar(field)
}
@@ -1,5 +1,5 @@
class Test {
private var str1: String? = null
private var str2: String? = null
set(value) { str1 = value }<caret>
<caret>set(value) { str1 = value }
}
@@ -0,0 +1,6 @@
// PROBLEM: none
class Test {
var foo: Int = 1
set(value) <caret>{
}
}