Skip to content

Commit 55b6f07

Browse files
committed
resolve calls to signature predicates
1 parent f25c4c5 commit 55b6f07

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

ql/ql/src/codeql_ql/ast/internal/Predicate.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ private module Cached {
6969
|
7070
definesPredicate(m, pc.getPredicateName(), pc.getNumberOfArguments(), p, public)
7171
)
72+
or
73+
exists(Module mod, PredicateExpr sig |
74+
mod.hasParameter(_, pc.getPredicateName(), sig) and
75+
p = sig.getResolvedPredicate() and // <- this is a `signature predicate`, but that's fine.
76+
sig.getArity() = pc.getNumberOfArguments()
77+
)
7278
}
7379

7480
private predicate resolveMemberCall(MemberCall mc, PredicateOrBuiltin p) {

ql/ql/src/codeql_ql/style/DeadCodeQuery.qll

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,9 @@ private AstNode aliveStep(AstNode prev) {
164164
result = prev.(Annotation).getAChild()
165165
or
166166
result = prev.(Predicate).getReturnType().getDeclaration()
167+
or
168+
// a module parameter is alive is the module is alive
169+
prev.(Module).hasParameter(_, _, result)
167170
}
168171

169172
private AstNode deprecated() {

0 commit comments

Comments
 (0)