Skip to content

Commit dda16a0

Browse files
committed
add a isSignature() predicate to ClasslessPredicate
1 parent c225605 commit dda16a0

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

ql/ql/src/codeql_ql/ast/Ast.qll

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,9 @@ class ClasslessPredicate extends TClasslessPredicate, Predicate, ModuleDeclarati
521521
}
522522

523523
override predicate isPrivate() { Predicate.super.isPrivate() }
524+
525+
/** Holds if this classless predicate is a signature predicate with no body. */
526+
predicate isSignature() { not exists(this.getBody()) }
524527
}
525528

526529
/**

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ module PredConsistency {
211211
c > 1 and
212212
resolvePredicateExpr(pe, p) and
213213
// parameterized modules are expected to resolve to multiple.
214-
not exists(Predicate sig | not exists(sig.getBody()) and resolvePredicateExpr(pe, sig))
214+
not exists(ClasslessPredicate sig | not sig.isSignature() and resolvePredicateExpr(pe, sig))
215215
}
216216

217217
query predicate multipleResolveCall(Call call, int c, PredicateOrBuiltin p) {
@@ -227,6 +227,6 @@ module PredConsistency {
227227
c > 1 and
228228
resolveCall(call, p) and
229229
// parameterized modules are expected to resolve to multiple.
230-
not exists(Predicate sig | not exists(sig.getBody()) and resolveCall(call, sig))
230+
not exists(ClasslessPredicate sig | not sig.isSignature() and resolveCall(call, sig))
231231
}
232232
}

0 commit comments

Comments
 (0)