diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8CollectionsApiInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8CollectionsApiInspection.java index 03772bcdacfb..d861bd7ac5d1 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8CollectionsApiInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8CollectionsApiInspection.java @@ -15,6 +15,7 @@ */ package com.intellij.codeInspection.java18api; +import com.intellij.codeInsight.ExceptionUtil; import com.intellij.codeInsight.FileModificationService; import com.intellij.codeInsight.daemon.QuickFixBundle; import com.intellij.codeInsight.daemon.impl.analysis.HighlightControlFlowUtil; @@ -179,6 +180,7 @@ public class Java8CollectionsApiInspection extends BaseJavaBatchLocalInspectionT !equivalence.expressionsAreEquivalent(value, putArguments[1])) { return; } + if(!ExceptionUtil.getThrownCheckedExceptions(new PsiElement[] {lambdaCandidate}).isEmpty()) return; PsiElement[] varRefs = PsiTreeUtil.collectElements(lambdaCandidate, e -> e instanceof PsiReferenceExpression && ((PsiReferenceExpression)e) .resolve() instanceof PsiVariable); diff --git a/java/java-tests/testData/inspection/java8CollectionsApi/beforeComputeIfAbsentChecked.java b/java/java-tests/testData/inspection/java8CollectionsApi/beforeComputeIfAbsentChecked.java new file mode 100644 index 000000000000..2463a90692fb --- /dev/null +++ b/java/java-tests/testData/inspection/java8CollectionsApi/beforeComputeIfAbsentChecked.java @@ -0,0 +1,21 @@ +// "Replace with 'computeIfAbsent' method call" "false" +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class Main { + static class MyList extends ArrayList { + public MyList() throws Exception { + + } + } + + public void testMap(Map> map, String key, String value) throws Exception { + List list = map.get(key); + if(list == null) { + list = new MyList(); + map.put(key, list); + } + list.add(value); + } +} \ No newline at end of file