Skip to content

Commit e97fe89

Browse files
committed
Rust: improve modules test case
1 parent ae082a2 commit e97fe89

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

rust/ql/test/extractor-tests/crate_graph/modules.expected

+5-8
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
#-----| fn length
44

5-
#-----| fn write
6-
75
#-----| fn as_string
86

97
#-----| fn fmt
@@ -13,15 +11,14 @@
1311
#-----| Static
1412

1513
#-----| mod module
14+
#-----| -> Const
15+
#-----| -> Static
16+
#-----| -> enum X
1617
#-----| -> fn length
17-
#-----| -> fn write
18+
#-----| -> impl ...::Display for ...::X { ... }
19+
#-----| -> impl AsString for ...::X { ... }
1820
#-----| -> struct X_List
19-
#-----| -> Static
2021
#-----| -> trait AsString
21-
#-----| -> Const
22-
#-----| -> impl AsString for ...::X { ... }
23-
#-----| -> impl ...::Display for ...::X { ... }
24-
#-----| -> enum X
2522

2623
#-----| mod crate
2724
#-----| -> mod module

rust/ql/test/extractor-tests/crate_graph/modules.ql

+21-3
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,30 @@
66

77
import rust
88

9-
query predicate nodes(Item i) {
10-
i.getParentNode*() = any(Crate m | m.getName() = "test" and m.getVersion() = "0.0.1").getModule()
9+
query predicate nodes(Item i) { i instanceof RelevantNode }
10+
11+
class RelevantNode extends Item {
12+
RelevantNode() {
13+
this.getParentNode*() =
14+
any(Crate m | m.getName() = "test" and m.getVersion() = "0.0.1").getModule()
15+
}
1116
}
1217

13-
query predicate edges(Item container, Item element) {
18+
predicate edges(RelevantNode container, RelevantNode element) {
1419
element = container.(Module).getItemList().getAnItem() or
1520
element = container.(Impl).getAssocItemList().getAnAssocItem() or
1621
element = container.(Trait).getAssocItemList().getAnAssocItem()
1722
}
23+
24+
query predicate edges(RelevantNode pred, RelevantNode succ, string attr, string val) {
25+
edges(pred, succ) and
26+
(
27+
attr = "semmle.label" and
28+
val = ""
29+
or
30+
attr = "semmle.order" and
31+
val =
32+
any(int i | succ = rank[i](Item s, Location l | edges(pred, s) | s order by s.toString()))
33+
.toString()
34+
)
35+
}

0 commit comments

Comments
 (0)