diff --git a/java/structuralsearch-java/src/com/intellij/structuralsearch/JavaReplaceHandler.java b/java/structuralsearch-java/src/com/intellij/structuralsearch/JavaReplaceHandler.java index a664a0f02010..f56949bbb8c4 100644 --- a/java/structuralsearch-java/src/com/intellij/structuralsearch/JavaReplaceHandler.java +++ b/java/structuralsearch-java/src/com/intellij/structuralsearch/JavaReplaceHandler.java @@ -353,6 +353,10 @@ public class JavaReplaceHandler extends StructuralReplaceHandler { if (originalModifierList == null || queryModifierList == null || replacementModifierList == null) { return; } + if (queryModifierList.getTextLength() == 0 && replacementModifierList.getTextLength() == 0) { + replacementModifierList.replace(originalModifierList); + return; + } final List unmatchedAnnotations = originalModifierList.getUserData(GlobalMatchingVisitor.UNMATCHED_ELEMENTS_KEY); final PsiElement anchor = replacementModifierList.getFirstChild(); boolean append = (anchor == null); diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTest.java b/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTest.java index 370a6c747e08..6b09d8546da0 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTest.java +++ b/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTest.java @@ -2767,4 +2767,17 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { "}", replace(in, "'_Instance?.'_MethodCall('_arguments*)", "$Instance$.$MethodCall$($arguments$)", true)); } + + public void testKeepModifierFormatting() { + String in = "@Deprecated\n" + + "public class X {}"; + final String what = "class '_X {}"; + final String replacement = "/** comment */\n" + + "class $X$ {}"; + final String expected = "/** comment */\n" + + "@Deprecated\n" + + "public class X {}"; + assertEquals("keep newline in modifier list", + expected, replace(in, what, replacement, true)); + } } \ No newline at end of file