Merge pull request #18482 from hvitved/rust/nested-functions

Rust: Take nested functions into account when resolving variables
This commit is contained in:
Tom Hvitved
2025-01-24 08:41:34 +01:00
committed by GitHub
9 changed files with 1540 additions and 1280 deletions

View File

@@ -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)
}
string toString() {
result = this.asVariable().toString() or result = this.asVariableAccessCand().toString()
}
Location getLocation() {
result = this.asVariable().getLocation() or result = this.asVariableAccessCand().getLocation()
}
abstract Location getLocation();
pragma[nomagic]
predicate rankBy(string name, VariableScope scope, int ord, int kind) {
variableDeclInScope(this.asVariable(), scope, name, ord) and
abstract predicate rankBy(string name, VariableScope scope, int ord, int kind);
}
abstract private class NestedFunctionOrVariable extends DefOrAccessCand { }
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<DenseRankInput>::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)
}
}

View File

@@ -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(...) |

View File

@@ -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();

View File

@@ -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 |

File diff suppressed because it is too large Load Diff

View File

@@ -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 | <captured entry> 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 | <captured entry> 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 | <captured exit> 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 | <captured exit> 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 | <captured entry> 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 | <captured entry> 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 | <captured entry> 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 | <captured exit> 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 | <captured exit> 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 | <captured entry> 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 | <captured entry> 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 | <captured entry> 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 | <captured exit> 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 | <captured exit> 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 | <captured entry> 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 | <captured entry> 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 | <captured entry> 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 | <captured exit> 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 | <captured exit> 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 | <captured entry> 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 | <captured entry> 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 | <captured entry> 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 | <captured exit> 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 | <captured exit> 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 | <captured entry> 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 | <captured entry> 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 | <captured entry> 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 | <captured exit> 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 | <captured exit> 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 | <captured entry> 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 | <captured entry> 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 | <captured entry> 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 | <captured exit> 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 | <captured exit> 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 | <captured entry> 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 | <captured entry> 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 | <captured entry> 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 | <captured exit> 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 | <captured exit> 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 | <captured entry> 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 |

View File

@@ -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();

View File

@@ -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 |

View File

@@ -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" }