From a71f73095c2b17e296ccce9432779022d70415b9 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 15 Nov 2024 14:51:25 +0100 Subject: [PATCH] Rust: Add custom `toString` predicate for path expression --- rust/ql/.gitattributes | 1 - .../rust/elements/internal/PathExprImpl.qll | 6 +- .../BinaryExpr/BinaryExpr_getLhs.expected | 10 +- .../BinaryExpr/BinaryExpr_getRhs.expected | 10 +- .../CallExpr/CallExpr_getExpr.expected | 6 +- .../CastExpr/CastExpr_getExpr.expected | 2 +- .../FieldExpr/FieldExpr_getExpr.expected | 2 +- .../IndexExpr/IndexExpr_getBase.expected | 4 +- .../CONSISTENCY/DataFlowConsistency.expected | 2 +- .../MethodCallExpr_getReceiver.expected | 4 +- .../CONSISTENCY/DataFlowConsistency.expected | 3 + .../generated/PathExpr/PathExpr.expected | 8 +- .../PathExpr/PathExpr_getPath.expected | 8 +- .../PrefixExpr/PrefixExpr_getExpr.expected | 2 +- .../RefExpr/RefExpr_getExpr.expected | 8 +- .../library-tests/controlflow/Cfg.expected | 100 ++-- .../test/library-tests/variables/Cfg.expected | 562 +++++++++--------- rust/ql/test/utils/InlineFlowTest.qll | 2 +- 18 files changed, 372 insertions(+), 368 deletions(-) create mode 100644 rust/ql/test/extractor-tests/generated/PathExpr/CONSISTENCY/DataFlowConsistency.expected diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index 3cc5424a8f9ac..a532f142ec983 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -330,7 +330,6 @@ /lib/codeql/rust/elements/internal/PathConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PathExprBaseImpl.qll linguist-generated /lib/codeql/rust/elements/internal/PathExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/PathExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/PathPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PathPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/PathSegmentConstructor.qll linguist-generated diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll index 68b11db73b036..c8a2af3de33b2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `PathExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.PathExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A path expression. For example: * ```rust @@ -21,5 +21,7 @@ module Impl { * let z = ::foo; * ``` */ - class PathExpr extends Generated::PathExpr { } + class PathExpr extends Generated::PathExpr { + override string toString() { result = this.getPath().toString() } + } } diff --git a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getLhs.expected b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getLhs.expected index 1f51339f5a8fc..9321ce0724a9f 100644 --- a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getLhs.expected +++ b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getLhs.expected @@ -1,5 +1,5 @@ -| gen_binary_expr.rs:5:5:5:9 | ... + ... | gen_binary_expr.rs:5:5:5:5 | PathExpr | -| gen_binary_expr.rs:6:5:6:10 | ... && ... | gen_binary_expr.rs:6:5:6:5 | PathExpr | -| gen_binary_expr.rs:7:5:7:10 | ... <= ... | gen_binary_expr.rs:7:5:7:5 | PathExpr | -| gen_binary_expr.rs:8:5:8:9 | ... = ... | gen_binary_expr.rs:8:5:8:5 | PathExpr | -| gen_binary_expr.rs:9:5:9:10 | ... += ... | gen_binary_expr.rs:9:5:9:5 | PathExpr | +| gen_binary_expr.rs:5:5:5:9 | ... + ... | gen_binary_expr.rs:5:5:5:5 | x | +| gen_binary_expr.rs:6:5:6:10 | ... && ... | gen_binary_expr.rs:6:5:6:5 | x | +| gen_binary_expr.rs:7:5:7:10 | ... <= ... | gen_binary_expr.rs:7:5:7:5 | x | +| gen_binary_expr.rs:8:5:8:9 | ... = ... | gen_binary_expr.rs:8:5:8:5 | x | +| gen_binary_expr.rs:9:5:9:10 | ... += ... | gen_binary_expr.rs:9:5:9:5 | x | diff --git a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getRhs.expected b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getRhs.expected index 4f0277f2b2f3a..9bd36da5fa6a4 100644 --- a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getRhs.expected +++ b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getRhs.expected @@ -1,5 +1,5 @@ -| gen_binary_expr.rs:5:5:5:9 | ... + ... | gen_binary_expr.rs:5:9:5:9 | PathExpr | -| gen_binary_expr.rs:6:5:6:10 | ... && ... | gen_binary_expr.rs:6:10:6:10 | PathExpr | -| gen_binary_expr.rs:7:5:7:10 | ... <= ... | gen_binary_expr.rs:7:10:7:10 | PathExpr | -| gen_binary_expr.rs:8:5:8:9 | ... = ... | gen_binary_expr.rs:8:9:8:9 | PathExpr | -| gen_binary_expr.rs:9:5:9:10 | ... += ... | gen_binary_expr.rs:9:10:9:10 | PathExpr | +| gen_binary_expr.rs:5:5:5:9 | ... + ... | gen_binary_expr.rs:5:9:5:9 | y | +| gen_binary_expr.rs:6:5:6:10 | ... && ... | gen_binary_expr.rs:6:10:6:10 | y | +| gen_binary_expr.rs:7:5:7:10 | ... <= ... | gen_binary_expr.rs:7:10:7:10 | y | +| gen_binary_expr.rs:8:5:8:9 | ... = ... | gen_binary_expr.rs:8:9:8:9 | y | +| gen_binary_expr.rs:9:5:9:10 | ... += ... | gen_binary_expr.rs:9:10:9:10 | y | diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getExpr.expected index d6c070576c66b..544937866b78f 100644 --- a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getExpr.expected @@ -1,4 +1,4 @@ -| gen_call_expr.rs:5:5:5:11 | CallExpr | gen_call_expr.rs:5:5:5:7 | PathExpr | -| gen_call_expr.rs:6:5:6:23 | CallExpr | gen_call_expr.rs:6:5:6:19 | PathExpr | +| gen_call_expr.rs:5:5:5:11 | CallExpr | gen_call_expr.rs:5:5:5:7 | foo | +| gen_call_expr.rs:6:5:6:23 | CallExpr | gen_call_expr.rs:6:5:6:19 | foo::<...> | | gen_call_expr.rs:7:5:7:14 | CallExpr | gen_call_expr.rs:7:5:7:10 | IndexExpr | -| gen_call_expr.rs:8:5:8:10 | CallExpr | gen_call_expr.rs:8:5:8:7 | PathExpr | +| gen_call_expr.rs:8:5:8:10 | CallExpr | gen_call_expr.rs:8:5:8:7 | foo | diff --git a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.expected index e45a936afbde5..f3e1d4c7ec94a 100644 --- a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.expected @@ -1 +1 @@ -| gen_cast_expr.rs:5:5:5:16 | CastExpr | gen_cast_expr.rs:5:5:5:9 | PathExpr | +| gen_cast_expr.rs:5:5:5:16 | CastExpr | gen_cast_expr.rs:5:5:5:9 | value | diff --git a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getExpr.expected index c8184671bd2be..32b13c1cb2b0e 100644 --- a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getExpr.expected @@ -1 +1 @@ -| gen_field_expr.rs:5:5:5:9 | FieldExpr | gen_field_expr.rs:5:5:5:5 | PathExpr | +| gen_field_expr.rs:5:5:5:9 | FieldExpr | gen_field_expr.rs:5:5:5:5 | x | diff --git a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.expected b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.expected index a3126f84df9aa..c149597172b89 100644 --- a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.expected +++ b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.expected @@ -1,2 +1,2 @@ -| gen_index_expr.rs:5:5:5:12 | IndexExpr | gen_index_expr.rs:5:5:5:8 | PathExpr | -| gen_index_expr.rs:6:5:6:12 | IndexExpr | gen_index_expr.rs:6:5:6:8 | PathExpr | +| gen_index_expr.rs:5:5:5:12 | IndexExpr | gen_index_expr.rs:5:5:5:8 | list | +| gen_index_expr.rs:6:5:6:12 | IndexExpr | gen_index_expr.rs:6:5:6:8 | list | diff --git a/rust/ql/test/extractor-tests/generated/MacroItems/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/extractor-tests/generated/MacroItems/CONSISTENCY/DataFlowConsistency.expected index b4a463be52cef..e5837318c720b 100644 --- a/rust/ql/test/extractor-tests/generated/MacroItems/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/extractor-tests/generated/MacroItems/CONSISTENCY/DataFlowConsistency.expected @@ -3,6 +3,6 @@ uniqueNodeLocation | file://:0:0:0:0 | ... .unwrap(...) | Node should have one location but has 0. | | file://:0:0:0:0 | BlockExpr | Node should have one location but has 0. | | file://:0:0:0:0 | Param | Node should have one location but has 0. | -| file://:0:0:0:0 | PathExpr | Node should have one location but has 0. | +| file://:0:0:0:0 | path | Node should have one location but has 0. | missingLocation | Nodes without location: 5 | diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getReceiver.expected b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getReceiver.expected index 0b82390293bdd..b8e6631e18935 100644 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getReceiver.expected +++ b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getReceiver.expected @@ -1,2 +1,2 @@ -| gen_method_call_expr.rs:5:5:5:13 | ... .foo(...) | gen_method_call_expr.rs:5:5:5:5 | PathExpr | -| gen_method_call_expr.rs:6:5:6:25 | ... .foo(...) | gen_method_call_expr.rs:6:5:6:5 | PathExpr | +| gen_method_call_expr.rs:5:5:5:13 | ... .foo(...) | gen_method_call_expr.rs:5:5:5:5 | x | +| gen_method_call_expr.rs:6:5:6:25 | ... .foo(...) | gen_method_call_expr.rs:6:5:6:5 | x | diff --git a/rust/ql/test/extractor-tests/generated/PathExpr/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/extractor-tests/generated/PathExpr/CONSISTENCY/DataFlowConsistency.expected new file mode 100644 index 0000000000000..c54360f7361b6 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/PathExpr/CONSISTENCY/DataFlowConsistency.expected @@ -0,0 +1,3 @@ +uniqueNodeToString +| gen_path_expr.rs:7:13:7:20 | (no string representation) | Node should have one toString but has 0. | +| gen_path_expr.rs:8:13:8:35 | (no string representation) | Node should have one toString but has 0. | diff --git a/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr.expected b/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr.expected index d6613c8fc3a37..a676396a2f9be 100644 --- a/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr.expected +++ b/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr.expected @@ -1,4 +1,4 @@ -| gen_path_expr.rs:5:13:5:20 | PathExpr | getNumberOfAttrs: | 0 | hasPath: | yes | -| gen_path_expr.rs:6:13:6:20 | PathExpr | getNumberOfAttrs: | 0 | hasPath: | yes | -| gen_path_expr.rs:7:13:7:20 | PathExpr | getNumberOfAttrs: | 0 | hasPath: | yes | -| gen_path_expr.rs:8:13:8:35 | PathExpr | getNumberOfAttrs: | 0 | hasPath: | yes | +| gen_path_expr.rs:5:13:5:20 | variable | getNumberOfAttrs: | 0 | hasPath: | yes | +| gen_path_expr.rs:6:13:6:20 | foo::bar | getNumberOfAttrs: | 0 | hasPath: | yes | +| gen_path_expr.rs:7:13:7:20 | (no string representation) | getNumberOfAttrs: | 0 | hasPath: | yes | +| gen_path_expr.rs:8:13:8:35 | (no string representation) | getNumberOfAttrs: | 0 | hasPath: | yes | diff --git a/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr_getPath.expected b/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr_getPath.expected index 39ec516064de6..a5765b5be60ba 100644 --- a/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr_getPath.expected +++ b/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr_getPath.expected @@ -1,4 +1,4 @@ -| gen_path_expr.rs:5:13:5:20 | PathExpr | gen_path_expr.rs:5:13:5:20 | variable | -| gen_path_expr.rs:6:13:6:20 | PathExpr | gen_path_expr.rs:6:13:6:20 | foo::bar | -| gen_path_expr.rs:7:13:7:20 | PathExpr | gen_path_expr.rs:7:13:7:20 | (no string representation) | -| gen_path_expr.rs:8:13:8:35 | PathExpr | gen_path_expr.rs:8:13:8:35 | (no string representation) | +| gen_path_expr.rs:5:13:5:20 | variable | gen_path_expr.rs:5:13:5:20 | variable | +| gen_path_expr.rs:6:13:6:20 | foo::bar | gen_path_expr.rs:6:13:6:20 | foo::bar | +| gen_path_expr.rs:7:13:7:20 | (no string representation) | gen_path_expr.rs:7:13:7:20 | (no string representation) | +| gen_path_expr.rs:8:13:8:35 | (no string representation) | gen_path_expr.rs:8:13:8:35 | (no string representation) | diff --git a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.expected index 98e2adcff51b2..6c9edcba00d2a 100644 --- a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.expected @@ -1,3 +1,3 @@ | gen_prefix_expr.rs:5:13:5:15 | - ... | gen_prefix_expr.rs:5:14:5:15 | 42 | | gen_prefix_expr.rs:6:13:6:17 | ! ... | gen_prefix_expr.rs:6:14:6:17 | true | -| gen_prefix_expr.rs:7:13:7:16 | * ... | gen_prefix_expr.rs:7:14:7:16 | PathExpr | +| gen_prefix_expr.rs:7:13:7:16 | * ... | gen_prefix_expr.rs:7:14:7:16 | ptr | diff --git a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.expected index 1c1f0cff2c06f..571986ecf1023 100644 --- a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.expected @@ -1,4 +1,4 @@ -| gen_ref_expr.rs:5:25:5:28 | RefExpr | gen_ref_expr.rs:5:26:5:28 | PathExpr | -| gen_ref_expr.rs:6:23:6:30 | RefExpr | gen_ref_expr.rs:6:28:6:30 | PathExpr | -| gen_ref_expr.rs:7:35:7:48 | RefExpr | gen_ref_expr.rs:7:46:7:48 | PathExpr | -| gen_ref_expr.rs:8:33:8:44 | RefExpr | gen_ref_expr.rs:8:42:8:44 | PathExpr | +| gen_ref_expr.rs:5:25:5:28 | RefExpr | gen_ref_expr.rs:5:26:5:28 | foo | +| gen_ref_expr.rs:6:23:6:30 | RefExpr | gen_ref_expr.rs:6:28:6:30 | foo | +| gen_ref_expr.rs:7:35:7:48 | RefExpr | gen_ref_expr.rs:7:46:7:48 | foo | +| gen_ref_expr.rs:8:33:8:44 | RefExpr | gen_ref_expr.rs:8:42:8:44 | foo | diff --git a/rust/ql/test/library-tests/controlflow/Cfg.expected b/rust/ql/test/library-tests/controlflow/Cfg.expected index 46a7413d1d32f..012de7d4ac5db 100644 --- a/rust/ql/test/library-tests/controlflow/Cfg.expected +++ b/rust/ql/test/library-tests/controlflow/Cfg.expected @@ -2,22 +2,22 @@ edges | test.rs:5:5:8:5 | enter function_call | test.rs:6:9:6:45 | ExprStmt | | | test.rs:5:5:8:5 | exit function_call (normal) | test.rs:5:5:8:5 | exit function_call | | | test.rs:5:24:8:5 | BlockExpr | test.rs:5:5:8:5 | exit function_call (normal) | | -| test.rs:6:9:6:25 | PathExpr | test.rs:6:27:6:30 | true | | +| test.rs:6:9:6:25 | test_and_operator | test.rs:6:27:6:30 | true | | | test.rs:6:9:6:44 | CallExpr | test.rs:7:9:7:28 | ExprStmt | | -| test.rs:6:9:6:45 | ExprStmt | test.rs:6:9:6:25 | PathExpr | | +| test.rs:6:9:6:45 | ExprStmt | test.rs:6:9:6:25 | test_and_operator | | | test.rs:6:27:6:30 | true | test.rs:6:33:6:37 | false | | | test.rs:6:33:6:37 | false | test.rs:6:40:6:43 | true | | | test.rs:6:40:6:43 | true | test.rs:6:9:6:44 | CallExpr | | -| test.rs:7:9:7:23 | PathExpr | test.rs:7:25:7:26 | 42 | | +| test.rs:7:9:7:23 | foo::<...> | test.rs:7:25:7:26 | 42 | | | test.rs:7:9:7:27 | CallExpr | test.rs:5:24:8:5 | BlockExpr | | -| test.rs:7:9:7:28 | ExprStmt | test.rs:7:9:7:23 | PathExpr | | +| test.rs:7:9:7:28 | ExprStmt | test.rs:7:9:7:23 | foo::<...> | | | test.rs:7:25:7:26 | 42 | test.rs:7:9:7:27 | CallExpr | | | test.rs:10:5:13:5 | enter method_call | test.rs:11:9:11:37 | LetStmt | | | test.rs:10:5:13:5 | exit method_call (normal) | test.rs:10:5:13:5 | exit method_call | | | test.rs:10:22:13:5 | BlockExpr | test.rs:10:5:13:5 | exit method_call (normal) | | -| test.rs:11:9:11:37 | LetStmt | test.rs:11:23:11:34 | PathExpr | | +| test.rs:11:9:11:37 | LetStmt | test.rs:11:23:11:34 | HashMap::new | | | test.rs:11:13:11:19 | map | test.rs:12:9:12:28 | ExprStmt | match | -| test.rs:11:23:11:34 | PathExpr | test.rs:11:23:11:36 | CallExpr | | +| test.rs:11:23:11:34 | HashMap::new | test.rs:11:23:11:36 | CallExpr | | | test.rs:11:23:11:36 | CallExpr | test.rs:11:13:11:19 | map | | | test.rs:12:9:12:11 | map | test.rs:12:20:12:21 | 37 | | | test.rs:12:9:12:27 | ... .insert(...) | test.rs:10:22:13:5 | BlockExpr | | @@ -34,10 +34,10 @@ edges | test.rs:20:9:32:9 | ExprStmt | test.rs:21:13:21:24 | ExprStmt | | | test.rs:20:9:32:9 | LoopExpr | test.rs:33:9:33:20 | ExprStmt | | | test.rs:20:14:32:9 | BlockExpr | test.rs:21:13:21:24 | ExprStmt | | -| test.rs:21:13:21:13 | i | test.rs:21:17:21:20 | PathExpr | | +| test.rs:21:13:21:13 | i | test.rs:21:17:21:20 | next | | | test.rs:21:13:21:23 | ... = ... | test.rs:22:13:24:13 | ExprStmt | | | test.rs:21:13:21:24 | ExprStmt | test.rs:21:13:21:13 | i | | -| test.rs:21:17:21:20 | PathExpr | test.rs:21:22:21:22 | i | | +| test.rs:21:17:21:20 | next | test.rs:21:22:21:22 | i | | | test.rs:21:17:21:23 | CallExpr | test.rs:21:13:21:23 | ... = ... | | | test.rs:21:22:21:22 | i | test.rs:21:17:21:23 | CallExpr | | | test.rs:22:13:24:13 | ExprStmt | test.rs:22:16:22:16 | i | | @@ -172,12 +172,12 @@ edges | test.rs:91:15:91:39 | LetExpr | test.rs:91:29:91:32 | iter | | | test.rs:91:19:91:25 | TupleStructPat | test.rs:91:9:95:9 | WhileExpr | no-match | | test.rs:91:19:91:25 | TupleStructPat | test.rs:91:24:91:24 | x | match | -| test.rs:91:24:91:24 | x | test.rs:92:17:92:17 | PathExpr | match | +| test.rs:91:24:91:24 | x | test.rs:92:17:92:17 | i | match | | test.rs:91:29:91:32 | iter | test.rs:91:29:91:39 | ... .next(...) | | | test.rs:91:29:91:39 | ... .next(...) | test.rs:91:19:91:25 | TupleStructPat | | | test.rs:91:41:95:9 | BlockExpr | test.rs:91:15:91:39 | LetExpr | | | test.rs:92:13:94:13 | IfExpr | test.rs:91:41:95:9 | BlockExpr | | -| test.rs:92:17:92:17 | PathExpr | test.rs:92:21:92:21 | 5 | | +| test.rs:92:17:92:17 | i | test.rs:92:21:92:21 | 5 | | | test.rs:92:17:92:21 | ... = ... | test.rs:92:13:94:13 | IfExpr | false | | test.rs:92:17:92:21 | ... = ... | test.rs:93:17:93:22 | ExprStmt | true | | test.rs:92:21:92:21 | 5 | test.rs:92:17:92:21 | ... = ... | | @@ -575,9 +575,9 @@ edges | test.rs:269:5:271:5 | enter test_question_mark_operator_1 | test.rs:269:38:269:38 | s | | | test.rs:269:5:271:5 | exit test_question_mark_operator_1 (normal) | test.rs:269:5:271:5 | exit test_question_mark_operator_1 | | | test.rs:269:38:269:38 | s | test.rs:269:38:269:44 | Param | match | -| test.rs:269:38:269:44 | Param | test.rs:270:9:270:11 | PathExpr | | +| test.rs:269:38:269:44 | Param | test.rs:270:9:270:11 | str | | | test.rs:269:62:271:5 | BlockExpr | test.rs:269:5:271:5 | exit test_question_mark_operator_1 (normal) | | -| test.rs:270:9:270:11 | PathExpr | test.rs:270:9:270:26 | ... .parse(...) | | +| test.rs:270:9:270:11 | str | test.rs:270:9:270:26 | ... .parse(...) | | | test.rs:270:9:270:26 | ... .parse(...) | test.rs:270:9:270:27 | TryExpr | | | test.rs:270:9:270:27 | TryExpr | test.rs:269:5:271:5 | exit test_question_mark_operator_1 (normal) | return | | test.rs:270:9:270:27 | TryExpr | test.rs:270:31:270:31 | 4 | match | @@ -592,15 +592,15 @@ edges | test.rs:274:15:274:15 | b | test.rs:274:15:274:16 | TryExpr | | | test.rs:274:15:274:16 | TryExpr | test.rs:273:5:278:5 | exit test_question_mark_operator_2 (normal) | return | | test.rs:274:15:274:16 | TryExpr | test.rs:275:13:275:16 | true | match | -| test.rs:275:13:275:16 | LiteralPat | test.rs:275:21:275:24 | PathExpr | match | +| test.rs:275:13:275:16 | LiteralPat | test.rs:275:21:275:24 | Some | match | | test.rs:275:13:275:16 | LiteralPat | test.rs:276:13:276:17 | false | no-match | | test.rs:275:13:275:16 | true | test.rs:275:13:275:16 | LiteralPat | | -| test.rs:275:21:275:24 | PathExpr | test.rs:275:26:275:30 | false | | +| test.rs:275:21:275:24 | Some | test.rs:275:26:275:30 | false | | | test.rs:275:21:275:31 | CallExpr | test.rs:274:9:277:9 | MatchExpr | | | test.rs:275:26:275:30 | false | test.rs:275:21:275:31 | CallExpr | | -| test.rs:276:13:276:17 | LiteralPat | test.rs:276:22:276:25 | PathExpr | match | +| test.rs:276:13:276:17 | LiteralPat | test.rs:276:22:276:25 | Some | match | | test.rs:276:13:276:17 | false | test.rs:276:13:276:17 | LiteralPat | | -| test.rs:276:22:276:25 | PathExpr | test.rs:276:27:276:30 | true | | +| test.rs:276:22:276:25 | Some | test.rs:276:27:276:30 | true | | | test.rs:276:22:276:31 | CallExpr | test.rs:274:9:277:9 | MatchExpr | | | test.rs:276:27:276:30 | true | test.rs:276:22:276:31 | CallExpr | | | test.rs:283:5:289:5 | enter test_match | test.rs:283:19:283:29 | maybe_digit | | @@ -633,10 +633,10 @@ edges | test.rs:291:77:300:5 | BlockExpr | test.rs:291:5:300:5 | exit test_match_with_return_in_scrutinee (normal) | | | test.rs:292:9:299:9 | MatchExpr | test.rs:291:77:300:5 | BlockExpr | | | test.rs:292:16:296:9 | IfExpr | test.rs:297:13:297:27 | TupleStructPat | | -| test.rs:292:19:292:29 | maybe_digit | test.rs:292:34:292:37 | PathExpr | | +| test.rs:292:19:292:29 | maybe_digit | test.rs:292:34:292:37 | Some | | | test.rs:292:19:292:40 | ... == ... | test.rs:293:13:293:21 | ExprStmt | true | | test.rs:292:19:292:40 | ... == ... | test.rs:295:13:295:23 | maybe_digit | false | -| test.rs:292:34:292:37 | PathExpr | test.rs:292:39:292:39 | 3 | | +| test.rs:292:34:292:37 | Some | test.rs:292:39:292:39 | 3 | | | test.rs:292:34:292:40 | CallExpr | test.rs:292:19:292:40 | ... == ... | | | test.rs:292:39:292:39 | 3 | test.rs:292:34:292:40 | CallExpr | | | test.rs:293:13:293:20 | ReturnExpr | test.rs:291:5:300:5 | exit test_match_with_return_in_scrutinee (normal) | return | @@ -768,13 +768,13 @@ edges | test.rs:368:5:370:5 | enter say_hello | test.rs:369:9:369:34 | ExprStmt | | | test.rs:368:5:370:5 | exit say_hello (normal) | test.rs:368:5:370:5 | exit say_hello | | | test.rs:368:26:370:5 | BlockExpr | test.rs:368:5:370:5 | exit say_hello (normal) | | +| test.rs:369:9:369:33 | $crate::io::_print | test.rs:369:18:369:32 | "hello, world!\\n" | | | test.rs:369:9:369:33 | MacroExpr | test.rs:368:26:370:5 | BlockExpr | | -| test.rs:369:9:369:33 | PathExpr | test.rs:369:18:369:32 | "hello, world!\\n" | | | test.rs:369:9:369:34 | ExprStmt | test.rs:369:18:369:32 | MacroStmts | | | test.rs:369:18:369:32 | "hello, world!\\n" | test.rs:369:18:369:32 | FormatArgsExpr | | | test.rs:369:18:369:32 | BlockExpr | test.rs:369:9:369:33 | MacroExpr | | | test.rs:369:18:369:32 | CallExpr | test.rs:369:18:369:32 | BlockExpr | | -| test.rs:369:18:369:32 | ExprStmt | test.rs:369:9:369:33 | PathExpr | | +| test.rs:369:18:369:32 | ExprStmt | test.rs:369:9:369:33 | $crate::io::_print | | | test.rs:369:18:369:32 | FormatArgsExpr | test.rs:369:18:369:32 | MacroExpr | | | test.rs:369:18:369:32 | MacroExpr | test.rs:369:18:369:32 | CallExpr | | | test.rs:369:18:369:32 | MacroStmts | test.rs:369:18:369:32 | ExprStmt | | @@ -786,13 +786,13 @@ edges | test.rs:373:26:375:9 | BlockExpr | test.rs:373:13:373:22 | say_godbye | | | test.rs:373:26:375:9 | enter BlockExpr | test.rs:374:13:374:42 | ExprStmt | | | test.rs:373:26:375:9 | exit BlockExpr (normal) | test.rs:373:26:375:9 | exit BlockExpr | | +| test.rs:374:13:374:41 | $crate::io::_print | test.rs:374:22:374:40 | "godbye, everyone!\\n" | | | test.rs:374:13:374:41 | MacroExpr | test.rs:373:26:375:9 | exit BlockExpr (normal) | | -| test.rs:374:13:374:41 | PathExpr | test.rs:374:22:374:40 | "godbye, everyone!\\n" | | | test.rs:374:13:374:42 | ExprStmt | test.rs:374:22:374:40 | MacroStmts | | | test.rs:374:22:374:40 | "godbye, everyone!\\n" | test.rs:374:22:374:40 | FormatArgsExpr | | | test.rs:374:22:374:40 | BlockExpr | test.rs:374:13:374:41 | MacroExpr | | | test.rs:374:22:374:40 | CallExpr | test.rs:374:22:374:40 | BlockExpr | | -| test.rs:374:22:374:40 | ExprStmt | test.rs:374:13:374:41 | PathExpr | | +| test.rs:374:22:374:40 | ExprStmt | test.rs:374:13:374:41 | $crate::io::_print | | | test.rs:374:22:374:40 | FormatArgsExpr | test.rs:374:22:374:40 | MacroExpr | | | test.rs:374:22:374:40 | MacroExpr | test.rs:374:22:374:40 | CallExpr | | | test.rs:374:22:374:40 | MacroStmts | test.rs:374:22:374:40 | ExprStmt | | @@ -801,23 +801,23 @@ edges | test.rs:376:31:378:9 | BlockExpr | test.rs:376:13:376:27 | say_how_are_you | | | test.rs:376:31:378:9 | enter BlockExpr | test.rs:377:13:377:37 | ExprStmt | | | test.rs:376:31:378:9 | exit BlockExpr (normal) | test.rs:376:31:378:9 | exit BlockExpr | | +| test.rs:377:13:377:36 | $crate::io::_print | test.rs:377:22:377:35 | "how are you?\\n" | | | test.rs:377:13:377:36 | MacroExpr | test.rs:376:31:378:9 | exit BlockExpr (normal) | | -| test.rs:377:13:377:36 | PathExpr | test.rs:377:22:377:35 | "how are you?\\n" | | | test.rs:377:13:377:37 | ExprStmt | test.rs:377:22:377:35 | MacroStmts | | | test.rs:377:22:377:35 | "how are you?\\n" | test.rs:377:22:377:35 | FormatArgsExpr | | | test.rs:377:22:377:35 | BlockExpr | test.rs:377:13:377:36 | MacroExpr | | | test.rs:377:22:377:35 | CallExpr | test.rs:377:22:377:35 | BlockExpr | | -| test.rs:377:22:377:35 | ExprStmt | test.rs:377:13:377:36 | PathExpr | | +| test.rs:377:22:377:35 | ExprStmt | test.rs:377:13:377:36 | $crate::io::_print | | | test.rs:377:22:377:35 | FormatArgsExpr | test.rs:377:22:377:35 | MacroExpr | | | test.rs:377:22:377:35 | MacroExpr | test.rs:377:22:377:35 | CallExpr | | | test.rs:377:22:377:35 | MacroStmts | test.rs:377:22:377:35 | ExprStmt | | | test.rs:379:9:379:28 | LetStmt | test.rs:379:20:379:27 | BlockExpr | | | test.rs:379:13:379:16 | noop | test.rs:380:9:380:26 | ExprStmt | match | | test.rs:379:20:379:27 | BlockExpr | test.rs:379:13:379:16 | noop | | -| test.rs:380:9:380:17 | PathExpr | test.rs:380:9:380:19 | CallExpr | | +| test.rs:380:9:380:17 | say_hello | test.rs:380:9:380:19 | CallExpr | | | test.rs:380:9:380:19 | CallExpr | test.rs:380:9:380:25 | AwaitExpr | | | test.rs:380:9:380:25 | AwaitExpr | test.rs:381:9:381:30 | ExprStmt | | -| test.rs:380:9:380:26 | ExprStmt | test.rs:380:9:380:17 | PathExpr | | +| test.rs:380:9:380:26 | ExprStmt | test.rs:380:9:380:17 | say_hello | | | test.rs:381:9:381:23 | say_how_are_you | test.rs:381:9:381:29 | AwaitExpr | | | test.rs:381:9:381:29 | AwaitExpr | test.rs:382:9:382:25 | ExprStmt | | | test.rs:381:9:381:30 | ExprStmt | test.rs:381:9:381:23 | say_how_are_you | | @@ -840,29 +840,29 @@ edges | test.rs:396:41:404:5 | BlockExpr | test.rs:396:5:404:5 | exit const_block_assert (normal) | | | test.rs:399:9:401:9 | BlockExpr | test.rs:403:9:403:10 | 42 | | | test.rs:399:9:401:9 | ExprStmt | test.rs:400:13:400:50 | ExprStmt | | +| test.rs:400:13:400:49 | $crate::panicking::panic_explicit | test.rs:400:13:400:49 | CallExpr | | | test.rs:400:13:400:49 | BlockExpr | test.rs:400:13:400:49 | MacroExpr | | | test.rs:400:13:400:49 | BlockExpr | test.rs:400:13:400:49 | exit panic_cold_explicit (normal) | | | test.rs:400:13:400:49 | BlockExpr | test.rs:400:21:400:48 | IfExpr | | | test.rs:400:13:400:49 | CallExpr | test.rs:400:13:400:49 | BlockExpr | | | test.rs:400:13:400:49 | CallExpr | test.rs:400:13:400:49 | BlockExpr | | | test.rs:400:13:400:49 | ExprStmt | test.rs:400:13:400:49 | MacroStmts | | -| test.rs:400:13:400:49 | ExprStmt | test.rs:400:13:400:49 | PathExpr | | +| test.rs:400:13:400:49 | ExprStmt | test.rs:400:13:400:49 | panic_cold_explicit | | | test.rs:400:13:400:49 | MacroExpr | test.rs:399:9:401:9 | BlockExpr | | | test.rs:400:13:400:49 | MacroExpr | test.rs:400:13:400:49 | BlockExpr | | | test.rs:400:13:400:49 | MacroStmts | test.rs:400:13:400:49 | panic_cold_explicit | | -| test.rs:400:13:400:49 | PathExpr | test.rs:400:13:400:49 | CallExpr | | -| test.rs:400:13:400:49 | PathExpr | test.rs:400:13:400:49 | CallExpr | | -| test.rs:400:13:400:49 | enter panic_cold_explicit | test.rs:400:13:400:49 | PathExpr | | +| test.rs:400:13:400:49 | enter panic_cold_explicit | test.rs:400:13:400:49 | $crate::panicking::panic_explicit | | | test.rs:400:13:400:49 | exit panic_cold_explicit (normal) | test.rs:400:13:400:49 | exit panic_cold_explicit | | +| test.rs:400:13:400:49 | panic_cold_explicit | test.rs:400:13:400:49 | CallExpr | | | test.rs:400:13:400:49 | panic_cold_explicit | test.rs:400:13:400:49 | ExprStmt | | | test.rs:400:13:400:50 | ExprStmt | test.rs:400:21:400:48 | MacroStmts | | -| test.rs:400:21:400:42 | PathExpr | test.rs:400:21:400:44 | CallExpr | | +| test.rs:400:21:400:42 | std::mem::size_of::<...> | test.rs:400:21:400:44 | CallExpr | | | test.rs:400:21:400:44 | CallExpr | test.rs:400:48:400:48 | 0 | | | test.rs:400:21:400:48 | ... > ... | test.rs:400:21:400:48 | [boolean(false)] ! ... | true | | test.rs:400:21:400:48 | ... > ... | test.rs:400:21:400:48 | [boolean(true)] ! ... | false | | test.rs:400:21:400:48 | BlockExpr | test.rs:400:13:400:49 | MacroExpr | | | test.rs:400:21:400:48 | IfExpr | test.rs:400:21:400:48 | BlockExpr | | -| test.rs:400:21:400:48 | MacroStmts | test.rs:400:21:400:42 | PathExpr | | +| test.rs:400:21:400:48 | MacroStmts | test.rs:400:21:400:42 | std::mem::size_of::<...> | | | test.rs:400:21:400:48 | [boolean(false)] ! ... | test.rs:400:21:400:48 | IfExpr | false | | test.rs:400:21:400:48 | [boolean(true)] ! ... | test.rs:400:13:400:49 | ExprStmt | true | | test.rs:400:48:400:48 | 0 | test.rs:400:21:400:48 | ... > ... | | @@ -872,14 +872,14 @@ edges | test.rs:406:35:415:5 | BlockExpr | test.rs:406:5:415:5 | exit const_block_panic (normal) | | | test.rs:407:9:407:30 | Const | test.rs:408:9:413:9 | ExprStmt | | | test.rs:408:9:413:9 | ExprStmt | test.rs:408:12:408:16 | false | | -| test.rs:408:9:413:9 | IfExpr | test.rs:414:9:414:9 | PathExpr | | +| test.rs:408:9:413:9 | IfExpr | test.rs:414:9:414:9 | N | | | test.rs:408:12:408:16 | false | test.rs:408:9:413:9 | IfExpr | false | +| test.rs:411:17:411:24 | $crate::panicking::panic_explicit | test.rs:411:17:411:24 | CallExpr | | | test.rs:411:17:411:24 | BlockExpr | test.rs:411:17:411:24 | exit panic_cold_explicit (normal) | | | test.rs:411:17:411:24 | CallExpr | test.rs:411:17:411:24 | BlockExpr | | -| test.rs:411:17:411:24 | PathExpr | test.rs:411:17:411:24 | CallExpr | | -| test.rs:411:17:411:24 | enter panic_cold_explicit | test.rs:411:17:411:24 | PathExpr | | +| test.rs:411:17:411:24 | enter panic_cold_explicit | test.rs:411:17:411:24 | $crate::panicking::panic_explicit | | | test.rs:411:17:411:24 | exit panic_cold_explicit (normal) | test.rs:411:17:411:24 | exit panic_cold_explicit | | -| test.rs:414:9:414:9 | PathExpr | test.rs:406:35:415:5 | BlockExpr | | +| test.rs:414:9:414:9 | N | test.rs:406:35:415:5 | BlockExpr | | | test.rs:418:1:423:1 | enter dead_code | test.rs:419:5:421:5 | ExprStmt | | | test.rs:418:1:423:1 | exit dead_code (normal) | test.rs:418:1:423:1 | exit dead_code | | | test.rs:419:5:421:5 | ExprStmt | test.rs:419:9:419:12 | true | | @@ -893,31 +893,31 @@ edges | test.rs:426:5:437:6 | LetStmt | test.rs:427:9:427:19 | ExprStmt | | | test.rs:426:9:426:14 | result | test.rs:425:29:438:1 | BlockExpr | match | | test.rs:426:18:437:5 | BlockExpr | test.rs:426:9:426:14 | result | | -| test.rs:427:9:427:16 | PathExpr | test.rs:427:9:427:18 | CallExpr | | +| test.rs:427:9:427:16 | do_thing | test.rs:427:9:427:18 | CallExpr | | | test.rs:427:9:427:18 | CallExpr | test.rs:428:9:430:9 | ExprStmt | | -| test.rs:427:9:427:19 | ExprStmt | test.rs:427:9:427:16 | PathExpr | | -| test.rs:428:9:430:9 | ExprStmt | test.rs:428:12:428:28 | PathExpr | | +| test.rs:427:9:427:19 | ExprStmt | test.rs:427:9:427:16 | do_thing | | +| test.rs:428:9:430:9 | ExprStmt | test.rs:428:12:428:28 | condition_not_met | | | test.rs:428:9:430:9 | IfExpr | test.rs:431:9:431:24 | ExprStmt | | -| test.rs:428:12:428:28 | PathExpr | test.rs:428:12:428:30 | CallExpr | | +| test.rs:428:12:428:28 | condition_not_met | test.rs:428:12:428:30 | CallExpr | | | test.rs:428:12:428:30 | CallExpr | test.rs:428:9:430:9 | IfExpr | false | | test.rs:428:12:428:30 | CallExpr | test.rs:429:13:429:27 | ExprStmt | true | | test.rs:429:13:429:26 | BreakExpr | test.rs:426:18:437:5 | BlockExpr | break | | test.rs:429:13:429:27 | ExprStmt | test.rs:429:26:429:26 | 1 | | | test.rs:429:26:429:26 | 1 | test.rs:429:13:429:26 | BreakExpr | | -| test.rs:431:9:431:21 | PathExpr | test.rs:431:9:431:23 | CallExpr | | +| test.rs:431:9:431:21 | do_next_thing | test.rs:431:9:431:23 | CallExpr | | | test.rs:431:9:431:23 | CallExpr | test.rs:432:9:434:9 | ExprStmt | | -| test.rs:431:9:431:24 | ExprStmt | test.rs:431:9:431:21 | PathExpr | | -| test.rs:432:9:434:9 | ExprStmt | test.rs:432:12:432:28 | PathExpr | | +| test.rs:431:9:431:24 | ExprStmt | test.rs:431:9:431:21 | do_next_thing | | +| test.rs:432:9:434:9 | ExprStmt | test.rs:432:12:432:28 | condition_not_met | | | test.rs:432:9:434:9 | IfExpr | test.rs:435:9:435:24 | ExprStmt | | -| test.rs:432:12:432:28 | PathExpr | test.rs:432:12:432:30 | CallExpr | | +| test.rs:432:12:432:28 | condition_not_met | test.rs:432:12:432:30 | CallExpr | | | test.rs:432:12:432:30 | CallExpr | test.rs:432:9:434:9 | IfExpr | false | | test.rs:432:12:432:30 | CallExpr | test.rs:433:13:433:27 | ExprStmt | true | | test.rs:433:13:433:26 | BreakExpr | test.rs:426:18:437:5 | BlockExpr | break | | test.rs:433:13:433:27 | ExprStmt | test.rs:433:26:433:26 | 2 | | | test.rs:433:26:433:26 | 2 | test.rs:433:13:433:26 | BreakExpr | | -| test.rs:435:9:435:21 | PathExpr | test.rs:435:9:435:23 | CallExpr | | +| test.rs:435:9:435:21 | do_last_thing | test.rs:435:9:435:23 | CallExpr | | | test.rs:435:9:435:23 | CallExpr | test.rs:436:9:436:9 | 3 | | -| test.rs:435:9:435:24 | ExprStmt | test.rs:435:9:435:21 | PathExpr | | +| test.rs:435:9:435:24 | ExprStmt | test.rs:435:9:435:21 | do_last_thing | | | test.rs:436:9:436:9 | 3 | test.rs:426:18:437:5 | BlockExpr | | | test.rs:440:1:448:1 | enter labelled_block2 | test.rs:441:5:447:6 | LetStmt | | | test.rs:440:1:448:1 | exit labelled_block2 (normal) | test.rs:440:1:448:1 | exit labelled_block2 | | @@ -925,9 +925,9 @@ edges | test.rs:441:5:447:6 | LetStmt | test.rs:442:9:442:34 | LetStmt | | | test.rs:441:9:441:14 | result | test.rs:440:29:448:1 | BlockExpr | match | | test.rs:441:18:447:5 | BlockExpr | test.rs:441:9:441:14 | result | | -| test.rs:442:9:442:34 | LetStmt | test.rs:442:30:442:33 | PathExpr | | +| test.rs:442:9:442:34 | LetStmt | test.rs:442:30:442:33 | None | | | test.rs:442:13:442:13 | x | test.rs:443:9:445:10 | LetStmt | match | -| test.rs:442:30:442:33 | PathExpr | test.rs:442:13:442:13 | x | | +| test.rs:442:30:442:33 | None | test.rs:442:13:442:13 | x | | | test.rs:443:9:445:10 | LetStmt | test.rs:443:23:443:23 | x | | | test.rs:443:13:443:19 | TupleStructPat | test.rs:443:18:443:18 | y | match | | test.rs:443:13:443:19 | TupleStructPat | test.rs:444:13:444:27 | ExprStmt | no-match | @@ -954,9 +954,9 @@ edges | test.rs:453:9:453:16 | ExprStmt | test.rs:453:10:453:10 | x | | | test.rs:453:10:453:10 | x | test.rs:453:9:453:10 | * ... | | | test.rs:453:15:453:15 | 1 | test.rs:453:9:453:15 | ... += ... | | -| test.rs:455:5:455:10 | PathExpr | test.rs:455:17:455:17 | x | | +| test.rs:455:5:455:10 | nested | test.rs:455:17:455:17 | x | | | test.rs:455:5:455:18 | CallExpr | test.rs:450:27:456:1 | BlockExpr | | -| test.rs:455:5:455:19 | ExprStmt | test.rs:455:5:455:10 | PathExpr | | +| test.rs:455:5:455:19 | ExprStmt | test.rs:455:5:455:10 | nested | | | test.rs:455:12:455:17 | RefExpr | test.rs:455:5:455:18 | CallExpr | | | test.rs:455:17:455:17 | x | test.rs:455:12:455:17 | RefExpr | | breakTarget diff --git a/rust/ql/test/library-tests/variables/Cfg.expected b/rust/ql/test/library-tests/variables/Cfg.expected index c7b122e2ab0e6..3ff46aa9f7ecb 100644 --- a/rust/ql/test/library-tests/variables/Cfg.expected +++ b/rust/ql/test/library-tests/variables/Cfg.expected @@ -4,13 +4,13 @@ edges | variables.rs:3:14:3:14 | s | variables.rs:3:14:3:20 | Param | match | | variables.rs:3:14:3:20 | Param | variables.rs:4:5:4:22 | ExprStmt | | | variables.rs:3:23:5:1 | BlockExpr | variables.rs:3:1:5:1 | exit print_str (normal) | | +| variables.rs:4:5:4:21 | $crate::io::_print | variables.rs:4:14:4:17 | "{}\\n" | | | variables.rs:4:5:4:21 | MacroExpr | variables.rs:3:23:5:1 | BlockExpr | | -| variables.rs:4:5:4:21 | PathExpr | variables.rs:4:14:4:17 | "{}\\n" | | | variables.rs:4:5:4:22 | ExprStmt | variables.rs:4:14:4:20 | MacroStmts | | | variables.rs:4:14:4:17 | "{}\\n" | variables.rs:4:20:4:20 | s | | | variables.rs:4:14:4:20 | BlockExpr | variables.rs:4:5:4:21 | MacroExpr | | | variables.rs:4:14:4:20 | CallExpr | variables.rs:4:14:4:20 | BlockExpr | | -| variables.rs:4:14:4:20 | ExprStmt | variables.rs:4:5:4:21 | PathExpr | | +| variables.rs:4:14:4:20 | ExprStmt | variables.rs:4:5:4:21 | $crate::io::_print | | | variables.rs:4:14:4:20 | FormatArgsExpr | variables.rs:4:14:4:20 | MacroExpr | | | variables.rs:4:14:4:20 | MacroExpr | variables.rs:4:14:4:20 | CallExpr | | | variables.rs:4:14:4:20 | MacroStmts | variables.rs:4:14:4:20 | ExprStmt | | @@ -20,13 +20,13 @@ edges | variables.rs:7:14:7:14 | i | variables.rs:7:14:7:19 | Param | match | | variables.rs:7:14:7:19 | Param | variables.rs:8:5:8:22 | ExprStmt | | | variables.rs:7:22:9:1 | BlockExpr | variables.rs:7:1:9:1 | exit print_i64 (normal) | | +| variables.rs:8:5:8:21 | $crate::io::_print | variables.rs:8:14:8:17 | "{}\\n" | | | variables.rs:8:5:8:21 | MacroExpr | variables.rs:7:22:9:1 | BlockExpr | | -| variables.rs:8:5:8:21 | PathExpr | variables.rs:8:14:8:17 | "{}\\n" | | | variables.rs:8:5:8:22 | ExprStmt | variables.rs:8:14:8:20 | MacroStmts | | | variables.rs:8:14:8:17 | "{}\\n" | variables.rs:8:20:8:20 | i | | | variables.rs:8:14:8:20 | BlockExpr | variables.rs:8:5:8:21 | MacroExpr | | | variables.rs:8:14:8:20 | CallExpr | variables.rs:8:14:8:20 | BlockExpr | | -| variables.rs:8:14:8:20 | ExprStmt | variables.rs:8:5:8:21 | PathExpr | | +| variables.rs:8:14:8:20 | ExprStmt | variables.rs:8:5:8:21 | $crate::io::_print | | | variables.rs:8:14:8:20 | FormatArgsExpr | variables.rs:8:14:8:20 | MacroExpr | | | variables.rs:8:14:8:20 | MacroExpr | variables.rs:8:14:8:20 | CallExpr | | | variables.rs:8:14:8:20 | MacroStmts | variables.rs:8:14:8:20 | ExprStmt | | @@ -34,9 +34,9 @@ edges | variables.rs:11:1:13:1 | enter print_i64_ref | variables.rs:11:18:11:18 | i | | | variables.rs:11:1:13:1 | exit print_i64_ref (normal) | variables.rs:11:1:13:1 | exit print_i64_ref | | | variables.rs:11:18:11:18 | i | variables.rs:11:18:11:24 | Param | match | -| variables.rs:11:18:11:24 | Param | variables.rs:12:5:12:13 | PathExpr | | +| variables.rs:11:18:11:24 | Param | variables.rs:12:5:12:13 | print_i64 | | | variables.rs:11:27:13:1 | BlockExpr | variables.rs:11:1:13:1 | exit print_i64_ref (normal) | | -| variables.rs:12:5:12:13 | PathExpr | variables.rs:12:16:12:16 | i | | +| variables.rs:12:5:12:13 | print_i64 | variables.rs:12:16:12:16 | i | | | variables.rs:12:5:12:17 | CallExpr | variables.rs:11:27:13:1 | BlockExpr | | | variables.rs:12:15:12:16 | * ... | variables.rs:12:5:12:17 | CallExpr | | | variables.rs:12:16:12:16 | i | variables.rs:12:15:12:16 | * ... | | @@ -46,9 +46,9 @@ edges | variables.rs:16:5:16:17 | LetStmt | variables.rs:16:14:16:16 | "a" | | | variables.rs:16:9:16:10 | x1 | variables.rs:17:5:17:18 | ExprStmt | match | | variables.rs:16:14:16:16 | "a" | variables.rs:16:9:16:10 | x1 | | -| variables.rs:17:5:17:13 | PathExpr | variables.rs:17:15:17:16 | x1 | | +| variables.rs:17:5:17:13 | print_str | variables.rs:17:15:17:16 | x1 | | | variables.rs:17:5:17:17 | CallExpr | variables.rs:15:25:18:1 | BlockExpr | | -| variables.rs:17:5:17:18 | ExprStmt | variables.rs:17:5:17:13 | PathExpr | | +| variables.rs:17:5:17:18 | ExprStmt | variables.rs:17:5:17:13 | print_str | | | variables.rs:17:15:17:16 | x1 | variables.rs:17:5:17:17 | CallExpr | | | variables.rs:20:1:25:1 | enter mutable_variable | variables.rs:21:5:21:19 | LetStmt | | | variables.rs:20:1:25:1 | exit mutable_variable (normal) | variables.rs:20:1:25:1 | exit mutable_variable | | @@ -56,17 +56,17 @@ edges | variables.rs:21:5:21:19 | LetStmt | variables.rs:21:18:21:18 | 4 | | | variables.rs:21:9:21:14 | x2 | variables.rs:22:5:22:18 | ExprStmt | match | | variables.rs:21:18:21:18 | 4 | variables.rs:21:9:21:14 | x2 | | -| variables.rs:22:5:22:13 | PathExpr | variables.rs:22:15:22:16 | x2 | | +| variables.rs:22:5:22:13 | print_i64 | variables.rs:22:15:22:16 | x2 | | | variables.rs:22:5:22:17 | CallExpr | variables.rs:23:5:23:11 | ExprStmt | | -| variables.rs:22:5:22:18 | ExprStmt | variables.rs:22:5:22:13 | PathExpr | | +| variables.rs:22:5:22:18 | ExprStmt | variables.rs:22:5:22:13 | print_i64 | | | variables.rs:22:15:22:16 | x2 | variables.rs:22:5:22:17 | CallExpr | | | variables.rs:23:5:23:6 | x2 | variables.rs:23:10:23:10 | 5 | | | variables.rs:23:5:23:10 | ... = ... | variables.rs:24:5:24:18 | ExprStmt | | | variables.rs:23:5:23:11 | ExprStmt | variables.rs:23:5:23:6 | x2 | | | variables.rs:23:10:23:10 | 5 | variables.rs:23:5:23:10 | ... = ... | | -| variables.rs:24:5:24:13 | PathExpr | variables.rs:24:15:24:16 | x2 | | +| variables.rs:24:5:24:13 | print_i64 | variables.rs:24:15:24:16 | x2 | | | variables.rs:24:5:24:17 | CallExpr | variables.rs:20:23:25:1 | BlockExpr | | -| variables.rs:24:5:24:18 | ExprStmt | variables.rs:24:5:24:13 | PathExpr | | +| variables.rs:24:5:24:18 | ExprStmt | variables.rs:24:5:24:13 | print_i64 | | | variables.rs:24:15:24:16 | x2 | variables.rs:24:5:24:17 | CallExpr | | | variables.rs:27:1:32:1 | enter mutable_variable_immutable_borrow | variables.rs:28:5:28:18 | LetStmt | | | variables.rs:27:1:32:1 | exit mutable_variable_immutable_borrow (normal) | variables.rs:27:1:32:1 | exit mutable_variable_immutable_borrow | | @@ -74,18 +74,18 @@ edges | variables.rs:28:5:28:18 | LetStmt | variables.rs:28:17:28:17 | 1 | | | variables.rs:28:9:28:13 | x | variables.rs:29:5:29:22 | ExprStmt | match | | variables.rs:28:17:28:17 | 1 | variables.rs:28:9:28:13 | x | | -| variables.rs:29:5:29:17 | PathExpr | variables.rs:29:20:29:20 | x | | +| variables.rs:29:5:29:17 | print_i64_ref | variables.rs:29:20:29:20 | x | | | variables.rs:29:5:29:21 | CallExpr | variables.rs:30:5:30:10 | ExprStmt | | -| variables.rs:29:5:29:22 | ExprStmt | variables.rs:29:5:29:17 | PathExpr | | +| variables.rs:29:5:29:22 | ExprStmt | variables.rs:29:5:29:17 | print_i64_ref | | | variables.rs:29:19:29:20 | RefExpr | variables.rs:29:5:29:21 | CallExpr | | | variables.rs:29:20:29:20 | x | variables.rs:29:19:29:20 | RefExpr | | | variables.rs:30:5:30:5 | x | variables.rs:30:9:30:9 | 2 | | | variables.rs:30:5:30:9 | ... = ... | variables.rs:31:5:31:22 | ExprStmt | | | variables.rs:30:5:30:10 | ExprStmt | variables.rs:30:5:30:5 | x | | | variables.rs:30:9:30:9 | 2 | variables.rs:30:5:30:9 | ... = ... | | -| variables.rs:31:5:31:17 | PathExpr | variables.rs:31:20:31:20 | x | | +| variables.rs:31:5:31:17 | print_i64_ref | variables.rs:31:20:31:20 | x | | | variables.rs:31:5:31:21 | CallExpr | variables.rs:27:40:32:1 | BlockExpr | | -| variables.rs:31:5:31:22 | ExprStmt | variables.rs:31:5:31:17 | PathExpr | | +| variables.rs:31:5:31:22 | ExprStmt | variables.rs:31:5:31:17 | print_i64_ref | | | variables.rs:31:19:31:20 | RefExpr | variables.rs:31:5:31:21 | CallExpr | | | variables.rs:31:20:31:20 | x | variables.rs:31:19:31:20 | RefExpr | | | variables.rs:34:1:40:1 | enter variable_shadow1 | variables.rs:35:5:35:15 | LetStmt | | @@ -94,18 +94,18 @@ edges | variables.rs:35:5:35:15 | LetStmt | variables.rs:35:14:35:14 | 1 | | | variables.rs:35:9:35:10 | x3 | variables.rs:36:5:36:18 | ExprStmt | match | | variables.rs:35:14:35:14 | 1 | variables.rs:35:9:35:10 | x3 | | -| variables.rs:36:5:36:13 | PathExpr | variables.rs:36:15:36:16 | x3 | | +| variables.rs:36:5:36:13 | print_i64 | variables.rs:36:15:36:16 | x3 | | | variables.rs:36:5:36:17 | CallExpr | variables.rs:37:5:38:15 | LetStmt | | -| variables.rs:36:5:36:18 | ExprStmt | variables.rs:36:5:36:13 | PathExpr | | +| variables.rs:36:5:36:18 | ExprStmt | variables.rs:36:5:36:13 | print_i64 | | | variables.rs:36:15:36:16 | x3 | variables.rs:36:5:36:17 | CallExpr | | | variables.rs:37:5:38:15 | LetStmt | variables.rs:38:9:38:10 | x3 | | | variables.rs:37:9:37:10 | x3 | variables.rs:39:5:39:18 | ExprStmt | match | | variables.rs:38:9:38:10 | x3 | variables.rs:38:14:38:14 | 1 | | | variables.rs:38:9:38:14 | ... + ... | variables.rs:37:9:37:10 | x3 | | | variables.rs:38:14:38:14 | 1 | variables.rs:38:9:38:14 | ... + ... | | -| variables.rs:39:5:39:13 | PathExpr | variables.rs:39:15:39:16 | x3 | | +| variables.rs:39:5:39:13 | print_i64 | variables.rs:39:15:39:16 | x3 | | | variables.rs:39:5:39:17 | CallExpr | variables.rs:34:23:40:1 | BlockExpr | | -| variables.rs:39:5:39:18 | ExprStmt | variables.rs:39:5:39:13 | PathExpr | | +| variables.rs:39:5:39:18 | ExprStmt | variables.rs:39:5:39:13 | print_i64 | | | variables.rs:39:15:39:16 | x3 | variables.rs:39:5:39:17 | CallExpr | | | variables.rs:42:1:50:1 | enter variable_shadow2 | variables.rs:43:5:43:17 | LetStmt | | | variables.rs:42:1:50:1 | exit variable_shadow2 (normal) | variables.rs:42:1:50:1 | exit variable_shadow2 | | @@ -113,22 +113,22 @@ edges | variables.rs:43:5:43:17 | LetStmt | variables.rs:43:14:43:16 | "a" | | | variables.rs:43:9:43:10 | x4 | variables.rs:44:5:44:18 | ExprStmt | match | | variables.rs:43:14:43:16 | "a" | variables.rs:43:9:43:10 | x4 | | -| variables.rs:44:5:44:13 | PathExpr | variables.rs:44:15:44:16 | x4 | | +| variables.rs:44:5:44:13 | print_str | variables.rs:44:15:44:16 | x4 | | | variables.rs:44:5:44:17 | CallExpr | variables.rs:45:5:48:5 | ExprStmt | | -| variables.rs:44:5:44:18 | ExprStmt | variables.rs:44:5:44:13 | PathExpr | | +| variables.rs:44:5:44:18 | ExprStmt | variables.rs:44:5:44:13 | print_str | | | variables.rs:44:15:44:16 | x4 | variables.rs:44:5:44:17 | CallExpr | | | variables.rs:45:5:48:5 | BlockExpr | variables.rs:49:5:49:18 | ExprStmt | | | variables.rs:45:5:48:5 | ExprStmt | variables.rs:46:9:46:21 | LetStmt | | | variables.rs:46:9:46:21 | LetStmt | variables.rs:46:18:46:20 | "b" | | | variables.rs:46:13:46:14 | x4 | variables.rs:47:9:47:22 | ExprStmt | match | | variables.rs:46:18:46:20 | "b" | variables.rs:46:13:46:14 | x4 | | -| variables.rs:47:9:47:17 | PathExpr | variables.rs:47:19:47:20 | x4 | | +| variables.rs:47:9:47:17 | print_str | variables.rs:47:19:47:20 | x4 | | | variables.rs:47:9:47:21 | CallExpr | variables.rs:45:5:48:5 | BlockExpr | | -| variables.rs:47:9:47:22 | ExprStmt | variables.rs:47:9:47:17 | PathExpr | | +| variables.rs:47:9:47:22 | ExprStmt | variables.rs:47:9:47:17 | print_str | | | variables.rs:47:19:47:20 | x4 | variables.rs:47:9:47:21 | CallExpr | | -| variables.rs:49:5:49:13 | PathExpr | variables.rs:49:15:49:16 | x4 | | +| variables.rs:49:5:49:13 | print_str | variables.rs:49:15:49:16 | x4 | | | variables.rs:49:5:49:17 | CallExpr | variables.rs:42:23:50:1 | BlockExpr | | -| variables.rs:49:5:49:18 | ExprStmt | variables.rs:49:5:49:13 | PathExpr | | +| variables.rs:49:5:49:18 | ExprStmt | variables.rs:49:5:49:13 | print_str | | | variables.rs:49:15:49:16 | x4 | variables.rs:49:5:49:17 | CallExpr | | | variables.rs:57:1:72:1 | enter let_pattern1 | variables.rs:58:5:67:47 | LetStmt | | | variables.rs:57:1:72:1 | exit let_pattern1 (normal) | variables.rs:57:1:72:1 | exit let_pattern1 | | @@ -148,21 +148,21 @@ edges | variables.rs:67:22:67:45 | RecordExpr | variables.rs:67:9:67:46 | TupleExpr | | | variables.rs:67:33:67:35 | "x" | variables.rs:67:41:67:43 | "y" | | | variables.rs:67:41:67:43 | "y" | variables.rs:67:22:67:45 | RecordExpr | | -| variables.rs:68:5:68:13 | PathExpr | variables.rs:68:15:68:16 | a1 | | +| variables.rs:68:5:68:13 | print_str | variables.rs:68:15:68:16 | a1 | | | variables.rs:68:5:68:17 | CallExpr | variables.rs:69:5:69:18 | ExprStmt | | -| variables.rs:68:5:68:18 | ExprStmt | variables.rs:68:5:68:13 | PathExpr | | +| variables.rs:68:5:68:18 | ExprStmt | variables.rs:68:5:68:13 | print_str | | | variables.rs:68:15:68:16 | a1 | variables.rs:68:5:68:17 | CallExpr | | -| variables.rs:69:5:69:13 | PathExpr | variables.rs:69:15:69:16 | b1 | | +| variables.rs:69:5:69:13 | print_str | variables.rs:69:15:69:16 | b1 | | | variables.rs:69:5:69:17 | CallExpr | variables.rs:70:5:70:17 | ExprStmt | | -| variables.rs:69:5:69:18 | ExprStmt | variables.rs:69:5:69:13 | PathExpr | | +| variables.rs:69:5:69:18 | ExprStmt | variables.rs:69:5:69:13 | print_str | | | variables.rs:69:15:69:16 | b1 | variables.rs:69:5:69:17 | CallExpr | | -| variables.rs:70:5:70:13 | PathExpr | variables.rs:70:15:70:15 | x | | +| variables.rs:70:5:70:13 | print_str | variables.rs:70:15:70:15 | x | | | variables.rs:70:5:70:16 | CallExpr | variables.rs:71:5:71:17 | ExprStmt | | -| variables.rs:70:5:70:17 | ExprStmt | variables.rs:70:5:70:13 | PathExpr | | +| variables.rs:70:5:70:17 | ExprStmt | variables.rs:70:5:70:13 | print_str | | | variables.rs:70:15:70:15 | x | variables.rs:70:5:70:16 | CallExpr | | -| variables.rs:71:5:71:13 | PathExpr | variables.rs:71:15:71:15 | y | | +| variables.rs:71:5:71:13 | print_str | variables.rs:71:15:71:15 | y | | | variables.rs:71:5:71:16 | CallExpr | variables.rs:57:19:72:1 | BlockExpr | | -| variables.rs:71:5:71:17 | ExprStmt | variables.rs:71:5:71:13 | PathExpr | | +| variables.rs:71:5:71:17 | ExprStmt | variables.rs:71:5:71:13 | print_str | | | variables.rs:71:15:71:15 | y | variables.rs:71:5:71:16 | CallExpr | | | variables.rs:74:1:82:1 | enter let_pattern2 | variables.rs:75:5:75:38 | LetStmt | | | variables.rs:74:1:82:1 | exit let_pattern2 (normal) | variables.rs:74:1:82:1 | exit let_pattern2 | | @@ -177,22 +177,22 @@ edges | variables.rs:77:12:77:13 | a2 | variables.rs:78:12:78:13 | b2 | match | | variables.rs:78:12:78:13 | b2 | variables.rs:80:5:80:18 | ExprStmt | match | | variables.rs:79:9:79:10 | p1 | variables.rs:76:9:79:5 | RecordPat | | -| variables.rs:80:5:80:13 | PathExpr | variables.rs:80:15:80:16 | a2 | | +| variables.rs:80:5:80:13 | print_str | variables.rs:80:15:80:16 | a2 | | | variables.rs:80:5:80:17 | CallExpr | variables.rs:81:5:81:18 | ExprStmt | | -| variables.rs:80:5:80:18 | ExprStmt | variables.rs:80:5:80:13 | PathExpr | | +| variables.rs:80:5:80:18 | ExprStmt | variables.rs:80:5:80:13 | print_str | | | variables.rs:80:15:80:16 | a2 | variables.rs:80:5:80:17 | CallExpr | | -| variables.rs:81:5:81:13 | PathExpr | variables.rs:81:15:81:16 | b2 | | +| variables.rs:81:5:81:13 | print_str | variables.rs:81:15:81:16 | b2 | | | variables.rs:81:5:81:17 | CallExpr | variables.rs:74:19:82:1 | BlockExpr | | -| variables.rs:81:5:81:18 | ExprStmt | variables.rs:81:5:81:13 | PathExpr | | +| variables.rs:81:5:81:18 | ExprStmt | variables.rs:81:5:81:13 | print_str | | | variables.rs:81:15:81:16 | b2 | variables.rs:81:5:81:17 | CallExpr | | | variables.rs:84:1:91:1 | enter let_pattern3 | variables.rs:85:5:85:42 | LetStmt | | | variables.rs:84:1:91:1 | exit let_pattern3 (normal) | variables.rs:84:1:91:1 | exit let_pattern3 | | | variables.rs:84:19:91:1 | BlockExpr | variables.rs:84:1:91:1 | exit let_pattern3 (normal) | | -| variables.rs:85:5:85:42 | LetStmt | variables.rs:85:14:85:17 | PathExpr | | +| variables.rs:85:5:85:42 | LetStmt | variables.rs:85:14:85:17 | Some | | | variables.rs:85:9:85:10 | s1 | variables.rs:87:8:88:12 | LetExpr | match | -| variables.rs:85:14:85:17 | PathExpr | variables.rs:85:19:85:30 | PathExpr | | +| variables.rs:85:14:85:17 | Some | variables.rs:85:19:85:30 | String::from | | | variables.rs:85:14:85:41 | CallExpr | variables.rs:85:9:85:10 | s1 | | -| variables.rs:85:19:85:30 | PathExpr | variables.rs:85:32:85:39 | "Hello!" | | +| variables.rs:85:19:85:30 | String::from | variables.rs:85:32:85:39 | "Hello!" | | | variables.rs:85:19:85:40 | CallExpr | variables.rs:85:14:85:41 | CallExpr | | | variables.rs:85:32:85:39 | "Hello!" | variables.rs:85:19:85:40 | CallExpr | | | variables.rs:87:5:90:5 | IfExpr | variables.rs:84:19:91:1 | BlockExpr | | @@ -202,37 +202,37 @@ edges | variables.rs:87:17:87:22 | s2 | variables.rs:89:9:89:22 | ExprStmt | match | | variables.rs:88:11:88:12 | s1 | variables.rs:87:12:87:23 | TupleStructPat | | | variables.rs:88:14:90:5 | BlockExpr | variables.rs:87:5:90:5 | IfExpr | | -| variables.rs:89:9:89:17 | PathExpr | variables.rs:89:19:89:20 | s2 | | +| variables.rs:89:9:89:17 | print_str | variables.rs:89:19:89:20 | s2 | | | variables.rs:89:9:89:21 | CallExpr | variables.rs:88:14:90:5 | BlockExpr | | -| variables.rs:89:9:89:22 | ExprStmt | variables.rs:89:9:89:17 | PathExpr | | +| variables.rs:89:9:89:22 | ExprStmt | variables.rs:89:9:89:17 | print_str | | | variables.rs:89:19:89:20 | s2 | variables.rs:89:9:89:21 | CallExpr | | | variables.rs:93:1:99:1 | enter let_pattern4 | variables.rs:94:5:97:10 | LetStmt | | | variables.rs:93:1:99:1 | exit let_pattern4 (normal) | variables.rs:93:1:99:1 | exit let_pattern4 | | | variables.rs:93:19:99:1 | BlockExpr | variables.rs:93:1:99:1 | exit let_pattern4 (normal) | | -| variables.rs:94:5:97:10 | LetStmt | variables.rs:94:34:94:37 | PathExpr | | +| variables.rs:94:5:97:10 | LetStmt | variables.rs:94:34:94:37 | Some | | | variables.rs:94:9:94:16 | TupleStructPat | variables.rs:94:14:94:15 | x5 | match | | variables.rs:94:9:94:16 | TupleStructPat | variables.rs:96:13:96:19 | MacroStmts | no-match | | variables.rs:94:14:94:15 | x5 | variables.rs:98:5:98:18 | ExprStmt | match | -| variables.rs:94:34:94:37 | PathExpr | variables.rs:94:39:94:42 | "x5" | | +| variables.rs:94:34:94:37 | Some | variables.rs:94:39:94:42 | "x5" | | | variables.rs:94:34:94:43 | CallExpr | variables.rs:94:9:94:16 | TupleStructPat | | | variables.rs:94:39:94:42 | "x5" | variables.rs:94:34:94:43 | CallExpr | | | variables.rs:96:13:96:19 | "not yet implemented" | variables.rs:96:13:96:19 | CallExpr | | +| variables.rs:96:13:96:19 | $crate::panicking::panic | variables.rs:96:13:96:19 | "not yet implemented" | | | variables.rs:96:13:96:19 | CallExpr | variables.rs:96:13:96:19 | MacroExpr | | | variables.rs:96:13:96:19 | MacroExpr | variables.rs:95:14:97:9 | BlockExpr | | -| variables.rs:96:13:96:19 | MacroStmts | variables.rs:96:13:96:19 | PathExpr | | -| variables.rs:96:13:96:19 | PathExpr | variables.rs:96:13:96:19 | "not yet implemented" | | -| variables.rs:98:5:98:13 | PathExpr | variables.rs:98:15:98:16 | x5 | | +| variables.rs:96:13:96:19 | MacroStmts | variables.rs:96:13:96:19 | $crate::panicking::panic | | +| variables.rs:98:5:98:13 | print_str | variables.rs:98:15:98:16 | x5 | | | variables.rs:98:5:98:17 | CallExpr | variables.rs:93:19:99:1 | BlockExpr | | -| variables.rs:98:5:98:18 | ExprStmt | variables.rs:98:5:98:13 | PathExpr | | +| variables.rs:98:5:98:18 | ExprStmt | variables.rs:98:5:98:13 | print_str | | | variables.rs:98:15:98:16 | x5 | variables.rs:98:5:98:17 | CallExpr | | | variables.rs:101:1:108:1 | enter let_pattern5 | variables.rs:102:5:102:42 | LetStmt | | | variables.rs:101:1:108:1 | exit let_pattern5 (normal) | variables.rs:101:1:108:1 | exit let_pattern5 | | | variables.rs:101:19:108:1 | BlockExpr | variables.rs:101:1:108:1 | exit let_pattern5 (normal) | | -| variables.rs:102:5:102:42 | LetStmt | variables.rs:102:14:102:17 | PathExpr | | +| variables.rs:102:5:102:42 | LetStmt | variables.rs:102:14:102:17 | Some | | | variables.rs:102:9:102:10 | s1 | variables.rs:104:11:105:12 | LetExpr | match | -| variables.rs:102:14:102:17 | PathExpr | variables.rs:102:19:102:30 | PathExpr | | +| variables.rs:102:14:102:17 | Some | variables.rs:102:19:102:30 | String::from | | | variables.rs:102:14:102:41 | CallExpr | variables.rs:102:9:102:10 | s1 | | -| variables.rs:102:19:102:30 | PathExpr | variables.rs:102:32:102:39 | "Hello!" | | +| variables.rs:102:19:102:30 | String::from | variables.rs:102:32:102:39 | "Hello!" | | | variables.rs:102:19:102:40 | CallExpr | variables.rs:102:14:102:41 | CallExpr | | | variables.rs:102:32:102:39 | "Hello!" | variables.rs:102:19:102:40 | CallExpr | | | variables.rs:104:5:107:5 | WhileExpr | variables.rs:101:19:108:1 | BlockExpr | | @@ -242,16 +242,16 @@ edges | variables.rs:104:20:104:25 | s2 | variables.rs:106:9:106:22 | ExprStmt | match | | variables.rs:105:11:105:12 | s1 | variables.rs:104:15:104:26 | TupleStructPat | | | variables.rs:105:14:107:5 | BlockExpr | variables.rs:104:11:105:12 | LetExpr | | -| variables.rs:106:9:106:17 | PathExpr | variables.rs:106:19:106:20 | s2 | | +| variables.rs:106:9:106:17 | print_str | variables.rs:106:19:106:20 | s2 | | | variables.rs:106:9:106:21 | CallExpr | variables.rs:105:14:107:5 | BlockExpr | | -| variables.rs:106:9:106:22 | ExprStmt | variables.rs:106:9:106:17 | PathExpr | | +| variables.rs:106:9:106:22 | ExprStmt | variables.rs:106:9:106:17 | print_str | | | variables.rs:106:19:106:20 | s2 | variables.rs:106:9:106:21 | CallExpr | | | variables.rs:110:1:125:1 | enter match_pattern1 | variables.rs:111:5:111:21 | LetStmt | | | variables.rs:110:1:125:1 | exit match_pattern1 (normal) | variables.rs:110:1:125:1 | exit match_pattern1 | | | variables.rs:110:21:125:1 | BlockExpr | variables.rs:110:1:125:1 | exit match_pattern1 (normal) | | -| variables.rs:111:5:111:21 | LetStmt | variables.rs:111:14:111:17 | PathExpr | | +| variables.rs:111:5:111:21 | LetStmt | variables.rs:111:14:111:17 | Some | | | variables.rs:111:9:111:10 | x6 | variables.rs:112:5:112:16 | LetStmt | match | -| variables.rs:111:14:111:17 | PathExpr | variables.rs:111:19:111:19 | 5 | | +| variables.rs:111:14:111:17 | Some | variables.rs:111:19:111:19 | 5 | | | variables.rs:111:14:111:20 | CallExpr | variables.rs:111:9:111:10 | x6 | | | variables.rs:111:19:111:19 | 5 | variables.rs:111:14:111:20 | CallExpr | | | variables.rs:112:5:112:16 | LetStmt | variables.rs:112:14:112:15 | 10 | | @@ -263,25 +263,25 @@ edges | variables.rs:115:9:115:16 | TupleStructPat | variables.rs:115:14:115:15 | 50 | match | | variables.rs:115:9:115:16 | TupleStructPat | variables.rs:116:9:116:16 | TupleStructPat | no-match | | variables.rs:115:14:115:15 | 50 | variables.rs:115:14:115:15 | LiteralPat | | -| variables.rs:115:14:115:15 | LiteralPat | variables.rs:115:21:115:29 | PathExpr | match | +| variables.rs:115:14:115:15 | LiteralPat | variables.rs:115:21:115:29 | print_str | match | | variables.rs:115:14:115:15 | LiteralPat | variables.rs:116:9:116:16 | TupleStructPat | no-match | -| variables.rs:115:21:115:29 | PathExpr | variables.rs:115:31:115:38 | "Got 50" | | +| variables.rs:115:21:115:29 | print_str | variables.rs:115:31:115:38 | "Got 50" | | | variables.rs:115:21:115:39 | CallExpr | variables.rs:114:5:122:5 | MatchExpr | | | variables.rs:115:31:115:38 | "Got 50" | variables.rs:115:21:115:39 | CallExpr | | | variables.rs:116:9:116:16 | TupleStructPat | variables.rs:116:14:116:15 | y1 | match | | variables.rs:116:9:116:16 | TupleStructPat | variables.rs:121:9:121:12 | None | no-match | -| variables.rs:116:14:116:15 | y1 | variables.rs:119:13:119:21 | PathExpr | match | +| variables.rs:116:14:116:15 | y1 | variables.rs:119:13:119:21 | print_i64 | match | | variables.rs:118:9:120:9 | BlockExpr | variables.rs:114:5:122:5 | MatchExpr | | -| variables.rs:119:13:119:21 | PathExpr | variables.rs:119:23:119:24 | y1 | | +| variables.rs:119:13:119:21 | print_i64 | variables.rs:119:23:119:24 | y1 | | | variables.rs:119:13:119:25 | CallExpr | variables.rs:118:9:120:9 | BlockExpr | | | variables.rs:119:23:119:24 | y1 | variables.rs:119:13:119:25 | CallExpr | | -| variables.rs:121:9:121:12 | None | variables.rs:121:17:121:25 | PathExpr | match | -| variables.rs:121:17:121:25 | PathExpr | variables.rs:121:27:121:32 | "NONE" | | +| variables.rs:121:9:121:12 | None | variables.rs:121:17:121:25 | print_str | match | +| variables.rs:121:17:121:25 | print_str | variables.rs:121:27:121:32 | "NONE" | | | variables.rs:121:17:121:33 | CallExpr | variables.rs:114:5:122:5 | MatchExpr | | | variables.rs:121:27:121:32 | "NONE" | variables.rs:121:17:121:33 | CallExpr | | -| variables.rs:124:5:124:13 | PathExpr | variables.rs:124:15:124:16 | y1 | | +| variables.rs:124:5:124:13 | print_i64 | variables.rs:124:15:124:16 | y1 | | | variables.rs:124:5:124:17 | CallExpr | variables.rs:110:21:125:1 | BlockExpr | | -| variables.rs:124:5:124:18 | ExprStmt | variables.rs:124:5:124:13 | PathExpr | | +| variables.rs:124:5:124:18 | ExprStmt | variables.rs:124:5:124:13 | print_i64 | | | variables.rs:124:15:124:16 | y1 | variables.rs:124:5:124:17 | CallExpr | | | variables.rs:127:1:152:1 | enter match_pattern2 | variables.rs:128:5:128:36 | LetStmt | | | variables.rs:127:1:152:1 | exit match_pattern2 (normal) | variables.rs:127:1:152:1 | exit match_pattern2 | | @@ -304,17 +304,17 @@ edges | variables.rs:133:20:133:20 | WildcardPat | variables.rs:134:13:134:17 | fifth | match | | variables.rs:134:13:134:17 | fifth | variables.rs:136:13:136:29 | ExprStmt | match | | variables.rs:135:14:139:9 | BlockExpr | variables.rs:130:5:140:5 | MatchExpr | | -| variables.rs:136:13:136:21 | PathExpr | variables.rs:136:23:136:27 | first | | +| variables.rs:136:13:136:21 | print_i64 | variables.rs:136:23:136:27 | first | | | variables.rs:136:13:136:28 | CallExpr | variables.rs:137:13:137:29 | ExprStmt | | -| variables.rs:136:13:136:29 | ExprStmt | variables.rs:136:13:136:21 | PathExpr | | +| variables.rs:136:13:136:29 | ExprStmt | variables.rs:136:13:136:21 | print_i64 | | | variables.rs:136:23:136:27 | first | variables.rs:136:13:136:28 | CallExpr | | -| variables.rs:137:13:137:21 | PathExpr | variables.rs:137:23:137:27 | third | | +| variables.rs:137:13:137:21 | print_i64 | variables.rs:137:23:137:27 | third | | | variables.rs:137:13:137:28 | CallExpr | variables.rs:138:13:138:29 | ExprStmt | | -| variables.rs:137:13:137:29 | ExprStmt | variables.rs:137:13:137:21 | PathExpr | | +| variables.rs:137:13:137:29 | ExprStmt | variables.rs:137:13:137:21 | print_i64 | | | variables.rs:137:23:137:27 | third | variables.rs:137:13:137:28 | CallExpr | | -| variables.rs:138:13:138:21 | PathExpr | variables.rs:138:23:138:27 | fifth | | +| variables.rs:138:13:138:21 | print_i64 | variables.rs:138:23:138:27 | fifth | | | variables.rs:138:13:138:28 | CallExpr | variables.rs:135:14:139:9 | BlockExpr | | -| variables.rs:138:13:138:29 | ExprStmt | variables.rs:138:13:138:21 | PathExpr | | +| variables.rs:138:13:138:29 | ExprStmt | variables.rs:138:13:138:21 | print_i64 | | | variables.rs:138:23:138:27 | fifth | variables.rs:138:13:138:28 | CallExpr | | | variables.rs:142:5:151:5 | MatchExpr | variables.rs:127:21:152:1 | BlockExpr | | | variables.rs:142:11:142:17 | numbers | variables.rs:143:9:147:9 | TuplePat | | @@ -323,13 +323,13 @@ edges | variables.rs:145:13:145:14 | RestPat | variables.rs:146:13:146:16 | last | match | | variables.rs:146:13:146:16 | last | variables.rs:148:13:148:29 | ExprStmt | match | | variables.rs:147:14:150:9 | BlockExpr | variables.rs:142:5:151:5 | MatchExpr | | -| variables.rs:148:13:148:21 | PathExpr | variables.rs:148:23:148:27 | first | | +| variables.rs:148:13:148:21 | print_i64 | variables.rs:148:23:148:27 | first | | | variables.rs:148:13:148:28 | CallExpr | variables.rs:149:13:149:28 | ExprStmt | | -| variables.rs:148:13:148:29 | ExprStmt | variables.rs:148:13:148:21 | PathExpr | | +| variables.rs:148:13:148:29 | ExprStmt | variables.rs:148:13:148:21 | print_i64 | | | variables.rs:148:23:148:27 | first | variables.rs:148:13:148:28 | CallExpr | | -| variables.rs:149:13:149:21 | PathExpr | variables.rs:149:23:149:26 | last | | +| variables.rs:149:13:149:21 | print_i64 | variables.rs:149:23:149:26 | last | | | variables.rs:149:13:149:27 | CallExpr | variables.rs:147:14:150:9 | BlockExpr | | -| variables.rs:149:13:149:28 | ExprStmt | variables.rs:149:13:149:21 | PathExpr | | +| variables.rs:149:13:149:28 | ExprStmt | variables.rs:149:13:149:21 | print_i64 | | | variables.rs:149:23:149:26 | last | variables.rs:149:13:149:27 | CallExpr | | | variables.rs:154:1:162:1 | enter match_pattern3 | variables.rs:155:5:155:38 | LetStmt | | | variables.rs:154:1:162:1 | exit match_pattern3 (normal) | variables.rs:154:1:162:1 | exit match_pattern3 | | @@ -343,8 +343,8 @@ edges | variables.rs:157:11:157:12 | p2 | variables.rs:158:9:160:9 | RecordPat | | | variables.rs:158:9:160:9 | RecordPat | variables.rs:159:16:159:17 | x7 | match | | variables.rs:159:16:159:17 | x7 | variables.rs:159:20:159:21 | RestPat | match | -| variables.rs:159:20:159:21 | RestPat | variables.rs:160:14:160:22 | PathExpr | match | -| variables.rs:160:14:160:22 | PathExpr | variables.rs:160:24:160:25 | x7 | | +| variables.rs:159:20:159:21 | RestPat | variables.rs:160:14:160:22 | print_str | match | +| variables.rs:160:14:160:22 | print_str | variables.rs:160:24:160:25 | x7 | | | variables.rs:160:14:160:26 | CallExpr | variables.rs:157:5:161:5 | MatchExpr | | | variables.rs:160:24:160:25 | x7 | variables.rs:160:14:160:26 | CallExpr | | | variables.rs:168:1:181:1 | enter match_pattern4 | variables.rs:169:5:169:39 | LetStmt | | @@ -358,7 +358,7 @@ edges | variables.rs:171:11:171:13 | msg | variables.rs:172:9:174:9 | RecordPat | | | variables.rs:172:9:174:9 | RecordPat | variables.rs:173:31:173:35 | RangePat | match | | variables.rs:172:9:174:9 | RecordPat | variables.rs:175:9:175:38 | RecordPat | no-match | -| variables.rs:173:17:173:35 | [match(true)] id_variable | variables.rs:174:14:174:22 | PathExpr | match | +| variables.rs:173:17:173:35 | [match(true)] id_variable | variables.rs:174:14:174:22 | print_i64 | match | | variables.rs:173:31:173:31 | 3 | variables.rs:173:31:173:31 | LiteralPat | | | variables.rs:173:31:173:31 | LiteralPat | variables.rs:173:35:173:35 | 7 | match | | variables.rs:173:31:173:31 | LiteralPat | variables.rs:175:9:175:38 | RecordPat | no-match | @@ -367,7 +367,7 @@ edges | variables.rs:173:35:173:35 | 7 | variables.rs:173:35:173:35 | LiteralPat | | | variables.rs:173:35:173:35 | LiteralPat | variables.rs:173:17:173:35 | [match(true)] id_variable | match | | variables.rs:173:35:173:35 | LiteralPat | variables.rs:175:9:175:38 | RecordPat | no-match | -| variables.rs:174:14:174:22 | PathExpr | variables.rs:174:24:174:34 | id_variable | | +| variables.rs:174:14:174:22 | print_i64 | variables.rs:174:24:174:34 | id_variable | | | variables.rs:174:14:174:35 | CallExpr | variables.rs:171:5:180:5 | MatchExpr | | | variables.rs:174:24:174:34 | id_variable | variables.rs:174:14:174:35 | CallExpr | | | variables.rs:175:9:175:38 | RecordPat | variables.rs:175:30:175:36 | RangePat | match | @@ -381,45 +381,45 @@ edges | variables.rs:175:35:175:36 | LiteralPat | variables.rs:176:22:176:51 | MacroStmts | match | | variables.rs:175:35:175:36 | LiteralPat | variables.rs:178:9:178:29 | RecordPat | no-match | | variables.rs:175:43:177:9 | BlockExpr | variables.rs:171:5:180:5 | MatchExpr | | +| variables.rs:176:13:176:52 | $crate::io::_print | variables.rs:176:22:176:51 | "Found an id in another range\\n" | | | variables.rs:176:13:176:52 | MacroExpr | variables.rs:175:43:177:9 | BlockExpr | | -| variables.rs:176:13:176:52 | PathExpr | variables.rs:176:22:176:51 | "Found an id in another range\\n" | | | variables.rs:176:22:176:51 | "Found an id in another range\\n" | variables.rs:176:22:176:51 | FormatArgsExpr | | | variables.rs:176:22:176:51 | BlockExpr | variables.rs:176:13:176:52 | MacroExpr | | | variables.rs:176:22:176:51 | CallExpr | variables.rs:176:22:176:51 | BlockExpr | | -| variables.rs:176:22:176:51 | ExprStmt | variables.rs:176:13:176:52 | PathExpr | | +| variables.rs:176:22:176:51 | ExprStmt | variables.rs:176:13:176:52 | $crate::io::_print | | | variables.rs:176:22:176:51 | FormatArgsExpr | variables.rs:176:22:176:51 | MacroExpr | | | variables.rs:176:22:176:51 | MacroExpr | variables.rs:176:22:176:51 | CallExpr | | | variables.rs:176:22:176:51 | MacroStmts | variables.rs:176:22:176:51 | ExprStmt | | | variables.rs:178:9:178:29 | RecordPat | variables.rs:178:26:178:27 | id | match | -| variables.rs:178:26:178:27 | id | variables.rs:179:13:179:21 | PathExpr | match | -| variables.rs:179:13:179:21 | PathExpr | variables.rs:179:23:179:24 | id | | +| variables.rs:178:26:178:27 | id | variables.rs:179:13:179:21 | print_i64 | match | +| variables.rs:179:13:179:21 | print_i64 | variables.rs:179:23:179:24 | id | | | variables.rs:179:13:179:25 | CallExpr | variables.rs:171:5:180:5 | MatchExpr | | | variables.rs:179:23:179:24 | id | variables.rs:179:13:179:25 | CallExpr | | | variables.rs:188:1:194:1 | enter match_pattern5 | variables.rs:189:5:189:34 | LetStmt | | | variables.rs:188:1:194:1 | exit match_pattern5 (normal) | variables.rs:188:1:194:1 | exit match_pattern5 | | | variables.rs:188:21:194:1 | BlockExpr | variables.rs:188:1:194:1 | exit match_pattern5 (normal) | | -| variables.rs:189:5:189:34 | LetStmt | variables.rs:189:18:189:29 | PathExpr | | +| variables.rs:189:5:189:34 | LetStmt | variables.rs:189:18:189:29 | Either::Left | | | variables.rs:189:9:189:14 | either | variables.rs:190:11:190:16 | either | match | -| variables.rs:189:18:189:29 | PathExpr | variables.rs:189:31:189:32 | 32 | | +| variables.rs:189:18:189:29 | Either::Left | variables.rs:189:31:189:32 | 32 | | | variables.rs:189:18:189:33 | CallExpr | variables.rs:189:9:189:14 | either | | | variables.rs:189:31:189:32 | 32 | variables.rs:189:18:189:33 | CallExpr | | | variables.rs:190:5:193:5 | MatchExpr | variables.rs:188:21:194:1 | BlockExpr | | | variables.rs:190:11:190:16 | either | variables.rs:191:9:191:24 | TupleStructPat | | | variables.rs:191:9:191:24 | TupleStructPat | variables.rs:191:22:191:23 | a3 | match | | variables.rs:191:9:191:24 | TupleStructPat | variables.rs:191:28:191:44 | TupleStructPat | no-match | -| variables.rs:191:9:191:44 | [match(true)] OrPat | variables.rs:192:16:192:24 | PathExpr | match | +| variables.rs:191:9:191:44 | [match(true)] OrPat | variables.rs:192:16:192:24 | print_i64 | match | | variables.rs:191:22:191:23 | a3 | variables.rs:191:9:191:44 | [match(true)] OrPat | match | | variables.rs:191:28:191:44 | TupleStructPat | variables.rs:191:42:191:43 | a3 | match | | variables.rs:191:42:191:43 | a3 | variables.rs:191:9:191:44 | [match(true)] OrPat | match | -| variables.rs:192:16:192:24 | PathExpr | variables.rs:192:26:192:27 | a3 | | +| variables.rs:192:16:192:24 | print_i64 | variables.rs:192:26:192:27 | a3 | | | variables.rs:192:16:192:28 | CallExpr | variables.rs:190:5:193:5 | MatchExpr | | | variables.rs:192:26:192:27 | a3 | variables.rs:192:16:192:28 | CallExpr | | | variables.rs:202:1:216:1 | enter match_pattern6 | variables.rs:203:5:203:37 | LetStmt | | | variables.rs:202:1:216:1 | exit match_pattern6 (normal) | variables.rs:202:1:216:1 | exit match_pattern6 | | | variables.rs:202:21:216:1 | BlockExpr | variables.rs:202:1:216:1 | exit match_pattern6 (normal) | | -| variables.rs:203:5:203:37 | LetStmt | variables.rs:203:14:203:32 | PathExpr | | +| variables.rs:203:5:203:37 | LetStmt | variables.rs:203:14:203:32 | ThreeValued::Second | | | variables.rs:203:9:203:10 | tv | variables.rs:204:5:207:5 | ExprStmt | match | -| variables.rs:203:14:203:32 | PathExpr | variables.rs:203:34:203:35 | 62 | | +| variables.rs:203:14:203:32 | ThreeValued::Second | variables.rs:203:34:203:35 | 62 | | | variables.rs:203:14:203:36 | CallExpr | variables.rs:203:9:203:10 | tv | | | variables.rs:203:34:203:35 | 62 | variables.rs:203:14:203:36 | CallExpr | | | variables.rs:204:5:207:5 | ExprStmt | variables.rs:204:11:204:12 | tv | | @@ -427,20 +427,20 @@ edges | variables.rs:204:11:204:12 | tv | variables.rs:205:9:205:30 | TupleStructPat | | | variables.rs:205:9:205:30 | TupleStructPat | variables.rs:205:28:205:29 | a4 | match | | variables.rs:205:9:205:30 | TupleStructPat | variables.rs:205:34:205:56 | TupleStructPat | no-match | -| variables.rs:205:9:205:81 | [match(true)] OrPat | variables.rs:206:16:206:24 | PathExpr | match | +| variables.rs:205:9:205:81 | [match(true)] OrPat | variables.rs:206:16:206:24 | print_i64 | match | | variables.rs:205:28:205:29 | a4 | variables.rs:205:9:205:81 | [match(true)] OrPat | match | | variables.rs:205:34:205:56 | TupleStructPat | variables.rs:205:54:205:55 | a4 | match | | variables.rs:205:34:205:56 | TupleStructPat | variables.rs:205:60:205:81 | TupleStructPat | no-match | | variables.rs:205:54:205:55 | a4 | variables.rs:205:9:205:81 | [match(true)] OrPat | match | | variables.rs:205:60:205:81 | TupleStructPat | variables.rs:205:79:205:80 | a4 | match | | variables.rs:205:79:205:80 | a4 | variables.rs:205:9:205:81 | [match(true)] OrPat | match | -| variables.rs:206:16:206:24 | PathExpr | variables.rs:206:26:206:27 | a4 | | +| variables.rs:206:16:206:24 | print_i64 | variables.rs:206:26:206:27 | a4 | | | variables.rs:206:16:206:28 | CallExpr | variables.rs:204:5:207:5 | MatchExpr | | | variables.rs:206:26:206:27 | a4 | variables.rs:206:16:206:28 | CallExpr | | | variables.rs:208:5:211:5 | ExprStmt | variables.rs:208:11:208:12 | tv | | | variables.rs:208:5:211:5 | MatchExpr | variables.rs:212:11:212:12 | tv | | | variables.rs:208:11:208:12 | tv | variables.rs:209:10:209:31 | TupleStructPat | | -| variables.rs:209:9:209:83 | [match(true)] OrPat | variables.rs:210:16:210:24 | PathExpr | match | +| variables.rs:209:9:209:83 | [match(true)] OrPat | variables.rs:210:16:210:24 | print_i64 | match | | variables.rs:209:10:209:31 | TupleStructPat | variables.rs:209:29:209:30 | a5 | match | | variables.rs:209:10:209:31 | TupleStructPat | variables.rs:209:35:209:57 | TupleStructPat | no-match | | variables.rs:209:10:209:57 | [match(false)] OrPat | variables.rs:209:62:209:83 | TupleStructPat | no-match | @@ -451,14 +451,14 @@ edges | variables.rs:209:55:209:56 | a5 | variables.rs:209:10:209:57 | [match(true)] OrPat | match | | variables.rs:209:62:209:83 | TupleStructPat | variables.rs:209:81:209:82 | a5 | match | | variables.rs:209:81:209:82 | a5 | variables.rs:209:9:209:83 | [match(true)] OrPat | match | -| variables.rs:210:16:210:24 | PathExpr | variables.rs:210:26:210:27 | a5 | | +| variables.rs:210:16:210:24 | print_i64 | variables.rs:210:26:210:27 | a5 | | | variables.rs:210:16:210:28 | CallExpr | variables.rs:208:5:211:5 | MatchExpr | | | variables.rs:210:26:210:27 | a5 | variables.rs:210:16:210:28 | CallExpr | | | variables.rs:212:5:215:5 | MatchExpr | variables.rs:202:21:216:1 | BlockExpr | | | variables.rs:212:11:212:12 | tv | variables.rs:213:9:213:30 | TupleStructPat | | | variables.rs:213:9:213:30 | TupleStructPat | variables.rs:213:28:213:29 | a6 | match | | variables.rs:213:9:213:30 | TupleStructPat | variables.rs:213:35:213:57 | TupleStructPat | no-match | -| variables.rs:213:9:213:83 | [match(true)] OrPat | variables.rs:214:16:214:24 | PathExpr | match | +| variables.rs:213:9:213:83 | [match(true)] OrPat | variables.rs:214:16:214:24 | print_i64 | match | | variables.rs:213:28:213:29 | a6 | variables.rs:213:9:213:83 | [match(true)] OrPat | match | | variables.rs:213:35:213:57 | TupleStructPat | variables.rs:213:55:213:56 | a6 | match | | variables.rs:213:35:213:57 | TupleStructPat | variables.rs:213:61:213:82 | TupleStructPat | no-match | @@ -466,15 +466,15 @@ edges | variables.rs:213:55:213:56 | a6 | variables.rs:213:35:213:82 | [match(true)] OrPat | match | | variables.rs:213:61:213:82 | TupleStructPat | variables.rs:213:80:213:81 | a6 | match | | variables.rs:213:80:213:81 | a6 | variables.rs:213:35:213:82 | [match(true)] OrPat | match | -| variables.rs:214:16:214:24 | PathExpr | variables.rs:214:26:214:27 | a6 | | +| variables.rs:214:16:214:24 | print_i64 | variables.rs:214:26:214:27 | a6 | | | variables.rs:214:16:214:28 | CallExpr | variables.rs:212:5:215:5 | MatchExpr | | | variables.rs:214:26:214:27 | a6 | variables.rs:214:16:214:28 | CallExpr | | | variables.rs:218:1:226:1 | enter match_pattern7 | variables.rs:219:5:219:34 | LetStmt | | | variables.rs:218:1:226:1 | exit match_pattern7 (normal) | variables.rs:218:1:226:1 | exit match_pattern7 | | | variables.rs:218:21:226:1 | BlockExpr | variables.rs:218:1:226:1 | exit match_pattern7 (normal) | | -| variables.rs:219:5:219:34 | LetStmt | variables.rs:219:18:219:29 | PathExpr | | +| variables.rs:219:5:219:34 | LetStmt | variables.rs:219:18:219:29 | Either::Left | | | variables.rs:219:9:219:14 | either | variables.rs:220:11:220:16 | either | match | -| variables.rs:219:18:219:29 | PathExpr | variables.rs:219:31:219:32 | 32 | | +| variables.rs:219:18:219:29 | Either::Left | variables.rs:219:31:219:32 | 32 | | | variables.rs:219:18:219:33 | CallExpr | variables.rs:219:9:219:14 | either | | | variables.rs:219:31:219:32 | 32 | variables.rs:219:18:219:33 | CallExpr | | | variables.rs:220:5:225:5 | MatchExpr | variables.rs:218:21:226:1 | BlockExpr | | @@ -488,10 +488,10 @@ edges | variables.rs:221:28:221:44 | TupleStructPat | variables.rs:221:42:221:43 | a7 | match | | variables.rs:221:42:221:43 | a7 | variables.rs:221:9:221:44 | [match(true)] OrPat | match | | variables.rs:222:16:222:17 | a7 | variables.rs:222:21:222:21 | 0 | | -| variables.rs:222:16:222:21 | ... > ... | variables.rs:223:16:223:24 | PathExpr | true | +| variables.rs:222:16:222:21 | ... > ... | variables.rs:223:16:223:24 | print_i64 | true | | variables.rs:222:16:222:21 | ... > ... | variables.rs:224:9:224:9 | WildcardPat | false | | variables.rs:222:21:222:21 | 0 | variables.rs:222:16:222:21 | ... > ... | | -| variables.rs:223:16:223:24 | PathExpr | variables.rs:223:26:223:27 | a7 | | +| variables.rs:223:16:223:24 | print_i64 | variables.rs:223:26:223:27 | a7 | | | variables.rs:223:16:223:28 | CallExpr | variables.rs:220:5:225:5 | MatchExpr | | | variables.rs:223:26:223:27 | a7 | variables.rs:223:16:223:28 | CallExpr | | | variables.rs:224:9:224:9 | WildcardPat | variables.rs:224:14:224:15 | TupleExpr | match | @@ -499,9 +499,9 @@ edges | variables.rs:228:1:243:1 | enter match_pattern8 | variables.rs:229:5:229:34 | LetStmt | | | variables.rs:228:1:243:1 | exit match_pattern8 (normal) | variables.rs:228:1:243:1 | exit match_pattern8 | | | variables.rs:228:21:243:1 | BlockExpr | variables.rs:228:1:243:1 | exit match_pattern8 (normal) | | -| variables.rs:229:5:229:34 | LetStmt | variables.rs:229:18:229:29 | PathExpr | | +| variables.rs:229:5:229:34 | LetStmt | variables.rs:229:18:229:29 | Either::Left | | | variables.rs:229:9:229:14 | either | variables.rs:231:11:231:16 | either | match | -| variables.rs:229:18:229:29 | PathExpr | variables.rs:229:31:229:32 | 32 | | +| variables.rs:229:18:229:29 | Either::Left | variables.rs:229:31:229:32 | 32 | | | variables.rs:229:18:229:33 | CallExpr | variables.rs:229:9:229:14 | either | | | variables.rs:229:31:229:32 | 32 | variables.rs:229:18:229:33 | CallExpr | | | variables.rs:231:5:242:5 | MatchExpr | variables.rs:228:21:243:1 | BlockExpr | | @@ -516,9 +516,9 @@ edges | variables.rs:233:34:233:51 | TupleStructPat | variables.rs:233:48:233:50 | a11 | match | | variables.rs:233:48:233:50 | a11 | variables.rs:233:14:233:51 | [match(true)] OrPat | match | | variables.rs:234:12:240:9 | BlockExpr | variables.rs:231:5:242:5 | MatchExpr | | -| variables.rs:235:13:235:21 | PathExpr | variables.rs:235:23:235:25 | a11 | | +| variables.rs:235:13:235:21 | print_i64 | variables.rs:235:23:235:25 | a11 | | | variables.rs:235:13:235:26 | CallExpr | variables.rs:236:16:237:15 | LetExpr | | -| variables.rs:235:13:235:27 | ExprStmt | variables.rs:235:13:235:21 | PathExpr | | +| variables.rs:235:13:235:27 | ExprStmt | variables.rs:235:13:235:21 | print_i64 | | | variables.rs:235:23:235:25 | a11 | variables.rs:235:13:235:26 | CallExpr | | | variables.rs:236:13:239:13 | IfExpr | variables.rs:234:12:240:9 | BlockExpr | | | variables.rs:236:16:237:15 | LetExpr | variables.rs:237:15:237:15 | e | | @@ -527,9 +527,9 @@ edges | variables.rs:236:33:236:35 | a12 | variables.rs:238:17:238:32 | ExprStmt | match | | variables.rs:237:15:237:15 | e | variables.rs:236:20:236:36 | TupleStructPat | | | variables.rs:237:17:239:13 | BlockExpr | variables.rs:236:13:239:13 | IfExpr | | -| variables.rs:238:17:238:25 | PathExpr | variables.rs:238:28:238:30 | a12 | | +| variables.rs:238:17:238:25 | print_i64 | variables.rs:238:28:238:30 | a12 | | | variables.rs:238:17:238:31 | CallExpr | variables.rs:237:17:239:13 | BlockExpr | | -| variables.rs:238:17:238:32 | ExprStmt | variables.rs:238:17:238:25 | PathExpr | | +| variables.rs:238:17:238:32 | ExprStmt | variables.rs:238:17:238:25 | print_i64 | | | variables.rs:238:27:238:30 | * ... | variables.rs:238:17:238:31 | CallExpr | | | variables.rs:238:28:238:30 | a12 | variables.rs:238:27:238:30 | * ... | | | variables.rs:241:9:241:9 | WildcardPat | variables.rs:241:14:241:15 | TupleExpr | match | @@ -537,16 +537,16 @@ edges | variables.rs:252:1:258:1 | enter match_pattern9 | variables.rs:253:5:253:36 | LetStmt | | | variables.rs:252:1:258:1 | exit match_pattern9 (normal) | variables.rs:252:1:258:1 | exit match_pattern9 | | | variables.rs:252:21:258:1 | BlockExpr | variables.rs:252:1:258:1 | exit match_pattern9 (normal) | | -| variables.rs:253:5:253:36 | LetStmt | variables.rs:253:14:253:31 | PathExpr | | +| variables.rs:253:5:253:36 | LetStmt | variables.rs:253:14:253:31 | FourValued::Second | | | variables.rs:253:9:253:10 | fv | variables.rs:254:11:254:12 | fv | match | -| variables.rs:253:14:253:31 | PathExpr | variables.rs:253:33:253:34 | 62 | | +| variables.rs:253:14:253:31 | FourValued::Second | variables.rs:253:33:253:34 | 62 | | | variables.rs:253:14:253:35 | CallExpr | variables.rs:253:9:253:10 | fv | | | variables.rs:253:33:253:34 | 62 | variables.rs:253:14:253:35 | CallExpr | | | variables.rs:254:5:257:5 | MatchExpr | variables.rs:252:21:258:1 | BlockExpr | | | variables.rs:254:11:254:12 | fv | variables.rs:255:9:255:30 | TupleStructPat | | | variables.rs:255:9:255:30 | TupleStructPat | variables.rs:255:27:255:29 | a13 | match | | variables.rs:255:9:255:30 | TupleStructPat | variables.rs:255:35:255:57 | TupleStructPat | no-match | -| variables.rs:255:9:255:109 | [match(true)] OrPat | variables.rs:256:16:256:24 | PathExpr | match | +| variables.rs:255:9:255:109 | [match(true)] OrPat | variables.rs:256:16:256:24 | print_i64 | match | | variables.rs:255:27:255:29 | a13 | variables.rs:255:9:255:109 | [match(true)] OrPat | match | | variables.rs:255:35:255:57 | TupleStructPat | variables.rs:255:54:255:56 | a13 | match | | variables.rs:255:35:255:57 | TupleStructPat | variables.rs:255:61:255:82 | TupleStructPat | no-match | @@ -558,7 +558,7 @@ edges | variables.rs:255:79:255:81 | a13 | variables.rs:255:35:255:82 | [match(true)] OrPat | match | | variables.rs:255:87:255:109 | TupleStructPat | variables.rs:255:106:255:108 | a13 | match | | variables.rs:255:106:255:108 | a13 | variables.rs:255:9:255:109 | [match(true)] OrPat | match | -| variables.rs:256:16:256:24 | PathExpr | variables.rs:256:26:256:28 | a13 | | +| variables.rs:256:16:256:24 | print_i64 | variables.rs:256:26:256:28 | a13 | | | variables.rs:256:16:256:29 | CallExpr | variables.rs:254:5:257:5 | MatchExpr | | | variables.rs:256:26:256:28 | a13 | variables.rs:256:16:256:29 | CallExpr | | | variables.rs:260:1:269:1 | enter param_pattern1 | variables.rs:261:5:261:6 | a8 | | @@ -570,17 +570,17 @@ edges | variables.rs:263:9:263:10 | b3 | variables.rs:264:9:264:10 | c1 | match | | variables.rs:264:9:264:10 | c1 | variables.rs:262:5:265:19 | Param | match | | variables.rs:265:28:269:1 | BlockExpr | variables.rs:260:1:269:1 | exit param_pattern1 (normal) | | -| variables.rs:266:5:266:13 | PathExpr | variables.rs:266:15:266:16 | a8 | | +| variables.rs:266:5:266:13 | print_str | variables.rs:266:15:266:16 | a8 | | | variables.rs:266:5:266:17 | CallExpr | variables.rs:267:5:267:18 | ExprStmt | | -| variables.rs:266:5:266:18 | ExprStmt | variables.rs:266:5:266:13 | PathExpr | | +| variables.rs:266:5:266:18 | ExprStmt | variables.rs:266:5:266:13 | print_str | | | variables.rs:266:15:266:16 | a8 | variables.rs:266:5:266:17 | CallExpr | | -| variables.rs:267:5:267:13 | PathExpr | variables.rs:267:15:267:16 | b3 | | +| variables.rs:267:5:267:13 | print_str | variables.rs:267:15:267:16 | b3 | | | variables.rs:267:5:267:17 | CallExpr | variables.rs:268:5:268:18 | ExprStmt | | -| variables.rs:267:5:267:18 | ExprStmt | variables.rs:267:5:267:13 | PathExpr | | +| variables.rs:267:5:267:18 | ExprStmt | variables.rs:267:5:267:13 | print_str | | | variables.rs:267:15:267:16 | b3 | variables.rs:267:5:267:17 | CallExpr | | -| variables.rs:268:5:268:13 | PathExpr | variables.rs:268:15:268:16 | c1 | | +| variables.rs:268:5:268:13 | print_str | variables.rs:268:15:268:16 | c1 | | | variables.rs:268:5:268:17 | CallExpr | variables.rs:265:28:269:1 | BlockExpr | | -| variables.rs:268:5:268:18 | ExprStmt | variables.rs:268:5:268:13 | PathExpr | | +| variables.rs:268:5:268:18 | ExprStmt | variables.rs:268:5:268:13 | print_str | | | variables.rs:268:15:268:16 | c1 | variables.rs:268:5:268:17 | CallExpr | | | variables.rs:271:1:275:1 | enter param_pattern2 | variables.rs:272:6:272:21 | TupleStructPat | | | variables.rs:271:1:275:1 | exit param_pattern2 (normal) | variables.rs:271:1:275:1 | exit param_pattern2 | | @@ -592,9 +592,9 @@ edges | variables.rs:272:25:272:41 | TupleStructPat | variables.rs:272:39:272:40 | a9 | match | | variables.rs:272:39:272:40 | a9 | variables.rs:272:6:272:41 | [match(true)] OrPat | match | | variables.rs:273:9:275:1 | BlockExpr | variables.rs:271:1:275:1 | exit param_pattern2 (normal) | | -| variables.rs:274:5:274:13 | PathExpr | variables.rs:274:15:274:16 | a9 | | +| variables.rs:274:5:274:13 | print_i64 | variables.rs:274:15:274:16 | a9 | | | variables.rs:274:5:274:17 | CallExpr | variables.rs:273:9:275:1 | BlockExpr | | -| variables.rs:274:5:274:18 | ExprStmt | variables.rs:274:5:274:13 | PathExpr | | +| variables.rs:274:5:274:18 | ExprStmt | variables.rs:274:5:274:13 | print_i64 | | | variables.rs:274:15:274:16 | a9 | variables.rs:274:5:274:17 | CallExpr | | | variables.rs:277:1:312:1 | enter destruct_assignment | variables.rs:278:5:282:18 | LetStmt | | | variables.rs:277:1:312:1 | exit destruct_assignment (normal) | variables.rs:277:1:312:1 | exit destruct_assignment | | @@ -608,17 +608,17 @@ edges | variables.rs:282:10:282:10 | 1 | variables.rs:282:13:282:13 | 2 | | | variables.rs:282:13:282:13 | 2 | variables.rs:282:16:282:16 | 3 | | | variables.rs:282:16:282:16 | 3 | variables.rs:282:9:282:17 | TupleExpr | | -| variables.rs:283:5:283:13 | PathExpr | variables.rs:283:15:283:17 | a10 | | +| variables.rs:283:5:283:13 | print_i64 | variables.rs:283:15:283:17 | a10 | | | variables.rs:283:5:283:18 | CallExpr | variables.rs:284:5:284:18 | ExprStmt | | -| variables.rs:283:5:283:19 | ExprStmt | variables.rs:283:5:283:13 | PathExpr | | +| variables.rs:283:5:283:19 | ExprStmt | variables.rs:283:5:283:13 | print_i64 | | | variables.rs:283:15:283:17 | a10 | variables.rs:283:5:283:18 | CallExpr | | -| variables.rs:284:5:284:13 | PathExpr | variables.rs:284:15:284:16 | b4 | | +| variables.rs:284:5:284:13 | print_i64 | variables.rs:284:15:284:16 | b4 | | | variables.rs:284:5:284:17 | CallExpr | variables.rs:285:5:285:18 | ExprStmt | | -| variables.rs:284:5:284:18 | ExprStmt | variables.rs:284:5:284:13 | PathExpr | | +| variables.rs:284:5:284:18 | ExprStmt | variables.rs:284:5:284:13 | print_i64 | | | variables.rs:284:15:284:16 | b4 | variables.rs:284:5:284:17 | CallExpr | | -| variables.rs:285:5:285:13 | PathExpr | variables.rs:285:15:285:16 | c2 | | +| variables.rs:285:5:285:13 | print_i64 | variables.rs:285:15:285:16 | c2 | | | variables.rs:285:5:285:17 | CallExpr | variables.rs:287:5:295:6 | ExprStmt | | -| variables.rs:285:5:285:18 | ExprStmt | variables.rs:285:5:285:13 | PathExpr | | +| variables.rs:285:5:285:18 | ExprStmt | variables.rs:285:5:285:13 | print_i64 | | | variables.rs:285:15:285:16 | c2 | variables.rs:285:5:285:17 | CallExpr | | | variables.rs:287:5:291:5 | TupleExpr | variables.rs:292:9:292:11 | a10 | | | variables.rs:287:5:295:5 | ... = ... | variables.rs:296:5:296:19 | ExprStmt | | @@ -630,17 +630,17 @@ edges | variables.rs:292:9:292:11 | a10 | variables.rs:293:9:293:10 | b4 | | | variables.rs:293:9:293:10 | b4 | variables.rs:294:9:294:10 | c2 | | | variables.rs:294:9:294:10 | c2 | variables.rs:291:9:295:5 | TupleExpr | | -| variables.rs:296:5:296:13 | PathExpr | variables.rs:296:15:296:17 | a10 | | +| variables.rs:296:5:296:13 | print_i64 | variables.rs:296:15:296:17 | a10 | | | variables.rs:296:5:296:18 | CallExpr | variables.rs:297:5:297:18 | ExprStmt | | -| variables.rs:296:5:296:19 | ExprStmt | variables.rs:296:5:296:13 | PathExpr | | +| variables.rs:296:5:296:19 | ExprStmt | variables.rs:296:5:296:13 | print_i64 | | | variables.rs:296:15:296:17 | a10 | variables.rs:296:5:296:18 | CallExpr | | -| variables.rs:297:5:297:13 | PathExpr | variables.rs:297:15:297:16 | b4 | | +| variables.rs:297:5:297:13 | print_i64 | variables.rs:297:15:297:16 | b4 | | | variables.rs:297:5:297:17 | CallExpr | variables.rs:298:5:298:18 | ExprStmt | | -| variables.rs:297:5:297:18 | ExprStmt | variables.rs:297:5:297:13 | PathExpr | | +| variables.rs:297:5:297:18 | ExprStmt | variables.rs:297:5:297:13 | print_i64 | | | variables.rs:297:15:297:16 | b4 | variables.rs:297:5:297:17 | CallExpr | | -| variables.rs:298:5:298:13 | PathExpr | variables.rs:298:15:298:16 | c2 | | +| variables.rs:298:5:298:13 | print_i64 | variables.rs:298:15:298:16 | c2 | | | variables.rs:298:5:298:17 | CallExpr | variables.rs:300:5:308:5 | ExprStmt | | -| variables.rs:298:5:298:18 | ExprStmt | variables.rs:298:5:298:13 | PathExpr | | +| variables.rs:298:5:298:18 | ExprStmt | variables.rs:298:5:298:13 | print_i64 | | | variables.rs:298:15:298:16 | c2 | variables.rs:298:5:298:17 | CallExpr | | | variables.rs:300:5:308:5 | ExprStmt | variables.rs:300:12:300:12 | 4 | | | variables.rs:300:5:308:5 | MatchExpr | variables.rs:310:5:310:19 | ExprStmt | | @@ -651,21 +651,21 @@ edges | variables.rs:302:13:302:15 | a10 | variables.rs:303:13:303:14 | b4 | match | | variables.rs:303:13:303:14 | b4 | variables.rs:305:13:305:27 | ExprStmt | match | | variables.rs:304:14:307:9 | BlockExpr | variables.rs:300:5:308:5 | MatchExpr | | -| variables.rs:305:13:305:21 | PathExpr | variables.rs:305:23:305:25 | a10 | | +| variables.rs:305:13:305:21 | print_i64 | variables.rs:305:23:305:25 | a10 | | | variables.rs:305:13:305:26 | CallExpr | variables.rs:306:13:306:26 | ExprStmt | | -| variables.rs:305:13:305:27 | ExprStmt | variables.rs:305:13:305:21 | PathExpr | | +| variables.rs:305:13:305:27 | ExprStmt | variables.rs:305:13:305:21 | print_i64 | | | variables.rs:305:23:305:25 | a10 | variables.rs:305:13:305:26 | CallExpr | | -| variables.rs:306:13:306:21 | PathExpr | variables.rs:306:23:306:24 | b4 | | +| variables.rs:306:13:306:21 | print_i64 | variables.rs:306:23:306:24 | b4 | | | variables.rs:306:13:306:25 | CallExpr | variables.rs:304:14:307:9 | BlockExpr | | -| variables.rs:306:13:306:26 | ExprStmt | variables.rs:306:13:306:21 | PathExpr | | +| variables.rs:306:13:306:26 | ExprStmt | variables.rs:306:13:306:21 | print_i64 | | | variables.rs:306:23:306:24 | b4 | variables.rs:306:13:306:25 | CallExpr | | -| variables.rs:310:5:310:13 | PathExpr | variables.rs:310:15:310:17 | a10 | | +| variables.rs:310:5:310:13 | print_i64 | variables.rs:310:15:310:17 | a10 | | | variables.rs:310:5:310:18 | CallExpr | variables.rs:311:5:311:18 | ExprStmt | | -| variables.rs:310:5:310:19 | ExprStmt | variables.rs:310:5:310:13 | PathExpr | | +| variables.rs:310:5:310:19 | ExprStmt | variables.rs:310:5:310:13 | print_i64 | | | variables.rs:310:15:310:17 | a10 | variables.rs:310:5:310:18 | CallExpr | | -| variables.rs:311:5:311:13 | PathExpr | variables.rs:311:15:311:16 | b4 | | +| variables.rs:311:5:311:13 | print_i64 | variables.rs:311:15:311:16 | b4 | | | variables.rs:311:5:311:17 | CallExpr | variables.rs:277:26:312:1 | BlockExpr | | -| variables.rs:311:5:311:18 | ExprStmt | variables.rs:311:5:311:13 | PathExpr | | +| variables.rs:311:5:311:18 | ExprStmt | variables.rs:311:5:311:13 | print_i64 | | | variables.rs:311:15:311:16 | b4 | variables.rs:311:5:311:17 | CallExpr | | | variables.rs:314:1:329:1 | enter closure_variable | variables.rs:315:5:317:10 | LetStmt | | | variables.rs:314:1:329:1 | exit closure_variable (normal) | variables.rs:314:1:329:1 | exit closure_variable | | @@ -683,13 +683,13 @@ edges | variables.rs:319:9:319:23 | example_closure | variables.rs:319:25:319:25 | 5 | | | variables.rs:319:9:319:26 | CallExpr | variables.rs:318:9:318:10 | n1 | | | variables.rs:319:25:319:25 | 5 | variables.rs:319:9:319:26 | CallExpr | | -| variables.rs:320:5:320:13 | PathExpr | variables.rs:320:15:320:16 | n1 | | +| variables.rs:320:5:320:13 | print_i64 | variables.rs:320:15:320:16 | n1 | | | variables.rs:320:5:320:17 | CallExpr | variables.rs:322:5:322:25 | ExprStmt | | -| variables.rs:320:5:320:18 | ExprStmt | variables.rs:320:5:320:13 | PathExpr | | +| variables.rs:320:5:320:18 | ExprStmt | variables.rs:320:5:320:13 | print_i64 | | | variables.rs:320:15:320:16 | n1 | variables.rs:320:5:320:17 | CallExpr | | -| variables.rs:322:5:322:22 | PathExpr | variables.rs:322:5:322:24 | CallExpr | | +| variables.rs:322:5:322:22 | immutable_variable | variables.rs:322:5:322:24 | CallExpr | | | variables.rs:322:5:322:24 | CallExpr | variables.rs:323:5:325:10 | LetStmt | | -| variables.rs:322:5:322:25 | ExprStmt | variables.rs:322:5:322:22 | PathExpr | | +| variables.rs:322:5:322:25 | ExprStmt | variables.rs:322:5:322:22 | immutable_variable | | | variables.rs:323:5:325:10 | LetStmt | variables.rs:324:9:325:9 | ClosureExpr | | | variables.rs:323:9:323:26 | immutable_variable | variables.rs:326:5:327:30 | LetStmt | match | | variables.rs:324:9:325:9 | ClosureExpr | variables.rs:323:9:323:26 | immutable_variable | | @@ -703,9 +703,9 @@ edges | variables.rs:327:9:327:26 | immutable_variable | variables.rs:327:28:327:28 | 6 | | | variables.rs:327:9:327:29 | CallExpr | variables.rs:326:9:326:10 | n2 | | | variables.rs:327:28:327:28 | 6 | variables.rs:327:9:327:29 | CallExpr | | -| variables.rs:328:5:328:13 | PathExpr | variables.rs:328:15:328:16 | n2 | | +| variables.rs:328:5:328:13 | print_i64 | variables.rs:328:15:328:16 | n2 | | | variables.rs:328:5:328:17 | CallExpr | variables.rs:314:23:329:1 | BlockExpr | | -| variables.rs:328:5:328:18 | ExprStmt | variables.rs:328:5:328:13 | PathExpr | | +| variables.rs:328:5:328:18 | ExprStmt | variables.rs:328:5:328:13 | print_i64 | | | variables.rs:328:15:328:16 | n2 | variables.rs:328:5:328:17 | CallExpr | | | variables.rs:331:1:338:1 | enter for_variable | variables.rs:332:5:332:42 | LetStmt | | | variables.rs:331:1:338:1 | exit for_variable (normal) | variables.rs:331:1:338:1 | exit for_variable | | @@ -722,9 +722,9 @@ edges | variables.rs:334:9:334:12 | text | variables.rs:336:9:336:24 | ExprStmt | match | | variables.rs:335:12:335:12 | v | variables.rs:334:9:334:12 | text | | | variables.rs:335:14:337:5 | BlockExpr | variables.rs:334:9:334:12 | text | | -| variables.rs:336:9:336:17 | PathExpr | variables.rs:336:19:336:22 | text | | +| variables.rs:336:9:336:17 | print_str | variables.rs:336:19:336:22 | text | | | variables.rs:336:9:336:23 | CallExpr | variables.rs:335:14:337:5 | BlockExpr | | -| variables.rs:336:9:336:24 | ExprStmt | variables.rs:336:9:336:17 | PathExpr | | +| variables.rs:336:9:336:24 | ExprStmt | variables.rs:336:9:336:17 | print_str | | | variables.rs:336:19:336:22 | text | variables.rs:336:9:336:23 | CallExpr | | | variables.rs:340:1:346:1 | enter add_assign | variables.rs:341:5:341:18 | LetStmt | | | variables.rs:340:1:346:1 | exit add_assign (normal) | variables.rs:340:1:346:1 | exit add_assign | | @@ -736,18 +736,18 @@ edges | variables.rs:342:5:342:10 | ... += ... | variables.rs:343:5:343:17 | ExprStmt | | | variables.rs:342:5:342:11 | ExprStmt | variables.rs:342:5:342:5 | a | | | variables.rs:342:10:342:10 | 1 | variables.rs:342:5:342:10 | ... += ... | | -| variables.rs:343:5:343:13 | PathExpr | variables.rs:343:15:343:15 | a | | +| variables.rs:343:5:343:13 | print_i64 | variables.rs:343:15:343:15 | a | | | variables.rs:343:5:343:16 | CallExpr | variables.rs:344:5:344:28 | ExprStmt | | -| variables.rs:343:5:343:17 | ExprStmt | variables.rs:343:5:343:13 | PathExpr | | +| variables.rs:343:5:343:17 | ExprStmt | variables.rs:343:5:343:13 | print_i64 | | | variables.rs:343:15:343:15 | a | variables.rs:343:5:343:16 | CallExpr | | | variables.rs:344:5:344:27 | ... .add_assign(...) | variables.rs:345:5:345:17 | ExprStmt | | | variables.rs:344:5:344:28 | ExprStmt | variables.rs:344:11:344:11 | a | | | variables.rs:344:6:344:11 | RefExpr | variables.rs:344:25:344:26 | 10 | | | variables.rs:344:11:344:11 | a | variables.rs:344:6:344:11 | RefExpr | | | variables.rs:344:25:344:26 | 10 | variables.rs:344:5:344:27 | ... .add_assign(...) | | -| variables.rs:345:5:345:13 | PathExpr | variables.rs:345:15:345:15 | a | | +| variables.rs:345:5:345:13 | print_i64 | variables.rs:345:15:345:15 | a | | | variables.rs:345:5:345:16 | CallExpr | variables.rs:340:17:346:1 | BlockExpr | | -| variables.rs:345:5:345:17 | ExprStmt | variables.rs:345:5:345:13 | PathExpr | | +| variables.rs:345:5:345:17 | ExprStmt | variables.rs:345:5:345:13 | print_i64 | | | variables.rs:345:15:345:15 | a | variables.rs:345:5:345:16 | CallExpr | | | variables.rs:348:1:354:1 | enter mutate | variables.rs:349:5:349:18 | LetStmt | | | variables.rs:348:1:354:1 | exit mutate (normal) | variables.rs:348:1:354:1 | exit mutate | | @@ -764,9 +764,9 @@ edges | variables.rs:352:5:352:15 | ExprStmt | variables.rs:352:6:352:10 | ref_i | | | variables.rs:352:6:352:10 | ref_i | variables.rs:352:5:352:10 | * ... | | | variables.rs:352:14:352:14 | 2 | variables.rs:352:5:352:14 | ... = ... | | -| variables.rs:353:5:353:13 | PathExpr | variables.rs:353:15:353:15 | i | | +| variables.rs:353:5:353:13 | print_i64 | variables.rs:353:15:353:15 | i | | | variables.rs:353:5:353:16 | CallExpr | variables.rs:348:13:354:1 | BlockExpr | | -| variables.rs:353:5:353:17 | ExprStmt | variables.rs:353:5:353:13 | PathExpr | | +| variables.rs:353:5:353:17 | ExprStmt | variables.rs:353:5:353:13 | print_i64 | | | variables.rs:353:15:353:15 | i | variables.rs:353:5:353:16 | CallExpr | | | variables.rs:356:1:361:1 | enter mutate_param | variables.rs:356:17:356:17 | x | | | variables.rs:356:1:361:1 | exit mutate_param (normal) | variables.rs:356:1:361:1 | exit mutate_param | | @@ -811,9 +811,9 @@ edges | variables.rs:372:5:372:18 | LetStmt | variables.rs:372:17:372:17 | 2 | | | variables.rs:372:9:372:13 | x | variables.rs:373:5:374:29 | LetStmt | match | | variables.rs:372:17:372:17 | 2 | variables.rs:372:9:372:13 | x | | -| variables.rs:373:5:374:29 | LetStmt | variables.rs:374:9:374:20 | PathExpr | | +| variables.rs:373:5:374:29 | LetStmt | variables.rs:374:9:374:20 | mutate_param | | | variables.rs:373:9:373:9 | y | variables.rs:375:5:375:12 | ExprStmt | match | -| variables.rs:374:9:374:20 | PathExpr | variables.rs:374:27:374:27 | x | | +| variables.rs:374:9:374:20 | mutate_param | variables.rs:374:27:374:27 | x | | | variables.rs:374:9:374:28 | CallExpr | variables.rs:373:9:373:9 | y | | | variables.rs:374:22:374:27 | RefExpr | variables.rs:374:9:374:28 | CallExpr | | | variables.rs:374:27:374:27 | x | variables.rs:374:22:374:27 | RefExpr | | @@ -822,9 +822,9 @@ edges | variables.rs:375:5:375:12 | ExprStmt | variables.rs:375:6:375:6 | y | | | variables.rs:375:6:375:6 | y | variables.rs:375:5:375:6 | * ... | | | variables.rs:375:10:375:11 | 10 | variables.rs:375:5:375:11 | ... = ... | | -| variables.rs:377:5:377:13 | PathExpr | variables.rs:377:15:377:15 | x | | +| variables.rs:377:5:377:13 | print_i64 | variables.rs:377:15:377:15 | x | | | variables.rs:377:5:377:16 | CallExpr | variables.rs:379:5:379:18 | LetStmt | | -| variables.rs:377:5:377:17 | ExprStmt | variables.rs:377:5:377:13 | PathExpr | | +| variables.rs:377:5:377:17 | ExprStmt | variables.rs:377:5:377:13 | print_i64 | | | variables.rs:377:15:377:15 | x | variables.rs:377:5:377:16 | CallExpr | | | variables.rs:379:5:379:18 | LetStmt | variables.rs:379:17:379:17 | 4 | | | variables.rs:379:9:379:13 | z | variables.rs:380:5:381:20 | LetStmt | match | @@ -834,9 +834,9 @@ edges | variables.rs:381:9:381:19 | RefExpr | variables.rs:380:9:380:9 | w | | | variables.rs:381:14:381:19 | RefExpr | variables.rs:381:9:381:19 | RefExpr | | | variables.rs:381:19:381:19 | x | variables.rs:381:14:381:19 | RefExpr | | -| variables.rs:382:5:382:17 | PathExpr | variables.rs:383:14:383:14 | z | | +| variables.rs:382:5:382:17 | mutate_param2 | variables.rs:383:14:383:14 | z | | | variables.rs:382:5:385:5 | CallExpr | variables.rs:386:5:386:13 | ExprStmt | | -| variables.rs:382:5:385:6 | ExprStmt | variables.rs:382:5:382:17 | PathExpr | | +| variables.rs:382:5:385:6 | ExprStmt | variables.rs:382:5:382:17 | mutate_param2 | | | variables.rs:383:9:383:14 | RefExpr | variables.rs:384:9:384:9 | w | | | variables.rs:383:14:383:14 | z | variables.rs:383:9:383:14 | RefExpr | | | variables.rs:384:9:384:9 | w | variables.rs:382:5:385:5 | CallExpr | | @@ -846,9 +846,9 @@ edges | variables.rs:386:6:386:7 | * ... | variables.rs:386:5:386:7 | * ... | | | variables.rs:386:7:386:7 | w | variables.rs:386:6:386:7 | * ... | | | variables.rs:386:11:386:12 | 11 | variables.rs:386:5:386:12 | ... = ... | | -| variables.rs:388:5:388:13 | PathExpr | variables.rs:388:15:388:15 | z | | +| variables.rs:388:5:388:13 | print_i64 | variables.rs:388:15:388:15 | z | | | variables.rs:388:5:388:16 | CallExpr | variables.rs:371:17:389:1 | BlockExpr | | -| variables.rs:388:5:388:17 | ExprStmt | variables.rs:388:5:388:13 | PathExpr | | +| variables.rs:388:5:388:17 | ExprStmt | variables.rs:388:5:388:13 | print_i64 | | | variables.rs:388:15:388:15 | z | variables.rs:388:5:388:16 | CallExpr | | | variables.rs:391:1:397:1 | enter alias | variables.rs:392:5:392:18 | LetStmt | | | variables.rs:391:1:397:1 | exit alias (normal) | variables.rs:391:1:397:1 | exit alias | | @@ -865,9 +865,9 @@ edges | variables.rs:395:5:395:11 | ExprStmt | variables.rs:395:6:395:6 | y | | | variables.rs:395:6:395:6 | y | variables.rs:395:5:395:6 | * ... | | | variables.rs:395:10:395:10 | 2 | variables.rs:395:5:395:10 | ... = ... | | -| variables.rs:396:5:396:13 | PathExpr | variables.rs:396:15:396:15 | x | | +| variables.rs:396:5:396:13 | print_i64 | variables.rs:396:15:396:15 | x | | | variables.rs:396:5:396:16 | CallExpr | variables.rs:391:12:397:1 | BlockExpr | | -| variables.rs:396:5:396:17 | ExprStmt | variables.rs:396:5:396:13 | PathExpr | | +| variables.rs:396:5:396:17 | ExprStmt | variables.rs:396:5:396:13 | print_i64 | | | variables.rs:396:15:396:15 | x | variables.rs:396:5:396:16 | CallExpr | | | variables.rs:399:1:407:1 | enter capture_immut | variables.rs:400:5:400:16 | LetStmt | | | variables.rs:399:1:407:1 | exit capture_immut (normal) | variables.rs:399:1:407:1 | exit capture_immut | | @@ -881,16 +881,16 @@ edges | variables.rs:402:15:404:5 | enter ClosureExpr | variables.rs:403:9:403:21 | ExprStmt | | | variables.rs:402:15:404:5 | exit ClosureExpr (normal) | variables.rs:402:15:404:5 | exit ClosureExpr | | | variables.rs:402:18:404:5 | BlockExpr | variables.rs:402:15:404:5 | exit ClosureExpr (normal) | | -| variables.rs:403:9:403:17 | PathExpr | variables.rs:403:19:403:19 | x | | +| variables.rs:403:9:403:17 | print_i64 | variables.rs:403:19:403:19 | x | | | variables.rs:403:9:403:20 | CallExpr | variables.rs:402:18:404:5 | BlockExpr | | -| variables.rs:403:9:403:21 | ExprStmt | variables.rs:403:9:403:17 | PathExpr | | +| variables.rs:403:9:403:21 | ExprStmt | variables.rs:403:9:403:17 | print_i64 | | | variables.rs:403:19:403:19 | x | variables.rs:403:9:403:20 | CallExpr | | | variables.rs:405:5:405:7 | cap | variables.rs:405:5:405:9 | CallExpr | | | variables.rs:405:5:405:9 | CallExpr | variables.rs:406:5:406:17 | ExprStmt | | | variables.rs:405:5:405:10 | ExprStmt | variables.rs:405:5:405:7 | cap | | -| variables.rs:406:5:406:13 | PathExpr | variables.rs:406:15:406:15 | x | | +| variables.rs:406:5:406:13 | print_i64 | variables.rs:406:15:406:15 | x | | | variables.rs:406:5:406:16 | CallExpr | variables.rs:399:20:407:1 | BlockExpr | | -| variables.rs:406:5:406:17 | ExprStmt | variables.rs:406:5:406:13 | PathExpr | | +| variables.rs:406:5:406:17 | ExprStmt | variables.rs:406:5:406:13 | print_i64 | | | variables.rs:406:15:406:15 | x | variables.rs:406:5:406:16 | CallExpr | | | variables.rs:409:1:433:1 | enter capture_mut | variables.rs:410:5:410:18 | LetStmt | | | variables.rs:409:1:433:1 | exit capture_mut (normal) | variables.rs:409:1:433:1 | exit capture_mut | | @@ -904,16 +904,16 @@ edges | variables.rs:412:20:414:5 | enter ClosureExpr | variables.rs:413:9:413:21 | ExprStmt | | | variables.rs:412:20:414:5 | exit ClosureExpr (normal) | variables.rs:412:20:414:5 | exit ClosureExpr | | | variables.rs:412:23:414:5 | BlockExpr | variables.rs:412:20:414:5 | exit ClosureExpr (normal) | | -| variables.rs:413:9:413:17 | PathExpr | variables.rs:413:19:413:19 | x | | +| variables.rs:413:9:413:17 | print_i64 | variables.rs:413:19:413:19 | x | | | variables.rs:413:9:413:20 | CallExpr | variables.rs:412:23:414:5 | BlockExpr | | -| variables.rs:413:9:413:21 | ExprStmt | variables.rs:413:9:413:17 | PathExpr | | +| variables.rs:413:9:413:21 | ExprStmt | variables.rs:413:9:413:17 | print_i64 | | | variables.rs:413:19:413:19 | x | variables.rs:413:9:413:20 | CallExpr | | | variables.rs:415:5:415:12 | closure1 | variables.rs:415:5:415:14 | CallExpr | | | variables.rs:415:5:415:14 | CallExpr | variables.rs:416:5:416:17 | ExprStmt | | | variables.rs:415:5:415:15 | ExprStmt | variables.rs:415:5:415:12 | closure1 | | -| variables.rs:416:5:416:13 | PathExpr | variables.rs:416:15:416:15 | x | | +| variables.rs:416:5:416:13 | print_i64 | variables.rs:416:15:416:15 | x | | | variables.rs:416:5:416:16 | CallExpr | variables.rs:418:5:418:18 | LetStmt | | -| variables.rs:416:5:416:17 | ExprStmt | variables.rs:416:5:416:13 | PathExpr | | +| variables.rs:416:5:416:17 | ExprStmt | variables.rs:416:5:416:13 | print_i64 | | | variables.rs:416:15:416:15 | x | variables.rs:416:5:416:16 | CallExpr | | | variables.rs:418:5:418:18 | LetStmt | variables.rs:418:17:418:17 | 2 | | | variables.rs:418:9:418:13 | y | variables.rs:420:5:422:6 | LetStmt | match | @@ -931,9 +931,9 @@ edges | variables.rs:423:5:423:12 | closure2 | variables.rs:423:5:423:14 | CallExpr | | | variables.rs:423:5:423:14 | CallExpr | variables.rs:424:5:424:17 | ExprStmt | | | variables.rs:423:5:423:15 | ExprStmt | variables.rs:423:5:423:12 | closure2 | | -| variables.rs:424:5:424:13 | PathExpr | variables.rs:424:15:424:15 | y | | +| variables.rs:424:5:424:13 | print_i64 | variables.rs:424:15:424:15 | y | | | variables.rs:424:5:424:16 | CallExpr | variables.rs:426:5:426:18 | LetStmt | | -| variables.rs:424:5:424:17 | ExprStmt | variables.rs:424:5:424:13 | PathExpr | | +| variables.rs:424:5:424:17 | ExprStmt | variables.rs:424:5:424:13 | print_i64 | | | variables.rs:424:15:424:15 | y | variables.rs:424:5:424:16 | CallExpr | | | variables.rs:426:5:426:18 | LetStmt | variables.rs:426:17:426:17 | 2 | | | variables.rs:426:9:426:13 | z | variables.rs:428:5:430:6 | LetStmt | match | @@ -951,9 +951,9 @@ edges | variables.rs:431:5:431:12 | closure3 | variables.rs:431:5:431:14 | CallExpr | | | variables.rs:431:5:431:14 | CallExpr | variables.rs:432:5:432:17 | ExprStmt | | | variables.rs:431:5:431:15 | ExprStmt | variables.rs:431:5:431:12 | closure3 | | -| variables.rs:432:5:432:13 | PathExpr | variables.rs:432:15:432:15 | z | | +| variables.rs:432:5:432:13 | print_i64 | variables.rs:432:15:432:15 | z | | | variables.rs:432:5:432:16 | CallExpr | variables.rs:409:18:433:1 | BlockExpr | | -| variables.rs:432:5:432:17 | ExprStmt | variables.rs:432:5:432:13 | PathExpr | | +| variables.rs:432:5:432:17 | ExprStmt | variables.rs:432:5:432:13 | print_i64 | | | variables.rs:432:15:432:15 | z | variables.rs:432:5:432:16 | CallExpr | | | variables.rs:435:1:443:1 | enter async_block_capture | variables.rs:436:5:436:23 | LetStmt | | | variables.rs:435:1:443:1 | exit async_block_capture (normal) | variables.rs:435:1:443:1 | exit async_block_capture | | @@ -973,9 +973,9 @@ edges | variables.rs:441:5:441:9 | block | variables.rs:441:5:441:15 | AwaitExpr | | | variables.rs:441:5:441:15 | AwaitExpr | variables.rs:442:5:442:17 | ExprStmt | | | variables.rs:441:5:441:16 | ExprStmt | variables.rs:441:5:441:9 | block | | -| variables.rs:442:5:442:13 | PathExpr | variables.rs:442:15:442:15 | i | | +| variables.rs:442:5:442:13 | print_i64 | variables.rs:442:15:442:15 | i | | | variables.rs:442:5:442:16 | CallExpr | variables.rs:435:32:443:1 | BlockExpr | | -| variables.rs:442:5:442:17 | ExprStmt | variables.rs:442:5:442:13 | PathExpr | | +| variables.rs:442:5:442:17 | ExprStmt | variables.rs:442:5:442:13 | print_i64 | | | variables.rs:442:15:442:15 | i | variables.rs:442:5:442:16 | CallExpr | | | variables.rs:445:1:459:1 | enter phi | variables.rs:445:8:445:8 | b | | | variables.rs:445:1:459:1 | exit phi (normal) | variables.rs:445:1:459:1 | exit phi | | @@ -985,13 +985,13 @@ edges | variables.rs:446:5:446:18 | LetStmt | variables.rs:446:17:446:17 | 1 | | | variables.rs:446:9:446:13 | x | variables.rs:447:5:447:17 | ExprStmt | match | | variables.rs:446:17:446:17 | 1 | variables.rs:446:9:446:13 | x | | -| variables.rs:447:5:447:13 | PathExpr | variables.rs:447:15:447:15 | x | | +| variables.rs:447:5:447:13 | print_i64 | variables.rs:447:15:447:15 | x | | | variables.rs:447:5:447:16 | CallExpr | variables.rs:448:5:448:21 | ExprStmt | | -| variables.rs:447:5:447:17 | ExprStmt | variables.rs:447:5:447:13 | PathExpr | | +| variables.rs:447:5:447:17 | ExprStmt | variables.rs:447:5:447:13 | print_i64 | | | variables.rs:447:15:447:15 | x | variables.rs:447:5:447:16 | CallExpr | | -| variables.rs:448:5:448:13 | PathExpr | variables.rs:448:15:448:15 | x | | +| variables.rs:448:5:448:13 | print_i64 | variables.rs:448:15:448:15 | x | | | variables.rs:448:5:448:20 | CallExpr | variables.rs:449:5:457:5 | ExprStmt | | -| variables.rs:448:5:448:21 | ExprStmt | variables.rs:448:5:448:13 | PathExpr | | +| variables.rs:448:5:448:21 | ExprStmt | variables.rs:448:5:448:13 | print_i64 | | | variables.rs:448:15:448:15 | x | variables.rs:448:19:448:19 | 1 | | | variables.rs:448:15:448:19 | ... + ... | variables.rs:448:5:448:20 | CallExpr | | | variables.rs:448:19:448:19 | 1 | variables.rs:448:15:448:19 | ... + ... | | @@ -1004,13 +1004,13 @@ edges | variables.rs:450:9:450:13 | ... = ... | variables.rs:451:9:451:21 | ExprStmt | | | variables.rs:450:9:450:14 | ExprStmt | variables.rs:450:9:450:9 | x | | | variables.rs:450:13:450:13 | 2 | variables.rs:450:9:450:13 | ... = ... | | -| variables.rs:451:9:451:17 | PathExpr | variables.rs:451:19:451:19 | x | | +| variables.rs:451:9:451:17 | print_i64 | variables.rs:451:19:451:19 | x | | | variables.rs:451:9:451:20 | CallExpr | variables.rs:452:9:452:25 | ExprStmt | | -| variables.rs:451:9:451:21 | ExprStmt | variables.rs:451:9:451:17 | PathExpr | | +| variables.rs:451:9:451:21 | ExprStmt | variables.rs:451:9:451:17 | print_i64 | | | variables.rs:451:19:451:19 | x | variables.rs:451:9:451:20 | CallExpr | | -| variables.rs:452:9:452:17 | PathExpr | variables.rs:452:19:452:19 | x | | +| variables.rs:452:9:452:17 | print_i64 | variables.rs:452:19:452:19 | x | | | variables.rs:452:9:452:24 | CallExpr | variables.rs:449:10:453:5 | BlockExpr | | -| variables.rs:452:9:452:25 | ExprStmt | variables.rs:452:9:452:17 | PathExpr | | +| variables.rs:452:9:452:25 | ExprStmt | variables.rs:452:9:452:17 | print_i64 | | | variables.rs:452:19:452:19 | x | variables.rs:452:23:452:23 | 1 | | | variables.rs:452:19:452:23 | ... + ... | variables.rs:452:9:452:24 | CallExpr | | | variables.rs:452:23:452:23 | 1 | variables.rs:452:19:452:23 | ... + ... | | @@ -1019,19 +1019,19 @@ edges | variables.rs:454:9:454:13 | ... = ... | variables.rs:455:9:455:21 | ExprStmt | | | variables.rs:454:9:454:14 | ExprStmt | variables.rs:454:9:454:9 | x | | | variables.rs:454:13:454:13 | 3 | variables.rs:454:9:454:13 | ... = ... | | -| variables.rs:455:9:455:17 | PathExpr | variables.rs:455:19:455:19 | x | | +| variables.rs:455:9:455:17 | print_i64 | variables.rs:455:19:455:19 | x | | | variables.rs:455:9:455:20 | CallExpr | variables.rs:456:9:456:25 | ExprStmt | | -| variables.rs:455:9:455:21 | ExprStmt | variables.rs:455:9:455:17 | PathExpr | | +| variables.rs:455:9:455:21 | ExprStmt | variables.rs:455:9:455:17 | print_i64 | | | variables.rs:455:19:455:19 | x | variables.rs:455:9:455:20 | CallExpr | | -| variables.rs:456:9:456:17 | PathExpr | variables.rs:456:19:456:19 | x | | +| variables.rs:456:9:456:17 | print_i64 | variables.rs:456:19:456:19 | x | | | variables.rs:456:9:456:24 | CallExpr | variables.rs:453:12:457:5 | BlockExpr | | -| variables.rs:456:9:456:25 | ExprStmt | variables.rs:456:9:456:17 | PathExpr | | +| variables.rs:456:9:456:25 | ExprStmt | variables.rs:456:9:456:17 | print_i64 | | | variables.rs:456:19:456:19 | x | variables.rs:456:23:456:23 | 1 | | | variables.rs:456:19:456:23 | ... + ... | variables.rs:456:9:456:24 | CallExpr | | | variables.rs:456:23:456:23 | 1 | variables.rs:456:19:456:23 | ... + ... | | -| variables.rs:458:5:458:13 | PathExpr | variables.rs:458:15:458:15 | x | | +| variables.rs:458:5:458:13 | print_i64 | variables.rs:458:15:458:15 | x | | | variables.rs:458:5:458:16 | CallExpr | variables.rs:445:18:459:1 | BlockExpr | | -| variables.rs:458:5:458:17 | ExprStmt | variables.rs:458:5:458:13 | PathExpr | | +| variables.rs:458:5:458:17 | ExprStmt | variables.rs:458:5:458:13 | print_i64 | | | variables.rs:458:15:458:15 | x | variables.rs:458:5:458:16 | CallExpr | | | variables.rs:461:1:474:1 | enter phi_read | variables.rs:461:13:461:14 | b1 | | | variables.rs:461:1:474:1 | exit phi_read (normal) | variables.rs:461:1:474:1 | exit phi_read | | @@ -1048,33 +1048,33 @@ edges | variables.rs:463:8:463:9 | b1 | variables.rs:464:9:464:21 | ExprStmt | true | | variables.rs:463:8:463:9 | b1 | variables.rs:466:9:466:21 | ExprStmt | false | | variables.rs:463:11:465:5 | BlockExpr | variables.rs:463:5:467:5 | IfExpr | | -| variables.rs:464:9:464:17 | PathExpr | variables.rs:464:19:464:19 | x | | +| variables.rs:464:9:464:17 | print_i64 | variables.rs:464:19:464:19 | x | | | variables.rs:464:9:464:20 | CallExpr | variables.rs:463:11:465:5 | BlockExpr | | -| variables.rs:464:9:464:21 | ExprStmt | variables.rs:464:9:464:17 | PathExpr | | +| variables.rs:464:9:464:21 | ExprStmt | variables.rs:464:9:464:17 | print_i64 | | | variables.rs:464:19:464:19 | x | variables.rs:464:9:464:20 | CallExpr | | | variables.rs:465:12:467:5 | BlockExpr | variables.rs:463:5:467:5 | IfExpr | | -| variables.rs:466:9:466:17 | PathExpr | variables.rs:466:19:466:19 | x | | +| variables.rs:466:9:466:17 | print_i64 | variables.rs:466:19:466:19 | x | | | variables.rs:466:9:466:20 | CallExpr | variables.rs:465:12:467:5 | BlockExpr | | -| variables.rs:466:9:466:21 | ExprStmt | variables.rs:466:9:466:17 | PathExpr | | +| variables.rs:466:9:466:21 | ExprStmt | variables.rs:466:9:466:17 | print_i64 | | | variables.rs:466:19:466:19 | x | variables.rs:466:9:466:20 | CallExpr | | | variables.rs:469:5:473:5 | IfExpr | variables.rs:461:35:474:1 | BlockExpr | | | variables.rs:469:8:469:9 | b2 | variables.rs:470:9:470:21 | ExprStmt | true | | variables.rs:469:8:469:9 | b2 | variables.rs:472:9:472:21 | ExprStmt | false | | variables.rs:469:11:471:5 | BlockExpr | variables.rs:469:5:473:5 | IfExpr | | -| variables.rs:470:9:470:17 | PathExpr | variables.rs:470:19:470:19 | x | | +| variables.rs:470:9:470:17 | print_i64 | variables.rs:470:19:470:19 | x | | | variables.rs:470:9:470:20 | CallExpr | variables.rs:469:11:471:5 | BlockExpr | | -| variables.rs:470:9:470:21 | ExprStmt | variables.rs:470:9:470:17 | PathExpr | | +| variables.rs:470:9:470:21 | ExprStmt | variables.rs:470:9:470:17 | print_i64 | | | variables.rs:470:19:470:19 | x | variables.rs:470:9:470:20 | CallExpr | | | variables.rs:471:12:473:5 | BlockExpr | variables.rs:469:5:473:5 | IfExpr | | -| variables.rs:472:9:472:17 | PathExpr | variables.rs:472:19:472:19 | x | | +| variables.rs:472:9:472:17 | print_i64 | variables.rs:472:19:472:19 | x | | | variables.rs:472:9:472:20 | CallExpr | variables.rs:471:12:473:5 | BlockExpr | | -| variables.rs:472:9:472:21 | ExprStmt | variables.rs:472:9:472:17 | PathExpr | | +| variables.rs:472:9:472:21 | ExprStmt | variables.rs:472:9:472:17 | print_i64 | | | variables.rs:472:19:472:19 | x | variables.rs:472:9:472:20 | CallExpr | | | variables.rs:482:5:484:5 | enter my_get | variables.rs:483:9:483:24 | ExprStmt | | | variables.rs:482:5:484:5 | exit my_get (normal) | variables.rs:482:5:484:5 | exit my_get | | | variables.rs:483:9:483:23 | ReturnExpr | variables.rs:482:5:484:5 | exit my_get (normal) | return | -| variables.rs:483:9:483:24 | ExprStmt | variables.rs:483:16:483:19 | PathExpr | | -| variables.rs:483:16:483:19 | PathExpr | variables.rs:483:16:483:23 | FieldExpr | | +| variables.rs:483:9:483:24 | ExprStmt | variables.rs:483:16:483:19 | self | | +| variables.rs:483:16:483:19 | self | variables.rs:483:16:483:23 | FieldExpr | | | variables.rs:483:16:483:23 | FieldExpr | variables.rs:483:9:483:23 | ReturnExpr | | | variables.rs:487:1:494:1 | enter structs | variables.rs:488:5:488:36 | LetStmt | | | variables.rs:487:1:494:1 | exit structs (normal) | variables.rs:487:1:494:1 | exit structs | | @@ -1083,9 +1083,9 @@ edges | variables.rs:488:9:488:13 | a | variables.rs:489:5:489:26 | ExprStmt | match | | variables.rs:488:17:488:35 | RecordExpr | variables.rs:488:9:488:13 | a | | | variables.rs:488:33:488:33 | 1 | variables.rs:488:17:488:35 | RecordExpr | | -| variables.rs:489:5:489:13 | PathExpr | variables.rs:489:15:489:15 | a | | +| variables.rs:489:5:489:13 | print_i64 | variables.rs:489:15:489:15 | a | | | variables.rs:489:5:489:25 | CallExpr | variables.rs:490:5:490:14 | ExprStmt | | -| variables.rs:489:5:489:26 | ExprStmt | variables.rs:489:5:489:13 | PathExpr | | +| variables.rs:489:5:489:26 | ExprStmt | variables.rs:489:5:489:13 | print_i64 | | | variables.rs:489:15:489:15 | a | variables.rs:489:15:489:24 | ... .my_get(...) | | | variables.rs:489:15:489:24 | ... .my_get(...) | variables.rs:489:5:489:25 | CallExpr | | | variables.rs:490:5:490:5 | a | variables.rs:490:5:490:9 | FieldExpr | | @@ -1093,9 +1093,9 @@ edges | variables.rs:490:5:490:13 | ... = ... | variables.rs:491:5:491:26 | ExprStmt | | | variables.rs:490:5:490:14 | ExprStmt | variables.rs:490:5:490:5 | a | | | variables.rs:490:13:490:13 | 5 | variables.rs:490:5:490:13 | ... = ... | | -| variables.rs:491:5:491:13 | PathExpr | variables.rs:491:15:491:15 | a | | +| variables.rs:491:5:491:13 | print_i64 | variables.rs:491:15:491:15 | a | | | variables.rs:491:5:491:25 | CallExpr | variables.rs:492:5:492:28 | ExprStmt | | -| variables.rs:491:5:491:26 | ExprStmt | variables.rs:491:5:491:13 | PathExpr | | +| variables.rs:491:5:491:26 | ExprStmt | variables.rs:491:5:491:13 | print_i64 | | | variables.rs:491:15:491:15 | a | variables.rs:491:15:491:24 | ... .my_get(...) | | | variables.rs:491:15:491:24 | ... .my_get(...) | variables.rs:491:5:491:25 | CallExpr | | | variables.rs:492:5:492:5 | a | variables.rs:492:25:492:25 | 2 | | @@ -1103,9 +1103,9 @@ edges | variables.rs:492:5:492:28 | ExprStmt | variables.rs:492:5:492:5 | a | | | variables.rs:492:9:492:27 | RecordExpr | variables.rs:492:5:492:27 | ... = ... | | | variables.rs:492:25:492:25 | 2 | variables.rs:492:9:492:27 | RecordExpr | | -| variables.rs:493:5:493:13 | PathExpr | variables.rs:493:15:493:15 | a | | +| variables.rs:493:5:493:13 | print_i64 | variables.rs:493:15:493:15 | a | | | variables.rs:493:5:493:25 | CallExpr | variables.rs:487:14:494:1 | BlockExpr | | -| variables.rs:493:5:493:26 | ExprStmt | variables.rs:493:5:493:13 | PathExpr | | +| variables.rs:493:5:493:26 | ExprStmt | variables.rs:493:5:493:13 | print_i64 | | | variables.rs:493:15:493:15 | a | variables.rs:493:15:493:24 | ... .my_get(...) | | | variables.rs:493:15:493:24 | ... .my_get(...) | variables.rs:493:5:493:25 | CallExpr | | | variables.rs:496:1:503:1 | enter ref_arg | variables.rs:497:5:497:15 | LetStmt | | @@ -1114,21 +1114,21 @@ edges | variables.rs:497:5:497:15 | LetStmt | variables.rs:497:13:497:14 | 16 | | | variables.rs:497:9:497:9 | x | variables.rs:498:5:498:22 | ExprStmt | match | | variables.rs:497:13:497:14 | 16 | variables.rs:497:9:497:9 | x | | -| variables.rs:498:5:498:17 | PathExpr | variables.rs:498:20:498:20 | x | | +| variables.rs:498:5:498:17 | print_i64_ref | variables.rs:498:20:498:20 | x | | | variables.rs:498:5:498:21 | CallExpr | variables.rs:499:5:499:17 | ExprStmt | | -| variables.rs:498:5:498:22 | ExprStmt | variables.rs:498:5:498:17 | PathExpr | | +| variables.rs:498:5:498:22 | ExprStmt | variables.rs:498:5:498:17 | print_i64_ref | | | variables.rs:498:19:498:20 | RefExpr | variables.rs:498:5:498:21 | CallExpr | | | variables.rs:498:20:498:20 | x | variables.rs:498:19:498:20 | RefExpr | | -| variables.rs:499:5:499:13 | PathExpr | variables.rs:499:15:499:15 | x | | +| variables.rs:499:5:499:13 | print_i64 | variables.rs:499:15:499:15 | x | | | variables.rs:499:5:499:16 | CallExpr | variables.rs:501:5:501:15 | LetStmt | | -| variables.rs:499:5:499:17 | ExprStmt | variables.rs:499:5:499:13 | PathExpr | | +| variables.rs:499:5:499:17 | ExprStmt | variables.rs:499:5:499:13 | print_i64 | | | variables.rs:499:15:499:15 | x | variables.rs:499:5:499:16 | CallExpr | | | variables.rs:501:5:501:15 | LetStmt | variables.rs:501:13:501:14 | 17 | | | variables.rs:501:9:501:9 | z | variables.rs:502:5:502:22 | ExprStmt | match | | variables.rs:501:13:501:14 | 17 | variables.rs:501:9:501:9 | z | | -| variables.rs:502:5:502:17 | PathExpr | variables.rs:502:20:502:20 | z | | +| variables.rs:502:5:502:17 | print_i64_ref | variables.rs:502:20:502:20 | z | | | variables.rs:502:5:502:21 | CallExpr | variables.rs:496:14:503:1 | BlockExpr | | -| variables.rs:502:5:502:22 | ExprStmt | variables.rs:502:5:502:17 | PathExpr | | +| variables.rs:502:5:502:22 | ExprStmt | variables.rs:502:5:502:17 | print_i64_ref | | | variables.rs:502:19:502:20 | RefExpr | variables.rs:502:5:502:21 | CallExpr | | | variables.rs:502:20:502:20 | z | variables.rs:502:19:502:20 | RefExpr | | | variables.rs:510:3:512:3 | enter bar | variables.rs:511:5:511:32 | ExprStmt | | @@ -1136,8 +1136,8 @@ edges | variables.rs:510:21:512:3 | BlockExpr | variables.rs:510:3:512:3 | exit bar (normal) | | | variables.rs:511:5:511:9 | * ... | variables.rs:511:29:511:29 | 3 | | | variables.rs:511:5:511:31 | ... = ... | variables.rs:510:21:512:3 | BlockExpr | | -| variables.rs:511:5:511:32 | ExprStmt | variables.rs:511:6:511:9 | PathExpr | | -| variables.rs:511:6:511:9 | PathExpr | variables.rs:511:5:511:9 | * ... | | +| variables.rs:511:5:511:32 | ExprStmt | variables.rs:511:6:511:9 | self | | +| variables.rs:511:6:511:9 | self | variables.rs:511:5:511:9 | * ... | | | variables.rs:511:13:511:31 | RecordExpr | variables.rs:511:5:511:31 | ... = ... | | | variables.rs:511:29:511:29 | 3 | variables.rs:511:13:511:31 | RecordExpr | | | variables.rs:515:1:520:1 | enter ref_methodcall_receiver | variables.rs:516:3:516:34 | LetStmt | | @@ -1150,119 +1150,119 @@ edges | variables.rs:517:3:517:3 | a | variables.rs:517:3:517:9 | ... .bar(...) | | | variables.rs:517:3:517:9 | ... .bar(...) | variables.rs:519:3:519:19 | ExprStmt | | | variables.rs:517:3:517:10 | ExprStmt | variables.rs:517:3:517:3 | a | | -| variables.rs:519:3:519:11 | PathExpr | variables.rs:519:13:519:13 | a | | +| variables.rs:519:3:519:11 | print_i64 | variables.rs:519:13:519:13 | a | | | variables.rs:519:3:519:18 | CallExpr | variables.rs:515:30:520:1 | BlockExpr | | -| variables.rs:519:3:519:19 | ExprStmt | variables.rs:519:3:519:11 | PathExpr | | +| variables.rs:519:3:519:19 | ExprStmt | variables.rs:519:3:519:11 | print_i64 | | | variables.rs:519:13:519:13 | a | variables.rs:519:13:519:17 | FieldExpr | | | variables.rs:519:13:519:17 | FieldExpr | variables.rs:519:3:519:18 | CallExpr | | | variables.rs:522:1:556:1 | enter main | variables.rs:523:5:523:25 | ExprStmt | | | variables.rs:522:1:556:1 | exit main (normal) | variables.rs:522:1:556:1 | exit main | | | variables.rs:522:11:556:1 | BlockExpr | variables.rs:522:1:556:1 | exit main (normal) | | -| variables.rs:523:5:523:22 | PathExpr | variables.rs:523:5:523:24 | CallExpr | | +| variables.rs:523:5:523:22 | immutable_variable | variables.rs:523:5:523:24 | CallExpr | | | variables.rs:523:5:523:24 | CallExpr | variables.rs:524:5:524:23 | ExprStmt | | -| variables.rs:523:5:523:25 | ExprStmt | variables.rs:523:5:523:22 | PathExpr | | -| variables.rs:524:5:524:20 | PathExpr | variables.rs:524:5:524:22 | CallExpr | | +| variables.rs:523:5:523:25 | ExprStmt | variables.rs:523:5:523:22 | immutable_variable | | +| variables.rs:524:5:524:20 | mutable_variable | variables.rs:524:5:524:22 | CallExpr | | | variables.rs:524:5:524:22 | CallExpr | variables.rs:525:5:525:40 | ExprStmt | | -| variables.rs:524:5:524:23 | ExprStmt | variables.rs:524:5:524:20 | PathExpr | | -| variables.rs:525:5:525:37 | PathExpr | variables.rs:525:5:525:39 | CallExpr | | +| variables.rs:524:5:524:23 | ExprStmt | variables.rs:524:5:524:20 | mutable_variable | | +| variables.rs:525:5:525:37 | mutable_variable_immutable_borrow | variables.rs:525:5:525:39 | CallExpr | | | variables.rs:525:5:525:39 | CallExpr | variables.rs:526:5:526:23 | ExprStmt | | -| variables.rs:525:5:525:40 | ExprStmt | variables.rs:525:5:525:37 | PathExpr | | -| variables.rs:526:5:526:20 | PathExpr | variables.rs:526:5:526:22 | CallExpr | | +| variables.rs:525:5:525:40 | ExprStmt | variables.rs:525:5:525:37 | mutable_variable_immutable_borrow | | +| variables.rs:526:5:526:20 | variable_shadow1 | variables.rs:526:5:526:22 | CallExpr | | | variables.rs:526:5:526:22 | CallExpr | variables.rs:527:5:527:23 | ExprStmt | | -| variables.rs:526:5:526:23 | ExprStmt | variables.rs:526:5:526:20 | PathExpr | | -| variables.rs:527:5:527:20 | PathExpr | variables.rs:527:5:527:22 | CallExpr | | +| variables.rs:526:5:526:23 | ExprStmt | variables.rs:526:5:526:20 | variable_shadow1 | | +| variables.rs:527:5:527:20 | variable_shadow2 | variables.rs:527:5:527:22 | CallExpr | | | variables.rs:527:5:527:22 | CallExpr | variables.rs:528:5:528:19 | ExprStmt | | -| variables.rs:527:5:527:23 | ExprStmt | variables.rs:527:5:527:20 | PathExpr | | -| variables.rs:528:5:528:16 | PathExpr | variables.rs:528:5:528:18 | CallExpr | | +| variables.rs:527:5:527:23 | ExprStmt | variables.rs:527:5:527:20 | variable_shadow2 | | +| variables.rs:528:5:528:16 | let_pattern1 | variables.rs:528:5:528:18 | CallExpr | | | variables.rs:528:5:528:18 | CallExpr | variables.rs:529:5:529:19 | ExprStmt | | -| variables.rs:528:5:528:19 | ExprStmt | variables.rs:528:5:528:16 | PathExpr | | -| variables.rs:529:5:529:16 | PathExpr | variables.rs:529:5:529:18 | CallExpr | | +| variables.rs:528:5:528:19 | ExprStmt | variables.rs:528:5:528:16 | let_pattern1 | | +| variables.rs:529:5:529:16 | let_pattern2 | variables.rs:529:5:529:18 | CallExpr | | | variables.rs:529:5:529:18 | CallExpr | variables.rs:530:5:530:19 | ExprStmt | | -| variables.rs:529:5:529:19 | ExprStmt | variables.rs:529:5:529:16 | PathExpr | | -| variables.rs:530:5:530:16 | PathExpr | variables.rs:530:5:530:18 | CallExpr | | +| variables.rs:529:5:529:19 | ExprStmt | variables.rs:529:5:529:16 | let_pattern2 | | +| variables.rs:530:5:530:16 | let_pattern3 | variables.rs:530:5:530:18 | CallExpr | | | variables.rs:530:5:530:18 | CallExpr | variables.rs:531:5:531:19 | ExprStmt | | -| variables.rs:530:5:530:19 | ExprStmt | variables.rs:530:5:530:16 | PathExpr | | -| variables.rs:531:5:531:16 | PathExpr | variables.rs:531:5:531:18 | CallExpr | | +| variables.rs:530:5:530:19 | ExprStmt | variables.rs:530:5:530:16 | let_pattern3 | | +| variables.rs:531:5:531:16 | let_pattern4 | variables.rs:531:5:531:18 | CallExpr | | | variables.rs:531:5:531:18 | CallExpr | variables.rs:532:5:532:21 | ExprStmt | | -| variables.rs:531:5:531:19 | ExprStmt | variables.rs:531:5:531:16 | PathExpr | | -| variables.rs:532:5:532:18 | PathExpr | variables.rs:532:5:532:20 | CallExpr | | +| variables.rs:531:5:531:19 | ExprStmt | variables.rs:531:5:531:16 | let_pattern4 | | +| variables.rs:532:5:532:18 | match_pattern1 | variables.rs:532:5:532:20 | CallExpr | | | variables.rs:532:5:532:20 | CallExpr | variables.rs:533:5:533:21 | ExprStmt | | -| variables.rs:532:5:532:21 | ExprStmt | variables.rs:532:5:532:18 | PathExpr | | -| variables.rs:533:5:533:18 | PathExpr | variables.rs:533:5:533:20 | CallExpr | | +| variables.rs:532:5:532:21 | ExprStmt | variables.rs:532:5:532:18 | match_pattern1 | | +| variables.rs:533:5:533:18 | match_pattern2 | variables.rs:533:5:533:20 | CallExpr | | | variables.rs:533:5:533:20 | CallExpr | variables.rs:534:5:534:21 | ExprStmt | | -| variables.rs:533:5:533:21 | ExprStmt | variables.rs:533:5:533:18 | PathExpr | | -| variables.rs:534:5:534:18 | PathExpr | variables.rs:534:5:534:20 | CallExpr | | +| variables.rs:533:5:533:21 | ExprStmt | variables.rs:533:5:533:18 | match_pattern2 | | +| variables.rs:534:5:534:18 | match_pattern3 | variables.rs:534:5:534:20 | CallExpr | | | variables.rs:534:5:534:20 | CallExpr | variables.rs:535:5:535:21 | ExprStmt | | -| variables.rs:534:5:534:21 | ExprStmt | variables.rs:534:5:534:18 | PathExpr | | -| variables.rs:535:5:535:18 | PathExpr | variables.rs:535:5:535:20 | CallExpr | | +| variables.rs:534:5:534:21 | ExprStmt | variables.rs:534:5:534:18 | match_pattern3 | | +| variables.rs:535:5:535:18 | match_pattern4 | variables.rs:535:5:535:20 | CallExpr | | | variables.rs:535:5:535:20 | CallExpr | variables.rs:536:5:536:21 | ExprStmt | | -| variables.rs:535:5:535:21 | ExprStmt | variables.rs:535:5:535:18 | PathExpr | | -| variables.rs:536:5:536:18 | PathExpr | variables.rs:536:5:536:20 | CallExpr | | +| variables.rs:535:5:535:21 | ExprStmt | variables.rs:535:5:535:18 | match_pattern4 | | +| variables.rs:536:5:536:18 | match_pattern5 | variables.rs:536:5:536:20 | CallExpr | | | variables.rs:536:5:536:20 | CallExpr | variables.rs:537:5:537:21 | ExprStmt | | -| variables.rs:536:5:536:21 | ExprStmt | variables.rs:536:5:536:18 | PathExpr | | -| variables.rs:537:5:537:18 | PathExpr | variables.rs:537:5:537:20 | CallExpr | | +| variables.rs:536:5:536:21 | ExprStmt | variables.rs:536:5:536:18 | match_pattern5 | | +| variables.rs:537:5:537:18 | match_pattern6 | variables.rs:537:5:537:20 | CallExpr | | | variables.rs:537:5:537:20 | CallExpr | variables.rs:538:5:538:21 | ExprStmt | | -| variables.rs:537:5:537:21 | ExprStmt | variables.rs:537:5:537:18 | PathExpr | | -| variables.rs:538:5:538:18 | PathExpr | variables.rs:538:5:538:20 | CallExpr | | +| variables.rs:537:5:537:21 | ExprStmt | variables.rs:537:5:537:18 | match_pattern6 | | +| variables.rs:538:5:538:18 | match_pattern7 | variables.rs:538:5:538:20 | CallExpr | | | variables.rs:538:5:538:20 | CallExpr | variables.rs:539:5:539:21 | ExprStmt | | -| variables.rs:538:5:538:21 | ExprStmt | variables.rs:538:5:538:18 | PathExpr | | -| variables.rs:539:5:539:18 | PathExpr | variables.rs:539:5:539:20 | CallExpr | | +| variables.rs:538:5:538:21 | ExprStmt | variables.rs:538:5:538:18 | match_pattern7 | | +| variables.rs:539:5:539:18 | match_pattern8 | variables.rs:539:5:539:20 | CallExpr | | | variables.rs:539:5:539:20 | CallExpr | variables.rs:540:5:540:21 | ExprStmt | | -| variables.rs:539:5:539:21 | ExprStmt | variables.rs:539:5:539:18 | PathExpr | | -| variables.rs:540:5:540:18 | PathExpr | variables.rs:540:5:540:20 | CallExpr | | +| variables.rs:539:5:539:21 | ExprStmt | variables.rs:539:5:539:18 | match_pattern8 | | +| variables.rs:540:5:540:18 | match_pattern9 | variables.rs:540:5:540:20 | CallExpr | | | variables.rs:540:5:540:20 | CallExpr | variables.rs:541:5:541:36 | ExprStmt | | -| variables.rs:540:5:540:21 | ExprStmt | variables.rs:540:5:540:18 | PathExpr | | -| variables.rs:541:5:541:18 | PathExpr | variables.rs:541:20:541:22 | "a" | | +| variables.rs:540:5:540:21 | ExprStmt | variables.rs:540:5:540:18 | match_pattern9 | | +| variables.rs:541:5:541:18 | param_pattern1 | variables.rs:541:20:541:22 | "a" | | | variables.rs:541:5:541:35 | CallExpr | variables.rs:542:5:542:37 | ExprStmt | | -| variables.rs:541:5:541:36 | ExprStmt | variables.rs:541:5:541:18 | PathExpr | | +| variables.rs:541:5:541:36 | ExprStmt | variables.rs:541:5:541:18 | param_pattern1 | | | variables.rs:541:20:541:22 | "a" | variables.rs:541:26:541:28 | "b" | | | variables.rs:541:25:541:34 | TupleExpr | variables.rs:541:5:541:35 | CallExpr | | | variables.rs:541:26:541:28 | "b" | variables.rs:541:31:541:33 | "c" | | | variables.rs:541:31:541:33 | "c" | variables.rs:541:25:541:34 | TupleExpr | | -| variables.rs:542:5:542:18 | PathExpr | variables.rs:542:20:542:31 | PathExpr | | +| variables.rs:542:5:542:18 | param_pattern2 | variables.rs:542:20:542:31 | Either::Left | | | variables.rs:542:5:542:36 | CallExpr | variables.rs:543:5:543:26 | ExprStmt | | -| variables.rs:542:5:542:37 | ExprStmt | variables.rs:542:5:542:18 | PathExpr | | -| variables.rs:542:20:542:31 | PathExpr | variables.rs:542:33:542:34 | 45 | | +| variables.rs:542:5:542:37 | ExprStmt | variables.rs:542:5:542:18 | param_pattern2 | | +| variables.rs:542:20:542:31 | Either::Left | variables.rs:542:33:542:34 | 45 | | | variables.rs:542:20:542:35 | CallExpr | variables.rs:542:5:542:36 | CallExpr | | | variables.rs:542:33:542:34 | 45 | variables.rs:542:20:542:35 | CallExpr | | -| variables.rs:543:5:543:23 | PathExpr | variables.rs:543:5:543:25 | CallExpr | | +| variables.rs:543:5:543:23 | destruct_assignment | variables.rs:543:5:543:25 | CallExpr | | | variables.rs:543:5:543:25 | CallExpr | variables.rs:544:5:544:23 | ExprStmt | | -| variables.rs:543:5:543:26 | ExprStmt | variables.rs:543:5:543:23 | PathExpr | | -| variables.rs:544:5:544:20 | PathExpr | variables.rs:544:5:544:22 | CallExpr | | +| variables.rs:543:5:543:26 | ExprStmt | variables.rs:543:5:543:23 | destruct_assignment | | +| variables.rs:544:5:544:20 | closure_variable | variables.rs:544:5:544:22 | CallExpr | | | variables.rs:544:5:544:22 | CallExpr | variables.rs:545:5:545:19 | ExprStmt | | -| variables.rs:544:5:544:23 | ExprStmt | variables.rs:544:5:544:20 | PathExpr | | -| variables.rs:545:5:545:16 | PathExpr | variables.rs:545:5:545:18 | CallExpr | | +| variables.rs:544:5:544:23 | ExprStmt | variables.rs:544:5:544:20 | closure_variable | | +| variables.rs:545:5:545:16 | for_variable | variables.rs:545:5:545:18 | CallExpr | | | variables.rs:545:5:545:18 | CallExpr | variables.rs:546:5:546:17 | ExprStmt | | -| variables.rs:545:5:545:19 | ExprStmt | variables.rs:545:5:545:16 | PathExpr | | -| variables.rs:546:5:546:14 | PathExpr | variables.rs:546:5:546:16 | CallExpr | | +| variables.rs:545:5:545:19 | ExprStmt | variables.rs:545:5:545:16 | for_variable | | +| variables.rs:546:5:546:14 | add_assign | variables.rs:546:5:546:16 | CallExpr | | | variables.rs:546:5:546:16 | CallExpr | variables.rs:547:5:547:13 | ExprStmt | | -| variables.rs:546:5:546:17 | ExprStmt | variables.rs:546:5:546:14 | PathExpr | | -| variables.rs:547:5:547:10 | PathExpr | variables.rs:547:5:547:12 | CallExpr | | +| variables.rs:546:5:546:17 | ExprStmt | variables.rs:546:5:546:14 | add_assign | | +| variables.rs:547:5:547:10 | mutate | variables.rs:547:5:547:12 | CallExpr | | | variables.rs:547:5:547:12 | CallExpr | variables.rs:548:5:548:17 | ExprStmt | | -| variables.rs:547:5:547:13 | ExprStmt | variables.rs:547:5:547:10 | PathExpr | | -| variables.rs:548:5:548:14 | PathExpr | variables.rs:548:5:548:16 | CallExpr | | +| variables.rs:547:5:547:13 | ExprStmt | variables.rs:547:5:547:10 | mutate | | +| variables.rs:548:5:548:14 | mutate_arg | variables.rs:548:5:548:16 | CallExpr | | | variables.rs:548:5:548:16 | CallExpr | variables.rs:549:5:549:12 | ExprStmt | | -| variables.rs:548:5:548:17 | ExprStmt | variables.rs:548:5:548:14 | PathExpr | | -| variables.rs:549:5:549:9 | PathExpr | variables.rs:549:5:549:11 | CallExpr | | +| variables.rs:548:5:548:17 | ExprStmt | variables.rs:548:5:548:14 | mutate_arg | | +| variables.rs:549:5:549:9 | alias | variables.rs:549:5:549:11 | CallExpr | | | variables.rs:549:5:549:11 | CallExpr | variables.rs:550:5:550:18 | ExprStmt | | -| variables.rs:549:5:549:12 | ExprStmt | variables.rs:549:5:549:9 | PathExpr | | -| variables.rs:550:5:550:15 | PathExpr | variables.rs:550:5:550:17 | CallExpr | | +| variables.rs:549:5:549:12 | ExprStmt | variables.rs:549:5:549:9 | alias | | +| variables.rs:550:5:550:15 | capture_mut | variables.rs:550:5:550:17 | CallExpr | | | variables.rs:550:5:550:17 | CallExpr | variables.rs:551:5:551:20 | ExprStmt | | -| variables.rs:550:5:550:18 | ExprStmt | variables.rs:550:5:550:15 | PathExpr | | -| variables.rs:551:5:551:17 | PathExpr | variables.rs:551:5:551:19 | CallExpr | | +| variables.rs:550:5:550:18 | ExprStmt | variables.rs:550:5:550:15 | capture_mut | | +| variables.rs:551:5:551:17 | capture_immut | variables.rs:551:5:551:19 | CallExpr | | | variables.rs:551:5:551:19 | CallExpr | variables.rs:552:5:552:26 | ExprStmt | | -| variables.rs:551:5:551:20 | ExprStmt | variables.rs:551:5:551:17 | PathExpr | | -| variables.rs:552:5:552:23 | PathExpr | variables.rs:552:5:552:25 | CallExpr | | +| variables.rs:551:5:551:20 | ExprStmt | variables.rs:551:5:551:17 | capture_immut | | +| variables.rs:552:5:552:23 | async_block_capture | variables.rs:552:5:552:25 | CallExpr | | | variables.rs:552:5:552:25 | CallExpr | variables.rs:553:5:553:14 | ExprStmt | | -| variables.rs:552:5:552:26 | ExprStmt | variables.rs:552:5:552:23 | PathExpr | | -| variables.rs:553:5:553:11 | PathExpr | variables.rs:553:5:553:13 | CallExpr | | +| variables.rs:552:5:552:26 | ExprStmt | variables.rs:552:5:552:23 | async_block_capture | | +| variables.rs:553:5:553:11 | structs | variables.rs:553:5:553:13 | CallExpr | | | variables.rs:553:5:553:13 | CallExpr | variables.rs:554:5:554:14 | ExprStmt | | -| variables.rs:553:5:553:14 | ExprStmt | variables.rs:553:5:553:11 | PathExpr | | -| variables.rs:554:5:554:11 | PathExpr | variables.rs:554:5:554:13 | CallExpr | | +| variables.rs:553:5:553:14 | ExprStmt | variables.rs:553:5:553:11 | structs | | +| variables.rs:554:5:554:11 | ref_arg | variables.rs:554:5:554:13 | CallExpr | | | variables.rs:554:5:554:13 | CallExpr | variables.rs:555:5:555:30 | ExprStmt | | -| variables.rs:554:5:554:14 | ExprStmt | variables.rs:554:5:554:11 | PathExpr | | -| variables.rs:555:5:555:27 | PathExpr | variables.rs:555:5:555:29 | CallExpr | | +| variables.rs:554:5:554:14 | ExprStmt | variables.rs:554:5:554:11 | ref_arg | | +| variables.rs:555:5:555:27 | ref_methodcall_receiver | variables.rs:555:5:555:29 | CallExpr | | | variables.rs:555:5:555:29 | CallExpr | variables.rs:522:11:556:1 | BlockExpr | | -| variables.rs:555:5:555:30 | ExprStmt | variables.rs:555:5:555:27 | PathExpr | | +| variables.rs:555:5:555:30 | ExprStmt | variables.rs:555:5:555:27 | ref_methodcall_receiver | | breakTarget continueTarget diff --git a/rust/ql/test/utils/InlineFlowTest.qll b/rust/ql/test/utils/InlineFlowTest.qll index 7c34acfdc68b8..b4960a055ee12 100644 --- a/rust/ql/test/utils/InlineFlowTest.qll +++ b/rust/ql/test/utils/InlineFlowTest.qll @@ -12,7 +12,7 @@ private import internal.InlineExpectationsTestImpl as InlineExpectationsTestImpl // Holds if the target expression of `call` is a path and the string representation of the path is `name`. private predicate callTargetName(CallExpr call, string name) { - call.getExpr().(PathExpr).getPath().toString() = name + call.getExpr().(PathExpr).toString() = name } private module FlowTestImpl implements InputSig {