From 7476aeaabf35a7c74ce64ed53c1d87f2d46672e5 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 12 Feb 2025 11:12:16 +0100 Subject: [PATCH] Rust: Handle `ref` patterns in data flow To do this we: * Let SSA writes target the name inside identifier patterns instead of the pattern itself * Include relevant names in the data flow graph * Add a store step from a identifier patterns with `ref` into the contained name. So we have an edge `ref a` -> `a` that stores in the reference content type. --- rust/ql/.generated.list | 2 +- .../internal/ControlFlowGraphImpl.qll | 2 +- .../internal/generated/CfgNodes.qll | 87 +++- rust/ql/lib/codeql/rust/dataflow/Ssa.qll | 2 +- .../rust/dataflow/internal/DataFlowImpl.qll | 30 ++ .../codeql/rust/dataflow/internal/SsaImpl.qll | 20 +- .../rust/elements/internal/VariableImpl.qll | 52 ++- .../codeql/rust/security/SensitiveData.qll | 2 +- .../src/queries/unusedentities/UnusedValue.ql | 2 +- .../queries/unusedentities/UnusedVariable.qll | 4 +- .../controlflow-unstable/Cfg.expected | 8 + .../dataflow/local/DataFlowStep.expected | 442 +++++++++++++++--- .../dataflow/modeled/inline-flow.expected | 15 +- .../dataflow/pointers/inline-flow.expected | 40 ++ .../library-tests/dataflow/pointers/main.rs | 6 +- .../test/library-tests/variables/Cfg.expected | 181 +++++-- .../test/library-tests/variables/Ssa.expected | 150 +++--- .../test/library-tests/variables/variables.ql | 2 +- .../test/utils-tests/modelgenerator/option.rs | 25 +- rust/schema/annotations.py | 2 +- 20 files changed, 853 insertions(+), 221 deletions(-) diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index 4c4dc6066ac..fa335181cde 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -1,4 +1,4 @@ -lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll 8067b2d0a930b90b430c0b6d47709f924305492317a7baed92011c37176dbc21 25e598a69493a9d21b2f5dc676c73578287f3659601a1fe19f7afd0c4bba2cc0 +lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll 8ae91a389c7f4b080b1031c003c00c84f479438990be69035d8175ea97a47814 7dc9f38a3d04b6be54e39cf4ea0eac1d8f2a293982be76aaf1cd1649bd54aea0 lib/codeql/rust/elements/Abi.qll 4c973d28b6d628f5959d1f1cc793704572fd0acaae9a97dfce82ff9d73f73476 250f68350180af080f904cd34cb2af481c5c688dc93edf7365fd0ae99855e893 lib/codeql/rust/elements/Addressable.qll 13011bfd2e1556694c3d440cc34af8527da4df49ad92b62f2939d3699ff2cea5 ddb25935f7553a1a384b1abe2e4b4fa90ab50b952dadec32fd867afcb054f4be lib/codeql/rust/elements/ArgList.qll 661f5100f5d3ef8351452d9058b663a2a5c720eea8cf11bedd628969741486a2 28e424aac01a90fb58cd6f9f83c7e4cf379eea39e636bc0ba07efc818be71c71 diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll b/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll index 2ba9a6fb308..539120d44ca 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll @@ -662,7 +662,7 @@ module PatternTrees { } override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Edge from succesful subpattern to name + // Edge from successful subpattern to name super.succ(pred, succ, c) and c.(MatchCompletion).succeeded() or // Edge from name to the identifier pattern itself diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll b/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll index 4fe436f7d49..e1f4e16b6fc 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll @@ -1026,6 +1026,8 @@ module MakeCfgNodes Input> { none() or child = this.getExpr() + or + child = this.getName() } } @@ -1058,7 +1060,9 @@ module MakeCfgNodes Input> { /** * Gets the name of this format arguments argument, if it exists. */ - Name getName() { result = node.getName() } + NameCfgNode getName() { + any(ChildMapping mapping).hasCfgChild(node, node.getName(), this, result) + } /** * Holds if `getName()` exists. @@ -1175,6 +1179,8 @@ module MakeCfgNodes Input> { override predicate relevantChild(AstNode child) { none() or + child = this.getName() + or child = this.getPat() } } @@ -1230,7 +1236,9 @@ module MakeCfgNodes Input> { /** * Gets the name of this ident pattern, if it exists. */ - Name getName() { result = node.getName() } + NameCfgNode getName() { + any(ChildMapping mapping).hasCfgChild(node, node.getName(), this, result) + } /** * Holds if `getName()` exists. @@ -2017,6 +2025,35 @@ module MakeCfgNodes Input> { predicate hasReceiver() { exists(this.getReceiver()) } } + final private class ParentName extends ParentAstNode, Name { + override predicate relevantChild(AstNode child) { none() } + } + + /** + * A Name. For example: + * ```rust + * todo!() + * ``` + */ + final class NameCfgNode extends CfgNodeFinal { + private Name node; + + NameCfgNode() { node = this.getAstNode() } + + /** Gets the underlying `Name`. */ + Name getName() { result = node } + + /** + * Gets the text of this name, if it exists. + */ + string getText() { result = node.getText() } + + /** + * Holds if `getText()` exists. + */ + predicate hasText() { exists(this.getText()) } + } + final private class ParentOffsetOfExpr extends ParentAstNode, OffsetOfExpr { override predicate relevantChild(AstNode child) { none() } } @@ -2758,7 +2795,11 @@ module MakeCfgNodes Input> { } final private class ParentSelfParam extends ParentAstNode, SelfParam { - override predicate relevantChild(AstNode child) { none() } + override predicate relevantChild(AstNode child) { + none() + or + child = this.getName() + } } /** @@ -2805,7 +2846,9 @@ module MakeCfgNodes Input> { /** * Gets the name of this self parameter, if it exists. */ - Name getName() { result = node.getName() } + NameCfgNode getName() { + any(ChildMapping mapping).hasCfgChild(node, node.getName(), this, result) + } /** * Holds if `getName()` exists. @@ -3465,6 +3508,18 @@ module MakeCfgNodes Input> { cfgNode ) or + pred = "getName" and + parent = + any(Nodes::FormatArgsArgCfgNode cfgNode, FormatArgsArg astNode | + astNode = cfgNode.getFormatArgsArg() and + child = getDesugared(astNode.getName()) and + i = -1 and + hasCfgNode(child) and + not child = cfgNode.getName().getAstNode() + | + cfgNode + ) + or pred = "getArg" and parent = any(Nodes::FormatArgsExprCfgNode cfgNode, FormatArgsExpr astNode | @@ -3488,6 +3543,18 @@ module MakeCfgNodes Input> { cfgNode ) or + pred = "getName" and + parent = + any(Nodes::IdentPatCfgNode cfgNode, IdentPat astNode | + astNode = cfgNode.getIdentPat() and + child = getDesugared(astNode.getName()) and + i = -1 and + hasCfgNode(child) and + not child = cfgNode.getName().getAstNode() + | + cfgNode + ) + or pred = "getPat" and parent = any(Nodes::IdentPatCfgNode cfgNode, IdentPat astNode | @@ -3799,6 +3866,18 @@ module MakeCfgNodes Input> { cfgNode ) or + pred = "getName" and + parent = + any(Nodes::SelfParamCfgNode cfgNode, SelfParam astNode | + astNode = cfgNode.getSelfParam() and + child = getDesugared(astNode.getName()) and + i = -1 and + hasCfgNode(child) and + not child = cfgNode.getName().getAstNode() + | + cfgNode + ) + or pred = "getPat" and parent = any(Nodes::SlicePatCfgNode cfgNode, SlicePat astNode | diff --git a/rust/ql/lib/codeql/rust/dataflow/Ssa.qll b/rust/ql/lib/codeql/rust/dataflow/Ssa.qll index 0f90932273f..4a439f46b9c 100644 --- a/rust/ql/lib/codeql/rust/dataflow/Ssa.qll +++ b/rust/ql/lib/codeql/rust/dataflow/Ssa.qll @@ -195,7 +195,7 @@ module Ssa { ) or exists(LetStmtCfgNode ls | - ls.getPat() = write and + ls.getPat().(IdentPatCfgNode).getName() = write and ls.getInitializer() = value ) } diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index 78b08e87ccd..0c680103609 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -273,6 +273,15 @@ module Node { override PatCfgNode asPat() { result = n } } + /** A data flow node that corresponds to a name node in the CFG. */ + final class NameNode extends AstCfgFlowNode, TNameNode { + override NameCfgNode n; + + NameNode() { this = TNameNode(n) } + + NameCfgNode asName() { result = n } + } + /** * The value of a parameter at function entry, viewed as a node in a data * flow graph. @@ -584,11 +593,23 @@ module LocalFlow { predicate localFlowStepCommon(Node nodeFrom, Node nodeTo) { nodeFrom.getCfgNode() = getALastEvalNode(nodeTo.getCfgNode()) or + // An edge from the right-hand side of a let statement to the left-hand side. exists(LetStmtCfgNode s | nodeFrom.getCfgNode() = s.getInitializer() and nodeTo.getCfgNode() = s.getPat() ) or + exists(IdentPatCfgNode p | + not p.isRef() and + nodeFrom.getCfgNode() = p and + nodeTo.getCfgNode() = p.getName() + ) + or + exists(SelfParamCfgNode self | + nodeFrom.getCfgNode() = self and + nodeTo.getCfgNode() = self.getName() + ) + or // An edge from a pattern/expression to its corresponding SSA definition. nodeFrom.(Node::AstCfgFlowNode).getCfgNode() = nodeTo.(Node::SsaNode).getDefinitionExt().(Ssa::WriteDefinition).getControlFlowNode() @@ -1266,6 +1287,14 @@ module RustDataFlow implements InputSig { node2.asExpr().(ArrayListExprCfgNode).getAnExpr() ] or + // Store from a `ref` identifier pattern into the contained name. + exists(IdentPatCfgNode p | + c instanceof ReferenceContent and + p.isRef() and + node1.asPat() = p and + node2.(Node::NameNode).asName() = p.getName() + ) + or fieldAssignment(node1, node2.(PostUpdateNode).getPreUpdateNode(), c) or referenceAssignment(node1, node2.(PostUpdateNode).getPreUpdateNode(), c) @@ -1560,6 +1589,7 @@ private module Cached { TExprNode(ExprCfgNode n) { Stages::DataFlowStage::ref() } or TSourceParameterNode(ParamBaseCfgNode p) or TPatNode(PatCfgNode p) or + TNameNode(NameCfgNode n) { n.getName() = any(Variable v).getName() } or TExprPostUpdateNode(ExprCfgNode e) { isArgumentForCall(e, _, _) or lambdaCallExpr(_, _, e) or diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll index f14cd5beaec..19784583a80 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll @@ -7,25 +7,25 @@ private import Cfg private import codeql.rust.controlflow.internal.ControlFlowGraphImpl as ControlFlowGraphImpl private import codeql.ssa.Ssa as SsaImplCommon -/** Holds if `v` is introduced like `let v : i64;`. */ -private predicate isUnitializedLet(IdentPat pat, Variable v) { - pat = v.getPat() and +/** + * Holds if `name` occurs in the left-hand side of an uninitialized let + * statement such as in `let name : i64;`. + */ +private predicate isInUninitializedLet(Name name) { exists(LetStmt let | - let = v.getLetStmt() and + let.getPat().(IdentPat).getName() = name and not let.hasInitializer() ) } /** Holds if `write` writes to variable `v`. */ predicate variableWrite(AstNode write, Variable v) { - exists(IdentPat pat | - pat = write and - pat = v.getPat() and - not isUnitializedLet(pat, v) + exists(Name name | + name = write and + name = v.getName() and + not isInUninitializedLet(name) ) or - exists(SelfParam self | self = write and self = v.getSelfParam()) - or exists(VariableAccess access | access = write and access.getVariable() = v diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll index 8762e09d7a3..59a84d29361 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll @@ -74,58 +74,66 @@ module Impl { * where `definingNode` is the entire `Either::Left(x) | Either::Right(x)` * pattern. */ - private predicate variableDecl(AstNode definingNode, AstNode p, string name) { - p = - any(SelfParam sp | - definingNode = sp.getName() and - name = sp.getName().getText() and + private predicate variableDecl(AstNode definingNode, Name name, string text) { + text = name.getText() and + ( + exists(SelfParam sp | + name = sp.getName() and + definingNode = name and // exclude self parameters from functions without a body as these are // trait method declarations without implementations not exists(Function f | not f.hasBody() and f.getParamList().getSelfParam() = sp) ) - or - p = - any(IdentPat pat | + or + exists(IdentPat pat | + name = pat.getName() and ( definingNode = getOutermostEnclosingOrPat(pat) or - not exists(getOutermostEnclosingOrPat(pat)) and definingNode = pat.getName() + not exists(getOutermostEnclosingOrPat(pat)) and definingNode = name ) and - name = pat.getName().getText() and // exclude for now anything starting with an uppercase character, which may be a reference to // an enum constant (e.g. `None`). This excludes static and constant variables (UPPERCASE), // which we don't appear to recognize yet anyway. This also assumes programmers follow the // naming guidelines, which they generally do, but they're not enforced. - not name.charAt(0).isUppercase() and + not text.charAt(0).isUppercase() and // exclude parameters from functions without a body as these are trait method declarations // without implementations not exists(Function f | not f.hasBody() and f.getParamList().getAParam().getPat() = pat) and // exclude parameters from function pointer types (e.g. `x` in `fn(x: i32) -> i32`) not exists(FnPtrTypeRepr fp | fp.getParamList().getParam(_).getPat() = pat) ) + ) } /** A variable. */ class Variable extends MkVariable { private AstNode definingNode; - private string name; + private string text; - Variable() { this = MkVariable(definingNode, name) } + Variable() { this = MkVariable(definingNode, text) } - /** Gets the name of this variable. */ - string getName() { result = name } + /** Gets the name of this variable as a string. */ + string getText() { result = text } /** Gets the location of this variable. */ Location getLocation() { result = definingNode.getLocation() } /** Gets a textual representation of this variable. */ - string toString() { result = this.getName() } + string toString() { result = this.getText() } /** Gets an access to this variable. */ VariableAccess getAnAccess() { result.getVariable() = this } - /** Gets the `self` parameter that declares this variable, if one exists. */ - SelfParam getSelfParam() { variableDecl(definingNode, result, name) } + /** + * Get the name of this variable. + * + * Normally, the name is unique, except when introduced in an or pattern. + */ + Name getName() { variableDecl(definingNode, result, text) } + + /** Gets the `self` parameter that declares this variable, if any. */ + SelfParam getSelfParam() { result.getName() = this.getName() } /** * Gets the pattern that declares this variable, if any. @@ -138,7 +146,7 @@ module Impl { * } * ``` */ - IdentPat getPat() { variableDecl(definingNode, result, name) } + IdentPat getPat() { result.getName() = this.getName() } /** Gets the enclosing CFG scope for this variable declaration. */ CfgScope getEnclosingCfgScope() { result = definingNode.getEnclosingCfgScope() } @@ -204,6 +212,10 @@ module Impl { /** Gets the immediately enclosing variable scope of `n`. */ private VariableScope getEnclosingScope(AstNode n) { result = getAnAncestorInVariableScope(n) } + /** + * Get all the pattern ancestors of this variable up to an including the + * root of the pattern. + */ private Pat getAVariablePatAncestor(Variable v) { result = v.getPat() or @@ -322,7 +334,7 @@ module Impl { * all nodes nester under `scope`, is `ord`. */ private predicate variableDeclInScope(Variable v, VariableScope scope, string name, int ord) { - name = v.getName() and + name = v.getText() and ( parameterDeclInScope(v, scope) and ord = getPreOrderNumbering(scope, scope) diff --git a/rust/ql/lib/codeql/rust/security/SensitiveData.qll b/rust/ql/lib/codeql/rust/security/SensitiveData.qll index 49db524cf23..5a5f5a6dec0 100644 --- a/rust/ql/lib/codeql/rust/security/SensitiveData.qll +++ b/rust/ql/lib/codeql/rust/security/SensitiveData.qll @@ -60,7 +60,7 @@ private class SensitiveDataVariable extends Variable { SensitiveDataClassification classification; SensitiveDataVariable() { - HeuristicNames::nameIndicatesSensitiveData(this.getName(), classification) + HeuristicNames::nameIndicatesSensitiveData(this.getText(), classification) } SensitiveDataClassification getClassification() { result = classification } diff --git a/rust/ql/src/queries/unusedentities/UnusedValue.ql b/rust/ql/src/queries/unusedentities/UnusedValue.ql index 32b54fc7442..67c0857b413 100644 --- a/rust/ql/src/queries/unusedentities/UnusedValue.ql +++ b/rust/ql/src/queries/unusedentities/UnusedValue.ql @@ -22,4 +22,4 @@ where not isUnused(v) and not v instanceof DiscardVariable and not write.isInMacroExpansion() -select write, "Variable $@ is assigned a value that is never used.", v, v.getName() +select write, "Variable $@ is assigned a value that is never used.", v, v.getText() diff --git a/rust/ql/src/queries/unusedentities/UnusedVariable.qll b/rust/ql/src/queries/unusedentities/UnusedVariable.qll index 38f09d0a500..db4a22b6c7b 100644 --- a/rust/ql/src/queries/unusedentities/UnusedVariable.qll +++ b/rust/ql/src/queries/unusedentities/UnusedVariable.qll @@ -4,7 +4,7 @@ import rust * A deliberately unused variable, for example `_` or `_x`. */ class DiscardVariable extends Variable { - DiscardVariable() { this.getName().charAt(0) = "_" } + DiscardVariable() { this.getText().charAt(0) = "_" } } /** @@ -25,5 +25,5 @@ predicate isAllowableUnused(Variable v) { v.getPat().isInMacroExpansion() or // a 'self' variable - v.getName() = "self" + v.getText() = "self" } diff --git a/rust/ql/test/library-tests/controlflow-unstable/Cfg.expected b/rust/ql/test/library-tests/controlflow-unstable/Cfg.expected index 7a7d9884f19..11e23459648 100644 --- a/rust/ql/test/library-tests/controlflow-unstable/Cfg.expected +++ b/rust/ql/test/library-tests/controlflow-unstable/Cfg.expected @@ -1,10 +1,13 @@ edges | test.rs:5:5:11:5 | enter fn test_and_if_let | test.rs:5:24:5:24 | a | | | test.rs:5:5:11:5 | exit fn test_and_if_let (normal) | test.rs:5:5:11:5 | exit fn test_and_if_let | | +| test.rs:5:24:5:24 | a | test.rs:5:24:5:24 | a | | | test.rs:5:24:5:24 | a | test.rs:5:24:5:30 | ...: bool | match | | test.rs:5:24:5:30 | ...: bool | test.rs:5:33:5:33 | b | | +| test.rs:5:33:5:33 | b | test.rs:5:33:5:33 | b | | | test.rs:5:33:5:33 | b | test.rs:5:33:5:47 | ...: Option::<...> | match | | test.rs:5:33:5:47 | ...: Option::<...> | test.rs:5:50:5:50 | c | | +| test.rs:5:50:5:50 | c | test.rs:5:50:5:50 | c | | | test.rs:5:50:5:50 | c | test.rs:5:50:5:56 | ...: bool | match | | test.rs:5:50:5:56 | ...: bool | test.rs:6:12:6:12 | a | | | test.rs:5:67:11:5 | { ... } | test.rs:5:5:11:5 | exit fn test_and_if_let (normal) | | @@ -17,6 +20,7 @@ edges | 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(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(...) | | | test.rs:6:33:8:9 | { ... } | test.rs:6:9:10:9 | if ... {...} else {...} | | | test.rs:7:13:7:13 | d | test.rs:6:33:8:9 | { ... } | | @@ -24,10 +28,13 @@ edges | test.rs:9:13:9:17 | false | test.rs:8:16:10:9 | { ... } | | | test.rs:13:5:21:5 | enter fn test_and_if_let2 | test.rs:13:25:13:25 | a | | | test.rs:13:5:21:5 | exit fn test_and_if_let2 (normal) | test.rs:13:5:21:5 | exit fn test_and_if_let2 | | +| test.rs:13:25:13:25 | a | test.rs:13:25:13:25 | a | | | test.rs:13:25:13:25 | a | test.rs:13:25:13:31 | ...: bool | match | | test.rs:13:25:13:31 | ...: bool | test.rs:13:34:13:34 | b | | +| test.rs:13:34:13:34 | b | test.rs:13:34:13:34 | b | | | test.rs:13:34:13:34 | b | test.rs:13:34:13:39 | ...: i64 | match | | test.rs:13:34:13:39 | ...: i64 | test.rs:13:42:13:42 | c | | +| test.rs:13:42:13:42 | c | test.rs:13:42:13:42 | c | | | test.rs:13:42:13:42 | c | test.rs:13:42:13:48 | ...: bool | match | | test.rs:13:42:13:48 | ...: bool | test.rs:14:12:14:12 | a | | | test.rs:13:59:21:5 | { ... } | test.rs:13:5:21:5 | exit fn test_and_if_let2 (normal) | | @@ -40,6 +47,7 @@ edges | 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(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 | | | test.rs:15:16:15:16 | c | test.rs:14:12:15:16 | [boolean(false)] ... && ... | false | | test.rs:15:16:15:16 | c | test.rs:14:12:15:16 | [boolean(true)] ... && ... | true | diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index cf95917b9f3..e04ad1c2f59 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -1,49 +1,138 @@ localStep -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or | MaD:4 | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or | MaD:15 | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::hint::must_use | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::crate::hint::must_use | MaD:21 | -| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::unwrap_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or_else | MaD:7 | -| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::unwrap_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or_else | MaD:18 | -| file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::collect | file://:0:0:0:0 | [summary] to write: ReturnValue.Element in lang:core::_::crate::iter::traits::iterator::Iterator::collect | MaD:22 | -| file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::nth | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::crate::iter::traits::iterator::Iterator::nth | MaD:23 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::expect | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::expect | MaD:2 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap | MaD:3 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or | MaD:5 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap_or_default | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or_default | MaD:6 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or_else | MaD:8 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap_unchecked | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_unchecked | MaD:9 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::::expect_err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::expect_err | MaD:11 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::::unwrap_err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_err | MaD:13 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::::unwrap_err_unchecked | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_err_unchecked | MaD:14 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::expect | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::expect | MaD:10 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::unwrap | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap | MaD:12 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or | MaD:16 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::unwrap_or_default | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or_default | MaD:17 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::unwrap_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or_else | MaD:19 | -| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::unwrap_unchecked | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_unchecked | MaD:20 | +| file://:0:0:0:0 | [post] [summary] to write: Argument[0].Parameter[0] in lang:core::_::::and_then | file://:0:0:0:0 | [summary] to write: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::and_then | MaD:7 | +| file://:0:0:0:0 | [post] [summary] to write: Argument[0].Parameter[0] in lang:core::_::::is_none_or | file://:0:0:0:0 | [summary] to write: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::is_none_or | MaD:24 | +| file://:0:0:0:0 | [post] [summary] to write: Argument[0].Parameter[0] in lang:core::_::::is_some_and | file://:0:0:0:0 | [summary] to write: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::is_some_and | MaD:26 | +| file://:0:0:0:0 | [post] [summary] to write: Argument[0].Parameter[0] in lang:core::_::::map | file://:0:0:0:0 | [summary] to write: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::map | MaD:28 | +| file://:0:0:0:0 | [post] [summary] to write: Argument[0].Parameter[0] in lang:core::_::::take_if | file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::take_if | MaD:43 | +| file://:0:0:0:0 | [post] [summary] to write: Argument[1].Parameter[0] in lang:core::_::::map_or | file://:0:0:0:0 | [summary] to write: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::map_or | MaD:31 | +| file://:0:0:0:0 | [post] [summary] to write: Argument[1].Parameter[0] in lang:core::_::::map_or_else | file://:0:0:0:0 | [summary] to write: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::map_or_else | MaD:34 | +| file://:0:0:0:0 | [post] [summary] to write: Argument[1].Parameter[0] in lang:core::_::::zip_with | file://:0:0:0:0 | [summary] to write: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::zip_with | MaD:61 | +| file://:0:0:0:0 | [post] [summary] to write: Argument[1].Parameter[1] in lang:core::_::::zip_with | file://:0:0:0:0 | [summary] to write: Argument[0].Variant[crate::option::Option::Some(0)] in lang:core::_::::zip_with | MaD:59 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::from | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::from | MaD:4 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::and | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::and | MaD:5 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::and_then | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::::and_then | MaD:6 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::and_then | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::::and_then | MaD:7 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::get_or_insert | file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::get_or_insert | MaD:14 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::get_or_insert | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::get_or_insert | MaD:15 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::insert | file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::insert | MaD:19 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::insert | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::insert | MaD:20 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::is_none_or | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::::is_none_or | MaD:23 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::is_none_or | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::::is_none_or | MaD:24 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::is_some_and | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::::is_some_and | MaD:25 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::is_some_and | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::::is_some_and | MaD:26 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::map | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::::map | MaD:27 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::map | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::::map | MaD:28 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::map_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::map_or | MaD:29 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::map_or_else | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::::map_or_else | MaD:32 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::ok_or | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Err(0)] in lang:core::_::::ok_or | MaD:35 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::ok_or_else | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::::ok_or_else | MaD:37 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::or | MaD:39 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::or_else | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::::or_else | MaD:41 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::take_if | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::::take_if | MaD:43 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or | MaD:47 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::unwrap_or_else | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::::unwrap_or_else | MaD:50 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::xor | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::xor | MaD:55 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or | MaD:67 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::unwrap_or_else | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[closure self] in lang:core::_::::unwrap_or_else | MaD:70 | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::hint::must_use | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::crate::hint::must_use | MaD:73 | +| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::map_or | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[closure self] in lang:core::_::::map_or | MaD:30 | +| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::map_or | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[closure self] in lang:core::_::::map_or | MaD:31 | +| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::map_or_else | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[closure self] in lang:core::_::::map_or_else | MaD:33 | +| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::map_or_else | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[closure self] in lang:core::_::::map_or_else | MaD:34 | +| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::zip_with | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[closure self] in lang:core::_::::zip_with | MaD:59 | +| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::zip_with | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[closure self] in lang:core::_::::zip_with | MaD:60 | +| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::zip_with | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[closure self] in lang:core::_::::zip_with | MaD:61 | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::inspect | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::inspect | MaD:22 | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::or | MaD:40 | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::or_else | MaD:42 | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::xor | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::xor | MaD:56 | +| file://:0:0:0:0 | [summary] read: Argument[0].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::from | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::from | MaD:3 | +| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::and_then | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::and_then | MaD:6 | +| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::is_none_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::is_none_or | MaD:23 | +| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::is_some_and | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::is_some_and | MaD:25 | +| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::map | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::map | MaD:27 | +| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::map_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::map_or_else | MaD:32 | +| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::ok_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Err(0)] in lang:core::_::::ok_or_else | MaD:37 | +| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::or_else | MaD:41 | +| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::unwrap_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or_else | MaD:50 | +| file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::unwrap_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or_else | MaD:70 | +| file://:0:0:0:0 | [summary] read: Argument[0].Variant[crate::option::Option::Some(0)] in lang:core::_::::zip | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)].Tuple[1] in lang:core::_::::zip | MaD:57 | +| file://:0:0:0:0 | [summary] read: Argument[0].Variant[crate::option::Option::Some(0)] in lang:core::_::::zip_with | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[1] in lang:core::_::::zip_with | MaD:59 | +| file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::map_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::map_or | MaD:30 | +| file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::map_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::map_or_else | MaD:33 | +| file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::zip_with | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::zip_with | MaD:60 | +| file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::collect | file://:0:0:0:0 | [summary] to write: ReturnValue.Element in lang:core::_::crate::iter::traits::iterator::Iterator::collect | MaD:74 | +| file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::nth | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::crate::iter::traits::iterator::Iterator::nth | MaD:75 | +| file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::as_mut | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::as_mut | MaD:8 | +| file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::as_ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::as_ref | MaD:9 | +| file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::get_or_insert | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::get_or_insert | MaD:16 | +| file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::get_or_insert_default | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::get_or_insert_default | MaD:17 | +| file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::get_or_insert_with | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::get_or_insert_with | MaD:18 | +| file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::insert | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::insert | MaD:21 | +| file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::take_if | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[0] in lang:core::_::::take_if | MaD:43 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::clone | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::clone | MaD:2 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::and_then | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[0] in lang:core::_::::and_then | MaD:7 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::cloned | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::cloned | MaD:10 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::expect | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::expect | MaD:12 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::flatten | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::flatten | MaD:13 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::is_none_or | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[0] in lang:core::_::::is_none_or | MaD:24 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::is_some_and | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[0] in lang:core::_::::is_some_and | MaD:26 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::map | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[0] in lang:core::_::::map | MaD:28 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::map_or | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in lang:core::_::::map_or | MaD:31 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::map_or_else | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in lang:core::_::::map_or_else | MaD:34 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::ok_or | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in lang:core::_::::ok_or | MaD:36 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::ok_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in lang:core::_::::ok_or_else | MaD:38 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap | MaD:46 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or | MaD:48 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap_or_default | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or_default | MaD:49 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or_else | MaD:51 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap_unchecked | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_unchecked | MaD:52 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::zip | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)].Tuple[0] in lang:core::_::::zip | MaD:58 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::zip_with | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in lang:core::_::::zip_with | MaD:61 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)].Reference in lang:core::_::::copied | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::copied | MaD:11 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)].Tuple[0] in lang:core::_::::unzip | file://:0:0:0:0 | [summary] to write: ReturnValue.Tuple[0].Variant[crate::option::Option::Some(0)] in lang:core::_::::unzip | MaD:53 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)].Tuple[1] in lang:core::_::::unzip | file://:0:0:0:0 | [summary] to write: ReturnValue.Tuple[1].Variant[crate::option::Option::Some(0)] in lang:core::_::::unzip | MaD:54 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)].Variant[crate::result::Result::Err(0)] in lang:core::_::::transpose | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Err(0)] in lang:core::_::::transpose | MaD:44 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)].Variant[crate::result::Result::Ok(0)] in lang:core::_::::transpose | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)].Variant[crate::option::Option::Some(0)] in lang:core::_::::transpose | MaD:45 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::::expect_err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::expect_err | MaD:63 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::::unwrap_err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_err | MaD:65 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::::unwrap_err_unchecked | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_err_unchecked | MaD:66 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::expect | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::expect | MaD:62 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::unwrap | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap | MaD:64 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or | MaD:68 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::unwrap_or_default | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or_default | MaD:69 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::unwrap_or_else | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_or_else | MaD:71 | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::unwrap_unchecked | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unwrap_unchecked | MaD:72 | | main.rs:3:11:3:11 | [SSA] i | main.rs:4:12:4:12 | i | | | main.rs:3:11:3:11 | i | main.rs:3:11:3:11 | [SSA] i | | +| main.rs:3:11:3:11 | i | main.rs:3:11:3:11 | i | | | main.rs:3:11:3:16 | ...: i64 | main.rs:3:11:3:11 | i | | | main.rs:4:5:4:12 | ... + ... | main.rs:3:26:5:1 | { ... } | | | main.rs:7:9:7:9 | [SSA] s | main.rs:8:20:8:20 | s | | | main.rs:7:9:7:9 | s | main.rs:7:9:7:9 | [SSA] s | | +| main.rs:7:9:7:9 | s | main.rs:7:9:7:9 | s | | | main.rs:7:9:7:14 | ...: i64 | main.rs:7:9:7:9 | s | | | main.rs:8:14:8:20 | FormatArgsExpr | main.rs:8:14:8:20 | MacroExpr | | | main.rs:8:14:8:20 | MacroExpr | main.rs:8:5:8:21 | ...::_print | MaD:1 | | main.rs:19:9:19:9 | [SSA] s | main.rs:20:10:20:10 | s | | | main.rs:19:9:19:9 | s | main.rs:19:9:19:9 | [SSA] s | | +| main.rs:19:9:19:9 | s | main.rs:19:9:19:9 | s | | | main.rs:19:13:19:21 | source(...) | main.rs:19:9:19:9 | s | | | main.rs:23:18:23:21 | [SSA] cond | main.rs:26:16:26:19 | cond | | | main.rs:23:18:23:21 | cond | main.rs:23:18:23:21 | [SSA] cond | | +| main.rs:23:18:23:21 | cond | main.rs:23:18:23:21 | cond | | | main.rs:23:18:23:27 | ...: bool | main.rs:23:18:23:21 | cond | | | main.rs:24:9:24:9 | [SSA] a | main.rs:26:23:26:23 | a | | | main.rs:24:9:24:9 | a | main.rs:24:9:24:9 | [SSA] a | | +| main.rs:24:9:24:9 | a | main.rs:24:9:24:9 | a | | | main.rs:24:13:24:21 | source(...) | main.rs:24:9:24:9 | a | | | main.rs:25:9:25:9 | [SSA] b | main.rs:26:34:26:34 | b | | | main.rs:25:9:25:9 | b | main.rs:25:9:25:9 | [SSA] b | | +| main.rs:25:9:25:9 | b | main.rs:25:9:25:9 | b | | | main.rs:25:13:25:13 | 2 | main.rs:25:9:25:9 | b | | | main.rs:26:9:26:9 | [SSA] c | main.rs:27:10:27:10 | c | | | main.rs:26:9:26:9 | c | main.rs:26:9:26:9 | [SSA] c | | +| main.rs:26:9:26:9 | c | main.rs:26:9:26:9 | c | | | main.rs:26:13:26:36 | if cond {...} else {...} | main.rs:26:9:26:9 | c | | | main.rs:26:21:26:25 | { ... } | main.rs:26:13:26:36 | if cond {...} else {...} | | | main.rs:26:23:26:23 | a | main.rs:26:21:26:25 | { ... } | | @@ -51,12 +140,15 @@ localStep | main.rs:26:34:26:34 | b | main.rs:26:32:26:36 | { ... } | | | main.rs:30:21:30:21 | [SSA] m | main.rs:32:19:32:19 | m | | | main.rs:30:21:30:21 | m | main.rs:30:21:30:21 | [SSA] m | | +| main.rs:30:21:30:21 | m | main.rs:30:21:30:21 | m | | | main.rs:30:21:30:34 | ...: Option::<...> | main.rs:30:21:30:21 | m | | | main.rs:31:9:31:9 | [SSA] a | main.rs:33:20:33:20 | a | | | main.rs:31:9:31:9 | a | main.rs:31:9:31:9 | [SSA] a | | +| main.rs:31:9:31:9 | a | main.rs:31:9:31:9 | a | | | main.rs:31:13:31:21 | source(...) | main.rs:31:9:31:9 | a | | | main.rs:32:9:32:9 | [SSA] b | main.rs:36:10:36:10 | b | | | main.rs:32:9:32:9 | b | main.rs:32:9:32:9 | [SSA] b | | +| main.rs:32:9:32:9 | b | main.rs:32:9:32:9 | b | | | main.rs:32:13:35:5 | match m { ... } | main.rs:32:9:32:9 | b | | | main.rs:32:19:32:19 | m | main.rs:33:9:33:15 | Some(...) | | | main.rs:32:19:32:19 | m | main.rs:34:9:34:12 | None | | @@ -64,30 +156,36 @@ localStep | main.rs:34:17:34:17 | 0 | main.rs:32:13:35:5 | match m { ... } | | | main.rs:40:9:40:9 | [SSA] a | main.rs:43:10:43:10 | a | | | main.rs:40:9:40:9 | a | main.rs:40:9:40:9 | [SSA] a | | +| main.rs:40:9:40:9 | a | main.rs:40:9:40:9 | a | | | main.rs:40:13:42:5 | loop { ... } | main.rs:40:9:40:9 | a | | | main.rs:41:9:41:15 | break 1 | main.rs:40:13:42:5 | loop { ... } | | | main.rs:41:15:41:15 | 1 | main.rs:41:9:41:15 | break 1 | | | main.rs:44:9:44:9 | [SSA] b | main.rs:47:10:47:10 | b | | | main.rs:44:9:44:9 | b | main.rs:44:9:44:9 | [SSA] b | | +| main.rs:44:9:44:9 | b | main.rs:44:9:44:9 | b | | | main.rs:44:13:46:5 | loop { ... } | main.rs:44:9:44:9 | b | | | main.rs:45:9:45:23 | break ... | main.rs:44:13:46:5 | loop { ... } | | | main.rs:45:15:45:23 | source(...) | main.rs:45:9:45:23 | break ... | | -| main.rs:51:9:51:13 | [SSA] mut i | main.rs:52:10:52:10 | i | | -| main.rs:51:9:51:13 | mut i | main.rs:51:9:51:13 | [SSA] mut i | | +| main.rs:51:9:51:13 | mut i | main.rs:51:13:51:13 | i | | +| main.rs:51:13:51:13 | [SSA] i | main.rs:52:10:52:10 | i | | +| main.rs:51:13:51:13 | i | main.rs:51:13:51:13 | [SSA] i | | | main.rs:51:17:51:17 | 1 | main.rs:51:9:51:13 | mut i | | | main.rs:53:5:53:5 | [SSA] i | main.rs:54:10:54:10 | i | | | main.rs:53:5:53:5 | i | main.rs:53:5:53:5 | [SSA] i | | | main.rs:53:9:53:17 | source(...) | main.rs:53:5:53:5 | i | | | main.rs:58:9:58:9 | [SSA] a | main.rs:59:5:59:5 | a | | | main.rs:58:9:58:9 | a | main.rs:58:9:58:9 | [SSA] a | | +| main.rs:58:9:58:9 | a | main.rs:58:9:58:9 | a | | | main.rs:58:13:58:17 | { ... } | main.rs:58:9:58:9 | a | | | main.rs:58:15:58:15 | 0 | main.rs:58:13:58:17 | { ... } | | | main.rs:59:5:59:5 | a | main.rs:57:31:60:1 | { ... } | | | main.rs:62:22:62:22 | [SSA] b | main.rs:64:12:64:12 | b | | | main.rs:62:22:62:22 | b | main.rs:62:22:62:22 | [SSA] b | | +| main.rs:62:22:62:22 | b | main.rs:62:22:62:22 | b | | | main.rs:62:22:62:28 | ...: bool | main.rs:62:22:62:22 | b | | | main.rs:63:9:63:9 | [SSA] a | main.rs:69:5:69:5 | a | | | main.rs:63:9:63:9 | a | main.rs:63:9:63:9 | [SSA] a | | +| main.rs:63:9:63:9 | a | main.rs:63:9:63:9 | a | | | main.rs:63:13:68:5 | 'block: { ... } | main.rs:63:9:63:9 | a | | | main.rs:65:13:65:26 | break ''block 1 | main.rs:63:13:68:5 | 'block: { ... } | | | main.rs:65:26:65:26 | 1 | main.rs:65:13:65:26 | break ''block 1 | | @@ -95,9 +193,11 @@ localStep | main.rs:69:5:69:5 | a | main.rs:62:38:70:1 | { ... } | | | main.rs:72:22:72:22 | [SSA] b | main.rs:74:12:74:12 | b | | | main.rs:72:22:72:22 | b | main.rs:72:22:72:22 | [SSA] b | | +| main.rs:72:22:72:22 | b | main.rs:72:22:72:22 | b | | | main.rs:72:22:72:28 | ...: bool | main.rs:72:22:72:22 | b | | | main.rs:73:9:73:9 | [SSA] a | main.rs:79:5:79:5 | a | | | main.rs:73:9:73:9 | a | main.rs:73:9:73:9 | [SSA] a | | +| main.rs:73:9:73:9 | a | main.rs:73:9:73:9 | a | | | main.rs:73:13:78:5 | 'block: { ... } | main.rs:73:9:73:9 | a | | | main.rs:75:13:75:26 | break ''block 1 | main.rs:73:13:78:5 | 'block: { ... } | | | main.rs:75:26:75:26 | 1 | main.rs:75:13:75:26 | break ''block 1 | | @@ -106,24 +206,31 @@ localStep | main.rs:79:5:79:5 | a | main.rs:72:38:80:1 | { ... } | | | main.rs:86:9:86:9 | [SSA] i | main.rs:87:11:87:11 | i | | | main.rs:86:9:86:9 | i | main.rs:86:9:86:9 | [SSA] i | | +| main.rs:86:9:86:9 | i | main.rs:86:9:86:9 | i | | | main.rs:86:13:86:31 | ...::new(...) | main.rs:86:9:86:9 | i | | | main.rs:94:9:94:9 | [SSA] a | main.rs:95:10:95:10 | a | | | main.rs:94:9:94:9 | a | main.rs:94:9:94:9 | [SSA] a | | +| main.rs:94:9:94:9 | a | main.rs:94:9:94:9 | a | | | main.rs:94:13:94:26 | TupleExpr | main.rs:94:9:94:9 | a | | | main.rs:95:10:95:10 | [post] a | main.rs:96:10:96:10 | a | | | main.rs:95:10:95:10 | a | main.rs:96:10:96:10 | a | | | main.rs:100:9:100:9 | [SSA] a | main.rs:101:24:101:24 | a | | | main.rs:100:9:100:9 | a | main.rs:100:9:100:9 | [SSA] a | | +| main.rs:100:9:100:9 | a | main.rs:100:9:100:9 | a | | | main.rs:100:13:100:30 | TupleExpr | main.rs:100:9:100:9 | a | | | main.rs:101:10:101:11 | [SSA] a0 | main.rs:102:10:102:11 | a0 | | | main.rs:101:10:101:11 | a0 | main.rs:101:10:101:11 | [SSA] a0 | | +| main.rs:101:10:101:11 | a0 | main.rs:101:10:101:11 | a0 | | | main.rs:101:14:101:15 | [SSA] a1 | main.rs:103:10:103:11 | a1 | | | main.rs:101:14:101:15 | a1 | main.rs:101:14:101:15 | [SSA] a1 | | +| main.rs:101:14:101:15 | a1 | main.rs:101:14:101:15 | a1 | | | main.rs:101:18:101:19 | [SSA] a2 | main.rs:104:10:104:11 | a2 | | | main.rs:101:18:101:19 | a2 | main.rs:101:18:101:19 | [SSA] a2 | | +| main.rs:101:18:101:19 | a2 | main.rs:101:18:101:19 | a2 | | | main.rs:101:24:101:24 | a | main.rs:101:9:101:20 | TuplePat | | -| main.rs:108:9:108:13 | [SSA] mut a | main.rs:109:10:109:10 | a | | -| main.rs:108:9:108:13 | mut a | main.rs:108:9:108:13 | [SSA] mut a | | +| main.rs:108:9:108:13 | mut a | main.rs:108:13:108:13 | a | | +| main.rs:108:13:108:13 | [SSA] a | main.rs:109:10:109:10 | a | | +| main.rs:108:13:108:13 | a | main.rs:108:13:108:13 | [SSA] a | | | main.rs:108:17:108:31 | TupleExpr | main.rs:108:9:108:13 | mut a | | | main.rs:109:10:109:10 | [post] a | main.rs:110:10:110:10 | a | | | main.rs:109:10:109:10 | a | main.rs:110:10:110:10 | a | | @@ -139,9 +246,11 @@ localStep | main.rs:113:10:113:10 | a | main.rs:114:10:114:10 | a | | | main.rs:118:9:118:9 | [SSA] a | main.rs:119:14:119:14 | a | | | main.rs:118:9:118:9 | a | main.rs:118:9:118:9 | [SSA] a | | +| main.rs:118:9:118:9 | a | main.rs:118:9:118:9 | a | | | main.rs:118:13:118:27 | TupleExpr | main.rs:118:9:118:9 | a | | | main.rs:119:9:119:9 | [SSA] b | main.rs:120:10:120:10 | b | | | main.rs:119:9:119:9 | b | main.rs:119:9:119:9 | [SSA] b | | +| main.rs:119:9:119:9 | b | main.rs:119:9:119:9 | b | | | main.rs:119:13:119:18 | TupleExpr | main.rs:119:9:119:9 | b | | | main.rs:120:10:120:10 | [post] b | main.rs:121:10:121:10 | b | | | main.rs:120:10:120:10 | b | main.rs:121:10:121:10 | b | | @@ -149,11 +258,13 @@ localStep | main.rs:121:10:121:10 | b | main.rs:122:10:122:10 | b | | | main.rs:134:9:134:9 | [SSA] p | main.rs:135:10:135:10 | p | | | main.rs:134:9:134:9 | p | main.rs:134:9:134:9 | [SSA] p | | +| main.rs:134:9:134:9 | p | main.rs:134:9:134:9 | p | | | main.rs:134:13:134:40 | Point {...} | main.rs:134:9:134:9 | p | | | main.rs:135:10:135:10 | [post] p | main.rs:136:10:136:10 | p | | | main.rs:135:10:135:10 | p | main.rs:136:10:136:10 | p | | -| main.rs:140:9:140:13 | [SSA] mut p | main.rs:141:10:141:10 | p | | -| main.rs:140:9:140:13 | mut p | main.rs:140:9:140:13 | [SSA] mut p | | +| main.rs:140:9:140:13 | mut p | main.rs:140:13:140:13 | p | | +| main.rs:140:13:140:13 | [SSA] p | main.rs:141:10:141:10 | p | | +| main.rs:140:13:140:13 | p | main.rs:140:13:140:13 | [SSA] p | | | main.rs:140:17:140:44 | Point {...} | main.rs:140:9:140:13 | mut p | | | main.rs:141:10:141:10 | [post] p | main.rs:142:5:142:5 | p | | | main.rs:141:10:141:10 | p | main.rs:142:5:142:5 | p | | @@ -162,14 +273,18 @@ localStep | main.rs:142:11:142:20 | source(...) | main.rs:142:5:142:7 | p.y | | | main.rs:147:9:147:9 | [SSA] p | main.rs:151:32:151:32 | p | | | main.rs:147:9:147:9 | p | main.rs:147:9:147:9 | [SSA] p | | +| main.rs:147:9:147:9 | p | main.rs:147:9:147:9 | p | | | main.rs:147:13:150:5 | Point {...} | main.rs:147:9:147:9 | p | | | main.rs:151:20:151:20 | [SSA] a | main.rs:152:10:152:10 | a | | | main.rs:151:20:151:20 | a | main.rs:151:20:151:20 | [SSA] a | | +| main.rs:151:20:151:20 | a | main.rs:151:20:151:20 | a | | | main.rs:151:26:151:26 | [SSA] b | main.rs:153:10:153:10 | b | | | main.rs:151:26:151:26 | b | main.rs:151:26:151:26 | [SSA] b | | +| main.rs:151:26:151:26 | b | main.rs:151:26:151:26 | b | | | main.rs:151:32:151:32 | p | main.rs:151:9:151:28 | Point {...} | | | main.rs:162:9:162:9 | [SSA] p | main.rs:169:10:169:10 | p | | | main.rs:162:9:162:9 | p | main.rs:162:9:162:9 | [SSA] p | | +| main.rs:162:9:162:9 | p | main.rs:162:9:162:9 | p | | | main.rs:162:13:168:5 | Point3D {...} | main.rs:162:9:162:9 | p | | | main.rs:169:10:169:10 | [post] p | main.rs:170:10:170:10 | p | | | main.rs:169:10:169:10 | p | main.rs:170:10:170:10 | p | | @@ -177,21 +292,27 @@ localStep | main.rs:170:10:170:10 | p | main.rs:171:10:171:10 | p | | | main.rs:175:9:175:9 | [SSA] y | main.rs:177:30:177:30 | y | | | main.rs:175:9:175:9 | y | main.rs:175:9:175:9 | [SSA] y | | +| main.rs:175:9:175:9 | y | main.rs:175:9:175:9 | y | | | main.rs:175:13:175:22 | source(...) | main.rs:175:9:175:9 | y | | | main.rs:176:9:176:9 | [SSA] p | main.rs:180:11:180:11 | p | | | main.rs:176:9:176:9 | p | main.rs:176:9:176:9 | [SSA] p | | +| main.rs:176:9:176:9 | p | main.rs:176:9:176:9 | p | | | main.rs:176:13:179:5 | Point3D {...} | main.rs:176:9:176:9 | p | | | main.rs:180:5:189:5 | match p { ... } | main.rs:174:26:190:1 | { ... } | | | main.rs:180:11:180:11 | p | main.rs:181:9:184:9 | Point3D {...} | | | main.rs:182:28:182:28 | [SSA] x | main.rs:185:18:185:18 | x | | | main.rs:182:28:182:28 | x | main.rs:182:28:182:28 | [SSA] x | | +| main.rs:182:28:182:28 | x | main.rs:182:28:182:28 | x | | | main.rs:182:31:182:31 | [SSA] y | main.rs:186:18:186:18 | y | | | main.rs:182:31:182:31 | y | main.rs:182:31:182:31 | [SSA] y | | +| main.rs:182:31:182:31 | y | main.rs:182:31:182:31 | y | | | main.rs:183:13:183:13 | [SSA] z | main.rs:187:18:187:18 | z | | | main.rs:183:13:183:13 | z | main.rs:183:13:183:13 | [SSA] z | | +| main.rs:183:13:183:13 | z | main.rs:183:13:183:13 | z | | | main.rs:184:14:188:9 | { ... } | main.rs:180:5:189:5 | match p { ... } | | | main.rs:195:9:195:9 | [SSA] s | main.rs:196:10:196:10 | s | | | main.rs:195:9:195:9 | s | main.rs:195:9:195:9 | [SSA] s | | +| main.rs:195:9:195:9 | s | main.rs:195:9:195:9 | s | | | main.rs:195:13:195:40 | MyTupleStruct(...) | main.rs:195:9:195:9 | s | | | main.rs:196:10:196:10 | [post] s | main.rs:197:10:197:10 | s | | | main.rs:196:10:196:10 | s | main.rs:197:10:197:10 | s | | @@ -201,19 +322,24 @@ localStep | main.rs:199:11:199:11 | s | main.rs:200:9:200:27 | MyTupleStruct(...) | | | main.rs:200:23:200:23 | [SSA] x | main.rs:201:18:201:18 | x | | | main.rs:200:23:200:23 | x | main.rs:200:23:200:23 | [SSA] x | | +| main.rs:200:23:200:23 | x | main.rs:200:23:200:23 | x | | | main.rs:200:26:200:26 | [SSA] y | main.rs:202:18:202:18 | y | | | main.rs:200:26:200:26 | y | main.rs:200:26:200:26 | [SSA] y | | +| main.rs:200:26:200:26 | y | main.rs:200:26:200:26 | y | | | main.rs:200:32:203:9 | { ... } | main.rs:199:5:204:5 | match s { ... } | | | main.rs:211:9:211:10 | [SSA] s1 | main.rs:213:11:213:12 | s1 | | | main.rs:211:9:211:10 | s1 | main.rs:211:9:211:10 | [SSA] s1 | | +| main.rs:211:9:211:10 | s1 | main.rs:211:9:211:10 | s1 | | | main.rs:211:14:211:37 | ...::Some(...) | main.rs:211:9:211:10 | s1 | | | main.rs:212:9:212:10 | [SSA] s2 | main.rs:217:11:217:12 | s2 | | | main.rs:212:9:212:10 | s2 | main.rs:212:9:212:10 | [SSA] s2 | | +| main.rs:212:9:212:10 | s2 | main.rs:212:9:212:10 | s2 | | | main.rs:212:14:212:28 | ...::Some(...) | main.rs:212:9:212:10 | s2 | | | main.rs:213:11:213:12 | s1 | main.rs:214:9:214:23 | ...::Some(...) | | | main.rs:213:11:213:12 | s1 | main.rs:215:9:215:20 | ...::None | | | main.rs:214:22:214:22 | [SSA] n | main.rs:214:33:214:33 | n | | | main.rs:214:22:214:22 | n | main.rs:214:22:214:22 | [SSA] n | | +| main.rs:214:22:214:22 | n | main.rs:214:22:214:22 | n | | | main.rs:214:28:214:34 | sink(...) | main.rs:213:5:216:5 | match s1 { ... } | | | main.rs:215:25:215:31 | sink(...) | main.rs:213:5:216:5 | match s1 { ... } | | | main.rs:217:5:220:5 | match s2 { ... } | main.rs:210:37:221:1 | { ... } | | @@ -221,18 +347,22 @@ localStep | main.rs:217:11:217:12 | s2 | main.rs:219:9:219:20 | ...::None | | | main.rs:218:22:218:22 | [SSA] n | main.rs:218:33:218:33 | n | | | main.rs:218:22:218:22 | n | main.rs:218:22:218:22 | [SSA] n | | +| main.rs:218:22:218:22 | n | main.rs:218:22:218:22 | n | | | main.rs:218:28:218:34 | sink(...) | main.rs:217:5:220:5 | match s2 { ... } | | | main.rs:219:25:219:31 | sink(...) | main.rs:217:5:220:5 | match s2 { ... } | | | main.rs:224:9:224:10 | [SSA] s1 | main.rs:226:11:226:12 | s1 | | | main.rs:224:9:224:10 | s1 | main.rs:224:9:224:10 | [SSA] s1 | | +| main.rs:224:9:224:10 | s1 | main.rs:224:9:224:10 | s1 | | | main.rs:224:14:224:29 | Some(...) | main.rs:224:9:224:10 | s1 | | | main.rs:225:9:225:10 | [SSA] s2 | main.rs:230:11:230:12 | s2 | | | main.rs:225:9:225:10 | s2 | main.rs:225:9:225:10 | [SSA] s2 | | +| main.rs:225:9:225:10 | s2 | main.rs:225:9:225:10 | s2 | | | main.rs:225:14:225:20 | Some(...) | main.rs:225:9:225:10 | s2 | | | main.rs:226:11:226:12 | s1 | main.rs:227:9:227:15 | Some(...) | | | main.rs:226:11:226:12 | s1 | main.rs:228:9:228:12 | None | | | main.rs:227:14:227:14 | [SSA] n | main.rs:227:25:227:25 | n | | | main.rs:227:14:227:14 | n | main.rs:227:14:227:14 | [SSA] n | | +| main.rs:227:14:227:14 | n | main.rs:227:14:227:14 | n | | | main.rs:227:20:227:26 | sink(...) | main.rs:226:5:229:5 | match s1 { ... } | | | main.rs:228:17:228:23 | sink(...) | main.rs:226:5:229:5 | match s1 { ... } | | | main.rs:230:5:233:5 | match s2 { ... } | main.rs:223:39:234:1 | { ... } | | @@ -240,76 +370,97 @@ localStep | main.rs:230:11:230:12 | s2 | main.rs:232:9:232:12 | None | | | main.rs:231:14:231:14 | [SSA] n | main.rs:231:25:231:25 | n | | | main.rs:231:14:231:14 | n | main.rs:231:14:231:14 | [SSA] n | | +| main.rs:231:14:231:14 | n | main.rs:231:14:231:14 | n | | | main.rs:231:20:231:26 | sink(...) | main.rs:230:5:233:5 | match s2 { ... } | | | main.rs:232:17:232:23 | sink(...) | main.rs:230:5:233:5 | match s2 { ... } | | | main.rs:237:9:237:10 | [SSA] s1 | main.rs:238:10:238:11 | s1 | | | main.rs:237:9:237:10 | s1 | main.rs:237:9:237:10 | [SSA] s1 | | +| main.rs:237:9:237:10 | s1 | main.rs:237:9:237:10 | s1 | | | main.rs:237:14:237:29 | Some(...) | main.rs:237:9:237:10 | s1 | | | main.rs:242:9:242:10 | [SSA] s1 | main.rs:243:10:243:11 | s1 | | | main.rs:242:9:242:10 | s1 | main.rs:242:9:242:10 | [SSA] s1 | | +| main.rs:242:9:242:10 | s1 | main.rs:242:9:242:10 | s1 | | | main.rs:242:14:242:29 | Some(...) | main.rs:242:9:242:10 | s1 | | | main.rs:245:9:245:10 | [SSA] s2 | main.rs:246:10:246:11 | s2 | | | main.rs:245:9:245:10 | s2 | main.rs:245:9:245:10 | [SSA] s2 | | +| main.rs:245:9:245:10 | s2 | main.rs:245:9:245:10 | s2 | | | main.rs:245:14:245:20 | Some(...) | main.rs:245:9:245:10 | s2 | | | main.rs:250:9:250:10 | [SSA] s1 | main.rs:251:10:251:11 | s1 | | | main.rs:250:9:250:10 | s1 | main.rs:250:9:250:10 | [SSA] s1 | | +| main.rs:250:9:250:10 | s1 | main.rs:250:9:250:10 | s1 | | | main.rs:250:14:250:29 | Some(...) | main.rs:250:9:250:10 | s1 | | | main.rs:253:9:253:10 | [SSA] s2 | main.rs:254:10:254:11 | s2 | | | main.rs:253:9:253:10 | s2 | main.rs:253:9:253:10 | [SSA] s2 | | +| main.rs:253:9:253:10 | s2 | main.rs:253:9:253:10 | s2 | | | main.rs:253:14:253:17 | None | main.rs:253:9:253:10 | s2 | | | main.rs:258:9:258:10 | [SSA] s1 | main.rs:260:14:260:15 | s1 | | | main.rs:258:9:258:10 | s1 | main.rs:258:9:258:10 | [SSA] s1 | | +| main.rs:258:9:258:10 | s1 | main.rs:258:9:258:10 | s1 | | | main.rs:258:14:258:29 | Some(...) | main.rs:258:9:258:10 | s1 | | | main.rs:259:9:259:10 | [SSA] s2 | main.rs:262:10:262:11 | s2 | | | main.rs:259:9:259:10 | s2 | main.rs:259:9:259:10 | [SSA] s2 | | +| main.rs:259:9:259:10 | s2 | main.rs:259:9:259:10 | s2 | | | main.rs:259:14:259:20 | Some(...) | main.rs:259:9:259:10 | s2 | | | main.rs:260:9:260:10 | [SSA] i1 | main.rs:261:10:261:11 | i1 | | | main.rs:260:9:260:10 | i1 | main.rs:260:9:260:10 | [SSA] i1 | | +| main.rs:260:9:260:10 | i1 | main.rs:260:9:260:10 | i1 | | | main.rs:260:14:260:16 | TryExpr | main.rs:260:9:260:10 | i1 | | | main.rs:263:5:263:11 | Some(...) | main.rs:257:41:264:1 | { ... } | | | main.rs:267:9:267:10 | [SSA] s1 | main.rs:270:14:270:15 | s1 | | | main.rs:267:9:267:10 | s1 | main.rs:267:9:267:10 | [SSA] s1 | | +| main.rs:267:9:267:10 | s1 | main.rs:267:9:267:10 | s1 | | | main.rs:267:32:267:45 | Ok(...) | main.rs:267:9:267:10 | s1 | | | main.rs:268:9:268:10 | [SSA] s2 | main.rs:271:14:271:15 | s2 | | | main.rs:268:9:268:10 | s2 | main.rs:268:9:268:10 | [SSA] s2 | | +| main.rs:268:9:268:10 | s2 | main.rs:268:9:268:10 | s2 | | | main.rs:268:32:268:36 | Ok(...) | main.rs:268:9:268:10 | s2 | | | main.rs:269:9:269:10 | [SSA] s3 | main.rs:274:14:274:15 | s3 | | | main.rs:269:9:269:10 | s3 | main.rs:269:9:269:10 | [SSA] s3 | | +| main.rs:269:9:269:10 | s3 | main.rs:269:9:269:10 | s3 | | | main.rs:269:32:269:46 | Err(...) | main.rs:269:9:269:10 | s3 | | | main.rs:270:9:270:10 | [SSA] i1 | main.rs:272:10:272:11 | i1 | | | main.rs:270:9:270:10 | i1 | main.rs:270:9:270:10 | [SSA] i1 | | +| main.rs:270:9:270:10 | i1 | main.rs:270:9:270:10 | i1 | | | main.rs:270:14:270:16 | TryExpr | main.rs:270:9:270:10 | i1 | | | main.rs:271:9:271:10 | [SSA] i2 | main.rs:273:10:273:11 | i2 | | | main.rs:271:9:271:10 | i2 | main.rs:271:9:271:10 | [SSA] i2 | | +| main.rs:271:9:271:10 | i2 | main.rs:271:9:271:10 | i2 | | | main.rs:271:14:271:16 | TryExpr | main.rs:271:9:271:10 | i2 | | | main.rs:274:9:274:10 | [SSA] i3 | main.rs:275:10:275:11 | i3 | | | main.rs:274:9:274:10 | i3 | main.rs:274:9:274:10 | [SSA] i3 | | +| main.rs:274:9:274:10 | i3 | main.rs:274:9:274:10 | i3 | | | main.rs:274:14:274:16 | TryExpr | main.rs:274:9:274:10 | i3 | | | main.rs:276:5:276:9 | Ok(...) | main.rs:266:46:277:1 | { ... } | | | main.rs:280:9:280:10 | [SSA] s1 | main.rs:281:10:281:11 | s1 | | | main.rs:280:9:280:10 | s1 | main.rs:280:9:280:10 | [SSA] s1 | | +| main.rs:280:9:280:10 | s1 | main.rs:280:9:280:10 | s1 | | | main.rs:280:32:280:45 | Ok(...) | main.rs:280:9:280:10 | s1 | | | main.rs:281:10:281:11 | [post] s1 | main.rs:282:10:282:11 | s1 | | | main.rs:281:10:281:11 | s1 | main.rs:282:10:282:11 | s1 | | | main.rs:284:9:284:10 | [SSA] s2 | main.rs:285:10:285:11 | s2 | | | main.rs:284:9:284:10 | s2 | main.rs:284:9:284:10 | [SSA] s2 | | +| main.rs:284:9:284:10 | s2 | main.rs:284:9:284:10 | s2 | | | main.rs:284:32:284:46 | Err(...) | main.rs:284:9:284:10 | s2 | | | main.rs:285:10:285:11 | [post] s2 | main.rs:286:10:286:11 | s2 | | | main.rs:285:10:285:11 | s2 | main.rs:286:10:286:11 | s2 | | | main.rs:295:9:295:10 | [SSA] s1 | main.rs:297:11:297:12 | s1 | | | main.rs:295:9:295:10 | s1 | main.rs:295:9:295:10 | [SSA] s1 | | +| main.rs:295:9:295:10 | s1 | main.rs:295:9:295:10 | s1 | | | main.rs:295:14:295:39 | ...::A(...) | main.rs:295:9:295:10 | s1 | | | main.rs:296:9:296:10 | [SSA] s2 | main.rs:304:11:304:12 | s2 | | | main.rs:296:9:296:10 | s2 | main.rs:296:9:296:10 | [SSA] s2 | | +| main.rs:296:9:296:10 | s2 | main.rs:296:9:296:10 | s2 | | | main.rs:296:14:296:30 | ...::B(...) | main.rs:296:9:296:10 | s2 | | | main.rs:297:11:297:12 | s1 | main.rs:298:9:298:25 | ...::A(...) | | | main.rs:297:11:297:12 | s1 | main.rs:299:9:299:25 | ...::B(...) | | | main.rs:297:11:297:12 | s1 | main.rs:301:11:301:12 | s1 | | | main.rs:298:24:298:24 | [SSA] n | main.rs:298:35:298:35 | n | | | main.rs:298:24:298:24 | n | main.rs:298:24:298:24 | [SSA] n | | +| main.rs:298:24:298:24 | n | main.rs:298:24:298:24 | n | | | main.rs:298:30:298:36 | sink(...) | main.rs:297:5:300:5 | match s1 { ... } | | | main.rs:299:24:299:24 | [SSA] n | main.rs:299:35:299:35 | n | | | main.rs:299:24:299:24 | n | main.rs:299:24:299:24 | [SSA] n | | +| main.rs:299:24:299:24 | n | main.rs:299:24:299:24 | n | | | main.rs:299:30:299:36 | sink(...) | main.rs:297:5:300:5 | match s1 { ... } | | | main.rs:301:11:301:12 | s1 | main.rs:302:9:302:45 | ... \| ... | | | main.rs:302:9:302:45 | ... \| ... | main.rs:302:9:302:25 | ...::A(...) | | @@ -318,33 +469,41 @@ localStep | main.rs:302:24:302:24 | [SSA] [input] [match(true)] phi | main.rs:302:9:302:45 | [SSA] [match(true)] phi | | | main.rs:302:24:302:24 | [SSA] n | main.rs:302:24:302:24 | [SSA] [input] [match(true)] phi | | | main.rs:302:24:302:24 | n | main.rs:302:24:302:24 | [SSA] n | | +| main.rs:302:24:302:24 | n | main.rs:302:24:302:24 | n | | | main.rs:302:44:302:44 | [SSA] [input] [match(true)] phi | main.rs:302:9:302:45 | [SSA] [match(true)] phi | | | main.rs:302:44:302:44 | [SSA] n | main.rs:302:44:302:44 | [SSA] [input] [match(true)] phi | | | main.rs:302:44:302:44 | n | main.rs:302:44:302:44 | [SSA] n | | +| main.rs:302:44:302:44 | n | main.rs:302:44:302:44 | n | | | main.rs:302:50:302:56 | sink(...) | main.rs:301:5:303:5 | match s1 { ... } | | | main.rs:304:5:307:5 | match s2 { ... } | main.rs:294:48:308:1 | { ... } | | | main.rs:304:11:304:12 | s2 | main.rs:305:9:305:25 | ...::A(...) | | | main.rs:304:11:304:12 | s2 | main.rs:306:9:306:25 | ...::B(...) | | | main.rs:305:24:305:24 | [SSA] n | main.rs:305:35:305:35 | n | | | main.rs:305:24:305:24 | n | main.rs:305:24:305:24 | [SSA] n | | +| main.rs:305:24:305:24 | n | main.rs:305:24:305:24 | n | | | main.rs:305:30:305:36 | sink(...) | main.rs:304:5:307:5 | match s2 { ... } | | | main.rs:306:24:306:24 | [SSA] n | main.rs:306:35:306:35 | n | | | main.rs:306:24:306:24 | n | main.rs:306:24:306:24 | [SSA] n | | +| main.rs:306:24:306:24 | n | main.rs:306:24:306:24 | n | | | main.rs:306:30:306:36 | sink(...) | main.rs:304:5:307:5 | match s2 { ... } | | | main.rs:313:9:313:10 | [SSA] s1 | main.rs:315:11:315:12 | s1 | | | main.rs:313:9:313:10 | s1 | main.rs:313:9:313:10 | [SSA] s1 | | +| main.rs:313:9:313:10 | s1 | main.rs:313:9:313:10 | s1 | | | main.rs:313:14:313:26 | A(...) | main.rs:313:9:313:10 | s1 | | | main.rs:314:9:314:10 | [SSA] s2 | main.rs:322:11:322:12 | s2 | | | main.rs:314:9:314:10 | s2 | main.rs:314:9:314:10 | [SSA] s2 | | +| main.rs:314:9:314:10 | s2 | main.rs:314:9:314:10 | s2 | | | main.rs:314:14:314:17 | B(...) | main.rs:314:9:314:10 | s2 | | | main.rs:315:11:315:12 | s1 | main.rs:316:9:316:12 | A(...) | | | main.rs:315:11:315:12 | s1 | main.rs:317:9:317:12 | B(...) | | | main.rs:315:11:315:12 | s1 | main.rs:319:11:319:12 | s1 | | | main.rs:316:11:316:11 | [SSA] n | main.rs:316:22:316:22 | n | | | main.rs:316:11:316:11 | n | main.rs:316:11:316:11 | [SSA] n | | +| main.rs:316:11:316:11 | n | main.rs:316:11:316:11 | n | | | main.rs:316:17:316:23 | sink(...) | main.rs:315:5:318:5 | match s1 { ... } | | | main.rs:317:11:317:11 | [SSA] n | main.rs:317:22:317:22 | n | | | main.rs:317:11:317:11 | n | main.rs:317:11:317:11 | [SSA] n | | +| main.rs:317:11:317:11 | n | main.rs:317:11:317:11 | n | | | main.rs:317:17:317:23 | sink(...) | main.rs:315:5:318:5 | match s1 { ... } | | | main.rs:319:11:319:12 | s1 | main.rs:320:9:320:19 | ... \| ... | | | main.rs:320:9:320:19 | ... \| ... | main.rs:320:9:320:12 | A(...) | | @@ -353,33 +512,41 @@ localStep | main.rs:320:11:320:11 | [SSA] [input] [match(true)] phi | main.rs:320:9:320:19 | [SSA] [match(true)] phi | | | main.rs:320:11:320:11 | [SSA] n | main.rs:320:11:320:11 | [SSA] [input] [match(true)] phi | | | main.rs:320:11:320:11 | n | main.rs:320:11:320:11 | [SSA] n | | +| main.rs:320:11:320:11 | n | main.rs:320:11:320:11 | n | | | main.rs:320:18:320:18 | [SSA] [input] [match(true)] phi | main.rs:320:9:320:19 | [SSA] [match(true)] phi | | | main.rs:320:18:320:18 | [SSA] n | main.rs:320:18:320:18 | [SSA] [input] [match(true)] phi | | | main.rs:320:18:320:18 | n | main.rs:320:18:320:18 | [SSA] n | | +| main.rs:320:18:320:18 | n | main.rs:320:18:320:18 | n | | | main.rs:320:24:320:30 | sink(...) | main.rs:319:5:321:5 | match s1 { ... } | | | main.rs:322:5:325:5 | match s2 { ... } | main.rs:312:50:326:1 | { ... } | | | main.rs:322:11:322:12 | s2 | main.rs:323:9:323:12 | A(...) | | | main.rs:322:11:322:12 | s2 | main.rs:324:9:324:12 | B(...) | | | main.rs:323:11:323:11 | [SSA] n | main.rs:323:22:323:22 | n | | | main.rs:323:11:323:11 | n | main.rs:323:11:323:11 | [SSA] n | | +| main.rs:323:11:323:11 | n | main.rs:323:11:323:11 | n | | | main.rs:323:17:323:23 | sink(...) | main.rs:322:5:325:5 | match s2 { ... } | | | main.rs:324:11:324:11 | [SSA] n | main.rs:324:22:324:22 | n | | | main.rs:324:11:324:11 | n | main.rs:324:11:324:11 | [SSA] n | | +| main.rs:324:11:324:11 | n | main.rs:324:11:324:11 | n | | | main.rs:324:17:324:23 | sink(...) | main.rs:322:5:325:5 | match s2 { ... } | | | main.rs:334:9:334:10 | [SSA] s1 | main.rs:338:11:338:12 | s1 | | | main.rs:334:9:334:10 | s1 | main.rs:334:9:334:10 | [SSA] s1 | | +| main.rs:334:9:334:10 | s1 | main.rs:334:9:334:10 | s1 | | | main.rs:334:14:336:5 | ...::C {...} | main.rs:334:9:334:10 | s1 | | | main.rs:337:9:337:10 | [SSA] s2 | main.rs:345:11:345:12 | s2 | | | main.rs:337:9:337:10 | s2 | main.rs:337:9:337:10 | [SSA] s2 | | +| main.rs:337:9:337:10 | s2 | main.rs:337:9:337:10 | s2 | | | main.rs:337:14:337:43 | ...::D {...} | main.rs:337:9:337:10 | s2 | | | main.rs:338:11:338:12 | s1 | main.rs:339:9:339:38 | ...::C {...} | | | main.rs:338:11:338:12 | s1 | main.rs:340:9:340:38 | ...::D {...} | | | main.rs:338:11:338:12 | s1 | main.rs:342:11:342:12 | s1 | | | main.rs:339:36:339:36 | [SSA] n | main.rs:339:48:339:48 | n | | | main.rs:339:36:339:36 | n | main.rs:339:36:339:36 | [SSA] n | | +| main.rs:339:36:339:36 | n | main.rs:339:36:339:36 | n | | | main.rs:339:43:339:49 | sink(...) | main.rs:338:5:341:5 | match s1 { ... } | | | main.rs:340:36:340:36 | [SSA] n | main.rs:340:48:340:48 | n | | | main.rs:340:36:340:36 | n | main.rs:340:36:340:36 | [SSA] n | | +| main.rs:340:36:340:36 | n | main.rs:340:36:340:36 | n | | | main.rs:340:43:340:49 | sink(...) | main.rs:338:5:341:5 | match s1 { ... } | | | main.rs:342:11:342:12 | s1 | main.rs:343:9:343:71 | ... \| ... | | | main.rs:343:9:343:71 | ... \| ... | main.rs:343:9:343:38 | ...::C {...} | | @@ -388,33 +555,41 @@ localStep | main.rs:343:36:343:36 | [SSA] [input] [match(true)] phi | main.rs:343:9:343:71 | [SSA] [match(true)] phi | | | main.rs:343:36:343:36 | [SSA] n | main.rs:343:36:343:36 | [SSA] [input] [match(true)] phi | | | main.rs:343:36:343:36 | n | main.rs:343:36:343:36 | [SSA] n | | +| main.rs:343:36:343:36 | n | main.rs:343:36:343:36 | n | | | main.rs:343:69:343:69 | [SSA] [input] [match(true)] phi | main.rs:343:9:343:71 | [SSA] [match(true)] phi | | | main.rs:343:69:343:69 | [SSA] n | main.rs:343:69:343:69 | [SSA] [input] [match(true)] phi | | | main.rs:343:69:343:69 | n | main.rs:343:69:343:69 | [SSA] n | | +| main.rs:343:69:343:69 | n | main.rs:343:69:343:69 | n | | | main.rs:343:76:343:82 | sink(...) | main.rs:342:5:344:5 | match s1 { ... } | | | main.rs:345:5:348:5 | match s2 { ... } | main.rs:333:49:349:1 | { ... } | | | main.rs:345:11:345:12 | s2 | main.rs:346:9:346:38 | ...::C {...} | | | main.rs:345:11:345:12 | s2 | main.rs:347:9:347:38 | ...::D {...} | | | main.rs:346:36:346:36 | [SSA] n | main.rs:346:48:346:48 | n | | | main.rs:346:36:346:36 | n | main.rs:346:36:346:36 | [SSA] n | | +| main.rs:346:36:346:36 | n | main.rs:346:36:346:36 | n | | | main.rs:346:43:346:49 | sink(...) | main.rs:345:5:348:5 | match s2 { ... } | | | main.rs:347:36:347:36 | [SSA] n | main.rs:347:48:347:48 | n | | | main.rs:347:36:347:36 | n | main.rs:347:36:347:36 | [SSA] n | | +| main.rs:347:36:347:36 | n | main.rs:347:36:347:36 | n | | | main.rs:347:43:347:49 | sink(...) | main.rs:345:5:348:5 | match s2 { ... } | | | main.rs:354:9:354:10 | [SSA] s1 | main.rs:358:11:358:12 | s1 | | | main.rs:354:9:354:10 | s1 | main.rs:354:9:354:10 | [SSA] s1 | | +| main.rs:354:9:354:10 | s1 | main.rs:354:9:354:10 | s1 | | | main.rs:354:14:356:5 | C {...} | main.rs:354:9:354:10 | s1 | | | main.rs:357:9:357:10 | [SSA] s2 | main.rs:365:11:365:12 | s2 | | | main.rs:357:9:357:10 | s2 | main.rs:357:9:357:10 | [SSA] s2 | | +| main.rs:357:9:357:10 | s2 | main.rs:357:9:357:10 | s2 | | | main.rs:357:14:357:29 | D {...} | main.rs:357:9:357:10 | s2 | | | main.rs:358:11:358:12 | s1 | main.rs:359:9:359:24 | C {...} | | | main.rs:358:11:358:12 | s1 | main.rs:360:9:360:24 | D {...} | | | main.rs:358:11:358:12 | s1 | main.rs:362:11:362:12 | s1 | | | main.rs:359:22:359:22 | [SSA] n | main.rs:359:34:359:34 | n | | | main.rs:359:22:359:22 | n | main.rs:359:22:359:22 | [SSA] n | | +| main.rs:359:22:359:22 | n | main.rs:359:22:359:22 | n | | | main.rs:359:29:359:35 | sink(...) | main.rs:358:5:361:5 | match s1 { ... } | | | main.rs:360:22:360:22 | [SSA] n | main.rs:360:34:360:34 | n | | | main.rs:360:22:360:22 | n | main.rs:360:22:360:22 | [SSA] n | | +| main.rs:360:22:360:22 | n | main.rs:360:22:360:22 | n | | | main.rs:360:29:360:35 | sink(...) | main.rs:358:5:361:5 | match s1 { ... } | | | main.rs:362:11:362:12 | s1 | main.rs:363:9:363:43 | ... \| ... | | | main.rs:363:9:363:43 | ... \| ... | main.rs:363:9:363:24 | C {...} | | @@ -423,62 +598,81 @@ localStep | main.rs:363:22:363:22 | [SSA] [input] [match(true)] phi | main.rs:363:9:363:43 | [SSA] [match(true)] phi | | | main.rs:363:22:363:22 | [SSA] n | main.rs:363:22:363:22 | [SSA] [input] [match(true)] phi | | | main.rs:363:22:363:22 | n | main.rs:363:22:363:22 | [SSA] n | | +| main.rs:363:22:363:22 | n | main.rs:363:22:363:22 | n | | | main.rs:363:41:363:41 | [SSA] [input] [match(true)] phi | main.rs:363:9:363:43 | [SSA] [match(true)] phi | | | main.rs:363:41:363:41 | [SSA] n | main.rs:363:41:363:41 | [SSA] [input] [match(true)] phi | | | main.rs:363:41:363:41 | n | main.rs:363:41:363:41 | [SSA] n | | +| main.rs:363:41:363:41 | n | main.rs:363:41:363:41 | n | | | main.rs:363:48:363:54 | sink(...) | main.rs:362:5:364:5 | match s1 { ... } | | | main.rs:365:5:368:5 | match s2 { ... } | main.rs:353:51:369:1 | { ... } | | | main.rs:365:11:365:12 | s2 | main.rs:366:9:366:24 | C {...} | | | main.rs:365:11:365:12 | s2 | main.rs:367:9:367:24 | D {...} | | | main.rs:366:22:366:22 | [SSA] n | main.rs:366:34:366:34 | n | | | main.rs:366:22:366:22 | n | main.rs:366:22:366:22 | [SSA] n | | +| main.rs:366:22:366:22 | n | main.rs:366:22:366:22 | n | | | main.rs:366:29:366:35 | sink(...) | main.rs:365:5:368:5 | match s2 { ... } | | | main.rs:367:22:367:22 | [SSA] n | main.rs:367:34:367:34 | n | | | main.rs:367:22:367:22 | n | main.rs:367:22:367:22 | [SSA] n | | +| main.rs:367:22:367:22 | n | main.rs:367:22:367:22 | n | | | main.rs:367:29:367:35 | sink(...) | main.rs:365:5:368:5 | match s2 { ... } | | | main.rs:375:9:375:12 | [SSA] arr1 | main.rs:376:14:376:17 | arr1 | | | main.rs:375:9:375:12 | arr1 | main.rs:375:9:375:12 | [SSA] arr1 | | +| main.rs:375:9:375:12 | arr1 | main.rs:375:9:375:12 | arr1 | | | main.rs:375:16:375:33 | [...] | main.rs:375:9:375:12 | arr1 | | | main.rs:376:9:376:10 | [SSA] n1 | main.rs:377:10:377:11 | n1 | | | main.rs:376:9:376:10 | n1 | main.rs:376:9:376:10 | [SSA] n1 | | +| main.rs:376:9:376:10 | n1 | main.rs:376:9:376:10 | n1 | | | main.rs:376:14:376:20 | arr1[2] | main.rs:376:9:376:10 | n1 | | | main.rs:379:9:379:12 | [SSA] arr2 | main.rs:380:14:380:17 | arr2 | | | main.rs:379:9:379:12 | arr2 | main.rs:379:9:379:12 | [SSA] arr2 | | +| main.rs:379:9:379:12 | arr2 | main.rs:379:9:379:12 | arr2 | | | main.rs:379:16:379:31 | [...; 10] | main.rs:379:9:379:12 | arr2 | | | main.rs:380:9:380:10 | [SSA] n2 | main.rs:381:10:381:11 | n2 | | | main.rs:380:9:380:10 | n2 | main.rs:380:9:380:10 | [SSA] n2 | | +| main.rs:380:9:380:10 | n2 | main.rs:380:9:380:10 | n2 | | | main.rs:380:14:380:20 | arr2[4] | main.rs:380:9:380:10 | n2 | | | main.rs:383:9:383:12 | [SSA] arr3 | main.rs:384:14:384:17 | arr3 | | | main.rs:383:9:383:12 | arr3 | main.rs:383:9:383:12 | [SSA] arr3 | | +| main.rs:383:9:383:12 | arr3 | main.rs:383:9:383:12 | arr3 | | | main.rs:383:16:383:24 | [...] | main.rs:383:9:383:12 | arr3 | | | main.rs:384:9:384:10 | [SSA] n3 | main.rs:385:10:385:11 | n3 | | | main.rs:384:9:384:10 | n3 | main.rs:384:9:384:10 | [SSA] n3 | | +| main.rs:384:9:384:10 | n3 | main.rs:384:9:384:10 | n3 | | | main.rs:384:14:384:20 | arr3[2] | main.rs:384:9:384:10 | n3 | | | main.rs:389:9:389:12 | [SSA] arr1 | main.rs:390:15:390:18 | arr1 | | | main.rs:389:9:389:12 | arr1 | main.rs:389:9:389:12 | [SSA] arr1 | | +| main.rs:389:9:389:12 | arr1 | main.rs:389:9:389:12 | arr1 | | | main.rs:389:16:389:33 | [...] | main.rs:389:9:389:12 | arr1 | | | main.rs:390:9:390:10 | [SSA] n1 | main.rs:391:14:391:15 | n1 | | | main.rs:390:9:390:10 | n1 | main.rs:390:9:390:10 | [SSA] n1 | | +| main.rs:390:9:390:10 | n1 | main.rs:390:9:390:10 | n1 | | | main.rs:394:9:394:12 | [SSA] arr2 | main.rs:395:15:395:18 | arr2 | | | main.rs:394:9:394:12 | arr2 | main.rs:394:9:394:12 | [SSA] arr2 | | +| main.rs:394:9:394:12 | arr2 | main.rs:394:9:394:12 | arr2 | | | main.rs:394:16:394:24 | [...] | main.rs:394:9:394:12 | arr2 | | | main.rs:395:5:397:5 | for ... in ... { ... } | main.rs:388:21:398:1 | { ... } | | | main.rs:395:9:395:10 | [SSA] n2 | main.rs:396:14:396:15 | n2 | | | main.rs:395:9:395:10 | n2 | main.rs:395:9:395:10 | [SSA] n2 | | +| main.rs:395:9:395:10 | n2 | main.rs:395:9:395:10 | n2 | | | main.rs:401:9:401:12 | [SSA] arr1 | main.rs:402:11:402:14 | arr1 | | | main.rs:401:9:401:12 | arr1 | main.rs:401:9:401:12 | [SSA] arr1 | | +| main.rs:401:9:401:12 | arr1 | main.rs:401:9:401:12 | arr1 | | | main.rs:401:16:401:33 | [...] | main.rs:401:9:401:12 | arr1 | | | main.rs:402:5:408:5 | match arr1 { ... } | main.rs:400:26:409:1 | { ... } | | | main.rs:402:11:402:14 | arr1 | main.rs:403:9:403:17 | SlicePat | | | main.rs:403:10:403:10 | [SSA] a | main.rs:404:18:404:18 | a | | | main.rs:403:10:403:10 | a | main.rs:403:10:403:10 | [SSA] a | | +| main.rs:403:10:403:10 | a | main.rs:403:10:403:10 | a | | | main.rs:403:13:403:13 | [SSA] b | main.rs:405:18:405:18 | b | | | main.rs:403:13:403:13 | b | main.rs:403:13:403:13 | [SSA] b | | +| main.rs:403:13:403:13 | b | main.rs:403:13:403:13 | b | | | main.rs:403:16:403:16 | [SSA] c | main.rs:406:18:406:18 | c | | | main.rs:403:16:403:16 | c | main.rs:403:16:403:16 | [SSA] c | | +| main.rs:403:16:403:16 | c | main.rs:403:16:403:16 | c | | | main.rs:403:22:407:9 | { ... } | main.rs:402:5:408:5 | match arr1 { ... } | | -| main.rs:412:9:412:19 | [SSA] mut mut_arr | main.rs:413:10:413:16 | mut_arr | | -| main.rs:412:9:412:19 | mut mut_arr | main.rs:412:9:412:19 | [SSA] mut mut_arr | | +| main.rs:412:9:412:19 | mut mut_arr | main.rs:412:13:412:19 | mut_arr | | +| main.rs:412:13:412:19 | [SSA] mut_arr | main.rs:413:10:413:16 | mut_arr | | +| main.rs:412:13:412:19 | mut_arr | main.rs:412:13:412:19 | [SSA] mut_arr | | | main.rs:412:23:412:31 | [...] | main.rs:412:9:412:19 | mut mut_arr | | | main.rs:413:10:413:16 | [post] mut_arr | main.rs:415:5:415:11 | mut_arr | | | main.rs:413:10:413:16 | mut_arr | main.rs:415:5:415:11 | mut_arr | | @@ -487,13 +681,16 @@ localStep | main.rs:415:18:415:27 | source(...) | main.rs:415:5:415:14 | mut_arr[1] | | | main.rs:416:9:416:9 | [SSA] d | main.rs:417:10:417:10 | d | | | main.rs:416:9:416:9 | d | main.rs:416:9:416:9 | [SSA] d | | +| main.rs:416:9:416:9 | d | main.rs:416:9:416:9 | d | | | main.rs:416:13:416:19 | [post] mut_arr | main.rs:418:10:418:16 | mut_arr | | | main.rs:416:13:416:19 | mut_arr | main.rs:418:10:418:16 | mut_arr | | | main.rs:416:13:416:22 | mut_arr[1] | main.rs:416:9:416:9 | d | | | main.rs:423:39:423:43 | [SSA] names | main.rs:425:25:425:29 | names | | | main.rs:423:39:423:43 | names | main.rs:423:39:423:43 | [SSA] names | | +| main.rs:423:39:423:43 | names | main.rs:423:39:423:43 | names | | | main.rs:423:39:423:72 | ...: Vec::<...> | main.rs:423:39:423:43 | names | | | main.rs:424:9:424:20 | default_name | main.rs:424:9:424:20 | [SSA] default_name | | +| main.rs:424:9:424:20 | default_name | main.rs:424:9:424:20 | default_name | | | main.rs:424:24:424:45 | ... .to_string(...) | main.rs:424:9:424:20 | default_name | | | main.rs:424:24:424:45 | ... .to_string(...) | main.rs:425:9:425:20 | phi(default_name) | | | main.rs:425:5:431:5 | for ... in ... { ... } | main.rs:423:75:432:1 | { ... } | | @@ -501,48 +698,139 @@ localStep | main.rs:425:9:425:20 | phi(default_name) | main.rs:427:41:427:67 | default_name | | | main.rs:425:10:425:13 | [SSA] cond | main.rs:426:12:426:15 | cond | | | main.rs:425:10:425:13 | cond | main.rs:425:10:425:13 | [SSA] cond | | +| main.rs:425:10:425:13 | cond | main.rs:425:10:425:13 | cond | | | main.rs:425:16:425:19 | [SSA] name | main.rs:427:21:427:24 | name | | | main.rs:425:16:425:19 | name | main.rs:425:16:425:19 | [SSA] name | | +| main.rs:425:16:425:19 | name | main.rs:425:16:425:19 | name | | | main.rs:426:9:430:9 | if cond {...} | main.rs:425:31:431:5 | { ... } | | | main.rs:427:17:427:17 | [SSA] n | main.rs:428:18:428:18 | n | | | main.rs:427:17:427:17 | n | main.rs:427:17:427:17 | [SSA] n | | +| main.rs:427:17:427:17 | n | main.rs:427:17:427:17 | n | | | main.rs:427:21:427:68 | name.unwrap_or_else(...) | main.rs:427:17:427:17 | n | | | main.rs:427:41:427:67 | [post] default_name | main.rs:425:9:425:20 | phi(default_name) | | | main.rs:427:41:427:67 | closure self in \|...\| ... | main.rs:427:44:427:55 | this | | | main.rs:427:41:427:67 | default_name | main.rs:425:9:425:20 | phi(default_name) | | | main.rs:441:9:441:9 | [SSA] s | main.rs:442:10:442:10 | s | | | main.rs:441:9:441:9 | s | main.rs:441:9:441:9 | [SSA] s | | +| main.rs:441:9:441:9 | s | main.rs:441:9:441:9 | s | | | main.rs:441:13:441:27 | MacroExpr | main.rs:441:9:441:9 | s | | | main.rs:441:25:441:26 | source(...) | main.rs:441:13:441:27 | MacroExpr | | | main.rs:468:13:468:33 | result_questionmark(...) | main.rs:468:9:468:9 | _ | | | main.rs:480:36:480:41 | ...::new(...) | main.rs:480:36:480:41 | MacroExpr | | models | 1 | Sink: lang:std; crate::io::stdio::_print; log-injection; Argument[0] | -| 2 | Summary: lang:core; ::expect; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | -| 3 | Summary: lang:core; ::unwrap; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | -| 4 | Summary: lang:core; ::unwrap_or; Argument[0]; ReturnValue; value | -| 5 | Summary: lang:core; ::unwrap_or; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | -| 6 | Summary: lang:core; ::unwrap_or_default; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | -| 7 | Summary: lang:core; ::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value | -| 8 | Summary: lang:core; ::unwrap_or_else; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | -| 9 | Summary: lang:core; ::unwrap_unchecked; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | -| 10 | Summary: lang:core; ::expect; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value | -| 11 | Summary: lang:core; ::expect_err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value | -| 12 | Summary: lang:core; ::unwrap; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value | -| 13 | Summary: lang:core; ::unwrap_err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value | -| 14 | Summary: lang:core; ::unwrap_err_unchecked; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value | -| 15 | Summary: lang:core; ::unwrap_or; Argument[0]; ReturnValue; value | -| 16 | Summary: lang:core; ::unwrap_or; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value | -| 17 | Summary: lang:core; ::unwrap_or_default; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value | -| 18 | Summary: lang:core; ::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value | -| 19 | Summary: lang:core; ::unwrap_or_else; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value | -| 20 | Summary: lang:core; ::unwrap_unchecked; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value | -| 21 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | -| 22 | Summary: lang:core; crate::iter::traits::iterator::Iterator::collect; Argument[self].Element; ReturnValue.Element; value | -| 23 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Variant[crate::option::Option::Some(0)]; value | +| 2 | Summary: lang:core; ::clone; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue.Variant[crate::option::Option::Some(0)]; value | +| 3 | Summary: lang:core; ::from; Argument[0].Reference.Variant[crate::option::Option::Some(0)]; ReturnValue.Variant[crate::option::Option::Some(0)]; value | +| 4 | Summary: lang:core; ::from; Argument[0]; ReturnValue.Variant[crate::option::Option::Some(0)]; value | +| 5 | Summary: lang:core; ::and; Argument[0]; ReturnValue; value | +| 6 | Summary: lang:core; ::and_then; Argument[0].ReturnValue; ReturnValue; value | +| 7 | Summary: lang:core; ::and_then; Argument[self].Variant[crate::option::Option::Some(0)]; Argument[0].Parameter[0]; value | +| 8 | Summary: lang:core; ::as_mut; Argument[self].Reference.Variant[crate::option::Option::Some(0)]; ReturnValue.Variant[crate::option::Option::Some(0)]; value | +| 9 | Summary: lang:core; ::as_ref; Argument[self].Reference.Variant[crate::option::Option::Some(0)]; ReturnValue.Variant[crate::option::Option::Some(0)]; value | +| 10 | Summary: lang:core; ::cloned; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue.Variant[crate::option::Option::Some(0)]; value | +| 11 | Summary: lang:core; ::copied; Argument[self].Variant[crate::option::Option::Some(0)].Reference; ReturnValue.Variant[crate::option::Option::Some(0)]; value | +| 12 | Summary: lang:core; ::expect; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | +| 13 | Summary: lang:core; ::flatten; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | +| 14 | Summary: lang:core; ::get_or_insert; Argument[0]; Argument[self].Reference.Variant[crate::option::Option::Some(0)]; value | +| 15 | Summary: lang:core; ::get_or_insert; Argument[0]; ReturnValue; value | +| 16 | Summary: lang:core; ::get_or_insert; Argument[self].Reference.Variant[crate::option::Option::Some(0)]; ReturnValue; value | +| 17 | Summary: lang:core; ::get_or_insert_default; Argument[self].Reference.Variant[crate::option::Option::Some(0)]; ReturnValue; value | +| 18 | Summary: lang:core; ::get_or_insert_with; Argument[self].Reference.Variant[crate::option::Option::Some(0)]; ReturnValue; value | +| 19 | Summary: lang:core; ::insert; Argument[0]; Argument[self].Reference.Variant[crate::option::Option::Some(0)]; value | +| 20 | Summary: lang:core; ::insert; Argument[0]; ReturnValue; value | +| 21 | Summary: lang:core; ::insert; Argument[self].Reference.Variant[crate::option::Option::Some(0)]; ReturnValue; value | +| 22 | Summary: lang:core; ::inspect; Argument[self]; ReturnValue; value | +| 23 | Summary: lang:core; ::is_none_or; Argument[0].ReturnValue; ReturnValue; value | +| 24 | Summary: lang:core; ::is_none_or; Argument[self].Variant[crate::option::Option::Some(0)]; Argument[0].Parameter[0]; value | +| 25 | Summary: lang:core; ::is_some_and; Argument[0].ReturnValue; ReturnValue; value | +| 26 | Summary: lang:core; ::is_some_and; Argument[self].Variant[crate::option::Option::Some(0)]; Argument[0].Parameter[0]; value | +| 27 | Summary: lang:core; ::map; Argument[0].ReturnValue; ReturnValue.Variant[crate::option::Option::Some(0)]; value | +| 28 | Summary: lang:core; ::map; Argument[self].Variant[crate::option::Option::Some(0)]; Argument[0].Parameter[0]; value | +| 29 | Summary: lang:core; ::map_or; Argument[0]; ReturnValue; value | +| 30 | Summary: lang:core; ::map_or; Argument[1].ReturnValue; ReturnValue; value | +| 31 | Summary: lang:core; ::map_or; Argument[self].Variant[crate::option::Option::Some(0)]; Argument[1].Parameter[0]; value | +| 32 | Summary: lang:core; ::map_or_else; Argument[0].ReturnValue; ReturnValue; value | +| 33 | Summary: lang:core; ::map_or_else; Argument[1].ReturnValue; ReturnValue; value | +| 34 | Summary: lang:core; ::map_or_else; Argument[self].Variant[crate::option::Option::Some(0)]; Argument[1].Parameter[0]; value | +| 35 | Summary: lang:core; ::ok_or; Argument[0]; ReturnValue.Variant[crate::result::Result::Err(0)]; value | +| 36 | Summary: lang:core; ::ok_or; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue.Variant[crate::result::Result::Ok(0)]; value | +| 37 | Summary: lang:core; ::ok_or_else; Argument[0].ReturnValue; ReturnValue.Variant[crate::result::Result::Err(0)]; value | +| 38 | Summary: lang:core; ::ok_or_else; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue.Variant[crate::result::Result::Ok(0)]; value | +| 39 | Summary: lang:core; ::or; Argument[0]; ReturnValue; value | +| 40 | Summary: lang:core; ::or; Argument[self]; ReturnValue; value | +| 41 | Summary: lang:core; ::or_else; Argument[0].ReturnValue; ReturnValue; value | +| 42 | Summary: lang:core; ::or_else; Argument[self]; ReturnValue; value | +| 43 | Summary: lang:core; ::take_if; Argument[self].Reference.Variant[crate::option::Option::Some(0)]; Argument[0].Parameter[0]; value | +| 44 | Summary: lang:core; ::transpose; Argument[self].Variant[crate::option::Option::Some(0)].Variant[crate::result::Result::Err(0)]; ReturnValue.Variant[crate::result::Result::Err(0)]; value | +| 45 | Summary: lang:core; ::transpose; Argument[self].Variant[crate::option::Option::Some(0)].Variant[crate::result::Result::Ok(0)]; ReturnValue.Variant[crate::result::Result::Ok(0)].Variant[crate::option::Option::Some(0)]; value | +| 46 | Summary: lang:core; ::unwrap; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | +| 47 | Summary: lang:core; ::unwrap_or; Argument[0]; ReturnValue; value | +| 48 | Summary: lang:core; ::unwrap_or; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | +| 49 | Summary: lang:core; ::unwrap_or_default; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | +| 50 | Summary: lang:core; ::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value | +| 51 | Summary: lang:core; ::unwrap_or_else; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | +| 52 | Summary: lang:core; ::unwrap_unchecked; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | +| 53 | Summary: lang:core; ::unzip; Argument[self].Variant[crate::option::Option::Some(0)].Tuple[0]; ReturnValue.Tuple[0].Variant[crate::option::Option::Some(0)]; value | +| 54 | Summary: lang:core; ::unzip; Argument[self].Variant[crate::option::Option::Some(0)].Tuple[1]; ReturnValue.Tuple[1].Variant[crate::option::Option::Some(0)]; value | +| 55 | Summary: lang:core; ::xor; Argument[0]; ReturnValue; value | +| 56 | Summary: lang:core; ::xor; Argument[self]; ReturnValue; value | +| 57 | Summary: lang:core; ::zip; Argument[0].Variant[crate::option::Option::Some(0)]; ReturnValue.Variant[crate::option::Option::Some(0)].Tuple[1]; value | +| 58 | Summary: lang:core; ::zip; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue.Variant[crate::option::Option::Some(0)].Tuple[0]; value | +| 59 | Summary: lang:core; ::zip_with; Argument[0].Variant[crate::option::Option::Some(0)]; Argument[1].Parameter[1]; value | +| 60 | Summary: lang:core; ::zip_with; Argument[1].ReturnValue; ReturnValue.Variant[crate::option::Option::Some(0)]; value | +| 61 | Summary: lang:core; ::zip_with; Argument[self].Variant[crate::option::Option::Some(0)]; Argument[1].Parameter[0]; value | +| 62 | Summary: lang:core; ::expect; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value | +| 63 | Summary: lang:core; ::expect_err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value | +| 64 | Summary: lang:core; ::unwrap; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value | +| 65 | Summary: lang:core; ::unwrap_err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value | +| 66 | Summary: lang:core; ::unwrap_err_unchecked; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value | +| 67 | Summary: lang:core; ::unwrap_or; Argument[0]; ReturnValue; value | +| 68 | Summary: lang:core; ::unwrap_or; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value | +| 69 | Summary: lang:core; ::unwrap_or_default; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value | +| 70 | Summary: lang:core; ::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value | +| 71 | Summary: lang:core; ::unwrap_or_else; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value | +| 72 | Summary: lang:core; ::unwrap_unchecked; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value | +| 73 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | +| 74 | Summary: lang:core; crate::iter::traits::iterator::Iterator::collect; Argument[self].Element; ReturnValue.Element; value | +| 75 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Variant[crate::option::Option::Some(0)]; value | storeStep +| file://:0:0:0:0 | [summary] to write: Argument[0].Variant[crate::option::Option::Some(0)] in lang:core::_::::zip_with | Some | file://:0:0:0:0 | [post] [summary param] 0 in lang:core::_::::zip_with | +| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::::get_or_insert | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::get_or_insert | +| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::::insert | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::insert | +| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::::take_if | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::take_if | +| file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::get_or_insert | Some | file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::::get_or_insert | +| file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::insert | Some | file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::::insert | +| file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::take_if | Some | file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::::take_if | +| file://:0:0:0:0 | [summary] to write: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::and_then | Some | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::and_then | +| file://:0:0:0:0 | [summary] to write: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::is_none_or | Some | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::is_none_or | +| file://:0:0:0:0 | [summary] to write: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::is_some_and | Some | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::is_some_and | +| file://:0:0:0:0 | [summary] to write: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::map | Some | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::map | +| file://:0:0:0:0 | [summary] to write: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::map_or | Some | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::map_or | +| file://:0:0:0:0 | [summary] to write: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::map_or_else | Some | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::map_or_else | +| file://:0:0:0:0 | [summary] to write: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::zip_with | Some | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::zip_with | | file://:0:0:0:0 | [summary] to write: ReturnValue.Element in lang:core::_::crate::iter::traits::iterator::Iterator::collect | element | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::crate::iter::traits::iterator::Iterator::collect | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Tuple[0] in lang:core::_::::unzip | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unzip | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Tuple[0].Variant[crate::option::Option::Some(0)] in lang:core::_::::unzip | Some | file://:0:0:0:0 | [summary] to write: ReturnValue.Tuple[0] in lang:core::_::::unzip | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Tuple[1] in lang:core::_::::unzip | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unzip | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Tuple[1].Variant[crate::option::Option::Some(0)] in lang:core::_::::unzip | Some | file://:0:0:0:0 | [summary] to write: ReturnValue.Tuple[1] in lang:core::_::::unzip | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::clone | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::clone | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::from | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::from | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::as_mut | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::as_mut | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::as_ref | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::as_ref | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::cloned | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::cloned | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::copied | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::copied | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::map | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::map | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::zip | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::zip | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::zip_with | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::zip_with | | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::crate::iter::traits::iterator::Iterator::nth | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::crate::iter::traits::iterator::Iterator::nth | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)].Tuple[0] in lang:core::_::::zip | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::zip | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)].Tuple[1] in lang:core::_::::zip | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::option::Option::Some(0)] in lang:core::_::::zip | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Err(0)] in lang:core::_::::ok_or | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::ok_or | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Err(0)] in lang:core::_::::ok_or_else | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::ok_or_else | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Err(0)] in lang:core::_::::transpose | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::transpose | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in lang:core::_::::ok_or | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::ok_or | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in lang:core::_::::ok_or_else | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::ok_or_else | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in lang:core::_::::transpose | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::transpose | | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::bytes | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::bytes | | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text | | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text_with_charset | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text_with_charset | @@ -550,6 +838,7 @@ storeStep | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text | | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text_with_charset | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text_with_charset | +| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)].Variant[crate::option::Option::Some(0)] in lang:core::_::::transpose | Some | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in lang:core::_::::transpose | | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)].Variant[crate::option::Option::Some(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | Some | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | | main.rs:94:14:94:22 | source(...) | tuple.0 | main.rs:94:13:94:26 | TupleExpr | | main.rs:94:25:94:25 | 2 | tuple.1 | main.rs:94:13:94:26 | TupleExpr | @@ -628,14 +917,50 @@ storeStep | main.rs:427:41:427:67 | default_name | captured default_name | main.rs:427:41:427:67 | \|...\| ... | | main.rs:449:27:449:27 | 0 | Some | main.rs:449:22:449:28 | Some(...) | readStep +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::from | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::::from | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::and_then | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::and_then | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::is_none_or | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::is_none_or | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::is_some_and | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::is_some_and | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::map | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::map | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::map_or_else | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::map_or_else | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::ok_or_else | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::ok_or_else | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::or_else | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::or_else | | file://:0:0:0:0 | [summary param] 0 in lang:core::_::::unwrap_or_else | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::unwrap_or_else | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::zip | Some | file://:0:0:0:0 | [summary] read: Argument[0].Variant[crate::option::Option::Some(0)] in lang:core::_::::zip | +| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::zip_with | Some | file://:0:0:0:0 | [summary] read: Argument[0].Variant[crate::option::Option::Some(0)] in lang:core::_::::zip_with | | file://:0:0:0:0 | [summary param] 0 in lang:core::_::::unwrap_or_else | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::unwrap_or_else | +| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::map_or | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::map_or | +| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::map_or_else | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::map_or_else | +| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::zip_with | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::zip_with | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::clone | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::and_then | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::and_then | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::as_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_mut | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::as_ref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_ref | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::cloned | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::cloned | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::copied | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::copied | | file://:0:0:0:0 | [summary param] self in lang:core::_::::expect | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::expect | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::flatten | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::flatten | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::get_or_insert | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::get_or_insert | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::get_or_insert_default | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::get_or_insert_default | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::get_or_insert_with | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::get_or_insert_with | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::insert | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::insert | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::is_none_or | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::is_none_or | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::is_some_and | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::is_some_and | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::map | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::map | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::map_or | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::map_or | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::map_or_else | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::map_or_else | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::ok_or | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::ok_or | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::ok_or_else | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::ok_or_else | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::take_if | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::take_if | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::transpose | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::transpose | | file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap | | file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_or | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap_or | | file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_or_default | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap_or_default | | file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_or_else | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap_or_else | | file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_unchecked | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unwrap_unchecked | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::unzip | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unzip | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::zip | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::zip | +| file://:0:0:0:0 | [summary param] self in lang:core::_::::zip_with | Some | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::zip_with | | file://:0:0:0:0 | [summary param] self in lang:core::_::::expect | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::expect | | file://:0:0:0:0 | [summary param] self in lang:core::_::::expect_err | Err | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Err(0)] in lang:core::_::::expect_err | | file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::unwrap | @@ -647,6 +972,19 @@ readStep | file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_unchecked | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::result::Result::Ok(0)] in lang:core::_::::unwrap_unchecked | | file://:0:0:0:0 | [summary param] self in lang:core::_::crate::iter::traits::iterator::Iterator::collect | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::collect | | file://:0:0:0:0 | [summary param] self in lang:core::_::crate::iter::traits::iterator::Iterator::nth | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::nth | +| file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::::from | Some | file://:0:0:0:0 | [summary] read: Argument[0].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::from | +| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_mut | Some | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::as_mut | +| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_ref | Some | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::as_ref | +| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::get_or_insert | Some | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::get_or_insert | +| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::get_or_insert_default | Some | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::get_or_insert_default | +| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::get_or_insert_with | Some | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::get_or_insert_with | +| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::insert | Some | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::insert | +| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::take_if | Some | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Variant[crate::option::Option::Some(0)] in lang:core::_::::take_if | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::copied | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)].Reference in lang:core::_::::copied | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::transpose | Err | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)].Variant[crate::result::Result::Err(0)] in lang:core::_::::transpose | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::transpose | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)].Variant[crate::result::Result::Ok(0)] in lang:core::_::::transpose | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unzip | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)].Tuple[0] in lang:core::_::::unzip | +| file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)] in lang:core::_::::unzip | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[self].Variant[crate::option::Option::Some(0)].Tuple[1] in lang:core::_::::unzip | | main.rs:33:9:33:15 | Some(...) | Some | main.rs:33:14:33:14 | _ | | main.rs:87:11:87:11 | i | &ref | main.rs:87:10:87:11 | * ... | | main.rs:95:10:95:10 | a | tuple.0 | main.rs:95:10:95:12 | a.0 | diff --git a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected index 72d1b7df115..6a51435eff3 100644 --- a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected @@ -1,25 +1,26 @@ models -| 1 | Summary: lang:core; ::unwrap; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | -| 2 | Summary: lang:core; ::unwrap; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value | +| 1 | Summary: lang:core; ::clone; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue.Variant[crate::option::Option::Some(0)]; value | +| 2 | Summary: lang:core; ::unwrap; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value | +| 3 | Summary: lang:core; ::unwrap; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value | edges | main.rs:13:9:13:9 | a [Some] | main.rs:14:10:14:10 | a [Some] | provenance | | | main.rs:13:9:13:9 | a [Some] | main.rs:15:13:15:13 | a [Some] | provenance | | | main.rs:13:13:13:28 | Some(...) [Some] | main.rs:13:9:13:9 | a [Some] | provenance | | | main.rs:13:18:13:27 | source(...) | main.rs:13:13:13:28 | Some(...) [Some] | provenance | | -| main.rs:14:10:14:10 | a [Some] | main.rs:14:10:14:19 | a.unwrap(...) | provenance | MaD:1 | +| main.rs:14:10:14:10 | a [Some] | main.rs:14:10:14:19 | a.unwrap(...) | provenance | MaD:2 | | main.rs:15:9:15:9 | b [Some] | main.rs:16:10:16:10 | b [Some] | provenance | | -| main.rs:15:13:15:13 | a [Some] | main.rs:15:13:15:21 | a.clone(...) [Some] | provenance | | +| main.rs:15:13:15:13 | a [Some] | main.rs:15:13:15:21 | a.clone(...) [Some] | provenance | MaD:1 | | main.rs:15:13:15:21 | a.clone(...) [Some] | main.rs:15:9:15:9 | b [Some] | provenance | | -| main.rs:16:10:16:10 | b [Some] | main.rs:16:10:16:19 | b.unwrap(...) | provenance | MaD:1 | +| main.rs:16:10:16:10 | b [Some] | main.rs:16:10:16:19 | b.unwrap(...) | provenance | MaD:2 | | main.rs:20:9:20:9 | a [Ok] | main.rs:21:10:21:10 | a [Ok] | provenance | | | main.rs:20:9:20:9 | a [Ok] | main.rs:22:13:22:13 | a [Ok] | provenance | | | main.rs:20:31:20:44 | Ok(...) [Ok] | main.rs:20:9:20:9 | a [Ok] | provenance | | | main.rs:20:34:20:43 | source(...) | main.rs:20:31:20:44 | Ok(...) [Ok] | provenance | | -| main.rs:21:10:21:10 | a [Ok] | main.rs:21:10:21:19 | a.unwrap(...) | provenance | MaD:2 | +| main.rs:21:10:21:10 | a [Ok] | main.rs:21:10:21:19 | a.unwrap(...) | provenance | MaD:3 | | main.rs:22:9:22:9 | b [Ok] | main.rs:23:10:23:10 | b [Ok] | provenance | | | main.rs:22:13:22:13 | a [Ok] | main.rs:22:13:22:21 | a.clone(...) [Ok] | provenance | | | main.rs:22:13:22:21 | a.clone(...) [Ok] | main.rs:22:9:22:9 | b [Ok] | provenance | | -| main.rs:23:10:23:10 | b [Ok] | main.rs:23:10:23:19 | b.unwrap(...) | provenance | MaD:2 | +| main.rs:23:10:23:10 | b [Ok] | main.rs:23:10:23:19 | b.unwrap(...) | provenance | MaD:3 | | main.rs:27:9:27:9 | a | main.rs:28:10:28:10 | a | provenance | | | main.rs:27:9:27:9 | a | main.rs:29:13:29:13 | a | provenance | | | main.rs:27:13:27:22 | source(...) | main.rs:27:9:27:9 | a | provenance | | diff --git a/rust/ql/test/library-tests/dataflow/pointers/inline-flow.expected b/rust/ql/test/library-tests/dataflow/pointers/inline-flow.expected index 026159fa9af..66d5c1ad666 100644 --- a/rust/ql/test/library-tests/dataflow/pointers/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/pointers/inline-flow.expected @@ -18,6 +18,23 @@ edges | main.rs:42:15:42:24 | source(...) | main.rs:42:9:42:11 | val | provenance | | | main.rs:43:26:43:29 | &val [&ref] | main.rs:37:25:37:32 | ...: ... [&ref] | provenance | | | main.rs:43:27:43:29 | val | main.rs:43:26:43:29 | &val [&ref] | provenance | | +| main.rs:50:13:50:13 | a | main.rs:51:13:51:17 | ref p | provenance | | +| main.rs:50:17:50:26 | source(...) | main.rs:50:13:50:13 | a | provenance | | +| main.rs:51:13:51:17 | ref p | main.rs:51:17:51:17 | p [&ref] | provenance | | +| main.rs:51:17:51:17 | p [&ref] | main.rs:52:15:52:15 | p [&ref] | provenance | | +| main.rs:52:15:52:15 | p [&ref] | main.rs:52:14:52:15 | * ... | provenance | | +| main.rs:56:13:56:21 | ref mut a | main.rs:56:21:56:21 | a [&ref] | provenance | | +| main.rs:56:21:56:21 | a [&ref] | main.rs:57:15:57:15 | a [&ref] | provenance | | +| main.rs:56:25:56:34 | source(...) | main.rs:56:13:56:21 | ref mut a | provenance | | +| main.rs:57:15:57:15 | a [&ref] | main.rs:57:14:57:15 | * ... | provenance | | +| main.rs:63:13:63:13 | a [Some] | main.rs:64:23:64:23 | a [Some] | provenance | | +| main.rs:63:17:63:32 | Some(...) [Some] | main.rs:63:13:63:13 | a [Some] | provenance | | +| main.rs:63:22:63:31 | source(...) | main.rs:63:17:63:32 | Some(...) [Some] | provenance | | +| main.rs:64:23:64:23 | a [Some] | main.rs:65:13:65:23 | Some(...) [Some] | provenance | | +| main.rs:65:13:65:23 | Some(...) [Some] | main.rs:65:18:65:22 | ref p | provenance | | +| main.rs:65:18:65:22 | ref p | main.rs:65:22:65:22 | p [&ref] | provenance | | +| main.rs:65:22:65:22 | p [&ref] | main.rs:65:34:65:34 | p [&ref] | provenance | | +| main.rs:65:34:65:34 | p [&ref] | main.rs:65:33:65:34 | * ... | provenance | | | main.rs:76:18:76:21 | SelfParam [MyNumber] | main.rs:77:15:77:18 | self [MyNumber] | provenance | | | main.rs:77:15:77:18 | self [MyNumber] | main.rs:78:13:78:38 | ...::MyNumber(...) [MyNumber] | provenance | | | main.rs:78:13:78:38 | ...::MyNumber(...) [MyNumber] | main.rs:78:32:78:37 | number | provenance | | @@ -69,6 +86,26 @@ nodes | main.rs:42:15:42:24 | source(...) | semmle.label | source(...) | | main.rs:43:26:43:29 | &val [&ref] | semmle.label | &val [&ref] | | main.rs:43:27:43:29 | val | semmle.label | val | +| main.rs:50:13:50:13 | a | semmle.label | a | +| main.rs:50:17:50:26 | source(...) | semmle.label | source(...) | +| main.rs:51:13:51:17 | ref p | semmle.label | ref p | +| main.rs:51:17:51:17 | p [&ref] | semmle.label | p [&ref] | +| main.rs:52:14:52:15 | * ... | semmle.label | * ... | +| main.rs:52:15:52:15 | p [&ref] | semmle.label | p [&ref] | +| main.rs:56:13:56:21 | ref mut a | semmle.label | ref mut a | +| main.rs:56:21:56:21 | a [&ref] | semmle.label | a [&ref] | +| main.rs:56:25:56:34 | source(...) | semmle.label | source(...) | +| main.rs:57:14:57:15 | * ... | semmle.label | * ... | +| main.rs:57:15:57:15 | a [&ref] | semmle.label | a [&ref] | +| main.rs:63:13:63:13 | a [Some] | semmle.label | a [Some] | +| main.rs:63:17:63:32 | Some(...) [Some] | semmle.label | Some(...) [Some] | +| main.rs:63:22:63:31 | source(...) | semmle.label | source(...) | +| main.rs:64:23:64:23 | a [Some] | semmle.label | a [Some] | +| main.rs:65:13:65:23 | Some(...) [Some] | semmle.label | Some(...) [Some] | +| main.rs:65:18:65:22 | ref p | semmle.label | ref p | +| main.rs:65:22:65:22 | p [&ref] | semmle.label | p [&ref] | +| main.rs:65:33:65:34 | * ... | semmle.label | * ... | +| main.rs:65:34:65:34 | p [&ref] | semmle.label | p [&ref] | | main.rs:76:18:76:21 | SelfParam [MyNumber] | semmle.label | SelfParam [MyNumber] | | main.rs:76:31:80:5 | { ... } | semmle.label | { ... } | | main.rs:77:15:77:18 | self [MyNumber] | semmle.label | self [MyNumber] | @@ -109,6 +146,9 @@ testFailures | main.rs:16:10:16:10 | c | main.rs:13:13:13:22 | source(...) | main.rs:16:10:16:10 | c | $@ | main.rs:13:13:13:22 | source(...) | source(...) | | main.rs:32:10:32:11 | * ... | main.rs:31:10:31:19 | source(...) | main.rs:32:10:32:11 | * ... | $@ | main.rs:31:10:31:19 | source(...) | source(...) | | main.rs:38:10:38:10 | n | main.rs:42:15:42:24 | source(...) | main.rs:38:10:38:10 | n | $@ | main.rs:42:15:42:24 | source(...) | source(...) | +| main.rs:52:14:52:15 | * ... | main.rs:50:17:50:26 | source(...) | main.rs:52:14:52:15 | * ... | $@ | main.rs:50:17:50:26 | source(...) | source(...) | +| main.rs:57:14:57:15 | * ... | main.rs:56:25:56:34 | source(...) | main.rs:57:14:57:15 | * ... | $@ | main.rs:56:25:56:34 | source(...) | source(...) | +| main.rs:65:33:65:34 | * ... | main.rs:63:22:63:31 | source(...) | main.rs:65:33:65:34 | * ... | $@ | main.rs:63:22:63:31 | source(...) | source(...) | | main.rs:91:10:91:30 | my_number.to_number(...) | main.rs:90:40:90:49 | source(...) | main.rs:91:10:91:30 | my_number.to_number(...) | $@ | main.rs:90:40:90:49 | source(...) | source(...) | | main.rs:101:10:101:31 | my_number.get_number(...) | main.rs:100:41:100:50 | source(...) | main.rs:101:10:101:31 | my_number.get_number(...) | $@ | main.rs:100:41:100:50 | source(...) | source(...) | | main.rs:111:10:111:10 | b | main.rs:105:15:105:24 | source(...) | main.rs:111:10:111:10 | b | $@ | main.rs:105:15:105:24 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/pointers/main.rs b/rust/ql/test/library-tests/dataflow/pointers/main.rs index f8fae1bec1d..d9d5a5298d2 100644 --- a/rust/ql/test/library-tests/dataflow/pointers/main.rs +++ b/rust/ql/test/library-tests/dataflow/pointers/main.rs @@ -49,12 +49,12 @@ mod test_ref_pattern { pub fn read_through_ref() { let a = source(21); let ref p = a; - sink(*p); // $ MISSING: hasValueFlow=21 + sink(*p); // $ hasValueFlow=21 } pub fn write_through_ref_mut() { let ref mut a = source(78); - sink(*a); // $ MISSING: hasValueFlow=78 + sink(*a); // $ hasValueFlow=78 *a = 0; sink(*a); // now cleared } @@ -62,7 +62,7 @@ mod test_ref_pattern { pub fn ref_pattern_in_match() { let a = Some(source(17)); let b = match a { - Some(ref p) => sink(*p), // $ MISSING: hasValueFlow=17 + Some(ref p) => sink(*p), // $ hasValueFlow=17 None => (), }; } diff --git a/rust/ql/test/library-tests/variables/Cfg.expected b/rust/ql/test/library-tests/variables/Cfg.expected index 6dc5a48fcbd..d562f6c23d6 100644 --- a/rust/ql/test/library-tests/variables/Cfg.expected +++ b/rust/ql/test/library-tests/variables/Cfg.expected @@ -1,6 +1,7 @@ edges | main.rs:3:1:5:1 | enter fn print_str | main.rs:3:14:3:14 | s | | | main.rs:3:1:5:1 | exit fn print_str (normal) | main.rs:3:1:5:1 | exit fn print_str | | +| main.rs:3:14:3:14 | s | main.rs:3:14:3:14 | s | | | main.rs:3:14:3:14 | s | main.rs:3:14:3:20 | ...: ... | match | | main.rs:3:14:3:20 | ...: ... | main.rs:4:5:4:22 | ExprStmt | | | main.rs:3:23:5:1 | { ... } | main.rs:3:1:5:1 | exit fn print_str (normal) | | @@ -19,6 +20,7 @@ edges | main.rs:4:20:4:20 | s | main.rs:4:14:4:20 | FormatArgsExpr | | | main.rs:7:1:9:1 | enter fn print_i64 | main.rs:7:14:7:14 | i | | | main.rs:7:1:9:1 | exit fn print_i64 (normal) | main.rs:7:1:9:1 | exit fn print_i64 | | +| main.rs:7:14:7:14 | i | main.rs:7:14:7:14 | i | | | main.rs:7:14:7:14 | i | main.rs:7:14:7:19 | ...: i64 | match | | main.rs:7:14:7:19 | ...: i64 | main.rs:8:5:8:22 | ExprStmt | | | main.rs:7:22:9:1 | { ... } | main.rs:7:1:9:1 | exit fn print_i64 (normal) | | @@ -37,6 +39,7 @@ edges | main.rs:8:20:8:20 | i | main.rs:8:14:8:20 | FormatArgsExpr | | | main.rs:11:1:13:1 | enter fn print_i64_ref | main.rs:11:18:11:18 | i | | | main.rs:11:1:13:1 | exit fn print_i64_ref (normal) | main.rs:11:1:13:1 | exit fn print_i64_ref | | +| main.rs:11:18:11:18 | i | main.rs:11:18:11:18 | i | | | main.rs:11:18:11:18 | i | main.rs:11:18:11:24 | ...: ... | match | | main.rs:11:18:11:24 | ...: ... | main.rs:12:5:12:13 | print_i64 | | | main.rs:11:27:13:1 | { ... } | main.rs:11:1:13:1 | exit fn print_i64_ref (normal) | | @@ -48,6 +51,7 @@ edges | main.rs:15:1:18:1 | exit fn immutable_variable (normal) | main.rs:15:1:18:1 | exit fn immutable_variable | | | main.rs:15:25:18:1 | { ... } | main.rs:15:1:18:1 | exit fn immutable_variable (normal) | | | main.rs:16:5:16:17 | let ... = "a" | main.rs:16:14:16:16 | "a" | | +| main.rs:16:9:16:10 | x1 | main.rs:16:9:16:10 | x1 | | | main.rs:16:9:16:10 | x1 | main.rs:17:5:17:18 | ExprStmt | match | | main.rs:16:14:16:16 | "a" | main.rs:16:9:16:10 | x1 | | | main.rs:17:5:17:13 | print_str | main.rs:17:15:17:16 | x1 | | @@ -59,7 +63,8 @@ edges | main.rs:20:23:25:1 | { ... } | main.rs:20:1:25:1 | exit fn mutable_variable (normal) | | | main.rs:21:5:21:19 | let ... = 4 | main.rs:21:18:21:18 | 4 | | | main.rs:21:9:21:14 | mut x2 | main.rs:22:5:22:18 | ExprStmt | match | -| main.rs:21:18:21:18 | 4 | main.rs:21:9:21:14 | mut x2 | | +| main.rs:21:13:21:14 | x2 | main.rs:21:9:21:14 | mut x2 | | +| main.rs:21:18:21:18 | 4 | main.rs:21:13:21:14 | x2 | | | main.rs:22:5:22:13 | print_i64 | main.rs:22:15:22:16 | x2 | | | main.rs:22:5:22:17 | print_i64(...) | main.rs:23:5:23:11 | ExprStmt | | | main.rs:22:5:22:18 | ExprStmt | main.rs:22:5:22:13 | print_i64 | | @@ -77,7 +82,8 @@ edges | main.rs:27:40:32:1 | { ... } | main.rs:27:1:32:1 | exit fn mutable_variable_immutable_borrow (normal) | | | main.rs:28:5:28:18 | let ... = 1 | main.rs:28:17:28:17 | 1 | | | main.rs:28:9:28:13 | mut x | main.rs:29:5:29:22 | ExprStmt | match | -| main.rs:28:17:28:17 | 1 | main.rs:28:9:28:13 | mut x | | +| main.rs:28:13:28:13 | x | main.rs:28:9:28:13 | mut x | | +| main.rs:28:17:28:17 | 1 | main.rs:28:13:28:13 | x | | | main.rs:29:5:29:17 | print_i64_ref | main.rs:29:20:29:20 | x | | | main.rs:29:5:29:21 | print_i64_ref(...) | main.rs:30:5:30:10 | ExprStmt | | | main.rs:29:5:29:22 | ExprStmt | main.rs:29:5:29:17 | print_i64_ref | | @@ -96,6 +102,7 @@ edges | main.rs:34:1:40:1 | exit fn variable_shadow1 (normal) | main.rs:34:1:40:1 | exit fn variable_shadow1 | | | main.rs:34:23:40:1 | { ... } | main.rs:34:1:40:1 | exit fn variable_shadow1 (normal) | | | main.rs:35:5:35:15 | let ... = 1 | main.rs:35:14:35:14 | 1 | | +| main.rs:35:9:35:10 | x3 | main.rs:35:9:35:10 | x3 | | | main.rs:35:9:35:10 | x3 | main.rs:36:5:36:18 | ExprStmt | match | | main.rs:35:14:35:14 | 1 | main.rs:35:9:35:10 | x3 | | | main.rs:36:5:36:13 | print_i64 | main.rs:36:15:36:16 | x3 | | @@ -103,6 +110,7 @@ edges | main.rs:36:5:36:18 | ExprStmt | main.rs:36:5:36:13 | print_i64 | | | main.rs:36:15:36:16 | x3 | main.rs:36:5:36:17 | print_i64(...) | | | main.rs:37:5:38:15 | let ... = ... | main.rs:38:9:38:10 | x3 | | +| main.rs:37:9:37:10 | x3 | main.rs:37:9:37:10 | x3 | | | main.rs:37:9:37:10 | x3 | main.rs:39:5:39:18 | ExprStmt | match | | main.rs:38:9:38:10 | x3 | main.rs:38:14:38:14 | 1 | | | main.rs:38:9:38:14 | ... + ... | main.rs:37:9:37:10 | x3 | | @@ -115,6 +123,7 @@ edges | main.rs:42:1:50:1 | exit fn variable_shadow2 (normal) | main.rs:42:1:50:1 | exit fn variable_shadow2 | | | main.rs:42:23:50:1 | { ... } | main.rs:42:1:50:1 | exit fn variable_shadow2 (normal) | | | main.rs:43:5:43:17 | let ... = "a" | main.rs:43:14:43:16 | "a" | | +| main.rs:43:9:43:10 | x4 | main.rs:43:9:43:10 | x4 | | | main.rs:43:9:43:10 | x4 | main.rs:44:5:44:18 | ExprStmt | match | | main.rs:43:14:43:16 | "a" | main.rs:43:9:43:10 | x4 | | | main.rs:44:5:44:13 | print_str | main.rs:44:15:44:16 | x4 | | @@ -124,6 +133,7 @@ edges | main.rs:45:5:48:5 | ExprStmt | main.rs:46:9:46:21 | let ... = "b" | | | main.rs:45:5:48:5 | { ... } | main.rs:49:5:49:18 | ExprStmt | | | main.rs:46:9:46:21 | let ... = "b" | main.rs:46:18:46:20 | "b" | | +| main.rs:46:13:46:14 | x4 | main.rs:46:13:46:14 | x4 | | | main.rs:46:13:46:14 | x4 | main.rs:47:9:47:22 | ExprStmt | match | | main.rs:46:18:46:20 | "b" | main.rs:46:13:46:14 | x4 | | | main.rs:47:9:47:17 | print_str | main.rs:47:19:47:20 | x4 | | @@ -140,10 +150,14 @@ edges | main.rs:58:5:67:47 | let ... = ... | main.rs:67:11:67:13 | "a" | | | main.rs:58:9:67:5 | TuplePat | main.rs:59:9:62:9 | TuplePat | match | | main.rs:59:9:62:9 | TuplePat | main.rs:60:13:60:14 | a1 | match | +| main.rs:60:13:60:14 | a1 | main.rs:60:13:60:14 | a1 | | | main.rs:60:13:60:14 | a1 | main.rs:61:13:61:14 | b1 | match | +| main.rs:61:13:61:14 | b1 | main.rs:61:13:61:14 | b1 | | | main.rs:61:13:61:14 | b1 | main.rs:63:9:66:9 | Point {...} | match | | main.rs:63:9:66:9 | Point {...} | main.rs:64:13:64:13 | x | match | +| main.rs:64:13:64:13 | x | main.rs:64:13:64:13 | x | | | main.rs:64:13:64:13 | x | main.rs:65:13:65:13 | y | match | +| main.rs:65:13:65:13 | y | main.rs:65:13:65:13 | y | | | main.rs:65:13:65:13 | y | main.rs:68:5:68:18 | ExprStmt | match | | main.rs:67:9:67:46 | TupleExpr | main.rs:58:9:67:5 | TuplePat | | | main.rs:67:10:67:19 | TupleExpr | main.rs:67:33:67:35 | "x" | | @@ -172,13 +186,16 @@ edges | main.rs:74:1:82:1 | exit fn let_pattern2 (normal) | main.rs:74:1:82:1 | exit fn let_pattern2 | | | main.rs:74:19:82:1 | { ... } | main.rs:74:1:82:1 | exit fn let_pattern2 (normal) | | | main.rs:75:5:75:38 | let ... = ... | main.rs:75:25:75:27 | "a" | | +| main.rs:75:9:75:10 | p1 | main.rs:75:9:75:10 | p1 | | | main.rs:75:9:75:10 | p1 | main.rs:76:5:79:11 | let ... = p1 | match | | main.rs:75:14:75:37 | Point {...} | main.rs:75:9:75:10 | p1 | | | main.rs:75:25:75:27 | "a" | main.rs:75:33:75:35 | "b" | | | main.rs:75:33:75:35 | "b" | main.rs:75:14:75:37 | Point {...} | | | main.rs:76:5:79:11 | let ... = p1 | main.rs:79:9:79:10 | p1 | | | main.rs:76:9:79:5 | Point {...} | main.rs:77:12:77:13 | a2 | match | +| main.rs:77:12:77:13 | a2 | main.rs:77:12:77:13 | a2 | | | main.rs:77:12:77:13 | a2 | main.rs:78:12:78:13 | b2 | match | +| main.rs:78:12:78:13 | b2 | main.rs:78:12:78:13 | b2 | | | main.rs:78:12:78:13 | b2 | main.rs:80:5:80:18 | ExprStmt | match | | main.rs:79:9:79:10 | p1 | main.rs:76:9:79:5 | Point {...} | | | main.rs:80:5:80:13 | print_str | main.rs:80:15:80:16 | a2 | | @@ -193,6 +210,7 @@ edges | main.rs:84:1:91:1 | exit fn let_pattern3 (normal) | main.rs:84:1:91:1 | exit fn let_pattern3 | | | main.rs:84:19:91:1 | { ... } | main.rs:84:1:91:1 | exit fn let_pattern3 (normal) | | | main.rs:85:5:85:42 | let ... = ... | main.rs:85:14:85:17 | Some | | +| main.rs:85:9:85:10 | s1 | main.rs:85:9:85:10 | s1 | | | main.rs:85:9:85:10 | s1 | main.rs:87:8:88:12 | let ... = s1 | match | | main.rs:85:14:85:17 | Some | main.rs:85:19:85:30 | ...::from | | | main.rs:85:14:85:41 | Some(...) | main.rs:85:9:85:10 | s1 | | @@ -202,8 +220,9 @@ edges | main.rs:87:5:90:5 | if ... {...} | main.rs:84:19:91:1 | { ... } | | | 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:17:87:22 | ref s2 | 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: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(...) | | | main.rs:88:14:90:5 | { ... } | main.rs:87:5:90:5 | if ... {...} | | | main.rs:89:9:89:17 | print_str | main.rs:89:19:89:20 | s2 | | @@ -216,6 +235,7 @@ edges | main.rs:94:5:97:10 | let ... = ... else {...} | main.rs:94:34:94:37 | Some | | | 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: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(...) | | @@ -234,6 +254,7 @@ edges | main.rs:101:1:108:1 | exit fn let_pattern5 (normal) | main.rs:101:1:108:1 | exit fn let_pattern5 | | | main.rs:101:19:108:1 | { ... } | main.rs:101:1:108:1 | exit fn let_pattern5 (normal) | | | main.rs:102:5:102:42 | let ... = ... | main.rs:102:14:102:17 | Some | | +| main.rs:102:9:102:10 | s1 | main.rs:102:9:102:10 | s1 | | | main.rs:102:9:102:10 | s1 | main.rs:104:11:105:12 | let ... = s1 | match | | main.rs:102:14:102:17 | Some | main.rs:102:19:102:30 | ...::from | | | main.rs:102:14:102:41 | Some(...) | main.rs:102:9:102:10 | s1 | | @@ -243,8 +264,9 @@ edges | main.rs:104:5:107:5 | while ... { ... } | main.rs:101:19:108:1 | { ... } | | | 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:20:104:25 | ref s2 | 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: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(...) | | | main.rs:105:14:107:5 | { ... } | main.rs:104:11:105:12 | let ... = s1 | | | main.rs:106:9:106:17 | print_str | main.rs:106:19:106:20 | s2 | | @@ -255,11 +277,13 @@ edges | main.rs:110:1:125:1 | exit fn match_pattern1 (normal) | main.rs:110:1:125:1 | exit fn match_pattern1 | | | main.rs:110:21:125:1 | { ... } | main.rs:110:1:125:1 | exit fn match_pattern1 (normal) | | | main.rs:111:5:111:21 | let ... = ... | main.rs:111:14:111:17 | Some | | +| main.rs:111:9:111:10 | x6 | main.rs:111:9:111:10 | x6 | | | main.rs:111:9:111:10 | x6 | main.rs:112:5:112:16 | let ... = 10 | match | | main.rs:111:14:111:17 | Some | main.rs:111:19:111:19 | 5 | | | main.rs:111:14:111:20 | Some(...) | main.rs:111:9:111:10 | x6 | | | main.rs:111:19:111:19 | 5 | main.rs:111:14:111:20 | Some(...) | | | main.rs:112:5:112:16 | let ... = 10 | main.rs:112:14:112:15 | 10 | | +| main.rs:112:9:112:10 | y1 | main.rs:112:9:112:10 | y1 | | | main.rs:112:9:112:10 | y1 | main.rs:114:5:122:5 | ExprStmt | match | | main.rs:112:14:112:15 | 10 | main.rs:112:9:112:10 | y1 | | | main.rs:114:5:122:5 | ExprStmt | main.rs:114:11:114:12 | x6 | | @@ -275,11 +299,13 @@ edges | main.rs:115:31:115:38 | "Got 50" | main.rs:115:21:115:39 | print_str(...) | | | main.rs:116:9:116:16 | Some(...) | main.rs:116:14:116:15 | y1 | match | | 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: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 | { ... } | | | main.rs:119:23:119:24 | y1 | main.rs:119:13:119:25 | print_i64(...) | | +| main.rs:121:9:121:12 | None | main.rs:121:9:121:12 | None | | | main.rs:121:9:121:12 | None | main.rs:121:17:121:25 | print_str | match | | main.rs:121:17:121:25 | print_str | main.rs:121:27:121:32 | "NONE" | | | main.rs:121:17:121:33 | print_str(...) | main.rs:114:5:122:5 | match x6 { ... } | | @@ -292,6 +318,7 @@ edges | main.rs:127:1:152:1 | exit fn match_pattern2 (normal) | main.rs:127:1:152:1 | exit fn match_pattern2 | | | main.rs:127:21:152:1 | { ... } | main.rs:127:1:152:1 | exit fn match_pattern2 (normal) | | | main.rs:128:5:128:36 | let ... = ... | main.rs:128:20:128:20 | 2 | | +| main.rs:128:9:128:15 | numbers | main.rs:128:9:128:15 | numbers | | | main.rs:128:9:128:15 | numbers | main.rs:130:5:140:5 | ExprStmt | match | | main.rs:128:19:128:35 | TupleExpr | main.rs:128:9:128:15 | numbers | | | main.rs:128:20:128:20 | 2 | main.rs:128:23:128:23 | 4 | | @@ -303,10 +330,13 @@ edges | main.rs:130:5:140:5 | match numbers { ... } | main.rs:142:11:142:17 | numbers | | | main.rs:130:11:130:17 | numbers | main.rs:131:9:135:9 | TuplePat | | | main.rs:131:9:135:9 | TuplePat | main.rs:132:13:132:17 | first | match | +| main.rs:132:13:132:17 | first | main.rs:132:13:132:17 | first | | | main.rs:132:13:132:17 | first | main.rs:132:20:132:20 | _ | match | | main.rs:132:20:132:20 | _ | main.rs:133:13:133:17 | third | match | +| main.rs:133:13:133:17 | third | main.rs:133:13:133:17 | third | | | main.rs:133:13:133:17 | third | main.rs:133:20:133:20 | _ | match | | main.rs:133:20:133:20 | _ | main.rs:134:13:134:17 | fifth | match | +| main.rs:134:13:134:17 | fifth | main.rs:134:13:134:17 | fifth | | | main.rs:134:13:134:17 | fifth | main.rs:136:13:136:29 | ExprStmt | match | | main.rs:135:14:139:9 | { ... } | main.rs:130:5:140:5 | match numbers { ... } | | | main.rs:136:13:136:21 | print_i64 | main.rs:136:23:136:27 | first | | @@ -324,8 +354,10 @@ edges | main.rs:142:5:151:5 | match numbers { ... } | main.rs:127:21:152:1 | { ... } | | | main.rs:142:11:142:17 | numbers | main.rs:143:9:147:9 | TuplePat | | | main.rs:143:9:147:9 | TuplePat | main.rs:144:13:144:17 | first | match | +| main.rs:144:13:144:17 | first | main.rs:144:13:144:17 | first | | | main.rs:144:13:144:17 | first | main.rs:145:13:145:14 | .. | match | | main.rs:145:13:145:14 | .. | main.rs:146:13:146:16 | last | match | +| main.rs:146:13:146:16 | last | main.rs:146:13:146:16 | last | | | main.rs:146:13:146:16 | last | main.rs:148:13:148:29 | ExprStmt | match | | main.rs:147:14:150:9 | { ... } | main.rs:142:5:151:5 | match numbers { ... } | | | main.rs:148:13:148:21 | print_i64 | main.rs:148:23:148:27 | first | | @@ -340,6 +372,7 @@ edges | main.rs:154:1:162:1 | exit fn match_pattern3 (normal) | main.rs:154:1:162:1 | exit fn match_pattern3 | | | main.rs:154:21:162:1 | { ... } | main.rs:154:1:162:1 | exit fn match_pattern3 (normal) | | | main.rs:155:5:155:38 | let ... = ... | main.rs:155:25:155:27 | "x" | | +| main.rs:155:9:155:10 | p2 | main.rs:155:9:155:10 | p2 | | | main.rs:155:9:155:10 | p2 | main.rs:157:11:157:12 | p2 | match | | main.rs:155:14:155:37 | Point {...} | main.rs:155:9:155:10 | p2 | | | main.rs:155:25:155:27 | "x" | main.rs:155:33:155:35 | "y" | | @@ -347,6 +380,7 @@ edges | main.rs:157:5:161:5 | match p2 { ... } | main.rs:154:21:162:1 | { ... } | | | main.rs:157:11:157:12 | p2 | main.rs:158:9:160:9 | Point {...} | | | main.rs:158:9:160:9 | Point {...} | main.rs:159:16:159:17 | x7 | match | +| main.rs:159:16:159:17 | x7 | main.rs:159:16:159:17 | x7 | | | main.rs:159:16:159:17 | x7 | main.rs:159:20:159:21 | .. | match | | main.rs:159:20:159:21 | .. | main.rs:160:14:160:22 | print_str | match | | main.rs:160:14:160:22 | print_str | main.rs:160:24:160:25 | x7 | | @@ -356,6 +390,7 @@ edges | main.rs:168:1:181:1 | exit fn match_pattern4 (normal) | main.rs:168:1:181:1 | exit fn match_pattern4 | | | main.rs:168:21:181:1 | { ... } | main.rs:168:1:181:1 | exit fn match_pattern4 (normal) | | | main.rs:169:5:169:39 | let ... = ... | main.rs:169:36:169:36 | 0 | | +| main.rs:169:9:169:11 | msg | main.rs:169:9:169:11 | msg | | | main.rs:169:9:169:11 | msg | main.rs:171:11:171:13 | msg | match | | main.rs:169:15:169:38 | ...::Hello {...} | main.rs:169:9:169:11 | msg | | | main.rs:169:36:169:36 | 0 | main.rs:169:15:169:38 | ...::Hello {...} | | @@ -363,13 +398,15 @@ edges | 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:35 | [match(true)] id_variable @ ... | main.rs:174:14:174:22 | print_i64 | 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:35 | [match(true)] id_variable @ ... | 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 | | main.rs:174:14:174:22 | print_i64 | main.rs:174:24:174:34 | id_variable | | @@ -398,6 +435,7 @@ edges | main.rs:176:22:176:51 | MacroStmts | main.rs:176:22:176:51 | ExprStmt | | | main.rs:176:22:176:51 | { ... } | main.rs:176:13:176:52 | println!... | | | main.rs:178:9:178:29 | ...::Hello {...} | main.rs:178:26:178:27 | id | match | +| main.rs:178:26:178:27 | id | main.rs:178:26:178:27 | id | | | main.rs:178:26:178:27 | id | main.rs:179:13:179:21 | print_i64 | match | | main.rs:179:13:179:21 | print_i64 | main.rs:179:23:179:24 | id | | | main.rs:179:13:179:25 | print_i64(...) | main.rs:171:5:180:5 | match msg { ... } | | @@ -406,6 +444,7 @@ edges | main.rs:188:1:194:1 | exit fn match_pattern5 (normal) | main.rs:188:1:194:1 | exit fn match_pattern5 | | | main.rs:188:21:194:1 | { ... } | main.rs:188:1:194:1 | exit fn match_pattern5 (normal) | | | main.rs:189:5:189:34 | let ... = ... | main.rs:189:18:189:29 | ...::Left | | +| main.rs:189:9:189:14 | either | main.rs:189:9:189:14 | either | | | main.rs:189:9:189:14 | either | main.rs:190:11:190:16 | either | match | | main.rs:189:18:189:29 | ...::Left | main.rs:189:31:189:32 | 32 | | | main.rs:189:18:189:33 | ...::Left(...) | main.rs:189:9:189:14 | either | | @@ -416,8 +455,10 @@ edges | main.rs:191:9:191:24 | ...::Left(...) | main.rs:191:28:191:44 | ...::Right(...) | no-match | | 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: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 | | | main.rs:192:16:192:24 | print_i64 | main.rs:192:26:192:27 | a3 | | | main.rs:192:16:192:28 | print_i64(...) | main.rs:190:5:193:5 | match either { ... } | | | main.rs:192:26:192:27 | a3 | main.rs:192:16:192:28 | print_i64(...) | | @@ -425,6 +466,7 @@ edges | main.rs:202:1:216:1 | exit fn match_pattern6 (normal) | main.rs:202:1:216:1 | exit fn match_pattern6 | | | main.rs:202:21:216:1 | { ... } | main.rs:202:1:216:1 | exit fn match_pattern6 (normal) | | | main.rs:203:5:203:37 | let ... = ... | main.rs:203:14:203:32 | ...::Second | | +| main.rs:203:9:203:10 | tv | main.rs:203:9:203:10 | tv | | | main.rs:203:9:203:10 | tv | main.rs:204:5:207:5 | ExprStmt | match | | main.rs:203:14:203:32 | ...::Second | main.rs:203:34:203:35 | 62 | | | main.rs:203:14:203:36 | ...::Second(...) | main.rs:203:9:203:10 | tv | | @@ -436,11 +478,14 @@ edges | main.rs:205:9:205:30 | ...::First(...) | main.rs:205:34:205:56 | ...::Second(...) | no-match | | 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: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: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 | | | main.rs:206:16:206:24 | print_i64 | main.rs:206:26:206:27 | a4 | | | main.rs:206:16:206:28 | print_i64(...) | main.rs:204:5:207:5 | match tv { ... } | | | main.rs:206:26:206:27 | a4 | main.rs:206:16:206:28 | print_i64(...) | | @@ -453,11 +498,14 @@ edges | main.rs:209:10:209:57 | [match(false)] ... \| ... | main.rs:209:62:209:83 | ...::Third(...) | no-match | | 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: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(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 | | main.rs:209:81:209:82 | a5 | main.rs:209:9:209:83 | [match(true)] ... \| ... | match | +| main.rs:209:81:209:82 | a5 | main.rs:209:81:209:82 | a5 | | | main.rs:210:16:210:24 | print_i64 | main.rs:210:26:210:27 | a5 | | | main.rs:210:16:210:28 | print_i64(...) | main.rs:208:5:211:5 | match tv { ... } | | | main.rs:210:26:210:27 | a5 | main.rs:210:16:210:28 | print_i64(...) | | @@ -467,12 +515,15 @@ edges | main.rs:213:9:213:30 | ...::First(...) | main.rs:213:35:213:57 | ...::Second(...) | no-match | | 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: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: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 | | | main.rs:214:16:214:24 | print_i64 | main.rs:214:26:214:27 | a6 | | | main.rs:214:16:214:28 | print_i64(...) | main.rs:212:5:215:5 | match tv { ... } | | | main.rs:214:26:214:27 | a6 | main.rs:214:16:214:28 | print_i64(...) | | @@ -480,6 +531,7 @@ edges | main.rs:218:1:226:1 | exit fn match_pattern7 (normal) | main.rs:218:1:226:1 | exit fn match_pattern7 | | | main.rs:218:21:226:1 | { ... } | main.rs:218:1:226:1 | exit fn match_pattern7 (normal) | | | main.rs:219:5:219:34 | let ... = ... | main.rs:219:18:219:29 | ...::Left | | +| main.rs:219:9:219:14 | either | main.rs:219:9:219:14 | either | | | main.rs:219:9:219:14 | either | main.rs:220:11:220:16 | either | match | | main.rs:219:18:219:29 | ...::Left | main.rs:219:31:219:32 | 32 | | | main.rs:219:18:219:33 | ...::Left(...) | main.rs:219:9:219:14 | either | | @@ -491,9 +543,11 @@ edges | main.rs:221:9:221:44 | [match(false)] ... \| ... | main.rs:224:9:224:9 | _ | no-match | | 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: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(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 | | | main.rs:222:16:222:21 | ... > ... | main.rs:223:16:223:24 | print_i64 | true | | main.rs:222:16:222:21 | ... > ... | main.rs:224:9:224:9 | _ | false | @@ -507,21 +561,26 @@ edges | main.rs:228:1:243:1 | exit fn match_pattern8 (normal) | main.rs:228:1:243:1 | exit fn match_pattern8 | | | main.rs:228:21:243:1 | { ... } | main.rs:228:1:243:1 | exit fn match_pattern8 (normal) | | | main.rs:229:5:229:34 | let ... = ... | main.rs:229:18:229:29 | ...::Left | | +| main.rs:229:9:229:14 | either | main.rs:229:9:229:14 | either | | | main.rs:229:9:229:14 | either | main.rs:231:11:231:16 | either | match | | main.rs:229:18:229:29 | ...::Left | main.rs:229:31:229:32 | 32 | | | main.rs:229:18:229:33 | ...::Left(...) | main.rs:229:9:229:14 | either | | | main.rs:229:31:229:32 | 32 | main.rs:229:18:229:33 | ...::Left(...) | | | 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 | [match(true)] ref e @ ... | main.rs:235:13:235:27 | ExprStmt | match | +| 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 | | main.rs:233:14:233:51 | [match(false)] ... \| ... | main.rs:241:9:241:9 | _ | no-match | -| main.rs:233:14:233:51 | [match(true)] ... \| ... | main.rs:232:9:233:52 | [match(true)] ref e @ ... | match | +| 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: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(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 { ... } | | | main.rs:235:13:235:21 | print_i64 | main.rs:235:23:235:25 | a11 | | | main.rs:235:13:235:26 | print_i64(...) | main.rs:236:16:237:15 | let ... = e | | @@ -531,6 +590,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: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(...) | | | main.rs:237:17:239:13 | { ... } | main.rs:236:13:239:13 | if ... {...} | | @@ -545,6 +605,7 @@ edges | main.rs:252:1:258:1 | exit fn match_pattern9 (normal) | main.rs:252:1:258:1 | exit fn match_pattern9 | | | main.rs:252:21:258:1 | { ... } | main.rs:252:1:258:1 | exit fn match_pattern9 (normal) | | | main.rs:253:5:253:36 | let ... = ... | main.rs:253:14:253:31 | ...::Second | | +| main.rs:253:9:253:10 | fv | main.rs:253:9:253:10 | fv | | | main.rs:253:9:253:10 | fv | main.rs:254:11:254:12 | fv | match | | main.rs:253:14:253:31 | ...::Second | main.rs:253:33:253:34 | 62 | | | main.rs:253:14:253:35 | ...::Second(...) | main.rs:253:9:253:10 | fv | | @@ -555,27 +616,34 @@ edges | main.rs:255:9:255:30 | ...::First(...) | main.rs:255:35:255:57 | ...::Second(...) | no-match | | 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: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: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(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 | | main.rs:255:106:255:108 | a13 | main.rs:255:9:255:109 | [match(true)] ... \| ... \| ... | match | +| main.rs:255:106:255:108 | a13 | main.rs:255:106:255:108 | a13 | | | main.rs:256:16:256:24 | print_i64 | main.rs:256:26:256:28 | a13 | | | main.rs:256:16:256:29 | print_i64(...) | main.rs:254:5:257:5 | match fv { ... } | | | main.rs:256:26:256:28 | a13 | main.rs:256:16:256:29 | print_i64(...) | | | main.rs:260:1:269:1 | enter fn param_pattern1 | main.rs:261:5:261:6 | a8 | | | main.rs:260:1:269:1 | exit fn param_pattern1 (normal) | main.rs:260:1:269:1 | exit fn param_pattern1 | | +| main.rs:261:5:261:6 | a8 | main.rs:261:5:261:6 | a8 | | | main.rs:261:5:261:6 | a8 | main.rs:261:5:261:12 | ...: ... | match | | main.rs:261:5:261:12 | ...: ... | main.rs:262:5:265:5 | TuplePat | | | main.rs:262:5:265:5 | TuplePat | main.rs:263:9:263:10 | b3 | match | | main.rs:262:5:265:19 | ...: ... | main.rs:266:5:266:18 | ExprStmt | | +| main.rs:263:9:263:10 | b3 | main.rs:263:9:263:10 | b3 | | | main.rs:263:9:263:10 | b3 | main.rs:264:9:264:10 | c1 | match | | main.rs:264:9:264:10 | c1 | main.rs:262:5:265:19 | ...: ... | match | +| main.rs:264:9:264:10 | c1 | main.rs:264:9:264:10 | c1 | | | main.rs:265:28:269:1 | { ... } | main.rs:260:1:269:1 | exit fn param_pattern1 (normal) | | | main.rs:266:5:266:13 | print_str | main.rs:266:15:266:16 | a8 | | | main.rs:266:5:266:17 | print_str(...) | main.rs:267:5:267:18 | ExprStmt | | @@ -596,8 +664,10 @@ edges | main.rs:272:6:272:21 | ...::Left(...) | main.rs:272:25:272:41 | ...::Right(...) | no-match | | 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: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 | | | main.rs:273:9:275:1 | { ... } | main.rs:271:1:275:1 | exit fn param_pattern2 (normal) | | | main.rs:274:5:274:13 | print_i64 | main.rs:274:15:274:16 | a9 | | | main.rs:274:5:274:17 | print_i64(...) | main.rs:273:9:275:1 | { ... } | | @@ -607,10 +677,13 @@ edges | main.rs:277:1:312:1 | exit fn destruct_assignment (normal) | main.rs:277:1:312:1 | exit fn destruct_assignment | | | main.rs:277:26:312:1 | { ... } | main.rs:277:1:312:1 | exit fn destruct_assignment (normal) | | | main.rs:278:5:282:18 | let ... = ... | main.rs:282:10:282:10 | 1 | | -| main.rs:278:9:282:5 | TuplePat | main.rs:279:9:279:15 | mut a10 | match | -| main.rs:279:9:279:15 | mut a10 | main.rs:280:9:280:14 | mut b4 | match | -| main.rs:280:9:280:14 | mut b4 | main.rs:281:9:281:14 | mut c2 | match | +| main.rs:278:9:282:5 | TuplePat | main.rs:279:13:279:15 | a10 | match | +| main.rs:279:9:279:15 | mut a10 | main.rs:280:13:280:14 | b4 | match | +| main.rs:279:13:279:15 | a10 | main.rs:279:9:279:15 | mut a10 | | +| main.rs:280:9:280:14 | mut b4 | main.rs:281:13:281:14 | c2 | match | +| main.rs:280:13:280:14 | b4 | main.rs:280:9:280:14 | mut b4 | | | main.rs:281:9:281:14 | mut c2 | main.rs:283:5:283:19 | ExprStmt | match | +| main.rs:281:13:281:14 | c2 | main.rs:281:9:281:14 | mut c2 | | | main.rs:282:9:282:17 | TupleExpr | main.rs:278:9:282:5 | TuplePat | | | main.rs:282:10:282:10 | 1 | main.rs:282:13:282:13 | 2 | | | main.rs:282:13:282:13 | 2 | main.rs:282:16:282:16 | 3 | | @@ -655,7 +728,9 @@ edges | main.rs:300:12:300:12 | 4 | main.rs:300:15:300:15 | 5 | | | main.rs:300:15:300:15 | 5 | main.rs:300:11:300:16 | TupleExpr | | | main.rs:301:9:304:9 | TuplePat | main.rs:302:13:302:15 | a10 | match | +| main.rs:302:13:302:15 | a10 | main.rs:302:13:302:15 | a10 | | | main.rs:302:13:302:15 | a10 | main.rs:303:13:303:14 | b4 | match | +| main.rs:303:13:303:14 | b4 | main.rs:303:13:303:14 | b4 | | | main.rs:303:13:303:14 | b4 | main.rs:305:13:305:27 | ExprStmt | match | | main.rs:304:14:307:9 | { ... } | main.rs:300:5:308:5 | match ... { ... } | | | main.rs:305:13:305:21 | print_i64 | main.rs:305:23:305:25 | a10 | | @@ -678,14 +753,17 @@ edges | main.rs:314:1:329:1 | exit fn closure_variable (normal) | main.rs:314:1:329:1 | exit fn closure_variable | | | main.rs:314:23:329:1 | { ... } | main.rs:314:1:329:1 | exit fn closure_variable (normal) | | | main.rs:315:5:317:10 | let ... = ... | main.rs:316:9:317:9 | \|...\| x | | +| main.rs:315:9:315:23 | example_closure | main.rs:315:9:315:23 | example_closure | | | main.rs:315:9:315:23 | example_closure | main.rs:318:5:319:27 | let ... = ... | match | | main.rs:316:9:317:9 | \|...\| x | main.rs:315:9:315:23 | example_closure | | | main.rs:316:9:317:9 | enter \|...\| x | main.rs:316:10:316:10 | x | | | main.rs:316:9:317:9 | exit \|...\| x (normal) | main.rs:316:9:317:9 | exit \|...\| x | | +| main.rs:316:10:316:10 | x | main.rs:316:10:316:10 | x | | | main.rs:316:10:316:10 | x | main.rs:316:10:316:15 | ...: i64 | match | | main.rs:316:10:316:15 | ...: i64 | main.rs:317:9:317:9 | x | | | main.rs:317:9:317:9 | x | main.rs:316:9:317:9 | exit \|...\| x (normal) | | | main.rs:318:5:319:27 | let ... = ... | main.rs:319:9:319:23 | example_closure | | +| main.rs:318:9:318:10 | n1 | main.rs:318:9:318:10 | n1 | | | main.rs:318:9:318:10 | n1 | main.rs:320:5:320:18 | ExprStmt | match | | main.rs:319:9:319:23 | example_closure | main.rs:319:25:319:25 | 5 | | | main.rs:319:9:319:26 | example_closure(...) | main.rs:318:9:318:10 | n1 | | @@ -698,14 +776,17 @@ edges | main.rs:322:5:322:24 | immutable_variable(...) | main.rs:323:5:325:10 | let ... = ... | | | main.rs:322:5:322:25 | ExprStmt | main.rs:322:5:322:22 | immutable_variable | | | main.rs:323:5:325:10 | let ... = ... | main.rs:324:9:325:9 | \|...\| x | | +| main.rs:323:9:323:26 | immutable_variable | main.rs:323:9:323:26 | immutable_variable | | | main.rs:323:9:323:26 | immutable_variable | main.rs:326:5:327:30 | let ... = ... | match | | main.rs:324:9:325:9 | \|...\| x | main.rs:323:9:323:26 | immutable_variable | | | main.rs:324:9:325:9 | enter \|...\| x | main.rs:324:10:324:10 | x | | | main.rs:324:9:325:9 | exit \|...\| x (normal) | main.rs:324:9:325:9 | exit \|...\| x | | +| main.rs:324:10:324:10 | x | main.rs:324:10:324:10 | x | | | main.rs:324:10:324:10 | x | main.rs:324:10:324:15 | ...: i64 | match | | main.rs:324:10:324:15 | ...: i64 | main.rs:325:9:325:9 | x | | | main.rs:325:9:325:9 | x | main.rs:324:9:325:9 | exit \|...\| x (normal) | | | main.rs:326:5:327:30 | let ... = ... | main.rs:327:9:327:26 | immutable_variable | | +| main.rs:326:9:326:10 | n2 | main.rs:326:9:326:10 | n2 | | | main.rs:326:9:326:10 | n2 | main.rs:328:5:328:18 | ExprStmt | match | | main.rs:327:9:327:26 | immutable_variable | main.rs:327:28:327:28 | 6 | | | main.rs:327:9:327:29 | immutable_variable(...) | main.rs:326:9:326:10 | n2 | | @@ -718,10 +799,12 @@ edges | main.rs:331:1:359:1 | exit fn nested_function (normal) | main.rs:331:1:359:1 | exit fn nested_function | | | main.rs:331:22:359:1 | { ... } | main.rs:331:1:359:1 | exit fn nested_function (normal) | | | main.rs:333:5:335:10 | let ... = ... | main.rs:334:9:335:9 | \|...\| x | | +| main.rs:333:9:333:9 | f | main.rs:333:9:333:9 | f | | | main.rs:333:9:333:9 | f | main.rs:336:5:336:20 | ExprStmt | match | | main.rs:334:9:335:9 | \|...\| x | main.rs:333:9:333:9 | f | | | main.rs:334:9:335:9 | enter \|...\| x | main.rs:334:10:334:10 | x | | | main.rs:334:9:335:9 | exit \|...\| x (normal) | main.rs:334:9:335:9 | exit \|...\| x | | +| main.rs:334:10:334:10 | x | main.rs:334:10:334:10 | x | | | main.rs:334:10:334:10 | x | main.rs:334:10:334:15 | ...: i64 | match | | main.rs:334:10:334:15 | ...: i64 | main.rs:335:9:335:9 | x | | | main.rs:335:9:335:9 | x | main.rs:334:9:335:9 | exit \|...\| x (normal) | | @@ -734,6 +817,7 @@ edges | main.rs:338:5:340:5 | enter fn f | main.rs:338:10:338:10 | x | | | main.rs:338:5:340:5 | exit fn f (normal) | main.rs:338:5:340:5 | exit fn f | | | main.rs:338:5:340:5 | fn f | main.rs:342:5:342:20 | ExprStmt | | +| main.rs:338:10:338:10 | x | main.rs:338:10:338:10 | x | | | main.rs:338:10:338:10 | x | main.rs:338:10:338:15 | ...: i64 | match | | main.rs:338:10:338:15 | ...: i64 | main.rs:339:9:339:9 | x | | | main.rs:338:25:340:5 | { ... } | main.rs:338:5:340:5 | exit fn f (normal) | | @@ -756,6 +840,7 @@ edges | main.rs:346:9:348:9 | enter fn f | main.rs:346:14:346:14 | x | | | main.rs:346:9:348:9 | exit fn f (normal) | main.rs:346:9:348:9 | exit fn f | | | main.rs:346:9:348:9 | fn f | main.rs:350:9:352:9 | ExprStmt | | +| main.rs:346:14:346:14 | x | main.rs:346:14:346:14 | x | | | main.rs:346:14:346:14 | x | main.rs:346:14:346:19 | ...: i64 | match | | main.rs:346:14:346:19 | ...: i64 | main.rs:347:13:347:13 | 2 | | | main.rs:346:29:348:9 | { ... } | main.rs:346:9:348:9 | exit fn f (normal) | | @@ -771,10 +856,12 @@ edges | main.rs:351:23:351:26 | f(...) | main.rs:351:13:351:27 | print_i64(...) | | | main.rs:351:25:351:25 | 4 | main.rs:351:23:351:26 | f(...) | | | main.rs:354:9:356:14 | let ... = ... | main.rs:355:13:356:13 | \|...\| x | | +| main.rs:354:13:354:13 | f | main.rs:354:13:354:13 | f | | | main.rs:354:13:354:13 | f | main.rs:357:9:357:24 | ExprStmt | match | | main.rs:355:13:356:13 | \|...\| x | main.rs:354:13:354:13 | f | | | main.rs:355:13:356:13 | enter \|...\| x | main.rs:355:14:355:14 | x | | | main.rs:355:13:356:13 | exit \|...\| x (normal) | main.rs:355:13:356:13 | exit \|...\| x | | +| main.rs:355:14:355:14 | x | main.rs:355:14:355:14 | x | | | main.rs:355:14:355:14 | x | main.rs:355:14:355:19 | ...: i64 | match | | main.rs:355:14:355:19 | ...: i64 | main.rs:356:13:356:13 | x | | | main.rs:356:13:356:13 | x | main.rs:355:13:356:13 | exit \|...\| x (normal) | | @@ -788,6 +875,7 @@ edges | main.rs:361:1:368:1 | exit fn for_variable (normal) | main.rs:361:1:368:1 | exit fn for_variable | | | main.rs:361:19:368:1 | { ... } | main.rs:361:1:368:1 | exit fn for_variable (normal) | | | main.rs:362:5:362:42 | let ... = ... | main.rs:362:15:362:22 | "apples" | | +| main.rs:362:9:362:9 | v | main.rs:362:9:362:9 | v | | | main.rs:362:9:362:9 | v | main.rs:365:12:365:12 | v | match | | main.rs:362:13:362:41 | &... | main.rs:362:9:362:9 | v | | | main.rs:362:14:362:41 | [...] | main.rs:362:13:362:41 | &... | | @@ -796,6 +884,7 @@ edges | main.rs:362:33:362:40 | "coffee" | main.rs:362:14:362:41 | [...] | | | main.rs:364:5:367:5 | for ... in ... { ... } | main.rs:361:19:368:1 | { ... } | | | main.rs:364:9:364:12 | text | main.rs:364:5:367:5 | for ... in ... { ... } | no-match | +| main.rs:364:9:364:12 | text | main.rs:364:9:364:12 | text | | | main.rs:364:9:364:12 | text | main.rs:366:9:366:24 | ExprStmt | match | | main.rs:365:12:365:12 | v | main.rs:364:9:364:12 | text | | | main.rs:365:14:367:5 | { ... } | main.rs:364:9:364:12 | text | | @@ -808,7 +897,8 @@ edges | main.rs:370:17:376:1 | { ... } | main.rs:370:1:376:1 | exit fn add_assign (normal) | | | main.rs:371:5:371:18 | let ... = 0 | main.rs:371:17:371:17 | 0 | | | main.rs:371:9:371:13 | mut a | main.rs:372:5:372:11 | ExprStmt | match | -| main.rs:371:17:371:17 | 0 | main.rs:371:9:371:13 | mut a | | +| main.rs:371:13:371:13 | a | main.rs:371:9:371:13 | mut a | | +| main.rs:371:17:371:17 | 0 | main.rs:371:13:371:13 | a | | | main.rs:372:5:372:5 | a | main.rs:372:10:372:10 | 1 | | | main.rs:372:5:372:10 | ... += ... | main.rs:373:5:373:17 | ExprStmt | | | main.rs:372:5:372:11 | ExprStmt | main.rs:372:5:372:5 | a | | @@ -831,8 +921,10 @@ edges | main.rs:378:13:384:1 | { ... } | main.rs:378:1:384:1 | exit fn mutate (normal) | | | main.rs:379:5:379:18 | let ... = 1 | main.rs:379:17:379:17 | 1 | | | main.rs:379:9:379:13 | mut i | main.rs:380:5:381:15 | let ... = ... | match | -| main.rs:379:17:379:17 | 1 | main.rs:379:9:379:13 | mut i | | +| main.rs:379:13:379:13 | i | main.rs:379:9:379:13 | mut i | | +| main.rs:379:17:379:17 | 1 | main.rs:379:13:379:13 | i | | | main.rs:380:5:381:15 | let ... = ... | main.rs:381:14:381:14 | i | | +| main.rs:380:9:380:13 | ref_i | main.rs:380:9:380:13 | ref_i | | | main.rs:380:9:380:13 | ref_i | main.rs:382:5:382:15 | ExprStmt | match | | main.rs:381:9:381:14 | &mut i | main.rs:380:9:380:13 | ref_i | | | main.rs:381:14:381:14 | i | main.rs:381:9:381:14 | &mut i | | @@ -847,6 +939,7 @@ edges | main.rs:383:15:383:15 | i | main.rs:383:5:383:16 | print_i64(...) | | | main.rs:386:1:391:1 | enter fn mutate_param | main.rs:386:17:386:17 | x | | | main.rs:386:1:391:1 | exit fn mutate_param (normal) | main.rs:386:1:391:1 | exit fn mutate_param | | +| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | | | main.rs:386:17:386:17 | x | main.rs:386:17:386:28 | ...: ... | match | | main.rs:386:17:386:28 | ...: ... | main.rs:387:5:389:11 | ExprStmt | | | main.rs:387:5:387:6 | * ... | main.rs:388:10:388:10 | x | | @@ -863,8 +956,10 @@ edges | main.rs:390:12:390:12 | x | main.rs:390:5:390:12 | return x | | | main.rs:393:1:399:1 | enter fn mutate_param2 | main.rs:393:22:393:22 | x | | | main.rs:393:1:399:1 | exit fn mutate_param2 (normal) | main.rs:393:1:399:1 | exit fn mutate_param2 | | +| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | | | main.rs:393:22:393:22 | x | main.rs:393:22:393:36 | ...: ... | match | | main.rs:393:22:393:36 | ...: ... | main.rs:393:39:393:39 | y | | +| main.rs:393:39:393:39 | y | main.rs:393:39:393:39 | y | | | main.rs:393:39:393:39 | y | main.rs:393:39:393:57 | ...: ... | match | | main.rs:393:39:393:57 | ...: ... | main.rs:394:5:396:11 | ExprStmt | | | main.rs:393:60:399:1 | { ... } | main.rs:393:1:399:1 | exit fn mutate_param2 (normal) | | @@ -887,8 +982,10 @@ edges | main.rs:401:17:419:1 | { ... } | main.rs:401:1:419:1 | exit fn mutate_arg (normal) | | | main.rs:402:5:402:18 | let ... = 2 | main.rs:402:17:402:17 | 2 | | | main.rs:402:9:402:13 | mut x | main.rs:403:5:404:29 | let ... = ... | match | -| main.rs:402:17:402:17 | 2 | main.rs:402:9:402:13 | mut x | | +| main.rs:402:13:402:13 | x | main.rs:402:9:402:13 | mut x | | +| main.rs:402:17:402:17 | 2 | main.rs:402:13:402:13 | x | | | main.rs:403:5:404:29 | let ... = ... | main.rs:404:9:404:20 | mutate_param | | +| main.rs:403:9:403:9 | y | main.rs:403:9:403:9 | y | | | main.rs:403:9:403:9 | y | main.rs:405:5:405:12 | ExprStmt | match | | main.rs:404:9:404:20 | mutate_param | main.rs:404:27:404:27 | x | | | main.rs:404:9:404:28 | mutate_param(...) | main.rs:403:9:403:9 | y | | @@ -905,8 +1002,10 @@ edges | main.rs:407:15:407:15 | x | main.rs:407:5:407:16 | print_i64(...) | | | main.rs:409:5:409:18 | let ... = 4 | main.rs:409:17:409:17 | 4 | | | main.rs:409:9:409:13 | mut z | main.rs:410:5:411:20 | let ... = ... | match | -| main.rs:409:17:409:17 | 4 | main.rs:409:9:409:13 | mut z | | +| main.rs:409:13:409:13 | z | main.rs:409:9:409:13 | mut z | | +| main.rs:409:17:409:17 | 4 | main.rs:409:13:409:13 | z | | | main.rs:410:5:411:20 | let ... = ... | main.rs:411:19:411:19 | x | | +| main.rs:410:9:410:9 | w | main.rs:410:9:410:9 | w | | | main.rs:410:9:410:9 | w | main.rs:412:5:415:6 | ExprStmt | match | | main.rs:411:9:411:19 | &mut ... | main.rs:410:9:410:9 | w | | | main.rs:411:14:411:19 | &mut x | main.rs:411:9:411:19 | &mut ... | | @@ -932,8 +1031,10 @@ edges | main.rs:421:12:427:1 | { ... } | main.rs:421:1:427:1 | exit fn alias (normal) | | | main.rs:422:5:422:18 | let ... = 1 | main.rs:422:17:422:17 | 1 | | | main.rs:422:9:422:13 | mut x | main.rs:423:5:424:15 | let ... = ... | match | -| main.rs:422:17:422:17 | 1 | main.rs:422:9:422:13 | mut x | | +| main.rs:422:13:422:13 | x | main.rs:422:9:422:13 | mut x | | +| main.rs:422:17:422:17 | 1 | main.rs:422:13:422:13 | x | | | main.rs:423:5:424:15 | let ... = ... | main.rs:424:14:424:14 | x | | +| main.rs:423:9:423:9 | y | main.rs:423:9:423:9 | y | | | main.rs:423:9:423:9 | y | main.rs:425:5:425:11 | ExprStmt | match | | main.rs:424:9:424:14 | &mut x | main.rs:423:9:423:9 | y | | | main.rs:424:14:424:14 | x | main.rs:424:9:424:14 | &mut x | | @@ -950,9 +1051,11 @@ edges | main.rs:429:1:437:1 | exit fn capture_immut (normal) | main.rs:429:1:437:1 | exit fn capture_immut | | | main.rs:429:20:437:1 | { ... } | main.rs:429:1:437:1 | exit fn capture_immut (normal) | | | main.rs:430:5:430:16 | let ... = 100 | main.rs:430:13:430:15 | 100 | | +| main.rs:430:9:430:9 | x | main.rs:430:9:430:9 | x | | | main.rs:430:9:430:9 | x | main.rs:432:5:434:6 | let ... = ... | match | | main.rs:430:13:430:15 | 100 | main.rs:430:9:430:9 | x | | | main.rs:432:5:434:6 | let ... = ... | main.rs:432:15:434:5 | \|...\| ... | | +| main.rs:432:9:432:11 | cap | main.rs:432:9:432:11 | cap | | | main.rs:432:9:432:11 | cap | main.rs:435:5:435:10 | ExprStmt | match | | main.rs:432:15:434:5 | \|...\| ... | main.rs:432:9:432:11 | cap | | | main.rs:432:15:434:5 | enter \|...\| ... | main.rs:433:9:433:21 | ExprStmt | | @@ -974,8 +1077,10 @@ edges | main.rs:439:18:463:1 | { ... } | main.rs:439:1:463:1 | exit fn capture_mut (normal) | | | main.rs:440:5:440:18 | let ... = 1 | main.rs:440:17:440:17 | 1 | | | main.rs:440:9:440:13 | mut x | main.rs:442:5:444:6 | let ... = ... | match | -| main.rs:440:17:440:17 | 1 | main.rs:440:9:440:13 | mut x | | +| main.rs:440:13:440:13 | x | main.rs:440:9:440:13 | mut x | | +| main.rs:440:17:440:17 | 1 | main.rs:440:13:440:13 | x | | | main.rs:442:5:444:6 | let ... = ... | main.rs:442:20:444:5 | \|...\| ... | | +| main.rs:442:9:442:16 | closure1 | main.rs:442:9:442:16 | closure1 | | | main.rs:442:9:442:16 | closure1 | main.rs:445:5:445:15 | ExprStmt | match | | main.rs:442:20:444:5 | \|...\| ... | main.rs:442:9:442:16 | closure1 | | | main.rs:442:20:444:5 | enter \|...\| ... | main.rs:443:9:443:21 | ExprStmt | | @@ -994,10 +1099,12 @@ edges | main.rs:446:15:446:15 | x | main.rs:446:5:446:16 | print_i64(...) | | | main.rs:448:5:448:18 | let ... = 2 | main.rs:448:17:448:17 | 2 | | | main.rs:448:9:448:13 | mut y | main.rs:450:5:452:6 | let ... = ... | match | -| main.rs:448:17:448:17 | 2 | main.rs:448:9:448:13 | mut y | | +| main.rs:448:13:448:13 | y | main.rs:448:9:448:13 | mut y | | +| main.rs:448:17:448:17 | 2 | main.rs:448:13:448:13 | y | | | main.rs:450:5:452:6 | let ... = ... | main.rs:450:24:452:5 | \|...\| ... | | | main.rs:450:9:450:20 | mut closure2 | main.rs:453:5:453:15 | ExprStmt | match | -| main.rs:450:24:452:5 | \|...\| ... | main.rs:450:9:450:20 | mut closure2 | | +| main.rs:450:13:450:20 | closure2 | main.rs:450:9:450:20 | mut closure2 | | +| main.rs:450:24:452:5 | \|...\| ... | main.rs:450:13:450:20 | closure2 | | | main.rs:450:24:452:5 | enter \|...\| ... | main.rs:451:9:451:14 | ExprStmt | | | main.rs:450:24:452:5 | exit \|...\| ... (normal) | main.rs:450:24:452:5 | exit \|...\| ... | | | main.rs:450:27:452:5 | { ... } | main.rs:450:24:452:5 | exit \|...\| ... (normal) | | @@ -1014,10 +1121,12 @@ edges | main.rs:454:15:454:15 | y | main.rs:454:5:454:16 | print_i64(...) | | | main.rs:456:5:456:18 | let ... = 2 | main.rs:456:17:456:17 | 2 | | | main.rs:456:9:456:13 | mut z | main.rs:458:5:460:6 | let ... = ... | match | -| main.rs:456:17:456:17 | 2 | main.rs:456:9:456:13 | mut z | | +| main.rs:456:13:456:13 | z | main.rs:456:9:456:13 | mut z | | +| main.rs:456:17:456:17 | 2 | main.rs:456:13:456:13 | z | | | main.rs:458:5:460:6 | let ... = ... | main.rs:458:24:460:5 | \|...\| ... | | | main.rs:458:9:458:20 | mut closure3 | main.rs:461:5:461:15 | ExprStmt | match | -| main.rs:458:24:460:5 | \|...\| ... | main.rs:458:9:458:20 | mut closure3 | | +| main.rs:458:13:458:20 | closure3 | main.rs:458:9:458:20 | mut closure3 | | +| main.rs:458:24:460:5 | \|...\| ... | main.rs:458:13:458:20 | closure3 | | | main.rs:458:24:460:5 | enter \|...\| ... | main.rs:459:9:459:24 | ExprStmt | | | main.rs:458:24:460:5 | exit \|...\| ... (normal) | main.rs:458:24:460:5 | exit \|...\| ... | | | main.rs:458:27:460:5 | { ... } | main.rs:458:24:460:5 | exit \|...\| ... (normal) | | @@ -1037,8 +1146,10 @@ edges | main.rs:465:32:473:1 | { ... } | main.rs:465:1:473:1 | exit fn async_block_capture (normal) | | | main.rs:466:5:466:23 | let ... = 0 | main.rs:466:22:466:22 | 0 | | | main.rs:466:9:466:13 | mut i | main.rs:467:5:469:6 | let ... = ... | match | -| main.rs:466:22:466:22 | 0 | main.rs:466:9:466:13 | mut i | | +| main.rs:466:13:466:13 | i | main.rs:466:9:466:13 | mut i | | +| main.rs:466:22:466:22 | 0 | main.rs:466:13:466:13 | i | | | main.rs:467:5:469:6 | let ... = ... | main.rs:467:17:469:5 | { ... } | | +| main.rs:467:9:467:13 | block | main.rs:467:9:467:13 | block | | | main.rs:467:9:467:13 | block | main.rs:471:5:471:16 | ExprStmt | match | | main.rs:467:17:469:5 | enter { ... } | main.rs:468:9:468:14 | ExprStmt | | | main.rs:467:17:469:5 | exit { ... } (normal) | main.rs:467:17:469:5 | exit { ... } | | @@ -1056,12 +1167,14 @@ edges | main.rs:472:15:472:15 | i | main.rs:472:5:472:16 | print_i64(...) | | | main.rs:475:1:489:1 | enter fn phi | main.rs:475:8:475:8 | b | | | main.rs:475:1:489:1 | exit fn phi (normal) | main.rs:475:1:489:1 | exit fn phi | | +| main.rs:475:8:475:8 | b | main.rs:475:8:475:8 | b | | | main.rs:475:8:475:8 | b | main.rs:475:8:475:15 | ...: bool | match | | main.rs:475:8:475:15 | ...: bool | main.rs:476:5:476:18 | let ... = 1 | | | main.rs:475:18:489:1 | { ... } | main.rs:475:1:489:1 | exit fn phi (normal) | | | main.rs:476:5:476:18 | let ... = 1 | main.rs:476:17:476:17 | 1 | | | main.rs:476:9:476:13 | mut x | main.rs:477:5:477:17 | ExprStmt | match | -| main.rs:476:17:476:17 | 1 | main.rs:476:9:476:13 | mut x | | +| main.rs:476:13:476:13 | x | main.rs:476:9:476:13 | mut x | | +| main.rs:476:17:476:17 | 1 | main.rs:476:13:476:13 | x | | | main.rs:477:5:477:13 | print_i64 | main.rs:477:15:477:15 | x | | | main.rs:477:5:477:16 | print_i64(...) | main.rs:478:5:478:21 | ExprStmt | | | main.rs:477:5:477:17 | ExprStmt | main.rs:477:5:477:13 | print_i64 | | @@ -1112,12 +1225,15 @@ edges | main.rs:488:15:488:15 | x | main.rs:488:5:488:16 | print_i64(...) | | | main.rs:491:1:504:1 | enter fn phi_read | main.rs:491:13:491:14 | b1 | | | main.rs:491:1:504:1 | exit fn phi_read (normal) | main.rs:491:1:504:1 | exit fn phi_read | | +| main.rs:491:13:491:14 | b1 | main.rs:491:13:491:14 | b1 | | | main.rs:491:13:491:14 | b1 | main.rs:491:13:491:21 | ...: bool | match | | main.rs:491:13:491:21 | ...: bool | main.rs:491:24:491:25 | b2 | | +| main.rs:491:24:491:25 | b2 | main.rs:491:24:491:25 | b2 | | | main.rs:491:24:491:25 | b2 | main.rs:491:24:491:32 | ...: bool | match | | main.rs:491:24:491:32 | ...: bool | main.rs:492:5:492:14 | let ... = 1 | | | main.rs:491:35:504:1 | { ... } | main.rs:491:1:504:1 | exit fn phi_read (normal) | | | main.rs:492:5:492:14 | let ... = 1 | main.rs:492:13:492:13 | 1 | | +| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | | | main.rs:492:9:492:9 | x | main.rs:493:5:497:5 | ExprStmt | match | | main.rs:492:13:492:13 | 1 | main.rs:492:9:492:9 | x | | | main.rs:493:5:497:5 | ExprStmt | main.rs:493:8:493:9 | b1 | | @@ -1168,11 +1284,13 @@ edges | main.rs:520:29:527:5 | { ... } | main.rs:520:5:527:5 | exit fn my_method (normal) | | | main.rs:521:9:524:10 | let ... = ... | main.rs:521:21:524:9 | \|...\| ... | | | main.rs:521:13:521:17 | mut f | main.rs:525:9:525:13 | ExprStmt | match | -| main.rs:521:21:524:9 | \|...\| ... | main.rs:521:13:521:17 | mut f | | +| main.rs:521:17:521:17 | f | main.rs:521:13:521:17 | mut f | | +| main.rs:521:21:524:9 | \|...\| ... | main.rs:521:17:521:17 | f | | | main.rs:521:21:524:9 | enter \|...\| ... | main.rs:521:22:521:22 | n | | | main.rs:521:21:524:9 | exit \|...\| ... (normal) | main.rs:521:21:524:9 | exit \|...\| ... | | | main.rs:521:22:521:22 | ... | main.rs:523:13:523:26 | ExprStmt | | | main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | ... | match | +| main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | n | | | main.rs:521:25:524:9 | { ... } | main.rs:521:21:524:9 | exit \|...\| ... (normal) | | | main.rs:523:13:523:16 | self | main.rs:523:13:523:20 | self.val | | | main.rs:523:13:523:20 | self.val | main.rs:523:25:523:25 | n | | @@ -1192,7 +1310,8 @@ edges | main.rs:530:14:537:1 | { ... } | main.rs:530:1:537:1 | exit fn structs (normal) | | | main.rs:531:5:531:36 | let ... = ... | main.rs:531:33:531:33 | 1 | | | main.rs:531:9:531:13 | mut a | main.rs:532:5:532:26 | ExprStmt | match | -| main.rs:531:17:531:35 | MyStruct {...} | main.rs:531:9:531:13 | mut a | | +| main.rs:531:13:531:13 | a | main.rs:531:9:531:13 | mut a | | +| main.rs:531:17:531:35 | MyStruct {...} | main.rs:531:13:531:13 | a | | | main.rs:531:33:531:33 | 1 | main.rs:531:17:531:35 | MyStruct {...} | | | main.rs:532:5:532:13 | print_i64 | main.rs:532:15:532:15 | a | | | main.rs:532:5:532:25 | print_i64(...) | main.rs:533:5:533:14 | ExprStmt | | @@ -1224,7 +1343,8 @@ edges | main.rs:539:13:546:1 | { ... } | main.rs:539:1:546:1 | exit fn arrays (normal) | | | main.rs:540:5:540:26 | let ... = ... | main.rs:540:18:540:18 | 1 | | | main.rs:540:9:540:13 | mut a | main.rs:541:5:541:20 | ExprStmt | match | -| main.rs:540:17:540:25 | [...] | main.rs:540:9:540:13 | mut a | | +| main.rs:540:13:540:13 | a | main.rs:540:9:540:13 | mut a | | +| main.rs:540:17:540:25 | [...] | main.rs:540:13:540:13 | a | | | main.rs:540:18:540:18 | 1 | main.rs:540:21:540:21 | 2 | | | main.rs:540:21:540:21 | 2 | main.rs:540:24:540:24 | 3 | | | main.rs:540:24:540:24 | 3 | main.rs:540:17:540:25 | [...] | | @@ -1263,6 +1383,7 @@ edges | main.rs:548:1:555:1 | exit fn ref_arg (normal) | main.rs:548:1:555:1 | exit fn ref_arg | | | main.rs:548:14:555:1 | { ... } | main.rs:548:1:555:1 | exit fn ref_arg (normal) | | | main.rs:549:5:549:15 | let ... = 16 | main.rs:549:13:549:14 | 16 | | +| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | | | main.rs:549:9:549:9 | x | main.rs:550:5:550:22 | ExprStmt | match | | main.rs:549:13:549:14 | 16 | main.rs:549:9:549:9 | x | | | main.rs:550:5:550:17 | print_i64_ref | main.rs:550:20:550:20 | x | | @@ -1275,6 +1396,7 @@ edges | main.rs:551:5:551:17 | ExprStmt | main.rs:551:5:551:13 | print_i64 | | | main.rs:551:15:551:15 | x | main.rs:551:5:551:16 | print_i64(...) | | | main.rs:553:5:553:15 | let ... = 17 | main.rs:553:13:553:14 | 17 | | +| main.rs:553:9:553:9 | z | main.rs:553:9:553:9 | z | | | main.rs:553:9:553:9 | z | main.rs:554:5:554:22 | ExprStmt | match | | main.rs:553:13:553:14 | 17 | main.rs:553:9:553:9 | z | | | main.rs:554:5:554:17 | print_i64_ref | main.rs:554:20:554:20 | z | | @@ -1298,7 +1420,8 @@ edges | main.rs:567:30:572:1 | { ... } | main.rs:567:1:572:1 | exit fn ref_methodcall_receiver (normal) | | | main.rs:568:3:568:34 | let ... = ... | main.rs:568:31:568:31 | 1 | | | main.rs:568:7:568:11 | mut a | main.rs:569:3:569:10 | ExprStmt | match | -| main.rs:568:15:568:33 | MyStruct {...} | main.rs:568:7:568:11 | mut a | | +| main.rs:568:11:568:11 | a | main.rs:568:7:568:11 | mut a | | +| main.rs:568:15:568:33 | MyStruct {...} | main.rs:568:11:568:11 | a | | | main.rs:568:31:568:31 | 1 | main.rs:568:15:568:33 | MyStruct {...} | | | main.rs:569:3:569:3 | a | main.rs:569:3:569:9 | a.bar(...) | | | main.rs:569:3:569:9 | a.bar(...) | main.rs:571:3:571:19 | ExprStmt | | @@ -1312,9 +1435,11 @@ edges | main.rs:592:1:602:1 | exit fn macro_invocation (normal) | main.rs:592:1:602:1 | exit fn macro_invocation | | | main.rs:592:23:602:1 | { ... } | main.rs:592:1:602:1 | exit fn macro_invocation (normal) | | | main.rs:593:5:594:26 | let ... = ... | main.rs:594:23:594:24 | let ... = 37 | | +| main.rs:593:9:593:22 | var_from_macro | main.rs:593:9:593:22 | var_from_macro | | | main.rs:593:9:593:22 | var_from_macro | main.rs:595:5:595:30 | ExprStmt | match | | main.rs:594:9:594:25 | MacroExpr | main.rs:593:9:593:22 | var_from_macro | | | main.rs:594:9:594:25 | let_in_macro!... | main.rs:594:9:594:25 | MacroExpr | | +| main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | | | main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | match | | main.rs:594:9:594:25 | var_in_macro | main.rs:594:23:594:24 | { ... } | | | main.rs:594:23:594:24 | 37 | main.rs:594:9:594:25 | var_in_macro | | @@ -1325,6 +1450,7 @@ edges | main.rs:595:5:595:30 | ExprStmt | main.rs:595:5:595:13 | print_i64 | | | main.rs:595:15:595:28 | var_from_macro | main.rs:595:5:595:29 | print_i64(...) | | | main.rs:596:5:596:26 | let ... = 33 | main.rs:596:24:596:25 | 33 | | +| main.rs:596:9:596:20 | var_in_macro | main.rs:596:9:596:20 | var_in_macro | | | main.rs:596:9:596:20 | var_in_macro | main.rs:600:5:600:44 | ExprStmt | match | | main.rs:596:24:596:25 | 33 | main.rs:596:9:596:20 | var_in_macro | | | main.rs:600:5:600:13 | print_i64 | main.rs:600:15:600:42 | let ... = 0 | | @@ -1334,6 +1460,7 @@ edges | main.rs:600:15:600:42 | MacroExpr | main.rs:600:5:600:43 | print_i64(...) | | | main.rs:600:15:600:42 | let ... = 0 | main.rs:600:15:600:42 | 0 | | | main.rs:600:15:600:42 | let_in_macro2!... | main.rs:600:15:600:42 | MacroExpr | | +| main.rs:600:15:600:42 | var_in_macro | main.rs:600:15:600:42 | var_in_macro | | | main.rs:600:15:600:42 | var_in_macro | main.rs:600:30:600:41 | var_in_macro | match | | main.rs:600:30:600:41 | var_in_macro | main.rs:600:30:600:41 | { ... } | | | main.rs:600:30:600:41 | { ... } | main.rs:600:15:600:42 | let_in_macro2!... | | diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index ff950704d34..9e8dca004df 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -12,9 +12,9 @@ definition | main.rs:7:14:7:14 | i | main.rs:7:14:7:14 | i | | main.rs:11:18:11:18 | i | main.rs:11:18:11:18 | i | | main.rs:16:9:16:10 | x1 | main.rs:16:9:16:10 | x1 | -| main.rs:21:9:21:14 | mut x2 | main.rs:21:13:21:14 | x2 | +| main.rs:21:13:21:14 | x2 | main.rs:21:13:21:14 | x2 | | main.rs:23:5:23:6 | x2 | main.rs:21:13:21:14 | x2 | -| main.rs:28:9:28:13 | mut x | main.rs:28:13:28:13 | x | +| main.rs:28:13:28:13 | x | main.rs:28:13:28:13 | x | | main.rs:30:5:30:5 | x | main.rs:28:13:28:13 | x | | main.rs:35:9:35:10 | x3 | main.rs:35:9:35:10 | x3 | | main.rs:37:9:37:10 | x3 | main.rs:37:9:37:10 | x3 | @@ -28,10 +28,10 @@ definition | main.rs:77:12:77:13 | a2 | main.rs:77:12:77:13 | a2 | | main.rs:78:12:78:13 | b2 | main.rs:78:12:78:13 | b2 | | main.rs:85:9:85:10 | s1 | main.rs:85:9:85:10 | s1 | -| main.rs:87:17:87:22 | ref s2 | main.rs:87:21:87:22 | s2 | +| main.rs:87:21:87:22 | s2 | main.rs:87:21:87:22 | s2 | | main.rs:94:14:94:15 | x5 | main.rs:94:14:94:15 | x5 | | main.rs:102:9:102:10 | s1 | main.rs:102:9:102:10 | s1 | -| main.rs:104:20:104:25 | ref s2 | main.rs:104:24:104:25 | s2 | +| main.rs:104:24:104:25 | s2 | main.rs:104:24:104:25 | s2 | | main.rs:111:9:111:10 | x6 | main.rs:111:9:111:10 | x6 | | main.rs:112:9:112:10 | y1 | main.rs:112:9:112:10 | y1 | | main.rs:116:14:116:15 | y1 | main.rs:116:14:116:15 | y1 | @@ -44,7 +44,7 @@ definition | main.rs:155:9:155:10 | p2 | main.rs:155:9:155:10 | p2 | | main.rs:159:16:159:17 | x7 | main.rs:159:16:159:17 | x7 | | main.rs:169:9:169:11 | msg | main.rs:169:9:169:11 | msg | -| main.rs:173:17:173:35 | [match(true)] id_variable @ ... | main.rs:173:17:173:27 | id_variable | +| main.rs:173:17:173:27 | id_variable | main.rs:173:17:173:27 | id_variable | | main.rs:178:26:178:27 | id | main.rs:178:26:178:27 | id | | main.rs:189:9:189:14 | either | main.rs:189:9:189:14 | either | | main.rs:191:9:191:44 | [match(true)] phi | main.rs:191:9:191:44 | a3 | @@ -70,7 +70,7 @@ definition | main.rs:221:22:221:23 | a7 | main.rs:221:9:221:44 | a7 | | main.rs:221:42:221:43 | a7 | main.rs:221:9:221:44 | a7 | | main.rs:229:9:229:14 | either | main.rs:229:9:229:14 | either | -| main.rs:232:9:233:52 | [match(true)] ref e @ ... | main.rs:232:13:232:13 | e | +| main.rs:232:13:232:13 | e | main.rs:232:13:232:13 | e | | main.rs:233:14:233:51 | [match(true)] phi | main.rs:233:14:233:51 | a11 | | main.rs:233:27:233:29 | a11 | main.rs:233:14:233:51 | a11 | | main.rs:233:48:233:50 | a11 | main.rs:233:14:233:51 | a11 | @@ -88,9 +88,9 @@ definition | main.rs:272:6:272:41 | [match(true)] phi | main.rs:272:6:272:41 | a9 | | main.rs:272:19:272:20 | a9 | main.rs:272:6:272:41 | a9 | | main.rs:272:39:272:40 | a9 | main.rs:272:6:272:41 | a9 | -| main.rs:279:9:279:15 | mut a10 | main.rs:279:13:279:15 | a10 | -| main.rs:280:9:280:14 | mut b4 | main.rs:280:13:280:14 | b4 | -| main.rs:281:9:281:14 | mut c2 | main.rs:281:13:281:14 | c2 | +| main.rs:279:13:279:15 | a10 | main.rs:279:13:279:15 | a10 | +| main.rs:280:13:280:14 | b4 | main.rs:280:13:280:14 | b4 | +| main.rs:281:13:281:14 | c2 | main.rs:281:13:281:14 | c2 | | main.rs:288:9:288:10 | c2 | main.rs:281:13:281:14 | c2 | | main.rs:289:9:289:10 | b4 | main.rs:280:13:280:14 | b4 | | main.rs:290:9:290:11 | a10 | main.rs:279:13:279:15 | a10 | @@ -120,37 +120,37 @@ definition | main.rs:430:9:430:9 | x | main.rs:430:9:430:9 | x | | main.rs:432:9:432:11 | cap | main.rs:432:9:432:11 | cap | | main.rs:432:15:434:5 | x | main.rs:430:9:430:9 | x | -| main.rs:440:9:440:13 | mut x | main.rs:440:13:440:13 | x | +| main.rs:440:13:440:13 | x | main.rs:440:13:440:13 | x | | main.rs:442:9:442:16 | closure1 | main.rs:442:9:442:16 | closure1 | | main.rs:442:20:444:5 | x | main.rs:440:13:440:13 | x | -| main.rs:448:9:448:13 | mut y | main.rs:448:13:448:13 | y | -| main.rs:450:9:450:20 | mut closure2 | main.rs:450:13:450:20 | closure2 | +| main.rs:448:13:448:13 | y | main.rs:448:13:448:13 | y | +| main.rs:450:13:450:20 | closure2 | main.rs:450:13:450:20 | closure2 | | main.rs:451:9:451:9 | y | main.rs:448:13:448:13 | y | | main.rs:453:5:453:14 | y | main.rs:448:13:448:13 | y | -| main.rs:458:9:458:20 | mut closure3 | main.rs:458:13:458:20 | closure3 | -| main.rs:466:9:466:13 | mut i | main.rs:466:13:466:13 | i | +| main.rs:458:13:458:20 | closure3 | main.rs:458:13:458:20 | closure3 | +| main.rs:466:13:466:13 | i | main.rs:466:13:466:13 | i | | main.rs:467:9:467:13 | block | main.rs:467:9:467:13 | block | | main.rs:468:9:468:9 | i | main.rs:466:13:466:13 | i | | main.rs:471:5:471:15 | i | main.rs:466:13:466:13 | i | | main.rs:475:8:475:8 | b | main.rs:475:8:475:8 | b | -| main.rs:476:9:476:13 | mut x | main.rs:476:13:476:13 | x | +| main.rs:476:13:476:13 | x | main.rs:476:13:476:13 | x | | main.rs:479:5:487:5 | phi | main.rs:476:13:476:13 | x | | main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | | main.rs:484:9:484:9 | x | main.rs:476:13:476:13 | x | | main.rs:491:13:491:14 | b1 | main.rs:491:13:491:14 | b1 | | main.rs:491:24:491:25 | b2 | main.rs:491:24:491:25 | b2 | | main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | -| main.rs:512:15:512:23 | SelfParam | main.rs:512:20:512:23 | self | -| main.rs:516:11:516:14 | SelfParam | main.rs:516:11:516:14 | self | -| main.rs:520:18:520:26 | SelfParam | main.rs:520:23:520:26 | self | -| main.rs:521:13:521:17 | mut f | main.rs:521:17:521:17 | f | +| main.rs:512:20:512:23 | self | main.rs:512:20:512:23 | self | +| main.rs:516:11:516:14 | self | main.rs:516:11:516:14 | self | +| main.rs:520:23:520:26 | self | main.rs:520:23:520:26 | self | +| main.rs:521:17:521:17 | f | main.rs:521:17:521:17 | f | | main.rs:521:21:524:9 | self | main.rs:520:23:520:26 | self | | main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | n | -| main.rs:540:9:540:13 | mut a | main.rs:540:13:540:13 | a | +| main.rs:540:13:540:13 | a | main.rs:540:13:540:13 | a | | main.rs:544:5:544:5 | a | main.rs:540:13:540:13 | a | | main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | | main.rs:553:9:553:9 | z | main.rs:553:9:553:9 | z | -| main.rs:562:10:562:18 | SelfParam | main.rs:562:15:562:18 | self | +| main.rs:562:15:562:18 | self | main.rs:562:15:562:18 | self | | main.rs:593:9:593:22 | var_from_macro | main.rs:593:9:593:22 | var_from_macro | | main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | | main.rs:596:9:596:20 | var_in_macro | main.rs:596:9:596:20 | var_in_macro | @@ -160,9 +160,9 @@ read | main.rs:7:14:7:14 | i | main.rs:7:14:7:14 | i | main.rs:8:20:8:20 | i | | main.rs:11:18:11:18 | i | main.rs:11:18:11:18 | i | main.rs:12:16:12:16 | i | | main.rs:16:9:16:10 | x1 | main.rs:16:9:16:10 | x1 | main.rs:17:15:17:16 | x1 | -| main.rs:21:9:21:14 | mut x2 | main.rs:21:13:21:14 | x2 | main.rs:22:15:22:16 | x2 | +| main.rs:21:13:21:14 | x2 | main.rs:21:13:21:14 | x2 | main.rs:22:15:22:16 | x2 | | main.rs:23:5:23:6 | x2 | main.rs:21:13:21:14 | x2 | main.rs:24:15:24:16 | x2 | -| main.rs:28:9:28:13 | mut x | main.rs:28:13:28:13 | x | main.rs:29:20:29:20 | x | +| main.rs:28:13:28:13 | x | main.rs:28:13:28:13 | x | main.rs:29:20:29:20 | x | | main.rs:30:5:30:5 | x | main.rs:28:13:28:13 | x | main.rs:31:20:31:20 | x | | main.rs:35:9:35:10 | x3 | main.rs:35:9:35:10 | x3 | main.rs:36:15:36:16 | x3 | | main.rs:35:9:35:10 | x3 | main.rs:35:9:35:10 | x3 | main.rs:38:9:38:10 | x3 | @@ -178,10 +178,10 @@ read | main.rs:77:12:77:13 | a2 | main.rs:77:12:77:13 | a2 | main.rs:80:15:80:16 | a2 | | main.rs:78:12:78:13 | b2 | main.rs:78:12:78:13 | b2 | main.rs:81:15:81:16 | b2 | | main.rs:85:9:85:10 | s1 | main.rs:85:9:85:10 | s1 | main.rs:88:11:88:12 | s1 | -| main.rs:87:17:87:22 | ref s2 | main.rs:87:21:87:22 | s2 | main.rs:89:19:89:20 | s2 | +| main.rs:87:21:87:22 | s2 | main.rs:87:21:87:22 | s2 | main.rs:89:19:89:20 | s2 | | main.rs:94:14:94:15 | x5 | main.rs:94:14:94:15 | x5 | main.rs:98:15:98:16 | x5 | | main.rs:102:9:102:10 | s1 | main.rs:102:9:102:10 | s1 | main.rs:105:11:105:12 | s1 | -| main.rs:104:20:104:25 | ref s2 | main.rs:104:24:104:25 | s2 | main.rs:106:19:106:20 | s2 | +| main.rs:104:24:104:25 | s2 | main.rs:104:24:104:25 | s2 | main.rs:106:19:106:20 | s2 | | main.rs:111:9:111:10 | x6 | main.rs:111:9:111:10 | x6 | main.rs:114:11:114:12 | x6 | | main.rs:112:9:112:10 | y1 | main.rs:112:9:112:10 | y1 | main.rs:124:15:124:16 | y1 | | main.rs:116:14:116:15 | y1 | main.rs:116:14:116:15 | y1 | main.rs:119:23:119:24 | y1 | @@ -195,7 +195,7 @@ read | main.rs:155:9:155:10 | p2 | main.rs:155:9:155:10 | p2 | main.rs:157:11:157:12 | p2 | | main.rs:159:16:159:17 | x7 | main.rs:159:16:159:17 | x7 | main.rs:160:24:160:25 | x7 | | main.rs:169:9:169:11 | msg | main.rs:169:9:169:11 | msg | main.rs:171:11:171:13 | msg | -| main.rs:173:17:173:35 | [match(true)] id_variable @ ... | main.rs:173:17:173:27 | id_variable | main.rs:174:24:174:34 | id_variable | +| main.rs:173:17:173:27 | id_variable | main.rs:173:17:173:27 | id_variable | main.rs:174:24:174:34 | id_variable | | main.rs:178:26:178:27 | id | main.rs:178:26:178:27 | id | main.rs:179:23:179:24 | id | | main.rs:189:9:189:14 | either | main.rs:189:9:189:14 | either | main.rs:190:11:190:16 | either | | main.rs:191:9:191:44 | [match(true)] phi | main.rs:191:9:191:44 | a3 | main.rs:192:26:192:27 | a3 | @@ -209,7 +209,7 @@ read | main.rs:221:9:221:44 | [match(true)] phi | main.rs:221:9:221:44 | a7 | main.rs:222:16:222:17 | a7 | | main.rs:221:9:221:44 | [match(true)] phi | main.rs:221:9:221:44 | a7 | main.rs:223:26:223:27 | a7 | | main.rs:229:9:229:14 | either | main.rs:229:9:229:14 | either | main.rs:231:11:231:16 | either | -| main.rs:232:9:233:52 | [match(true)] ref e @ ... | main.rs:232:13:232:13 | e | main.rs:237:15:237:15 | e | +| main.rs:232:13:232:13 | e | main.rs:232:13:232:13 | e | main.rs:237:15:237:15 | e | | main.rs:233:14:233:51 | [match(true)] phi | main.rs:233:14:233:51 | a11 | main.rs:235:23:235:25 | a11 | | main.rs:236:33:236:35 | a12 | main.rs:236:33:236:35 | a12 | main.rs:238:28:238:30 | a12 | | main.rs:253:9:253:10 | fv | main.rs:253:9:253:10 | fv | main.rs:254:11:254:12 | fv | @@ -218,9 +218,9 @@ read | main.rs:263:9:263:10 | b3 | main.rs:263:9:263:10 | b3 | main.rs:267:15:267:16 | b3 | | main.rs:264:9:264:10 | c1 | main.rs:264:9:264:10 | c1 | main.rs:268:15:268:16 | c1 | | main.rs:272:6:272:41 | [match(true)] phi | main.rs:272:6:272:41 | a9 | main.rs:274:15:274:16 | a9 | -| main.rs:279:9:279:15 | mut a10 | main.rs:279:13:279:15 | a10 | main.rs:283:15:283:17 | a10 | -| main.rs:280:9:280:14 | mut b4 | main.rs:280:13:280:14 | b4 | main.rs:284:15:284:16 | b4 | -| main.rs:281:9:281:14 | mut c2 | main.rs:281:13:281:14 | c2 | main.rs:285:15:285:16 | c2 | +| main.rs:279:13:279:15 | a10 | main.rs:279:13:279:15 | a10 | main.rs:283:15:283:17 | a10 | +| main.rs:280:13:280:14 | b4 | main.rs:280:13:280:14 | b4 | main.rs:284:15:284:16 | b4 | +| main.rs:281:13:281:14 | c2 | main.rs:281:13:281:14 | c2 | main.rs:285:15:285:16 | c2 | | main.rs:288:9:288:10 | c2 | main.rs:281:13:281:14 | c2 | main.rs:294:9:294:10 | c2 | | main.rs:288:9:288:10 | c2 | main.rs:281:13:281:14 | c2 | main.rs:298:15:298:16 | c2 | | main.rs:289:9:289:10 | b4 | main.rs:280:13:280:14 | b4 | main.rs:293:9:293:10 | b4 | @@ -263,17 +263,17 @@ read | main.rs:430:9:430:9 | x | main.rs:430:9:430:9 | x | main.rs:436:15:436:15 | x | | main.rs:432:9:432:11 | cap | main.rs:432:9:432:11 | cap | main.rs:435:5:435:7 | cap | | main.rs:432:15:434:5 | x | main.rs:430:9:430:9 | x | main.rs:433:19:433:19 | x | -| main.rs:440:9:440:13 | mut x | main.rs:440:13:440:13 | x | main.rs:446:15:446:15 | x | +| main.rs:440:13:440:13 | x | main.rs:440:13:440:13 | x | main.rs:446:15:446:15 | x | | main.rs:442:9:442:16 | closure1 | main.rs:442:9:442:16 | closure1 | main.rs:445:5:445:12 | closure1 | | main.rs:442:20:444:5 | x | main.rs:440:13:440:13 | x | main.rs:443:19:443:19 | x | -| main.rs:450:9:450:20 | mut closure2 | main.rs:450:13:450:20 | closure2 | main.rs:453:5:453:12 | closure2 | +| main.rs:450:13:450:20 | closure2 | main.rs:450:13:450:20 | closure2 | main.rs:453:5:453:12 | closure2 | | main.rs:453:5:453:14 | y | main.rs:448:13:448:13 | y | main.rs:454:15:454:15 | y | -| main.rs:458:9:458:20 | mut closure3 | main.rs:458:13:458:20 | closure3 | main.rs:461:5:461:12 | closure3 | +| main.rs:458:13:458:20 | closure3 | main.rs:458:13:458:20 | closure3 | main.rs:461:5:461:12 | closure3 | | main.rs:467:9:467:13 | block | main.rs:467:9:467:13 | block | main.rs:471:5:471:9 | block | | main.rs:471:5:471:15 | i | main.rs:466:13:466:13 | i | main.rs:472:15:472:15 | i | | main.rs:475:8:475:8 | b | main.rs:475:8:475:8 | b | main.rs:479:8:479:8 | b | -| main.rs:476:9:476:13 | mut x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x | -| main.rs:476:9:476:13 | mut x | main.rs:476:13:476:13 | x | main.rs:478:15:478:15 | x | +| main.rs:476:13:476:13 | x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x | +| main.rs:476:13:476:13 | x | main.rs:476:13:476:13 | x | main.rs:478:15:478:15 | x | | main.rs:479:5:487:5 | phi | main.rs:476:13:476:13 | x | main.rs:488:15:488:15 | x | | main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | main.rs:481:19:481:19 | x | | main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | main.rs:482:19:482:19 | x | @@ -285,20 +285,20 @@ read | main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:496:19:496:19 | x | | main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:500:19:500:19 | x | | main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:502:19:502:19 | x | -| main.rs:512:15:512:23 | SelfParam | main.rs:512:20:512:23 | self | main.rs:513:16:513:19 | self | -| main.rs:516:11:516:14 | SelfParam | main.rs:516:11:516:14 | self | main.rs:517:9:517:12 | self | -| main.rs:521:13:521:17 | mut f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f | -| main.rs:521:13:521:17 | mut f | main.rs:521:17:521:17 | f | main.rs:526:9:526:9 | f | +| main.rs:512:20:512:23 | self | main.rs:512:20:512:23 | self | main.rs:513:16:513:19 | self | +| main.rs:516:11:516:14 | self | main.rs:516:11:516:14 | self | main.rs:517:9:517:12 | self | +| main.rs:521:17:521:17 | f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f | +| main.rs:521:17:521:17 | f | main.rs:521:17:521:17 | f | main.rs:526:9:526:9 | f | | main.rs:521:21:524:9 | self | main.rs:520:23:520:26 | self | main.rs:523:13:523:16 | self | | main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | n | main.rs:523:25:523:25 | n | -| main.rs:540:9:540:13 | mut a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a | -| main.rs:540:9:540:13 | mut a | main.rs:540:13:540:13 | a | main.rs:542:5:542:5 | a | -| main.rs:540:9:540:13 | mut a | main.rs:540:13:540:13 | a | main.rs:543:15:543:15 | a | +| main.rs:540:13:540:13 | a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a | +| main.rs:540:13:540:13 | a | main.rs:540:13:540:13 | a | main.rs:542:5:542:5 | a | +| main.rs:540:13:540:13 | a | main.rs:540:13:540:13 | a | main.rs:543:15:543:15 | a | | main.rs:544:5:544:5 | a | main.rs:540:13:540:13 | a | main.rs:545:15:545:15 | a | | main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:550:20:550:20 | x | | main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:551:15:551:15 | x | | main.rs:553:9:553:9 | z | main.rs:553:9:553:9 | z | main.rs:554:20:554:20 | z | -| main.rs:562:10:562:18 | SelfParam | main.rs:562:15:562:18 | self | main.rs:563:6:563:9 | self | +| main.rs:562:15:562:18 | self | main.rs:562:15:562:18 | self | main.rs:563:6:563:9 | self | | main.rs:593:9:593:22 | var_from_macro | main.rs:593:9:593:22 | var_from_macro | main.rs:595:15:595:28 | var_from_macro | | main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | | main.rs:596:9:596:20 | var_in_macro | main.rs:596:9:596:20 | var_in_macro | main.rs:601:15:601:26 | var_in_macro | @@ -308,9 +308,9 @@ firstRead | main.rs:7:14:7:14 | i | main.rs:7:14:7:14 | i | main.rs:8:20:8:20 | i | | main.rs:11:18:11:18 | i | main.rs:11:18:11:18 | i | main.rs:12:16:12:16 | i | | main.rs:16:9:16:10 | x1 | main.rs:16:9:16:10 | x1 | main.rs:17:15:17:16 | x1 | -| main.rs:21:9:21:14 | mut x2 | main.rs:21:13:21:14 | x2 | main.rs:22:15:22:16 | x2 | +| main.rs:21:13:21:14 | x2 | main.rs:21:13:21:14 | x2 | main.rs:22:15:22:16 | x2 | | main.rs:23:5:23:6 | x2 | main.rs:21:13:21:14 | x2 | main.rs:24:15:24:16 | x2 | -| main.rs:28:9:28:13 | mut x | main.rs:28:13:28:13 | x | main.rs:29:20:29:20 | x | +| main.rs:28:13:28:13 | x | main.rs:28:13:28:13 | x | main.rs:29:20:29:20 | x | | main.rs:30:5:30:5 | x | main.rs:28:13:28:13 | x | main.rs:31:20:31:20 | x | | main.rs:35:9:35:10 | x3 | main.rs:35:9:35:10 | x3 | main.rs:36:15:36:16 | x3 | | main.rs:37:9:37:10 | x3 | main.rs:37:9:37:10 | x3 | main.rs:39:15:39:16 | x3 | @@ -324,10 +324,10 @@ firstRead | main.rs:77:12:77:13 | a2 | main.rs:77:12:77:13 | a2 | main.rs:80:15:80:16 | a2 | | main.rs:78:12:78:13 | b2 | main.rs:78:12:78:13 | b2 | main.rs:81:15:81:16 | b2 | | main.rs:85:9:85:10 | s1 | main.rs:85:9:85:10 | s1 | main.rs:88:11:88:12 | s1 | -| main.rs:87:17:87:22 | ref s2 | main.rs:87:21:87:22 | s2 | main.rs:89:19:89:20 | s2 | +| main.rs:87:21:87:22 | s2 | main.rs:87:21:87:22 | s2 | main.rs:89:19:89:20 | s2 | | main.rs:94:14:94:15 | x5 | main.rs:94:14:94:15 | x5 | main.rs:98:15:98:16 | x5 | | main.rs:102:9:102:10 | s1 | main.rs:102:9:102:10 | s1 | main.rs:105:11:105:12 | s1 | -| main.rs:104:20:104:25 | ref s2 | main.rs:104:24:104:25 | s2 | main.rs:106:19:106:20 | s2 | +| main.rs:104:24:104:25 | s2 | main.rs:104:24:104:25 | s2 | main.rs:106:19:106:20 | s2 | | main.rs:111:9:111:10 | x6 | main.rs:111:9:111:10 | x6 | main.rs:114:11:114:12 | x6 | | main.rs:112:9:112:10 | y1 | main.rs:112:9:112:10 | y1 | main.rs:124:15:124:16 | y1 | | main.rs:116:14:116:15 | y1 | main.rs:116:14:116:15 | y1 | main.rs:119:23:119:24 | y1 | @@ -340,7 +340,7 @@ firstRead | main.rs:155:9:155:10 | p2 | main.rs:155:9:155:10 | p2 | main.rs:157:11:157:12 | p2 | | main.rs:159:16:159:17 | x7 | main.rs:159:16:159:17 | x7 | main.rs:160:24:160:25 | x7 | | main.rs:169:9:169:11 | msg | main.rs:169:9:169:11 | msg | main.rs:171:11:171:13 | msg | -| main.rs:173:17:173:35 | [match(true)] id_variable @ ... | main.rs:173:17:173:27 | id_variable | main.rs:174:24:174:34 | id_variable | +| main.rs:173:17:173:27 | id_variable | main.rs:173:17:173:27 | id_variable | main.rs:174:24:174:34 | id_variable | | main.rs:178:26:178:27 | id | main.rs:178:26:178:27 | id | main.rs:179:23:179:24 | id | | main.rs:189:9:189:14 | either | main.rs:189:9:189:14 | either | main.rs:190:11:190:16 | either | | main.rs:191:9:191:44 | [match(true)] phi | main.rs:191:9:191:44 | a3 | main.rs:192:26:192:27 | a3 | @@ -351,7 +351,7 @@ firstRead | main.rs:219:9:219:14 | either | main.rs:219:9:219:14 | either | main.rs:220:11:220:16 | either | | main.rs:221:9:221:44 | [match(true)] phi | main.rs:221:9:221:44 | a7 | main.rs:222:16:222:17 | a7 | | main.rs:229:9:229:14 | either | main.rs:229:9:229:14 | either | main.rs:231:11:231:16 | either | -| main.rs:232:9:233:52 | [match(true)] ref e @ ... | main.rs:232:13:232:13 | e | main.rs:237:15:237:15 | e | +| main.rs:232:13:232:13 | e | main.rs:232:13:232:13 | e | main.rs:237:15:237:15 | e | | main.rs:233:14:233:51 | [match(true)] phi | main.rs:233:14:233:51 | a11 | main.rs:235:23:235:25 | a11 | | main.rs:236:33:236:35 | a12 | main.rs:236:33:236:35 | a12 | main.rs:238:28:238:30 | a12 | | main.rs:253:9:253:10 | fv | main.rs:253:9:253:10 | fv | main.rs:254:11:254:12 | fv | @@ -360,9 +360,9 @@ firstRead | main.rs:263:9:263:10 | b3 | main.rs:263:9:263:10 | b3 | main.rs:267:15:267:16 | b3 | | main.rs:264:9:264:10 | c1 | main.rs:264:9:264:10 | c1 | main.rs:268:15:268:16 | c1 | | main.rs:272:6:272:41 | [match(true)] phi | main.rs:272:6:272:41 | a9 | main.rs:274:15:274:16 | a9 | -| main.rs:279:9:279:15 | mut a10 | main.rs:279:13:279:15 | a10 | main.rs:283:15:283:17 | a10 | -| main.rs:280:9:280:14 | mut b4 | main.rs:280:13:280:14 | b4 | main.rs:284:15:284:16 | b4 | -| main.rs:281:9:281:14 | mut c2 | main.rs:281:13:281:14 | c2 | main.rs:285:15:285:16 | c2 | +| main.rs:279:13:279:15 | a10 | main.rs:279:13:279:15 | a10 | main.rs:283:15:283:17 | a10 | +| main.rs:280:13:280:14 | b4 | main.rs:280:13:280:14 | b4 | main.rs:284:15:284:16 | b4 | +| main.rs:281:13:281:14 | c2 | main.rs:281:13:281:14 | c2 | main.rs:285:15:285:16 | c2 | | main.rs:288:9:288:10 | c2 | main.rs:281:13:281:14 | c2 | main.rs:294:9:294:10 | c2 | | main.rs:289:9:289:10 | b4 | main.rs:280:13:280:14 | b4 | main.rs:293:9:293:10 | b4 | | main.rs:290:9:290:11 | a10 | main.rs:279:13:279:15 | a10 | main.rs:292:9:292:11 | a10 | @@ -392,16 +392,16 @@ firstRead | main.rs:430:9:430:9 | x | main.rs:430:9:430:9 | x | main.rs:436:15:436:15 | x | | main.rs:432:9:432:11 | cap | main.rs:432:9:432:11 | cap | main.rs:435:5:435:7 | cap | | main.rs:432:15:434:5 | x | main.rs:430:9:430:9 | x | main.rs:433:19:433:19 | x | -| main.rs:440:9:440:13 | mut x | main.rs:440:13:440:13 | x | main.rs:446:15:446:15 | x | +| main.rs:440:13:440:13 | x | main.rs:440:13:440:13 | x | main.rs:446:15:446:15 | x | | main.rs:442:9:442:16 | closure1 | main.rs:442:9:442:16 | closure1 | main.rs:445:5:445:12 | closure1 | | main.rs:442:20:444:5 | x | main.rs:440:13:440:13 | x | main.rs:443:19:443:19 | x | -| main.rs:450:9:450:20 | mut closure2 | main.rs:450:13:450:20 | closure2 | main.rs:453:5:453:12 | closure2 | +| main.rs:450:13:450:20 | closure2 | main.rs:450:13:450:20 | closure2 | main.rs:453:5:453:12 | closure2 | | main.rs:453:5:453:14 | y | main.rs:448:13:448:13 | y | main.rs:454:15:454:15 | y | -| main.rs:458:9:458:20 | mut closure3 | main.rs:458:13:458:20 | closure3 | main.rs:461:5:461:12 | closure3 | +| main.rs:458:13:458:20 | closure3 | main.rs:458:13:458:20 | closure3 | main.rs:461:5:461:12 | closure3 | | main.rs:467:9:467:13 | block | main.rs:467:9:467:13 | block | main.rs:471:5:471:9 | block | | main.rs:471:5:471:15 | i | main.rs:466:13:466:13 | i | main.rs:472:15:472:15 | i | | main.rs:475:8:475:8 | b | main.rs:475:8:475:8 | b | main.rs:479:8:479:8 | b | -| main.rs:476:9:476:13 | mut x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x | +| main.rs:476:13:476:13 | x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x | | main.rs:479:5:487:5 | phi | main.rs:476:13:476:13 | x | main.rs:488:15:488:15 | x | | main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | main.rs:481:19:481:19 | x | | main.rs:484:9:484:9 | x | main.rs:476:13:476:13 | x | main.rs:485:19:485:19 | x | @@ -409,16 +409,16 @@ firstRead | main.rs:491:24:491:25 | b2 | main.rs:491:24:491:25 | b2 | main.rs:499:8:499:9 | b2 | | main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:494:19:494:19 | x | | main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:496:19:496:19 | x | -| main.rs:512:15:512:23 | SelfParam | main.rs:512:20:512:23 | self | main.rs:513:16:513:19 | self | -| main.rs:516:11:516:14 | SelfParam | main.rs:516:11:516:14 | self | main.rs:517:9:517:12 | self | -| main.rs:521:13:521:17 | mut f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f | +| main.rs:512:20:512:23 | self | main.rs:512:20:512:23 | self | main.rs:513:16:513:19 | self | +| main.rs:516:11:516:14 | self | main.rs:516:11:516:14 | self | main.rs:517:9:517:12 | self | +| main.rs:521:17:521:17 | f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f | | main.rs:521:21:524:9 | self | main.rs:520:23:520:26 | self | main.rs:523:13:523:16 | self | | main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | n | main.rs:523:25:523:25 | n | -| main.rs:540:9:540:13 | mut a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a | +| main.rs:540:13:540:13 | a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a | | main.rs:544:5:544:5 | a | main.rs:540:13:540:13 | a | main.rs:545:15:545:15 | a | | main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:550:20:550:20 | x | | main.rs:553:9:553:9 | z | main.rs:553:9:553:9 | z | main.rs:554:20:554:20 | z | -| main.rs:562:10:562:18 | SelfParam | main.rs:562:15:562:18 | self | main.rs:563:6:563:9 | self | +| main.rs:562:15:562:18 | self | main.rs:562:15:562:18 | self | main.rs:563:6:563:9 | self | | main.rs:593:9:593:22 | var_from_macro | main.rs:593:9:593:22 | var_from_macro | main.rs:595:15:595:28 | var_from_macro | | main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | | main.rs:596:9:596:20 | var_in_macro | main.rs:596:9:596:20 | var_in_macro | main.rs:601:15:601:26 | var_in_macro | @@ -444,16 +444,16 @@ adjacentReads | main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:395:10:395:10 | x | main.rs:396:10:396:10 | x | | main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:396:10:396:10 | x | main.rs:398:9:398:9 | x | | main.rs:410:9:410:9 | w | main.rs:410:9:410:9 | w | main.rs:414:9:414:9 | w | main.rs:416:7:416:7 | w | -| main.rs:476:9:476:13 | mut x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x | main.rs:478:15:478:15 | x | +| main.rs:476:13:476:13 | x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x | main.rs:478:15:478:15 | x | | main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | main.rs:481:19:481:19 | x | main.rs:482:19:482:19 | x | | main.rs:484:9:484:9 | x | main.rs:476:13:476:13 | x | main.rs:485:19:485:19 | x | main.rs:486:19:486:19 | x | | main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:494:19:494:19 | x | main.rs:500:19:500:19 | x | | main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:494:19:494:19 | x | main.rs:502:19:502:19 | x | | main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:496:19:496:19 | x | main.rs:500:19:500:19 | x | | main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:496:19:496:19 | x | main.rs:502:19:502:19 | x | -| main.rs:521:13:521:17 | mut f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f | main.rs:526:9:526:9 | f | -| main.rs:540:9:540:13 | mut a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a | main.rs:542:5:542:5 | a | -| main.rs:540:9:540:13 | mut a | main.rs:540:13:540:13 | a | main.rs:542:5:542:5 | a | main.rs:543:15:543:15 | a | +| main.rs:521:17:521:17 | f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f | main.rs:526:9:526:9 | f | +| main.rs:540:13:540:13 | a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a | main.rs:542:5:542:5 | a | +| main.rs:540:13:540:13 | a | main.rs:540:13:540:13 | a | main.rs:542:5:542:5 | a | main.rs:543:15:543:15 | a | | main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:550:20:550:20 | x | main.rs:551:15:551:15 | x | phi | main.rs:191:9:191:44 | [match(true)] phi | main.rs:191:9:191:44 | a3 | main.rs:191:22:191:23 | a3 | @@ -525,9 +525,9 @@ ultimateDef | main.rs:479:5:487:5 | phi | main.rs:484:9:484:9 | x | assigns | main.rs:16:9:16:10 | x1 | main.rs:16:14:16:16 | "a" | -| main.rs:21:9:21:14 | mut x2 | main.rs:21:18:21:18 | 4 | +| main.rs:21:13:21:14 | x2 | main.rs:21:18:21:18 | 4 | | main.rs:23:5:23:6 | x2 | main.rs:23:10:23:10 | 5 | -| main.rs:28:9:28:13 | mut x | main.rs:28:17:28:17 | 1 | +| main.rs:28:13:28:13 | x | main.rs:28:17:28:17 | 1 | | main.rs:30:5:30:5 | x | main.rs:30:9:30:9 | 2 | | main.rs:35:9:35:10 | x3 | main.rs:35:14:35:14 | 1 | | main.rs:37:9:37:10 | x3 | main.rs:38:9:38:14 | ... + ... | @@ -559,21 +559,21 @@ assigns | main.rs:423:9:423:9 | y | main.rs:424:9:424:14 | &mut x | | main.rs:430:9:430:9 | x | main.rs:430:13:430:15 | 100 | | main.rs:432:9:432:11 | cap | main.rs:432:15:434:5 | \|...\| ... | -| main.rs:440:9:440:13 | mut x | main.rs:440:17:440:17 | 1 | +| main.rs:440:13:440:13 | x | main.rs:440:17:440:17 | 1 | | main.rs:442:9:442:16 | closure1 | main.rs:442:20:444:5 | \|...\| ... | -| main.rs:448:9:448:13 | mut y | main.rs:448:17:448:17 | 2 | -| main.rs:450:9:450:20 | mut closure2 | main.rs:450:24:452:5 | \|...\| ... | +| main.rs:448:13:448:13 | y | main.rs:448:17:448:17 | 2 | +| main.rs:450:13:450:20 | closure2 | main.rs:450:24:452:5 | \|...\| ... | | main.rs:451:9:451:9 | y | main.rs:451:13:451:13 | 3 | -| main.rs:458:9:458:20 | mut closure3 | main.rs:458:24:460:5 | \|...\| ... | -| main.rs:466:9:466:13 | mut i | main.rs:466:22:466:22 | 0 | +| main.rs:458:13:458:20 | closure3 | main.rs:458:24:460:5 | \|...\| ... | +| main.rs:466:13:466:13 | i | main.rs:466:22:466:22 | 0 | | main.rs:467:9:467:13 | block | main.rs:467:17:469:5 | { ... } | | main.rs:468:9:468:9 | i | main.rs:468:13:468:13 | 1 | -| main.rs:476:9:476:13 | mut x | main.rs:476:17:476:17 | 1 | +| main.rs:476:13:476:13 | x | main.rs:476:17:476:17 | 1 | | main.rs:480:9:480:9 | x | main.rs:480:13:480:13 | 2 | | main.rs:484:9:484:9 | x | main.rs:484:13:484:13 | 3 | | main.rs:492:9:492:9 | x | main.rs:492:13:492:13 | 1 | -| main.rs:521:13:521:17 | mut f | main.rs:521:21:524:9 | \|...\| ... | -| main.rs:540:9:540:13 | mut a | main.rs:540:17:540:25 | [...] | +| main.rs:521:17:521:17 | f | main.rs:521:21:524:9 | \|...\| ... | +| main.rs:540:13:540:13 | a | main.rs:540:17:540:25 | [...] | | main.rs:544:5:544:5 | a | main.rs:544:9:544:17 | [...] | | main.rs:549:9:549:9 | x | main.rs:549:13:549:14 | 16 | | main.rs:553:9:553:9 | z | main.rs:553:13:553:14 | 17 | diff --git a/rust/ql/test/library-tests/variables/variables.ql b/rust/ql/test/library-tests/variables/variables.ql index 9d643a36f38..f7793911dae 100644 --- a/rust/ql/test/library-tests/variables/variables.ql +++ b/rust/ql/test/library-tests/variables/variables.ql @@ -40,7 +40,7 @@ module VariableAccessTest implements TestSig { commmentAt(value, filepath, line) and inMacro = false or not (commmentAt(_, filepath, line) and inMacro = false) and - value = v.getName() + value = v.getText() ) } diff --git a/rust/ql/test/utils-tests/modelgenerator/option.rs b/rust/ql/test/utils-tests/modelgenerator/option.rs index 296e7ba9567..6d12920321f 100644 --- a/rust/ql/test/utils-tests/modelgenerator/option.rs +++ b/rust/ql/test/utils-tests/modelgenerator/option.rs @@ -44,9 +44,7 @@ impl MyOption { } } - // NOTE: The returned value inside the variant should be inside a `Reference`, requires handling - // `ref` in patterns. - // summary=repo::test;::as_ref;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated + // summary=repo::test;::as_ref;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)].Reference;value;dfc-generated pub fn as_ref(&self) -> MyOption<&T> { match *self { MySome(ref x) => MySome(x), @@ -54,7 +52,7 @@ impl MyOption { } } - // summary=repo::test;::as_mut;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated + // summary=repo::test;::as_mut;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)].Reference;value;dfc-generated pub fn as_mut(&mut self) -> MyOption<&mut T> { match *self { MySome(ref mut x) => MySome(x), @@ -288,10 +286,9 @@ impl MyOption { } // summary=repo::test;::insert;Argument[0];Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated - // The below should be `ReturnValue.Reference` and not just `ReturnValue`. - // SPURIOUS-summary=repo::test;::insert;Argument[0];ReturnValue;value;dfc-generated + // summary=repo::test;::insert;Argument[0];ReturnValue.Reference;value;dfc-generated // The content of `self` is overwritten so it does not flow to the return value. - // SPURIOUS-summary=repo::test;::insert;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated + // SPURIOUS-summary=repo::test;::insert;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated pub fn insert(&mut self, value: T) -> &mut T { *self = MySome(value); @@ -300,13 +297,13 @@ impl MyOption { } // summary=repo::test;::get_or_insert;Argument[0];Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated - // summary=repo::test;::get_or_insert;Argument[0];ReturnValue;value;dfc-generated - // summary=repo::test;::get_or_insert;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated + // summary=repo::test;::get_or_insert;Argument[0];ReturnValue.Reference;value;dfc-generated + // summary=repo::test;::get_or_insert;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated pub fn get_or_insert(&mut self, value: T) -> &mut T { self.get_or_insert_with(|| value) } - // summary=repo::test;::get_or_insert_default;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated + // summary=repo::test;::get_or_insert_default;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated pub fn get_or_insert_default(&mut self) -> &mut T where T: Default, @@ -314,7 +311,7 @@ impl MyOption { self.get_or_insert_with(T::default) } - // summary=repo::test;::get_or_insert_with;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated + // summary=repo::test;::get_or_insert_with;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated // MISSING: Mutating `self` parameter. pub fn get_or_insert_with(&mut self, f: F) -> &mut T where @@ -335,7 +332,7 @@ impl MyOption { mem::replace(self, MyNone) } - // summary=repo::test;::take_if;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];Argument[0].Parameter[0];value;dfc-generated + // summary=repo::test;::take_if;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];Argument[0].Parameter[0].Reference;value;dfc-generated // MISSING: Uses `take` which doesn't have flow pub fn take_if

(&mut self, predicate: P) -> MyOption where @@ -480,14 +477,14 @@ impl From for MyOption { } impl<'a, T> From<&'a MyOption> for MyOption<&'a T> { - // summary=repo::test;::from;Argument[0].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated + // summary=repo::test;::from;Argument[0].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)].Reference;value;dfc-generated fn from(o: &'a MyOption) -> MyOption<&'a T> { o.as_ref() } } impl<'a, T> From<&'a mut MyOption> for MyOption<&'a mut T> { - // summary=repo::test;::from;Argument[0].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated + // summary=repo::test;::from;Argument[0].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)].Reference;value;dfc-generated fn from(o: &'a mut MyOption) -> MyOption<&'a mut T> { o.as_mut() } diff --git a/rust/schema/annotations.py b/rust/schema/annotations.py index 27a1b4f89fd..fd0cb151a6d 100644 --- a/rust/schema/annotations.py +++ b/rust/schema/annotations.py @@ -1336,7 +1336,7 @@ class _: """ -@annotate(Name) +@annotate(Name, cfg=True) class _: """ A Name. For example: