diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/inliner/StreamChainInliner.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/inliner/StreamChainInliner.java index eec017f8529f..ee65cfc12cfd 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/inliner/StreamChainInliner.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/inliner/StreamChainInliner.java @@ -697,7 +697,7 @@ public class StreamChainInliner implements CallInliner { .end(); } // Actual addition of Map element is unnecessary for current analysis - builder.pop(); + builder.flush(SpecialField.COLLECTION_SIZE.createValue(builder.getFactory(), myResult)).pop(); } } diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/StreamToMapInlining2.java b/java/java-tests/testData/inspection/dataFlow/fixture/StreamToMapInlining2.java new file mode 100644 index 000000000000..91958f9be9f9 --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/StreamToMapInlining2.java @@ -0,0 +1,25 @@ +import java.util.*; +import java.util.stream.*; + +class Test { + // IDEA-246544 + public static void main(String[] args) { + List decimals = new ArrayList<>(Arrays.asList(1.2f, 4.4f, 2.7f, 2.5f)); + HashMap> decimalsGroupedByTheirIntegerParts = decimals.stream().collect(Collectors.toMap( + Float::intValue, + Collections::singletonList, + (subgroup1, subgroup2) -> Stream.concat(subgroup1.stream(), subgroup2.stream()).collect(Collectors.toList()), + () -> new HashMap<>() + )); + if (decimalsGroupedByTheirIntegerParts.isEmpty()) {} + + decimals.clear(); + HashMap> decimalsGroupedByTheirIntegerParts2 = decimals.stream().collect(Collectors.toMap( + Float::intValue, + Collections::singletonList, + (subgroup1, subgroup2) -> Stream.concat(subgroup1.stream(), subgroup2.stream()).collect(Collectors.toList()), + () -> new HashMap<>() + )); + if (decimalsGroupedByTheirIntegerParts2.isEmpty()) {} + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspection8Test.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspection8Test.java index 6a20e38b98ae..14d02c868820 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspection8Test.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspection8Test.java @@ -187,6 +187,7 @@ public class DataFlowInspection8Test extends DataFlowInspectionTestCase { public void testStreamInlining() { doTest(); } public void testStreamCollectorInlining() { doTest(); } public void testStreamToMapInlining() { doTest(); } + public void testStreamToMapInlining2() { doTest(); } public void testStreamToCollectionInlining() { doTest(); } public void testStreamComparatorInlining() { doTest(); } public void testStreamKnownSource() { doTest(); }