Skip to content

Commit 15f9e08

Browse files
committed
fix spurious resolved predicate expressions
1 parent f8b451a commit 15f9e08

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ private module Cached {
4949
m = pe.getQualifier().getResolvedModule() and
5050
public = true
5151
|
52-
definesPredicate(m, pe.getName(), p.getArity(), p, public)
52+
definesPredicate(m, pe.getName(), p.getArity(), p, public) and
53+
p.getArity() = pe.getArity()
5354
)
5455
}
5556

@@ -200,7 +201,12 @@ module PredConsistency {
200201
}
201202

202203
query predicate multipleResolvePredicateExpr(PredicateExpr pe, int c, ClasslessPredicate p) {
203-
c = strictcount(ClasslessPredicate p0 | resolvePredicateExpr(pe, p0)) and
204+
c =
205+
strictcount(ClasslessPredicate p0 |
206+
resolvePredicateExpr(pe, p0) and
207+
// aliases are expected to resolve to multiple.
208+
not exists(p0.(ClasslessPredicate).getAlias())
209+
) and
204210
c > 1 and
205211
resolvePredicateExpr(pe, p)
206212
}

ql/ql/src/queries/diagnostics/EmptyConsistencies.ql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ where
2424
or
2525
PredConsistency::multipleResolveCall(node, _, _) and msg = "PredConsistency::multipleResolveCall"
2626
or
27+
PredConsistency::multipleResolvePredicateExpr(node, _, _) and
28+
msg = "PredConsistency::multipleResolvePredicateExpr"
29+
or
2730
TypeConsistency::exprNoType(node) and msg = "TypeConsistency::exprNoType"
2831
or
2932
TypeConsistency::varDefNoType(node) and msg = "TypeConsistency::varDefNoType"

ql/ql/test/callgraph/callgraph.expected

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,5 @@ exprPredicate
4949
| Foo.qll:47:55:47:62 | predicate | Foo.qll:42:20:42:27 | NewTypeBranch MkRoot |
5050
| Foo.qll:47:65:47:70 | predicate | Foo.qll:44:9:44:56 | ClasslessPredicate edge |
5151
| MultiResolve.qll:12:19:12:23 | predicate | MultiResolve.qll:1:1:4:1 | ClasslessPredicate foo |
52-
| MultiResolve.qll:12:19:12:23 | predicate | MultiResolve.qll:6:1:10:1 | ClasslessPredicate foo |
5352
| ParamModules.qll:4:18:4:25 | predicate | ParamModules.qll:2:13:2:36 | ClasslessPredicate fooSig |
5453
| ParamModules.qll:10:34:10:40 | predicate | ParamModules.qll:8:3:8:35 | ClasslessPredicate myFoo |

0 commit comments

Comments
 (0)