Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rust: Allow SSA and some data flow for mutable borrows #18872

Merged
merged 6 commits into from
Mar 4, 2025
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merge branch 'main' into rust-ref-mut
  • Loading branch information
paldepind committed Mar 3, 2025
commit d8d882958d134ba128f0d0ec0029d40e55d931ea
112 changes: 112 additions & 0 deletions rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected
Original file line number Diff line number Diff line change
@@ -7,6 +7,7 @@ models
| 6 | Summary: lang:core; crate::ptr::read; Argument[0].Reference; ReturnValue; value |
| 7 | Summary: lang:core; crate::ptr::write; Argument[1]; Argument[0].Reference; value |
edges
<<<<<<< HEAD
| main.rs:13:9:13:9 | a [Some] | main.rs:14:10:14:19 | a.unwrap(...) | provenance | MaD:2 |
| main.rs:13:9:13:9 | a [Some] | main.rs:15:13:15:21 | a.clone(...) [Some] | provenance | MaD:1 |
| main.rs:13:9:13:9 | a [Some] | main.rs:15:13:15:21 | a.clone(...) [Some] | provenance | generated |
@@ -93,6 +94,117 @@ nodes
| main.rs:62:18:62:23 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] |
| main.rs:62:22:62:22 | m | semmle.label | m |
| main.rs:64:22:64:22 | m | semmle.label | m |
=======
| main.rs:12:9:12:9 | a [Some] | main.rs:13:10:13:10 | a [Some] | provenance | |
| main.rs:12:9:12:9 | a [Some] | main.rs:14:13:14:13 | a [Some] | provenance | |
| main.rs:12:13:12:28 | Some(...) [Some] | main.rs:12:9:12:9 | a [Some] | provenance | |
| main.rs:12:18:12:27 | source(...) | main.rs:12:13:12:28 | Some(...) [Some] | provenance | |
| main.rs:13:10:13:10 | a [Some] | main.rs:13:10:13:19 | a.unwrap(...) | provenance | MaD:2 |
| main.rs:14:9:14:9 | b [Some] | main.rs:15:10:15:10 | b [Some] | provenance | |
| main.rs:14:13:14:13 | a [Some] | main.rs:14:13:14:21 | a.clone(...) [Some] | provenance | MaD:1 |
| main.rs:14:13:14:13 | a [Some] | main.rs:14:13:14:21 | a.clone(...) [Some] | provenance | generated |
| main.rs:14:13:14:21 | a.clone(...) [Some] | main.rs:14:9:14:9 | b [Some] | provenance | |
| main.rs:15:10:15:10 | b [Some] | main.rs:15:10:15:19 | b.unwrap(...) | provenance | MaD:2 |
| main.rs:19:9:19:9 | a [Ok] | main.rs:20:10:20:10 | a [Ok] | provenance | |
| main.rs:19:9:19:9 | a [Ok] | main.rs:21:13:21:13 | a [Ok] | provenance | |
| main.rs:19:31:19:44 | Ok(...) [Ok] | main.rs:19:9:19:9 | a [Ok] | provenance | |
| main.rs:19:34:19:43 | source(...) | main.rs:19:31:19:44 | Ok(...) [Ok] | provenance | |
| main.rs:20:10:20:10 | a [Ok] | main.rs:20:10:20:19 | a.unwrap(...) | provenance | MaD:5 |
| main.rs:21:9:21:9 | b [Ok] | main.rs:22:10:22:10 | b [Ok] | provenance | |
| main.rs:21:13:21:13 | a [Ok] | main.rs:21:13:21:21 | a.clone(...) [Ok] | provenance | MaD:4 |
| main.rs:21:13:21:13 | a [Ok] | main.rs:21:13:21:21 | a.clone(...) [Ok] | provenance | generated |
| main.rs:21:13:21:21 | a.clone(...) [Ok] | main.rs:21:9:21:9 | b [Ok] | provenance | |
| main.rs:22:10:22:10 | b [Ok] | main.rs:22:10:22:19 | b.unwrap(...) | provenance | MaD:5 |
| main.rs:26:9:26:9 | a | main.rs:27:10:27:10 | a | provenance | |
| main.rs:26:9:26:9 | a | main.rs:28:13:28:13 | a | provenance | |
| main.rs:26:13:26:22 | source(...) | main.rs:26:9:26:9 | a | provenance | |
| main.rs:28:9:28:9 | b | main.rs:29:10:29:10 | b | provenance | |
| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone(...) | provenance | generated |
| main.rs:28:13:28:21 | a.clone(...) | main.rs:28:9:28:9 | b | provenance | |
| main.rs:41:13:41:13 | w [Wrapper] | main.rs:42:15:42:15 | w [Wrapper] | provenance | |
| main.rs:41:17:41:41 | Wrapper {...} [Wrapper] | main.rs:41:13:41:13 | w [Wrapper] | provenance | |
| main.rs:41:30:41:39 | source(...) | main.rs:41:17:41:41 | Wrapper {...} [Wrapper] | provenance | |
| main.rs:42:15:42:15 | w [Wrapper] | main.rs:43:13:43:28 | Wrapper {...} [Wrapper] | provenance | |
| main.rs:42:15:42:15 | w [Wrapper] | main.rs:45:17:45:17 | w [Wrapper] | provenance | |
| main.rs:43:13:43:28 | Wrapper {...} [Wrapper] | main.rs:43:26:43:26 | n | provenance | |
| main.rs:43:26:43:26 | n | main.rs:43:38:43:38 | n | provenance | |
| main.rs:45:13:45:13 | u [Wrapper] | main.rs:46:15:46:15 | u [Wrapper] | provenance | |
| main.rs:45:17:45:17 | w [Wrapper] | main.rs:45:17:45:25 | w.clone(...) [Wrapper] | provenance | generated |
| main.rs:45:17:45:25 | w.clone(...) [Wrapper] | main.rs:45:13:45:13 | u [Wrapper] | provenance | |
| main.rs:46:15:46:15 | u [Wrapper] | main.rs:47:13:47:28 | Wrapper {...} [Wrapper] | provenance | |
| main.rs:47:13:47:28 | Wrapper {...} [Wrapper] | main.rs:47:26:47:26 | n | provenance | |
| main.rs:47:26:47:26 | n | main.rs:47:38:47:38 | n | provenance | |
| main.rs:58:13:58:13 | b [Some] | main.rs:59:23:59:23 | b [Some] | provenance | |
| main.rs:58:17:58:32 | Some(...) [Some] | main.rs:58:13:58:13 | b [Some] | provenance | |
| main.rs:58:22:58:31 | source(...) | main.rs:58:17:58:32 | Some(...) [Some] | provenance | |
| main.rs:59:13:59:13 | z [Some, tuple.1] | main.rs:60:15:60:15 | z [Some, tuple.1] | provenance | |
| main.rs:59:17:59:24 | a.zip(...) [Some, tuple.1] | main.rs:59:13:59:13 | z [Some, tuple.1] | provenance | |
| main.rs:59:23:59:23 | b [Some] | main.rs:59:17:59:24 | a.zip(...) [Some, tuple.1] | provenance | MaD:3 |
| main.rs:60:15:60:15 | z [Some, tuple.1] | main.rs:61:13:61:24 | Some(...) [Some, tuple.1] | provenance | |
| main.rs:61:13:61:24 | Some(...) [Some, tuple.1] | main.rs:61:18:61:23 | TuplePat [tuple.1] | provenance | |
| main.rs:61:18:61:23 | TuplePat [tuple.1] | main.rs:61:22:61:22 | m | provenance | |
| main.rs:61:22:61:22 | m | main.rs:63:22:63:22 | m | provenance | |
| main.rs:84:29:84:29 | [post] y [&ref] | main.rs:85:33:85:33 | y [&ref] | provenance | |
| main.rs:84:32:84:41 | source(...) | main.rs:84:29:84:29 | [post] y [&ref] | provenance | MaD:7 |
| main.rs:85:33:85:33 | y [&ref] | main.rs:85:18:85:34 | ...::read(...) | provenance | MaD:6 |
nodes
| main.rs:12:9:12:9 | a [Some] | semmle.label | a [Some] |
| main.rs:12:13:12:28 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:12:18:12:27 | source(...) | semmle.label | source(...) |
| main.rs:13:10:13:10 | a [Some] | semmle.label | a [Some] |
| main.rs:13:10:13:19 | a.unwrap(...) | semmle.label | a.unwrap(...) |
| main.rs:14:9:14:9 | b [Some] | semmle.label | b [Some] |
| main.rs:14:13:14:13 | a [Some] | semmle.label | a [Some] |
| main.rs:14:13:14:21 | a.clone(...) [Some] | semmle.label | a.clone(...) [Some] |
| main.rs:15:10:15:10 | b [Some] | semmle.label | b [Some] |
| main.rs:15:10:15:19 | b.unwrap(...) | semmle.label | b.unwrap(...) |
| main.rs:19:9:19:9 | a [Ok] | semmle.label | a [Ok] |
| main.rs:19:31:19:44 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
| main.rs:19:34:19:43 | source(...) | semmle.label | source(...) |
| main.rs:20:10:20:10 | a [Ok] | semmle.label | a [Ok] |
| main.rs:20:10:20:19 | a.unwrap(...) | semmle.label | a.unwrap(...) |
| main.rs:21:9:21:9 | b [Ok] | semmle.label | b [Ok] |
| main.rs:21:13:21:13 | a [Ok] | semmle.label | a [Ok] |
| main.rs:21:13:21:21 | a.clone(...) [Ok] | semmle.label | a.clone(...) [Ok] |
| main.rs:22:10:22:10 | b [Ok] | semmle.label | b [Ok] |
| main.rs:22:10:22:19 | b.unwrap(...) | semmle.label | b.unwrap(...) |
| main.rs:26:9:26:9 | a | semmle.label | a |
| main.rs:26:13:26:22 | source(...) | semmle.label | source(...) |
| main.rs:27:10:27:10 | a | semmle.label | a |
| main.rs:28:9:28:9 | b | semmle.label | b |
| main.rs:28:13:28:13 | a | semmle.label | a |
| main.rs:28:13:28:21 | a.clone(...) | semmle.label | a.clone(...) |
| main.rs:29:10:29:10 | b | semmle.label | b |
| main.rs:41:13:41:13 | w [Wrapper] | semmle.label | w [Wrapper] |
| main.rs:41:17:41:41 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] |
| main.rs:41:30:41:39 | source(...) | semmle.label | source(...) |
| main.rs:42:15:42:15 | w [Wrapper] | semmle.label | w [Wrapper] |
| main.rs:43:13:43:28 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] |
| main.rs:43:26:43:26 | n | semmle.label | n |
| main.rs:43:38:43:38 | n | semmle.label | n |
| main.rs:45:13:45:13 | u [Wrapper] | semmle.label | u [Wrapper] |
| main.rs:45:17:45:17 | w [Wrapper] | semmle.label | w [Wrapper] |
| main.rs:45:17:45:25 | w.clone(...) [Wrapper] | semmle.label | w.clone(...) [Wrapper] |
| main.rs:46:15:46:15 | u [Wrapper] | semmle.label | u [Wrapper] |
| main.rs:47:13:47:28 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] |
| main.rs:47:26:47:26 | n | semmle.label | n |
| main.rs:47:38:47:38 | n | semmle.label | n |
| main.rs:58:13:58:13 | b [Some] | semmle.label | b [Some] |
| main.rs:58:17:58:32 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:58:22:58:31 | source(...) | semmle.label | source(...) |
| main.rs:59:13:59:13 | z [Some, tuple.1] | semmle.label | z [Some, tuple.1] |
| main.rs:59:17:59:24 | a.zip(...) [Some, tuple.1] | semmle.label | a.zip(...) [Some, tuple.1] |
| main.rs:59:23:59:23 | b [Some] | semmle.label | b [Some] |
| main.rs:60:15:60:15 | z [Some, tuple.1] | semmle.label | z [Some, tuple.1] |
| main.rs:61:13:61:24 | Some(...) [Some, tuple.1] | semmle.label | Some(...) [Some, tuple.1] |
| main.rs:61:18:61:23 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] |
| main.rs:61:22:61:22 | m | semmle.label | m |
| main.rs:63:22:63:22 | m | semmle.label | m |
| main.rs:84:29:84:29 | [post] y [&ref] | semmle.label | [post] y [&ref] |
| main.rs:84:32:84:41 | source(...) | semmle.label | source(...) |
| main.rs:85:18:85:34 | ...::read(...) | semmle.label | ...::read(...) |
| main.rs:85:33:85:33 | y [&ref] | semmle.label | y [&ref] |
>>>>>>> main
subpaths
testFailures
#select
You are viewing a condensed version of this merge commit. You can view the full changes here.