diff --git a/rust/ql/test/extractor-tests/crate_graph/modules.expected b/rust/ql/test/extractor-tests/crate_graph/modules.expected index b60209cf26f5..438ec6e680c8 100644 --- a/rust/ql/test/extractor-tests/crate_graph/modules.expected +++ b/rust/ql/test/extractor-tests/crate_graph/modules.expected @@ -2,8 +2,6 @@ #-----| fn length -#-----| fn write - #-----| fn as_string #-----| fn fmt @@ -13,15 +11,14 @@ #-----| Static #-----| mod module +#-----| -> Const +#-----| -> Static +#-----| -> enum X #-----| -> fn length -#-----| -> fn write +#-----| -> impl ...::Display for ...::X { ... } +#-----| -> impl AsString for ...::X { ... } #-----| -> struct X_List -#-----| -> Static #-----| -> trait AsString -#-----| -> Const -#-----| -> impl AsString for ...::X { ... } -#-----| -> impl ...::Display for ...::X { ... } -#-----| -> enum X #-----| mod crate #-----| -> mod module diff --git a/rust/ql/test/extractor-tests/crate_graph/modules.ql b/rust/ql/test/extractor-tests/crate_graph/modules.ql index 5e48ffa573c2..9c6b0076b828 100644 --- a/rust/ql/test/extractor-tests/crate_graph/modules.ql +++ b/rust/ql/test/extractor-tests/crate_graph/modules.ql @@ -6,12 +6,30 @@ import rust -query predicate nodes(Item i) { - i.getParentNode*() = any(Crate m | m.getName() = "test" and m.getVersion() = "0.0.1").getModule() +query predicate nodes(Item i) { i instanceof RelevantNode } + +class RelevantNode extends Item { + RelevantNode() { + this.getParentNode*() = + any(Crate m | m.getName() = "test" and m.getVersion() = "0.0.1").getModule() + } } -query predicate edges(Item container, Item element) { +predicate edges(RelevantNode container, RelevantNode element) { element = container.(Module).getItemList().getAnItem() or element = container.(Impl).getAssocItemList().getAnAssocItem() or element = container.(Trait).getAssocItemList().getAnAssocItem() } + +query predicate edges(RelevantNode pred, RelevantNode succ, string attr, string val) { + edges(pred, succ) and + ( + attr = "semmle.label" and + val = "" + or + attr = "semmle.order" and + val = + any(int i | succ = rank[i](Item s, Location l | edges(pred, s) | s order by s.toString())) + .toString() + ) +}