From 1d722e01f070f3ae583dbcc66c10aa706a36b8ee Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 3 May 2017 19:04:13 +0300 Subject: [PATCH] Get rid of local version of RemoveModifierFix --- .../RedundantModalityModifierInspection.kt | 4 +- .../RedundantVisibilityModifierInspection.kt | 7 +++- .../idea/inspections/RemoveModifierFix.kt | 40 ------------------- .../redundantAbstract.kt | 2 +- .../redundantAbstract.kt.after | 2 +- .../redundantModalityModifier/simple.kt | 2 +- .../redundantModalityModifier/simple.kt.after | 2 +- .../redundantVisibilityModifier/simple.kt | 2 +- .../simple.kt.after | 2 +- 9 files changed, 14 insertions(+), 49 deletions(-) delete mode 100644 idea/src/org/jetbrains/kotlin/idea/inspections/RemoveModifierFix.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantModalityModifierInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantModalityModifierInspection.kt index 54513ae959e..34596485dfb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantModalityModifierInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantModalityModifierInspection.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.extensions.DeclarationAttributeAltererExtension import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.core.implicitModality +import org.jetbrains.kotlin.idea.quickfix.RemoveModifierFix import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtVisitorVoid @@ -47,7 +48,8 @@ class RedundantModalityModifierInspection : AbstractKotlinInspection(), CleanupL holder.registerProblem(modalityModifier, "Redundant modality modifier", ProblemHighlightType.LIKE_UNUSED_SYMBOL, - RemoveModifierFix("Remove redundant modality modifier")) + IntentionWrapper(RemoveModifierFix(declaration, implicitModality, isRedundant = true), + declaration.containingFile)) } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantVisibilityModifierInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantVisibilityModifierInspection.kt index 39ac3fc0c61..07e6c199426 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantVisibilityModifierInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantVisibilityModifierInspection.kt @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.inspections import com.intellij.codeInspection.* import com.intellij.psi.PsiElementVisitor import org.jetbrains.kotlin.idea.core.implicitVisibility +import org.jetbrains.kotlin.idea.quickfix.RemoveModifierFix import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtVisitorVoid import org.jetbrains.kotlin.psi.psiUtil.visibilityModifier @@ -28,11 +29,13 @@ class RedundantVisibilityModifierInspection : AbstractKotlinInspection(), Cleanu return object : KtVisitorVoid() { override fun visitDeclaration(declaration: KtDeclaration) { val visibilityModifier = declaration.visibilityModifier() ?: return - if (visibilityModifier.node.elementType == declaration.implicitVisibility()) { + val implicitVisibility = declaration.implicitVisibility() + if (visibilityModifier.node.elementType == implicitVisibility) { holder.registerProblem(visibilityModifier, "Redundant visibility modifier", ProblemHighlightType.LIKE_UNUSED_SYMBOL, - RemoveModifierFix("Remove redundant visibility modifier")) + IntentionWrapper(RemoveModifierFix(declaration, implicitVisibility, isRedundant = true), + declaration.containingFile)) } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/RemoveModifierFix.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/RemoveModifierFix.kt deleted file mode 100644 index 28a2e335dc8..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/RemoveModifierFix.kt +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.idea.inspections - -import com.intellij.codeInsight.FileModificationService -import com.intellij.codeInspection.LocalQuickFix -import com.intellij.codeInspection.ProblemDescriptor -import com.intellij.openapi.project.Project -import org.jetbrains.kotlin.lexer.KtModifierKeywordToken -import org.jetbrains.kotlin.psi.KtModifierListOwner -import org.jetbrains.kotlin.psi.addRemoveModifier.removeModifier -import org.jetbrains.kotlin.psi.psiUtil.getParentOfType - -class RemoveModifierFix(val text: String) : LocalQuickFix { - override fun getName(): String = text - - override fun getFamilyName(): String = text - - override fun applyFix(project: Project, descriptor: ProblemDescriptor) { - val modifierKeyword = descriptor.psiElement.node.elementType as KtModifierKeywordToken - val modifierListOwner = descriptor.psiElement.getParentOfType(true) - ?: throw IllegalStateException("Can't find modifier list owner for modifier") - if (!FileModificationService.getInstance().preparePsiElementForWrite(modifierListOwner)) return - removeModifier(modifierListOwner, modifierKeyword) - } -} diff --git a/idea/testData/quickfix/redundantModalityModifier/redundantAbstract.kt b/idea/testData/quickfix/redundantModalityModifier/redundantAbstract.kt index 66f35f96aee..64c1228fc3c 100644 --- a/idea/testData/quickfix/redundantModalityModifier/redundantAbstract.kt +++ b/idea/testData/quickfix/redundantModalityModifier/redundantAbstract.kt @@ -1,4 +1,4 @@ -// "Remove redundant modality modifier" "true" +// "Remove redundant 'abstract' modifier" "true" interface A { abstract fun foo() } \ No newline at end of file diff --git a/idea/testData/quickfix/redundantModalityModifier/redundantAbstract.kt.after b/idea/testData/quickfix/redundantModalityModifier/redundantAbstract.kt.after index 26a140ca1cf..dc9e9ed81e0 100644 --- a/idea/testData/quickfix/redundantModalityModifier/redundantAbstract.kt.after +++ b/idea/testData/quickfix/redundantModalityModifier/redundantAbstract.kt.after @@ -1,4 +1,4 @@ -// "Remove redundant modality modifier" "true" +// "Remove redundant 'abstract' modifier" "true" interface A { fun foo() } \ No newline at end of file diff --git a/idea/testData/quickfix/redundantModalityModifier/simple.kt b/idea/testData/quickfix/redundantModalityModifier/simple.kt index a9d7acbcbbc..a096b56d832 100644 --- a/idea/testData/quickfix/redundantModalityModifier/simple.kt +++ b/idea/testData/quickfix/redundantModalityModifier/simple.kt @@ -1,4 +1,4 @@ -// "Remove redundant modality modifier" "true" +// "Remove redundant 'final' modifier" "true" open class C { final fun foo(){} } \ No newline at end of file diff --git a/idea/testData/quickfix/redundantModalityModifier/simple.kt.after b/idea/testData/quickfix/redundantModalityModifier/simple.kt.after index 64da278dfe2..d3dcb6b00b2 100644 --- a/idea/testData/quickfix/redundantModalityModifier/simple.kt.after +++ b/idea/testData/quickfix/redundantModalityModifier/simple.kt.after @@ -1,4 +1,4 @@ -// "Remove redundant modality modifier" "true" +// "Remove redundant 'final' modifier" "true" open class C { fun foo(){} } \ No newline at end of file diff --git a/idea/testData/quickfix/redundantVisibilityModifier/simple.kt b/idea/testData/quickfix/redundantVisibilityModifier/simple.kt index ba4cdeb5f98..c2d3c8cfe9a 100644 --- a/idea/testData/quickfix/redundantVisibilityModifier/simple.kt +++ b/idea/testData/quickfix/redundantVisibilityModifier/simple.kt @@ -1,3 +1,3 @@ -// "Remove redundant visibility modifier" "true" +// "Remove redundant 'public' modifier" "true" public class C { } diff --git a/idea/testData/quickfix/redundantVisibilityModifier/simple.kt.after b/idea/testData/quickfix/redundantVisibilityModifier/simple.kt.after index 27c1041c890..fa8378a87d2 100644 --- a/idea/testData/quickfix/redundantVisibilityModifier/simple.kt.after +++ b/idea/testData/quickfix/redundantVisibilityModifier/simple.kt.after @@ -1,3 +1,3 @@ -// "Remove redundant visibility modifier" "true" +// "Remove redundant 'public' modifier" "true" class C { }