Skip to content

Commit e4c2ef4

Browse files
committed
Rust: implement Use::toString
1 parent 2bcaa9c commit e4c2ef4

File tree

12 files changed

+43
-31
lines changed

12 files changed

+43
-31
lines changed

rust/ql/.generated.list

-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/ql/.gitattributes

-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/ql/lib/codeql/rust/elements/internal/UseImpl.qll

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// generated by codegen, remove this comment if you wish to edit this file
21
/**
32
* This module provides a hand-modifiable wrapper around the generated class `Use`.
43
*
@@ -12,11 +11,14 @@ private import codeql.rust.elements.internal.generated.Use
1211
* be referenced directly.
1312
*/
1413
module Impl {
14+
// the following QLdoc is generated: if you need to edit it, do it in the schema file
1515
/**
1616
* A Use. For example:
1717
* ```rust
1818
* todo!()
1919
* ```
2020
*/
21-
class Use extends Generated::Use { }
21+
class Use extends Generated::Use {
22+
override string toStringImpl() { result = "use " + this.getUseTree() }
23+
}
2224
}

rust/ql/lib/codeql/rust/elements/internal/UseTreeImpl.qll

+16-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// generated by codegen, remove this comment if you wish to edit this file
21
/**
32
* This module provides a hand-modifiable wrapper around the generated class `UseTree`.
43
*
@@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.UseTree
1211
* be referenced directly.
1312
*/
1413
module Impl {
14+
// the following QLdoc is generated: if you need to edit it, do it in the schema file
1515
/**
1616
* A UseTree. For example:
1717
* ```rust
@@ -21,5 +21,19 @@ module Impl {
2121
* use std::collections::{self, HashMap, HashSet};
2222
* ```
2323
*/
24-
class UseTree extends Generated::UseTree { }
24+
class UseTree extends Generated::UseTree {
25+
override string toStringImpl() {
26+
result = strictconcat(int i | | this.toStringPart(i) order by i)
27+
}
28+
29+
private string toStringPart(int index) {
30+
result = this.getPath().toStringImpl() and index = 0
31+
or
32+
result = "::{...}" and this.hasUseTreeList() and index = 1
33+
or
34+
result = "::*" and this.isGlob() and index = 2
35+
or
36+
result = " as " + this.getRename().getName().getText() and index = 3
37+
}
38+
}
2539
}

rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
canonicalPaths
2-
| anonymous.rs:1:1:1:26 | Use | None | None |
2+
| anonymous.rs:1:1:1:26 | use ...::Trait | None | None |
33
| anonymous.rs:3:1:32:1 | fn canonicals | repo::test | crate::anonymous::canonicals |
44
| anonymous.rs:4:5:4:23 | struct OtherStruct | None | None |
55
| anonymous.rs:6:5:8:5 | trait OtherTrait | None | None |
@@ -33,7 +33,7 @@ canonicalPaths
3333
| regular.rs:34:1:38:1 | enum MyEnum | repo::test | crate::regular::MyEnum |
3434
| regular.rs:40:1:46:1 | fn enum_qualified_usage | repo::test | crate::regular::enum_qualified_usage |
3535
| regular.rs:48:1:55:1 | fn enum_unqualified_usage | repo::test | crate::regular::enum_unqualified_usage |
36-
| regular.rs:51:5:51:18 | Use | None | None |
36+
| regular.rs:51:5:51:18 | use MyEnum::* | None | None |
3737
| regular.rs:57:1:63:1 | fn enum_match | repo::test | crate::regular::enum_match |
3838
resolvedPaths
3939
| anonymous.rs:27:17:27:30 | OtherStruct {...} | None | None |

rust/ql/test/extractor-tests/canonical_path_disabled/canonical_paths.expected

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
canonicalPaths
2-
| anonymous.rs:4:1:4:26 | Use | None | None |
2+
| anonymous.rs:4:1:4:26 | use ...::Trait | None | None |
33
| anonymous.rs:6:1:35:1 | fn canonicals | None | None |
44
| anonymous.rs:7:5:7:23 | struct OtherStruct | None | None |
55
| anonymous.rs:9:5:11:5 | trait OtherTrait | None | None |
@@ -33,7 +33,7 @@ canonicalPaths
3333
| regular.rs:37:1:41:1 | enum MyEnum | None | None |
3434
| regular.rs:43:1:49:1 | fn enum_qualified_usage | None | None |
3535
| regular.rs:51:1:58:1 | fn enum_unqualified_usage | None | None |
36-
| regular.rs:54:5:54:18 | Use | None | None |
36+
| regular.rs:54:5:54:18 | use MyEnum::* | None | None |
3737
| regular.rs:60:1:66:1 | fn enum_match | None | None |
3838
resolvedPaths
3939
| anonymous.rs:30:17:30:30 | OtherStruct {...} | None | None |

