mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[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:
committed by
intellij-monorepo-bot
parent
84a1e92483
commit
7a44409107
+6
@@ -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()
|
||||
)
|
||||
})
|
||||
|
||||
+5
@@ -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
-1
@@ -1,6 +1,6 @@
|
||||
class Test {
|
||||
var foo: Int = 1
|
||||
<caret>set(value) {
|
||||
set(value)<caret> {
|
||||
bar(field)
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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 }
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
// PROBLEM: none
|
||||
class Test {
|
||||
var foo: Int = 1
|
||||
set(value) <caret>{
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user