mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
HardcodedContracts: support Deque#getFirst, getLast; Queue#element
Fixes IDEA-223629 'Method invocation may produce NullPointerException' false positive for ArrayDeque.pollFirst() GitOrigin-RevId: e1284cb51c0a1f5a12683a57c58b085de6e5b705
This commit is contained in:
committed by
intellij-monorepo-bot
parent
692d4b2d94
commit
4ba3bce5f4
+4
-1
@@ -109,7 +109,10 @@ public class HardcodedContracts {
|
||||
ContractValue.qualifier().specialField(SpecialField.COLLECTION_SIZE), RelationType.EQ, ContractValue.zero(), returnFalse())))
|
||||
.register(instanceCall(JAVA_UTIL_LIST, "get").parameterTypes("int"),
|
||||
ContractProvider.of(specialFieldRangeContract(0, RelationType.LT, SpecialField.COLLECTION_SIZE)))
|
||||
.register(instanceCall("java.util.SortedSet", "first", "last").parameterCount(0),
|
||||
.register(anyOf(
|
||||
instanceCall("java.util.SortedSet", "first", "last").parameterCount(0),
|
||||
instanceCall("java.util.Deque", "getFirst", "getLast").parameterCount(0),
|
||||
instanceCall("java.util.Queue", "element").parameterCount(0)),
|
||||
ContractProvider.of(singleConditionContract(
|
||||
ContractValue.qualifier().specialField(SpecialField.COLLECTION_SIZE), RelationType.EQ,
|
||||
ContractValue.zero(), fail())))
|
||||
|
||||
@@ -26,4 +26,11 @@ class ThisAsVariable {
|
||||
void notCheck(Queue<String> queue) {
|
||||
System.out.println(queue.peek().<warning descr="Method invocation 'trim' may produce 'NullPointerException'">trim</warning>());
|
||||
}
|
||||
|
||||
void checkGetFirstPollFirst(Deque<String> queue) {
|
||||
if ("bar".equals(queue.getFirst())) {
|
||||
String first = queue.pollFirst();
|
||||
System.out.println(first.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user