Rust: Add variables and data flow array tests

This commit is contained in:
Simon Friis Vindum
2024-12-03 13:44:49 +01:00
parent 06b1d8e448
commit 3346b64e96
6 changed files with 367 additions and 186 deletions

View File

@@ -344,6 +344,57 @@ localStep
| main.rs:306:22:306:22 | [SSA] n | main.rs:306:34:306:34 | n |
| main.rs:306:22:306:22 | n | main.rs:306:22:306:22 | [SSA] n |
| main.rs:306:29:306:35 | sink(...) | main.rs:304:5:307:5 | match s2 { ... } |
| main.rs:314:9:314:12 | [SSA] arr1 | main.rs:315:14:315:17 | arr1 |
| main.rs:314:9:314:12 | arr1 | main.rs:314:9:314:12 | [SSA] arr1 |
| main.rs:314:16:314:33 | [...] | main.rs:314:9:314:12 | arr1 |
| main.rs:315:9:315:10 | [SSA] n1 | main.rs:316:10:316:11 | n1 |
| main.rs:315:9:315:10 | n1 | main.rs:315:9:315:10 | [SSA] n1 |
| main.rs:315:14:315:20 | arr1[2] | main.rs:315:9:315:10 | n1 |
| main.rs:318:9:318:12 | [SSA] arr2 | main.rs:319:14:319:17 | arr2 |
| main.rs:318:9:318:12 | arr2 | main.rs:318:9:318:12 | [SSA] arr2 |
| main.rs:318:16:318:31 | [...] | main.rs:318:9:318:12 | arr2 |
| main.rs:319:9:319:10 | [SSA] n2 | main.rs:320:10:320:11 | n2 |
| main.rs:319:9:319:10 | n2 | main.rs:319:9:319:10 | [SSA] n2 |
| main.rs:319:14:319:20 | arr2[4] | main.rs:319:9:319:10 | n2 |
| main.rs:322:9:322:12 | [SSA] arr3 | main.rs:323:14:323:17 | arr3 |
| main.rs:322:9:322:12 | arr3 | main.rs:322:9:322:12 | [SSA] arr3 |
| main.rs:322:16:322:24 | [...] | main.rs:322:9:322:12 | arr3 |
| main.rs:323:9:323:10 | [SSA] n3 | main.rs:324:10:324:11 | n3 |
| main.rs:323:9:323:10 | n3 | main.rs:323:9:323:10 | [SSA] n3 |
| main.rs:323:14:323:20 | arr3[2] | main.rs:323:9:323:10 | n3 |
| main.rs:328:9:328:12 | [SSA] arr1 | main.rs:329:15:329:18 | arr1 |
| main.rs:328:9:328:12 | arr1 | main.rs:328:9:328:12 | [SSA] arr1 |
| main.rs:328:16:328:33 | [...] | main.rs:328:9:328:12 | arr1 |
| main.rs:329:9:329:10 | [SSA] n1 | main.rs:330:14:330:15 | n1 |
| main.rs:329:9:329:10 | n1 | main.rs:329:9:329:10 | [SSA] n1 |
| main.rs:333:9:333:12 | [SSA] arr2 | main.rs:334:15:334:18 | arr2 |
| main.rs:333:9:333:12 | arr2 | main.rs:333:9:333:12 | [SSA] arr2 |
| main.rs:333:16:333:24 | [...] | main.rs:333:9:333:12 | arr2 |
| main.rs:334:5:336:5 | for ... in ... { ... } | main.rs:327:21:337:1 | { ... } |
| main.rs:334:9:334:10 | [SSA] n2 | main.rs:335:14:335:15 | n2 |
| main.rs:334:9:334:10 | n2 | main.rs:334:9:334:10 | [SSA] n2 |
| main.rs:340:9:340:12 | [SSA] arr1 | main.rs:341:11:341:14 | arr1 |
| main.rs:340:9:340:12 | arr1 | main.rs:340:9:340:12 | [SSA] arr1 |
| main.rs:340:16:340:33 | [...] | main.rs:340:9:340:12 | arr1 |
| main.rs:341:5:347:5 | match arr1 { ... } | main.rs:339:26:348:1 | { ... } |
| main.rs:341:11:341:14 | arr1 | main.rs:342:9:342:17 | SlicePat |
| main.rs:342:10:342:10 | [SSA] a | main.rs:343:18:343:18 | a |
| main.rs:342:10:342:10 | a | main.rs:342:10:342:10 | [SSA] a |
| main.rs:342:13:342:13 | [SSA] b | main.rs:344:18:344:18 | b |
| main.rs:342:13:342:13 | b | main.rs:342:13:342:13 | [SSA] b |
| main.rs:342:16:342:16 | [SSA] c | main.rs:345:18:345:18 | c |
| main.rs:342:16:342:16 | c | main.rs:342:16:342:16 | [SSA] c |
| main.rs:342:22:346:9 | { ... } | main.rs:341:5:347:5 | match arr1 { ... } |
| main.rs:351:9:351:19 | [SSA] mut_arr | main.rs:352:10:352:16 | mut_arr |
| main.rs:351:9:351:19 | mut_arr | main.rs:351:9:351:19 | [SSA] mut_arr |
| main.rs:351:23:351:31 | [...] | main.rs:351:9:351:19 | mut_arr |
| main.rs:354:5:354:11 | [SSA] mut_arr | main.rs:355:13:355:19 | mut_arr |
| main.rs:354:5:354:11 | mut_arr | main.rs:354:5:354:11 | [SSA] mut_arr |
| main.rs:354:18:354:27 | source(...) | main.rs:354:5:354:14 | mut_arr[1] |
| main.rs:355:9:355:9 | [SSA] d | main.rs:356:10:356:10 | d |
| main.rs:355:9:355:9 | d | main.rs:355:9:355:9 | [SSA] d |
| main.rs:355:13:355:19 | mut_arr | main.rs:357:10:357:16 | mut_arr |
| main.rs:355:13:355:22 | mut_arr[1] | main.rs:355:9:355:9 | d |
storeStep
| main.rs:94:14:94:22 | source(...) | tuple.0 | main.rs:94:13:94:26 | TupleExpr |
| main.rs:94:25:94:25 | 2 | tuple.1 | main.rs:94:13:94:26 | TupleExpr |
@@ -385,7 +436,7 @@ storeStep
| main.rs:276:41:276:41 | 2 | D | main.rs:276:14:276:43 | ...::D {...} |
| main.rs:294:18:294:27 | source(...) | C | main.rs:293:14:295:5 | C {...} |
| main.rs:296:27:296:27 | 2 | D | main.rs:296:14:296:29 | D {...} |
| main.rs:314:27:314:27 | 0 | Some | main.rs:314:22:314:28 | Some(...) |
| main.rs:364:27:364:27 | 0 | Some | main.rs:364:22:364:28 | Some(...) |
readStep
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::option::Option>::unwrap | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::<crate::option::Option>::unwrap |
| main.rs:33:9:33:15 | TupleStructPat | Some | main.rs:33:14:33:14 | _ |

View File