rust/ql/test/extractor-tests/generated/MacroItems/CONSISTENCY/AstConsistency.expected

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ noLocation
22
| file://:0:0:0:0 | ... .unwrap(...) |
33
| file://:0:0:0:0 | ...: ... |
44
| file://:0:0:0:0 | ...::Path |
5+
| file://:0:0:0:0 | ...::Path |
56
| file://:0:0:0:0 | ...::path |
67
| file://:0:0:0:0 | ArgList |
78
| file://:0:0:0:0 | ArgList |
@@ -20,8 +21,6 @@ noLocation
2021
| file://:0:0:0:0 | RefTypeRepr |
2122
| file://:0:0:0:0 | RetTypeRepr |
2223
| file://:0:0:0:0 | StmtList |
23-
| file://:0:0:0:0 | Use |
24-
| file://:0:0:0:0 | UseTree |
2524
| file://:0:0:0:0 | fn get_parent |
2625
| file://:0:0:0:0 | get_parent |
2726
| file://:0:0:0:0 | parent |
@@ -38,4 +37,5 @@ noLocation
3837
| file://:0:0:0:0 | std |
3938
| file://:0:0:0:0 | std |
4039
| file://:0:0:0:0 | unwrap |
40+
| file://:0:0:0:0 | use ...::Path |
4141
| file://:0:0:0:0 | { ... } |
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
| gen_macro_items.rs:5:5:5:38 | MacroItems | 0 | file://:0:0:0:0 | Use |
1+
| gen_macro_items.rs:5:5:5:38 | MacroItems | 0 | file://:0:0:0:0 | use ...::Path |
22
| gen_macro_items.rs:5:5:5:38 | MacroItems | 1 | file://:0:0:0:0 | fn get_parent |
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
| gen_use_tree.rs:5:9:5:33 | UseTree | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | no |
2-
| gen_use_tree.rs:6:9:6:27 | UseTree | isGlob: | yes | hasPath: | yes | hasRename: | no | hasUseTreeList: | no |
3-
| gen_use_tree.rs:7:9:7:46 | UseTree | isGlob: | no | hasPath: | yes | hasRename: | yes | hasUseTreeList: | no |
4-
| gen_use_tree.rs:8:9:8:50 | UseTree | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | yes |
5-
| gen_use_tree.rs:8:28:8:31 | UseTree | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | no |
6-
| gen_use_tree.rs:8:34:8:40 | UseTree | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | no |
7-
| gen_use_tree.rs:8:43:8:49 | UseTree | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | no |
1+
| gen_use_tree.rs:5:9:5:33 | ...::HashMap | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | no |
2+
| gen_use_tree.rs:6:9:6:27 | ...::collections::* | isGlob: | yes | hasPath: | yes | hasRename: | no | hasUseTreeList: | no |
3+
| gen_use_tree.rs:7:9:7:46 | ...::HashMap as MyHashMap | isGlob: | no | hasPath: | yes | hasRename: | yes | hasUseTreeList: | no |
4+
| gen_use_tree.rs:8:9:8:50 | ...::collections::{...} | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | yes |
5+
| gen_use_tree.rs:8:28:8:31 | self | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | no |
6+
| gen_use_tree.rs:8:34:8:40 | HashMap | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | no |
7+
| gen_use_tree.rs:8:43:8:49 | HashSet | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | no |
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
| gen_use_tree.rs:5:9:5:33 | UseTree | gen_use_tree.rs:5:9:5:33 | ...::HashMap |
2-
| gen_use_tree.rs:6:9:6:27 | UseTree | gen_use_tree.rs:6:9:6:24 | ...::collections |
3-
| gen_use_tree.rs:7:9:7:46 | UseTree | gen_use_tree.rs:7:9:7:33 | ...::HashMap |
4-
| gen_use_tree.rs:8:9:8:50 | UseTree | gen_use_tree.rs:8:9:8:24 | ...::collections |
5-
| gen_use_tree.rs:8:28:8:31 | UseTree | gen_use_tree.rs:8:28:8:31 | self |
6-
| gen_use_tree.rs:8:34:8:40 | UseTree | gen_use_tree.rs:8:34:8:40 | HashMap |
7-
| gen_use_tree.rs:8:43:8:49 | UseTree | gen_use_tree.rs:8:43:8:49 | HashSet |
1+
| gen_use_tree.rs:5:9:5:33 | ...::HashMap | gen_use_tree.rs:5:9:5:33 | ...::HashMap |
2+
| gen_use_tree.rs:6:9:6:27 | ...::collections::* | gen_use_tree.rs:6:9:6:24 | ...::collections |
3+
| gen_use_tree.rs:7:9:7:46 | ...::HashMap as MyHashMap | gen_use_tree.rs:7:9:7:33 | ...::HashMap |
4+
| gen_use_tree.rs:8:9:8:50 | ...::collections::{...} | gen_use_tree.rs:8:9:8:24 | ...::collections |
5+
| gen_use_tree.rs:8:28:8:31 | self | gen_use_tree.rs:8:28:8:31 | self |
6+
| gen_use_tree.rs:8:34:8:40 | HashMap | gen_use_tree.rs:8:34:8:40 | HashMap |
7+
| gen_use_tree.rs:8:43:8:49 | HashSet | gen_use_tree.rs:8:43:8:49 | HashSet |
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
| gen_use_tree.rs:7:9:7:46 | UseTree | gen_use_tree.rs:7:35:7:46 | Rename |
1+
| gen_use_tree.rs:7:9:7:46 | ...::HashMap as MyHashMap | gen_use_tree.rs:7:35:7:46 | Rename |
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
| gen_use_tree.rs:8:9:8:50 | UseTree | gen_use_tree.rs:8:27:8:50 | UseTreeList |
1+
| gen_use_tree.rs:8:9:8:50 | ...::collections::{...} | gen_use_tree.rs:8:27:8:50 | UseTreeList |

0 commit comments

Comments
 (0)