[java-inspections] SlowAbstractSetRemoveAllInspection: disable warning for CopyOnWriteArraySet qualifier

GitOrigin-RevId: e2d2f76bdf94e61c8dfa2bd874d2d8fd2e613439
This commit is contained in:
Tagir Valeev
2021-10-12 15:20:30 +07:00
committed by intellij-monorepo-bot
parent deb9027cac
commit 99007aee1f
2 changed files with 14 additions and 0 deletions

View File

@@ -17,6 +17,7 @@ import com.siyeh.ig.callMatcher.CallMatcher;
import com.siyeh.ig.psiutils.CommentTracker;
import com.siyeh.ig.psiutils.ExpressionUtils;
import com.siyeh.ig.psiutils.ParenthesesUtils;
import com.siyeh.ig.psiutils.TypeUtils;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
@@ -43,6 +44,9 @@ public class SlowAbstractSetRemoveAllInspection extends AbstractBaseJavaLocalIns
final TypeConstraint constraint = TypeConstraint.fromDfType(CommonDataflow.getDfType(arg));
final PsiType type = constraint.getPsiType(holder.getProject());
if (!InheritanceUtil.isInheritor(type, CommonClassNames.JAVA_UTIL_LIST)) return;
final TypeConstraint qualifierConstraint = TypeConstraint.fromDfType(CommonDataflow.getDfType(qualifier));
final PsiType qualifierType = qualifierConstraint.getPsiType(holder.getProject());
if (InheritanceUtil.isInheritor(qualifierType, "java.util.concurrent.CopyOnWriteArraySet")) return;
final LongRangeSet setSizeRange = getSizeRangeOfCollection(qualifier);
if (setSizeRange.isEmpty() || setSizeRange.max() <= 1) return;
final LongRangeSet listSizeRange = getSizeRangeOfCollection(arg);

View File

@@ -0,0 +1,10 @@
// "Fix all 'Call to 'set.removeAll(list)' may work slowly' problems in file" "false"
import java.util.*;
import java.util.concurrent.*;
class Test {
void foo(CopyOnWriteArraySet<Integer> source, List<Integer> removals) {
source.removeAll<caret>(removals);
}
}