mirror of
https://github.com/github/codeql.git
synced 2026-04-24 16:25:15 +02:00
Rust: Handle pub use reexports in path resolution
This commit is contained in:
@@ -460,7 +460,7 @@ private class UseItemNode extends ItemNode instanceof Use {
|
||||
|
||||
override Namespace getNamespace() { none() }
|
||||
|
||||
override Visibility getVisibility() { none() }
|
||||
override Visibility getVisibility() { result = Use.super.getVisibility() }
|
||||
|
||||
override TypeParam getTypeParam(int i) { none() }
|
||||
}
|
||||
@@ -586,11 +586,12 @@ private predicate fileImport(Module m, SourceFile f) {
|
||||
* Holds if `mod` is a `mod name;` item targeting a file resulting in `item` being
|
||||
* in scope under the name `name`.
|
||||
*/
|
||||
pragma[nomagic]
|
||||
private predicate fileImportEdge(Module mod, string name, ItemNode item) {
|
||||
item.isPublic() and
|
||||
exists(SourceFile f |
|
||||
exists(SourceFileItemNode f |
|
||||
fileImport(mod, f) and
|
||||
sourceFileEdge(f, name, item)
|
||||
item = f.getASuccessor(name)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -495,5 +495,5 @@ fn main() {
|
||||
m15::f(); // $ item=I75
|
||||
m16::f(); // $ item=I83
|
||||
m17::f(); // $ item=I99
|
||||
nested6::f(); // $ MISSING: item=I116
|
||||
nested6::f(); // $ item=I116
|
||||
}
|
||||
|
||||
@@ -251,6 +251,8 @@ resolvePath
|
||||
| main.rs:496:5:496:10 | ...::f | main.rs:417:5:441:5 | fn f |
|
||||
| main.rs:497:5:497:7 | m17 | main.rs:444:1:474:1 | mod m17 |
|
||||
| main.rs:497:5:497:10 | ...::f | main.rs:468:5:473:5 | fn f |
|
||||
| main.rs:498:5:498:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
|
||||
| main.rs:498:5:498:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
|
||||
| my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
|
||||
| my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
|
||||
| my2/mod.rs:5:5:5:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
|
||||
|
||||
Reference in New Issue
Block a user