Merge remote-tracking branch 'upstream/main' into aibaars/rust-comments

This commit is contained in:
Tom Hvitved
2024-09-30 16:42:22 +02:00
101 changed files with 692 additions and 201 deletions

View File

@@ -200,6 +200,7 @@ extensions:
- ["java.lang", "ClassLoader", "loadClass", "(String,boolean)", "summary", "df-manual"]
- ["java.lang", "ClassLoader", "setClassAssertionStatus", "(String,boolean)", "summary", "df-manual"]
- ["java.lang", "ClassLoader", "setPackageAssertionStatus", "(String,boolean)", "summary", "df-manual"]
- ["java.lang", "Comparable", "compareTo", "", "summary", "manual"]
- ["java.lang", "Enum", "Enum", "(String,int)", "summary", "manual"]
- ["java.lang", "Enum", "equals", "(Object)", "summary", "manual"]
- ["java.lang", "Enum", "hashCode", "()", "summary", "manual"]

View File

@@ -362,7 +362,7 @@ extensions:
- ["java.util", "SequencedMap", True, "sequencedValues", "", "", "Argument[this].MapValue", "ReturnValue.Element", "value", "manual"]
- ["java.util", "SequencedSet", True, "reversed", "", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"]
- ["java.util", "Set", False, "copyOf", "(Collection)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"]
- ["java.util", "Set", False, "clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"]
- ["java.util", "Set", True, "clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"]
- ["java.util", "Set", False, "of", "(Object)", "", "Argument[0]", "ReturnValue.Element", "value", "manual"]
- ["java.util", "Set", False, "of", "(Object,Object)", "", "Argument[0..1]", "ReturnValue.Element", "value", "manual"]
- ["java.util", "Set", False, "of", "(Object,Object,Object)", "", "Argument[0..2]", "ReturnValue.Element", "value", "manual"]
@@ -430,6 +430,8 @@ extensions:
- ["java.util", "Collection", "contains", "(Object)", "summary", "manual"]
- ["java.util", "Collection", "containsAll", "(Collection)", "summary", "manual"]
- ["java.util", "Collection", "isEmpty", "()", "summary", "manual"]
- ["java.util", "Collection", "remove", "(Object)", "summary", "manual"]
- ["java.util", "Collection", "removeIf", "(Predicate)", "summary", "manual"]
- ["java.util", "Collection", "size", "()", "summary", "manual"]
- ["java.util", "Collections", "emptyList", "()", "summary", "manual"]
- ["java.util", "Collections", "emptyMap", "()", "summary", "manual"]
@@ -451,12 +453,14 @@ extensions:
- ["java.util", "HashMap", "size", "()", "summary", "manual"]
- ["java.util", "HashSet", "HashSet", "(int)", "summary", "manual"]
- ["java.util", "Iterator", "hasNext", "()", "summary", "manual"]
- ["java.util", "Iterator", "remove", "()", "summary", "manual"]
- ["java.util", "List", "contains", "(Object)", "summary", "manual"]
- ["java.util", "List", "equals", "(Object)", "summary", "manual"]
- ["java.util", "List", "hashCode", "()", "summary", "manual"]
- ["java.util", "List", "indexOf", "(Object)", "summary", "manual"]
- ["java.util", "List", "isEmpty", "()", "summary", "manual"]
- ["java.util", "List", "of", "()", "summary", "manual"]
- ["java.util", "List", "remove", "(Object)", "summary", "manual"]
- ["java.util", "List", "sort", "(Comparator)", "summary", "manual"]
- ["java.util", "List", "size", "()", "summary", "manual"]
- ["java.util", "Locale$Builder", "addUnicodeLocaleAttribute", "(String)", "summary", "df-manual"]
@@ -535,6 +539,8 @@ extensions:
- ["java.util", "Scanner", "locale", "()", "summary", "df-manual"]
- ["java.util", "Set", "contains", "(Object)", "summary", "manual"]
- ["java.util", "Set", "isEmpty", "()", "summary", "manual"]
- ["java.util", "Set", "remove", "(Object)", "summary", "manual"]
- ["java.util", "Set", "removeAll", "(Collection)", "summary", "manual"]
- ["java.util", "Set", "size", "()", "summary", "manual"]
- ["java.util", "TreeMap", "TreeMap", "(Comparator)", "summary", "df-manual"]
- ["java.util", "TreeSet", "TreeSet", "(Comparator)", "summary", "df-manual"]
@@ -545,14 +551,8 @@ extensions:
- ["java.util", "TimeZone", "getTimeZone", "(String)", "summary", "manual"]
- ["java.util", "Vector", "size", "()", "summary", "manual"]
# The below APIs are currently being stored as neutral models since `WithoutElement` has not yet been implemented for Java.
# When `WithoutElement` is implemented, these should be changed to summary models of the form `Argument[this].WithoutElement -> Argument[this]`.
- ["java.util", "Collection", "removeIf", "(Predicate)", "summary", "manual"]
- ["java.util", "Iterator", "remove", "()", "summary", "manual"]
- ["java.util", "List", "remove", "(Object)", "summary", "manual"]
# The below API is currently being stored as neutral models since `WithoutElement` does not yet have a counterpart for MapValue/MapKey.
- ["java.util", "Map", "clear", "()", "summary", "manual"]
- ["java.util", "Set", "remove", "(Object)", "summary", "manual"]
- ["java.util", "Set", "removeAll", "(Collection)", "summary", "manual"]
# The below APIs have numeric flow and are currently being stored as neutral models.
# These may be changed to summary models with kinds "value-numeric" and "taint-numeric" (or similar) in the future.

View File

@@ -297,7 +297,7 @@ models
| 296 | Summary: java.util; SequencedMap; true; sequencedValues; ; ; Argument[this].MapValue; ReturnValue.Element; value; manual |
| 297 | Summary: java.util; SequencedSet; true; reversed; ; ; Argument[this].Element; ReturnValue.Element; value; manual |
| 298 | Summary: java.util; Set; false; copyOf; (Collection); ; Argument[0].Element; ReturnValue.Element; value; manual |
| 299 | Summary: java.util; Set; false; clear; (); ; Argument[this].WithoutElement; Argument[this]; value; manual |
| 299 | Summary: java.util; Set; true; clear; (); ; Argument[this].WithoutElement; Argument[this]; value; manual |
| 300 | Summary: java.util; Set; false; of; (Object); ; Argument[0]; ReturnValue.Element; value; manual |
| 301 | Summary: java.util; Set; false; of; (Object,Object); ; Argument[0..1]; ReturnValue.Element; value; manual |
| 302 | Summary: java.util; Set; false; of; (Object,Object,Object); ; Argument[0..2]; ReturnValue.Element; value; manual |

View File

@@ -64,18 +64,18 @@ predicate trivialPat(Pat p) { p instanceof WildcardPat or p instanceof IdentPat
class AsmExprTree extends LeafTree instanceof AsmExpr { }
class AwaitExprTree extends StandardPostOrderTree instanceof AwaitExpr {
override ControlFlowTree getChildNode(int i) { i = 0 and result = super.getExpr() }
override AstNode getChildNode(int i) { i = 0 and result = super.getExpr() }
}
// NOTE: `become` is a reserved but unused keyword.
class BecomeExprTree extends StandardPostOrderTree instanceof BecomeExpr {
override ControlFlowTree getChildNode(int i) { i = 0 and result = super.getExpr() }
override AstNode getChildNode(int i) { i = 0 and result = super.getExpr() }
}
class BinaryOpExprTree extends StandardPostOrderTree instanceof BinaryExpr {
BinaryOpExprTree() { not this instanceof BinaryLogicalOperation }
override ControlFlowTree getChildNode(int i) {
override AstNode getChildNode(int i) {
i = 0 and result = super.getLhs()
or
i = 1 and result = super.getRhs()
@@ -133,7 +133,7 @@ class LogicalAndBinaryOpExprTree extends PreOrderTree, LogicalAndExpr {
}
class BlockExprBaseTree extends StandardPostOrderTree instanceof BlockExpr {
override ControlFlowTree getChildNode(int i) {
override AstNode getChildNode(int i) {
result = super.getStmtList().getStatement(i)
or
not exists(super.getStmtList().getStatement(i)) and
@@ -157,7 +157,7 @@ class BreakExprTree extends PostOrderTree instanceof BreakExpr {
}
class CallExprTree extends StandardPostOrderTree instanceof CallExpr {
override ControlFlowTree getChildNode(int i) {
override AstNode getChildNode(int i) {
i = 0 and result = super.getExpr()
or
result = super.getArgList().getArg(i - 1)
@@ -165,7 +165,7 @@ class CallExprTree extends StandardPostOrderTree instanceof CallExpr {
}
class CastExprTree extends StandardPostOrderTree instanceof CastExpr {
override ControlFlowTree getChildNode(int i) { i = 0 and result = super.getExpr() }
override AstNode getChildNode(int i) { i = 0 and result = super.getExpr() }
}
class ClosureExprTree extends LeafTree instanceof ClosureExpr { }
@@ -173,11 +173,11 @@ class ClosureExprTree extends LeafTree instanceof ClosureExpr { }
class ContinueExprTree extends LeafTree instanceof ContinueExpr { }
class ExprStmtTree extends StandardPreOrderTree instanceof ExprStmt {
override ControlFlowTree getChildNode(int i) { i = 0 and result = super.getExpr() }
override AstNode getChildNode(int i) { i = 0 and result = super.getExpr() }
}
class FieldExprTree extends StandardPostOrderTree instanceof FieldExpr {
override ControlFlowTree getChildNode(int i) { i = 0 and result = super.getExpr() }
override AstNode getChildNode(int i) { i = 0 and result = super.getExpr() }
}
class FunctionTree extends LeafTree instanceof Function { }
@@ -219,7 +219,7 @@ class IfExprTree extends PostOrderTree instanceof IfExpr {
}
class IndexExprTree extends StandardPostOrderTree instanceof IndexExpr {
override ControlFlowTree getChildNode(int i) {
override AstNode getChildNode(int i) {
i = 0 and result = super.getBase()
or
i = 1 and result = super.getIndex()
@@ -230,7 +230,7 @@ class IndexExprTree extends StandardPostOrderTree instanceof IndexExpr {
// dominating successors in the graph in the same way that patterns do in
// `match` expressions.
class LetExprTree extends StandardPreOrderTree instanceof LetExpr {
override ControlFlowTree getChildNode(int i) { i = 0 and result = super.getPat() }
override AstNode getChildNode(int i) { i = 0 and result = super.getPat() }
}
// We handle `let` statements with trivial patterns separately as they don't
@@ -239,7 +239,7 @@ class LetExprTree extends StandardPreOrderTree instanceof LetExpr {
class LetStmtTreeTrivialPat extends StandardPreOrderTree instanceof LetStmt {
LetStmtTreeTrivialPat() { trivialPat(super.getPat()) }
override ControlFlowTree getChildNode(int i) {
override AstNode getChildNode(int i) {
i = 0 and result = super.getInitializer()
or
i = 1 and result = super.getPat()
@@ -370,7 +370,7 @@ class MatchExprTree extends PostOrderTree instanceof MatchExpr {
}
class MethodCallExprTree extends StandardPostOrderTree instanceof MethodCallExpr {
override ControlFlowTree getChildNode(int i) {
override AstNode getChildNode(int i) {
result = super.getReceiver() and
result = super.getArgList().getArg(i + 1)
}
@@ -379,7 +379,7 @@ class MethodCallExprTree extends StandardPostOrderTree instanceof MethodCallExpr
class OffsetOfExprTree extends LeafTree instanceof OffsetOfExpr { }
class ParenExprTree extends StandardPostOrderTree, ParenExpr {
override ControlFlowTree getChildNode(int i) { i = 0 and result = super.getExpr() }
override AstNode getChildNode(int i) { i = 0 and result = super.getExpr() }
}
// This covers all patterns as they all extend `Pat`
@@ -388,11 +388,11 @@ class PatExprTree extends LeafTree instanceof Pat { }
class PathExprTree extends LeafTree instanceof PathExpr { }
class PrefixExprTree extends StandardPostOrderTree instanceof PrefixExpr {
override ControlFlowTree getChildNode(int i) { i = 0 and result = super.getExpr() }
override AstNode getChildNode(int i) { i = 0 and result = super.getExpr() }
}
class RangeExprTree extends StandardPostOrderTree instanceof RangeExpr {
override ControlFlowTree getChildNode(int i) {
override AstNode getChildNode(int i) {
i = 0 and result = super.getStart()
or
i = 1 and result = super.getEnd()
@@ -400,13 +400,13 @@ class RangeExprTree extends StandardPostOrderTree instanceof RangeExpr {
}
class RecordExprTree extends StandardPostOrderTree instanceof RecordExpr {
override ControlFlowTree getChildNode(int i) {
override AstNode getChildNode(int i) {
result = super.getRecordExprFieldList().getField(i).getExpr()
}
}
class RefExprTree extends StandardPostOrderTree instanceof RefExpr {
override ControlFlowTree getChildNode(int i) { i = 0 and result = super.getExpr() }
override AstNode getChildNode(int i) { i = 0 and result = super.getExpr() }
}
class ReturnExprTree extends PostOrderTree instanceof ReturnExpr {
@@ -424,7 +424,7 @@ class ReturnExprTree extends PostOrderTree instanceof ReturnExpr {
}
class TupleExprTree extends StandardPostOrderTree instanceof TupleExpr {
override ControlFlowTree getChildNode(int i) { result = super.getField(i) }
override AstNode getChildNode(int i) { result = super.getField(i) }
}
class TypeRefTree extends LeafTree instanceof TypeRef { }
@@ -433,10 +433,10 @@ class UnderscoreExprTree extends LeafTree instanceof UnderscoreExpr { }
// NOTE: `yield` is a reserved but unused keyword.
class YieldExprTree extends StandardPostOrderTree instanceof YieldExpr {
override ControlFlowTree getChildNode(int i) { i = 0 and result = super.getExpr() }
override AstNode getChildNode(int i) { i = 0 and result = super.getExpr() }
}
// NOTE: `yeet` is experimental and not a part of Rust.
class YeetExprTree extends StandardPostOrderTree instanceof YeetExpr {
override ControlFlowTree getChildNode(int i) { i = 0 and result = super.getExpr() }
override AstNode getChildNode(int i) { i = 0 and result = super.getExpr() }
}

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_abi.rs:3:1:6:1 | test_abi |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_arg_list.rs:3:1:6:1 | test_arg_list |

View File

@@ -0,0 +1,2 @@
deadEnd
| gen_array_expr.rs:5:5:5:14 | ExprStmt |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_array_type.rs:3:1:6:1 | test_array_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_assoc_item_list.rs:3:1:6:1 | test_assoc_item_list |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_assoc_type_arg.rs:3:1:6:1 | test_assoc_type_arg |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_attr.rs:3:1:6:1 | test_attr |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_closure_binder.rs:3:1:6:1 | test_closure_binder |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_const.rs:3:1:6:1 | test_const |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_const_arg.rs:3:1:6:1 | test_const_arg |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_const_param.rs:3:1:6:1 | test_const_param |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_dyn_trait_type.rs:3:1:6:1 | test_dyn_trait_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_enum.rs:3:1:6:1 | test_enum |

View File

@@ -0,0 +1,2 @@
deadEnd
| gen_expr_stmt.rs:6:5:6:12 | CallExpr |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_extern_block.rs:3:1:6:1 | test_extern_block |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_extern_crate.rs:3:1:6:1 | test_extern_crate |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_extern_item_list.rs:3:1:6:1 | test_extern_item_list |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_fn_ptr_type.rs:3:1:6:1 | test_fn_ptr_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_for_expr.rs:3:1:6:1 | test_for_expr |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_for_type.rs:3:1:6:1 | test_for_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_format_args_arg.rs:3:1:6:1 | test_format_args_arg |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_format_args_expr.rs:3:1:6:1 | test_format_args_expr |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_generic_param_list.rs:3:1:6:1 | test_generic_param_list |

View File

@@ -0,0 +1,2 @@
deadEnd
| gen_if_expr.rs:6:9:6:38 | ExprStmt |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_impl.rs:3:1:6:1 | test_impl |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_impl_trait_type.rs:3:1:6:1 | test_impl_trait_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_infer_type.rs:3:1:6:1 | test_infer_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_item_list.rs:3:1:6:1 | test_item_list |

View File

@@ -0,0 +1,2 @@
deadEnd
| gen_label.rs:6:9:6:41 | ExprStmt |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_let_else.rs:3:1:6:1 | test_let_else |

View File

@@ -0,0 +1,2 @@
deadEnd
| gen_let_expr.rs:6:9:6:26 | ExprStmt |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_lifetime.rs:3:1:6:1 | test_lifetime |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_lifetime_arg.rs:3:1:6:1 | test_lifetime_arg |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_lifetime_param.rs:3:1:6:1 | test_lifetime_param |

View File

@@ -0,0 +1,2 @@
deadEnd
| gen_loop_expr.rs:6:9:6:42 | ExprStmt |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_macro_call.rs:3:1:6:1 | test_macro_call |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_macro_def.rs:3:1:6:1 | test_macro_def |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_macro_expr.rs:3:1:6:1 | test_macro_expr |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_macro_pat.rs:3:1:6:1 | test_macro_pat |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_macro_rules.rs:3:1:6:1 | test_macro_rules |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_macro_type.rs:3:1:6:1 | test_macro_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_match_arm_list.rs:3:1:6:1 | test_match_arm_list |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_match_guard.rs:3:1:6:1 | test_match_guard |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_meta.rs:3:1:6:1 | test_meta |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_name.rs:3:1:6:1 | test_name |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_name_ref.rs:3:1:6:1 | test_name_ref |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_never_type.rs:3:1:6:1 | test_never_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_param.rs:3:1:6:1 | test_param |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_param_list.rs:3:1:6:1 | test_param_list |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_paren_expr.rs:3:1:6:1 | test_paren_expr |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_paren_pat.rs:3:1:6:1 | test_paren_pat |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_paren_type.rs:3:1:6:1 | test_paren_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_path_segment.rs:3:1:6:1 | test_path_segment |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_path_type.rs:3:1:6:1 | test_path_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_ptr_type.rs:3:1:6:1 | test_ptr_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_record_expr_field_list.rs:3:1:6:1 | test_record_expr_field_list |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_record_field.rs:3:1:6:1 | test_record_field |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_record_field_list.rs:3:1:6:1 | test_record_field_list |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_record_pat_field_list.rs:3:1:6:1 | test_record_pat_field_list |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_ref_type.rs:3:1:6:1 | test_ref_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_rename.rs:3:1:6:1 | test_rename |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_rest_pat.rs:3:1:6:1 | test_rest_pat |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_ret_type.rs:3:1:6:1 | test_ret_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_return_type_syntax.rs:3:1:6:1 | test_return_type_syntax |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_self_param.rs:3:1:6:1 | test_self_param |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_slice_type.rs:3:1:6:1 | test_slice_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_source_file.rs:3:1:6:1 | test_source_file |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_static.rs:3:1:6:1 | test_static |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_stmt_list.rs:3:1:6:1 | test_stmt_list |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_struct.rs:3:1:6:1 | test_struct |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_token_tree.rs:3:1:6:1 | test_token_tree |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_trait.rs:3:1:6:1 | test_trait |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_trait_alias.rs:3:1:6:1 | test_trait_alias |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_try_expr.rs:3:1:6:1 | test_try_expr |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_tuple_field.rs:3:1:6:1 | test_tuple_field |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_tuple_field_list.rs:3:1:6:1 | test_tuple_field_list |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_tuple_type.rs:3:1:6:1 | test_tuple_type |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_type_alias.rs:3:1:6:1 | test_type_alias |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_type_arg.rs:3:1:6:1 | test_type_arg |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_type_bound.rs:3:1:6:1 | test_type_bound |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_type_bound_list.rs:3:1:6:1 | test_type_bound_list |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_type_param.rs:3:1:6:1 | test_type_param |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_union.rs:3:1:6:1 | test_union |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_use.rs:3:1:6:1 | test_use |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_use_tree.rs:3:1:6:1 | test_use_tree |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_use_tree_list.rs:3:1:6:1 | test_use_tree_list |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_variant.rs:3:1:6:1 | test_variant |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_variant_list.rs:3:1:6:1 | test_variant_list |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_visibility.rs:3:1:6:1 | test_visibility |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_where_clause.rs:3:1:6:1 | test_where_clause |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_where_pred.rs:3:1:6:1 | test_where_pred |

View File

@@ -0,0 +1,2 @@
scopeNoFirst
| gen_while_expr.rs:3:1:6:1 | test_while_expr |

View File

@@ -1,3 +1,6 @@
deadEnd
| test.rs:125:28:125:33 | ... < ... |
| test.rs:140:30:140:48 | BlockExpr |
| test.rs:55:13:55:17 | IdentPat |
| test.rs:224:28:224:33 | ... < ... |
| test.rs:239:30:239:48 | BlockExpr |
scopeNoFirst
| test.rs:62:5:66:5 | test_for |

View File

@@ -97,173 +97,350 @@
| test.rs:47:21:47:36 | ExprStmt | test.rs:47:21:47:35 | ContinueExpr | |
| test.rs:49:17:49:31 | ContinueExpr | test.rs:44:17:48:17 | ExprStmt | continue('inner) |
| test.rs:49:17:49:32 | ExprStmt | test.rs:49:17:49:31 | ContinueExpr | |
| test.rs:55:1:58:1 | enter test_nested_function | test.rs:56:5:56:28 | LetStmt | |
| test.rs:55:1:58:1 | exit test_nested_function (normal) | test.rs:55:1:58:1 | exit test_nested_function | |
| test.rs:55:40:58:1 | BlockExpr | test.rs:55:1:58:1 | exit test_nested_function (normal) | |
| test.rs:56:5:56:28 | LetStmt | test.rs:56:19:56:27 | ClosureExpr | |
| test.rs:56:9:56:15 | IdentPat | test.rs:57:5:57:11 | PathExpr | match, no-match |
| test.rs:56:19:56:27 | ClosureExpr | test.rs:56:9:56:15 | IdentPat | |
| test.rs:56:19:56:27 | enter ClosureExpr | test.rs:56:23:56:23 | PathExpr | |
| test.rs:56:19:56:27 | exit ClosureExpr (normal) | test.rs:56:19:56:27 | exit ClosureExpr | |
| test.rs:56:23:56:23 | PathExpr | test.rs:56:27:56:27 | 1 | |
| test.rs:56:23:56:27 | ... + ... | test.rs:56:19:56:27 | exit ClosureExpr (normal) | |
| test.rs:56:27:56:27 | 1 | test.rs:56:23:56:27 | ... + ... | |
| test.rs:57:5:57:11 | PathExpr | test.rs:57:13:57:19 | PathExpr | |
| test.rs:57:5:57:23 | CallExpr | test.rs:55:40:58:1 | BlockExpr | |
| test.rs:57:13:57:19 | PathExpr | test.rs:57:21:57:21 | PathExpr | |
| test.rs:57:13:57:22 | CallExpr | test.rs:57:5:57:23 | CallExpr | |
| test.rs:57:21:57:21 | PathExpr | test.rs:57:13:57:22 | CallExpr | |
| test.rs:62:5:68:5 | enter test_if_else | test.rs:63:12:63:12 | PathExpr | |
| test.rs:62:5:68:5 | exit test_if_else (normal) | test.rs:62:5:68:5 | exit test_if_else | |
| test.rs:62:36:68:5 | BlockExpr | test.rs:62:5:68:5 | exit test_if_else (normal) | |
| test.rs:63:9:67:9 | IfExpr | test.rs:62:36:68:5 | BlockExpr | |
| test.rs:63:12:63:12 | PathExpr | test.rs:63:17:63:17 | 0 | |
| test.rs:63:12:63:17 | ... <= ... | test.rs:64:13:64:13 | 0 | true |
| test.rs:63:12:63:17 | ... <= ... | test.rs:66:13:66:13 | PathExpr | false |
| test.rs:63:17:63:17 | 0 | test.rs:63:12:63:17 | ... <= ... | |
| test.rs:63:19:65:9 | BlockExpr | test.rs:63:9:67:9 | IfExpr | |
| test.rs:64:13:64:13 | 0 | test.rs:63:19:65:9 | BlockExpr | |
| test.rs:65:16:67:9 | BlockExpr | test.rs:63:9:67:9 | IfExpr | |
| test.rs:66:13:66:13 | PathExpr | test.rs:66:17:66:17 | 1 | |
| test.rs:66:13:66:17 | ... - ... | test.rs:65:16:67:9 | BlockExpr | |
| test.rs:66:17:66:17 | 1 | test.rs:66:13:66:17 | ... - ... | |
| test.rs:70:5:76:5 | enter test_if_let_else | test.rs:71:12:71:26 | LetExpr | |
| test.rs:70:5:76:5 | exit test_if_let_else (normal) | test.rs:70:5:76:5 | exit test_if_let_else | |
| test.rs:70:48:76:5 | BlockExpr | test.rs:70:5:76:5 | exit test_if_let_else (normal) | |
| test.rs:71:9:75:9 | IfExpr | test.rs:70:48:76:5 | BlockExpr | |
| test.rs:71:12:71:26 | LetExpr | test.rs:71:16:71:22 | TupleStructPat | |
| test.rs:71:16:71:22 | TupleStructPat | test.rs:72:13:72:13 | PathExpr | match |
| test.rs:71:16:71:22 | TupleStructPat | test.rs:74:13:74:13 | 0 | no-match |
| test.rs:71:28:73:9 | BlockExpr | test.rs:71:9:75:9 | IfExpr | |
| test.rs:72:13:72:13 | PathExpr | test.rs:71:28:73:9 | BlockExpr | |
| test.rs:73:16:75:9 | BlockExpr | test.rs:71:9:75:9 | IfExpr | |
| test.rs:74:13:74:13 | 0 | test.rs:73:16:75:9 | BlockExpr | |
| test.rs:78:5:83:5 | enter test_if_let | test.rs:79:9:81:9 | ExprStmt | |
| test.rs:78:5:83:5 | exit test_if_let (normal) | test.rs:78:5:83:5 | exit test_if_let | |
| test.rs:78:43:83:5 | BlockExpr | test.rs:78:5:83:5 | exit test_if_let (normal) | |
| test.rs:79:9:81:9 | ExprStmt | test.rs:79:12:79:26 | LetExpr | |
| test.rs:79:9:81:9 | IfExpr | test.rs:82:9:82:9 | 0 | |
| test.rs:79:12:79:26 | LetExpr | test.rs:79:16:79:22 | TupleStructPat | |
| test.rs:79:16:79:22 | TupleStructPat | test.rs:79:9:81:9 | IfExpr | no-match |
| test.rs:79:16:79:22 | TupleStructPat | test.rs:80:13:80:13 | PathExpr | match |
| test.rs:79:28:81:9 | BlockExpr | test.rs:79:9:81:9 | IfExpr | |
| test.rs:80:13:80:13 | PathExpr | test.rs:79:28:81:9 | BlockExpr | |
| test.rs:82:9:82:9 | 0 | test.rs:78:43:83:5 | BlockExpr | |
| test.rs:85:5:91:5 | enter test_nested_if | test.rs:86:16:86:16 | PathExpr | |
| test.rs:85:5:91:5 | exit test_nested_if (normal) | test.rs:85:5:91:5 | exit test_nested_if | |
| test.rs:85:38:91:5 | BlockExpr | test.rs:85:5:91:5 | exit test_nested_if (normal) | |
| test.rs:86:9:90:9 | IfExpr | test.rs:85:38:91:5 | BlockExpr | |
| test.rs:86:12:86:49 | ParenExpr | test.rs:87:13:87:13 | 1 | true |
| test.rs:86:12:86:49 | ParenExpr | test.rs:89:13:89:13 | 0 | false |
| test.rs:86:13:86:48 | IfExpr | test.rs:86:12:86:49 | ParenExpr | |
| test.rs:86:16:86:16 | PathExpr | test.rs:86:20:86:20 | 0 | |
| test.rs:86:16:86:20 | ... < ... | test.rs:86:24:86:24 | PathExpr | true |
| test.rs:86:16:86:20 | ... < ... | test.rs:86:41:86:41 | PathExpr | false |
| test.rs:86:20:86:20 | 0 | test.rs:86:16:86:20 | ... < ... | |
| test.rs:86:22:86:32 | BlockExpr | test.rs:86:13:86:48 | IfExpr | |
| test.rs:86:24:86:24 | PathExpr | test.rs:86:29:86:30 | 10 | |
| test.rs:86:24:86:30 | ... < ... | test.rs:86:22:86:32 | BlockExpr | |
| test.rs:86:28:86:30 | - ... | test.rs:86:24:86:30 | ... < ... | |
| test.rs:86:29:86:30 | 10 | test.rs:86:28:86:30 | - ... | |
| test.rs:86:39:86:48 | BlockExpr | test.rs:86:13:86:48 | IfExpr | |
| test.rs:86:41:86:41 | PathExpr | test.rs:86:45:86:46 | 10 | |
| test.rs:86:41:86:46 | ... > ... | test.rs:86:39:86:48 | BlockExpr | |
| test.rs:86:45:86:46 | 10 | test.rs:86:41:86:46 | ... > ... | |
| test.rs:86:51:88:9 | BlockExpr | test.rs:86:9:90:9 | IfExpr | |
| test.rs:87:13:87:13 | 1 | test.rs:86:51:88:9 | BlockExpr | |
| test.rs:88:16:90:9 | BlockExpr | test.rs:86:9:90:9 | IfExpr | |
| test.rs:89:13:89:13 | 0 | test.rs:88:16:90:9 | BlockExpr | |
| test.rs:93:5:102:5 | enter test_nested_if_match | test.rs:94:19:94:19 | PathExpr | |
| test.rs:93:5:102:5 | exit test_nested_if_match (normal) | test.rs:93:5:102:5 | exit test_nested_if_match | |
| test.rs:93:44:102:5 | BlockExpr | test.rs:93:5:102:5 | exit test_nested_if_match (normal) | |
| test.rs:94:9:101:9 | IfExpr | test.rs:93:44:102:5 | BlockExpr | |
| test.rs:94:12:97:10 | ParenExpr | test.rs:98:13:98:13 | 1 | true |
| test.rs:94:12:97:10 | ParenExpr | test.rs:100:13:100:13 | 0 | false |
| test.rs:94:13:97:9 | MatchExpr | test.rs:94:12:97:10 | ParenExpr | |
| test.rs:94:19:94:19 | PathExpr | test.rs:95:13:95:13 | LiteralPat | |
| test.rs:95:13:95:13 | LiteralPat | test.rs:95:18:95:21 | true | match |
| test.rs:95:13:95:13 | LiteralPat | test.rs:96:13:96:13 | WildcardPat | no-match |
| test.rs:95:18:95:21 | true | test.rs:94:13:97:9 | MatchExpr | |
| test.rs:96:13:96:13 | WildcardPat | test.rs:96:18:96:22 | false | match |
| test.rs:96:18:96:22 | false | test.rs:94:13:97:9 | MatchExpr | |
| test.rs:97:12:99:9 | BlockExpr | test.rs:94:9:101:9 | IfExpr | |
| test.rs:98:13:98:13 | 1 | test.rs:97:12:99:9 | BlockExpr | |
| test.rs:99:16:101:9 | BlockExpr | test.rs:94:9:101:9 | IfExpr | |
| test.rs:100:13:100:13 | 0 | test.rs:99:16:101:9 | BlockExpr | |
| test.rs:107:5:110:5 | enter test_and_operator | test.rs:108:9:108:28 | LetStmt | |
| test.rs:107:5:110:5 | exit test_and_operator (normal) | test.rs:107:5:110:5 | exit test_and_operator | |
| test.rs:107:61:110:5 | BlockExpr | test.rs:107:5:110:5 | exit test_and_operator (normal) | |
| test.rs:108:9:108:28 | LetStmt | test.rs:108:17:108:27 | ... && ... | |
| test.rs:108:13:108:13 | IdentPat | test.rs:109:9:109:9 | PathExpr | match, no-match |
| test.rs:108:17:108:17 | PathExpr | test.rs:108:13:108:13 | IdentPat | false |
| test.rs:108:17:108:17 | PathExpr | test.rs:108:22:108:22 | PathExpr | true |
| test.rs:108:17:108:22 | ... && ... | test.rs:108:17:108:17 | PathExpr | |
| test.rs:108:17:108:27 | ... && ... | test.rs:108:17:108:22 | ... && ... | |
| test.rs:108:22:108:22 | PathExpr | test.rs:108:13:108:13 | IdentPat | false |
| test.rs:108:22:108:22 | PathExpr | test.rs:108:27:108:27 | PathExpr | true |
| test.rs:108:27:108:27 | PathExpr | test.rs:108:13:108:13 | IdentPat | |
| test.rs:109:9:109:9 | PathExpr | test.rs:107:61:110:5 | BlockExpr | |
| test.rs:112:5:115:5 | enter test_or_operator | test.rs:113:9:113:28 | LetStmt | |
| test.rs:112:5:115:5 | exit test_or_operator (normal) | test.rs:112:5:115:5 | exit test_or_operator | |
| test.rs:112:60:115:5 | BlockExpr | test.rs:112:5:115:5 | exit test_or_operator (normal) | |
| test.rs:113:9:113:28 | LetStmt | test.rs:113:17:113:27 | ... \|\| ... | |
| test.rs:113:13:113:13 | IdentPat | test.rs:114:9:114:9 | PathExpr | match, no-match |
| test.rs:113:17:113:17 | PathExpr | test.rs:113:13:113:13 | IdentPat | true |
| test.rs:113:17:113:17 | PathExpr | test.rs:113:22:113:22 | PathExpr | false |
| test.rs:113:17:113:22 | ... \|\| ... | test.rs:113:17:113:17 | PathExpr | |
| test.rs:113:17:113:27 | ... \|\| ... | test.rs:113:17:113:22 | ... \|\| ... | |
| test.rs:113:22:113:22 | PathExpr | test.rs:113:13:113:13 | IdentPat | true |
| test.rs:113:22:113:22 | PathExpr | test.rs:113:27:113:27 | PathExpr | false |
| test.rs:113:27:113:27 | PathExpr | test.rs:113:13:113:13 | IdentPat | |
| test.rs:114:9:114:9 | PathExpr | test.rs:112:60:115:5 | BlockExpr | |
| test.rs:117:5:120:5 | enter test_or_operator_2 | test.rs:118:9:118:36 | LetStmt | |
| test.rs:117:5:120:5 | exit test_or_operator_2 (normal) | test.rs:117:5:120:5 | exit test_or_operator_2 | |
| test.rs:117:61:120:5 | BlockExpr | test.rs:117:5:120:5 | exit test_or_operator_2 (normal) | |
| test.rs:118:9:118:36 | LetStmt | test.rs:118:17:118:35 | ... \|\| ... | |
| test.rs:118:13:118:13 | IdentPat | test.rs:119:9:119:9 | PathExpr | match, no-match |
| test.rs:118:17:118:17 | PathExpr | test.rs:118:13:118:13 | IdentPat | true |
| test.rs:118:17:118:17 | PathExpr | test.rs:118:23:118:23 | PathExpr | false |
| test.rs:118:17:118:30 | ... \|\| ... | test.rs:118:17:118:17 | PathExpr | |
| test.rs:118:17:118:35 | ... \|\| ... | test.rs:118:17:118:30 | ... \|\| ... | |
| test.rs:118:22:118:30 | ParenExpr | test.rs:118:13:118:13 | IdentPat | true |
| test.rs:118:22:118:30 | ParenExpr | test.rs:118:35:118:35 | PathExpr | false |
| test.rs:118:23:118:23 | PathExpr | test.rs:118:28:118:29 | 28 | |
| test.rs:118:23:118:29 | ... == ... | test.rs:118:22:118:30 | ParenExpr | |
| test.rs:118:28:118:29 | 28 | test.rs:118:23:118:29 | ... == ... | |
| test.rs:118:35:118:35 | PathExpr | test.rs:118:13:118:13 | IdentPat | |
| test.rs:119:9:119:9 | PathExpr | test.rs:117:61:120:5 | BlockExpr | |
| test.rs:123:1:129:1 | enter test_match | test.rs:124:11:124:21 | PathExpr | |
| test.rs:123:1:129:1 | exit test_match (normal) | test.rs:123:1:129:1 | exit test_match | |
| test.rs:123:48:129:1 | BlockExpr | test.rs:123:1:129:1 | exit test_match (normal) | |
| test.rs:124:5:128:5 | MatchExpr | test.rs:123:48:129:1 | BlockExpr | |
| test.rs:124:11:124:21 | PathExpr | test.rs:125:9:125:23 | TupleStructPat | |
| test.rs:125:9:125:23 | TupleStructPat | test.rs:125:28:125:28 | PathExpr | match |
| test.rs:125:9:125:23 | TupleStructPat | test.rs:126:9:126:23 | TupleStructPat | no-match |
| test.rs:125:28:125:28 | PathExpr | test.rs:125:32:125:33 | 10 | |
| test.rs:125:32:125:33 | 10 | test.rs:125:28:125:33 | ... < ... | |
| test.rs:126:9:126:23 | TupleStructPat | test.rs:126:28:126:28 | PathExpr | match |
| test.rs:126:9:126:23 | TupleStructPat | test.rs:127:9:127:20 | PathPat | no-match |
| test.rs:126:28:126:28 | PathExpr | test.rs:124:5:128:5 | MatchExpr | |
| test.rs:127:9:127:20 | PathPat | test.rs:127:25:127:25 | 5 | match |
| test.rs:127:25:127:25 | 5 | test.rs:124:5:128:5 | MatchExpr | |
| test.rs:132:5:137:5 | enter test_infinite_loop | test.rs:133:9:135:9 | ExprStmt | |
| test.rs:133:9:135:9 | ExprStmt | test.rs:134:13:134:13 | 1 | |
| test.rs:133:14:135:9 | BlockExpr | test.rs:134:13:134:13 | 1 | |
| test.rs:134:13:134:13 | 1 | test.rs:133:14:135:9 | BlockExpr | |
| test.rs:139:5:142:5 | enter test_let_match | test.rs:140:9:140:49 | LetStmt | |
| test.rs:139:5:142:5 | exit test_let_match (normal) | test.rs:139:5:142:5 | exit test_let_match | |
| test.rs:139:39:142:5 | BlockExpr | test.rs:139:5:142:5 | exit test_let_match (normal) | |
| test.rs:140:9:140:49 | LetStmt | test.rs:140:23:140:23 | PathExpr | |
| test.rs:140:13:140:19 | TupleStructPat | test.rs:140:32:140:46 | "Expected some" | no-match |
| test.rs:140:13:140:19 | TupleStructPat | test.rs:141:9:141:9 | PathExpr | match |
| test.rs:140:23:140:23 | PathExpr | test.rs:140:13:140:19 | TupleStructPat | |
| test.rs:140:32:140:46 | "Expected some" | test.rs:140:30:140:48 | BlockExpr | |
| test.rs:141:9:141:9 | PathExpr | test.rs:139:39:142:5 | BlockExpr | |
| test.rs:145:1:150:1 | enter dead_code | test.rs:146:5:148:5 | ExprStmt | |
| test.rs:145:1:150:1 | exit dead_code (normal) | test.rs:145:1:150:1 | exit dead_code | |
| test.rs:146:5:148:5 | ExprStmt | test.rs:146:9:146:12 | true | |
| test.rs:146:8:146:13 | ParenExpr | test.rs:147:9:147:17 | ExprStmt | true |
| test.rs:146:9:146:12 | true | test.rs:146:8:146:13 | ParenExpr | |
| test.rs:147:9:147:16 | ReturnExpr | test.rs:145:1:150:1 | exit dead_code (normal) | return |
| test.rs:147:9:147:17 | ExprStmt | test.rs:147:16:147:16 | 0 | |
| test.rs:147:16:147:16 | 0 | test.rs:147:9:147:16 | ReturnExpr | |
| test.rs:54:5:60:5 | enter test_while | test.rs:55:9:55:25 | LetStmt | |
| test.rs:55:9:55:25 | LetStmt | test.rs:55:21:55:24 | true | |
| test.rs:55:21:55:24 | true | test.rs:55:13:55:17 | IdentPat | |
| test.rs:69:1:72:1 | enter test_nested_function | test.rs:70:5:70:28 | LetStmt | |
| test.rs:69:1:72:1 | exit test_nested_function (normal) | test.rs:69:1:72:1 | exit test_nested_function | |
| test.rs:69:40:72:1 | BlockExpr | test.rs:69:1:72:1 | exit test_nested_function (normal) | |
| test.rs:70:5:70:28 | LetStmt | test.rs:70:19:70:27 | ClosureExpr | |
| test.rs:70:9:70:15 | IdentPat | test.rs:71:5:71:11 | PathExpr | match, no-match |
| test.rs:70:19:70:27 | ClosureExpr | test.rs:70:9:70:15 | IdentPat | |
| test.rs:70:19:70:27 | enter ClosureExpr | test.rs:70:23:70:23 | PathExpr | |
| test.rs:70:19:70:27 | exit ClosureExpr (normal) | test.rs:70:19:70:27 | exit ClosureExpr | |
| test.rs:70:23:70:23 | PathExpr | test.rs:70:27:70:27 | 1 | |
| test.rs:70:23:70:27 | ... + ... | test.rs:70:19:70:27 | exit ClosureExpr (normal) | |
| test.rs:70:27:70:27 | 1 | test.rs:70:23:70:27 | ... + ... | |
| test.rs:71:5:71:11 | PathExpr | test.rs:71:13:71:19 | PathExpr | |
| test.rs:71:5:71:23 | CallExpr | test.rs:69:40:72:1 | BlockExpr | |
| test.rs:71:13:71:19 | PathExpr | test.rs:71:21:71:21 | PathExpr | |
| test.rs:71:13:71:22 | CallExpr | test.rs:71:5:71:23 | CallExpr | |
| test.rs:71:21:71:21 | PathExpr | test.rs:71:13:71:22 | CallExpr | |
| test.rs:76:5:82:5 | enter test_if_else | test.rs:77:12:77:12 | PathExpr | |
| test.rs:76:5:82:5 | exit test_if_else (normal) | test.rs:76:5:82:5 | exit test_if_else | |
| test.rs:76:36:82:5 | BlockExpr | test.rs:76:5:82:5 | exit test_if_else (normal) | |
| test.rs:77:9:81:9 | IfExpr | test.rs:76:36:82:5 | BlockExpr | |
| test.rs:77:12:77:12 | PathExpr | test.rs:77:17:77:17 | 0 | |
| test.rs:77:12:77:17 | ... <= ... | test.rs:78:13:78:13 | 0 | true |
| test.rs:77:12:77:17 | ... <= ... | test.rs:80:13:80:13 | PathExpr | false |
| test.rs:77:17:77:17 | 0 | test.rs:77:12:77:17 | ... <= ... | |
| test.rs:77:19:79:9 | BlockExpr | test.rs:77:9:81:9 | IfExpr | |
| test.rs:78:13:78:13 | 0 | test.rs:77:19:79:9 | BlockExpr | |
| test.rs:79:16:81:9 | BlockExpr | test.rs:77:9:81:9 | IfExpr | |
| test.rs:80:13:80:13 | PathExpr | test.rs:80:17:80:17 | 1 | |
| test.rs:80:13:80:17 | ... - ... | test.rs:79:16:81:9 | BlockExpr | |
| test.rs:80:17:80:17 | 1 | test.rs:80:13:80:17 | ... - ... | |
| test.rs:84:5:90:5 | enter test_if_let_else | test.rs:85:12:85:26 | LetExpr | |
| test.rs:84:5:90:5 | exit test_if_let_else (normal) | test.rs:84:5:90:5 | exit test_if_let_else | |
| test.rs:84:48:90:5 | BlockExpr | test.rs:84:5:90:5 | exit test_if_let_else (normal) | |
| test.rs:85:9:89:9 | IfExpr | test.rs:84:48:90:5 | BlockExpr | |
| test.rs:85:12:85:26 | LetExpr | test.rs:85:16:85:22 | TupleStructPat | |
| test.rs:85:16:85:22 | TupleStructPat | test.rs:86:13:86:13 | PathExpr | match |
| test.rs:85:16:85:22 | TupleStructPat | test.rs:88:13:88:13 | 0 | no-match |
| test.rs:85:28:87:9 | BlockExpr | test.rs:85:9:89:9 | IfExpr | |
| test.rs:86:13:86:13 | PathExpr | test.rs:85:28:87:9 | BlockExpr | |
| test.rs:87:16:89:9 | BlockExpr | test.rs:85:9:89:9 | IfExpr | |
| test.rs:88:13:88:13 | 0 | test.rs:87:16:89:9 | BlockExpr | |
| test.rs:92:5:97:5 | enter test_if_let | test.rs:93:9:95:9 | ExprStmt | |
| test.rs:92:5:97:5 | exit test_if_let (normal) | test.rs:92:5:97:5 | exit test_if_let | |
| test.rs:92:43:97:5 | BlockExpr | test.rs:92:5:97:5 | exit test_if_let (normal) | |
| test.rs:93:9:95:9 | ExprStmt | test.rs:93:12:93:26 | LetExpr | |
| test.rs:93:9:95:9 | IfExpr | test.rs:96:9:96:9 | 0 | |
| test.rs:93:12:93:26 | LetExpr | test.rs:93:16:93:22 | TupleStructPat | |
| test.rs:93:16:93:22 | TupleStructPat | test.rs:93:9:95:9 | IfExpr | no-match |
| test.rs:93:16:93:22 | TupleStructPat | test.rs:94:13:94:13 | PathExpr | match |
| test.rs:93:28:95:9 | BlockExpr | test.rs:93:9:95:9 | IfExpr | |
| test.rs:94:13:94:13 | PathExpr | test.rs:93:28:95:9 | BlockExpr | |
| test.rs:96:9:96:9 | 0 | test.rs:92:43:97:5 | BlockExpr | |
| test.rs:99:5:105:5 | enter test_nested_if | test.rs:100:16:100:16 | PathExpr | |
| test.rs:99:5:105:5 | exit test_nested_if (normal) | test.rs:99:5:105:5 | exit test_nested_if | |
| test.rs:99:38:105:5 | BlockExpr | test.rs:99:5:105:5 | exit test_nested_if (normal) | |
| test.rs:100:9:104:9 | IfExpr | test.rs:99:38:105:5 | BlockExpr | |
| test.rs:100:12:100:49 | ParenExpr | test.rs:101:13:101:13 | 1 | true |
| test.rs:100:12:100:49 | ParenExpr | test.rs:103:13:103:13 | 0 | false |
| test.rs:100:13:100:48 | IfExpr | test.rs:100:12:100:49 | ParenExpr | |
| test.rs:100:16:100:16 | PathExpr | test.rs:100:20:100:20 | 0 | |
| test.rs:100:16:100:20 | ... < ... | test.rs:100:24:100:24 | PathExpr | true |
| test.rs:100:16:100:20 | ... < ... | test.rs:100:41:100:41 | PathExpr | false |
| test.rs:100:20:100:20 | 0 | test.rs:100:16:100:20 | ... < ... | |
| test.rs:100:22:100:32 | BlockExpr | test.rs:100:13:100:48 | IfExpr | |
| test.rs:100:24:100:24 | PathExpr | test.rs:100:29:100:30 | 10 | |
| test.rs:100:24:100:30 | ... < ... | test.rs:100:22:100:32 | BlockExpr | |
| test.rs:100:28:100:30 | - ... | test.rs:100:24:100:30 | ... < ... | |
| test.rs:100:29:100:30 | 10 | test.rs:100:28:100:30 | - ... | |
| test.rs:100:39:100:48 | BlockExpr | test.rs:100:13:100:48 | IfExpr | |
| test.rs:100:41:100:41 | PathExpr | test.rs:100:45:100:46 | 10 | |
| test.rs:100:41:100:46 | ... > ... | test.rs:100:39:100:48 | BlockExpr | |
| test.rs:100:45:100:46 | 10 | test.rs:100:41:100:46 | ... > ... | |
| test.rs:100:51:102:9 | BlockExpr | test.rs:100:9:104:9 | IfExpr | |
| test.rs:101:13:101:13 | 1 | test.rs:100:51:102:9 | BlockExpr | |
| test.rs:102:16:104:9 | BlockExpr | test.rs:100:9:104:9 | IfExpr | |
| test.rs:103:13:103:13 | 0 | test.rs:102:16:104:9 | BlockExpr | |
| test.rs:107:5:116:5 | enter test_nested_if_match | test.rs:108:19:108:19 | PathExpr | |
| test.rs:107:5:116:5 | exit test_nested_if_match (normal) | test.rs:107:5:116:5 | exit test_nested_if_match | |
| test.rs:107:44:116:5 | BlockExpr | test.rs:107:5:116:5 | exit test_nested_if_match (normal) | |
| test.rs:108:9:115:9 | IfExpr | test.rs:107:44:116:5 | BlockExpr | |
| test.rs:108:12:111:10 | ParenExpr | test.rs:112:13:112:13 | 1 | true |
| test.rs:108:12:111:10 | ParenExpr | test.rs:114:13:114:13 | 0 | false |
| test.rs:108:13:111:9 | MatchExpr | test.rs:108:12:111:10 | ParenExpr | |
| test.rs:108:19:108:19 | PathExpr | test.rs:109:13:109:13 | LiteralPat | |
| test.rs:109:13:109:13 | LiteralPat | test.rs:109:18:109:21 | true | match |
| test.rs:109:13:109:13 | LiteralPat | test.rs:110:13:110:13 | WildcardPat | no-match |
| test.rs:109:18:109:21 | true | test.rs:108:13:111:9 | MatchExpr | |
| test.rs:110:13:110:13 | WildcardPat | test.rs:110:18:110:22 | false | match |
| test.rs:110:18:110:22 | false | test.rs:108:13:111:9 | MatchExpr | |
| test.rs:111:12:113:9 | BlockExpr | test.rs:108:9:115:9 | IfExpr | |
| test.rs:112:13:112:13 | 1 | test.rs:111:12:113:9 | BlockExpr | |
| test.rs:113:16:115:9 | BlockExpr | test.rs:108:9:115:9 | IfExpr | |
| test.rs:114:13:114:13 | 0 | test.rs:113:16:115:9 | BlockExpr | |
| test.rs:118:5:127:5 | enter test_nested_if_block | test.rs:120:13:120:15 | ExprStmt | |
| test.rs:118:5:127:5 | exit test_nested_if_block (normal) | test.rs:118:5:127:5 | exit test_nested_if_block | |
| test.rs:118:44:127:5 | BlockExpr | test.rs:118:5:127:5 | exit test_nested_if_block (normal) | |
| test.rs:119:9:126:9 | IfExpr | test.rs:118:44:127:5 | BlockExpr | |
| test.rs:119:12:122:9 | BlockExpr | test.rs:123:13:123:13 | 1 | true |
| test.rs:119:12:122:9 | BlockExpr | test.rs:125:13:125:13 | 0 | false |
| test.rs:120:13:120:14 | TupleExpr | test.rs:121:13:121:13 | PathExpr | |
| test.rs:120:13:120:15 | ExprStmt | test.rs:120:13:120:14 | TupleExpr | |
| test.rs:121:13:121:13 | PathExpr | test.rs:121:17:121:17 | 0 | |
| test.rs:121:13:121:17 | ... > ... | test.rs:119:12:122:9 | BlockExpr | false, true |
| test.rs:121:17:121:17 | 0 | test.rs:121:13:121:17 | ... > ... | |
| test.rs:122:11:124:9 | BlockExpr | test.rs:119:9:126:9 | IfExpr | |
| test.rs:123:13:123:13 | 1 | test.rs:122:11:124:9 | BlockExpr | |
| test.rs:124:16:126:9 | BlockExpr | test.rs:119:9:126:9 | IfExpr | |
| test.rs:125:13:125:13 | 0 | test.rs:124:16:126:9 | BlockExpr | |
| test.rs:129:5:136:5 | enter test_if_assignment | test.rs:130:9:130:26 | LetStmt | |
| test.rs:129:5:136:5 | exit test_if_assignment (normal) | test.rs:129:5:136:5 | exit test_if_assignment | |
| test.rs:129:42:136:5 | BlockExpr | test.rs:129:5:136:5 | exit test_if_assignment (normal) | |
| test.rs:130:9:130:26 | LetStmt | test.rs:130:21:130:25 | false | |
| test.rs:130:13:130:17 | IdentPat | test.rs:131:12:131:12 | PathExpr | match, no-match |
| test.rs:130:21:130:25 | false | test.rs:130:13:130:17 | IdentPat | |
| test.rs:131:9:135:9 | IfExpr | test.rs:129:42:136:5 | BlockExpr | |
| test.rs:131:12:131:12 | PathExpr | test.rs:131:16:131:19 | true | |
| test.rs:131:12:131:19 | ... = ... | test.rs:132:13:132:13 | 1 | true |
| test.rs:131:12:131:19 | ... = ... | test.rs:134:13:134:13 | 0 | false |
| test.rs:131:16:131:19 | true | test.rs:131:12:131:19 | ... = ... | |
| test.rs:131:21:133:9 | BlockExpr | test.rs:131:9:135:9 | IfExpr | |
| test.rs:132:13:132:13 | 1 | test.rs:131:21:133:9 | BlockExpr | |
| test.rs:133:16:135:9 | BlockExpr | test.rs:131:9:135:9 | IfExpr | |
| test.rs:134:13:134:13 | 0 | test.rs:133:16:135:9 | BlockExpr | |
| test.rs:138:5:149:5 | enter test_if_loop1 | test.rs:140:13:142:14 | ExprStmt | |
| test.rs:138:5:149:5 | exit test_if_loop1 (normal) | test.rs:138:5:149:5 | exit test_if_loop1 | |
| test.rs:138:37:149:5 | BlockExpr | test.rs:138:5:149:5 | exit test_if_loop1 (normal) | |
| test.rs:139:9:148:9 | IfExpr | test.rs:138:37:149:5 | BlockExpr | |
| test.rs:139:12:144:10 | ParenExpr | test.rs:145:13:145:13 | 1 | true |
| test.rs:139:12:144:10 | ParenExpr | test.rs:147:13:147:13 | 0 | false |
| test.rs:139:13:144:9 | LoopExpr | test.rs:139:12:144:10 | ParenExpr | |
| test.rs:139:18:144:9 | BlockExpr | test.rs:140:13:142:14 | ExprStmt | |
| test.rs:140:13:142:13 | IfExpr | test.rs:143:13:143:19 | ExprStmt | |
| test.rs:140:13:142:14 | ExprStmt | test.rs:140:16:140:16 | PathExpr | |
| test.rs:140:16:140:16 | PathExpr | test.rs:140:20:140:20 | 0 | |
| test.rs:140:16:140:20 | ... > ... | test.rs:140:13:142:13 | IfExpr | false |
| test.rs:140:16:140:20 | ... > ... | test.rs:141:17:141:29 | ExprStmt | true |
| test.rs:140:20:140:20 | 0 | test.rs:140:16:140:20 | ... > ... | |
| test.rs:141:17:141:28 | BreakExpr | test.rs:139:13:144:9 | LoopExpr | break |
| test.rs:141:17:141:29 | ExprStmt | test.rs:141:23:141:23 | PathExpr | |
| test.rs:141:23:141:23 | PathExpr | test.rs:141:27:141:28 | 10 | |
| test.rs:141:23:141:28 | ... > ... | test.rs:141:17:141:28 | BreakExpr | |
| test.rs:141:27:141:28 | 10 | test.rs:141:23:141:28 | ... > ... | |
| test.rs:143:13:143:13 | PathExpr | test.rs:143:17:143:18 | 10 | |
| test.rs:143:13:143:18 | ... < ... | test.rs:139:18:144:9 | BlockExpr | |
| test.rs:143:13:143:19 | ExprStmt | test.rs:143:13:143:13 | PathExpr | |
| test.rs:143:17:143:18 | 10 | test.rs:143:13:143:18 | ... < ... | |
| test.rs:144:12:146:9 | BlockExpr | test.rs:139:9:148:9 | IfExpr | |
| test.rs:145:13:145:13 | 1 | test.rs:144:12:146:9 | BlockExpr | |
| test.rs:146:16:148:9 | BlockExpr | test.rs:139:9:148:9 | IfExpr | |
| test.rs:147:13:147:13 | 0 | test.rs:146:16:148:9 | BlockExpr | |
| test.rs:151:5:162:5 | enter test_if_loop2 | test.rs:153:13:155:14 | ExprStmt | |
| test.rs:151:5:162:5 | exit test_if_loop2 (normal) | test.rs:151:5:162:5 | exit test_if_loop2 | |
| test.rs:151:37:162:5 | BlockExpr | test.rs:151:5:162:5 | exit test_if_loop2 (normal) | |
| test.rs:152:9:161:9 | IfExpr | test.rs:151:37:162:5 | BlockExpr | |
| test.rs:152:12:157:10 | ParenExpr | test.rs:158:13:158:13 | 1 | true |
| test.rs:152:12:157:10 | ParenExpr | test.rs:160:13:160:13 | 0 | false |
| test.rs:152:13:157:9 | LoopExpr | test.rs:152:12:157:10 | ParenExpr | |
| test.rs:152:26:157:9 | BlockExpr | test.rs:153:13:155:14 | ExprStmt | |
| test.rs:153:13:155:13 | IfExpr | test.rs:156:13:156:19 | ExprStmt | |
| test.rs:153:13:155:14 | ExprStmt | test.rs:153:16:153:16 | PathExpr | |
| test.rs:153:16:153:16 | PathExpr | test.rs:153:20:153:20 | 0 | |
| test.rs:153:16:153:20 | ... > ... | test.rs:153:13:155:13 | IfExpr | false |
| test.rs:153:16:153:20 | ... > ... | test.rs:154:17:154:36 | ExprStmt | true |
| test.rs:153:20:153:20 | 0 | test.rs:153:16:153:20 | ... > ... | |
| test.rs:154:17:154:35 | BreakExpr | test.rs:152:13:157:9 | LoopExpr | break('label) |
| test.rs:154:17:154:36 | ExprStmt | test.rs:154:30:154:30 | PathExpr | |
| test.rs:154:30:154:30 | PathExpr | test.rs:154:34:154:35 | 10 | |
| test.rs:154:30:154:35 | ... > ... | test.rs:154:17:154:35 | BreakExpr | |
| test.rs:154:34:154:35 | 10 | test.rs:154:30:154:35 | ... > ... | |
| test.rs:156:13:156:13 | PathExpr | test.rs:156:17:156:18 | 10 | |
| test.rs:156:13:156:18 | ... < ... | test.rs:152:26:157:9 | BlockExpr | |
| test.rs:156:13:156:19 | ExprStmt | test.rs:156:13:156:13 | PathExpr | |
| test.rs:156:17:156:18 | 10 | test.rs:156:13:156:18 | ... < ... | |
| test.rs:157:12:159:9 | BlockExpr | test.rs:152:9:161:9 | IfExpr | |
| test.rs:158:13:158:13 | 1 | test.rs:157:12:159:9 | BlockExpr | |
| test.rs:159:16:161:9 | BlockExpr | test.rs:152:9:161:9 | IfExpr | |
| test.rs:160:13:160:13 | 0 | test.rs:159:16:161:9 | BlockExpr | |
| test.rs:164:5:172:5 | enter test_labelled_block | test.rs:166:13:166:31 | ExprStmt | |
| test.rs:164:5:172:5 | exit test_labelled_block (normal) | test.rs:164:5:172:5 | exit test_labelled_block | |
| test.rs:166:13:166:30 | BreakExpr | test.rs:164:5:172:5 | exit test_labelled_block (normal) | break('block) |
| test.rs:166:13:166:31 | ExprStmt | test.rs:166:26:166:26 | PathExpr | |
| test.rs:166:26:166:26 | PathExpr | test.rs:166:30:166:30 | 0 | |
| test.rs:166:26:166:30 | ... > ... | test.rs:166:13:166:30 | BreakExpr | |
| test.rs:166:30:166:30 | 0 | test.rs:166:26:166:30 | ... > ... | |
| test.rs:177:5:180:5 | enter test_and_operator | test.rs:178:9:178:28 | LetStmt | |
| test.rs:177:5:180:5 | exit test_and_operator (normal) | test.rs:177:5:180:5 | exit test_and_operator | |
| test.rs:177:61:180:5 | BlockExpr | test.rs:177:5:180:5 | exit test_and_operator (normal) | |
| test.rs:178:9:178:28 | LetStmt | test.rs:178:17:178:27 | ... && ... | |
| test.rs:178:13:178:13 | IdentPat | test.rs:179:9:179:9 | PathExpr | match, no-match |
| test.rs:178:17:178:17 | PathExpr | test.rs:178:13:178:13 | IdentPat | false |
| test.rs:178:17:178:17 | PathExpr | test.rs:178:22:178:22 | PathExpr | true |
| test.rs:178:17:178:22 | ... && ... | test.rs:178:17:178:17 | PathExpr | |
| test.rs:178:17:178:27 | ... && ... | test.rs:178:17:178:22 | ... && ... | |
| test.rs:178:22:178:22 | PathExpr | test.rs:178:13:178:13 | IdentPat | false |
| test.rs:178:22:178:22 | PathExpr | test.rs:178:27:178:27 | PathExpr | true |
| test.rs:178:27:178:27 | PathExpr | test.rs:178:13:178:13 | IdentPat | |
| test.rs:179:9:179:9 | PathExpr | test.rs:177:61:180:5 | BlockExpr | |
| test.rs:182:5:185:5 | enter test_or_operator | test.rs:183:9:183:28 | LetStmt | |
| test.rs:182:5:185:5 | exit test_or_operator (normal) | test.rs:182:5:185:5 | exit test_or_operator | |
| test.rs:182:60:185:5 | BlockExpr | test.rs:182:5:185:5 | exit test_or_operator (normal) | |
| test.rs:183:9:183:28 | LetStmt | test.rs:183:17:183:27 | ... \|\| ... | |
| test.rs:183:13:183:13 | IdentPat | test.rs:184:9:184:9 | PathExpr | match, no-match |
| test.rs:183:17:183:17 | PathExpr | test.rs:183:13:183:13 | IdentPat | true |
| test.rs:183:17:183:17 | PathExpr | test.rs:183:22:183:22 | PathExpr | false |
| test.rs:183:17:183:22 | ... \|\| ... | test.rs:183:17:183:17 | PathExpr | |
| test.rs:183:17:183:27 | ... \|\| ... | test.rs:183:17:183:22 | ... \|\| ... | |
| test.rs:183:22:183:22 | PathExpr | test.rs:183:13:183:13 | IdentPat | true |
| test.rs:183:22:183:22 | PathExpr | test.rs:183:27:183:27 | PathExpr | false |
| test.rs:183:27:183:27 | PathExpr | test.rs:183:13:183:13 | IdentPat | |
| test.rs:184:9:184:9 | PathExpr | test.rs:182:60:185:5 | BlockExpr | |
| test.rs:187:5:190:5 | enter test_or_operator_2 | test.rs:188:9:188:36 | LetStmt | |
| test.rs:187:5:190:5 | exit test_or_operator_2 (normal) | test.rs:187:5:190:5 | exit test_or_operator_2 | |
| test.rs:187:61:190:5 | BlockExpr | test.rs:187:5:190:5 | exit test_or_operator_2 (normal) | |
| test.rs:188:9:188:36 | LetStmt | test.rs:188:17:188:35 | ... \|\| ... | |
| test.rs:188:13:188:13 | IdentPat | test.rs:189:9:189:9 | PathExpr | match, no-match |
| test.rs:188:17:188:17 | PathExpr | test.rs:188:13:188:13 | IdentPat | true |
| test.rs:188:17:188:17 | PathExpr | test.rs:188:23:188:23 | PathExpr | false |
| test.rs:188:17:188:30 | ... \|\| ... | test.rs:188:17:188:17 | PathExpr | |
| test.rs:188:17:188:35 | ... \|\| ... | test.rs:188:17:188:30 | ... \|\| ... | |
| test.rs:188:22:188:30 | ParenExpr | test.rs:188:13:188:13 | IdentPat | true |
| test.rs:188:22:188:30 | ParenExpr | test.rs:188:35:188:35 | PathExpr | false |
| test.rs:188:23:188:23 | PathExpr | test.rs:188:28:188:29 | 28 | |
| test.rs:188:23:188:29 | ... == ... | test.rs:188:22:188:30 | ParenExpr | |
| test.rs:188:28:188:29 | 28 | test.rs:188:23:188:29 | ... == ... | |
| test.rs:188:35:188:35 | PathExpr | test.rs:188:13:188:13 | IdentPat | |
| test.rs:189:9:189:9 | PathExpr | test.rs:187:61:190:5 | BlockExpr | |
| test.rs:192:5:195:5 | enter test_not_operator | test.rs:193:9:193:19 | LetStmt | |
| test.rs:192:5:195:5 | exit test_not_operator (normal) | test.rs:192:5:195:5 | exit test_not_operator | |
| test.rs:192:43:195:5 | BlockExpr | test.rs:192:5:195:5 | exit test_not_operator (normal) | |
| test.rs:193:9:193:19 | LetStmt | test.rs:193:18:193:18 | PathExpr | |
| test.rs:193:13:193:13 | IdentPat | test.rs:194:9:194:9 | PathExpr | match, no-match |
| test.rs:193:17:193:18 | ! ... | test.rs:193:13:193:13 | IdentPat | |
| test.rs:193:18:193:18 | PathExpr | test.rs:193:17:193:18 | ! ... | |
| test.rs:194:9:194:9 | PathExpr | test.rs:192:43:195:5 | BlockExpr | |
| test.rs:197:5:203:5 | enter test_if_and_operator | test.rs:198:12:198:22 | ... && ... | |
| test.rs:197:5:203:5 | exit test_if_and_operator (normal) | test.rs:197:5:203:5 | exit test_if_and_operator | |
| test.rs:197:63:203:5 | BlockExpr | test.rs:197:5:203:5 | exit test_if_and_operator (normal) | |
| test.rs:198:9:202:9 | IfExpr | test.rs:197:63:203:5 | BlockExpr | |
| test.rs:198:12:198:12 | PathExpr | test.rs:198:17:198:17 | PathExpr | true |
| test.rs:198:12:198:12 | PathExpr | test.rs:201:13:201:17 | false | false |
| test.rs:198:12:198:17 | ... && ... | test.rs:198:12:198:12 | PathExpr | |
| test.rs:198:12:198:22 | ... && ... | test.rs:198:12:198:17 | ... && ... | |
| test.rs:198:17:198:17 | PathExpr | test.rs:198:22:198:22 | PathExpr | true |
| test.rs:198:17:198:17 | PathExpr | test.rs:201:13:201:17 | false | false |
| test.rs:198:22:198:22 | PathExpr | test.rs:199:13:199:16 | true | true |
| test.rs:198:22:198:22 | PathExpr | test.rs:201:13:201:17 | false | false |
| test.rs:198:24:200:9 | BlockExpr | test.rs:198:9:202:9 | IfExpr | |
| test.rs:199:13:199:16 | true | test.rs:198:24:200:9 | BlockExpr | |
| test.rs:200:16:202:9 | BlockExpr | test.rs:198:9:202:9 | IfExpr | |
| test.rs:201:13:201:17 | false | test.rs:200:16:202:9 | BlockExpr | |
| test.rs:205:5:211:5 | enter test_if_or_operator | test.rs:206:12:206:22 | ... \|\| ... | |
| test.rs:205:5:211:5 | exit test_if_or_operator (normal) | test.rs:205:5:211:5 | exit test_if_or_operator | |
| test.rs:205:62:211:5 | BlockExpr | test.rs:205:5:211:5 | exit test_if_or_operator (normal) | |
| test.rs:206:9:210:9 | IfExpr | test.rs:205:62:211:5 | BlockExpr | |
| test.rs:206:12:206:12 | PathExpr | test.rs:206:17:206:17 | PathExpr | false |
| test.rs:206:12:206:12 | PathExpr | test.rs:207:13:207:16 | true | true |
| test.rs:206:12:206:17 | ... \|\| ... | test.rs:206:12:206:12 | PathExpr | |
| test.rs:206:12:206:22 | ... \|\| ... | test.rs:206:12:206:17 | ... \|\| ... | |
| test.rs:206:17:206:17 | PathExpr | test.rs:206:22:206:22 | PathExpr | false |
| test.rs:206:17:206:17 | PathExpr | test.rs:207:13:207:16 | true | true |
| test.rs:206:22:206:22 | PathExpr | test.rs:207:13:207:16 | true | true |
| test.rs:206:22:206:22 | PathExpr | test.rs:209:13:209:17 | false | false |
| test.rs:206:24:208:9 | BlockExpr | test.rs:206:9:210:9 | IfExpr | |
| test.rs:207:13:207:16 | true | test.rs:206:24:208:9 | BlockExpr | |
| test.rs:208:16:210:9 | BlockExpr | test.rs:206:9:210:9 | IfExpr | |
| test.rs:209:13:209:17 | false | test.rs:208:16:210:9 | BlockExpr | |
| test.rs:213:5:219:5 | enter test_if_not_operator | test.rs:214:13:214:13 | PathExpr | |
| test.rs:213:5:219:5 | exit test_if_not_operator (normal) | test.rs:213:5:219:5 | exit test_if_not_operator | |
| test.rs:213:46:219:5 | BlockExpr | test.rs:213:5:219:5 | exit test_if_not_operator (normal) | |
| test.rs:214:9:218:9 | IfExpr | test.rs:213:46:219:5 | BlockExpr | |
| test.rs:214:12:214:13 | ! ... | test.rs:215:13:215:16 | true | true |
| test.rs:214:12:214:13 | ! ... | test.rs:217:13:217:17 | false | false |
| test.rs:214:13:214:13 | PathExpr | test.rs:214:12:214:13 | ! ... | false, true |
| test.rs:214:15:216:9 | BlockExpr | test.rs:214:9:218:9 | IfExpr | |
| test.rs:215:13:215:16 | true | test.rs:214:15:216:9 | BlockExpr | |
| test.rs:216:16:218:9 | BlockExpr | test.rs:214:9:218:9 | IfExpr | |
| test.rs:217:13:217:17 | false | test.rs:216:16:218:9 | BlockExpr | |
| test.rs:222:1:228:1 | enter test_match | test.rs:223:11:223:21 | PathExpr | |
| test.rs:222:1:228:1 | exit test_match (normal) | test.rs:222:1:228:1 | exit test_match | |
| test.rs:222:48:228:1 | BlockExpr | test.rs:222:1:228:1 | exit test_match (normal) | |
| test.rs:223:5:227:5 | MatchExpr | test.rs:222:48:228:1 | BlockExpr | |
| test.rs:223:11:223:21 | PathExpr | test.rs:224:9:224:23 | TupleStructPat | |
| test.rs:224:9:224:23 | TupleStructPat | test.rs:224:28:224:28 | PathExpr | match |
| test.rs:224:9:224:23 | TupleStructPat | test.rs:225:9:225:23 | TupleStructPat | no-match |
| test.rs:224:28:224:28 | PathExpr | test.rs:224:32:224:33 | 10 | |
| test.rs:224:32:224:33 | 10 | test.rs:224:28:224:33 | ... < ... | |
| test.rs:225:9:225:23 | TupleStructPat | test.rs:225:28:225:28 | PathExpr | match |
| test.rs:225:9:225:23 | TupleStructPat | test.rs:226:9:226:20 | PathPat | no-match |
| test.rs:225:28:225:28 | PathExpr | test.rs:223:5:227:5 | MatchExpr | |
| test.rs:226:9:226:20 | PathPat | test.rs:226:25:226:25 | 5 | match |
| test.rs:226:25:226:25 | 5 | test.rs:223:5:227:5 | MatchExpr | |
| test.rs:231:5:236:5 | enter test_infinite_loop | test.rs:232:9:234:9 | ExprStmt | |
| test.rs:232:9:234:9 | ExprStmt | test.rs:233:13:233:13 | 1 | |
| test.rs:232:14:234:9 | BlockExpr | test.rs:233:13:233:13 | 1 | |
| test.rs:233:13:233:13 | 1 | test.rs:232:14:234:9 | BlockExpr | |
| test.rs:238:5:241:5 | enter test_let_match | test.rs:239:9:239:49 | LetStmt | |
| test.rs:238:5:241:5 | exit test_let_match (normal) | test.rs:238:5:241:5 | exit test_let_match | |
| test.rs:238:39:241:5 | BlockExpr | test.rs:238:5:241:5 | exit test_let_match (normal) | |
| test.rs:239:9:239:49 | LetStmt | test.rs:239:23:239:23 | PathExpr | |
| test.rs:239:13:239:19 | TupleStructPat | test.rs:239:32:239:46 | "Expected some" | no-match |
| test.rs:239:13:239:19 | TupleStructPat | test.rs:240:9:240:9 | PathExpr | match |
| test.rs:239:23:239:23 | PathExpr | test.rs:239:13:239:19 | TupleStructPat | |
| test.rs:239:32:239:46 | "Expected some" | test.rs:239:30:239:48 | BlockExpr | |
| test.rs:240:9:240:9 | PathExpr | test.rs:238:39:241:5 | BlockExpr | |
| test.rs:244:1:249:1 | enter dead_code | test.rs:245:5:247:5 | ExprStmt | |
| test.rs:244:1:249:1 | exit dead_code (normal) | test.rs:244:1:249:1 | exit dead_code | |
| test.rs:245:5:247:5 | ExprStmt | test.rs:245:9:245:12 | true | |
| test.rs:245:8:245:13 | ParenExpr | test.rs:246:9:246:17 | ExprStmt | true |
| test.rs:245:9:245:12 | true | test.rs:245:8:245:13 | ParenExpr | |
| test.rs:246:9:246:16 | ReturnExpr | test.rs:244:1:249:1 | exit dead_code (normal) | return |
| test.rs:246:9:246:17 | ExprStmt | test.rs:246:16:246:16 | 0 | |
| test.rs:246:16:246:16 | 0 | test.rs:246:9:246:16 | ReturnExpr | |
| test.rs:251:1:264:1 | enter labelled_block | test.rs:252:5:263:6 | LetStmt | |
| test.rs:251:1:264:1 | exit labelled_block (normal) | test.rs:251:1:264:1 | exit labelled_block | |
| test.rs:251:28:264:1 | BlockExpr | test.rs:251:1:264:1 | exit labelled_block (normal) | |
| test.rs:252:5:263:6 | LetStmt | test.rs:253:9:253:19 | ExprStmt | |
| test.rs:252:9:252:14 | IdentPat | test.rs:251:28:264:1 | BlockExpr | match, no-match |
| test.rs:252:18:263:5 | BlockExpr | test.rs:252:9:252:14 | IdentPat | |
| test.rs:253:9:253:16 | PathExpr | test.rs:253:9:253:18 | CallExpr | |
| test.rs:253:9:253:18 | CallExpr | test.rs:254:9:256:9 | ExprStmt | |
| test.rs:253:9:253:19 | ExprStmt | test.rs:253:9:253:16 | PathExpr | |
| test.rs:254:9:256:9 | ExprStmt | test.rs:254:12:254:28 | PathExpr | |
| test.rs:254:9:256:9 | IfExpr | test.rs:257:9:257:24 | ExprStmt | |
| test.rs:254:12:254:28 | PathExpr | test.rs:254:12:254:30 | CallExpr | |
| test.rs:254:12:254:30 | CallExpr | test.rs:254:9:256:9 | IfExpr | false |
| test.rs:254:12:254:30 | CallExpr | test.rs:255:13:255:27 | ExprStmt | true |
| test.rs:255:13:255:26 | BreakExpr | test.rs:251:1:264:1 | exit labelled_block (normal) | break('block) |
| test.rs:255:13:255:27 | ExprStmt | test.rs:255:26:255:26 | 1 | |
| test.rs:255:26:255:26 | 1 | test.rs:255:13:255:26 | BreakExpr | |
| test.rs:257:9:257:21 | PathExpr | test.rs:257:9:257:23 | CallExpr | |
| test.rs:257:9:257:23 | CallExpr | test.rs:258:9:260:9 | ExprStmt | |
| test.rs:257:9:257:24 | ExprStmt | test.rs:257:9:257:21 | PathExpr | |
| test.rs:258:9:260:9 | ExprStmt | test.rs:258:12:258:28 | PathExpr | |
| test.rs:258:9:260:9 | IfExpr | test.rs:261:9:261:24 | ExprStmt | |
| test.rs:258:12:258:28 | PathExpr | test.rs:258:12:258:30 | CallExpr | |
| test.rs:258:12:258:30 | CallExpr | test.rs:258:9:260:9 | IfExpr | false |
| test.rs:258:12:258:30 | CallExpr | test.rs:259:13:259:27 | ExprStmt | true |
| test.rs:259:13:259:26 | BreakExpr | test.rs:251:1:264:1 | exit labelled_block (normal) | break('block) |
| test.rs:259:13:259:27 | ExprStmt | test.rs:259:26:259:26 | 2 | |
| test.rs:259:26:259:26 | 2 | test.rs:259:13:259:26 | BreakExpr | |
| test.rs:261:9:261:21 | PathExpr | test.rs:261:9:261:23 | CallExpr | |
| test.rs:261:9:261:23 | CallExpr | test.rs:262:9:262:9 | 3 | |
| test.rs:261:9:261:24 | ExprStmt | test.rs:261:9:261:21 | PathExpr | |
| test.rs:262:9:262:9 | 3 | test.rs:252:18:263:5 | BlockExpr | |

View File

@@ -50,6 +50,20 @@ mod loop_expression {
}
}
}
fn test_while() {
let mut b = true;
while b {
1;
b = false;
}
}
fn test_for() {
for i in 0..10 {
1;
}
}
}
fn test_nested_function(n: i64) -> i64 {
@@ -100,6 +114,62 @@ mod if_expression {
0
}
}
fn test_nested_if_block(a: i64) -> i64 {
if {
();
a > 0
} {
1
} else {
0
}
}
fn test_if_assignment(a: i64) -> i64 {
let mut x = false;
if x = true {
1
} else {
0
}
}
fn test_if_loop1(a: i64) -> i64 {
if (loop {
if a > 0 {
break a > 10;
};
a < 10;
}) {
1
} else {
0
}
}
fn test_if_loop2(a: i64) -> i64 {
if ('label: loop {
if a > 0 {
break 'label a > 10;
};
a < 10;
}) {
1
} else {
0
}
}
fn test_labelled_block(a: i64) -> i64 {
if ('block: {
break 'block a > 0;
}) {
1
} else {
0
}
}
}
mod logical_operators {
@@ -118,6 +188,35 @@ mod logical_operators {
let d = a || (b == 28) || c;
d
}
fn test_not_operator(a: bool) -> bool {
let d = !a;
d
}
fn test_if_and_operator(a: bool, b: i64, c: bool) -> bool {
if a && b && c {
true
} else {
false
}
}
fn test_if_or_operator(a: bool, b: i64, c: bool) -> bool {
if a || b || c {
true
} else {
false
}
}
fn test_if_not_operator(a: bool) -> bool {
if !a {
true
} else {
false
}
}
}
fn test_match(maybe_digit: Option<i64>) -> i64 {
@@ -148,3 +247,18 @@ fn dead_code() -> i64 {
}
return 1;
}
fn labelled_block() -> i64 {
let result = 'block: {
do_thing();
if condition_not_met() {
break 'block 1;
}
do_next_thing();
if condition_not_met() {
break 'block 2;
}
do_last_thing();
3
};
}

View File

@@ -0,0 +1,4 @@
deadEnd
| error.rs:2:5:2:32 | ExprStmt |
| my_macro.rs:16:9:16:19 | ExprStmt |
| my_struct.rs:17:9:17:34 | ExprStmt |

Some files were not shown because too many files have changed in this diff Show More