Rust: Remove nonsensical no-match CFG edges

This commit is contained in:
Simon Friis Vindum
2025-02-20 10:02:20 +01:00
parent 52515dda35
commit 4a01a4df37
10 changed files with 256 additions and 242 deletions

View File

@@ -349,7 +349,6 @@ lib/codeql/rust/elements/internal/ParenPatConstructor.qll 9aea3c3b677755177d85c6
lib/codeql/rust/elements/internal/ParenTypeReprConstructor.qll b3825399f90c8546c254df1f3285fe6053b8137e4705978de50017be941c9f42 696fa20ce5bd4731566b88c8ea13df836627354d37cc9d39514d89d8fb730200
lib/codeql/rust/elements/internal/ParenthesizedArgListConstructor.qll 67f49d376e87a58d7b22eb6e8f90c5b3d295a732be657b27ea6b86835a0ac327 6549e4f5bccb2d29dfeb207625f4d940344ac1bb4c7a7ae007a8eb1c4c985da0
lib/codeql/rust/elements/internal/ParenthesizedArgListImpl.qll 16ded8aee2e245110c97456a3151045bae48db3990ac2ed0940422f26b1596fe 207720c3403ed8fe9725e860e0ed3aa3b7fb257cbc2478414731080001c6aaef
lib/codeql/rust/elements/internal/PatImpl.qll 37c9b1da7aa625117644e2cd74ec0b174f69a38cf66926add01786a05d5ad2ad 143685a0b4873fa0b73b204285dca956e59b32d527bfac6cc336326d244994b7
lib/codeql/rust/elements/internal/PathAstNodeImpl.qll 5a38c42a9127fc2071a9e8f0914996d8c3763e2708805de922e42771de50f649 ebe319cce565497071118cd4c291668bbcdf5fc8942c07efc5a10181b4ce5880
lib/codeql/rust/elements/internal/PathConstructor.qll 5c6354c28faf9f28f3efee8e19bdb82773adcf4b0c1a38788b06af25bcb6bc4a 3e2aeef7b6b9cda7f7f45a6c8119c98803aa644cf6a492cf0fce318eba40fe8f
lib/codeql/rust/elements/internal/PathExprBaseImpl.qll e8b09447ee41b4123f7d94c6b366b2602d8022c9644f1088c670c7794307ab2e 96b9b328771aaf19ba18d0591e85fcc915c0f930b2479b433de3bfdd2ea25249

1
rust/ql/.gitattributes generated vendored
View File

@@ -351,7 +351,6 @@
/lib/codeql/rust/elements/internal/ParenTypeReprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ParenthesizedArgListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ParenthesizedArgListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/PatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/PathAstNodeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/PathConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/PathExprBaseImpl.qll linguist-generated

View File

