Java: Add WithoutElement model for List.clear and add appropriate test.

This commit is contained in:
Michael Nebel
2023-06-23 14:43:29 +02:00
parent 21ec83a197
commit 0604a85bb1
2 changed files with 11 additions and 1 deletions

View File

@@ -159,6 +159,7 @@ extensions:
- ["java.util", "List", True, "set", "(int,Object)", "", "Argument[this].Element", "ReturnValue", "value", "manual"]
- ["java.util", "List", True, "set", "(int,Object)", "", "Argument[1]", "Argument[this].Element", "value", "manual"]
- ["java.util", "List", True, "subList", "", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"]
- ["java.util", "List", True, "clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"]
- ["java.util", "ListIterator", True, "add", "(Object)", "", "Argument[0]", "Argument[this].Element", "value", "manual"]
- ["java.util", "ListIterator", True, "previous", "", "", "Argument[this].Element", "ReturnValue", "value", "manual"]
- ["java.util", "ListIterator", True, "set", "(Object)", "", "Argument[0]", "Argument[this].Element", "value", "manual"]
@@ -424,7 +425,6 @@ extensions:
# When `WithoutElement` is implemented, these should be changed to summary models of the form `Argument[this].WithoutElement -> Argument[this]`.
- ["java.util", "Collection", "removeIf", "(Predicate)", "summary", "manual"]
- ["java.util", "Iterator", "remove", "()", "summary", "manual"]
- ["java.util", "List", "clear", "()", "summary", "manual"]
- ["java.util", "List", "remove", "(Object)", "summary", "manual"]
- ["java.util", "Map", "clear", "()", "summary", "manual"]
- ["java.util", "Set", "clear", "()", "summary", "manual"]

View File

@@ -302,6 +302,16 @@ public class B {
List out = null;
Collection in = storeElementList(source()); out.addAll(0,in); sink(readElement(out)); // $ hasValueFlow
}
{
// "java.util;List;true;clear;;;Argument[this].WithoutElement;Argument[this];value;manual"
List out = null;
List in = storeElementList(source()); out = in; out.clear(); sink(readElement(out)); // No flow
}
{
// "java.util;List;true;clear;;;Argument[this].WithoutElement;Argument[this];value;manual"
List out = null;
List in = (List)source(); out = in; out.clear(); sink(out); // $ hasValueFlow
}
{
// "java.util;Vector;true;elementAt;(int);;Element of Argument[this];ReturnValue;value;manual",
Object out = null;