diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll b/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll index 4f5363c2ebfc..1107068606f1 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll @@ -126,8 +126,11 @@ private predicate cannotCauseMatchFailure(Pat pat) { pat instanceof RangePat or // Identifier patterns that are in fact path patterns can cause failures. For // instance `None`. Only if an `@ ...` part is present can we be sure that - // it's an actual identifier pattern. - pat = any(IdentPat p | p.hasPat()) or + // it's an actual identifier pattern. As a heuristic, if the identifier starts + // with a lower case letter, then we assume that it's an identifier. This + // works for code that follows the Rust naming convention for enums and + // constants. + pat = any(IdentPat p | p.hasPat() or p.getName().getText().charAt(0).isLowercase()) or pat instanceof WildcardPat or pat instanceof RestPat or pat instanceof RefPat or diff --git a/rust/ql/test/library-tests/controlflow-unstable/Cfg.expected b/rust/ql/test/library-tests/controlflow-unstable/Cfg.expected index 889fe5f5372e..11e23459648a 100644 --- a/rust/ql/test/library-tests/controlflow-unstable/Cfg.expected +++ b/rust/ql/test/library-tests/controlflow-unstable/Cfg.expected @@ -19,7 +19,6 @@ edges | test.rs:6:17:6:31 | let ... = b | test.rs:6:31:6:31 | b | | | test.rs:6:21:6:27 | Some(...) | test.rs:6:12:6:31 | [boolean(false)] ... && ... | no-match | | test.rs:6:21:6:27 | Some(...) | test.rs:6:26:6:26 | d | match | -| test.rs:6:26:6:26 | d | test.rs:6:12:6:31 | [boolean(false)] ... && ... | no-match | | test.rs:6:26:6:26 | d | test.rs:6:12:6:31 | [boolean(true)] ... && ... | match | | test.rs:6:26:6:26 | d | test.rs:6:26:6:26 | d | | | test.rs:6:31:6:31 | b | test.rs:6:21:6:27 | Some(...) | | @@ -47,7 +46,6 @@ edges | test.rs:14:12:15:16 | [boolean(false)] ... && ... | test.rs:19:13:19:17 | false | false | | test.rs:14:12:15:16 | [boolean(true)] ... && ... | test.rs:17:13:17:13 | d | true | | test.rs:14:17:14:25 | let ... = b | test.rs:14:25:14:25 | b | | -| test.rs:14:21:14:21 | d | test.rs:14:12:14:25 | [boolean(false)] ... && ... | no-match | | test.rs:14:21:14:21 | d | test.rs:14:12:14:25 | [boolean(true)] ... && ... | match | | test.rs:14:21:14:21 | d | test.rs:14:21:14:21 | d | | | test.rs:14:25:14:25 | b | test.rs:14:21:14:21 | d | | diff --git a/rust/ql/test/library-tests/controlflow/BasicBlocks.expected b/rust/ql/test/library-tests/controlflow/BasicBlocks.expected index 5fc13bcc9978..8de7e7066cd8 100644 --- a/rust/ql/test/library-tests/controlflow/BasicBlocks.expected +++ b/rust/ql/test/library-tests/controlflow/BasicBlocks.expected @@ -121,23 +121,17 @@ dominates | test.rs:97:5:104:5 | enter fn test_while_let | test.rs:99:15:99:39 | let ... = ... | | test.rs:97:5:104:5 | enter fn test_while_let | test.rs:99:24:99:24 | x | | test.rs:97:5:104:5 | enter fn test_while_let | test.rs:100:13:102:13 | if ... {...} | -| test.rs:97:5:104:5 | enter fn test_while_let | test.rs:100:17:100:17 | x | | test.rs:97:5:104:5 | enter fn test_while_let | test.rs:101:17:101:22 | ExprStmt | | test.rs:99:9:103:9 | while ... { ... } | test.rs:99:9:103:9 | while ... { ... } | | test.rs:99:15:99:39 | let ... = ... | test.rs:99:9:103:9 | while ... { ... } | | test.rs:99:15:99:39 | let ... = ... | test.rs:99:15:99:39 | let ... = ... | | test.rs:99:15:99:39 | let ... = ... | test.rs:99:24:99:24 | x | | test.rs:99:15:99:39 | let ... = ... | test.rs:100:13:102:13 | if ... {...} | -| test.rs:99:15:99:39 | let ... = ... | test.rs:100:17:100:17 | x | | test.rs:99:15:99:39 | let ... = ... | test.rs:101:17:101:22 | ExprStmt | | test.rs:99:24:99:24 | x | test.rs:99:24:99:24 | x | | test.rs:99:24:99:24 | x | test.rs:100:13:102:13 | if ... {...} | -| test.rs:99:24:99:24 | x | test.rs:100:17:100:17 | x | | test.rs:99:24:99:24 | x | test.rs:101:17:101:22 | ExprStmt | | test.rs:100:13:102:13 | if ... {...} | test.rs:100:13:102:13 | if ... {...} | -| test.rs:100:17:100:17 | x | test.rs:100:13:102:13 | if ... {...} | -| test.rs:100:17:100:17 | x | test.rs:100:17:100:17 | x | -| test.rs:100:17:100:17 | x | test.rs:101:17:101:22 | ExprStmt | | test.rs:101:17:101:22 | ExprStmt | test.rs:101:17:101:22 | ExprStmt | | test.rs:106:5:113:5 | enter fn test_for | test.rs:106:5:113:5 | enter fn test_for | | test.rs:106:5:113:5 | enter fn test_for | test.rs:107:9:112:9 | for ... in ... { ... } | @@ -174,23 +168,17 @@ dominates | test.rs:145:5:151:5 | enter fn test_if_let_else | test.rs:145:5:151:5 | enter fn test_if_let_else | | test.rs:145:5:151:5 | enter fn test_if_let_else | test.rs:146:9:150:9 | if ... {...} else {...} | | test.rs:145:5:151:5 | enter fn test_if_let_else | test.rs:146:21:146:21 | n | -| test.rs:145:5:151:5 | enter fn test_if_let_else | test.rs:147:13:147:13 | n | | test.rs:145:5:151:5 | enter fn test_if_let_else | test.rs:149:13:149:13 | 0 | | test.rs:146:9:150:9 | if ... {...} else {...} | test.rs:146:9:150:9 | if ... {...} else {...} | | test.rs:146:21:146:21 | n | test.rs:146:21:146:21 | n | -| test.rs:146:21:146:21 | n | test.rs:147:13:147:13 | n | -| test.rs:147:13:147:13 | n | test.rs:147:13:147:13 | n | | test.rs:149:13:149:13 | 0 | test.rs:149:13:149:13 | 0 | | test.rs:153:5:158:5 | enter fn test_if_let | test.rs:153:5:158:5 | enter fn test_if_let | | test.rs:153:5:158:5 | enter fn test_if_let | test.rs:153:5:158:5 | exit fn test_if_let (normal) | | test.rs:153:5:158:5 | enter fn test_if_let | test.rs:154:9:156:9 | if ... {...} | | test.rs:153:5:158:5 | enter fn test_if_let | test.rs:154:21:154:21 | n | -| test.rs:153:5:158:5 | enter fn test_if_let | test.rs:155:13:155:21 | ExprStmt | | test.rs:153:5:158:5 | exit fn test_if_let (normal) | test.rs:153:5:158:5 | exit fn test_if_let (normal) | | test.rs:154:9:156:9 | if ... {...} | test.rs:154:9:156:9 | if ... {...} | | test.rs:154:21:154:21 | n | test.rs:154:21:154:21 | n | -| test.rs:154:21:154:21 | n | test.rs:155:13:155:21 | ExprStmt | -| test.rs:155:13:155:21 | ExprStmt | test.rs:155:13:155:21 | ExprStmt | | test.rs:160:5:166:5 | enter fn test_nested_if | test.rs:160:5:166:5 | enter fn test_nested_if | | test.rs:160:5:166:5 | enter fn test_nested_if | test.rs:161:9:165:9 | if ... {...} else {...} | | test.rs:160:5:166:5 | enter fn test_nested_if | test.rs:161:13:161:48 | [boolean(false)] if ... {...} else {...} | @@ -518,26 +506,18 @@ dominates | test.rs:326:5:332:5 | enter fn test_match | test.rs:326:5:332:5 | enter fn test_match | | test.rs:326:5:332:5 | enter fn test_match | test.rs:327:9:331:9 | match maybe_digit { ... } | | test.rs:326:5:332:5 | enter fn test_match | test.rs:328:26:328:26 | x | -| test.rs:326:5:332:5 | enter fn test_match | test.rs:328:32:328:32 | x | | test.rs:326:5:332:5 | enter fn test_match | test.rs:328:42:328:42 | x | | test.rs:326:5:332:5 | enter fn test_match | test.rs:329:13:329:27 | ...::Some(...) | | test.rs:326:5:332:5 | enter fn test_match | test.rs:329:26:329:26 | x | -| test.rs:326:5:332:5 | enter fn test_match | test.rs:329:32:329:32 | x | | test.rs:326:5:332:5 | enter fn test_match | test.rs:330:13:330:24 | ...::None | | test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:327:9:331:9 | match maybe_digit { ... } | | test.rs:328:26:328:26 | x | test.rs:328:26:328:26 | x | -| test.rs:328:26:328:26 | x | test.rs:328:32:328:32 | x | | test.rs:328:26:328:26 | x | test.rs:328:42:328:42 | x | -| test.rs:328:32:328:32 | x | test.rs:328:32:328:32 | x | -| test.rs:328:32:328:32 | x | test.rs:328:42:328:42 | x | | test.rs:328:42:328:42 | x | test.rs:328:42:328:42 | x | | test.rs:329:13:329:27 | ...::Some(...) | test.rs:329:13:329:27 | ...::Some(...) | | test.rs:329:13:329:27 | ...::Some(...) | test.rs:329:26:329:26 | x | -| test.rs:329:13:329:27 | ...::Some(...) | test.rs:329:32:329:32 | x | | test.rs:329:13:329:27 | ...::Some(...) | test.rs:330:13:330:24 | ...::None | | test.rs:329:26:329:26 | x | test.rs:329:26:329:26 | x | -| test.rs:329:26:329:26 | x | test.rs:329:32:329:32 | x | -| test.rs:329:32:329:32 | x | test.rs:329:32:329:32 | x | | test.rs:330:13:330:24 | ...::None | test.rs:330:13:330:24 | ...::None | | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:334:5:343:5 | exit fn test_match_with_return_in_scrutinee (normal) | @@ -545,7 +525,6 @@ dominates | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:336:13:336:21 | ExprStmt | | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:338:13:338:23 | maybe_digit | | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:340:26:340:26 | x | -| test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:340:32:340:32 | x | | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:341:13:341:24 | ...::None | | test.rs:334:5:343:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:334:5:343:5 | exit fn test_match_with_return_in_scrutinee (normal) | | test.rs:335:9:342:9 | match ... { ... } | test.rs:335:9:342:9 | match ... { ... } | @@ -553,18 +532,14 @@ dominates | test.rs:338:13:338:23 | maybe_digit | test.rs:335:9:342:9 | match ... { ... } | | test.rs:338:13:338:23 | maybe_digit | test.rs:338:13:338:23 | maybe_digit | | test.rs:338:13:338:23 | maybe_digit | test.rs:340:26:340:26 | x | -| test.rs:338:13:338:23 | maybe_digit | test.rs:340:32:340:32 | x | | test.rs:338:13:338:23 | maybe_digit | test.rs:341:13:341:24 | ...::None | | test.rs:340:26:340:26 | x | test.rs:340:26:340:26 | x | -| test.rs:340:26:340:26 | x | test.rs:340:32:340:32 | x | -| test.rs:340:32:340:32 | x | test.rs:340:32:340:32 | x | | test.rs:341:13:341:24 | ...::None | test.rs:341:13:341:24 | ...::None | | test.rs:345:5:350:5 | enter fn test_match_and | test.rs:345:5:350:5 | enter fn test_match_and | | test.rs:345:5:350:5 | enter fn test_match_and | test.rs:346:9:349:18 | ... && ... | | test.rs:345:5:350:5 | enter fn test_match_and | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | | test.rs:345:5:350:5 | enter fn test_match_and | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | | test.rs:345:5:350:5 | enter fn test_match_and | test.rs:347:18:347:18 | a | -| test.rs:345:5:350:5 | enter fn test_match_and | test.rs:347:24:347:24 | a | | test.rs:345:5:350:5 | enter fn test_match_and | test.rs:348:13:348:13 | _ | | test.rs:345:5:350:5 | enter fn test_match_and | test.rs:349:15:349:18 | cond | | test.rs:346:9:349:18 | ... && ... | test.rs:346:9:349:18 | ... && ... | @@ -573,40 +548,27 @@ dominates | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | test.rs:349:15:349:18 | cond | | test.rs:347:18:347:18 | a | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | | test.rs:347:18:347:18 | a | test.rs:347:18:347:18 | a | -| test.rs:347:18:347:18 | a | test.rs:347:24:347:24 | a | | test.rs:347:18:347:18 | a | test.rs:349:15:349:18 | cond | -| test.rs:347:24:347:24 | a | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | -| test.rs:347:24:347:24 | a | test.rs:347:24:347:24 | a | -| test.rs:347:24:347:24 | a | test.rs:349:15:349:18 | cond | | test.rs:348:13:348:13 | _ | test.rs:348:13:348:13 | _ | | test.rs:349:15:349:18 | cond | test.rs:349:15:349:18 | cond | | test.rs:352:5:357:5 | enter fn test_match_with_no_arms | test.rs:352:5:357:5 | enter fn test_match_with_no_arms | | test.rs:352:5:357:5 | enter fn test_match_with_no_arms | test.rs:353:9:356:9 | match r { ... } | | test.rs:352:5:357:5 | enter fn test_match_with_no_arms | test.rs:354:16:354:20 | value | -| test.rs:352:5:357:5 | enter fn test_match_with_no_arms | test.rs:354:26:354:30 | value | | test.rs:352:5:357:5 | enter fn test_match_with_no_arms | test.rs:355:13:355:22 | Err(...) | | test.rs:353:9:356:9 | match r { ... } | test.rs:353:9:356:9 | match r { ... } | | test.rs:354:16:354:20 | value | test.rs:354:16:354:20 | value | -| test.rs:354:16:354:20 | value | test.rs:354:26:354:30 | value | -| test.rs:354:26:354:30 | value | test.rs:354:26:354:30 | value | | test.rs:355:13:355:22 | Err(...) | test.rs:355:13:355:22 | Err(...) | | test.rs:362:5:365:5 | enter fn test_let_match | test.rs:362:5:365:5 | enter fn test_let_match | | test.rs:362:5:365:5 | enter fn test_let_match | test.rs:363:18:363:18 | n | | test.rs:362:5:365:5 | enter fn test_let_match | test.rs:363:39:363:53 | MacroStmts | -| test.rs:362:5:365:5 | enter fn test_let_match | test.rs:364:9:364:9 | n | | test.rs:363:18:363:18 | n | test.rs:363:18:363:18 | n | -| test.rs:363:18:363:18 | n | test.rs:364:9:364:9 | n | | test.rs:363:39:363:53 | MacroStmts | test.rs:363:39:363:53 | MacroStmts | -| test.rs:364:9:364:9 | n | test.rs:364:9:364:9 | n | | test.rs:367:5:373:5 | enter fn test_let_with_return | test.rs:367:5:373:5 | enter fn test_let_with_return | | test.rs:367:5:373:5 | enter fn test_let_with_return | test.rs:367:5:373:5 | exit fn test_let_with_return (normal) | | test.rs:367:5:373:5 | enter fn test_let_with_return | test.rs:369:18:369:20 | ret | -| test.rs:367:5:373:5 | enter fn test_let_with_return | test.rs:369:26:369:28 | ret | | test.rs:367:5:373:5 | enter fn test_let_with_return | test.rs:370:13:370:16 | None | | test.rs:367:5:373:5 | exit fn test_let_with_return (normal) | test.rs:367:5:373:5 | exit fn test_let_with_return (normal) | | test.rs:369:18:369:20 | ret | test.rs:369:18:369:20 | ret | -| test.rs:369:18:369:20 | ret | test.rs:369:26:369:28 | ret | -| test.rs:369:26:369:28 | ret | test.rs:369:26:369:28 | ret | | test.rs:370:13:370:16 | None | test.rs:370:13:370:16 | None | | test.rs:378:5:381:5 | enter fn empty_tuple_pattern | test.rs:378:5:381:5 | enter fn empty_tuple_pattern | | test.rs:387:5:391:5 | enter fn empty_struct_pattern | test.rs:387:5:391:5 | enter fn empty_struct_pattern | @@ -729,12 +691,9 @@ dominates | test.rs:456:13:456:13 | _ | test.rs:456:13:456:13 | _ | | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | test.rs:461:9:464:9 | match pair { ... } | -| test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | test.rs:462:18:462:34 | MyStruct {...} | | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | test.rs:462:32:462:32 | _ | | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | test.rs:463:13:463:13 | _ | | test.rs:461:9:464:9 | match pair { ... } | test.rs:461:9:464:9 | match pair { ... } | -| test.rs:462:18:462:34 | MyStruct {...} | test.rs:462:18:462:34 | MyStruct {...} | -| test.rs:462:18:462:34 | MyStruct {...} | test.rs:462:32:462:32 | _ | | test.rs:462:32:462:32 | _ | test.rs:462:32:462:32 | _ | | test.rs:463:13:463:13 | _ | test.rs:463:13:463:13 | _ | | test.rs:475:5:481:5 | enter fn enum_pattern | test.rs:475:5:481:5 | enter fn enum_pattern | @@ -805,12 +764,9 @@ dominates | test.rs:584:1:592:1 | enter fn labelled_block2 | test.rs:585:18:591:5 | 'block: { ... } | | test.rs:584:1:592:1 | enter fn labelled_block2 | test.rs:587:18:587:18 | y | | test.rs:584:1:592:1 | enter fn labelled_block2 | test.rs:588:13:588:27 | ExprStmt | -| test.rs:584:1:592:1 | enter fn labelled_block2 | test.rs:590:9:590:9 | 0 | | test.rs:585:18:591:5 | 'block: { ... } | test.rs:585:18:591:5 | 'block: { ... } | | test.rs:587:18:587:18 | y | test.rs:587:18:587:18 | y | -| test.rs:587:18:587:18 | y | test.rs:590:9:590:9 | 0 | | test.rs:588:13:588:27 | ExprStmt | test.rs:588:13:588:27 | ExprStmt | -| test.rs:590:9:590:9 | 0 | test.rs:590:9:590:9 | 0 | | test.rs:594:1:600:1 | enter fn test_nested_function2 | test.rs:594:1:600:1 | enter fn test_nested_function2 | | test.rs:596:5:598:5 | enter fn nested | test.rs:596:5:598:5 | enter fn nested | | test.rs:611:5:613:5 | enter fn new | test.rs:611:5:613:5 | enter fn new | @@ -903,14 +859,12 @@ postDominance | test.rs:99:9:103:9 | while ... { ... } | test.rs:99:15:99:39 | let ... = ... | | test.rs:99:9:103:9 | while ... { ... } | test.rs:99:24:99:24 | x | | test.rs:99:9:103:9 | while ... { ... } | test.rs:100:13:102:13 | if ... {...} | -| test.rs:99:9:103:9 | while ... { ... } | test.rs:100:17:100:17 | x | | test.rs:99:9:103:9 | while ... { ... } | test.rs:101:17:101:22 | ExprStmt | | test.rs:99:15:99:39 | let ... = ... | test.rs:97:5:104:5 | enter fn test_while_let | | test.rs:99:15:99:39 | let ... = ... | test.rs:99:15:99:39 | let ... = ... | | test.rs:99:15:99:39 | let ... = ... | test.rs:100:13:102:13 | if ... {...} | | test.rs:99:24:99:24 | x | test.rs:99:24:99:24 | x | | test.rs:100:13:102:13 | if ... {...} | test.rs:100:13:102:13 | if ... {...} | -| test.rs:100:17:100:17 | x | test.rs:100:17:100:17 | x | | test.rs:101:17:101:22 | ExprStmt | test.rs:101:17:101:22 | ExprStmt | | test.rs:106:5:113:5 | enter fn test_for | test.rs:106:5:113:5 | enter fn test_for | | test.rs:107:9:112:9 | for ... in ... { ... } | test.rs:106:5:113:5 | enter fn test_for | @@ -944,20 +898,16 @@ postDominance | test.rs:146:9:150:9 | if ... {...} else {...} | test.rs:145:5:151:5 | enter fn test_if_let_else | | test.rs:146:9:150:9 | if ... {...} else {...} | test.rs:146:9:150:9 | if ... {...} else {...} | | test.rs:146:9:150:9 | if ... {...} else {...} | test.rs:146:21:146:21 | n | -| test.rs:146:9:150:9 | if ... {...} else {...} | test.rs:147:13:147:13 | n | | test.rs:146:9:150:9 | if ... {...} else {...} | test.rs:149:13:149:13 | 0 | | test.rs:146:21:146:21 | n | test.rs:146:21:146:21 | n | -| test.rs:147:13:147:13 | n | test.rs:147:13:147:13 | n | | test.rs:149:13:149:13 | 0 | test.rs:149:13:149:13 | 0 | | test.rs:153:5:158:5 | enter fn test_if_let | test.rs:153:5:158:5 | enter fn test_if_let | | test.rs:153:5:158:5 | exit fn test_if_let (normal) | test.rs:153:5:158:5 | enter fn test_if_let | | test.rs:153:5:158:5 | exit fn test_if_let (normal) | test.rs:153:5:158:5 | exit fn test_if_let (normal) | | test.rs:153:5:158:5 | exit fn test_if_let (normal) | test.rs:154:9:156:9 | if ... {...} | | test.rs:153:5:158:5 | exit fn test_if_let (normal) | test.rs:154:21:154:21 | n | -| test.rs:153:5:158:5 | exit fn test_if_let (normal) | test.rs:155:13:155:21 | ExprStmt | | test.rs:154:9:156:9 | if ... {...} | test.rs:154:9:156:9 | if ... {...} | | test.rs:154:21:154:21 | n | test.rs:154:21:154:21 | n | -| test.rs:155:13:155:21 | ExprStmt | test.rs:155:13:155:21 | ExprStmt | | test.rs:160:5:166:5 | enter fn test_nested_if | test.rs:160:5:166:5 | enter fn test_nested_if | | test.rs:161:9:165:9 | if ... {...} else {...} | test.rs:160:5:166:5 | enter fn test_nested_if | | test.rs:161:9:165:9 | if ... {...} else {...} | test.rs:161:9:165:9 | if ... {...} else {...} | @@ -1258,18 +1208,14 @@ postDominance | test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:326:5:332:5 | enter fn test_match | | test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:327:9:331:9 | match maybe_digit { ... } | | test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:328:26:328:26 | x | -| test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:328:32:328:32 | x | | test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:328:42:328:42 | x | | test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:329:13:329:27 | ...::Some(...) | | test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:329:26:329:26 | x | -| test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:329:32:329:32 | x | | test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:330:13:330:24 | ...::None | | test.rs:328:26:328:26 | x | test.rs:328:26:328:26 | x | -| test.rs:328:32:328:32 | x | test.rs:328:32:328:32 | x | | test.rs:328:42:328:42 | x | test.rs:328:42:328:42 | x | | test.rs:329:13:329:27 | ...::Some(...) | test.rs:329:13:329:27 | ...::Some(...) | | test.rs:329:26:329:26 | x | test.rs:329:26:329:26 | x | -| test.rs:329:32:329:32 | x | test.rs:329:32:329:32 | x | | test.rs:330:13:330:24 | ...::None | test.rs:330:13:330:24 | ...::None | | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | | test.rs:334:5:343:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | @@ -1278,17 +1224,14 @@ postDominance | test.rs:334:5:343:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:336:13:336:21 | ExprStmt | | test.rs:334:5:343:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:338:13:338:23 | maybe_digit | | test.rs:334:5:343:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:340:26:340:26 | x | -| test.rs:334:5:343:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:340:32:340:32 | x | | test.rs:334:5:343:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:341:13:341:24 | ...::None | | test.rs:335:9:342:9 | match ... { ... } | test.rs:335:9:342:9 | match ... { ... } | | test.rs:335:9:342:9 | match ... { ... } | test.rs:338:13:338:23 | maybe_digit | | test.rs:335:9:342:9 | match ... { ... } | test.rs:340:26:340:26 | x | -| test.rs:335:9:342:9 | match ... { ... } | test.rs:340:32:340:32 | x | | test.rs:335:9:342:9 | match ... { ... } | test.rs:341:13:341:24 | ...::None | | test.rs:336:13:336:21 | ExprStmt | test.rs:336:13:336:21 | ExprStmt | | test.rs:338:13:338:23 | maybe_digit | test.rs:338:13:338:23 | maybe_digit | | test.rs:340:26:340:26 | x | test.rs:340:26:340:26 | x | -| test.rs:340:32:340:32 | x | test.rs:340:32:340:32 | x | | test.rs:341:13:341:24 | ...::None | test.rs:341:13:341:24 | ...::None | | test.rs:345:5:350:5 | enter fn test_match_and | test.rs:345:5:350:5 | enter fn test_match_and | | test.rs:346:9:349:18 | ... && ... | test.rs:345:5:350:5 | enter fn test_match_and | @@ -1296,14 +1239,12 @@ postDominance | test.rs:346:9:349:18 | ... && ... | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | | test.rs:346:9:349:18 | ... && ... | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | | test.rs:346:9:349:18 | ... && ... | test.rs:347:18:347:18 | a | -| test.rs:346:9:349:18 | ... && ... | test.rs:347:24:347:24 | a | | test.rs:346:9:349:18 | ... && ... | test.rs:348:13:348:13 | _ | | test.rs:346:9:349:18 | ... && ... | test.rs:349:15:349:18 | cond | | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | test.rs:348:13:348:13 | _ | | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | | test.rs:347:18:347:18 | a | test.rs:347:18:347:18 | a | -| test.rs:347:24:347:24 | a | test.rs:347:24:347:24 | a | | test.rs:348:13:348:13 | _ | test.rs:348:13:348:13 | _ | | test.rs:349:15:349:18 | cond | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | | test.rs:349:15:349:18 | cond | test.rs:349:15:349:18 | cond | @@ -1311,26 +1252,19 @@ postDominance | test.rs:353:9:356:9 | match r { ... } | test.rs:352:5:357:5 | enter fn test_match_with_no_arms | | test.rs:353:9:356:9 | match r { ... } | test.rs:353:9:356:9 | match r { ... } | | test.rs:353:9:356:9 | match r { ... } | test.rs:354:16:354:20 | value | -| test.rs:353:9:356:9 | match r { ... } | test.rs:354:26:354:30 | value | | test.rs:353:9:356:9 | match r { ... } | test.rs:355:13:355:22 | Err(...) | | test.rs:354:16:354:20 | value | test.rs:354:16:354:20 | value | -| test.rs:354:26:354:30 | value | test.rs:354:26:354:30 | value | | test.rs:355:13:355:22 | Err(...) | test.rs:355:13:355:22 | Err(...) | | test.rs:362:5:365:5 | enter fn test_let_match | test.rs:362:5:365:5 | enter fn test_let_match | | test.rs:363:18:363:18 | n | test.rs:362:5:365:5 | enter fn test_let_match | | test.rs:363:18:363:18 | n | test.rs:363:18:363:18 | n | | test.rs:363:39:363:53 | MacroStmts | test.rs:363:39:363:53 | MacroStmts | -| test.rs:364:9:364:9 | n | test.rs:362:5:365:5 | enter fn test_let_match | -| test.rs:364:9:364:9 | n | test.rs:363:18:363:18 | n | -| test.rs:364:9:364:9 | n | test.rs:364:9:364:9 | n | | test.rs:367:5:373:5 | enter fn test_let_with_return | test.rs:367:5:373:5 | enter fn test_let_with_return | | test.rs:367:5:373:5 | exit fn test_let_with_return (normal) | test.rs:367:5:373:5 | enter fn test_let_with_return | | test.rs:367:5:373:5 | exit fn test_let_with_return (normal) | test.rs:367:5:373:5 | exit fn test_let_with_return (normal) | | test.rs:367:5:373:5 | exit fn test_let_with_return (normal) | test.rs:369:18:369:20 | ret | -| test.rs:367:5:373:5 | exit fn test_let_with_return (normal) | test.rs:369:26:369:28 | ret | | test.rs:367:5:373:5 | exit fn test_let_with_return (normal) | test.rs:370:13:370:16 | None | | test.rs:369:18:369:20 | ret | test.rs:369:18:369:20 | ret | -| test.rs:369:26:369:28 | ret | test.rs:369:26:369:28 | ret | | test.rs:370:13:370:16 | None | test.rs:370:13:370:16 | None | | test.rs:378:5:381:5 | enter fn empty_tuple_pattern | test.rs:378:5:381:5 | enter fn empty_tuple_pattern | | test.rs:387:5:391:5 | enter fn empty_struct_pattern | test.rs:387:5:391:5 | enter fn empty_struct_pattern | @@ -1435,10 +1369,8 @@ postDominance | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | | test.rs:461:9:464:9 | match pair { ... } | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | | test.rs:461:9:464:9 | match pair { ... } | test.rs:461:9:464:9 | match pair { ... } | -| test.rs:461:9:464:9 | match pair { ... } | test.rs:462:18:462:34 | MyStruct {...} | | test.rs:461:9:464:9 | match pair { ... } | test.rs:462:32:462:32 | _ | | test.rs:461:9:464:9 | match pair { ... } | test.rs:463:13:463:13 | _ | -| test.rs:462:18:462:34 | MyStruct {...} | test.rs:462:18:462:34 | MyStruct {...} | | test.rs:462:32:462:32 | _ | test.rs:462:32:462:32 | _ | | test.rs:463:13:463:13 | _ | test.rs:463:13:463:13 | _ | | test.rs:475:5:481:5 | enter fn enum_pattern | test.rs:475:5:481:5 | enter fn enum_pattern | @@ -1505,10 +1437,8 @@ postDominance | test.rs:585:18:591:5 | 'block: { ... } | test.rs:585:18:591:5 | 'block: { ... } | | test.rs:585:18:591:5 | 'block: { ... } | test.rs:587:18:587:18 | y | | test.rs:585:18:591:5 | 'block: { ... } | test.rs:588:13:588:27 | ExprStmt | -| test.rs:585:18:591:5 | 'block: { ... } | test.rs:590:9:590:9 | 0 | | test.rs:587:18:587:18 | y | test.rs:587:18:587:18 | y | | test.rs:588:13:588:27 | ExprStmt | test.rs:588:13:588:27 | ExprStmt | -| test.rs:590:9:590:9 | 0 | test.rs:590:9:590:9 | 0 | | test.rs:594:1:600:1 | enter fn test_nested_function2 | test.rs:594:1:600:1 | enter fn test_nested_function2 | | test.rs:596:5:598:5 | enter fn nested | test.rs:596:5:598:5 | enter fn nested | | test.rs:611:5:613:5 | enter fn new | test.rs:611:5:613:5 | enter fn new | @@ -1551,9 +1481,8 @@ immediateDominator | test.rs:99:9:103:9 | while ... { ... } | test.rs:99:15:99:39 | let ... = ... | | test.rs:99:15:99:39 | let ... = ... | test.rs:97:5:104:5 | enter fn test_while_let | | test.rs:99:24:99:24 | x | test.rs:99:15:99:39 | let ... = ... | -| test.rs:100:13:102:13 | if ... {...} | test.rs:100:17:100:17 | x | -| test.rs:100:17:100:17 | x | test.rs:99:24:99:24 | x | -| test.rs:101:17:101:22 | ExprStmt | test.rs:100:17:100:17 | x | +| test.rs:100:13:102:13 | if ... {...} | test.rs:99:24:99:24 | x | +| test.rs:101:17:101:22 | ExprStmt | test.rs:99:24:99:24 | x | | test.rs:107:9:112:9 | for ... in ... { ... } | test.rs:107:13:107:13 | i | | test.rs:107:13:107:13 | i | test.rs:106:5:113:5 | enter fn test_for | | test.rs:108:13:110:13 | ExprStmt | test.rs:107:13:107:13 | i | @@ -1566,12 +1495,10 @@ immediateDominator | test.rs:140:13:140:19 | ExprStmt | test.rs:137:5:143:5 | enter fn test_if_without_else | | test.rs:146:9:150:9 | if ... {...} else {...} | test.rs:145:5:151:5 | enter fn test_if_let_else | | test.rs:146:21:146:21 | n | test.rs:145:5:151:5 | enter fn test_if_let_else | -| test.rs:147:13:147:13 | n | test.rs:146:21:146:21 | n | | test.rs:149:13:149:13 | 0 | test.rs:145:5:151:5 | enter fn test_if_let_else | | test.rs:153:5:158:5 | exit fn test_if_let (normal) | test.rs:153:5:158:5 | enter fn test_if_let | | test.rs:154:9:156:9 | if ... {...} | test.rs:153:5:158:5 | enter fn test_if_let | | test.rs:154:21:154:21 | n | test.rs:153:5:158:5 | enter fn test_if_let | -| test.rs:155:13:155:21 | ExprStmt | test.rs:154:21:154:21 | n | | test.rs:161:9:165:9 | if ... {...} else {...} | test.rs:160:5:166:5 | enter fn test_nested_if | | test.rs:161:13:161:48 | [boolean(false)] if ... {...} else {...} | test.rs:160:5:166:5 | enter fn test_nested_if | | test.rs:161:13:161:48 | [boolean(true)] if ... {...} else {...} | test.rs:160:5:166:5 | enter fn test_nested_if | @@ -1682,36 +1609,29 @@ immediateDominator | test.rs:318:13:318:17 | false | test.rs:317:13:317:16 | true | | test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:326:5:332:5 | enter fn test_match | | test.rs:328:26:328:26 | x | test.rs:326:5:332:5 | enter fn test_match | -| test.rs:328:32:328:32 | x | test.rs:328:26:328:26 | x | -| test.rs:328:42:328:42 | x | test.rs:328:32:328:32 | x | +| test.rs:328:42:328:42 | x | test.rs:328:26:328:26 | x | | test.rs:329:13:329:27 | ...::Some(...) | test.rs:326:5:332:5 | enter fn test_match | | test.rs:329:26:329:26 | x | test.rs:329:13:329:27 | ...::Some(...) | -| test.rs:329:32:329:32 | x | test.rs:329:26:329:26 | x | | test.rs:330:13:330:24 | ...::None | test.rs:329:13:329:27 | ...::Some(...) | | test.rs:334:5:343:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | | test.rs:335:9:342:9 | match ... { ... } | test.rs:338:13:338:23 | maybe_digit | | test.rs:336:13:336:21 | ExprStmt | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | | test.rs:338:13:338:23 | maybe_digit | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | | test.rs:340:26:340:26 | x | test.rs:338:13:338:23 | maybe_digit | -| test.rs:340:32:340:32 | x | test.rs:340:26:340:26 | x | | test.rs:341:13:341:24 | ...::None | test.rs:338:13:338:23 | maybe_digit | | test.rs:346:9:349:18 | ... && ... | test.rs:345:5:350:5 | enter fn test_match_and | | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | test.rs:345:5:350:5 | enter fn test_match_and | -| test.rs:346:10:349:9 | [boolean(true)] match r { ... } | test.rs:347:24:347:24 | a | +| test.rs:346:10:349:9 | [boolean(true)] match r { ... } | test.rs:347:18:347:18 | a | | test.rs:347:18:347:18 | a | test.rs:345:5:350:5 | enter fn test_match_and | -| test.rs:347:24:347:24 | a | test.rs:347:18:347:18 | a | | test.rs:348:13:348:13 | _ | test.rs:345:5:350:5 | enter fn test_match_and | | test.rs:349:15:349:18 | cond | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | | test.rs:353:9:356:9 | match r { ... } | test.rs:352:5:357:5 | enter fn test_match_with_no_arms | | test.rs:354:16:354:20 | value | test.rs:352:5:357:5 | enter fn test_match_with_no_arms | -| test.rs:354:26:354:30 | value | test.rs:354:16:354:20 | value | | test.rs:355:13:355:22 | Err(...) | test.rs:352:5:357:5 | enter fn test_match_with_no_arms | | test.rs:363:18:363:18 | n | test.rs:362:5:365:5 | enter fn test_let_match | | test.rs:363:39:363:53 | MacroStmts | test.rs:362:5:365:5 | enter fn test_let_match | -| test.rs:364:9:364:9 | n | test.rs:363:18:363:18 | n | | test.rs:367:5:373:5 | exit fn test_let_with_return (normal) | test.rs:367:5:373:5 | enter fn test_let_with_return | | test.rs:369:18:369:20 | ret | test.rs:367:5:373:5 | enter fn test_let_with_return | -| test.rs:369:26:369:28 | ret | test.rs:369:18:369:20 | ret | | test.rs:370:13:370:16 | None | test.rs:367:5:373:5 | enter fn test_let_with_return | | test.rs:394:9:397:9 | match st { ... } | test.rs:393:5:398:5 | enter fn struct_pattern | | test.rs:395:27:395:27 | 1 | test.rs:393:5:398:5 | enter fn struct_pattern | @@ -1757,8 +1677,7 @@ immediateDominator | test.rs:455:30:455:30 | 3 | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | | test.rs:456:13:456:13 | _ | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | | test.rs:461:9:464:9 | match pair { ... } | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | -| test.rs:462:18:462:34 | MyStruct {...} | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | -| test.rs:462:32:462:32 | _ | test.rs:462:18:462:34 | MyStruct {...} | +| test.rs:462:32:462:32 | _ | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | | test.rs:463:13:463:13 | _ | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | | test.rs:476:9:480:9 | match e { ... } | test.rs:475:5:481:5 | enter fn enum_pattern | | test.rs:477:32:477:32 | _ | test.rs:475:5:481:5 | enter fn enum_pattern | @@ -1783,7 +1702,6 @@ immediateDominator | test.rs:585:18:591:5 | 'block: { ... } | test.rs:584:1:592:1 | enter fn labelled_block2 | | test.rs:587:18:587:18 | y | test.rs:584:1:592:1 | enter fn labelled_block2 | | test.rs:588:13:588:27 | ExprStmt | test.rs:584:1:592:1 | enter fn labelled_block2 | -| test.rs:590:9:590:9 | 0 | test.rs:587:18:587:18 | y | controls | test.rs:18:5:24:5 | enter fn next | test.rs:20:13:20:13 | n | true | | test.rs:18:5:24:5 | enter fn next | test.rs:22:13:22:13 | 3 | false | @@ -1822,8 +1740,8 @@ controls | test.rs:88:15:88:15 | b | test.rs:91:17:91:22 | ExprStmt | true | | test.rs:89:13:89:14 | ExprStmt | test.rs:90:13:92:13 | if ... {...} | false | | test.rs:89:13:89:14 | ExprStmt | test.rs:91:17:91:22 | ExprStmt | true | -| test.rs:100:17:100:17 | x | test.rs:100:13:102:13 | if ... {...} | false | -| test.rs:100:17:100:17 | x | test.rs:101:17:101:22 | ExprStmt | true | +| test.rs:99:24:99:24 | x | test.rs:100:13:102:13 | if ... {...} | false | +| test.rs:99:24:99:24 | x | test.rs:101:17:101:22 | ExprStmt | true | | test.rs:108:13:110:13 | ExprStmt | test.rs:108:13:110:13 | if ... {...} | false | | test.rs:108:13:110:13 | ExprStmt | test.rs:109:17:109:22 | ExprStmt | true | | test.rs:129:5:135:5 | enter fn test_if_else | test.rs:131:13:131:13 | 0 | true | @@ -1964,16 +1882,15 @@ controls | test.rs:301:13:301:21 | [boolean(true)] ... && ... | test.rs:302:13:302:21 | ExprStmt | true | | test.rs:301:18:301:21 | true | test.rs:301:13:301:21 | [boolean(true)] ... && ... | true | | test.rs:301:18:301:21 | true | test.rs:302:13:302:21 | ExprStmt | true | -| test.rs:328:32:328:32 | x | test.rs:328:42:328:42 | x | true | +| test.rs:328:26:328:26 | x | test.rs:328:42:328:42 | x | true | | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:335:9:342:9 | match ... { ... } | false | | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:336:13:336:21 | ExprStmt | true | | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:338:13:338:23 | maybe_digit | false | | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:340:26:340:26 | x | false | -| test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:340:32:340:32 | x | false | | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:341:13:341:24 | ...::None | false | | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | test.rs:349:15:349:18 | cond | true | -| test.rs:347:24:347:24 | a | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | true | -| test.rs:347:24:347:24 | a | test.rs:349:15:349:18 | cond | true | +| test.rs:347:18:347:18 | a | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | true | +| test.rs:347:18:347:18 | a | test.rs:349:15:349:18 | cond | true | | test.rs:511:28:516:9 | enter { ... } | test.rs:512:13:514:13 | if b {...} | false | | test.rs:511:28:516:9 | enter { ... } | test.rs:513:17:513:41 | ExprStmt | true | | test.rs:529:5:537:5 | enter fn const_block_assert | test.rs:533:13:533:49 | ExprStmt | false | @@ -2013,8 +1930,8 @@ successor | test.rs:88:15:88:15 | b | test.rs:89:13:89:14 | ExprStmt | true | | test.rs:89:13:89:14 | ExprStmt | test.rs:90:13:92:13 | if ... {...} | false | | test.rs:89:13:89:14 | ExprStmt | test.rs:91:17:91:22 | ExprStmt | true | -| test.rs:100:17:100:17 | x | test.rs:100:13:102:13 | if ... {...} | false | -| test.rs:100:17:100:17 | x | test.rs:101:17:101:22 | ExprStmt | true | +| test.rs:99:24:99:24 | x | test.rs:100:13:102:13 | if ... {...} | false | +| test.rs:99:24:99:24 | x | test.rs:101:17:101:22 | ExprStmt | true | | test.rs:108:13:110:13 | ExprStmt | test.rs:108:13:110:13 | if ... {...} | false | | test.rs:108:13:110:13 | ExprStmt | test.rs:109:17:109:22 | ExprStmt | true | | test.rs:129:5:135:5 | enter fn test_if_else | test.rs:131:13:131:13 | 0 | true | @@ -2114,14 +2031,14 @@ successor | test.rs:301:13:301:21 | [boolean(false)] ... && ... | test.rs:301:9:303:9 | if ... {...} | false | | test.rs:301:13:301:21 | [boolean(true)] ... && ... | test.rs:302:13:302:21 | ExprStmt | true | | test.rs:301:18:301:21 | true | test.rs:301:13:301:21 | [boolean(true)] ... && ... | true | -| test.rs:328:32:328:32 | x | test.rs:328:42:328:42 | x | true | -| test.rs:328:32:328:32 | x | test.rs:329:13:329:27 | ...::Some(...) | false | +| test.rs:328:26:328:26 | x | test.rs:328:42:328:42 | x | true | +| test.rs:328:26:328:26 | x | test.rs:329:13:329:27 | ...::Some(...) | false | | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:336:13:336:21 | ExprStmt | true | | test.rs:334:5:343:5 | enter fn test_match_with_return_in_scrutinee | test.rs:338:13:338:23 | maybe_digit | false | | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | test.rs:346:9:349:18 | ... && ... | false | | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | test.rs:349:15:349:18 | cond | true | -| test.rs:347:24:347:24 | a | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | false | -| test.rs:347:24:347:24 | a | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | true | +| test.rs:347:18:347:18 | a | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | false | +| test.rs:347:18:347:18 | a | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | true | | test.rs:348:13:348:13 | _ | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | false | | test.rs:511:28:516:9 | enter { ... } | test.rs:512:13:514:13 | if b {...} | false | | test.rs:511:28:516:9 | enter { ... } | test.rs:513:17:513:41 | ExprStmt | true | @@ -2160,9 +2077,8 @@ joinBlockPredecessor | test.rs:88:9:94:9 | while b { ... } | test.rs:91:17:91:22 | ExprStmt | 1 | | test.rs:88:15:88:15 | b | test.rs:86:5:95:5 | enter fn test_while | 1 | | test.rs:88:15:88:15 | b | test.rs:90:13:92:13 | if ... {...} | 0 | -| test.rs:99:9:103:9 | while ... { ... } | test.rs:99:15:99:39 | let ... = ... | 1 | -| test.rs:99:9:103:9 | while ... { ... } | test.rs:99:24:99:24 | x | 0 | -| test.rs:99:9:103:9 | while ... { ... } | test.rs:101:17:101:22 | ExprStmt | 2 | +| test.rs:99:9:103:9 | while ... { ... } | test.rs:99:15:99:39 | let ... = ... | 0 | +| test.rs:99:9:103:9 | while ... { ... } | test.rs:101:17:101:22 | ExprStmt | 1 | | test.rs:99:15:99:39 | let ... = ... | test.rs:97:5:104:5 | enter fn test_while_let | 1 | | test.rs:99:15:99:39 | let ... = ... | test.rs:100:13:102:13 | if ... {...} | 0 | | test.rs:107:9:112:9 | for ... in ... { ... } | test.rs:107:13:107:13 | i | 1 | @@ -2173,14 +2089,10 @@ joinBlockPredecessor | test.rs:130:9:134:9 | if ... {...} else {...} | test.rs:133:13:133:13 | n | 0 | | test.rs:139:9:141:9 | if b {...} | test.rs:137:5:143:5 | enter fn test_if_without_else | 1 | | test.rs:139:9:141:9 | if b {...} | test.rs:140:13:140:19 | ExprStmt | 0 | -| test.rs:146:9:150:9 | if ... {...} else {...} | test.rs:147:13:147:13 | n | 1 | -| test.rs:146:9:150:9 | if ... {...} else {...} | test.rs:149:13:149:13 | 0 | 0 | -| test.rs:149:13:149:13 | 0 | test.rs:145:5:151:5 | enter fn test_if_let_else | 1 | -| test.rs:149:13:149:13 | 0 | test.rs:146:21:146:21 | n | 0 | +| test.rs:146:9:150:9 | if ... {...} else {...} | test.rs:146:21:146:21 | n | 0 | +| test.rs:146:9:150:9 | if ... {...} else {...} | test.rs:149:13:149:13 | 0 | 1 | | test.rs:153:5:158:5 | exit fn test_if_let (normal) | test.rs:154:9:156:9 | if ... {...} | 1 | -| test.rs:153:5:158:5 | exit fn test_if_let (normal) | test.rs:155:13:155:21 | ExprStmt | 0 | -| test.rs:154:9:156:9 | if ... {...} | test.rs:153:5:158:5 | enter fn test_if_let | 1 | -| test.rs:154:9:156:9 | if ... {...} | test.rs:154:21:154:21 | n | 0 | +| test.rs:153:5:158:5 | exit fn test_if_let (normal) | test.rs:154:21:154:21 | n | 0 | | test.rs:161:9:165:9 | if ... {...} else {...} | test.rs:162:13:162:13 | 1 | 1 | | test.rs:161:9:165:9 | if ... {...} else {...} | test.rs:164:13:164:13 | 0 | 0 | | test.rs:161:13:161:48 | [boolean(false)] if ... {...} else {...} | test.rs:161:22:161:32 | [boolean(false)] { ... } | 1 | @@ -2244,35 +2156,22 @@ joinBlockPredecessor | test.rs:316:9:319:9 | match ... { ... } | test.rs:317:21:317:24 | Some | 0 | | test.rs:316:9:319:9 | match ... { ... } | test.rs:318:13:318:17 | false | 1 | | test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:328:42:328:42 | x | 0 | -| test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:329:32:329:32 | x | 1 | +| test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:329:26:329:26 | x | 1 | | test.rs:327:9:331:9 | match maybe_digit { ... } | test.rs:330:13:330:24 | ...::None | 2 | -| test.rs:329:13:329:27 | ...::Some(...) | test.rs:326:5:332:5 | enter fn test_match | 2 | -| test.rs:329:13:329:27 | ...::Some(...) | test.rs:328:26:328:26 | x | 1 | -| test.rs:329:13:329:27 | ...::Some(...) | test.rs:328:32:328:32 | x | 0 | -| test.rs:330:13:330:24 | ...::None | test.rs:329:13:329:27 | ...::Some(...) | 1 | -| test.rs:330:13:330:24 | ...::None | test.rs:329:26:329:26 | x | 0 | +| test.rs:329:13:329:27 | ...::Some(...) | test.rs:326:5:332:5 | enter fn test_match | 1 | +| test.rs:329:13:329:27 | ...::Some(...) | test.rs:328:26:328:26 | x | 0 | | test.rs:334:5:343:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:335:9:342:9 | match ... { ... } | 1 | | test.rs:334:5:343:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:336:13:336:21 | ExprStmt | 0 | -| test.rs:335:9:342:9 | match ... { ... } | test.rs:340:32:340:32 | x | 0 | +| test.rs:335:9:342:9 | match ... { ... } | test.rs:340:26:340:26 | x | 0 | | test.rs:335:9:342:9 | match ... { ... } | test.rs:341:13:341:24 | ...::None | 1 | -| test.rs:341:13:341:24 | ...::None | test.rs:338:13:338:23 | maybe_digit | 0 | -| test.rs:341:13:341:24 | ...::None | test.rs:340:26:340:26 | x | 1 | | test.rs:346:9:349:18 | ... && ... | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | 0 | | test.rs:346:9:349:18 | ... && ... | test.rs:349:15:349:18 | cond | 1 | -| test.rs:346:10:349:9 | [boolean(false)] match r { ... } | test.rs:347:24:347:24 | a | 0 | +| test.rs:346:10:349:9 | [boolean(false)] match r { ... } | test.rs:347:18:347:18 | a | 0 | | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | test.rs:348:13:348:13 | _ | 1 | -| test.rs:348:13:348:13 | _ | test.rs:345:5:350:5 | enter fn test_match_and | 1 | -| test.rs:348:13:348:13 | _ | test.rs:347:18:347:18 | a | 0 | -| test.rs:353:9:356:9 | match r { ... } | test.rs:354:26:354:30 | value | 0 | +| test.rs:353:9:356:9 | match r { ... } | test.rs:354:16:354:20 | value | 0 | | test.rs:353:9:356:9 | match r { ... } | test.rs:355:13:355:22 | Err(...) | 1 | -| test.rs:355:13:355:22 | Err(...) | test.rs:352:5:357:5 | enter fn test_match_with_no_arms | 1 | -| test.rs:355:13:355:22 | Err(...) | test.rs:354:16:354:20 | value | 0 | -| test.rs:363:39:363:53 | MacroStmts | test.rs:362:5:365:5 | enter fn test_let_match | 1 | -| test.rs:363:39:363:53 | MacroStmts | test.rs:363:18:363:18 | n | 0 | -| test.rs:367:5:373:5 | exit fn test_let_with_return (normal) | test.rs:369:26:369:28 | ret | 0 | +| test.rs:367:5:373:5 | exit fn test_let_with_return (normal) | test.rs:369:18:369:20 | ret | 0 | | test.rs:367:5:373:5 | exit fn test_let_with_return (normal) | test.rs:370:13:370:16 | None | 1 | -| test.rs:370:13:370:16 | None | test.rs:367:5:373:5 | enter fn test_let_with_return | 1 | -| test.rs:370:13:370:16 | None | test.rs:369:18:369:20 | ret | 0 | | test.rs:394:9:397:9 | match st { ... } | test.rs:395:34:395:34 | 0 | 0 | | test.rs:394:9:397:9 | match st { ... } | test.rs:396:13:396:26 | MyStruct {...} | 1 | | test.rs:396:13:396:26 | MyStruct {...} | test.rs:393:5:398:5 | enter fn struct_pattern | 1 | @@ -2313,8 +2212,6 @@ joinBlockPredecessor | test.rs:455:13:455:25 | one_or_two!... | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | 1 | | test.rs:461:9:464:9 | match pair { ... } | test.rs:462:32:462:32 | _ | 0 | | test.rs:461:9:464:9 | match pair { ... } | test.rs:463:13:463:13 | _ | 1 | -| test.rs:463:13:463:13 | _ | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | 1 | -| test.rs:463:13:463:13 | _ | test.rs:462:18:462:34 | MyStruct {...} | 0 | | test.rs:476:9:480:9 | match e { ... } | test.rs:477:32:477:32 | _ | 0 | | test.rs:476:9:480:9 | match e { ... } | test.rs:478:26:478:26 | _ | 1 | | test.rs:476:9:480:9 | match e { ... } | test.rs:479:13:479:23 | UnitVariant | 2 | @@ -2327,7 +2224,5 @@ joinBlockPredecessor | test.rs:569:18:580:5 | 'block: { ... } | test.rs:572:13:572:27 | ExprStmt | 0 | | test.rs:569:18:580:5 | 'block: { ... } | test.rs:575:9:577:9 | if ... {...} | 2 | | test.rs:569:18:580:5 | 'block: { ... } | test.rs:576:13:576:27 | ExprStmt | 1 | +| test.rs:585:18:591:5 | 'block: { ... } | test.rs:587:18:587:18 | y | 1 | | test.rs:585:18:591:5 | 'block: { ... } | test.rs:588:13:588:27 | ExprStmt | 0 | -| test.rs:585:18:591:5 | 'block: { ... } | test.rs:590:9:590:9 | 0 | 1 | -| test.rs:588:13:588:27 | ExprStmt | test.rs:584:1:592:1 | enter fn labelled_block2 | 1 | -| test.rs:588:13:588:27 | ExprStmt | test.rs:587:18:587:18 | y | 0 | diff --git a/rust/ql/test/library-tests/controlflow/Cfg.expected b/rust/ql/test/library-tests/controlflow/Cfg.expected index 607bdc8b1ef9..dbb77ca94168 100644 --- a/rust/ql/test/library-tests/controlflow/Cfg.expected +++ b/rust/ql/test/library-tests/controlflow/Cfg.expected @@ -203,7 +203,6 @@ edges | test.rs:99:15:99:39 | let ... = ... | test.rs:99:29:99:32 | iter | | | test.rs:99:19:99:25 | Some(...) | test.rs:99:9:103:9 | while ... { ... } | no-match | | test.rs:99:19:99:25 | Some(...) | test.rs:99:24:99:24 | x | match | -| test.rs:99:24:99:24 | x | test.rs:99:9:103:9 | while ... { ... } | no-match | | test.rs:99:24:99:24 | x | test.rs:99:24:99:24 | x | | | test.rs:99:24:99:24 | x | test.rs:100:17:100:17 | x | match | | test.rs:99:29:99:32 | iter | test.rs:99:29:99:39 | iter.next(...) | | @@ -317,7 +316,6 @@ edges | test.rs:146:16:146:22 | Some(...) | test.rs:149:13:149:13 | 0 | no-match | | test.rs:146:21:146:21 | n | test.rs:146:21:146:21 | n | | | test.rs:146:21:146:21 | n | test.rs:147:13:147:13 | n | match | -| test.rs:146:21:146:21 | n | test.rs:149:13:149:13 | 0 | no-match | | test.rs:146:26:146:26 | a | test.rs:146:16:146:22 | Some(...) | | | test.rs:146:28:148:9 | { ... } | test.rs:146:9:150:9 | if ... {...} else {...} | | | test.rs:147:13:147:13 | n | test.rs:146:28:148:9 | { ... } | | @@ -334,7 +332,6 @@ edges | test.rs:154:12:154:26 | let ... = a | test.rs:154:26:154:26 | a | | | test.rs:154:16:154:22 | Some(...) | test.rs:154:9:156:9 | if ... {...} | no-match | | test.rs:154:16:154:22 | Some(...) | test.rs:154:21:154:21 | n | match | -| test.rs:154:21:154:21 | n | test.rs:154:9:156:9 | if ... {...} | no-match | | test.rs:154:21:154:21 | n | test.rs:154:21:154:21 | n | | | test.rs:154:21:154:21 | n | test.rs:155:13:155:21 | ExprStmt | match | | test.rs:154:26:154:26 | a | test.rs:154:16:154:22 | Some(...) | | @@ -802,7 +799,6 @@ edges | test.rs:328:13:328:27 | ...::Some(...) | test.rs:329:13:329:27 | ...::Some(...) | no-match | | test.rs:328:26:328:26 | x | test.rs:328:26:328:26 | x | | | test.rs:328:26:328:26 | x | test.rs:328:32:328:32 | x | match | -| test.rs:328:26:328:26 | x | test.rs:329:13:329:27 | ...::Some(...) | no-match | | test.rs:328:32:328:32 | x | test.rs:328:36:328:37 | 10 | | | test.rs:328:32:328:37 | ... < ... | test.rs:328:42:328:42 | x | true | | test.rs:328:32:328:37 | ... < ... | test.rs:329:13:329:27 | ...::Some(...) | false | @@ -814,7 +810,6 @@ edges | test.rs:329:13:329:27 | ...::Some(...) | test.rs:330:13:330:24 | ...::None | no-match | | test.rs:329:26:329:26 | x | test.rs:329:26:329:26 | x | | | test.rs:329:26:329:26 | x | test.rs:329:32:329:32 | x | match | -| test.rs:329:26:329:26 | x | test.rs:330:13:330:24 | ...::None | no-match | | test.rs:329:32:329:32 | x | test.rs:327:9:331:9 | match maybe_digit { ... } | | | test.rs:330:13:330:24 | ...::None | test.rs:330:29:330:29 | 5 | match | | test.rs:330:29:330:29 | 5 | test.rs:327:9:331:9 | match maybe_digit { ... } | | @@ -841,7 +836,6 @@ edges | test.rs:340:13:340:27 | ...::Some(...) | test.rs:341:13:341:24 | ...::None | no-match | | test.rs:340:26:340:26 | x | test.rs:340:26:340:26 | x | | | test.rs:340:26:340:26 | x | test.rs:340:32:340:32 | x | match | -| test.rs:340:26:340:26 | x | test.rs:341:13:341:24 | ...::None | no-match | | test.rs:340:32:340:32 | x | test.rs:340:36:340:36 | 5 | | | test.rs:340:32:340:36 | ... + ... | test.rs:335:9:342:9 | match ... { ... } | | | test.rs:340:36:340:36 | 5 | test.rs:340:32:340:36 | ... + ... | | @@ -864,7 +858,6 @@ edges | test.rs:347:13:347:19 | Some(...) | test.rs:348:13:348:13 | _ | no-match | | test.rs:347:18:347:18 | a | test.rs:347:18:347:18 | a | | | test.rs:347:18:347:18 | a | test.rs:347:24:347:24 | a | match | -| test.rs:347:18:347:18 | a | test.rs:348:13:348:13 | _ | no-match | | test.rs:347:24:347:24 | a | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | false | | test.rs:347:24:347:24 | a | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | true | | test.rs:348:13:348:13 | _ | test.rs:348:18:348:22 | false | match | @@ -882,7 +875,6 @@ edges | test.rs:354:13:354:21 | Ok(...) | test.rs:355:13:355:22 | Err(...) | no-match | | test.rs:354:16:354:20 | value | test.rs:354:16:354:20 | value | | | test.rs:354:16:354:20 | value | test.rs:354:26:354:30 | value | match | -| test.rs:354:16:354:20 | value | test.rs:355:13:355:22 | Err(...) | no-match | | test.rs:354:26:354:30 | value | test.rs:353:9:356:9 | match r { ... } | | | test.rs:355:13:355:22 | Err(...) | test.rs:355:17:355:21 | never | match | | test.rs:355:17:355:21 | never | test.rs:355:17:355:21 | never | | @@ -899,7 +891,6 @@ edges | test.rs:363:13:363:19 | Some(...) | test.rs:363:18:363:18 | n | match | | test.rs:363:13:363:19 | Some(...) | test.rs:363:39:363:53 | MacroStmts | no-match | | test.rs:363:18:363:18 | n | test.rs:363:18:363:18 | n | | -| test.rs:363:18:363:18 | n | test.rs:363:39:363:53 | MacroStmts | no-match | | test.rs:363:18:363:18 | n | test.rs:364:9:364:9 | n | match | | test.rs:363:23:363:23 | a | test.rs:363:13:363:19 | Some(...) | | | test.rs:363:32:363:54 | ...::panic_fmt | test.rs:363:39:363:53 | "Expected some" | | @@ -932,7 +923,6 @@ edges | test.rs:369:13:369:21 | Some(...) | test.rs:370:13:370:16 | None | no-match | | test.rs:369:18:369:20 | ret | test.rs:369:18:369:20 | ret | | | test.rs:369:18:369:20 | ret | test.rs:369:26:369:28 | ret | match | -| test.rs:369:18:369:20 | ret | test.rs:370:13:370:16 | None | no-match | | test.rs:369:26:369:28 | ret | test.rs:368:19:371:9 | match m { ... } | | | test.rs:370:13:370:16 | None | test.rs:370:13:370:16 | None | | | test.rs:370:13:370:16 | None | test.rs:370:28:370:32 | false | match | @@ -1158,7 +1148,6 @@ edges | test.rs:462:14:462:35 | TuplePat | test.rs:462:15:462:15 | n | match | | test.rs:462:15:462:15 | n | test.rs:462:15:462:15 | n | | | test.rs:462:15:462:15 | n | test.rs:462:18:462:34 | MyStruct {...} | match | -| test.rs:462:15:462:15 | n | test.rs:463:13:463:13 | _ | no-match | | test.rs:462:18:462:34 | MyStruct {...} | test.rs:462:32:462:32 | _ | match | | test.rs:462:18:462:34 | MyStruct {...} | test.rs:463:13:463:13 | _ | no-match | | test.rs:462:32:462:32 | _ | test.rs:462:40:462:40 | n | match | @@ -1409,7 +1398,6 @@ edges | test.rs:587:13:587:19 | Some(...) | test.rs:587:18:587:18 | y | match | | test.rs:587:13:587:19 | Some(...) | test.rs:588:13:588:27 | ExprStmt | no-match | | test.rs:587:18:587:18 | y | test.rs:587:18:587:18 | y | | -| test.rs:587:18:587:18 | y | test.rs:588:13:588:27 | ExprStmt | no-match | | test.rs:587:18:587:18 | y | test.rs:590:9:590:9 | 0 | match | | test.rs:587:23:587:23 | x | test.rs:587:13:587:19 | Some(...) | | | test.rs:588:13:588:26 | break ''block 1 | test.rs:585:18:591:5 | 'block: { ... } | break | diff --git a/rust/ql/test/library-tests/variables/Cfg.expected b/rust/ql/test/library-tests/variables/Cfg.expected index a3b64c9100cb..1f25c751eaf7 100644 --- a/rust/ql/test/library-tests/variables/Cfg.expected +++ b/rust/ql/test/library-tests/variables/Cfg.expected @@ -221,7 +221,6 @@ edges | main.rs:87:8:88:12 | let ... = s1 | main.rs:88:11:88:12 | s1 | | | main.rs:87:12:87:23 | Some(...) | main.rs:87:5:90:5 | if ... {...} | no-match | | main.rs:87:12:87:23 | Some(...) | main.rs:87:21:87:22 | s2 | match | -| main.rs:87:17:87:22 | ref s2 | main.rs:87:5:90:5 | if ... {...} | no-match | | main.rs:87:17:87:22 | ref s2 | main.rs:89:9:89:22 | ExprStmt | match | | main.rs:87:21:87:22 | s2 | main.rs:87:17:87:22 | ref s2 | | | main.rs:88:11:88:12 | s1 | main.rs:87:12:87:23 | Some(...) | | @@ -237,7 +236,6 @@ edges | main.rs:94:9:94:16 | Some(...) | main.rs:94:14:94:15 | x5 | match | | main.rs:94:9:94:16 | Some(...) | main.rs:96:13:96:19 | MacroStmts | no-match | | main.rs:94:14:94:15 | x5 | main.rs:94:14:94:15 | x5 | | -| main.rs:94:14:94:15 | x5 | main.rs:96:13:96:19 | MacroStmts | no-match | | main.rs:94:14:94:15 | x5 | main.rs:98:5:98:18 | ExprStmt | match | | main.rs:94:34:94:37 | Some | main.rs:94:39:94:42 | "x5" | | | main.rs:94:34:94:43 | Some(...) | main.rs:94:9:94:16 | Some(...) | | @@ -267,7 +265,6 @@ edges | main.rs:104:11:105:12 | let ... = s1 | main.rs:105:11:105:12 | s1 | | | main.rs:104:15:104:26 | Some(...) | main.rs:104:5:107:5 | while ... { ... } | no-match | | main.rs:104:15:104:26 | Some(...) | main.rs:104:24:104:25 | s2 | match | -| main.rs:104:20:104:25 | ref s2 | main.rs:104:5:107:5 | while ... { ... } | no-match | | main.rs:104:20:104:25 | ref s2 | main.rs:106:9:106:22 | ExprStmt | match | | main.rs:104:24:104:25 | s2 | main.rs:104:20:104:25 | ref s2 | | | main.rs:105:11:105:12 | s1 | main.rs:104:15:104:26 | Some(...) | | @@ -304,7 +301,6 @@ edges | main.rs:116:9:116:16 | Some(...) | main.rs:121:9:121:12 | None | no-match | | main.rs:116:14:116:15 | y1 | main.rs:116:14:116:15 | y1 | | | main.rs:116:14:116:15 | y1 | main.rs:119:13:119:21 | print_i64 | match | -| main.rs:116:14:116:15 | y1 | main.rs:121:9:121:12 | None | no-match | | main.rs:118:9:120:9 | { ... } | main.rs:114:5:122:5 | match x6 { ... } | | | main.rs:119:13:119:21 | print_i64 | main.rs:119:23:119:24 | y1 | | | main.rs:119:13:119:25 | print_i64(...) | main.rs:118:9:120:9 | { ... } | | @@ -457,7 +453,6 @@ edges | main.rs:191:9:191:44 | ... \| ... | main.rs:192:16:192:24 | print_i64 | match | | main.rs:191:22:191:23 | a3 | main.rs:191:9:191:44 | ... \| ... | match | | main.rs:191:22:191:23 | a3 | main.rs:191:22:191:23 | a3 | | -| main.rs:191:22:191:23 | a3 | main.rs:191:28:191:44 | ...::Right(...) | no-match | | main.rs:191:28:191:44 | ...::Right(...) | main.rs:191:42:191:43 | a3 | match | | main.rs:191:42:191:43 | a3 | main.rs:191:9:191:44 | ... \| ... | match | | main.rs:191:42:191:43 | a3 | main.rs:191:42:191:43 | a3 | | @@ -481,12 +476,10 @@ edges | main.rs:205:9:205:81 | ... \| ... \| ... | main.rs:206:16:206:24 | print_i64 | match | | main.rs:205:28:205:29 | a4 | main.rs:205:9:205:81 | ... \| ... \| ... | match | | main.rs:205:28:205:29 | a4 | main.rs:205:28:205:29 | a4 | | -| main.rs:205:28:205:29 | a4 | main.rs:205:34:205:56 | ...::Second(...) | no-match | | main.rs:205:34:205:56 | ...::Second(...) | main.rs:205:54:205:55 | a4 | match | | main.rs:205:34:205:56 | ...::Second(...) | main.rs:205:60:205:81 | ...::Third(...) | no-match | | main.rs:205:54:205:55 | a4 | main.rs:205:9:205:81 | ... \| ... \| ... | match | | main.rs:205:54:205:55 | a4 | main.rs:205:54:205:55 | a4 | | -| main.rs:205:54:205:55 | a4 | main.rs:205:60:205:81 | ...::Third(...) | no-match | | main.rs:205:60:205:81 | ...::Third(...) | main.rs:205:79:205:80 | a4 | match | | main.rs:205:79:205:80 | a4 | main.rs:205:9:205:81 | ... \| ... \| ... | match | | main.rs:205:79:205:80 | a4 | main.rs:205:79:205:80 | a4 | | @@ -503,10 +496,8 @@ edges | main.rs:209:10:209:57 | [match(true)] ... \| ... | main.rs:209:9:209:83 | ... \| ... | match | | main.rs:209:29:209:30 | a5 | main.rs:209:10:209:57 | [match(true)] ... \| ... | match | | main.rs:209:29:209:30 | a5 | main.rs:209:29:209:30 | a5 | | -| main.rs:209:29:209:30 | a5 | main.rs:209:35:209:57 | ...::Second(...) | no-match | | main.rs:209:35:209:57 | ...::Second(...) | main.rs:209:10:209:57 | [match(false)] ... \| ... | no-match | | main.rs:209:35:209:57 | ...::Second(...) | main.rs:209:55:209:56 | a5 | match | -| main.rs:209:55:209:56 | a5 | main.rs:209:10:209:57 | [match(false)] ... \| ... | no-match | | main.rs:209:55:209:56 | a5 | main.rs:209:10:209:57 | [match(true)] ... \| ... | match | | main.rs:209:55:209:56 | a5 | main.rs:209:55:209:56 | a5 | | | main.rs:209:62:209:83 | ...::Third(...) | main.rs:209:81:209:82 | a5 | match | @@ -522,13 +513,11 @@ edges | main.rs:213:9:213:83 | ... \| ... | main.rs:214:16:214:24 | print_i64 | match | | main.rs:213:28:213:29 | a6 | main.rs:213:9:213:83 | ... \| ... | match | | main.rs:213:28:213:29 | a6 | main.rs:213:28:213:29 | a6 | | -| main.rs:213:28:213:29 | a6 | main.rs:213:35:213:57 | ...::Second(...) | no-match | | main.rs:213:35:213:57 | ...::Second(...) | main.rs:213:55:213:56 | a6 | match | | main.rs:213:35:213:57 | ...::Second(...) | main.rs:213:61:213:82 | ...::Third(...) | no-match | | main.rs:213:35:213:82 | ... \| ... | main.rs:213:9:213:83 | ... \| ... | match | | main.rs:213:55:213:56 | a6 | main.rs:213:35:213:82 | ... \| ... | match | | main.rs:213:55:213:56 | a6 | main.rs:213:55:213:56 | a6 | | -| main.rs:213:55:213:56 | a6 | main.rs:213:61:213:82 | ...::Third(...) | no-match | | main.rs:213:61:213:82 | ...::Third(...) | main.rs:213:80:213:81 | a6 | match | | main.rs:213:80:213:81 | a6 | main.rs:213:35:213:82 | ... \| ... | match | | main.rs:213:80:213:81 | a6 | main.rs:213:80:213:81 | a6 | | @@ -552,10 +541,8 @@ edges | main.rs:221:9:221:44 | [match(true)] ... \| ... | main.rs:222:16:222:17 | a7 | match | | main.rs:221:22:221:23 | a7 | main.rs:221:9:221:44 | [match(true)] ... \| ... | match | | main.rs:221:22:221:23 | a7 | main.rs:221:22:221:23 | a7 | | -| main.rs:221:22:221:23 | a7 | main.rs:221:28:221:44 | ...::Right(...) | no-match | | main.rs:221:28:221:44 | ...::Right(...) | main.rs:221:9:221:44 | [match(false)] ... \| ... | no-match | | main.rs:221:28:221:44 | ...::Right(...) | main.rs:221:42:221:43 | a7 | match | -| main.rs:221:42:221:43 | a7 | main.rs:221:9:221:44 | [match(false)] ... \| ... | no-match | | main.rs:221:42:221:43 | a7 | main.rs:221:9:221:44 | [match(true)] ... \| ... | match | | main.rs:221:42:221:43 | a7 | main.rs:221:42:221:43 | a7 | | | main.rs:222:16:222:17 | a7 | main.rs:222:21:222:21 | 0 | | @@ -586,10 +573,8 @@ edges | main.rs:233:14:233:51 | [match(true)] ... \| ... | main.rs:232:13:232:13 | e | match | | main.rs:233:27:233:29 | a11 | main.rs:233:14:233:51 | [match(true)] ... \| ... | match | | main.rs:233:27:233:29 | a11 | main.rs:233:27:233:29 | a11 | | -| main.rs:233:27:233:29 | a11 | main.rs:233:34:233:51 | ...::Right(...) | no-match | | main.rs:233:34:233:51 | ...::Right(...) | main.rs:233:14:233:51 | [match(false)] ... \| ... | no-match | | main.rs:233:34:233:51 | ...::Right(...) | main.rs:233:48:233:50 | a11 | match | -| main.rs:233:48:233:50 | a11 | main.rs:233:14:233:51 | [match(false)] ... \| ... | no-match | | main.rs:233:48:233:50 | a11 | main.rs:233:14:233:51 | [match(true)] ... \| ... | match | | main.rs:233:48:233:50 | a11 | main.rs:233:48:233:50 | a11 | | | main.rs:234:12:240:9 | { ... } | main.rs:231:5:242:5 | match either { ... } | | @@ -601,7 +586,6 @@ edges | main.rs:236:16:237:15 | let ... = e | main.rs:237:15:237:15 | e | | | main.rs:236:20:236:36 | ...::Left(...) | main.rs:236:13:239:13 | if ... {...} | no-match | | main.rs:236:20:236:36 | ...::Left(...) | main.rs:236:33:236:35 | a12 | match | -| main.rs:236:33:236:35 | a12 | main.rs:236:13:239:13 | if ... {...} | no-match | | main.rs:236:33:236:35 | a12 | main.rs:236:33:236:35 | a12 | | | main.rs:236:33:236:35 | a12 | main.rs:238:17:238:32 | ExprStmt | match | | main.rs:237:15:237:15 | e | main.rs:236:20:236:36 | ...::Left(...) | | @@ -629,17 +613,14 @@ edges | main.rs:255:9:255:109 | ... \| ... \| ... | main.rs:256:16:256:24 | print_i64 | match | | main.rs:255:27:255:29 | a13 | main.rs:255:9:255:109 | ... \| ... \| ... | match | | main.rs:255:27:255:29 | a13 | main.rs:255:27:255:29 | a13 | | -| main.rs:255:27:255:29 | a13 | main.rs:255:35:255:57 | ...::Second(...) | no-match | | main.rs:255:35:255:57 | ...::Second(...) | main.rs:255:54:255:56 | a13 | match | | main.rs:255:35:255:57 | ...::Second(...) | main.rs:255:61:255:82 | ...::Third(...) | no-match | | main.rs:255:35:255:82 | [match(false)] ... \| ... | main.rs:255:87:255:109 | ...::Fourth(...) | no-match | | main.rs:255:35:255:82 | [match(true)] ... \| ... | main.rs:255:9:255:109 | ... \| ... \| ... | match | | main.rs:255:54:255:56 | a13 | main.rs:255:35:255:82 | [match(true)] ... \| ... | match | | main.rs:255:54:255:56 | a13 | main.rs:255:54:255:56 | a13 | | -| main.rs:255:54:255:56 | a13 | main.rs:255:61:255:82 | ...::Third(...) | no-match | | main.rs:255:61:255:82 | ...::Third(...) | main.rs:255:35:255:82 | [match(false)] ... \| ... | no-match | | main.rs:255:61:255:82 | ...::Third(...) | main.rs:255:79:255:81 | a13 | match | -| main.rs:255:79:255:81 | a13 | main.rs:255:35:255:82 | [match(false)] ... \| ... | no-match | | main.rs:255:79:255:81 | a13 | main.rs:255:35:255:82 | [match(true)] ... \| ... | match | | main.rs:255:79:255:81 | a13 | main.rs:255:79:255:81 | a13 | | | main.rs:255:87:255:109 | ...::Fourth(...) | main.rs:255:106:255:108 | a13 | match | @@ -680,7 +661,6 @@ edges | main.rs:272:6:272:41 | ... \| ... | main.rs:272:5:272:50 | ...: Either | match | | main.rs:272:19:272:20 | a9 | main.rs:272:6:272:41 | ... \| ... | match | | main.rs:272:19:272:20 | a9 | main.rs:272:19:272:20 | a9 | | -| main.rs:272:19:272:20 | a9 | main.rs:272:25:272:41 | ...::Right(...) | no-match | | main.rs:272:25:272:41 | ...::Right(...) | main.rs:272:39:272:40 | a9 | match | | main.rs:272:39:272:40 | a9 | main.rs:272:6:272:41 | ... \| ... | match | | main.rs:272:39:272:40 | a9 | main.rs:272:39:272:40 | a9 | |