Rust: Model them.

This commit is contained in:
Geoffrey White
2025-02-13 17:42:41 +00:00
parent 2d9e1b3d16
commit fdcbbdfa08
4 changed files with 79 additions and 35 deletions

View File

@@ -24,6 +24,8 @@ extensions:
- ["lang:core", "<crate::result::Result>::unwrap_err_unchecked", "Argument[self].Variant[crate::result::Result::Err(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::result::Result>::expect", "Argument[self].Variant[crate::result::Result::Ok(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::result::Result>::expect_err", "Argument[self].Variant[crate::result::Result::Err(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::result::Result>::ok", "Argument[self].Variant[crate::result::Result::Ok(0)]", "ReturnValue.Variant[crate::option::Option::Some(0)]", "value", "manual"]
- ["lang:core", "<crate::result::Result>::err", "Argument[self].Variant[crate::result::Result::Err(0)]", "ReturnValue.Variant[crate::option::Option::Some(0)]", "value", "manual"]
# String
- ["lang:alloc", "<crate::string::String>::as_str", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["lang:alloc", "<crate::string::String>::as_bytes", "Argument[self]", "ReturnValue", "taint", "manual"]

View File

@@ -32,9 +32,9 @@ localStep
| file://:0:0:0:0 | [summary param] 0 in lang:core::_::<crate::option::Option>::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::unwrap_or | MaD:47 |
| file://:0:0:0:0 | [summary param] 0 in lang:core::_::<crate::option::Option>::unwrap_or_else | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::<crate::option::Option>::unwrap_or_else | MaD:50 |
| file://:0:0:0:0 | [summary param] 0 in lang:core::_::<crate::option::Option>::xor | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::xor | MaD:55 |
| file://:0:0:0:0 | [summary param] 0 in lang:core::_::<crate::result::Result>::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or | MaD:67 |
| file://:0:0:0:0 | [summary param] 0 in lang:core::_::<crate::result::Result>::unwrap_or_else | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::<crate::result::Result>::unwrap_or_else | MaD:70 |
| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::hint::must_use | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::crate::hint::must_use | MaD:73 |
| file://:0:0:0:0 | [summary param] 0 in lang:core::_::<crate::result::Result>::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or | MaD:69 |
| file://:0:0:0:0 | [summary param] 0 in lang:core::_::<crate::result::Result>::unwrap_or_else | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::<crate::result::Result>::unwrap_or_else | MaD:72 |
| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::hint::must_use | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::crate::hint::must_use | MaD:75 |
| file://:0:0:0:0 | [summary param] 1 in lang:core::_::<crate::option::Option>::map_or | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[closure self] in lang:core::_::<crate::option::Option>::map_or | MaD:30 |
| file://:0:0:0:0 | [summary param] 1 in lang:core::_::<crate::option::Option>::map_or | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[closure self] in lang:core::_::<crate::option::Option>::map_or | MaD:31 |
| file://:0:0:0:0 | [summary param] 1 in lang:core::_::<crate::option::Option>::map_or_else | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[closure self] in lang:core::_::<crate::option::Option>::map_or_else | MaD:33 |
@@ -55,14 +55,14 @@ localStep
| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::<crate::option::Option>::ok_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Err(0)] in lang:core::_::<crate::option::Option>::ok_or_else | MaD:37 |
| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::<crate::option::Option>::or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::or_else | MaD:41 |
| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::<crate::option::Option>::unwrap_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::unwrap_or_else | MaD:50 |
| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or_else | MaD:70 |
| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or_else | MaD:72 |
| file://:0:0:0:0 | [summary] read: Argument[0].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::zip | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)].Tuple[1] in lang:core::_::<crate::option::Option>::zip | MaD:57 |
| file://:0:0:0:0 | [summary] read: Argument[0].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::zip_with | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[1] in lang:core::_::<crate::option::Option>::zip_with | MaD:59 |
| file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::<crate::option::Option>::map_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::map_or | MaD:30 |
| file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::<crate::option::Option>::map_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::map_or_else | MaD:33 |
| file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::<crate::option::Option>::zip_with | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::zip_with | MaD:60 |
| file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::collect | file://:0:0:0:0 | [summary] to write: ReturnValue.Element in lang:core::_::crate::iter::traits::iterator::Iterator::collect | MaD:74 |
| file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::nth | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::crate::iter::traits::iterator::Iterator::nth | MaD:75 |
| file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::collect | file://:0:0:0:0 | [summary] to write: ReturnValue.Element in lang:core::_::crate::iter::traits::iterator::Iterator::collect | MaD:76 |
| file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::nth | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::crate::iter::traits::iterator::Iterator::nth | MaD:77 |
| file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::as_mut | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::as_mut | MaD:8 |
| file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::as_ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::as_ref | MaD:9 |
| file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::get_or_insert | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::get_or_insert | MaD:16 |
@@ -94,15 +94,17 @@ localStep
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)].Tuple[1] in lang:core::_::<crate::option::Option>::unzip | file://:0:0:0:0 | [summary] to write: ReturnValue.Tuple[1].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::unzip | MaD:54 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)].Variant[crate::result::Result::Err(0)] in lang:core::_::<crate::option::Option>::transpose | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Err(0)] in lang:core::_::<crate::option::Option>::transpose | MaD:44 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::option::Option>::transpose | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::transpose | MaD:45 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::<crate::result::Result>::expect_err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::expect_err | MaD:63 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::<crate::result::Result>::unwrap_err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_err | MaD:65 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::<crate::result::Result>::unwrap_err_unchecked | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_err_unchecked | MaD:66 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::expect | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::expect | MaD:62 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::unwrap | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap | MaD:64 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or | MaD:68 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::unwrap_or_default | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or_default | MaD:69 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::unwrap_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or_else | MaD:71 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::unwrap_unchecked | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_unchecked | MaD:72 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::<crate::result::Result>::err | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::result::Result>::err | MaD:62 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::<crate::result::Result>::expect_err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::expect_err | MaD:64 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::<crate::result::Result>::unwrap_err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_err | MaD:67 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::<crate::result::Result>::unwrap_err_unchecked | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_err_unchecked | MaD:68 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::expect | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::expect | MaD:63 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::result::Result>::ok | MaD:65 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::unwrap | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap | MaD:66 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or | MaD:70 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::unwrap_or_default | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or_default | MaD:71 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::unwrap_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or_else | MaD:73 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::unwrap_unchecked | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_unchecked | MaD:74 |
| main.rs:3:11:3:11 | [SSA] i | main.rs:4:12:4:12 | i | |
| main.rs:3:11:3:11 | i | main.rs:3:11:3:11 | [SSA] i | |
| main.rs:3:11:3:16 | ...: i64 | main.rs:3:11:3:11 | i | |
@@ -701,20 +703,22 @@ models
| 59 | Summary: lang:core; <crate::option::Option>::zip_with; Argument[0].Variant[crate::option::Option::Some(0)]; Argument[1].Parameter[1]; value |
| 60 | Summary: lang:core; <crate::option::Option>::zip_with; Argument[1].ReturnValue; ReturnValue.Variant[crate::option::Option::Some(0)]; value |
| 61 | Summary: lang:core; <crate::option::Option>::zip_with; Argument[self].Variant[crate::option::Option::Some(0)]; Argument[1].Parameter[0]; value |
| 62 | Summary: lang:core; <crate::result::Result>::expect; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 63 | Summary: lang:core; <crate::result::Result>::expect_err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value |
| 64 | Summary: lang:core; <crate::result::Result>::unwrap; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 65 | Summary: lang:core; <crate::result::Result>::unwrap_err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value |
| 66 | Summary: lang:core; <crate::result::Result>::unwrap_err_unchecked; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value |
| 67 | Summary: lang:core; <crate::result::Result>::unwrap_or; Argument[0]; ReturnValue; value |
| 68 | Summary: lang:core; <crate::result::Result>::unwrap_or; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 69 | Summary: lang:core; <crate::result::Result>::unwrap_or_default; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 70 | Summary: lang:core; <crate::result::Result>::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value |
| 71 | Summary: lang:core; <crate::result::Result>::unwrap_or_else; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 72 | Summary: lang:core; <crate::result::Result>::unwrap_unchecked; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 73 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value |
| 74 | Summary: lang:core; crate::iter::traits::iterator::Iterator::collect; Argument[self].Element; ReturnValue.Element; value |
| 75 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Variant[crate::option::Option::Some(0)]; value |
| 62 | Summary: lang:core; <crate::result::Result>::err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue.Variant[crate::option::Option::Some(0)]; value |
| 63 | Summary: lang:core; <crate::result::Result>::expect; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 64 | Summary: lang:core; <crate::result::Result>::expect_err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value |
| 65 | Summary: lang:core; <crate::result::Result>::ok; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue.Variant[crate::option::Option::Some(0)]; value |
| 66 | Summary: lang:core; <crate::result::Result>::unwrap; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 67 | Summary: lang:core; <crate::result::Result>::unwrap_err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value |
| 68 | Summary: lang:core; <crate::result::Result>::unwrap_err_unchecked; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value |
| 69 | Summary: lang:core; <crate::result::Result>::unwrap_or; Argument[0]; ReturnValue; value |
| 70 | Summary: lang:core; <crate::result::Result>::unwrap_or; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 71 | Summary: lang:core; <crate::result::Result>::unwrap_or_default; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 72 | Summary: lang:core; <crate::result::Result>::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value |
| 73 | Summary: lang:core; <crate::result::Result>::unwrap_or_else; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 74 | Summary: lang:core; <crate::result::Result>::unwrap_unchecked; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 75 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value |
| 76 | Summary: lang:core; crate::iter::traits::iterator::Iterator::collect; Argument[self].Element; ReturnValue.Element; value |
| 77 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Variant[crate::option::Option::Some(0)]; value |
storeStep
| file://:0:0:0:0 | [summary] to write: Argument[0].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::zip_with | Some | file://:0:0:0:0 | [post] [summary param] 0 in lang:core::_::<crate::option::Option>::zip_with |
| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::<crate::option::Option>::get_or_insert | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::<crate::option::Option>::get_or_insert |
@@ -744,6 +748,8 @@ storeStep
| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::map | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::map |
| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::zip | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::zip |
| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::zip_with | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::zip_with |
| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::result::Result>::err | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::err |
| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::result::Result>::ok | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::ok |
| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::crate::iter::traits::iterator::Iterator::nth | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::crate::iter::traits::iterator::Iterator::nth |
| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)].Tuple[0] in lang:core::_::<crate::option::Option>::zip | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::zip |
| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)].Tuple[1] in lang:core::_::<crate::option::Option>::zip | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::zip |
@@ -887,8 +893,10 @@ readStep
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::option::Option>::unzip | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::unzip |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::option::Option>::zip | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::zip |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::option::Option>::zip_with | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::zip_with |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::result::Result>::err | Err | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::<crate::result::Result>::err |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::result::Result>::expect | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::expect |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::result::Result>::expect_err | Err | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::<crate::result::Result>::expect_err |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::result::Result>::ok | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::ok |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::result::Result>::unwrap | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::unwrap |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::result::Result>::unwrap_err | Err | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::<crate::result::Result>::unwrap_err |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::result::Result>::unwrap_err_unchecked | Err | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::<crate::result::Result>::unwrap_err_unchecked |