@@ -307,6 +307,56 @@ fn custom_record_enum_pattern_match_unqualified() {
}
}
// -----------------------------------------------------------------------------
// Data flow through arrays
fn array_lookup() {
let arr1 = [1, 2, source(94)];
let n1 = arr1[2];
sink(n1); // $ MISSING: hasValueFlow=94
let arr2 = [source(20); 10];
let n2 = arr2[4];
sink(n2); // $ MISSING: hasValueFlow=20
let arr3 = [1, 2, 3];
let n3 = arr3[2];
sink(n3);
}
fn array_for_loop() {
let arr1 = [1, 2, source(43)];
for n1 in arr1 {
sink(n1); // $ MISSING: hasValueFlow=43
}
let arr2 = [1, 2, 3];
for n2 in arr2 {
sink(n2);
}
}
fn array_slice_pattern() {
let arr1 = [1, 2, source(43)];
match arr1 {
[a, b, c] => {
sink(a);
sink(b);
sink(c); // $ MISSING: hasValueFlow=43
}
}
}
fn array_assignment() {
let mut mut_arr = [1, 2, 3];
sink(mut_arr[1]);
mut_arr[1] = source(55);
let d = mut_arr[1];
sink(d); // $ MISSING: hasValueFlow=55
sink(mut_arr[0]);
}
fn main() {
direct();
variable_usage();
@@ -334,4 +384,8 @@ fn main() {
block_expression1();
block_expression2(true);
block_expression3(true);
array_lookup();
array_for_loop();
array_slice_pattern();
array_assignment();
}

View File

@@ -1116,163 +1116,203 @@ edges
| variables.rs:497:5:497:26 | ExprStmt | variables.rs:497:5:497:13 | print_i64 | |
| variables.rs:497:15:497:15 | a | variables.rs:497:15:497:24 | ... .my_get(...) | |
| variables.rs:497:15:497:24 | ... .my_get(...) | variables.rs:497:5:497:25 | print_i64(...) | |
| variables.rs:500:1:507:1 | enter fn ref_arg | variables.rs:501:5:501:15 | let ... = 16 | |
| variables.rs:500:1:507:1 | exit fn ref_arg (normal) | variables.rs:500:1:507:1 | exit fn ref_arg | |
| variables.rs:500:14:507:1 | { ... } | variables.rs:500:1:507:1 | exit fn ref_arg (normal) | |
| variables.rs:501:5:501:15 | let ... = 16 | variables.rs:501:13:501:14 | 16 | |
| variables.rs:501:9:501:9 | x | variables.rs:502:5:502:22 | ExprStmt | match |
| variables.rs:501:13:501:14 | 16 | variables.rs:501:9:501:9 | x | |
| variables.rs:502:5:502:17 | print_i64_ref | variables.rs:502:20:502:20 | x | |
| variables.rs:502:5:502:21 | print_i64_ref(...) | variables.rs:503:5:503:17 | ExprStmt | |
| variables.rs:502:5:502:22 | ExprStmt | variables.rs:502:5:502:17 | print_i64_ref | |
| variables.rs:502:19:502:20 | &x | variables.rs:502:5:502:21 | print_i64_ref(...) | |
| variables.rs:502:20:502:20 | x | variables.rs:502:19:502:20 | &x | |
| variables.rs:503:5:503:13 | print_i64 | variables.rs:503:15:503:15 | x | |
| variables.rs:503:5:503:16 | print_i64(...) | variables.rs:505:5:505:15 | let ... = 17 | |
| variables.rs:503:5:503:17 | ExprStmt | variables.rs:503:5:503:13 | print_i64 | |
| variables.rs:503:15:503:15 | x | variables.rs:503:5:503:16 | print_i64(...) | |
| variables.rs:505:5:505:15 | let ... = 17 | variables.rs:505:13:505:14 | 17 | |
| variables.rs:505:9:505:9 | z | variables.rs:506:5:506:22 | ExprStmt | match |
| variables.rs:505:13:505:14 | 17 | variables.rs:505:9:505:9 | z | |
| variables.rs:506:5:506:17 | print_i64_ref | variables.rs:506:20:506:20 | z | |
| variables.rs:506:5:506:21 | print_i64_ref(...) | variables.rs:500:14:507:1 | { ... } | |
| variables.rs:506:5:506:22 | ExprStmt | variables.rs:506:5:506:17 | print_i64_ref | |
| variables.rs:506:19:506:20 | &z | variables.rs:506:5:506:21 | print_i64_ref(...) | |
| variables.rs:506:20:506:20 | z | variables.rs:506:19:506:20 | &z | |
| variables.rs:514:3:516:3 | enter fn bar | variables.rs:514:15:514:18 | self | |
| variables.rs:514:3:516:3 | exit fn bar (normal) | variables.rs:514:3:516:3 | exit fn bar | |
| variables.rs:514:10:514:18 | SelfParam | variables.rs:515:5:515:32 | ExprStmt | |
| variables.rs:514:15:514:18 | self | variables.rs:514:10:514:18 | SelfParam | |
| variables.rs:514:21:516:3 | { ... } | variables.rs:514:3:516:3 | exit fn bar (normal) | |
| variables.rs:515:5:515:9 | * ... | variables.rs:515:29:515:29 | 3 | |
| variables.rs:515:5:515:31 | ... = ... | variables.rs:514:21:516:3 | { ... } | |
| variables.rs:515:5:515:32 | ExprStmt | variables.rs:515:6:515:9 | self | |
| variables.rs:515:6:515:9 | self | variables.rs:515:5:515:9 | * ... | |
| variables.rs:515:13:515:31 | MyStruct {...} | variables.rs:515:5:515:31 | ... = ... | |
| variables.rs:515:29:515:29 | 3 | variables.rs:515:13:515:31 | MyStruct {...} | |
| variables.rs:519:1:524:1 | enter fn ref_methodcall_receiver | variables.rs:520:3:520:34 | let ... = ... | |
| variables.rs:519:1:524:1 | exit fn ref_methodcall_receiver (normal) | variables.rs:519:1:524:1 | exit fn ref_methodcall_receiver | |
| variables.rs:519:30:524:1 | { ... } | variables.rs:519:1:524:1 | exit fn ref_methodcall_receiver (normal) | |
| variables.rs:520:3:520:34 | let ... = ... | variables.rs:520:31:520:31 | 1 | |
| variables.rs:520:7:520:11 | a | variables.rs:521:3:521:10 | ExprStmt | match |
| variables.rs:520:15:520:33 | MyStruct {...} | variables.rs:520:7:520:11 | a | |
| variables.rs:520:31:520:31 | 1 | variables.rs:520:15:520:33 | MyStruct {...} | |
| variables.rs:521:3:521:3 | a | variables.rs:521:3:521:9 | ... .bar(...) | |
| variables.rs:521:3:521:9 | ... .bar(...) | variables.rs:523:3:523:19 | ExprStmt | |
| variables.rs:521:3:521:10 | ExprStmt | variables.rs:521:3:521:3 | a | |
| variables.rs:523:3:523:11 | print_i64 | variables.rs:523:13:523:13 | a | |
| variables.rs:523:3:523:18 | print_i64(...) | variables.rs:519:30:524:1 | { ... } | |
| variables.rs:523:3:523:19 | ExprStmt | variables.rs:523:3:523:11 | print_i64 | |
| variables.rs:523:13:523:13 | a | variables.rs:523:13:523:17 | a.val | |
| variables.rs:523:13:523:17 | a.val | variables.rs:523:3:523:18 | print_i64(...) | |
| variables.rs:526:1:560:1 | enter fn main | variables.rs:527:5:527:25 | ExprStmt | |
| variables.rs:526:1:560:1 | exit fn main (normal) | variables.rs:526:1:560:1 | exit fn main | |
| variables.rs:526:11:560:1 | { ... } | variables.rs:526:1:560:1 | exit fn main (normal) | |
| variables.rs:527:5:527:22 | immutable_variable | variables.rs:527:5:527:24 | immutable_variable(...) | |
| variables.rs:527:5:527:24 | immutable_variable(...) | variables.rs:528:5:528:23 | ExprStmt | |
| variables.rs:527:5:527:25 | ExprStmt | variables.rs:527:5:527:22 | immutable_variable | |
| variables.rs:528:5:528:20 | mutable_variable | variables.rs:528:5:528:22 | mutable_variable(...) | |
| variables.rs:528:5:528:22 | mutable_variable(...) | variables.rs:529:5:529:40 | ExprStmt | |
| variables.rs:528:5:528:23 | ExprStmt | variables.rs:528:5:528:20 | mutable_variable | |
| variables.rs:529:5:529:37 | mutable_variable_immutable_borrow | variables.rs:529:5:529:39 | mutable_variable_immutable_borrow(...) | |
| variables.rs:529:5:529:39 | mutable_variable_immutable_borrow(...) | variables.rs:530:5:530:23 | ExprStmt | |
| variables.rs:529:5:529:40 | ExprStmt | variables.rs:529:5:529:37 | mutable_variable_immutable_borrow | |
| variables.rs:530:5:530:20 | variable_shadow1 | variables.rs:530:5:530:22 | variable_shadow1(...) | |
| variables.rs:530:5:530:22 | variable_shadow1(...) | variables.rs:531:5:531:23 | ExprStmt | |
| variables.rs:530:5:530:23 | ExprStmt | variables.rs:530:5:530:20 | variable_shadow1 | |
| variables.rs:531:5:531:20 | variable_shadow2 | variables.rs:531:5:531:22 | variable_shadow2(...) | |
| variables.rs:531:5:531:22 | variable_shadow2(...) | variables.rs:532:5:532:19 | ExprStmt | |
| variables.rs:531:5:531:23 | ExprStmt | variables.rs:531:5:531:20 | variable_shadow2 | |
| variables.rs:532:5:532:16 | let_pattern1 | variables.rs:532:5:532:18 | let_pattern1(...) | |
| variables.rs:532:5:532:18 | let_pattern1(...) | variables.rs:533:5:533:19 | ExprStmt | |
| variables.rs:532:5:532:19 | ExprStmt | variables.rs:532:5:532:16 | let_pattern1 | |
| variables.rs:533:5:533:16 | let_pattern2 | variables.rs:533:5:533:18 | let_pattern2(...) | |
| variables.rs:533:5:533:18 | let_pattern2(...) | variables.rs:534:5:534:19 | ExprStmt | |
| variables.rs:533:5:533:19 | ExprStmt | variables.rs:533:5:533:16 | let_pattern2 | |
| variables.rs:534:5:534:16 | let_pattern3 | variables.rs:534:5:534:18 | let_pattern3(...) | |
| variables.rs:534:5:534:18 | let_pattern3(...) | variables.rs:535:5:535:19 | ExprStmt | |
| variables.rs:534:5:534:19 | ExprStmt | variables.rs:534:5:534:16 | let_pattern3 | |
| variables.rs:535:5:535:16 | let_pattern4 | variables.rs:535:5:535:18 | let_pattern4(...) | |
| variables.rs:535:5:535:18 | let_pattern4(...) | variables.rs:536:5:536:21 | ExprStmt | |
| variables.rs:535:5:535:19 | ExprStmt | variables.rs:535:5:535:16 | let_pattern4 | |
| variables.rs:536:5:536:18 | match_pattern1 | variables.rs:536:5:536:20 | match_pattern1(...) | |
| variables.rs:536:5:536:20 | match_pattern1(...) | variables.rs:537:5:537:21 | ExprStmt | |
| variables.rs:536:5:536:21 | ExprStmt | variables.rs:536:5:536:18 | match_pattern1 | |
| variables.rs:537:5:537:18 | match_pattern2 | variables.rs:537:5:537:20 | match_pattern2(...) | |
| variables.rs:537:5:537:20 | match_pattern2(...) | variables.rs:538:5:538:21 | ExprStmt | |
| variables.rs:537:5:537:21 | ExprStmt | variables.rs:537:5:537:18 | match_pattern2 | |
| variables.rs:538:5:538:18 | match_pattern3 | variables.rs:538:5:538:20 | match_pattern3(...) | |
| variables.rs:538:5:538:20 | match_pattern3(...) | variables.rs:539:5:539:21 | ExprStmt | |
| variables.rs:538:5:538:21 | ExprStmt | variables.rs:538:5:538:18 | match_pattern3 | |
| variables.rs:539:5:539:18 | match_pattern4 | variables.rs:539:5:539:20 | match_pattern4(...) | |
| variables.rs:539:5:539:20 | match_pattern4(...) | variables.rs:540:5:540:21 | ExprStmt | |
| variables.rs:539:5:539:21 | ExprStmt | variables.rs:539:5:539:18 | match_pattern4 | |
| variables.rs:540:5:540:18 | match_pattern5 | variables.rs:540:5:540:20 | match_pattern5(...) | |
| variables.rs:540:5:540:20 | match_pattern5(...) | variables.rs:541:5:541:21 | ExprStmt | |
| variables.rs:540:5:540:21 | ExprStmt | variables.rs:540:5:540:18 | match_pattern5 | |
| variables.rs:541:5:541:18 | match_pattern6 | variables.rs:541:5:541:20 | match_pattern6(...) | |
| variables.rs:541:5:541:20 | match_pattern6(...) | variables.rs:542:5:542:21 | ExprStmt | |
| variables.rs:541:5:541:21 | ExprStmt | variables.rs:541:5:541:18 | match_pattern6 | |
| variables.rs:542:5:542:18 | match_pattern7 | variables.rs:542:5:542:20 | match_pattern7(...) | |
| variables.rs:542:5:542:20 | match_pattern7(...) | variables.rs:543:5:543:21 | ExprStmt | |
| variables.rs:542:5:542:21 | ExprStmt | variables.rs:542:5:542:18 | match_pattern7 | |
| variables.rs:543:5:543:18 | match_pattern8 | variables.rs:543:5:543:20 | match_pattern8(...) | |
| variables.rs:543:5:543:20 | match_pattern8(...) | variables.rs:544:5:544:21 | ExprStmt | |
| variables.rs:543:5:543:21 | ExprStmt | variables.rs:543:5:543:18 | match_pattern8 | |
| variables.rs:544:5:544:18 | match_pattern9 | variables.rs:544:5:544:20 | match_pattern9(...) | |
| variables.rs:544:5:544:20 | match_pattern9(...) | variables.rs:545:5:545:36 | ExprStmt | |
| variables.rs:544:5:544:21 | ExprStmt | variables.rs:544:5:544:18 | match_pattern9 | |
| variables.rs:545:5:545:18 | param_pattern1 | variables.rs:545:20:545:22 | "a" | |
| variables.rs:545:5:545:35 | param_pattern1(...) | variables.rs:546:5:546:37 | ExprStmt | |
| variables.rs:545:5:545:36 | ExprStmt | variables.rs:545:5:545:18 | param_pattern1 | |
| variables.rs:545:20:545:22 | "a" | variables.rs:545:26:545:28 | "b" | |
| variables.rs:545:25:545:34 | TupleExpr | variables.rs:545:5:545:35 | param_pattern1(...) | |
| variables.rs:545:26:545:28 | "b" | variables.rs:545:31:545:33 | "c" | |
| variables.rs:545:31:545:33 | "c" | variables.rs:545:25:545:34 | TupleExpr | |
| variables.rs:546:5:546:18 | param_pattern2 | variables.rs:546:20:546:31 | ...::Left | |
| variables.rs:546:5:546:36 | param_pattern2(...) | variables.rs:547:5:547:26 | ExprStmt | |
| variables.rs:546:5:546:37 | ExprStmt | variables.rs:546:5:546:18 | param_pattern2 | |
| variables.rs:546:20:546:31 | ...::Left | variables.rs:546:33:546:34 | 45 | |
| variables.rs:546:20:546:35 | ...::Left(...) | variables.rs:546:5:546:36 | param_pattern2(...) | |
| variables.rs:546:33:546:34 | 45 | variables.rs:546:20:546:35 | ...::Left(...) | |
| variables.rs:547:5:547:23 | destruct_assignment | variables.rs:547:5:547:25 | destruct_assignment(...) | |
| variables.rs:547:5:547:25 | destruct_assignment(...) | variables.rs:548:5:548:23 | ExprStmt | |
| variables.rs:547:5:547:26 | ExprStmt | variables.rs:547:5:547:23 | destruct_assignment | |
| variables.rs:548:5:548:20 | closure_variable | variables.rs:548:5:548:22 | closure_variable(...) | |
| variables.rs:548:5:548:22 | closure_variable(...) | variables.rs:549:5:549:19 | ExprStmt | |
| variables.rs:548:5:548:23 | ExprStmt | variables.rs:548:5:548:20 | closure_variable | |
| variables.rs:549:5:549:16 | for_variable | variables.rs:549:5:549:18 | for_variable(...) | |
| variables.rs:549:5:549:18 | for_variable(...) | variables.rs:550:5:550:17 | ExprStmt | |
| variables.rs:549:5:549:19 | ExprStmt | variables.rs:549:5:549:16 | for_variable | |
| variables.rs:550:5:550:14 | add_assign | variables.rs:550:5:550:16 | add_assign(...) | |
| variables.rs:550:5:550:16 | add_assign(...) | variables.rs:551:5:551:13 | ExprStmt | |
| variables.rs:550:5:550:17 | ExprStmt | variables.rs:550:5:550:14 | add_assign | |
| variables.rs:551:5:551:10 | mutate | variables.rs:551:5:551:12 | mutate(...) | |
| variables.rs:551:5:551:12 | mutate(...) | variables.rs:552:5:552:17 | ExprStmt | |
| variables.rs:551:5:551:13 | ExprStmt | variables.rs:551:5:551:10 | mutate | |
| variables.rs:552:5:552:14 | mutate_arg | variables.rs:552:5:552:16 | mutate_arg(...) | |
| variables.rs:552:5:552:16 | mutate_arg(...) | variables.rs:553:5:553:12 | ExprStmt | |
| variables.rs:552:5:552:17 | ExprStmt | variables.rs:552:5:552:14 | mutate_arg | |
| variables.rs:553:5:553:9 | alias | variables.rs:553:5:553:11 | alias(...) | |
| variables.rs:553:5:553:11 | alias(...) | variables.rs:554:5:554:18 | ExprStmt | |
| variables.rs:553:5:553:12 | ExprStmt | variables.rs:553:5:553:9 | alias | |
| variables.rs:554:5:554:15 | capture_mut | variables.rs:554:5:554:17 | capture_mut(...) | |
| variables.rs:554:5:554:17 | capture_mut(...) | variables.rs:555:5:555:20 | ExprStmt | |
| variables.rs:554:5:554:18 | ExprStmt | variables.rs:554:5:554:15 | capture_mut | |
| variables.rs:555:5:555:17 | capture_immut | variables.rs:555:5:555:19 | capture_immut(...) | |
| variables.rs:555:5:555:19 | capture_immut(...) | variables.rs:556:5:556:26 | ExprStmt | |
| variables.rs:555:5:555:20 | ExprStmt | variables.rs:555:5:555:17 | capture_immut | |
| variables.rs:556:5:556:23 | async_block_capture | variables.rs:556:5:556:25 | async_block_capture(...) | |
| variables.rs:556:5:556:25 | async_block_capture(...) | variables.rs:557:5:557:14 | ExprStmt | |
| variables.rs:556:5:556:26 | ExprStmt | variables.rs:556:5:556:23 | async_block_capture | |
| variables.rs:557:5:557:11 | structs | variables.rs:557:5:557:13 | structs(...) | |
| variables.rs:557:5:557:13 | structs(...) | variables.rs:558:5:558:14 | ExprStmt | |
| variables.rs:557:5:557:14 | ExprStmt | variables.rs:557:5:557:11 | structs | |
| variables.rs:558:5:558:11 | ref_arg | variables.rs:558:5:558:13 | ref_arg(...) | |
| variables.rs:558:5:558:13 | ref_arg(...) | variables.rs:559:5:559:30 | ExprStmt | |
| variables.rs:558:5:558:14 | ExprStmt | variables.rs:558:5:558:11 | ref_arg | |
| variables.rs:559:5:559:27 | ref_methodcall_receiver | variables.rs:559:5:559:29 | ref_methodcall_receiver(...) | |
| variables.rs:559:5:559:29 | ref_methodcall_receiver(...) | variables.rs:526:11:560:1 | { ... } | |
| variables.rs:559:5:559:30 | ExprStmt | variables.rs:559:5:559:27 | ref_methodcall_receiver | |
| variables.rs:500:1:507:1 | enter fn arrays | variables.rs:501:5:501:26 | let ... = ... | |
| variables.rs:500:1:507:1 | exit fn arrays (normal) | variables.rs:500:1:507:1 | exit fn arrays | |
| variables.rs:500:13:507:1 | { ... } | variables.rs:500:1:507:1 | exit fn arrays (normal) | |
| variables.rs:501:5:501:26 | let ... = ... | variables.rs:501:18:501:18 | 1 | |
| variables.rs:501:9:501:13 | a | variables.rs:502:5:502:20 | ExprStmt | match |
| variables.rs:501:17:501:25 | [...] | variables.rs:501:9:501:13 | a | |
| variables.rs:501:18:501:18 | 1 | variables.rs:501:21:501:21 | 2 | |
| variables.rs:501:21:501:21 | 2 | variables.rs:501:24:501:24 | 3 | |
| variables.rs:501:24:501:24 | 3 | variables.rs:501:17:501:25 | [...] | |
| variables.rs:502:5:502:13 | print_i64 | variables.rs:502:15:502:15 | a | |
| variables.rs:502:5:502:19 | print_i64(...) | variables.rs:503:5:503:13 | ExprStmt | |
| variables.rs:502:5:502:20 | ExprStmt | variables.rs:502:5:502:13 | print_i64 | |
| variables.rs:502:15:502:15 | a | variables.rs:502:17:502:17 | 0 | |
| variables.rs:502:15:502:18 | a[0] | variables.rs:502:5:502:19 | print_i64(...) | |
| variables.rs:502:17:502:17 | 0 | variables.rs:502:15:502:18 | a[0] | |
| variables.rs:503:5:503:5 | a | variables.rs:503:7:503:7 | 1 | |
| variables.rs:503:5:503:8 | a[1] | variables.rs:503:12:503:12 | 5 | |
| variables.rs:503:5:503:12 | ... = ... | variables.rs:504:5:504:20 | ExprStmt | |
| variables.rs:503:5:503:13 | ExprStmt | variables.rs:503:5:503:5 | a | |
| variables.rs:503:7:503:7 | 1 | variables.rs:503:5:503:8 | a[1] | |
| variables.rs:503:12:503:12 | 5 | variables.rs:503:5:503:12 | ... = ... | |
| variables.rs:504:5:504:13 | print_i64 | variables.rs:504:15:504:15 | a | |
| variables.rs:504:5:504:19 | print_i64(...) | variables.rs:505:5:505:18 | ExprStmt | |
| variables.rs:504:5:504:20 | ExprStmt | variables.rs:504:5:504:13 | print_i64 | |
| variables.rs:504:15:504:15 | a | variables.rs:504:17:504:17 | 1 | |
| variables.rs:504:15:504:18 | a[1] | variables.rs:504:5:504:19 | print_i64(...) | |
| variables.rs:504:17:504:17 | 1 | variables.rs:504:15:504:18 | a[1] | |
| variables.rs:505:5:505:5 | a | variables.rs:505:10:505:10 | 4 | |
| variables.rs:505:5:505:17 | ... = ... | variables.rs:506:5:506:20 | ExprStmt | |
| variables.rs:505:5:505:18 | ExprStmt | variables.rs:505:5:505:5 | a | |
| variables.rs:505:9:505:17 | [...] | variables.rs:505:5:505:17 | ... = ... | |
| variables.rs:505:10:505:10 | 4 | variables.rs:505:13:505:13 | 5 | |
| variables.rs:505:13:505:13 | 5 | variables.rs:505:16:505:16 | 6 | |
| variables.rs:505:16:505:16 | 6 | variables.rs:505:9:505:17 | [...] | |
| variables.rs:506:5:506:13 | print_i64 | variables.rs:506:15:506:15 | a | |
| variables.rs:506:5:506:19 | print_i64(...) | variables.rs:500:13:507:1 | { ... } | |
| variables.rs:506:5:506:20 | ExprStmt | variables.rs:506:5:506:13 | print_i64 | |
| variables.rs:506:15:506:15 | a | variables.rs:506:17:506:17 | 2 | |
| variables.rs:506:15:506:18 | a[2] | variables.rs:506:5:506:19 | print_i64(...) | |
| variables.rs:506:17:506:17 | 2 | variables.rs:506:15:506:18 | a[2] | |
| variables.rs:509:1:516:1 | enter fn ref_arg | variables.rs:510:5:510:15 | let ... = 16 | |
| variables.rs:509:1:516:1 | exit fn ref_arg (normal) | variables.rs:509:1:516:1 | exit fn ref_arg | |
| variables.rs:509:14:516:1 | { ... } | variables.rs:509:1:516:1 | exit fn ref_arg (normal) | |
| variables.rs:510:5:510:15 | let ... = 16 | variables.rs:510:13:510:14 | 16 | |
| variables.rs:510:9:510:9 | x | variables.rs:511:5:511:22 | ExprStmt | match |
| variables.rs:510:13:510:14 | 16 | variables.rs:510:9:510:9 | x | |
| variables.rs:511:5:511:17 | print_i64_ref | variables.rs:511:20:511:20 | x | |
| variables.rs:511:5:511:21 | print_i64_ref(...) | variables.rs:512:5:512:17 | ExprStmt | |
| variables.rs:511:5:511:22 | ExprStmt | variables.rs:511:5:511:17 | print_i64_ref | |
| variables.rs:511:19:511:20 | &x | variables.rs:511:5:511:21 | print_i64_ref(...) | |
| variables.rs:511:20:511:20 | x | variables.rs:511:19:511:20 | &x | |
| variables.rs:512:5:512:13 | print_i64 | variables.rs:512:15:512:15 | x | |
| variables.rs:512:5:512:16 | print_i64(...) | variables.rs:514:5:514:15 | let ... = 17 | |
| variables.rs:512:5:512:17 | ExprStmt | variables.rs:512:5:512:13 | print_i64 | |
| variables.rs:512:15:512:15 | x | variables.rs:512:5:512:16 | print_i64(...) | |
| variables.rs:514:5:514:15 | let ... = 17 | variables.rs:514:13:514:14 | 17 | |
| variables.rs:514:9:514:9 | z | variables.rs:515:5:515:22 | ExprStmt | match |
| variables.rs:514:13:514:14 | 17 | variables.rs:514:9:514:9 | z | |
| variables.rs:515:5:515:17 | print_i64_ref | variables.rs:515:20:515:20 | z | |
| variables.rs:515:5:515:21 | print_i64_ref(...) | variables.rs:509:14:516:1 | { ... } | |
| variables.rs:515:5:515:22 | ExprStmt | variables.rs:515:5:515:17 | print_i64_ref | |
| variables.rs:515:19:515:20 | &z | variables.rs:515:5:515:21 | print_i64_ref(...) | |
| variables.rs:515:20:515:20 | z | variables.rs:515:19:515:20 | &z | |
| variables.rs:523:3:525:3 | enter fn bar | variables.rs:523:15:523:18 | self | |
| variables.rs:523:3:525:3 | exit fn bar (normal) | variables.rs:523:3:525:3 | exit fn bar | |
| variables.rs:523:10:523:18 | SelfParam | variables.rs:524:5:524:32 | ExprStmt | |
| variables.rs:523:15:523:18 | self | variables.rs:523:10:523:18 | SelfParam | |
| variables.rs:523:21:525:3 | { ... } | variables.rs:523:3:525:3 | exit fn bar (normal) | |
| variables.rs:524:5:524:9 | * ... | variables.rs:524:29:524:29 | 3 | |
| variables.rs:524:5:524:31 | ... = ... | variables.rs:523:21:525:3 | { ... } | |
| variables.rs:524:5:524:32 | ExprStmt | variables.rs:524:6:524:9 | self | |
| variables.rs:524:6:524:9 | self | variables.rs:524:5:524:9 | * ... | |
| variables.rs:524:13:524:31 | MyStruct {...} | variables.rs:524:5:524:31 | ... = ... | |
| variables.rs:524:29:524:29 | 3 | variables.rs:524:13:524:31 | MyStruct {...} | |
| variables.rs:528:1:533:1 | enter fn ref_methodcall_receiver | variables.rs:529:3:529:34 | let ... = ... | |
| variables.rs:528:1:533:1 | exit fn ref_methodcall_receiver (normal) | variables.rs:528:1:533:1 | exit fn ref_methodcall_receiver | |
| variables.rs:528:30:533:1 | { ... } | variables.rs:528:1:533:1 | exit fn ref_methodcall_receiver (normal) | |
| variables.rs:529:3:529:34 | let ... = ... | variables.rs:529:31:529:31 | 1 | |
| variables.rs:529:7:529:11 | a | variables.rs:530:3:530:10 | ExprStmt | match |
| variables.rs:529:15:529:33 | MyStruct {...} | variables.rs:529:7:529:11 | a | |
| variables.rs:529:31:529:31 | 1 | variables.rs:529:15:529:33 | MyStruct {...} | |
| variables.rs:530:3:530:3 | a | variables.rs:530:3:530:9 | ... .bar(...) | |
| variables.rs:530:3:530:9 | ... .bar(...) | variables.rs:532:3:532:19 | ExprStmt | |
| variables.rs:530:3:530:10 | ExprStmt | variables.rs:530:3:530:3 | a | |
| variables.rs:532:3:532:11 | print_i64 | variables.rs:532:13:532:13 | a | |
| variables.rs:532:3:532:18 | print_i64(...) | variables.rs:528:30:533:1 | { ... } | |
| variables.rs:532:3:532:19 | ExprStmt | variables.rs:532:3:532:11 | print_i64 | |
| variables.rs:532:13:532:13 | a | variables.rs:532:13:532:17 | a.val | |
| variables.rs:532:13:532:17 | a.val | variables.rs:532:3:532:18 | print_i64(...) | |
| variables.rs:535:1:569:1 | enter fn main | variables.rs:536:5:536:25 | ExprStmt | |
| variables.rs:535:1:569:1 | exit fn main (normal) | variables.rs:535:1:569:1 | exit fn main | |
| variables.rs:535:11:569:1 | { ... } | variables.rs:535:1:569:1 | exit fn main (normal) | |
| variables.rs:536:5:536:22 | immutable_variable | variables.rs:536:5:536:24 | immutable_variable(...) | |
| variables.rs:536:5:536:24 | immutable_variable(...) | variables.rs:537:5:537:23 | ExprStmt | |
| variables.rs:536:5:536:25 | ExprStmt | variables.rs:536:5:536:22 | immutable_variable | |
| variables.rs:537:5:537:20 | mutable_variable | variables.rs:537:5:537:22 | mutable_variable(...) | |
| variables.rs:537:5:537:22 | mutable_variable(...) | variables.rs:538:5:538:40 | ExprStmt | |
| variables.rs:537:5:537:23 | ExprStmt | variables.rs:537:5:537:20 | mutable_variable | |
| variables.rs:538:5:538:37 | mutable_variable_immutable_borrow | variables.rs:538:5:538:39 | mutable_variable_immutable_borrow(...) | |
| variables.rs:538:5:538:39 | mutable_variable_immutable_borrow(...) | variables.rs:539:5:539:23 | ExprStmt | |
| variables.rs:538:5:538:40 | ExprStmt | variables.rs:538:5:538:37 | mutable_variable_immutable_borrow | |
| variables.rs:539:5:539:20 | variable_shadow1 | variables.rs:539:5:539:22 | variable_shadow1(...) | |
| variables.rs:539:5:539:22 | variable_shadow1(...) | variables.rs:540:5:540:23 | ExprStmt | |
| variables.rs:539:5:539:23 | ExprStmt | variables.rs:539:5:539:20 | variable_shadow1 | |
| variables.rs:540:5:540:20 | variable_shadow2 | variables.rs:540:5:540:22 | variable_shadow2(...) | |
| variables.rs:540:5:540:22 | variable_shadow2(...) | variables.rs:541:5:541:19 | ExprStmt | |
| variables.rs:540:5:540:23 | ExprStmt | variables.rs:540:5:540:20 | variable_shadow2 | |
| variables.rs:541:5:541:16 | let_pattern1 | variables.rs:541:5:541:18 | let_pattern1(...) | |
| variables.rs:541:5:541:18 | let_pattern1(...) | variables.rs:542:5:542:19 | ExprStmt | |
| variables.rs:541:5:541:19 | ExprStmt | variables.rs:541:5:541:16 | let_pattern1 | |
| variables.rs:542:5:542:16 | let_pattern2 | variables.rs:542:5:542:18 | let_pattern2(...) | |
| variables.rs:542:5:542:18 | let_pattern2(...) | variables.rs:543:5:543:19 | ExprStmt | |
| variables.rs:542:5:542:19 | ExprStmt | variables.rs:542:5:542:16 | let_pattern2 | |
| variables.rs:543:5:543:16 | let_pattern3 | variables.rs:543:5:543:18 | let_pattern3(...) | |
| variables.rs:543:5:543:18 | let_pattern3(...) | variables.rs:544:5:544:19 | ExprStmt | |
| variables.rs:543:5:543:19 | ExprStmt | variables.rs:543:5:543:16 | let_pattern3 | |
| variables.rs:544:5:544:16 | let_pattern4 | variables.rs:544:5:544:18 | let_pattern4(...) | |
| variables.rs:544:5:544:18 | let_pattern4(...) | variables.rs:545:5:545:21 | ExprStmt | |
| variables.rs:544:5:544:19 | ExprStmt | variables.rs:544:5:544:16 | let_pattern4 | |
| variables.rs:545:5:545:18 | match_pattern1 | variables.rs:545:5:545:20 | match_pattern1(...) | |
| variables.rs:545:5:545:20 | match_pattern1(...) | variables.rs:546:5:546:21 | ExprStmt | |
| variables.rs:545:5:545:21 | ExprStmt | variables.rs:545:5:545:18 | match_pattern1 | |
| variables.rs:546:5:546:18 | match_pattern2 | variables.rs:546:5:546:20 | match_pattern2(...) | |
| variables.rs:546:5:546:20 | match_pattern2(...) | variables.rs:547:5:547:21 | ExprStmt | |
| variables.rs:546:5:546:21 | ExprStmt | variables.rs:546:5:546:18 | match_pattern2 | |
| variables.rs:547:5:547:18 | match_pattern3 | variables.rs:547:5:547:20 | match_pattern3(...) | |
| variables.rs:547:5:547:20 | match_pattern3(...) | variables.rs:548:5:548:21 | ExprStmt | |
| variables.rs:547:5:547:21 | ExprStmt | variables.rs:547:5:547:18 | match_pattern3 | |
| variables.rs:548:5:548:18 | match_pattern4 | variables.rs:548:5:548:20 | match_pattern4(...) | |
| variables.rs:548:5:548:20 | match_pattern4(...) | variables.rs:549:5:549:21 | ExprStmt | |
| variables.rs:548:5:548:21 | ExprStmt | variables.rs:548:5:548:18 | match_pattern4 | |
| variables.rs:549:5:549:18 | match_pattern5 | variables.rs:549:5:549:20 | match_pattern5(...) | |
| variables.rs:549:5:549:20 | match_pattern5(...) | variables.rs:550:5:550:21 | ExprStmt | |
| variables.rs:549:5:549:21 | ExprStmt | variables.rs:549:5:549:18 | match_pattern5 | |
| variables.rs:550:5:550:18 | match_pattern6 | variables.rs:550:5:550:20 | match_pattern6(...) | |
| variables.rs:550:5:550:20 | match_pattern6(...) | variables.rs:551:5:551:21 | ExprStmt | |
| variables.rs:550:5:550:21 | ExprStmt | variables.rs:550:5:550:18 | match_pattern6 | |
| variables.rs:551:5:551:18 | match_pattern7 | variables.rs:551:5:551:20 | match_pattern7(...) | |
| variables.rs:551:5:551:20 | match_pattern7(...) | variables.rs:552:5:552:21 | ExprStmt | |
| variables.rs:551:5:551:21 | ExprStmt | variables.rs:551:5:551:18 | match_pattern7 | |
| variables.rs:552:5:552:18 | match_pattern8 | variables.rs:552:5:552:20 | match_pattern8(...) | |
| variables.rs:552:5:552:20 | match_pattern8(...) | variables.rs:553:5:553:21 | ExprStmt | |
| variables.rs:552:5:552:21 | ExprStmt | variables.rs:552:5:552:18 | match_pattern8 | |
| variables.rs:553:5:553:18 | match_pattern9 | variables.rs:553:5:553:20 | match_pattern9(...) | |
| variables.rs:553:5:553:20 | match_pattern9(...) | variables.rs:554:5:554:36 | ExprStmt | |
| variables.rs:553:5:553:21 | ExprStmt | variables.rs:553:5:553:18 | match_pattern9 | |
| variables.rs:554:5:554:18 | param_pattern1 | variables.rs:554:20:554:22 | "a" | |
| variables.rs:554:5:554:35 | param_pattern1(...) | variables.rs:555:5:555:37 | ExprStmt | |
| variables.rs:554:5:554:36 | ExprStmt | variables.rs:554:5:554:18 | param_pattern1 | |
| variables.rs:554:20:554:22 | "a" | variables.rs:554:26:554:28 | "b" | |
| variables.rs:554:25:554:34 | TupleExpr | variables.rs:554:5:554:35 | param_pattern1(...) | |
| variables.rs:554:26:554:28 | "b" | variables.rs:554:31:554:33 | "c" | |
| variables.rs:554:31:554:33 | "c" | variables.rs:554:25:554:34 | TupleExpr | |
| variables.rs:555:5:555:18 | param_pattern2 | variables.rs:555:20:555:31 | ...::Left | |
| variables.rs:555:5:555:36 | param_pattern2(...) | variables.rs:556:5:556:26 | ExprStmt | |
| variables.rs:555:5:555:37 | ExprStmt | variables.rs:555:5:555:18 | param_pattern2 | |
| variables.rs:555:20:555:31 | ...::Left | variables.rs:555:33:555:34 | 45 | |
| variables.rs:555:20:555:35 | ...::Left(...) | variables.rs:555:5:555:36 | param_pattern2(...) | |
| variables.rs:555:33:555:34 | 45 | variables.rs:555:20:555:35 | ...::Left(...) | |
| variables.rs:556:5:556:23 | destruct_assignment | variables.rs:556:5:556:25 | destruct_assignment(...) | |
| variables.rs:556:5:556:25 | destruct_assignment(...) | variables.rs:557:5:557:23 | ExprStmt | |
| variables.rs:556:5:556:26 | ExprStmt | variables.rs:556:5:556:23 | destruct_assignment | |
| variables.rs:557:5:557:20 | closure_variable | variables.rs:557:5:557:22 | closure_variable(...) | |
| variables.rs:557:5:557:22 | closure_variable(...) | variables.rs:558:5:558:19 | ExprStmt | |
| variables.rs:557:5:557:23 | ExprStmt | variables.rs:557:5:557:20 | closure_variable | |
| variables.rs:558:5:558:16 | for_variable | variables.rs:558:5:558:18 | for_variable(...) | |
| variables.rs:558:5:558:18 | for_variable(...) | variables.rs:559:5:559:17 | ExprStmt | |
| variables.rs:558:5:558:19 | ExprStmt | variables.rs:558:5:558:16 | for_variable | |
| variables.rs:559:5:559:14 | add_assign | variables.rs:559:5:559:16 | add_assign(...) | |
| variables.rs:559:5:559:16 | add_assign(...) | variables.rs:560:5:560:13 | ExprStmt | |
| variables.rs:559:5:559:17 | ExprStmt | variables.rs:559:5:559:14 | add_assign | |
| variables.rs:560:5:560:10 | mutate | variables.rs:560:5:560:12 | mutate(...) | |
| variables.rs:560:5:560:12 | mutate(...) | variables.rs:561:5:561:17 | ExprStmt | |
| variables.rs:560:5:560:13 | ExprStmt | variables.rs:560:5:560:10 | mutate | |
| variables.rs:561:5:561:14 | mutate_arg | variables.rs:561:5:561:16 | mutate_arg(...) | |
| variables.rs:561:5:561:16 | mutate_arg(...) | variables.rs:562:5:562:12 | ExprStmt | |
| variables.rs:561:5:561:17 | ExprStmt | variables.rs:561:5:561:14 | mutate_arg | |
| variables.rs:562:5:562:9 | alias | variables.rs:562:5:562:11 | alias(...) | |
| variables.rs:562:5:562:11 | alias(...) | variables.rs:563:5:563:18 | ExprStmt | |
| variables.rs:562:5:562:12 | ExprStmt | variables.rs:562:5:562:9 | alias | |
| variables.rs:563:5:563:15 | capture_mut | variables.rs:563:5:563:17 | capture_mut(...) | |
| variables.rs:563:5:563:17 | capture_mut(...) | variables.rs:564:5:564:20 | ExprStmt | |
| variables.rs:563:5:563:18 | ExprStmt | variables.rs:563:5:563:15 | capture_mut | |
| variables.rs:564:5:564:17 | capture_immut | variables.rs:564:5:564:19 | capture_immut(...) | |
| variables.rs:564:5:564:19 | capture_immut(...) | variables.rs:565:5:565:26 | ExprStmt | |
| variables.rs:564:5:564:20 | ExprStmt | variables.rs:564:5:564:17 | capture_immut | |
| variables.rs:565:5:565:23 | async_block_capture | variables.rs:565:5:565:25 | async_block_capture(...) | |
| variables.rs:565:5:565:25 | async_block_capture(...) | variables.rs:566:5:566:14 | ExprStmt | |
| variables.rs:565:5:565:26 | ExprStmt | variables.rs:565:5:565:23 | async_block_capture | |
| variables.rs:566:5:566:11 | structs | variables.rs:566:5:566:13 | structs(...) | |
| variables.rs:566:5:566:13 | structs(...) | variables.rs:567:5:567:14 | ExprStmt | |
| variables.rs:566:5:566:14 | ExprStmt | variables.rs:566:5:566:11 | structs | |
| variables.rs:567:5:567:11 | ref_arg | variables.rs:567:5:567:13 | ref_arg(...) | |
| variables.rs:567:5:567:13 | ref_arg(...) | variables.rs:568:5:568:30 | ExprStmt | |
| variables.rs:567:5:567:14 | ExprStmt | variables.rs:567:5:567:11 | ref_arg | |
| variables.rs:568:5:568:27 | ref_methodcall_receiver | variables.rs:568:5:568:29 | ref_methodcall_receiver(...) | |
| variables.rs:568:5:568:29 | ref_methodcall_receiver(...) | variables.rs:535:11:569:1 | { ... } | |
| variables.rs:568:5:568:30 | ExprStmt | variables.rs:568:5:568:27 | ref_methodcall_receiver | |
breakTarget
continueTarget

View File

@@ -6,7 +6,7 @@ nonSsaVariable
| variables.rs:392:13:392:13 | x |
| variables.rs:426:13:426:13 | z |
| variables.rs:492:13:492:13 | a |
| variables.rs:520:11:520:11 | a |
| variables.rs:529:11:529:11 | a |
definition
| variables.rs:3:14:3:14 | s | variables.rs:3:14:3:14 | s |
| variables.rs:7:14:7:14 | i | variables.rs:7:14:7:14 | i |
@@ -136,9 +136,12 @@ definition
| variables.rs:462:9:462:9 | x | variables.rs:462:9:462:9 | x |
| variables.rs:482:15:482:23 | SelfParam | variables.rs:482:20:482:23 | self |
| variables.rs:486:11:486:14 | SelfParam | variables.rs:486:11:486:14 | self |
| variables.rs:501:9:501:9 | x | variables.rs:501:9:501:9 | x |
| variables.rs:505:9:505:9 | z | variables.rs:505:9:505:9 | z |
| variables.rs:514:10:514:18 | SelfParam | variables.rs:514:15:514:18 | self |
| variables.rs:501:9:501:13 | a | variables.rs:501:13:501:13 | a |
| variables.rs:503:5:503:5 | a | variables.rs:501:13:501:13 | a |
| variables.rs:505:5:505:5 | a | variables.rs:501:13:501:13 | a |
| variables.rs:510:9:510:9 | x | variables.rs:510:9:510:9 | x |
| variables.rs:514:9:514:9 | z | variables.rs:514:9:514:9 | z |
| variables.rs:523:10:523:18 | SelfParam | variables.rs:523:15:523:18 | self |
read
| variables.rs:3:14:3:14 | s | variables.rs:3:14:3:14 | s | variables.rs:4:20:4:20 | s |
| variables.rs:7:14:7:14 | i | variables.rs:7:14:7:14 | i | variables.rs:8:20:8:20 | i |
@@ -262,8 +265,11 @@ read
| variables.rs:462:9:462:9 | x | variables.rs:462:9:462:9 | x | variables.rs:472:19:472:19 | x |
| variables.rs:482:15:482:23 | SelfParam | variables.rs:482:20:482:23 | self | variables.rs:483:16:483:19 | self |
| variables.rs:486:11:486:14 | SelfParam | variables.rs:486:11:486:14 | self | variables.rs:487:9:487:12 | self |
| variables.rs:501:9:501:9 | x | variables.rs:501:9:501:9 | x | variables.rs:503:15:503:15 | x |
| variables.rs:514:10:514:18 | SelfParam | variables.rs:514:15:514:18 | self | variables.rs:515:6:515:9 | self |
| variables.rs:501:9:501:13 | a | variables.rs:501:13:501:13 | a | variables.rs:502:15:502:15 | a |
| variables.rs:503:5:503:5 | a | variables.rs:501:13:501:13 | a | variables.rs:504:15:504:15 | a |
| variables.rs:505:5:505:5 | a | variables.rs:501:13:501:13 | a | variables.rs:506:15:506:15 | a |
| variables.rs:510:9:510:9 | x | variables.rs:510:9:510:9 | x | variables.rs:512:15:512:15 | x |
| variables.rs:523:10:523:18 | SelfParam | variables.rs:523:15:523:18 | self | variables.rs:524:6:524:9 | self |
firstRead
| variables.rs:3:14:3:14 | s | variables.rs:3:14:3:14 | s | variables.rs:4:20:4:20 | s |
| variables.rs:7:14:7:14 | i | variables.rs:7:14:7:14 | i | variables.rs:8:20:8:20 | i |
@@ -364,8 +370,11 @@ firstRead
| variables.rs:462:9:462:9 | x | variables.rs:462:9:462:9 | x | variables.rs:466:19:466:19 | x |
| variables.rs:482:15:482:23 | SelfParam | variables.rs:482:20:482:23 | self | variables.rs:483:16:483:19 | self |
| variables.rs:486:11:486:14 | SelfParam | variables.rs:486:11:486:14 | self | variables.rs:487:9:487:12 | self |
| variables.rs:501:9:501:9 | x | variables.rs:501:9:501:9 | x | variables.rs:503:15:503:15 | x |
| variables.rs:514:10:514:18 | SelfParam | variables.rs:514:15:514:18 | self | variables.rs:515:6:515:9 | self |
| variables.rs:501:9:501:13 | a | variables.rs:501:13:501:13 | a | variables.rs:502:15:502:15 | a |
| variables.rs:503:5:503:5 | a | variables.rs:501:13:501:13 | a | variables.rs:504:15:504:15 | a |
| variables.rs:505:5:505:5 | a | variables.rs:501:13:501:13 | a | variables.rs:506:15:506:15 | a |
| variables.rs:510:9:510:9 | x | variables.rs:510:9:510:9 | x | variables.rs:512:15:512:15 | x |
| variables.rs:523:10:523:18 | SelfParam | variables.rs:523:15:523:18 | self | variables.rs:524:6:524:9 | self |
lastRead
| variables.rs:3:14:3:14 | s | variables.rs:3:14:3:14 | s | variables.rs:4:20:4:20 | s |
| variables.rs:7:14:7:14 | i | variables.rs:7:14:7:14 | i | variables.rs:8:20:8:20 | i |
@@ -467,8 +476,11 @@ lastRead
| variables.rs:462:9:462:9 | x | variables.rs:462:9:462:9 | x | variables.rs:472:19:472:19 | x |
| variables.rs:482:15:482:23 | SelfParam | variables.rs:482:20:482:23 | self | variables.rs:483:16:483:19 | self |
| variables.rs:486:11:486:14 | SelfParam | variables.rs:486:11:486:14 | self | variables.rs:487:9:487:12 | self |
| variables.rs:501:9:501:9 | x | variables.rs:501:9:501:9 | x | variables.rs:503:15:503:15 | x |
| variables.rs:514:10:514:18 | SelfParam | variables.rs:514:15:514:18 | self | variables.rs:515:6:515:9 | self |
| variables.rs:501:9:501:13 | a | variables.rs:501:13:501:13 | a | variables.rs:502:15:502:15 | a |
| variables.rs:503:5:503:5 | a | variables.rs:501:13:501:13 | a | variables.rs:504:15:504:15 | a |
| variables.rs:505:5:505:5 | a | variables.rs:501:13:501:13 | a | variables.rs:506:15:506:15 | a |
| variables.rs:510:9:510:9 | x | variables.rs:510:9:510:9 | x | variables.rs:512:15:512:15 | x |
| variables.rs:523:10:523:18 | SelfParam | variables.rs:523:15:523:18 | self | variables.rs:524:6:524:9 | self |
adjacentReads
| variables.rs:35:9:35:10 | x3 | variables.rs:35:9:35:10 | x3 | variables.rs:36:15:36:16 | x3 | variables.rs:38:9:38:10 | x3 |
| variables.rs:43:9:43:10 | x4 | variables.rs:43:9:43:10 | x4 | variables.rs:44:15:44:16 | x4 | variables.rs:49:15:49:16 | x4 |
@@ -571,3 +583,4 @@ assigns
| variables.rs:438:9:438:9 | i | variables.rs:438:13:438:13 | 1 |
| variables.rs:450:9:450:9 | x | variables.rs:450:13:450:13 | 2 |
| variables.rs:454:9:454:9 | x | variables.rs:454:13:454:13 | 3 |
| variables.rs:505:5:505:5 | a | variables.rs:505:9:505:17 | [...] |

View File

@@ -1,4 +1,6 @@
testFailures
| variables.rs:503:5:503:5 | a | Unexpected result: write_access=a |
| variables.rs:503:15:503:32 | //... | Missing result: read_access=a |
failures
variable
| variables.rs:3:14:3:14 | s |
@@ -98,10 +100,11 @@ variable
| variables.rs:482:20:482:23 | self |
| variables.rs:486:11:486:14 | self |
| variables.rs:492:13:492:13 | a |
| variables.rs:501:9:501:9 | x |
| variables.rs:505:9:505:9 | z |
| variables.rs:514:15:514:18 | self |
| variables.rs:520:11:520:11 | a |
| variables.rs:501:13:501:13 | a |
| variables.rs:510:9:510:9 | x |
| variables.rs:514:9:514:9 | z |
| variables.rs:523:15:523:18 | self |
| variables.rs:529:11:529:11 | a |
variableAccess
| variables.rs:4:20:4:20 | s | variables.rs:3:14:3:14 | s |
| variables.rs:8:20:8:20 | i | variables.rs:7:14:7:14 | i |
@@ -256,12 +259,17 @@ variableAccess
| variables.rs:495:15:495:15 | a | variables.rs:492:13:492:13 | a |
| variables.rs:496:5:496:5 | a | variables.rs:492:13:492:13 | a |
| variables.rs:497:15:497:15 | a | variables.rs:492:13:492:13 | a |
| variables.rs:502:20:502:20 | x | variables.rs:501:9:501:9 | x |
| variables.rs:503:15:503:15 | x | variables.rs:501:9:501:9 | x |
| variables.rs:506:20:506:20 | z | variables.rs:505:9:505:9 | z |
| variables.rs:515:6:515:9 | self | variables.rs:514:15:514:18 | self |
| variables.rs:521:3:521:3 | a | variables.rs:520:11:520:11 | a |
| variables.rs:523:13:523:13 | a | variables.rs:520:11:520:11 | a |
| variables.rs:502:15:502:15 | a | variables.rs:501:13:501:13 | a |
| variables.rs:503:5:503:5 | a | variables.rs:501:13:501:13 | a |
| variables.rs:504:15:504:15 | a | variables.rs:501:13:501:13 | a |
| variables.rs:505:5:505:5 | a | variables.rs:501:13:501:13 | a |
| variables.rs:506:15:506:15 | a | variables.rs:501:13:501:13 | a |
| variables.rs:511:20:511:20 | x | variables.rs:510:9:510:9 | x |
| variables.rs:512:15:512:15 | x | variables.rs:510:9:510:9 | x |
| variables.rs:515:20:515:20 | z | variables.rs:514:9:514:9 | z |
| variables.rs:524:6:524:9 | self | variables.rs:523:15:523:18 | self |
| variables.rs:530:3:530:3 | a | variables.rs:529:11:529:11 | a |
| variables.rs:532:13:532:13 | a | variables.rs:529:11:529:11 | a |
variableWriteAccess
| variables.rs:23:5:23:6 | x2 | variables.rs:21:13:21:14 | x2 |
| variables.rs:30:5:30:5 | x | variables.rs:28:13:28:13 | x |
@@ -273,6 +281,8 @@ variableWriteAccess
| variables.rs:450:9:450:9 | x | variables.rs:446:13:446:13 | x |
| variables.rs:454:9:454:9 | x | variables.rs:446:13:446:13 | x |
| variables.rs:496:5:496:5 | a | variables.rs:492:13:492:13 | a |
| variables.rs:503:5:503:5 | a | variables.rs:501:13:501:13 | a |
| variables.rs:505:5:505:5 | a | variables.rs:501:13:501:13 | a |
variableReadAccess
| variables.rs:4:20:4:20 | s | variables.rs:3:14:3:14 | s |
| variables.rs:8:20:8:20 | i | variables.rs:7:14:7:14 | i |
@@ -408,10 +418,13 @@ variableReadAccess
| variables.rs:494:5:494:5 | a | variables.rs:492:13:492:13 | a |
| variables.rs:495:15:495:15 | a | variables.rs:492:13:492:13 | a |
| variables.rs:497:15:497:15 | a | variables.rs:492:13:492:13 | a |
| variables.rs:503:15:503:15 | x | variables.rs:501:9:501:9 | x |
| variables.rs:515:6:515:9 | self | variables.rs:514:15:514:18 | self |
| variables.rs:521:3:521:3 | a | variables.rs:520:11:520:11 | a |
| variables.rs:523:13:523:13 | a | variables.rs:520:11:520:11 | a |
| variables.rs:502:15:502:15 | a | variables.rs:501:13:501:13 | a |
| variables.rs:504:15:504:15 | a | variables.rs:501:13:501:13 | a |
| variables.rs:506:15:506:15 | a | variables.rs:501:13:501:13 | a |
| variables.rs:512:15:512:15 | x | variables.rs:510:9:510:9 | x |
| variables.rs:524:6:524:9 | self | variables.rs:523:15:523:18 | self |
| variables.rs:530:3:530:3 | a | variables.rs:529:11:529:11 | a |
| variables.rs:532:13:532:13 | a | variables.rs:529:11:529:11 | a |
variableInitializer
| variables.rs:16:9:16:10 | x1 | variables.rs:16:14:16:16 | "a" |
| variables.rs:21:13:21:14 | x2 | variables.rs:21:18:21:18 | 4 |
@@ -460,9 +473,10 @@ variableInitializer
| variables.rs:446:13:446:13 | x | variables.rs:446:17:446:17 | 1 |
| variables.rs:462:9:462:9 | x | variables.rs:462:13:462:13 | 1 |
| variables.rs:492:13:492:13 | a | variables.rs:492:17:492:35 | MyStruct {...} |
| variables.rs:501:9:501:9 | x | variables.rs:501:13:501:14 | 16 |
| variables.rs:505:9:505:9 | z | variables.rs:505:13:505:14 | 17 |
| variables.rs:520:11:520:11 | a | variables.rs:520:15:520:33 | MyStruct {...} |
| variables.rs:501:13:501:13 | a | variables.rs:501:17:501:25 | [...] |
| variables.rs:510:9:510:9 | x | variables.rs:510:13:510:14 | 16 |
| variables.rs:514:9:514:9 | z | variables.rs:514:13:514:14 | 17 |
| variables.rs:529:11:529:11 | a | variables.rs:529:15:529:33 | MyStruct {...} |
capturedVariable
| variables.rs:400:9:400:9 | x |
| variables.rs:410:13:410:13 | x |

View File

@@ -497,6 +497,15 @@ fn structs() {
print_i64(a.my_get()); // $ read_access=a
}
fn arrays() {
let mut a = [1, 2, 3]; // a
print_i64(a[0]); // $ read_access=a
a[1] = 5; // $ read_access=a
print_i64(a[1]); // $ read_access=a
a = [4, 5, 6]; // $ write_access=a
print_i64(a[2]); // $ read_access=a
}
fn ref_arg() {
let x = 16; // x
print_i64_ref(&x); // $ access=x