mirror of
https://github.com/github/codeql.git
synced 2026-04-30 11:15:13 +02:00
Java: Add TypeFlow base case for partially unbound types.
This commit is contained in:
@@ -202,6 +202,13 @@ private module Input implements TypeFlowInput<Location> {
|
||||
t1e = t2e and
|
||||
unbound(t2) and
|
||||
not unbound(t1)
|
||||
or
|
||||
t1e = t2e and
|
||||
exists(int pos |
|
||||
partiallyUnbound(t2, pos) and
|
||||
not partiallyUnbound(t1, pos) and
|
||||
not unbound(t1)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -370,6 +377,11 @@ private module Input implements TypeFlowInput<Location> {
|
||||
)
|
||||
}
|
||||
|
||||
/** Holds if `t` is a parameterised type with unrestricted type argument at position `pos`. */
|
||||
private predicate partiallyUnbound(ParameterizedType t, int pos) {
|
||||
unconstrained(t.getTypeArgument(pos))
|
||||
}
|
||||
|
||||
Type getErasure(Type t) { result = t.getErasure() }
|
||||
|
||||
Type getAnAncestor(Type sub) { result = sub.getAnAncestor() }
|
||||
|
||||
Reference in New Issue
Block a user