diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/StreamApiMigrationInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/StreamApiMigrationInspection.java index 297913eebce0..e066685dc5db 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/StreamApiMigrationInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/StreamApiMigrationInspection.java @@ -256,7 +256,10 @@ public class StreamApiMigrationInspection extends BaseJavaBatchLocalInspectionTo final PsiIfStatement ifStmt = extractIfStatement(body); String foreEachText = wrapInBlock(body); - String iterated = iteratedValue.getText(); + String iterated = iteratedValue instanceof PsiCallExpression || + iteratedValue instanceof PsiReferenceExpression || + iteratedValue instanceof PsiQualifiedExpression || + iteratedValue instanceof PsiParenthesizedExpression ? iteratedValue.getText() : "(" + iteratedValue.getText() + ")"; if (ifStmt != null) { final PsiExpression condition = ifStmt.getCondition(); if (condition != null) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCastInIterValue.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCastInIterValue.java new file mode 100644 index 000000000000..e6a5527f716c --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCastInIterValue.java @@ -0,0 +1,11 @@ +// "Replace with forEach" "true" +import java.util.ArrayList; +import java.util.List; + +class Sample { + List foo = new ArrayList<>(); + String foo(){ + ((List) foo).stream().filter(s -> s == null).forEach(System.out::println); + return null; + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCastInIterValue.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCastInIterValue.java new file mode 100644 index 000000000000..12a4d0e03215 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCastInIterValue.java @@ -0,0 +1,15 @@ +// "Replace with forEach" "true" +import java.util.ArrayList; +import java.util.List; + +class Sample { + List foo = new ArrayList<>(); + String foo(){ + for (String s : (List)foo) { + if (s == null) { + System.out.println(s); + } + } + return null; + } +}