Open
Description
Consider the following example:
MyCallable.qll
import java
class CallableByErasure extends Callable {
override predicate hasQualifiedName(string package, string type, string name) {
this.isDeclaredIn(package, type) and this.hasName(name)
}
predicate isDeclaredIn(string package, string type) {
this.getDeclaringType().getErasure().(RefType).hasQualifiedName(package, type)
}
}
Query.ql
import java
// import MyCallable
from Call c
where c.getCallee().hasQualifiedName("java.util", "Set<String>", "iterator")
select c
The query correctly finds one instance (see test case below).
If I uncomment import MyCallable
however, then the query does not return anything. Is this expected behaviour? How do I prevent this from happening?
This is the test case I used:
import java.util.HashSet;
import java.util.Set;
class GenericsClass {
public void foo() {
Set<String> set = new HashSet<String>();
set.iterator();
}
}