Merge pull request #18605 from geoffw0/expect

Rust: Improve models for environment sources, expect and unwrap
This commit is contained in:
Geoffrey White
2025-01-29 09:11:30 +00:00
committed by GitHub
11 changed files with 791 additions and 644 deletions

View File

@@ -49,16 +49,12 @@ final class DataFlowCallable extends TDataFlowCallable {
}
final class DataFlowCall extends TDataFlowCall {
private CallExprBaseCfgNode call;
DataFlowCall() { this = TCall(call) }
/** Gets the underlying call in the CFG, if any. */
CallExprCfgNode asCallExprCfgNode() { result = call }
CallExprCfgNode asCallExprCfgNode() { result = this.asCallBaseExprCfgNode() }
MethodCallExprCfgNode asMethodCallExprCfgNode() { result = call }
MethodCallExprCfgNode asMethodCallExprCfgNode() { result = this.asCallBaseExprCfgNode() }
CallExprBaseCfgNode asCallBaseExprCfgNode() { result = call }
CallExprBaseCfgNode asCallBaseExprCfgNode() { this = TCall(result) }
predicate isSummaryCall(
FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver
@@ -67,7 +63,7 @@ final class DataFlowCall extends TDataFlowCall {
}
DataFlowCallable getEnclosingCallable() {
result = TCfgScope(call.getExpr().getEnclosingCfgScope())
result = TCfgScope(this.asCallBaseExprCfgNode().getExpr().getEnclosingCfgScope())
or
exists(FlowSummaryImpl::Public::SummarizedCallable c |
this.isSummaryCall(c, _) and
@@ -1298,10 +1294,14 @@ module RustDataFlow implements InputSig<Location> {
* invoked expression.
*/
predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) {
receiver.asExpr() = call.asCallExprCfgNode().getFunction() and
// All calls to complex expressions and local variable accesses are lambda call.
exists(Expr f | f = receiver.asExpr().getExpr() |
f instanceof PathExpr implies f = any(Variable v).getAnAccess()
(
receiver.asExpr() = call.asCallExprCfgNode().getFunction() and
// All calls to complex expressions and local variable accesses are lambda call.
exists(Expr f | f = receiver.asExpr().getExpr() |
f instanceof PathExpr implies f = any(Variable v).getAnAccess()
)
or
call.isSummaryCall(_, receiver.(Node::FlowSummaryNode).getSummaryNode())
) and
exists(kind)
}

View File

@@ -5,10 +5,10 @@ extensions:
data:
- ["lang:std", "crate::env::args", "ReturnValue", "command-line-source", "manual"]
- ["lang:std", "crate::env::args_os", "ReturnValue", "command-line-source", "manual"]
- ["lang:std", "crate::env::current_dir", "ReturnValue", "command-line-source", "manual"]
- ["lang:std", "crate::env::current_exe", "ReturnValue", "command-line-source", "manual"]
- ["lang:std", "crate::env::home_dir", "ReturnValue", "command-line-source", "manual"]
- ["lang:std", "crate::env::var", "ReturnValue", "environment-source", "manual"]
- ["lang:std", "crate::env::var_os", "ReturnValue", "environment-source", "manual"]
- ["lang:std", "crate::env::current_dir", "ReturnValue.Variant[crate::result::Result::Ok(0)]", "command-line-source", "manual"]
- ["lang:std", "crate::env::current_exe", "ReturnValue.Variant[crate::result::Result::Ok(0)]", "command-line-source", "manual"]
- ["lang:std", "crate::env::home_dir", "ReturnValue.Variant[crate::option::Option::Some(0)]", "command-line-source", "manual"]
- ["lang:std", "crate::env::var", "ReturnValue.Variant[crate::result::Result::Ok(0)]", "environment-source", "manual"]
- ["lang:std", "crate::env::var_os", "ReturnValue.Variant[crate::option::Option::Some(0)]", "environment-source", "manual"]
- ["lang:std", "crate::env::vars", "ReturnValue", "environment-source", "manual"]
- ["lang:std", "crate::env::vars_os", "ReturnValue", "environment-source", "manual"]

View File

@@ -3,18 +3,31 @@ extensions:
pack: codeql/rust-all
extensible: summaryModel
data:
# Fmt
- ["lang:alloc", "crate::fmt::format", "Argument[0]", "ReturnValue", "taint", "manual"]
# Hint
- ["lang:core", "crate::hint::must_use", "Argument[0]", "ReturnValue", "value", "manual"]
# Option
- ["lang:core", "<crate::option::Option>::unwrap", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::option::Option>::unwrap_or", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::option::Option>::unwrap_or", "Argument[0]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::option::Option>::unwrap_or_default", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::option::Option>::unwrap_or_else", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::option::Option>::unwrap_or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::option::Option>::unwrap_unchecked", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::option::Option>::expect", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
# Result
- ["lang:core", "<crate::result::Result>::unwrap", "Argument[self].Variant[crate::result::Result::Ok(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::result::Result>::unwrap_or", "Argument[self].Variant[crate::result::Result::Ok(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::result::Result>::unwrap_or", "Argument[0]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::result::Result>::unwrap_or_default", "Argument[self].Variant[crate::result::Result::Ok(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::result::Result>::unwrap_or_else", "Argument[self].Variant[crate::result::Result::Ok(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::result::Result>::unwrap_or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::result::Result>::unwrap_unchecked", "Argument[self].Variant[crate::result::Result::Ok(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::result::Result>::unwrap_err", "Argument[self].Variant[crate::result::Result::Err(0)]", "ReturnValue", "value", "manual"]
- ["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"]
# 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"]
# Hint
- ["lang:core", "crate::hint::must_use", "Argument[0]", "ReturnValue", "value", "manual"]
# Fmt
- ["lang:alloc", "crate::fmt::format", "Argument[0]", "ReturnValue", "taint", "manual"]

View File

@@ -1,2 +1,2 @@
identityLocalStep
| main.rs:394:7:394:18 | phi(default_name) | Node steps to itself |
| main.rs:412:9:412:20 | phi(default_name) | Node steps to itself |

View File

@@ -1,11 +1,24 @@
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:3 |
| 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:6 |
| 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:8 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::unwrap | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::unwrap | MaD:2 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(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:4 |
| 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:5 |
| 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:7 |
| 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:4 |
| 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:15 |
| 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:21 |
| 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:7 |
| 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:18 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::expect | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::expect | MaD:2 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::unwrap | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::unwrap | MaD:3 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(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:5 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::unwrap_or_default | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::unwrap_or_default | MaD:6 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] 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:8 |
| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::unwrap_unchecked | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::unwrap_unchecked | MaD:9 |
| 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:11 |
| 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:13 |
| 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:14 |
| 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:10 |
| 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:12 |
| 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:16 |
| 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:17 |
| 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:19 |
| 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:20 |
| 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 | |
@@ -219,264 +232,293 @@ localStep
| main.rs:232:9:232:10 | [SSA] s2 | main.rs:233:10:233:11 | s2 | |
| main.rs:232:9:232:10 | s2 | main.rs:232:9:232:10 | [SSA] s2 | |
| main.rs:232:14:232:20 | Some(...) | main.rs:232:9:232:10 | s2 | |
| main.rs:237:9:237:10 | [SSA] s1 | main.rs:239:14:239:15 | s1 | |
| main.rs:237:9:237:10 | [SSA] s1 | main.rs:238:10:238:11 | s1 | |
| main.rs:237:9:237:10 | s1 | main.rs:237:9:237:10 | [SSA] s1 | |
| main.rs:237:14:237:29 | Some(...) | main.rs:237:9:237:10 | s1 | |
| main.rs:238:9:238:10 | [SSA] s2 | main.rs:241:10:241:11 | s2 | |
| main.rs:238:9:238:10 | s2 | main.rs:238:9:238:10 | [SSA] s2 | |
| main.rs:238:14:238:20 | Some(...) | main.rs:238:9:238:10 | s2 | |
| main.rs:239:9:239:10 | [SSA] i1 | main.rs:240:10:240:11 | i1 | |
| main.rs:239:9:239:10 | i1 | main.rs:239:9:239:10 | [SSA] i1 | |
| main.rs:239:14:239:16 | TryExpr | main.rs:239:9:239:10 | i1 | |
| main.rs:242:5:242:11 | Some(...) | main.rs:236:41:243:1 | { ... } | |
| main.rs:246:9:246:10 | [SSA] s1 | main.rs:249:14:249:15 | s1 | |
| main.rs:246:9:246:10 | s1 | main.rs:246:9:246:10 | [SSA] s1 | |
| main.rs:246:32:246:45 | Ok(...) | main.rs:246:9:246:10 | s1 | |
| main.rs:247:9:247:10 | [SSA] s2 | main.rs:250:14:250:15 | s2 | |
| main.rs:247:9:247:10 | s2 | main.rs:247:9:247:10 | [SSA] s2 | |
| main.rs:247:32:247:36 | Ok(...) | main.rs:247:9:247:10 | s2 | |
| main.rs:248:9:248:10 | [SSA] s3 | main.rs:253:14:253:15 | s3 | |
| main.rs:248:9:248:10 | s3 | main.rs:248:9:248:10 | [SSA] s3 | |
| main.rs:248:32:248:46 | Err(...) | main.rs:248:9:248:10 | s3 | |
| main.rs:249:9:249:10 | [SSA] i1 | main.rs:251:10:251:11 | i1 | |
| main.rs:249:9:249:10 | i1 | main.rs:249:9:249:10 | [SSA] i1 | |
| main.rs:249:14:249:16 | TryExpr | main.rs:249:9:249:10 | i1 | |
| main.rs:250:9:250:10 | [SSA] i2 | main.rs:252:10:252:11 | i2 | |
| main.rs:250:9:250:10 | i2 | main.rs:250:9:250:10 | [SSA] i2 | |
| main.rs:250:14:250:16 | TryExpr | main.rs:250:9:250:10 | i2 | |
| main.rs:253:9:253:10 | [SSA] i3 | main.rs:254:10:254:11 | i3 | |
| main.rs:253:9:253:10 | i3 | main.rs:253:9:253:10 | [SSA] i3 | |
| main.rs:253:14:253:16 | TryExpr | main.rs:253:9:253:10 | i3 | |
| main.rs:255:5:255:9 | Ok(...) | main.rs:245:46:256:1 | { ... } | |
| main.rs:264:9:264:10 | [SSA] s1 | main.rs:266:11:266:12 | s1 | |
| main.rs:264:9:264:10 | s1 | main.rs:264:9:264:10 | [SSA] s1 | |
| main.rs:264:14:264:39 | ...::A(...) | main.rs:264:9:264:10 | s1 | |
| main.rs:265:9:265:10 | [SSA] s2 | main.rs:273:11:273:12 | s2 | |
| main.rs:265:9:265:10 | s2 | main.rs:265:9:265:10 | [SSA] s2 | |
| main.rs:265:14:265:30 | ...::B(...) | main.rs:265:9:265:10 | s2 | |
| main.rs:266:11:266:12 | s1 | main.rs:267:9:267:25 | ...::A(...) | |
| main.rs:266:11:266:12 | s1 | main.rs:268:9:268:25 | ...::B(...) | |
| main.rs:266:11:266:12 | s1 | main.rs:270:11:270:12 | s1 | |
| main.rs:267:24:267:24 | [SSA] n | main.rs:267:35:267:35 | n | |
| main.rs:267:24:267:24 | n | main.rs:267:24:267:24 | [SSA] n | |
| main.rs:267:30:267:36 | sink(...) | main.rs:266:5:269:5 | match s1 { ... } | |
| main.rs:268:24:268:24 | [SSA] n | main.rs:268:35:268:35 | n | |
| main.rs:268:24:268:24 | n | main.rs:268:24:268:24 | [SSA] n | |
| main.rs:268:30:268:36 | sink(...) | main.rs:266:5:269:5 | match s1 { ... } | |
| main.rs:270:11:270:12 | s1 | main.rs:271:9:271:45 | ... \| ... | |
| main.rs:271:9:271:45 | ... \| ... | main.rs:271:9:271:25 | ...::A(...) | |
| main.rs:271:9:271:45 | ... \| ... | main.rs:271:29:271:45 | ...::B(...) | |
| main.rs:271:9:271:45 | [SSA] [match(true)] phi | main.rs:271:55:271:55 | n | |
| main.rs:271:24:271:24 | [SSA] [input] [match(true)] phi | main.rs:271:9:271:45 | [SSA] [match(true)] phi | |
| main.rs:271:24:271:24 | [SSA] n | main.rs:271:24:271:24 | [SSA] [input] [match(true)] phi | |
| main.rs:271:24:271:24 | n | main.rs:271:24:271:24 | [SSA] n | |
| main.rs:271:44:271:44 | [SSA] [input] [match(true)] phi | main.rs:271:9:271:45 | [SSA] [match(true)] phi | |
| main.rs:271:44:271:44 | [SSA] n | main.rs:271:44:271:44 | [SSA] [input] [match(true)] phi | |
| main.rs:271:44:271:44 | n | main.rs:271:44:271:44 | [SSA] n | |
| main.rs:271:50:271:56 | sink(...) | main.rs:270:5:272:5 | match s1 { ... } | |
| main.rs:273:5:276:5 | match s2 { ... } | main.rs:263:48:277:1 | { ... } | |
| main.rs:273:11:273:12 | s2 | main.rs:274:9:274:25 | ...::A(...) | |
| main.rs:273:11:273:12 | s2 | main.rs:275:9:275:25 | ...::B(...) | |
| main.rs:274:24:274:24 | [SSA] n | main.rs:274:35:274:35 | n | |
| main.rs:274:24:274:24 | n | main.rs:274:24:274:24 | [SSA] n | |
| main.rs:274:30:274:36 | sink(...) | main.rs:273:5:276:5 | match s2 { ... } | |
| main.rs:275:24:275:24 | [SSA] n | main.rs:275:35:275:35 | n | |
| main.rs:275:24:275:24 | n | main.rs:275:24:275:24 | [SSA] n | |
| main.rs:275:30:275:36 | sink(...) | main.rs:273:5:276:5 | match s2 { ... } | |
| main.rs:240:9:240:10 | [SSA] s2 | main.rs:241:10:241:11 | s2 | |
| main.rs:240:9:240:10 | s2 | main.rs:240:9:240:10 | [SSA] s2 | |
| main.rs:240:14:240:17 | None | main.rs:240:9:240:10 | s2 | |
| main.rs:245:9:245:10 | [SSA] s1 | main.rs:247:14:247:15 | s1 | |
| main.rs:245:9:245:10 | s1 | main.rs:245:9:245:10 | [SSA] s1 | |
| main.rs:245:14:245:29 | Some(...) | main.rs:245:9:245:10 | s1 | |
| main.rs:246:9:246:10 | [SSA] s2 | main.rs:249:10:249:11 | s2 | |
| main.rs:246:9:246:10 | s2 | main.rs:246:9:246:10 | [SSA] s2 | |
| main.rs:246:14:246:20 | Some(...) | main.rs:246:9:246:10 | s2 | |
| main.rs:247:9:247:10 | [SSA] i1 | main.rs:248:10:248:11 | i1 | |
| main.rs:247:9:247:10 | i1 | main.rs:247:9:247:10 | [SSA] i1 | |
| main.rs:247:14:247:16 | TryExpr | main.rs:247:9:247:10 | i1 | |
| main.rs:250:5:250:11 | Some(...) | main.rs:244:41:251:1 | { ... } | |
| main.rs:254:9:254:10 | [SSA] s1 | main.rs:257:14:257:15 | s1 | |
| main.rs:254:9:254:10 | s1 | main.rs:254:9:254:10 | [SSA] s1 | |
| main.rs:254:32:254:45 | Ok(...) | main.rs:254:9:254:10 | s1 | |
| main.rs:255:9:255:10 | [SSA] s2 | main.rs:258:14:258:15 | s2 | |
| main.rs:255:9:255:10 | s2 | main.rs:255:9:255:10 | [SSA] s2 | |
| main.rs:255:32:255:36 | Ok(...) | main.rs:255:9:255:10 | s2 | |
| main.rs:256:9:256:10 | [SSA] s3 | main.rs:261:14:261:15 | s3 | |
| main.rs:256:9:256:10 | s3 | main.rs:256:9:256:10 | [SSA] s3 | |
| main.rs:256:32:256:46 | Err(...) | main.rs:256:9:256:10 | s3 | |
| main.rs:257:9:257:10 | [SSA] i1 | main.rs:259:10:259:11 | i1 | |
| main.rs:257:9:257:10 | i1 | main.rs:257:9:257:10 | [SSA] i1 | |
| main.rs:257:14:257:16 | TryExpr | main.rs:257:9:257:10 | i1 | |
| main.rs:258:9:258:10 | [SSA] i2 | main.rs:260:10:260:11 | i2 | |
| main.rs:258:9:258:10 | i2 | main.rs:258:9:258:10 | [SSA] i2 | |
| main.rs:258:14:258:16 | TryExpr | main.rs:258:9:258:10 | i2 | |
| main.rs:261:9:261:10 | [SSA] i3 | main.rs:262:10:262:11 | i3 | |
| main.rs:261:9:261:10 | i3 | main.rs:261:9:261:10 | [SSA] i3 | |
| main.rs:261:14:261:16 | TryExpr | main.rs:261:9:261:10 | i3 | |
| main.rs:263:5:263:9 | Ok(...) | main.rs:253:46:264:1 | { ... } | |
| main.rs:267:9:267:10 | [SSA] s1 | main.rs:268:10:268:11 | s1 | |
| main.rs:267:9:267:10 | s1 | main.rs:267:9:267:10 | [SSA] s1 | |
| main.rs:267:32:267:45 | Ok(...) | main.rs:267:9:267:10 | s1 | |
| main.rs:268:10:268:11 | [post] s1 | main.rs:269:10:269:11 | s1 | |
| main.rs:268:10:268:11 | s1 | main.rs:269:10:269:11 | s1 | |
| main.rs:271:9:271:10 | [SSA] s2 | main.rs:272:10:272:11 | s2 | |
| main.rs:271:9:271:10 | s2 | main.rs:271:9:271:10 | [SSA] s2 | |
| main.rs:271:32:271:46 | Err(...) | main.rs:271:9:271:10 | s2 | |
| main.rs:272:10:272:11 | [post] s2 | main.rs:273:10:273:11 | s2 | |
| main.rs:272:10:272:11 | s2 | main.rs:273:10:273:11 | s2 | |
| main.rs:282:9:282:10 | [SSA] s1 | main.rs:284:11:284:12 | s1 | |
| main.rs:282:9:282:10 | s1 | main.rs:282:9:282:10 | [SSA] s1 | |
| main.rs:282:14:282:26 | A(...) | main.rs:282:9:282:10 | s1 | |
| main.rs:282:14:282:39 | ...::A(...) | main.rs:282:9:282:10 | s1 | |
| main.rs:283:9:283:10 | [SSA] s2 | main.rs:291:11:291:12 | s2 | |
| main.rs:283:9:283:10 | s2 | main.rs:283:9:283:10 | [SSA] s2 | |
| main.rs:283:14:283:17 | B(...) | main.rs:283:9:283:10 | s2 | |
| main.rs:284:11:284:12 | s1 | main.rs:285:9:285:12 | A(...) | |
| main.rs:284:11:284:12 | s1 | main.rs:286:9:286:12 | B(...) | |
| main.rs:283:14:283:30 | ...::B(...) | main.rs:283:9:283:10 | s2 | |
| main.rs:284:11:284:12 | s1 | main.rs:285:9:285:25 | ...::A(...) | |
| main.rs:284:11:284:12 | s1 | main.rs:286:9:286:25 | ...::B(...) | |
| main.rs:284:11:284:12 | s1 | main.rs:288:11:288:12 | s1 | |
| main.rs:285:11:285:11 | [SSA] n | main.rs:285:22:285:22 | n | |
| main.rs:285:11:285:11 | n | main.rs:285:11:285:11 | [SSA] n | |
| main.rs:285:17:285:23 | sink(...) | main.rs:284:5:287:5 | match s1 { ... } | |
| main.rs:286:11:286:11 | [SSA] n | main.rs:286:22:286:22 | n | |
| main.rs:286:11:286:11 | n | main.rs:286:11:286:11 | [SSA] n | |
| main.rs:286:17:286:23 | sink(...) | main.rs:284:5:287:5 | match s1 { ... } | |
| main.rs:288:11:288:12 | s1 | main.rs:289:9:289:19 | ... \| ... | |
| main.rs:289:9:289:19 | ... \| ... | main.rs:289:9:289:12 | A(...) | |
| main.rs:289:9:289:19 | ... \| ... | main.rs:289:16:289:19 | B(...) | |
| main.rs:289:9:289:19 | [SSA] [match(true)] phi | main.rs:289:29:289:29 | n | |
| main.rs:289:11:289:11 | [SSA] [input] [match(true)] phi | main.rs:289:9:289:19 | [SSA] [match(true)] phi | |
| main.rs:289:11:289:11 | [SSA] n | main.rs:289:11:289:11 | [SSA] [input] [match(true)] phi | |
| main.rs:289:11:289:11 | n | main.rs:289:11:289:11 | [SSA] n | |
| main.rs:289:18:289:18 | [SSA] [input] [match(true)] phi | main.rs:289:9:289:19 | [SSA] [match(true)] phi | |
| main.rs:289:18:289:18 | [SSA] n | main.rs:289:18:289:18 | [SSA] [input] [match(true)] phi | |
| main.rs:289:18:289:18 | n | main.rs:289:18:289:18 | [SSA] n | |
| main.rs:289:24:289:30 | sink(...) | main.rs:288:5:290:5 | match s1 { ... } | |
| main.rs:291:5:294:5 | match s2 { ... } | main.rs:281:50:295:1 | { ... } | |
| main.rs:291:11:291:12 | s2 | main.rs:292:9:292:12 | A(...) | |
| main.rs:291:11:291:12 | s2 | main.rs:293:9:293:12 | B(...) | |
| main.rs:292:11:292:11 | [SSA] n | main.rs:292:22:292:22 | n | |
| main.rs:292:11:292:11 | n | main.rs:292:11:292:11 | [SSA] n | |
| main.rs:292:17:292:23 | sink(...) | main.rs:291:5:294:5 | match s2 { ... } | |
| main.rs:293:11:293:11 | [SSA] n | main.rs:293:22:293:22 | n | |
| main.rs:293:11:293:11 | n | main.rs:293:11:293:11 | [SSA] n | |
| main.rs:293:17:293:23 | sink(...) | main.rs:291:5:294:5 | match s2 { ... } | |
| main.rs:303:9:303:10 | [SSA] s1 | main.rs:307:11:307:12 | s1 | |
| main.rs:303:9:303:10 | s1 | main.rs:303:9:303:10 | [SSA] s1 | |
| main.rs:303:14:305:5 | ...::C {...} | main.rs:303:9:303:10 | s1 | |
| main.rs:306:9:306:10 | [SSA] s2 | main.rs:314:11:314:12 | s2 | |
| main.rs:306:9:306:10 | s2 | main.rs:306:9:306:10 | [SSA] s2 | |
| main.rs:306:14:306:43 | ...::D {...} | main.rs:306:9:306:10 | s2 | |
| main.rs:307:11:307:12 | s1 | main.rs:308:9:308:38 | ...::C {...} | |
| main.rs:307:11:307:12 | s1 | main.rs:309:9:309:38 | ...::D {...} | |
| main.rs:307:11:307:12 | s1 | main.rs:311:11:311:12 | s1 | |
| main.rs:308:36:308:36 | [SSA] n | main.rs:308:48:308:48 | n | |
| main.rs:308:36:308:36 | n | main.rs:308:36:308:36 | [SSA] n | |
| main.rs:308:43:308:49 | sink(...) | main.rs:307:5:310:5 | match s1 { ... } | |
| main.rs:309:36:309:36 | [SSA] n | main.rs:309:48:309:48 | n | |
| main.rs:309:36:309:36 | n | main.rs:309:36:309:36 | [SSA] n | |
| main.rs:309:43:309:49 | sink(...) | main.rs:307:5:310:5 | match s1 { ... } | |
| main.rs:311:11:311:12 | s1 | main.rs:312:9:312:71 | ... \| ... | |
| main.rs:312:9:312:71 | ... \| ... | main.rs:312:9:312:38 | ...::C {...} | |
| main.rs:312:9:312:71 | ... \| ... | main.rs:312:42:312:71 | ...::D {...} | |
| main.rs:312:9:312:71 | [SSA] [match(true)] phi | main.rs:312:81:312:81 | n | |
| main.rs:312:36:312:36 | [SSA] [input] [match(true)] phi | main.rs:312:9:312:71 | [SSA] [match(true)] phi | |
| main.rs:312:36:312:36 | [SSA] n | main.rs:312:36:312:36 | [SSA] [input] [match(true)] phi | |
| main.rs:312:36:312:36 | n | main.rs:312:36:312:36 | [SSA] n | |
| main.rs:312:69:312:69 | [SSA] [input] [match(true)] phi | main.rs:312:9:312:71 | [SSA] [match(true)] phi | |
| main.rs:312:69:312:69 | [SSA] n | main.rs:312:69:312:69 | [SSA] [input] [match(true)] phi | |
| main.rs:312:69:312:69 | n | main.rs:312:69:312:69 | [SSA] n | |
| main.rs:312:76:312:82 | sink(...) | main.rs:311:5:313:5 | match s1 { ... } | |
| main.rs:314:5:317:5 | match s2 { ... } | main.rs:302:49:318:1 | { ... } | |
| main.rs:314:11:314:12 | s2 | main.rs:315:9:315:38 | ...::C {...} | |
| main.rs:314:11:314:12 | s2 | main.rs:316:9:316:38 | ...::D {...} | |
| main.rs:315:36:315:36 | [SSA] n | main.rs:315:48:315:48 | n | |
| main.rs:315:36:315:36 | n | main.rs:315:36:315:36 | [SSA] n | |
| main.rs:315:43:315:49 | sink(...) | main.rs:314:5:317:5 | match s2 { ... } | |
| main.rs:316:36:316:36 | [SSA] n | main.rs:316:48:316:48 | n | |
| main.rs:316:36:316:36 | n | main.rs:316:36:316:36 | [SSA] n | |
| main.rs:316:43:316:49 | sink(...) | main.rs:314:5:317:5 | match s2 { ... } | |
| main.rs:323:9:323:10 | [SSA] s1 | main.rs:327:11:327:12 | s1 | |
| main.rs:323:9:323:10 | s1 | main.rs:323:9:323:10 | [SSA] s1 | |
| main.rs:323:14:325:5 | C {...} | main.rs:323:9:323:10 | s1 | |
| main.rs:326:9:326:10 | [SSA] s2 | main.rs:334:11:334:12 | s2 | |
| main.rs:326:9:326:10 | s2 | main.rs:326:9:326:10 | [SSA] s2 | |
| main.rs:326:14:326:29 | D {...} | main.rs:326:9:326:10 | s2 | |
| main.rs:327:11:327:12 | s1 | main.rs:328:9:328:24 | C {...} | |
| main.rs:327:11:327:12 | s1 | main.rs:329:9:329:24 | D {...} | |
| main.rs:327:11:327:12 | s1 | main.rs:331:11:331:12 | s1 | |
| main.rs:328:22:328:22 | [SSA] n | main.rs:328:34:328:34 | n | |
| main.rs:328:22:328:22 | n | main.rs:328:22:328:22 | [SSA] n | |
| main.rs:328:29:328:35 | sink(...) | main.rs:327:5:330:5 | match s1 { ... } | |
| main.rs:329:22:329:22 | [SSA] n | main.rs:329:34:329:34 | n | |
| main.rs:329:22:329:22 | n | main.rs:329:22:329:22 | [SSA] n | |
| main.rs:329:29:329:35 | sink(...) | main.rs:327:5:330:5 | match s1 { ... } | |
| main.rs:331:11:331:12 | s1 | main.rs:332:9:332:43 | ... \| ... | |
| main.rs:332:9:332:43 | ... \| ... | main.rs:332:9:332:24 | C {...} | |
| main.rs:332:9:332:43 | ... \| ... | main.rs:332:28:332:43 | D {...} | |
| main.rs:332:9:332:43 | [SSA] [match(true)] phi | main.rs:332:53:332:53 | n | |
| main.rs:332:22:332:22 | [SSA] [input] [match(true)] phi | main.rs:332:9:332:43 | [SSA] [match(true)] phi | |
| main.rs:332:22:332:22 | [SSA] n | main.rs:332:22:332:22 | [SSA] [input] [match(true)] phi | |
| main.rs:332:22:332:22 | n | main.rs:332:22:332:22 | [SSA] n | |
| main.rs:332:41:332:41 | [SSA] [input] [match(true)] phi | main.rs:332:9:332:43 | [SSA] [match(true)] phi | |
| main.rs:332:41:332:41 | [SSA] n | main.rs:332:41:332:41 | [SSA] [input] [match(true)] phi | |
| main.rs:332:41:332:41 | n | main.rs:332:41:332:41 | [SSA] n | |
| main.rs:332:48:332:54 | sink(...) | main.rs:331:5:333:5 | match s1 { ... } | |
| main.rs:334:5:337:5 | match s2 { ... } | main.rs:322:51:338:1 | { ... } | |
| main.rs:334:11:334:12 | s2 | main.rs:335:9:335:24 | C {...} | |
| main.rs:334:11:334:12 | s2 | main.rs:336:9:336:24 | D {...} | |
| main.rs:335:22:335:22 | [SSA] n | main.rs:335:34:335:34 | n | |
| main.rs:335:22:335:22 | n | main.rs:335:22:335:22 | [SSA] n | |
| main.rs:335:29:335:35 | sink(...) | main.rs:334:5:337:5 | match s2 { ... } | |
| main.rs:336:22:336:22 | [SSA] n | main.rs:336:34:336:34 | n | |
| main.rs:336:22:336:22 | n | main.rs:336:22:336:22 | [SSA] n | |
| main.rs:336:29:336:35 | sink(...) | main.rs:334:5:337:5 | match s2 { ... } | |
| main.rs:344:9:344:12 | [SSA] arr1 | main.rs:345:14:345:17 | arr1 | |
| main.rs:344:9:344:12 | arr1 | main.rs:344:9:344:12 | [SSA] arr1 | |
| main.rs:344:16:344:33 | [...] | main.rs:344:9:344:12 | arr1 | |
| main.rs:345:9:345:10 | [SSA] n1 | main.rs:346:10:346:11 | n1 | |
| main.rs:345:9:345:10 | n1 | main.rs:345:9:345:10 | [SSA] n1 | |
| main.rs:345:14:345:20 | arr1[2] | main.rs:345:9:345:10 | n1 | |
| main.rs:348:9:348:12 | [SSA] arr2 | main.rs:349:14:349:17 | arr2 | |
| main.rs:348:9:348:12 | arr2 | main.rs:348:9:348:12 | [SSA] arr2 | |
| main.rs:348:16:348:31 | [...; 10] | main.rs:348:9:348:12 | arr2 | |
| main.rs:349:9:349:10 | [SSA] n2 | main.rs:350:10:350:11 | n2 | |
| main.rs:349:9:349:10 | n2 | main.rs:349:9:349:10 | [SSA] n2 | |
| main.rs:349:14:349:20 | arr2[4] | main.rs:349:9:349:10 | n2 | |
| main.rs:352:9:352:12 | [SSA] arr3 | main.rs:353:14:353:17 | arr3 | |
| main.rs:352:9:352:12 | arr3 | main.rs:352:9:352:12 | [SSA] arr3 | |
| main.rs:352:16:352:24 | [...] | main.rs:352:9:352:12 | arr3 | |
| main.rs:353:9:353:10 | [SSA] n3 | main.rs:354:10:354:11 | n3 | |
| main.rs:353:9:353:10 | n3 | main.rs:353:9:353:10 | [SSA] n3 | |
| main.rs:353:14:353:20 | arr3[2] | main.rs:353:9:353:10 | n3 | |
| main.rs:358:9:358:12 | [SSA] arr1 | main.rs:359:15:359:18 | arr1 | |
| main.rs:358:9:358:12 | arr1 | main.rs:358:9:358:12 | [SSA] arr1 | |
| main.rs:358:16:358:33 | [...] | main.rs:358:9:358:12 | arr1 | |
| main.rs:359:9:359:10 | [SSA] n1 | main.rs:360:14:360:15 | n1 | |
| main.rs:359:9:359:10 | n1 | main.rs:359:9:359:10 | [SSA] n1 | |
| main.rs:363:9:363:12 | [SSA] arr2 | main.rs:364:15:364:18 | arr2 | |
| main.rs:363:9:363:12 | arr2 | main.rs:363:9:363:12 | [SSA] arr2 | |
| main.rs:363:16:363:24 | [...] | main.rs:363:9:363:12 | arr2 | |
| main.rs:364:5:366:5 | for ... in ... { ... } | main.rs:357:21:367:1 | { ... } | |
| main.rs:364:9:364:10 | [SSA] n2 | main.rs:365:14:365:15 | n2 | |
| main.rs:364:9:364:10 | n2 | main.rs:364:9:364:10 | [SSA] n2 | |
| main.rs:370:9:370:12 | [SSA] arr1 | main.rs:371:11:371:14 | arr1 | |
| main.rs:370:9:370:12 | arr1 | main.rs:370:9:370:12 | [SSA] arr1 | |
| main.rs:370:16:370:33 | [...] | main.rs:370:9:370:12 | arr1 | |
| main.rs:371:5:377:5 | match arr1 { ... } | main.rs:369:26:378:1 | { ... } | |
| main.rs:371:11:371:14 | arr1 | main.rs:372:9:372:17 | SlicePat | |
| main.rs:372:10:372:10 | [SSA] a | main.rs:373:18:373:18 | a | |
| main.rs:372:10:372:10 | a | main.rs:372:10:372:10 | [SSA] a | |
| main.rs:372:13:372:13 | [SSA] b | main.rs:374:18:374:18 | b | |
| main.rs:372:13:372:13 | b | main.rs:372:13:372:13 | [SSA] b | |
| main.rs:372:16:372:16 | [SSA] c | main.rs:375:18:375:18 | c | |
| main.rs:372:16:372:16 | c | main.rs:372:16:372:16 | [SSA] c | |
| main.rs:372:22:376:9 | { ... } | main.rs:371:5:377:5 | match arr1 { ... } | |
| main.rs:381:9:381:19 | [SSA] mut_arr | main.rs:382:10:382:16 | mut_arr | |
| main.rs:381:9:381:19 | mut_arr | main.rs:381:9:381:19 | [SSA] mut_arr | |
| main.rs:381:23:381:31 | [...] | main.rs:381:9:381:19 | mut_arr | |
| main.rs:382:10:382:16 | [post] mut_arr | main.rs:384:5:384:11 | mut_arr | |
| main.rs:382:10:382:16 | mut_arr | main.rs:384:5:384:11 | mut_arr | |
| main.rs:384:5:384:11 | [post] mut_arr | main.rs:385:13:385:19 | mut_arr | |
| main.rs:384:5:384:11 | mut_arr | main.rs:385:13:385:19 | mut_arr | |
| main.rs:384:18:384:27 | source(...) | main.rs:384:5:384:14 | mut_arr[1] | |
| main.rs:385:9:385:9 | [SSA] d | main.rs:386:10:386:10 | d | |
| main.rs:385:9:385:9 | d | main.rs:385:9:385:9 | [SSA] d | |
| main.rs:385:13:385:19 | [post] mut_arr | main.rs:387:10:387:16 | mut_arr | |
| main.rs:385:13:385:19 | mut_arr | main.rs:387:10:387:16 | mut_arr | |
| main.rs:385:13:385:22 | mut_arr[1] | main.rs:385:9:385:9 | d | |
| main.rs:392:39:392:43 | [SSA] names | main.rs:394:23:394:27 | names | |
| main.rs:392:39:392:43 | names | main.rs:392:39:392:43 | [SSA] names | |
| main.rs:392:39:392:72 | ...: Vec::<...> | main.rs:392:39:392:43 | names | |
| main.rs:393:7:393:18 | default_name | main.rs:393:7:393:18 | [SSA] default_name | |
| main.rs:393:22:393:43 | ... .to_string(...) | main.rs:393:7:393:18 | default_name | |
| main.rs:393:22:393:43 | ... .to_string(...) | main.rs:394:7:394:18 | phi(default_name) | |
| main.rs:394:3:400:3 | for ... in ... { ... } | main.rs:392:75:401:1 | { ... } | |
| main.rs:394:7:394:18 | phi(default_name) | main.rs:394:7:394:18 | phi(default_name) | |
| main.rs:394:7:394:18 | phi(default_name) | main.rs:396:35:396:61 | default_name | |
| main.rs:394:8:394:11 | [SSA] cond | main.rs:395:8:395:11 | cond | |
| main.rs:394:8:394:11 | cond | main.rs:394:8:394:11 | [SSA] cond | |
| main.rs:394:14:394:17 | [SSA] name | main.rs:396:15:396:18 | name | |
| main.rs:394:14:394:17 | name | main.rs:394:14:394:17 | [SSA] name | |
| main.rs:395:5:399:5 | if cond {...} | main.rs:394:29:400:3 | { ... } | |
| main.rs:396:11:396:11 | [SSA] n | main.rs:397:12:397:12 | n | |
| main.rs:396:11:396:11 | n | main.rs:396:11:396:11 | [SSA] n | |
| main.rs:396:15:396:62 | name.unwrap_or_else(...) | main.rs:396:11:396:11 | n | |
| main.rs:396:35:396:61 | [post] default_name | main.rs:394:7:394:18 | phi(default_name) | |
| main.rs:396:35:396:61 | closure self in \|...\| ... | main.rs:396:38:396:49 | this | |
| main.rs:396:35:396:61 | default_name | main.rs:394:7:394:18 | phi(default_name) | |
| main.rs:410:9:410:9 | [SSA] s | main.rs:411:10:411:10 | s | |
| main.rs:410:9:410:9 | s | main.rs:410:9:410:9 | [SSA] s | |
| main.rs:410:13:410:27 | MacroExpr | main.rs:410:9:410:9 | s | |
| main.rs:410:25:410:26 | source(...) | main.rs:410:13:410:27 | MacroExpr | |
| main.rs:436:13:436:33 | result_questionmark(...) | main.rs:436:9:436:9 | _ | |
| main.rs:448:36:448:41 | ...::new(...) | main.rs:448:36:448:41 | MacroExpr | |
| main.rs:285:24:285:24 | [SSA] n | main.rs:285:35:285:35 | n | |
| main.rs:285:24:285:24 | n | main.rs:285:24:285:24 | [SSA] n | |
| main.rs:285:30:285:36 | sink(...) | main.rs:284:5:287:5 | match s1 { ... } | |
| main.rs:286:24:286:24 | [SSA] n | main.rs:286:35:286:35 | n | |
| main.rs:286:24:286:24 | n | main.rs:286:24:286:24 | [SSA] n | |
| main.rs:286:30:286:36 | sink(...) | main.rs:284:5:287:5 | match s1 { ... } | |
| main.rs:288:11:288:12 | s1 | main.rs:289:9:289:45 | ... \| ... | |
| main.rs:289:9:289:45 | ... \| ... | main.rs:289:9:289:25 | ...::A(...) | |
| main.rs:289:9:289:45 | ... \| ... | main.rs:289:29:289:45 | ...::B(...) | |
| main.rs:289:9:289:45 | [SSA] [match(true)] phi | main.rs:289:55:289:55 | n | |
| main.rs:289:24:289:24 | [SSA] [input] [match(true)] phi | main.rs:289:9:289:45 | [SSA] [match(true)] phi | |
| main.rs:289:24:289:24 | [SSA] n | main.rs:289:24:289:24 | [SSA] [input] [match(true)] phi | |
| main.rs:289:24:289:24 | n | main.rs:289:24:289:24 | [SSA] n | |
| main.rs:289:44:289:44 | [SSA] [input] [match(true)] phi | main.rs:289:9:289:45 | [SSA] [match(true)] phi | |
| main.rs:289:44:289:44 | [SSA] n | main.rs:289:44:289:44 | [SSA] [input] [match(true)] phi | |
| main.rs:289:44:289:44 | n | main.rs:289:44:289:44 | [SSA] n | |
| main.rs:289:50:289:56 | sink(...) | main.rs:288:5:290:5 | match s1 { ... } | |
| main.rs:291:5:294:5 | match s2 { ... } | main.rs:281:48:295:1 | { ... } | |
| main.rs:291:11:291:12 | s2 | main.rs:292:9:292:25 | ...::A(...) | |
| main.rs:291:11:291:12 | s2 | main.rs:293:9:293:25 | ...::B(...) | |
| main.rs:292:24:292:24 | [SSA] n | main.rs:292:35:292:35 | n | |
| main.rs:292:24:292:24 | n | main.rs:292:24:292:24 | [SSA] n | |
| main.rs:292:30:292:36 | sink(...) | main.rs:291:5:294:5 | match s2 { ... } | |
| main.rs:293:24:293:24 | [SSA] n | main.rs:293:35:293:35 | n | |
| main.rs:293:24:293:24 | n | main.rs:293:24:293:24 | [SSA] n | |
| main.rs:293:30:293:36 | sink(...) | main.rs:291:5:294:5 | match s2 { ... } | |
| main.rs:300:9:300:10 | [SSA] s1 | main.rs:302:11:302:12 | s1 | |
| main.rs:300:9:300:10 | s1 | main.rs:300:9:300:10 | [SSA] s1 | |
| main.rs:300:14:300:26 | A(...) | main.rs:300:9:300:10 | s1 | |
| main.rs:301:9:301:10 | [SSA] s2 | main.rs:309:11:309:12 | s2 | |
| main.rs:301:9:301:10 | s2 | main.rs:301:9:301:10 | [SSA] s2 | |
| main.rs:301:14:301:17 | B(...) | main.rs:301:9:301:10 | s2 | |
| main.rs:302:11:302:12 | s1 | main.rs:303:9:303:12 | A(...) | |
| main.rs:302:11:302:12 | s1 | main.rs:304:9:304:12 | B(...) | |
| main.rs:302:11:302:12 | s1 | main.rs:306:11:306:12 | s1 | |
| main.rs:303:11:303:11 | [SSA] n | main.rs:303:22:303:22 | n | |
| main.rs:303:11:303:11 | n | main.rs:303:11:303:11 | [SSA] n | |
| main.rs:303:17:303:23 | sink(...) | main.rs:302:5:305:5 | match s1 { ... } | |
| main.rs:304:11:304:11 | [SSA] n | main.rs:304:22:304:22 | n | |
| main.rs:304:11:304:11 | n | main.rs:304:11:304:11 | [SSA] n | |
| main.rs:304:17:304:23 | sink(...) | main.rs:302:5:305:5 | match s1 { ... } | |
| main.rs:306:11:306:12 | s1 | main.rs:307:9:307:19 | ... \| ... | |
| main.rs:307:9:307:19 | ... \| ... | main.rs:307:9:307:12 | A(...) | |
| main.rs:307:9:307:19 | ... \| ... | main.rs:307:16:307:19 | B(...) | |
| main.rs:307:9:307:19 | [SSA] [match(true)] phi | main.rs:307:29:307:29 | n | |
| main.rs:307:11:307:11 | [SSA] [input] [match(true)] phi | main.rs:307:9:307:19 | [SSA] [match(true)] phi | |
| main.rs:307:11:307:11 | [SSA] n | main.rs:307:11:307:11 | [SSA] [input] [match(true)] phi | |
| main.rs:307:11:307:11 | n | main.rs:307:11:307:11 | [SSA] n | |
| main.rs:307:18:307:18 | [SSA] [input] [match(true)] phi | main.rs:307:9:307:19 | [SSA] [match(true)] phi | |
| main.rs:307:18:307:18 | [SSA] n | main.rs:307:18:307:18 | [SSA] [input] [match(true)] phi | |
| main.rs:307:18:307:18 | n | main.rs:307:18:307:18 | [SSA] n | |
| main.rs:307:24:307:30 | sink(...) | main.rs:306:5:308:5 | match s1 { ... } | |
| main.rs:309:5:312:5 | match s2 { ... } | main.rs:299:50:313:1 | { ... } | |
| main.rs:309:11:309:12 | s2 | main.rs:310:9:310:12 | A(...) | |
| main.rs:309:11:309:12 | s2 | main.rs:311:9:311:12 | B(...) | |
| main.rs:310:11:310:11 | [SSA] n | main.rs:310:22:310:22 | n | |
| main.rs:310:11:310:11 | n | main.rs:310:11:310:11 | [SSA] n | |
| main.rs:310:17:310:23 | sink(...) | main.rs:309:5:312:5 | match s2 { ... } | |
| main.rs:311:11:311:11 | [SSA] n | main.rs:311:22:311:22 | n | |
| main.rs:311:11:311:11 | n | main.rs:311:11:311:11 | [SSA] n | |
| main.rs:311:17:311:23 | sink(...) | main.rs:309:5:312:5 | match s2 { ... } | |
| main.rs:321:9:321:10 | [SSA] s1 | main.rs:325:11:325:12 | s1 | |
| main.rs:321:9:321:10 | s1 | main.rs:321:9:321:10 | [SSA] s1 | |
| main.rs:321:14:323:5 | ...::C {...} | main.rs:321:9:321:10 | s1 | |
| main.rs:324:9:324:10 | [SSA] s2 | main.rs:332:11:332:12 | s2 | |
| main.rs:324:9:324:10 | s2 | main.rs:324:9:324:10 | [SSA] s2 | |
| main.rs:324:14:324:43 | ...::D {...} | main.rs:324:9:324:10 | s2 | |
| main.rs:325:11:325:12 | s1 | main.rs:326:9:326:38 | ...::C {...} | |
| main.rs:325:11:325:12 | s1 | main.rs:327:9:327:38 | ...::D {...} | |
| main.rs:325:11:325:12 | s1 | main.rs:329:11:329:12 | s1 | |
| main.rs:326:36:326:36 | [SSA] n | main.rs:326:48:326:48 | n | |
| main.rs:326:36:326:36 | n | main.rs:326:36:326:36 | [SSA] n | |
| main.rs:326:43:326:49 | sink(...) | main.rs:325:5:328:5 | match s1 { ... } | |
| main.rs:327:36:327:36 | [SSA] n | main.rs:327:48:327:48 | n | |
| main.rs:327:36:327:36 | n | main.rs:327:36:327:36 | [SSA] n | |
| main.rs:327:43:327:49 | sink(...) | main.rs:325:5:328:5 | match s1 { ... } | |
| main.rs:329:11:329:12 | s1 | main.rs:330:9:330:71 | ... \| ... | |
| main.rs:330:9:330:71 | ... \| ... | main.rs:330:9:330:38 | ...::C {...} | |
| main.rs:330:9:330:71 | ... \| ... | main.rs:330:42:330:71 | ...::D {...} | |
| main.rs:330:9:330:71 | [SSA] [match(true)] phi | main.rs:330:81:330:81 | n | |
| main.rs:330:36:330:36 | [SSA] [input] [match(true)] phi | main.rs:330:9:330:71 | [SSA] [match(true)] phi | |
| main.rs:330:36:330:36 | [SSA] n | main.rs:330:36:330:36 | [SSA] [input] [match(true)] phi | |
| main.rs:330:36:330:36 | n | main.rs:330:36:330:36 | [SSA] n | |
| main.rs:330:69:330:69 | [SSA] [input] [match(true)] phi | main.rs:330:9:330:71 | [SSA] [match(true)] phi | |
| main.rs:330:69:330:69 | [SSA] n | main.rs:330:69:330:69 | [SSA] [input] [match(true)] phi | |
| main.rs:330:69:330:69 | n | main.rs:330:69:330:69 | [SSA] n | |
| main.rs:330:76:330:82 | sink(...) | main.rs:329:5:331:5 | match s1 { ... } | |
| main.rs:332:5:335:5 | match s2 { ... } | main.rs:320:49:336:1 | { ... } | |
| main.rs:332:11:332:12 | s2 | main.rs:333:9:333:38 | ...::C {...} | |
| main.rs:332:11:332:12 | s2 | main.rs:334:9:334:38 | ...::D {...} | |
| main.rs:333:36:333:36 | [SSA] n | main.rs:333:48:333:48 | n | |
| main.rs:333:36:333:36 | n | main.rs:333:36:333:36 | [SSA] n | |
| main.rs:333:43:333:49 | sink(...) | main.rs:332:5:335:5 | match s2 { ... } | |
| main.rs:334:36:334:36 | [SSA] n | main.rs:334:48:334:48 | n | |
| main.rs:334:36:334:36 | n | main.rs:334:36:334:36 | [SSA] n | |
| main.rs:334:43:334:49 | sink(...) | main.rs:332:5:335:5 | match s2 { ... } | |
| main.rs:341:9:341:10 | [SSA] s1 | main.rs:345:11:345:12 | s1 | |
| main.rs:341:9:341:10 | s1 | main.rs:341:9:341:10 | [SSA] s1 | |
| main.rs:341:14:343:5 | C {...} | main.rs:341:9:341:10 | s1 | |
| main.rs:344:9:344:10 | [SSA] s2 | main.rs:352:11:352:12 | s2 | |
| main.rs:344:9:344:10 | s2 | main.rs:344:9:344:10 | [SSA] s2 | |
| main.rs:344:14:344:29 | D {...} | main.rs:344:9:344:10 | s2 | |
| main.rs:345:11:345:12 | s1 | main.rs:346:9:346:24 | C {...} | |
| main.rs:345:11:345:12 | s1 | main.rs:347:9:347:24 | D {...} | |
| main.rs:345:11:345:12 | s1 | main.rs:349:11:349:12 | s1 | |
| main.rs:346:22:346:22 | [SSA] n | main.rs:346:34:346:34 | n | |
| main.rs:346:22:346:22 | n | main.rs:346:22:346:22 | [SSA] n | |
| main.rs:346:29:346:35 | sink(...) | main.rs:345:5:348:5 | match s1 { ... } | |
| main.rs:347:22:347:22 | [SSA] n | main.rs:347:34:347:34 | n | |
| main.rs:347:22:347:22 | n | main.rs:347:22:347:22 | [SSA] n | |
| main.rs:347:29:347:35 | sink(...) | main.rs:345:5:348:5 | match s1 { ... } | |
| main.rs:349:11:349:12 | s1 | main.rs:350:9:350:43 | ... \| ... | |
| main.rs:350:9:350:43 | ... \| ... | main.rs:350:9:350:24 | C {...} | |
| main.rs:350:9:350:43 | ... \| ... | main.rs:350:28:350:43 | D {...} | |
| main.rs:350:9:350:43 | [SSA] [match(true)] phi | main.rs:350:53:350:53 | n | |
| main.rs:350:22:350:22 | [SSA] [input] [match(true)] phi | main.rs:350:9:350:43 | [SSA] [match(true)] phi | |
| main.rs:350:22:350:22 | [SSA] n | main.rs:350:22:350:22 | [SSA] [input] [match(true)] phi | |
| main.rs:350:22:350:22 | n | main.rs:350:22:350:22 | [SSA] n | |
| main.rs:350:41:350:41 | [SSA] [input] [match(true)] phi | main.rs:350:9:350:43 | [SSA] [match(true)] phi | |
| main.rs:350:41:350:41 | [SSA] n | main.rs:350:41:350:41 | [SSA] [input] [match(true)] phi | |
| main.rs:350:41:350:41 | n | main.rs:350:41:350:41 | [SSA] n | |
| main.rs:350:48:350:54 | sink(...) | main.rs:349:5:351:5 | match s1 { ... } | |
| main.rs:352:5:355:5 | match s2 { ... } | main.rs:340:51:356:1 | { ... } | |
| main.rs:352:11:352:12 | s2 | main.rs:353:9:353:24 | C {...} | |
| main.rs:352:11:352:12 | s2 | main.rs:354:9:354:24 | D {...} | |
| main.rs:353:22:353:22 | [SSA] n | main.rs:353:34:353:34 | n | |
| main.rs:353:22:353:22 | n | main.rs:353:22:353:22 | [SSA] n | |
| main.rs:353:29:353:35 | sink(...) | main.rs:352:5:355:5 | match s2 { ... } | |
| main.rs:354:22:354:22 | [SSA] n | main.rs:354:34:354:34 | n | |
| main.rs:354:22:354:22 | n | main.rs:354:22:354:22 | [SSA] n | |
| main.rs:354:29:354:35 | sink(...) | main.rs:352:5:355:5 | match s2 { ... } | |
| main.rs:362:9:362:12 | [SSA] arr1 | main.rs:363:14:363:17 | arr1 | |
| main.rs:362:9:362:12 | arr1 | main.rs:362:9:362:12 | [SSA] arr1 | |
| main.rs:362:16:362:33 | [...] | main.rs:362:9:362:12 | arr1 | |
| main.rs:363:9:363:10 | [SSA] n1 | main.rs:364:10:364:11 | n1 | |
| main.rs:363:9:363:10 | n1 | main.rs:363:9:363:10 | [SSA] n1 | |
| main.rs:363:14:363:20 | arr1[2] | main.rs:363:9:363:10 | n1 | |
| main.rs:366:9:366:12 | [SSA] arr2 | main.rs:367:14:367:17 | arr2 | |
| main.rs:366:9:366:12 | arr2 | main.rs:366:9:366:12 | [SSA] arr2 | |
| main.rs:366:16:366:31 | [...; 10] | main.rs:366:9:366:12 | arr2 | |
| main.rs:367:9:367:10 | [SSA] n2 | main.rs:368:10:368:11 | n2 | |
| main.rs:367:9:367:10 | n2 | main.rs:367:9:367:10 | [SSA] n2 | |
| main.rs:367:14:367:20 | arr2[4] | main.rs:367:9:367:10 | n2 | |
| main.rs:370:9:370:12 | [SSA] arr3 | main.rs:371:14:371:17 | arr3 | |
| main.rs:370:9:370:12 | arr3 | main.rs:370:9:370:12 | [SSA] arr3 | |
| main.rs:370:16:370:24 | [...] | main.rs:370:9:370:12 | arr3 | |
| main.rs:371:9:371:10 | [SSA] n3 | main.rs:372:10:372:11 | n3 | |
| main.rs:371:9:371:10 | n3 | main.rs:371:9:371:10 | [SSA] n3 | |
| main.rs:371:14:371:20 | arr3[2] | main.rs:371:9:371:10 | n3 | |
| main.rs:376:9:376:12 | [SSA] arr1 | main.rs:377:15:377:18 | arr1 | |
| main.rs:376:9:376:12 | arr1 | main.rs:376:9:376:12 | [SSA] arr1 | |
| main.rs:376:16:376:33 | [...] | main.rs:376:9:376:12 | arr1 | |
| main.rs:377:9:377:10 | [SSA] n1 | main.rs:378:14:378:15 | n1 | |
| main.rs:377:9:377:10 | n1 | main.rs:377:9:377:10 | [SSA] n1 | |
| main.rs:381:9:381:12 | [SSA] arr2 | main.rs:382:15:382:18 | arr2 | |
| main.rs:381:9:381:12 | arr2 | main.rs:381:9:381:12 | [SSA] arr2 | |
| main.rs:381:16:381:24 | [...] | main.rs:381:9:381:12 | arr2 | |
| main.rs:382:5:384:5 | for ... in ... { ... } | main.rs:375:21:385:1 | { ... } | |
| main.rs:382:9:382:10 | [SSA] n2 | main.rs:383:14:383:15 | n2 | |
| main.rs:382:9:382:10 | n2 | main.rs:382:9:382:10 | [SSA] n2 | |
| main.rs:388:9:388:12 | [SSA] arr1 | main.rs:389:11:389:14 | arr1 | |
| main.rs:388:9:388:12 | arr1 | main.rs:388:9:388:12 | [SSA] arr1 | |
| main.rs:388:16:388:33 | [...] | main.rs:388:9:388:12 | arr1 | |
| main.rs:389:5:395:5 | match arr1 { ... } | main.rs:387:26:396:1 | { ... } | |
| main.rs:389:11:389:14 | arr1 | main.rs:390:9:390:17 | SlicePat | |
| main.rs:390:10:390:10 | [SSA] a | main.rs:391:18:391:18 | a | |
| main.rs:390:10:390:10 | a | main.rs:390:10:390:10 | [SSA] a | |
| main.rs:390:13:390:13 | [SSA] b | main.rs:392:18:392:18 | b | |
| main.rs:390:13:390:13 | b | main.rs:390:13:390:13 | [SSA] b | |
| main.rs:390:16:390:16 | [SSA] c | main.rs:393:18:393:18 | c | |
| main.rs:390:16:390:16 | c | main.rs:390:16:390:16 | [SSA] c | |
| main.rs:390:22:394:9 | { ... } | main.rs:389:5:395:5 | match arr1 { ... } | |
| main.rs:399:9:399:19 | [SSA] mut_arr | main.rs:400:10:400:16 | mut_arr | |
| main.rs:399:9:399:19 | mut_arr | main.rs:399:9:399:19 | [SSA] mut_arr | |
| main.rs:399:23:399:31 | [...] | main.rs:399:9:399:19 | mut_arr | |
| main.rs:400:10:400:16 | [post] mut_arr | main.rs:402:5:402:11 | mut_arr | |
| main.rs:400:10:400:16 | mut_arr | main.rs:402:5:402:11 | mut_arr | |
| main.rs:402:5:402:11 | [post] mut_arr | main.rs:403:13:403:19 | mut_arr | |
| main.rs:402:5:402:11 | mut_arr | main.rs:403:13:403:19 | mut_arr | |
| main.rs:402:18:402:27 | source(...) | main.rs:402:5:402:14 | mut_arr[1] | |
| main.rs:403:9:403:9 | [SSA] d | main.rs:404:10:404:10 | d | |
| main.rs:403:9:403:9 | d | main.rs:403:9:403:9 | [SSA] d | |
| main.rs:403:13:403:19 | [post] mut_arr | main.rs:405:10:405:16 | mut_arr | |
| main.rs:403:13:403:19 | mut_arr | main.rs:405:10:405:16 | mut_arr | |
| main.rs:403:13:403:22 | mut_arr[1] | main.rs:403:9:403:9 | d | |
| main.rs:410:39:410:43 | [SSA] names | main.rs:412:25:412:29 | names | |
| main.rs:410:39:410:43 | names | main.rs:410:39:410:43 | [SSA] names | |
| main.rs:410:39:410:72 | ...: Vec::<...> | main.rs:410:39:410:43 | names | |
| main.rs:411:9:411:20 | default_name | main.rs:411:9:411:20 | [SSA] default_name | |
| main.rs:411:24:411:45 | ... .to_string(...) | main.rs:411:9:411:20 | default_name | |
| main.rs:411:24:411:45 | ... .to_string(...) | main.rs:412:9:412:20 | phi(default_name) | |
| main.rs:412:5:418:5 | for ... in ... { ... } | main.rs:410:75:419:1 | { ... } | |
| main.rs:412:9:412:20 | phi(default_name) | main.rs:412:9:412:20 | phi(default_name) | |
| main.rs:412:9:412:20 | phi(default_name) | main.rs:414:41:414:67 | default_name | |
| main.rs:412:10:412:13 | [SSA] cond | main.rs:413:12:413:15 | cond | |
| main.rs:412:10:412:13 | cond | main.rs:412:10:412:13 | [SSA] cond | |
| main.rs:412:16:412:19 | [SSA] name | main.rs:414:21:414:24 | name | |
| main.rs:412:16:412:19 | name | main.rs:412:16:412:19 | [SSA] name | |
| main.rs:413:9:417:9 | if cond {...} | main.rs:412:31:418:5 | { ... } | |
| main.rs:414:17:414:17 | [SSA] n | main.rs:415:18:415:18 | n | |
| main.rs:414:17:414:17 | n | main.rs:414:17:414:17 | [SSA] n | |
| main.rs:414:21:414:68 | name.unwrap_or_else(...) | main.rs:414:17:414:17 | n | |
| main.rs:414:41:414:67 | [post] default_name | main.rs:412:9:412:20 | phi(default_name) | |
| main.rs:414:41:414:67 | closure self in \|...\| ... | main.rs:414:44:414:55 | this | |
| main.rs:414:41:414:67 | default_name | main.rs:412:9:412:20 | phi(default_name) | |
| main.rs:428:9:428:9 | [SSA] s | main.rs:429:10:429:10 | s | |
| main.rs:428:9:428:9 | s | main.rs:428:9:428:9 | [SSA] s | |
| main.rs:428:13:428:27 | MacroExpr | main.rs:428:9:428:9 | s | |
| main.rs:428:25:428:26 | source(...) | main.rs:428:13:428:27 | MacroExpr | |
| main.rs:454:13:454:33 | result_questionmark(...) | main.rs:454:9:454:9 | _ | |
| main.rs:466:36:466:41 | ...::new(...) | main.rs:466:36:466:41 | MacroExpr | |
models
| 1 | Sink: lang:std; crate::io::stdio::_print; log-injection; Argument[0] |
| 2 | Summary: lang:core; <crate::option::Option>::unwrap; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value |
| 3 | Summary: lang:core; <crate::option::Option>::unwrap_or; Argument[0]; ReturnValue; value |
| 4 | Summary: lang:core; <crate::option::Option>::unwrap_or; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value |
| 5 | Summary: lang:core; <crate::result::Result>::unwrap; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 6 | Summary: lang:core; <crate::result::Result>::unwrap_or; Argument[0]; ReturnValue; value |
| 7 | Summary: lang:core; <crate::result::Result>::unwrap_or; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 8 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value |
| 2 | Summary: lang:core; <crate::option::Option>::expect; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value |
| 3 | Summary: lang:core; <crate::option::Option>::unwrap; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value |
| 4 | Summary: lang:core; <crate::option::Option>::unwrap_or; Argument[0]; ReturnValue; value |
| 5 | Summary: lang:core; <crate::option::Option>::unwrap_or; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value |
| 6 | Summary: lang:core; <crate::option::Option>::unwrap_or_default; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value |
| 7 | Summary: lang:core; <crate::option::Option>::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value |
| 8 | Summary: lang:core; <crate::option::Option>::unwrap_or_else; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value |
| 9 | Summary: lang:core; <crate::option::Option>::unwrap_unchecked; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value |
| 10 | Summary: lang:core; <crate::result::Result>::expect; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 11 | Summary: lang:core; <crate::result::Result>::expect_err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value |
| 12 | Summary: lang:core; <crate::result::Result>::unwrap; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 13 | Summary: lang:core; <crate::result::Result>::unwrap_err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value |
| 14 | Summary: lang:core; <crate::result::Result>::unwrap_err_unchecked; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value |
| 15 | Summary: lang:core; <crate::result::Result>::unwrap_or; Argument[0]; ReturnValue; value |
| 16 | Summary: lang:core; <crate::result::Result>::unwrap_or; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 17 | Summary: lang:core; <crate::result::Result>::unwrap_or_default; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 18 | Summary: lang:core; <crate::result::Result>::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value |
| 19 | Summary: lang:core; <crate::result::Result>::unwrap_or_else; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 20 | Summary: lang:core; <crate::result::Result>::unwrap_unchecked; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 21 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value |
storeStep
| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::<crate::blocking::response::Response>::bytes | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::<crate::blocking::response::Response>::bytes |
| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::<crate::blocking::response::Response>::text | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::<crate::blocking::response::Response>::text |
@@ -521,47 +563,61 @@ storeStep
| main.rs:229:19:229:28 | source(...) | Some | main.rs:229:14:229:29 | Some(...) |
| main.rs:232:19:232:19 | 0 | Some | main.rs:232:14:232:20 | Some(...) |
| main.rs:237:19:237:28 | source(...) | Some | main.rs:237:14:237:29 | Some(...) |
| main.rs:238:19:238:19 | 2 | Some | main.rs:238:14:238:20 | Some(...) |
| main.rs:242:10:242:10 | 0 | Some | main.rs:242:5:242:11 | Some(...) |
| main.rs:246:35:246:44 | source(...) | Ok | main.rs:246:32:246:45 | Ok(...) |
| main.rs:247:35:247:35 | 2 | Ok | main.rs:247:32:247:36 | Ok(...) |
| main.rs:248:36:248:45 | source(...) | Err | main.rs:248:32:248:46 | Err(...) |
| main.rs:255:8:255:8 | 0 | Ok | main.rs:255:5:255:9 | Ok(...) |
| main.rs:264:29:264:38 | source(...) | A | main.rs:264:14:264:39 | ...::A(...) |
| main.rs:265:29:265:29 | 2 | B | main.rs:265:14:265:30 | ...::B(...) |
| main.rs:282:16:282:25 | source(...) | A | main.rs:282:14:282:26 | A(...) |
| main.rs:283:16:283:16 | 2 | B | main.rs:283:14:283:17 | B(...) |
| main.rs:304:18:304:27 | source(...) | C | main.rs:303:14:305:5 | ...::C {...} |
| main.rs:306:41:306:41 | 2 | D | main.rs:306:14:306:43 | ...::D {...} |
| main.rs:324:18:324:27 | source(...) | C | main.rs:323:14:325:5 | C {...} |
| main.rs:326:27:326:27 | 2 | D | main.rs:326:14:326:29 | D {...} |
| main.rs:344:17:344:17 | 1 | element | main.rs:344:16:344:33 | [...] |
| main.rs:344:20:344:20 | 2 | element | main.rs:344:16:344:33 | [...] |
| main.rs:344:23:344:32 | source(...) | element | main.rs:344:16:344:33 | [...] |
| main.rs:348:17:348:26 | source(...) | element | main.rs:348:16:348:31 | [...; 10] |
| main.rs:352:17:352:17 | 1 | element | main.rs:352:16:352:24 | [...] |
| main.rs:352:20:352:20 | 2 | element | main.rs:352:16:352:24 | [...] |
| main.rs:352:23:352:23 | 3 | element | main.rs:352:16:352:24 | [...] |
| main.rs:358:17:358:17 | 1 | element | main.rs:358:16:358:33 | [...] |
| main.rs:358:20:358:20 | 2 | element | main.rs:358:16:358:33 | [...] |
| main.rs:358:23:358:32 | source(...) | element | main.rs:358:16:358:33 | [...] |
| main.rs:363:17:363:17 | 1 | element | main.rs:363:16:363:24 | [...] |
| main.rs:363:20:363:20 | 2 | element | main.rs:363:16:363:24 | [...] |
| main.rs:363:23:363:23 | 3 | element | main.rs:363:16:363:24 | [...] |
| main.rs:370:17:370:17 | 1 | element | main.rs:370:16:370:33 | [...] |
| main.rs:370:20:370:20 | 2 | element | main.rs:370:16:370:33 | [...] |
| main.rs:370:23:370:32 | source(...) | element | main.rs:370:16:370:33 | [...] |
| main.rs:381:24:381:24 | 1 | element | main.rs:381:23:381:31 | [...] |
| main.rs:381:27:381:27 | 2 | element | main.rs:381:23:381:31 | [...] |
| main.rs:381:30:381:30 | 3 | element | main.rs:381:23:381:31 | [...] |
| main.rs:384:18:384:27 | source(...) | element | main.rs:384:5:384:11 | [post] mut_arr |
| main.rs:396:35:396:61 | default_name | captured default_name | main.rs:396:35:396:61 | \|...\| ... |
| main.rs:418:27:418:27 | 0 | Some | main.rs:418:22:418:28 | Some(...) |
| main.rs:245:19:245:28 | source(...) | Some | main.rs:245:14:245:29 | Some(...) |
| main.rs:246:19:246:19 | 2 | Some | main.rs:246:14:246:20 | Some(...) |
| main.rs:250:10:250:10 | 0 | Some | main.rs:250:5:250:11 | Some(...) |
| main.rs:254:35:254:44 | source(...) | Ok | main.rs:254:32:254:45 | Ok(...) |
| main.rs:255:35:255:35 | 2 | Ok | main.rs:255:32:255:36 | Ok(...) |
| main.rs:256:36:256:45 | source(...) | Err | main.rs:256:32:256:46 | Err(...) |
| main.rs:263:8:263:8 | 0 | Ok | main.rs:263:5:263:9 | Ok(...) |
| main.rs:267:35:267:44 | source(...) | Ok | main.rs:267:32:267:45 | Ok(...) |
| main.rs:271:36:271:45 | source(...) | Err | main.rs:271:32:271:46 | Err(...) |
| main.rs:282:29:282:38 | source(...) | A | main.rs:282:14:282:39 | ...::A(...) |
| main.rs:283:29:283:29 | 2 | B | main.rs:283:14:283:30 | ...::B(...) |
| main.rs:300:16:300:25 | source(...) | A | main.rs:300:14:300:26 | A(...) |
| main.rs:301:16:301:16 | 2 | B | main.rs:301:14:301:17 | B(...) |
| main.rs:322:18:322:27 | source(...) | C | main.rs:321:14:323:5 | ...::C {...} |
| main.rs:324:41:324:41 | 2 | D | main.rs:324:14:324:43 | ...::D {...} |
| main.rs:342:18:342:27 | source(...) | C | main.rs:341:14:343:5 | C {...} |
| main.rs:344:27:344:27 | 2 | D | main.rs:344:14:344:29 | D {...} |
| main.rs:362:17:362:17 | 1 | element | main.rs:362:16:362:33 | [...] |
| main.rs:362:20:362:20 | 2 | element | main.rs:362:16:362:33 | [...] |
| main.rs:362:23:362:32 | source(...) | element | main.rs:362:16:362:33 | [...] |
| main.rs:366:17:366:26 | source(...) | element | main.rs:366:16:366:31 | [...; 10] |
| main.rs:370:17:370:17 | 1 | element | main.rs:370:16:370:24 | [...] |
| main.rs:370:20:370:20 | 2 | element | main.rs:370:16:370:24 | [...] |
| main.rs:370:23:370:23 | 3 | element | main.rs:370:16:370:24 | [...] |
| main.rs:376:17:376:17 | 1 | element | main.rs:376:16:376:33 | [...] |
| main.rs:376:20:376:20 | 2 | element | main.rs:376:16:376:33 | [...] |
| main.rs:376:23:376:32 | source(...) | element | main.rs:376:16:376:33 | [...] |
| main.rs:381:17:381:17 | 1 | element | main.rs:381:16:381:24 | [...] |
| main.rs:381:20:381:20 | 2 | element | main.rs:381:16:381:24 | [...] |
| main.rs:381:23:381:23 | 3 | element | main.rs:381:16:381:24 | [...] |
| main.rs:388:17:388:17 | 1 | element | main.rs:388:16:388:33 | [...] |
| main.rs:388:20:388:20 | 2 | element | main.rs:388:16:388:33 | [...] |
| main.rs:388:23:388:32 | source(...) | element | main.rs:388:16:388:33 | [...] |
| main.rs:399:24:399:24 | 1 | element | main.rs:399:23:399:31 | [...] |
| main.rs:399:27:399:27 | 2 | element | main.rs:399:23:399:31 | [...] |
| main.rs:399:30:399:30 | 3 | element | main.rs:399:23:399:31 | [...] |
| main.rs:402:18:402:27 | source(...) | element | main.rs:402:5:402:11 | [post] mut_arr |
| main.rs:414:41:414:67 | default_name | captured default_name | main.rs:414:41:414:67 | \|...\| ... |
| main.rs:436:27:436:27 | 0 | Some | main.rs:436:22:436:28 | Some(...) |
readStep
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::option::Option>::expect | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::expect |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::option::Option>::unwrap | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::unwrap |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::option::Option>::unwrap_or | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::unwrap_or |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::option::Option>::unwrap_or_default | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::unwrap_or_default |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::option::Option>::unwrap_or_else | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::unwrap_or_else |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::option::Option>::unwrap_unchecked | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::unwrap_unchecked |
| 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>::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 |
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::result::Result>::unwrap_or | Ok | 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 param] self in lang:core::_::<crate::result::Result>::unwrap_or_default | Ok | 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 param] self in lang:core::_::<crate::result::Result>::unwrap_or_else | Ok | 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 param] self in lang:core::_::<crate::result::Result>::unwrap_unchecked | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::<crate::result::Result>::unwrap_unchecked |
| main.rs:33:9:33:15 | Some(...) | Some | main.rs:33:14:33:14 | _ |
| main.rs:87:11:87:11 | i | &ref | main.rs:87:10:87:11 | * ... |
| main.rs:95:10:95:10 | a | tuple.0 | main.rs:95:10:95:12 | a.0 |
@@ -587,54 +643,54 @@ readStep
| main.rs:205:9:205:23 | ...::Some(...) | Some | main.rs:205:22:205:22 | n |
| main.rs:214:9:214:15 | Some(...) | Some | main.rs:214:14:214:14 | n |
| main.rs:218:9:218:15 | Some(...) | Some | main.rs:218:14:218:14 | n |
| main.rs:239:14:239:15 | s1 | Ok | main.rs:239:14:239:16 | TryExpr |
| main.rs:239:14:239:15 | s1 | Some | main.rs:239:14:239:16 | TryExpr |
| main.rs:241:10:241:11 | s2 | Ok | main.rs:241:10:241:12 | TryExpr |
| main.rs:241:10:241:11 | s2 | Some | main.rs:241:10:241:12 | TryExpr |
| main.rs:249:14:249:15 | s1 | Ok | main.rs:249:14:249:16 | TryExpr |
| main.rs:249:14:249:15 | s1 | Some | main.rs:249:14:249:16 | TryExpr |
| main.rs:250:14:250:15 | s2 | Ok | main.rs:250:14:250:16 | TryExpr |
| main.rs:250:14:250:15 | s2 | Some | main.rs:250:14:250:16 | TryExpr |
| main.rs:253:14:253:15 | s3 | Ok | main.rs:253:14:253:16 | TryExpr |
| main.rs:253:14:253:15 | s3 | Some | main.rs:253:14:253:16 | TryExpr |
| main.rs:267:9:267:25 | ...::A(...) | A | main.rs:267:24:267:24 | n |
| main.rs:268:9:268:25 | ...::B(...) | B | main.rs:268:24:268:24 | n |
| main.rs:271:9:271:25 | ...::A(...) | A | main.rs:271:24:271:24 | n |
| main.rs:271:29:271:45 | ...::B(...) | B | main.rs:271:44:271:44 | n |
| main.rs:274:9:274:25 | ...::A(...) | A | main.rs:274:24:274:24 | n |
| main.rs:275:9:275:25 | ...::B(...) | B | main.rs:275:24:275:24 | n |
| main.rs:285:9:285:12 | A(...) | A | main.rs:285:11:285:11 | n |
| main.rs:286:9:286:12 | B(...) | B | main.rs:286:11:286:11 | n |
| main.rs:289:9:289:12 | A(...) | A | main.rs:289:11:289:11 | n |
| main.rs:289:16:289:19 | B(...) | B | main.rs:289:18:289:18 | n |
| main.rs:292:9:292:12 | A(...) | A | main.rs:292:11:292:11 | n |
| main.rs:293:9:293:12 | B(...) | B | main.rs:293:11:293:11 | n |
| main.rs:308:9:308:38 | ...::C {...} | C | main.rs:308:36:308:36 | n |
| main.rs:309:9:309:38 | ...::D {...} | D | main.rs:309:36:309:36 | n |
| main.rs:312:9:312:38 | ...::C {...} | C | main.rs:312:36:312:36 | n |
| main.rs:312:42:312:71 | ...::D {...} | D | main.rs:312:69:312:69 | n |
| main.rs:315:9:315:38 | ...::C {...} | C | main.rs:315:36:315:36 | n |
| main.rs:316:9:316:38 | ...::D {...} | D | main.rs:316:36:316:36 | n |
| main.rs:328:9:328:24 | C {...} | C | main.rs:328:22:328:22 | n |
| main.rs:329:9:329:24 | D {...} | D | main.rs:329:22:329:22 | n |
| main.rs:332:9:332:24 | C {...} | C | main.rs:332:22:332:22 | n |
| main.rs:332:28:332:43 | D {...} | D | main.rs:332:41:332:41 | n |
| main.rs:335:9:335:24 | C {...} | C | main.rs:335:22:335:22 | n |
| main.rs:336:9:336:24 | D {...} | D | main.rs:336:22:336:22 | n |
| main.rs:345:14:345:17 | arr1 | element | main.rs:345:14:345:20 | arr1[2] |
| main.rs:349:14:349:17 | arr2 | element | main.rs:349:14:349:20 | arr2[4] |
| main.rs:353:14:353:17 | arr3 | element | main.rs:353:14:353:20 | arr3[2] |
| main.rs:359:15:359:18 | arr1 | element | main.rs:359:9:359:10 | n1 |
| main.rs:364:15:364:18 | arr2 | element | main.rs:364:9:364:10 | n2 |
| main.rs:372:9:372:17 | SlicePat | element | main.rs:372:10:372:10 | a |
| main.rs:372:9:372:17 | SlicePat | element | main.rs:372:13:372:13 | b |
| main.rs:372:9:372:17 | SlicePat | element | main.rs:372:16:372:16 | c |
| main.rs:382:10:382:16 | mut_arr | element | main.rs:382:10:382:19 | mut_arr[1] |
| main.rs:384:5:384:11 | mut_arr | element | main.rs:384:5:384:14 | mut_arr[1] |
| main.rs:385:13:385:19 | mut_arr | element | main.rs:385:13:385:22 | mut_arr[1] |
| main.rs:387:10:387:16 | mut_arr | element | main.rs:387:10:387:19 | mut_arr[0] |
| main.rs:394:7:394:18 | TuplePat | tuple.0 | main.rs:394:8:394:11 | cond |
| main.rs:394:7:394:18 | TuplePat | tuple.1 | main.rs:394:14:394:17 | name |
| main.rs:394:23:394:27 | names | element | main.rs:394:7:394:18 | TuplePat |
| main.rs:396:35:396:61 | [post] \|...\| ... | captured default_name | main.rs:396:35:396:61 | [post] default_name |
| main.rs:396:38:396:49 | this | captured default_name | main.rs:396:38:396:49 | default_name |
| main.rs:247:14:247:15 | s1 | Ok | main.rs:247:14:247:16 | TryExpr |
| main.rs:247:14:247:15 | s1 | Some | main.rs:247:14:247:16 | TryExpr |
| main.rs:249:10:249:11 | s2 | Ok | main.rs:249:10:249:12 | TryExpr |
| main.rs:249:10:249:11 | s2 | Some | main.rs:249:10:249:12 | TryExpr |
| main.rs:257:14:257:15 | s1 | Ok | main.rs:257:14:257:16 | TryExpr |
| main.rs:257:14:257:15 | s1 | Some | main.rs:257:14:257:16 | TryExpr |
| main.rs:258:14:258:15 | s2 | Ok | main.rs:258:14:258:16 | TryExpr |
| main.rs:258:14:258:15 | s2 | Some | main.rs:258:14:258:16 | TryExpr |
| main.rs:261:14:261:15 | s3 | Ok | main.rs:261:14:261:16 | TryExpr |
| main.rs:261:14:261:15 | s3 | Some | main.rs:261:14:261:16 | TryExpr |
| main.rs:285:9:285:25 | ...::A(...) | A | main.rs:285:24:285:24 | n |
| main.rs:286:9:286:25 | ...::B(...) | B | main.rs:286:24:286:24 | n |
| main.rs:289:9:289:25 | ...::A(...) | A | main.rs:289:24:289:24 | n |
| main.rs:289:29:289:45 | ...::B(...) | B | main.rs:289:44:289:44 | n |
| main.rs:292:9:292:25 | ...::A(...) | A | main.rs:292:24:292:24 | n |
| main.rs:293:9:293:25 | ...::B(...) | B | main.rs:293:24:293:24 | n |
| main.rs:303:9:303:12 | A(...) | A | main.rs:303:11:303:11 | n |
| main.rs:304:9:304:12 | B(...) | B | main.rs:304:11:304:11 | n |
| main.rs:307:9:307:12 | A(...) | A | main.rs:307:11:307:11 | n |
| main.rs:307:16:307:19 | B(...) | B | main.rs:307:18:307:18 | n |
| main.rs:310:9:310:12 | A(...) | A | main.rs:310:11:310:11 | n |
| main.rs:311:9:311:12 | B(...) | B | main.rs:311:11:311:11 | n |
| main.rs:326:9:326:38 | ...::C {...} | C | main.rs:326:36:326:36 | n |
| main.rs:327:9:327:38 | ...::D {...} | D | main.rs:327:36:327:36 | n |
| main.rs:330:9:330:38 | ...::C {...} | C | main.rs:330:36:330:36 | n |
| main.rs:330:42:330:71 | ...::D {...} | D | main.rs:330:69:330:69 | n |
| main.rs:333:9:333:38 | ...::C {...} | C | main.rs:333:36:333:36 | n |
| main.rs:334:9:334:38 | ...::D {...} | D | main.rs:334:36:334:36 | n |
| main.rs:346:9:346:24 | C {...} | C | main.rs:346:22:346:22 | n |
| main.rs:347:9:347:24 | D {...} | D | main.rs:347:22:347:22 | n |
| main.rs:350:9:350:24 | C {...} | C | main.rs:350:22:350:22 | n |
| main.rs:350:28:350:43 | D {...} | D | main.rs:350:41:350:41 | n |
| main.rs:353:9:353:24 | C {...} | C | main.rs:353:22:353:22 | n |
| main.rs:354:9:354:24 | D {...} | D | main.rs:354:22:354:22 | n |
| main.rs:363:14:363:17 | arr1 | element | main.rs:363:14:363:20 | arr1[2] |
| main.rs:367:14:367:17 | arr2 | element | main.rs:367:14:367:20 | arr2[4] |
| main.rs:371:14:371:17 | arr3 | element | main.rs:371:14:371:20 | arr3[2] |
| main.rs:377:15:377:18 | arr1 | element | main.rs:377:9:377:10 | n1 |
| main.rs:382:15:382:18 | arr2 | element | main.rs:382:9:382:10 | n2 |
| main.rs:390:9:390:17 | SlicePat | element | main.rs:390:10:390:10 | a |
| main.rs:390:9:390:17 | SlicePat | element | main.rs:390:13:390:13 | b |
| main.rs:390:9:390:17 | SlicePat | element | main.rs:390:16:390:16 | c |
| main.rs:400:10:400:16 | mut_arr | element | main.rs:400:10:400:19 | mut_arr[1] |
| main.rs:402:5:402:11 | mut_arr | element | main.rs:402:5:402:14 | mut_arr[1] |
| main.rs:403:13:403:19 | mut_arr | element | main.rs:403:13:403:22 | mut_arr[1] |
| main.rs:405:10:405:16 | mut_arr | element | main.rs:405:10:405:19 | mut_arr[0] |
| main.rs:412:9:412:20 | TuplePat | tuple.0 | main.rs:412:10:412:13 | cond |
| main.rs:412:9:412:20 | TuplePat | tuple.1 | main.rs:412:16:412:19 | name |
| main.rs:412:25:412:29 | names | element | main.rs:412:9:412:20 | TuplePat |
| main.rs:414:41:414:67 | [post] \|...\| ... | captured default_name | main.rs:414:41:414:67 | [post] default_name |
| main.rs:414:44:414:55 | this | captured default_name | main.rs:414:44:414:55 | default_name |

View File

@@ -2,6 +2,10 @@ models
| 1 | Summary: lang:core; <crate::option::Option>::unwrap; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value |
| 2 | Summary: lang:core; <crate::option::Option>::unwrap_or; Argument[0]; ReturnValue; value |
| 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 |
edges
| main.rs:19:9:19:9 | s | main.rs:20:10:20:10 | s | provenance | |
| main.rs:19:13:19:21 | source(...) | main.rs:19:9:19:9 | s | provenance | |
@@ -66,94 +70,107 @@ edges
| main.rs:229:19:229:28 | source(...) | main.rs:229:14:229:29 | Some(...) [Some] | provenance | |
| main.rs:230:10:230:11 | s1 [Some] | main.rs:230:10:230:24 | s1.unwrap_or(...) | provenance | MaD:3 |
| main.rs:233:23:233:32 | source(...) | main.rs:233:10:233:33 | s2.unwrap_or(...) | provenance | MaD:2 |
| main.rs:237:9:237:10 | s1 [Some] | main.rs:239:14:239:15 | s1 [Some] | provenance | |
| main.rs:237:9:237:10 | s1 [Some] | main.rs:238:10:238:11 | s1 [Some] | provenance | |
| main.rs:237:14:237:29 | Some(...) [Some] | main.rs:237:9:237:10 | s1 [Some] | provenance | |
| main.rs:237:19:237:28 | source(...) | main.rs:237:14:237:29 | Some(...) [Some] | provenance | |
| main.rs:239:9:239:10 | i1 | main.rs:240:10:240:11 | i1 | provenance | |
| main.rs:239:14:239:15 | s1 [Some] | main.rs:239:14:239:16 | TryExpr | provenance | |
| main.rs:239:14:239:16 | TryExpr | main.rs:239:9:239:10 | i1 | provenance | |
| main.rs:246:9:246:10 | s1 [Ok] | main.rs:249:14:249:15 | s1 [Ok] | provenance | |
| main.rs:246:32:246:45 | Ok(...) [Ok] | main.rs:246:9:246:10 | s1 [Ok] | provenance | |
| main.rs:246:35:246:44 | source(...) | main.rs:246:32:246:45 | Ok(...) [Ok] | provenance | |
| main.rs:249:9:249:10 | i1 | main.rs:251:10:251:11 | i1 | provenance | |
| main.rs:249:14:249:15 | s1 [Ok] | main.rs:249:14:249:16 | TryExpr | provenance | |
| main.rs:249:14:249:16 | TryExpr | main.rs:249:9:249:10 | i1 | provenance | |
| main.rs:264:9:264:10 | s1 [A] | main.rs:266:11:266:12 | s1 [A] | provenance | |
| main.rs:264:14:264:39 | ...::A(...) [A] | main.rs:264:9:264:10 | s1 [A] | provenance | |
| main.rs:264:29:264:38 | source(...) | main.rs:264:14:264:39 | ...::A(...) [A] | provenance | |
| main.rs:266:11:266:12 | s1 [A] | main.rs:267:9:267:25 | ...::A(...) [A] | provenance | |
| main.rs:266:11:266:12 | s1 [A] | main.rs:270:11:270:12 | s1 [A] | provenance | |
| main.rs:267:9:267:25 | ...::A(...) [A] | main.rs:267:24:267:24 | n | provenance | |
| main.rs:267:24:267:24 | n | main.rs:267:35:267:35 | n | provenance | |
| main.rs:270:11:270:12 | s1 [A] | main.rs:271:9:271:25 | ...::A(...) [A] | provenance | |
| main.rs:271:9:271:25 | ...::A(...) [A] | main.rs:271:24:271:24 | n | provenance | |
| main.rs:271:24:271:24 | n | main.rs:271:55:271:55 | n | provenance | |
| main.rs:238:10:238:11 | s1 [Some] | main.rs:238:10:238:32 | s1.unwrap_or_else(...) | provenance | MaD:5 |
| main.rs:241:31:241:40 | source(...) | main.rs:241:10:241:41 | s2.unwrap_or_else(...) | provenance | MaD:4 |
| main.rs:245:9:245:10 | s1 [Some] | main.rs:247:14:247:15 | s1 [Some] | provenance | |
| main.rs:245:14:245:29 | Some(...) [Some] | main.rs:245:9:245:10 | s1 [Some] | provenance | |
| main.rs:245:19:245:28 | source(...) | main.rs:245:14:245:29 | Some(...) [Some] | provenance | |
| main.rs:247:9:247:10 | i1 | main.rs:248:10:248:11 | i1 | provenance | |
| main.rs:247:14:247:15 | s1 [Some] | main.rs:247:14:247:16 | TryExpr | provenance | |
| main.rs:247:14:247:16 | TryExpr | main.rs:247:9:247:10 | i1 | provenance | |
| main.rs:254:9:254:10 | s1 [Ok] | main.rs:257:14:257:15 | s1 [Ok] | provenance | |
| main.rs:254:32:254:45 | Ok(...) [Ok] | main.rs:254:9:254:10 | s1 [Ok] | provenance | |
| main.rs:254:35:254:44 | source(...) | main.rs:254:32:254:45 | Ok(...) [Ok] | provenance | |
| main.rs:257:9:257:10 | i1 | main.rs:259:10:259:11 | i1 | provenance | |
| main.rs:257:14:257:15 | s1 [Ok] | main.rs:257:14:257:16 | TryExpr | provenance | |
| main.rs:257:14:257:16 | TryExpr | main.rs:257:9:257:10 | i1 | provenance | |
| main.rs:267:9:267:10 | s1 [Ok] | main.rs:268:10:268:11 | s1 [Ok] | provenance | |
| main.rs:267:32:267:45 | Ok(...) [Ok] | main.rs:267:9:267:10 | s1 [Ok] | provenance | |
| main.rs:267:35:267:44 | source(...) | main.rs:267:32:267:45 | Ok(...) [Ok] | provenance | |
| main.rs:268:10:268:11 | s1 [Ok] | main.rs:268:10:268:22 | s1.expect(...) | provenance | MaD:6 |
| main.rs:271:9:271:10 | s2 [Err] | main.rs:273:10:273:11 | s2 [Err] | provenance | |
| main.rs:271:32:271:46 | Err(...) [Err] | main.rs:271:9:271:10 | s2 [Err] | provenance | |
| main.rs:271:36:271:45 | source(...) | main.rs:271:32:271:46 | Err(...) [Err] | provenance | |
| main.rs:273:10:273:11 | s2 [Err] | main.rs:273:10:273:26 | s2.expect_err(...) | provenance | MaD:7 |
| main.rs:282:9:282:10 | s1 [A] | main.rs:284:11:284:12 | s1 [A] | provenance | |
| main.rs:282:14:282:26 | A(...) [A] | main.rs:282:9:282:10 | s1 [A] | provenance | |
| main.rs:282:16:282:25 | source(...) | main.rs:282:14:282:26 | A(...) [A] | provenance | |
| main.rs:284:11:284:12 | s1 [A] | main.rs:285:9:285:12 | A(...) [A] | provenance | |
| main.rs:282:14:282:39 | ...::A(...) [A] | main.rs:282:9:282:10 | s1 [A] | provenance | |
| main.rs:282:29:282:38 | source(...) | main.rs:282:14:282:39 | ...::A(...) [A] | provenance | |
| main.rs:284:11:284:12 | s1 [A] | main.rs:285:9:285:25 | ...::A(...) [A] | provenance | |
| main.rs:284:11:284:12 | s1 [A] | main.rs:288:11:288:12 | s1 [A] | provenance | |
| main.rs:285:9:285:12 | A(...) [A] | main.rs:285:11:285:11 | n | provenance | |
| main.rs:285:11:285:11 | n | main.rs:285:22:285:22 | n | provenance | |
| main.rs:288:11:288:12 | s1 [A] | main.rs:289:9:289:12 | A(...) [A] | provenance | |
| main.rs:289:9:289:12 | A(...) [A] | main.rs:289:11:289:11 | n | provenance | |
| main.rs:289:11:289:11 | n | main.rs:289:29:289:29 | n | provenance | |
| main.rs:303:9:303:10 | s1 [C] | main.rs:307:11:307:12 | s1 [C] | provenance | |
| main.rs:303:14:305:5 | ...::C {...} [C] | main.rs:303:9:303:10 | s1 [C] | provenance | |
| main.rs:304:18:304:27 | source(...) | main.rs:303:14:305:5 | ...::C {...} [C] | provenance | |
| main.rs:307:11:307:12 | s1 [C] | main.rs:308:9:308:38 | ...::C {...} [C] | provenance | |
| main.rs:307:11:307:12 | s1 [C] | main.rs:311:11:311:12 | s1 [C] | provenance | |
| main.rs:308:9:308:38 | ...::C {...} [C] | main.rs:308:36:308:36 | n | provenance | |
| main.rs:308:36:308:36 | n | main.rs:308:48:308:48 | n | provenance | |
| main.rs:311:11:311:12 | s1 [C] | main.rs:312:9:312:38 | ...::C {...} [C] | provenance | |
| main.rs:312:9:312:38 | ...::C {...} [C] | main.rs:312:36:312:36 | n | provenance | |
| main.rs:312:36:312:36 | n | main.rs:312:81:312:81 | n | provenance | |
| main.rs:323:9:323:10 | s1 [C] | main.rs:327:11:327:12 | s1 [C] | provenance | |
| main.rs:323:14:325:5 | C {...} [C] | main.rs:323:9:323:10 | s1 [C] | provenance | |
| main.rs:324:18:324:27 | source(...) | main.rs:323:14:325:5 | C {...} [C] | provenance | |
| main.rs:327:11:327:12 | s1 [C] | main.rs:328:9:328:24 | C {...} [C] | provenance | |
| main.rs:327:11:327:12 | s1 [C] | main.rs:331:11:331:12 | s1 [C] | provenance | |
| main.rs:328:9:328:24 | C {...} [C] | main.rs:328:22:328:22 | n | provenance | |
| main.rs:328:22:328:22 | n | main.rs:328:34:328:34 | n | provenance | |
| main.rs:331:11:331:12 | s1 [C] | main.rs:332:9:332:24 | C {...} [C] | provenance | |
| main.rs:332:9:332:24 | C {...} [C] | main.rs:332:22:332:22 | n | provenance | |
| main.rs:332:22:332:22 | n | main.rs:332:53:332:53 | n | provenance | |
| main.rs:344:9:344:12 | arr1 [element] | main.rs:345:14:345:17 | arr1 [element] | provenance | |
| main.rs:344:16:344:33 | [...] [element] | main.rs:344:9:344:12 | arr1 [element] | provenance | |
| main.rs:344:23:344:32 | source(...) | main.rs:344:16:344:33 | [...] [element] | provenance | |
| main.rs:345:9:345:10 | n1 | main.rs:346:10:346:11 | n1 | provenance | |
| main.rs:345:14:345:17 | arr1 [element] | main.rs:345:14:345:20 | arr1[2] | provenance | |
| main.rs:345:14:345:20 | arr1[2] | main.rs:345:9:345:10 | n1 | provenance | |
| main.rs:348:9:348:12 | arr2 [element] | main.rs:349:14:349:17 | arr2 [element] | provenance | |
| main.rs:348:16:348:31 | [...; 10] [element] | main.rs:348:9:348:12 | arr2 [element] | provenance | |
| main.rs:348:17:348:26 | source(...) | main.rs:348:16:348:31 | [...; 10] [element] | provenance | |
| main.rs:349:9:349:10 | n2 | main.rs:350:10:350:11 | n2 | provenance | |
| main.rs:349:14:349:17 | arr2 [element] | main.rs:349:14:349:20 | arr2[4] | provenance | |
| main.rs:349:14:349:20 | arr2[4] | main.rs:349:9:349:10 | n2 | provenance | |
| main.rs:358:9:358:12 | arr1 [element] | main.rs:359:15:359:18 | arr1 [element] | provenance | |
| main.rs:358:16:358:33 | [...] [element] | main.rs:358:9:358:12 | arr1 [element] | provenance | |
| main.rs:358:23:358:32 | source(...) | main.rs:358:16:358:33 | [...] [element] | provenance | |
| main.rs:359:9:359:10 | n1 | main.rs:360:14:360:15 | n1 | provenance | |
| main.rs:359:15:359:18 | arr1 [element] | main.rs:359:9:359:10 | n1 | provenance | |
| main.rs:370:9:370:12 | arr1 [element] | main.rs:371:11:371:14 | arr1 [element] | provenance | |
| main.rs:370:16:370:33 | [...] [element] | main.rs:370:9:370:12 | arr1 [element] | provenance | |
| main.rs:370:23:370:32 | source(...) | main.rs:370:16:370:33 | [...] [element] | provenance | |
| main.rs:371:11:371:14 | arr1 [element] | main.rs:372:9:372:17 | SlicePat [element] | provenance | |
| main.rs:372:9:372:17 | SlicePat [element] | main.rs:372:10:372:10 | a | provenance | |
| main.rs:372:9:372:17 | SlicePat [element] | main.rs:372:13:372:13 | b | provenance | |
| main.rs:372:9:372:17 | SlicePat [element] | main.rs:372:16:372:16 | c | provenance | |
| main.rs:372:10:372:10 | a | main.rs:373:18:373:18 | a | provenance | |
| main.rs:372:13:372:13 | b | main.rs:374:18:374:18 | b | provenance | |
| main.rs:372:16:372:16 | c | main.rs:375:18:375:18 | c | provenance | |
| main.rs:384:5:384:11 | [post] mut_arr [element] | main.rs:385:13:385:19 | mut_arr [element] | provenance | |
| main.rs:384:5:384:11 | [post] mut_arr [element] | main.rs:387:10:387:16 | mut_arr [element] | provenance | |
| main.rs:384:18:384:27 | source(...) | main.rs:384:5:384:11 | [post] mut_arr [element] | provenance | |
| main.rs:385:9:385:9 | d | main.rs:386:10:386:10 | d | provenance | |
| main.rs:385:13:385:19 | mut_arr [element] | main.rs:385:13:385:22 | mut_arr[1] | provenance | |
| main.rs:385:13:385:22 | mut_arr[1] | main.rs:385:9:385:9 | d | provenance | |
| main.rs:387:10:387:16 | mut_arr [element] | main.rs:387:10:387:19 | mut_arr[0] | provenance | |
| main.rs:410:9:410:9 | s | main.rs:411:10:411:10 | s | provenance | |
| main.rs:410:25:410:26 | source(...) | main.rs:410:9:410:9 | s | provenance | |
| main.rs:285:9:285:25 | ...::A(...) [A] | main.rs:285:24:285:24 | n | provenance | |
| main.rs:285:24:285:24 | n | main.rs:285:35:285:35 | n | provenance | |
| main.rs:288:11:288:12 | s1 [A] | main.rs:289:9:289:25 | ...::A(...) [A] | provenance | |
| main.rs:289:9:289:25 | ...::A(...) [A] | main.rs:289:24:289:24 | n | provenance | |
| main.rs:289:24:289:24 | n | main.rs:289:55:289:55 | n | provenance | |
| main.rs:300:9:300:10 | s1 [A] | main.rs:302:11:302:12 | s1 [A] | provenance | |
| main.rs:300:14:300:26 | A(...) [A] | main.rs:300:9:300:10 | s1 [A] | provenance | |
| main.rs:300:16:300:25 | source(...) | main.rs:300:14:300:26 | A(...) [A] | provenance | |
| main.rs:302:11:302:12 | s1 [A] | main.rs:303:9:303:12 | A(...) [A] | provenance | |
| main.rs:302:11:302:12 | s1 [A] | main.rs:306:11:306:12 | s1 [A] | provenance | |
| main.rs:303:9:303:12 | A(...) [A] | main.rs:303:11:303:11 | n | provenance | |
| main.rs:303:11:303:11 | n | main.rs:303:22:303:22 | n | provenance | |
| main.rs:306:11:306:12 | s1 [A] | main.rs:307:9:307:12 | A(...) [A] | provenance | |
| main.rs:307:9:307:12 | A(...) [A] | main.rs:307:11:307:11 | n | provenance | |
| main.rs:307:11:307:11 | n | main.rs:307:29:307:29 | n | provenance | |
| main.rs:321:9:321:10 | s1 [C] | main.rs:325:11:325:12 | s1 [C] | provenance | |
| main.rs:321:14:323:5 | ...::C {...} [C] | main.rs:321:9:321:10 | s1 [C] | provenance | |
| main.rs:322:18:322:27 | source(...) | main.rs:321:14:323:5 | ...::C {...} [C] | provenance | |
| main.rs:325:11:325:12 | s1 [C] | main.rs:326:9:326:38 | ...::C {...} [C] | provenance | |
| main.rs:325:11:325:12 | s1 [C] | main.rs:329:11:329:12 | s1 [C] | provenance | |
| main.rs:326:9:326:38 | ...::C {...} [C] | main.rs:326:36:326:36 | n | provenance | |
| main.rs:326:36:326:36 | n | main.rs:326:48:326:48 | n | provenance | |
| main.rs:329:11:329:12 | s1 [C] | main.rs:330:9:330:38 | ...::C {...} [C] | provenance | |
| main.rs:330:9:330:38 | ...::C {...} [C] | main.rs:330:36:330:36 | n | provenance | |
| main.rs:330:36:330:36 | n | main.rs:330:81:330:81 | n | provenance | |
| main.rs:341:9:341:10 | s1 [C] | main.rs:345:11:345:12 | s1 [C] | provenance | |
| main.rs:341:14:343:5 | C {...} [C] | main.rs:341:9:341:10 | s1 [C] | provenance | |
| main.rs:342:18:342:27 | source(...) | main.rs:341:14:343:5 | C {...} [C] | provenance | |
| main.rs:345:11:345:12 | s1 [C] | main.rs:346:9:346:24 | C {...} [C] | provenance | |
| main.rs:345:11:345:12 | s1 [C] | main.rs:349:11:349:12 | s1 [C] | provenance | |
| main.rs:346:9:346:24 | C {...} [C] | main.rs:346:22:346:22 | n | provenance | |
| main.rs:346:22:346:22 | n | main.rs:346:34:346:34 | n | provenance | |
| main.rs:349:11:349:12 | s1 [C] | main.rs:350:9:350:24 | C {...} [C] | provenance | |
| main.rs:350:9:350:24 | C {...} [C] | main.rs:350:22:350:22 | n | provenance | |
| main.rs:350:22:350:22 | n | main.rs:350:53:350:53 | n | provenance | |
| main.rs:362:9:362:12 | arr1 [element] | main.rs:363:14:363:17 | arr1 [element] | provenance | |
| main.rs:362:16:362:33 | [...] [element] | main.rs:362:9:362:12 | arr1 [element] | provenance | |
| main.rs:362:23:362:32 | source(...) | main.rs:362:16:362:33 | [...] [element] | provenance | |
| main.rs:363:9:363:10 | n1 | main.rs:364:10:364:11 | n1 | provenance | |
| main.rs:363:14:363:17 | arr1 [element] | main.rs:363:14:363:20 | arr1[2] | provenance | |
| main.rs:363:14:363:20 | arr1[2] | main.rs:363:9:363:10 | n1 | provenance | |
| main.rs:366:9:366:12 | arr2 [element] | main.rs:367:14:367:17 | arr2 [element] | provenance | |
| main.rs:366:16:366:31 | [...; 10] [element] | main.rs:366:9:366:12 | arr2 [element] | provenance | |
| main.rs:366:17:366:26 | source(...) | main.rs:366:16:366:31 | [...; 10] [element] | provenance | |
| main.rs:367:9:367:10 | n2 | main.rs:368:10:368:11 | n2 | provenance | |
| main.rs:367:14:367:17 | arr2 [element] | main.rs:367:14:367:20 | arr2[4] | provenance | |
| main.rs:367:14:367:20 | arr2[4] | main.rs:367:9:367:10 | n2 | provenance | |
| main.rs:376:9:376:12 | arr1 [element] | main.rs:377:15:377:18 | arr1 [element] | provenance | |
| main.rs:376:16:376:33 | [...] [element] | main.rs:376:9:376:12 | arr1 [element] | provenance | |
| main.rs:376:23:376:32 | source(...) | main.rs:376:16:376:33 | [...] [element] | provenance | |
| main.rs:377:9:377:10 | n1 | main.rs:378:14:378:15 | n1 | provenance | |
| main.rs:377:15:377:18 | arr1 [element] | main.rs:377:9:377:10 | n1 | provenance | |
| main.rs:388:9:388:12 | arr1 [element] | main.rs:389:11:389:14 | arr1 [element] | provenance | |
| main.rs:388:16:388:33 | [...] [element] | main.rs:388:9:388:12 | arr1 [element] | provenance | |
| main.rs:388:23:388:32 | source(...) | main.rs:388:16:388:33 | [...] [element] | provenance | |
| main.rs:389:11:389:14 | arr1 [element] | main.rs:390:9:390:17 | SlicePat [element] | provenance | |
| main.rs:390:9:390:17 | SlicePat [element] | main.rs:390:10:390:10 | a | provenance | |
| main.rs:390:9:390:17 | SlicePat [element] | main.rs:390:13:390:13 | b | provenance | |
| main.rs:390:9:390:17 | SlicePat [element] | main.rs:390:16:390:16 | c | provenance | |
| main.rs:390:10:390:10 | a | main.rs:391:18:391:18 | a | provenance | |
| main.rs:390:13:390:13 | b | main.rs:392:18:392:18 | b | provenance | |
| main.rs:390:16:390:16 | c | main.rs:393:18:393:18 | c | provenance | |
| main.rs:402:5:402:11 | [post] mut_arr [element] | main.rs:403:13:403:19 | mut_arr [element] | provenance | |
| main.rs:402:5:402:11 | [post] mut_arr [element] | main.rs:405:10:405:16 | mut_arr [element] | provenance | |
| main.rs:402:18:402:27 | source(...) | main.rs:402:5:402:11 | [post] mut_arr [element] | provenance | |
| main.rs:403:9:403:9 | d | main.rs:404:10:404:10 | d | provenance | |
| main.rs:403:13:403:19 | mut_arr [element] | main.rs:403:13:403:22 | mut_arr[1] | provenance | |
| main.rs:403:13:403:22 | mut_arr[1] | main.rs:403:9:403:9 | d | provenance | |
| main.rs:405:10:405:16 | mut_arr [element] | main.rs:405:10:405:19 | mut_arr[0] | provenance | |
| main.rs:428:9:428:9 | s | main.rs:429:10:429:10 | s | provenance | |
| main.rs:428:25:428:26 | source(...) | main.rs:428:9:428:9 | s | provenance | |
nodes
| main.rs:15:10:15:18 | source(...) | semmle.label | source(...) |
| main.rs:19:9:19:9 | s | semmle.label | s |
@@ -238,103 +255,120 @@ nodes
| main.rs:237:9:237:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:237:14:237:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:237:19:237:28 | source(...) | semmle.label | source(...) |
| main.rs:239:9:239:10 | i1 | semmle.label | i1 |
| main.rs:239:14:239:15 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:239:14:239:16 | TryExpr | semmle.label | TryExpr |
| main.rs:240:10:240:11 | i1 | semmle.label | i1 |
| main.rs:246:9:246:10 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:246:32:246:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
| main.rs:246:35:246:44 | source(...) | semmle.label | source(...) |
| main.rs:249:9:249:10 | i1 | semmle.label | i1 |
| main.rs:249:14:249:15 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:249:14:249:16 | TryExpr | semmle.label | TryExpr |
| main.rs:251:10:251:11 | i1 | semmle.label | i1 |
| main.rs:264:9:264:10 | s1 [A] | semmle.label | s1 [A] |
| main.rs:264:14:264:39 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
| main.rs:264:29:264:38 | source(...) | semmle.label | source(...) |
| main.rs:266:11:266:12 | s1 [A] | semmle.label | s1 [A] |
| main.rs:267:9:267:25 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
| main.rs:267:24:267:24 | n | semmle.label | n |
| main.rs:267:35:267:35 | n | semmle.label | n |
| main.rs:270:11:270:12 | s1 [A] | semmle.label | s1 [A] |
| main.rs:271:9:271:25 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
| main.rs:271:24:271:24 | n | semmle.label | n |
| main.rs:271:55:271:55 | n | semmle.label | n |
| main.rs:238:10:238:11 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:238:10:238:32 | s1.unwrap_or_else(...) | semmle.label | s1.unwrap_or_else(...) |
| main.rs:241:10:241:41 | s2.unwrap_or_else(...) | semmle.label | s2.unwrap_or_else(...) |
| main.rs:241:31:241:40 | source(...) | semmle.label | source(...) |
| main.rs:245:9:245:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:245:14:245:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:245:19:245:28 | source(...) | semmle.label | source(...) |
| main.rs:247:9:247:10 | i1 | semmle.label | i1 |
| main.rs:247:14:247:15 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:247:14:247:16 | TryExpr | semmle.label | TryExpr |
| main.rs:248:10:248:11 | i1 | semmle.label | i1 |
| main.rs:254:9:254:10 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:254:32:254:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
| main.rs:254:35:254:44 | source(...) | semmle.label | source(...) |
| main.rs:257:9:257:10 | i1 | semmle.label | i1 |
| main.rs:257:14:257:15 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:257:14:257:16 | TryExpr | semmle.label | TryExpr |
| main.rs:259:10:259:11 | i1 | semmle.label | i1 |
| main.rs:267:9:267:10 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:267:32:267:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
| main.rs:267:35:267:44 | source(...) | semmle.label | source(...) |
| main.rs:268:10:268:11 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:268:10:268:22 | s1.expect(...) | semmle.label | s1.expect(...) |
| main.rs:271:9:271:10 | s2 [Err] | semmle.label | s2 [Err] |
| main.rs:271:32:271:46 | Err(...) [Err] | semmle.label | Err(...) [Err] |
| main.rs:271:36:271:45 | source(...) | semmle.label | source(...) |
| main.rs:273:10:273:11 | s2 [Err] | semmle.label | s2 [Err] |
| main.rs:273:10:273:26 | s2.expect_err(...) | semmle.label | s2.expect_err(...) |
| main.rs:282:9:282:10 | s1 [A] | semmle.label | s1 [A] |
| main.rs:282:14:282:26 | A(...) [A] | semmle.label | A(...) [A] |
| main.rs:282:16:282:25 | source(...) | semmle.label | source(...) |
| main.rs:282:14:282:39 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
| main.rs:282:29:282:38 | source(...) | semmle.label | source(...) |
| main.rs:284:11:284:12 | s1 [A] | semmle.label | s1 [A] |
| main.rs:285:9:285:12 | A(...) [A] | semmle.label | A(...) [A] |
| main.rs:285:11:285:11 | n | semmle.label | n |
| main.rs:285:22:285:22 | n | semmle.label | n |
| main.rs:285:9:285:25 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
| main.rs:285:24:285:24 | n | semmle.label | n |
| main.rs:285:35:285:35 | n | semmle.label | n |
| main.rs:288:11:288:12 | s1 [A] | semmle.label | s1 [A] |
| main.rs:289:9:289:12 | A(...) [A] | semmle.label | A(...) [A] |
| main.rs:289:11:289:11 | n | semmle.label | n |
| main.rs:289:29:289:29 | n | semmle.label | n |
| main.rs:303:9:303:10 | s1 [C] | semmle.label | s1 [C] |
| main.rs:303:14:305:5 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:304:18:304:27 | source(...) | semmle.label | source(...) |
| main.rs:307:11:307:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:308:9:308:38 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:308:36:308:36 | n | semmle.label | n |
| main.rs:308:48:308:48 | n | semmle.label | n |
| main.rs:311:11:311:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:312:9:312:38 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:312:36:312:36 | n | semmle.label | n |
| main.rs:312:81:312:81 | n | semmle.label | n |
| main.rs:323:9:323:10 | s1 [C] | semmle.label | s1 [C] |
| main.rs:323:14:325:5 | C {...} [C] | semmle.label | C {...} [C] |
| main.rs:324:18:324:27 | source(...) | semmle.label | source(...) |
| main.rs:327:11:327:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:328:9:328:24 | C {...} [C] | semmle.label | C {...} [C] |
| main.rs:328:22:328:22 | n | semmle.label | n |
| main.rs:328:34:328:34 | n | semmle.label | n |
| main.rs:331:11:331:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:332:9:332:24 | C {...} [C] | semmle.label | C {...} [C] |
| main.rs:332:22:332:22 | n | semmle.label | n |
| main.rs:332:53:332:53 | n | semmle.label | n |
| main.rs:344:9:344:12 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:344:16:344:33 | [...] [element] | semmle.label | [...] [element] |
| main.rs:344:23:344:32 | source(...) | semmle.label | source(...) |
| main.rs:345:9:345:10 | n1 | semmle.label | n1 |
| main.rs:345:14:345:17 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:345:14:345:20 | arr1[2] | semmle.label | arr1[2] |
| main.rs:346:10:346:11 | n1 | semmle.label | n1 |
| main.rs:348:9:348:12 | arr2 [element] | semmle.label | arr2 [element] |
| main.rs:348:16:348:31 | [...; 10] [element] | semmle.label | [...; 10] [element] |
| main.rs:348:17:348:26 | source(...) | semmle.label | source(...) |
| main.rs:349:9:349:10 | n2 | semmle.label | n2 |
| main.rs:349:14:349:17 | arr2 [element] | semmle.label | arr2 [element] |
| main.rs:349:14:349:20 | arr2[4] | semmle.label | arr2[4] |
| main.rs:350:10:350:11 | n2 | semmle.label | n2 |
| main.rs:358:9:358:12 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:358:16:358:33 | [...] [element] | semmle.label | [...] [element] |
| main.rs:358:23:358:32 | source(...) | semmle.label | source(...) |
| main.rs:359:9:359:10 | n1 | semmle.label | n1 |
| main.rs:359:15:359:18 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:360:14:360:15 | n1 | semmle.label | n1 |
| main.rs:370:9:370:12 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:370:16:370:33 | [...] [element] | semmle.label | [...] [element] |
| main.rs:370:23:370:32 | source(...) | semmle.label | source(...) |
| main.rs:371:11:371:14 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:372:9:372:17 | SlicePat [element] | semmle.label | SlicePat [element] |
| main.rs:372:10:372:10 | a | semmle.label | a |
| main.rs:372:13:372:13 | b | semmle.label | b |
| main.rs:372:16:372:16 | c | semmle.label | c |
| main.rs:373:18:373:18 | a | semmle.label | a |
| main.rs:374:18:374:18 | b | semmle.label | b |
| main.rs:375:18:375:18 | c | semmle.label | c |
| main.rs:384:5:384:11 | [post] mut_arr [element] | semmle.label | [post] mut_arr [element] |
| main.rs:384:18:384:27 | source(...) | semmle.label | source(...) |
| main.rs:385:9:385:9 | d | semmle.label | d |
| main.rs:385:13:385:19 | mut_arr [element] | semmle.label | mut_arr [element] |
| main.rs:385:13:385:22 | mut_arr[1] | semmle.label | mut_arr[1] |
| main.rs:386:10:386:10 | d | semmle.label | d |
| main.rs:387:10:387:16 | mut_arr [element] | semmle.label | mut_arr [element] |
| main.rs:387:10:387:19 | mut_arr[0] | semmle.label | mut_arr[0] |
| main.rs:410:9:410:9 | s | semmle.label | s |
| main.rs:410:25:410:26 | source(...) | semmle.label | source(...) |
| main.rs:411:10:411:10 | s | semmle.label | s |
| main.rs:289:9:289:25 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
| main.rs:289:24:289:24 | n | semmle.label | n |
| main.rs:289:55:289:55 | n | semmle.label | n |
| main.rs:300:9:300:10 | s1 [A] | semmle.label | s1 [A] |
| main.rs:300:14:300:26 | A(...) [A] | semmle.label | A(...) [A] |
| main.rs:300:16:300:25 | source(...) | semmle.label | source(...) |
| main.rs:302:11:302:12 | s1 [A] | semmle.label | s1 [A] |
| main.rs:303:9:303:12 | A(...) [A] | semmle.label | A(...) [A] |
| main.rs:303:11:303:11 | n | semmle.label | n |
| main.rs:303:22:303:22 | n | semmle.label | n |
| main.rs:306:11:306:12 | s1 [A] | semmle.label | s1 [A] |
| main.rs:307:9:307:12 | A(...) [A] | semmle.label | A(...) [A] |
| main.rs:307:11:307:11 | n | semmle.label | n |
| main.rs:307:29:307:29 | n | semmle.label | n |
| main.rs:321:9:321:10 | s1 [C] | semmle.label | s1 [C] |
| main.rs:321:14:323:5 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:322:18:322:27 | source(...) | semmle.label | source(...) |
| main.rs:325:11:325:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:326:9:326:38 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:326:36:326:36 | n | semmle.label | n |
| main.rs:326:48:326:48 | n | semmle.label | n |
| main.rs:329:11:329:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:330:9:330:38 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:330:36:330:36 | n | semmle.label | n |
| main.rs:330:81:330:81 | n | semmle.label | n |
| main.rs:341:9:341:10 | s1 [C] | semmle.label | s1 [C] |
| main.rs:341:14:343:5 | C {...} [C] | semmle.label | C {...} [C] |
| main.rs:342:18:342:27 | source(...) | semmle.label | source(...) |
| main.rs:345:11:345:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:346:9:346:24 | C {...} [C] | semmle.label | C {...} [C] |
| main.rs:346:22:346:22 | n | semmle.label | n |
| main.rs:346:34:346:34 | n | semmle.label | n |
| main.rs:349:11:349:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:350:9:350:24 | C {...} [C] | semmle.label | C {...} [C] |
| main.rs:350:22:350:22 | n | semmle.label | n |
| main.rs:350:53:350:53 | n | semmle.label | n |
| main.rs:362:9:362:12 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:362:16:362:33 | [...] [element] | semmle.label | [...] [element] |
| main.rs:362:23:362:32 | source(...) | semmle.label | source(...) |
| main.rs:363:9:363:10 | n1 | semmle.label | n1 |
| main.rs:363:14:363:17 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:363:14:363:20 | arr1[2] | semmle.label | arr1[2] |
| main.rs:364:10:364:11 | n1 | semmle.label | n1 |
| main.rs:366:9:366:12 | arr2 [element] | semmle.label | arr2 [element] |
| main.rs:366:16:366:31 | [...; 10] [element] | semmle.label | [...; 10] [element] |
| main.rs:366:17:366:26 | source(...) | semmle.label | source(...) |
| main.rs:367:9:367:10 | n2 | semmle.label | n2 |
| main.rs:367:14:367:17 | arr2 [element] | semmle.label | arr2 [element] |
| main.rs:367:14:367:20 | arr2[4] | semmle.label | arr2[4] |
| main.rs:368:10:368:11 | n2 | semmle.label | n2 |
| main.rs:376:9:376:12 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:376:16:376:33 | [...] [element] | semmle.label | [...] [element] |
| main.rs:376:23:376:32 | source(...) | semmle.label | source(...) |
| main.rs:377:9:377:10 | n1 | semmle.label | n1 |
| main.rs:377:15:377:18 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:378:14:378:15 | n1 | semmle.label | n1 |
| main.rs:388:9:388:12 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:388:16:388:33 | [...] [element] | semmle.label | [...] [element] |
| main.rs:388:23:388:32 | source(...) | semmle.label | source(...) |
| main.rs:389:11:389:14 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:390:9:390:17 | SlicePat [element] | semmle.label | SlicePat [element] |
| main.rs:390:10:390:10 | a | semmle.label | a |
| main.rs:390:13:390:13 | b | semmle.label | b |
| main.rs:390:16:390:16 | c | semmle.label | c |
| main.rs:391:18:391:18 | a | semmle.label | a |
| main.rs:392:18:392:18 | b | semmle.label | b |
| main.rs:393:18:393:18 | c | semmle.label | c |
| main.rs:402:5:402:11 | [post] mut_arr [element] | semmle.label | [post] mut_arr [element] |
| main.rs:402:18:402:27 | source(...) | semmle.label | source(...) |
| main.rs:403:9:403:9 | d | semmle.label | d |
| main.rs:403:13:403:19 | mut_arr [element] | semmle.label | mut_arr [element] |
| main.rs:403:13:403:22 | mut_arr[1] | semmle.label | mut_arr[1] |
| main.rs:404:10:404:10 | d | semmle.label | d |
| main.rs:405:10:405:16 | mut_arr [element] | semmle.label | mut_arr [element] |
| main.rs:405:10:405:19 | mut_arr[0] | semmle.label | mut_arr[0] |
| main.rs:428:9:428:9 | s | semmle.label | s |
| main.rs:428:25:428:26 | source(...) | semmle.label | source(...) |
| main.rs:429:10:429:10 | s | semmle.label | s |
subpaths
testFailures
#select
@@ -355,22 +389,26 @@ testFailures
| main.rs:225:10:225:20 | s1.unwrap(...) | main.rs:224:19:224:28 | source(...) | main.rs:225:10:225:20 | s1.unwrap(...) | $@ | main.rs:224:19:224:28 | source(...) | source(...) |
| main.rs:230:10:230:24 | s1.unwrap_or(...) | main.rs:229:19:229:28 | source(...) | main.rs:230:10:230:24 | s1.unwrap_or(...) | $@ | main.rs:229:19:229:28 | source(...) | source(...) |
| main.rs:233:10:233:33 | s2.unwrap_or(...) | main.rs:233:23:233:32 | source(...) | main.rs:233:10:233:33 | s2.unwrap_or(...) | $@ | main.rs:233:23:233:32 | source(...) | source(...) |
| main.rs:240:10:240:11 | i1 | main.rs:237:19:237:28 | source(...) | main.rs:240:10:240:11 | i1 | $@ | main.rs:237:19:237:28 | source(...) | source(...) |
| main.rs:251:10:251:11 | i1 | main.rs:246:35:246:44 | source(...) | main.rs:251:10:251:11 | i1 | $@ | main.rs:246:35:246:44 | source(...) | source(...) |
| main.rs:267:35:267:35 | n | main.rs:264:29:264:38 | source(...) | main.rs:267:35:267:35 | n | $@ | main.rs:264:29:264:38 | source(...) | source(...) |
| main.rs:271:55:271:55 | n | main.rs:264:29:264:38 | source(...) | main.rs:271:55:271:55 | n | $@ | main.rs:264:29:264:38 | source(...) | source(...) |
| main.rs:285:22:285:22 | n | main.rs:282:16:282:25 | source(...) | main.rs:285:22:285:22 | n | $@ | main.rs:282:16:282:25 | source(...) | source(...) |
| main.rs:289:29:289:29 | n | main.rs:282:16:282:25 | source(...) | main.rs:289:29:289:29 | n | $@ | main.rs:282:16:282:25 | source(...) | source(...) |
| main.rs:308:48:308:48 | n | main.rs:304:18:304:27 | source(...) | main.rs:308:48:308:48 | n | $@ | main.rs:304:18:304:27 | source(...) | source(...) |
| main.rs:312:81:312:81 | n | main.rs:304:18:304:27 | source(...) | main.rs:312:81:312:81 | n | $@ | main.rs:304:18:304:27 | source(...) | source(...) |
| main.rs:328:34:328:34 | n | main.rs:324:18:324:27 | source(...) | main.rs:328:34:328:34 | n | $@ | main.rs:324:18:324:27 | source(...) | source(...) |
| main.rs:332:53:332:53 | n | main.rs:324:18:324:27 | source(...) | main.rs:332:53:332:53 | n | $@ | main.rs:324:18:324:27 | source(...) | source(...) |
| main.rs:346:10:346:11 | n1 | main.rs:344:23:344:32 | source(...) | main.rs:346:10:346:11 | n1 | $@ | main.rs:344:23:344:32 | source(...) | source(...) |
| main.rs:350:10:350:11 | n2 | main.rs:348:17:348:26 | source(...) | main.rs:350:10:350:11 | n2 | $@ | main.rs:348:17:348:26 | source(...) | source(...) |
| main.rs:360:14:360:15 | n1 | main.rs:358:23:358:32 | source(...) | main.rs:360:14:360:15 | n1 | $@ | main.rs:358:23:358:32 | source(...) | source(...) |
| main.rs:373:18:373:18 | a | main.rs:370:23:370:32 | source(...) | main.rs:373:18:373:18 | a | $@ | main.rs:370:23:370:32 | source(...) | source(...) |
| main.rs:374:18:374:18 | b | main.rs:370:23:370:32 | source(...) | main.rs:374:18:374:18 | b | $@ | main.rs:370:23:370:32 | source(...) | source(...) |
| main.rs:375:18:375:18 | c | main.rs:370:23:370:32 | source(...) | main.rs:375:18:375:18 | c | $@ | main.rs:370:23:370:32 | source(...) | source(...) |
| main.rs:386:10:386:10 | d | main.rs:384:18:384:27 | source(...) | main.rs:386:10:386:10 | d | $@ | main.rs:384:18:384:27 | source(...) | source(...) |
| main.rs:387:10:387:19 | mut_arr[0] | main.rs:384:18:384:27 | source(...) | main.rs:387:10:387:19 | mut_arr[0] | $@ | main.rs:384:18:384:27 | source(...) | source(...) |
| main.rs:411:10:411:10 | s | main.rs:410:25:410:26 | source(...) | main.rs:411:10:411:10 | s | $@ | main.rs:410:25:410:26 | source(...) | source(...) |
| main.rs:238:10:238:32 | s1.unwrap_or_else(...) | main.rs:237:19:237:28 | source(...) | main.rs:238:10:238:32 | s1.unwrap_or_else(...) | $@ | main.rs:237:19:237:28 | source(...) | source(...) |
| main.rs:241:10:241:41 | s2.unwrap_or_else(...) | main.rs:241:31:241:40 | source(...) | main.rs:241:10:241:41 | s2.unwrap_or_else(...) | $@ | main.rs:241:31:241:40 | source(...) | source(...) |
| main.rs:248:10:248:11 | i1 | main.rs:245:19:245:28 | source(...) | main.rs:248:10:248:11 | i1 | $@ | main.rs:245:19:245:28 | source(...) | source(...) |
| main.rs:259:10:259:11 | i1 | main.rs:254:35:254:44 | source(...) | main.rs:259:10:259:11 | i1 | $@ | main.rs:254:35:254:44 | source(...) | source(...) |
| main.rs:268:10:268:22 | s1.expect(...) | main.rs:267:35:267:44 | source(...) | main.rs:268:10:268:22 | s1.expect(...) | $@ | main.rs:267:35:267:44 | source(...) | source(...) |
| main.rs:273:10:273:26 | s2.expect_err(...) | main.rs:271:36:271:45 | source(...) | main.rs:273:10:273:26 | s2.expect_err(...) | $@ | main.rs:271:36:271:45 | source(...) | source(...) |
| main.rs:285:35:285:35 | n | main.rs:282:29:282:38 | source(...) | main.rs:285:35:285:35 | n | $@ | main.rs:282:29:282:38 | source(...) | source(...) |
| main.rs:289:55:289:55 | n | main.rs:282:29:282:38 | source(...) | main.rs:289:55:289:55 | n | $@ | main.rs:282:29:282:38 | source(...) | source(...) |
| main.rs:303:22:303:22 | n | main.rs:300:16:300:25 | source(...) | main.rs:303:22:303:22 | n | $@ | main.rs:300:16:300:25 | source(...) | source(...) |
| main.rs:307:29:307:29 | n | main.rs:300:16:300:25 | source(...) | main.rs:307:29:307:29 | n | $@ | main.rs:300:16:300:25 | source(...) | source(...) |
| main.rs:326:48:326:48 | n | main.rs:322:18:322:27 | source(...) | main.rs:326:48:326:48 | n | $@ | main.rs:322:18:322:27 | source(...) | source(...) |
| main.rs:330:81:330:81 | n | main.rs:322:18:322:27 | source(...) | main.rs:330:81:330:81 | n | $@ | main.rs:322:18:322:27 | source(...) | source(...) |
| main.rs:346:34:346:34 | n | main.rs:342:18:342:27 | source(...) | main.rs:346:34:346:34 | n | $@ | main.rs:342:18:342:27 | source(...) | source(...) |
| main.rs:350:53:350:53 | n | main.rs:342:18:342:27 | source(...) | main.rs:350:53:350:53 | n | $@ | main.rs:342:18:342:27 | source(...) | source(...) |
| main.rs:364:10:364:11 | n1 | main.rs:362:23:362:32 | source(...) | main.rs:364:10:364:11 | n1 | $@ | main.rs:362:23:362:32 | source(...) | source(...) |
| main.rs:368:10:368:11 | n2 | main.rs:366:17:366:26 | source(...) | main.rs:368:10:368:11 | n2 | $@ | main.rs:366:17:366:26 | source(...) | source(...) |
| main.rs:378:14:378:15 | n1 | main.rs:376:23:376:32 | source(...) | main.rs:378:14:378:15 | n1 | $@ | main.rs:376:23:376:32 | source(...) | source(...) |
| main.rs:391:18:391:18 | a | main.rs:388:23:388:32 | source(...) | main.rs:391:18:391:18 | a | $@ | main.rs:388:23:388:32 | source(...) | source(...) |
| main.rs:392:18:392:18 | b | main.rs:388:23:388:32 | source(...) | main.rs:392:18:392:18 | b | $@ | main.rs:388:23:388:32 | source(...) | source(...) |
| main.rs:393:18:393:18 | c | main.rs:388:23:388:32 | source(...) | main.rs:393:18:393:18 | c | $@ | main.rs:388:23:388:32 | source(...) | source(...) |
| main.rs:404:10:404:10 | d | main.rs:402:18:402:27 | source(...) | main.rs:404:10:404:10 | d | $@ | main.rs:402:18:402:27 | source(...) | source(...) |
| main.rs:405:10:405:19 | mut_arr[0] | main.rs:402:18:402:27 | source(...) | main.rs:405:10:405:19 | mut_arr[0] | $@ | main.rs:402:18:402:27 | source(...) | source(...) |
| main.rs:429:10:429:10 | s | main.rs:428:25:428:26 | source(...) | main.rs:429:10:429:10 | s | $@ | main.rs:428:25:428:26 | source(...) | source(...) |

View File

@@ -233,6 +233,14 @@ fn option_unwrap_or() {
sink(s2.unwrap_or(source(47))); // $ hasValueFlow=47
}
fn option_unwrap_or_else() {
let s1 = Some(source(47));
sink(s1.unwrap_or_else(|| 0)); // $ hasValueFlow=47
let s2 = None;
sink(s2.unwrap_or_else(|| source(48))); // $ hasValueFlow=48
}
fn option_questionmark() -> Option<i64> {
let s1 = Some(source(20));
let s2 = Some(2);
@@ -255,6 +263,16 @@ fn result_questionmark() -> Result<i64, i64> {
Ok(0)
}
fn result_expect() {
let s1: Result<i64, i64> = Ok(source(78));
sink(s1.expect("")); // $ hasValueFlow=78
sink(s1.expect_err(""));
let s2: Result<i64, i64> = Err(source(79));
sink(s2.expect(""));
sink(s2.expect_err("")); // $ hasValueFlow=79
}
enum MyTupleEnum {
A(i64),
B(i64),
@@ -390,14 +408,14 @@ fn array_assignment() {
// Test data flow inconsistency occuring with captured variables and `continue`
// in a loop.
pub fn captured_variable_and_continue(names: Vec<(bool, Option<String>)>) {
let default_name = source(83).to_string();
for (cond, name) in names {
if cond {
let n = name.unwrap_or_else(|| default_name.to_string());
sink(n.len() as i64);
continue;
let default_name = source(83).to_string();
for (cond, name) in names {
if cond {
let n = name.unwrap_or_else(|| default_name.to_string());
sink(n.len() as i64);
continue;
}
}
}
}
macro_rules! get_source {

View File

@@ -14,6 +14,12 @@ module MyFlowConfig implements DataFlow::ConfigSig {
.getArgList()
.getAnArg() = sink.asExpr().getExpr()
}
predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {
// flow out from any content at the sink.
isSink(node) and
exists(c)
}
}
module MyFlowTest = TaintFlowTest<MyFlowConfig>;

View File

@@ -11,8 +11,8 @@ fn test_env_vars() {
let var1 = std::env::var("HOME").expect("HOME not set"); // $ Alert[rust/summary/taint-sources]
let var2 = std::env::var_os("PATH").unwrap(); // $ Alert[rust/summary/taint-sources]
sink(var1); // $ MISSING: hasTaintFlow
sink(var2); // $ MISSING: hasTaintFlow
sink(var1); // $ hasTaintFlow="HOME"
sink(var2); // $ hasTaintFlow="PATH"
for (key, value) in std::env::vars() { // $ Alert[rust/summary/taint-sources]
sink(key); // $ MISSING: hasTaintFlow
@@ -51,9 +51,9 @@ fn test_env_dirs() {
let exe = std::env::current_exe().expect("FAILED"); // $ Alert[rust/summary/taint-sources]
let home = std::env::home_dir().expect("FAILED"); // $ Alert[rust/summary/taint-sources]
sink(dir); // $ MISSING: hasTaintFlow
sink(exe); // $ MISSING: hasTaintFlow
sink(home); // $ MISSING: hasTaintFlow
sink(dir); // $ hasTaintFlow
sink(exe); // $ hasTaintFlow
sink(home); // $ hasTaintFlow
}
async fn test_reqwest() -> Result<(), reqwest::Error> {

View File

@@ -48,178 +48,193 @@
| test_logging.rs:178:9:178:13 | write | test_logging.rs:178:41:178:48 | password | test_logging.rs:178:9:178:13 | write | This operation writes $@ to a log file. | test_logging.rs:178:41:178:48 | password | password |
| test_logging.rs:181:9:181:13 | write | test_logging.rs:181:41:181:48 | password | test_logging.rs:181:9:181:13 | write | This operation writes $@ to a log file. | test_logging.rs:181:41:181:48 | password | password |
edges
| test_logging.rs:42:12:42:35 | MacroExpr | test_logging.rs:42:5:42:36 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:42:12:42:35 | MacroExpr | test_logging.rs:42:5:42:36 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:42:28:42:35 | password | test_logging.rs:42:12:42:35 | MacroExpr | provenance | |
| test_logging.rs:43:12:43:35 | MacroExpr | test_logging.rs:43:5:43:36 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:43:12:43:35 | MacroExpr | test_logging.rs:43:5:43:36 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:43:28:43:35 | password | test_logging.rs:43:12:43:35 | MacroExpr | provenance | |
| test_logging.rs:44:11:44:34 | MacroExpr | test_logging.rs:44:5:44:35 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:44:11:44:34 | MacroExpr | test_logging.rs:44:5:44:35 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:44:27:44:34 | password | test_logging.rs:44:11:44:34 | MacroExpr | provenance | |
| test_logging.rs:45:12:45:35 | MacroExpr | test_logging.rs:45:5:45:36 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:45:12:45:35 | MacroExpr | test_logging.rs:45:5:45:36 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:45:28:45:35 | password | test_logging.rs:45:12:45:35 | MacroExpr | provenance | |
| test_logging.rs:46:11:46:34 | MacroExpr | test_logging.rs:46:5:46:35 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:46:11:46:34 | MacroExpr | test_logging.rs:46:5:46:35 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:46:27:46:34 | password | test_logging.rs:46:11:46:34 | MacroExpr | provenance | |
| test_logging.rs:47:24:47:47 | MacroExpr | test_logging.rs:47:5:47:48 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:47:24:47:47 | MacroExpr | test_logging.rs:47:5:47:48 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:47:40:47:47 | password | test_logging.rs:47:24:47:47 | MacroExpr | provenance | |
| test_logging.rs:52:12:52:35 | MacroExpr | test_logging.rs:52:5:52:36 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:52:12:52:35 | MacroExpr | test_logging.rs:52:5:52:36 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:52:28:52:35 | password | test_logging.rs:52:12:52:35 | MacroExpr | provenance | |
| test_logging.rs:54:12:54:48 | MacroExpr | test_logging.rs:54:5:54:49 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:54:12:54:48 | MacroExpr | test_logging.rs:54:5:54:49 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:54:41:54:48 | password | test_logging.rs:54:12:54:48 | MacroExpr | provenance | |
| test_logging.rs:56:12:56:46 | MacroExpr | test_logging.rs:56:5:56:47 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:56:12:56:46 | MacroExpr | test_logging.rs:56:5:56:47 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:56:39:56:46 | password | test_logging.rs:56:12:56:46 | MacroExpr | provenance | |
| test_logging.rs:57:12:57:33 | MacroExpr | test_logging.rs:57:5:57:34 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:57:12:57:33 | MacroExpr | test_logging.rs:57:5:57:34 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:57:24:57:31 | password | test_logging.rs:57:12:57:33 | MacroExpr | provenance | |
| test_logging.rs:58:12:58:35 | MacroExpr | test_logging.rs:58:5:58:36 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:58:12:58:35 | MacroExpr | test_logging.rs:58:5:58:36 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:58:24:58:31 | password | test_logging.rs:58:12:58:35 | MacroExpr | provenance | |
| test_logging.rs:60:30:60:53 | MacroExpr | test_logging.rs:60:5:60:54 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:60:30:60:53 | MacroExpr | test_logging.rs:60:5:60:54 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:60:46:60:53 | password | test_logging.rs:60:30:60:53 | MacroExpr | provenance | |
| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:1 Sink:MaD:1 Sink:MaD:1 |
| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:1 Sink:MaD:1 Sink:MaD:1 Sink:MaD:1 |
| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:1 Sink:MaD:1 Sink:MaD:1 |
| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 |
| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 Sink:MaD:10 |
| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 |
| test_logging.rs:61:20:61:28 | &password | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | provenance | |
| test_logging.rs:61:20:61:28 | &password [&ref] | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | provenance | |
| test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | provenance | |
| test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | provenance | |
| test_logging.rs:61:21:61:28 | password | test_logging.rs:61:20:61:28 | &password | provenance | Config |
| test_logging.rs:61:21:61:28 | password | test_logging.rs:61:20:61:28 | &password [&ref] | provenance | |
| test_logging.rs:65:24:65:47 | MacroExpr | test_logging.rs:65:5:65:48 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:65:24:65:47 | MacroExpr | test_logging.rs:65:5:65:48 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:65:40:65:47 | password | test_logging.rs:65:24:65:47 | MacroExpr | provenance | |
| test_logging.rs:67:42:67:65 | MacroExpr | test_logging.rs:67:5:67:66 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:67:42:67:65 | MacroExpr | test_logging.rs:67:5:67:66 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:67:58:67:65 | password | test_logging.rs:67:42:67:65 | MacroExpr | provenance | |
| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:1 Sink:MaD:1 Sink:MaD:1 |
| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:1 Sink:MaD:1 Sink:MaD:1 Sink:MaD:1 |
| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:1 Sink:MaD:1 Sink:MaD:1 |
| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 |
| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 Sink:MaD:10 |
| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 |
| test_logging.rs:68:18:68:26 | &password | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | provenance | |
| test_logging.rs:68:18:68:26 | &password [&ref] | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | provenance | |
| test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | provenance | |
| test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | provenance | |
| test_logging.rs:68:19:68:26 | password | test_logging.rs:68:18:68:26 | &password | provenance | Config |
| test_logging.rs:68:19:68:26 | password | test_logging.rs:68:18:68:26 | &password [&ref] | provenance | |
| test_logging.rs:72:23:72:46 | MacroExpr | test_logging.rs:72:5:72:47 | ...::log::<...> | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:72:23:72:46 | MacroExpr | test_logging.rs:72:5:72:47 | ...::log::<...> | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:72:39:72:46 | password | test_logging.rs:72:23:72:46 | MacroExpr | provenance | |
| test_logging.rs:74:41:74:64 | MacroExpr | test_logging.rs:74:5:74:65 | ...::log::<...> | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:74:41:74:64 | MacroExpr | test_logging.rs:74:5:74:65 | ...::log::<...> | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:74:57:74:64 | password | test_logging.rs:74:41:74:64 | MacroExpr | provenance | |
| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log::<...> | provenance | MaD:1 Sink:MaD:1 Sink:MaD:1 |
| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log::<...> | provenance | MaD:1 Sink:MaD:1 Sink:MaD:1 Sink:MaD:1 |
| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | test_logging.rs:75:5:75:51 | ...::log::<...> | provenance | MaD:1 Sink:MaD:1 Sink:MaD:1 |
| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log::<...> | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 |
| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log::<...> | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 Sink:MaD:10 |
| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | test_logging.rs:75:5:75:51 | ...::log::<...> | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 |
| test_logging.rs:75:20:75:28 | &password | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | provenance | |
| test_logging.rs:75:20:75:28 | &password [&ref] | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | provenance | |
| test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | provenance | |
| test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | provenance | |
| test_logging.rs:75:21:75:28 | password | test_logging.rs:75:20:75:28 | &password | provenance | Config |
| test_logging.rs:75:21:75:28 | password | test_logging.rs:75:20:75:28 | &password [&ref] | provenance | |
| test_logging.rs:76:23:76:46 | MacroExpr | test_logging.rs:76:5:76:47 | ...::log::<...> | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:76:23:76:46 | MacroExpr | test_logging.rs:76:5:76:47 | ...::log::<...> | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:76:39:76:46 | password | test_logging.rs:76:23:76:46 | MacroExpr | provenance | |
| test_logging.rs:82:20:82:43 | MacroExpr | test_logging.rs:82:5:82:44 | ...::log::<...> | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:82:20:82:43 | MacroExpr | test_logging.rs:82:5:82:44 | ...::log::<...> | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:82:36:82:43 | password | test_logging.rs:82:20:82:43 | MacroExpr | provenance | |
| test_logging.rs:84:38:84:61 | MacroExpr | test_logging.rs:84:5:84:62 | ...::log::<...> | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:84:38:84:61 | MacroExpr | test_logging.rs:84:5:84:62 | ...::log::<...> | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:84:54:84:61 | password | test_logging.rs:84:38:84:61 | MacroExpr | provenance | |
| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log::<...> | provenance | MaD:1 Sink:MaD:1 Sink:MaD:1 |
| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log::<...> | provenance | MaD:1 Sink:MaD:1 Sink:MaD:1 Sink:MaD:1 |
| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | test_logging.rs:85:5:85:48 | ...::log::<...> | provenance | MaD:1 Sink:MaD:1 Sink:MaD:1 |
| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log::<...> | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 |
| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log::<...> | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 Sink:MaD:10 |
| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | test_logging.rs:85:5:85:48 | ...::log::<...> | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 |
| test_logging.rs:85:20:85:28 | &password | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | provenance | |
| test_logging.rs:85:20:85:28 | &password [&ref] | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | provenance | |
| test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | provenance | |
| test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | provenance | |
| test_logging.rs:85:21:85:28 | password | test_logging.rs:85:20:85:28 | &password | provenance | Config |
| test_logging.rs:85:21:85:28 | password | test_logging.rs:85:20:85:28 | &password [&ref] | provenance | |
| test_logging.rs:86:20:86:43 | MacroExpr | test_logging.rs:86:5:86:44 | ...::log::<...> | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:86:20:86:43 | MacroExpr | test_logging.rs:86:5:86:44 | ...::log::<...> | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:86:36:86:43 | password | test_logging.rs:86:20:86:43 | MacroExpr | provenance | |
| test_logging.rs:93:9:93:10 | m1 | test_logging.rs:94:11:94:28 | MacroExpr | provenance | |
| test_logging.rs:93:14:93:22 | &password | test_logging.rs:93:9:93:10 | m1 | provenance | |
| test_logging.rs:93:15:93:22 | password | test_logging.rs:93:14:93:22 | &password | provenance | Config |
| test_logging.rs:94:11:94:28 | MacroExpr | test_logging.rs:94:5:94:29 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:94:11:94:28 | MacroExpr | test_logging.rs:94:5:94:29 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:96:9:96:10 | m2 | test_logging.rs:97:11:97:18 | MacroExpr | provenance | |
| test_logging.rs:96:41:96:49 | &password | test_logging.rs:96:9:96:10 | m2 | provenance | |
| test_logging.rs:96:42:96:49 | password | test_logging.rs:96:41:96:49 | &password | provenance | Config |
| test_logging.rs:97:11:97:18 | MacroExpr | test_logging.rs:97:5:97:19 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:97:11:97:18 | MacroExpr | test_logging.rs:97:5:97:19 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:99:9:99:10 | m3 | test_logging.rs:100:11:100:18 | MacroExpr | provenance | |
| test_logging.rs:99:14:99:46 | res | test_logging.rs:99:22:99:45 | { ... } | provenance | |
| test_logging.rs:99:22:99:45 | ...::format(...) | test_logging.rs:99:14:99:46 | res | provenance | |
| test_logging.rs:99:22:99:45 | ...::must_use(...) | test_logging.rs:99:9:99:10 | m3 | provenance | |
| test_logging.rs:99:22:99:45 | MacroExpr | test_logging.rs:99:22:99:45 | ...::format(...) | provenance | MaD:54 |
| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:53 |
| test_logging.rs:99:22:99:45 | MacroExpr | test_logging.rs:99:22:99:45 | ...::format(...) | provenance | MaD:13 |
| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:14 |
| test_logging.rs:99:38:99:45 | password | test_logging.rs:99:22:99:45 | MacroExpr | provenance | |
| test_logging.rs:100:11:100:18 | MacroExpr | test_logging.rs:100:5:100:19 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:118:12:118:41 | MacroExpr | test_logging.rs:118:5:118:42 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:100:11:100:18 | MacroExpr | test_logging.rs:100:5:100:19 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:118:12:118:41 | MacroExpr | test_logging.rs:118:5:118:42 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:118:28:118:41 | get_password(...) | test_logging.rs:118:12:118:41 | MacroExpr | provenance | |
| test_logging.rs:129:9:129:10 | t1 [tuple.1] | test_logging.rs:131:28:131:29 | t1 [tuple.1] | provenance | |
| test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | test_logging.rs:129:9:129:10 | t1 [tuple.1] | provenance | |
| test_logging.rs:129:25:129:32 | password | test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | provenance | |
| test_logging.rs:131:12:131:31 | MacroExpr | test_logging.rs:131:5:131:32 | ...::log | provenance | MaD:0 Sink:MaD:0 |
| test_logging.rs:131:12:131:31 | MacroExpr | test_logging.rs:131:5:131:32 | ...::log | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:131:28:131:29 | t1 [tuple.1] | test_logging.rs:131:28:131:31 | t1.1 | provenance | |
| test_logging.rs:131:28:131:31 | t1.1 | test_logging.rs:131:12:131:31 | MacroExpr | provenance | |
| test_logging.rs:152:12:152:37 | MacroExpr | test_logging.rs:152:5:152:38 | ...::_print | provenance | MaD:3 Sink:MaD:3 |
| test_logging.rs:152:12:152:37 | MacroExpr | test_logging.rs:152:5:152:38 | ...::_print | provenance | MaD:8 Sink:MaD:8 |
| test_logging.rs:152:30:152:37 | password | test_logging.rs:152:12:152:37 | MacroExpr | provenance | |
| test_logging.rs:153:14:153:37 | MacroExpr | test_logging.rs:153:5:153:38 | ...::_print | provenance | MaD:3 Sink:MaD:3 |
| test_logging.rs:153:14:153:37 | MacroExpr | test_logging.rs:153:5:153:38 | ...::_print | provenance | MaD:8 Sink:MaD:8 |
| test_logging.rs:153:30:153:37 | password | test_logging.rs:153:14:153:37 | MacroExpr | provenance | |
| test_logging.rs:154:13:154:38 | MacroExpr | test_logging.rs:154:5:154:39 | ...::_eprint | provenance | MaD:4 Sink:MaD:4 |
| test_logging.rs:154:13:154:38 | MacroExpr | test_logging.rs:154:5:154:39 | ...::_eprint | provenance | MaD:7 Sink:MaD:7 |
| test_logging.rs:154:31:154:38 | password | test_logging.rs:154:13:154:38 | MacroExpr | provenance | |
| test_logging.rs:155:15:155:38 | MacroExpr | test_logging.rs:155:5:155:39 | ...::_eprint | provenance | MaD:4 Sink:MaD:4 |
| test_logging.rs:155:15:155:38 | MacroExpr | test_logging.rs:155:5:155:39 | ...::_eprint | provenance | MaD:7 Sink:MaD:7 |
| test_logging.rs:155:31:155:38 | password | test_logging.rs:155:15:155:38 | MacroExpr | provenance | |
| test_logging.rs:158:23:158:46 | MacroExpr | test_logging.rs:158:16:158:47 | ...::panic_fmt | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:158:23:158:46 | MacroExpr | test_logging.rs:158:16:158:47 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 |
| test_logging.rs:158:39:158:46 | password | test_logging.rs:158:23:158:46 | MacroExpr | provenance | |
| test_logging.rs:159:22:159:45 | MacroExpr | test_logging.rs:159:16:159:46 | ...::panic_fmt | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:159:22:159:45 | MacroExpr | test_logging.rs:159:16:159:46 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 |
| test_logging.rs:159:38:159:45 | password | test_logging.rs:159:22:159:45 | MacroExpr | provenance | |
| test_logging.rs:160:31:160:54 | MacroExpr | test_logging.rs:160:16:160:55 | ...::panic_fmt | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:160:31:160:54 | MacroExpr | test_logging.rs:160:16:160:55 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 |
| test_logging.rs:160:47:160:54 | password | test_logging.rs:160:31:160:54 | MacroExpr | provenance | |
| test_logging.rs:161:29:161:52 | MacroExpr | test_logging.rs:161:16:161:53 | ...::panic_fmt | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:161:29:161:52 | MacroExpr | test_logging.rs:161:16:161:53 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 |
| test_logging.rs:161:45:161:52 | password | test_logging.rs:161:29:161:52 | MacroExpr | provenance | |
| test_logging.rs:162:31:162:54 | MacroExpr | test_logging.rs:162:16:162:55 | ...::panic_fmt | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:162:31:162:54 | MacroExpr | test_logging.rs:162:16:162:55 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 |
| test_logging.rs:162:47:162:54 | password | test_logging.rs:162:31:162:54 | MacroExpr | provenance | |
| test_logging.rs:163:33:163:56 | ...::Some(...) [Some] | test_logging.rs:163:16:163:57 | ...::assert_failed | provenance | MaD:10 Sink:MaD:10 |
| test_logging.rs:163:33:163:56 | ...::Some(...) [Some] | test_logging.rs:163:16:163:57 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 |
| test_logging.rs:163:33:163:56 | MacroExpr | test_logging.rs:163:33:163:56 | ...::Some(...) [Some] | provenance | |
| test_logging.rs:163:49:163:56 | password | test_logging.rs:163:33:163:56 | MacroExpr | provenance | |
| test_logging.rs:164:33:164:56 | ...::Some(...) [Some] | test_logging.rs:164:16:164:57 | ...::assert_failed | provenance | MaD:10 Sink:MaD:10 |
| test_logging.rs:164:33:164:56 | ...::Some(...) [Some] | test_logging.rs:164:16:164:57 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 |
| test_logging.rs:164:33:164:56 | MacroExpr | test_logging.rs:164:33:164:56 | ...::Some(...) [Some] | provenance | |
| test_logging.rs:164:49:164:56 | password | test_logging.rs:164:33:164:56 | MacroExpr | provenance | |
| test_logging.rs:165:37:165:60 | MacroExpr | test_logging.rs:165:16:165:61 | ...::panic_fmt | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:165:37:165:60 | MacroExpr | test_logging.rs:165:16:165:61 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 |
| test_logging.rs:165:53:165:60 | password | test_logging.rs:165:37:165:60 | MacroExpr | provenance | |
| test_logging.rs:166:39:166:62 | ...::Some(...) [Some] | test_logging.rs:166:16:166:63 | ...::assert_failed | provenance | MaD:10 Sink:MaD:10 |
| test_logging.rs:166:39:166:62 | ...::Some(...) [Some] | test_logging.rs:166:16:166:63 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 |
| test_logging.rs:166:39:166:62 | MacroExpr | test_logging.rs:166:39:166:62 | ...::Some(...) [Some] | provenance | |
| test_logging.rs:166:55:166:62 | password | test_logging.rs:166:39:166:62 | MacroExpr | provenance | |
| test_logging.rs:167:40:167:63 | ...::Some(...) [Some] | test_logging.rs:167:17:167:64 | ...::assert_failed | provenance | MaD:10 Sink:MaD:10 |
| test_logging.rs:167:40:167:63 | ...::Some(...) [Some] | test_logging.rs:167:17:167:64 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 |
| test_logging.rs:167:40:167:63 | MacroExpr | test_logging.rs:167:40:167:63 | ...::Some(...) [Some] | provenance | |
| test_logging.rs:167:56:167:63 | password | test_logging.rs:167:40:167:63 | MacroExpr | provenance | |
| test_logging.rs:168:34:168:66 | MacroExpr | test_logging.rs:168:34:168:75 | ... .as_str(...) | provenance | MaD:51 |
| test_logging.rs:168:34:168:66 | MacroExpr | test_logging.rs:168:34:168:75 | ... .as_str(...) | provenance | MaD:12 |
| test_logging.rs:168:34:168:66 | res | test_logging.rs:168:42:168:65 | { ... } | provenance | |
| test_logging.rs:168:34:168:75 | ... .as_str(...) | test_logging.rs:168:27:168:32 | expect | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:168:34:168:75 | ... .as_str(...) | test_logging.rs:168:27:168:32 | expect | provenance | MaD:1 Sink:MaD:1 |
| test_logging.rs:168:42:168:65 | ...::format(...) | test_logging.rs:168:34:168:66 | res | provenance | |
| test_logging.rs:168:42:168:65 | ...::must_use(...) | test_logging.rs:168:34:168:66 | MacroExpr | provenance | |
| test_logging.rs:168:42:168:65 | MacroExpr | test_logging.rs:168:42:168:65 | ...::format(...) | provenance | MaD:54 |
| test_logging.rs:168:42:168:65 | { ... } | test_logging.rs:168:42:168:65 | ...::must_use(...) | provenance | MaD:53 |
| test_logging.rs:168:42:168:65 | MacroExpr | test_logging.rs:168:42:168:65 | ...::format(...) | provenance | MaD:13 |
| test_logging.rs:168:42:168:65 | { ... } | test_logging.rs:168:42:168:65 | ...::must_use(...) | provenance | MaD:14 |
| test_logging.rs:168:58:168:65 | password | test_logging.rs:168:42:168:65 | MacroExpr | provenance | |
| test_logging.rs:174:36:174:70 | MacroExpr | test_logging.rs:174:36:174:81 | ... .as_bytes(...) | provenance | MaD:52 |
| test_logging.rs:174:36:174:70 | MacroExpr | test_logging.rs:174:36:174:81 | ... .as_bytes(...) | provenance | MaD:11 |
| test_logging.rs:174:36:174:70 | res | test_logging.rs:174:44:174:69 | { ... } | provenance | |
| test_logging.rs:174:36:174:81 | ... .as_bytes(...) | test_logging.rs:174:30:174:34 | write | provenance | MaD:5 Sink:MaD:5 |
| test_logging.rs:174:44:174:69 | ...::format(...) | test_logging.rs:174:36:174:70 | res | provenance | |
| test_logging.rs:174:44:174:69 | ...::must_use(...) | test_logging.rs:174:36:174:70 | MacroExpr | provenance | |
| test_logging.rs:174:44:174:69 | MacroExpr | test_logging.rs:174:44:174:69 | ...::format(...) | provenance | MaD:54 |
| test_logging.rs:174:44:174:69 | { ... } | test_logging.rs:174:44:174:69 | ...::must_use(...) | provenance | MaD:53 |
| test_logging.rs:174:44:174:69 | MacroExpr | test_logging.rs:174:44:174:69 | ...::format(...) | provenance | MaD:13 |
| test_logging.rs:174:44:174:69 | { ... } | test_logging.rs:174:44:174:69 | ...::must_use(...) | provenance | MaD:14 |
| test_logging.rs:174:62:174:69 | password | test_logging.rs:174:44:174:69 | MacroExpr | provenance | |
| test_logging.rs:175:40:175:74 | MacroExpr | test_logging.rs:175:40:175:85 | ... .as_bytes(...) | provenance | MaD:52 |
| test_logging.rs:175:40:175:74 | MacroExpr | test_logging.rs:175:40:175:85 | ... .as_bytes(...) | provenance | MaD:11 |
| test_logging.rs:175:40:175:74 | res | test_logging.rs:175:48:175:73 | { ... } | provenance | |
| test_logging.rs:175:40:175:85 | ... .as_bytes(...) | test_logging.rs:175:30:175:38 | write_all | provenance | MaD:6 Sink:MaD:6 |
| test_logging.rs:175:48:175:73 | ...::format(...) | test_logging.rs:175:40:175:74 | res | provenance | |
| test_logging.rs:175:48:175:73 | ...::must_use(...) | test_logging.rs:175:40:175:74 | MacroExpr | provenance | |
| test_logging.rs:175:48:175:73 | MacroExpr | test_logging.rs:175:48:175:73 | ...::format(...) | provenance | MaD:54 |
| test_logging.rs:175:48:175:73 | { ... } | test_logging.rs:175:48:175:73 | ...::must_use(...) | provenance | MaD:53 |
| test_logging.rs:175:48:175:73 | MacroExpr | test_logging.rs:175:48:175:73 | ...::format(...) | provenance | MaD:13 |
| test_logging.rs:175:48:175:73 | { ... } | test_logging.rs:175:48:175:73 | ...::must_use(...) | provenance | MaD:14 |
| test_logging.rs:175:66:175:73 | password | test_logging.rs:175:48:175:73 | MacroExpr | provenance | |
| test_logging.rs:178:15:178:49 | MacroExpr | test_logging.rs:178:15:178:60 | ... .as_bytes(...) | provenance | MaD:52 |
| test_logging.rs:178:15:178:49 | MacroExpr | test_logging.rs:178:15:178:60 | ... .as_bytes(...) | provenance | MaD:11 |
| test_logging.rs:178:15:178:49 | res | test_logging.rs:178:23:178:48 | { ... } | provenance | |
| test_logging.rs:178:15:178:60 | ... .as_bytes(...) | test_logging.rs:178:9:178:13 | write | provenance | MaD:5 Sink:MaD:5 |
| test_logging.rs:178:23:178:48 | ...::format(...) | test_logging.rs:178:15:178:49 | res | provenance | |
| test_logging.rs:178:23:178:48 | ...::must_use(...) | test_logging.rs:178:15:178:49 | MacroExpr | provenance | |
| test_logging.rs:178:23:178:48 | MacroExpr | test_logging.rs:178:23:178:48 | ...::format(...) | provenance | MaD:54 |
| test_logging.rs:178:23:178:48 | { ... } | test_logging.rs:178:23:178:48 | ...::must_use(...) | provenance | MaD:53 |
| test_logging.rs:178:23:178:48 | MacroExpr | test_logging.rs:178:23:178:48 | ...::format(...) | provenance | MaD:13 |
| test_logging.rs:178:23:178:48 | { ... } | test_logging.rs:178:23:178:48 | ...::must_use(...) | provenance | MaD:14 |
| test_logging.rs:178:41:178:48 | password | test_logging.rs:178:23:178:48 | MacroExpr | provenance | |
| test_logging.rs:181:15:181:49 | MacroExpr | test_logging.rs:181:15:181:60 | ... .as_bytes(...) | provenance | MaD:52 |
| test_logging.rs:181:15:181:49 | MacroExpr | test_logging.rs:181:15:181:60 | ... .as_bytes(...) | provenance | MaD:11 |
| test_logging.rs:181:15:181:49 | res | test_logging.rs:181:23:181:48 | { ... } | provenance | |
| test_logging.rs:181:15:181:60 | ... .as_bytes(...) | test_logging.rs:181:9:181:13 | write | provenance | MaD:7 Sink:MaD:7 |
| test_logging.rs:181:15:181:60 | ... .as_bytes(...) | test_logging.rs:181:9:181:13 | write | provenance | MaD:4 Sink:MaD:4 |
| test_logging.rs:181:23:181:48 | ...::format(...) | test_logging.rs:181:15:181:49 | res | provenance | |
| test_logging.rs:181:23:181:48 | ...::must_use(...) | test_logging.rs:181:15:181:49 | MacroExpr | provenance | |
| test_logging.rs:181:23:181:48 | MacroExpr | test_logging.rs:181:23:181:48 | ...::format(...) | provenance | MaD:54 |
| test_logging.rs:181:23:181:48 | { ... } | test_logging.rs:181:23:181:48 | ...::must_use(...) | provenance | MaD:53 |
| test_logging.rs:181:23:181:48 | MacroExpr | test_logging.rs:181:23:181:48 | ...::format(...) | provenance | MaD:13 |
| test_logging.rs:181:23:181:48 | { ... } | test_logging.rs:181:23:181:48 | ...::must_use(...) | provenance | MaD:14 |
| test_logging.rs:181:41:181:48 | password | test_logging.rs:181:23:181:48 | MacroExpr | provenance | |
models
| 1 | Sink: lang:core; <crate::option::Option>::expect; log-injection; Argument[0] |
| 2 | Sink: lang:core; crate::panicking::assert_failed; log-injection; Argument[3].Variant[crate::option::Option::Some(0)] |
| 3 | Sink: lang:core; crate::panicking::panic_fmt; log-injection; Argument[0] |
| 4 | Sink: lang:std; <crate::io::stdio::StderrLock as crate::io::Write>::write; log-injection; Argument[0] |
| 5 | Sink: lang:std; <crate::io::stdio::StdoutLock as crate::io::Write>::write; log-injection; Argument[0] |
| 6 | Sink: lang:std; <crate::io::stdio::StdoutLock as crate::io::Write>::write_all; log-injection; Argument[0] |
| 7 | Sink: lang:std; crate::io::stdio::_eprint; log-injection; Argument[0] |
| 8 | Sink: lang:std; crate::io::stdio::_print; log-injection; Argument[0] |
| 9 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[0] |
| 10 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[2] |
| 11 | Summary: lang:alloc; <crate::string::String>::as_bytes; Argument[self]; ReturnValue; taint |
| 12 | Summary: lang:alloc; <crate::string::String>::as_str; Argument[self]; ReturnValue; taint |
| 13 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint |
| 14 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value |
nodes
| test_logging.rs:42:5:42:36 | ...::log | semmle.label | ...::log |
| test_logging.rs:42:12:42:35 | MacroExpr | semmle.label | MacroExpr |

View File

@@ -1,3 +1,4 @@
query: queries/security/CWE-312/CleartextLogging.ql
postprocess:
- utils/test/InlineExpectationsTestQuery.ql
- utils/test/PrettyPrintModels.ql