mirror of
https://github.com/github/codeql.git
synced 2026-04-25 16:55:19 +02:00
Merge pull request #95 from github/tausbn/add-override-test
Add test for `override`
This commit is contained in:
@@ -153,7 +153,9 @@ module PredConsistency {
|
||||
strictcount(PredicateOrBuiltin p0 |
|
||||
resolveCall(call, p0) and
|
||||
// aliases are expected to resolve to multiple.
|
||||
not exists(p0.(ClasslessPredicate).getAlias())
|
||||
not exists(p0.(ClasslessPredicate).getAlias()) and
|
||||
// overridden predicates may have multiple targets
|
||||
not p0.(ClassPredicate).isOverride()
|
||||
) and
|
||||
c > 1 and
|
||||
resolveCall(call, p)
|
||||
|
||||
30
ql/test/callgraph/Overrides.qll
Normal file
30
ql/test/callgraph/Overrides.qll
Normal file
@@ -0,0 +1,30 @@
|
||||
import ql
|
||||
|
||||
class Foo extends int {
|
||||
Foo() { this in [1, 2, 3] }
|
||||
|
||||
int bar() { result = this }
|
||||
|
||||
predicate baz(int i) { i = this.bar() }
|
||||
}
|
||||
|
||||
class Bar extends Foo {
|
||||
Bar() { this = [1, 2] }
|
||||
|
||||
override int bar() { result = 10 * this }
|
||||
|
||||
override predicate baz(int i) { i = this.bar() }
|
||||
}
|
||||
|
||||
class Baz extends Foo {
|
||||
Baz() { this = 1 }
|
||||
|
||||
override int bar() { result = 100 * this }
|
||||
|
||||
override predicate baz(int i) { i = this.bar() }
|
||||
}
|
||||
|
||||
query predicate test(Foo f, int i, int j) {
|
||||
f.bar() = i and
|
||||
f.baz(j)
|
||||
}
|
||||
@@ -9,6 +9,13 @@ getTarget
|
||||
| Foo.qll:31:5:31:12 | PredicateCall | Foo.qll:24:3:24:32 | ClasslessPredicate alias0 |
|
||||
| Foo.qll:36:36:36:65 | MemberCall | file://:0:0:0:0 | replaceAll |
|
||||
| Foo.qll:38:39:38:67 | MemberCall | file://:0:0:0:0 | regexpCapture |
|
||||
| Overrides.qll:8:30:8:39 | MemberCall | Overrides.qll:6:3:6:29 | ClassPredicate bar |
|
||||
| Overrides.qll:16:39:16:48 | MemberCall | Overrides.qll:6:3:6:29 | ClassPredicate bar |
|
||||
| Overrides.qll:16:39:16:48 | MemberCall | Overrides.qll:14:12:14:43 | ClassPredicate bar |
|
||||
| Overrides.qll:24:39:24:48 | MemberCall | Overrides.qll:6:3:6:29 | ClassPredicate bar |
|
||||
| Overrides.qll:24:39:24:48 | MemberCall | Overrides.qll:22:12:22:44 | ClassPredicate bar |
|
||||
| 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 |
|
||||
| packs/src/SrcThing.qll:4:3:4:8 | PredicateCall | packs/lib/LibThing/Foo.qll:1:1:1:30 | ClasslessPredicate foo |
|
||||
| packs/src/SrcThing.qll:5:3:5:8 | PredicateCall | packs/src/SrcThing.qll:8:1:8:30 | ClasslessPredicate bar |
|
||||
dependsOn
|
||||
|
||||
Reference in New Issue
Block a user