diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll index 5ebb3c5dcd87..53a101dc8a72 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll @@ -397,20 +397,23 @@ module Impl { ) } - private newtype TVariableOrAccessCand = - TVariableOrAccessCandVariable(Variable v) or - TVariableOrAccessCandVariableAccessCand(VariableAccessCand va) + private newtype TDefOrAccessCand = + TDefOrAccessCandNestedFunction(Function f, BlockExprScope scope) { + f = scope.getStmtList().getAStatement() + } or + TDefOrAccessCandVariable(Variable v) or + TDefOrAccessCandVariableAccessCand(VariableAccessCand va) /** - * A variable declaration or variable access candidate. + * A nested function declaration, variable declaration, or variable (or function) + * access candidate. * - * In order to determine whether a candidate is an actual variable access, - * we rank declarations and candidates by their position in source code. + * In order to determine whether a candidate is an actual variable/function access, + * we rank declarations and candidates by their position in the AST. * - * The ranking must take variable names into account, but also variable scopes; - * below a comment `rank(scope, name, i)` means that the declaration/access on - * the given line has rank `i` amongst all declarations/accesses inside variable - * scope `scope`, for variable name `name`: + * The ranking must take names into account, but also variable scopes; below a comment + * `rank(scope, name, i)` means that the declaration/access on the given line has rank + * `i` amongst all declarations/accesses inside variable scope `scope`, for name `name`: * * ```rust * fn f() { // scope0 @@ -430,8 +433,8 @@ module Impl { * } * ``` * - * Variable declarations are only ranked in the scope that they bind into, while - * accesses candidates propagate outwards through scopes, as they may access + * Function/variable declarations are only ranked in the scope that they bind into, + * while accesses candidates propagate outwards through scopes, as they may access * declarations from outer scopes. * * For an access candidate with ranks `{ rank(scope_i, name, rnk_i) | i in I }` and @@ -448,41 +451,80 @@ module Impl { * i.e., its the nearest declaration before the access in the same (or outer) scope * as the access. */ - private class VariableOrAccessCand extends TVariableOrAccessCand { - Variable asVariable() { this = TVariableOrAccessCandVariable(result) } + abstract private class DefOrAccessCand extends TDefOrAccessCand { + abstract string toString(); - VariableAccessCand asVariableAccessCand() { - this = TVariableOrAccessCandVariableAccessCand(result) - } + abstract Location getLocation(); - string toString() { - result = this.asVariable().toString() or result = this.asVariableAccessCand().toString() - } + pragma[nomagic] + abstract predicate rankBy(string name, VariableScope scope, int ord, int kind); + } - Location getLocation() { - result = this.asVariable().getLocation() or result = this.asVariableAccessCand().getLocation() - } + abstract private class NestedFunctionOrVariable extends DefOrAccessCand { } - pragma[nomagic] - predicate rankBy(string name, VariableScope scope, int ord, int kind) { - variableDeclInScope(this.asVariable(), scope, name, ord) and + private class DefOrAccessCandNestedFunction extends NestedFunctionOrVariable, + TDefOrAccessCandNestedFunction + { + private Function f; + private BlockExprScope scope_; + + DefOrAccessCandNestedFunction() { this = TDefOrAccessCandNestedFunction(f, scope_) } + + override string toString() { result = f.toString() } + + override Location getLocation() { result = f.getLocation() } + + override predicate rankBy(string name, VariableScope scope, int ord, int kind) { + // nested functions behave as if they are defined at the beginning of the scope + name = f.getName().getText() and + scope = scope_ and + ord = 0 and kind = 0 - or - variableAccessCandInScope(this.asVariableAccessCand(), scope, name, _, ord) and + } + } + + private class DefOrAccessCandVariable extends NestedFunctionOrVariable, TDefOrAccessCandVariable { + private Variable v; + + DefOrAccessCandVariable() { this = TDefOrAccessCandVariable(v) } + + override string toString() { result = v.toString() } + + override Location getLocation() { result = v.getLocation() } + + override predicate rankBy(string name, VariableScope scope, int ord, int kind) { + variableDeclInScope(v, scope, name, ord) and kind = 1 } } + private class DefOrAccessCandVariableAccessCand extends DefOrAccessCand, + TDefOrAccessCandVariableAccessCand + { + private VariableAccessCand va; + + DefOrAccessCandVariableAccessCand() { this = TDefOrAccessCandVariableAccessCand(va) } + + override string toString() { result = va.toString() } + + override Location getLocation() { result = va.getLocation() } + + override predicate rankBy(string name, VariableScope scope, int ord, int kind) { + variableAccessCandInScope(va, scope, name, _, ord) and + kind = 2 + } + } + private module DenseRankInput implements DenseRankInputSig2 { class C1 = VariableScope; class C2 = string; - class Ranked = VariableOrAccessCand; + class Ranked = DefOrAccessCand; - int getRank(VariableScope scope, string name, VariableOrAccessCand v) { + int getRank(VariableScope scope, string name, DefOrAccessCand v) { v = - rank[result](VariableOrAccessCand v0, int ord, int kind | + rank[result](DefOrAccessCand v0, int ord, int kind | v0.rankBy(name, scope, ord, kind) | v0 order by ord, kind @@ -494,7 +536,7 @@ module Impl { * Gets the rank of `v` amongst all other declarations or access candidates * to a variable named `name` in the variable scope `scope`. */ - private int rankVariableOrAccess(VariableScope scope, string name, VariableOrAccessCand v) { + private int rankVariableOrAccess(VariableScope scope, string name, DefOrAccessCand v) { v = DenseRank2::denseRank(scope, name, result + 1) } @@ -512,25 +554,38 @@ module Impl { * the declaration at rank 0 can only reach the access at rank 1, while the declaration * at rank 2 can only reach the access at rank 3. */ - private predicate variableReachesRank(VariableScope scope, string name, Variable v, int rnk) { - rnk = rankVariableOrAccess(scope, name, TVariableOrAccessCandVariable(v)) + private predicate variableReachesRank( + VariableScope scope, string name, NestedFunctionOrVariable v, int rnk + ) { + rnk = rankVariableOrAccess(scope, name, v) or variableReachesRank(scope, name, v, rnk - 1) and - rnk = rankVariableOrAccess(scope, name, TVariableOrAccessCandVariableAccessCand(_)) + rnk = rankVariableOrAccess(scope, name, TDefOrAccessCandVariableAccessCand(_)) } private predicate variableReachesCand( - VariableScope scope, string name, Variable v, VariableAccessCand cand, int nestLevel + VariableScope scope, string name, NestedFunctionOrVariable v, VariableAccessCand cand, + int nestLevel ) { exists(int rnk | variableReachesRank(scope, name, v, rnk) and - rnk = rankVariableOrAccess(scope, name, TVariableOrAccessCandVariableAccessCand(cand)) and + rnk = rankVariableOrAccess(scope, name, TDefOrAccessCandVariableAccessCand(cand)) and variableAccessCandInScope(cand, scope, name, nestLevel, _) ) } + pragma[nomagic] + predicate access(string name, NestedFunctionOrVariable v, VariableAccessCand cand) { + v = + min(NestedFunctionOrVariable v0, int nestLevel | + variableReachesCand(_, name, v0, cand, nestLevel) + | + v0 order by nestLevel + ) + } + /** A variable access. */ - class VariableAccess extends PathExprBaseImpl::PathExprBase instanceof VariableAccessCand { + class VariableAccess extends PathExprBaseImpl::PathExprBase { private string name; private Variable v; @@ -574,6 +629,16 @@ module Impl { } } + /** A nested function access. */ + class NestedFunctionAccess extends PathExprBaseImpl::PathExprBase { + private Function f; + + NestedFunctionAccess() { nestedFunctionAccess(_, f, this) } + + /** Gets the function being accessed. */ + Function getFunction() { result = f } + } + cached private module Cached { cached @@ -582,12 +647,12 @@ module Impl { cached predicate variableAccess(string name, Variable v, VariableAccessCand cand) { - v = - min(Variable v0, int nestLevel | - variableReachesCand(_, name, v0, cand, nestLevel) - | - v0 order by nestLevel - ) + access(name, TDefOrAccessCandVariable(v), cand) + } + + cached + predicate nestedFunctionAccess(string name, Function f, VariableAccessCand cand) { + access(name, TDefOrAccessCandNestedFunction(f, _), cand) } } diff --git a/rust/ql/test/library-tests/dataflow/global/inline-flow.expected b/rust/ql/test/library-tests/dataflow/global/inline-flow.expected index cce443fe5dc2..c9eab0e3acf9 100644 --- a/rust/ql/test/library-tests/dataflow/global/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/global/inline-flow.expected @@ -20,21 +20,28 @@ edges | main.rs:41:26:44:5 | { ... } | main.rs:30:17:30:22 | ...: i64 | provenance | | | main.rs:41:26:44:5 | { ... } | main.rs:41:13:44:6 | pass_through(...) | provenance | | | main.rs:43:9:43:18 | source(...) | main.rs:41:26:44:5 | { ... } | provenance | | -| main.rs:56:23:56:28 | ...: i64 | main.rs:57:14:57:14 | n | provenance | | -| main.rs:59:31:65:5 | { ... } | main.rs:77:13:77:25 | mn.get_data(...) | provenance | | -| main.rs:63:13:63:21 | source(...) | main.rs:59:31:65:5 | { ... } | provenance | | -| main.rs:66:28:66:33 | ...: i64 | main.rs:66:43:72:5 | { ... } | provenance | | -| main.rs:77:9:77:9 | a | main.rs:78:10:78:10 | a | provenance | | -| main.rs:77:13:77:25 | mn.get_data(...) | main.rs:77:9:77:9 | a | provenance | | -| main.rs:83:9:83:9 | a | main.rs:84:16:84:16 | a | provenance | | -| main.rs:83:13:83:21 | source(...) | main.rs:83:9:83:9 | a | provenance | | -| main.rs:84:16:84:16 | a | main.rs:56:23:56:28 | ...: i64 | provenance | | -| main.rs:89:9:89:9 | a | main.rs:90:29:90:29 | a | provenance | | -| main.rs:89:13:89:21 | source(...) | main.rs:89:9:89:9 | a | provenance | | -| main.rs:90:9:90:9 | b | main.rs:91:10:91:10 | b | provenance | | -| main.rs:90:13:90:30 | mn.data_through(...) | main.rs:90:9:90:9 | b | provenance | | -| main.rs:90:29:90:29 | a | main.rs:66:28:66:33 | ...: i64 | provenance | | -| main.rs:90:29:90:29 | a | main.rs:90:13:90:30 | mn.data_through(...) | provenance | | +| main.rs:49:9:49:9 | a | main.rs:55:26:55:26 | a | provenance | | +| main.rs:49:13:49:22 | source(...) | main.rs:49:9:49:9 | a | provenance | | +| main.rs:51:21:51:26 | ...: i64 | main.rs:51:36:53:5 | { ... } | provenance | | +| main.rs:55:9:55:9 | b | main.rs:56:10:56:10 | b | provenance | | +| main.rs:55:13:55:27 | pass_through(...) | main.rs:55:9:55:9 | b | provenance | | +| main.rs:55:26:55:26 | a | main.rs:51:21:51:26 | ...: i64 | provenance | | +| main.rs:55:26:55:26 | a | main.rs:55:13:55:27 | pass_through(...) | provenance | | +| main.rs:67:23:67:28 | ...: i64 | main.rs:68:14:68:14 | n | provenance | | +| main.rs:70:31:76:5 | { ... } | main.rs:88:13:88:25 | mn.get_data(...) | provenance | | +| main.rs:74:13:74:21 | source(...) | main.rs:70:31:76:5 | { ... } | provenance | | +| main.rs:77:28:77:33 | ...: i64 | main.rs:77:43:83:5 | { ... } | provenance | | +| main.rs:88:9:88:9 | a | main.rs:89:10:89:10 | a | provenance | | +| main.rs:88:13:88:25 | mn.get_data(...) | main.rs:88:9:88:9 | a | provenance | | +| main.rs:94:9:94:9 | a | main.rs:95:16:95:16 | a | provenance | | +| main.rs:94:13:94:21 | source(...) | main.rs:94:9:94:9 | a | provenance | | +| main.rs:95:16:95:16 | a | main.rs:67:23:67:28 | ...: i64 | provenance | | +| main.rs:100:9:100:9 | a | main.rs:101:29:101:29 | a | provenance | | +| main.rs:100:13:100:21 | source(...) | main.rs:100:9:100:9 | a | provenance | | +| main.rs:101:9:101:9 | b | main.rs:102:10:102:10 | b | provenance | | +| main.rs:101:13:101:30 | mn.data_through(...) | main.rs:101:9:101:9 | b | provenance | | +| main.rs:101:29:101:29 | a | main.rs:77:28:77:33 | ...: i64 | provenance | | +| main.rs:101:29:101:29 | a | main.rs:101:13:101:30 | mn.data_through(...) | provenance | | nodes | main.rs:12:28:14:1 | { ... } | semmle.label | { ... } | | main.rs:13:5:13:13 | source(...) | semmle.label | source(...) | @@ -59,34 +66,44 @@ nodes | main.rs:41:26:44:5 | { ... } | semmle.label | { ... } | | main.rs:43:9:43:18 | source(...) | semmle.label | source(...) | | main.rs:45:10:45:10 | a | semmle.label | a | -| main.rs:56:23:56:28 | ...: i64 | semmle.label | ...: i64 | -| main.rs:57:14:57:14 | n | semmle.label | n | -| main.rs:59:31:65:5 | { ... } | semmle.label | { ... } | -| main.rs:63:13:63:21 | source(...) | semmle.label | source(...) | -| main.rs:66:28:66:33 | ...: i64 | semmle.label | ...: i64 | -| main.rs:66:43:72:5 | { ... } | semmle.label | { ... } | -| main.rs:77:9:77:9 | a | semmle.label | a | -| main.rs:77:13:77:25 | mn.get_data(...) | semmle.label | mn.get_data(...) | -| main.rs:78:10:78:10 | a | semmle.label | a | -| main.rs:83:9:83:9 | a | semmle.label | a | -| main.rs:83:13:83:21 | source(...) | semmle.label | source(...) | -| main.rs:84:16:84:16 | a | semmle.label | a | -| main.rs:89:9:89:9 | a | semmle.label | a | -| main.rs:89:13:89:21 | source(...) | semmle.label | source(...) | -| main.rs:90:9:90:9 | b | semmle.label | b | -| main.rs:90:13:90:30 | mn.data_through(...) | semmle.label | mn.data_through(...) | -| main.rs:90:29:90:29 | a | semmle.label | a | -| main.rs:91:10:91:10 | b | semmle.label | b | +| main.rs:49:9:49:9 | a | semmle.label | a | +| main.rs:49:13:49:22 | source(...) | semmle.label | source(...) | +| main.rs:51:21:51:26 | ...: i64 | semmle.label | ...: i64 | +| main.rs:51:36:53:5 | { ... } | semmle.label | { ... } | +| main.rs:55:9:55:9 | b | semmle.label | b | +| main.rs:55:13:55:27 | pass_through(...) | semmle.label | pass_through(...) | +| main.rs:55:26:55:26 | a | semmle.label | a | +| main.rs:56:10:56:10 | b | semmle.label | b | +| main.rs:67:23:67:28 | ...: i64 | semmle.label | ...: i64 | +| main.rs:68:14:68:14 | n | semmle.label | n | +| main.rs:70:31:76:5 | { ... } | semmle.label | { ... } | +| main.rs:74:13:74:21 | source(...) | semmle.label | source(...) | +| main.rs:77:28:77:33 | ...: i64 | semmle.label | ...: i64 | +| main.rs:77:43:83:5 | { ... } | semmle.label | { ... } | +| main.rs:88:9:88:9 | a | semmle.label | a | +| main.rs:88:13:88:25 | mn.get_data(...) | semmle.label | mn.get_data(...) | +| main.rs:89:10:89:10 | a | semmle.label | a | +| main.rs:94:9:94:9 | a | semmle.label | a | +| main.rs:94:13:94:21 | source(...) | semmle.label | source(...) | +| main.rs:95:16:95:16 | a | semmle.label | a | +| main.rs:100:9:100:9 | a | semmle.label | a | +| main.rs:100:13:100:21 | source(...) | semmle.label | source(...) | +| main.rs:101:9:101:9 | b | semmle.label | b | +| main.rs:101:13:101:30 | mn.data_through(...) | semmle.label | mn.data_through(...) | +| main.rs:101:29:101:29 | a | semmle.label | a | +| main.rs:102:10:102:10 | b | semmle.label | b | subpaths | main.rs:36:26:36:26 | a | main.rs:30:17:30:22 | ...: i64 | main.rs:30:32:32:1 | { ... } | main.rs:36:13:36:27 | pass_through(...) | | main.rs:41:26:44:5 | { ... } | main.rs:30:17:30:22 | ...: i64 | main.rs:30:32:32:1 | { ... } | main.rs:41:13:44:6 | pass_through(...) | -| main.rs:90:29:90:29 | a | main.rs:66:28:66:33 | ...: i64 | main.rs:66:43:72:5 | { ... } | main.rs:90:13:90:30 | mn.data_through(...) | +| main.rs:55:26:55:26 | a | main.rs:51:21:51:26 | ...: i64 | main.rs:51:36:53:5 | { ... } | main.rs:55:13:55:27 | pass_through(...) | +| main.rs:101:29:101:29 | a | main.rs:77:28:77:33 | ...: i64 | main.rs:77:43:83:5 | { ... } | main.rs:101:13:101:30 | mn.data_through(...) | testFailures #select | main.rs:18:10:18:10 | a | main.rs:13:5:13:13 | source(...) | main.rs:18:10:18:10 | a | $@ | main.rs:13:5:13:13 | source(...) | source(...) | | main.rs:22:10:22:10 | n | main.rs:26:13:26:21 | source(...) | main.rs:22:10:22:10 | n | $@ | main.rs:26:13:26:21 | source(...) | source(...) | | main.rs:37:10:37:10 | b | main.rs:35:13:35:21 | source(...) | main.rs:37:10:37:10 | b | $@ | main.rs:35:13:35:21 | source(...) | source(...) | | main.rs:45:10:45:10 | a | main.rs:43:9:43:18 | source(...) | main.rs:45:10:45:10 | a | $@ | main.rs:43:9:43:18 | source(...) | source(...) | -| main.rs:57:14:57:14 | n | main.rs:83:13:83:21 | source(...) | main.rs:57:14:57:14 | n | $@ | main.rs:83:13:83:21 | source(...) | source(...) | -| main.rs:78:10:78:10 | a | main.rs:63:13:63:21 | source(...) | main.rs:78:10:78:10 | a | $@ | main.rs:63:13:63:21 | source(...) | source(...) | -| main.rs:91:10:91:10 | b | main.rs:89:13:89:21 | source(...) | main.rs:91:10:91:10 | b | $@ | main.rs:89:13:89:21 | source(...) | source(...) | +| main.rs:56:10:56:10 | b | main.rs:49:13:49:22 | source(...) | main.rs:56:10:56:10 | b | $@ | main.rs:49:13:49:22 | source(...) | source(...) | +| main.rs:68:14:68:14 | n | main.rs:94:13:94:21 | source(...) | main.rs:68:14:68:14 | n | $@ | main.rs:94:13:94:21 | source(...) | source(...) | +| main.rs:89:10:89:10 | a | main.rs:74:13:74:21 | source(...) | main.rs:89:10:89:10 | a | $@ | main.rs:74:13:74:21 | source(...) | source(...) | +| main.rs:102:10:102:10 | b | main.rs:100:13:100:21 | source(...) | main.rs:102:10:102:10 | b | $@ | main.rs:100:13:100:21 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/global/main.rs b/rust/ql/test/library-tests/dataflow/global/main.rs index f432abcaaf5d..60347623fd2e 100644 --- a/rust/ql/test/library-tests/dataflow/global/main.rs +++ b/rust/ql/test/library-tests/dataflow/global/main.rs @@ -45,6 +45,17 @@ fn block_expression_as_argument() { sink(a); // $ hasValueFlow=14 } +fn data_through_nested_function() { + let a = source(15); + + fn pass_through(i: i64) -> i64 { + i + } + + let b = pass_through(a); + sink(b); // $ hasValueFlow=15 +} + // ----------------------------------------------------------------------------- // Data flow in, out, and through method. @@ -127,6 +138,7 @@ fn main() { data_out_of_call(); data_in_to_call(); data_through_call(); + data_through_nested_function(); data_out_of_method(); data_in_to_method_call(); diff --git a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected index d9768feb7c96..4ae1c8689b6a 100644 --- a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected +++ b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected @@ -10,26 +10,30 @@ | main.rs:41:13:44:6 | pass_through(...) | main.rs:30:1:32:1 | fn pass_through | | main.rs:43:9:43:18 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:45:5:45:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:57:9:57:15 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:63:13:63:21 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:77:13:77:25 | mn.get_data(...) | main.rs:59:5:65:5 | fn get_data | -| main.rs:78:5:78:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:83:13:83:21 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:84:5:84:17 | mn.data_in(...) | main.rs:56:5:58:5 | fn data_in | -| main.rs:89:13:89:21 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:90:13:90:30 | mn.data_through(...) | main.rs:66:5:72:5 | fn data_through | -| main.rs:91:5:91:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:110:28:110:36 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:113:5:113:17 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:116:28:116:36 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:118:5:118:17 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:120:28:120:36 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:122:13:122:20 | a.add(...) | main.rs:103:5:106:5 | fn add | -| main.rs:123:5:123:17 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:127:5:127:22 | data_out_of_call(...) | main.rs:16:1:19:1 | fn data_out_of_call | -| main.rs:128:5:128:21 | data_in_to_call(...) | main.rs:25:1:28:1 | fn data_in_to_call | -| main.rs:129:5:129:23 | data_through_call(...) | main.rs:34:1:38:1 | fn data_through_call | -| main.rs:131:5:131:24 | data_out_of_method(...) | main.rs:75:1:79:1 | fn data_out_of_method | -| main.rs:132:5:132:28 | data_in_to_method_call(...) | main.rs:81:1:85:1 | fn data_in_to_method_call | -| main.rs:133:5:133:25 | data_through_method(...) | main.rs:87:1:92:1 | fn data_through_method | -| main.rs:135:5:135:31 | test_operator_overloading(...) | main.rs:109:1:124:1 | fn test_operator_overloading | +| main.rs:49:13:49:22 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:55:13:55:27 | pass_through(...) | main.rs:51:5:53:5 | fn pass_through | +| main.rs:56:5:56:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:68:9:68:15 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:74:13:74:21 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:88:13:88:25 | mn.get_data(...) | main.rs:70:5:76:5 | fn get_data | +| main.rs:89:5:89:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:94:13:94:21 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:95:5:95:17 | mn.data_in(...) | main.rs:67:5:69:5 | fn data_in | +| main.rs:100:13:100:21 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:101:13:101:30 | mn.data_through(...) | main.rs:77:5:83:5 | fn data_through | +| main.rs:102:5:102:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:121:28:121:36 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:124:5:124:17 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:127:28:127:36 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:129:5:129:17 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:131:28:131:36 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:133:13:133:20 | a.add(...) | main.rs:114:5:117:5 | fn add | +| main.rs:134:5:134:17 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:138:5:138:22 | data_out_of_call(...) | main.rs:16:1:19:1 | fn data_out_of_call | +| main.rs:139:5:139:21 | data_in_to_call(...) | main.rs:25:1:28:1 | fn data_in_to_call | +| main.rs:140:5:140:23 | data_through_call(...) | main.rs:34:1:38:1 | fn data_through_call | +| main.rs:141:5:141:34 | data_through_nested_function(...) | main.rs:48:1:57:1 | fn data_through_nested_function | +| main.rs:143:5:143:24 | data_out_of_method(...) | main.rs:86:1:90:1 | fn data_out_of_method | +| main.rs:144:5:144:28 | data_in_to_method_call(...) | main.rs:92:1:96:1 | fn data_in_to_method_call | +| main.rs:145:5:145:25 | data_through_method(...) | main.rs:98:1:103:1 | fn data_through_method | +| main.rs:147:5:147:31 | test_operator_overloading(...) | main.rs:120:1:135:1 | fn test_operator_overloading | diff --git a/rust/ql/test/library-tests/variables/Cfg.expected b/rust/ql/test/library-tests/variables/Cfg.expected index f1838812baed..22ab5184b0c1 100644 --- a/rust/ql/test/library-tests/variables/Cfg.expected +++ b/rust/ql/test/library-tests/variables/Cfg.expected @@ -714,674 +714,747 @@ edges | main.rs:328:5:328:17 | print_i64(...) | main.rs:314:23:329:1 | { ... } | | | main.rs:328:5:328:18 | ExprStmt | main.rs:328:5:328:13 | print_i64 | | | main.rs:328:15:328:16 | n2 | main.rs:328:5:328:17 | print_i64(...) | | -| main.rs:331:1:338:1 | enter fn for_variable | main.rs:332:5:332:42 | let ... = ... | | -| main.rs:331:1:338:1 | exit fn for_variable (normal) | main.rs:331:1:338:1 | exit fn for_variable | | -| main.rs:331:19:338:1 | { ... } | main.rs:331:1:338:1 | exit fn for_variable (normal) | | -| main.rs:332:5:332:42 | let ... = ... | main.rs:332:15:332:22 | "apples" | | -| main.rs:332:9:332:9 | v | main.rs:335:12:335:12 | v | match | -| main.rs:332:13:332:41 | &... | main.rs:332:9:332:9 | v | | -| main.rs:332:14:332:41 | [...] | main.rs:332:13:332:41 | &... | | -| main.rs:332:15:332:22 | "apples" | main.rs:332:25:332:30 | "cake" | | -| main.rs:332:25:332:30 | "cake" | main.rs:332:33:332:40 | "coffee" | | -| main.rs:332:33:332:40 | "coffee" | main.rs:332:14:332:41 | [...] | | -| main.rs:334:5:337:5 | for ... in ... { ... } | main.rs:331:19:338:1 | { ... } | | -| main.rs:334:9:334:12 | text | main.rs:334:5:337:5 | for ... in ... { ... } | no-match | -| main.rs:334:9:334:12 | text | main.rs:336:9:336:24 | ExprStmt | match | -| main.rs:335:12:335:12 | v | main.rs:334:9:334:12 | text | | -| main.rs:335:14:337:5 | { ... } | main.rs:334:9:334:12 | text | | -| main.rs:336:9:336:17 | print_str | main.rs:336:19:336:22 | text | | -| main.rs:336:9:336:23 | print_str(...) | main.rs:335:14:337:5 | { ... } | | -| main.rs:336:9:336:24 | ExprStmt | main.rs:336:9:336:17 | print_str | | -| main.rs:336:19:336:22 | text | main.rs:336:9:336:23 | print_str(...) | | -| main.rs:340:1:346:1 | enter fn add_assign | main.rs:341:5:341:18 | let ... = 0 | | -| main.rs:340:1:346:1 | exit fn add_assign (normal) | main.rs:340:1:346:1 | exit fn add_assign | | -| main.rs:340:17:346:1 | { ... } | main.rs:340:1:346:1 | exit fn add_assign (normal) | | -| main.rs:341:5:341:18 | let ... = 0 | main.rs:341:17:341:17 | 0 | | -| main.rs:341:9:341:13 | a | main.rs:342:5:342:11 | ExprStmt | match | -| main.rs:341:17:341:17 | 0 | main.rs:341:9:341:13 | a | | -| main.rs:342:5:342:5 | a | main.rs:342:10:342:10 | 1 | | -| main.rs:342:5:342:10 | ... += ... | main.rs:343:5:343:17 | ExprStmt | | -| main.rs:342:5:342:11 | ExprStmt | main.rs:342:5:342:5 | a | | -| main.rs:342:10:342:10 | 1 | main.rs:342:5:342:10 | ... += ... | | -| main.rs:343:5:343:13 | print_i64 | main.rs:343:15:343:15 | a | | -| main.rs:343:5:343:16 | print_i64(...) | main.rs:344:5:344:28 | ExprStmt | | -| main.rs:343:5:343:17 | ExprStmt | main.rs:343:5:343:13 | print_i64 | | -| main.rs:343:15:343:15 | a | main.rs:343:5:343:16 | print_i64(...) | | -| main.rs:344:5:344:27 | ... .add_assign(...) | main.rs:345:5:345:17 | ExprStmt | | -| main.rs:344:5:344:28 | ExprStmt | main.rs:344:11:344:11 | a | | -| main.rs:344:6:344:11 | &mut a | main.rs:344:25:344:26 | 10 | | -| main.rs:344:11:344:11 | a | main.rs:344:6:344:11 | &mut a | | -| main.rs:344:25:344:26 | 10 | main.rs:344:5:344:27 | ... .add_assign(...) | | -| main.rs:345:5:345:13 | print_i64 | main.rs:345:15:345:15 | a | | -| main.rs:345:5:345:16 | print_i64(...) | main.rs:340:17:346:1 | { ... } | | -| main.rs:345:5:345:17 | ExprStmt | main.rs:345:5:345:13 | print_i64 | | -| main.rs:345:15:345:15 | a | main.rs:345:5:345:16 | print_i64(...) | | -| main.rs:348:1:354:1 | enter fn mutate | main.rs:349:5:349:18 | let ... = 1 | | -| main.rs:348:1:354:1 | exit fn mutate (normal) | main.rs:348:1:354:1 | exit fn mutate | | -| main.rs:348:13:354:1 | { ... } | main.rs:348:1:354:1 | exit fn mutate (normal) | | -| main.rs:349:5:349:18 | let ... = 1 | main.rs:349:17:349:17 | 1 | | -| main.rs:349:9:349:13 | i | main.rs:350:5:351:15 | let ... = ... | match | -| main.rs:349:17:349:17 | 1 | main.rs:349:9:349:13 | i | | -| main.rs:350:5:351:15 | let ... = ... | main.rs:351:14:351:14 | i | | -| main.rs:350:9:350:13 | ref_i | main.rs:352:5:352:15 | ExprStmt | match | -| main.rs:351:9:351:14 | &mut i | main.rs:350:9:350:13 | ref_i | | -| main.rs:351:14:351:14 | i | main.rs:351:9:351:14 | &mut i | | -| main.rs:352:5:352:10 | * ... | main.rs:352:14:352:14 | 2 | | -| main.rs:352:5:352:14 | ... = ... | main.rs:353:5:353:17 | ExprStmt | | -| main.rs:352:5:352:15 | ExprStmt | main.rs:352:6:352:10 | ref_i | | -| main.rs:352:6:352:10 | ref_i | main.rs:352:5:352:10 | * ... | | -| main.rs:352:14:352:14 | 2 | main.rs:352:5:352:14 | ... = ... | | -| main.rs:353:5:353:13 | print_i64 | main.rs:353:15:353:15 | i | | -| main.rs:353:5:353:16 | print_i64(...) | main.rs:348:13:354:1 | { ... } | | -| main.rs:353:5:353:17 | ExprStmt | main.rs:353:5:353:13 | print_i64 | | -| main.rs:353:15:353:15 | i | main.rs:353:5:353:16 | print_i64(...) | | -| main.rs:356:1:361:1 | enter fn mutate_param | main.rs:356:17:356:17 | x | | -| main.rs:356:1:361:1 | exit fn mutate_param (normal) | main.rs:356:1:361:1 | exit fn mutate_param | | -| main.rs:356:17:356:17 | x | main.rs:356:17:356:28 | ...: ... | match | -| main.rs:356:17:356:28 | ...: ... | main.rs:357:5:359:11 | ExprStmt | | -| main.rs:357:5:357:6 | * ... | main.rs:358:10:358:10 | x | | -| main.rs:357:5:359:10 | ... = ... | main.rs:360:5:360:13 | ExprStmt | | -| main.rs:357:5:359:11 | ExprStmt | main.rs:357:6:357:6 | x | | -| main.rs:357:6:357:6 | x | main.rs:357:5:357:6 | * ... | | -| main.rs:358:9:358:10 | * ... | main.rs:359:10:359:10 | x | | -| main.rs:358:9:359:10 | ... + ... | main.rs:357:5:359:10 | ... = ... | | -| main.rs:358:10:358:10 | x | main.rs:358:9:358:10 | * ... | | -| main.rs:359:9:359:10 | * ... | main.rs:358:9:359:10 | ... + ... | | -| main.rs:359:10:359:10 | x | main.rs:359:9:359:10 | * ... | | -| main.rs:360:5:360:12 | return x | main.rs:356:1:361:1 | exit fn mutate_param (normal) | return | -| main.rs:360:5:360:13 | ExprStmt | main.rs:360:12:360:12 | x | | -| main.rs:360:12:360:12 | x | main.rs:360:5:360:12 | return x | | -| main.rs:363:1:369:1 | enter fn mutate_param2 | main.rs:363:22:363:22 | x | | -| main.rs:363:1:369:1 | exit fn mutate_param2 (normal) | main.rs:363:1:369:1 | exit fn mutate_param2 | | -| main.rs:363:22:363:22 | x | main.rs:363:22:363:36 | ...: ... | match | -| main.rs:363:22:363:36 | ...: ... | main.rs:363:39:363:39 | y | | -| main.rs:363:39:363:39 | y | main.rs:363:39:363:57 | ...: ... | match | -| main.rs:363:39:363:57 | ...: ... | main.rs:364:5:366:11 | ExprStmt | | -| main.rs:363:60:369:1 | { ... } | main.rs:363:1:369:1 | exit fn mutate_param2 (normal) | | -| main.rs:364:5:364:6 | * ... | main.rs:365:10:365:10 | x | | -| main.rs:364:5:366:10 | ... = ... | main.rs:367:5:368:10 | ExprStmt | | -| main.rs:364:5:366:11 | ExprStmt | main.rs:364:6:364:6 | x | | -| main.rs:364:6:364:6 | x | main.rs:364:5:364:6 | * ... | | -| main.rs:365:9:365:10 | * ... | main.rs:366:10:366:10 | x | | -| main.rs:365:9:366:10 | ... + ... | main.rs:364:5:366:10 | ... = ... | | -| main.rs:365:10:365:10 | x | main.rs:365:9:365:10 | * ... | | -| main.rs:366:9:366:10 | * ... | main.rs:365:9:366:10 | ... + ... | | -| main.rs:366:10:366:10 | x | main.rs:366:9:366:10 | * ... | | -| main.rs:367:5:367:6 | * ... | main.rs:368:9:368:9 | x | | -| main.rs:367:5:368:9 | ... = ... | main.rs:363:60:369:1 | { ... } | | -| main.rs:367:5:368:10 | ExprStmt | main.rs:367:6:367:6 | y | | -| main.rs:367:6:367:6 | y | main.rs:367:5:367:6 | * ... | | -| main.rs:368:9:368:9 | x | main.rs:367:5:368:9 | ... = ... | | -| main.rs:371:1:389:1 | enter fn mutate_arg | main.rs:372:5:372:18 | let ... = 2 | | -| main.rs:371:1:389:1 | exit fn mutate_arg (normal) | main.rs:371:1:389:1 | exit fn mutate_arg | | -| main.rs:371:17:389:1 | { ... } | main.rs:371:1:389:1 | exit fn mutate_arg (normal) | | -| main.rs:372:5:372:18 | let ... = 2 | main.rs:372:17:372:17 | 2 | | -| main.rs:372:9:372:13 | x | main.rs:373:5:374:29 | let ... = ... | match | -| main.rs:372:17:372:17 | 2 | main.rs:372:9:372:13 | x | | -| main.rs:373:5:374:29 | let ... = ... | main.rs:374:9:374:20 | mutate_param | | -| main.rs:373:9:373:9 | y | main.rs:375:5:375:12 | ExprStmt | match | -| main.rs:374:9:374:20 | mutate_param | main.rs:374:27:374:27 | x | | -| main.rs:374:9:374:28 | mutate_param(...) | main.rs:373:9:373:9 | y | | -| main.rs:374:22:374:27 | &mut x | main.rs:374:9:374:28 | mutate_param(...) | | -| main.rs:374:27:374:27 | x | main.rs:374:22:374:27 | &mut x | | -| main.rs:375:5:375:6 | * ... | main.rs:375:10:375:11 | 10 | | -| main.rs:375:5:375:11 | ... = ... | main.rs:377:5:377:17 | ExprStmt | | -| main.rs:375:5:375:12 | ExprStmt | main.rs:375:6:375:6 | y | | -| main.rs:375:6:375:6 | y | main.rs:375:5:375:6 | * ... | | -| main.rs:375:10:375:11 | 10 | main.rs:375:5:375:11 | ... = ... | | -| main.rs:377:5:377:13 | print_i64 | main.rs:377:15:377:15 | x | | -| main.rs:377:5:377:16 | print_i64(...) | main.rs:379:5:379:18 | let ... = 4 | | -| main.rs:377:5:377:17 | ExprStmt | main.rs:377:5:377:13 | print_i64 | | -| main.rs:377:15:377:15 | x | main.rs:377:5:377:16 | print_i64(...) | | -| main.rs:379:5:379:18 | let ... = 4 | main.rs:379:17:379:17 | 4 | | -| main.rs:379:9:379:13 | z | main.rs:380:5:381:20 | let ... = ... | match | -| main.rs:379:17:379:17 | 4 | main.rs:379:9:379:13 | z | | -| main.rs:380:5:381:20 | let ... = ... | main.rs:381:19:381:19 | x | | -| main.rs:380:9:380:9 | w | main.rs:382:5:385:6 | ExprStmt | match | -| main.rs:381:9:381:19 | &mut ... | main.rs:380:9:380:9 | w | | -| main.rs:381:14:381:19 | &mut x | main.rs:381:9:381:19 | &mut ... | | -| main.rs:381:19:381:19 | x | main.rs:381:14:381:19 | &mut x | | -| main.rs:382:5:382:17 | mutate_param2 | main.rs:383:14:383:14 | z | | -| main.rs:382:5:385:5 | mutate_param2(...) | main.rs:386:5:386:13 | ExprStmt | | -| main.rs:382:5:385:6 | ExprStmt | main.rs:382:5:382:17 | mutate_param2 | | -| main.rs:383:9:383:14 | &mut z | main.rs:384:9:384:9 | w | | -| main.rs:383:14:383:14 | z | main.rs:383:9:383:14 | &mut z | | -| main.rs:384:9:384:9 | w | main.rs:382:5:385:5 | mutate_param2(...) | | -| main.rs:386:5:386:7 | * ... | main.rs:386:11:386:12 | 11 | | -| main.rs:386:5:386:12 | ... = ... | main.rs:388:5:388:17 | ExprStmt | | -| main.rs:386:5:386:13 | ExprStmt | main.rs:386:7:386:7 | w | | -| main.rs:386:6:386:7 | * ... | main.rs:386:5:386:7 | * ... | | -| main.rs:386:7:386:7 | w | main.rs:386:6:386:7 | * ... | | -| main.rs:386:11:386:12 | 11 | main.rs:386:5:386:12 | ... = ... | | -| main.rs:388:5:388:13 | print_i64 | main.rs:388:15:388:15 | z | | -| main.rs:388:5:388:16 | print_i64(...) | main.rs:371:17:389:1 | { ... } | | -| main.rs:388:5:388:17 | ExprStmt | main.rs:388:5:388:13 | print_i64 | | -| main.rs:388:15:388:15 | z | main.rs:388:5:388:16 | print_i64(...) | | -| main.rs:391:1:397:1 | enter fn alias | main.rs:392:5:392:18 | let ... = 1 | | -| main.rs:391:1:397:1 | exit fn alias (normal) | main.rs:391:1:397:1 | exit fn alias | | -| main.rs:391:12:397:1 | { ... } | main.rs:391:1:397:1 | exit fn alias (normal) | | -| main.rs:392:5:392:18 | let ... = 1 | main.rs:392:17:392:17 | 1 | | -| main.rs:392:9:392:13 | x | main.rs:393:5:394:15 | let ... = ... | match | -| main.rs:392:17:392:17 | 1 | main.rs:392:9:392:13 | x | | -| main.rs:393:5:394:15 | let ... = ... | main.rs:394:14:394:14 | x | | -| main.rs:393:9:393:9 | y | main.rs:395:5:395:11 | ExprStmt | match | -| main.rs:394:9:394:14 | &mut x | main.rs:393:9:393:9 | y | | -| main.rs:394:14:394:14 | x | main.rs:394:9:394:14 | &mut x | | -| main.rs:395:5:395:6 | * ... | main.rs:395:10:395:10 | 2 | | -| main.rs:395:5:395:10 | ... = ... | main.rs:396:5:396:17 | ExprStmt | | -| main.rs:395:5:395:11 | ExprStmt | main.rs:395:6:395:6 | y | | -| main.rs:395:6:395:6 | y | main.rs:395:5:395:6 | * ... | | -| main.rs:395:10:395:10 | 2 | main.rs:395:5:395:10 | ... = ... | | -| main.rs:396:5:396:13 | print_i64 | main.rs:396:15:396:15 | x | | -| main.rs:396:5:396:16 | print_i64(...) | main.rs:391:12:397:1 | { ... } | | -| main.rs:396:5:396:17 | ExprStmt | main.rs:396:5:396:13 | print_i64 | | -| main.rs:396:15:396:15 | x | main.rs:396:5:396:16 | print_i64(...) | | -| main.rs:399:1:407:1 | enter fn capture_immut | main.rs:400:5:400:16 | let ... = 100 | | -| main.rs:399:1:407:1 | exit fn capture_immut (normal) | main.rs:399:1:407:1 | exit fn capture_immut | | -| main.rs:399:20:407:1 | { ... } | main.rs:399:1:407:1 | exit fn capture_immut (normal) | | -| main.rs:400:5:400:16 | let ... = 100 | main.rs:400:13:400:15 | 100 | | -| main.rs:400:9:400:9 | x | main.rs:402:5:404:6 | let ... = ... | match | -| main.rs:400:13:400:15 | 100 | main.rs:400:9:400:9 | x | | -| main.rs:402:5:404:6 | let ... = ... | main.rs:402:15:404:5 | \|...\| ... | | -| main.rs:402:9:402:11 | cap | main.rs:405:5:405:10 | ExprStmt | match | -| main.rs:402:15:404:5 | \|...\| ... | main.rs:402:9:402:11 | cap | | -| main.rs:402:15:404:5 | enter \|...\| ... | main.rs:403:9:403:21 | ExprStmt | | -| main.rs:402:15:404:5 | exit \|...\| ... (normal) | main.rs:402:15:404:5 | exit \|...\| ... | | -| main.rs:402:18:404:5 | { ... } | main.rs:402:15:404:5 | exit \|...\| ... (normal) | | -| main.rs:403:9:403:17 | print_i64 | main.rs:403:19:403:19 | x | | -| main.rs:403:9:403:20 | print_i64(...) | main.rs:402:18:404:5 | { ... } | | -| main.rs:403:9:403:21 | ExprStmt | main.rs:403:9:403:17 | print_i64 | | -| main.rs:403:19:403:19 | x | main.rs:403:9:403:20 | print_i64(...) | | -| main.rs:405:5:405:7 | cap | main.rs:405:5:405:9 | cap(...) | | -| main.rs:405:5:405:9 | cap(...) | main.rs:406:5:406:17 | ExprStmt | | -| main.rs:405:5:405:10 | ExprStmt | main.rs:405:5:405:7 | cap | | -| main.rs:406:5:406:13 | print_i64 | main.rs:406:15:406:15 | x | | -| main.rs:406:5:406:16 | print_i64(...) | main.rs:399:20:407:1 | { ... } | | -| main.rs:406:5:406:17 | ExprStmt | main.rs:406:5:406:13 | print_i64 | | -| main.rs:406:15:406:15 | x | main.rs:406:5:406:16 | print_i64(...) | | -| main.rs:409:1:433:1 | enter fn capture_mut | main.rs:410:5:410:18 | let ... = 1 | | -| main.rs:409:1:433:1 | exit fn capture_mut (normal) | main.rs:409:1:433:1 | exit fn capture_mut | | -| main.rs:409:18:433:1 | { ... } | main.rs:409:1:433:1 | exit fn capture_mut (normal) | | -| main.rs:410:5:410:18 | let ... = 1 | main.rs:410:17:410:17 | 1 | | -| main.rs:410:9:410:13 | x | main.rs:412:5:414:6 | let ... = ... | match | -| main.rs:410:17:410:17 | 1 | main.rs:410:9:410:13 | x | | -| main.rs:412:5:414:6 | let ... = ... | main.rs:412:20:414:5 | \|...\| ... | | -| main.rs:412:9:412:16 | closure1 | main.rs:415:5:415:15 | ExprStmt | match | -| main.rs:412:20:414:5 | \|...\| ... | main.rs:412:9:412:16 | closure1 | | -| main.rs:412:20:414:5 | enter \|...\| ... | main.rs:413:9:413:21 | ExprStmt | | -| main.rs:412:20:414:5 | exit \|...\| ... (normal) | main.rs:412:20:414:5 | exit \|...\| ... | | -| main.rs:412:23:414:5 | { ... } | main.rs:412:20:414:5 | exit \|...\| ... (normal) | | -| main.rs:413:9:413:17 | print_i64 | main.rs:413:19:413:19 | x | | -| main.rs:413:9:413:20 | print_i64(...) | main.rs:412:23:414:5 | { ... } | | -| main.rs:413:9:413:21 | ExprStmt | main.rs:413:9:413:17 | print_i64 | | -| main.rs:413:19:413:19 | x | main.rs:413:9:413:20 | print_i64(...) | | -| main.rs:415:5:415:12 | closure1 | main.rs:415:5:415:14 | closure1(...) | | -| main.rs:415:5:415:14 | closure1(...) | main.rs:416:5:416:17 | ExprStmt | | -| main.rs:415:5:415:15 | ExprStmt | main.rs:415:5:415:12 | closure1 | | -| main.rs:416:5:416:13 | print_i64 | main.rs:416:15:416:15 | x | | -| main.rs:416:5:416:16 | print_i64(...) | main.rs:418:5:418:18 | let ... = 2 | | -| main.rs:416:5:416:17 | ExprStmt | main.rs:416:5:416:13 | print_i64 | | -| main.rs:416:15:416:15 | x | main.rs:416:5:416:16 | print_i64(...) | | -| main.rs:418:5:418:18 | let ... = 2 | main.rs:418:17:418:17 | 2 | | -| main.rs:418:9:418:13 | y | main.rs:420:5:422:6 | let ... = ... | match | -| main.rs:418:17:418:17 | 2 | main.rs:418:9:418:13 | y | | -| main.rs:420:5:422:6 | let ... = ... | main.rs:420:24:422:5 | \|...\| ... | | -| main.rs:420:9:420:20 | closure2 | main.rs:423:5:423:15 | ExprStmt | match | -| main.rs:420:24:422:5 | \|...\| ... | main.rs:420:9:420:20 | closure2 | | -| main.rs:420:24:422:5 | enter \|...\| ... | main.rs:421:9:421:14 | ExprStmt | | -| main.rs:420:24:422:5 | exit \|...\| ... (normal) | main.rs:420:24:422:5 | exit \|...\| ... | | -| main.rs:420:27:422:5 | { ... } | main.rs:420:24:422:5 | exit \|...\| ... (normal) | | -| main.rs:421:9:421:9 | y | main.rs:421:13:421:13 | 3 | | -| main.rs:421:9:421:13 | ... = ... | main.rs:420:27:422:5 | { ... } | | -| main.rs:421:9:421:14 | ExprStmt | main.rs:421:9:421:9 | y | | -| main.rs:421:13:421:13 | 3 | main.rs:421:9:421:13 | ... = ... | | -| main.rs:423:5:423:12 | closure2 | main.rs:423:5:423:14 | closure2(...) | | -| main.rs:423:5:423:14 | closure2(...) | main.rs:424:5:424:17 | ExprStmt | | -| main.rs:423:5:423:15 | ExprStmt | main.rs:423:5:423:12 | closure2 | | -| main.rs:424:5:424:13 | print_i64 | main.rs:424:15:424:15 | y | | -| main.rs:424:5:424:16 | print_i64(...) | main.rs:426:5:426:18 | let ... = 2 | | -| main.rs:424:5:424:17 | ExprStmt | main.rs:424:5:424:13 | print_i64 | | -| main.rs:424:15:424:15 | y | main.rs:424:5:424:16 | print_i64(...) | | -| main.rs:426:5:426:18 | let ... = 2 | main.rs:426:17:426:17 | 2 | | -| main.rs:426:9:426:13 | z | main.rs:428:5:430:6 | let ... = ... | match | -| main.rs:426:17:426:17 | 2 | main.rs:426:9:426:13 | z | | -| main.rs:428:5:430:6 | let ... = ... | main.rs:428:24:430:5 | \|...\| ... | | -| main.rs:428:9:428:20 | closure3 | main.rs:431:5:431:15 | ExprStmt | match | -| main.rs:428:24:430:5 | \|...\| ... | main.rs:428:9:428:20 | closure3 | | -| main.rs:428:24:430:5 | enter \|...\| ... | main.rs:429:9:429:24 | ExprStmt | | -| main.rs:428:24:430:5 | exit \|...\| ... (normal) | main.rs:428:24:430:5 | exit \|...\| ... | | -| main.rs:428:27:430:5 | { ... } | main.rs:428:24:430:5 | exit \|...\| ... (normal) | | -| main.rs:429:9:429:9 | z | main.rs:429:22:429:22 | 1 | | -| main.rs:429:9:429:23 | z.add_assign(...) | main.rs:428:27:430:5 | { ... } | | -| main.rs:429:9:429:24 | ExprStmt | main.rs:429:9:429:9 | z | | -| main.rs:429:22:429:22 | 1 | main.rs:429:9:429:23 | z.add_assign(...) | | -| main.rs:431:5:431:12 | closure3 | main.rs:431:5:431:14 | closure3(...) | | -| main.rs:431:5:431:14 | closure3(...) | main.rs:432:5:432:17 | ExprStmt | | -| main.rs:431:5:431:15 | ExprStmt | main.rs:431:5:431:12 | closure3 | | -| main.rs:432:5:432:13 | print_i64 | main.rs:432:15:432:15 | z | | -| main.rs:432:5:432:16 | print_i64(...) | main.rs:409:18:433:1 | { ... } | | -| main.rs:432:5:432:17 | ExprStmt | main.rs:432:5:432:13 | print_i64 | | -| main.rs:432:15:432:15 | z | main.rs:432:5:432:16 | print_i64(...) | | -| main.rs:435:1:443:1 | enter fn async_block_capture | main.rs:436:5:436:23 | let ... = 0 | | -| main.rs:435:1:443:1 | exit fn async_block_capture (normal) | main.rs:435:1:443:1 | exit fn async_block_capture | | -| main.rs:435:32:443:1 | { ... } | main.rs:435:1:443:1 | exit fn async_block_capture (normal) | | -| main.rs:436:5:436:23 | let ... = 0 | main.rs:436:22:436:22 | 0 | | -| main.rs:436:9:436:13 | i | main.rs:437:5:439:6 | let ... = ... | match | -| main.rs:436:22:436:22 | 0 | main.rs:436:9:436:13 | i | | -| main.rs:437:5:439:6 | let ... = ... | main.rs:437:17:439:5 | { ... } | | -| main.rs:437:9:437:13 | block | main.rs:441:5:441:16 | ExprStmt | match | -| main.rs:437:17:439:5 | enter { ... } | main.rs:438:9:438:14 | ExprStmt | | -| main.rs:437:17:439:5 | exit { ... } (normal) | main.rs:437:17:439:5 | exit { ... } | | -| main.rs:437:17:439:5 | { ... } | main.rs:437:9:437:13 | block | | -| main.rs:438:9:438:9 | i | main.rs:438:13:438:13 | 1 | | -| main.rs:438:9:438:13 | ... = ... | main.rs:437:17:439:5 | exit { ... } (normal) | | -| main.rs:438:9:438:14 | ExprStmt | main.rs:438:9:438:9 | i | | -| main.rs:438:13:438:13 | 1 | main.rs:438:9:438:13 | ... = ... | | -| main.rs:441:5:441:9 | block | main.rs:441:5:441:15 | await block | | -| main.rs:441:5:441:15 | await block | main.rs:442:5:442:17 | ExprStmt | | -| main.rs:441:5:441:16 | ExprStmt | main.rs:441:5:441:9 | block | | -| main.rs:442:5:442:13 | print_i64 | main.rs:442:15:442:15 | i | | -| main.rs:442:5:442:16 | print_i64(...) | main.rs:435:32:443:1 | { ... } | | -| main.rs:442:5:442:17 | ExprStmt | main.rs:442:5:442:13 | print_i64 | | -| main.rs:442:15:442:15 | i | main.rs:442:5:442:16 | print_i64(...) | | -| main.rs:445:1:459:1 | enter fn phi | main.rs:445:8:445:8 | b | | -| main.rs:445:1:459:1 | exit fn phi (normal) | main.rs:445:1:459:1 | exit fn phi | | -| main.rs:445:8:445:8 | b | main.rs:445:8:445:15 | ...: bool | match | -| main.rs:445:8:445:15 | ...: bool | main.rs:446:5:446:18 | let ... = 1 | | -| main.rs:445:18:459:1 | { ... } | main.rs:445:1:459:1 | exit fn phi (normal) | | -| main.rs:446:5:446:18 | let ... = 1 | main.rs:446:17:446:17 | 1 | | -| main.rs:446:9:446:13 | x | main.rs:447:5:447:17 | ExprStmt | match | -| main.rs:446:17:446:17 | 1 | main.rs:446:9:446:13 | x | | -| main.rs:447:5:447:13 | print_i64 | main.rs:447:15:447:15 | x | | -| main.rs:447:5:447:16 | print_i64(...) | main.rs:448:5:448:21 | ExprStmt | | -| main.rs:447:5:447:17 | ExprStmt | main.rs:447:5:447:13 | print_i64 | | -| main.rs:447:15:447:15 | x | main.rs:447:5:447:16 | print_i64(...) | | -| main.rs:448:5:448:13 | print_i64 | main.rs:448:15:448:15 | x | | -| main.rs:448:5:448:20 | print_i64(...) | main.rs:449:5:457:5 | ExprStmt | | -| main.rs:448:5:448:21 | ExprStmt | main.rs:448:5:448:13 | print_i64 | | -| main.rs:448:15:448:15 | x | main.rs:448:19:448:19 | 1 | | -| main.rs:448:15:448:19 | ... + ... | main.rs:448:5:448:20 | print_i64(...) | | -| main.rs:448:19:448:19 | 1 | main.rs:448:15:448:19 | ... + ... | | -| main.rs:449:5:457:5 | ExprStmt | main.rs:449:8:449:8 | b | | -| main.rs:449:5:457:5 | if b {...} else {...} | main.rs:458:5:458:17 | ExprStmt | | -| main.rs:449:8:449:8 | b | main.rs:450:9:450:14 | ExprStmt | true | -| main.rs:449:8:449:8 | b | main.rs:454:9:454:14 | ExprStmt | false | -| main.rs:449:10:453:5 | { ... } | main.rs:449:5:457:5 | if b {...} else {...} | | -| main.rs:450:9:450:9 | x | main.rs:450:13:450:13 | 2 | | -| main.rs:450:9:450:13 | ... = ... | main.rs:451:9:451:21 | ExprStmt | | -| main.rs:450:9:450:14 | ExprStmt | main.rs:450:9:450:9 | x | | -| main.rs:450:13:450:13 | 2 | main.rs:450:9:450:13 | ... = ... | | -| main.rs:451:9:451:17 | print_i64 | main.rs:451:19:451:19 | x | | -| main.rs:451:9:451:20 | print_i64(...) | main.rs:452:9:452:25 | ExprStmt | | -| main.rs:451:9:451:21 | ExprStmt | main.rs:451:9:451:17 | print_i64 | | -| main.rs:451:19:451:19 | x | main.rs:451:9:451:20 | print_i64(...) | | -| main.rs:452:9:452:17 | print_i64 | main.rs:452:19:452:19 | x | | -| main.rs:452:9:452:24 | print_i64(...) | main.rs:449:10:453:5 | { ... } | | -| main.rs:452:9:452:25 | ExprStmt | main.rs:452:9:452:17 | print_i64 | | -| main.rs:452:19:452:19 | x | main.rs:452:23:452:23 | 1 | | -| main.rs:452:19:452:23 | ... + ... | main.rs:452:9:452:24 | print_i64(...) | | -| main.rs:452:23:452:23 | 1 | main.rs:452:19:452:23 | ... + ... | | -| main.rs:453:12:457:5 | { ... } | main.rs:449:5:457:5 | if b {...} else {...} | | -| main.rs:454:9:454:9 | x | main.rs:454:13:454:13 | 3 | | -| main.rs:454:9:454:13 | ... = ... | main.rs:455:9:455:21 | ExprStmt | | -| main.rs:454:9:454:14 | ExprStmt | main.rs:454:9:454:9 | x | | -| main.rs:454:13:454:13 | 3 | main.rs:454:9:454:13 | ... = ... | | -| main.rs:455:9:455:17 | print_i64 | main.rs:455:19:455:19 | x | | -| main.rs:455:9:455:20 | print_i64(...) | main.rs:456:9:456:25 | ExprStmt | | -| main.rs:455:9:455:21 | ExprStmt | main.rs:455:9:455:17 | print_i64 | | -| main.rs:455:19:455:19 | x | main.rs:455:9:455:20 | print_i64(...) | | -| main.rs:456:9:456:17 | print_i64 | main.rs:456:19:456:19 | x | | -| main.rs:456:9:456:24 | print_i64(...) | main.rs:453:12:457:5 | { ... } | | -| main.rs:456:9:456:25 | ExprStmt | main.rs:456:9:456:17 | print_i64 | | -| main.rs:456:19:456:19 | x | main.rs:456:23:456:23 | 1 | | -| main.rs:456:19:456:23 | ... + ... | main.rs:456:9:456:24 | print_i64(...) | | -| main.rs:456:23:456:23 | 1 | main.rs:456:19:456:23 | ... + ... | | -| main.rs:458:5:458:13 | print_i64 | main.rs:458:15:458:15 | x | | -| main.rs:458:5:458:16 | print_i64(...) | main.rs:445:18:459:1 | { ... } | | -| main.rs:458:5:458:17 | ExprStmt | main.rs:458:5:458:13 | print_i64 | | -| main.rs:458:15:458:15 | x | main.rs:458:5:458:16 | print_i64(...) | | -| main.rs:461:1:474:1 | enter fn phi_read | main.rs:461:13:461:14 | b1 | | -| main.rs:461:1:474:1 | exit fn phi_read (normal) | main.rs:461:1:474:1 | exit fn phi_read | | -| main.rs:461:13:461:14 | b1 | main.rs:461:13:461:21 | ...: bool | match | -| main.rs:461:13:461:21 | ...: bool | main.rs:461:24:461:25 | b2 | | -| main.rs:461:24:461:25 | b2 | main.rs:461:24:461:32 | ...: bool | match | -| main.rs:461:24:461:32 | ...: bool | main.rs:462:5:462:14 | let ... = 1 | | -| main.rs:461:35:474:1 | { ... } | main.rs:461:1:474:1 | exit fn phi_read (normal) | | -| main.rs:462:5:462:14 | let ... = 1 | main.rs:462:13:462:13 | 1 | | -| main.rs:462:9:462:9 | x | main.rs:463:5:467:5 | ExprStmt | match | -| main.rs:462:13:462:13 | 1 | main.rs:462:9:462:9 | x | | -| main.rs:463:5:467:5 | ExprStmt | main.rs:463:8:463:9 | b1 | | -| main.rs:463:5:467:5 | if b1 {...} else {...} | main.rs:469:8:469:9 | b2 | | -| main.rs:463:8:463:9 | b1 | main.rs:464:9:464:21 | ExprStmt | true | -| main.rs:463:8:463:9 | b1 | main.rs:466:9:466:21 | ExprStmt | false | -| main.rs:463:11:465:5 | { ... } | main.rs:463:5:467:5 | if b1 {...} else {...} | | -| main.rs:464:9:464:17 | print_i64 | main.rs:464:19:464:19 | x | | -| main.rs:464:9:464:20 | print_i64(...) | main.rs:463:11:465:5 | { ... } | | -| main.rs:464:9:464:21 | ExprStmt | main.rs:464:9:464:17 | print_i64 | | -| main.rs:464:19:464:19 | x | main.rs:464:9:464:20 | print_i64(...) | | -| main.rs:465:12:467:5 | { ... } | main.rs:463:5:467:5 | if b1 {...} else {...} | | -| main.rs:466:9:466:17 | print_i64 | main.rs:466:19:466:19 | x | | -| main.rs:466:9:466:20 | print_i64(...) | main.rs:465:12:467:5 | { ... } | | -| main.rs:466:9:466:21 | ExprStmt | main.rs:466:9:466:17 | print_i64 | | -| main.rs:466:19:466:19 | x | main.rs:466:9:466:20 | print_i64(...) | | -| main.rs:469:5:473:5 | if b2 {...} else {...} | main.rs:461:35:474:1 | { ... } | | -| main.rs:469:8:469:9 | b2 | main.rs:470:9:470:21 | ExprStmt | true | -| main.rs:469:8:469:9 | b2 | main.rs:472:9:472:21 | ExprStmt | false | -| main.rs:469:11:471:5 | { ... } | main.rs:469:5:473:5 | if b2 {...} else {...} | | -| main.rs:470:9:470:17 | print_i64 | main.rs:470:19:470:19 | x | | -| main.rs:470:9:470:20 | print_i64(...) | main.rs:469:11:471:5 | { ... } | | -| main.rs:470:9:470:21 | ExprStmt | main.rs:470:9:470:17 | print_i64 | | -| main.rs:470:19:470:19 | x | main.rs:470:9:470:20 | print_i64(...) | | -| main.rs:471:12:473:5 | { ... } | main.rs:469:5:473:5 | if b2 {...} else {...} | | -| main.rs:472:9:472:17 | print_i64 | main.rs:472:19:472:19 | x | | -| main.rs:472:9:472:20 | print_i64(...) | main.rs:471:12:473:5 | { ... } | | -| main.rs:472:9:472:21 | ExprStmt | main.rs:472:9:472:17 | print_i64 | | -| main.rs:472:19:472:19 | x | main.rs:472:9:472:20 | print_i64(...) | | -| main.rs:482:5:484:5 | enter fn my_get | main.rs:482:20:482:23 | self | | -| main.rs:482:5:484:5 | exit fn my_get (normal) | main.rs:482:5:484:5 | exit fn my_get | | -| main.rs:482:15:482:23 | SelfParam | main.rs:483:9:483:24 | ExprStmt | | -| main.rs:482:20:482:23 | self | main.rs:482:15:482:23 | SelfParam | | -| main.rs:483:9:483:23 | return ... | main.rs:482:5:484:5 | exit fn my_get (normal) | return | -| main.rs:483:9:483:24 | ExprStmt | main.rs:483:16:483:19 | self | | -| main.rs:483:16:483:19 | self | main.rs:483:16:483:23 | self.val | | -| main.rs:483:16:483:23 | self.val | main.rs:483:9:483:23 | return ... | | -| main.rs:486:5:488:5 | enter fn id | main.rs:486:11:486:14 | self | | -| main.rs:486:5:488:5 | exit fn id (normal) | main.rs:486:5:488:5 | exit fn id | | -| main.rs:486:11:486:14 | SelfParam | main.rs:487:9:487:12 | self | | -| main.rs:486:11:486:14 | self | main.rs:486:11:486:14 | SelfParam | | -| main.rs:486:25:488:5 | { ... } | main.rs:486:5:488:5 | exit fn id (normal) | | -| main.rs:487:9:487:12 | self | main.rs:486:25:488:5 | { ... } | | -| main.rs:490:5:497:5 | enter fn my_method | main.rs:490:23:490:26 | self | | -| main.rs:490:5:497:5 | exit fn my_method (normal) | main.rs:490:5:497:5 | exit fn my_method | | -| main.rs:490:18:490:26 | SelfParam | main.rs:491:9:494:10 | let ... = ... | | -| main.rs:490:23:490:26 | self | main.rs:490:18:490:26 | SelfParam | | -| main.rs:490:29:497:5 | { ... } | main.rs:490:5:497:5 | exit fn my_method (normal) | | -| main.rs:491:9:494:10 | let ... = ... | main.rs:491:21:494:9 | \|...\| ... | | -| main.rs:491:13:491:17 | f | main.rs:495:9:495:13 | ExprStmt | match | -| main.rs:491:21:494:9 | \|...\| ... | main.rs:491:13:491:17 | f | | -| main.rs:491:21:494:9 | enter \|...\| ... | main.rs:491:22:491:22 | n | | -| main.rs:491:21:494:9 | exit \|...\| ... (normal) | main.rs:491:21:494:9 | exit \|...\| ... | | -| main.rs:491:22:491:22 | ... | main.rs:493:13:493:26 | ExprStmt | | -| main.rs:491:22:491:22 | n | main.rs:491:22:491:22 | ... | match | -| main.rs:491:25:494:9 | { ... } | main.rs:491:21:494:9 | exit \|...\| ... (normal) | | -| main.rs:493:13:493:16 | self | main.rs:493:13:493:20 | self.val | | -| main.rs:493:13:493:20 | self.val | main.rs:493:25:493:25 | n | | -| main.rs:493:13:493:25 | ... += ... | main.rs:491:25:494:9 | { ... } | | -| main.rs:493:13:493:26 | ExprStmt | main.rs:493:13:493:16 | self | | -| main.rs:493:25:493:25 | n | main.rs:493:13:493:25 | ... += ... | | -| main.rs:495:9:495:9 | f | main.rs:495:11:495:11 | 3 | | -| main.rs:495:9:495:12 | f(...) | main.rs:496:9:496:13 | ExprStmt | | -| main.rs:495:9:495:13 | ExprStmt | main.rs:495:9:495:9 | f | | -| main.rs:495:11:495:11 | 3 | main.rs:495:9:495:12 | f(...) | | -| main.rs:496:9:496:9 | f | main.rs:496:11:496:11 | 4 | | -| main.rs:496:9:496:12 | f(...) | main.rs:490:29:497:5 | { ... } | | -| main.rs:496:9:496:13 | ExprStmt | main.rs:496:9:496:9 | f | | -| main.rs:496:11:496:11 | 4 | main.rs:496:9:496:12 | f(...) | | -| main.rs:500:1:507:1 | enter fn structs | main.rs:501:5:501:36 | let ... = ... | | -| main.rs:500:1:507:1 | exit fn structs (normal) | main.rs:500:1:507:1 | exit fn structs | | -| main.rs:500:14:507:1 | { ... } | main.rs:500:1:507:1 | exit fn structs (normal) | | -| main.rs:501:5:501:36 | let ... = ... | main.rs:501:33:501:33 | 1 | | -| main.rs:501:9:501:13 | a | main.rs:502:5:502:26 | ExprStmt | match | -| main.rs:501:17:501:35 | MyStruct {...} | main.rs:501:9:501:13 | a | | -| main.rs:501:33:501:33 | 1 | main.rs:501:17:501:35 | MyStruct {...} | | -| main.rs:502:5:502:13 | print_i64 | main.rs:502:15:502:15 | a | | -| main.rs:502:5:502:25 | print_i64(...) | main.rs:503:5:503:14 | ExprStmt | | -| main.rs:502:5:502:26 | ExprStmt | main.rs:502:5:502:13 | print_i64 | | -| main.rs:502:15:502:15 | a | main.rs:502:15:502:24 | a.my_get(...) | | -| main.rs:502:15:502:24 | a.my_get(...) | main.rs:502:5:502:25 | print_i64(...) | | -| main.rs:503:5:503:5 | a | main.rs:503:5:503:9 | a.val | | -| main.rs:503:5:503:9 | a.val | main.rs:503:13:503:13 | 5 | | -| main.rs:503:5:503:13 | ... = ... | main.rs:504:5:504:26 | ExprStmt | | -| main.rs:503:5:503:14 | ExprStmt | main.rs:503:5:503:5 | a | | -| main.rs:503:13:503:13 | 5 | main.rs:503:5:503:13 | ... = ... | | -| main.rs:504:5:504:13 | print_i64 | main.rs:504:15:504:15 | a | | -| main.rs:504:5:504:25 | print_i64(...) | main.rs:505:5:505:28 | ExprStmt | | -| main.rs:504:5:504:26 | ExprStmt | main.rs:504:5:504:13 | print_i64 | | -| main.rs:504:15:504:15 | a | main.rs:504:15:504:24 | a.my_get(...) | | -| main.rs:504:15:504:24 | a.my_get(...) | main.rs:504:5:504:25 | print_i64(...) | | -| main.rs:505:5:505:5 | a | main.rs:505:25:505:25 | 2 | | -| main.rs:505:5:505:27 | ... = ... | main.rs:506:5:506:26 | ExprStmt | | -| main.rs:505:5:505:28 | ExprStmt | main.rs:505:5:505:5 | a | | -| main.rs:505:9:505:27 | MyStruct {...} | main.rs:505:5:505:27 | ... = ... | | -| main.rs:505:25:505:25 | 2 | main.rs:505:9:505:27 | MyStruct {...} | | -| main.rs:506:5:506:13 | print_i64 | main.rs:506:15:506:15 | a | | -| main.rs:506:5:506:25 | print_i64(...) | main.rs:500:14:507:1 | { ... } | | -| main.rs:506:5:506:26 | ExprStmt | main.rs:506:5:506:13 | print_i64 | | -| main.rs:506:15:506:15 | a | main.rs:506:15:506:24 | a.my_get(...) | | -| main.rs:506:15:506:24 | a.my_get(...) | main.rs:506:5:506:25 | print_i64(...) | | -| main.rs:509:1:516:1 | enter fn arrays | main.rs:510:5:510:26 | let ... = ... | | -| main.rs:509:1:516:1 | exit fn arrays (normal) | main.rs:509:1:516:1 | exit fn arrays | | -| main.rs:509:13:516:1 | { ... } | main.rs:509:1:516:1 | exit fn arrays (normal) | | -| main.rs:510:5:510:26 | let ... = ... | main.rs:510:18:510:18 | 1 | | -| main.rs:510:9:510:13 | a | main.rs:511:5:511:20 | ExprStmt | match | -| main.rs:510:17:510:25 | [...] | main.rs:510:9:510:13 | a | | -| main.rs:510:18:510:18 | 1 | main.rs:510:21:510:21 | 2 | | -| main.rs:510:21:510:21 | 2 | main.rs:510:24:510:24 | 3 | | -| main.rs:510:24:510:24 | 3 | main.rs:510:17:510:25 | [...] | | -| main.rs:511:5:511:13 | print_i64 | main.rs:511:15:511:15 | a | | -| main.rs:511:5:511:19 | print_i64(...) | main.rs:512:5:512:13 | ExprStmt | | -| main.rs:511:5:511:20 | ExprStmt | main.rs:511:5:511:13 | print_i64 | | -| main.rs:511:15:511:15 | a | main.rs:511:17:511:17 | 0 | | -| main.rs:511:15:511:18 | a[0] | main.rs:511:5:511:19 | print_i64(...) | | -| main.rs:511:17:511:17 | 0 | main.rs:511:15:511:18 | a[0] | | -| main.rs:512:5:512:5 | a | main.rs:512:7:512:7 | 1 | | -| main.rs:512:5:512:8 | a[1] | main.rs:512:12:512:12 | 5 | | -| main.rs:512:5:512:12 | ... = ... | main.rs:513:5:513:20 | ExprStmt | | -| main.rs:512:5:512:13 | ExprStmt | main.rs:512:5:512:5 | a | | -| main.rs:512:7:512:7 | 1 | main.rs:512:5:512:8 | a[1] | | -| main.rs:512:12:512:12 | 5 | main.rs:512:5:512:12 | ... = ... | | -| main.rs:513:5:513:13 | print_i64 | main.rs:513:15:513:15 | a | | -| main.rs:513:5:513:19 | print_i64(...) | main.rs:514:5:514:18 | ExprStmt | | -| main.rs:513:5:513:20 | ExprStmt | main.rs:513:5:513:13 | print_i64 | | -| main.rs:513:15:513:15 | a | main.rs:513:17:513:17 | 1 | | -| main.rs:513:15:513:18 | a[1] | main.rs:513:5:513:19 | print_i64(...) | | -| main.rs:513:17:513:17 | 1 | main.rs:513:15:513:18 | a[1] | | -| main.rs:514:5:514:5 | a | main.rs:514:10:514:10 | 4 | | -| main.rs:514:5:514:17 | ... = ... | main.rs:515:5:515:20 | ExprStmt | | -| main.rs:514:5:514:18 | ExprStmt | main.rs:514:5:514:5 | a | | -| main.rs:514:9:514:17 | [...] | main.rs:514:5:514:17 | ... = ... | | -| main.rs:514:10:514:10 | 4 | main.rs:514:13:514:13 | 5 | | -| main.rs:514:13:514:13 | 5 | main.rs:514:16:514:16 | 6 | | -| main.rs:514:16:514:16 | 6 | main.rs:514:9:514:17 | [...] | | -| main.rs:515:5:515:13 | print_i64 | main.rs:515:15:515:15 | a | | -| main.rs:515:5:515:19 | print_i64(...) | main.rs:509:13:516:1 | { ... } | | -| main.rs:515:5:515:20 | ExprStmt | main.rs:515:5:515:13 | print_i64 | | -| main.rs:515:15:515:15 | a | main.rs:515:17:515:17 | 2 | | -| main.rs:515:15:515:18 | a[2] | main.rs:515:5:515:19 | print_i64(...) | | -| main.rs:515:17:515:17 | 2 | main.rs:515:15:515:18 | a[2] | | -| main.rs:518:1:525:1 | enter fn ref_arg | main.rs:519:5:519:15 | let ... = 16 | | -| main.rs:518:1:525:1 | exit fn ref_arg (normal) | main.rs:518:1:525:1 | exit fn ref_arg | | -| main.rs:518:14:525:1 | { ... } | main.rs:518:1:525:1 | exit fn ref_arg (normal) | | -| main.rs:519:5:519:15 | let ... = 16 | main.rs:519:13:519:14 | 16 | | -| main.rs:519:9:519:9 | x | main.rs:520:5:520:22 | ExprStmt | match | -| main.rs:519:13:519:14 | 16 | main.rs:519:9:519:9 | x | | -| main.rs:520:5:520:17 | print_i64_ref | main.rs:520:20:520:20 | x | | -| main.rs:520:5:520:21 | print_i64_ref(...) | main.rs:521:5:521:17 | ExprStmt | | -| main.rs:520:5:520:22 | ExprStmt | main.rs:520:5:520:17 | print_i64_ref | | -| main.rs:520:19:520:20 | &x | main.rs:520:5:520:21 | print_i64_ref(...) | | -| main.rs:520:20:520:20 | x | main.rs:520:19:520:20 | &x | | -| main.rs:521:5:521:13 | print_i64 | main.rs:521:15:521:15 | x | | -| main.rs:521:5:521:16 | print_i64(...) | main.rs:523:5:523:15 | let ... = 17 | | -| main.rs:521:5:521:17 | ExprStmt | main.rs:521:5:521:13 | print_i64 | | -| main.rs:521:15:521:15 | x | main.rs:521:5:521:16 | print_i64(...) | | -| main.rs:523:5:523:15 | let ... = 17 | main.rs:523:13:523:14 | 17 | | -| main.rs:523:9:523:9 | z | main.rs:524:5:524:22 | ExprStmt | match | -| main.rs:523:13:523:14 | 17 | main.rs:523:9:523:9 | z | | -| main.rs:524:5:524:17 | print_i64_ref | main.rs:524:20:524:20 | z | | -| main.rs:524:5:524:21 | print_i64_ref(...) | main.rs:518:14:525:1 | { ... } | | -| main.rs:524:5:524:22 | ExprStmt | main.rs:524:5:524:17 | print_i64_ref | | -| main.rs:524:19:524:20 | &z | main.rs:524:5:524:21 | print_i64_ref(...) | | -| main.rs:524:20:524:20 | z | main.rs:524:19:524:20 | &z | | -| main.rs:532:3:534:3 | enter fn bar | main.rs:532:15:532:18 | self | | -| main.rs:532:3:534:3 | exit fn bar (normal) | main.rs:532:3:534:3 | exit fn bar | | -| main.rs:532:10:532:18 | SelfParam | main.rs:533:5:533:32 | ExprStmt | | -| main.rs:532:15:532:18 | self | main.rs:532:10:532:18 | SelfParam | | -| main.rs:532:21:534:3 | { ... } | main.rs:532:3:534:3 | exit fn bar (normal) | | -| main.rs:533:5:533:9 | * ... | main.rs:533:29:533:29 | 3 | | -| main.rs:533:5:533:31 | ... = ... | main.rs:532:21:534:3 | { ... } | | -| main.rs:533:5:533:32 | ExprStmt | main.rs:533:6:533:9 | self | | -| main.rs:533:6:533:9 | self | main.rs:533:5:533:9 | * ... | | -| main.rs:533:13:533:31 | MyStruct {...} | main.rs:533:5:533:31 | ... = ... | | -| main.rs:533:29:533:29 | 3 | main.rs:533:13:533:31 | MyStruct {...} | | -| main.rs:537:1:542:1 | enter fn ref_methodcall_receiver | main.rs:538:3:538:34 | let ... = ... | | -| main.rs:537:1:542:1 | exit fn ref_methodcall_receiver (normal) | main.rs:537:1:542:1 | exit fn ref_methodcall_receiver | | -| main.rs:537:30:542:1 | { ... } | main.rs:537:1:542:1 | exit fn ref_methodcall_receiver (normal) | | -| main.rs:538:3:538:34 | let ... = ... | main.rs:538:31:538:31 | 1 | | -| main.rs:538:7:538:11 | a | main.rs:539:3:539:10 | ExprStmt | match | -| main.rs:538:15:538:33 | MyStruct {...} | main.rs:538:7:538:11 | a | | -| main.rs:538:31:538:31 | 1 | main.rs:538:15:538:33 | MyStruct {...} | | -| main.rs:539:3:539:3 | a | main.rs:539:3:539:9 | a.bar(...) | | -| main.rs:539:3:539:9 | a.bar(...) | main.rs:541:3:541:19 | ExprStmt | | -| main.rs:539:3:539:10 | ExprStmt | main.rs:539:3:539:3 | a | | -| main.rs:541:3:541:11 | print_i64 | main.rs:541:13:541:13 | a | | -| main.rs:541:3:541:18 | print_i64(...) | main.rs:537:30:542:1 | { ... } | | -| main.rs:541:3:541:19 | ExprStmt | main.rs:541:3:541:11 | print_i64 | | -| main.rs:541:13:541:13 | a | main.rs:541:13:541:17 | a.val | | -| main.rs:541:13:541:17 | a.val | main.rs:541:3:541:18 | print_i64(...) | | -| main.rs:562:1:572:1 | enter fn macro_invocation | main.rs:563:5:564:26 | let ... = ... | | -| main.rs:562:1:572:1 | exit fn macro_invocation (normal) | main.rs:562:1:572:1 | exit fn macro_invocation | | -| main.rs:562:23:572:1 | { ... } | main.rs:562:1:572:1 | exit fn macro_invocation (normal) | | -| main.rs:563:5:564:26 | let ... = ... | main.rs:564:23:564:24 | let ... = 37 | | -| main.rs:563:9:563:22 | var_from_macro | main.rs:565:5:565:30 | ExprStmt | match | -| main.rs:564:9:564:25 | MacroExpr | main.rs:563:9:563:22 | var_from_macro | | -| main.rs:564:9:564:25 | let_in_macro!... | main.rs:564:9:564:25 | MacroExpr | | -| main.rs:564:9:564:25 | var_in_macro | main.rs:564:9:564:25 | var_in_macro | match | -| main.rs:564:9:564:25 | var_in_macro | main.rs:564:23:564:24 | { ... } | | -| main.rs:564:23:564:24 | 37 | main.rs:564:9:564:25 | var_in_macro | | -| main.rs:564:23:564:24 | let ... = 37 | main.rs:564:23:564:24 | 37 | | -| main.rs:564:23:564:24 | { ... } | main.rs:564:9:564:25 | let_in_macro!... | | -| main.rs:565:5:565:13 | print_i64 | main.rs:565:15:565:28 | var_from_macro | | -| main.rs:565:5:565:29 | print_i64(...) | main.rs:566:5:566:26 | let ... = 33 | | -| main.rs:565:5:565:30 | ExprStmt | main.rs:565:5:565:13 | print_i64 | | -| main.rs:565:15:565:28 | var_from_macro | main.rs:565:5:565:29 | print_i64(...) | | -| main.rs:566:5:566:26 | let ... = 33 | main.rs:566:24:566:25 | 33 | | -| main.rs:566:9:566:20 | var_in_macro | main.rs:570:5:570:44 | ExprStmt | match | -| main.rs:566:24:566:25 | 33 | main.rs:566:9:566:20 | var_in_macro | | -| main.rs:570:5:570:13 | print_i64 | main.rs:570:15:570:42 | let ... = 0 | | -| main.rs:570:5:570:43 | print_i64(...) | main.rs:571:5:571:28 | ExprStmt | | -| main.rs:570:5:570:44 | ExprStmt | main.rs:570:5:570:13 | print_i64 | | -| main.rs:570:15:570:42 | 0 | main.rs:570:15:570:42 | var_in_macro | | -| main.rs:570:15:570:42 | MacroExpr | main.rs:570:5:570:43 | print_i64(...) | | -| main.rs:570:15:570:42 | let ... = 0 | main.rs:570:15:570:42 | 0 | | -| main.rs:570:15:570:42 | let_in_macro2!... | main.rs:570:15:570:42 | MacroExpr | | -| main.rs:570:15:570:42 | var_in_macro | main.rs:570:30:570:41 | var_in_macro | match | -| main.rs:570:30:570:41 | var_in_macro | main.rs:570:30:570:41 | { ... } | | -| main.rs:570:30:570:41 | { ... } | main.rs:570:15:570:42 | let_in_macro2!... | | -| main.rs:571:5:571:13 | print_i64 | main.rs:571:15:571:26 | var_in_macro | | -| main.rs:571:5:571:27 | print_i64(...) | main.rs:562:23:572:1 | { ... } | | -| main.rs:571:5:571:28 | ExprStmt | main.rs:571:5:571:13 | print_i64 | | -| main.rs:571:15:571:26 | var_in_macro | main.rs:571:5:571:27 | print_i64(...) | | -| main.rs:574:1:609:1 | enter fn main | main.rs:575:5:575:25 | ExprStmt | | -| main.rs:574:1:609:1 | exit fn main (normal) | main.rs:574:1:609:1 | exit fn main | | -| main.rs:574:11:609:1 | { ... } | main.rs:574:1:609:1 | exit fn main (normal) | | -| main.rs:575:5:575:22 | immutable_variable | main.rs:575:5:575:24 | immutable_variable(...) | | -| main.rs:575:5:575:24 | immutable_variable(...) | main.rs:576:5:576:23 | ExprStmt | | -| main.rs:575:5:575:25 | ExprStmt | main.rs:575:5:575:22 | immutable_variable | | -| main.rs:576:5:576:20 | mutable_variable | main.rs:576:5:576:22 | mutable_variable(...) | | -| main.rs:576:5:576:22 | mutable_variable(...) | main.rs:577:5:577:40 | ExprStmt | | -| main.rs:576:5:576:23 | ExprStmt | main.rs:576:5:576:20 | mutable_variable | | -| main.rs:577:5:577:37 | mutable_variable_immutable_borrow | main.rs:577:5:577:39 | mutable_variable_immutable_borrow(...) | | -| main.rs:577:5:577:39 | mutable_variable_immutable_borrow(...) | main.rs:578:5:578:23 | ExprStmt | | -| main.rs:577:5:577:40 | ExprStmt | main.rs:577:5:577:37 | mutable_variable_immutable_borrow | | -| main.rs:578:5:578:20 | variable_shadow1 | main.rs:578:5:578:22 | variable_shadow1(...) | | -| main.rs:578:5:578:22 | variable_shadow1(...) | main.rs:579:5:579:23 | ExprStmt | | -| main.rs:578:5:578:23 | ExprStmt | main.rs:578:5:578:20 | variable_shadow1 | | -| main.rs:579:5:579:20 | variable_shadow2 | main.rs:579:5:579:22 | variable_shadow2(...) | | -| main.rs:579:5:579:22 | variable_shadow2(...) | main.rs:580:5:580:19 | ExprStmt | | -| main.rs:579:5:579:23 | ExprStmt | main.rs:579:5:579:20 | variable_shadow2 | | -| main.rs:580:5:580:16 | let_pattern1 | main.rs:580:5:580:18 | let_pattern1(...) | | -| main.rs:580:5:580:18 | let_pattern1(...) | main.rs:581:5:581:19 | ExprStmt | | -| main.rs:580:5:580:19 | ExprStmt | main.rs:580:5:580:16 | let_pattern1 | | -| main.rs:581:5:581:16 | let_pattern2 | main.rs:581:5:581:18 | let_pattern2(...) | | -| main.rs:581:5:581:18 | let_pattern2(...) | main.rs:582:5:582:19 | ExprStmt | | -| main.rs:581:5:581:19 | ExprStmt | main.rs:581:5:581:16 | let_pattern2 | | -| main.rs:582:5:582:16 | let_pattern3 | main.rs:582:5:582:18 | let_pattern3(...) | | -| main.rs:582:5:582:18 | let_pattern3(...) | main.rs:583:5:583:19 | ExprStmt | | -| main.rs:582:5:582:19 | ExprStmt | main.rs:582:5:582:16 | let_pattern3 | | -| main.rs:583:5:583:16 | let_pattern4 | main.rs:583:5:583:18 | let_pattern4(...) | | -| main.rs:583:5:583:18 | let_pattern4(...) | main.rs:584:5:584:21 | ExprStmt | | -| main.rs:583:5:583:19 | ExprStmt | main.rs:583:5:583:16 | let_pattern4 | | -| main.rs:584:5:584:18 | match_pattern1 | main.rs:584:5:584:20 | match_pattern1(...) | | -| main.rs:584:5:584:20 | match_pattern1(...) | main.rs:585:5:585:21 | ExprStmt | | -| main.rs:584:5:584:21 | ExprStmt | main.rs:584:5:584:18 | match_pattern1 | | -| main.rs:585:5:585:18 | match_pattern2 | main.rs:585:5:585:20 | match_pattern2(...) | | -| main.rs:585:5:585:20 | match_pattern2(...) | main.rs:586:5:586:21 | ExprStmt | | -| main.rs:585:5:585:21 | ExprStmt | main.rs:585:5:585:18 | match_pattern2 | | -| main.rs:586:5:586:18 | match_pattern3 | main.rs:586:5:586:20 | match_pattern3(...) | | -| main.rs:586:5:586:20 | match_pattern3(...) | main.rs:587:5:587:21 | ExprStmt | | -| main.rs:586:5:586:21 | ExprStmt | main.rs:586:5:586:18 | match_pattern3 | | -| main.rs:587:5:587:18 | match_pattern4 | main.rs:587:5:587:20 | match_pattern4(...) | | -| main.rs:587:5:587:20 | match_pattern4(...) | main.rs:588:5:588:21 | ExprStmt | | -| main.rs:587:5:587:21 | ExprStmt | main.rs:587:5:587:18 | match_pattern4 | | -| main.rs:588:5:588:18 | match_pattern5 | main.rs:588:5:588:20 | match_pattern5(...) | | -| main.rs:588:5:588:20 | match_pattern5(...) | main.rs:589:5:589:21 | ExprStmt | | -| main.rs:588:5:588:21 | ExprStmt | main.rs:588:5:588:18 | match_pattern5 | | -| main.rs:589:5:589:18 | match_pattern6 | main.rs:589:5:589:20 | match_pattern6(...) | | -| main.rs:589:5:589:20 | match_pattern6(...) | main.rs:590:5:590:21 | ExprStmt | | -| main.rs:589:5:589:21 | ExprStmt | main.rs:589:5:589:18 | match_pattern6 | | -| main.rs:590:5:590:18 | match_pattern7 | main.rs:590:5:590:20 | match_pattern7(...) | | -| main.rs:590:5:590:20 | match_pattern7(...) | main.rs:591:5:591:21 | ExprStmt | | -| main.rs:590:5:590:21 | ExprStmt | main.rs:590:5:590:18 | match_pattern7 | | -| main.rs:591:5:591:18 | match_pattern8 | main.rs:591:5:591:20 | match_pattern8(...) | | -| main.rs:591:5:591:20 | match_pattern8(...) | main.rs:592:5:592:21 | ExprStmt | | -| main.rs:591:5:591:21 | ExprStmt | main.rs:591:5:591:18 | match_pattern8 | | -| main.rs:592:5:592:18 | match_pattern9 | main.rs:592:5:592:20 | match_pattern9(...) | | -| main.rs:592:5:592:20 | match_pattern9(...) | main.rs:593:5:593:36 | ExprStmt | | -| main.rs:592:5:592:21 | ExprStmt | main.rs:592:5:592:18 | match_pattern9 | | -| main.rs:593:5:593:18 | param_pattern1 | main.rs:593:20:593:22 | "a" | | -| main.rs:593:5:593:35 | param_pattern1(...) | main.rs:594:5:594:37 | ExprStmt | | -| main.rs:593:5:593:36 | ExprStmt | main.rs:593:5:593:18 | param_pattern1 | | -| main.rs:593:20:593:22 | "a" | main.rs:593:26:593:28 | "b" | | -| main.rs:593:25:593:34 | TupleExpr | main.rs:593:5:593:35 | param_pattern1(...) | | -| main.rs:593:26:593:28 | "b" | main.rs:593:31:593:33 | "c" | | -| main.rs:593:31:593:33 | "c" | main.rs:593:25:593:34 | TupleExpr | | -| main.rs:594:5:594:18 | param_pattern2 | main.rs:594:20:594:31 | ...::Left | | -| main.rs:594:5:594:36 | param_pattern2(...) | main.rs:595:5:595:26 | ExprStmt | | -| main.rs:594:5:594:37 | ExprStmt | main.rs:594:5:594:18 | param_pattern2 | | -| main.rs:594:20:594:31 | ...::Left | main.rs:594:33:594:34 | 45 | | -| main.rs:594:20:594:35 | ...::Left(...) | main.rs:594:5:594:36 | param_pattern2(...) | | -| main.rs:594:33:594:34 | 45 | main.rs:594:20:594:35 | ...::Left(...) | | -| main.rs:595:5:595:23 | destruct_assignment | main.rs:595:5:595:25 | destruct_assignment(...) | | -| main.rs:595:5:595:25 | destruct_assignment(...) | main.rs:596:5:596:23 | ExprStmt | | -| main.rs:595:5:595:26 | ExprStmt | main.rs:595:5:595:23 | destruct_assignment | | -| main.rs:596:5:596:20 | closure_variable | main.rs:596:5:596:22 | closure_variable(...) | | -| main.rs:596:5:596:22 | closure_variable(...) | main.rs:597:5:597:19 | ExprStmt | | -| main.rs:596:5:596:23 | ExprStmt | main.rs:596:5:596:20 | closure_variable | | -| main.rs:597:5:597:16 | for_variable | main.rs:597:5:597:18 | for_variable(...) | | -| main.rs:597:5:597:18 | for_variable(...) | main.rs:598:5:598:17 | ExprStmt | | -| main.rs:597:5:597:19 | ExprStmt | main.rs:597:5:597:16 | for_variable | | -| main.rs:598:5:598:14 | add_assign | main.rs:598:5:598:16 | add_assign(...) | | -| main.rs:598:5:598:16 | add_assign(...) | main.rs:599:5:599:13 | ExprStmt | | -| main.rs:598:5:598:17 | ExprStmt | main.rs:598:5:598:14 | add_assign | | -| main.rs:599:5:599:10 | mutate | main.rs:599:5:599:12 | mutate(...) | | -| main.rs:599:5:599:12 | mutate(...) | main.rs:600:5:600:17 | ExprStmt | | -| main.rs:599:5:599:13 | ExprStmt | main.rs:599:5:599:10 | mutate | | -| main.rs:600:5:600:14 | mutate_arg | main.rs:600:5:600:16 | mutate_arg(...) | | -| main.rs:600:5:600:16 | mutate_arg(...) | main.rs:601:5:601:12 | ExprStmt | | -| main.rs:600:5:600:17 | ExprStmt | main.rs:600:5:600:14 | mutate_arg | | -| main.rs:601:5:601:9 | alias | main.rs:601:5:601:11 | alias(...) | | -| main.rs:601:5:601:11 | alias(...) | main.rs:602:5:602:18 | ExprStmt | | -| main.rs:601:5:601:12 | ExprStmt | main.rs:601:5:601:9 | alias | | -| main.rs:602:5:602:15 | capture_mut | main.rs:602:5:602:17 | capture_mut(...) | | -| main.rs:602:5:602:17 | capture_mut(...) | main.rs:603:5:603:20 | ExprStmt | | -| main.rs:602:5:602:18 | ExprStmt | main.rs:602:5:602:15 | capture_mut | | -| main.rs:603:5:603:17 | capture_immut | main.rs:603:5:603:19 | capture_immut(...) | | -| main.rs:603:5:603:19 | capture_immut(...) | main.rs:604:5:604:26 | ExprStmt | | -| main.rs:603:5:603:20 | ExprStmt | main.rs:603:5:603:17 | capture_immut | | -| main.rs:604:5:604:23 | async_block_capture | main.rs:604:5:604:25 | async_block_capture(...) | | -| main.rs:604:5:604:25 | async_block_capture(...) | main.rs:605:5:605:14 | ExprStmt | | -| main.rs:604:5:604:26 | ExprStmt | main.rs:604:5:604:23 | async_block_capture | | -| main.rs:605:5:605:11 | structs | main.rs:605:5:605:13 | structs(...) | | -| main.rs:605:5:605:13 | structs(...) | main.rs:606:5:606:14 | ExprStmt | | -| main.rs:605:5:605:14 | ExprStmt | main.rs:605:5:605:11 | structs | | -| main.rs:606:5:606:11 | ref_arg | main.rs:606:5:606:13 | ref_arg(...) | | -| main.rs:606:5:606:13 | ref_arg(...) | main.rs:607:5:607:30 | ExprStmt | | -| main.rs:606:5:606:14 | ExprStmt | main.rs:606:5:606:11 | ref_arg | | -| main.rs:607:5:607:27 | ref_methodcall_receiver | main.rs:607:5:607:29 | ref_methodcall_receiver(...) | | -| main.rs:607:5:607:29 | ref_methodcall_receiver(...) | main.rs:608:5:608:23 | ExprStmt | | -| main.rs:607:5:607:30 | ExprStmt | main.rs:607:5:607:27 | ref_methodcall_receiver | | -| main.rs:608:5:608:20 | macro_invocation | main.rs:608:5:608:22 | macro_invocation(...) | | -| main.rs:608:5:608:22 | macro_invocation(...) | main.rs:574:11:609:1 | { ... } | | -| main.rs:608:5:608:23 | ExprStmt | main.rs:608:5:608:20 | macro_invocation | | +| main.rs:331:1:359:1 | enter fn nested_function | main.rs:333:5:335:10 | let ... = ... | | +| main.rs:331:1:359:1 | exit fn nested_function (normal) | main.rs:331:1:359:1 | exit fn nested_function | | +| main.rs:331:22:359:1 | { ... } | main.rs:331:1:359:1 | exit fn nested_function (normal) | | +| main.rs:333:5:335:10 | let ... = ... | main.rs:334:9:335:9 | \|...\| x | | +| main.rs:333:9:333:9 | f | main.rs:336:5:336:20 | ExprStmt | match | +| main.rs:334:9:335:9 | \|...\| x | main.rs:333:9:333:9 | f | | +| main.rs:334:9:335:9 | enter \|...\| x | main.rs:334:10:334:10 | x | | +| main.rs:334:9:335:9 | exit \|...\| x (normal) | main.rs:334:9:335:9 | exit \|...\| x | | +| main.rs:334:10:334:10 | x | main.rs:334:10:334:15 | ...: i64 | match | +| main.rs:334:10:334:15 | ...: i64 | main.rs:335:9:335:9 | x | | +| main.rs:335:9:335:9 | x | main.rs:334:9:335:9 | exit \|...\| x (normal) | | +| main.rs:336:5:336:13 | print_i64 | main.rs:336:15:336:15 | f | | +| main.rs:336:5:336:19 | print_i64(...) | main.rs:338:5:340:5 | fn f | | +| main.rs:336:5:336:20 | ExprStmt | main.rs:336:5:336:13 | print_i64 | | +| main.rs:336:15:336:15 | f | main.rs:336:17:336:17 | 1 | | +| main.rs:336:15:336:18 | f(...) | main.rs:336:5:336:19 | print_i64(...) | | +| main.rs:336:17:336:17 | 1 | main.rs:336:15:336:18 | f(...) | | +| main.rs:338:5:340:5 | enter fn f | main.rs:338:10:338:10 | x | | +| main.rs:338:5:340:5 | exit fn f (normal) | main.rs:338:5:340:5 | exit fn f | | +| main.rs:338:5:340:5 | fn f | main.rs:342:5:342:20 | ExprStmt | | +| main.rs:338:10:338:10 | x | main.rs:338:10:338:15 | ...: i64 | match | +| main.rs:338:10:338:15 | ...: i64 | main.rs:339:9:339:9 | x | | +| main.rs:338:25:340:5 | { ... } | main.rs:338:5:340:5 | exit fn f (normal) | | +| main.rs:339:9:339:9 | x | main.rs:339:13:339:13 | 1 | | +| main.rs:339:9:339:13 | ... + ... | main.rs:338:25:340:5 | { ... } | | +| main.rs:339:13:339:13 | 1 | main.rs:339:9:339:13 | ... + ... | | +| main.rs:342:5:342:13 | print_i64 | main.rs:342:15:342:15 | f | | +| main.rs:342:5:342:19 | print_i64(...) | main.rs:345:9:345:24 | ExprStmt | | +| main.rs:342:5:342:20 | ExprStmt | main.rs:342:5:342:13 | print_i64 | | +| main.rs:342:15:342:15 | f | main.rs:342:17:342:17 | 2 | | +| main.rs:342:15:342:18 | f(...) | main.rs:342:5:342:19 | print_i64(...) | | +| main.rs:342:17:342:17 | 2 | main.rs:342:15:342:18 | f(...) | | +| main.rs:344:5:358:5 | { ... } | main.rs:331:22:359:1 | { ... } | | +| main.rs:345:9:345:17 | print_i64 | main.rs:345:19:345:19 | f | | +| main.rs:345:9:345:23 | print_i64(...) | main.rs:346:9:348:9 | fn f | | +| main.rs:345:9:345:24 | ExprStmt | main.rs:345:9:345:17 | print_i64 | | +| main.rs:345:19:345:19 | f | main.rs:345:21:345:21 | 3 | | +| main.rs:345:19:345:22 | f(...) | main.rs:345:9:345:23 | print_i64(...) | | +| main.rs:345:21:345:21 | 3 | main.rs:345:19:345:22 | f(...) | | +| main.rs:346:9:348:9 | enter fn f | main.rs:346:14:346:14 | x | | +| main.rs:346:9:348:9 | exit fn f (normal) | main.rs:346:9:348:9 | exit fn f | | +| main.rs:346:9:348:9 | fn f | main.rs:350:9:352:9 | ExprStmt | | +| main.rs:346:14:346:14 | x | main.rs:346:14:346:19 | ...: i64 | match | +| main.rs:346:14:346:19 | ...: i64 | main.rs:347:13:347:13 | 2 | | +| main.rs:346:29:348:9 | { ... } | main.rs:346:9:348:9 | exit fn f (normal) | | +| main.rs:347:13:347:13 | 2 | main.rs:347:17:347:17 | x | | +| main.rs:347:13:347:17 | ... * ... | main.rs:346:29:348:9 | { ... } | | +| main.rs:347:17:347:17 | x | main.rs:347:13:347:17 | ... * ... | | +| main.rs:350:9:352:9 | ExprStmt | main.rs:351:13:351:28 | ExprStmt | | +| main.rs:350:9:352:9 | { ... } | main.rs:354:9:356:14 | let ... = ... | | +| main.rs:351:13:351:21 | print_i64 | main.rs:351:23:351:23 | f | | +| main.rs:351:13:351:27 | print_i64(...) | main.rs:350:9:352:9 | { ... } | | +| main.rs:351:13:351:28 | ExprStmt | main.rs:351:13:351:21 | print_i64 | | +| main.rs:351:23:351:23 | f | main.rs:351:25:351:25 | 4 | | +| main.rs:351:23:351:26 | f(...) | main.rs:351:13:351:27 | print_i64(...) | | +| main.rs:351:25:351:25 | 4 | main.rs:351:23:351:26 | f(...) | | +| main.rs:354:9:356:14 | let ... = ... | main.rs:355:13:356:13 | \|...\| x | | +| main.rs:354:13:354:13 | f | main.rs:357:9:357:24 | ExprStmt | match | +| main.rs:355:13:356:13 | \|...\| x | main.rs:354:13:354:13 | f | | +| main.rs:355:13:356:13 | enter \|...\| x | main.rs:355:14:355:14 | x | | +| main.rs:355:13:356:13 | exit \|...\| x (normal) | main.rs:355:13:356:13 | exit \|...\| x | | +| main.rs:355:14:355:14 | x | main.rs:355:14:355:19 | ...: i64 | match | +| main.rs:355:14:355:19 | ...: i64 | main.rs:356:13:356:13 | x | | +| main.rs:356:13:356:13 | x | main.rs:355:13:356:13 | exit \|...\| x (normal) | | +| main.rs:357:9:357:17 | print_i64 | main.rs:357:19:357:19 | f | | +| main.rs:357:9:357:23 | print_i64(...) | main.rs:344:5:358:5 | { ... } | | +| main.rs:357:9:357:24 | ExprStmt | main.rs:357:9:357:17 | print_i64 | | +| main.rs:357:19:357:19 | f | main.rs:357:21:357:21 | 5 | | +| main.rs:357:19:357:22 | f(...) | main.rs:357:9:357:23 | print_i64(...) | | +| main.rs:357:21:357:21 | 5 | main.rs:357:19:357:22 | f(...) | | +| main.rs:361:1:368:1 | enter fn for_variable | main.rs:362:5:362:42 | let ... = ... | | +| main.rs:361:1:368:1 | exit fn for_variable (normal) | main.rs:361:1:368:1 | exit fn for_variable | | +| main.rs:361:19:368:1 | { ... } | main.rs:361:1:368:1 | exit fn for_variable (normal) | | +| main.rs:362:5:362:42 | let ... = ... | main.rs:362:15:362:22 | "apples" | | +| main.rs:362:9:362:9 | v | main.rs:365:12:365:12 | v | match | +| main.rs:362:13:362:41 | &... | main.rs:362:9:362:9 | v | | +| main.rs:362:14:362:41 | [...] | main.rs:362:13:362:41 | &... | | +| main.rs:362:15:362:22 | "apples" | main.rs:362:25:362:30 | "cake" | | +| main.rs:362:25:362:30 | "cake" | main.rs:362:33:362:40 | "coffee" | | +| main.rs:362:33:362:40 | "coffee" | main.rs:362:14:362:41 | [...] | | +| main.rs:364:5:367:5 | for ... in ... { ... } | main.rs:361:19:368:1 | { ... } | | +| main.rs:364:9:364:12 | text | main.rs:364:5:367:5 | for ... in ... { ... } | no-match | +| main.rs:364:9:364:12 | text | main.rs:366:9:366:24 | ExprStmt | match | +| main.rs:365:12:365:12 | v | main.rs:364:9:364:12 | text | | +| main.rs:365:14:367:5 | { ... } | main.rs:364:9:364:12 | text | | +| main.rs:366:9:366:17 | print_str | main.rs:366:19:366:22 | text | | +| main.rs:366:9:366:23 | print_str(...) | main.rs:365:14:367:5 | { ... } | | +| main.rs:366:9:366:24 | ExprStmt | main.rs:366:9:366:17 | print_str | | +| main.rs:366:19:366:22 | text | main.rs:366:9:366:23 | print_str(...) | | +| main.rs:370:1:376:1 | enter fn add_assign | main.rs:371:5:371:18 | let ... = 0 | | +| main.rs:370:1:376:1 | exit fn add_assign (normal) | main.rs:370:1:376:1 | exit fn add_assign | | +| main.rs:370:17:376:1 | { ... } | main.rs:370:1:376:1 | exit fn add_assign (normal) | | +| main.rs:371:5:371:18 | let ... = 0 | main.rs:371:17:371:17 | 0 | | +| main.rs:371:9:371:13 | a | main.rs:372:5:372:11 | ExprStmt | match | +| main.rs:371:17:371:17 | 0 | main.rs:371:9:371:13 | a | | +| main.rs:372:5:372:5 | a | main.rs:372:10:372:10 | 1 | | +| main.rs:372:5:372:10 | ... += ... | main.rs:373:5:373:17 | ExprStmt | | +| main.rs:372:5:372:11 | ExprStmt | main.rs:372:5:372:5 | a | | +| main.rs:372:10:372:10 | 1 | main.rs:372:5:372:10 | ... += ... | | +| main.rs:373:5:373:13 | print_i64 | main.rs:373:15:373:15 | a | | +| main.rs:373:5:373:16 | print_i64(...) | main.rs:374:5:374:28 | ExprStmt | | +| main.rs:373:5:373:17 | ExprStmt | main.rs:373:5:373:13 | print_i64 | | +| main.rs:373:15:373:15 | a | main.rs:373:5:373:16 | print_i64(...) | | +| main.rs:374:5:374:27 | ... .add_assign(...) | main.rs:375:5:375:17 | ExprStmt | | +| main.rs:374:5:374:28 | ExprStmt | main.rs:374:11:374:11 | a | | +| main.rs:374:6:374:11 | &mut a | main.rs:374:25:374:26 | 10 | | +| main.rs:374:11:374:11 | a | main.rs:374:6:374:11 | &mut a | | +| main.rs:374:25:374:26 | 10 | main.rs:374:5:374:27 | ... .add_assign(...) | | +| main.rs:375:5:375:13 | print_i64 | main.rs:375:15:375:15 | a | | +| main.rs:375:5:375:16 | print_i64(...) | main.rs:370:17:376:1 | { ... } | | +| main.rs:375:5:375:17 | ExprStmt | main.rs:375:5:375:13 | print_i64 | | +| main.rs:375:15:375:15 | a | main.rs:375:5:375:16 | print_i64(...) | | +| main.rs:378:1:384:1 | enter fn mutate | main.rs:379:5:379:18 | let ... = 1 | | +| main.rs:378:1:384:1 | exit fn mutate (normal) | main.rs:378:1:384:1 | exit fn mutate | | +| main.rs:378:13:384:1 | { ... } | main.rs:378:1:384:1 | exit fn mutate (normal) | | +| main.rs:379:5:379:18 | let ... = 1 | main.rs:379:17:379:17 | 1 | | +| main.rs:379:9:379:13 | i | main.rs:380:5:381:15 | let ... = ... | match | +| main.rs:379:17:379:17 | 1 | main.rs:379:9:379:13 | i | | +| main.rs:380:5:381:15 | let ... = ... | main.rs:381:14:381:14 | i | | +| main.rs:380:9:380:13 | ref_i | main.rs:382:5:382:15 | ExprStmt | match | +| main.rs:381:9:381:14 | &mut i | main.rs:380:9:380:13 | ref_i | | +| main.rs:381:14:381:14 | i | main.rs:381:9:381:14 | &mut i | | +| main.rs:382:5:382:10 | * ... | main.rs:382:14:382:14 | 2 | | +| main.rs:382:5:382:14 | ... = ... | main.rs:383:5:383:17 | ExprStmt | | +| main.rs:382:5:382:15 | ExprStmt | main.rs:382:6:382:10 | ref_i | | +| main.rs:382:6:382:10 | ref_i | main.rs:382:5:382:10 | * ... | | +| main.rs:382:14:382:14 | 2 | main.rs:382:5:382:14 | ... = ... | | +| main.rs:383:5:383:13 | print_i64 | main.rs:383:15:383:15 | i | | +| main.rs:383:5:383:16 | print_i64(...) | main.rs:378:13:384:1 | { ... } | | +| main.rs:383:5:383:17 | ExprStmt | main.rs:383:5:383:13 | print_i64 | | +| main.rs:383:15:383:15 | i | main.rs:383:5:383:16 | print_i64(...) | | +| main.rs:386:1:391:1 | enter fn mutate_param | main.rs:386:17:386:17 | x | | +| main.rs:386:1:391:1 | exit fn mutate_param (normal) | main.rs:386:1:391:1 | exit fn mutate_param | | +| main.rs:386:17:386:17 | x | main.rs:386:17:386:28 | ...: ... | match | +| main.rs:386:17:386:28 | ...: ... | main.rs:387:5:389:11 | ExprStmt | | +| main.rs:387:5:387:6 | * ... | main.rs:388:10:388:10 | x | | +| main.rs:387:5:389:10 | ... = ... | main.rs:390:5:390:13 | ExprStmt | | +| main.rs:387:5:389:11 | ExprStmt | main.rs:387:6:387:6 | x | | +| main.rs:387:6:387:6 | x | main.rs:387:5:387:6 | * ... | | +| main.rs:388:9:388:10 | * ... | main.rs:389:10:389:10 | x | | +| main.rs:388:9:389:10 | ... + ... | main.rs:387:5:389:10 | ... = ... | | +| main.rs:388:10:388:10 | x | main.rs:388:9:388:10 | * ... | | +| main.rs:389:9:389:10 | * ... | main.rs:388:9:389:10 | ... + ... | | +| main.rs:389:10:389:10 | x | main.rs:389:9:389:10 | * ... | | +| main.rs:390:5:390:12 | return x | main.rs:386:1:391:1 | exit fn mutate_param (normal) | return | +| main.rs:390:5:390:13 | ExprStmt | main.rs:390:12:390:12 | x | | +| main.rs:390:12:390:12 | x | main.rs:390:5:390:12 | return x | | +| main.rs:393:1:399:1 | enter fn mutate_param2 | main.rs:393:22:393:22 | x | | +| main.rs:393:1:399:1 | exit fn mutate_param2 (normal) | main.rs:393:1:399:1 | exit fn mutate_param2 | | +| main.rs:393:22:393:22 | x | main.rs:393:22:393:36 | ...: ... | match | +| main.rs:393:22:393:36 | ...: ... | main.rs:393:39:393:39 | y | | +| main.rs:393:39:393:39 | y | main.rs:393:39:393:57 | ...: ... | match | +| main.rs:393:39:393:57 | ...: ... | main.rs:394:5:396:11 | ExprStmt | | +| main.rs:393:60:399:1 | { ... } | main.rs:393:1:399:1 | exit fn mutate_param2 (normal) | | +| main.rs:394:5:394:6 | * ... | main.rs:395:10:395:10 | x | | +| main.rs:394:5:396:10 | ... = ... | main.rs:397:5:398:10 | ExprStmt | | +| main.rs:394:5:396:11 | ExprStmt | main.rs:394:6:394:6 | x | | +| main.rs:394:6:394:6 | x | main.rs:394:5:394:6 | * ... | | +| main.rs:395:9:395:10 | * ... | main.rs:396:10:396:10 | x | | +| main.rs:395:9:396:10 | ... + ... | main.rs:394:5:396:10 | ... = ... | | +| main.rs:395:10:395:10 | x | main.rs:395:9:395:10 | * ... | | +| main.rs:396:9:396:10 | * ... | main.rs:395:9:396:10 | ... + ... | | +| main.rs:396:10:396:10 | x | main.rs:396:9:396:10 | * ... | | +| main.rs:397:5:397:6 | * ... | main.rs:398:9:398:9 | x | | +| main.rs:397:5:398:9 | ... = ... | main.rs:393:60:399:1 | { ... } | | +| main.rs:397:5:398:10 | ExprStmt | main.rs:397:6:397:6 | y | | +| main.rs:397:6:397:6 | y | main.rs:397:5:397:6 | * ... | | +| main.rs:398:9:398:9 | x | main.rs:397:5:398:9 | ... = ... | | +| main.rs:401:1:419:1 | enter fn mutate_arg | main.rs:402:5:402:18 | let ... = 2 | | +| main.rs:401:1:419:1 | exit fn mutate_arg (normal) | main.rs:401:1:419:1 | exit fn mutate_arg | | +| main.rs:401:17:419:1 | { ... } | main.rs:401:1:419:1 | exit fn mutate_arg (normal) | | +| main.rs:402:5:402:18 | let ... = 2 | main.rs:402:17:402:17 | 2 | | +| main.rs:402:9:402:13 | x | main.rs:403:5:404:29 | let ... = ... | match | +| main.rs:402:17:402:17 | 2 | main.rs:402:9:402:13 | x | | +| main.rs:403:5:404:29 | let ... = ... | main.rs:404:9:404:20 | mutate_param | | +| main.rs:403:9:403:9 | y | main.rs:405:5:405:12 | ExprStmt | match | +| main.rs:404:9:404:20 | mutate_param | main.rs:404:27:404:27 | x | | +| main.rs:404:9:404:28 | mutate_param(...) | main.rs:403:9:403:9 | y | | +| main.rs:404:22:404:27 | &mut x | main.rs:404:9:404:28 | mutate_param(...) | | +| main.rs:404:27:404:27 | x | main.rs:404:22:404:27 | &mut x | | +| main.rs:405:5:405:6 | * ... | main.rs:405:10:405:11 | 10 | | +| main.rs:405:5:405:11 | ... = ... | main.rs:407:5:407:17 | ExprStmt | | +| main.rs:405:5:405:12 | ExprStmt | main.rs:405:6:405:6 | y | | +| main.rs:405:6:405:6 | y | main.rs:405:5:405:6 | * ... | | +| main.rs:405:10:405:11 | 10 | main.rs:405:5:405:11 | ... = ... | | +| main.rs:407:5:407:13 | print_i64 | main.rs:407:15:407:15 | x | | +| main.rs:407:5:407:16 | print_i64(...) | main.rs:409:5:409:18 | let ... = 4 | | +| main.rs:407:5:407:17 | ExprStmt | main.rs:407:5:407:13 | print_i64 | | +| main.rs:407:15:407:15 | x | main.rs:407:5:407:16 | print_i64(...) | | +| main.rs:409:5:409:18 | let ... = 4 | main.rs:409:17:409:17 | 4 | | +| main.rs:409:9:409:13 | z | main.rs:410:5:411:20 | let ... = ... | match | +| main.rs:409:17:409:17 | 4 | main.rs:409:9:409:13 | z | | +| main.rs:410:5:411:20 | let ... = ... | main.rs:411:19:411:19 | x | | +| main.rs:410:9:410:9 | w | main.rs:412:5:415:6 | ExprStmt | match | +| main.rs:411:9:411:19 | &mut ... | main.rs:410:9:410:9 | w | | +| main.rs:411:14:411:19 | &mut x | main.rs:411:9:411:19 | &mut ... | | +| main.rs:411:19:411:19 | x | main.rs:411:14:411:19 | &mut x | | +| main.rs:412:5:412:17 | mutate_param2 | main.rs:413:14:413:14 | z | | +| main.rs:412:5:415:5 | mutate_param2(...) | main.rs:416:5:416:13 | ExprStmt | | +| main.rs:412:5:415:6 | ExprStmt | main.rs:412:5:412:17 | mutate_param2 | | +| main.rs:413:9:413:14 | &mut z | main.rs:414:9:414:9 | w | | +| main.rs:413:14:413:14 | z | main.rs:413:9:413:14 | &mut z | | +| main.rs:414:9:414:9 | w | main.rs:412:5:415:5 | mutate_param2(...) | | +| main.rs:416:5:416:7 | * ... | main.rs:416:11:416:12 | 11 | | +| main.rs:416:5:416:12 | ... = ... | main.rs:418:5:418:17 | ExprStmt | | +| main.rs:416:5:416:13 | ExprStmt | main.rs:416:7:416:7 | w | | +| main.rs:416:6:416:7 | * ... | main.rs:416:5:416:7 | * ... | | +| main.rs:416:7:416:7 | w | main.rs:416:6:416:7 | * ... | | +| main.rs:416:11:416:12 | 11 | main.rs:416:5:416:12 | ... = ... | | +| main.rs:418:5:418:13 | print_i64 | main.rs:418:15:418:15 | z | | +| main.rs:418:5:418:16 | print_i64(...) | main.rs:401:17:419:1 | { ... } | | +| main.rs:418:5:418:17 | ExprStmt | main.rs:418:5:418:13 | print_i64 | | +| main.rs:418:15:418:15 | z | main.rs:418:5:418:16 | print_i64(...) | | +| main.rs:421:1:427:1 | enter fn alias | main.rs:422:5:422:18 | let ... = 1 | | +| main.rs:421:1:427:1 | exit fn alias (normal) | main.rs:421:1:427:1 | exit fn alias | | +| main.rs:421:12:427:1 | { ... } | main.rs:421:1:427:1 | exit fn alias (normal) | | +| main.rs:422:5:422:18 | let ... = 1 | main.rs:422:17:422:17 | 1 | | +| main.rs:422:9:422:13 | x | main.rs:423:5:424:15 | let ... = ... | match | +| main.rs:422:17:422:17 | 1 | main.rs:422:9:422:13 | x | | +| main.rs:423:5:424:15 | let ... = ... | main.rs:424:14:424:14 | x | | +| main.rs:423:9:423:9 | y | main.rs:425:5:425:11 | ExprStmt | match | +| main.rs:424:9:424:14 | &mut x | main.rs:423:9:423:9 | y | | +| main.rs:424:14:424:14 | x | main.rs:424:9:424:14 | &mut x | | +| main.rs:425:5:425:6 | * ... | main.rs:425:10:425:10 | 2 | | +| main.rs:425:5:425:10 | ... = ... | main.rs:426:5:426:17 | ExprStmt | | +| main.rs:425:5:425:11 | ExprStmt | main.rs:425:6:425:6 | y | | +| main.rs:425:6:425:6 | y | main.rs:425:5:425:6 | * ... | | +| main.rs:425:10:425:10 | 2 | main.rs:425:5:425:10 | ... = ... | | +| main.rs:426:5:426:13 | print_i64 | main.rs:426:15:426:15 | x | | +| main.rs:426:5:426:16 | print_i64(...) | main.rs:421:12:427:1 | { ... } | | +| main.rs:426:5:426:17 | ExprStmt | main.rs:426:5:426:13 | print_i64 | | +| main.rs:426:15:426:15 | x | main.rs:426:5:426:16 | print_i64(...) | | +| main.rs:429:1:437:1 | enter fn capture_immut | main.rs:430:5:430:16 | let ... = 100 | | +| main.rs:429:1:437:1 | exit fn capture_immut (normal) | main.rs:429:1:437:1 | exit fn capture_immut | | +| main.rs:429:20:437:1 | { ... } | main.rs:429:1:437:1 | exit fn capture_immut (normal) | | +| main.rs:430:5:430:16 | let ... = 100 | main.rs:430:13:430:15 | 100 | | +| main.rs:430:9:430:9 | x | main.rs:432:5:434:6 | let ... = ... | match | +| main.rs:430:13:430:15 | 100 | main.rs:430:9:430:9 | x | | +| main.rs:432:5:434:6 | let ... = ... | main.rs:432:15:434:5 | \|...\| ... | | +| main.rs:432:9:432:11 | cap | main.rs:435:5:435:10 | ExprStmt | match | +| main.rs:432:15:434:5 | \|...\| ... | main.rs:432:9:432:11 | cap | | +| main.rs:432:15:434:5 | enter \|...\| ... | main.rs:433:9:433:21 | ExprStmt | | +| main.rs:432:15:434:5 | exit \|...\| ... (normal) | main.rs:432:15:434:5 | exit \|...\| ... | | +| main.rs:432:18:434:5 | { ... } | main.rs:432:15:434:5 | exit \|...\| ... (normal) | | +| main.rs:433:9:433:17 | print_i64 | main.rs:433:19:433:19 | x | | +| main.rs:433:9:433:20 | print_i64(...) | main.rs:432:18:434:5 | { ... } | | +| main.rs:433:9:433:21 | ExprStmt | main.rs:433:9:433:17 | print_i64 | | +| main.rs:433:19:433:19 | x | main.rs:433:9:433:20 | print_i64(...) | | +| main.rs:435:5:435:7 | cap | main.rs:435:5:435:9 | cap(...) | | +| main.rs:435:5:435:9 | cap(...) | main.rs:436:5:436:17 | ExprStmt | | +| main.rs:435:5:435:10 | ExprStmt | main.rs:435:5:435:7 | cap | | +| main.rs:436:5:436:13 | print_i64 | main.rs:436:15:436:15 | x | | +| main.rs:436:5:436:16 | print_i64(...) | main.rs:429:20:437:1 | { ... } | | +| main.rs:436:5:436:17 | ExprStmt | main.rs:436:5:436:13 | print_i64 | | +| main.rs:436:15:436:15 | x | main.rs:436:5:436:16 | print_i64(...) | | +| main.rs:439:1:463:1 | enter fn capture_mut | main.rs:440:5:440:18 | let ... = 1 | | +| main.rs:439:1:463:1 | exit fn capture_mut (normal) | main.rs:439:1:463:1 | exit fn capture_mut | | +| main.rs:439:18:463:1 | { ... } | main.rs:439:1:463:1 | exit fn capture_mut (normal) | | +| main.rs:440:5:440:18 | let ... = 1 | main.rs:440:17:440:17 | 1 | | +| main.rs:440:9:440:13 | x | main.rs:442:5:444:6 | let ... = ... | match | +| main.rs:440:17:440:17 | 1 | main.rs:440:9:440:13 | x | | +| main.rs:442:5:444:6 | let ... = ... | main.rs:442:20:444:5 | \|...\| ... | | +| main.rs:442:9:442:16 | closure1 | main.rs:445:5:445:15 | ExprStmt | match | +| main.rs:442:20:444:5 | \|...\| ... | main.rs:442:9:442:16 | closure1 | | +| main.rs:442:20:444:5 | enter \|...\| ... | main.rs:443:9:443:21 | ExprStmt | | +| main.rs:442:20:444:5 | exit \|...\| ... (normal) | main.rs:442:20:444:5 | exit \|...\| ... | | +| main.rs:442:23:444:5 | { ... } | main.rs:442:20:444:5 | exit \|...\| ... (normal) | | +| main.rs:443:9:443:17 | print_i64 | main.rs:443:19:443:19 | x | | +| main.rs:443:9:443:20 | print_i64(...) | main.rs:442:23:444:5 | { ... } | | +| main.rs:443:9:443:21 | ExprStmt | main.rs:443:9:443:17 | print_i64 | | +| main.rs:443:19:443:19 | x | main.rs:443:9:443:20 | print_i64(...) | | +| main.rs:445:5:445:12 | closure1 | main.rs:445:5:445:14 | closure1(...) | | +| main.rs:445:5:445:14 | closure1(...) | main.rs:446:5:446:17 | ExprStmt | | +| main.rs:445:5:445:15 | ExprStmt | main.rs:445:5:445:12 | closure1 | | +| main.rs:446:5:446:13 | print_i64 | main.rs:446:15:446:15 | x | | +| main.rs:446:5:446:16 | print_i64(...) | main.rs:448:5:448:18 | let ... = 2 | | +| main.rs:446:5:446:17 | ExprStmt | main.rs:446:5:446:13 | print_i64 | | +| main.rs:446:15:446:15 | x | main.rs:446:5:446:16 | print_i64(...) | | +| main.rs:448:5:448:18 | let ... = 2 | main.rs:448:17:448:17 | 2 | | +| main.rs:448:9:448:13 | y | main.rs:450:5:452:6 | let ... = ... | match | +| main.rs:448:17:448:17 | 2 | main.rs:448:9:448:13 | y | | +| main.rs:450:5:452:6 | let ... = ... | main.rs:450:24:452:5 | \|...\| ... | | +| main.rs:450:9:450:20 | closure2 | main.rs:453:5:453:15 | ExprStmt | match | +| main.rs:450:24:452:5 | \|...\| ... | main.rs:450:9:450:20 | closure2 | | +| main.rs:450:24:452:5 | enter \|...\| ... | main.rs:451:9:451:14 | ExprStmt | | +| main.rs:450:24:452:5 | exit \|...\| ... (normal) | main.rs:450:24:452:5 | exit \|...\| ... | | +| main.rs:450:27:452:5 | { ... } | main.rs:450:24:452:5 | exit \|...\| ... (normal) | | +| main.rs:451:9:451:9 | y | main.rs:451:13:451:13 | 3 | | +| main.rs:451:9:451:13 | ... = ... | main.rs:450:27:452:5 | { ... } | | +| main.rs:451:9:451:14 | ExprStmt | main.rs:451:9:451:9 | y | | +| main.rs:451:13:451:13 | 3 | main.rs:451:9:451:13 | ... = ... | | +| main.rs:453:5:453:12 | closure2 | main.rs:453:5:453:14 | closure2(...) | | +| main.rs:453:5:453:14 | closure2(...) | main.rs:454:5:454:17 | ExprStmt | | +| main.rs:453:5:453:15 | ExprStmt | main.rs:453:5:453:12 | closure2 | | +| main.rs:454:5:454:13 | print_i64 | main.rs:454:15:454:15 | y | | +| main.rs:454:5:454:16 | print_i64(...) | main.rs:456:5:456:18 | let ... = 2 | | +| main.rs:454:5:454:17 | ExprStmt | main.rs:454:5:454:13 | print_i64 | | +| main.rs:454:15:454:15 | y | main.rs:454:5:454:16 | print_i64(...) | | +| main.rs:456:5:456:18 | let ... = 2 | main.rs:456:17:456:17 | 2 | | +| main.rs:456:9:456:13 | z | main.rs:458:5:460:6 | let ... = ... | match | +| main.rs:456:17:456:17 | 2 | main.rs:456:9:456:13 | z | | +| main.rs:458:5:460:6 | let ... = ... | main.rs:458:24:460:5 | \|...\| ... | | +| main.rs:458:9:458:20 | closure3 | main.rs:461:5:461:15 | ExprStmt | match | +| main.rs:458:24:460:5 | \|...\| ... | main.rs:458:9:458:20 | closure3 | | +| main.rs:458:24:460:5 | enter \|...\| ... | main.rs:459:9:459:24 | ExprStmt | | +| main.rs:458:24:460:5 | exit \|...\| ... (normal) | main.rs:458:24:460:5 | exit \|...\| ... | | +| main.rs:458:27:460:5 | { ... } | main.rs:458:24:460:5 | exit \|...\| ... (normal) | | +| main.rs:459:9:459:9 | z | main.rs:459:22:459:22 | 1 | | +| main.rs:459:9:459:23 | z.add_assign(...) | main.rs:458:27:460:5 | { ... } | | +| main.rs:459:9:459:24 | ExprStmt | main.rs:459:9:459:9 | z | | +| main.rs:459:22:459:22 | 1 | main.rs:459:9:459:23 | z.add_assign(...) | | +| main.rs:461:5:461:12 | closure3 | main.rs:461:5:461:14 | closure3(...) | | +| main.rs:461:5:461:14 | closure3(...) | main.rs:462:5:462:17 | ExprStmt | | +| main.rs:461:5:461:15 | ExprStmt | main.rs:461:5:461:12 | closure3 | | +| main.rs:462:5:462:13 | print_i64 | main.rs:462:15:462:15 | z | | +| main.rs:462:5:462:16 | print_i64(...) | main.rs:439:18:463:1 | { ... } | | +| main.rs:462:5:462:17 | ExprStmt | main.rs:462:5:462:13 | print_i64 | | +| main.rs:462:15:462:15 | z | main.rs:462:5:462:16 | print_i64(...) | | +| main.rs:465:1:473:1 | enter fn async_block_capture | main.rs:466:5:466:23 | let ... = 0 | | +| main.rs:465:1:473:1 | exit fn async_block_capture (normal) | main.rs:465:1:473:1 | exit fn async_block_capture | | +| main.rs:465:32:473:1 | { ... } | main.rs:465:1:473:1 | exit fn async_block_capture (normal) | | +| main.rs:466:5:466:23 | let ... = 0 | main.rs:466:22:466:22 | 0 | | +| main.rs:466:9:466:13 | i | main.rs:467:5:469:6 | let ... = ... | match | +| main.rs:466:22:466:22 | 0 | main.rs:466:9:466:13 | i | | +| main.rs:467:5:469:6 | let ... = ... | main.rs:467:17:469:5 | { ... } | | +| main.rs:467:9:467:13 | block | main.rs:471:5:471:16 | ExprStmt | match | +| main.rs:467:17:469:5 | enter { ... } | main.rs:468:9:468:14 | ExprStmt | | +| main.rs:467:17:469:5 | exit { ... } (normal) | main.rs:467:17:469:5 | exit { ... } | | +| main.rs:467:17:469:5 | { ... } | main.rs:467:9:467:13 | block | | +| main.rs:468:9:468:9 | i | main.rs:468:13:468:13 | 1 | | +| main.rs:468:9:468:13 | ... = ... | main.rs:467:17:469:5 | exit { ... } (normal) | | +| main.rs:468:9:468:14 | ExprStmt | main.rs:468:9:468:9 | i | | +| main.rs:468:13:468:13 | 1 | main.rs:468:9:468:13 | ... = ... | | +| main.rs:471:5:471:9 | block | main.rs:471:5:471:15 | await block | | +| main.rs:471:5:471:15 | await block | main.rs:472:5:472:17 | ExprStmt | | +| main.rs:471:5:471:16 | ExprStmt | main.rs:471:5:471:9 | block | | +| main.rs:472:5:472:13 | print_i64 | main.rs:472:15:472:15 | i | | +| main.rs:472:5:472:16 | print_i64(...) | main.rs:465:32:473:1 | { ... } | | +| main.rs:472:5:472:17 | ExprStmt | main.rs:472:5:472:13 | print_i64 | | +| main.rs:472:15:472:15 | i | main.rs:472:5:472:16 | print_i64(...) | | +| main.rs:475:1:489:1 | enter fn phi | main.rs:475:8:475:8 | b | | +| main.rs:475:1:489:1 | exit fn phi (normal) | main.rs:475:1:489:1 | exit fn phi | | +| main.rs:475:8:475:8 | b | main.rs:475:8:475:15 | ...: bool | match | +| main.rs:475:8:475:15 | ...: bool | main.rs:476:5:476:18 | let ... = 1 | | +| main.rs:475:18:489:1 | { ... } | main.rs:475:1:489:1 | exit fn phi (normal) | | +| main.rs:476:5:476:18 | let ... = 1 | main.rs:476:17:476:17 | 1 | | +| main.rs:476:9:476:13 | x | main.rs:477:5:477:17 | ExprStmt | match | +| main.rs:476:17:476:17 | 1 | main.rs:476:9:476:13 | x | | +| main.rs:477:5:477:13 | print_i64 | main.rs:477:15:477:15 | x | | +| main.rs:477:5:477:16 | print_i64(...) | main.rs:478:5:478:21 | ExprStmt | | +| main.rs:477:5:477:17 | ExprStmt | main.rs:477:5:477:13 | print_i64 | | +| main.rs:477:15:477:15 | x | main.rs:477:5:477:16 | print_i64(...) | | +| main.rs:478:5:478:13 | print_i64 | main.rs:478:15:478:15 | x | | +| main.rs:478:5:478:20 | print_i64(...) | main.rs:479:5:487:5 | ExprStmt | | +| main.rs:478:5:478:21 | ExprStmt | main.rs:478:5:478:13 | print_i64 | | +| main.rs:478:15:478:15 | x | main.rs:478:19:478:19 | 1 | | +| main.rs:478:15:478:19 | ... + ... | main.rs:478:5:478:20 | print_i64(...) | | +| main.rs:478:19:478:19 | 1 | main.rs:478:15:478:19 | ... + ... | | +| main.rs:479:5:487:5 | ExprStmt | main.rs:479:8:479:8 | b | | +| main.rs:479:5:487:5 | if b {...} else {...} | main.rs:488:5:488:17 | ExprStmt | | +| main.rs:479:8:479:8 | b | main.rs:480:9:480:14 | ExprStmt | true | +| main.rs:479:8:479:8 | b | main.rs:484:9:484:14 | ExprStmt | false | +| main.rs:479:10:483:5 | { ... } | main.rs:479:5:487:5 | if b {...} else {...} | | +| main.rs:480:9:480:9 | x | main.rs:480:13:480:13 | 2 | | +| main.rs:480:9:480:13 | ... = ... | main.rs:481:9:481:21 | ExprStmt | | +| main.rs:480:9:480:14 | ExprStmt | main.rs:480:9:480:9 | x | | +| main.rs:480:13:480:13 | 2 | main.rs:480:9:480:13 | ... = ... | | +| main.rs:481:9:481:17 | print_i64 | main.rs:481:19:481:19 | x | | +| main.rs:481:9:481:20 | print_i64(...) | main.rs:482:9:482:25 | ExprStmt | | +| main.rs:481:9:481:21 | ExprStmt | main.rs:481:9:481:17 | print_i64 | | +| main.rs:481:19:481:19 | x | main.rs:481:9:481:20 | print_i64(...) | | +| main.rs:482:9:482:17 | print_i64 | main.rs:482:19:482:19 | x | | +| main.rs:482:9:482:24 | print_i64(...) | main.rs:479:10:483:5 | { ... } | | +| main.rs:482:9:482:25 | ExprStmt | main.rs:482:9:482:17 | print_i64 | | +| main.rs:482:19:482:19 | x | main.rs:482:23:482:23 | 1 | | +| main.rs:482:19:482:23 | ... + ... | main.rs:482:9:482:24 | print_i64(...) | | +| main.rs:482:23:482:23 | 1 | main.rs:482:19:482:23 | ... + ... | | +| main.rs:483:12:487:5 | { ... } | main.rs:479:5:487:5 | if b {...} else {...} | | +| main.rs:484:9:484:9 | x | main.rs:484:13:484:13 | 3 | | +| main.rs:484:9:484:13 | ... = ... | main.rs:485:9:485:21 | ExprStmt | | +| main.rs:484:9:484:14 | ExprStmt | main.rs:484:9:484:9 | x | | +| main.rs:484:13:484:13 | 3 | main.rs:484:9:484:13 | ... = ... | | +| main.rs:485:9:485:17 | print_i64 | main.rs:485:19:485:19 | x | | +| main.rs:485:9:485:20 | print_i64(...) | main.rs:486:9:486:25 | ExprStmt | | +| main.rs:485:9:485:21 | ExprStmt | main.rs:485:9:485:17 | print_i64 | | +| main.rs:485:19:485:19 | x | main.rs:485:9:485:20 | print_i64(...) | | +| main.rs:486:9:486:17 | print_i64 | main.rs:486:19:486:19 | x | | +| main.rs:486:9:486:24 | print_i64(...) | main.rs:483:12:487:5 | { ... } | | +| main.rs:486:9:486:25 | ExprStmt | main.rs:486:9:486:17 | print_i64 | | +| main.rs:486:19:486:19 | x | main.rs:486:23:486:23 | 1 | | +| main.rs:486:19:486:23 | ... + ... | main.rs:486:9:486:24 | print_i64(...) | | +| main.rs:486:23:486:23 | 1 | main.rs:486:19:486:23 | ... + ... | | +| main.rs:488:5:488:13 | print_i64 | main.rs:488:15:488:15 | x | | +| main.rs:488:5:488:16 | print_i64(...) | main.rs:475:18:489:1 | { ... } | | +| main.rs:488:5:488:17 | ExprStmt | main.rs:488:5:488:13 | print_i64 | | +| main.rs:488:15:488:15 | x | main.rs:488:5:488:16 | print_i64(...) | | +| main.rs:491:1:504:1 | enter fn phi_read | main.rs:491:13:491:14 | b1 | | +| main.rs:491:1:504:1 | exit fn phi_read (normal) | main.rs:491:1:504:1 | exit fn phi_read | | +| main.rs:491:13:491:14 | b1 | main.rs:491:13:491:21 | ...: bool | match | +| main.rs:491:13:491:21 | ...: bool | main.rs:491:24:491:25 | b2 | | +| main.rs:491:24:491:25 | b2 | main.rs:491:24:491:32 | ...: bool | match | +| main.rs:491:24:491:32 | ...: bool | main.rs:492:5:492:14 | let ... = 1 | | +| main.rs:491:35:504:1 | { ... } | main.rs:491:1:504:1 | exit fn phi_read (normal) | | +| main.rs:492:5:492:14 | let ... = 1 | main.rs:492:13:492:13 | 1 | | +| main.rs:492:9:492:9 | x | main.rs:493:5:497:5 | ExprStmt | match | +| main.rs:492:13:492:13 | 1 | main.rs:492:9:492:9 | x | | +| main.rs:493:5:497:5 | ExprStmt | main.rs:493:8:493:9 | b1 | | +| main.rs:493:5:497:5 | if b1 {...} else {...} | main.rs:499:8:499:9 | b2 | | +| main.rs:493:8:493:9 | b1 | main.rs:494:9:494:21 | ExprStmt | true | +| main.rs:493:8:493:9 | b1 | main.rs:496:9:496:21 | ExprStmt | false | +| main.rs:493:11:495:5 | { ... } | main.rs:493:5:497:5 | if b1 {...} else {...} | | +| main.rs:494:9:494:17 | print_i64 | main.rs:494:19:494:19 | x | | +| main.rs:494:9:494:20 | print_i64(...) | main.rs:493:11:495:5 | { ... } | | +| main.rs:494:9:494:21 | ExprStmt | main.rs:494:9:494:17 | print_i64 | | +| main.rs:494:19:494:19 | x | main.rs:494:9:494:20 | print_i64(...) | | +| main.rs:495:12:497:5 | { ... } | main.rs:493:5:497:5 | if b1 {...} else {...} | | +| main.rs:496:9:496:17 | print_i64 | main.rs:496:19:496:19 | x | | +| main.rs:496:9:496:20 | print_i64(...) | main.rs:495:12:497:5 | { ... } | | +| main.rs:496:9:496:21 | ExprStmt | main.rs:496:9:496:17 | print_i64 | | +| main.rs:496:19:496:19 | x | main.rs:496:9:496:20 | print_i64(...) | | +| main.rs:499:5:503:5 | if b2 {...} else {...} | main.rs:491:35:504:1 | { ... } | | +| main.rs:499:8:499:9 | b2 | main.rs:500:9:500:21 | ExprStmt | true | +| main.rs:499:8:499:9 | b2 | main.rs:502:9:502:21 | ExprStmt | false | +| main.rs:499:11:501:5 | { ... } | main.rs:499:5:503:5 | if b2 {...} else {...} | | +| main.rs:500:9:500:17 | print_i64 | main.rs:500:19:500:19 | x | | +| main.rs:500:9:500:20 | print_i64(...) | main.rs:499:11:501:5 | { ... } | | +| main.rs:500:9:500:21 | ExprStmt | main.rs:500:9:500:17 | print_i64 | | +| main.rs:500:19:500:19 | x | main.rs:500:9:500:20 | print_i64(...) | | +| main.rs:501:12:503:5 | { ... } | main.rs:499:5:503:5 | if b2 {...} else {...} | | +| main.rs:502:9:502:17 | print_i64 | main.rs:502:19:502:19 | x | | +| main.rs:502:9:502:20 | print_i64(...) | main.rs:501:12:503:5 | { ... } | | +| main.rs:502:9:502:21 | ExprStmt | main.rs:502:9:502:17 | print_i64 | | +| main.rs:502:19:502:19 | x | main.rs:502:9:502:20 | print_i64(...) | | +| main.rs:512:5:514:5 | enter fn my_get | main.rs:512:20:512:23 | self | | +| main.rs:512:5:514:5 | exit fn my_get (normal) | main.rs:512:5:514:5 | exit fn my_get | | +| main.rs:512:15:512:23 | SelfParam | main.rs:513:9:513:24 | ExprStmt | | +| main.rs:512:20:512:23 | self | main.rs:512:15:512:23 | SelfParam | | +| main.rs:513:9:513:23 | return ... | main.rs:512:5:514:5 | exit fn my_get (normal) | return | +| main.rs:513:9:513:24 | ExprStmt | main.rs:513:16:513:19 | self | | +| main.rs:513:16:513:19 | self | main.rs:513:16:513:23 | self.val | | +| main.rs:513:16:513:23 | self.val | main.rs:513:9:513:23 | return ... | | +| main.rs:516:5:518:5 | enter fn id | main.rs:516:11:516:14 | self | | +| main.rs:516:5:518:5 | exit fn id (normal) | main.rs:516:5:518:5 | exit fn id | | +| main.rs:516:11:516:14 | SelfParam | main.rs:517:9:517:12 | self | | +| main.rs:516:11:516:14 | self | main.rs:516:11:516:14 | SelfParam | | +| main.rs:516:25:518:5 | { ... } | main.rs:516:5:518:5 | exit fn id (normal) | | +| main.rs:517:9:517:12 | self | main.rs:516:25:518:5 | { ... } | | +| main.rs:520:5:527:5 | enter fn my_method | main.rs:520:23:520:26 | self | | +| main.rs:520:5:527:5 | exit fn my_method (normal) | main.rs:520:5:527:5 | exit fn my_method | | +| main.rs:520:18:520:26 | SelfParam | main.rs:521:9:524:10 | let ... = ... | | +| main.rs:520:23:520:26 | self | main.rs:520:18:520:26 | SelfParam | | +| main.rs:520:29:527:5 | { ... } | main.rs:520:5:527:5 | exit fn my_method (normal) | | +| main.rs:521:9:524:10 | let ... = ... | main.rs:521:21:524:9 | \|...\| ... | | +| main.rs:521:13:521:17 | f | main.rs:525:9:525:13 | ExprStmt | match | +| main.rs:521:21:524:9 | \|...\| ... | main.rs:521:13:521:17 | f | | +| main.rs:521:21:524:9 | enter \|...\| ... | main.rs:521:22:521:22 | n | | +| main.rs:521:21:524:9 | exit \|...\| ... (normal) | main.rs:521:21:524:9 | exit \|...\| ... | | +| main.rs:521:22:521:22 | ... | main.rs:523:13:523:26 | ExprStmt | | +| main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | ... | match | +| main.rs:521:25:524:9 | { ... } | main.rs:521:21:524:9 | exit \|...\| ... (normal) | | +| main.rs:523:13:523:16 | self | main.rs:523:13:523:20 | self.val | | +| main.rs:523:13:523:20 | self.val | main.rs:523:25:523:25 | n | | +| main.rs:523:13:523:25 | ... += ... | main.rs:521:25:524:9 | { ... } | | +| main.rs:523:13:523:26 | ExprStmt | main.rs:523:13:523:16 | self | | +| main.rs:523:25:523:25 | n | main.rs:523:13:523:25 | ... += ... | | +| main.rs:525:9:525:9 | f | main.rs:525:11:525:11 | 3 | | +| main.rs:525:9:525:12 | f(...) | main.rs:526:9:526:13 | ExprStmt | | +| main.rs:525:9:525:13 | ExprStmt | main.rs:525:9:525:9 | f | | +| main.rs:525:11:525:11 | 3 | main.rs:525:9:525:12 | f(...) | | +| main.rs:526:9:526:9 | f | main.rs:526:11:526:11 | 4 | | +| main.rs:526:9:526:12 | f(...) | main.rs:520:29:527:5 | { ... } | | +| main.rs:526:9:526:13 | ExprStmt | main.rs:526:9:526:9 | f | | +| main.rs:526:11:526:11 | 4 | main.rs:526:9:526:12 | f(...) | | +| main.rs:530:1:537:1 | enter fn structs | main.rs:531:5:531:36 | let ... = ... | | +| main.rs:530:1:537:1 | exit fn structs (normal) | main.rs:530:1:537:1 | exit fn structs | | +| main.rs:530:14:537:1 | { ... } | main.rs:530:1:537:1 | exit fn structs (normal) | | +| main.rs:531:5:531:36 | let ... = ... | main.rs:531:33:531:33 | 1 | | +| main.rs:531:9:531:13 | a | main.rs:532:5:532:26 | ExprStmt | match | +| main.rs:531:17:531:35 | MyStruct {...} | main.rs:531:9:531:13 | a | | +| main.rs:531:33:531:33 | 1 | main.rs:531:17:531:35 | MyStruct {...} | | +| main.rs:532:5:532:13 | print_i64 | main.rs:532:15:532:15 | a | | +| main.rs:532:5:532:25 | print_i64(...) | main.rs:533:5:533:14 | ExprStmt | | +| main.rs:532:5:532:26 | ExprStmt | main.rs:532:5:532:13 | print_i64 | | +| main.rs:532:15:532:15 | a | main.rs:532:15:532:24 | a.my_get(...) | | +| main.rs:532:15:532:24 | a.my_get(...) | main.rs:532:5:532:25 | print_i64(...) | | +| main.rs:533:5:533:5 | a | main.rs:533:5:533:9 | a.val | | +| main.rs:533:5:533:9 | a.val | main.rs:533:13:533:13 | 5 | | +| main.rs:533:5:533:13 | ... = ... | main.rs:534:5:534:26 | ExprStmt | | +| main.rs:533:5:533:14 | ExprStmt | main.rs:533:5:533:5 | a | | +| main.rs:533:13:533:13 | 5 | main.rs:533:5:533:13 | ... = ... | | +| main.rs:534:5:534:13 | print_i64 | main.rs:534:15:534:15 | a | | +| main.rs:534:5:534:25 | print_i64(...) | main.rs:535:5:535:28 | ExprStmt | | +| main.rs:534:5:534:26 | ExprStmt | main.rs:534:5:534:13 | print_i64 | | +| main.rs:534:15:534:15 | a | main.rs:534:15:534:24 | a.my_get(...) | | +| main.rs:534:15:534:24 | a.my_get(...) | main.rs:534:5:534:25 | print_i64(...) | | +| main.rs:535:5:535:5 | a | main.rs:535:25:535:25 | 2 | | +| main.rs:535:5:535:27 | ... = ... | main.rs:536:5:536:26 | ExprStmt | | +| main.rs:535:5:535:28 | ExprStmt | main.rs:535:5:535:5 | a | | +| main.rs:535:9:535:27 | MyStruct {...} | main.rs:535:5:535:27 | ... = ... | | +| main.rs:535:25:535:25 | 2 | main.rs:535:9:535:27 | MyStruct {...} | | +| main.rs:536:5:536:13 | print_i64 | main.rs:536:15:536:15 | a | | +| main.rs:536:5:536:25 | print_i64(...) | main.rs:530:14:537:1 | { ... } | | +| main.rs:536:5:536:26 | ExprStmt | main.rs:536:5:536:13 | print_i64 | | +| main.rs:536:15:536:15 | a | main.rs:536:15:536:24 | a.my_get(...) | | +| main.rs:536:15:536:24 | a.my_get(...) | main.rs:536:5:536:25 | print_i64(...) | | +| main.rs:539:1:546:1 | enter fn arrays | main.rs:540:5:540:26 | let ... = ... | | +| main.rs:539:1:546:1 | exit fn arrays (normal) | main.rs:539:1:546:1 | exit fn arrays | | +| main.rs:539:13:546:1 | { ... } | main.rs:539:1:546:1 | exit fn arrays (normal) | | +| main.rs:540:5:540:26 | let ... = ... | main.rs:540:18:540:18 | 1 | | +| main.rs:540:9:540:13 | a | main.rs:541:5:541:20 | ExprStmt | match | +| main.rs:540:17:540:25 | [...] | main.rs:540:9:540:13 | a | | +| main.rs:540:18:540:18 | 1 | main.rs:540:21:540:21 | 2 | | +| main.rs:540:21:540:21 | 2 | main.rs:540:24:540:24 | 3 | | +| main.rs:540:24:540:24 | 3 | main.rs:540:17:540:25 | [...] | | +| main.rs:541:5:541:13 | print_i64 | main.rs:541:15:541:15 | a | | +| main.rs:541:5:541:19 | print_i64(...) | main.rs:542:5:542:13 | ExprStmt | | +| main.rs:541:5:541:20 | ExprStmt | main.rs:541:5:541:13 | print_i64 | | +| main.rs:541:15:541:15 | a | main.rs:541:17:541:17 | 0 | | +| main.rs:541:15:541:18 | a[0] | main.rs:541:5:541:19 | print_i64(...) | | +| main.rs:541:17:541:17 | 0 | main.rs:541:15:541:18 | a[0] | | +| main.rs:542:5:542:5 | a | main.rs:542:7:542:7 | 1 | | +| main.rs:542:5:542:8 | a[1] | main.rs:542:12:542:12 | 5 | | +| main.rs:542:5:542:12 | ... = ... | main.rs:543:5:543:20 | ExprStmt | | +| main.rs:542:5:542:13 | ExprStmt | main.rs:542:5:542:5 | a | | +| main.rs:542:7:542:7 | 1 | main.rs:542:5:542:8 | a[1] | | +| main.rs:542:12:542:12 | 5 | main.rs:542:5:542:12 | ... = ... | | +| main.rs:543:5:543:13 | print_i64 | main.rs:543:15:543:15 | a | | +| main.rs:543:5:543:19 | print_i64(...) | main.rs:544:5:544:18 | ExprStmt | | +| main.rs:543:5:543:20 | ExprStmt | main.rs:543:5:543:13 | print_i64 | | +| main.rs:543:15:543:15 | a | main.rs:543:17:543:17 | 1 | | +| main.rs:543:15:543:18 | a[1] | main.rs:543:5:543:19 | print_i64(...) | | +| main.rs:543:17:543:17 | 1 | main.rs:543:15:543:18 | a[1] | | +| main.rs:544:5:544:5 | a | main.rs:544:10:544:10 | 4 | | +| main.rs:544:5:544:17 | ... = ... | main.rs:545:5:545:20 | ExprStmt | | +| main.rs:544:5:544:18 | ExprStmt | main.rs:544:5:544:5 | a | | +| main.rs:544:9:544:17 | [...] | main.rs:544:5:544:17 | ... = ... | | +| main.rs:544:10:544:10 | 4 | main.rs:544:13:544:13 | 5 | | +| main.rs:544:13:544:13 | 5 | main.rs:544:16:544:16 | 6 | | +| main.rs:544:16:544:16 | 6 | main.rs:544:9:544:17 | [...] | | +| main.rs:545:5:545:13 | print_i64 | main.rs:545:15:545:15 | a | | +| main.rs:545:5:545:19 | print_i64(...) | main.rs:539:13:546:1 | { ... } | | +| main.rs:545:5:545:20 | ExprStmt | main.rs:545:5:545:13 | print_i64 | | +| main.rs:545:15:545:15 | a | main.rs:545:17:545:17 | 2 | | +| main.rs:545:15:545:18 | a[2] | main.rs:545:5:545:19 | print_i64(...) | | +| main.rs:545:17:545:17 | 2 | main.rs:545:15:545:18 | a[2] | | +| main.rs:548:1:555:1 | enter fn ref_arg | main.rs:549:5:549:15 | let ... = 16 | | +| main.rs:548:1:555:1 | exit fn ref_arg (normal) | main.rs:548:1:555:1 | exit fn ref_arg | | +| main.rs:548:14:555:1 | { ... } | main.rs:548:1:555:1 | exit fn ref_arg (normal) | | +| main.rs:549:5:549:15 | let ... = 16 | main.rs:549:13:549:14 | 16 | | +| main.rs:549:9:549:9 | x | main.rs:550:5:550:22 | ExprStmt | match | +| main.rs:549:13:549:14 | 16 | main.rs:549:9:549:9 | x | | +| main.rs:550:5:550:17 | print_i64_ref | main.rs:550:20:550:20 | x | | +| main.rs:550:5:550:21 | print_i64_ref(...) | main.rs:551:5:551:17 | ExprStmt | | +| main.rs:550:5:550:22 | ExprStmt | main.rs:550:5:550:17 | print_i64_ref | | +| main.rs:550:19:550:20 | &x | main.rs:550:5:550:21 | print_i64_ref(...) | | +| main.rs:550:20:550:20 | x | main.rs:550:19:550:20 | &x | | +| main.rs:551:5:551:13 | print_i64 | main.rs:551:15:551:15 | x | | +| main.rs:551:5:551:16 | print_i64(...) | main.rs:553:5:553:15 | let ... = 17 | | +| main.rs:551:5:551:17 | ExprStmt | main.rs:551:5:551:13 | print_i64 | | +| main.rs:551:15:551:15 | x | main.rs:551:5:551:16 | print_i64(...) | | +| main.rs:553:5:553:15 | let ... = 17 | main.rs:553:13:553:14 | 17 | | +| main.rs:553:9:553:9 | z | main.rs:554:5:554:22 | ExprStmt | match | +| main.rs:553:13:553:14 | 17 | main.rs:553:9:553:9 | z | | +| main.rs:554:5:554:17 | print_i64_ref | main.rs:554:20:554:20 | z | | +| main.rs:554:5:554:21 | print_i64_ref(...) | main.rs:548:14:555:1 | { ... } | | +| main.rs:554:5:554:22 | ExprStmt | main.rs:554:5:554:17 | print_i64_ref | | +| main.rs:554:19:554:20 | &z | main.rs:554:5:554:21 | print_i64_ref(...) | | +| main.rs:554:20:554:20 | z | main.rs:554:19:554:20 | &z | | +| main.rs:562:3:564:3 | enter fn bar | main.rs:562:15:562:18 | self | | +| main.rs:562:3:564:3 | exit fn bar (normal) | main.rs:562:3:564:3 | exit fn bar | | +| main.rs:562:10:562:18 | SelfParam | main.rs:563:5:563:32 | ExprStmt | | +| main.rs:562:15:562:18 | self | main.rs:562:10:562:18 | SelfParam | | +| main.rs:562:21:564:3 | { ... } | main.rs:562:3:564:3 | exit fn bar (normal) | | +| main.rs:563:5:563:9 | * ... | main.rs:563:29:563:29 | 3 | | +| main.rs:563:5:563:31 | ... = ... | main.rs:562:21:564:3 | { ... } | | +| main.rs:563:5:563:32 | ExprStmt | main.rs:563:6:563:9 | self | | +| main.rs:563:6:563:9 | self | main.rs:563:5:563:9 | * ... | | +| main.rs:563:13:563:31 | MyStruct {...} | main.rs:563:5:563:31 | ... = ... | | +| main.rs:563:29:563:29 | 3 | main.rs:563:13:563:31 | MyStruct {...} | | +| main.rs:567:1:572:1 | enter fn ref_methodcall_receiver | main.rs:568:3:568:34 | let ... = ... | | +| main.rs:567:1:572:1 | exit fn ref_methodcall_receiver (normal) | main.rs:567:1:572:1 | exit fn ref_methodcall_receiver | | +| main.rs:567:30:572:1 | { ... } | main.rs:567:1:572:1 | exit fn ref_methodcall_receiver (normal) | | +| main.rs:568:3:568:34 | let ... = ... | main.rs:568:31:568:31 | 1 | | +| main.rs:568:7:568:11 | a | main.rs:569:3:569:10 | ExprStmt | match | +| main.rs:568:15:568:33 | MyStruct {...} | main.rs:568:7:568:11 | a | | +| main.rs:568:31:568:31 | 1 | main.rs:568:15:568:33 | MyStruct {...} | | +| main.rs:569:3:569:3 | a | main.rs:569:3:569:9 | a.bar(...) | | +| main.rs:569:3:569:9 | a.bar(...) | main.rs:571:3:571:19 | ExprStmt | | +| main.rs:569:3:569:10 | ExprStmt | main.rs:569:3:569:3 | a | | +| main.rs:571:3:571:11 | print_i64 | main.rs:571:13:571:13 | a | | +| main.rs:571:3:571:18 | print_i64(...) | main.rs:567:30:572:1 | { ... } | | +| main.rs:571:3:571:19 | ExprStmt | main.rs:571:3:571:11 | print_i64 | | +| main.rs:571:13:571:13 | a | main.rs:571:13:571:17 | a.val | | +| main.rs:571:13:571:17 | a.val | main.rs:571:3:571:18 | print_i64(...) | | +| main.rs:592:1:602:1 | enter fn macro_invocation | main.rs:593:5:594:26 | let ... = ... | | +| main.rs:592:1:602:1 | exit fn macro_invocation (normal) | main.rs:592:1:602:1 | exit fn macro_invocation | | +| main.rs:592:23:602:1 | { ... } | main.rs:592:1:602:1 | exit fn macro_invocation (normal) | | +| main.rs:593:5:594:26 | let ... = ... | main.rs:594:23:594:24 | let ... = 37 | | +| main.rs:593:9:593:22 | var_from_macro | main.rs:595:5:595:30 | ExprStmt | match | +| main.rs:594:9:594:25 | MacroExpr | main.rs:593:9:593:22 | var_from_macro | | +| main.rs:594:9:594:25 | let_in_macro!... | main.rs:594:9:594:25 | MacroExpr | | +| main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | match | +| main.rs:594:9:594:25 | var_in_macro | main.rs:594:23:594:24 | { ... } | | +| main.rs:594:23:594:24 | 37 | main.rs:594:9:594:25 | var_in_macro | | +| main.rs:594:23:594:24 | let ... = 37 | main.rs:594:23:594:24 | 37 | | +| main.rs:594:23:594:24 | { ... } | main.rs:594:9:594:25 | let_in_macro!... | | +| main.rs:595:5:595:13 | print_i64 | main.rs:595:15:595:28 | var_from_macro | | +| main.rs:595:5:595:29 | print_i64(...) | main.rs:596:5:596:26 | let ... = 33 | | +| main.rs:595:5:595:30 | ExprStmt | main.rs:595:5:595:13 | print_i64 | | +| main.rs:595:15:595:28 | var_from_macro | main.rs:595:5:595:29 | print_i64(...) | | +| main.rs:596:5:596:26 | let ... = 33 | main.rs:596:24:596:25 | 33 | | +| main.rs:596:9:596:20 | var_in_macro | main.rs:600:5:600:44 | ExprStmt | match | +| main.rs:596:24:596:25 | 33 | main.rs:596:9:596:20 | var_in_macro | | +| main.rs:600:5:600:13 | print_i64 | main.rs:600:15:600:42 | let ... = 0 | | +| main.rs:600:5:600:43 | print_i64(...) | main.rs:601:5:601:28 | ExprStmt | | +| main.rs:600:5:600:44 | ExprStmt | main.rs:600:5:600:13 | print_i64 | | +| main.rs:600:15:600:42 | 0 | main.rs:600:15:600:42 | var_in_macro | | +| main.rs:600:15:600:42 | MacroExpr | main.rs:600:5:600:43 | print_i64(...) | | +| main.rs:600:15:600:42 | let ... = 0 | main.rs:600:15:600:42 | 0 | | +| main.rs:600:15:600:42 | let_in_macro2!... | main.rs:600:15:600:42 | MacroExpr | | +| main.rs:600:15:600:42 | var_in_macro | main.rs:600:30:600:41 | var_in_macro | match | +| main.rs:600:30:600:41 | var_in_macro | main.rs:600:30:600:41 | { ... } | | +| main.rs:600:30:600:41 | { ... } | main.rs:600:15:600:42 | let_in_macro2!... | | +| main.rs:601:5:601:13 | print_i64 | main.rs:601:15:601:26 | var_in_macro | | +| main.rs:601:5:601:27 | print_i64(...) | main.rs:592:23:602:1 | { ... } | | +| main.rs:601:5:601:28 | ExprStmt | main.rs:601:5:601:13 | print_i64 | | +| main.rs:601:15:601:26 | var_in_macro | main.rs:601:5:601:27 | print_i64(...) | | +| main.rs:604:1:640:1 | enter fn main | main.rs:605:5:605:25 | ExprStmt | | +| main.rs:604:1:640:1 | exit fn main (normal) | main.rs:604:1:640:1 | exit fn main | | +| main.rs:604:11:640:1 | { ... } | main.rs:604:1:640:1 | exit fn main (normal) | | +| main.rs:605:5:605:22 | immutable_variable | main.rs:605:5:605:24 | immutable_variable(...) | | +| main.rs:605:5:605:24 | immutable_variable(...) | main.rs:606:5:606:23 | ExprStmt | | +| main.rs:605:5:605:25 | ExprStmt | main.rs:605:5:605:22 | immutable_variable | | +| main.rs:606:5:606:20 | mutable_variable | main.rs:606:5:606:22 | mutable_variable(...) | | +| main.rs:606:5:606:22 | mutable_variable(...) | main.rs:607:5:607:40 | ExprStmt | | +| main.rs:606:5:606:23 | ExprStmt | main.rs:606:5:606:20 | mutable_variable | | +| main.rs:607:5:607:37 | mutable_variable_immutable_borrow | main.rs:607:5:607:39 | mutable_variable_immutable_borrow(...) | | +| main.rs:607:5:607:39 | mutable_variable_immutable_borrow(...) | main.rs:608:5:608:23 | ExprStmt | | +| main.rs:607:5:607:40 | ExprStmt | main.rs:607:5:607:37 | mutable_variable_immutable_borrow | | +| main.rs:608:5:608:20 | variable_shadow1 | main.rs:608:5:608:22 | variable_shadow1(...) | | +| main.rs:608:5:608:22 | variable_shadow1(...) | main.rs:609:5:609:23 | ExprStmt | | +| main.rs:608:5:608:23 | ExprStmt | main.rs:608:5:608:20 | variable_shadow1 | | +| main.rs:609:5:609:20 | variable_shadow2 | main.rs:609:5:609:22 | variable_shadow2(...) | | +| main.rs:609:5:609:22 | variable_shadow2(...) | main.rs:610:5:610:19 | ExprStmt | | +| main.rs:609:5:609:23 | ExprStmt | main.rs:609:5:609:20 | variable_shadow2 | | +| main.rs:610:5:610:16 | let_pattern1 | main.rs:610:5:610:18 | let_pattern1(...) | | +| main.rs:610:5:610:18 | let_pattern1(...) | main.rs:611:5:611:19 | ExprStmt | | +| main.rs:610:5:610:19 | ExprStmt | main.rs:610:5:610:16 | let_pattern1 | | +| main.rs:611:5:611:16 | let_pattern2 | main.rs:611:5:611:18 | let_pattern2(...) | | +| main.rs:611:5:611:18 | let_pattern2(...) | main.rs:612:5:612:19 | ExprStmt | | +| main.rs:611:5:611:19 | ExprStmt | main.rs:611:5:611:16 | let_pattern2 | | +| main.rs:612:5:612:16 | let_pattern3 | main.rs:612:5:612:18 | let_pattern3(...) | | +| main.rs:612:5:612:18 | let_pattern3(...) | main.rs:613:5:613:19 | ExprStmt | | +| main.rs:612:5:612:19 | ExprStmt | main.rs:612:5:612:16 | let_pattern3 | | +| main.rs:613:5:613:16 | let_pattern4 | main.rs:613:5:613:18 | let_pattern4(...) | | +| main.rs:613:5:613:18 | let_pattern4(...) | main.rs:614:5:614:21 | ExprStmt | | +| main.rs:613:5:613:19 | ExprStmt | main.rs:613:5:613:16 | let_pattern4 | | +| main.rs:614:5:614:18 | match_pattern1 | main.rs:614:5:614:20 | match_pattern1(...) | | +| main.rs:614:5:614:20 | match_pattern1(...) | main.rs:615:5:615:21 | ExprStmt | | +| main.rs:614:5:614:21 | ExprStmt | main.rs:614:5:614:18 | match_pattern1 | | +| main.rs:615:5:615:18 | match_pattern2 | main.rs:615:5:615:20 | match_pattern2(...) | | +| main.rs:615:5:615:20 | match_pattern2(...) | main.rs:616:5:616:21 | ExprStmt | | +| main.rs:615:5:615:21 | ExprStmt | main.rs:615:5:615:18 | match_pattern2 | | +| main.rs:616:5:616:18 | match_pattern3 | main.rs:616:5:616:20 | match_pattern3(...) | | +| main.rs:616:5:616:20 | match_pattern3(...) | main.rs:617:5:617:21 | ExprStmt | | +| main.rs:616:5:616:21 | ExprStmt | main.rs:616:5:616:18 | match_pattern3 | | +| main.rs:617:5:617:18 | match_pattern4 | main.rs:617:5:617:20 | match_pattern4(...) | | +| main.rs:617:5:617:20 | match_pattern4(...) | main.rs:618:5:618:21 | ExprStmt | | +| main.rs:617:5:617:21 | ExprStmt | main.rs:617:5:617:18 | match_pattern4 | | +| main.rs:618:5:618:18 | match_pattern5 | main.rs:618:5:618:20 | match_pattern5(...) | | +| main.rs:618:5:618:20 | match_pattern5(...) | main.rs:619:5:619:21 | ExprStmt | | +| main.rs:618:5:618:21 | ExprStmt | main.rs:618:5:618:18 | match_pattern5 | | +| main.rs:619:5:619:18 | match_pattern6 | main.rs:619:5:619:20 | match_pattern6(...) | | +| main.rs:619:5:619:20 | match_pattern6(...) | main.rs:620:5:620:21 | ExprStmt | | +| main.rs:619:5:619:21 | ExprStmt | main.rs:619:5:619:18 | match_pattern6 | | +| main.rs:620:5:620:18 | match_pattern7 | main.rs:620:5:620:20 | match_pattern7(...) | | +| main.rs:620:5:620:20 | match_pattern7(...) | main.rs:621:5:621:21 | ExprStmt | | +| main.rs:620:5:620:21 | ExprStmt | main.rs:620:5:620:18 | match_pattern7 | | +| main.rs:621:5:621:18 | match_pattern8 | main.rs:621:5:621:20 | match_pattern8(...) | | +| main.rs:621:5:621:20 | match_pattern8(...) | main.rs:622:5:622:21 | ExprStmt | | +| main.rs:621:5:621:21 | ExprStmt | main.rs:621:5:621:18 | match_pattern8 | | +| main.rs:622:5:622:18 | match_pattern9 | main.rs:622:5:622:20 | match_pattern9(...) | | +| main.rs:622:5:622:20 | match_pattern9(...) | main.rs:623:5:623:36 | ExprStmt | | +| main.rs:622:5:622:21 | ExprStmt | main.rs:622:5:622:18 | match_pattern9 | | +| main.rs:623:5:623:18 | param_pattern1 | main.rs:623:20:623:22 | "a" | | +| main.rs:623:5:623:35 | param_pattern1(...) | main.rs:624:5:624:37 | ExprStmt | | +| main.rs:623:5:623:36 | ExprStmt | main.rs:623:5:623:18 | param_pattern1 | | +| main.rs:623:20:623:22 | "a" | main.rs:623:26:623:28 | "b" | | +| main.rs:623:25:623:34 | TupleExpr | main.rs:623:5:623:35 | param_pattern1(...) | | +| main.rs:623:26:623:28 | "b" | main.rs:623:31:623:33 | "c" | | +| main.rs:623:31:623:33 | "c" | main.rs:623:25:623:34 | TupleExpr | | +| main.rs:624:5:624:18 | param_pattern2 | main.rs:624:20:624:31 | ...::Left | | +| main.rs:624:5:624:36 | param_pattern2(...) | main.rs:625:5:625:26 | ExprStmt | | +| main.rs:624:5:624:37 | ExprStmt | main.rs:624:5:624:18 | param_pattern2 | | +| main.rs:624:20:624:31 | ...::Left | main.rs:624:33:624:34 | 45 | | +| main.rs:624:20:624:35 | ...::Left(...) | main.rs:624:5:624:36 | param_pattern2(...) | | +| main.rs:624:33:624:34 | 45 | main.rs:624:20:624:35 | ...::Left(...) | | +| main.rs:625:5:625:23 | destruct_assignment | main.rs:625:5:625:25 | destruct_assignment(...) | | +| main.rs:625:5:625:25 | destruct_assignment(...) | main.rs:626:5:626:23 | ExprStmt | | +| main.rs:625:5:625:26 | ExprStmt | main.rs:625:5:625:23 | destruct_assignment | | +| main.rs:626:5:626:20 | closure_variable | main.rs:626:5:626:22 | closure_variable(...) | | +| main.rs:626:5:626:22 | closure_variable(...) | main.rs:627:5:627:22 | ExprStmt | | +| main.rs:626:5:626:23 | ExprStmt | main.rs:626:5:626:20 | closure_variable | | +| main.rs:627:5:627:19 | nested_function | main.rs:627:5:627:21 | nested_function(...) | | +| main.rs:627:5:627:21 | nested_function(...) | main.rs:628:5:628:19 | ExprStmt | | +| main.rs:627:5:627:22 | ExprStmt | main.rs:627:5:627:19 | nested_function | | +| main.rs:628:5:628:16 | for_variable | main.rs:628:5:628:18 | for_variable(...) | | +| main.rs:628:5:628:18 | for_variable(...) | main.rs:629:5:629:17 | ExprStmt | | +| main.rs:628:5:628:19 | ExprStmt | main.rs:628:5:628:16 | for_variable | | +| main.rs:629:5:629:14 | add_assign | main.rs:629:5:629:16 | add_assign(...) | | +| main.rs:629:5:629:16 | add_assign(...) | main.rs:630:5:630:13 | ExprStmt | | +| main.rs:629:5:629:17 | ExprStmt | main.rs:629:5:629:14 | add_assign | | +| main.rs:630:5:630:10 | mutate | main.rs:630:5:630:12 | mutate(...) | | +| main.rs:630:5:630:12 | mutate(...) | main.rs:631:5:631:17 | ExprStmt | | +| main.rs:630:5:630:13 | ExprStmt | main.rs:630:5:630:10 | mutate | | +| main.rs:631:5:631:14 | mutate_arg | main.rs:631:5:631:16 | mutate_arg(...) | | +| main.rs:631:5:631:16 | mutate_arg(...) | main.rs:632:5:632:12 | ExprStmt | | +| main.rs:631:5:631:17 | ExprStmt | main.rs:631:5:631:14 | mutate_arg | | +| main.rs:632:5:632:9 | alias | main.rs:632:5:632:11 | alias(...) | | +| main.rs:632:5:632:11 | alias(...) | main.rs:633:5:633:18 | ExprStmt | | +| main.rs:632:5:632:12 | ExprStmt | main.rs:632:5:632:9 | alias | | +| main.rs:633:5:633:15 | capture_mut | main.rs:633:5:633:17 | capture_mut(...) | | +| main.rs:633:5:633:17 | capture_mut(...) | main.rs:634:5:634:20 | ExprStmt | | +| main.rs:633:5:633:18 | ExprStmt | main.rs:633:5:633:15 | capture_mut | | +| main.rs:634:5:634:17 | capture_immut | main.rs:634:5:634:19 | capture_immut(...) | | +| main.rs:634:5:634:19 | capture_immut(...) | main.rs:635:5:635:26 | ExprStmt | | +| main.rs:634:5:634:20 | ExprStmt | main.rs:634:5:634:17 | capture_immut | | +| main.rs:635:5:635:23 | async_block_capture | main.rs:635:5:635:25 | async_block_capture(...) | | +| main.rs:635:5:635:25 | async_block_capture(...) | main.rs:636:5:636:14 | ExprStmt | | +| main.rs:635:5:635:26 | ExprStmt | main.rs:635:5:635:23 | async_block_capture | | +| main.rs:636:5:636:11 | structs | main.rs:636:5:636:13 | structs(...) | | +| main.rs:636:5:636:13 | structs(...) | main.rs:637:5:637:14 | ExprStmt | | +| main.rs:636:5:636:14 | ExprStmt | main.rs:636:5:636:11 | structs | | +| main.rs:637:5:637:11 | ref_arg | main.rs:637:5:637:13 | ref_arg(...) | | +| main.rs:637:5:637:13 | ref_arg(...) | main.rs:638:5:638:30 | ExprStmt | | +| main.rs:637:5:637:14 | ExprStmt | main.rs:637:5:637:11 | ref_arg | | +| main.rs:638:5:638:27 | ref_methodcall_receiver | main.rs:638:5:638:29 | ref_methodcall_receiver(...) | | +| main.rs:638:5:638:29 | ref_methodcall_receiver(...) | main.rs:639:5:639:23 | ExprStmt | | +| main.rs:638:5:638:30 | ExprStmt | main.rs:638:5:638:27 | ref_methodcall_receiver | | +| main.rs:639:5:639:20 | macro_invocation | main.rs:639:5:639:22 | macro_invocation(...) | | +| main.rs:639:5:639:22 | macro_invocation(...) | main.rs:604:11:640:1 | { ... } | | +| main.rs:639:5:639:23 | ExprStmt | main.rs:639:5:639:20 | macro_invocation | | breakTarget continueTarget diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index 9f7c92cbba44..49ed416e93fa 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -1,12 +1,12 @@ nonSsaVariable -| main.rs:341:13:341:13 | a | -| main.rs:349:13:349:13 | i | -| main.rs:372:13:372:13 | x | -| main.rs:379:13:379:13 | z | -| main.rs:392:13:392:13 | x | -| main.rs:426:13:426:13 | z | -| main.rs:501:13:501:13 | a | -| main.rs:538:11:538:11 | a | +| main.rs:371:13:371:13 | a | +| main.rs:379:13:379:13 | i | +| main.rs:402:13:402:13 | x | +| main.rs:409:13:409:13 | z | +| main.rs:422:13:422:13 | x | +| main.rs:456:13:456:13 | z | +| main.rs:531:13:531:13 | a | +| main.rs:568:11:568:11 | a | definition | main.rs:3:14:3:14 | s | main.rs:3:14:3:14 | s | | main.rs:7:14:7:14 | i | main.rs:7:14:7:14 | i | @@ -102,53 +102,59 @@ definition | main.rs:323:9:323:26 | immutable_variable | main.rs:323:9:323:26 | immutable_variable | | main.rs:324:10:324:10 | x | main.rs:324:10:324:10 | x | | main.rs:326:9:326:10 | n2 | main.rs:326:9:326:10 | n2 | -| main.rs:332:9:332:9 | v | main.rs:332:9:332:9 | v | -| main.rs:334:9:334:12 | text | main.rs:334:9:334:12 | text | -| main.rs:350:9:350:13 | ref_i | main.rs:350:9:350:13 | ref_i | -| main.rs:356:17:356:17 | x | main.rs:356:17:356:17 | x | -| main.rs:363:22:363:22 | x | main.rs:363:22:363:22 | x | -| main.rs:363:39:363:39 | y | main.rs:363:39:363:39 | y | -| main.rs:373:9:373:9 | y | main.rs:373:9:373:9 | y | -| main.rs:380:9:380:9 | w | main.rs:380:9:380:9 | w | -| main.rs:393:9:393:9 | y | main.rs:393:9:393:9 | y | -| main.rs:400:9:400:9 | x | main.rs:400:9:400:9 | x | -| main.rs:402:9:402:11 | cap | main.rs:402:9:402:11 | cap | -| main.rs:402:15:404:5 | x | main.rs:400:9:400:9 | x | -| main.rs:410:9:410:13 | x | main.rs:410:13:410:13 | x | -| main.rs:412:9:412:16 | closure1 | main.rs:412:9:412:16 | closure1 | -| main.rs:412:20:414:5 | x | main.rs:410:13:410:13 | x | -| main.rs:418:9:418:13 | y | main.rs:418:13:418:13 | y | -| main.rs:420:9:420:20 | closure2 | main.rs:420:13:420:20 | closure2 | -| main.rs:421:9:421:9 | y | main.rs:418:13:418:13 | y | -| main.rs:423:5:423:14 | y | main.rs:418:13:418:13 | y | -| main.rs:428:9:428:20 | closure3 | main.rs:428:13:428:20 | closure3 | -| main.rs:436:9:436:13 | i | main.rs:436:13:436:13 | i | -| main.rs:437:9:437:13 | block | main.rs:437:9:437:13 | block | -| main.rs:438:9:438:9 | i | main.rs:436:13:436:13 | i | -| main.rs:441:5:441:15 | i | main.rs:436:13:436:13 | i | -| main.rs:445:8:445:8 | b | main.rs:445:8:445:8 | b | -| main.rs:446:9:446:13 | x | main.rs:446:13:446:13 | x | -| main.rs:449:5:457:5 | phi | main.rs:446:13:446:13 | x | -| main.rs:450:9:450:9 | x | main.rs:446:13:446:13 | x | -| main.rs:454:9:454:9 | x | main.rs:446:13:446:13 | x | -| main.rs:461:13:461:14 | b1 | main.rs:461:13:461:14 | b1 | -| main.rs:461:24:461:25 | b2 | main.rs:461:24:461:25 | b2 | -| main.rs:462:9:462:9 | x | main.rs:462:9:462:9 | x | -| main.rs:482:15:482:23 | SelfParam | main.rs:482:20:482:23 | self | -| main.rs:486:11:486:14 | SelfParam | main.rs:486:11:486:14 | self | -| main.rs:490:18:490:26 | SelfParam | main.rs:490:23:490:26 | self | -| main.rs:491:13:491:17 | f | main.rs:491:17:491:17 | f | -| main.rs:491:21:494:9 | self | main.rs:490:23:490:26 | self | -| main.rs:491:22:491:22 | n | main.rs:491:22:491:22 | n | -| main.rs:510:9:510:13 | a | main.rs:510:13:510:13 | a | -| main.rs:514:5:514:5 | a | main.rs:510:13:510:13 | a | -| main.rs:519:9:519:9 | x | main.rs:519:9:519:9 | x | -| main.rs:523:9:523:9 | z | main.rs:523:9:523:9 | z | -| main.rs:532:10:532:18 | SelfParam | main.rs:532:15:532:18 | self | -| main.rs:563:9:563:22 | var_from_macro | main.rs:563:9:563:22 | var_from_macro | -| main.rs:564:9:564:25 | var_in_macro | main.rs:564:9:564:25 | var_in_macro | -| main.rs:566:9:566:20 | var_in_macro | main.rs:566:9:566:20 | var_in_macro | -| main.rs:570:15:570:42 | var_in_macro | main.rs:570:15:570:42 | var_in_macro | +| main.rs:333:9:333:9 | f | main.rs:333:9:333:9 | f | +| main.rs:334:10:334:10 | x | main.rs:334:10:334:10 | x | +| main.rs:338:10:338:10 | x | main.rs:338:10:338:10 | x | +| main.rs:346:14:346:14 | x | main.rs:346:14:346:14 | x | +| main.rs:354:13:354:13 | f | main.rs:354:13:354:13 | f | +| main.rs:355:14:355:14 | x | main.rs:355:14:355:14 | x | +| main.rs:362:9:362:9 | v | main.rs:362:9:362:9 | v | +| main.rs:364:9:364:12 | text | main.rs:364:9:364:12 | text | +| main.rs:380:9:380:13 | ref_i | main.rs:380:9:380:13 | ref_i | +| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | +| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | +| main.rs:393:39:393:39 | y | main.rs:393:39:393:39 | y | +| main.rs:403:9:403:9 | y | main.rs:403:9:403:9 | y | +| main.rs:410:9:410:9 | w | main.rs:410:9:410:9 | w | +| main.rs:423:9:423:9 | y | main.rs:423:9:423:9 | y | +| main.rs:430:9:430:9 | x | main.rs:430:9:430:9 | x | +| main.rs:432:9:432:11 | cap | main.rs:432:9:432:11 | cap | +| main.rs:432:15:434:5 | x | main.rs:430:9:430:9 | x | +| main.rs:440:9:440:13 | x | main.rs:440:13:440:13 | x | +| main.rs:442:9:442:16 | closure1 | main.rs:442:9:442:16 | closure1 | +| main.rs:442:20:444:5 | x | main.rs:440:13:440:13 | x | +| main.rs:448:9:448:13 | y | main.rs:448:13:448:13 | y | +| main.rs:450:9:450:20 | closure2 | main.rs:450:13:450:20 | closure2 | +| main.rs:451:9:451:9 | y | main.rs:448:13:448:13 | y | +| main.rs:453:5:453:14 | y | main.rs:448:13:448:13 | y | +| main.rs:458:9:458:20 | closure3 | main.rs:458:13:458:20 | closure3 | +| main.rs:466:9:466:13 | i | main.rs:466:13:466:13 | i | +| main.rs:467:9:467:13 | block | main.rs:467:9:467:13 | block | +| main.rs:468:9:468:9 | i | main.rs:466:13:466:13 | i | +| main.rs:471:5:471:15 | i | main.rs:466:13:466:13 | i | +| main.rs:475:8:475:8 | b | main.rs:475:8:475:8 | b | +| main.rs:476:9:476:13 | x | main.rs:476:13:476:13 | x | +| main.rs:479:5:487:5 | phi | main.rs:476:13:476:13 | x | +| main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | +| main.rs:484:9:484:9 | x | main.rs:476:13:476:13 | x | +| main.rs:491:13:491:14 | b1 | main.rs:491:13:491:14 | b1 | +| main.rs:491:24:491:25 | b2 | main.rs:491:24:491:25 | b2 | +| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | +| main.rs:512:15:512:23 | SelfParam | main.rs:512:20:512:23 | self | +| main.rs:516:11:516:14 | SelfParam | main.rs:516:11:516:14 | self | +| main.rs:520:18:520:26 | SelfParam | main.rs:520:23:520:26 | self | +| main.rs:521:13:521:17 | f | main.rs:521:17:521:17 | f | +| main.rs:521:21:524:9 | self | main.rs:520:23:520:26 | self | +| main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | n | +| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a | +| main.rs:544:5:544:5 | a | main.rs:540:13:540:13 | a | +| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | +| main.rs:553:9:553:9 | z | main.rs:553:9:553:9 | z | +| main.rs:562:10:562:18 | SelfParam | main.rs:562:15:562:18 | self | +| main.rs:593:9:593:22 | var_from_macro | main.rs:593:9:593:22 | var_from_macro | +| main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | +| main.rs:596:9:596:20 | var_in_macro | main.rs:596:9:596:20 | var_in_macro | +| main.rs:600:15:600:42 | var_in_macro | main.rs:600:15:600:42 | var_in_macro | read | main.rs:3:14:3:14 | s | main.rs:3:14:3:14 | s | main.rs:4:20:4:20 | s | | main.rs:7:14:7:14 | i | main.rs:7:14:7:14 | i | main.rs:8:20:8:20 | i | @@ -231,65 +237,72 @@ read | main.rs:323:9:323:26 | immutable_variable | main.rs:323:9:323:26 | immutable_variable | main.rs:327:9:327:26 | immutable_variable | | main.rs:324:10:324:10 | x | main.rs:324:10:324:10 | x | main.rs:325:9:325:9 | x | | main.rs:326:9:326:10 | n2 | main.rs:326:9:326:10 | n2 | main.rs:328:15:328:16 | n2 | -| main.rs:332:9:332:9 | v | main.rs:332:9:332:9 | v | main.rs:335:12:335:12 | v | -| main.rs:334:9:334:12 | text | main.rs:334:9:334:12 | text | main.rs:336:19:336:22 | text | -| main.rs:350:9:350:13 | ref_i | main.rs:350:9:350:13 | ref_i | main.rs:352:6:352:10 | ref_i | -| main.rs:356:17:356:17 | x | main.rs:356:17:356:17 | x | main.rs:357:6:357:6 | x | -| main.rs:356:17:356:17 | x | main.rs:356:17:356:17 | x | main.rs:358:10:358:10 | x | -| main.rs:356:17:356:17 | x | main.rs:356:17:356:17 | x | main.rs:359:10:359:10 | x | -| main.rs:356:17:356:17 | x | main.rs:356:17:356:17 | x | main.rs:360:12:360:12 | x | -| main.rs:363:22:363:22 | x | main.rs:363:22:363:22 | x | main.rs:364:6:364:6 | x | -| main.rs:363:22:363:22 | x | main.rs:363:22:363:22 | x | main.rs:365:10:365:10 | x | -| main.rs:363:22:363:22 | x | main.rs:363:22:363:22 | x | main.rs:366:10:366:10 | x | -| main.rs:363:22:363:22 | x | main.rs:363:22:363:22 | x | main.rs:368:9:368:9 | x | -| main.rs:363:39:363:39 | y | main.rs:363:39:363:39 | y | main.rs:367:6:367:6 | y | -| main.rs:373:9:373:9 | y | main.rs:373:9:373:9 | y | main.rs:375:6:375:6 | y | -| main.rs:380:9:380:9 | w | main.rs:380:9:380:9 | w | main.rs:384:9:384:9 | w | -| main.rs:380:9:380:9 | w | main.rs:380:9:380:9 | w | main.rs:386:7:386:7 | w | -| main.rs:393:9:393:9 | y | main.rs:393:9:393:9 | y | main.rs:395:6:395:6 | y | -| main.rs:400:9:400:9 | x | main.rs:400:9:400:9 | x | main.rs:406:15:406:15 | x | -| main.rs:402:9:402:11 | cap | main.rs:402:9:402:11 | cap | main.rs:405:5:405:7 | cap | -| main.rs:402:15:404:5 | x | main.rs:400:9:400:9 | x | main.rs:403:19:403:19 | x | -| main.rs:410:9:410:13 | x | main.rs:410:13:410:13 | x | main.rs:416:15:416:15 | x | -| main.rs:412:9:412:16 | closure1 | main.rs:412:9:412:16 | closure1 | main.rs:415:5:415:12 | closure1 | -| main.rs:412:20:414:5 | x | main.rs:410:13:410:13 | x | main.rs:413:19:413:19 | x | -| main.rs:420:9:420:20 | closure2 | main.rs:420:13:420:20 | closure2 | main.rs:423:5:423:12 | closure2 | -| main.rs:423:5:423:14 | y | main.rs:418:13:418:13 | y | main.rs:424:15:424:15 | y | -| main.rs:428:9:428:20 | closure3 | main.rs:428:13:428:20 | closure3 | main.rs:431:5:431:12 | closure3 | -| main.rs:437:9:437:13 | block | main.rs:437:9:437:13 | block | main.rs:441:5:441:9 | block | -| main.rs:441:5:441:15 | i | main.rs:436:13:436:13 | i | main.rs:442:15:442:15 | i | -| main.rs:445:8:445:8 | b | main.rs:445:8:445:8 | b | main.rs:449:8:449:8 | b | -| main.rs:446:9:446:13 | x | main.rs:446:13:446:13 | x | main.rs:447:15:447:15 | x | -| main.rs:446:9:446:13 | x | main.rs:446:13:446:13 | x | main.rs:448:15:448:15 | x | -| main.rs:449:5:457:5 | phi | main.rs:446:13:446:13 | x | main.rs:458:15:458:15 | x | -| main.rs:450:9:450:9 | x | main.rs:446:13:446:13 | x | main.rs:451:19:451:19 | x | -| main.rs:450:9:450:9 | x | main.rs:446:13:446:13 | x | main.rs:452:19:452:19 | x | -| main.rs:454:9:454:9 | x | main.rs:446:13:446:13 | x | main.rs:455:19:455:19 | x | -| main.rs:454:9:454:9 | x | main.rs:446:13:446:13 | x | main.rs:456:19:456:19 | x | -| main.rs:461:13:461:14 | b1 | main.rs:461:13:461:14 | b1 | main.rs:463:8:463:9 | b1 | -| main.rs:461:24:461:25 | b2 | main.rs:461:24:461:25 | b2 | main.rs:469:8:469:9 | b2 | -| main.rs:462:9:462:9 | x | main.rs:462:9:462:9 | x | main.rs:464:19:464:19 | x | -| main.rs:462:9:462:9 | x | main.rs:462:9:462:9 | x | main.rs:466:19:466:19 | x | -| main.rs:462:9:462:9 | x | main.rs:462:9:462:9 | x | main.rs:470:19:470:19 | x | -| main.rs:462:9:462:9 | x | main.rs:462:9:462:9 | x | main.rs:472:19:472:19 | x | -| main.rs:482:15:482:23 | SelfParam | main.rs:482:20:482:23 | self | main.rs:483:16:483:19 | self | -| main.rs:486:11:486:14 | SelfParam | main.rs:486:11:486:14 | self | main.rs:487:9:487:12 | self | -| main.rs:491:13:491:17 | f | main.rs:491:17:491:17 | f | main.rs:495:9:495:9 | f | -| main.rs:491:13:491:17 | f | main.rs:491:17:491:17 | f | main.rs:496:9:496:9 | f | -| main.rs:491:21:494:9 | self | main.rs:490:23:490:26 | self | main.rs:493:13:493:16 | self | -| main.rs:491:22:491:22 | n | main.rs:491:22:491:22 | n | main.rs:493:25:493:25 | n | -| main.rs:510:9:510:13 | a | main.rs:510:13:510:13 | a | main.rs:511:15:511:15 | a | -| main.rs:510:9:510:13 | a | main.rs:510:13:510:13 | a | main.rs:512:5:512:5 | a | -| main.rs:510:9:510:13 | a | main.rs:510:13:510:13 | a | main.rs:513:15:513:15 | a | -| main.rs:514:5:514:5 | a | main.rs:510:13:510:13 | a | main.rs:515:15:515:15 | a | -| main.rs:519:9:519:9 | x | main.rs:519:9:519:9 | x | main.rs:520:20:520:20 | x | -| main.rs:519:9:519:9 | x | main.rs:519:9:519:9 | x | main.rs:521:15:521:15 | x | -| main.rs:523:9:523:9 | z | main.rs:523:9:523:9 | z | main.rs:524:20:524:20 | z | -| main.rs:532:10:532:18 | SelfParam | main.rs:532:15:532:18 | self | main.rs:533:6:533:9 | self | -| main.rs:563:9:563:22 | var_from_macro | main.rs:563:9:563:22 | var_from_macro | main.rs:565:15:565:28 | var_from_macro | -| main.rs:564:9:564:25 | var_in_macro | main.rs:564:9:564:25 | var_in_macro | main.rs:564:9:564:25 | var_in_macro | -| main.rs:566:9:566:20 | var_in_macro | main.rs:566:9:566:20 | var_in_macro | main.rs:571:15:571:26 | var_in_macro | -| main.rs:570:15:570:42 | var_in_macro | main.rs:570:15:570:42 | var_in_macro | main.rs:570:30:570:41 | var_in_macro | +| main.rs:333:9:333:9 | f | main.rs:333:9:333:9 | f | main.rs:336:15:336:15 | f | +| main.rs:333:9:333:9 | f | main.rs:333:9:333:9 | f | main.rs:342:15:342:15 | f | +| main.rs:334:10:334:10 | x | main.rs:334:10:334:10 | x | main.rs:335:9:335:9 | x | +| main.rs:338:10:338:10 | x | main.rs:338:10:338:10 | x | main.rs:339:9:339:9 | x | +| main.rs:346:14:346:14 | x | main.rs:346:14:346:14 | x | main.rs:347:17:347:17 | x | +| main.rs:354:13:354:13 | f | main.rs:354:13:354:13 | f | main.rs:357:19:357:19 | f | +| main.rs:355:14:355:14 | x | main.rs:355:14:355:14 | x | main.rs:356:13:356:13 | x | +| main.rs:362:9:362:9 | v | main.rs:362:9:362:9 | v | main.rs:365:12:365:12 | v | +| main.rs:364:9:364:12 | text | main.rs:364:9:364:12 | text | main.rs:366:19:366:22 | text | +| main.rs:380:9:380:13 | ref_i | main.rs:380:9:380:13 | ref_i | main.rs:382:6:382:10 | ref_i | +| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:387:6:387:6 | x | +| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:388:10:388:10 | x | +| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:389:10:389:10 | x | +| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:390:12:390:12 | x | +| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:394:6:394:6 | x | +| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:395:10:395:10 | x | +| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:396:10:396:10 | x | +| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:398:9:398:9 | x | +| main.rs:393:39:393:39 | y | main.rs:393:39:393:39 | y | main.rs:397:6:397:6 | y | +| main.rs:403:9:403:9 | y | main.rs:403:9:403:9 | y | main.rs:405:6:405:6 | y | +| main.rs:410:9:410:9 | w | main.rs:410:9:410:9 | w | main.rs:414:9:414:9 | w | +| main.rs:410:9:410:9 | w | main.rs:410:9:410:9 | w | main.rs:416:7:416:7 | w | +| main.rs:423:9:423:9 | y | main.rs:423:9:423:9 | y | main.rs:425:6:425:6 | y | +| main.rs:430:9:430:9 | x | main.rs:430:9:430:9 | x | main.rs:436:15:436:15 | x | +| main.rs:432:9:432:11 | cap | main.rs:432:9:432:11 | cap | main.rs:435:5:435:7 | cap | +| main.rs:432:15:434:5 | x | main.rs:430:9:430:9 | x | main.rs:433:19:433:19 | x | +| main.rs:440:9:440:13 | x | main.rs:440:13:440:13 | x | main.rs:446:15:446:15 | x | +| main.rs:442:9:442:16 | closure1 | main.rs:442:9:442:16 | closure1 | main.rs:445:5:445:12 | closure1 | +| main.rs:442:20:444:5 | x | main.rs:440:13:440:13 | x | main.rs:443:19:443:19 | x | +| main.rs:450:9:450:20 | closure2 | main.rs:450:13:450:20 | closure2 | main.rs:453:5:453:12 | closure2 | +| main.rs:453:5:453:14 | y | main.rs:448:13:448:13 | y | main.rs:454:15:454:15 | y | +| main.rs:458:9:458:20 | closure3 | main.rs:458:13:458:20 | closure3 | main.rs:461:5:461:12 | closure3 | +| main.rs:467:9:467:13 | block | main.rs:467:9:467:13 | block | main.rs:471:5:471:9 | block | +| main.rs:471:5:471:15 | i | main.rs:466:13:466:13 | i | main.rs:472:15:472:15 | i | +| main.rs:475:8:475:8 | b | main.rs:475:8:475:8 | b | main.rs:479:8:479:8 | b | +| main.rs:476:9:476:13 | x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x | +| main.rs:476:9:476:13 | x | main.rs:476:13:476:13 | x | main.rs:478:15:478:15 | x | +| main.rs:479:5:487:5 | phi | main.rs:476:13:476:13 | x | main.rs:488:15:488:15 | x | +| main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | main.rs:481:19:481:19 | x | +| main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | main.rs:482:19:482:19 | x | +| main.rs:484:9:484:9 | x | main.rs:476:13:476:13 | x | main.rs:485:19:485:19 | x | +| main.rs:484:9:484:9 | x | main.rs:476:13:476:13 | x | main.rs:486:19:486:19 | x | +| main.rs:491:13:491:14 | b1 | main.rs:491:13:491:14 | b1 | main.rs:493:8:493:9 | b1 | +| main.rs:491:24:491:25 | b2 | main.rs:491:24:491:25 | b2 | main.rs:499:8:499:9 | b2 | +| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:494:19:494:19 | x | +| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:496:19:496:19 | x | +| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:500:19:500:19 | x | +| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:502:19:502:19 | x | +| main.rs:512:15:512:23 | SelfParam | main.rs:512:20:512:23 | self | main.rs:513:16:513:19 | self | +| main.rs:516:11:516:14 | SelfParam | main.rs:516:11:516:14 | self | main.rs:517:9:517:12 | self | +| main.rs:521:13:521:17 | f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f | +| main.rs:521:13:521:17 | f | main.rs:521:17:521:17 | f | main.rs:526:9:526:9 | f | +| main.rs:521:21:524:9 | self | main.rs:520:23:520:26 | self | main.rs:523:13:523:16 | self | +| main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | n | main.rs:523:25:523:25 | n | +| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a | +| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a | main.rs:542:5:542:5 | a | +| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a | main.rs:543:15:543:15 | a | +| main.rs:544:5:544:5 | a | main.rs:540:13:540:13 | a | main.rs:545:15:545:15 | a | +| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:550:20:550:20 | x | +| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:551:15:551:15 | x | +| main.rs:553:9:553:9 | z | main.rs:553:9:553:9 | z | main.rs:554:20:554:20 | z | +| main.rs:562:10:562:18 | SelfParam | main.rs:562:15:562:18 | self | main.rs:563:6:563:9 | self | +| main.rs:593:9:593:22 | var_from_macro | main.rs:593:9:593:22 | var_from_macro | main.rs:595:15:595:28 | var_from_macro | +| main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | +| main.rs:596:9:596:20 | var_in_macro | main.rs:596:9:596:20 | var_in_macro | main.rs:601:15:601:26 | var_in_macro | +| main.rs:600:15:600:42 | var_in_macro | main.rs:600:15:600:42 | var_in_macro | main.rs:600:30:600:41 | var_in_macro | firstRead | main.rs:3:14:3:14 | s | main.rs:3:14:3:14 | s | main.rs:4:20:4:20 | s | | main.rs:7:14:7:14 | i | main.rs:7:14:7:14 | i | main.rs:8:20:8:20 | i | @@ -361,49 +374,55 @@ firstRead | main.rs:323:9:323:26 | immutable_variable | main.rs:323:9:323:26 | immutable_variable | main.rs:327:9:327:26 | immutable_variable | | main.rs:324:10:324:10 | x | main.rs:324:10:324:10 | x | main.rs:325:9:325:9 | x | | main.rs:326:9:326:10 | n2 | main.rs:326:9:326:10 | n2 | main.rs:328:15:328:16 | n2 | -| main.rs:332:9:332:9 | v | main.rs:332:9:332:9 | v | main.rs:335:12:335:12 | v | -| main.rs:334:9:334:12 | text | main.rs:334:9:334:12 | text | main.rs:336:19:336:22 | text | -| main.rs:350:9:350:13 | ref_i | main.rs:350:9:350:13 | ref_i | main.rs:352:6:352:10 | ref_i | -| main.rs:356:17:356:17 | x | main.rs:356:17:356:17 | x | main.rs:357:6:357:6 | x | -| main.rs:363:22:363:22 | x | main.rs:363:22:363:22 | x | main.rs:364:6:364:6 | x | -| main.rs:363:39:363:39 | y | main.rs:363:39:363:39 | y | main.rs:367:6:367:6 | y | -| main.rs:373:9:373:9 | y | main.rs:373:9:373:9 | y | main.rs:375:6:375:6 | y | -| main.rs:380:9:380:9 | w | main.rs:380:9:380:9 | w | main.rs:384:9:384:9 | w | -| main.rs:393:9:393:9 | y | main.rs:393:9:393:9 | y | main.rs:395:6:395:6 | y | -| main.rs:400:9:400:9 | x | main.rs:400:9:400:9 | x | main.rs:406:15:406:15 | x | -| main.rs:402:9:402:11 | cap | main.rs:402:9:402:11 | cap | main.rs:405:5:405:7 | cap | -| main.rs:402:15:404:5 | x | main.rs:400:9:400:9 | x | main.rs:403:19:403:19 | x | -| main.rs:410:9:410:13 | x | main.rs:410:13:410:13 | x | main.rs:416:15:416:15 | x | -| main.rs:412:9:412:16 | closure1 | main.rs:412:9:412:16 | closure1 | main.rs:415:5:415:12 | closure1 | -| main.rs:412:20:414:5 | x | main.rs:410:13:410:13 | x | main.rs:413:19:413:19 | x | -| main.rs:420:9:420:20 | closure2 | main.rs:420:13:420:20 | closure2 | main.rs:423:5:423:12 | closure2 | -| main.rs:423:5:423:14 | y | main.rs:418:13:418:13 | y | main.rs:424:15:424:15 | y | -| main.rs:428:9:428:20 | closure3 | main.rs:428:13:428:20 | closure3 | main.rs:431:5:431:12 | closure3 | -| main.rs:437:9:437:13 | block | main.rs:437:9:437:13 | block | main.rs:441:5:441:9 | block | -| main.rs:441:5:441:15 | i | main.rs:436:13:436:13 | i | main.rs:442:15:442:15 | i | -| main.rs:445:8:445:8 | b | main.rs:445:8:445:8 | b | main.rs:449:8:449:8 | b | -| main.rs:446:9:446:13 | x | main.rs:446:13:446:13 | x | main.rs:447:15:447:15 | x | -| main.rs:449:5:457:5 | phi | main.rs:446:13:446:13 | x | main.rs:458:15:458:15 | x | -| main.rs:450:9:450:9 | x | main.rs:446:13:446:13 | x | main.rs:451:19:451:19 | x | -| main.rs:454:9:454:9 | x | main.rs:446:13:446:13 | x | main.rs:455:19:455:19 | x | -| main.rs:461:13:461:14 | b1 | main.rs:461:13:461:14 | b1 | main.rs:463:8:463:9 | b1 | -| main.rs:461:24:461:25 | b2 | main.rs:461:24:461:25 | b2 | main.rs:469:8:469:9 | b2 | -| main.rs:462:9:462:9 | x | main.rs:462:9:462:9 | x | main.rs:464:19:464:19 | x | -| main.rs:462:9:462:9 | x | main.rs:462:9:462:9 | x | main.rs:466:19:466:19 | x | -| main.rs:482:15:482:23 | SelfParam | main.rs:482:20:482:23 | self | main.rs:483:16:483:19 | self | -| main.rs:486:11:486:14 | SelfParam | main.rs:486:11:486:14 | self | main.rs:487:9:487:12 | self | -| main.rs:491:13:491:17 | f | main.rs:491:17:491:17 | f | main.rs:495:9:495:9 | f | -| main.rs:491:21:494:9 | self | main.rs:490:23:490:26 | self | main.rs:493:13:493:16 | self | -| main.rs:491:22:491:22 | n | main.rs:491:22:491:22 | n | main.rs:493:25:493:25 | n | -| main.rs:510:9:510:13 | a | main.rs:510:13:510:13 | a | main.rs:511:15:511:15 | a | -| main.rs:514:5:514:5 | a | main.rs:510:13:510:13 | a | main.rs:515:15:515:15 | a | -| main.rs:519:9:519:9 | x | main.rs:519:9:519:9 | x | main.rs:520:20:520:20 | x | -| main.rs:523:9:523:9 | z | main.rs:523:9:523:9 | z | main.rs:524:20:524:20 | z | -| main.rs:532:10:532:18 | SelfParam | main.rs:532:15:532:18 | self | main.rs:533:6:533:9 | self | -| main.rs:563:9:563:22 | var_from_macro | main.rs:563:9:563:22 | var_from_macro | main.rs:565:15:565:28 | var_from_macro | -| main.rs:564:9:564:25 | var_in_macro | main.rs:564:9:564:25 | var_in_macro | main.rs:564:9:564:25 | var_in_macro | -| main.rs:566:9:566:20 | var_in_macro | main.rs:566:9:566:20 | var_in_macro | main.rs:571:15:571:26 | var_in_macro | -| main.rs:570:15:570:42 | var_in_macro | main.rs:570:15:570:42 | var_in_macro | main.rs:570:30:570:41 | var_in_macro | +| main.rs:333:9:333:9 | f | main.rs:333:9:333:9 | f | main.rs:336:15:336:15 | f | +| main.rs:334:10:334:10 | x | main.rs:334:10:334:10 | x | main.rs:335:9:335:9 | x | +| main.rs:338:10:338:10 | x | main.rs:338:10:338:10 | x | main.rs:339:9:339:9 | x | +| main.rs:346:14:346:14 | x | main.rs:346:14:346:14 | x | main.rs:347:17:347:17 | x | +| main.rs:354:13:354:13 | f | main.rs:354:13:354:13 | f | main.rs:357:19:357:19 | f | +| main.rs:355:14:355:14 | x | main.rs:355:14:355:14 | x | main.rs:356:13:356:13 | x | +| main.rs:362:9:362:9 | v | main.rs:362:9:362:9 | v | main.rs:365:12:365:12 | v | +| main.rs:364:9:364:12 | text | main.rs:364:9:364:12 | text | main.rs:366:19:366:22 | text | +| main.rs:380:9:380:13 | ref_i | main.rs:380:9:380:13 | ref_i | main.rs:382:6:382:10 | ref_i | +| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:387:6:387:6 | x | +| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:394:6:394:6 | x | +| main.rs:393:39:393:39 | y | main.rs:393:39:393:39 | y | main.rs:397:6:397:6 | y | +| main.rs:403:9:403:9 | y | main.rs:403:9:403:9 | y | main.rs:405:6:405:6 | y | +| main.rs:410:9:410:9 | w | main.rs:410:9:410:9 | w | main.rs:414:9:414:9 | w | +| main.rs:423:9:423:9 | y | main.rs:423:9:423:9 | y | main.rs:425:6:425:6 | y | +| main.rs:430:9:430:9 | x | main.rs:430:9:430:9 | x | main.rs:436:15:436:15 | x | +| main.rs:432:9:432:11 | cap | main.rs:432:9:432:11 | cap | main.rs:435:5:435:7 | cap | +| main.rs:432:15:434:5 | x | main.rs:430:9:430:9 | x | main.rs:433:19:433:19 | x | +| main.rs:440:9:440:13 | x | main.rs:440:13:440:13 | x | main.rs:446:15:446:15 | x | +| main.rs:442:9:442:16 | closure1 | main.rs:442:9:442:16 | closure1 | main.rs:445:5:445:12 | closure1 | +| main.rs:442:20:444:5 | x | main.rs:440:13:440:13 | x | main.rs:443:19:443:19 | x | +| main.rs:450:9:450:20 | closure2 | main.rs:450:13:450:20 | closure2 | main.rs:453:5:453:12 | closure2 | +| main.rs:453:5:453:14 | y | main.rs:448:13:448:13 | y | main.rs:454:15:454:15 | y | +| main.rs:458:9:458:20 | closure3 | main.rs:458:13:458:20 | closure3 | main.rs:461:5:461:12 | closure3 | +| main.rs:467:9:467:13 | block | main.rs:467:9:467:13 | block | main.rs:471:5:471:9 | block | +| main.rs:471:5:471:15 | i | main.rs:466:13:466:13 | i | main.rs:472:15:472:15 | i | +| main.rs:475:8:475:8 | b | main.rs:475:8:475:8 | b | main.rs:479:8:479:8 | b | +| main.rs:476:9:476:13 | x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x | +| main.rs:479:5:487:5 | phi | main.rs:476:13:476:13 | x | main.rs:488:15:488:15 | x | +| main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | main.rs:481:19:481:19 | x | +| main.rs:484:9:484:9 | x | main.rs:476:13:476:13 | x | main.rs:485:19:485:19 | x | +| main.rs:491:13:491:14 | b1 | main.rs:491:13:491:14 | b1 | main.rs:493:8:493:9 | b1 | +| main.rs:491:24:491:25 | b2 | main.rs:491:24:491:25 | b2 | main.rs:499:8:499:9 | b2 | +| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:494:19:494:19 | x | +| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:496:19:496:19 | x | +| main.rs:512:15:512:23 | SelfParam | main.rs:512:20:512:23 | self | main.rs:513:16:513:19 | self | +| main.rs:516:11:516:14 | SelfParam | main.rs:516:11:516:14 | self | main.rs:517:9:517:12 | self | +| main.rs:521:13:521:17 | f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f | +| main.rs:521:21:524:9 | self | main.rs:520:23:520:26 | self | main.rs:523:13:523:16 | self | +| main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | n | main.rs:523:25:523:25 | n | +| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a | +| main.rs:544:5:544:5 | a | main.rs:540:13:540:13 | a | main.rs:545:15:545:15 | a | +| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:550:20:550:20 | x | +| main.rs:553:9:553:9 | z | main.rs:553:9:553:9 | z | main.rs:554:20:554:20 | z | +| main.rs:562:10:562:18 | SelfParam | main.rs:562:15:562:18 | self | main.rs:563:6:563:9 | self | +| main.rs:593:9:593:22 | var_from_macro | main.rs:593:9:593:22 | var_from_macro | main.rs:595:15:595:28 | var_from_macro | +| main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | +| main.rs:596:9:596:20 | var_in_macro | main.rs:596:9:596:20 | var_in_macro | main.rs:601:15:601:26 | var_in_macro | +| main.rs:600:15:600:42 | var_in_macro | main.rs:600:15:600:42 | var_in_macro | main.rs:600:30:600:41 | var_in_macro | lastRead | main.rs:3:14:3:14 | s | main.rs:3:14:3:14 | s | main.rs:4:20:4:20 | s | | main.rs:7:14:7:14 | i | main.rs:7:14:7:14 | i | main.rs:8:20:8:20 | i | @@ -476,49 +495,55 @@ lastRead | main.rs:323:9:323:26 | immutable_variable | main.rs:323:9:323:26 | immutable_variable | main.rs:327:9:327:26 | immutable_variable | | main.rs:324:10:324:10 | x | main.rs:324:10:324:10 | x | main.rs:325:9:325:9 | x | | main.rs:326:9:326:10 | n2 | main.rs:326:9:326:10 | n2 | main.rs:328:15:328:16 | n2 | -| main.rs:332:9:332:9 | v | main.rs:332:9:332:9 | v | main.rs:335:12:335:12 | v | -| main.rs:334:9:334:12 | text | main.rs:334:9:334:12 | text | main.rs:336:19:336:22 | text | -| main.rs:350:9:350:13 | ref_i | main.rs:350:9:350:13 | ref_i | main.rs:352:6:352:10 | ref_i | -| main.rs:356:17:356:17 | x | main.rs:356:17:356:17 | x | main.rs:360:12:360:12 | x | -| main.rs:363:22:363:22 | x | main.rs:363:22:363:22 | x | main.rs:368:9:368:9 | x | -| main.rs:363:39:363:39 | y | main.rs:363:39:363:39 | y | main.rs:367:6:367:6 | y | -| main.rs:373:9:373:9 | y | main.rs:373:9:373:9 | y | main.rs:375:6:375:6 | y | -| main.rs:380:9:380:9 | w | main.rs:380:9:380:9 | w | main.rs:386:7:386:7 | w | -| main.rs:393:9:393:9 | y | main.rs:393:9:393:9 | y | main.rs:395:6:395:6 | y | -| main.rs:400:9:400:9 | x | main.rs:400:9:400:9 | x | main.rs:406:15:406:15 | x | -| main.rs:402:9:402:11 | cap | main.rs:402:9:402:11 | cap | main.rs:405:5:405:7 | cap | -| main.rs:402:15:404:5 | x | main.rs:400:9:400:9 | x | main.rs:403:19:403:19 | x | -| main.rs:410:9:410:13 | x | main.rs:410:13:410:13 | x | main.rs:416:15:416:15 | x | -| main.rs:412:9:412:16 | closure1 | main.rs:412:9:412:16 | closure1 | main.rs:415:5:415:12 | closure1 | -| main.rs:412:20:414:5 | x | main.rs:410:13:410:13 | x | main.rs:413:19:413:19 | x | -| main.rs:420:9:420:20 | closure2 | main.rs:420:13:420:20 | closure2 | main.rs:423:5:423:12 | closure2 | -| main.rs:423:5:423:14 | y | main.rs:418:13:418:13 | y | main.rs:424:15:424:15 | y | -| main.rs:428:9:428:20 | closure3 | main.rs:428:13:428:20 | closure3 | main.rs:431:5:431:12 | closure3 | -| main.rs:437:9:437:13 | block | main.rs:437:9:437:13 | block | main.rs:441:5:441:9 | block | -| main.rs:441:5:441:15 | i | main.rs:436:13:436:13 | i | main.rs:442:15:442:15 | i | -| main.rs:445:8:445:8 | b | main.rs:445:8:445:8 | b | main.rs:449:8:449:8 | b | -| main.rs:446:9:446:13 | x | main.rs:446:13:446:13 | x | main.rs:448:15:448:15 | x | -| main.rs:449:5:457:5 | phi | main.rs:446:13:446:13 | x | main.rs:458:15:458:15 | x | -| main.rs:450:9:450:9 | x | main.rs:446:13:446:13 | x | main.rs:452:19:452:19 | x | -| main.rs:454:9:454:9 | x | main.rs:446:13:446:13 | x | main.rs:456:19:456:19 | x | -| main.rs:461:13:461:14 | b1 | main.rs:461:13:461:14 | b1 | main.rs:463:8:463:9 | b1 | -| main.rs:461:24:461:25 | b2 | main.rs:461:24:461:25 | b2 | main.rs:469:8:469:9 | b2 | -| main.rs:462:9:462:9 | x | main.rs:462:9:462:9 | x | main.rs:470:19:470:19 | x | -| main.rs:462:9:462:9 | x | main.rs:462:9:462:9 | x | main.rs:472:19:472:19 | x | -| main.rs:482:15:482:23 | SelfParam | main.rs:482:20:482:23 | self | main.rs:483:16:483:19 | self | -| main.rs:486:11:486:14 | SelfParam | main.rs:486:11:486:14 | self | main.rs:487:9:487:12 | self | -| main.rs:491:13:491:17 | f | main.rs:491:17:491:17 | f | main.rs:496:9:496:9 | f | -| main.rs:491:21:494:9 | self | main.rs:490:23:490:26 | self | main.rs:493:13:493:16 | self | -| main.rs:491:22:491:22 | n | main.rs:491:22:491:22 | n | main.rs:493:25:493:25 | n | -| main.rs:510:9:510:13 | a | main.rs:510:13:510:13 | a | main.rs:513:15:513:15 | a | -| main.rs:514:5:514:5 | a | main.rs:510:13:510:13 | a | main.rs:515:15:515:15 | a | -| main.rs:519:9:519:9 | x | main.rs:519:9:519:9 | x | main.rs:521:15:521:15 | x | -| main.rs:523:9:523:9 | z | main.rs:523:9:523:9 | z | main.rs:524:20:524:20 | z | -| main.rs:532:10:532:18 | SelfParam | main.rs:532:15:532:18 | self | main.rs:533:6:533:9 | self | -| main.rs:563:9:563:22 | var_from_macro | main.rs:563:9:563:22 | var_from_macro | main.rs:565:15:565:28 | var_from_macro | -| main.rs:564:9:564:25 | var_in_macro | main.rs:564:9:564:25 | var_in_macro | main.rs:564:9:564:25 | var_in_macro | -| main.rs:566:9:566:20 | var_in_macro | main.rs:566:9:566:20 | var_in_macro | main.rs:571:15:571:26 | var_in_macro | -| main.rs:570:15:570:42 | var_in_macro | main.rs:570:15:570:42 | var_in_macro | main.rs:570:30:570:41 | var_in_macro | +| main.rs:333:9:333:9 | f | main.rs:333:9:333:9 | f | main.rs:342:15:342:15 | f | +| main.rs:334:10:334:10 | x | main.rs:334:10:334:10 | x | main.rs:335:9:335:9 | x | +| main.rs:338:10:338:10 | x | main.rs:338:10:338:10 | x | main.rs:339:9:339:9 | x | +| main.rs:346:14:346:14 | x | main.rs:346:14:346:14 | x | main.rs:347:17:347:17 | x | +| main.rs:354:13:354:13 | f | main.rs:354:13:354:13 | f | main.rs:357:19:357:19 | f | +| main.rs:355:14:355:14 | x | main.rs:355:14:355:14 | x | main.rs:356:13:356:13 | x | +| main.rs:362:9:362:9 | v | main.rs:362:9:362:9 | v | main.rs:365:12:365:12 | v | +| main.rs:364:9:364:12 | text | main.rs:364:9:364:12 | text | main.rs:366:19:366:22 | text | +| main.rs:380:9:380:13 | ref_i | main.rs:380:9:380:13 | ref_i | main.rs:382:6:382:10 | ref_i | +| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:390:12:390:12 | x | +| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:398:9:398:9 | x | +| main.rs:393:39:393:39 | y | main.rs:393:39:393:39 | y | main.rs:397:6:397:6 | y | +| main.rs:403:9:403:9 | y | main.rs:403:9:403:9 | y | main.rs:405:6:405:6 | y | +| main.rs:410:9:410:9 | w | main.rs:410:9:410:9 | w | main.rs:416:7:416:7 | w | +| main.rs:423:9:423:9 | y | main.rs:423:9:423:9 | y | main.rs:425:6:425:6 | y | +| main.rs:430:9:430:9 | x | main.rs:430:9:430:9 | x | main.rs:436:15:436:15 | x | +| main.rs:432:9:432:11 | cap | main.rs:432:9:432:11 | cap | main.rs:435:5:435:7 | cap | +| main.rs:432:15:434:5 | x | main.rs:430:9:430:9 | x | main.rs:433:19:433:19 | x | +| main.rs:440:9:440:13 | x | main.rs:440:13:440:13 | x | main.rs:446:15:446:15 | x | +| main.rs:442:9:442:16 | closure1 | main.rs:442:9:442:16 | closure1 | main.rs:445:5:445:12 | closure1 | +| main.rs:442:20:444:5 | x | main.rs:440:13:440:13 | x | main.rs:443:19:443:19 | x | +| main.rs:450:9:450:20 | closure2 | main.rs:450:13:450:20 | closure2 | main.rs:453:5:453:12 | closure2 | +| main.rs:453:5:453:14 | y | main.rs:448:13:448:13 | y | main.rs:454:15:454:15 | y | +| main.rs:458:9:458:20 | closure3 | main.rs:458:13:458:20 | closure3 | main.rs:461:5:461:12 | closure3 | +| main.rs:467:9:467:13 | block | main.rs:467:9:467:13 | block | main.rs:471:5:471:9 | block | +| main.rs:471:5:471:15 | i | main.rs:466:13:466:13 | i | main.rs:472:15:472:15 | i | +| main.rs:475:8:475:8 | b | main.rs:475:8:475:8 | b | main.rs:479:8:479:8 | b | +| main.rs:476:9:476:13 | x | main.rs:476:13:476:13 | x | main.rs:478:15:478:15 | x | +| main.rs:479:5:487:5 | phi | main.rs:476:13:476:13 | x | main.rs:488:15:488:15 | x | +| main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | main.rs:482:19:482:19 | x | +| main.rs:484:9:484:9 | x | main.rs:476:13:476:13 | x | main.rs:486:19:486:19 | x | +| main.rs:491:13:491:14 | b1 | main.rs:491:13:491:14 | b1 | main.rs:493:8:493:9 | b1 | +| main.rs:491:24:491:25 | b2 | main.rs:491:24:491:25 | b2 | main.rs:499:8:499:9 | b2 | +| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:500:19:500:19 | x | +| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:502:19:502:19 | x | +| main.rs:512:15:512:23 | SelfParam | main.rs:512:20:512:23 | self | main.rs:513:16:513:19 | self | +| main.rs:516:11:516:14 | SelfParam | main.rs:516:11:516:14 | self | main.rs:517:9:517:12 | self | +| main.rs:521:13:521:17 | f | main.rs:521:17:521:17 | f | main.rs:526:9:526:9 | f | +| main.rs:521:21:524:9 | self | main.rs:520:23:520:26 | self | main.rs:523:13:523:16 | self | +| main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | n | main.rs:523:25:523:25 | n | +| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a | main.rs:543:15:543:15 | a | +| main.rs:544:5:544:5 | a | main.rs:540:13:540:13 | a | main.rs:545:15:545:15 | a | +| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:551:15:551:15 | x | +| main.rs:553:9:553:9 | z | main.rs:553:9:553:9 | z | main.rs:554:20:554:20 | z | +| main.rs:562:10:562:18 | SelfParam | main.rs:562:15:562:18 | self | main.rs:563:6:563:9 | self | +| main.rs:593:9:593:22 | var_from_macro | main.rs:593:9:593:22 | var_from_macro | main.rs:595:15:595:28 | var_from_macro | +| main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | +| main.rs:596:9:596:20 | var_in_macro | main.rs:596:9:596:20 | var_in_macro | main.rs:601:15:601:26 | var_in_macro | +| main.rs:600:15:600:42 | var_in_macro | main.rs:600:15:600:42 | var_in_macro | main.rs:600:30:600:41 | var_in_macro | adjacentReads | main.rs:35:9:35:10 | x3 | main.rs:35:9:35:10 | x3 | main.rs:36:15:36:16 | x3 | main.rs:38:9:38:10 | x3 | | main.rs:43:9:43:10 | x4 | main.rs:43:9:43:10 | x4 | main.rs:44:15:44:16 | x4 | main.rs:49:15:49:16 | x4 | @@ -532,24 +557,25 @@ adjacentReads | main.rs:289:9:289:10 | b4 | main.rs:280:13:280:14 | b4 | main.rs:297:15:297:16 | b4 | main.rs:311:15:311:16 | b4 | | main.rs:290:9:290:11 | a10 | main.rs:279:13:279:15 | a10 | main.rs:292:9:292:11 | a10 | main.rs:296:15:296:17 | a10 | | main.rs:290:9:290:11 | a10 | main.rs:279:13:279:15 | a10 | main.rs:296:15:296:17 | a10 | main.rs:310:15:310:17 | a10 | -| main.rs:356:17:356:17 | x | main.rs:356:17:356:17 | x | main.rs:357:6:357:6 | x | main.rs:358:10:358:10 | x | -| main.rs:356:17:356:17 | x | main.rs:356:17:356:17 | x | main.rs:358:10:358:10 | x | main.rs:359:10:359:10 | x | -| main.rs:356:17:356:17 | x | main.rs:356:17:356:17 | x | main.rs:359:10:359:10 | x | main.rs:360:12:360:12 | x | -| main.rs:363:22:363:22 | x | main.rs:363:22:363:22 | x | main.rs:364:6:364:6 | x | main.rs:365:10:365:10 | x | -| main.rs:363:22:363:22 | x | main.rs:363:22:363:22 | x | main.rs:365:10:365:10 | x | main.rs:366:10:366:10 | x | -| main.rs:363:22:363:22 | x | main.rs:363:22:363:22 | x | main.rs:366:10:366:10 | x | main.rs:368:9:368:9 | x | -| main.rs:380:9:380:9 | w | main.rs:380:9:380:9 | w | main.rs:384:9:384:9 | w | main.rs:386:7:386:7 | w | -| main.rs:446:9:446:13 | x | main.rs:446:13:446:13 | x | main.rs:447:15:447:15 | x | main.rs:448:15:448:15 | x | -| main.rs:450:9:450:9 | x | main.rs:446:13:446:13 | x | main.rs:451:19:451:19 | x | main.rs:452:19:452:19 | x | -| main.rs:454:9:454:9 | x | main.rs:446:13:446:13 | x | main.rs:455:19:455:19 | x | main.rs:456:19:456:19 | x | -| main.rs:462:9:462:9 | x | main.rs:462:9:462:9 | x | main.rs:464:19:464:19 | x | main.rs:470:19:470:19 | x | -| main.rs:462:9:462:9 | x | main.rs:462:9:462:9 | x | main.rs:464:19:464:19 | x | main.rs:472:19:472:19 | x | -| main.rs:462:9:462:9 | x | main.rs:462:9:462:9 | x | main.rs:466:19:466:19 | x | main.rs:470:19:470:19 | x | -| main.rs:462:9:462:9 | x | main.rs:462:9:462:9 | x | main.rs:466:19:466:19 | x | main.rs:472:19:472:19 | x | -| main.rs:491:13:491:17 | f | main.rs:491:17:491:17 | f | main.rs:495:9:495:9 | f | main.rs:496:9:496:9 | f | -| main.rs:510:9:510:13 | a | main.rs:510:13:510:13 | a | main.rs:511:15:511:15 | a | main.rs:512:5:512:5 | a | -| main.rs:510:9:510:13 | a | main.rs:510:13:510:13 | a | main.rs:512:5:512:5 | a | main.rs:513:15:513:15 | a | -| main.rs:519:9:519:9 | x | main.rs:519:9:519:9 | x | main.rs:520:20:520:20 | x | main.rs:521:15:521:15 | x | +| main.rs:333:9:333:9 | f | main.rs:333:9:333:9 | f | main.rs:336:15:336:15 | f | main.rs:342:15:342:15 | f | +| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:387:6:387:6 | x | main.rs:388:10:388:10 | x | +| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:388:10:388:10 | x | main.rs:389:10:389:10 | x | +| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:389:10:389:10 | x | main.rs:390:12:390:12 | x | +| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:394:6:394:6 | x | main.rs:395:10:395:10 | x | +| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:395:10:395:10 | x | main.rs:396:10:396:10 | x | +| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:396:10:396:10 | x | main.rs:398:9:398:9 | x | +| main.rs:410:9:410:9 | w | main.rs:410:9:410:9 | w | main.rs:414:9:414:9 | w | main.rs:416:7:416:7 | w | +| main.rs:476:9:476:13 | x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x | main.rs:478:15:478:15 | x | +| main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | main.rs:481:19:481:19 | x | main.rs:482:19:482:19 | x | +| main.rs:484:9:484:9 | x | main.rs:476:13:476:13 | x | main.rs:485:19:485:19 | x | main.rs:486:19:486:19 | x | +| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:494:19:494:19 | x | main.rs:500:19:500:19 | x | +| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:494:19:494:19 | x | main.rs:502:19:502:19 | x | +| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:496:19:496:19 | x | main.rs:500:19:500:19 | x | +| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:496:19:496:19 | x | main.rs:502:19:502:19 | x | +| main.rs:521:13:521:17 | f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f | main.rs:526:9:526:9 | f | +| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a | main.rs:542:5:542:5 | a | +| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a | main.rs:542:5:542:5 | a | main.rs:543:15:543:15 | a | +| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:550:20:550:20 | x | main.rs:551:15:551:15 | x | phi | main.rs:191:9:191:44 | [match(true)] phi | main.rs:191:9:191:44 | a3 | main.rs:191:22:191:23 | a3 | | main.rs:191:9:191:44 | [match(true)] phi | main.rs:191:9:191:44 | a3 | main.rs:191:42:191:43 | a3 | @@ -575,19 +601,19 @@ phi | main.rs:255:35:255:82 | [match(true)] phi | main.rs:255:9:255:109 | a13 | main.rs:255:79:255:81 | a13 | | main.rs:272:6:272:41 | [match(true)] phi | main.rs:272:6:272:41 | a9 | main.rs:272:19:272:20 | a9 | | main.rs:272:6:272:41 | [match(true)] phi | main.rs:272:6:272:41 | a9 | main.rs:272:39:272:40 | a9 | -| main.rs:449:5:457:5 | phi | main.rs:446:13:446:13 | x | main.rs:450:9:450:9 | x | -| main.rs:449:5:457:5 | phi | main.rs:446:13:446:13 | x | main.rs:454:9:454:9 | x | +| main.rs:479:5:487:5 | phi | main.rs:476:13:476:13 | x | main.rs:480:9:480:9 | x | +| main.rs:479:5:487:5 | phi | main.rs:476:13:476:13 | x | main.rs:484:9:484:9 | x | phiReadNode | main.rs:104:11:105:12 | SSA phi read(s1) | main.rs:102:9:102:10 | s1 | -| main.rs:463:5:467:5 | SSA phi read(x) | main.rs:462:9:462:9 | x | +| main.rs:493:5:497:5 | SSA phi read(x) | main.rs:492:9:492:9 | x | phiReadNodeRead | main.rs:104:11:105:12 | SSA phi read(s1) | main.rs:102:9:102:10 | s1 | main.rs:105:11:105:12 | s1 | -| main.rs:463:5:467:5 | SSA phi read(x) | main.rs:462:9:462:9 | x | main.rs:470:19:470:19 | x | -| main.rs:463:5:467:5 | SSA phi read(x) | main.rs:462:9:462:9 | x | main.rs:472:19:472:19 | x | +| main.rs:493:5:497:5 | SSA phi read(x) | main.rs:492:9:492:9 | x | main.rs:500:19:500:19 | x | +| main.rs:493:5:497:5 | SSA phi read(x) | main.rs:492:9:492:9 | x | main.rs:502:19:502:19 | x | phiReadInput | main.rs:104:11:105:12 | SSA phi read(s1) | main.rs:102:9:102:10 | s1 | | main.rs:104:11:105:12 | SSA phi read(s1) | main.rs:104:11:105:12 | SSA phi read(s1) | -| main.rs:463:5:467:5 | SSA phi read(x) | main.rs:462:9:462:9 | x | +| main.rs:493:5:497:5 | SSA phi read(x) | main.rs:492:9:492:9 | x | ultimateDef | main.rs:191:9:191:44 | [match(true)] phi | main.rs:191:22:191:23 | a3 | | main.rs:191:9:191:44 | [match(true)] phi | main.rs:191:42:191:43 | a3 | @@ -616,8 +642,8 @@ ultimateDef | main.rs:255:35:255:82 | [match(true)] phi | main.rs:255:79:255:81 | a13 | | main.rs:272:6:272:41 | [match(true)] phi | main.rs:272:19:272:20 | a9 | | main.rs:272:6:272:41 | [match(true)] phi | main.rs:272:39:272:40 | a9 | -| main.rs:449:5:457:5 | phi | main.rs:450:9:450:9 | x | -| main.rs:449:5:457:5 | phi | main.rs:454:9:454:9 | x | +| main.rs:479:5:487:5 | phi | main.rs:480:9:480:9 | x | +| main.rs:479:5:487:5 | phi | main.rs:484:9:484:9 | x | assigns | main.rs:16:9:16:10 | x1 | main.rs:16:14:16:16 | "a" | | main.rs:21:9:21:14 | x2 | main.rs:21:18:21:18 | 4 | @@ -645,32 +671,34 @@ assigns | main.rs:318:9:318:10 | n1 | main.rs:319:9:319:26 | example_closure(...) | | main.rs:323:9:323:26 | immutable_variable | main.rs:324:9:325:9 | \|...\| x | | main.rs:326:9:326:10 | n2 | main.rs:327:9:327:29 | immutable_variable(...) | -| main.rs:332:9:332:9 | v | main.rs:332:13:332:41 | &... | -| main.rs:350:9:350:13 | ref_i | main.rs:351:9:351:14 | &mut i | -| main.rs:373:9:373:9 | y | main.rs:374:9:374:28 | mutate_param(...) | -| main.rs:380:9:380:9 | w | main.rs:381:9:381:19 | &mut ... | -| main.rs:393:9:393:9 | y | main.rs:394:9:394:14 | &mut x | -| main.rs:400:9:400:9 | x | main.rs:400:13:400:15 | 100 | -| main.rs:402:9:402:11 | cap | main.rs:402:15:404:5 | \|...\| ... | -| main.rs:410:9:410:13 | x | main.rs:410:17:410:17 | 1 | -| main.rs:412:9:412:16 | closure1 | main.rs:412:20:414:5 | \|...\| ... | -| main.rs:418:9:418:13 | y | main.rs:418:17:418:17 | 2 | -| main.rs:420:9:420:20 | closure2 | main.rs:420:24:422:5 | \|...\| ... | -| main.rs:421:9:421:9 | y | main.rs:421:13:421:13 | 3 | -| main.rs:428:9:428:20 | closure3 | main.rs:428:24:430:5 | \|...\| ... | -| main.rs:436:9:436:13 | i | main.rs:436:22:436:22 | 0 | -| main.rs:437:9:437:13 | block | main.rs:437:17:439:5 | { ... } | -| main.rs:438:9:438:9 | i | main.rs:438:13:438:13 | 1 | -| main.rs:446:9:446:13 | x | main.rs:446:17:446:17 | 1 | -| main.rs:450:9:450:9 | x | main.rs:450:13:450:13 | 2 | -| main.rs:454:9:454:9 | x | main.rs:454:13:454:13 | 3 | -| main.rs:462:9:462:9 | x | main.rs:462:13:462:13 | 1 | -| main.rs:491:13:491:17 | f | main.rs:491:21:494:9 | \|...\| ... | -| main.rs:510:9:510:13 | a | main.rs:510:17:510:25 | [...] | -| main.rs:514:5:514:5 | a | main.rs:514:9:514:17 | [...] | -| main.rs:519:9:519:9 | x | main.rs:519:13:519:14 | 16 | -| main.rs:523:9:523:9 | z | main.rs:523:13:523:14 | 17 | -| main.rs:563:9:563:22 | var_from_macro | main.rs:564:9:564:25 | MacroExpr | -| main.rs:564:9:564:25 | var_in_macro | main.rs:564:23:564:24 | 37 | -| main.rs:566:9:566:20 | var_in_macro | main.rs:566:24:566:25 | 33 | -| main.rs:570:15:570:42 | var_in_macro | main.rs:570:15:570:42 | 0 | +| main.rs:333:9:333:9 | f | main.rs:334:9:335:9 | \|...\| x | +| main.rs:354:13:354:13 | f | main.rs:355:13:356:13 | \|...\| x | +| main.rs:362:9:362:9 | v | main.rs:362:13:362:41 | &... | +| main.rs:380:9:380:13 | ref_i | main.rs:381:9:381:14 | &mut i | +| main.rs:403:9:403:9 | y | main.rs:404:9:404:28 | mutate_param(...) | +| main.rs:410:9:410:9 | w | main.rs:411:9:411:19 | &mut ... | +| main.rs:423:9:423:9 | y | main.rs:424:9:424:14 | &mut x | +| main.rs:430:9:430:9 | x | main.rs:430:13:430:15 | 100 | +| main.rs:432:9:432:11 | cap | main.rs:432:15:434:5 | \|...\| ... | +| main.rs:440:9:440:13 | x | main.rs:440:17:440:17 | 1 | +| main.rs:442:9:442:16 | closure1 | main.rs:442:20:444:5 | \|...\| ... | +| main.rs:448:9:448:13 | y | main.rs:448:17:448:17 | 2 | +| main.rs:450:9:450:20 | closure2 | main.rs:450:24:452:5 | \|...\| ... | +| main.rs:451:9:451:9 | y | main.rs:451:13:451:13 | 3 | +| main.rs:458:9:458:20 | closure3 | main.rs:458:24:460:5 | \|...\| ... | +| main.rs:466:9:466:13 | i | main.rs:466:22:466:22 | 0 | +| main.rs:467:9:467:13 | block | main.rs:467:17:469:5 | { ... } | +| main.rs:468:9:468:9 | i | main.rs:468:13:468:13 | 1 | +| main.rs:476:9:476:13 | x | main.rs:476:17:476:17 | 1 | +| main.rs:480:9:480:9 | x | main.rs:480:13:480:13 | 2 | +| main.rs:484:9:484:9 | x | main.rs:484:13:484:13 | 3 | +| main.rs:492:9:492:9 | x | main.rs:492:13:492:13 | 1 | +| main.rs:521:13:521:17 | f | main.rs:521:21:524:9 | \|...\| ... | +| main.rs:540:9:540:13 | a | main.rs:540:17:540:25 | [...] | +| main.rs:544:5:544:5 | a | main.rs:544:9:544:17 | [...] | +| main.rs:549:9:549:9 | x | main.rs:549:13:549:14 | 16 | +| main.rs:553:9:553:9 | z | main.rs:553:13:553:14 | 17 | +| main.rs:593:9:593:22 | var_from_macro | main.rs:594:9:594:25 | MacroExpr | +| main.rs:594:9:594:25 | var_in_macro | main.rs:594:23:594:24 | 37 | +| main.rs:596:9:596:20 | var_in_macro | main.rs:596:24:596:25 | 33 | +| main.rs:600:15:600:42 | var_in_macro | main.rs:600:15:600:42 | 0 | diff --git a/rust/ql/test/library-tests/variables/main.rs b/rust/ql/test/library-tests/variables/main.rs index f3ab36c2a646..89f9fffa8862 100644 --- a/rust/ql/test/library-tests/variables/main.rs +++ b/rust/ql/test/library-tests/variables/main.rs @@ -328,6 +328,36 @@ fn closure_variable() { print_i64(n2); // $ read_access=n2 } +fn nested_function() { + // local variables shadow local functions + let f = // f1 + |x: i64| // x_1 + x; // $ read_access=x_1 + print_i64(f(1)); // $ read_access=f1 + + fn f(x: i64) -> i64 { // x_2 + x + 1 // $ read_access=x_2 + } + + print_i64(f(2)); // $ read_access=f1 + + { + print_i64(f(3)); + fn f(x: i64) -> i64 { // x_3 + 2 * x // $ read_access=x_3 + } + + { + print_i64(f(4)); + } + + let f = // f2 + |x: i64| // x_4 + x; // $ read_access=x_4 + print_i64(f(5)); // $ read_access=f2 + } +} + fn for_variable() { let v = &["apples", "cake", "coffee"]; // v @@ -594,6 +624,7 @@ fn main() { param_pattern2(Either::Left(45)); destruct_assignment(); closure_variable(); + nested_function(); for_variable(); add_assign(); mutate(); diff --git a/rust/ql/test/library-tests/variables/variables.expected b/rust/ql/test/library-tests/variables/variables.expected index c58867898efd..5c8553262db1 100644 --- a/rust/ql/test/library-tests/variables/variables.expected +++ b/rust/ql/test/library-tests/variables/variables.expected @@ -65,50 +65,56 @@ variable | main.rs:323:9:323:26 | immutable_variable | | main.rs:324:10:324:10 | x | | main.rs:326:9:326:10 | n2 | -| main.rs:332:9:332:9 | v | -| main.rs:334:9:334:12 | text | -| main.rs:341:13:341:13 | a | -| main.rs:349:13:349:13 | i | -| main.rs:350:9:350:13 | ref_i | -| main.rs:356:17:356:17 | x | -| main.rs:363:22:363:22 | x | -| main.rs:363:39:363:39 | y | -| main.rs:372:13:372:13 | x | -| main.rs:373:9:373:9 | y | -| main.rs:379:13:379:13 | z | -| main.rs:380:9:380:9 | w | -| main.rs:392:13:392:13 | x | -| main.rs:393:9:393:9 | y | -| main.rs:400:9:400:9 | x | -| main.rs:402:9:402:11 | cap | -| main.rs:410:13:410:13 | x | -| main.rs:412:9:412:16 | closure1 | -| main.rs:418:13:418:13 | y | -| main.rs:420:13:420:20 | closure2 | -| main.rs:426:13:426:13 | z | -| main.rs:428:13:428:20 | closure3 | -| main.rs:436:13:436:13 | i | -| main.rs:437:9:437:13 | block | -| main.rs:445:8:445:8 | b | -| main.rs:446:13:446:13 | x | -| main.rs:461:13:461:14 | b1 | -| main.rs:461:24:461:25 | b2 | -| main.rs:462:9:462:9 | x | -| main.rs:482:20:482:23 | self | -| main.rs:486:11:486:14 | self | -| main.rs:490:23:490:26 | self | -| main.rs:491:17:491:17 | f | -| main.rs:491:22:491:22 | n | -| main.rs:501:13:501:13 | a | -| main.rs:510:13:510:13 | a | -| main.rs:519:9:519:9 | x | -| main.rs:523:9:523:9 | z | -| main.rs:532:15:532:18 | self | -| main.rs:538:11:538:11 | a | -| main.rs:563:9:563:22 | var_from_macro | -| main.rs:564:9:564:25 | var_in_macro | -| main.rs:566:9:566:20 | var_in_macro | -| main.rs:570:15:570:42 | var_in_macro | +| main.rs:333:9:333:9 | f | +| main.rs:334:10:334:10 | x | +| main.rs:338:10:338:10 | x | +| main.rs:346:14:346:14 | x | +| main.rs:354:13:354:13 | f | +| main.rs:355:14:355:14 | x | +| main.rs:362:9:362:9 | v | +| main.rs:364:9:364:12 | text | +| main.rs:371:13:371:13 | a | +| main.rs:379:13:379:13 | i | +| main.rs:380:9:380:13 | ref_i | +| main.rs:386:17:386:17 | x | +| main.rs:393:22:393:22 | x | +| main.rs:393:39:393:39 | y | +| main.rs:402:13:402:13 | x | +| main.rs:403:9:403:9 | y | +| main.rs:409:13:409:13 | z | +| main.rs:410:9:410:9 | w | +| main.rs:422:13:422:13 | x | +| main.rs:423:9:423:9 | y | +| main.rs:430:9:430:9 | x | +| main.rs:432:9:432:11 | cap | +| main.rs:440:13:440:13 | x | +| main.rs:442:9:442:16 | closure1 | +| main.rs:448:13:448:13 | y | +| main.rs:450:13:450:20 | closure2 | +| main.rs:456:13:456:13 | z | +| main.rs:458:13:458:20 | closure3 | +| main.rs:466:13:466:13 | i | +| main.rs:467:9:467:13 | block | +| main.rs:475:8:475:8 | b | +| main.rs:476:13:476:13 | x | +| main.rs:491:13:491:14 | b1 | +| main.rs:491:24:491:25 | b2 | +| main.rs:492:9:492:9 | x | +| main.rs:512:20:512:23 | self | +| main.rs:516:11:516:14 | self | +| main.rs:520:23:520:26 | self | +| main.rs:521:17:521:17 | f | +| main.rs:521:22:521:22 | n | +| main.rs:531:13:531:13 | a | +| main.rs:540:13:540:13 | a | +| main.rs:549:9:549:9 | x | +| main.rs:553:9:553:9 | z | +| main.rs:562:15:562:18 | self | +| main.rs:568:11:568:11 | a | +| main.rs:593:9:593:22 | var_from_macro | +| main.rs:594:9:594:25 | var_in_macro | +| main.rs:596:9:596:20 | var_in_macro | +| main.rs:600:15:600:42 | var_in_macro | variableAccess | main.rs:4:20:4:20 | s | main.rs:3:14:3:14 | s | | main.rs:8:20:8:20 | i | main.rs:7:14:7:14 | i | @@ -196,104 +202,111 @@ variableAccess | main.rs:325:9:325:9 | x | main.rs:324:10:324:10 | x | | main.rs:327:9:327:26 | immutable_variable | main.rs:323:9:323:26 | immutable_variable | | main.rs:328:15:328:16 | n2 | main.rs:326:9:326:10 | n2 | -| main.rs:335:12:335:12 | v | main.rs:332:9:332:9 | v | -| main.rs:336:19:336:22 | text | main.rs:334:9:334:12 | text | -| main.rs:342:5:342:5 | a | main.rs:341:13:341:13 | a | -| main.rs:343:15:343:15 | a | main.rs:341:13:341:13 | a | -| main.rs:344:11:344:11 | a | main.rs:341:13:341:13 | a | -| main.rs:345:15:345:15 | a | main.rs:341:13:341:13 | a | -| main.rs:351:14:351:14 | i | main.rs:349:13:349:13 | i | -| main.rs:352:6:352:10 | ref_i | main.rs:350:9:350:13 | ref_i | -| main.rs:353:15:353:15 | i | main.rs:349:13:349:13 | i | -| main.rs:357:6:357:6 | x | main.rs:356:17:356:17 | x | -| main.rs:358:10:358:10 | x | main.rs:356:17:356:17 | x | -| main.rs:359:10:359:10 | x | main.rs:356:17:356:17 | x | -| main.rs:360:12:360:12 | x | main.rs:356:17:356:17 | x | -| main.rs:364:6:364:6 | x | main.rs:363:22:363:22 | x | -| main.rs:365:10:365:10 | x | main.rs:363:22:363:22 | x | -| main.rs:366:10:366:10 | x | main.rs:363:22:363:22 | x | -| main.rs:367:6:367:6 | y | main.rs:363:39:363:39 | y | -| main.rs:368:9:368:9 | x | main.rs:363:22:363:22 | x | -| main.rs:374:27:374:27 | x | main.rs:372:13:372:13 | x | -| main.rs:375:6:375:6 | y | main.rs:373:9:373:9 | y | -| main.rs:377:15:377:15 | x | main.rs:372:13:372:13 | x | -| main.rs:381:19:381:19 | x | main.rs:372:13:372:13 | x | -| main.rs:383:14:383:14 | z | main.rs:379:13:379:13 | z | -| main.rs:384:9:384:9 | w | main.rs:380:9:380:9 | w | -| main.rs:386:7:386:7 | w | main.rs:380:9:380:9 | w | -| main.rs:388:15:388:15 | z | main.rs:379:13:379:13 | z | -| main.rs:394:14:394:14 | x | main.rs:392:13:392:13 | x | -| main.rs:395:6:395:6 | y | main.rs:393:9:393:9 | y | -| main.rs:396:15:396:15 | x | main.rs:392:13:392:13 | x | -| main.rs:403:19:403:19 | x | main.rs:400:9:400:9 | x | -| main.rs:405:5:405:7 | cap | main.rs:402:9:402:11 | cap | -| main.rs:406:15:406:15 | x | main.rs:400:9:400:9 | x | -| main.rs:413:19:413:19 | x | main.rs:410:13:410:13 | x | -| main.rs:415:5:415:12 | closure1 | main.rs:412:9:412:16 | closure1 | -| main.rs:416:15:416:15 | x | main.rs:410:13:410:13 | x | -| main.rs:421:9:421:9 | y | main.rs:418:13:418:13 | y | -| main.rs:423:5:423:12 | closure2 | main.rs:420:13:420:20 | closure2 | -| main.rs:424:15:424:15 | y | main.rs:418:13:418:13 | y | -| main.rs:429:9:429:9 | z | main.rs:426:13:426:13 | z | -| main.rs:431:5:431:12 | closure3 | main.rs:428:13:428:20 | closure3 | -| main.rs:432:15:432:15 | z | main.rs:426:13:426:13 | z | -| main.rs:438:9:438:9 | i | main.rs:436:13:436:13 | i | -| main.rs:441:5:441:9 | block | main.rs:437:9:437:13 | block | -| main.rs:442:15:442:15 | i | main.rs:436:13:436:13 | i | -| main.rs:447:15:447:15 | x | main.rs:446:13:446:13 | x | -| main.rs:448:15:448:15 | x | main.rs:446:13:446:13 | x | -| main.rs:449:8:449:8 | b | main.rs:445:8:445:8 | b | -| main.rs:450:9:450:9 | x | main.rs:446:13:446:13 | x | -| main.rs:451:19:451:19 | x | main.rs:446:13:446:13 | x | -| main.rs:452:19:452:19 | x | main.rs:446:13:446:13 | x | -| main.rs:454:9:454:9 | x | main.rs:446:13:446:13 | x | -| main.rs:455:19:455:19 | x | main.rs:446:13:446:13 | x | -| main.rs:456:19:456:19 | x | main.rs:446:13:446:13 | x | -| main.rs:458:15:458:15 | x | main.rs:446:13:446:13 | x | -| main.rs:463:8:463:9 | b1 | main.rs:461:13:461:14 | b1 | -| main.rs:464:19:464:19 | x | main.rs:462:9:462:9 | x | -| main.rs:466:19:466:19 | x | main.rs:462:9:462:9 | x | -| main.rs:469:8:469:9 | b2 | main.rs:461:24:461:25 | b2 | -| main.rs:470:19:470:19 | x | main.rs:462:9:462:9 | x | -| main.rs:472:19:472:19 | x | main.rs:462:9:462:9 | x | -| main.rs:483:16:483:19 | self | main.rs:482:20:482:23 | self | -| main.rs:487:9:487:12 | self | main.rs:486:11:486:14 | self | -| main.rs:493:13:493:16 | self | main.rs:490:23:490:26 | self | -| main.rs:493:25:493:25 | n | main.rs:491:22:491:22 | n | -| main.rs:495:9:495:9 | f | main.rs:491:17:491:17 | f | -| main.rs:496:9:496:9 | f | main.rs:491:17:491:17 | f | -| main.rs:502:15:502:15 | a | main.rs:501:13:501:13 | a | -| main.rs:503:5:503:5 | a | main.rs:501:13:501:13 | a | -| main.rs:504:15:504:15 | a | main.rs:501:13:501:13 | a | -| main.rs:505:5:505:5 | a | main.rs:501:13:501:13 | a | -| main.rs:506:15:506:15 | a | main.rs:501:13:501:13 | a | -| main.rs:511:15:511:15 | a | main.rs:510:13:510:13 | a | -| main.rs:512:5:512:5 | a | main.rs:510:13:510:13 | a | -| main.rs:513:15:513:15 | a | main.rs:510:13:510:13 | a | -| main.rs:514:5:514:5 | a | main.rs:510:13:510:13 | a | -| main.rs:515:15:515:15 | a | main.rs:510:13:510:13 | a | -| main.rs:520:20:520:20 | x | main.rs:519:9:519:9 | x | -| main.rs:521:15:521:15 | x | main.rs:519:9:519:9 | x | -| main.rs:524:20:524:20 | z | main.rs:523:9:523:9 | z | -| main.rs:533:6:533:9 | self | main.rs:532:15:532:18 | self | -| main.rs:539:3:539:3 | a | main.rs:538:11:538:11 | a | -| main.rs:541:13:541:13 | a | main.rs:538:11:538:11 | a | -| main.rs:564:9:564:25 | var_in_macro | main.rs:564:9:564:25 | var_in_macro | -| main.rs:565:15:565:28 | var_from_macro | main.rs:563:9:563:22 | var_from_macro | -| main.rs:570:30:570:41 | var_in_macro | main.rs:570:15:570:42 | var_in_macro | -| main.rs:571:15:571:26 | var_in_macro | main.rs:566:9:566:20 | var_in_macro | +| main.rs:335:9:335:9 | x | main.rs:334:10:334:10 | x | +| main.rs:336:15:336:15 | f | main.rs:333:9:333:9 | f | +| main.rs:339:9:339:9 | x | main.rs:338:10:338:10 | x | +| main.rs:342:15:342:15 | f | main.rs:333:9:333:9 | f | +| main.rs:347:17:347:17 | x | main.rs:346:14:346:14 | x | +| main.rs:356:13:356:13 | x | main.rs:355:14:355:14 | x | +| main.rs:357:19:357:19 | f | main.rs:354:13:354:13 | f | +| main.rs:365:12:365:12 | v | main.rs:362:9:362:9 | v | +| main.rs:366:19:366:22 | text | main.rs:364:9:364:12 | text | +| main.rs:372:5:372:5 | a | main.rs:371:13:371:13 | a | +| main.rs:373:15:373:15 | a | main.rs:371:13:371:13 | a | +| main.rs:374:11:374:11 | a | main.rs:371:13:371:13 | a | +| main.rs:375:15:375:15 | a | main.rs:371:13:371:13 | a | +| main.rs:381:14:381:14 | i | main.rs:379:13:379:13 | i | +| main.rs:382:6:382:10 | ref_i | main.rs:380:9:380:13 | ref_i | +| main.rs:383:15:383:15 | i | main.rs:379:13:379:13 | i | +| main.rs:387:6:387:6 | x | main.rs:386:17:386:17 | x | +| main.rs:388:10:388:10 | x | main.rs:386:17:386:17 | x | +| main.rs:389:10:389:10 | x | main.rs:386:17:386:17 | x | +| main.rs:390:12:390:12 | x | main.rs:386:17:386:17 | x | +| main.rs:394:6:394:6 | x | main.rs:393:22:393:22 | x | +| main.rs:395:10:395:10 | x | main.rs:393:22:393:22 | x | +| main.rs:396:10:396:10 | x | main.rs:393:22:393:22 | x | +| main.rs:397:6:397:6 | y | main.rs:393:39:393:39 | y | +| main.rs:398:9:398:9 | x | main.rs:393:22:393:22 | x | +| main.rs:404:27:404:27 | x | main.rs:402:13:402:13 | x | +| main.rs:405:6:405:6 | y | main.rs:403:9:403:9 | y | +| main.rs:407:15:407:15 | x | main.rs:402:13:402:13 | x | +| main.rs:411:19:411:19 | x | main.rs:402:13:402:13 | x | +| main.rs:413:14:413:14 | z | main.rs:409:13:409:13 | z | +| main.rs:414:9:414:9 | w | main.rs:410:9:410:9 | w | +| main.rs:416:7:416:7 | w | main.rs:410:9:410:9 | w | +| main.rs:418:15:418:15 | z | main.rs:409:13:409:13 | z | +| main.rs:424:14:424:14 | x | main.rs:422:13:422:13 | x | +| main.rs:425:6:425:6 | y | main.rs:423:9:423:9 | y | +| main.rs:426:15:426:15 | x | main.rs:422:13:422:13 | x | +| main.rs:433:19:433:19 | x | main.rs:430:9:430:9 | x | +| main.rs:435:5:435:7 | cap | main.rs:432:9:432:11 | cap | +| main.rs:436:15:436:15 | x | main.rs:430:9:430:9 | x | +| main.rs:443:19:443:19 | x | main.rs:440:13:440:13 | x | +| main.rs:445:5:445:12 | closure1 | main.rs:442:9:442:16 | closure1 | +| main.rs:446:15:446:15 | x | main.rs:440:13:440:13 | x | +| main.rs:451:9:451:9 | y | main.rs:448:13:448:13 | y | +| main.rs:453:5:453:12 | closure2 | main.rs:450:13:450:20 | closure2 | +| main.rs:454:15:454:15 | y | main.rs:448:13:448:13 | y | +| main.rs:459:9:459:9 | z | main.rs:456:13:456:13 | z | +| main.rs:461:5:461:12 | closure3 | main.rs:458:13:458:20 | closure3 | +| main.rs:462:15:462:15 | z | main.rs:456:13:456:13 | z | +| main.rs:468:9:468:9 | i | main.rs:466:13:466:13 | i | +| main.rs:471:5:471:9 | block | main.rs:467:9:467:13 | block | +| main.rs:472:15:472:15 | i | main.rs:466:13:466:13 | i | +| main.rs:477:15:477:15 | x | main.rs:476:13:476:13 | x | +| main.rs:478:15:478:15 | x | main.rs:476:13:476:13 | x | +| main.rs:479:8:479:8 | b | main.rs:475:8:475:8 | b | +| main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | +| main.rs:481:19:481:19 | x | main.rs:476:13:476:13 | x | +| main.rs:482:19:482:19 | x | main.rs:476:13:476:13 | x | +| main.rs:484:9:484:9 | x | main.rs:476:13:476:13 | x | +| main.rs:485:19:485:19 | x | main.rs:476:13:476:13 | x | +| main.rs:486:19:486:19 | x | main.rs:476:13:476:13 | x | +| main.rs:488:15:488:15 | x | main.rs:476:13:476:13 | x | +| main.rs:493:8:493:9 | b1 | main.rs:491:13:491:14 | b1 | +| main.rs:494:19:494:19 | x | main.rs:492:9:492:9 | x | +| main.rs:496:19:496:19 | x | main.rs:492:9:492:9 | x | +| main.rs:499:8:499:9 | b2 | main.rs:491:24:491:25 | b2 | +| main.rs:500:19:500:19 | x | main.rs:492:9:492:9 | x | +| main.rs:502:19:502:19 | x | main.rs:492:9:492:9 | x | +| main.rs:513:16:513:19 | self | main.rs:512:20:512:23 | self | +| main.rs:517:9:517:12 | self | main.rs:516:11:516:14 | self | +| main.rs:523:13:523:16 | self | main.rs:520:23:520:26 | self | +| main.rs:523:25:523:25 | n | main.rs:521:22:521:22 | n | +| main.rs:525:9:525:9 | f | main.rs:521:17:521:17 | f | +| main.rs:526:9:526:9 | f | main.rs:521:17:521:17 | f | +| main.rs:532:15:532:15 | a | main.rs:531:13:531:13 | a | +| main.rs:533:5:533:5 | a | main.rs:531:13:531:13 | a | +| main.rs:534:15:534:15 | a | main.rs:531:13:531:13 | a | +| main.rs:535:5:535:5 | a | main.rs:531:13:531:13 | a | +| main.rs:536:15:536:15 | a | main.rs:531:13:531:13 | a | +| main.rs:541:15:541:15 | a | main.rs:540:13:540:13 | a | +| main.rs:542:5:542:5 | a | main.rs:540:13:540:13 | a | +| main.rs:543:15:543:15 | a | main.rs:540:13:540:13 | a | +| main.rs:544:5:544:5 | a | main.rs:540:13:540:13 | a | +| main.rs:545:15:545:15 | a | main.rs:540:13:540:13 | a | +| main.rs:550:20:550:20 | x | main.rs:549:9:549:9 | x | +| main.rs:551:15:551:15 | x | main.rs:549:9:549:9 | x | +| main.rs:554:20:554:20 | z | main.rs:553:9:553:9 | z | +| main.rs:563:6:563:9 | self | main.rs:562:15:562:18 | self | +| main.rs:569:3:569:3 | a | main.rs:568:11:568:11 | a | +| main.rs:571:13:571:13 | a | main.rs:568:11:568:11 | a | +| main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | +| main.rs:595:15:595:28 | var_from_macro | main.rs:593:9:593:22 | var_from_macro | +| main.rs:600:30:600:41 | var_in_macro | main.rs:600:15:600:42 | var_in_macro | +| main.rs:601:15:601:26 | var_in_macro | main.rs:596:9:596:20 | var_in_macro | variableWriteAccess | main.rs:23:5:23:6 | x2 | main.rs:21:13:21:14 | x2 | | main.rs:30:5:30:5 | x | main.rs:28:13:28:13 | x | | main.rs:288:9:288:10 | c2 | main.rs:281:13:281:14 | c2 | | main.rs:289:9:289:10 | b4 | main.rs:280:13:280:14 | b4 | | main.rs:290:9:290:11 | a10 | main.rs:279:13:279:15 | a10 | -| main.rs:421:9:421:9 | y | main.rs:418:13:418:13 | y | -| main.rs:438:9:438:9 | i | main.rs:436:13:436:13 | i | -| main.rs:450:9:450:9 | x | main.rs:446:13:446:13 | x | -| main.rs:454:9:454:9 | x | main.rs:446:13:446:13 | x | -| main.rs:505:5:505:5 | a | main.rs:501:13:501:13 | a | -| main.rs:514:5:514:5 | a | main.rs:510:13:510:13 | a | +| main.rs:451:9:451:9 | y | main.rs:448:13:448:13 | y | +| main.rs:468:9:468:9 | i | main.rs:466:13:466:13 | i | +| main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | +| main.rs:484:9:484:9 | x | main.rs:476:13:476:13 | x | +| main.rs:535:5:535:5 | a | main.rs:531:13:531:13 | a | +| main.rs:544:5:544:5 | a | main.rs:540:13:540:13 | a | variableReadAccess | main.rs:4:20:4:20 | s | main.rs:3:14:3:14 | s | | main.rs:8:20:8:20 | i | main.rs:7:14:7:14 | i | @@ -374,77 +387,84 @@ variableReadAccess | main.rs:325:9:325:9 | x | main.rs:324:10:324:10 | x | | main.rs:327:9:327:26 | immutable_variable | main.rs:323:9:323:26 | immutable_variable | | main.rs:328:15:328:16 | n2 | main.rs:326:9:326:10 | n2 | -| main.rs:335:12:335:12 | v | main.rs:332:9:332:9 | v | -| main.rs:336:19:336:22 | text | main.rs:334:9:334:12 | text | -| main.rs:343:15:343:15 | a | main.rs:341:13:341:13 | a | -| main.rs:345:15:345:15 | a | main.rs:341:13:341:13 | a | -| main.rs:352:6:352:10 | ref_i | main.rs:350:9:350:13 | ref_i | -| main.rs:353:15:353:15 | i | main.rs:349:13:349:13 | i | -| main.rs:357:6:357:6 | x | main.rs:356:17:356:17 | x | -| main.rs:358:10:358:10 | x | main.rs:356:17:356:17 | x | -| main.rs:359:10:359:10 | x | main.rs:356:17:356:17 | x | -| main.rs:360:12:360:12 | x | main.rs:356:17:356:17 | x | -| main.rs:364:6:364:6 | x | main.rs:363:22:363:22 | x | -| main.rs:365:10:365:10 | x | main.rs:363:22:363:22 | x | -| main.rs:366:10:366:10 | x | main.rs:363:22:363:22 | x | -| main.rs:367:6:367:6 | y | main.rs:363:39:363:39 | y | -| main.rs:368:9:368:9 | x | main.rs:363:22:363:22 | x | -| main.rs:375:6:375:6 | y | main.rs:373:9:373:9 | y | -| main.rs:377:15:377:15 | x | main.rs:372:13:372:13 | x | -| main.rs:384:9:384:9 | w | main.rs:380:9:380:9 | w | -| main.rs:386:7:386:7 | w | main.rs:380:9:380:9 | w | -| main.rs:388:15:388:15 | z | main.rs:379:13:379:13 | z | -| main.rs:395:6:395:6 | y | main.rs:393:9:393:9 | y | -| main.rs:396:15:396:15 | x | main.rs:392:13:392:13 | x | -| main.rs:403:19:403:19 | x | main.rs:400:9:400:9 | x | -| main.rs:405:5:405:7 | cap | main.rs:402:9:402:11 | cap | -| main.rs:406:15:406:15 | x | main.rs:400:9:400:9 | x | -| main.rs:413:19:413:19 | x | main.rs:410:13:410:13 | x | -| main.rs:415:5:415:12 | closure1 | main.rs:412:9:412:16 | closure1 | -| main.rs:416:15:416:15 | x | main.rs:410:13:410:13 | x | -| main.rs:423:5:423:12 | closure2 | main.rs:420:13:420:20 | closure2 | -| main.rs:424:15:424:15 | y | main.rs:418:13:418:13 | y | -| main.rs:429:9:429:9 | z | main.rs:426:13:426:13 | z | -| main.rs:431:5:431:12 | closure3 | main.rs:428:13:428:20 | closure3 | -| main.rs:432:15:432:15 | z | main.rs:426:13:426:13 | z | -| main.rs:441:5:441:9 | block | main.rs:437:9:437:13 | block | -| main.rs:442:15:442:15 | i | main.rs:436:13:436:13 | i | -| main.rs:447:15:447:15 | x | main.rs:446:13:446:13 | x | -| main.rs:448:15:448:15 | x | main.rs:446:13:446:13 | x | -| main.rs:449:8:449:8 | b | main.rs:445:8:445:8 | b | -| main.rs:451:19:451:19 | x | main.rs:446:13:446:13 | x | -| main.rs:452:19:452:19 | x | main.rs:446:13:446:13 | x | -| main.rs:455:19:455:19 | x | main.rs:446:13:446:13 | x | -| main.rs:456:19:456:19 | x | main.rs:446:13:446:13 | x | -| main.rs:458:15:458:15 | x | main.rs:446:13:446:13 | x | -| main.rs:463:8:463:9 | b1 | main.rs:461:13:461:14 | b1 | -| main.rs:464:19:464:19 | x | main.rs:462:9:462:9 | x | -| main.rs:466:19:466:19 | x | main.rs:462:9:462:9 | x | -| main.rs:469:8:469:9 | b2 | main.rs:461:24:461:25 | b2 | -| main.rs:470:19:470:19 | x | main.rs:462:9:462:9 | x | -| main.rs:472:19:472:19 | x | main.rs:462:9:462:9 | x | -| main.rs:483:16:483:19 | self | main.rs:482:20:482:23 | self | -| main.rs:487:9:487:12 | self | main.rs:486:11:486:14 | self | -| main.rs:493:13:493:16 | self | main.rs:490:23:490:26 | self | -| main.rs:493:25:493:25 | n | main.rs:491:22:491:22 | n | -| main.rs:495:9:495:9 | f | main.rs:491:17:491:17 | f | -| main.rs:496:9:496:9 | f | main.rs:491:17:491:17 | f | -| main.rs:502:15:502:15 | a | main.rs:501:13:501:13 | a | -| main.rs:503:5:503:5 | a | main.rs:501:13:501:13 | a | -| main.rs:504:15:504:15 | a | main.rs:501:13:501:13 | a | -| main.rs:506:15:506:15 | a | main.rs:501:13:501:13 | a | -| main.rs:511:15:511:15 | a | main.rs:510:13:510:13 | a | -| main.rs:512:5:512:5 | a | main.rs:510:13:510:13 | a | -| main.rs:513:15:513:15 | a | main.rs:510:13:510:13 | a | -| main.rs:515:15:515:15 | a | main.rs:510:13:510:13 | a | -| main.rs:521:15:521:15 | x | main.rs:519:9:519:9 | x | -| main.rs:533:6:533:9 | self | main.rs:532:15:532:18 | self | -| main.rs:539:3:539:3 | a | main.rs:538:11:538:11 | a | -| main.rs:541:13:541:13 | a | main.rs:538:11:538:11 | a | -| main.rs:564:9:564:25 | var_in_macro | main.rs:564:9:564:25 | var_in_macro | -| main.rs:565:15:565:28 | var_from_macro | main.rs:563:9:563:22 | var_from_macro | -| main.rs:570:30:570:41 | var_in_macro | main.rs:570:15:570:42 | var_in_macro | -| main.rs:571:15:571:26 | var_in_macro | main.rs:566:9:566:20 | var_in_macro | +| main.rs:335:9:335:9 | x | main.rs:334:10:334:10 | x | +| main.rs:336:15:336:15 | f | main.rs:333:9:333:9 | f | +| main.rs:339:9:339:9 | x | main.rs:338:10:338:10 | x | +| main.rs:342:15:342:15 | f | main.rs:333:9:333:9 | f | +| main.rs:347:17:347:17 | x | main.rs:346:14:346:14 | x | +| main.rs:356:13:356:13 | x | main.rs:355:14:355:14 | x | +| main.rs:357:19:357:19 | f | main.rs:354:13:354:13 | f | +| main.rs:365:12:365:12 | v | main.rs:362:9:362:9 | v | +| main.rs:366:19:366:22 | text | main.rs:364:9:364:12 | text | +| main.rs:373:15:373:15 | a | main.rs:371:13:371:13 | a | +| main.rs:375:15:375:15 | a | main.rs:371:13:371:13 | a | +| main.rs:382:6:382:10 | ref_i | main.rs:380:9:380:13 | ref_i | +| main.rs:383:15:383:15 | i | main.rs:379:13:379:13 | i | +| main.rs:387:6:387:6 | x | main.rs:386:17:386:17 | x | +| main.rs:388:10:388:10 | x | main.rs:386:17:386:17 | x | +| main.rs:389:10:389:10 | x | main.rs:386:17:386:17 | x | +| main.rs:390:12:390:12 | x | main.rs:386:17:386:17 | x | +| main.rs:394:6:394:6 | x | main.rs:393:22:393:22 | x | +| main.rs:395:10:395:10 | x | main.rs:393:22:393:22 | x | +| main.rs:396:10:396:10 | x | main.rs:393:22:393:22 | x | +| main.rs:397:6:397:6 | y | main.rs:393:39:393:39 | y | +| main.rs:398:9:398:9 | x | main.rs:393:22:393:22 | x | +| main.rs:405:6:405:6 | y | main.rs:403:9:403:9 | y | +| main.rs:407:15:407:15 | x | main.rs:402:13:402:13 | x | +| main.rs:414:9:414:9 | w | main.rs:410:9:410:9 | w | +| main.rs:416:7:416:7 | w | main.rs:410:9:410:9 | w | +| main.rs:418:15:418:15 | z | main.rs:409:13:409:13 | z | +| main.rs:425:6:425:6 | y | main.rs:423:9:423:9 | y | +| main.rs:426:15:426:15 | x | main.rs:422:13:422:13 | x | +| main.rs:433:19:433:19 | x | main.rs:430:9:430:9 | x | +| main.rs:435:5:435:7 | cap | main.rs:432:9:432:11 | cap | +| main.rs:436:15:436:15 | x | main.rs:430:9:430:9 | x | +| main.rs:443:19:443:19 | x | main.rs:440:13:440:13 | x | +| main.rs:445:5:445:12 | closure1 | main.rs:442:9:442:16 | closure1 | +| main.rs:446:15:446:15 | x | main.rs:440:13:440:13 | x | +| main.rs:453:5:453:12 | closure2 | main.rs:450:13:450:20 | closure2 | +| main.rs:454:15:454:15 | y | main.rs:448:13:448:13 | y | +| main.rs:459:9:459:9 | z | main.rs:456:13:456:13 | z | +| main.rs:461:5:461:12 | closure3 | main.rs:458:13:458:20 | closure3 | +| main.rs:462:15:462:15 | z | main.rs:456:13:456:13 | z | +| main.rs:471:5:471:9 | block | main.rs:467:9:467:13 | block | +| main.rs:472:15:472:15 | i | main.rs:466:13:466:13 | i | +| main.rs:477:15:477:15 | x | main.rs:476:13:476:13 | x | +| main.rs:478:15:478:15 | x | main.rs:476:13:476:13 | x | +| main.rs:479:8:479:8 | b | main.rs:475:8:475:8 | b | +| main.rs:481:19:481:19 | x | main.rs:476:13:476:13 | x | +| main.rs:482:19:482:19 | x | main.rs:476:13:476:13 | x | +| main.rs:485:19:485:19 | x | main.rs:476:13:476:13 | x | +| main.rs:486:19:486:19 | x | main.rs:476:13:476:13 | x | +| main.rs:488:15:488:15 | x | main.rs:476:13:476:13 | x | +| main.rs:493:8:493:9 | b1 | main.rs:491:13:491:14 | b1 | +| main.rs:494:19:494:19 | x | main.rs:492:9:492:9 | x | +| main.rs:496:19:496:19 | x | main.rs:492:9:492:9 | x | +| main.rs:499:8:499:9 | b2 | main.rs:491:24:491:25 | b2 | +| main.rs:500:19:500:19 | x | main.rs:492:9:492:9 | x | +| main.rs:502:19:502:19 | x | main.rs:492:9:492:9 | x | +| main.rs:513:16:513:19 | self | main.rs:512:20:512:23 | self | +| main.rs:517:9:517:12 | self | main.rs:516:11:516:14 | self | +| main.rs:523:13:523:16 | self | main.rs:520:23:520:26 | self | +| main.rs:523:25:523:25 | n | main.rs:521:22:521:22 | n | +| main.rs:525:9:525:9 | f | main.rs:521:17:521:17 | f | +| main.rs:526:9:526:9 | f | main.rs:521:17:521:17 | f | +| main.rs:532:15:532:15 | a | main.rs:531:13:531:13 | a | +| main.rs:533:5:533:5 | a | main.rs:531:13:531:13 | a | +| main.rs:534:15:534:15 | a | main.rs:531:13:531:13 | a | +| main.rs:536:15:536:15 | a | main.rs:531:13:531:13 | a | +| main.rs:541:15:541:15 | a | main.rs:540:13:540:13 | a | +| main.rs:542:5:542:5 | a | main.rs:540:13:540:13 | a | +| main.rs:543:15:543:15 | a | main.rs:540:13:540:13 | a | +| main.rs:545:15:545:15 | a | main.rs:540:13:540:13 | a | +| main.rs:551:15:551:15 | x | main.rs:549:9:549:9 | x | +| main.rs:563:6:563:9 | self | main.rs:562:15:562:18 | self | +| main.rs:569:3:569:3 | a | main.rs:568:11:568:11 | a | +| main.rs:571:13:571:13 | a | main.rs:568:11:568:11 | a | +| main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | +| main.rs:595:15:595:28 | var_from_macro | main.rs:593:9:593:22 | var_from_macro | +| main.rs:600:30:600:41 | var_in_macro | main.rs:600:15:600:42 | var_in_macro | +| main.rs:601:15:601:26 | var_in_macro | main.rs:596:9:596:20 | var_in_macro | variableInitializer | main.rs:16:9:16:10 | x1 | main.rs:16:14:16:16 | "a" | | main.rs:21:13:21:14 | x2 | main.rs:21:18:21:18 | 4 | @@ -470,49 +490,54 @@ variableInitializer | main.rs:318:9:318:10 | n1 | main.rs:319:9:319:26 | example_closure(...) | | main.rs:323:9:323:26 | immutable_variable | main.rs:324:9:325:9 | \|...\| x | | main.rs:326:9:326:10 | n2 | main.rs:327:9:327:29 | immutable_variable(...) | -| main.rs:332:9:332:9 | v | main.rs:332:13:332:41 | &... | -| main.rs:341:13:341:13 | a | main.rs:341:17:341:17 | 0 | -| main.rs:349:13:349:13 | i | main.rs:349:17:349:17 | 1 | -| main.rs:350:9:350:13 | ref_i | main.rs:351:9:351:14 | &mut i | -| main.rs:372:13:372:13 | x | main.rs:372:17:372:17 | 2 | -| main.rs:373:9:373:9 | y | main.rs:374:9:374:28 | mutate_param(...) | -| main.rs:379:13:379:13 | z | main.rs:379:17:379:17 | 4 | -| main.rs:380:9:380:9 | w | main.rs:381:9:381:19 | &mut ... | -| main.rs:392:13:392:13 | x | main.rs:392:17:392:17 | 1 | -| main.rs:393:9:393:9 | y | main.rs:394:9:394:14 | &mut x | -| main.rs:400:9:400:9 | x | main.rs:400:13:400:15 | 100 | -| main.rs:402:9:402:11 | cap | main.rs:402:15:404:5 | \|...\| ... | -| main.rs:410:13:410:13 | x | main.rs:410:17:410:17 | 1 | -| main.rs:412:9:412:16 | closure1 | main.rs:412:20:414:5 | \|...\| ... | -| main.rs:418:13:418:13 | y | main.rs:418:17:418:17 | 2 | -| main.rs:420:13:420:20 | closure2 | main.rs:420:24:422:5 | \|...\| ... | -| main.rs:426:13:426:13 | z | main.rs:426:17:426:17 | 2 | -| main.rs:428:13:428:20 | closure3 | main.rs:428:24:430:5 | \|...\| ... | -| main.rs:436:13:436:13 | i | main.rs:436:22:436:22 | 0 | -| main.rs:437:9:437:13 | block | main.rs:437:17:439:5 | { ... } | -| main.rs:446:13:446:13 | x | main.rs:446:17:446:17 | 1 | -| main.rs:462:9:462:9 | x | main.rs:462:13:462:13 | 1 | -| main.rs:491:17:491:17 | f | main.rs:491:21:494:9 | \|...\| ... | -| main.rs:501:13:501:13 | a | main.rs:501:17:501:35 | MyStruct {...} | -| main.rs:510:13:510:13 | a | main.rs:510:17:510:25 | [...] | -| main.rs:519:9:519:9 | x | main.rs:519:13:519:14 | 16 | -| main.rs:523:9:523:9 | z | main.rs:523:13:523:14 | 17 | -| main.rs:538:11:538:11 | a | main.rs:538:15:538:33 | MyStruct {...} | -| main.rs:563:9:563:22 | var_from_macro | main.rs:564:9:564:25 | MacroExpr | -| main.rs:564:9:564:25 | var_in_macro | main.rs:564:23:564:24 | 37 | -| main.rs:566:9:566:20 | var_in_macro | main.rs:566:24:566:25 | 33 | -| main.rs:570:15:570:42 | var_in_macro | main.rs:570:15:570:42 | 0 | +| main.rs:333:9:333:9 | f | main.rs:334:9:335:9 | \|...\| x | +| main.rs:354:13:354:13 | f | main.rs:355:13:356:13 | \|...\| x | +| main.rs:362:9:362:9 | v | main.rs:362:13:362:41 | &... | +| main.rs:371:13:371:13 | a | main.rs:371:17:371:17 | 0 | +| main.rs:379:13:379:13 | i | main.rs:379:17:379:17 | 1 | +| main.rs:380:9:380:13 | ref_i | main.rs:381:9:381:14 | &mut i | +| main.rs:402:13:402:13 | x | main.rs:402:17:402:17 | 2 | +| main.rs:403:9:403:9 | y | main.rs:404:9:404:28 | mutate_param(...) | +| main.rs:409:13:409:13 | z | main.rs:409:17:409:17 | 4 | +| main.rs:410:9:410:9 | w | main.rs:411:9:411:19 | &mut ... | +| main.rs:422:13:422:13 | x | main.rs:422:17:422:17 | 1 | +| main.rs:423:9:423:9 | y | main.rs:424:9:424:14 | &mut x | +| main.rs:430:9:430:9 | x | main.rs:430:13:430:15 | 100 | +| main.rs:432:9:432:11 | cap | main.rs:432:15:434:5 | \|...\| ... | +| main.rs:440:13:440:13 | x | main.rs:440:17:440:17 | 1 | +| main.rs:442:9:442:16 | closure1 | main.rs:442:20:444:5 | \|...\| ... | +| main.rs:448:13:448:13 | y | main.rs:448:17:448:17 | 2 | +| main.rs:450:13:450:20 | closure2 | main.rs:450:24:452:5 | \|...\| ... | +| main.rs:456:13:456:13 | z | main.rs:456:17:456:17 | 2 | +| main.rs:458:13:458:20 | closure3 | main.rs:458:24:460:5 | \|...\| ... | +| main.rs:466:13:466:13 | i | main.rs:466:22:466:22 | 0 | +| main.rs:467:9:467:13 | block | main.rs:467:17:469:5 | { ... } | +| main.rs:476:13:476:13 | x | main.rs:476:17:476:17 | 1 | +| main.rs:492:9:492:9 | x | main.rs:492:13:492:13 | 1 | +| main.rs:521:17:521:17 | f | main.rs:521:21:524:9 | \|...\| ... | +| main.rs:531:13:531:13 | a | main.rs:531:17:531:35 | MyStruct {...} | +| main.rs:540:13:540:13 | a | main.rs:540:17:540:25 | [...] | +| main.rs:549:9:549:9 | x | main.rs:549:13:549:14 | 16 | +| main.rs:553:9:553:9 | z | main.rs:553:13:553:14 | 17 | +| main.rs:568:11:568:11 | a | main.rs:568:15:568:33 | MyStruct {...} | +| main.rs:593:9:593:22 | var_from_macro | main.rs:594:9:594:25 | MacroExpr | +| main.rs:594:9:594:25 | var_in_macro | main.rs:594:23:594:24 | 37 | +| main.rs:596:9:596:20 | var_in_macro | main.rs:596:24:596:25 | 33 | +| main.rs:600:15:600:42 | var_in_macro | main.rs:600:15:600:42 | 0 | capturedVariable -| main.rs:400:9:400:9 | x | -| main.rs:410:13:410:13 | x | -| main.rs:418:13:418:13 | y | -| main.rs:426:13:426:13 | z | -| main.rs:436:13:436:13 | i | -| main.rs:490:23:490:26 | self | +| main.rs:430:9:430:9 | x | +| main.rs:440:13:440:13 | x | +| main.rs:448:13:448:13 | y | +| main.rs:456:13:456:13 | z | +| main.rs:466:13:466:13 | i | +| main.rs:520:23:520:26 | self | capturedAccess -| main.rs:403:19:403:19 | x | -| main.rs:413:19:413:19 | x | -| main.rs:421:9:421:9 | y | -| main.rs:429:9:429:9 | z | -| main.rs:438:9:438:9 | i | -| main.rs:493:13:493:16 | self | +| main.rs:433:19:433:19 | x | +| main.rs:443:19:443:19 | x | +| main.rs:451:9:451:9 | y | +| main.rs:459:9:459:9 | z | +| main.rs:468:9:468:9 | i | +| main.rs:523:13:523:16 | self | +nestedFunctionAccess +| main.rs:345:19:345:19 | f | main.rs:346:9:348:9 | fn f | +| main.rs:351:23:351:23 | f | main.rs:346:9:348:9 | fn f | diff --git a/rust/ql/test/library-tests/variables/variables.ql b/rust/ql/test/library-tests/variables/variables.ql index f3ecd6f06851..2ec66e1196ec 100644 --- a/rust/ql/test/library-tests/variables/variables.ql +++ b/rust/ql/test/library-tests/variables/variables.ql @@ -1,5 +1,6 @@ import rust import utils.test.InlineExpectationsTest +import codeql.rust.elements.internal.VariableImpl::Impl as VariableImpl query predicate variable(Variable v) { any() } @@ -15,6 +16,10 @@ query predicate capturedVariable(Variable v) { v.isCaptured() } query predicate capturedAccess(VariableAccess va) { va.isCapture() } +query predicate nestedFunctionAccess(VariableImpl::NestedFunctionAccess nfa, Function f) { + f = nfa.getFunction() +} + module VariableAccessTest implements TestSig { string getARelevantTag() { result = ["", "write_", "read_"] + "access" }