diff --git a/java/java-impl/src/com/intellij/codeInspection/streamMigration/CollectMigration.java b/java/java-impl/src/com/intellij/codeInspection/streamMigration/CollectMigration.java index 28640e98021a..8bfc03f438a8 100644 --- a/java/java-impl/src/com/intellij/codeInspection/streamMigration/CollectMigration.java +++ b/java/java-impl/src/com/intellij/codeInspection/streamMigration/CollectMigration.java @@ -618,6 +618,15 @@ class CollectMigration extends BaseStreamApiMigration { String name = usage.getMethodExpression().getReferenceName(); if (usageArgs.length == 0 && ("toString".equals(name) || "length".equals(name))) return true; } + PsiElement parent = PsiUtil.skipParenthesizedExprUp(element.getParent()); + if (parent instanceof PsiPolyadicExpression && + ((PsiPolyadicExpression)parent).getOperationTokenType().equals(JavaTokenType.PLUS)) { + return true; + } + if (parent instanceof PsiAssignmentExpression && + ((PsiAssignmentExpression)parent).getOperationTokenType().equals(JavaTokenType.PLUSEQ)) { + return true; + } } return false; })) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterJoiningConcat.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterJoiningConcat.java new file mode 100644 index 000000000000..53adb94d8a7a --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterJoiningConcat.java @@ -0,0 +1,16 @@ +// "Replace with collect" "true" + +import java.util.List; +import java.util.stream.Collectors; + +public class Test { + static String test(List list) { + String sb; + System.out.println("hello"); + sb = list.stream().filter(s -> !s.isEmpty()).map(String::trim).collect(Collectors.joining()); + String s = "Result: "; + s += sb; + System.out.println(s); + return "[" + sb + "]"; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeJoiningConcat.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeJoiningConcat.java new file mode 100644 index 000000000000..78067630f892 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeJoiningConcat.java @@ -0,0 +1,19 @@ +// "Replace with collect" "true" + +import java.util.List; + +public class Test { + static String test(List list) { + StringBuilder sb = new StringBuilder(); + System.out.println("hello"); + for(String s : list) { + if(!s.isEmpty()) { + sb.append(s.trim()); + } + } + String s = "Result: "; + s += sb; + System.out.println(s); + return "[" + sb + "]"; + } +} \ No newline at end of file