diff --git a/java/java-impl/src/com/intellij/codeInspection/streamMigration/JoiningMigration.java b/java/java-impl/src/com/intellij/codeInspection/streamMigration/JoiningMigration.java index 45cc24e9546b..49092469e1da 100644 --- a/java/java-impl/src/com/intellij/codeInspection/streamMigration/JoiningMigration.java +++ b/java/java-impl/src/com/intellij/codeInspection/streamMigration/JoiningMigration.java @@ -519,10 +519,11 @@ public class JoiningMigration extends BaseStreamApiMigration { if (qualifier instanceof PsiMethodCallExpression) { call = (PsiMethodCallExpression)qualifier; } + else if (ExpressionUtils.isReferenceTo(qualifier, target)) { + return new AppendChain(call, topCall); + } else { - if (ExpressionUtils.isReferenceTo(qualifier, target)) { - return new AppendChain(call, topCall); - } + return null; } } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/joining/afterWrongBuilder.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/joining/afterWrongBuilder.java new file mode 100644 index 000000000000..995a556c0b53 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/joining/afterWrongBuilder.java @@ -0,0 +1,11 @@ +import java.util.stream.IntStream; + +// "Replace with forEach" "true" +class X { + private void initBuilder() { + StringBuilder builder = new StringBuilder(); + StringBuilder spaces = new StringBuilder(); + IntStream.range(0, 20).mapToObj(i -> " ").forEach(spaces::append); + builder.append(spaces); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/joining/beforeWrongBuilder.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/joining/beforeWrongBuilder.java new file mode 100644 index 000000000000..44eeb1bbfe98 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/joining/beforeWrongBuilder.java @@ -0,0 +1,11 @@ +// "Replace with forEach" "true" +class X { + private void initBuilder() { + StringBuilder builder = new StringBuilder(); + StringBuilder spaces = new StringBuilder(); + for(int i = 0; i < 20; i++) { + spaces.append(" "); + } + builder.append(spaces); + } +} \ No newline at end of file