diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8MapForEachInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8MapForEachInspection.java index 45c2e2cf6331..8ab9270a165c 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8MapForEachInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8MapForEachInspection.java @@ -73,7 +73,7 @@ public class Java8MapForEachInspection extends AbstractBaseJavaLocalInspectionTo return ReferencesSearch.search(entry).allMatch(entryRef -> { PsiMethodCallExpression entryCall = ExpressionUtils.getCallForQualifier(ObjectUtils.tryCast(entryRef.getElement(), PsiExpression.class)); - return ENTRY_GETTER.test(entryCall); + return ENTRY_GETTER.test(entryCall) && !ExpressionUtils.isVoidContext(entryCall); }); } @@ -164,7 +164,7 @@ public class Java8MapForEachInspection extends AbstractBaseJavaLocalInspectionTo if (!expression.isValid()) continue; PsiMethodCallExpression entryCall = ExpressionUtils.getCallForQualifier(expression); if (ENTRY_GETTER.test(entryCall)) { - ct.replace(entryCall, factory.createIdentifier(ParameterCandidate.select(entryCall, key, value).myName)); + ct.replace(entryCall, ParameterCandidate.select(entryCall, key, value).myName); } } String lambdaBody; diff --git a/java/java-tests/testData/inspection/java8MapForEach/afterForEach.java b/java/java-tests/testData/inspection/java8MapForEach/afterForEach.java index e39054a01d4b..13cb089d6da9 100644 --- a/java/java-tests/testData/inspection/java8MapForEach/afterForEach.java +++ b/java/java-tests/testData/inspection/java8MapForEach/afterForEach.java @@ -92,4 +92,11 @@ public class Test { //long comment }); } + + void expressionStatement(Map map) { + for (Map.Entry entry : map.entrySet()) { + String value = entry.getValue(); + entry.getValue(); + } + } } diff --git a/java/java-tests/testData/inspection/java8MapForEach/beforeForEach.java b/java/java-tests/testData/inspection/java8MapForEach/beforeForEach.java index 17a708293235..7b783172ded1 100644 --- a/java/java-tests/testData/inspection/java8MapForEach/beforeForEach.java +++ b/java/java-tests/testData/inspection/java8MapForEach/beforeForEach.java @@ -114,4 +114,11 @@ public class Test { //long comment } } + + void expressionStatement(Map map) { + for (Map.Entry entry : map.entrySet()) { + String value = entry.getValue(); + entry.getValue(); + } + } }