Convert RemoveReturnLabelFix from LocalQuickFix to KotlinQuickFixAction

This commit is contained in:
Dmitry Gridin
2020-01-29 15:06:12 +07:00
parent e9dc1e07b9
commit f1bad0c9ae
2 changed files with 18 additions and 8 deletions
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.idea.inspections package org.jetbrains.kotlin.idea.inspections
import com.intellij.codeInspection.IntentionWrapper
import com.intellij.codeInspection.ProblemHighlightType import com.intellij.codeInspection.ProblemHighlightType
import com.intellij.codeInspection.ProblemsHolder import com.intellij.codeInspection.ProblemsHolder
import com.intellij.psi.PsiElementVisitor import com.intellij.psi.PsiElementVisitor
@@ -25,7 +26,7 @@ class RedundantReturnLabelInspection : AbstractKotlinInspection() {
label, label,
"Redundant '@$labelName'", "Redundant '@$labelName'",
ProblemHighlightType.LIKE_UNUSED_SYMBOL, ProblemHighlightType.LIKE_UNUSED_SYMBOL,
RemoveReturnLabelFix(labelName), IntentionWrapper(RemoveReturnLabelFix(returnExpression), returnExpression.containingKtFile),
) )
}, },
) )
@@ -5,16 +5,25 @@
package org.jetbrains.kotlin.idea.quickfix package org.jetbrains.kotlin.idea.quickfix
import com.intellij.codeInspection.LocalQuickFix import com.intellij.openapi.editor.Editor
import com.intellij.codeInspection.ProblemDescriptor
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.diagnostics.Diagnostic
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtReturnExpression
class RemoveReturnLabelFix(private val labelName: String) : LocalQuickFix { class RemoveReturnLabelFix(element: KtReturnExpression) : KotlinQuickFixAction<KtReturnExpression>(element) {
override fun getName() = "Remove redundant '@$labelName'" override fun invoke(project: Project, editor: Editor?, file: KtFile) {
element?.labeledExpression?.delete()
}
override fun getFamilyName() = name override fun getFamilyName(): String = "Remove redundant label"
override fun applyFix(project: Project, descriptor: ProblemDescriptor) { override fun getText(): String = "Remove redundant ${element?.getLabelName()?.let { "'@$it'" } ?: "label"}"
descriptor.psiElement?.delete()
companion object : KotlinSingleIntentionActionFactory() {
override fun createAction(diagnostic: Diagnostic): KotlinQuickFixAction<KtReturnExpression>? {
val returnExpression = diagnostic.psiElement as? KtReturnExpression ?: return null
return RemoveReturnLabelFix(returnExpression)
}
} }
} }