diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/lists/AbstractJavaJoinListAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/lists/AbstractJavaJoinListAction.java index 9707a3cbe18c..d5ec1fd13fa2 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/lists/AbstractJavaJoinListAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/lists/AbstractJavaJoinListAction.java @@ -1,10 +1,14 @@ // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.codeInsight.intention.impl.lists; +import com.intellij.psi.JavaTokenType; +import com.intellij.psi.PsiComment; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + public abstract class AbstractJavaJoinListAction extends AbstractJoinListAction { @Override @Nullable @@ -17,4 +21,15 @@ public abstract class AbstractJavaJoinListAction elements) { + PsiElement parent = elements.get(0).getParent(); + for (PsiElement child : parent.getChildren()) { + if (child instanceof PsiComment && ((PsiComment)child).getTokenType() == JavaTokenType.END_OF_LINE_COMMENT) { + return false; + } + } + return true; + } } diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/lists/AbstractJoinListAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/lists/AbstractJoinListAction.java index 7339a0dbab91..1fdc6ed8eba8 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/lists/AbstractJoinListAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/lists/AbstractJoinListAction.java @@ -41,7 +41,7 @@ public abstract class AbstractJoinListAction elements = getElements(list); if (elements == null) return null; if (elements.size() < minElementCount()) return null; + if (!canJoin(elements)) return null; WhitespacesInfo whitespacesInfo = collectBreakWhitespaces(elements); if (whitespacesInfo == null) return null; return new Context<>(whitespacesInfo, list); @@ -82,6 +83,10 @@ public abstract class AbstractJoinListAction elements) { + return true; + } + private WhitespacesInfo collectBreakWhitespaces(List elements) { List breaks = new ArrayList<>(); PsiElement beforeFirst = null; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/lists/joinArguments/beforeAllOnSeparateLinesComment.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/lists/joinArguments/beforeAllOnSeparateLinesComment.java new file mode 100644 index 000000000000..cd5f2727f5b7 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/lists/joinArguments/beforeAllOnSeparateLinesComment.java @@ -0,0 +1,11 @@ +// "Put arguments on one line" "false" + +class A { + void foo(int a1, int a2, int a3) { + foo( + 12, // 12 + 23, + 4 + ); + } +} \ No newline at end of file