Skip to content

Commit 662e963

Browse files
committed
Rust: allow shadowing of prelude items
1 parent 88439b4 commit 662e963

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

Diff for: rust/ql/lib/codeql/rust/internal/PathResolution.qll

+1-1
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ abstract class ItemNode extends Locatable {
178178
Stages::PathResolutionStage::ref() and
179179
result = this.getASuccessorRec(name)
180180
or
181-
preludeEdge(this, name, result)
181+
preludeEdge(this, name, result) and not declares(this, _, name)
182182
or
183183
name = "super" and
184184
if this instanceof Module or this instanceof SourceFile

Diff for: rust/ql/test/library-tests/path-resolution/my.rs

+18
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,21 @@ mod my4 {
1616
}
1717

1818
pub use my4::my5::f as nested_f; // $ item=I201
19+
20+
type Result<
21+
T, // T
22+
> = ::std::result::Result<
23+
T, // $ item=T
24+
String,
25+
>; // my::Result
26+
27+
fn int_div(
28+
x: i32, //
29+
y: i32,
30+
) -> Result<i32> // $ item=my::Result
31+
{
32+
if y == 0 {
33+
return Err("Div by zero".to_string());
34+
}
35+
Ok(x / y)
36+
}

Diff for: rust/ql/test/library-tests/path-resolution/path-resolution.expected

+7
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,13 @@ resolvePath
319319
| my.rs:18:9:18:11 | my4 | my.rs:14:1:16:1 | mod my4 |
320320
| my.rs:18:9:18:16 | ...::my5 | my.rs:15:5:15:16 | mod my5 |
321321
| my.rs:18:9:18:19 | ...::f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
322+
| my.rs:22:5:22:9 | std | file:///Users/arthur/.rustup/toolchains/1.85-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/lib.rs:0:0:0:0 | Crate(std@0.0.0) |
323+
| my.rs:22:5:22:17 | ...::result | file://:0:0:0:0 | mod result |
324+
| my.rs:22:5:25:1 | ...::Result::<...> | file://:0:0:0:0 | enum Result |
325+
| my.rs:23:5:23:5 | T | my.rs:21:5:21:5 | T |
326+
| my.rs:30:6:30:16 | Result::<...> | my.rs:20:1:25:2 | type Result<...> |
327+
| my.rs:33:16:33:18 | Err | file://:0:0:0:0 | Err |
328+
| my.rs:35:5:35:6 | Ok | file://:0:0:0:0 | Ok |
322329
| my/nested.rs:9:13:9:13 | f | my/nested.rs:3:9:5:9 | fn f |
323330
| my/nested.rs:15:9:15:15 | nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
324331
| my/nested.rs:15:9:15:18 | ...::f | my/nested.rs:3:9:5:9 | fn f |

0 commit comments

Comments
 (0)