@@ -117,51 +117,63 @@ class BooleanCompletion extends ConditionalCompletion, TBooleanCompletion {
override string toString() { result = "boolean(" + value + ")" }
}
/** Holds if `pat` is guaranteed to match at the point in the AST where it occurs. */
pragma[nomagic]
private predicate isExhaustiveMatch(Pat pat) {
(
pat instanceof WildcardPat
or
pat = any(IdentPat ip | not ip.hasPat() and ip = any(Variable v).getPat())
or
pat instanceof RestPat
or
// `let` statements without an `else` branch must be exhaustive
pat = any(LetStmt let | not let.hasLetElse()).getPat()
or
// `match` expressions must be exhaustive, so last arm cannot fail
pat = any(MatchExpr me).getLastArm().getPat()
or
// macro invocations are exhaustive if their expansion is
pat = any(MacroPat mp | isExhaustiveMatch(mp.getMacroCall().getExpanded()))
or
// parameter patterns must be exhaustive
pat = any(Param p).getPat()
) and
not pat = any(ForExpr for).getPat() // workaround until `for` loops are desugared
/**
* Holds if `pat` can not _itself_ be the cause of a pattern match failure. This
* does not mean that `pat` is irrefutable, as its children might be the cause
* of a failure.
*/
private predicate canCauseMatchFailure(Pat pat) {
pat instanceof LiteralPat
or
exists(Pat parent | isExhaustiveMatch(parent) |
pat = parent.(BoxPat).getPat()
// NOTE: a `TupleStructPat` can cause a failure if it resolves to a an enum
// variant but not when it resolves to a tuple struct.
pat instanceof TupleStructPat
or
pat instanceof SlicePat
or
pat instanceof PathPat
or
pat instanceof OrPat
or
// Identifier patterns that are in fact path patterns can cause failures. For
// instance `None`. Only if a `@ ...` part is present can we be sure that it's
// an actual identifier pattern.
pat = any(IdentPat p | not p.hasPat())
}
/**
* Holds if `pat` is guaranteed to match at the point in the AST where it occurs
* due to Rust's exhaustiveness checks.
*/
private predicate guaranteedMatchPosition(Pat pat) {
// `let` statements without an `else` branch must match
pat = any(LetStmt let | not let.hasLetElse()).getPat()
or
// `match` expressions must be exhaustive, so last arm must match
pat = any(MatchExpr me).getLastArm().getPat()
or
// parameter patterns must match
pat = any(Param p).getPat()
or
exists(Pat parent | guaranteedMatchPosition(parent) |
// propagate to all children except for or patterns
parent = pat.getParentPat() and not parent instanceof OrPat
or
pat = parent.(IdentPat).getPat()
// for or patterns only the last child inherits the property
parent.(OrPat).getLastPat() = pat
or
pat = parent.(MacroPat).getMacroCall().getExpanded()
or
pat = parent.(ParenPat).getPat()
or
pat = parent.(RecordPat).getRecordPatFieldList().getField(_).getPat()
or
pat = parent.(RefPat).getPat()
or
pat = parent.(TuplePat).getAField()
or
pat = parent.(TupleStructPat).getAField()
or
pat = parent.(OrPat).getLastPat()
// for macro patterns we propagate to the expanded pattern
parent.(MacroPat).getMacroCall().getExpanded() = pat
)
}
private predicate guaranteedMatch(Pat pat) {
(not canCauseMatchFailure(pat) or guaranteedMatchPosition(pat)) and
// In `for` loops we use a no-match edge from the pattern to terminate the
// loop, hence we special case and always allow the no-match edge.
not pat = any(ForExpr for).getPat()
}
/**
* A completion that represents the result of a pattern match.
*/
@@ -170,7 +182,7 @@ class MatchCompletion extends TMatchCompletion, ConditionalCompletion {
override predicate isValidForSpecific(AstNode e) {
e instanceof Pat and
if isExhaustiveMatch(e) then value = true else any()
if guaranteedMatch(e) then value = true else any()
or
e instanceof TryExpr and value = true
}

View File

@@ -641,7 +641,7 @@ module PatternTrees {
super.last(node, c)
or
c.(MatchCompletion).failed() and
completionIsValidFor(c, this) and
completionIsValidFor(c, node) and
(node = this or last(this.getPatRanked(_), node, c))
}
}

View File

@@ -1,4 +1,3 @@
// generated by codegen, remove this comment if you wish to edit this file
/**
* This module provides a hand-modifiable wrapper around the generated class `Pat`.
*
@@ -6,14 +5,26 @@
*/
private import codeql.rust.elements.internal.generated.Pat
private import codeql.rust.elements.internal.generated.ParentChild
/**
* INTERNAL: This module contains the customizable definition of `Pat` and should not
* be referenced directly.
*/
module Impl {
// the following QLdoc is generated: if you need to edit it, do it in the schema file
/**
* The base class for patterns.
*/
class Pat extends Generated::Pat { }
class Pat extends Generated::Pat {
/**
* If this pattern is immediately nested within another pattern, then get the
* parent pattern.
*/
Pat getParentPat() {
result = getImmediateParent(this)
or
result.(RecordPat).getRecordPatFieldList().getAField().getPat() = this
}
}
}

View File

@@ -36,15 +36,9 @@ module Impl {
ClosureBodyScope() { this = any(ClosureExpr ce).getBody() }
}
private Pat getImmediatePatParent(AstNode n) {
result = getImmediateParent(n)
or
result.(RecordPat).getRecordPatFieldList().getAField().getPat() = n
}
private Pat getAPatAncestor(Pat p) {
(p instanceof IdentPat or p instanceof OrPat) and
exists(Pat p0 | result = getImmediatePatParent(p0) |
exists(Pat p0 | result = p0.getParentPat() |
p0 = p
or
p0 = getAPatAncestor(p) and
@@ -222,7 +216,7 @@ module Impl {
or
exists(Pat mid |
mid = getAVariablePatAncestor(v) and
result = getImmediatePatParent(mid)
result = mid.getParentPat()
)
}

View File

@@ -19,6 +19,7 @@ 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(...) | |
@@ -46,6 +47,7 @@ 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 | |

View File

@@ -121,17 +121,23 @@ 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 ... { ... } |
@@ -168,17 +174,23 @@ 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 {...} |
@@ -506,18 +518,26 @@ 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) |
@@ -525,6 +545,7 @@ 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 ... { ... } |
@@ -532,14 +553,18 @@ 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 | ... && ... |
@@ -548,73 +573,70 @@ 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 |
| test.rs:393:5:398:5 | enter fn struct_pattern | test.rs:393:5:398:5 | enter fn struct_pattern |
| test.rs:393:5:398:5 | enter fn struct_pattern | 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 | test.rs:395:34:395:34 | 0 |
| test.rs:393:5:398:5 | enter fn struct_pattern | test.rs:396:13:396:26 | MyStruct {...} |
| test.rs:394:9:397:9 | match st { ... } | test.rs:394:9:397:9 | match st { ... } |
| test.rs:395:27:395:27 | 1 | test.rs:395:27:395:27 | 1 |
| test.rs:395:27:395:27 | 1 | test.rs:395:34:395:34 | 0 |
| test.rs:395:34:395:34 | 0 | test.rs:395:34:395:34 | 0 |
| test.rs:396:13:396:26 | MyStruct {...} | test.rs:396:13:396:26 | MyStruct {...} |
| test.rs:400:5:407:5 | enter fn range_pattern | test.rs:400:5:407:5 | enter fn range_pattern |
| test.rs:400:5:407:5 | enter fn range_pattern | test.rs:401:9:406:9 | match 42 { ... } |
| test.rs:400:5:407:5 | enter fn range_pattern | test.rs:402:15:402:15 | 0 |
| test.rs:400:5:407:5 | enter fn range_pattern | test.rs:402:20:402:20 | 1 |
| test.rs:400:5:407:5 | enter fn range_pattern | test.rs:403:13:403:13 | 1 |
| test.rs:400:5:407:5 | enter fn range_pattern | test.rs:403:13:403:16 | RangePat |
| test.rs:400:5:407:5 | enter fn range_pattern | test.rs:403:16:403:16 | 2 |
| test.rs:400:5:407:5 | enter fn range_pattern | test.rs:403:21:403:21 | 2 |
| test.rs:400:5:407:5 | enter fn range_pattern | test.rs:404:13:404:13 | 5 |
| test.rs:400:5:407:5 | enter fn range_pattern | test.rs:404:13:404:15 | RangePat |
| test.rs:400:5:407:5 | enter fn range_pattern | test.rs:404:20:404:20 | 3 |
| test.rs:400:5:407:5 | enter fn range_pattern | test.rs:405:13:405:13 | _ |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:401:9:406:9 | match 42 { ... } |
| test.rs:402:15:402:15 | 0 | test.rs:402:15:402:15 | 0 |
| test.rs:402:15:402:15 | 0 | test.rs:402:20:402:20 | 1 |
| test.rs:402:20:402:20 | 1 | test.rs:402:20:402:20 | 1 |
| test.rs:403:13:403:13 | 1 | test.rs:403:13:403:13 | 1 |
| test.rs:403:13:403:13 | 1 | test.rs:403:16:403:16 | 2 |
| test.rs:403:13:403:13 | 1 | test.rs:403:21:403:21 | 2 |
| test.rs:403:13:403:16 | RangePat | test.rs:403:13:403:13 | 1 |
| test.rs:403:13:403:16 | RangePat | test.rs:403:13:403:16 | RangePat |
| test.rs:403:13:403:16 | RangePat | test.rs:403:16:403:16 | 2 |
| test.rs:403:13:403:16 | RangePat | test.rs:403:21:403:21 | 2 |
| test.rs:403:13:403:16 | RangePat | test.rs:404:13:404:13 | 5 |
| test.rs:403:13:403:16 | RangePat | test.rs:404:13:404:15 | RangePat |
| test.rs:403:13:403:16 | RangePat | test.rs:404:20:404:20 | 3 |
| test.rs:403:13:403:16 | RangePat | test.rs:405:13:405:13 | _ |
| test.rs:403:16:403:16 | 2 | test.rs:403:16:403:16 | 2 |
| test.rs:403:16:403:16 | 2 | test.rs:403:21:403:21 | 2 |
| test.rs:403:21:403:21 | 2 | test.rs:403:21:403:21 | 2 |
| test.rs:404:13:404:13 | 5 | test.rs:404:13:404:13 | 5 |
| test.rs:404:13:404:13 | 5 | test.rs:404:20:404:20 | 3 |
| test.rs:404:13:404:15 | RangePat | test.rs:404:13:404:13 | 5 |
| test.rs:404:13:404:15 | RangePat | test.rs:404:13:404:15 | RangePat |
| test.rs:404:13:404:15 | RangePat | test.rs:404:20:404:20 | 3 |
| test.rs:404:13:404:15 | RangePat | test.rs:405:13:405:13 | _ |
@@ -623,59 +645,34 @@ dominates
| test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern | test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern |
| test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern | test.rs:410:9:413:9 | match 43 { ... } |
| test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern | test.rs:411:13:411:13 | n |
| test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern | test.rs:411:17:411:17 | 1 |
| test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern | test.rs:411:20:411:21 | 10 |
| test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern | test.rs:411:26:411:26 | 2 |
| test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern | test.rs:412:13:412:13 | _ |
| test.rs:410:9:413:9 | match 43 { ... } | test.rs:410:9:413:9 | match 43 { ... } |
| test.rs:411:13:411:13 | n | test.rs:411:13:411:13 | n |
| test.rs:411:13:411:13 | n | test.rs:411:26:411:26 | 2 |
| test.rs:411:17:411:17 | 1 | test.rs:411:13:411:13 | n |
| test.rs:411:17:411:17 | 1 | test.rs:411:17:411:17 | 1 |
| test.rs:411:17:411:17 | 1 | test.rs:411:20:411:21 | 10 |
| test.rs:411:17:411:17 | 1 | test.rs:411:26:411:26 | 2 |
| test.rs:411:20:411:21 | 10 | test.rs:411:13:411:13 | n |
| test.rs:411:20:411:21 | 10 | test.rs:411:20:411:21 | 10 |
| test.rs:411:20:411:21 | 10 | test.rs:411:26:411:26 | 2 |
| test.rs:411:26:411:26 | 2 | test.rs:411:26:411:26 | 2 |
| test.rs:412:13:412:13 | _ | test.rs:412:13:412:13 | _ |
| test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref | test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref |
| test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref | test.rs:418:9:421:9 | match a { ... } |
| test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref | test.rs:419:21:419:21 | n |
| test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref | test.rs:419:25:419:25 | 1 |
| test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref | test.rs:419:28:419:29 | 10 |
| test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref | test.rs:419:35:419:35 | n |
| test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref | test.rs:420:21:420:21 | n |
| test.rs:418:9:421:9 | match a { ... } | test.rs:418:9:421:9 | match a { ... } |
| test.rs:419:21:419:21 | n | test.rs:419:21:419:21 | n |
| test.rs:419:21:419:21 | n | test.rs:419:35:419:35 | n |
| test.rs:419:25:419:25 | 1 | test.rs:419:21:419:21 | n |
| test.rs:419:25:419:25 | 1 | test.rs:419:25:419:25 | 1 |
| test.rs:419:25:419:25 | 1 | test.rs:419:28:419:29 | 10 |
| test.rs:419:25:419:25 | 1 | test.rs:419:35:419:35 | n |
| test.rs:419:28:419:29 | 10 | test.rs:419:21:419:21 | n |
| test.rs:419:28:419:29 | 10 | test.rs:419:28:419:29 | 10 |
| test.rs:419:28:419:29 | 10 | test.rs:419:35:419:35 | n |
| test.rs:419:35:419:35 | n | test.rs:419:35:419:35 | n |
| test.rs:420:21:420:21 | n | test.rs:420:21:420:21 | n |
| test.rs:425:5:431:5 | enter fn tuple_pattern | test.rs:425:5:431:5 | enter fn tuple_pattern |
| test.rs:425:5:431:5 | enter fn tuple_pattern | test.rs:426:9:430:9 | match ... { ... } |
| test.rs:425:5:431:5 | enter fn tuple_pattern | test.rs:427:14:427:14 | 1 |
| test.rs:425:5:431:5 | enter fn tuple_pattern | test.rs:427:17:427:17 | _ |
| test.rs:425:5:431:5 | enter fn tuple_pattern | test.rs:428:13:428:19 | TuplePat |
| test.rs:425:5:431:5 | enter fn tuple_pattern | test.rs:428:14:428:15 | .. |
| test.rs:425:5:431:5 | enter fn tuple_pattern | test.rs:428:24:428:24 | 3 |
| test.rs:425:5:431:5 | enter fn tuple_pattern | test.rs:429:13:429:16 | TuplePat |
| test.rs:426:9:430:9 | match ... { ... } | test.rs:426:9:430:9 | match ... { ... } |
| test.rs:427:14:427:14 | 1 | test.rs:427:14:427:14 | 1 |
| test.rs:427:14:427:14 | 1 | test.rs:427:17:427:17 | _ |
| test.rs:427:17:427:17 | _ | test.rs:427:17:427:17 | _ |
| test.rs:428:13:428:19 | TuplePat | test.rs:428:13:428:19 | TuplePat |
| test.rs:428:13:428:19 | TuplePat | test.rs:428:14:428:15 | .. |
| test.rs:428:13:428:19 | TuplePat | test.rs:428:24:428:24 | 3 |
| test.rs:428:13:428:19 | TuplePat | test.rs:429:13:429:16 | TuplePat |
| test.rs:428:14:428:15 | .. | test.rs:428:14:428:15 | .. |
| test.rs:428:14:428:15 | .. | test.rs:428:24:428:24 | 3 |
| test.rs:428:24:428:24 | 3 | test.rs:428:24:428:24 | 3 |
| test.rs:429:13:429:16 | TuplePat | test.rs:429:13:429:16 | TuplePat |
| test.rs:433:5:438:5 | enter fn or_pattern | test.rs:433:5:438:5 | enter fn or_pattern |
@@ -710,7 +707,6 @@ dominates
| test.rs:443:26:443:36 | Some(...) | test.rs:443:26:443:36 | Some(...) |
| test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:453:5:458:5 | enter fn or_pattern_3 |
| test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:454:9:457:9 | match a { ... } |
| test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:455:13:455:25 | 1 |
| test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:455:13:455:25 | 2 |
| test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:455:13:455:25 | [match(false)] 1 \| 2 |
| test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:455:13:455:25 | [match(true)] 1 \| 2 |
@@ -718,15 +714,11 @@ dominates
| test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:455:30:455:30 | 3 |
| test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:456:13:456:13 | _ |
| test.rs:454:9:457:9 | match a { ... } | test.rs:454:9:457:9 | match a { ... } |
| test.rs:455:13:455:25 | 1 | test.rs:455:13:455:25 | 1 |
| test.rs:455:13:455:25 | 1 | test.rs:455:13:455:25 | 2 |
| test.rs:455:13:455:25 | 1 | test.rs:455:13:455:25 | [match(false)] 1 \| 2 |
| test.rs:455:13:455:25 | 1 | test.rs:455:13:455:25 | [match(true)] 1 \| 2 |
| test.rs:455:13:455:25 | 1 | test.rs:455:13:455:25 | one_or_two!... |
| test.rs:455:13:455:25 | 1 | test.rs:455:30:455:30 | 3 |
| test.rs:455:13:455:25 | 2 | test.rs:455:13:455:25 | 2 |
| test.rs:455:13:455:25 | 2 | test.rs:455:13:455:25 | [match(false)] 1 \| 2 |
| test.rs:455:13:455:25 | 2 | test.rs:456:13:456:13 | _ |
| test.rs:455:13:455:25 | [match(false)] 1 \| 2 | test.rs:455:13:455:25 | [match(false)] 1 \| 2 |
| test.rs:455:13:455:25 | [match(false)] 1 \| 2 | test.rs:456:13:456:13 | _ |
| test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:455:13:455:25 | [match(true)] 1 \| 2 |
| test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:455:30:455:30 | 3 |
| test.rs:455:13:455:25 | one_or_two!... | test.rs:455:13:455:25 | one_or_two!... |
@@ -734,17 +726,10 @@ 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:14:462:35 | TuplePat |
| test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | test.rs:462:15:462:15 | n |
| 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:462:18:462:34 | MyStruct {...} |
| 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:14:462:35 | TuplePat | test.rs:462:14:462:35 | TuplePat |
| test.rs:462:14:462:35 | TuplePat | test.rs:462:15:462:15 | n |
| test.rs:462:14:462:35 | TuplePat | test.rs:462:32:462:32 | _ |
| test.rs:462:15:462:15 | n | test.rs:462:15:462:15 | n |
| test.rs:462:15:462:15 | n | test.rs:462:32:462:32 | _ |
| test.rs:462:32:462:32 | _ | test.rs:462:32:462:32 | _ |
| test.rs:462:18:462:34 | MyStruct {...} | test.rs:462:18:462:34 | MyStruct {...} |
| test.rs:463:13:463:13 | _ | test.rs:463:13:463:13 | _ |
| test.rs:469:5:474:5 | enter fn test_infinite_loop | test.rs:469:5:474:5 | enter fn test_infinite_loop |
| test.rs:469:5:474:5 | enter fn test_infinite_loop | test.rs:471:13:471:14 | TupleExpr |
@@ -801,9 +786,12 @@ dominates
| test.rs:568:1:576:1 | enter fn labelled_block2 | test.rs:569:18:575:5 | 'block: { ... } |
| test.rs:568:1:576:1 | enter fn labelled_block2 | test.rs:571:18:571:18 | y |
| test.rs:568:1:576:1 | enter fn labelled_block2 | test.rs:572:13:572:27 | ExprStmt |
| test.rs:568:1:576:1 | enter fn labelled_block2 | test.rs:574:9:574:9 | 0 |
| test.rs:569:18:575:5 | 'block: { ... } | test.rs:569:18:575:5 | 'block: { ... } |
| test.rs:571:18:571:18 | y | test.rs:571:18:571:18 | y |
| test.rs:571:18:571:18 | y | test.rs:574:9:574:9 | 0 |
| test.rs:572:13:572:27 | ExprStmt | test.rs:572:13:572:27 | ExprStmt |
| test.rs:574:9:574:9 | 0 | test.rs:574:9:574:9 | 0 |
| test.rs:578:1:584:1 | enter fn test_nested_function2 | test.rs:578:1:584:1 | enter fn test_nested_function2 |
| test.rs:580:5:582:5 | enter fn nested | test.rs:580:5:582:5 | enter fn nested |
| test.rs:595:5:597:5 | enter fn new | test.rs:595:5:597:5 | enter fn new |
@@ -896,12 +884,14 @@ 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 |
@@ -935,16 +925,20 @@ 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 {...} |
@@ -1245,14 +1239,18 @@ 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 |
@@ -1261,14 +1259,17 @@ 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 |
@@ -1276,12 +1277,14 @@ 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 |
@@ -1289,51 +1292,50 @@ 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 |
| test.rs:393:5:398:5 | enter fn struct_pattern | test.rs:393:5:398:5 | enter fn struct_pattern |
| test.rs:394:9:397:9 | match st { ... } | test.rs:393:5:398:5 | enter fn struct_pattern |
| test.rs:394:9:397:9 | match st { ... } | test.rs:394:9:397:9 | match st { ... } |
| test.rs:394:9:397:9 | match st { ... } | test.rs:395:27:395:27 | 1 |
| test.rs:394:9:397:9 | match st { ... } | test.rs:395:34:395:34 | 0 |
| test.rs:394:9:397:9 | match st { ... } | test.rs:396:13:396:26 | MyStruct {...} |
| test.rs:395:27:395:27 | 1 | test.rs:395:27:395:27 | 1 |
| test.rs:395:34:395:34 | 0 | test.rs:395:34:395:34 | 0 |
| test.rs:396:13:396:26 | MyStruct {...} | test.rs:396:13:396:26 | MyStruct {...} |
| test.rs:400:5:407:5 | enter fn range_pattern | test.rs:400:5:407:5 | enter fn range_pattern |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:400:5:407:5 | enter fn range_pattern |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:401:9:406:9 | match 42 { ... } |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:402:15:402:15 | 0 |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:402:20:402:20 | 1 |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:403:13:403:13 | 1 |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:403:13:403:16 | RangePat |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:403:16:403:16 | 2 |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:403:21:403:21 | 2 |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:404:13:404:13 | 5 |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:404:13:404:15 | RangePat |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:404:20:404:20 | 3 |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:405:13:405:13 | _ |
| test.rs:402:15:402:15 | 0 | test.rs:402:15:402:15 | 0 |
| test.rs:402:20:402:20 | 1 | test.rs:402:20:402:20 | 1 |
| test.rs:403:13:403:13 | 1 | test.rs:403:13:403:13 | 1 |
| test.rs:403:13:403:16 | RangePat | test.rs:403:13:403:16 | RangePat |
| test.rs:403:16:403:16 | 2 | test.rs:403:16:403:16 | 2 |
| test.rs:403:21:403:21 | 2 | test.rs:403:21:403:21 | 2 |
| test.rs:404:13:404:13 | 5 | test.rs:404:13:404:13 | 5 |
| test.rs:404:13:404:15 | RangePat | test.rs:404:13:404:15 | RangePat |
| test.rs:404:20:404:20 | 3 | test.rs:404:20:404:20 | 3 |
| test.rs:405:13:405:13 | _ | test.rs:405:13:405:13 | _ |
@@ -1341,41 +1343,29 @@ postDominance
| test.rs:410:9:413:9 | match 43 { ... } | test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern |
| test.rs:410:9:413:9 | match 43 { ... } | test.rs:410:9:413:9 | match 43 { ... } |
| test.rs:410:9:413:9 | match 43 { ... } | test.rs:411:13:411:13 | n |
| test.rs:410:9:413:9 | match 43 { ... } | test.rs:411:17:411:17 | 1 |
| test.rs:410:9:413:9 | match 43 { ... } | test.rs:411:20:411:21 | 10 |
| test.rs:410:9:413:9 | match 43 { ... } | test.rs:411:26:411:26 | 2 |
| test.rs:410:9:413:9 | match 43 { ... } | test.rs:412:13:412:13 | _ |
| test.rs:411:13:411:13 | n | test.rs:411:13:411:13 | n |
| test.rs:411:17:411:17 | 1 | test.rs:411:17:411:17 | 1 |
| test.rs:411:20:411:21 | 10 | test.rs:411:20:411:21 | 10 |
| test.rs:411:26:411:26 | 2 | test.rs:411:26:411:26 | 2 |
| test.rs:412:13:412:13 | _ | test.rs:412:13:412:13 | _ |
| test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref | test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref |
| test.rs:418:9:421:9 | match a { ... } | test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref |
| test.rs:418:9:421:9 | match a { ... } | test.rs:418:9:421:9 | match a { ... } |
| test.rs:418:9:421:9 | match a { ... } | test.rs:419:21:419:21 | n |
| test.rs:418:9:421:9 | match a { ... } | test.rs:419:25:419:25 | 1 |
| test.rs:418:9:421:9 | match a { ... } | test.rs:419:28:419:29 | 10 |
| test.rs:418:9:421:9 | match a { ... } | test.rs:419:35:419:35 | n |
| test.rs:418:9:421:9 | match a { ... } | test.rs:420:21:420:21 | n |
| test.rs:419:21:419:21 | n | test.rs:419:21:419:21 | n |
| test.rs:419:25:419:25 | 1 | test.rs:419:25:419:25 | 1 |
| test.rs:419:28:419:29 | 10 | test.rs:419:28:419:29 | 10 |
| test.rs:419:35:419:35 | n | test.rs:419:35:419:35 | n |
| test.rs:420:21:420:21 | n | test.rs:420:21:420:21 | n |
| test.rs:425:5:431:5 | enter fn tuple_pattern | test.rs:425:5:431:5 | enter fn tuple_pattern |
| test.rs:426:9:430:9 | match ... { ... } | test.rs:425:5:431:5 | enter fn tuple_pattern |
| test.rs:426:9:430:9 | match ... { ... } | test.rs:426:9:430:9 | match ... { ... } |
| test.rs:426:9:430:9 | match ... { ... } | test.rs:427:14:427:14 | 1 |
| test.rs:426:9:430:9 | match ... { ... } | test.rs:427:17:427:17 | _ |
| test.rs:426:9:430:9 | match ... { ... } | test.rs:428:13:428:19 | TuplePat |
| test.rs:426:9:430:9 | match ... { ... } | test.rs:428:14:428:15 | .. |
| test.rs:426:9:430:9 | match ... { ... } | test.rs:428:24:428:24 | 3 |
| test.rs:426:9:430:9 | match ... { ... } | test.rs:429:13:429:16 | TuplePat |
| test.rs:427:14:427:14 | 1 | test.rs:427:14:427:14 | 1 |
| test.rs:427:17:427:17 | _ | test.rs:427:17:427:17 | _ |
| test.rs:428:13:428:19 | TuplePat | test.rs:428:13:428:19 | TuplePat |
| test.rs:428:14:428:15 | .. | test.rs:428:14:428:15 | .. |
| test.rs:428:24:428:24 | 3 | test.rs:428:24:428:24 | 3 |
| test.rs:429:13:429:16 | TuplePat | test.rs:429:13:429:16 | TuplePat |
| test.rs:433:5:438:5 | enter fn or_pattern | test.rs:433:5:438:5 | enter fn or_pattern |
@@ -1408,13 +1398,11 @@ postDominance
| test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:453:5:458:5 | enter fn or_pattern_3 |
| test.rs:454:9:457:9 | match a { ... } | test.rs:453:5:458:5 | enter fn or_pattern_3 |
| test.rs:454:9:457:9 | match a { ... } | test.rs:454:9:457:9 | match a { ... } |
| test.rs:454:9:457:9 | match a { ... } | test.rs:455:13:455:25 | 1 |
| test.rs:454:9:457:9 | match a { ... } | test.rs:455:13:455:25 | 2 |
| test.rs:454:9:457:9 | match a { ... } | test.rs:455:13:455:25 | [match(false)] 1 \| 2 |
| test.rs:454:9:457:9 | match a { ... } | test.rs:455:13:455:25 | [match(true)] 1 \| 2 |
| test.rs:454:9:457:9 | match a { ... } | test.rs:455:30:455:30 | 3 |
| test.rs:454:9:457:9 | match a { ... } | test.rs:456:13:456:13 | _ |
| test.rs:455:13:455:25 | 1 | test.rs:455:13:455:25 | 1 |
| test.rs:455:13:455:25 | 2 | test.rs:455:13:455:25 | 2 |
| test.rs:455:13:455:25 | [match(false)] 1 \| 2 | test.rs:455:13:455:25 | [match(false)] 1 \| 2 |
| test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:455:13:455:25 | [match(true)] 1 \| 2 |
@@ -1426,13 +1414,9 @@ 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:14:462:35 | TuplePat |
| test.rs:461:9:464:9 | match pair { ... } | test.rs:462:15:462:15 | n |
| test.rs:461:9:464:9 | match pair { ... } | test.rs:462:32:462:32 | _ |
| 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:463:13:463:13 | _ |
| test.rs:462:14:462:35 | TuplePat | test.rs:462:14:462:35 | TuplePat |
| test.rs:462:15:462:15 | n | test.rs:462:15:462:15 | n |
| test.rs:462:32:462:32 | _ | test.rs:462:32:462:32 | _ |
| test.rs:462:18:462:34 | MyStruct {...} | test.rs:462:18:462:34 | MyStruct {...} |
| test.rs:463:13:463:13 | _ | test.rs:463:13:463:13 | _ |
| test.rs:469:5:474:5 | enter fn test_infinite_loop | test.rs:469:5:474:5 | enter fn test_infinite_loop |
| test.rs:471:13:471:14 | TupleExpr | test.rs:471:13:471:14 | TupleExpr |
@@ -1487,8 +1471,10 @@ postDominance
| test.rs:569:18:575:5 | 'block: { ... } | test.rs:569:18:575:5 | 'block: { ... } |
| test.rs:569:18:575:5 | 'block: { ... } | test.rs:571:18:571:18 | y |
| test.rs:569:18:575:5 | 'block: { ... } | test.rs:572:13:572:27 | ExprStmt |
| test.rs:569:18:575:5 | 'block: { ... } | test.rs:574:9:574:9 | 0 |
| test.rs:571:18:571:18 | y | test.rs:571:18:571:18 | y |
| test.rs:572:13:572:27 | ExprStmt | test.rs:572:13:572:27 | ExprStmt |
| test.rs:574:9:574:9 | 0 | test.rs:574:9:574:9 | 0 |
| test.rs:578:1:584:1 | enter fn test_nested_function2 | test.rs:578:1:584:1 | enter fn test_nested_function2 |
| test.rs:580:5:582:5 | enter fn nested | test.rs:580:5:582:5 | enter fn nested |
| test.rs:595:5:597:5 | enter fn new | test.rs:595:5:597:5 | enter fn new |
@@ -1531,8 +1517,9 @@ 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:99:24:99:24 | x |
| test.rs:101:17:101:22 | ExprStmt | test.rs:99:24:99:24 | x |
| 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: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 |
@@ -1545,10 +1532,12 @@ 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 |
@@ -1659,63 +1648,60 @@ 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:42:328:42 | 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: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:18:347:18 | a |
| test.rs:346:10:349:9 | [boolean(true)] match r { ... } | test.rs:347:24:347:24 | 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 |
| test.rs:395:34:395:34 | 0 | test.rs:395:27:395:27 | 1 |
| test.rs:395:34:395:34 | 0 | test.rs:393:5:398:5 | enter fn struct_pattern |
| test.rs:396:13:396:26 | MyStruct {...} | test.rs:393:5:398:5 | enter fn struct_pattern |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:400:5:407:5 | enter fn range_pattern |
| test.rs:402:15:402:15 | 0 | test.rs:400:5:407:5 | enter fn range_pattern |
| test.rs:402:20:402:20 | 1 | test.rs:402:15:402:15 | 0 |
| test.rs:403:13:403:13 | 1 | test.rs:403:13:403:16 | RangePat |
| test.rs:402:20:402:20 | 1 | test.rs:400:5:407:5 | enter fn range_pattern |
| test.rs:403:13:403:16 | RangePat | test.rs:400:5:407:5 | enter fn range_pattern |
| test.rs:403:16:403:16 | 2 | test.rs:403:13:403:13 | 1 |
| test.rs:403:16:403:16 | 2 | test.rs:403:13:403:16 | RangePat |
| test.rs:403:21:403:21 | 2 | test.rs:403:16:403:16 | 2 |
| test.rs:404:13:404:13 | 5 | test.rs:404:13:404:15 | RangePat |
| test.rs:404:13:404:15 | RangePat | test.rs:403:13:403:16 | RangePat |
| test.rs:404:20:404:20 | 3 | test.rs:404:13:404:13 | 5 |
| test.rs:404:20:404:20 | 3 | test.rs:404:13:404:15 | RangePat |
| test.rs:405:13:405:13 | _ | test.rs:404:13:404:15 | RangePat |
| test.rs:410:9:413:9 | match 43 { ... } | test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern |
| test.rs:411:13:411:13 | n | test.rs:411:20:411:21 | 10 |
| test.rs:411:17:411:17 | 1 | test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern |
| test.rs:411:20:411:21 | 10 | test.rs:411:17:411:17 | 1 |
| test.rs:411:26:411:26 | 2 | test.rs:411:13:411:13 | n |
| test.rs:411:20:411:21 | 10 | test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern |
| test.rs:412:13:412:13 | _ | test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern |
| test.rs:418:9:421:9 | match a { ... } | test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref |
| test.rs:419:21:419:21 | n | test.rs:419:28:419:29 | 10 |
| test.rs:419:25:419:25 | 1 | test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref |
| test.rs:419:28:419:29 | 10 | test.rs:419:25:419:25 | 1 |
| test.rs:419:35:419:35 | n | test.rs:419:21:419:21 | n |
| test.rs:419:28:419:29 | 10 | test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref |
| test.rs:420:21:420:21 | n | test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref |
| test.rs:426:9:430:9 | match ... { ... } | test.rs:425:5:431:5 | enter fn tuple_pattern |
| test.rs:427:14:427:14 | 1 | test.rs:425:5:431:5 | enter fn tuple_pattern |
| test.rs:427:17:427:17 | _ | test.rs:427:14:427:14 | 1 |
| test.rs:427:17:427:17 | _ | test.rs:425:5:431:5 | enter fn tuple_pattern |
| test.rs:428:13:428:19 | TuplePat | test.rs:425:5:431:5 | enter fn tuple_pattern |
| test.rs:428:14:428:15 | .. | test.rs:428:13:428:19 | TuplePat |
| test.rs:428:24:428:24 | 3 | test.rs:428:14:428:15 | .. |
| test.rs:428:24:428:24 | 3 | test.rs:428:13:428:19 | TuplePat |
| test.rs:429:13:429:16 | TuplePat | test.rs:428:13:428:19 | TuplePat |
| test.rs:434:9:437:9 | match a { ... } | test.rs:433:5:438:5 | enter fn or_pattern |
| test.rs:435:13:435:21 | [match(false)] 0 \| 1 \| 2 | test.rs:435:21:435:21 | 2 |
@@ -1729,17 +1715,14 @@ immediateDominator
| test.rs:443:18:443:21 | true | test.rs:443:13:443:22 | Some(...) |
| test.rs:443:26:443:36 | Some(...) | test.rs:443:13:443:22 | Some(...) |
| test.rs:454:9:457:9 | match a { ... } | test.rs:453:5:458:5 | enter fn or_pattern_3 |
| test.rs:455:13:455:25 | 1 | test.rs:453:5:458:5 | enter fn or_pattern_3 |
| test.rs:455:13:455:25 | 2 | test.rs:455:13:455:25 | 1 |
| test.rs:455:13:455:25 | 2 | test.rs:453:5:458:5 | enter fn or_pattern_3 |
| test.rs:455:13:455:25 | [match(false)] 1 \| 2 | test.rs:455:13:455:25 | 2 |
| test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:455:13:455:25 | 1 |
| test.rs:455:13:455:25 | one_or_two!... | test.rs:455:13:455:25 | 1 |
| test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:453:5:458:5 | enter fn or_pattern_3 |
| test.rs:455:13:455:25 | one_or_two!... | test.rs:453:5:458:5 | enter fn or_pattern_3 |
| 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:453:5:458:5 | enter fn or_pattern_3 |
| 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:14:462:35 | TuplePat | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code |
| test.rs:462:15:462:15 | n | test.rs:462:14:462:35 | TuplePat |
| test.rs:462:32:462:32 | _ | test.rs:462:15:462:15 | n |
| test.rs:462:18:462:34 | MyStruct {...} | 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:471:13:471:14 | TupleExpr | test.rs:469:5:474:5 | enter fn test_infinite_loop |
| test.rs:495:28:500:9 | exit { ... } (normal) | test.rs:495:28:500:9 | enter { ... } |
@@ -1759,6 +1742,7 @@ immediateDominator
| test.rs:569:18:575:5 | 'block: { ... } | test.rs:568:1:576:1 | enter fn labelled_block2 |
| test.rs:571:18:571:18 | y | test.rs:568:1:576:1 | enter fn labelled_block2 |
| test.rs:572:13:572:27 | ExprStmt | test.rs:568:1:576:1 | enter fn labelled_block2 |
| test.rs:574:9:574:9 | 0 | test.rs:571:18:571: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 |
@@ -1797,8 +1781,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: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: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: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 |
@@ -1939,15 +1923,16 @@ 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:26:328:26 | x | test.rs:328:42:328:42 | x | true |
| test.rs:328:32:328:32 | 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: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: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:495:28:500:9 | enter { ... } | test.rs:496:13:498:13 | if b {...} | false |
| test.rs:495:28:500:9 | enter { ... } | test.rs:497:17:497:41 | ExprStmt | true |
| test.rs:513:5:521:5 | enter fn const_block_assert | test.rs:517:13:517:49 | ExprStmt | false |
@@ -1987,8 +1972,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: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: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: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 |
@@ -2088,14 +2073,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: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: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: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: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: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:346:10:349:9 | [boolean(false)] match r { ... } | false |
| test.rs:495:28:500:9 | enter { ... } | test.rs:496:13:498:13 | if b {...} | false |
| test.rs:495:28:500:9 | enter { ... } | test.rs:497:17:497:41 | ExprStmt | true |
@@ -2134,8 +2119,9 @@ 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 ... = ... | 0 |
| test.rs:99:9:103:9 | while ... { ... } | test.rs:101:17:101:22 | ExprStmt | 1 |
| 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: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 |
@@ -2146,10 +2132,14 @@ 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:146:21:146:21 | n | 0 |
| test.rs:146:9:150:9 | if ... {...} else {...} | test.rs:149:13:149:13 | 0 | 1 |
| 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: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:154:21:154:21 | n | 0 |
| 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: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 |
@@ -2213,56 +2203,54 @@ 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:26:329:26 | x | 1 |
| 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:330:13:330:24 | ...::None | 2 |
| 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: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: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:26:340:26 | x | 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: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:18:347:18 | a | 0 |
| 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:348:13:348:13 | _ | 1 |
| test.rs:353:9:356:9 | match r { ... } | test.rs:354:16:354:20 | value | 0 |
| 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:355:13:355:22 | Err(...) | 1 |
| test.rs:367:5:373:5 | exit fn test_let_with_return (normal) | test.rs:369:18:369:20 | ret | 0 |
| 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: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 |
| test.rs:396:13:396:26 | MyStruct {...} | test.rs:395:27:395:27 | 1 | 0 |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:402:20:402:20 | 1 | 0 |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:403:21:403:21 | 2 | 1 |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:404:20:404:20 | 3 | 2 |
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:405:13:405:13 | _ | 3 |
| test.rs:403:13:403:16 | RangePat | test.rs:400:5:407:5 | enter fn range_pattern | 1 |
| test.rs:403:13:403:16 | RangePat | test.rs:402:15:402:15 | 0 | 0 |
| test.rs:404:13:404:15 | RangePat | test.rs:403:13:403:13 | 1 | 1 |
| test.rs:404:13:404:15 | RangePat | test.rs:403:13:403:16 | RangePat | 2 |
| test.rs:404:13:404:15 | RangePat | test.rs:403:13:403:16 | RangePat | 1 |
| test.rs:404:13:404:15 | RangePat | test.rs:403:16:403:16 | 2 | 0 |
| test.rs:405:13:405:13 | _ | test.rs:404:13:404:13 | 5 | 0 |
| test.rs:405:13:405:13 | _ | test.rs:404:13:404:15 | RangePat | 1 |
| test.rs:410:9:413:9 | match 43 { ... } | test.rs:411:26:411:26 | 2 | 0 |
| test.rs:410:9:413:9 | match 43 { ... } | test.rs:411:13:411:13 | n | 0 |
| test.rs:410:9:413:9 | match 43 { ... } | test.rs:412:13:412:13 | _ | 1 |
| test.rs:412:13:412:13 | _ | test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern | 3 |
| test.rs:412:13:412:13 | _ | test.rs:411:13:411:13 | n | 0 |
| test.rs:412:13:412:13 | _ | test.rs:411:17:411:17 | 1 | 2 |
| test.rs:412:13:412:13 | _ | test.rs:411:20:411:21 | 10 | 1 |
| test.rs:418:9:421:9 | match a { ... } | test.rs:419:35:419:35 | n | 0 |
| test.rs:412:13:412:13 | _ | test.rs:409:5:414:5 | enter fn identifier_pattern_with_subpattern | 1 |
| test.rs:412:13:412:13 | _ | test.rs:411:20:411:21 | 10 | 0 |
| test.rs:418:9:421:9 | match a { ... } | test.rs:419:21:419:21 | n | 0 |
| test.rs:418:9:421:9 | match a { ... } | test.rs:420:21:420:21 | n | 1 |
| test.rs:420:21:420:21 | n | test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref | 3 |
| test.rs:420:21:420:21 | n | test.rs:419:21:419:21 | n | 0 |
| test.rs:420:21:420:21 | n | test.rs:419:25:419:25 | 1 | 2 |
| test.rs:420:21:420:21 | n | test.rs:419:28:419:29 | 10 | 1 |
| test.rs:420:21:420:21 | n | test.rs:416:5:423:5 | enter fn identifier_pattern_with_ref | 1 |
| test.rs:420:21:420:21 | n | test.rs:419:28:419:29 | 10 | 0 |
| test.rs:426:9:430:9 | match ... { ... } | test.rs:427:17:427:17 | _ | 0 |
| test.rs:426:9:430:9 | match ... { ... } | test.rs:428:24:428:24 | 3 | 1 |
| test.rs:426:9:430:9 | match ... { ... } | test.rs:429:13:429:16 | TuplePat | 2 |
| test.rs:428:13:428:19 | TuplePat | test.rs:425:5:431:5 | enter fn tuple_pattern | 1 |
| test.rs:428:13:428:19 | TuplePat | test.rs:427:14:427:14 | 1 | 0 |
| test.rs:429:13:429:16 | TuplePat | test.rs:428:13:428:19 | TuplePat | 1 |
| test.rs:429:13:429:16 | TuplePat | test.rs:428:14:428:15 | .. | 0 |
| test.rs:434:9:437:9 | match a { ... } | test.rs:435:13:435:21 | [match(false)] 0 \| 1 \| 2 | 0 |
| test.rs:434:9:437:9 | match a { ... } | test.rs:435:13:435:21 | [match(true)] 0 \| 1 \| 2 | 1 |
| test.rs:435:13:435:21 | [match(true)] 0 \| 1 \| 2 | test.rs:433:5:438:5 | enter fn or_pattern | 2 |
@@ -2276,17 +2264,12 @@ joinBlockPredecessor
| test.rs:443:26:443:36 | Some(...) | test.rs:443:18:443:21 | true | 0 |
| test.rs:454:9:457:9 | match a { ... } | test.rs:455:30:455:30 | 3 | 0 |
| test.rs:454:9:457:9 | match a { ... } | test.rs:456:13:456:13 | _ | 1 |
| test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:455:13:455:25 | 1 | 0 |
| test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:455:13:455:25 | 2 | 1 |
| test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:453:5:458:5 | enter fn or_pattern_3 | 1 |
| test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:455:13:455:25 | 2 | 0 |
| test.rs:455:13:455:25 | one_or_two!... | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | 0 |
| test.rs:455:13:455:25 | one_or_two!... | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | 1 |
| test.rs:456:13:456:13 | _ | test.rs:453:5:458:5 | enter fn or_pattern_3 | 1 |
| test.rs:456:13:456:13 | _ | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | 0 |
| 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:462:18:462:34 | MyStruct {...} | 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 | 2 |
| test.rs:463:13:463:13 | _ | test.rs:462:14:462:35 | TuplePat | 1 |
| test.rs:463:13:463:13 | _ | test.rs:462:15:462:15 | n | 0 |
| test.rs:471:13:471:14 | TupleExpr | test.rs:469:5:474:5 | enter fn test_infinite_loop | 1 |
| test.rs:471:13:471:14 | TupleExpr | test.rs:471:13:471:14 | TupleExpr | 0 |
| test.rs:495:28:500:9 | exit { ... } (normal) | test.rs:496:13:498:13 | if b {...} | 1 |
@@ -2296,5 +2279,7 @@ joinBlockPredecessor
| test.rs:553:18:564:5 | 'block: { ... } | test.rs:556:13:556:27 | ExprStmt | 0 |
| test.rs:553:18:564:5 | 'block: { ... } | test.rs:559:9:561:9 | if ... {...} | 2 |
| test.rs:553:18:564:5 | 'block: { ... } | test.rs:560:13:560:27 | ExprStmt | 1 |
| test.rs:569:18:575:5 | 'block: { ... } | test.rs:571:18:571:18 | y | 1 |
| test.rs:569:18:575:5 | 'block: { ... } | test.rs:572:13:572:27 | ExprStmt | 0 |
| test.rs:569:18:575:5 | 'block: { ... } | test.rs:574:9:574:9 | 0 | 1 |
| test.rs:572:13:572:27 | ExprStmt | test.rs:568:1:576:1 | enter fn labelled_block2 | 1 |
| test.rs:572:13:572:27 | ExprStmt | test.rs:571:18:571:18 | y | 0 |

View File

@@ -203,6 +203,7 @@ 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(...) | |
@@ -316,6 +317,7 @@ 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 | { ... } | |
@@ -332,6 +334,7 @@ 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(...) | |
@@ -799,6 +802,7 @@ 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 |
@@ -810,6 +814,7 @@ 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 { ... } | |
@@ -836,6 +841,7 @@ 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 | ... + ... | |
@@ -858,6 +864,7 @@ 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 |
@@ -875,6 +882,7 @@ 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 | |
@@ -891,6 +899,7 @@ 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" | |
@@ -923,6 +932,7 @@ 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 |
@@ -959,7 +969,6 @@ edges
| test.rs:394:9:397:9 | match st { ... } | test.rs:393:44:398:5 | { ... } | |
| test.rs:394:15:394:16 | st | test.rs:395:13:395:29 | MyStruct {...} | |
| test.rs:395:13:395:29 | MyStruct {...} | test.rs:395:27:395:27 | 1 | match |
| test.rs:395:13:395:29 | MyStruct {...} | test.rs:396:13:396:26 | MyStruct {...} | no-match |
| test.rs:395:27:395:27 | 1 | test.rs:395:27:395:27 | 1 | |
| test.rs:395:27:395:27 | 1 | test.rs:395:34:395:34 | 0 | match |
| test.rs:395:27:395:27 | 1 | test.rs:396:13:396:26 | MyStruct {...} | no-match |
@@ -974,7 +983,6 @@ edges
| test.rs:401:9:406:9 | match 42 { ... } | test.rs:400:31:407:5 | { ... } | |
| test.rs:401:15:401:16 | 42 | test.rs:402:13:402:15 | RangePat | |
| test.rs:402:13:402:15 | RangePat | test.rs:402:15:402:15 | 0 | match |
| test.rs:402:13:402:15 | RangePat | test.rs:403:13:403:16 | RangePat | no-match |
| test.rs:402:15:402:15 | 0 | test.rs:402:15:402:15 | 0 | |
| test.rs:402:15:402:15 | 0 | test.rs:402:20:402:20 | 1 | match |
| test.rs:402:15:402:15 | 0 | test.rs:403:13:403:16 | RangePat | no-match |
@@ -983,7 +991,6 @@ edges
| test.rs:403:13:403:13 | 1 | test.rs:403:16:403:16 | 2 | match |
| test.rs:403:13:403:13 | 1 | test.rs:404:13:404:15 | RangePat | no-match |
| test.rs:403:13:403:16 | RangePat | test.rs:403:13:403:13 | 1 | match |
| test.rs:403:13:403:16 | RangePat | test.rs:404:13:404:15 | RangePat | no-match |
| test.rs:403:16:403:16 | 2 | test.rs:403:16:403:16 | 2 | |
| test.rs:403:16:403:16 | 2 | test.rs:403:21:403:21 | 2 | match |
| test.rs:403:16:403:16 | 2 | test.rs:404:13:404:15 | RangePat | no-match |
@@ -992,7 +999,6 @@ edges
| test.rs:404:13:404:13 | 5 | test.rs:404:20:404:20 | 3 | match |
| test.rs:404:13:404:13 | 5 | test.rs:405:13:405:13 | _ | no-match |
| test.rs:404:13:404:15 | RangePat | test.rs:404:13:404:13 | 5 | match |
| test.rs:404:13:404:15 | RangePat | test.rs:405:13:405:13 | _ | no-match |
| test.rs:404:20:404:20 | 3 | test.rs:401:9:406:9 | match 42 { ... } | |
| test.rs:405:13:405:13 | _ | test.rs:405:18:405:18 | 4 | match |
| test.rs:405:18:405:18 | 4 | test.rs:401:9:406:9 | match 42 { ... } | |
@@ -1003,12 +1009,10 @@ edges
| test.rs:410:15:410:16 | 43 | test.rs:411:17:411:21 | RangePat | |
| test.rs:411:13:411:13 | n | test.rs:411:13:411:21 | n @ ... | |
| test.rs:411:13:411:21 | n @ ... | test.rs:411:26:411:26 | 2 | match |
| test.rs:411:13:411:21 | n @ ... | test.rs:412:13:412:13 | _ | no-match |
| test.rs:411:17:411:17 | 1 | test.rs:411:17:411:17 | 1 | |
| test.rs:411:17:411:17 | 1 | test.rs:411:20:411:21 | 10 | match |
| test.rs:411:17:411:17 | 1 | test.rs:412:13:412:13 | _ | no-match |
| test.rs:411:17:411:21 | RangePat | test.rs:411:17:411:17 | 1 | match |
| test.rs:411:17:411:21 | RangePat | test.rs:412:13:412:13 | _ | no-match |
| test.rs:411:20:411:21 | 10 | test.rs:411:13:411:13 | n | match |
| test.rs:411:20:411:21 | 10 | test.rs:411:20:411:21 | 10 | |
| test.rs:411:20:411:21 | 10 | test.rs:412:13:412:13 | _ | no-match |
@@ -1028,13 +1032,11 @@ edges
| test.rs:418:9:421:10 | ExprStmt | test.rs:418:15:418:15 | a | |
| test.rs:418:15:418:15 | a | test.rs:419:25:419:29 | RangePat | |
| test.rs:419:13:419:29 | ref mut n @ ... | test.rs:419:35:419:35 | n | match |
| test.rs:419:13:419:29 | ref mut n @ ... | test.rs:420:21:420:21 | n | no-match |
| test.rs:419:21:419:21 | n | test.rs:419:13:419:29 | ref mut n @ ... | |
| test.rs:419:25:419:25 | 1 | test.rs:419:25:419:25 | 1 | |
| test.rs:419:25:419:25 | 1 | test.rs:419:28:419:29 | 10 | match |
| test.rs:419:25:419:25 | 1 | test.rs:420:21:420:21 | n | no-match |
| test.rs:419:25:419:29 | RangePat | test.rs:419:25:419:25 | 1 | match |
| test.rs:419:25:419:29 | RangePat | test.rs:420:21:420:21 | n | no-match |
| test.rs:419:28:419:29 | 10 | test.rs:419:21:419:21 | n | match |
| test.rs:419:28:419:29 | 10 | test.rs:419:28:419:29 | 10 | |
| test.rs:419:28:419:29 | 10 | test.rs:420:21:420:21 | n | no-match |
@@ -1063,14 +1065,12 @@ edges
| test.rs:426:16:426:16 | a | test.rs:426:19:426:19 | b | |
| test.rs:426:19:426:19 | b | test.rs:426:15:426:20 | TupleExpr | |
| test.rs:427:13:427:18 | TuplePat | test.rs:427:14:427:14 | 1 | match |
| test.rs:427:13:427:18 | TuplePat | test.rs:428:13:428:19 | TuplePat | no-match |
| test.rs:427:14:427:14 | 1 | test.rs:427:14:427:14 | 1 | |
| test.rs:427:14:427:14 | 1 | test.rs:427:17:427:17 | _ | match |
| test.rs:427:14:427:14 | 1 | test.rs:428:13:428:19 | TuplePat | no-match |
| test.rs:427:17:427:17 | _ | test.rs:427:23:427:23 | 2 | match |
| test.rs:427:23:427:23 | 2 | test.rs:426:9:430:9 | match ... { ... } | |
| test.rs:428:13:428:19 | TuplePat | test.rs:428:14:428:15 | .. | match |
| test.rs:428:13:428:19 | TuplePat | test.rs:429:13:429:16 | TuplePat | no-match |
| test.rs:428:14:428:15 | .. | test.rs:428:18:428:18 | 2 | match |
| test.rs:428:18:428:18 | 2 | test.rs:428:18:428:18 | 2 | |
| test.rs:428:18:428:18 | 2 | test.rs:428:24:428:24 | 3 | match |
@@ -1138,7 +1138,6 @@ edges
| test.rs:455:13:455:25 | 2 | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | no-match |
| test.rs:455:13:455:25 | 2 | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | match |
| test.rs:455:13:455:25 | MacroPat | test.rs:455:13:455:25 | 1 | match |
| test.rs:455:13:455:25 | MacroPat | test.rs:456:13:456:13 | _ | no-match |
| test.rs:455:13:455:25 | [match(false)] 1 \| 2 | test.rs:455:13:455:25 | one_or_two!... | no-match |
| test.rs:455:13:455:25 | [match(false)] 1 \| 2 | test.rs:456:13:456:13 | _ | no-match |
| test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:455:13:455:25 | one_or_two!... | match |
@@ -1155,13 +1154,11 @@ edges
| test.rs:461:9:464:9 | match pair { ... } | test.rs:460:73:465:5 | { ... } | |
| test.rs:461:15:461:18 | pair | test.rs:462:13:462:35 | &... | |
| test.rs:462:13:462:35 | &... | test.rs:462:14:462:35 | TuplePat | match |
| test.rs:462:13:462:35 | &... | test.rs:463:13:463:13 | _ | no-match |
| test.rs:462:14:462:35 | TuplePat | test.rs:462:15:462:15 | n | match |
| test.rs:462:14:462:35 | TuplePat | test.rs:463:13:463:13 | _ | no-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 |
| test.rs:462:40:462:40 | n | test.rs:461:9:464:9 | match pair { ... } | |
| test.rs:463:13:463:13 | _ | test.rs:463:18:463:18 | 0 | match |
@@ -1391,6 +1388,7 @@ edges
| test.rs:571:13:571:19 | Some(...) | test.rs:571:18:571:18 | y | match |
| test.rs:571:13:571:19 | Some(...) | test.rs:572:13:572:27 | ExprStmt | no-match |
| test.rs:571:18:571:18 | y | test.rs:571:18:571:18 | y | |
| test.rs:571:18:571:18 | y | test.rs:572:13:572:27 | ExprStmt | no-match |
| test.rs:571:18:571:18 | y | test.rs:574:9:574:9 | 0 | match |
| test.rs:571:23:571:23 | x | test.rs:571:13:571:19 | Some(...) | |
| test.rs:572:13:572:26 | break ''block 1 | test.rs:569:18:575:5 | 'block: { ... } | break |

View File

@@ -221,6 +221,7 @@ 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(...) | |
@@ -236,6 +237,7 @@ 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(...) | |
@@ -265,6 +267,7 @@ 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(...) | |
@@ -301,6 +304,7 @@ 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 | { ... } | |
@@ -397,15 +401,12 @@ edges
| main.rs:171:5:180:5 | match msg { ... } | main.rs:168:21:181:1 | { ... } | |
| main.rs:171:11:171:13 | msg | main.rs:172:9:174:9 | ...::Hello {...} | |
| main.rs:172:9:174:9 | ...::Hello {...} | main.rs:173:31:173:35 | RangePat | match |
| main.rs:172:9:174:9 | ...::Hello {...} | main.rs:175:9:175:38 | ...::Hello {...} | no-match |
| main.rs:173:17:173:27 | id_variable | main.rs:173:17:173:35 | id_variable @ ... | |
| main.rs:173:17:173:35 | id_variable @ ... | main.rs:174:14:174:22 | print_i64 | match |
| main.rs:173:17:173:35 | id_variable @ ... | main.rs:175:9:175:38 | ...::Hello {...} | no-match |
| main.rs:173:31:173:31 | 3 | main.rs:173:31:173:31 | 3 | |
| main.rs:173:31:173:31 | 3 | main.rs:173:35:173:35 | 7 | match |
| main.rs:173:31:173:31 | 3 | main.rs:175:9:175:38 | ...::Hello {...} | no-match |
| main.rs:173:31:173:35 | RangePat | main.rs:173:31:173:31 | 3 | match |
| main.rs:173:31:173:35 | RangePat | main.rs:175:9:175:38 | ...::Hello {...} | no-match |
| main.rs:173:35:173:35 | 7 | main.rs:173:17:173:27 | id_variable | match |
| main.rs:173:35:173:35 | 7 | main.rs:173:35:173:35 | 7 | |
| main.rs:173:35:173:35 | 7 | main.rs:175:9:175:38 | ...::Hello {...} | no-match |
@@ -413,12 +414,10 @@ edges
| main.rs:174:14:174:35 | print_i64(...) | main.rs:171:5:180:5 | match msg { ... } | |
| main.rs:174:24:174:34 | id_variable | main.rs:174:14:174:35 | print_i64(...) | |
| main.rs:175:9:175:38 | ...::Hello {...} | main.rs:175:30:175:36 | RangePat | match |
| main.rs:175:9:175:38 | ...::Hello {...} | main.rs:178:9:178:29 | ...::Hello {...} | no-match |
| main.rs:175:30:175:31 | 10 | main.rs:175:30:175:31 | 10 | |
| main.rs:175:30:175:31 | 10 | main.rs:175:35:175:36 | 12 | match |
| main.rs:175:30:175:31 | 10 | main.rs:178:9:178:29 | ...::Hello {...} | no-match |
| main.rs:175:30:175:36 | RangePat | main.rs:175:30:175:31 | 10 | match |
| main.rs:175:30:175:36 | RangePat | main.rs:178:9:178:29 | ...::Hello {...} | no-match |
| main.rs:175:35:175:36 | 12 | main.rs:175:35:175:36 | 12 | |
| main.rs:175:35:175:36 | 12 | main.rs:176:22:176:51 | MacroStmts | match |
| main.rs:175:35:175:36 | 12 | main.rs:178:9:178:29 | ...::Hello {...} | no-match |
@@ -456,6 +455,7 @@ edges
| main.rs:191:9:191:44 | [match(true)] ... \| ... | main.rs:192:16:192:24 | print_i64 | match |
| main.rs:191:22:191:23 | a3 | main.rs:191:9:191:44 | [match(true)] ... \| ... | 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(true)] ... \| ... | match |
| main.rs:191:42:191:43 | a3 | main.rs:191:42:191:43 | a3 | |
@@ -479,10 +479,12 @@ edges
| main.rs:205:9:205:81 | [match(true)] ... \| ... \| ... | main.rs:206:16:206:24 | print_i64 | match |
| main.rs:205:28:205:29 | a4 | main.rs:205:9:205:81 | [match(true)] ... \| ... \| ... | 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(true)] ... \| ... \| ... | 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(true)] ... \| ... \| ... | match |
| main.rs:205:79:205:80 | a4 | main.rs:205:79:205:80 | a4 | |
@@ -499,8 +501,10 @@ edges
| main.rs:209:10:209:57 | [match(true)] ... \| ... | main.rs:209:9:209:83 | [match(true)] ... \| ... | 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 |
@@ -516,11 +520,13 @@ edges
| main.rs:213:9:213:83 | [match(true)] ... \| ... | main.rs:214:16:214:24 | print_i64 | match |
| main.rs:213:28:213:29 | a6 | main.rs:213:9:213:83 | [match(true)] ... \| ... | 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 | [match(true)] ... \| ... | main.rs:213:9:213:83 | [match(true)] ... \| ... | match |
| main.rs:213:55:213:56 | a6 | main.rs:213:35:213:82 | [match(true)] ... \| ... | 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(true)] ... \| ... | match |
| main.rs:213:80:213:81 | a6 | main.rs:213:80:213:81 | a6 | |
@@ -544,8 +550,10 @@ 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 | |
@@ -569,7 +577,6 @@ edges
| main.rs:231:5:242:5 | match either { ... } | main.rs:228:21:243:1 | { ... } | |
| main.rs:231:11:231:16 | either | main.rs:233:14:233:30 | ...::Left(...) | |
| main.rs:232:9:233:52 | ref e @ ... | main.rs:235:13:235:27 | ExprStmt | match |
| main.rs:232:9:233:52 | ref e @ ... | main.rs:241:9:241:9 | _ | no-match |
| main.rs:232:13:232:13 | e | main.rs:232:9:233:52 | ref e @ ... | |
| main.rs:233:14:233:30 | ...::Left(...) | main.rs:233:27:233:29 | a11 | match |
| main.rs:233:14:233:30 | ...::Left(...) | main.rs:233:34:233:51 | ...::Right(...) | no-match |
@@ -577,8 +584,10 @@ 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 { ... } | |
@@ -590,6 +599,7 @@ 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(...) | |
@@ -617,14 +627,17 @@ edges
| main.rs:255:9:255:109 | [match(true)] ... \| ... \| ... | main.rs:256:16:256:24 | print_i64 | match |
| main.rs:255:27:255:29 | a13 | main.rs:255:9:255:109 | [match(true)] ... \| ... \| ... | 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(true)] ... \| ... \| ... | 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 |
@@ -665,6 +678,7 @@ edges
| main.rs:272:6:272:41 | [match(true)] ... \| ... | main.rs:272:5:272:50 | ...: Either | match |
| main.rs:272:19:272:20 | a9 | main.rs:272:6:272:41 | [match(true)] ... \| ... | 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(true)] ... \| ... | match |
| main.rs:272:39:272:40 | a9 | main.rs:272:39:272:40 | a9 | |