View File

@@ -4,8 +4,10 @@ models
| 3 | Summary: lang:core; <crate::option::Option>::unwrap_or; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value |
| 4 | Summary: lang:core; <crate::option::Option>::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value |
| 5 | Summary: lang:core; <crate::option::Option>::unwrap_or_else; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value |
| 6 | Summary: lang:core; <crate::result::Result>::expect; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 7 | Summary: lang:core; <crate::result::Result>::expect_err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value |
| 6 | Summary: lang:core; <crate::result::Result>::err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue.Variant[crate::option::Option::Some(0)]; value |
| 7 | Summary: lang:core; <crate::result::Result>::expect; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 8 | Summary: lang:core; <crate::result::Result>::expect_err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value |
| 9 | Summary: lang:core; <crate::result::Result>::ok; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue.Variant[crate::option::Option::Some(0)]; value |
edges
| main.rs:22:9:22:9 | s | main.rs:23:10:23:10 | s | provenance | |
| main.rs:22:13:22:21 | source(...) | main.rs:22:9:22:9 | s | provenance | |
@@ -97,6 +99,20 @@ edges
| main.rs:263:9:263:10 | i1 | main.rs:264:10:264:11 | i1 | provenance | |
| main.rs:263:14:263:15 | s1 [Some] | main.rs:263:14:263:16 | TryExpr | provenance | |
| main.rs:263:14:263:16 | TryExpr | main.rs:263:9:263:10 | i1 | provenance | |
| main.rs:270:9:270:10 | r1 [Ok] | main.rs:271:29:271:30 | r1 [Ok] | provenance | |
| main.rs:270:33:270:46 | Ok(...) [Ok] | main.rs:270:9:270:10 | r1 [Ok] | provenance | |
| main.rs:270:36:270:45 | source(...) | main.rs:270:33:270:46 | Ok(...) [Ok] | provenance | |
| main.rs:271:9:271:11 | o1a [Some] | main.rs:273:10:273:12 | o1a [Some] | provenance | |
| main.rs:271:29:271:30 | r1 [Ok] | main.rs:271:29:271:35 | r1.ok(...) [Some] | provenance | MaD:9 |
| main.rs:271:29:271:35 | r1.ok(...) [Some] | main.rs:271:9:271:11 | o1a [Some] | provenance | |
| main.rs:273:10:273:12 | o1a [Some] | main.rs:273:10:273:21 | o1a.unwrap(...) | provenance | MaD:1 |
| main.rs:276:9:276:10 | r2 [Err] | main.rs:278:29:278:30 | r2 [Err] | provenance | |
| main.rs:276:33:276:47 | Err(...) [Err] | main.rs:276:9:276:10 | r2 [Err] | provenance | |
| main.rs:276:37:276:46 | source(...) | main.rs:276:33:276:47 | Err(...) [Err] | provenance | |
| main.rs:278:9:278:11 | o2b [Some] | main.rs:280:10:280:12 | o2b [Some] | provenance | |
| main.rs:278:29:278:30 | r2 [Err] | main.rs:278:29:278:36 | r2.err(...) [Some] | provenance | MaD:6 |
| main.rs:278:29:278:36 | r2.err(...) [Some] | main.rs:278:9:278:11 | o2b [Some] | provenance | |
| main.rs:280:10:280:12 | o2b [Some] | main.rs:280:10:280:21 | o2b.unwrap(...) | provenance | MaD:1 |
| main.rs:284:9:284:10 | s1 [Ok] | main.rs:287:14:287:15 | s1 [Ok] | provenance | |
| main.rs:284:32:284:45 | Ok(...) [Ok] | main.rs:284:9:284:10 | s1 [Ok] | provenance | |
| main.rs:284:35:284:44 | source(...) | main.rs:284:32:284:45 | Ok(...) [Ok] | provenance | |
@@ -106,11 +122,11 @@ edges
| main.rs:297:9:297:10 | s1 [Ok] | main.rs:298:10:298:11 | s1 [Ok] | provenance | |
| main.rs:297:32:297:45 | Ok(...) [Ok] | main.rs:297:9:297:10 | s1 [Ok] | provenance | |
| main.rs:297:35:297:44 | source(...) | main.rs:297:32:297:45 | Ok(...) [Ok] | provenance | |
| main.rs:298:10:298:11 | s1 [Ok] | main.rs:298:10:298:22 | s1.expect(...) | provenance | MaD:6 |
| main.rs:298:10:298:11 | s1 [Ok] | main.rs:298:10:298:22 | s1.expect(...) | provenance | MaD:7 |
| main.rs:301:9:301:10 | s2 [Err] | main.rs:303:10:303:11 | s2 [Err] | provenance | |
| main.rs:301:32:301:46 | Err(...) [Err] | main.rs:301:9:301:10 | s2 [Err] | provenance | |
| main.rs:301:36:301:45 | source(...) | main.rs:301:32:301:46 | Err(...) [Err] | provenance | |
| main.rs:303:10:303:11 | s2 [Err] | main.rs:303:10:303:26 | s2.expect_err(...) | provenance | MaD:7 |
| main.rs:303:10:303:11 | s2 [Err] | main.rs:303:10:303:26 | s2.expect_err(...) | provenance | MaD:8 |
| main.rs:312:9:312:10 | s1 [A] | main.rs:314:11:314:12 | s1 [A] | provenance | |
| main.rs:312:14:312:39 | ...::A(...) [A] | main.rs:312:9:312:10 | s1 [A] | provenance | |
| main.rs:312:29:312:38 | source(...) | main.rs:312:14:312:39 | ...::A(...) [A] | provenance | |
@@ -308,6 +324,22 @@ nodes
| main.rs:263:14:263:15 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:263:14:263:16 | TryExpr | semmle.label | TryExpr |
| main.rs:264:10:264:11 | i1 | semmle.label | i1 |
| main.rs:270:9:270:10 | r1 [Ok] | semmle.label | r1 [Ok] |
| main.rs:270:33:270:46 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
| main.rs:270:36:270:45 | source(...) | semmle.label | source(...) |
| main.rs:271:9:271:11 | o1a [Some] | semmle.label | o1a [Some] |
| main.rs:271:29:271:30 | r1 [Ok] | semmle.label | r1 [Ok] |
| main.rs:271:29:271:35 | r1.ok(...) [Some] | semmle.label | r1.ok(...) [Some] |
| main.rs:273:10:273:12 | o1a [Some] | semmle.label | o1a [Some] |
| main.rs:273:10:273:21 | o1a.unwrap(...) | semmle.label | o1a.unwrap(...) |
| main.rs:276:9:276:10 | r2 [Err] | semmle.label | r2 [Err] |
| main.rs:276:33:276:47 | Err(...) [Err] | semmle.label | Err(...) [Err] |
| main.rs:276:37:276:46 | source(...) | semmle.label | source(...) |
| main.rs:278:9:278:11 | o2b [Some] | semmle.label | o2b [Some] |
| main.rs:278:29:278:30 | r2 [Err] | semmle.label | r2 [Err] |
| main.rs:278:29:278:36 | r2.err(...) [Some] | semmle.label | r2.err(...) [Some] |
| main.rs:280:10:280:12 | o2b [Some] | semmle.label | o2b [Some] |
| main.rs:280:10:280:21 | o2b.unwrap(...) | semmle.label | o2b.unwrap(...) |
| main.rs:284:9:284:10 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:284:32:284:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
| main.rs:284:35:284:44 | source(...) | semmle.label | source(...) |
@@ -446,6 +478,8 @@ testFailures
| main.rs:254:10:254:32 | s1.unwrap_or_else(...) | main.rs:253:19:253:28 | source(...) | main.rs:254:10:254:32 | s1.unwrap_or_else(...) | $@ | main.rs:253:19:253:28 | source(...) | source(...) |
| main.rs:257:10:257:41 | s2.unwrap_or_else(...) | main.rs:257:31:257:40 | source(...) | main.rs:257:10:257:41 | s2.unwrap_or_else(...) | $@ | main.rs:257:31:257:40 | source(...) | source(...) |
| main.rs:264:10:264:11 | i1 | main.rs:261:19:261:28 | source(...) | main.rs:264:10:264:11 | i1 | $@ | main.rs:261:19:261:28 | source(...) | source(...) |
| main.rs:273:10:273:21 | o1a.unwrap(...) | main.rs:270:36:270:45 | source(...) | main.rs:273:10:273:21 | o1a.unwrap(...) | $@ | main.rs:270:36:270:45 | source(...) | source(...) |
| main.rs:280:10:280:21 | o2b.unwrap(...) | main.rs:276:37:276:46 | source(...) | main.rs:280:10:280:21 | o2b.unwrap(...) | $@ | main.rs:276:37:276:46 | source(...) | source(...) |
| main.rs:289:10:289:11 | i1 | main.rs:284:35:284:44 | source(...) | main.rs:289:10:289:11 | i1 | $@ | main.rs:284:35:284:44 | source(...) | source(...) |
| main.rs:298:10:298:22 | s1.expect(...) | main.rs:297:35:297:44 | source(...) | main.rs:298:10:298:22 | s1.expect(...) | $@ | main.rs:297:35:297:44 | source(...) | source(...) |
| main.rs:303:10:303:26 | s2.expect_err(...) | main.rs:301:36:301:45 | source(...) | main.rs:303:10:303:26 | s2.expect_err(...) | $@ | main.rs:301:36:301:45 | source(...) | source(...) |

View File

@@ -270,14 +270,14 @@ fn option_ok() {
let r1 : Result<i64, i64> = Ok(source(21));
let o1a : Option<i64> = r1.ok();
let o1b : Option<i64> = r1.err();
sink(o1a.unwrap()); // $ MISSING: hasValueFlow=21
sink(o1a.unwrap()); // $ hasValueFlow=21
sink(o1b.unwrap());
let r2 : Result<i64, i64> = Err(source(22));
let o2a : Option<i64> = r2.ok();
let o2b : Option<i64> = r2.err();
sink(o2a.unwrap());
sink(o2b.unwrap()); // $ MISSING: hasValueFlow=22
sink(o2b.unwrap()); // $ hasValueFlow=22
}
fn result_questionmark() -> Result<i64, i64> {