Python: ObjectAPI to ValueAPI: IterReturnsNonIterature: Replaces custom return_type predicate with call to getAnInferredReturnType

This commit is contained in:
Rebecca Valentine
2020-04-09 14:30:40 -07:00
parent 0d65db148f
commit 7a586c97a4

View File

@@ -12,18 +12,10 @@
import python
ClassValue return_type(FunctionValue f) {
exists(ControlFlowNode n, Return ret |
ret.getScope() = f.getScope() and
ret.getValue() = n.getNode() and
result = n.pointsTo().getClass()
)
}
from ClassValue iterable, FunctionValue iter, ClassValue iterator
where
iter = iterable.lookup("__iter__") and
iterator = return_type(iter) and
iterator = iter.getAnInferredReturnType() and
not iterator.isIterator()
select iterator,
"Class " + iterator.getName() +