mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
resolve calls to all instantiations of a signature predicate
This commit is contained in:
@@ -70,10 +70,16 @@ private module Cached {
|
||||
definesPredicate(m, pc.getPredicateName(), pc.getNumberOfArguments(), p, public)
|
||||
)
|
||||
or
|
||||
exists(Module mod, PredicateExpr sig |
|
||||
mod.hasParameter(_, pc.getPredicateName(), sig) and
|
||||
p = sig.getResolvedPredicate() and // <- this is a `signature predicate`, but that's fine.
|
||||
sig.getArity() = pc.getNumberOfArguments() // TODO: resolve all instantiations?
|
||||
exists(Module mod, PredicateExpr sig, int i |
|
||||
mod.hasParameter(i, pc.getPredicateName(), sig) and
|
||||
sig.getArity() = pc.getNumberOfArguments()
|
||||
|
|
||||
p = sig.getResolvedPredicate() // <- this is a `signature predicate`, but that's fine.
|
||||
or
|
||||
exists(ModuleExpr inst, SignatureExpr arg | inst.getResolvedModule().asModule() = mod |
|
||||
arg = inst.getArgument(i) and
|
||||
p = arg.asPredicate().getResolvedPredicate()
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ getTarget
|
||||
| Overrides.qll:28:3:28:9 | MemberCall | Overrides.qll:6:3:6:29 | ClassPredicate bar |
|
||||
| Overrides.qll:29:3:29:10 | MemberCall | Overrides.qll:8:3:8:41 | ClassPredicate baz |
|
||||
| ParamModules.qll:5:28:5:41 | PredicateCall | ParamModules.qll:2:13:2:36 | ClasslessPredicate fooSig |
|
||||
| ParamModules.qll:5:28:5:41 | PredicateCall | ParamModules.qll:8:3:8:35 | ClasslessPredicate myFoo |
|
||||
| ParamModules.qll:10:26:10:49 | PredicateCall | ParamModules.qll:5:5:5:43 | ClasslessPredicate bar |
|
||||
| ParamModules.qll:26:27:26:53 | PredicateCall | ParamModules.qll:17:5:17:42 | ClasslessPredicate getAnEven |
|
||||
| ParamModules.qll:26:27:26:61 | MemberCall | ParamModules.qll:23:5:23:39 | ClassPredicate myFoo |
|
||||
|
||||
Reference in New Issue
Block a user