From a816ff3861f82ac3e3770b4f85f0d813dc994e7f Mon Sep 17 00:00:00 2001 From: "Roman.Ivanov" Date: Wed, 29 Aug 2018 16:11:44 +0700 Subject: [PATCH] SortContentAction: fix EOL comment capturing another elements while codegen --- .../intention/impl/SortContentAction.java | 12 ++++++++++++ .../sortContent/afterStringComments.java | 17 +++++++++++++++++ .../sortContent/beforeStringComments.java | 15 +++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/sortContent/afterStringComments.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/sortContent/beforeStringComments.java diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/SortContentAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/SortContentAction.java index ffb62bbaa9ff..e310b96544f2 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/SortContentAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/SortContentAction.java @@ -7,6 +7,7 @@ import com.intellij.ide.highlighter.JavaFileType; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; +import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; @@ -199,6 +200,17 @@ public class SortContentAction extends PsiElementBaseIntentionAction { handleElementsBeforeSeparator(sb, isLastInList); if (!isLastInList) { sb.append(","); + } else { + // last position, when before separator EOL comments and after separator some element present, we should place \n between then + // to avoid accidental commenting + if (!myBeforeSeparator.isEmpty()) { + PsiComment maybeComment = myBeforeSeparator.get(myBeforeSeparator.size() - 1); + if (maybeComment.getTokenType() == JavaTokenType.END_OF_LINE_COMMENT) { + if (!myAfterSeparator.isEmpty()) { + sb.append("\n"); + } + } + } } boolean newLineSet = false; for (PsiComment comment : myAfterSeparator) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/sortContent/afterStringComments.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/sortContent/afterStringComments.java new file mode 100644 index 000000000000..b3d925dd6b0c --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/sortContent/afterStringComments.java @@ -0,0 +1,17 @@ +// "Sort content" "true" + +public class Test { + static final String[] SPECIFICATIONS = new String[]{ + "1", + "1", + "1..900", + "100", + + + "100+10", + "100+3..999", + "100..999"//simple end comment + //simple end comment + + }; +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/sortContent/beforeStringComments.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/sortContent/beforeStringComments.java new file mode 100644 index 000000000000..3a244df663f2 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/sortContent/beforeStringComments.java @@ -0,0 +1,15 @@ +// "Sort content" "true" + +public class Test { + static final String[] SPECIFICATIONS = new String[]{ + "1", + "100", + "100+10", + "100..999"//simple end comment + , + //simple end comment + "100+3..999", + "1", + "1..900", + }; +} \ No newline at end of file