From 56e57c41798a433747c459bc6043561ab46ac048 Mon Sep 17 00:00:00 2001 From: Andrey Cherkasov Date: Tue, 11 Apr 2023 19:21:42 +0400 Subject: [PATCH] [java-intentions] ModifierFix: Avoid adding modifier on separate line if modifier list consists of annotations only IJ-CR-102194 GitOrigin-RevId: 50d4f16ee583d75be79f8c77126a5d20944bddef --- .../codeInsight/daemon/impl/quickfix/ModifierFix.java | 6 ++++++ .../MakeFinalMultiLineModifierList.java | 6 ++++++ .../MakeFinalMultiLineModifierList_after.java | 6 ++++++ .../lightServiceMustBeFinal/MakeFinal_after.java | 3 +-- .../inspections/LightServiceMustBeFinalInspectionTest.kt | 6 +++--- 5 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 plugins/devkit/devkit-java-tests/testData/inspections/lightServiceMustBeFinal/MakeFinalMultiLineModifierList.java create mode 100644 plugins/devkit/devkit-java-tests/testData/inspections/lightServiceMustBeFinal/MakeFinalMultiLineModifierList_after.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java index 54c630b9db5a..118e107cc5e6 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java @@ -157,7 +157,13 @@ public class ModifierFix extends LocalQuickFixAndIntentionActionOnPsiElement imp private void changeModifierList (@NotNull PsiModifierList modifierList) { try { + boolean needRemoveWhiteSpace = modifierList.getLastChild() instanceof PsiAnnotation && + modifierList.getNextSibling() instanceof PsiWhiteSpace && + myShouldHave; modifierList.setModifierProperty(myModifier, myShouldHave); + if (needRemoveWhiteSpace) { + modifierList.getNextSibling().delete(); + } } catch (IncorrectOperationException e) { LOG.error(e); diff --git a/plugins/devkit/devkit-java-tests/testData/inspections/lightServiceMustBeFinal/MakeFinalMultiLineModifierList.java b/plugins/devkit/devkit-java-tests/testData/inspections/lightServiceMustBeFinal/MakeFinalMultiLineModifierList.java new file mode 100644 index 000000000000..d27c6cf76d3a --- /dev/null +++ b/plugins/devkit/devkit-java-tests/testData/inspections/lightServiceMustBeFinal/MakeFinalMultiLineModifierList.java @@ -0,0 +1,6 @@ +import com.intellij.openapi.components.Service; + +@Service +strictfp +class MyService { +} diff --git a/plugins/devkit/devkit-java-tests/testData/inspections/lightServiceMustBeFinal/MakeFinalMultiLineModifierList_after.java b/plugins/devkit/devkit-java-tests/testData/inspections/lightServiceMustBeFinal/MakeFinalMultiLineModifierList_after.java new file mode 100644 index 000000000000..a952dc90a5fd --- /dev/null +++ b/plugins/devkit/devkit-java-tests/testData/inspections/lightServiceMustBeFinal/MakeFinalMultiLineModifierList_after.java @@ -0,0 +1,6 @@ +import com.intellij.openapi.components.Service; + +@Service +final strictfp +class MyService { +} diff --git a/plugins/devkit/devkit-java-tests/testData/inspections/lightServiceMustBeFinal/MakeFinal_after.java b/plugins/devkit/devkit-java-tests/testData/inspections/lightServiceMustBeFinal/MakeFinal_after.java index 1193b11f2739..c1ed39cfd480 100644 --- a/plugins/devkit/devkit-java-tests/testData/inspections/lightServiceMustBeFinal/MakeFinal_after.java +++ b/plugins/devkit/devkit-java-tests/testData/inspections/lightServiceMustBeFinal/MakeFinal_after.java @@ -1,6 +1,5 @@ import com.intellij.openapi.components.Service; @Service -final -class MyService { +final class MyService { } diff --git a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/inspections/LightServiceMustBeFinalInspectionTest.kt b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/inspections/LightServiceMustBeFinalInspectionTest.kt index 701ee7cc7524..4e998aa1f2be 100644 --- a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/inspections/LightServiceMustBeFinalInspectionTest.kt +++ b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/inspections/LightServiceMustBeFinalInspectionTest.kt @@ -14,7 +14,7 @@ internal class LightServiceMustBeFinalInspectionTest : LightServiceMustBeFinalIn override fun getFileExtension() = "java" - fun testMakeFinal() { - doTest(MAKE_FINAL_FIX_NAME) - } + fun testMakeFinal() { doTest(MAKE_FINAL_FIX_NAME) } + + fun testMakeFinalMultiLineModifierList() { doTest(MAKE_FINAL_FIX_NAME) } }