diff --git a/rust/ql/integration-tests/hello-workspace/path-resolution.ql b/rust/ql/integration-tests/hello-workspace/path-resolution.ql index 9ec97b61eeb3..574a95531558 100644 --- a/rust/ql/integration-tests/hello-workspace/path-resolution.ql +++ b/rust/ql/integration-tests/hello-workspace/path-resolution.ql @@ -2,7 +2,7 @@ import rust import codeql.rust.internal.PathResolution import utils.test.PathResolutionInlineExpectationsTest -query predicate resolveDollarCrate(RelevantPath p, Crate c) { +query predicate resolveDollarCrate(PathExt p, Crate c) { c = resolvePath(p) and p.isDollarCrate() and p.fromSource() and diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll b/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll index 0250f1cbc435..33da4db473eb 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll @@ -1,5 +1,6 @@ private import codeql.util.Boolean private import codeql.rust.controlflow.ControlFlowGraph +private import codeql.rust.elements.internal.VariableImpl::Impl as VariableImpl private import rust newtype TCompletion = @@ -123,13 +124,7 @@ class BooleanCompletion extends ConditionalCompletion, TBooleanCompletion { */ private predicate cannotCauseMatchFailure(Pat pat) { pat instanceof RangePat or - // Identifier patterns that are in fact path patterns can cause failures. For - // instance `None`. Only if an `@ ...` part is present can we be sure that - // it's an actual identifier pattern. As a heuristic, if the identifier starts - // with a lower case letter, then we assume that it's an identifier. This - // works for code that follows the Rust naming convention for enums and - // constants. - pat = any(IdentPat p | p.hasPat() or p.getName().getText().charAt(0).isLowercase()) or + pat = any(IdentPat p | p.hasPat() or VariableImpl::variableDecl(_, p.getName(), _)) or pat instanceof WildcardPat or pat instanceof RestPat or pat instanceof RefPat or diff --git a/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll index 237ebfa6b413..14276ad6108b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll @@ -29,6 +29,24 @@ module Impl { result = getImmediateParent(e) } + /** + * Holds if `n` is superseded by an attribute macro expansion. That is, `n` is + * an item or a transitive child of an item with an attribute macro expansion. + */ + predicate supersededByAttributeMacroExpansion(AstNode n) { + n.(Item).hasAttributeMacroExpansion() + or + exists(AstNode parent | + n.getParentNode() = parent and + supersededByAttributeMacroExpansion(parent) and + // Don't exclude expansions themselves as they supercede other nodes. + not n = parent.(Item).getAttributeMacroExpansion() and + // Don't consider attributes themselves to be superseded. E.g., in `#[a] fn + // f() {}` the macro expansion supercedes `fn f() {}` but not `#[a]`. + not n instanceof Attr + ) + } + class AstNode extends Generated::AstNode { /** * Gets the nearest enclosing parent of this node, which is also an `AstNode`, diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll index 210820fd1053..71c6cfbffc07 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll @@ -82,7 +82,7 @@ module Impl { } private predicate callHasTraitQualifier(CallExpr call, Trait qualifier) { - exists(RelevantPath qualifierPath | + exists(PathExt qualifierPath | callHasQualifier(call, _, qualifierPath) and qualifier = resolvePath(qualifierPath) and // When the qualifier is `Self` and resolves to a trait, it's inside a diff --git a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll index 0234f7cf7302..44114674a566 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll @@ -5,6 +5,8 @@ */ private import codeql.rust.elements.internal.generated.Const +private import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl +private import codeql.rust.elements.internal.IdentPatImpl::Impl as IdentPatImpl private import codeql.rust.elements.internal.PathExprImpl::Impl as PathExprImpl private import codeql.rust.internal.PathResolution @@ -36,14 +38,30 @@ module Impl { * } * ``` */ - class ConstAccess extends PathExprImpl::PathExpr { + abstract class ConstAccess extends AstNodeImpl::AstNode { + /** Gets the constant being accessed. */ + abstract Const getConst(); + + override string getAPrimaryQlClass() { result = "ConstAccess" } + } + + private class PathExprConstAccess extends ConstAccess, PathExprImpl::PathExpr { private Const c; - ConstAccess() { c = resolvePath(this.getPath()) } + PathExprConstAccess() { c = resolvePath(this.getPath()) } - /** Gets the constant being accessed. */ - Const getConst() { result = c } + override Const getConst() { result = c } - override string getAPrimaryQlClass() { result = "ConstAccess" } + override string getAPrimaryQlClass() { result = ConstAccess.super.getAPrimaryQlClass() } + } + + private class IdentPatConstAccess extends ConstAccess, IdentPatImpl::IdentPat { + private Const c; + + IdentPatConstAccess() { c = resolvePath(this) } + + override Const getConst() { result = c } + + override string getAPrimaryQlClass() { result = ConstAccess.super.getAPrimaryQlClass() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll index 17cc47d803f8..68d306af2c4d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll @@ -20,8 +20,6 @@ module Impl { or n = root.(Adt).getDeriveMacroExpansion(_) or - n = root.(Item).getAttributeMacroExpansion() - or isInMacroExpansion(root, n.getParentNode()) } diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll index 652dc68b3c9c..3be4d22b796a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll @@ -4,6 +4,7 @@ * INTERNAL: Do not use. */ +private import rust private import codeql.rust.elements.internal.generated.PathExpr /** @@ -25,5 +26,10 @@ module Impl { override string toStringImpl() { result = this.toAbbreviatedString() } override string toAbbreviatedString() { result = this.getPath().toStringImpl() } + + override string getAPrimaryQlClass() { + result = super.getAPrimaryQlClass() and + not this instanceof VariableAccess + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll index 6f89be716603..1f4413ed0b74 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll @@ -1,6 +1,8 @@ private import rust private import codeql.rust.controlflow.ControlFlowGraph +private import codeql.rust.internal.PathResolution as PathResolution private import codeql.rust.elements.internal.generated.ParentChild as ParentChild +private import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl private import codeql.rust.elements.internal.PathImpl::Impl as PathImpl private import codeql.rust.elements.internal.PathExprBaseImpl::Impl as PathExprBaseImpl private import codeql.rust.elements.internal.FormatTemplateVariableAccessImpl::Impl as FormatTemplateVariableAccessImpl @@ -15,21 +17,12 @@ module Impl { class BlockExprScope extends VariableScope, BlockExpr { } - abstract class MatchArmScope extends VariableScope { - MatchArm arm; - - bindingset[arm] - MatchArmScope() { exists(arm) } - - Pat getPat() { result = arm.getPat() } + class MatchArmExprScope extends VariableScope { + MatchArmExprScope() { this = any(MatchArm arm).getExpr() } } - class MatchArmExprScope extends MatchArmScope { - MatchArmExprScope() { this = arm.getExpr() } - } - - class MatchArmGuardScope extends MatchArmScope { - MatchArmGuardScope() { this = arm.getGuard() } + class MatchArmGuardScope extends VariableScope { + MatchArmGuardScope() { this = any(MatchArm arm).getGuard() } } class ClosureBodyScope extends VariableScope { @@ -41,7 +34,7 @@ module Impl { * * Such variables are only available in the body guarded by the condition. */ - class ConditionScope extends VariableScope, Expr { + class ConditionScope extends VariableScope { private AstNode parent; private AstNode body; @@ -57,6 +50,12 @@ module Impl { this = we.getCondition() and body = we.getLoopBody() ) + or + parent = + any(MatchArm ma | + this = ma.getGuard() and + body = ma.getExpr() + ) } /** Gets the parent of this condition. */ @@ -101,35 +100,34 @@ module Impl { * pattern. */ cached - private predicate variableDecl(AstNode definingNode, Name name, string text) { + predicate variableDecl(AstNode definingNode, Name name, string text) { Cached::ref() and - exists(SelfParam sp | - name = sp.getName() and - definingNode = name and - text = name.getText() 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.getSelfParam() = sp) - ) - or - exists(IdentPat pat | - name = pat.getName() and - ( - definingNode = getOutermostEnclosingOrPat(pat) - or - not exists(getOutermostEnclosingOrPat(pat)) and definingNode = name - ) and - text = name.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 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.getAParam().getPat() = pat) and - // exclude parameters from function pointer types (e.g. `x` in `fn(x: i32) -> i32`) - not exists(FnPtrTypeRepr fp | fp.getParamList().getAParam().getPat() = pat) + not AstNodeImpl::supersededByAttributeMacroExpansion(definingNode) and + ( + exists(SelfParam sp | + name = sp.getName() and + definingNode = name and + text = name.getText() 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.getSelfParam() = sp) + ) + or + exists(IdentPat pat | + name = pat.getName() and + ( + definingNode = getOutermostEnclosingOrPat(pat) + or + not exists(getOutermostEnclosingOrPat(pat)) and definingNode = name + ) and + text = name.getText() and + not PathResolution::identPatIsResolvable(pat) 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.getAParam().getPat() = pat) and + // exclude parameters from function pointer types (e.g. `x` in `fn(x: i32) -> i32`) + not exists(FnPtrTypeRepr fp | fp.getParamList().getAParam().getPat() = pat) + ) ) } @@ -417,11 +415,14 @@ module Impl { ord = getPreOrderNumbering(scope, scope) or exists(Pat pat | pat = getAVariablePatAncestor(v) | - scope = - any(MatchArmScope arm | - arm.getPat() = pat and - ord = getPreOrderNumbering(scope, arm) - ) + exists(MatchArm arm | + pat = arm.getPat() and + ord = getPreOrderNumbering(scope, scope) + | + scope = arm.getGuard() + or + not arm.hasGuard() and scope = arm.getExpr() + ) or exists(LetStmt let | let.getPat() = pat and diff --git a/rust/ql/lib/codeql/rust/internal/Definitions.qll b/rust/ql/lib/codeql/rust/internal/Definitions.qll index b1b3e475c468..60520a77cbf5 100644 --- a/rust/ql/lib/codeql/rust/internal/Definitions.qll +++ b/rust/ql/lib/codeql/rust/internal/Definitions.qll @@ -37,6 +37,9 @@ private module Cached { TFormatArgsArgIndex(Expr e) { e = any(FormatArgsArg a).getExpr() } or TItemNode(ItemNode i) + pragma[nomagic] + private predicate isMacroCallLocation(Location loc) { loc = any(MacroCall m).getLocation() } + /** * Gets an element, of kind `kind`, that element `use` uses, if any. */ @@ -44,7 +47,7 @@ private module Cached { Definition definitionOf(Use use, string kind) { result = use.getDefinition() and kind = use.getUseType() and - not result.getLocation() = any(MacroCall m).getLocation() + not isMacroCallLocation(result.getLocation()) } } diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index fc49b7ca5e82..9d946744f4d3 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -4,6 +4,7 @@ private import rust private import codeql.rust.elements.internal.generated.ParentChild +private import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl private import codeql.rust.elements.internal.CallExprImpl::Impl as CallExprImpl private import codeql.rust.internal.CachedStages private import codeql.rust.frameworks.stdlib.Builtins as Builtins @@ -90,24 +91,6 @@ private module UseOption = Option; private class UseOption = UseOption::Option; -/** - * Holds if `n` is superseded by an attribute macro expansion. That is, `n` is - * an item or a transitive child of an item with an attribute macro expansion. - */ -predicate supersededByAttributeMacroExpansion(AstNode n) { - n.(Item).hasAttributeMacroExpansion() - or - exists(AstNode parent | - n.getParentNode() = parent and - supersededByAttributeMacroExpansion(parent) and - // Don't exclude expansions themselves as they supercede other nodes. - not n = parent.(Item).getAttributeMacroExpansion() and - // Don't consider attributes themselves to be superseded. E.g., in `#[a] fn - // f() {}` the macro expansion supercedes `fn f() {}` but not `#[a]`. - not n instanceof Attr - ) -} - /** * An item that may be referred to by a path, and which is a node in * the _item graph_. @@ -188,7 +171,7 @@ predicate supersededByAttributeMacroExpansion(AstNode n) { abstract class ItemNode extends Locatable { ItemNode() { // Exclude items that are superseded by the expansion of an attribute macro. - not supersededByAttributeMacroExpansion(this) + not AstNodeImpl::supersededByAttributeMacroExpansion(this) } /** Gets the (original) name of this item. */ @@ -205,7 +188,7 @@ abstract class ItemNode extends Locatable { pragma[nomagic] final Attr getAttr(string name) { result = this.getAnAttr() and - result.getMeta().getPath().(RelevantPath).isUnqualified(name) + result.getMeta().getPath().(PathExt).isUnqualified(name) } final predicate hasAttr(string name) { exists(this.getAttr(name)) } @@ -1457,6 +1440,24 @@ private predicate crateDependencyEdge(SourceFileItemNode file, string name, Crat not hasDeclOrDep(file, name) } +/** + * Gets a `UseTree` that is nested under `tree`, and which needs to be resolved + * relative to the path of `tree`. + * + * `tree` is restricted to either having a path or being a direct child of some + * `use` statement without a path. + */ +private UseTree getAUseTreeUseTree(UseTree tree) { + result = tree.getUseTreeList().getAUseTree() and + (if tree.hasPath() then any() else tree = any(Use u).getUseTree()) + or + exists(UseTree mid | + mid = getAUseTreeUseTree(tree) and + not mid.hasPath() and + result = mid.getUseTreeList().getAUseTree() + ) +} + private predicate useTreeDeclares(UseTree tree, string name) { not tree.isGlob() and not exists(tree.getUseTreeList()) and @@ -1470,7 +1471,7 @@ private predicate useTreeDeclares(UseTree tree, string name) { or exists(UseTree mid | useTreeDeclares(mid, name) and - mid = tree.getUseTreeList().getAUseTree() + mid = getAUseTreeUseTree(tree) ) } @@ -1503,17 +1504,24 @@ private predicate declares(ItemNode item, Namespace ns, string name) { ) } -/** A path that does not access a local variable. */ -class RelevantPath extends Path { - RelevantPath() { not this = any(VariableAccess va).(PathExpr).getPath() } +/** + * A `Path` or an `IdentPat`. + * + * `IdentPat`s are included in order to resolve unqualified references to + * constructors in patterns. + */ +abstract class PathExt extends AstNode { + PathExt() { not AstNodeImpl::supersededByAttributeMacroExpansion(this) } + + abstract string getText(); /** Holds if this is an unqualified path with the textual value `name`. */ pragma[nomagic] - predicate isUnqualified(string name) { - not exists(this.getQualifier()) and - not this = any(UseTreeList list).getAUseTree().getPath().getQualifier*() and - name = this.getText() - } + abstract predicate isUnqualified(string name); + + abstract Path getQualifier(); + + abstract string toStringDebug(); /** * Holds if this is an unqualified path with the textual value `name` and @@ -1535,6 +1543,33 @@ class RelevantPath extends Path { predicate isDollarCrate() { this.isUnqualified("$crate", _) } } +private class PathExtPath extends PathExt instanceof Path { + override string getText() { result = Path.super.getText() } + + override predicate isUnqualified(string name) { + not exists(Path.super.getQualifier()) and + not exists(UseTree tree | + tree.hasPath() and + this = getAUseTreeUseTree(tree).getPath().getQualifier*() + ) and + name = Path.super.getText() + } + + override Path getQualifier() { result = Path.super.getQualifier() } + + override string toStringDebug() { result = Path.super.toStringDebug() } +} + +private class PathExtIdentPat extends PathExt, IdentPat { + override string getText() { result = this.getName().getText() } + + override predicate isUnqualified(string name) { name = this.getText() } + + override Path getQualifier() { none() } + + override string toStringDebug() { result = this.getText() } +} + private predicate isModule(ItemNode m) { m instanceof Module } /** Holds if source file `source` contains the module `m`. */ @@ -1558,7 +1593,7 @@ private ItemNode getOuterScope(ItemNode i) { pragma[nomagic] private predicate unqualifiedPathLookup(ItemNode ancestor, string name, Namespace ns, ItemNode encl) { // lookup in the immediately enclosing item - exists(RelevantPath path | + exists(PathExt path | path.isUnqualified(name, encl) and ancestor = encl and not name = ["crate", "$crate", "super", "self"] @@ -1594,7 +1629,7 @@ private ItemNode getASuccessor( private predicate isSourceFile(ItemNode source) { source instanceof SourceFileItemNode } -private predicate hasCratePath(ItemNode i) { any(RelevantPath path).isCratePath(_, i) } +private predicate hasCratePath(ItemNode i) { any(PathExt path).isCratePath(_, i) } private predicate hasChild(ItemNode parent, ItemNode child) { child.getImmediateParent() = parent } @@ -1606,7 +1641,7 @@ private predicate sourceFileHasCratePathTc(ItemNode i1, ItemNode i2) = * `name` may be looked up inside `ancestor`. */ pragma[nomagic] -private predicate keywordLookup(ItemNode ancestor, string name, RelevantPath p) { +private predicate keywordLookup(ItemNode ancestor, string name, PathExt p) { // For `crate`, jump directly to the root module exists(ItemNode i | p.isCratePath(name, i) | ancestor instanceof SourceFile and @@ -1620,7 +1655,7 @@ private predicate keywordLookup(ItemNode ancestor, string name, RelevantPath p) } pragma[nomagic] -private ItemNode unqualifiedPathLookup(RelevantPath p, Namespace ns, SuccessorKind kind) { +private ItemNode unqualifiedPathLookup(PathExt p, Namespace ns, SuccessorKind kind) { exists(ItemNode ancestor, string name | result = getASuccessor(ancestor, pragma[only_bind_into](name), ns, kind, _) and kind.isInternalOrBoth() @@ -1635,7 +1670,7 @@ private ItemNode unqualifiedPathLookup(RelevantPath p, Namespace ns, SuccessorKi } pragma[nomagic] -private predicate isUnqualifiedSelfPath(RelevantPath path) { path.isUnqualified("Self") } +private predicate isUnqualifiedSelfPath(PathExt path) { path.isUnqualified("Self") } /** Provides the input to `TraitIsVisible`. */ signature predicate relevantTraitVisibleSig(Element element, Trait trait); @@ -1718,14 +1753,14 @@ private module DollarCrateResolution { isDollarCrateSupportedMacroExpansion(_, expansion) } - private predicate isDollarCratePath(RelevantPath p) { p.isDollarCrate() } + private predicate isDollarCratePath(PathExt p) { p.isDollarCrate() } - private predicate isInDollarCrateMacroExpansion(RelevantPath p, AstNode expansion) = + private predicate isInDollarCrateMacroExpansion(PathExt p, AstNode expansion) = doublyBoundedFastTC(hasParent/2, isDollarCratePath/1, isDollarCrateSupportedMacroExpansion/1)(p, expansion) pragma[nomagic] - private predicate isInDollarCrateMacroExpansionFromFile(File macroDefFile, RelevantPath p) { + private predicate isInDollarCrateMacroExpansionFromFile(File macroDefFile, PathExt p) { exists(Path macroDefPath, AstNode expansion | isDollarCrateSupportedMacroExpansion(macroDefPath, expansion) and isInDollarCrateMacroExpansion(p, expansion) and @@ -1740,17 +1775,17 @@ private module DollarCrateResolution { * calls. */ pragma[nomagic] - predicate resolveDollarCrate(RelevantPath p, CrateItemNode crate) { + predicate resolveDollarCrate(PathExt p, CrateItemNode crate) { isInDollarCrateMacroExpansionFromFile(crate.getASourceFile().getFile(), p) } } pragma[nomagic] -private ItemNode resolvePathCand0(RelevantPath path, Namespace ns) { +private ItemNode resolvePathCand0(PathExt path, Namespace ns) { exists(ItemNode res | res = unqualifiedPathLookup(path, ns, _) and if - not any(RelevantPath parent).getQualifier() = path and + not any(PathExt parent).getQualifier() = path and isUnqualifiedSelfPath(path) and res instanceof ImplItemNode then result = res.(ImplItemNodeImpl).resolveSelfTyCand() @@ -1767,7 +1802,7 @@ private ItemNode resolvePathCand0(RelevantPath path, Namespace ns) { } pragma[nomagic] -private ItemNode resolvePathCandQualifier(RelevantPath qualifier, RelevantPath path, string name) { +private ItemNode resolvePathCandQualifier(PathExt qualifier, PathExt path, string name) { qualifier = path.getQualifier() and result = resolvePathCand(qualifier) and name = path.getText() @@ -1815,9 +1850,7 @@ private predicate checkQualifiedVisibility( * qualifier of `path` and `qualifier` resolves to `q`, if any. */ pragma[nomagic] -private ItemNode resolvePathCandQualified( - RelevantPath qualifier, ItemNode q, RelevantPath path, Namespace ns -) { +private ItemNode resolvePathCandQualified(PathExt qualifier, ItemNode q, PathExt path, Namespace ns) { exists(string name, SuccessorKind kind, UseOption useOpt | q = resolvePathCandQualifier(qualifier, path, name) and result = getASuccessor(q, name, ns, kind, useOpt) and @@ -1826,12 +1859,14 @@ private ItemNode resolvePathCandQualified( } /** Holds if path `p` must be looked up in namespace `n`. */ -private predicate pathUsesNamespace(Path p, Namespace n) { +private predicate pathUsesNamespace(PathExt p, Namespace n) { n.isValue() and ( p = any(PathExpr pe).getPath() or p = any(TupleStructPat tsp).getPath() + or + p instanceof PathExtIdentPat ) or n.isType() and @@ -1907,7 +1942,7 @@ private predicate macroUseEdge( * result in non-monotonic recursion. */ pragma[nomagic] -private ItemNode resolvePathCand(RelevantPath path) { +private ItemNode resolvePathCand(PathExt path) { exists(Namespace ns | result = resolvePathCand0(path, ns) and if path = any(ImplItemNode i).getSelfPath() @@ -1920,7 +1955,13 @@ private ItemNode resolvePathCand(RelevantPath path) { else if path = any(PathTypeRepr p).getPath() then result instanceof TypeItemNode - else any() + else + if path instanceof IdentPat + then + result instanceof VariantItemNode or + result instanceof StructItemNode or + result instanceof ConstItemNode + else any() | pathUsesNamespace(path, ns) or @@ -1937,7 +1978,7 @@ private ItemNode resolvePathCand(RelevantPath path) { } /** Get a trait that should be visible when `path` resolves to `node`, if any. */ -private Trait getResolvePathTraitUsed(RelevantPath path, AssocItemNode node) { +private Trait getResolvePathTraitUsed(PathExt path, AssocItemNode node) { exists(TypeItemNode type, ImplItemNodeImpl impl | node = resolvePathCandQualified(_, type, path, _) and typeImplEdge(type, impl, _, _, node, _) and @@ -1949,9 +1990,8 @@ private predicate pathTraitUsed(Element path, Trait trait) { trait = getResolvePathTraitUsed(path, _) } -/** Gets the item that `path` resolves to, if any. */ cached -ItemNode resolvePath(RelevantPath path) { +private ItemNode resolvePath0(PathExt path) { result = resolvePathCand(path) and not path = any(Path parent | exists(resolvePathCand(parent))).getQualifier() and ( @@ -1964,33 +2004,44 @@ ItemNode resolvePath(RelevantPath path) { or // if `path` is the qualifier of a resolvable `parent`, then we should // resolve `path` to something consistent with what `parent` resolves to - exists(RelevantPath parent | - resolvePathCandQualified(path, result, parent, _) = resolvePath(parent) - ) + exists(PathExt parent | resolvePathCandQualified(path, result, parent, _) = resolvePath0(parent)) } -private predicate isUseTreeSubPath(UseTree tree, RelevantPath path) { +/** + * Holds if `ip` resolves to some constructor. + */ +// use `forceLocal` once we implement overlay support +predicate identPatIsResolvable(IdentPat ip) { exists(resolvePath0(ip)) } + +/** Gets the item that `path` resolves to, if any. */ +pragma[nomagic] +ItemNode resolvePath(PathExt path) { + result = resolvePath0(path) and + not path = any(VariableAccess va).(PathExpr).getPath() +} + +private predicate isUseTreeSubPath(UseTree tree, PathExt path) { path = tree.getPath() or - exists(RelevantPath mid | + exists(PathExt mid | isUseTreeSubPath(tree, mid) and path = mid.getQualifier() ) } pragma[nomagic] -private predicate isUseTreeSubPathUnqualified(UseTree tree, RelevantPath path, string name) { +private predicate isUseTreeSubPathUnqualified(UseTree tree, PathExt path, string name) { isUseTreeSubPath(tree, path) and not exists(path.getQualifier()) and name = path.getText() } pragma[nomagic] -private ItemNode resolveUseTreeListItem(Use use, UseTree tree, RelevantPath path, SuccessorKind kind) { +private ItemNode resolveUseTreeListItem(Use use, UseTree tree, PathExt path, SuccessorKind kind) { exists(UseOption useOpt | checkQualifiedVisibility(use, result, kind, useOpt) | exists(UseTree midTree, ItemNode mid, string name | mid = resolveUseTreeListItem(use, midTree) and - tree = midTree.getUseTreeList().getAUseTree() and + tree = getAUseTreeUseTree(midTree) and isUseTreeSubPathUnqualified(tree, path, pragma[only_bind_into](name)) and result = mid.getASuccessor(pragma[only_bind_into](name), kind, useOpt) ) @@ -2003,21 +2054,36 @@ private ItemNode resolveUseTreeListItem(Use use, UseTree tree, RelevantPath path } pragma[nomagic] -private ItemNode resolveUseTreeListItemQualifier( - Use use, UseTree tree, RelevantPath path, string name -) { +private ItemNode resolveUseTreeListItemQualifier(Use use, UseTree tree, PathExt path, string name) { result = resolveUseTreeListItem(use, tree, path.getQualifier(), _) and name = path.getText() } +private UseTree getAUseUseTree(Use use) { + exists(UseTree root | root = use.getUseTree() | + result = root + or + not root.hasPath() and + result = getAUseTreeUseTree(root) + ) +} + pragma[nomagic] private ItemNode resolveUseTreeListItem(Use use, UseTree tree) { exists(Path path | path = tree.getPath() | - tree = use.getUseTree() and + tree = getAUseUseTree(use) and result = resolvePathCand(path) or result = resolveUseTreeListItem(use, tree, path, _) ) + or + exists(UseTree midTree | + // `use foo::{bar, *}`; midTree = `foo` and tree = `*` + result = resolveUseTreeListItem(use, midTree) and + tree = getAUseTreeUseTree(midTree) and + tree.isGlob() and + not tree.hasPath() + ) } /** Holds if `use` imports `item` as `name`. */ @@ -2142,7 +2208,7 @@ private module Debug { } predicate debugUnqualifiedPathLookup( - RelevantPath p, string name, Namespace ns, ItemNode ancestor, string path + PathExt p, string name, Namespace ns, ItemNode ancestor, string path ) { p = getRelevantLocatable() and exists(ItemNode encl | @@ -2152,13 +2218,28 @@ private module Debug { path = p.toStringDebug() } + ItemNode debugUnqualifiedPathLookup(PathExt p, Namespace ns, SuccessorKind kind) { + p = getRelevantLocatable() and + result = unqualifiedPathLookup(p, ns, kind) + } + predicate debugItemNode(ItemNode item) { item = getRelevantLocatable() } - ItemNode debugResolvePath(RelevantPath path) { + ItemNode debugResolvePath(PathExt path) { path = getRelevantLocatable() and result = resolvePath(path) } + ItemNode debugResolveUseTreeListItem(Use use, UseTree tree, PathExt path, SuccessorKind kind) { + use = getRelevantLocatable() and + result = resolveUseTreeListItem(use, tree, path, kind) + } + + ItemNode debugResolveUseTreeListItem(Use use, UseTree tree) { + use = getRelevantLocatable() and + result = resolveUseTreeListItem(use, tree) + } + predicate debugUseImportEdge(Use use, string name, ItemNode item, SuccessorKind kind) { use = getRelevantLocatable() and useImportEdge(use, name, item, kind) diff --git a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected index ffff0f53e7e5..6140c99f4a2e 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected @@ -739,7 +739,7 @@ macro_expansion.rs: # 71| getSegment(): [PathSegment] i32 # 71| getIdentifier(): [NameRef] i32 # 72| getTailExpr(): [CastExpr] a as ... -# 72| getExpr(): [PathExpr,VariableAccess] a +# 72| getExpr(): [VariableAccess] a # 72| getPath(): [Path] a # 72| getSegment(): [PathSegment] a # 72| getIdentifier(): [NameRef] a @@ -817,7 +817,7 @@ macro_expansion.rs: # 84| getFunctionBody(): [BlockExpr] { ... } # 84| getStmtList(): [StmtList] StmtList # 84| getTailExpr(): [MatchExpr] match self { ... } -# 83| getScrutinee(): [PathExpr,VariableAccess] self +# 83| getScrutinee(): [VariableAccess] self # 83| getPath(): [Path] self # 83| getSegment(): [PathSegment] self # 83| getIdentifier(): [NameRef] self @@ -830,7 +830,7 @@ macro_expansion.rs: # 85| getArgList(): [ArgList] ArgList # 83| getArg(0): [StringLiteralExpr] "field" # 85| getArg(1): [RefExpr] &field -# 85| getExpr(): [PathExpr,VariableAccess] field +# 85| getExpr(): [VariableAccess] field # 85| getPath(): [Path] field # 85| getSegment(): [PathSegment] field # 85| getIdentifier(): [NameRef] field @@ -839,7 +839,7 @@ macro_expansion.rs: # 83| getArgList(): [ArgList] ArgList # 83| getArg(0): [StringLiteralExpr] "MyDerive" # 83| getIdentifier(): [NameRef] debug_struct -# 83| getReceiver(): [PathExpr,VariableAccess] f +# 83| getReceiver(): [VariableAccess] f # 83| getPath(): [Path] f # 83| getSegment(): [PathSegment] f # 83| getIdentifier(): [NameRef] f @@ -915,11 +915,11 @@ macro_expansion.rs: # 89| getStmtList(): [StmtList] StmtList # 89| getTailExpr(): [MatchExpr] match ... { ... } # 88| getScrutinee(): [TupleExpr] TupleExpr -# 88| getField(0): [PathExpr,VariableAccess] self +# 88| getField(0): [VariableAccess] self # 88| getPath(): [Path] self # 88| getSegment(): [PathSegment] self # 88| getIdentifier(): [NameRef] self -# 88| getField(1): [PathExpr,VariableAccess] other +# 88| getField(1): [VariableAccess] other # 88| getPath(): [Path] other # 88| getSegment(): [PathSegment] other # 88| getIdentifier(): [NameRef] other @@ -1155,7 +1155,7 @@ proc_macro.rs: # 6| getMacroCallExpansion(): [MatchExpr] match ... { ... } # 6| getScrutinee(): [CallExpr] ...::parse::<...>(...) # 6| getArgList(): [ArgList] ArgList -# 6| getArg(0): [PathExpr,VariableAccess] attr +# 6| getArg(0): [VariableAccess] attr # 6| getPath(): [Path] attr # 6| getSegment(): [PathSegment] attr # 6| getIdentifier(): [NameRef] attr @@ -1177,7 +1177,7 @@ proc_macro.rs: # 6| getIdentifier(): [NameRef] parse # 6| getMatchArmList(): [MatchArmList] MatchArmList # 6| getArm(0): [MatchArm] ... => data -# 6| getExpr(): [PathExpr,VariableAccess] data +# 6| getExpr(): [VariableAccess] data # 6| getPath(): [Path] data # 6| getSegment(): [PathSegment] data # 6| getIdentifier(): [NameRef] data @@ -1203,7 +1203,7 @@ proc_macro.rs: # 6| getArg(0): [MethodCallExpr] err.to_compile_error() # 6| getArgList(): [ArgList] ArgList # 6| getIdentifier(): [NameRef] to_compile_error -# 6| getReceiver(): [PathExpr,VariableAccess] err +# 6| getReceiver(): [VariableAccess] err # 6| getPath(): [Path] err # 6| getSegment(): [PathSegment] err # 6| getIdentifier(): [NameRef] err @@ -1247,7 +1247,7 @@ proc_macro.rs: # 7| getMacroCallExpansion(): [MatchExpr] match ... { ... } # 7| getScrutinee(): [CallExpr] ...::parse::<...>(...) # 7| getArgList(): [ArgList] ArgList -# 7| getArg(0): [PathExpr,VariableAccess] item +# 7| getArg(0): [VariableAccess] item # 7| getPath(): [Path] item # 7| getSegment(): [PathSegment] item # 7| getIdentifier(): [NameRef] item @@ -1269,7 +1269,7 @@ proc_macro.rs: # 7| getIdentifier(): [NameRef] parse # 7| getMatchArmList(): [MatchArmList] MatchArmList # 7| getArm(0): [MatchArm] ... => data -# 7| getExpr(): [PathExpr,VariableAccess] data +# 7| getExpr(): [VariableAccess] data # 7| getPath(): [Path] data # 7| getSegment(): [PathSegment] data # 7| getIdentifier(): [NameRef] data @@ -1295,7 +1295,7 @@ proc_macro.rs: # 7| getArg(0): [MethodCallExpr] err.to_compile_error() # 7| getArgList(): [ArgList] ArgList # 7| getIdentifier(): [NameRef] to_compile_error -# 7| getReceiver(): [PathExpr,VariableAccess] err +# 7| getReceiver(): [VariableAccess] err # 7| getPath(): [Path] err # 7| getSegment(): [PathSegment] err # 7| getIdentifier(): [NameRef] err @@ -1352,7 +1352,7 @@ proc_macro.rs: # 10| getInitializer(): [MethodCallExpr] ast.clone() # 10| getArgList(): [ArgList] ArgList # 10| getIdentifier(): [NameRef] clone -# 10| getReceiver(): [PathExpr,VariableAccess] ast +# 10| getReceiver(): [VariableAccess] ast # 10| getPath(): [Path] ast # 10| getSegment(): [PathSegment] ast # 10| getIdentifier(): [NameRef] ast @@ -1362,7 +1362,7 @@ proc_macro.rs: # 11| getExpr(): [AssignmentExpr] ... = ... # 11| getLhs(): [FieldExpr] ... .ident # 11| getContainer(): [FieldExpr] new_ast.sig -# 11| getContainer(): [PathExpr,VariableAccess] new_ast +# 11| getContainer(): [VariableAccess] new_ast # 11| getPath(): [Path] new_ast # 11| getSegment(): [PathSegment] new_ast # 11| getIdentifier(): [NameRef] new_ast @@ -1399,14 +1399,14 @@ proc_macro.rs: # 11| getArg(0): [FormatArgsArg] FormatArgsArg # 11| getExpr(): [FieldExpr] ... .ident # 11| getContainer(): [FieldExpr] ast.sig -# 11| getContainer(): [PathExpr,VariableAccess] ast +# 11| getContainer(): [VariableAccess] ast # 11| getPath(): [Path] ast # 11| getSegment(): [PathSegment] ast # 11| getIdentifier(): [NameRef] ast # 11| getIdentifier(): [NameRef] sig # 11| getIdentifier(): [NameRef] ident # 11| getArg(1): [FormatArgsArg] FormatArgsArg -# 11| getExpr(): [PathExpr,VariableAccess] i +# 11| getExpr(): [VariableAccess] i # 11| getPath(): [Path] i # 11| getSegment(): [PathSegment] i # 11| getIdentifier(): [NameRef] i @@ -1438,7 +1438,7 @@ proc_macro.rs: # 11| getIdentifier(): [NameRef] span # 11| getReceiver(): [FieldExpr] ... .ident # 11| getContainer(): [FieldExpr] ast.sig -# 11| getContainer(): [PathExpr,VariableAccess] ast +# 11| getContainer(): [VariableAccess] ast # 11| getPath(): [Path] ast # 11| getSegment(): [PathSegment] ast # 11| getIdentifier(): [NameRef] ast @@ -1454,14 +1454,14 @@ proc_macro.rs: # 11| getIdentifier(): [NameRef] Ident # 11| getSegment(): [PathSegment] new # 11| getIdentifier(): [NameRef] new -# 12| getTailExpr(): [PathExpr,VariableAccess] new_ast +# 12| getTailExpr(): [VariableAccess] new_ast # 12| getPath(): [Path] new_ast # 12| getSegment(): [PathSegment] new_ast # 12| getIdentifier(): [NameRef] new_ast # 9| getIdentifier(): [NameRef] map # 8| getReceiver(): [ParenExpr] (...) # 8| getExpr(): [RangeExpr] 0..number -# 8| getEnd(): [PathExpr,VariableAccess] number +# 8| getEnd(): [VariableAccess] number # 8| getPath(): [Path] number # 8| getSegment(): [PathSegment] number # 8| getIdentifier(): [NameRef] number @@ -1693,7 +1693,7 @@ proc_macro.rs: # 16| getInitializer(): [MethodCallExpr] items.quote_into_iter() # 15| getArgList(): [ArgList] ArgList # 15| getIdentifier(): [NameRef] quote_into_iter -# 16| getReceiver(): [PathExpr,VariableAccess] items +# 16| getReceiver(): [VariableAccess] items # 16| getPath(): [Path] items # 16| getSegment(): [PathSegment] items # 16| getIdentifier(): [NameRef] items @@ -1704,11 +1704,11 @@ proc_macro.rs: # 15| getName(): [Name] i # 15| getStatement(1): [LetStmt] let ... = ... # 15| getInitializer(): [BinaryExpr] ... | ... -# 15| getLhs(): [PathExpr,VariableAccess] has_iter +# 15| getLhs(): [VariableAccess] has_iter # 15| getPath(): [Path] has_iter # 15| getSegment(): [PathSegment] has_iter # 15| getIdentifier(): [NameRef] has_iter -# 15| getRhs(): [PathExpr,VariableAccess] i +# 15| getRhs(): [VariableAccess] i # 15| getPath(): [Path] i # 15| getSegment(): [PathSegment] i # 15| getIdentifier(): [NameRef] i @@ -1725,7 +1725,7 @@ proc_macro.rs: # 16| getTokenTree(): [TokenTree] TokenTree # 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr # 15| getStatement(3): [LetStmt] let _ = has_iter -# 15| getInitializer(): [PathExpr,VariableAccess] has_iter +# 15| getInitializer(): [VariableAccess] has_iter # 15| getPath(): [Path] has_iter # 15| getSegment(): [PathSegment] has_iter # 15| getIdentifier(): [NameRef] has_iter @@ -1843,7 +1843,7 @@ proc_macro.rs: # 16| getScrutinee(): [MethodCallExpr] items.next() # 15| getArgList(): [ArgList] ArgList # 15| getIdentifier(): [NameRef] next -# 16| getReceiver(): [PathExpr,VariableAccess] items +# 16| getReceiver(): [VariableAccess] items # 16| getPath(): [Path] items # 16| getSegment(): [PathSegment] items # 16| getIdentifier(): [NameRef] items @@ -1851,7 +1851,7 @@ proc_macro.rs: # 15| getArm(0): [MatchArm] ... => ... # 15| getExpr(): [CallExpr] ...::RepInterp(...) # 15| getArgList(): [ArgList] ArgList -# 15| getArg(0): [PathExpr] _x +# 15| getArg(0): [VariableAccess] _x # 15| getPath(): [Path] _x # 15| getSegment(): [PathSegment] _x # 15| getIdentifier(): [NameRef] _x @@ -1955,12 +1955,12 @@ proc_macro.rs: # 16| getExpr(): [CallExpr] ...::to_tokens(...) # 16| getArgList(): [ArgList] ArgList # 16| getArg(0): [RefExpr] &items -# 16| getExpr(): [PathExpr,VariableAccess] items +# 16| getExpr(): [VariableAccess] items # 16| getPath(): [Path] items # 16| getSegment(): [PathSegment] items # 16| getIdentifier(): [NameRef] items # 15| getArg(1): [RefExpr] &mut _s -# 15| getExpr(): [PathExpr] _s +# 15| getExpr(): [VariableAccess] _s # 15| getPath(): [Path] _s # 15| getSegment(): [PathSegment] _s # 15| getIdentifier(): [NameRef] _s @@ -2072,7 +2072,7 @@ proc_macro.rs: # 15| getIdentifier(): [NameRef] quote_token_with_context # 16| getTokenTree(): [TokenTree] TokenTree # 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr -# 15| getTailExpr(): [PathExpr] _s +# 15| getTailExpr(): [VariableAccess] _s # 15| getPath(): [Path] _s # 15| getSegment(): [PathSegment] _s # 15| getIdentifier(): [NameRef] _s @@ -2119,7 +2119,7 @@ proc_macro.rs: # 22| getMacroCallExpansion(): [MatchExpr] match ... { ... } # 22| getScrutinee(): [CallExpr] ...::parse::<...>(...) # 22| getArgList(): [ArgList] ArgList -# 22| getArg(0): [PathExpr,VariableAccess] item +# 22| getArg(0): [VariableAccess] item # 22| getPath(): [Path] item # 22| getSegment(): [PathSegment] item # 22| getIdentifier(): [NameRef] item @@ -2141,7 +2141,7 @@ proc_macro.rs: # 22| getIdentifier(): [NameRef] parse # 22| getMatchArmList(): [MatchArmList] MatchArmList # 22| getArm(0): [MatchArm] ... => data -# 22| getExpr(): [PathExpr,VariableAccess] data +# 22| getExpr(): [VariableAccess] data # 22| getPath(): [Path] data # 22| getSegment(): [PathSegment] data # 22| getIdentifier(): [NameRef] data @@ -2167,7 +2167,7 @@ proc_macro.rs: # 22| getArg(0): [MethodCallExpr] err.to_compile_error() # 22| getArgList(): [ArgList] ArgList # 22| getIdentifier(): [NameRef] to_compile_error -# 22| getReceiver(): [PathExpr,VariableAccess] err +# 22| getReceiver(): [VariableAccess] err # 22| getPath(): [Path] err # 22| getSegment(): [PathSegment] err # 22| getIdentifier(): [NameRef] err @@ -2202,7 +2202,7 @@ proc_macro.rs: # 23| getInitializer(): [MethodCallExpr] ast.clone() # 23| getArgList(): [ArgList] ArgList # 23| getIdentifier(): [NameRef] clone -# 23| getReceiver(): [PathExpr,VariableAccess] ast +# 23| getReceiver(): [VariableAccess] ast # 23| getPath(): [Path] ast # 23| getSegment(): [PathSegment] ast # 23| getIdentifier(): [NameRef] ast @@ -2212,7 +2212,7 @@ proc_macro.rs: # 24| getExpr(): [AssignmentExpr] ... = ... # 24| getLhs(): [FieldExpr] ... .ident # 24| getContainer(): [FieldExpr] new_ast.sig -# 24| getContainer(): [PathExpr,VariableAccess] new_ast +# 24| getContainer(): [VariableAccess] new_ast # 24| getPath(): [Path] new_ast # 24| getSegment(): [PathSegment] new_ast # 24| getIdentifier(): [NameRef] new_ast @@ -2249,7 +2249,7 @@ proc_macro.rs: # 24| getArg(0): [FormatArgsArg] FormatArgsArg # 24| getExpr(): [FieldExpr] ... .ident # 24| getContainer(): [FieldExpr] ast.sig -# 24| getContainer(): [PathExpr,VariableAccess] ast +# 24| getContainer(): [VariableAccess] ast # 24| getPath(): [Path] ast # 24| getSegment(): [PathSegment] ast # 24| getIdentifier(): [NameRef] ast @@ -2282,7 +2282,7 @@ proc_macro.rs: # 24| getIdentifier(): [NameRef] span # 24| getReceiver(): [FieldExpr] ... .ident # 24| getContainer(): [FieldExpr] ast.sig -# 24| getContainer(): [PathExpr,VariableAccess] ast +# 24| getContainer(): [VariableAccess] ast # 24| getPath(): [Path] ast # 24| getSegment(): [PathSegment] ast # 24| getIdentifier(): [NameRef] ast @@ -2396,12 +2396,12 @@ proc_macro.rs: # 26| getExpr(): [CallExpr] ...::to_tokens(...) # 26| getArgList(): [ArgList] ArgList # 26| getArg(0): [RefExpr] &ast -# 26| getExpr(): [PathExpr,VariableAccess] ast +# 26| getExpr(): [VariableAccess] ast # 26| getPath(): [Path] ast # 26| getSegment(): [PathSegment] ast # 26| getIdentifier(): [NameRef] ast # 25| getArg(1): [RefExpr] &mut _s -# 25| getExpr(): [PathExpr] _s +# 25| getExpr(): [VariableAccess] _s # 25| getPath(): [Path] _s # 25| getSegment(): [PathSegment] _s # 25| getIdentifier(): [NameRef] _s @@ -2441,12 +2441,12 @@ proc_macro.rs: # 27| getExpr(): [CallExpr] ...::to_tokens(...) # 27| getArgList(): [ArgList] ArgList # 27| getArg(0): [RefExpr] &new_ast -# 27| getExpr(): [PathExpr,VariableAccess] new_ast +# 27| getExpr(): [VariableAccess] new_ast # 27| getPath(): [Path] new_ast # 27| getSegment(): [PathSegment] new_ast # 27| getIdentifier(): [NameRef] new_ast # 25| getArg(1): [RefExpr] &mut _s -# 25| getExpr(): [PathExpr] _s +# 25| getExpr(): [VariableAccess] _s # 25| getPath(): [Path] _s # 25| getSegment(): [PathSegment] _s # 25| getIdentifier(): [NameRef] _s @@ -2503,7 +2503,7 @@ proc_macro.rs: # 25| getIdentifier(): [NameRef] quote_token_with_context # 27| getTokenTree(): [TokenTree] TokenTree # 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr -# 25| getTailExpr(): [PathExpr] _s +# 25| getTailExpr(): [VariableAccess] _s # 25| getPath(): [Path] _s # 25| getSegment(): [PathSegment] _s # 25| getIdentifier(): [NameRef] _s @@ -2583,7 +2583,7 @@ proc_macro.rs: # 38| getMacroCallExpansion(): [MatchExpr] match ... { ... } # 38| getScrutinee(): [CallExpr] ...::parse::<...>(...) # 38| getArgList(): [ArgList] ArgList -# 38| getArg(0): [PathExpr,VariableAccess] input +# 38| getArg(0): [VariableAccess] input # 38| getPath(): [Path] input # 38| getSegment(): [PathSegment] input # 38| getIdentifier(): [NameRef] input @@ -2605,7 +2605,7 @@ proc_macro.rs: # 38| getIdentifier(): [NameRef] parse # 38| getMatchArmList(): [MatchArmList] MatchArmList # 38| getArm(0): [MatchArm] ... => data -# 38| getExpr(): [PathExpr,VariableAccess] data +# 38| getExpr(): [VariableAccess] data # 38| getPath(): [Path] data # 38| getSegment(): [PathSegment] data # 38| getIdentifier(): [NameRef] data @@ -2631,7 +2631,7 @@ proc_macro.rs: # 38| getArg(0): [MethodCallExpr] err.to_compile_error() # 38| getArgList(): [ArgList] ArgList # 38| getIdentifier(): [NameRef] to_compile_error -# 38| getReceiver(): [PathExpr,VariableAccess] err +# 38| getReceiver(): [VariableAccess] err # 38| getPath(): [Path] err # 38| getSegment(): [PathSegment] err # 38| getIdentifier(): [NameRef] err @@ -2665,7 +2665,7 @@ proc_macro.rs: # 39| getStatement(1): [LetStmt] let ... = ... # 39| getInitializer(): [RefExpr] &... # 39| getExpr(): [FieldExpr] ast.ident -# 39| getContainer(): [PathExpr,VariableAccess] ast +# 39| getContainer(): [VariableAccess] ast # 39| getPath(): [Path] ast # 39| getSegment(): [PathSegment] ast # 39| getIdentifier(): [NameRef] ast @@ -2702,7 +2702,7 @@ proc_macro.rs: # 40| getTokenTree(): [TokenTree] TokenTree # 40| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr # 40| getArg(0): [FormatArgsArg] FormatArgsArg -# 40| getExpr(): [PathExpr,VariableAccess] name +# 40| getExpr(): [VariableAccess] name # 40| getPath(): [Path] name # 40| getSegment(): [PathSegment] name # 40| getIdentifier(): [NameRef] name @@ -2731,7 +2731,7 @@ proc_macro.rs: # 40| getArg(1): [MethodCallExpr] name.span() # 40| getArgList(): [ArgList] ArgList # 40| getIdentifier(): [NameRef] span -# 40| getReceiver(): [PathExpr,VariableAccess] name +# 40| getReceiver(): [VariableAccess] name # 40| getPath(): [Path] name # 40| getSegment(): [PathSegment] name # 40| getIdentifier(): [NameRef] name @@ -2855,7 +2855,7 @@ proc_macro.rs: # 42| getExpr(): [CallExpr] ...::push_ident(...) # 42| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -2891,12 +2891,12 @@ proc_macro.rs: # 42| getExpr(): [CallExpr] ...::to_tokens(...) # 42| getArgList(): [ArgList] ArgList # 42| getArg(0): [RefExpr] &const_ident -# 42| getExpr(): [PathExpr,VariableAccess] const_ident +# 42| getExpr(): [VariableAccess] const_ident # 42| getPath(): [Path] const_ident # 42| getSegment(): [PathSegment] const_ident # 42| getIdentifier(): [NameRef] const_ident # 41| getArg(1): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -2946,7 +2946,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_colon(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -2985,7 +2985,7 @@ proc_macro.rs: # 42| getExpr(): [CallExpr] ...::push_ident(...) # 42| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3031,7 +3031,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_eq(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3070,7 +3070,7 @@ proc_macro.rs: # 42| getExpr(): [CallExpr] ...::parse(...) # 42| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3116,7 +3116,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_semi(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3155,7 +3155,7 @@ proc_macro.rs: # 44| getExpr(): [CallExpr] ...::push_ident(...) # 44| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3201,7 +3201,7 @@ proc_macro.rs: # 44| getExpr(): [CallExpr] ...::push_ident(...) # 44| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3247,7 +3247,7 @@ proc_macro.rs: # 44| getExpr(): [CallExpr] ...::push_ident(...) # 44| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3283,12 +3283,12 @@ proc_macro.rs: # 44| getExpr(): [CallExpr] ...::to_tokens(...) # 44| getArgList(): [ArgList] ArgList # 44| getArg(0): [RefExpr] &name -# 44| getExpr(): [PathExpr,VariableAccess] name +# 44| getExpr(): [VariableAccess] name # 44| getPath(): [Path] name # 44| getSegment(): [PathSegment] name # 44| getIdentifier(): [NameRef] name # 41| getArg(1): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3338,7 +3338,7 @@ proc_macro.rs: # 45| getExpr(): [CallExpr] ...::push_group(...) # 45| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3463,7 +3463,7 @@ proc_macro.rs: # 45| getExpr(): [CallExpr] ...::push_ident(...) # 45| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3509,7 +3509,7 @@ proc_macro.rs: # 45| getExpr(): [CallExpr] ...::push_ident(...) # 45| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3555,7 +3555,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_group(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3631,7 +3631,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_rarrow(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3670,7 +3670,7 @@ proc_macro.rs: # 45| getExpr(): [CallExpr] ...::push_ident(...) # 45| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3716,7 +3716,7 @@ proc_macro.rs: # 46| getExpr(): [CallExpr] ...::push_group(...) # 46| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3766,12 +3766,12 @@ proc_macro.rs: # 46| getExpr(): [CallExpr] ...::to_tokens(...) # 46| getArgList(): [ArgList] ArgList # 46| getArg(0): [RefExpr] &const_ident -# 46| getExpr(): [PathExpr,VariableAccess] const_ident +# 46| getExpr(): [VariableAccess] const_ident # 46| getPath(): [Path] const_ident # 46| getSegment(): [PathSegment] const_ident # 46| getIdentifier(): [NameRef] const_ident # 41| getArg(1): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3785,7 +3785,7 @@ proc_macro.rs: # 41| getIdentifier(): [NameRef] ToTokens # 41| getSegment(): [PathSegment] to_tokens # 41| getIdentifier(): [NameRef] to_tokens -# 41| getTailExpr(): [PathExpr] _s +# 41| getTailExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3831,7 +3831,7 @@ proc_macro.rs: # 41| getIdentifier(): [NameRef] quote_token_with_context # 45| getTokenTree(): [TokenTree] TokenTree # 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr -# 41| getTailExpr(): [PathExpr] _s +# 41| getTailExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3877,7 +3877,7 @@ proc_macro.rs: # 41| getIdentifier(): [NameRef] quote_token_with_context # 44| getTokenTree(): [TokenTree] TokenTree # 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr -# 41| getTailExpr(): [PathExpr] _s +# 41| getTailExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s diff --git a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected index 352992bf4f2d..ca5c386b720c 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected @@ -7,4 +7,3 @@ multipleCallTargets | test.rs:447:30:447:67 | pinned.poll_read(...) | | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) | | test.rs:519:50:519:66 | ...::from(...) | -| test.rs:519:50:519:66 | ...::from(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected index 190628f93d7d..bfe1ce0e56bc 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected @@ -15,4 +15,3 @@ | test.rs:332:22:332:50 | ...::new | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:373:19:373:36 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:519:16:519:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:519:16:519:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected index e128916f8473..24a0cf78aec0 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected @@ -12,20 +12,12 @@ models | 11 | Summary: ::as_str; Argument[self]; ReturnValue; value | edges | test.rs:11:31:11:31 | a | test.rs:13:14:13:14 | a | provenance | | -| test.rs:11:31:11:31 | a | test.rs:13:14:13:14 | a | provenance | | -| test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | | test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | | test.rs:11:31:11:31 | a | test.rs:14:14:14:14 | a | provenance | | -| test.rs:11:31:11:31 | a | test.rs:14:14:14:14 | a | provenance | | | test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | provenance | | | test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | provenance | | | test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | -| test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | | test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | provenance | | | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | provenance | | | test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() | provenance | MaD:9 | | test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() [tuple.0] | provenance | MaD:6 | @@ -87,37 +79,21 @@ edges | test.rs:139:41:139:42 | to | test.rs:98:9:98:31 | ...: ...::Path::<...> | provenance | Src:MaD:5 | | test.rs:140:45:140:46 | to | test.rs:109:9:109:41 | ...: ...::Path::<...> | provenance | Src:MaD:5 | | test.rs:242:33:242:35 | map | test.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | -| test.rs:242:33:242:35 | map | test.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | | test.rs:242:38:242:46 | ...: String | test.rs:244:18:244:18 | a | provenance | | -| test.rs:242:38:242:46 | ...: String | test.rs:244:18:244:18 | a | provenance | | -| test.rs:250:46:250:49 | then | test.rs:251:25:251:33 | ...: String | provenance | Src:MaD:3 | | test.rs:250:46:250:49 | then | test.rs:251:25:251:33 | ...: String | provenance | Src:MaD:3 | | test.rs:251:25:251:33 | ...: String | test.rs:252:22:252:22 | a | provenance | | -| test.rs:251:25:251:33 | ...: String | test.rs:252:22:252:22 | a | provenance | | -| test.rs:259:50:259:57 | and_then | test.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:1 | | test.rs:259:50:259:57 | and_then | test.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:1 | | test.rs:260:26:260:32 | ...: u64 | test.rs:263:22:263:23 | id | provenance | | -| test.rs:260:26:260:32 | ...: u64 | test.rs:263:22:263:23 | id | provenance | | | test.rs:272:75:272:77 | map | test.rs:273:15:273:23 | ...: String | provenance | Src:MaD:2 | -| test.rs:272:75:272:77 | map | test.rs:273:15:273:23 | ...: String | provenance | Src:MaD:2 | -| test.rs:273:15:273:23 | ...: String | test.rs:275:22:275:22 | a | provenance | | | test.rs:273:15:273:23 | ...: String | test.rs:275:22:275:22 | a | provenance | | nodes | test.rs:11:31:11:31 | a | semmle.label | a | -| test.rs:11:31:11:31 | a | semmle.label | a | | test.rs:13:14:13:14 | a | semmle.label | a | -| test.rs:13:14:13:14 | a | semmle.label | a | -| test.rs:13:14:13:23 | a.as_str() | semmle.label | a.as_str() | | test.rs:13:14:13:23 | a.as_str() | semmle.label | a.as_str() | | test.rs:14:14:14:14 | a | semmle.label | a | -| test.rs:14:14:14:14 | a | semmle.label | a | | test.rs:14:14:14:25 | a.as_bytes() | semmle.label | a.as_bytes() | -| test.rs:14:14:14:25 | a.as_bytes() | semmle.label | a.as_bytes() | -| test.rs:15:14:15:14 | a | semmle.label | a | | test.rs:15:14:15:14 | a | semmle.label | a | | test.rs:68:15:68:15 | a | semmle.label | a | -| test.rs:68:15:68:15 | a | semmle.label | a | -| test.rs:70:14:70:14 | a | semmle.label | a | | test.rs:70:14:70:14 | a | semmle.label | a | | test.rs:98:9:98:31 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | | test.rs:100:13:100:13 | a | semmle.label | a | @@ -162,39 +138,23 @@ nodes | test.rs:139:41:139:42 | to | semmle.label | to | | test.rs:140:45:140:46 | to | semmle.label | to | | test.rs:242:33:242:35 | map | semmle.label | map | -| test.rs:242:33:242:35 | map | semmle.label | map | | test.rs:242:38:242:46 | ...: String | semmle.label | ...: String | -| test.rs:242:38:242:46 | ...: String | semmle.label | ...: String | -| test.rs:244:18:244:18 | a | semmle.label | a | | test.rs:244:18:244:18 | a | semmle.label | a | | test.rs:250:46:250:49 | then | semmle.label | then | -| test.rs:250:46:250:49 | then | semmle.label | then | | test.rs:251:25:251:33 | ...: String | semmle.label | ...: String | -| test.rs:251:25:251:33 | ...: String | semmle.label | ...: String | -| test.rs:252:22:252:22 | a | semmle.label | a | | test.rs:252:22:252:22 | a | semmle.label | a | | test.rs:259:50:259:57 | and_then | semmle.label | and_then | -| test.rs:259:50:259:57 | and_then | semmle.label | and_then | | test.rs:260:26:260:32 | ...: u64 | semmle.label | ...: u64 | -| test.rs:260:26:260:32 | ...: u64 | semmle.label | ...: u64 | -| test.rs:263:22:263:23 | id | semmle.label | id | | test.rs:263:22:263:23 | id | semmle.label | id | | test.rs:272:75:272:77 | map | semmle.label | map | -| test.rs:272:75:272:77 | map | semmle.label | map | -| test.rs:273:15:273:23 | ...: String | semmle.label | ...: String | | test.rs:273:15:273:23 | ...: String | semmle.label | ...: String | | test.rs:275:22:275:22 | a | semmle.label | a | -| test.rs:275:22:275:22 | a | semmle.label | a | subpaths testFailures #select | test.rs:13:14:13:23 | a.as_str() | test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | $@ | test.rs:11:31:11:31 | a | a | -| test.rs:13:14:13:23 | a.as_str() | test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | $@ | test.rs:11:31:11:31 | a | a | -| test.rs:14:14:14:25 | a.as_bytes() | test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | $@ | test.rs:11:31:11:31 | a | a | | test.rs:14:14:14:25 | a.as_bytes() | test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | $@ | test.rs:11:31:11:31 | a | a | | test.rs:15:14:15:14 | a | test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | $@ | test.rs:11:31:11:31 | a | a | -| test.rs:15:14:15:14 | a | test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | $@ | test.rs:11:31:11:31 | a | a | -| test.rs:70:14:70:14 | a | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | $@ | test.rs:68:15:68:15 | a | a | | test.rs:70:14:70:14 | a | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | $@ | test.rs:68:15:68:15 | a | a | | test.rs:101:14:101:23 | a.as_str() | test.rs:139:41:139:42 | to | test.rs:101:14:101:23 | a.as_str() | $@ | test.rs:139:41:139:42 | to | to | | test.rs:102:14:102:25 | a.as_bytes() | test.rs:139:41:139:42 | to | test.rs:102:14:102:25 | a.as_bytes() | $@ | test.rs:139:41:139:42 | to | to | @@ -203,10 +163,6 @@ testFailures | test.rs:114:14:114:14 | b | test.rs:140:45:140:46 | to | test.rs:114:14:114:14 | b | $@ | test.rs:140:45:140:46 | to | to | | test.rs:132:14:132:14 | a | test.rs:127:5:127:20 | to | test.rs:132:14:132:14 | a | $@ | test.rs:127:5:127:20 | to | to | | test.rs:244:18:244:18 | a | test.rs:242:33:242:35 | map | test.rs:244:18:244:18 | a | $@ | test.rs:242:33:242:35 | map | map | -| test.rs:244:18:244:18 | a | test.rs:242:33:242:35 | map | test.rs:244:18:244:18 | a | $@ | test.rs:242:33:242:35 | map | map | -| test.rs:252:22:252:22 | a | test.rs:250:46:250:49 | then | test.rs:252:22:252:22 | a | $@ | test.rs:250:46:250:49 | then | then | | test.rs:252:22:252:22 | a | test.rs:250:46:250:49 | then | test.rs:252:22:252:22 | a | $@ | test.rs:250:46:250:49 | then | then | | test.rs:263:22:263:23 | id | test.rs:259:50:259:57 | and_then | test.rs:263:22:263:23 | id | $@ | test.rs:259:50:259:57 | and_then | and_then | -| test.rs:263:22:263:23 | id | test.rs:259:50:259:57 | and_then | test.rs:263:22:263:23 | id | $@ | test.rs:259:50:259:57 | and_then | and_then | -| test.rs:275:22:275:22 | a | test.rs:272:75:272:77 | map | test.rs:275:22:275:22 | a | $@ | test.rs:272:75:272:77 | map | map | | test.rs:275:22:275:22 | a | test.rs:272:75:272:77 | map | test.rs:275:22:275:22 | a | $@ | test.rs:272:75:272:77 | map | map | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected index 549f9c4ab762..20a20ce3f9b1 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected @@ -1,12 +1,7 @@ | test.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:22:14:22:19 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:22:14:22:19 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | @@ -48,20 +43,6 @@ | test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | @@ -70,15 +51,6 @@ | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | @@ -87,15 +59,6 @@ | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | diff --git a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected index 0b5d376b4d2e..6b5461f37194 100644 --- a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected @@ -1,6 +1,6 @@ multipleCallTargets -| main.rs:125:9:125:11 | f(...) | -| main.rs:365:9:367:16 | ...::f(...) | -| main.rs:368:9:370:16 | ...::f(...) | -| main.rs:447:9:451:16 | ...::f(...) | -| main.rs:452:9:456:16 | ...::f(...) | +| main.rs:126:9:126:11 | f(...) | +| main.rs:366:9:368:16 | ...::f(...) | +| main.rs:369:9:371:16 | ...::f(...) | +| main.rs:448:9:452:16 | ...::f(...) | +| main.rs:453:9:457:16 | ...::f(...) | diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs index 037527c71be3..c0f37bcd18eb 100644 --- a/rust/ql/test/library-tests/path-resolution/main.rs +++ b/rust/ql/test/library-tests/path-resolution/main.rs @@ -1,6 +1,7 @@ mod my; // I1 -use my::*; // $ item=I1 +#[rustfmt::skip] +use {{{my::{{self as my_alias, *}}}}}; // $ item=I1 use my::nested::nested1::nested2::*; // $ item=I3 @@ -789,6 +790,49 @@ mod impl_with_attribute_macro { } // impl_with_attribute_macro::test } +mod patterns { + #[rustfmt::skip] + pub fn test() -> Option { // $ item=Option $ item=i32 + let x = Some(42); // $ item=Some + let y : Option = match x { // $ item=Option $ item=i32 + Some(y) => { // $ item=Some + None // $ item=None + } + None => // $ item=None + None // $ item=None + }; + match y { + N0ne => // local variable + N0ne + } + } // patterns::test + + #[rustfmt::skip] + fn test2() -> Option { // $ item=Option $ item=i32 + let test_alias = test; // $ item=patterns::test + let test = test_alias(); + test + } + + #[rustfmt::skip] + const z: i32 // $ item=i32 + = 0; // constz + + #[rustfmt::skip] + fn test3() { + let x = Some(0); // $ item=Some + match x { + Some(x) // $ item=Some + => x, + _ => 0 + }; + match x { + Some(z) => z, // $ item=Some item=constz + _ => 0 + }; + } +} + fn main() { my::nested::nested1::nested2::f(); // $ item=I4 my::f(); // $ item=I38 @@ -816,6 +860,7 @@ fn main() { nested8::f(); // $ item=I119 my3::f(); // $ item=I200 nested_f(); // $ item=I201 + my_alias::nested_f(); // $ item=I201 m18::m19::m20::g(); // $ item=I103 m23::f(); // $ item=I108 m24::f(); // $ item=I121 @@ -824,4 +869,5 @@ fn main() { AStruct::z_on_type(); // $ item=I124 AStruct {}.z_on_instance(); // $ item=I123 item=I125 impl_with_attribute_macro::test(); // $ item=impl_with_attribute_macro::test + patterns::test(); // $ item=patterns::test } diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected index bb9a456a42c2..20c7e7799be7 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected @@ -1,37 +1,38 @@ mod | lib.rs:1:1:1:11 | mod my | | main.rs:1:1:1:7 | mod my | -| main.rs:7:1:7:8 | mod my2 | -| main.rs:19:1:43:1 | mod m1 | -| main.rs:24:5:42:5 | mod m2 | -| main.rs:35:9:41:9 | mod m3 | -| main.rs:45:1:52:1 | mod m4 | -| main.rs:109:1:113:1 | mod m5 | -| main.rs:115:1:127:1 | mod m6 | -| main.rs:129:1:148:1 | mod m7 | -| main.rs:150:1:204:1 | mod m8 | -| main.rs:206:1:214:1 | mod m9 | -| main.rs:216:1:235:1 | mod m10 | -| main.rs:237:1:274:1 | mod m11 | -| main.rs:247:5:247:12 | mod f | -| main.rs:276:1:288:1 | mod m12 | -| main.rs:290:1:303:1 | mod m13 | -| main.rs:294:5:302:5 | mod m14 | -| main.rs:305:1:374:1 | mod m15 | -| main.rs:376:1:468:1 | mod m16 | -| main.rs:470:1:520:1 | mod trait_visibility | -| main.rs:471:5:493:5 | mod m | -| main.rs:522:1:552:1 | mod m17 | -| main.rs:554:1:572:1 | mod m18 | -| main.rs:559:5:571:5 | mod m19 | -| main.rs:564:9:570:9 | mod m20 | -| main.rs:574:1:599:1 | mod m21 | -| main.rs:575:5:581:5 | mod m22 | -| main.rs:583:5:598:5 | mod m33 | -| main.rs:601:1:626:1 | mod m23 | -| main.rs:628:1:696:1 | mod m24 | -| main.rs:713:1:765:1 | mod associated_types | -| main.rs:771:1:790:1 | mod impl_with_attribute_macro | +| main.rs:8:1:8:8 | mod my2 | +| main.rs:20:1:44:1 | mod m1 | +| main.rs:25:5:43:5 | mod m2 | +| main.rs:36:9:42:9 | mod m3 | +| main.rs:46:1:53:1 | mod m4 | +| main.rs:110:1:114:1 | mod m5 | +| main.rs:116:1:128:1 | mod m6 | +| main.rs:130:1:149:1 | mod m7 | +| main.rs:151:1:205:1 | mod m8 | +| main.rs:207:1:215:1 | mod m9 | +| main.rs:217:1:236:1 | mod m10 | +| main.rs:238:1:275:1 | mod m11 | +| main.rs:248:5:248:12 | mod f | +| main.rs:277:1:289:1 | mod m12 | +| main.rs:291:1:304:1 | mod m13 | +| main.rs:295:5:303:5 | mod m14 | +| main.rs:306:1:375:1 | mod m15 | +| main.rs:377:1:469:1 | mod m16 | +| main.rs:471:1:521:1 | mod trait_visibility | +| main.rs:472:5:494:5 | mod m | +| main.rs:523:1:553:1 | mod m17 | +| main.rs:555:1:573:1 | mod m18 | +| main.rs:560:5:572:5 | mod m19 | +| main.rs:565:9:571:9 | mod m20 | +| main.rs:575:1:600:1 | mod m21 | +| main.rs:576:5:582:5 | mod m22 | +| main.rs:584:5:599:5 | mod m33 | +| main.rs:602:1:627:1 | mod m23 | +| main.rs:629:1:697:1 | mod m24 | +| main.rs:714:1:766:1 | mod associated_types | +| main.rs:772:1:791:1 | mod impl_with_attribute_macro | +| main.rs:793:1:834:1 | mod patterns | | my2/mod.rs:1:1:1:16 | mod nested2 | | my2/mod.rs:20:1:20:12 | mod my3 | | my2/mod.rs:22:1:23:10 | mod mymod | @@ -47,424 +48,447 @@ mod | my/nested.rs:1:1:17:1 | mod nested1 | | my/nested.rs:2:5:11:5 | mod nested2 | resolvePath -| main.rs:3:5:3:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:5:5:5:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:5:5:5:14 | ...::nested | my.rs:1:1:1:15 | mod nested | -| main.rs:5:5:5:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | -| main.rs:5:5:5:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | -| main.rs:9:5:9:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:12:5:12:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:12:5:12:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:12:5:12:25 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:12:5:12:34 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:13:5:13:5 | f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:14:5:14:5 | g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:17:5:17:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:17:5:17:18 | ...::nested8_f | my2/nested2.rs:23:9:25:9 | fn f | -| main.rs:21:9:21:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:26:13:26:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:30:13:30:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:31:13:31:13 | f | main.rs:25:9:27:9 | fn f | -| main.rs:32:13:32:17 | super | main.rs:19:1:43:1 | mod m1 | -| main.rs:32:13:32:20 | ...::f | main.rs:20:5:22:5 | fn f | -| main.rs:36:17:36:21 | super | main.rs:24:5:42:5 | mod m2 | -| main.rs:36:17:36:24 | ...::f | main.rs:25:9:27:9 | fn f | -| main.rs:38:17:38:23 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:39:17:39:17 | f | main.rs:25:9:27:9 | fn f | -| main.rs:46:9:46:13 | super | main.rs:1:1:827:2 | SourceFile | -| main.rs:46:9:46:17 | ...::m1 | main.rs:19:1:43:1 | mod m1 | -| main.rs:46:9:46:21 | ...::m2 | main.rs:24:5:42:5 | mod m2 | -| main.rs:46:9:46:24 | ...::g | main.rs:29:9:33:9 | fn g | -| main.rs:49:9:49:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:50:9:50:9 | g | main.rs:29:9:33:9 | fn g | -| main.rs:57:5:57:11 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:62:13:62:14 | m1 | main.rs:19:1:43:1 | mod m1 | -| main.rs:62:13:62:18 | ...::m2 | main.rs:24:5:42:5 | mod m2 | -| main.rs:62:13:62:21 | ...::g | main.rs:29:9:33:9 | fn g | -| main.rs:63:9:63:9 | g | main.rs:29:9:33:9 | fn g | -| main.rs:66:9:66:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:67:17:67:19 | Foo | main.rs:65:9:65:21 | struct Foo | -| main.rs:70:13:70:15 | Foo | main.rs:59:5:59:17 | struct Foo | -| main.rs:72:5:72:5 | f | main.rs:61:5:68:5 | fn f | -| main.rs:74:5:74:8 | self | main.rs:1:1:827:2 | SourceFile | -| main.rs:74:5:74:11 | ...::i | main.rs:77:1:89:1 | fn i | -| main.rs:78:5:78:11 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:80:13:80:15 | Foo | main.rs:54:1:54:13 | struct Foo | -| main.rs:84:16:84:18 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:87:17:87:19 | Foo | main.rs:83:9:85:9 | struct Foo | -| main.rs:91:5:91:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:91:5:91:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:93:5:93:21 | my2_nested2_alias | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:93:5:93:30 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:93:34:93:40 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:93:34:93:43 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:93:57:93:63 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:93:57:93:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:93:80:93:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:104:5:104:11 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:105:5:105:15 | fn_in_macro | main.rs:95:1:101:1 | MacroRules | -| main.rs:105:18:105:24 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:106:5:106:22 | f_defined_in_macro | main.rs:105:18:105:42 | fn f_defined_in_macro | -| main.rs:111:9:111:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:117:9:117:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:121:9:121:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:124:13:124:17 | super | main.rs:1:1:827:2 | SourceFile | -| main.rs:124:13:124:21 | ...::m5 | main.rs:109:1:113:1 | mod m5 | -| main.rs:125:9:125:9 | f | main.rs:110:5:112:5 | fn f | -| main.rs:125:9:125:9 | f | main.rs:116:5:118:5 | fn f | -| main.rs:132:13:132:15 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:135:16:135:18 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:141:19:141:24 | MyEnum | main.rs:130:5:138:5 | enum MyEnum | -| main.rs:143:9:143:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:144:17:144:22 | MyEnum | main.rs:130:5:138:5 | enum MyEnum | -| main.rs:144:17:144:25 | ...::A | main.rs:131:9:133:9 | A | -| main.rs:145:17:145:22 | MyEnum | main.rs:130:5:138:5 | enum MyEnum | -| main.rs:145:17:145:25 | ...::B | main.rs:133:12:136:9 | B | -| main.rs:146:9:146:14 | MyEnum | main.rs:130:5:138:5 | enum MyEnum | -| main.rs:146:9:146:17 | ...::C | main.rs:136:12:137:9 | C | -| main.rs:155:13:155:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:156:13:156:13 | f | main.rs:163:5:165:5 | fn f | -| main.rs:157:13:157:16 | Self | main.rs:151:5:159:5 | trait MyTrait | -| main.rs:157:13:157:19 | ...::f | main.rs:152:9:152:20 | fn f | -| main.rs:164:9:164:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:168:10:168:16 | MyTrait | main.rs:151:5:159:5 | trait MyTrait | -| main.rs:168:22:168:29 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:170:13:170:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:171:13:171:13 | f | main.rs:163:5:165:5 | fn f | -| main.rs:172:13:172:16 | Self | main.rs:167:5:178:5 | impl MyTrait for MyStruct { ... } | -| main.rs:172:13:172:19 | ...::g | main.rs:175:9:177:9 | fn g | -| main.rs:176:13:176:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:181:10:181:17 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:183:13:183:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:184:13:184:13 | f | main.rs:163:5:165:5 | fn f | -| main.rs:190:17:190:24 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:191:9:191:15 | MyTrait | main.rs:151:5:159:5 | trait MyTrait | -| main.rs:191:9:191:18 | ...::f | main.rs:152:9:152:20 | fn f | -| main.rs:192:9:192:16 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:192:9:192:19 | ...::f | main.rs:168:33:173:9 | fn f | -| main.rs:193:10:193:17 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:194:10:194:16 | MyTrait | main.rs:151:5:159:5 | trait MyTrait | -| main.rs:197:17:197:24 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:199:17:199:24 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:201:9:201:16 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:201:9:201:19 | ...::h | main.rs:181:21:185:9 | fn h | -| main.rs:210:19:210:22 | self | main.rs:206:1:214:1 | mod m9 | -| main.rs:210:19:210:32 | ...::MyStruct | main.rs:207:5:207:26 | struct MyStruct | -| main.rs:211:9:211:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:212:9:212:12 | self | main.rs:206:1:214:1 | mod m9 | -| main.rs:212:9:212:22 | ...::MyStruct | main.rs:207:5:207:26 | struct MyStruct | -| main.rs:222:12:222:12 | T | main.rs:219:7:219:7 | T | -| main.rs:227:12:227:12 | T | main.rs:226:14:226:14 | T | -| main.rs:229:7:231:7 | MyStruct::<...> | main.rs:217:5:223:5 | struct MyStruct | -| main.rs:230:9:230:9 | T | main.rs:226:14:226:14 | T | -| main.rs:233:9:233:16 | MyStruct | main.rs:217:5:223:5 | struct MyStruct | -| main.rs:243:17:243:19 | Foo | main.rs:238:5:238:21 | struct Foo | -| main.rs:244:9:244:11 | Foo | main.rs:240:5:240:15 | fn Foo | -| main.rs:253:9:253:11 | Bar | main.rs:249:5:251:5 | enum Bar | -| main.rs:253:9:253:19 | ...::FooBar | main.rs:250:9:250:17 | FooBar | -| main.rs:258:13:258:15 | Foo | main.rs:238:5:238:21 | struct Foo | -| main.rs:259:17:259:22 | FooBar | main.rs:250:9:250:17 | FooBar | -| main.rs:260:17:260:22 | FooBar | main.rs:255:5:255:18 | fn FooBar | -| main.rs:268:9:268:9 | E | main.rs:263:15:266:5 | enum E | -| main.rs:268:9:268:12 | ...::C | main.rs:265:9:265:9 | C | -| main.rs:271:17:271:17 | S | main.rs:263:5:263:13 | struct S | -| main.rs:272:17:272:17 | C | main.rs:265:9:265:9 | C | -| main.rs:285:16:285:16 | T | main.rs:279:7:279:7 | T | -| main.rs:286:14:286:17 | Self | main.rs:277:5:287:5 | trait MyParamTrait | -| main.rs:286:14:286:33 | ...::AssociatedType | main.rs:281:9:281:28 | type AssociatedType | -| main.rs:295:13:295:16 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:295:13:295:21 | ...::m13 | main.rs:290:1:303:1 | mod m13 | -| main.rs:295:13:295:24 | ...::f | main.rs:291:5:291:17 | fn f | -| main.rs:295:13:295:24 | ...::f | main.rs:291:19:292:19 | struct f | -| main.rs:298:17:298:17 | f | main.rs:291:19:292:19 | struct f | -| main.rs:299:21:299:21 | f | main.rs:291:19:292:19 | struct f | -| main.rs:300:13:300:13 | f | main.rs:291:5:291:17 | fn f | -| main.rs:314:9:314:14 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:316:13:316:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:317:13:317:16 | Self | main.rs:312:5:320:5 | trait Trait2 | -| main.rs:317:13:317:19 | ...::g | main.rs:309:9:309:20 | fn g | -| main.rs:327:9:327:12 | Self | main.rs:322:5:335:5 | trait Trait3 | -| main.rs:327:15:327:20 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:328:9:328:10 | TT | main.rs:324:9:324:10 | TT | -| main.rs:328:13:328:18 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:330:25:330:26 | TT | main.rs:324:9:324:10 | TT | -| main.rs:331:13:331:16 | Self | main.rs:322:5:335:5 | trait Trait3 | -| main.rs:331:13:331:19 | ...::g | main.rs:309:9:309:20 | fn g | -| main.rs:332:13:332:14 | TT | main.rs:324:9:324:10 | TT | -| main.rs:332:13:332:17 | ...::g | main.rs:309:9:309:20 | fn g | -| main.rs:340:10:340:15 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:341:11:341:11 | S | main.rs:337:5:337:13 | struct S | -| main.rs:343:13:343:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:344:13:344:16 | Self | main.rs:339:5:351:5 | impl Trait1 for S { ... } | -| main.rs:344:13:344:19 | ...::g | main.rs:348:9:350:9 | fn g | -| main.rs:349:13:349:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:354:10:354:15 | Trait2 | main.rs:312:5:320:5 | trait Trait2 | -| main.rs:355:11:355:11 | S | main.rs:337:5:337:13 | struct S | -| main.rs:357:13:357:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:363:9:363:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:364:17:364:17 | S | main.rs:337:5:337:13 | struct S | -| main.rs:365:10:365:10 | S | main.rs:337:5:337:13 | struct S | -| main.rs:366:14:366:19 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:368:10:368:10 | S | main.rs:337:5:337:13 | struct S | -| main.rs:369:14:369:19 | Trait2 | main.rs:312:5:320:5 | trait Trait2 | -| main.rs:371:9:371:9 | S | main.rs:337:5:337:13 | struct S | -| main.rs:371:9:371:12 | ...::g | main.rs:348:9:350:9 | fn g | -| main.rs:381:24:381:24 | T | main.rs:379:7:379:7 | T | -| main.rs:383:24:383:24 | T | main.rs:379:7:379:7 | T | -| main.rs:386:24:386:24 | T | main.rs:379:7:379:7 | T | -| main.rs:387:13:387:16 | Self | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:387:13:387:19 | ...::g | main.rs:383:9:384:9 | fn g | -| main.rs:391:18:391:18 | T | main.rs:379:7:379:7 | T | -| main.rs:399:9:401:9 | Trait1::<...> | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:400:11:400:11 | T | main.rs:397:7:397:7 | T | -| main.rs:402:24:402:24 | T | main.rs:397:7:397:7 | T | -| main.rs:403:13:403:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:404:13:404:16 | Self | main.rs:395:5:408:5 | trait Trait2 | -| main.rs:404:13:404:19 | ...::g | main.rs:383:9:384:9 | fn g | -| main.rs:406:13:406:16 | Self | main.rs:395:5:408:5 | trait Trait2 | -| main.rs:406:13:406:19 | ...::c | main.rs:391:9:392:9 | Const | -| main.rs:413:10:415:5 | Trait1::<...> | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:414:7:414:7 | S | main.rs:410:5:410:13 | struct S | -| main.rs:416:11:416:11 | S | main.rs:410:5:410:13 | struct S | -| main.rs:417:24:417:24 | S | main.rs:410:5:410:13 | struct S | -| main.rs:418:13:418:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:419:13:419:16 | Self | main.rs:412:5:430:5 | impl Trait1::<...> for S { ... } | -| main.rs:419:13:419:19 | ...::g | main.rs:423:9:426:9 | fn g | -| main.rs:423:24:423:24 | S | main.rs:410:5:410:13 | struct S | -| main.rs:424:13:424:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:425:13:425:16 | Self | main.rs:412:5:430:5 | impl Trait1::<...> for S { ... } | -| main.rs:425:13:425:19 | ...::c | main.rs:428:9:429:9 | Const | -| main.rs:428:18:428:18 | S | main.rs:410:5:410:13 | struct S | -| main.rs:428:22:428:22 | S | main.rs:410:5:410:13 | struct S | -| main.rs:433:10:435:5 | Trait2::<...> | main.rs:395:5:408:5 | trait Trait2 | -| main.rs:434:7:434:7 | S | main.rs:410:5:410:13 | struct S | -| main.rs:436:11:436:11 | S | main.rs:410:5:410:13 | struct S | -| main.rs:437:24:437:24 | S | main.rs:410:5:410:13 | struct S | -| main.rs:438:13:438:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:439:13:439:16 | Self | main.rs:432:5:441:5 | impl Trait2::<...> for S { ... } | -| main.rs:445:9:445:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:446:17:446:17 | S | main.rs:410:5:410:13 | struct S | -| main.rs:447:10:447:10 | S | main.rs:410:5:410:13 | struct S | -| main.rs:448:14:450:11 | Trait1::<...> | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:449:13:449:13 | S | main.rs:410:5:410:13 | struct S | -| main.rs:452:10:452:10 | S | main.rs:410:5:410:13 | struct S | -| main.rs:453:14:455:11 | Trait2::<...> | main.rs:395:5:408:5 | trait Trait2 | -| main.rs:454:13:454:13 | S | main.rs:410:5:410:13 | struct S | -| main.rs:457:9:457:9 | S | main.rs:410:5:410:13 | struct S | -| main.rs:457:9:457:12 | ...::g | main.rs:423:9:426:9 | fn g | -| main.rs:459:9:459:9 | S | main.rs:410:5:410:13 | struct S | -| main.rs:459:9:459:12 | ...::h | main.rs:386:9:389:9 | fn h | -| main.rs:461:9:461:9 | S | main.rs:410:5:410:13 | struct S | -| main.rs:461:9:461:12 | ...::c | main.rs:428:9:429:9 | Const | -| main.rs:462:10:462:10 | S | main.rs:410:5:410:13 | struct S | -| main.rs:463:14:465:11 | Trait1::<...> | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:464:13:464:13 | S | main.rs:410:5:410:13 | struct S | -| main.rs:482:14:482:16 | Foo | main.rs:472:9:474:9 | trait Foo | -| main.rs:482:22:482:22 | X | main.rs:480:9:480:21 | struct X | -| main.rs:484:17:484:23 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:488:14:488:16 | Bar | main.rs:476:9:478:9 | trait Bar | -| main.rs:488:22:488:22 | X | main.rs:480:9:480:21 | struct X | -| main.rs:490:17:490:23 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:495:9:495:9 | m | main.rs:471:5:493:5 | mod m | -| main.rs:495:9:495:12 | ...::X | main.rs:480:9:480:21 | struct X | -| main.rs:498:17:498:17 | X | main.rs:480:9:480:21 | struct X | -| main.rs:501:17:501:17 | m | main.rs:471:5:493:5 | mod m | -| main.rs:501:17:501:22 | ...::Foo | main.rs:472:9:474:9 | trait Foo | -| main.rs:502:13:502:13 | X | main.rs:480:9:480:21 | struct X | -| main.rs:502:13:502:23 | ...::a_method | main.rs:482:26:485:13 | fn a_method | -| main.rs:506:17:506:17 | m | main.rs:471:5:493:5 | mod m | -| main.rs:506:17:506:22 | ...::Bar | main.rs:476:9:478:9 | trait Bar | -| main.rs:507:13:507:13 | X | main.rs:480:9:480:21 | struct X | -| main.rs:507:13:507:23 | ...::a_method | main.rs:488:26:491:13 | fn a_method | -| main.rs:511:17:511:17 | m | main.rs:471:5:493:5 | mod m | -| main.rs:511:17:511:22 | ...::Bar | main.rs:476:9:478:9 | trait Bar | -| main.rs:512:13:512:13 | X | main.rs:480:9:480:21 | struct X | -| main.rs:512:13:512:23 | ...::a_method | main.rs:488:26:491:13 | fn a_method | -| main.rs:517:13:517:13 | m | main.rs:471:5:493:5 | mod m | -| main.rs:517:13:517:18 | ...::Bar | main.rs:476:9:478:9 | trait Bar | -| main.rs:517:13:517:28 | ...::a_method | main.rs:477:13:477:31 | fn a_method | -| main.rs:530:10:530:16 | MyTrait | main.rs:523:5:525:5 | trait MyTrait | -| main.rs:531:9:531:9 | S | main.rs:527:5:527:13 | struct S | -| main.rs:533:13:533:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:539:7:539:13 | MyTrait | main.rs:523:5:525:5 | trait MyTrait | -| main.rs:540:10:540:10 | T | main.rs:538:10:538:10 | T | -| main.rs:542:9:542:9 | T | main.rs:538:10:538:10 | T | -| main.rs:542:9:542:12 | ...::f | main.rs:524:9:524:20 | fn f | -| main.rs:543:9:543:15 | MyTrait | main.rs:523:5:525:5 | trait MyTrait | -| main.rs:543:9:543:18 | ...::f | main.rs:524:9:524:20 | fn f | -| main.rs:548:9:548:9 | g | main.rs:537:5:544:5 | fn g | -| main.rs:549:11:549:11 | S | main.rs:527:5:527:13 | struct S | -| main.rs:556:9:556:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:561:13:561:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:566:17:566:23 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:567:17:567:21 | super | main.rs:559:5:571:5 | mod m19 | -| main.rs:567:17:567:24 | ...::f | main.rs:560:9:562:9 | fn f | -| main.rs:568:17:568:21 | super | main.rs:559:5:571:5 | mod m19 | -| main.rs:568:17:568:28 | ...::super | main.rs:554:1:572:1 | mod m18 | -| main.rs:568:17:568:31 | ...::f | main.rs:555:5:557:5 | fn f | -| main.rs:585:13:585:17 | super | main.rs:574:1:599:1 | mod m21 | -| main.rs:585:13:585:22 | ...::m22 | main.rs:575:5:581:5 | mod m22 | -| main.rs:585:13:585:30 | ...::MyEnum | main.rs:576:9:578:9 | enum MyEnum | -| main.rs:586:13:586:16 | self | main.rs:576:9:578:9 | enum MyEnum | -| main.rs:590:13:590:17 | super | main.rs:574:1:599:1 | mod m21 | -| main.rs:590:13:590:22 | ...::m22 | main.rs:575:5:581:5 | mod m22 | -| main.rs:590:13:590:32 | ...::MyStruct | main.rs:580:9:580:28 | struct MyStruct | -| main.rs:591:13:591:16 | self | main.rs:580:9:580:28 | struct MyStruct | -| main.rs:595:21:595:26 | MyEnum | main.rs:576:9:578:9 | enum MyEnum | -| main.rs:595:21:595:29 | ...::A | main.rs:577:13:577:13 | A | -| main.rs:596:21:596:28 | MyStruct | main.rs:580:9:580:28 | struct MyStruct | -| main.rs:612:10:614:5 | Trait1::<...> | main.rs:602:5:607:5 | trait Trait1 | -| main.rs:613:7:613:10 | Self | main.rs:609:5:609:13 | struct S | -| main.rs:615:11:615:11 | S | main.rs:609:5:609:13 | struct S | -| main.rs:617:13:617:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:623:17:623:17 | S | main.rs:609:5:609:13 | struct S | -| main.rs:639:15:639:15 | T | main.rs:638:26:638:26 | T | -| main.rs:644:9:644:24 | GenericStruct::<...> | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:644:23:644:23 | T | main.rs:643:10:643:10 | T | -| main.rs:646:9:646:9 | T | main.rs:643:10:643:10 | T | -| main.rs:646:12:646:17 | TraitA | main.rs:629:5:631:5 | trait TraitA | -| main.rs:655:9:655:24 | GenericStruct::<...> | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:655:23:655:23 | T | main.rs:654:10:654:10 | T | -| main.rs:657:9:657:9 | T | main.rs:654:10:654:10 | T | -| main.rs:657:12:657:17 | TraitB | main.rs:633:5:635:5 | trait TraitB | -| main.rs:658:9:658:9 | T | main.rs:654:10:654:10 | T | -| main.rs:658:12:658:17 | TraitA | main.rs:629:5:631:5 | trait TraitA | -| main.rs:669:10:669:15 | TraitA | main.rs:629:5:631:5 | trait TraitA | -| main.rs:669:21:669:31 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:671:13:671:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:676:10:676:15 | TraitB | main.rs:633:5:635:5 | trait TraitB | -| main.rs:676:21:676:31 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:678:13:678:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:684:24:684:34 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:685:23:685:35 | GenericStruct | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:691:9:691:36 | GenericStruct::<...> | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:691:9:691:50 | ...::call_trait_a | main.rs:648:9:650:9 | fn call_trait_a | -| main.rs:691:25:691:35 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:694:9:694:36 | GenericStruct::<...> | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:694:9:694:47 | ...::call_both | main.rs:660:9:663:9 | fn call_both | -| main.rs:694:25:694:35 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:700:3:700:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:700:3:700:24 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | -| main.rs:704:6:704:12 | AStruct | main.rs:703:1:703:17 | struct AStruct | -| main.rs:706:7:706:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:706:7:706:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | -| main.rs:709:7:709:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:709:7:709:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | -| main.rs:714:9:714:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:714:9:714:19 | ...::marker | {EXTERNAL LOCATION} | mod marker | -| main.rs:714:9:714:32 | ...::PhantomData | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:4:8:4:9 | my | main.rs:1:1:1:7 | mod my | +| main.rs:4:14:4:17 | self | main.rs:1:1:1:7 | mod my | +| main.rs:6:5:6:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:6:5:6:14 | ...::nested | my.rs:1:1:1:15 | mod nested | +| main.rs:6:5:6:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | +| main.rs:6:5:6:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | +| main.rs:10:5:10:7 | my2 | main.rs:8:1:8:8 | mod my2 | +| main.rs:13:5:13:7 | my2 | main.rs:8:1:8:8 | mod my2 | +| main.rs:13:5:13:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:13:5:13:25 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:13:5:13:34 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:14:5:14:5 | f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:15:5:15:5 | g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:18:5:18:7 | my2 | main.rs:8:1:8:8 | mod my2 | +| main.rs:18:5:18:18 | ...::nested8_f | my2/nested2.rs:23:9:25:9 | fn f | +| main.rs:22:9:22:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:27:13:27:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:31:13:31:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:32:13:32:13 | f | main.rs:26:9:28:9 | fn f | +| main.rs:33:13:33:17 | super | main.rs:20:1:44:1 | mod m1 | +| main.rs:33:13:33:20 | ...::f | main.rs:21:5:23:5 | fn f | +| main.rs:37:17:37:21 | super | main.rs:25:5:43:5 | mod m2 | +| main.rs:37:17:37:24 | ...::f | main.rs:26:9:28:9 | fn f | +| main.rs:39:17:39:23 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:40:17:40:17 | f | main.rs:26:9:28:9 | fn f | +| main.rs:47:9:47:13 | super | main.rs:1:1:873:2 | SourceFile | +| main.rs:47:9:47:17 | ...::m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:47:9:47:21 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:47:9:47:24 | ...::g | main.rs:30:9:34:9 | fn g | +| main.rs:50:9:50:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:51:9:51:9 | g | main.rs:30:9:34:9 | fn g | +| main.rs:58:5:58:11 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:63:13:63:14 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:63:13:63:18 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:63:13:63:21 | ...::g | main.rs:30:9:34:9 | fn g | +| main.rs:64:9:64:9 | g | main.rs:30:9:34:9 | fn g | +| main.rs:67:9:67:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:68:17:68:19 | Foo | main.rs:66:9:66:21 | struct Foo | +| main.rs:71:13:71:15 | Foo | main.rs:60:5:60:17 | struct Foo | +| main.rs:73:5:73:5 | f | main.rs:62:5:69:5 | fn f | +| main.rs:75:5:75:8 | self | main.rs:1:1:873:2 | SourceFile | +| main.rs:75:5:75:11 | ...::i | main.rs:78:1:90:1 | fn i | +| main.rs:79:5:79:11 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:81:13:81:15 | Foo | main.rs:55:1:55:13 | struct Foo | +| main.rs:85:16:85:18 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:88:17:88:19 | Foo | main.rs:84:9:86:9 | struct Foo | +| main.rs:92:5:92:7 | my2 | main.rs:8:1:8:8 | mod my2 | +| main.rs:92:5:92:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:94:5:94:21 | my2_nested2_alias | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:94:5:94:30 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:94:34:94:40 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:94:34:94:43 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:94:57:94:63 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:94:57:94:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:94:80:94:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:105:5:105:11 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:106:5:106:15 | fn_in_macro | main.rs:96:1:102:1 | MacroRules | +| main.rs:106:18:106:24 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:107:5:107:22 | f_defined_in_macro | main.rs:106:18:106:42 | fn f_defined_in_macro | +| main.rs:112:9:112:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:118:9:118:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:122:9:122:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:125:13:125:17 | super | main.rs:1:1:873:2 | SourceFile | +| main.rs:125:13:125:21 | ...::m5 | main.rs:110:1:114:1 | mod m5 | +| main.rs:126:9:126:9 | f | main.rs:111:5:113:5 | fn f | +| main.rs:126:9:126:9 | f | main.rs:117:5:119:5 | fn f | +| main.rs:133:13:133:15 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:136:16:136:18 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:142:19:142:24 | MyEnum | main.rs:131:5:139:5 | enum MyEnum | +| main.rs:144:9:144:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:145:17:145:22 | MyEnum | main.rs:131:5:139:5 | enum MyEnum | +| main.rs:145:17:145:25 | ...::A | main.rs:132:9:134:9 | A | +| main.rs:146:17:146:22 | MyEnum | main.rs:131:5:139:5 | enum MyEnum | +| main.rs:146:17:146:25 | ...::B | main.rs:134:12:137:9 | B | +| main.rs:147:9:147:14 | MyEnum | main.rs:131:5:139:5 | enum MyEnum | +| main.rs:147:9:147:17 | ...::C | main.rs:137:12:138:9 | C | +| main.rs:156:13:156:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:157:13:157:13 | f | main.rs:164:5:166:5 | fn f | +| main.rs:158:13:158:16 | Self | main.rs:152:5:160:5 | trait MyTrait | +| main.rs:158:13:158:19 | ...::f | main.rs:153:9:153:20 | fn f | +| main.rs:165:9:165:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:169:10:169:16 | MyTrait | main.rs:152:5:160:5 | trait MyTrait | +| main.rs:169:22:169:29 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:171:13:171:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:172:13:172:13 | f | main.rs:164:5:166:5 | fn f | +| main.rs:173:13:173:16 | Self | main.rs:168:5:179:5 | impl MyTrait for MyStruct { ... } | +| main.rs:173:13:173:19 | ...::g | main.rs:176:9:178:9 | fn g | +| main.rs:177:13:177:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:182:10:182:17 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:184:13:184:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:185:13:185:13 | f | main.rs:164:5:166:5 | fn f | +| main.rs:191:17:191:24 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:192:9:192:15 | MyTrait | main.rs:152:5:160:5 | trait MyTrait | +| main.rs:192:9:192:18 | ...::f | main.rs:153:9:153:20 | fn f | +| main.rs:193:9:193:16 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:193:9:193:19 | ...::f | main.rs:169:33:174:9 | fn f | +| main.rs:194:10:194:17 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:195:10:195:16 | MyTrait | main.rs:152:5:160:5 | trait MyTrait | +| main.rs:198:17:198:24 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:200:17:200:24 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:202:9:202:16 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:202:9:202:19 | ...::h | main.rs:182:21:186:9 | fn h | +| main.rs:211:19:211:22 | self | main.rs:207:1:215:1 | mod m9 | +| main.rs:211:19:211:32 | ...::MyStruct | main.rs:208:5:208:26 | struct MyStruct | +| main.rs:212:9:212:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:213:9:213:12 | self | main.rs:207:1:215:1 | mod m9 | +| main.rs:213:9:213:22 | ...::MyStruct | main.rs:208:5:208:26 | struct MyStruct | +| main.rs:223:12:223:12 | T | main.rs:220:7:220:7 | T | +| main.rs:228:12:228:12 | T | main.rs:227:14:227:14 | T | +| main.rs:230:7:232:7 | MyStruct::<...> | main.rs:218:5:224:5 | struct MyStruct | +| main.rs:231:9:231:9 | T | main.rs:227:14:227:14 | T | +| main.rs:234:9:234:16 | MyStruct | main.rs:218:5:224:5 | struct MyStruct | +| main.rs:244:17:244:19 | Foo | main.rs:239:5:239:21 | struct Foo | +| main.rs:245:9:245:11 | Foo | main.rs:241:5:241:15 | fn Foo | +| main.rs:254:9:254:11 | Bar | main.rs:250:5:252:5 | enum Bar | +| main.rs:254:9:254:19 | ...::FooBar | main.rs:251:9:251:17 | FooBar | +| main.rs:259:13:259:15 | Foo | main.rs:239:5:239:21 | struct Foo | +| main.rs:260:17:260:22 | FooBar | main.rs:251:9:251:17 | FooBar | +| main.rs:261:17:261:22 | FooBar | main.rs:256:5:256:18 | fn FooBar | +| main.rs:269:9:269:9 | E | main.rs:264:15:267:5 | enum E | +| main.rs:269:9:269:12 | ...::C | main.rs:266:9:266:9 | C | +| main.rs:272:17:272:17 | S | main.rs:264:5:264:13 | struct S | +| main.rs:273:17:273:17 | C | main.rs:266:9:266:9 | C | +| main.rs:286:16:286:16 | T | main.rs:280:7:280:7 | T | +| main.rs:287:14:287:17 | Self | main.rs:278:5:288:5 | trait MyParamTrait | +| main.rs:287:14:287:33 | ...::AssociatedType | main.rs:282:9:282:28 | type AssociatedType | +| main.rs:296:13:296:16 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:296:13:296:21 | ...::m13 | main.rs:291:1:304:1 | mod m13 | +| main.rs:296:13:296:24 | ...::f | main.rs:292:5:292:17 | fn f | +| main.rs:296:13:296:24 | ...::f | main.rs:292:19:293:19 | struct f | +| main.rs:299:17:299:17 | f | main.rs:292:19:293:19 | struct f | +| main.rs:300:21:300:21 | f | main.rs:292:19:293:19 | struct f | +| main.rs:301:13:301:13 | f | main.rs:292:5:292:17 | fn f | +| main.rs:315:9:315:14 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:317:13:317:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:318:13:318:16 | Self | main.rs:313:5:321:5 | trait Trait2 | +| main.rs:318:13:318:19 | ...::g | main.rs:310:9:310:20 | fn g | +| main.rs:328:9:328:12 | Self | main.rs:323:5:336:5 | trait Trait3 | +| main.rs:328:15:328:20 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:329:9:329:10 | TT | main.rs:325:9:325:10 | TT | +| main.rs:329:13:329:18 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:331:25:331:26 | TT | main.rs:325:9:325:10 | TT | +| main.rs:332:13:332:16 | Self | main.rs:323:5:336:5 | trait Trait3 | +| main.rs:332:13:332:19 | ...::g | main.rs:310:9:310:20 | fn g | +| main.rs:333:13:333:14 | TT | main.rs:325:9:325:10 | TT | +| main.rs:333:13:333:17 | ...::g | main.rs:310:9:310:20 | fn g | +| main.rs:341:10:341:15 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:342:11:342:11 | S | main.rs:338:5:338:13 | struct S | +| main.rs:344:13:344:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:345:13:345:16 | Self | main.rs:340:5:352:5 | impl Trait1 for S { ... } | +| main.rs:345:13:345:19 | ...::g | main.rs:349:9:351:9 | fn g | +| main.rs:350:13:350:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:355:10:355:15 | Trait2 | main.rs:313:5:321:5 | trait Trait2 | +| main.rs:356:11:356:11 | S | main.rs:338:5:338:13 | struct S | +| main.rs:358:13:358:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:364:9:364:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:365:17:365:17 | S | main.rs:338:5:338:13 | struct S | +| main.rs:366:10:366:10 | S | main.rs:338:5:338:13 | struct S | +| main.rs:367:14:367:19 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:369:10:369:10 | S | main.rs:338:5:338:13 | struct S | +| main.rs:370:14:370:19 | Trait2 | main.rs:313:5:321:5 | trait Trait2 | +| main.rs:372:9:372:9 | S | main.rs:338:5:338:13 | struct S | +| main.rs:372:9:372:12 | ...::g | main.rs:349:9:351:9 | fn g | +| main.rs:382:24:382:24 | T | main.rs:380:7:380:7 | T | +| main.rs:384:24:384:24 | T | main.rs:380:7:380:7 | T | +| main.rs:387:24:387:24 | T | main.rs:380:7:380:7 | T | +| main.rs:388:13:388:16 | Self | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:388:13:388:19 | ...::g | main.rs:384:9:385:9 | fn g | +| main.rs:392:18:392:18 | T | main.rs:380:7:380:7 | T | +| main.rs:400:9:402:9 | Trait1::<...> | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:401:11:401:11 | T | main.rs:398:7:398:7 | T | +| main.rs:403:24:403:24 | T | main.rs:398:7:398:7 | T | +| main.rs:404:13:404:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:405:13:405:16 | Self | main.rs:396:5:409:5 | trait Trait2 | +| main.rs:405:13:405:19 | ...::g | main.rs:384:9:385:9 | fn g | +| main.rs:407:13:407:16 | Self | main.rs:396:5:409:5 | trait Trait2 | +| main.rs:407:13:407:19 | ...::c | main.rs:392:9:393:9 | Const | +| main.rs:414:10:416:5 | Trait1::<...> | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:415:7:415:7 | S | main.rs:411:5:411:13 | struct S | +| main.rs:417:11:417:11 | S | main.rs:411:5:411:13 | struct S | +| main.rs:418:24:418:24 | S | main.rs:411:5:411:13 | struct S | +| main.rs:419:13:419:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:420:13:420:16 | Self | main.rs:413:5:431:5 | impl Trait1::<...> for S { ... } | +| main.rs:420:13:420:19 | ...::g | main.rs:424:9:427:9 | fn g | +| main.rs:424:24:424:24 | S | main.rs:411:5:411:13 | struct S | +| main.rs:425:13:425:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:426:13:426:16 | Self | main.rs:413:5:431:5 | impl Trait1::<...> for S { ... } | +| main.rs:426:13:426:19 | ...::c | main.rs:429:9:430:9 | Const | +| main.rs:429:18:429:18 | S | main.rs:411:5:411:13 | struct S | +| main.rs:429:22:429:22 | S | main.rs:411:5:411:13 | struct S | +| main.rs:434:10:436:5 | Trait2::<...> | main.rs:396:5:409:5 | trait Trait2 | +| main.rs:435:7:435:7 | S | main.rs:411:5:411:13 | struct S | +| main.rs:437:11:437:11 | S | main.rs:411:5:411:13 | struct S | +| main.rs:438:24:438:24 | S | main.rs:411:5:411:13 | struct S | +| main.rs:439:13:439:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:440:13:440:16 | Self | main.rs:433:5:442:5 | impl Trait2::<...> for S { ... } | +| main.rs:446:9:446:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:447:17:447:17 | S | main.rs:411:5:411:13 | struct S | +| main.rs:448:10:448:10 | S | main.rs:411:5:411:13 | struct S | +| main.rs:449:14:451:11 | Trait1::<...> | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:450:13:450:13 | S | main.rs:411:5:411:13 | struct S | +| main.rs:453:10:453:10 | S | main.rs:411:5:411:13 | struct S | +| main.rs:454:14:456:11 | Trait2::<...> | main.rs:396:5:409:5 | trait Trait2 | +| main.rs:455:13:455:13 | S | main.rs:411:5:411:13 | struct S | +| main.rs:458:9:458:9 | S | main.rs:411:5:411:13 | struct S | +| main.rs:458:9:458:12 | ...::g | main.rs:424:9:427:9 | fn g | +| main.rs:460:9:460:9 | S | main.rs:411:5:411:13 | struct S | +| main.rs:460:9:460:12 | ...::h | main.rs:387:9:390:9 | fn h | +| main.rs:462:9:462:9 | S | main.rs:411:5:411:13 | struct S | +| main.rs:462:9:462:12 | ...::c | main.rs:429:9:430:9 | Const | +| main.rs:463:10:463:10 | S | main.rs:411:5:411:13 | struct S | +| main.rs:464:14:466:11 | Trait1::<...> | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:465:13:465:13 | S | main.rs:411:5:411:13 | struct S | +| main.rs:483:14:483:16 | Foo | main.rs:473:9:475:9 | trait Foo | +| main.rs:483:22:483:22 | X | main.rs:481:9:481:21 | struct X | +| main.rs:485:17:485:23 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:489:14:489:16 | Bar | main.rs:477:9:479:9 | trait Bar | +| main.rs:489:22:489:22 | X | main.rs:481:9:481:21 | struct X | +| main.rs:491:17:491:23 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:496:9:496:9 | m | main.rs:472:5:494:5 | mod m | +| main.rs:496:9:496:12 | ...::X | main.rs:481:9:481:21 | struct X | +| main.rs:499:17:499:17 | X | main.rs:481:9:481:21 | struct X | +| main.rs:502:17:502:17 | m | main.rs:472:5:494:5 | mod m | +| main.rs:502:17:502:22 | ...::Foo | main.rs:473:9:475:9 | trait Foo | +| main.rs:503:13:503:13 | X | main.rs:481:9:481:21 | struct X | +| main.rs:503:13:503:23 | ...::a_method | main.rs:483:26:486:13 | fn a_method | +| main.rs:507:17:507:17 | m | main.rs:472:5:494:5 | mod m | +| main.rs:507:17:507:22 | ...::Bar | main.rs:477:9:479:9 | trait Bar | +| main.rs:508:13:508:13 | X | main.rs:481:9:481:21 | struct X | +| main.rs:508:13:508:23 | ...::a_method | main.rs:489:26:492:13 | fn a_method | +| main.rs:512:17:512:17 | m | main.rs:472:5:494:5 | mod m | +| main.rs:512:17:512:22 | ...::Bar | main.rs:477:9:479:9 | trait Bar | +| main.rs:513:13:513:13 | X | main.rs:481:9:481:21 | struct X | +| main.rs:513:13:513:23 | ...::a_method | main.rs:489:26:492:13 | fn a_method | +| main.rs:518:13:518:13 | m | main.rs:472:5:494:5 | mod m | +| main.rs:518:13:518:18 | ...::Bar | main.rs:477:9:479:9 | trait Bar | +| main.rs:518:13:518:28 | ...::a_method | main.rs:478:13:478:31 | fn a_method | +| main.rs:531:10:531:16 | MyTrait | main.rs:524:5:526:5 | trait MyTrait | +| main.rs:532:9:532:9 | S | main.rs:528:5:528:13 | struct S | +| main.rs:534:13:534:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:540:7:540:13 | MyTrait | main.rs:524:5:526:5 | trait MyTrait | +| main.rs:541:10:541:10 | T | main.rs:539:10:539:10 | T | +| main.rs:543:9:543:9 | T | main.rs:539:10:539:10 | T | +| main.rs:543:9:543:12 | ...::f | main.rs:525:9:525:20 | fn f | +| main.rs:544:9:544:15 | MyTrait | main.rs:524:5:526:5 | trait MyTrait | +| main.rs:544:9:544:18 | ...::f | main.rs:525:9:525:20 | fn f | +| main.rs:549:9:549:9 | g | main.rs:538:5:545:5 | fn g | +| main.rs:550:11:550:11 | S | main.rs:528:5:528:13 | struct S | +| main.rs:557:9:557:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:562:13:562:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:567:17:567:23 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:568:17:568:21 | super | main.rs:560:5:572:5 | mod m19 | +| main.rs:568:17:568:24 | ...::f | main.rs:561:9:563:9 | fn f | +| main.rs:569:17:569:21 | super | main.rs:560:5:572:5 | mod m19 | +| main.rs:569:17:569:28 | ...::super | main.rs:555:1:573:1 | mod m18 | +| main.rs:569:17:569:31 | ...::f | main.rs:556:5:558:5 | fn f | +| main.rs:586:13:586:17 | super | main.rs:575:1:600:1 | mod m21 | +| main.rs:586:13:586:22 | ...::m22 | main.rs:576:5:582:5 | mod m22 | +| main.rs:586:13:586:30 | ...::MyEnum | main.rs:577:9:579:9 | enum MyEnum | +| main.rs:587:13:587:16 | self | main.rs:577:9:579:9 | enum MyEnum | +| main.rs:591:13:591:17 | super | main.rs:575:1:600:1 | mod m21 | +| main.rs:591:13:591:22 | ...::m22 | main.rs:576:5:582:5 | mod m22 | +| main.rs:591:13:591:32 | ...::MyStruct | main.rs:581:9:581:28 | struct MyStruct | +| main.rs:592:13:592:16 | self | main.rs:581:9:581:28 | struct MyStruct | +| main.rs:596:21:596:26 | MyEnum | main.rs:577:9:579:9 | enum MyEnum | +| main.rs:596:21:596:29 | ...::A | main.rs:578:13:578:13 | A | +| main.rs:597:21:597:28 | MyStruct | main.rs:581:9:581:28 | struct MyStruct | +| main.rs:613:10:615:5 | Trait1::<...> | main.rs:603:5:608:5 | trait Trait1 | +| main.rs:614:7:614:10 | Self | main.rs:610:5:610:13 | struct S | +| main.rs:616:11:616:11 | S | main.rs:610:5:610:13 | struct S | +| main.rs:618:13:618:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:624:17:624:17 | S | main.rs:610:5:610:13 | struct S | +| main.rs:640:15:640:15 | T | main.rs:639:26:639:26 | T | +| main.rs:645:9:645:24 | GenericStruct::<...> | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:645:23:645:23 | T | main.rs:644:10:644:10 | T | +| main.rs:647:9:647:9 | T | main.rs:644:10:644:10 | T | +| main.rs:647:12:647:17 | TraitA | main.rs:630:5:632:5 | trait TraitA | +| main.rs:656:9:656:24 | GenericStruct::<...> | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:656:23:656:23 | T | main.rs:655:10:655:10 | T | +| main.rs:658:9:658:9 | T | main.rs:655:10:655:10 | T | +| main.rs:658:12:658:17 | TraitB | main.rs:634:5:636:5 | trait TraitB | +| main.rs:659:9:659:9 | T | main.rs:655:10:655:10 | T | +| main.rs:659:12:659:17 | TraitA | main.rs:630:5:632:5 | trait TraitA | +| main.rs:670:10:670:15 | TraitA | main.rs:630:5:632:5 | trait TraitA | +| main.rs:670:21:670:31 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:672:13:672:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:677:10:677:15 | TraitB | main.rs:634:5:636:5 | trait TraitB | +| main.rs:677:21:677:31 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:679:13:679:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:685:24:685:34 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:686:23:686:35 | GenericStruct | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:692:9:692:36 | GenericStruct::<...> | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:692:9:692:50 | ...::call_trait_a | main.rs:649:9:651:9 | fn call_trait_a | +| main.rs:692:25:692:35 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:695:9:695:36 | GenericStruct::<...> | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:695:9:695:47 | ...::call_both | main.rs:661:9:664:9 | fn call_both | +| main.rs:695:25:695:35 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:701:3:701:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:701:3:701:24 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | +| main.rs:705:6:705:12 | AStruct | main.rs:704:1:704:17 | struct AStruct | +| main.rs:707:7:707:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:707:7:707:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | +| main.rs:710:7:710:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:710:7:710:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | | main.rs:715:9:715:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:715:9:715:19 | ...::result | {EXTERNAL LOCATION} | mod result | -| main.rs:715:9:715:27 | ...::Result | {EXTERNAL LOCATION} | enum Result | -| main.rs:723:19:723:22 | Self | main.rs:717:5:725:5 | trait Reduce | -| main.rs:723:19:723:29 | ...::Input | main.rs:718:9:718:19 | type Input | -| main.rs:724:14:724:46 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:724:21:724:24 | Self | main.rs:717:5:725:5 | trait Reduce | -| main.rs:724:21:724:32 | ...::Output | main.rs:719:21:720:20 | type Output | -| main.rs:724:35:724:38 | Self | main.rs:717:5:725:5 | trait Reduce | -| main.rs:724:35:724:45 | ...::Error | main.rs:718:21:719:19 | type Error | -| main.rs:728:17:728:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | -| main.rs:728:29:728:33 | Input | main.rs:727:19:727:23 | Input | +| main.rs:715:9:715:19 | ...::marker | {EXTERNAL LOCATION} | mod marker | +| main.rs:715:9:715:32 | ...::PhantomData | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:716:9:716:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:716:9:716:19 | ...::result | {EXTERNAL LOCATION} | mod result | +| main.rs:716:9:716:27 | ...::Result | {EXTERNAL LOCATION} | enum Result | +| main.rs:724:19:724:22 | Self | main.rs:718:5:726:5 | trait Reduce | +| main.rs:724:19:724:29 | ...::Input | main.rs:719:9:719:19 | type Input | +| main.rs:725:14:725:46 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:725:21:725:24 | Self | main.rs:718:5:726:5 | trait Reduce | +| main.rs:725:21:725:32 | ...::Output | main.rs:720:21:721:20 | type Output | +| main.rs:725:35:725:38 | Self | main.rs:718:5:726:5 | trait Reduce | +| main.rs:725:35:725:45 | ...::Error | main.rs:719:21:720:19 | type Error | | main.rs:729:17:729:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | -| main.rs:729:29:729:33 | Error | main.rs:727:26:727:30 | Error | -| main.rs:736:11:736:16 | Reduce | main.rs:717:5:725:5 | trait Reduce | -| main.rs:737:13:740:9 | MyImpl::<...> | main.rs:727:5:730:5 | struct MyImpl | -| main.rs:738:13:738:17 | Input | main.rs:734:13:734:17 | Input | -| main.rs:739:13:739:17 | Error | main.rs:735:13:735:17 | Error | -| main.rs:742:22:745:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:743:13:743:17 | Input | main.rs:734:13:734:17 | Input | -| main.rs:744:13:744:16 | Self | main.rs:732:5:764:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:744:13:744:23 | ...::Error | main.rs:746:11:750:9 | type Error | -| main.rs:747:22:749:9 | Option::<...> | {EXTERNAL LOCATION} | enum Option | -| main.rs:748:11:748:15 | Error | main.rs:735:13:735:17 | Error | -| main.rs:752:13:752:17 | Input | main.rs:734:13:734:17 | Input | -| main.rs:757:19:757:22 | Self | main.rs:732:5:764:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:757:19:757:29 | ...::Input | main.rs:742:9:746:9 | type Input | -| main.rs:758:14:761:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:759:13:759:16 | Self | main.rs:732:5:764:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:759:13:759:24 | ...::Output | main.rs:750:11:753:9 | type Output | -| main.rs:760:13:760:16 | Self | main.rs:732:5:764:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:760:13:760:23 | ...::Error | main.rs:746:11:750:9 | type Error | -| main.rs:767:5:767:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:767:11:767:14 | self | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:769:15:769:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:769:15:769:25 | ...::string | {EXTERNAL LOCATION} | mod string | -| main.rs:769:15:769:33 | ...::String | {EXTERNAL LOCATION} | struct String | -| main.rs:779:7:779:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:779:7:779:26 | ...::identity | proc_macro.rs:15:1:18:1 | fn identity | -| main.rs:780:10:780:15 | ATrait | main.rs:775:5:777:5 | trait ATrait | -| main.rs:780:21:780:23 | i64 | {EXTERNAL LOCATION} | struct i64 | -| main.rs:782:11:782:13 | i64 | {EXTERNAL LOCATION} | struct i64 | -| main.rs:788:17:788:19 | Foo | main.rs:773:5:773:15 | struct Foo | -| main.rs:793:5:793:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:793:5:793:14 | ...::nested | my.rs:1:1:1:15 | mod nested | -| main.rs:793:5:793:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | -| main.rs:793:5:793:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | -| main.rs:793:5:793:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | -| main.rs:794:5:794:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:794:5:794:9 | ...::f | my.rs:5:1:7:1 | fn f | -| main.rs:795:5:795:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:795:5:795:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:795:5:795:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:795:5:795:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:796:5:796:5 | f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:797:5:797:5 | g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:798:5:798:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:798:5:798:12 | ...::h | main.rs:56:1:75:1 | fn h | -| main.rs:799:5:799:6 | m1 | main.rs:19:1:43:1 | mod m1 | -| main.rs:799:5:799:10 | ...::m2 | main.rs:24:5:42:5 | mod m2 | -| main.rs:799:5:799:13 | ...::g | main.rs:29:9:33:9 | fn g | -| main.rs:800:5:800:6 | m1 | main.rs:19:1:43:1 | mod m1 | -| main.rs:800:5:800:10 | ...::m2 | main.rs:24:5:42:5 | mod m2 | -| main.rs:800:5:800:14 | ...::m3 | main.rs:35:9:41:9 | mod m3 | -| main.rs:800:5:800:17 | ...::h | main.rs:36:27:40:13 | fn h | -| main.rs:801:5:801:6 | m4 | main.rs:45:1:52:1 | mod m4 | -| main.rs:801:5:801:9 | ...::i | main.rs:48:5:51:5 | fn i | -| main.rs:802:5:802:5 | h | main.rs:56:1:75:1 | fn h | -| main.rs:803:5:803:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:804:5:804:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:805:5:805:5 | j | main.rs:103:1:107:1 | fn j | -| main.rs:806:5:806:6 | m6 | main.rs:115:1:127:1 | mod m6 | -| main.rs:806:5:806:9 | ...::g | main.rs:120:5:126:5 | fn g | -| main.rs:807:5:807:6 | m7 | main.rs:129:1:148:1 | mod m7 | -| main.rs:807:5:807:9 | ...::f | main.rs:140:5:147:5 | fn f | -| main.rs:808:5:808:6 | m8 | main.rs:150:1:204:1 | mod m8 | -| main.rs:808:5:808:9 | ...::g | main.rs:188:5:203:5 | fn g | -| main.rs:809:5:809:6 | m9 | main.rs:206:1:214:1 | mod m9 | -| main.rs:809:5:809:9 | ...::f | main.rs:209:5:213:5 | fn f | -| main.rs:810:5:810:7 | m11 | main.rs:237:1:274:1 | mod m11 | -| main.rs:810:5:810:10 | ...::f | main.rs:242:5:245:5 | fn f | -| main.rs:811:5:811:7 | m15 | main.rs:305:1:374:1 | mod m15 | -| main.rs:811:5:811:10 | ...::f | main.rs:361:5:373:5 | fn f | -| main.rs:812:5:812:7 | m16 | main.rs:376:1:468:1 | mod m16 | -| main.rs:812:5:812:10 | ...::f | main.rs:443:5:467:5 | fn f | -| main.rs:813:5:813:20 | trait_visibility | main.rs:470:1:520:1 | mod trait_visibility | -| main.rs:813:5:813:23 | ...::f | main.rs:497:5:519:5 | fn f | -| main.rs:814:5:814:7 | m17 | main.rs:522:1:552:1 | mod m17 | -| main.rs:814:5:814:10 | ...::f | main.rs:546:5:551:5 | fn f | -| main.rs:815:5:815:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | -| main.rs:815:5:815:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | -| main.rs:816:5:816:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | -| main.rs:816:5:816:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | -| main.rs:817:5:817:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 | -| main.rs:817:5:817:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | -| main.rs:818:5:818:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | -| main.rs:819:5:819:7 | m18 | main.rs:554:1:572:1 | mod m18 | -| main.rs:819:5:819:12 | ...::m19 | main.rs:559:5:571:5 | mod m19 | -| main.rs:819:5:819:17 | ...::m20 | main.rs:564:9:570:9 | mod m20 | -| main.rs:819:5:819:20 | ...::g | main.rs:565:13:569:13 | fn g | -| main.rs:820:5:820:7 | m23 | main.rs:601:1:626:1 | mod m23 | -| main.rs:820:5:820:10 | ...::f | main.rs:621:5:625:5 | fn f | -| main.rs:821:5:821:7 | m24 | main.rs:628:1:696:1 | mod m24 | -| main.rs:821:5:821:10 | ...::f | main.rs:682:5:695:5 | fn f | -| main.rs:822:5:822:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:822:5:822:11 | ...::h | main.rs:56:1:75:1 | fn h | -| main.rs:823:5:823:13 | z_changed | main.rs:701:1:701:9 | fn z_changed | -| main.rs:824:5:824:11 | AStruct | main.rs:703:1:703:17 | struct AStruct | -| main.rs:824:5:824:22 | ...::z_on_type | main.rs:707:5:707:17 | fn z_on_type | -| main.rs:825:5:825:11 | AStruct | main.rs:703:1:703:17 | struct AStruct | -| main.rs:826:5:826:29 | impl_with_attribute_macro | main.rs:771:1:790:1 | mod impl_with_attribute_macro | -| main.rs:826:5:826:35 | ...::test | main.rs:786:5:789:5 | fn test | +| main.rs:729:29:729:33 | Input | main.rs:728:19:728:23 | Input | +| main.rs:730:17:730:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:730:29:730:33 | Error | main.rs:728:26:728:30 | Error | +| main.rs:737:11:737:16 | Reduce | main.rs:718:5:726:5 | trait Reduce | +| main.rs:738:13:741:9 | MyImpl::<...> | main.rs:728:5:731:5 | struct MyImpl | +| main.rs:739:13:739:17 | Input | main.rs:735:13:735:17 | Input | +| main.rs:740:13:740:17 | Error | main.rs:736:13:736:17 | Error | +| main.rs:743:22:746:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:744:13:744:17 | Input | main.rs:735:13:735:17 | Input | +| main.rs:745:13:745:16 | Self | main.rs:733:5:765:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:745:13:745:23 | ...::Error | main.rs:747:11:751:9 | type Error | +| main.rs:748:22:750:9 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:749:11:749:15 | Error | main.rs:736:13:736:17 | Error | +| main.rs:753:13:753:17 | Input | main.rs:735:13:735:17 | Input | +| main.rs:758:19:758:22 | Self | main.rs:733:5:765:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:758:19:758:29 | ...::Input | main.rs:743:9:747:9 | type Input | +| main.rs:759:14:762:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:760:13:760:16 | Self | main.rs:733:5:765:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:760:13:760:24 | ...::Output | main.rs:751:11:754:9 | type Output | +| main.rs:761:13:761:16 | Self | main.rs:733:5:765:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:761:13:761:23 | ...::Error | main.rs:747:11:751:9 | type Error | +| main.rs:768:5:768:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:768:11:768:14 | self | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:770:15:770:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:770:15:770:25 | ...::string | {EXTERNAL LOCATION} | mod string | +| main.rs:770:15:770:33 | ...::String | {EXTERNAL LOCATION} | struct String | +| main.rs:780:7:780:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:780:7:780:26 | ...::identity | proc_macro.rs:15:1:18:1 | fn identity | +| main.rs:781:10:781:15 | ATrait | main.rs:776:5:778:5 | trait ATrait | +| main.rs:781:21:781:23 | i64 | {EXTERNAL LOCATION} | struct i64 | +| main.rs:783:11:783:13 | i64 | {EXTERNAL LOCATION} | struct i64 | +| main.rs:789:17:789:19 | Foo | main.rs:774:5:774:15 | struct Foo | +| main.rs:795:22:795:32 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:795:29:795:31 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:796:17:796:20 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:797:17:797:27 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:797:24:797:26 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:798:13:798:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:799:17:799:20 | None | {EXTERNAL LOCATION} | None | +| main.rs:801:13:801:16 | None | {EXTERNAL LOCATION} | None | +| main.rs:802:17:802:20 | None | {EXTERNAL LOCATION} | None | +| main.rs:811:19:811:29 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:811:26:811:28 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:812:26:812:29 | test | main.rs:794:5:808:5 | fn test | +| main.rs:818:14:818:16 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:823:17:823:20 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:825:13:825:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:830:13:830:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:830:18:830:18 | z | main.rs:817:5:819:12 | Const | +| main.rs:830:24:830:24 | z | main.rs:817:5:819:12 | Const | +| main.rs:837:5:837:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:837:5:837:14 | ...::nested | my.rs:1:1:1:15 | mod nested | +| main.rs:837:5:837:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | +| main.rs:837:5:837:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | +| main.rs:837:5:837:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | +| main.rs:838:5:838:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:838:5:838:9 | ...::f | my.rs:5:1:7:1 | fn f | +| main.rs:839:5:839:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:839:5:839:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:839:5:839:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:839:5:839:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:840:5:840:5 | f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:841:5:841:5 | g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:842:5:842:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:842:5:842:12 | ...::h | main.rs:57:1:76:1 | fn h | +| main.rs:843:5:843:6 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:843:5:843:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:843:5:843:13 | ...::g | main.rs:30:9:34:9 | fn g | +| main.rs:844:5:844:6 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:844:5:844:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:844:5:844:14 | ...::m3 | main.rs:36:9:42:9 | mod m3 | +| main.rs:844:5:844:17 | ...::h | main.rs:37:27:41:13 | fn h | +| main.rs:845:5:845:6 | m4 | main.rs:46:1:53:1 | mod m4 | +| main.rs:845:5:845:9 | ...::i | main.rs:49:5:52:5 | fn i | +| main.rs:846:5:846:5 | h | main.rs:57:1:76:1 | fn h | +| main.rs:847:5:847:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:848:5:848:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:849:5:849:5 | j | main.rs:104:1:108:1 | fn j | +| main.rs:850:5:850:6 | m6 | main.rs:116:1:128:1 | mod m6 | +| main.rs:850:5:850:9 | ...::g | main.rs:121:5:127:5 | fn g | +| main.rs:851:5:851:6 | m7 | main.rs:130:1:149:1 | mod m7 | +| main.rs:851:5:851:9 | ...::f | main.rs:141:5:148:5 | fn f | +| main.rs:852:5:852:6 | m8 | main.rs:151:1:205:1 | mod m8 | +| main.rs:852:5:852:9 | ...::g | main.rs:189:5:204:5 | fn g | +| main.rs:853:5:853:6 | m9 | main.rs:207:1:215:1 | mod m9 | +| main.rs:853:5:853:9 | ...::f | main.rs:210:5:214:5 | fn f | +| main.rs:854:5:854:7 | m11 | main.rs:238:1:275:1 | mod m11 | +| main.rs:854:5:854:10 | ...::f | main.rs:243:5:246:5 | fn f | +| main.rs:855:5:855:7 | m15 | main.rs:306:1:375:1 | mod m15 | +| main.rs:855:5:855:10 | ...::f | main.rs:362:5:374:5 | fn f | +| main.rs:856:5:856:7 | m16 | main.rs:377:1:469:1 | mod m16 | +| main.rs:856:5:856:10 | ...::f | main.rs:444:5:468:5 | fn f | +| main.rs:857:5:857:20 | trait_visibility | main.rs:471:1:521:1 | mod trait_visibility | +| main.rs:857:5:857:23 | ...::f | main.rs:498:5:520:5 | fn f | +| main.rs:858:5:858:7 | m17 | main.rs:523:1:553:1 | mod m17 | +| main.rs:858:5:858:10 | ...::f | main.rs:547:5:552:5 | fn f | +| main.rs:859:5:859:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | +| main.rs:859:5:859:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | +| main.rs:860:5:860:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | +| main.rs:860:5:860:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | +| main.rs:861:5:861:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 | +| main.rs:861:5:861:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | +| main.rs:862:5:862:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:863:5:863:12 | my_alias | main.rs:1:1:1:7 | mod my | +| main.rs:863:5:863:22 | ...::nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:864:5:864:7 | m18 | main.rs:555:1:573:1 | mod m18 | +| main.rs:864:5:864:12 | ...::m19 | main.rs:560:5:572:5 | mod m19 | +| main.rs:864:5:864:17 | ...::m20 | main.rs:565:9:571:9 | mod m20 | +| main.rs:864:5:864:20 | ...::g | main.rs:566:13:570:13 | fn g | +| main.rs:865:5:865:7 | m23 | main.rs:602:1:627:1 | mod m23 | +| main.rs:865:5:865:10 | ...::f | main.rs:622:5:626:5 | fn f | +| main.rs:866:5:866:7 | m24 | main.rs:629:1:697:1 | mod m24 | +| main.rs:866:5:866:10 | ...::f | main.rs:683:5:696:5 | fn f | +| main.rs:867:5:867:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:867:5:867:11 | ...::h | main.rs:57:1:76:1 | fn h | +| main.rs:868:5:868:13 | z_changed | main.rs:702:1:702:9 | fn z_changed | +| main.rs:869:5:869:11 | AStruct | main.rs:704:1:704:17 | struct AStruct | +| main.rs:869:5:869:22 | ...::z_on_type | main.rs:708:5:708:17 | fn z_on_type | +| main.rs:870:5:870:11 | AStruct | main.rs:704:1:704:17 | struct AStruct | +| main.rs:871:5:871:29 | impl_with_attribute_macro | main.rs:772:1:791:1 | mod impl_with_attribute_macro | +| main.rs:871:5:871:35 | ...::test | main.rs:787:5:790:5 | fn test | +| main.rs:872:5:872:12 | patterns | main.rs:793:1:834:1 | mod patterns | +| main.rs:872:5:872:18 | ...::test | main.rs:794:5:808:5 | fn test | | my2/mod.rs:4:5:4:11 | println | {EXTERNAL LOCATION} | MacroRules | | my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | | my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | @@ -488,10 +512,10 @@ resolvePath | my2/mod.rs:25:9:25:16 | ...::f | my2/renamed.rs:1:1:1:13 | fn f | | my2/my3/mod.rs:2:5:2:11 | println | {EXTERNAL LOCATION} | MacroRules | | my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g | -| my2/my3/mod.rs:4:5:4:5 | h | main.rs:56:1:75:1 | fn h | +| my2/my3/mod.rs:4:5:4:5 | h | main.rs:57:1:76:1 | fn h | | my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | -| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:827:2 | SourceFile | -| my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:56:1:75:1 | fn h | +| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:873:2 | SourceFile | +| my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:57:1:76:1 | fn h | | my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | | my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g | | my2/my3/mod.rs:10:5:10:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.ql b/rust/ql/test/library-tests/path-resolution/path-resolution.ql index 0fe49a8e386b..f7955929b839 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.ql +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.ql @@ -5,7 +5,7 @@ import TestUtils query predicate mod(Module m) { toBeTested(m) } -query predicate resolvePath(Path p, ItemNode i) { +query predicate resolvePath(PathExt p, ItemNode i) { toBeTested(p) and not p.isFromMacroExpansion() and i = resolvePath(p) diff --git a/rust/ql/test/library-tests/variables/Cfg.expected b/rust/ql/test/library-tests/variables/Cfg.expected index 2e64a70cb5fa..f93586d373be 100644 --- a/rust/ql/test/library-tests/variables/Cfg.expected +++ b/rust/ql/test/library-tests/variables/Cfg.expected @@ -881,1030 +881,1133 @@ edges | main.rs:367:20:367:20 | x | main.rs:365:5:369:9 | match x { ... } | | | main.rs:368:13:368:13 | _ | main.rs:368:18:368:18 | 0 | match | | main.rs:368:18:368:18 | 0 | main.rs:365:5:369:9 | match x { ... } | | -| main.rs:372:1:382:1 | enter fn param_pattern1 | main.rs:373:5:373:6 | a8 | | -| main.rs:372:1:382:1 | exit fn param_pattern1 (normal) | main.rs:372:1:382:1 | exit fn param_pattern1 | | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:12 | ...: ... | match | -| main.rs:373:5:373:12 | ...: ... | main.rs:374:5:377:5 | TuplePat | | -| main.rs:374:5:377:5 | TuplePat | main.rs:375:9:375:10 | b3 | match | -| main.rs:374:5:377:19 | ...: ... | main.rs:379:5:379:18 | ExprStmt | | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | | -| main.rs:375:9:375:10 | b3 | main.rs:376:9:376:10 | c1 | match | -| main.rs:376:9:376:10 | c1 | main.rs:374:5:377:19 | ...: ... | match | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | | -| main.rs:378:9:382:1 | { ... } | main.rs:372:1:382:1 | exit fn param_pattern1 (normal) | | -| main.rs:379:5:379:13 | print_str | main.rs:379:15:379:16 | a8 | | -| main.rs:379:5:379:17 | print_str(...) | main.rs:380:5:380:18 | ExprStmt | | -| main.rs:379:5:379:18 | ExprStmt | main.rs:379:5:379:13 | print_str | | -| main.rs:379:15:379:16 | a8 | main.rs:379:5:379:17 | print_str(...) | | -| main.rs:380:5:380:13 | print_str | main.rs:380:15:380:16 | b3 | | -| main.rs:380:5:380:17 | print_str(...) | main.rs:381:5:381:18 | ExprStmt | | -| main.rs:380:5:380:18 | ExprStmt | main.rs:380:5:380:13 | print_str | | -| main.rs:380:15:380:16 | b3 | main.rs:380:5:380:17 | print_str(...) | | -| main.rs:381:5:381:13 | print_str | main.rs:381:15:381:16 | c1 | | -| main.rs:381:5:381:17 | print_str(...) | main.rs:378:9:382:1 | { ... } | | -| main.rs:381:5:381:18 | ExprStmt | main.rs:381:5:381:13 | print_str | | -| main.rs:381:15:381:16 | c1 | main.rs:381:5:381:17 | print_str(...) | | -| main.rs:384:1:387:1 | enter fn param_pattern2 | main.rs:384:20:384:35 | ...::Left(...) | | -| main.rs:384:1:387:1 | exit fn param_pattern2 (normal) | main.rs:384:1:387:1 | exit fn param_pattern2 | | -| main.rs:384:19:384:64 | ...: Either | main.rs:386:5:386:18 | ExprStmt | | -| main.rs:384:20:384:35 | ...::Left(...) | main.rs:384:33:384:34 | a9 | match | -| main.rs:384:20:384:35 | ...::Left(...) | main.rs:384:39:384:55 | ...::Right(...) | no-match | -| main.rs:384:20:384:55 | ... \| ... | main.rs:384:19:384:64 | ...: Either | match | -| main.rs:384:33:384:34 | a9 | main.rs:384:20:384:55 | ... \| ... | match | -| main.rs:384:33:384:34 | a9 | main.rs:384:33:384:34 | a9 | | -| main.rs:384:39:384:55 | ...::Right(...) | main.rs:384:53:384:54 | a9 | match | -| main.rs:384:53:384:54 | a9 | main.rs:384:20:384:55 | ... \| ... | match | -| main.rs:384:53:384:54 | a9 | main.rs:384:53:384:54 | a9 | | -| main.rs:385:9:387:1 | { ... } | main.rs:384:1:387:1 | exit fn param_pattern2 (normal) | | -| main.rs:386:5:386:13 | print_i64 | main.rs:386:15:386:16 | a9 | | -| main.rs:386:5:386:17 | print_i64(...) | main.rs:385:9:387:1 | { ... } | | -| main.rs:386:5:386:18 | ExprStmt | main.rs:386:5:386:13 | print_i64 | | -| main.rs:386:15:386:16 | a9 | main.rs:386:5:386:17 | print_i64(...) | | -| main.rs:389:1:424:1 | enter fn destruct_assignment | main.rs:390:5:394:18 | let ... = ... | | -| main.rs:389:1:424:1 | exit fn destruct_assignment (normal) | main.rs:389:1:424:1 | exit fn destruct_assignment | | -| main.rs:389:26:424:1 | { ... } | main.rs:389:1:424:1 | exit fn destruct_assignment (normal) | | -| main.rs:390:5:394:18 | let ... = ... | main.rs:394:10:394:10 | 1 | | -| main.rs:390:9:394:5 | TuplePat | main.rs:391:13:391:15 | a10 | match | -| main.rs:391:9:391:15 | mut a10 | main.rs:392:13:392:14 | b4 | match | -| main.rs:391:13:391:15 | a10 | main.rs:391:9:391:15 | mut a10 | | -| main.rs:392:9:392:14 | mut b4 | main.rs:393:13:393:14 | c2 | match | -| main.rs:392:13:392:14 | b4 | main.rs:392:9:392:14 | mut b4 | | -| main.rs:393:9:393:14 | mut c2 | main.rs:395:5:395:19 | ExprStmt | match | -| main.rs:393:13:393:14 | c2 | main.rs:393:9:393:14 | mut c2 | | -| main.rs:394:9:394:17 | TupleExpr | main.rs:390:9:394:5 | TuplePat | | -| main.rs:394:10:394:10 | 1 | main.rs:394:13:394:13 | 2 | | -| main.rs:394:13:394:13 | 2 | main.rs:394:16:394:16 | 3 | | -| main.rs:394:16:394:16 | 3 | main.rs:394:9:394:17 | TupleExpr | | -| main.rs:395:5:395:13 | print_i64 | main.rs:395:15:395:17 | a10 | | -| main.rs:395:5:395:18 | print_i64(...) | main.rs:396:5:396:18 | ExprStmt | | -| main.rs:395:5:395:19 | ExprStmt | main.rs:395:5:395:13 | print_i64 | | -| main.rs:395:15:395:17 | a10 | main.rs:395:5:395:18 | print_i64(...) | | -| main.rs:396:5:396:13 | print_i64 | main.rs:396:15:396:16 | b4 | | -| main.rs:396:5:396:17 | print_i64(...) | main.rs:397:5:397:18 | ExprStmt | | -| main.rs:396:5:396:18 | ExprStmt | main.rs:396:5:396:13 | print_i64 | | -| main.rs:396:15:396:16 | b4 | main.rs:396:5:396:17 | print_i64(...) | | -| main.rs:397:5:397:13 | print_i64 | main.rs:397:15:397:16 | c2 | | -| main.rs:397:5:397:17 | print_i64(...) | main.rs:399:5:407:6 | ExprStmt | | +| main.rs:372:1:381:1 | enter fn match_pattern16 | main.rs:373:5:373:21 | let ... = ... | | +| main.rs:372:1:381:1 | exit fn match_pattern16 (normal) | main.rs:372:1:381:1 | exit fn match_pattern16 | | +| main.rs:372:22:381:1 | { ... } | main.rs:372:1:381:1 | exit fn match_pattern16 (normal) | | +| main.rs:373:5:373:21 | let ... = ... | main.rs:373:13:373:16 | Some | | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | | +| main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | match | +| main.rs:373:13:373:16 | Some | main.rs:373:18:373:19 | 32 | | +| main.rs:373:13:373:20 | Some(...) | main.rs:373:9:373:9 | x | | +| main.rs:373:18:373:19 | 32 | main.rs:373:13:373:20 | Some(...) | | +| main.rs:374:5:380:5 | match x { ... } | main.rs:372:22:381:1 | { ... } | | +| main.rs:374:11:374:11 | x | main.rs:375:9:375:15 | Some(...) | | +| main.rs:375:9:375:15 | Some(...) | main.rs:375:14:375:14 | y | match | +| main.rs:375:9:375:15 | Some(...) | main.rs:379:9:379:9 | _ | no-match | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | | +| main.rs:375:14:375:14 | y | main.rs:377:17:377:20 | Some | match | +| main.rs:376:16:377:23 | [boolean(false)] let ... = ... | main.rs:379:9:379:9 | _ | false | +| main.rs:376:16:377:23 | [boolean(true)] let ... = ... | main.rs:378:16:378:24 | print_i64 | true | +| main.rs:376:20:376:26 | Some(...) | main.rs:376:16:377:23 | [boolean(false)] let ... = ... | no-match | +| main.rs:376:20:376:26 | Some(...) | main.rs:376:25:376:25 | y | match | +| main.rs:376:25:376:25 | y | main.rs:376:16:377:23 | [boolean(true)] let ... = ... | match | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | | +| main.rs:377:17:377:20 | Some | main.rs:377:22:377:22 | y | | +| main.rs:377:17:377:23 | Some(...) | main.rs:376:20:376:26 | Some(...) | | +| main.rs:377:22:377:22 | y | main.rs:377:17:377:23 | Some(...) | | +| main.rs:378:16:378:24 | print_i64 | main.rs:378:26:378:26 | y | | +| main.rs:378:16:378:27 | print_i64(...) | main.rs:374:5:380:5 | match x { ... } | | +| main.rs:378:26:378:26 | y | main.rs:378:16:378:27 | print_i64(...) | | +| main.rs:379:9:379:9 | _ | main.rs:379:14:379:15 | { ... } | match | +| main.rs:379:14:379:15 | { ... } | main.rs:374:5:380:5 | match x { ... } | | +| main.rs:383:1:393:1 | enter fn param_pattern1 | main.rs:384:5:384:6 | a8 | | +| main.rs:383:1:393:1 | exit fn param_pattern1 (normal) | main.rs:383:1:393:1 | exit fn param_pattern1 | | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:12 | ...: ... | match | +| main.rs:384:5:384:12 | ...: ... | main.rs:385:5:388:5 | TuplePat | | +| main.rs:385:5:388:5 | TuplePat | main.rs:386:9:386:10 | b3 | match | +| main.rs:385:5:388:19 | ...: ... | main.rs:390:5:390:18 | ExprStmt | | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | | +| main.rs:386:9:386:10 | b3 | main.rs:387:9:387:10 | c1 | match | +| main.rs:387:9:387:10 | c1 | main.rs:385:5:388:19 | ...: ... | match | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | | +| main.rs:389:9:393:1 | { ... } | main.rs:383:1:393:1 | exit fn param_pattern1 (normal) | | +| main.rs:390:5:390:13 | print_str | main.rs:390:15:390:16 | a8 | | +| main.rs:390:5:390:17 | print_str(...) | main.rs:391:5:391:18 | ExprStmt | | +| main.rs:390:5:390:18 | ExprStmt | main.rs:390:5:390:13 | print_str | | +| main.rs:390:15:390:16 | a8 | main.rs:390:5:390:17 | print_str(...) | | +| main.rs:391:5:391:13 | print_str | main.rs:391:15:391:16 | b3 | | +| main.rs:391:5:391:17 | print_str(...) | main.rs:392:5:392:18 | ExprStmt | | +| main.rs:391:5:391:18 | ExprStmt | main.rs:391:5:391:13 | print_str | | +| main.rs:391:15:391:16 | b3 | main.rs:391:5:391:17 | print_str(...) | | +| main.rs:392:5:392:13 | print_str | main.rs:392:15:392:16 | c1 | | +| main.rs:392:5:392:17 | print_str(...) | main.rs:389:9:393:1 | { ... } | | +| main.rs:392:5:392:18 | ExprStmt | main.rs:392:5:392:13 | print_str | | +| main.rs:392:15:392:16 | c1 | main.rs:392:5:392:17 | print_str(...) | | +| main.rs:395:1:398:1 | enter fn param_pattern2 | main.rs:395:20:395:35 | ...::Left(...) | | +| main.rs:395:1:398:1 | exit fn param_pattern2 (normal) | main.rs:395:1:398:1 | exit fn param_pattern2 | | +| main.rs:395:19:395:64 | ...: Either | main.rs:397:5:397:18 | ExprStmt | | +| main.rs:395:20:395:35 | ...::Left(...) | main.rs:395:33:395:34 | a9 | match | +| main.rs:395:20:395:35 | ...::Left(...) | main.rs:395:39:395:55 | ...::Right(...) | no-match | +| main.rs:395:20:395:55 | ... \| ... | main.rs:395:19:395:64 | ...: Either | match | +| main.rs:395:33:395:34 | a9 | main.rs:395:20:395:55 | ... \| ... | match | +| main.rs:395:33:395:34 | a9 | main.rs:395:33:395:34 | a9 | | +| main.rs:395:39:395:55 | ...::Right(...) | main.rs:395:53:395:54 | a9 | match | +| main.rs:395:53:395:54 | a9 | main.rs:395:20:395:55 | ... \| ... | match | +| main.rs:395:53:395:54 | a9 | main.rs:395:53:395:54 | a9 | | +| main.rs:396:9:398:1 | { ... } | main.rs:395:1:398:1 | exit fn param_pattern2 (normal) | | +| main.rs:397:5:397:13 | print_i64 | main.rs:397:15:397:16 | a9 | | +| main.rs:397:5:397:17 | print_i64(...) | main.rs:396:9:398:1 | { ... } | | | main.rs:397:5:397:18 | ExprStmt | main.rs:397:5:397:13 | print_i64 | | -| main.rs:397:15:397:16 | c2 | main.rs:397:5:397:17 | print_i64(...) | | -| main.rs:399:5:403:5 | TupleExpr | main.rs:404:9:404:11 | a10 | | -| main.rs:399:5:407:5 | ... = ... | main.rs:408:5:408:19 | ExprStmt | | -| main.rs:399:5:407:6 | ExprStmt | main.rs:400:9:400:10 | c2 | | -| main.rs:400:9:400:10 | c2 | main.rs:401:9:401:10 | b4 | | -| main.rs:401:9:401:10 | b4 | main.rs:402:9:402:11 | a10 | | -| main.rs:402:9:402:11 | a10 | main.rs:399:5:403:5 | TupleExpr | | -| main.rs:403:9:407:5 | TupleExpr | main.rs:399:5:407:5 | ... = ... | | -| main.rs:404:9:404:11 | a10 | main.rs:405:9:405:10 | b4 | | -| main.rs:405:9:405:10 | b4 | main.rs:406:9:406:10 | c2 | | -| main.rs:406:9:406:10 | c2 | main.rs:403:9:407:5 | TupleExpr | | -| main.rs:408:5:408:13 | print_i64 | main.rs:408:15:408:17 | a10 | | -| main.rs:408:5:408:18 | print_i64(...) | main.rs:409:5:409:18 | ExprStmt | | -| main.rs:408:5:408:19 | ExprStmt | main.rs:408:5:408:13 | print_i64 | | -| main.rs:408:15:408:17 | a10 | main.rs:408:5:408:18 | print_i64(...) | | -| main.rs:409:5:409:13 | print_i64 | main.rs:409:15:409:16 | b4 | | -| main.rs:409:5:409:17 | print_i64(...) | main.rs:410:5:410:18 | ExprStmt | | -| main.rs:409:5:409:18 | ExprStmt | main.rs:409:5:409:13 | print_i64 | | -| main.rs:409:15:409:16 | b4 | main.rs:409:5:409:17 | print_i64(...) | | -| main.rs:410:5:410:13 | print_i64 | main.rs:410:15:410:16 | c2 | | -| main.rs:410:5:410:17 | print_i64(...) | main.rs:412:5:420:5 | ExprStmt | | -| main.rs:410:5:410:18 | ExprStmt | main.rs:410:5:410:13 | print_i64 | | -| main.rs:410:15:410:16 | c2 | main.rs:410:5:410:17 | print_i64(...) | | -| main.rs:412:5:420:5 | ExprStmt | main.rs:412:12:412:12 | 4 | | -| main.rs:412:5:420:5 | match ... { ... } | main.rs:422:5:422:19 | ExprStmt | | -| main.rs:412:11:412:16 | TupleExpr | main.rs:413:9:416:9 | TuplePat | | -| main.rs:412:12:412:12 | 4 | main.rs:412:15:412:15 | 5 | | -| main.rs:412:15:412:15 | 5 | main.rs:412:11:412:16 | TupleExpr | | -| main.rs:413:9:416:9 | TuplePat | main.rs:414:13:414:15 | a10 | match | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | | -| main.rs:414:13:414:15 | a10 | main.rs:415:13:415:14 | b4 | match | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | | -| main.rs:415:13:415:14 | b4 | main.rs:417:13:417:27 | ExprStmt | match | -| main.rs:416:14:419:9 | { ... } | main.rs:412:5:420:5 | match ... { ... } | | -| main.rs:417:13:417:21 | print_i64 | main.rs:417:23:417:25 | a10 | | -| main.rs:417:13:417:26 | print_i64(...) | main.rs:418:13:418:26 | ExprStmt | | -| main.rs:417:13:417:27 | ExprStmt | main.rs:417:13:417:21 | print_i64 | | -| main.rs:417:23:417:25 | a10 | main.rs:417:13:417:26 | print_i64(...) | | -| main.rs:418:13:418:21 | print_i64 | main.rs:418:23:418:24 | b4 | | -| main.rs:418:13:418:25 | print_i64(...) | main.rs:416:14:419:9 | { ... } | | -| main.rs:418:13:418:26 | ExprStmt | main.rs:418:13:418:21 | print_i64 | | -| main.rs:418:23:418:24 | b4 | main.rs:418:13:418:25 | print_i64(...) | | -| main.rs:422:5:422:13 | print_i64 | main.rs:422:15:422:17 | a10 | | -| main.rs:422:5:422:18 | print_i64(...) | main.rs:423:5:423:18 | ExprStmt | | -| main.rs:422:5:422:19 | ExprStmt | main.rs:422:5:422:13 | print_i64 | | -| main.rs:422:15:422:17 | a10 | main.rs:422:5:422:18 | print_i64(...) | | -| main.rs:423:5:423:13 | print_i64 | main.rs:423:15:423:16 | b4 | | -| main.rs:423:5:423:17 | print_i64(...) | main.rs:389:26:424:1 | { ... } | | -| main.rs:423:5:423:18 | ExprStmt | main.rs:423:5:423:13 | print_i64 | | -| main.rs:423:15:423:16 | b4 | main.rs:423:5:423:17 | print_i64(...) | | -| main.rs:426:1:441:1 | enter fn closure_variable | main.rs:427:5:429:10 | let ... = ... | | -| main.rs:426:1:441:1 | exit fn closure_variable (normal) | main.rs:426:1:441:1 | exit fn closure_variable | | -| main.rs:426:23:441:1 | { ... } | main.rs:426:1:441:1 | exit fn closure_variable (normal) | | -| main.rs:427:5:429:10 | let ... = ... | main.rs:428:9:429:9 | \|...\| x | | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | | -| main.rs:427:9:427:23 | example_closure | main.rs:430:5:431:27 | let ... = ... | match | -| main.rs:428:9:429:9 | \|...\| x | main.rs:427:9:427:23 | example_closure | | -| main.rs:428:9:429:9 | enter \|...\| x | main.rs:428:10:428:10 | x | | -| main.rs:428:9:429:9 | exit \|...\| x (normal) | main.rs:428:9:429:9 | exit \|...\| x | | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:15 | ...: i64 | match | -| main.rs:428:10:428:15 | ...: i64 | main.rs:429:9:429:9 | x | | -| main.rs:429:9:429:9 | x | main.rs:428:9:429:9 | exit \|...\| x (normal) | | -| main.rs:430:5:431:27 | let ... = ... | main.rs:431:9:431:23 | example_closure | | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | | -| main.rs:430:9:430:10 | n1 | main.rs:432:5:432:18 | ExprStmt | match | -| main.rs:431:9:431:23 | example_closure | main.rs:431:25:431:25 | 5 | | -| main.rs:431:9:431:26 | example_closure(...) | main.rs:430:9:430:10 | n1 | | -| main.rs:431:25:431:25 | 5 | main.rs:431:9:431:26 | example_closure(...) | | -| main.rs:432:5:432:13 | print_i64 | main.rs:432:15:432:16 | n1 | | -| main.rs:432:5:432:17 | print_i64(...) | main.rs:434:5:434:25 | ExprStmt | | -| main.rs:432:5:432:18 | ExprStmt | main.rs:432:5:432:13 | print_i64 | | -| main.rs:432:15:432:16 | n1 | main.rs:432:5:432:17 | print_i64(...) | | -| main.rs:434:5:434:22 | immutable_variable | main.rs:434:5:434:24 | immutable_variable(...) | | -| main.rs:434:5:434:24 | immutable_variable(...) | main.rs:435:5:437:10 | let ... = ... | | -| main.rs:434:5:434:25 | ExprStmt | main.rs:434:5:434:22 | immutable_variable | | -| main.rs:435:5:437:10 | let ... = ... | main.rs:436:5:437:9 | \|...\| x | | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | | -| main.rs:435:9:435:26 | immutable_variable | main.rs:438:5:439:30 | let ... = ... | match | -| main.rs:436:5:437:9 | \|...\| x | main.rs:435:9:435:26 | immutable_variable | | -| main.rs:436:5:437:9 | enter \|...\| x | main.rs:436:6:436:6 | x | | -| main.rs:436:5:437:9 | exit \|...\| x (normal) | main.rs:436:5:437:9 | exit \|...\| x | | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:11 | ...: i64 | match | -| main.rs:436:6:436:11 | ...: i64 | main.rs:437:9:437:9 | x | | -| main.rs:437:9:437:9 | x | main.rs:436:5:437:9 | exit \|...\| x (normal) | | -| main.rs:438:5:439:30 | let ... = ... | main.rs:439:9:439:26 | immutable_variable | | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | | -| main.rs:438:9:438:10 | n2 | main.rs:440:5:440:18 | ExprStmt | match | -| main.rs:439:9:439:26 | immutable_variable | main.rs:439:28:439:28 | 6 | | -| main.rs:439:9:439:29 | immutable_variable(...) | main.rs:438:9:438:10 | n2 | | -| main.rs:439:28:439:28 | 6 | main.rs:439:9:439:29 | immutable_variable(...) | | -| main.rs:440:5:440:13 | print_i64 | main.rs:440:15:440:16 | n2 | | -| main.rs:440:5:440:17 | print_i64(...) | main.rs:426:23:441:1 | { ... } | | -| main.rs:440:5:440:18 | ExprStmt | main.rs:440:5:440:13 | print_i64 | | -| main.rs:440:15:440:16 | n2 | main.rs:440:5:440:17 | print_i64(...) | | -| main.rs:443:1:473:1 | enter fn nested_function | main.rs:445:5:447:10 | let ... = ... | | -| main.rs:443:1:473:1 | exit fn nested_function (normal) | main.rs:443:1:473:1 | exit fn nested_function | | -| main.rs:443:22:473:1 | { ... } | main.rs:443:1:473:1 | exit fn nested_function (normal) | | -| main.rs:445:5:447:10 | let ... = ... | main.rs:446:9:447:9 | \|...\| x | | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | | -| main.rs:445:9:445:9 | f | main.rs:448:5:448:20 | ExprStmt | match | -| main.rs:446:9:447:9 | \|...\| x | main.rs:445:9:445:9 | f | | -| main.rs:446:9:447:9 | enter \|...\| x | main.rs:446:10:446:10 | x | | -| main.rs:446:9:447:9 | exit \|...\| x (normal) | main.rs:446:9:447:9 | exit \|...\| x | | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:15 | ...: i64 | match | -| main.rs:446:10:446:15 | ...: i64 | main.rs:447:9:447:9 | x | | -| main.rs:447:9:447:9 | x | main.rs:446:9:447:9 | exit \|...\| x (normal) | | -| main.rs:448:5:448:13 | print_i64 | main.rs:448:15:448:15 | f | | -| main.rs:448:5:448:19 | print_i64(...) | main.rs:450:5:453:5 | fn f | | -| main.rs:448:5:448:20 | ExprStmt | main.rs:448:5:448:13 | print_i64 | | -| main.rs:448:15:448:15 | f | main.rs:448:17:448:17 | 1 | | -| main.rs:448:15:448:18 | f(...) | main.rs:448:5:448:19 | print_i64(...) | | -| main.rs:448:17:448:17 | 1 | main.rs:448:15:448:18 | f(...) | | -| main.rs:450:5:453:5 | enter fn f | main.rs:450:10:450:10 | x | | -| main.rs:450:5:453:5 | exit fn f (normal) | main.rs:450:5:453:5 | exit fn f | | -| main.rs:450:5:453:5 | fn f | main.rs:455:5:455:20 | ExprStmt | | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:15 | ...: i64 | match | -| main.rs:450:10:450:15 | ...: i64 | main.rs:452:9:452:9 | x | | -| main.rs:451:5:453:5 | { ... } | main.rs:450:5:453:5 | exit fn f (normal) | | -| main.rs:452:9:452:9 | x | main.rs:452:13:452:13 | 1 | | -| main.rs:452:9:452:13 | ... + ... | main.rs:451:5:453:5 | { ... } | | -| main.rs:452:13:452:13 | 1 | main.rs:452:9:452:13 | ... + ... | | -| main.rs:455:5:455:13 | print_i64 | main.rs:455:15:455:15 | f | | -| main.rs:455:5:455:19 | print_i64(...) | main.rs:458:9:458:24 | ExprStmt | | -| main.rs:455:5:455:20 | ExprStmt | main.rs:455:5:455:13 | print_i64 | | -| main.rs:455:15:455:15 | f | main.rs:455:17:455:17 | 2 | | -| main.rs:455:15:455:18 | f(...) | main.rs:455:5:455:19 | print_i64(...) | | -| main.rs:455:17:455:17 | 2 | main.rs:455:15:455:18 | f(...) | | -| main.rs:457:5:472:5 | { ... } | main.rs:443:22:473:1 | { ... } | | -| main.rs:458:9:458:17 | print_i64 | main.rs:458:19:458:19 | f | | -| main.rs:458:9:458:23 | print_i64(...) | main.rs:459:9:462:9 | fn f | | -| main.rs:458:9:458:24 | ExprStmt | main.rs:458:9:458:17 | print_i64 | | -| main.rs:458:19:458:19 | f | main.rs:458:21:458:21 | 3 | | -| main.rs:458:19:458:22 | f(...) | main.rs:458:9:458:23 | print_i64(...) | | -| main.rs:458:21:458:21 | 3 | main.rs:458:19:458:22 | f(...) | | -| main.rs:459:9:462:9 | enter fn f | main.rs:459:14:459:14 | x | | -| main.rs:459:9:462:9 | exit fn f (normal) | main.rs:459:9:462:9 | exit fn f | | -| main.rs:459:9:462:9 | fn f | main.rs:464:9:466:9 | ExprStmt | | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:19 | ...: i64 | match | -| main.rs:459:14:459:19 | ...: i64 | main.rs:461:13:461:13 | 2 | | -| main.rs:460:9:462:9 | { ... } | main.rs:459:9:462:9 | exit fn f (normal) | | -| main.rs:461:13:461:13 | 2 | main.rs:461:17:461:17 | x | | -| main.rs:461:13:461:17 | ... * ... | main.rs:460:9:462:9 | { ... } | | -| main.rs:461:17:461:17 | x | main.rs:461:13:461:17 | ... * ... | | -| main.rs:464:9:466:9 | ExprStmt | main.rs:465:13:465:28 | ExprStmt | | -| main.rs:464:9:466:9 | { ... } | main.rs:468:9:470:14 | let ... = ... | | -| main.rs:465:13:465:21 | print_i64 | main.rs:465:23:465:23 | f | | -| main.rs:465:13:465:27 | print_i64(...) | main.rs:464:9:466:9 | { ... } | | -| main.rs:465:13:465:28 | ExprStmt | main.rs:465:13:465:21 | print_i64 | | -| main.rs:465:23:465:23 | f | main.rs:465:25:465:25 | 4 | | -| main.rs:465:23:465:26 | f(...) | main.rs:465:13:465:27 | print_i64(...) | | -| main.rs:465:25:465:25 | 4 | main.rs:465:23:465:26 | f(...) | | -| main.rs:468:9:470:14 | let ... = ... | main.rs:469:13:470:13 | \|...\| x | | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | | -| main.rs:468:13:468:13 | f | main.rs:471:9:471:24 | ExprStmt | match | -| main.rs:469:13:470:13 | \|...\| x | main.rs:468:13:468:13 | f | | -| main.rs:469:13:470:13 | enter \|...\| x | main.rs:469:14:469:14 | x | | -| main.rs:469:13:470:13 | exit \|...\| x (normal) | main.rs:469:13:470:13 | exit \|...\| x | | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:19 | ...: i64 | match | -| main.rs:469:14:469:19 | ...: i64 | main.rs:470:13:470:13 | x | | -| main.rs:470:13:470:13 | x | main.rs:469:13:470:13 | exit \|...\| x (normal) | | -| main.rs:471:9:471:17 | print_i64 | main.rs:471:19:471:19 | f | | -| main.rs:471:9:471:23 | print_i64(...) | main.rs:457:5:472:5 | { ... } | | -| main.rs:471:9:471:24 | ExprStmt | main.rs:471:9:471:17 | print_i64 | | -| main.rs:471:19:471:19 | f | main.rs:471:21:471:21 | 5 | | -| main.rs:471:19:471:22 | f(...) | main.rs:471:9:471:23 | print_i64(...) | | -| main.rs:471:21:471:21 | 5 | main.rs:471:19:471:22 | f(...) | | -| main.rs:475:1:482:1 | enter fn for_variable | main.rs:476:5:476:42 | let ... = ... | | -| main.rs:475:1:482:1 | exit fn for_variable (normal) | main.rs:475:1:482:1 | exit fn for_variable | | -| main.rs:475:19:482:1 | { ... } | main.rs:475:1:482:1 | exit fn for_variable (normal) | | -| main.rs:476:5:476:42 | let ... = ... | main.rs:476:15:476:22 | "apples" | | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | | -| main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | match | -| main.rs:476:13:476:41 | &... | main.rs:476:9:476:9 | v | | -| main.rs:476:14:476:41 | [...] | main.rs:476:13:476:41 | &... | | -| main.rs:476:15:476:22 | "apples" | main.rs:476:25:476:30 | "cake" | | -| main.rs:476:25:476:30 | "cake" | main.rs:476:33:476:40 | "coffee" | | -| main.rs:476:33:476:40 | "coffee" | main.rs:476:14:476:41 | [...] | | -| main.rs:478:5:481:5 | for ... in ... { ... } | main.rs:475:19:482:1 | { ... } | | -| main.rs:478:9:478:12 | text | main.rs:478:5:481:5 | for ... in ... { ... } | no-match | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | | -| main.rs:478:9:478:12 | text | main.rs:480:9:480:24 | ExprStmt | match | -| main.rs:479:12:479:12 | v | main.rs:478:9:478:12 | text | | -| main.rs:479:14:481:5 | { ... } | main.rs:478:9:478:12 | text | | -| main.rs:480:9:480:17 | print_str | main.rs:480:19:480:22 | text | | -| main.rs:480:9:480:23 | print_str(...) | main.rs:479:14:481:5 | { ... } | | -| main.rs:480:9:480:24 | ExprStmt | main.rs:480:9:480:17 | print_str | | -| main.rs:480:19:480:22 | text | main.rs:480:9:480:23 | print_str(...) | | -| main.rs:484:1:490:1 | enter fn add_assign | main.rs:485:5:485:18 | let ... = 0 | | -| main.rs:484:1:490:1 | exit fn add_assign (normal) | main.rs:484:1:490:1 | exit fn add_assign | | -| main.rs:484:17:490:1 | { ... } | main.rs:484:1:490:1 | exit fn add_assign (normal) | | -| main.rs:485:5:485:18 | let ... = 0 | main.rs:485:17:485:17 | 0 | | -| main.rs:485:9:485:13 | mut a | main.rs:486:5:486:11 | ExprStmt | match | -| main.rs:485:13:485:13 | a | main.rs:485:9:485:13 | mut a | | -| main.rs:485:17:485:17 | 0 | main.rs:485:13:485:13 | a | | -| main.rs:486:5:486:5 | a | main.rs:486:10:486:10 | 1 | | -| main.rs:486:5:486:10 | ... += ... | main.rs:487:5:487:17 | ExprStmt | | -| main.rs:486:5:486:11 | ExprStmt | main.rs:486:5:486:5 | a | | -| main.rs:486:10:486:10 | 1 | main.rs:486:5:486:10 | ... += ... | | -| main.rs:487:5:487:13 | print_i64 | main.rs:487:15:487:15 | a | | -| main.rs:487:5:487:16 | print_i64(...) | main.rs:488:5:488:28 | ExprStmt | | -| main.rs:487:5:487:17 | ExprStmt | main.rs:487:5:487:13 | print_i64 | | -| main.rs:487:15:487:15 | a | main.rs:487:5:487:16 | print_i64(...) | | -| main.rs:488:5:488:27 | ... .add_assign(...) | main.rs:489:5:489:17 | ExprStmt | | -| main.rs:488:5:488:28 | ExprStmt | main.rs:488:11:488:11 | a | | -| main.rs:488:6:488:11 | &mut a | main.rs:488:25:488:26 | 10 | | -| main.rs:488:11:488:11 | a | main.rs:488:6:488:11 | &mut a | | -| main.rs:488:25:488:26 | 10 | main.rs:488:5:488:27 | ... .add_assign(...) | | -| main.rs:489:5:489:13 | print_i64 | main.rs:489:15:489:15 | a | | -| main.rs:489:5:489:16 | print_i64(...) | main.rs:484:17:490:1 | { ... } | | -| main.rs:489:5:489:17 | ExprStmt | main.rs:489:5:489:13 | print_i64 | | -| main.rs:489:15:489:15 | a | main.rs:489:5:489:16 | print_i64(...) | | -| main.rs:492:1:498:1 | enter fn mutate | main.rs:493:5:493:18 | let ... = 1 | | -| main.rs:492:1:498:1 | exit fn mutate (normal) | main.rs:492:1:498:1 | exit fn mutate | | -| main.rs:492:13:498:1 | { ... } | main.rs:492:1:498:1 | exit fn mutate (normal) | | -| main.rs:493:5:493:18 | let ... = 1 | main.rs:493:17:493:17 | 1 | | -| main.rs:493:9:493:13 | mut i | main.rs:494:5:495:15 | let ... = ... | match | -| main.rs:493:13:493:13 | i | main.rs:493:9:493:13 | mut i | | -| main.rs:493:17:493:17 | 1 | main.rs:493:13:493:13 | i | | -| main.rs:494:5:495:15 | let ... = ... | main.rs:495:14:495:14 | i | | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | | -| main.rs:494:9:494:13 | ref_i | main.rs:496:5:496:15 | ExprStmt | match | -| main.rs:495:9:495:14 | &mut i | main.rs:494:9:494:13 | ref_i | | -| main.rs:495:14:495:14 | i | main.rs:495:9:495:14 | &mut i | | -| main.rs:496:5:496:10 | * ... | main.rs:496:14:496:14 | 2 | | -| main.rs:496:5:496:14 | ... = ... | main.rs:497:5:497:17 | ExprStmt | | -| main.rs:496:5:496:15 | ExprStmt | main.rs:496:6:496:10 | ref_i | | -| main.rs:496:6:496:10 | ref_i | main.rs:496:5:496:10 | * ... | | -| main.rs:496:14:496:14 | 2 | main.rs:496:5:496:14 | ... = ... | | -| main.rs:497:5:497:13 | print_i64 | main.rs:497:15:497:15 | i | | -| main.rs:497:5:497:16 | print_i64(...) | main.rs:492:13:498:1 | { ... } | | -| main.rs:497:5:497:17 | ExprStmt | main.rs:497:5:497:13 | print_i64 | | -| main.rs:497:15:497:15 | i | main.rs:497:5:497:16 | print_i64(...) | | -| main.rs:500:1:505:1 | enter fn mutate_param | main.rs:500:17:500:17 | x | | -| main.rs:500:1:505:1 | exit fn mutate_param (normal) | main.rs:500:1:505:1 | exit fn mutate_param | | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:27 | ...: ... | match | -| main.rs:500:17:500:27 | ...: ... | main.rs:501:5:503:11 | ExprStmt | | -| main.rs:501:5:501:6 | * ... | main.rs:502:10:502:10 | x | | -| main.rs:501:5:503:10 | ... = ... | main.rs:504:5:504:13 | ExprStmt | | -| main.rs:501:5:503:11 | ExprStmt | main.rs:501:6:501:6 | x | | -| main.rs:501:6:501:6 | x | main.rs:501:5:501:6 | * ... | | -| main.rs:502:9:502:10 | * ... | main.rs:503:10:503:10 | x | | -| main.rs:502:9:503:10 | ... + ... | main.rs:501:5:503:10 | ... = ... | | -| main.rs:502:10:502:10 | x | main.rs:502:9:502:10 | * ... | | -| main.rs:503:9:503:10 | * ... | main.rs:502:9:503:10 | ... + ... | | -| main.rs:503:10:503:10 | x | main.rs:503:9:503:10 | * ... | | -| main.rs:504:5:504:12 | return x | main.rs:500:1:505:1 | exit fn mutate_param (normal) | return | -| main.rs:504:5:504:13 | ExprStmt | main.rs:504:12:504:12 | x | | -| main.rs:504:12:504:12 | x | main.rs:504:5:504:12 | return x | | -| main.rs:507:1:513:1 | enter fn mutate_param2 | main.rs:507:22:507:22 | x | | -| main.rs:507:1:513:1 | exit fn mutate_param2 (normal) | main.rs:507:1:513:1 | exit fn mutate_param2 | | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:35 | ...: ... | match | -| main.rs:507:22:507:35 | ...: ... | main.rs:507:38:507:38 | y | | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:56 | ...: ... | match | -| main.rs:507:38:507:56 | ...: ... | main.rs:508:5:510:11 | ExprStmt | | -| main.rs:507:59:513:1 | { ... } | main.rs:507:1:513:1 | exit fn mutate_param2 (normal) | | -| main.rs:508:5:508:6 | * ... | main.rs:509:10:509:10 | x | | -| main.rs:508:5:510:10 | ... = ... | main.rs:511:5:512:10 | ExprStmt | | -| main.rs:508:5:510:11 | ExprStmt | main.rs:508:6:508:6 | x | | -| main.rs:508:6:508:6 | x | main.rs:508:5:508:6 | * ... | | -| main.rs:509:9:509:10 | * ... | main.rs:510:10:510:10 | x | | -| main.rs:509:9:510:10 | ... + ... | main.rs:508:5:510:10 | ... = ... | | -| main.rs:509:10:509:10 | x | main.rs:509:9:509:10 | * ... | | -| main.rs:510:9:510:10 | * ... | main.rs:509:9:510:10 | ... + ... | | -| main.rs:510:10:510:10 | x | main.rs:510:9:510:10 | * ... | | -| main.rs:511:5:511:6 | * ... | main.rs:512:9:512:9 | x | | -| main.rs:511:5:512:9 | ... = ... | main.rs:507:59:513:1 | { ... } | | -| main.rs:511:5:512:10 | ExprStmt | main.rs:511:6:511:6 | y | | -| main.rs:511:6:511:6 | y | main.rs:511:5:511:6 | * ... | | -| main.rs:512:9:512:9 | x | main.rs:511:5:512:9 | ... = ... | | -| main.rs:515:1:535:1 | enter fn mutate_arg | main.rs:516:5:516:18 | let ... = 2 | | -| main.rs:515:1:535:1 | exit fn mutate_arg (normal) | main.rs:515:1:535:1 | exit fn mutate_arg | | -| main.rs:515:17:535:1 | { ... } | main.rs:515:1:535:1 | exit fn mutate_arg (normal) | | -| main.rs:516:5:516:18 | let ... = 2 | main.rs:516:17:516:17 | 2 | | -| main.rs:516:9:516:13 | mut x | main.rs:517:5:518:29 | let ... = ... | match | -| main.rs:516:13:516:13 | x | main.rs:516:9:516:13 | mut x | | -| main.rs:516:17:516:17 | 2 | main.rs:516:13:516:13 | x | | -| main.rs:517:5:518:29 | let ... = ... | main.rs:518:9:518:20 | mutate_param | | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | | -| main.rs:517:9:517:9 | y | main.rs:519:5:519:12 | ExprStmt | match | -| main.rs:518:9:518:20 | mutate_param | main.rs:518:27:518:27 | x | | -| main.rs:518:9:518:28 | mutate_param(...) | main.rs:517:9:517:9 | y | | -| main.rs:518:22:518:27 | &mut x | main.rs:518:9:518:28 | mutate_param(...) | | -| main.rs:518:27:518:27 | x | main.rs:518:22:518:27 | &mut x | | -| main.rs:519:5:519:6 | * ... | main.rs:519:10:519:11 | 10 | | -| main.rs:519:5:519:11 | ... = ... | main.rs:522:5:522:17 | ExprStmt | | -| main.rs:519:5:519:12 | ExprStmt | main.rs:519:6:519:6 | y | | -| main.rs:519:6:519:6 | y | main.rs:519:5:519:6 | * ... | | -| main.rs:519:10:519:11 | 10 | main.rs:519:5:519:11 | ... = ... | | -| main.rs:522:5:522:13 | print_i64 | main.rs:522:15:522:15 | x | | -| main.rs:522:5:522:16 | print_i64(...) | main.rs:524:5:524:18 | let ... = 4 | | -| main.rs:522:5:522:17 | ExprStmt | main.rs:522:5:522:13 | print_i64 | | -| main.rs:522:15:522:15 | x | main.rs:522:5:522:16 | print_i64(...) | | -| main.rs:524:5:524:18 | let ... = 4 | main.rs:524:17:524:17 | 4 | | -| main.rs:524:9:524:13 | mut z | main.rs:525:5:526:20 | let ... = ... | match | -| main.rs:524:13:524:13 | z | main.rs:524:9:524:13 | mut z | | -| main.rs:524:17:524:17 | 4 | main.rs:524:13:524:13 | z | | -| main.rs:525:5:526:20 | let ... = ... | main.rs:526:19:526:19 | x | | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | | -| main.rs:525:9:525:9 | w | main.rs:527:5:530:6 | ExprStmt | match | -| main.rs:526:9:526:19 | &mut ... | main.rs:525:9:525:9 | w | | -| main.rs:526:14:526:19 | &mut x | main.rs:526:9:526:19 | &mut ... | | -| main.rs:526:19:526:19 | x | main.rs:526:14:526:19 | &mut x | | -| main.rs:527:5:527:17 | mutate_param2 | main.rs:528:14:528:14 | z | | -| main.rs:527:5:530:5 | mutate_param2(...) | main.rs:531:5:531:13 | ExprStmt | | -| main.rs:527:5:530:6 | ExprStmt | main.rs:527:5:527:17 | mutate_param2 | | -| main.rs:528:9:528:14 | &mut z | main.rs:529:9:529:9 | w | | -| main.rs:528:14:528:14 | z | main.rs:528:9:528:14 | &mut z | | -| main.rs:529:9:529:9 | w | main.rs:527:5:530:5 | mutate_param2(...) | | -| main.rs:531:5:531:7 | * ... | main.rs:531:11:531:12 | 11 | | -| main.rs:531:5:531:12 | ... = ... | main.rs:534:5:534:17 | ExprStmt | | -| main.rs:531:5:531:13 | ExprStmt | main.rs:531:7:531:7 | w | | -| main.rs:531:6:531:7 | * ... | main.rs:531:5:531:7 | * ... | | -| main.rs:531:7:531:7 | w | main.rs:531:6:531:7 | * ... | | -| main.rs:531:11:531:12 | 11 | main.rs:531:5:531:12 | ... = ... | | -| main.rs:534:5:534:13 | print_i64 | main.rs:534:15:534:15 | z | | -| main.rs:534:5:534:16 | print_i64(...) | main.rs:515:17:535:1 | { ... } | | -| main.rs:534:5:534:17 | ExprStmt | main.rs:534:5:534:13 | print_i64 | | -| main.rs:534:15:534:15 | z | main.rs:534:5:534:16 | print_i64(...) | | -| main.rs:537:1:543:1 | enter fn alias | main.rs:538:5:538:18 | let ... = 1 | | -| main.rs:537:1:543:1 | exit fn alias (normal) | main.rs:537:1:543:1 | exit fn alias | | -| main.rs:537:12:543:1 | { ... } | main.rs:537:1:543:1 | exit fn alias (normal) | | -| main.rs:538:5:538:18 | let ... = 1 | main.rs:538:17:538:17 | 1 | | -| main.rs:538:9:538:13 | mut x | main.rs:539:5:540:15 | let ... = ... | match | -| main.rs:538:13:538:13 | x | main.rs:538:9:538:13 | mut x | | -| main.rs:538:17:538:17 | 1 | main.rs:538:13:538:13 | x | | -| main.rs:539:5:540:15 | let ... = ... | main.rs:540:14:540:14 | x | | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | | -| main.rs:539:9:539:9 | y | main.rs:541:5:541:11 | ExprStmt | match | -| main.rs:540:9:540:14 | &mut x | main.rs:539:9:539:9 | y | | -| main.rs:540:14:540:14 | x | main.rs:540:9:540:14 | &mut x | | -| main.rs:541:5:541:6 | * ... | main.rs:541:10:541:10 | 2 | | -| main.rs:541:5:541:10 | ... = ... | main.rs:542:5:542:17 | ExprStmt | | -| main.rs:541:5:541:11 | ExprStmt | main.rs:541:6:541:6 | y | | -| main.rs:541:6:541:6 | y | main.rs:541:5:541:6 | * ... | | -| main.rs:541:10:541:10 | 2 | main.rs:541:5:541:10 | ... = ... | | -| main.rs:542:5:542:13 | print_i64 | main.rs:542:15:542:15 | x | | -| main.rs:542:5:542:16 | print_i64(...) | main.rs:537:12:543:1 | { ... } | | -| main.rs:542:5:542:17 | ExprStmt | main.rs:542:5:542:13 | print_i64 | | -| main.rs:542:15:542:15 | x | main.rs:542:5:542:16 | print_i64(...) | | -| main.rs:545:1:554:1 | enter fn capture_immut | main.rs:546:5:546:16 | let ... = 100 | | -| main.rs:545:1:554:1 | exit fn capture_immut (normal) | main.rs:545:1:554:1 | exit fn capture_immut | | -| main.rs:545:20:554:1 | { ... } | main.rs:545:1:554:1 | exit fn capture_immut (normal) | | -| main.rs:546:5:546:16 | let ... = 100 | main.rs:546:13:546:15 | 100 | | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | | -| main.rs:546:9:546:9 | x | main.rs:549:5:551:6 | let ... = ... | match | -| main.rs:546:13:546:15 | 100 | main.rs:546:9:546:9 | x | | -| main.rs:549:5:551:6 | let ... = ... | main.rs:549:15:551:5 | \|...\| ... | | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | | -| main.rs:549:9:549:11 | cap | main.rs:552:5:552:10 | ExprStmt | match | -| main.rs:549:15:551:5 | \|...\| ... | main.rs:549:9:549:11 | cap | | -| main.rs:549:15:551:5 | enter \|...\| ... | main.rs:550:9:550:21 | ExprStmt | | -| main.rs:549:15:551:5 | exit \|...\| ... (normal) | main.rs:549:15:551:5 | exit \|...\| ... | | -| main.rs:549:18:551:5 | { ... } | main.rs:549:15:551:5 | exit \|...\| ... (normal) | | -| main.rs:550:9:550:17 | print_i64 | main.rs:550:19:550:19 | x | | -| main.rs:550:9:550:20 | print_i64(...) | main.rs:549:18:551:5 | { ... } | | -| main.rs:550:9:550:21 | ExprStmt | main.rs:550:9:550:17 | print_i64 | | -| main.rs:550:19:550:19 | x | main.rs:550:9:550:20 | print_i64(...) | | -| main.rs:552:5:552:7 | cap | main.rs:552:5:552:9 | cap(...) | | -| main.rs:552:5:552:9 | cap(...) | main.rs:553:5:553:17 | ExprStmt | | -| main.rs:552:5:552:10 | ExprStmt | main.rs:552:5:552:7 | cap | | +| main.rs:397:15:397:16 | a9 | main.rs:397:5:397:17 | print_i64(...) | | +| main.rs:400:1:435:1 | enter fn destruct_assignment | main.rs:401:5:405:18 | let ... = ... | | +| main.rs:400:1:435:1 | exit fn destruct_assignment (normal) | main.rs:400:1:435:1 | exit fn destruct_assignment | | +| main.rs:400:26:435:1 | { ... } | main.rs:400:1:435:1 | exit fn destruct_assignment (normal) | | +| main.rs:401:5:405:18 | let ... = ... | main.rs:405:10:405:10 | 1 | | +| main.rs:401:9:405:5 | TuplePat | main.rs:402:13:402:15 | a10 | match | +| main.rs:402:9:402:15 | mut a10 | main.rs:403:13:403:14 | b4 | match | +| main.rs:402:13:402:15 | a10 | main.rs:402:9:402:15 | mut a10 | | +| main.rs:403:9:403:14 | mut b4 | main.rs:404:13:404:14 | c2 | match | +| main.rs:403:13:403:14 | b4 | main.rs:403:9:403:14 | mut b4 | | +| main.rs:404:9:404:14 | mut c2 | main.rs:406:5:406:19 | ExprStmt | match | +| main.rs:404:13:404:14 | c2 | main.rs:404:9:404:14 | mut c2 | | +| main.rs:405:9:405:17 | TupleExpr | main.rs:401:9:405:5 | TuplePat | | +| main.rs:405:10:405:10 | 1 | main.rs:405:13:405:13 | 2 | | +| main.rs:405:13:405:13 | 2 | main.rs:405:16:405:16 | 3 | | +| main.rs:405:16:405:16 | 3 | main.rs:405:9:405:17 | TupleExpr | | +| main.rs:406:5:406:13 | print_i64 | main.rs:406:15:406:17 | a10 | | +| main.rs:406:5:406:18 | print_i64(...) | main.rs:407:5:407:18 | ExprStmt | | +| main.rs:406:5:406:19 | ExprStmt | main.rs:406:5:406:13 | print_i64 | | +| main.rs:406:15:406:17 | a10 | main.rs:406:5:406:18 | print_i64(...) | | +| main.rs:407:5:407:13 | print_i64 | main.rs:407:15:407:16 | b4 | | +| main.rs:407:5:407:17 | print_i64(...) | main.rs:408:5:408:18 | ExprStmt | | +| main.rs:407:5:407:18 | ExprStmt | main.rs:407:5:407:13 | print_i64 | | +| main.rs:407:15:407:16 | b4 | main.rs:407:5:407:17 | print_i64(...) | | +| main.rs:408:5:408:13 | print_i64 | main.rs:408:15:408:16 | c2 | | +| main.rs:408:5:408:17 | print_i64(...) | main.rs:410:5:418:6 | ExprStmt | | +| main.rs:408:5:408:18 | ExprStmt | main.rs:408:5:408:13 | print_i64 | | +| main.rs:408:15:408:16 | c2 | main.rs:408:5:408:17 | print_i64(...) | | +| main.rs:410:5:414:5 | TupleExpr | main.rs:415:9:415:11 | a10 | | +| main.rs:410:5:418:5 | ... = ... | main.rs:419:5:419:19 | ExprStmt | | +| main.rs:410:5:418:6 | ExprStmt | main.rs:411:9:411:10 | c2 | | +| main.rs:411:9:411:10 | c2 | main.rs:412:9:412:10 | b4 | | +| main.rs:412:9:412:10 | b4 | main.rs:413:9:413:11 | a10 | | +| main.rs:413:9:413:11 | a10 | main.rs:410:5:414:5 | TupleExpr | | +| main.rs:414:9:418:5 | TupleExpr | main.rs:410:5:418:5 | ... = ... | | +| main.rs:415:9:415:11 | a10 | main.rs:416:9:416:10 | b4 | | +| main.rs:416:9:416:10 | b4 | main.rs:417:9:417:10 | c2 | | +| main.rs:417:9:417:10 | c2 | main.rs:414:9:418:5 | TupleExpr | | +| main.rs:419:5:419:13 | print_i64 | main.rs:419:15:419:17 | a10 | | +| main.rs:419:5:419:18 | print_i64(...) | main.rs:420:5:420:18 | ExprStmt | | +| main.rs:419:5:419:19 | ExprStmt | main.rs:419:5:419:13 | print_i64 | | +| main.rs:419:15:419:17 | a10 | main.rs:419:5:419:18 | print_i64(...) | | +| main.rs:420:5:420:13 | print_i64 | main.rs:420:15:420:16 | b4 | | +| main.rs:420:5:420:17 | print_i64(...) | main.rs:421:5:421:18 | ExprStmt | | +| main.rs:420:5:420:18 | ExprStmt | main.rs:420:5:420:13 | print_i64 | | +| main.rs:420:15:420:16 | b4 | main.rs:420:5:420:17 | print_i64(...) | | +| main.rs:421:5:421:13 | print_i64 | main.rs:421:15:421:16 | c2 | | +| main.rs:421:5:421:17 | print_i64(...) | main.rs:423:5:431:5 | ExprStmt | | +| main.rs:421:5:421:18 | ExprStmt | main.rs:421:5:421:13 | print_i64 | | +| main.rs:421:15:421:16 | c2 | main.rs:421:5:421:17 | print_i64(...) | | +| main.rs:423:5:431:5 | ExprStmt | main.rs:423:12:423:12 | 4 | | +| main.rs:423:5:431:5 | match ... { ... } | main.rs:433:5:433:19 | ExprStmt | | +| main.rs:423:11:423:16 | TupleExpr | main.rs:424:9:427:9 | TuplePat | | +| main.rs:423:12:423:12 | 4 | main.rs:423:15:423:15 | 5 | | +| main.rs:423:15:423:15 | 5 | main.rs:423:11:423:16 | TupleExpr | | +| main.rs:424:9:427:9 | TuplePat | main.rs:425:13:425:15 | a10 | match | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | | +| main.rs:425:13:425:15 | a10 | main.rs:426:13:426:14 | b4 | match | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | | +| main.rs:426:13:426:14 | b4 | main.rs:428:13:428:27 | ExprStmt | match | +| main.rs:427:14:430:9 | { ... } | main.rs:423:5:431:5 | match ... { ... } | | +| main.rs:428:13:428:21 | print_i64 | main.rs:428:23:428:25 | a10 | | +| main.rs:428:13:428:26 | print_i64(...) | main.rs:429:13:429:26 | ExprStmt | | +| main.rs:428:13:428:27 | ExprStmt | main.rs:428:13:428:21 | print_i64 | | +| main.rs:428:23:428:25 | a10 | main.rs:428:13:428:26 | print_i64(...) | | +| main.rs:429:13:429:21 | print_i64 | main.rs:429:23:429:24 | b4 | | +| main.rs:429:13:429:25 | print_i64(...) | main.rs:427:14:430:9 | { ... } | | +| main.rs:429:13:429:26 | ExprStmt | main.rs:429:13:429:21 | print_i64 | | +| main.rs:429:23:429:24 | b4 | main.rs:429:13:429:25 | print_i64(...) | | +| main.rs:433:5:433:13 | print_i64 | main.rs:433:15:433:17 | a10 | | +| main.rs:433:5:433:18 | print_i64(...) | main.rs:434:5:434:18 | ExprStmt | | +| main.rs:433:5:433:19 | ExprStmt | main.rs:433:5:433:13 | print_i64 | | +| main.rs:433:15:433:17 | a10 | main.rs:433:5:433:18 | print_i64(...) | | +| main.rs:434:5:434:13 | print_i64 | main.rs:434:15:434:16 | b4 | | +| main.rs:434:5:434:17 | print_i64(...) | main.rs:400:26:435:1 | { ... } | | +| main.rs:434:5:434:18 | ExprStmt | main.rs:434:5:434:13 | print_i64 | | +| main.rs:434:15:434:16 | b4 | main.rs:434:5:434:17 | print_i64(...) | | +| main.rs:437:1:452:1 | enter fn closure_variable | main.rs:438:5:440:10 | let ... = ... | | +| main.rs:437:1:452:1 | exit fn closure_variable (normal) | main.rs:437:1:452:1 | exit fn closure_variable | | +| main.rs:437:23:452:1 | { ... } | main.rs:437:1:452:1 | exit fn closure_variable (normal) | | +| main.rs:438:5:440:10 | let ... = ... | main.rs:439:9:440:9 | \|...\| x | | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | | +| main.rs:438:9:438:23 | example_closure | main.rs:441:5:442:27 | let ... = ... | match | +| main.rs:439:9:440:9 | \|...\| x | main.rs:438:9:438:23 | example_closure | | +| main.rs:439:9:440:9 | enter \|...\| x | main.rs:439:10:439:10 | x | | +| main.rs:439:9:440:9 | exit \|...\| x (normal) | main.rs:439:9:440:9 | exit \|...\| x | | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:15 | ...: i64 | match | +| main.rs:439:10:439:15 | ...: i64 | main.rs:440:9:440:9 | x | | +| main.rs:440:9:440:9 | x | main.rs:439:9:440:9 | exit \|...\| x (normal) | | +| main.rs:441:5:442:27 | let ... = ... | main.rs:442:9:442:23 | example_closure | | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | | +| main.rs:441:9:441:10 | n1 | main.rs:443:5:443:18 | ExprStmt | match | +| main.rs:442:9:442:23 | example_closure | main.rs:442:25:442:25 | 5 | | +| main.rs:442:9:442:26 | example_closure(...) | main.rs:441:9:441:10 | n1 | | +| main.rs:442:25:442:25 | 5 | main.rs:442:9:442:26 | example_closure(...) | | +| main.rs:443:5:443:13 | print_i64 | main.rs:443:15:443:16 | n1 | | +| main.rs:443:5:443:17 | print_i64(...) | main.rs:445:5:445:25 | ExprStmt | | +| main.rs:443:5:443:18 | ExprStmt | main.rs:443:5:443:13 | print_i64 | | +| main.rs:443:15:443:16 | n1 | main.rs:443:5:443:17 | print_i64(...) | | +| main.rs:445:5:445:22 | immutable_variable | main.rs:445:5:445:24 | immutable_variable(...) | | +| main.rs:445:5:445:24 | immutable_variable(...) | main.rs:446:5:448:10 | let ... = ... | | +| main.rs:445:5:445:25 | ExprStmt | main.rs:445:5:445:22 | immutable_variable | | +| main.rs:446:5:448:10 | let ... = ... | main.rs:447:5:448:9 | \|...\| x | | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | | +| main.rs:446:9:446:26 | immutable_variable | main.rs:449:5:450:30 | let ... = ... | match | +| main.rs:447:5:448:9 | \|...\| x | main.rs:446:9:446:26 | immutable_variable | | +| main.rs:447:5:448:9 | enter \|...\| x | main.rs:447:6:447:6 | x | | +| main.rs:447:5:448:9 | exit \|...\| x (normal) | main.rs:447:5:448:9 | exit \|...\| x | | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:11 | ...: i64 | match | +| main.rs:447:6:447:11 | ...: i64 | main.rs:448:9:448:9 | x | | +| main.rs:448:9:448:9 | x | main.rs:447:5:448:9 | exit \|...\| x (normal) | | +| main.rs:449:5:450:30 | let ... = ... | main.rs:450:9:450:26 | immutable_variable | | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | | +| main.rs:449:9:449:10 | n2 | main.rs:451:5:451:18 | ExprStmt | match | +| main.rs:450:9:450:26 | immutable_variable | main.rs:450:28:450:28 | 6 | | +| main.rs:450:9:450:29 | immutable_variable(...) | main.rs:449:9:449:10 | n2 | | +| main.rs:450:28:450:28 | 6 | main.rs:450:9:450:29 | immutable_variable(...) | | +| main.rs:451:5:451:13 | print_i64 | main.rs:451:15:451:16 | n2 | | +| main.rs:451:5:451:17 | print_i64(...) | main.rs:437:23:452:1 | { ... } | | +| main.rs:451:5:451:18 | ExprStmt | main.rs:451:5:451:13 | print_i64 | | +| main.rs:451:15:451:16 | n2 | main.rs:451:5:451:17 | print_i64(...) | | +| main.rs:454:1:484:1 | enter fn nested_function | main.rs:456:5:458:10 | let ... = ... | | +| main.rs:454:1:484:1 | exit fn nested_function (normal) | main.rs:454:1:484:1 | exit fn nested_function | | +| main.rs:454:22:484:1 | { ... } | main.rs:454:1:484:1 | exit fn nested_function (normal) | | +| main.rs:456:5:458:10 | let ... = ... | main.rs:457:9:458:9 | \|...\| x | | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | | +| main.rs:456:9:456:9 | f | main.rs:459:5:459:20 | ExprStmt | match | +| main.rs:457:9:458:9 | \|...\| x | main.rs:456:9:456:9 | f | | +| main.rs:457:9:458:9 | enter \|...\| x | main.rs:457:10:457:10 | x | | +| main.rs:457:9:458:9 | exit \|...\| x (normal) | main.rs:457:9:458:9 | exit \|...\| x | | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:15 | ...: i64 | match | +| main.rs:457:10:457:15 | ...: i64 | main.rs:458:9:458:9 | x | | +| main.rs:458:9:458:9 | x | main.rs:457:9:458:9 | exit \|...\| x (normal) | | +| main.rs:459:5:459:13 | print_i64 | main.rs:459:15:459:15 | f | | +| main.rs:459:5:459:19 | print_i64(...) | main.rs:461:5:464:5 | fn f | | +| main.rs:459:5:459:20 | ExprStmt | main.rs:459:5:459:13 | print_i64 | | +| main.rs:459:15:459:15 | f | main.rs:459:17:459:17 | 1 | | +| main.rs:459:15:459:18 | f(...) | main.rs:459:5:459:19 | print_i64(...) | | +| main.rs:459:17:459:17 | 1 | main.rs:459:15:459:18 | f(...) | | +| main.rs:461:5:464:5 | enter fn f | main.rs:461:10:461:10 | x | | +| main.rs:461:5:464:5 | exit fn f (normal) | main.rs:461:5:464:5 | exit fn f | | +| main.rs:461:5:464:5 | fn f | main.rs:466:5:466:20 | ExprStmt | | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:15 | ...: i64 | match | +| main.rs:461:10:461:15 | ...: i64 | main.rs:463:9:463:9 | x | | +| main.rs:462:5:464:5 | { ... } | main.rs:461:5:464:5 | exit fn f (normal) | | +| main.rs:463:9:463:9 | x | main.rs:463:13:463:13 | 1 | | +| main.rs:463:9:463:13 | ... + ... | main.rs:462:5:464:5 | { ... } | | +| main.rs:463:13:463:13 | 1 | main.rs:463:9:463:13 | ... + ... | | +| main.rs:466:5:466:13 | print_i64 | main.rs:466:15:466:15 | f | | +| main.rs:466:5:466:19 | print_i64(...) | main.rs:469:9:469:24 | ExprStmt | | +| main.rs:466:5:466:20 | ExprStmt | main.rs:466:5:466:13 | print_i64 | | +| main.rs:466:15:466:15 | f | main.rs:466:17:466:17 | 2 | | +| main.rs:466:15:466:18 | f(...) | main.rs:466:5:466:19 | print_i64(...) | | +| main.rs:466:17:466:17 | 2 | main.rs:466:15:466:18 | f(...) | | +| main.rs:468:5:483:5 | { ... } | main.rs:454:22:484:1 | { ... } | | +| main.rs:469:9:469:17 | print_i64 | main.rs:469:19:469:19 | f | | +| main.rs:469:9:469:23 | print_i64(...) | main.rs:470:9:473:9 | fn f | | +| main.rs:469:9:469:24 | ExprStmt | main.rs:469:9:469:17 | print_i64 | | +| main.rs:469:19:469:19 | f | main.rs:469:21:469:21 | 3 | | +| main.rs:469:19:469:22 | f(...) | main.rs:469:9:469:23 | print_i64(...) | | +| main.rs:469:21:469:21 | 3 | main.rs:469:19:469:22 | f(...) | | +| main.rs:470:9:473:9 | enter fn f | main.rs:470:14:470:14 | x | | +| main.rs:470:9:473:9 | exit fn f (normal) | main.rs:470:9:473:9 | exit fn f | | +| main.rs:470:9:473:9 | fn f | main.rs:475:9:477:9 | ExprStmt | | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:19 | ...: i64 | match | +| main.rs:470:14:470:19 | ...: i64 | main.rs:472:13:472:13 | 2 | | +| main.rs:471:9:473:9 | { ... } | main.rs:470:9:473:9 | exit fn f (normal) | | +| main.rs:472:13:472:13 | 2 | main.rs:472:17:472:17 | x | | +| main.rs:472:13:472:17 | ... * ... | main.rs:471:9:473:9 | { ... } | | +| main.rs:472:17:472:17 | x | main.rs:472:13:472:17 | ... * ... | | +| main.rs:475:9:477:9 | ExprStmt | main.rs:476:13:476:28 | ExprStmt | | +| main.rs:475:9:477:9 | { ... } | main.rs:479:9:481:14 | let ... = ... | | +| main.rs:476:13:476:21 | print_i64 | main.rs:476:23:476:23 | f | | +| main.rs:476:13:476:27 | print_i64(...) | main.rs:475:9:477:9 | { ... } | | +| main.rs:476:13:476:28 | ExprStmt | main.rs:476:13:476:21 | print_i64 | | +| main.rs:476:23:476:23 | f | main.rs:476:25:476:25 | 4 | | +| main.rs:476:23:476:26 | f(...) | main.rs:476:13:476:27 | print_i64(...) | | +| main.rs:476:25:476:25 | 4 | main.rs:476:23:476:26 | f(...) | | +| main.rs:479:9:481:14 | let ... = ... | main.rs:480:13:481:13 | \|...\| x | | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | | +| main.rs:479:13:479:13 | f | main.rs:482:9:482:24 | ExprStmt | match | +| main.rs:480:13:481:13 | \|...\| x | main.rs:479:13:479:13 | f | | +| main.rs:480:13:481:13 | enter \|...\| x | main.rs:480:14:480:14 | x | | +| main.rs:480:13:481:13 | exit \|...\| x (normal) | main.rs:480:13:481:13 | exit \|...\| x | | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:19 | ...: i64 | match | +| main.rs:480:14:480:19 | ...: i64 | main.rs:481:13:481:13 | x | | +| main.rs:481:13:481:13 | x | main.rs:480:13:481:13 | exit \|...\| x (normal) | | +| main.rs:482:9:482:17 | print_i64 | main.rs:482:19:482:19 | f | | +| main.rs:482:9:482:23 | print_i64(...) | main.rs:468:5:483:5 | { ... } | | +| main.rs:482:9:482:24 | ExprStmt | main.rs:482:9:482:17 | print_i64 | | +| main.rs:482:19:482:19 | f | main.rs:482:21:482:21 | 5 | | +| main.rs:482:19:482:22 | f(...) | main.rs:482:9:482:23 | print_i64(...) | | +| main.rs:482:21:482:21 | 5 | main.rs:482:19:482:22 | f(...) | | +| main.rs:486:1:493:1 | enter fn for_variable | main.rs:487:5:487:42 | let ... = ... | | +| main.rs:486:1:493:1 | exit fn for_variable (normal) | main.rs:486:1:493:1 | exit fn for_variable | | +| main.rs:486:19:493:1 | { ... } | main.rs:486:1:493:1 | exit fn for_variable (normal) | | +| main.rs:487:5:487:42 | let ... = ... | main.rs:487:15:487:22 | "apples" | | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | | +| main.rs:487:9:487:9 | v | main.rs:490:12:490:12 | v | match | +| main.rs:487:13:487:41 | &... | main.rs:487:9:487:9 | v | | +| main.rs:487:14:487:41 | [...] | main.rs:487:13:487:41 | &... | | +| main.rs:487:15:487:22 | "apples" | main.rs:487:25:487:30 | "cake" | | +| main.rs:487:25:487:30 | "cake" | main.rs:487:33:487:40 | "coffee" | | +| main.rs:487:33:487:40 | "coffee" | main.rs:487:14:487:41 | [...] | | +| main.rs:489:5:492:5 | for ... in ... { ... } | main.rs:486:19:493:1 | { ... } | | +| main.rs:489:9:489:12 | text | main.rs:489:5:492:5 | for ... in ... { ... } | no-match | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | | +| main.rs:489:9:489:12 | text | main.rs:491:9:491:24 | ExprStmt | match | +| main.rs:490:12:490:12 | v | main.rs:489:9:489:12 | text | | +| main.rs:490:14:492:5 | { ... } | main.rs:489:9:489:12 | text | | +| main.rs:491:9:491:17 | print_str | main.rs:491:19:491:22 | text | | +| main.rs:491:9:491:23 | print_str(...) | main.rs:490:14:492:5 | { ... } | | +| main.rs:491:9:491:24 | ExprStmt | main.rs:491:9:491:17 | print_str | | +| main.rs:491:19:491:22 | text | main.rs:491:9:491:23 | print_str(...) | | +| main.rs:495:1:501:1 | enter fn add_assign | main.rs:496:5:496:18 | let ... = 0 | | +| main.rs:495:1:501:1 | exit fn add_assign (normal) | main.rs:495:1:501:1 | exit fn add_assign | | +| main.rs:495:17:501:1 | { ... } | main.rs:495:1:501:1 | exit fn add_assign (normal) | | +| main.rs:496:5:496:18 | let ... = 0 | main.rs:496:17:496:17 | 0 | | +| main.rs:496:9:496:13 | mut a | main.rs:497:5:497:11 | ExprStmt | match | +| main.rs:496:13:496:13 | a | main.rs:496:9:496:13 | mut a | | +| main.rs:496:17:496:17 | 0 | main.rs:496:13:496:13 | a | | +| main.rs:497:5:497:5 | a | main.rs:497:10:497:10 | 1 | | +| main.rs:497:5:497:10 | ... += ... | main.rs:498:5:498:17 | ExprStmt | | +| main.rs:497:5:497:11 | ExprStmt | main.rs:497:5:497:5 | a | | +| main.rs:497:10:497:10 | 1 | main.rs:497:5:497:10 | ... += ... | | +| main.rs:498:5:498:13 | print_i64 | main.rs:498:15:498:15 | a | | +| main.rs:498:5:498:16 | print_i64(...) | main.rs:499:5:499:28 | ExprStmt | | +| main.rs:498:5:498:17 | ExprStmt | main.rs:498:5:498:13 | print_i64 | | +| main.rs:498:15:498:15 | a | main.rs:498:5:498:16 | print_i64(...) | | +| main.rs:499:5:499:27 | ... .add_assign(...) | main.rs:500:5:500:17 | ExprStmt | | +| main.rs:499:5:499:28 | ExprStmt | main.rs:499:11:499:11 | a | | +| main.rs:499:6:499:11 | &mut a | main.rs:499:25:499:26 | 10 | | +| main.rs:499:11:499:11 | a | main.rs:499:6:499:11 | &mut a | | +| main.rs:499:25:499:26 | 10 | main.rs:499:5:499:27 | ... .add_assign(...) | | +| main.rs:500:5:500:13 | print_i64 | main.rs:500:15:500:15 | a | | +| main.rs:500:5:500:16 | print_i64(...) | main.rs:495:17:501:1 | { ... } | | +| main.rs:500:5:500:17 | ExprStmt | main.rs:500:5:500:13 | print_i64 | | +| main.rs:500:15:500:15 | a | main.rs:500:5:500:16 | print_i64(...) | | +| main.rs:503:1:509:1 | enter fn mutate | main.rs:504:5:504:18 | let ... = 1 | | +| main.rs:503:1:509:1 | exit fn mutate (normal) | main.rs:503:1:509:1 | exit fn mutate | | +| main.rs:503:13:509:1 | { ... } | main.rs:503:1:509:1 | exit fn mutate (normal) | | +| main.rs:504:5:504:18 | let ... = 1 | main.rs:504:17:504:17 | 1 | | +| main.rs:504:9:504:13 | mut i | main.rs:505:5:506:15 | let ... = ... | match | +| main.rs:504:13:504:13 | i | main.rs:504:9:504:13 | mut i | | +| main.rs:504:17:504:17 | 1 | main.rs:504:13:504:13 | i | | +| main.rs:505:5:506:15 | let ... = ... | main.rs:506:14:506:14 | i | | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | | +| main.rs:505:9:505:13 | ref_i | main.rs:507:5:507:15 | ExprStmt | match | +| main.rs:506:9:506:14 | &mut i | main.rs:505:9:505:13 | ref_i | | +| main.rs:506:14:506:14 | i | main.rs:506:9:506:14 | &mut i | | +| main.rs:507:5:507:10 | * ... | main.rs:507:14:507:14 | 2 | | +| main.rs:507:5:507:14 | ... = ... | main.rs:508:5:508:17 | ExprStmt | | +| main.rs:507:5:507:15 | ExprStmt | main.rs:507:6:507:10 | ref_i | | +| main.rs:507:6:507:10 | ref_i | main.rs:507:5:507:10 | * ... | | +| main.rs:507:14:507:14 | 2 | main.rs:507:5:507:14 | ... = ... | | +| main.rs:508:5:508:13 | print_i64 | main.rs:508:15:508:15 | i | | +| main.rs:508:5:508:16 | print_i64(...) | main.rs:503:13:509:1 | { ... } | | +| main.rs:508:5:508:17 | ExprStmt | main.rs:508:5:508:13 | print_i64 | | +| main.rs:508:15:508:15 | i | main.rs:508:5:508:16 | print_i64(...) | | +| main.rs:511:1:516:1 | enter fn mutate_param | main.rs:511:17:511:17 | x | | +| main.rs:511:1:516:1 | exit fn mutate_param (normal) | main.rs:511:1:516:1 | exit fn mutate_param | | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:27 | ...: ... | match | +| main.rs:511:17:511:27 | ...: ... | main.rs:512:5:514:11 | ExprStmt | | +| main.rs:512:5:512:6 | * ... | main.rs:513:10:513:10 | x | | +| main.rs:512:5:514:10 | ... = ... | main.rs:515:5:515:13 | ExprStmt | | +| main.rs:512:5:514:11 | ExprStmt | main.rs:512:6:512:6 | x | | +| main.rs:512:6:512:6 | x | main.rs:512:5:512:6 | * ... | | +| main.rs:513:9:513:10 | * ... | main.rs:514:10:514:10 | x | | +| main.rs:513:9:514:10 | ... + ... | main.rs:512:5:514:10 | ... = ... | | +| main.rs:513:10:513:10 | x | main.rs:513:9:513:10 | * ... | | +| main.rs:514:9:514:10 | * ... | main.rs:513:9:514:10 | ... + ... | | +| main.rs:514:10:514:10 | x | main.rs:514:9:514:10 | * ... | | +| main.rs:515:5:515:12 | return x | main.rs:511:1:516:1 | exit fn mutate_param (normal) | return | +| main.rs:515:5:515:13 | ExprStmt | main.rs:515:12:515:12 | x | | +| main.rs:515:12:515:12 | x | main.rs:515:5:515:12 | return x | | +| main.rs:518:1:524:1 | enter fn mutate_param2 | main.rs:518:22:518:22 | x | | +| main.rs:518:1:524:1 | exit fn mutate_param2 (normal) | main.rs:518:1:524:1 | exit fn mutate_param2 | | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:35 | ...: ... | match | +| main.rs:518:22:518:35 | ...: ... | main.rs:518:38:518:38 | y | | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:56 | ...: ... | match | +| main.rs:518:38:518:56 | ...: ... | main.rs:519:5:521:11 | ExprStmt | | +| main.rs:518:59:524:1 | { ... } | main.rs:518:1:524:1 | exit fn mutate_param2 (normal) | | +| main.rs:519:5:519:6 | * ... | main.rs:520:10:520:10 | x | | +| main.rs:519:5:521:10 | ... = ... | main.rs:522:5:523:10 | ExprStmt | | +| main.rs:519:5:521:11 | ExprStmt | main.rs:519:6:519:6 | x | | +| main.rs:519:6:519:6 | x | main.rs:519:5:519:6 | * ... | | +| main.rs:520:9:520:10 | * ... | main.rs:521:10:521:10 | x | | +| main.rs:520:9:521:10 | ... + ... | main.rs:519:5:521:10 | ... = ... | | +| main.rs:520:10:520:10 | x | main.rs:520:9:520:10 | * ... | | +| main.rs:521:9:521:10 | * ... | main.rs:520:9:521:10 | ... + ... | | +| main.rs:521:10:521:10 | x | main.rs:521:9:521:10 | * ... | | +| main.rs:522:5:522:6 | * ... | main.rs:523:9:523:9 | x | | +| main.rs:522:5:523:9 | ... = ... | main.rs:518:59:524:1 | { ... } | | +| main.rs:522:5:523:10 | ExprStmt | main.rs:522:6:522:6 | y | | +| main.rs:522:6:522:6 | y | main.rs:522:5:522:6 | * ... | | +| main.rs:523:9:523:9 | x | main.rs:522:5:523:9 | ... = ... | | +| main.rs:526:1:546:1 | enter fn mutate_arg | main.rs:527:5:527:18 | let ... = 2 | | +| main.rs:526:1:546:1 | exit fn mutate_arg (normal) | main.rs:526:1:546:1 | exit fn mutate_arg | | +| main.rs:526:17:546:1 | { ... } | main.rs:526:1:546:1 | exit fn mutate_arg (normal) | | +| main.rs:527:5:527:18 | let ... = 2 | main.rs:527:17:527:17 | 2 | | +| main.rs:527:9:527:13 | mut x | main.rs:528:5:529:29 | let ... = ... | match | +| main.rs:527:13:527:13 | x | main.rs:527:9:527:13 | mut x | | +| main.rs:527:17:527:17 | 2 | main.rs:527:13:527:13 | x | | +| main.rs:528:5:529:29 | let ... = ... | main.rs:529:9:529:20 | mutate_param | | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | | +| main.rs:528:9:528:9 | y | main.rs:530:5:530:12 | ExprStmt | match | +| main.rs:529:9:529:20 | mutate_param | main.rs:529:27:529:27 | x | | +| main.rs:529:9:529:28 | mutate_param(...) | main.rs:528:9:528:9 | y | | +| main.rs:529:22:529:27 | &mut x | main.rs:529:9:529:28 | mutate_param(...) | | +| main.rs:529:27:529:27 | x | main.rs:529:22:529:27 | &mut x | | +| main.rs:530:5:530:6 | * ... | main.rs:530:10:530:11 | 10 | | +| main.rs:530:5:530:11 | ... = ... | main.rs:533:5:533:17 | ExprStmt | | +| main.rs:530:5:530:12 | ExprStmt | main.rs:530:6:530:6 | y | | +| main.rs:530:6:530:6 | y | main.rs:530:5:530:6 | * ... | | +| main.rs:530:10:530:11 | 10 | main.rs:530:5:530:11 | ... = ... | | +| main.rs:533:5:533:13 | print_i64 | main.rs:533:15:533:15 | x | | +| main.rs:533:5:533:16 | print_i64(...) | main.rs:535:5:535:18 | let ... = 4 | | +| main.rs:533:5:533:17 | ExprStmt | main.rs:533:5:533:13 | print_i64 | | +| main.rs:533:15:533:15 | x | main.rs:533:5:533:16 | print_i64(...) | | +| main.rs:535:5:535:18 | let ... = 4 | main.rs:535:17:535:17 | 4 | | +| main.rs:535:9:535:13 | mut z | main.rs:536:5:537:20 | let ... = ... | match | +| main.rs:535:13:535:13 | z | main.rs:535:9:535:13 | mut z | | +| main.rs:535:17:535:17 | 4 | main.rs:535:13:535:13 | z | | +| main.rs:536:5:537:20 | let ... = ... | main.rs:537:19:537:19 | x | | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | | +| main.rs:536:9:536:9 | w | main.rs:538:5:541:6 | ExprStmt | match | +| main.rs:537:9:537:19 | &mut ... | main.rs:536:9:536:9 | w | | +| main.rs:537:14:537:19 | &mut x | main.rs:537:9:537:19 | &mut ... | | +| main.rs:537:19:537:19 | x | main.rs:537:14:537:19 | &mut x | | +| main.rs:538:5:538:17 | mutate_param2 | main.rs:539:14:539:14 | z | | +| main.rs:538:5:541:5 | mutate_param2(...) | main.rs:542:5:542:13 | ExprStmt | | +| main.rs:538:5:541:6 | ExprStmt | main.rs:538:5:538:17 | mutate_param2 | | +| main.rs:539:9:539:14 | &mut z | main.rs:540:9:540:9 | w | | +| main.rs:539:14:539:14 | z | main.rs:539:9:539:14 | &mut z | | +| main.rs:540:9:540:9 | w | main.rs:538:5:541:5 | mutate_param2(...) | | +| main.rs:542:5:542:7 | * ... | main.rs:542:11:542:12 | 11 | | +| main.rs:542:5:542:12 | ... = ... | main.rs:545:5:545:17 | ExprStmt | | +| main.rs:542:5:542:13 | ExprStmt | main.rs:542:7:542:7 | w | | +| main.rs:542:6:542:7 | * ... | main.rs:542:5:542:7 | * ... | | +| main.rs:542:7:542:7 | w | main.rs:542:6:542:7 | * ... | | +| main.rs:542:11:542:12 | 11 | main.rs:542:5:542:12 | ... = ... | | +| main.rs:545:5:545:13 | print_i64 | main.rs:545:15:545:15 | z | | +| main.rs:545:5:545:16 | print_i64(...) | main.rs:526:17:546:1 | { ... } | | +| main.rs:545:5:545:17 | ExprStmt | main.rs:545:5:545:13 | print_i64 | | +| main.rs:545:15:545:15 | z | main.rs:545:5:545:16 | print_i64(...) | | +| main.rs:548:1:554:1 | enter fn alias | main.rs:549:5:549:18 | let ... = 1 | | +| main.rs:548:1:554:1 | exit fn alias (normal) | main.rs:548:1:554:1 | exit fn alias | | +| main.rs:548:12:554:1 | { ... } | main.rs:548:1:554:1 | exit fn alias (normal) | | +| main.rs:549:5:549:18 | let ... = 1 | main.rs:549:17:549:17 | 1 | | +| main.rs:549:9:549:13 | mut x | main.rs:550:5:551:15 | let ... = ... | match | +| main.rs:549:13:549:13 | x | main.rs:549:9:549:13 | mut x | | +| main.rs:549:17:549:17 | 1 | main.rs:549:13:549:13 | x | | +| main.rs:550:5:551:15 | let ... = ... | main.rs:551:14:551:14 | x | | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | | +| main.rs:550:9:550:9 | y | main.rs:552:5:552:11 | ExprStmt | match | +| main.rs:551:9:551:14 | &mut x | main.rs:550:9:550:9 | y | | +| main.rs:551:14:551:14 | x | main.rs:551:9:551:14 | &mut x | | +| main.rs:552:5:552:6 | * ... | main.rs:552:10:552:10 | 2 | | +| main.rs:552:5:552:10 | ... = ... | main.rs:553:5:553:17 | ExprStmt | | +| main.rs:552:5:552:11 | ExprStmt | main.rs:552:6:552:6 | y | | +| main.rs:552:6:552:6 | y | main.rs:552:5:552:6 | * ... | | +| main.rs:552:10:552:10 | 2 | main.rs:552:5:552:10 | ... = ... | | | main.rs:553:5:553:13 | print_i64 | main.rs:553:15:553:15 | x | | -| main.rs:553:5:553:16 | print_i64(...) | main.rs:545:20:554:1 | { ... } | | +| main.rs:553:5:553:16 | print_i64(...) | main.rs:548:12:554:1 | { ... } | | | main.rs:553:5:553:17 | ExprStmt | main.rs:553:5:553:13 | print_i64 | | | main.rs:553:15:553:15 | x | main.rs:553:5:553:16 | print_i64(...) | | -| main.rs:556:1:583:1 | enter fn capture_mut | main.rs:557:5:557:18 | let ... = 1 | | -| main.rs:556:1:583:1 | exit fn capture_mut (normal) | main.rs:556:1:583:1 | exit fn capture_mut | | -| main.rs:556:18:583:1 | { ... } | main.rs:556:1:583:1 | exit fn capture_mut (normal) | | -| main.rs:557:5:557:18 | let ... = 1 | main.rs:557:17:557:17 | 1 | | -| main.rs:557:9:557:13 | mut x | main.rs:560:5:562:6 | let ... = ... | match | -| main.rs:557:13:557:13 | x | main.rs:557:9:557:13 | mut x | | -| main.rs:557:17:557:17 | 1 | main.rs:557:13:557:13 | x | | -| main.rs:560:5:562:6 | let ... = ... | main.rs:560:20:562:5 | \|...\| ... | | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | | -| main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:15 | ExprStmt | match | -| main.rs:560:20:562:5 | \|...\| ... | main.rs:560:9:560:16 | closure1 | | -| main.rs:560:20:562:5 | enter \|...\| ... | main.rs:561:9:561:21 | ExprStmt | | -| main.rs:560:20:562:5 | exit \|...\| ... (normal) | main.rs:560:20:562:5 | exit \|...\| ... | | -| main.rs:560:23:562:5 | { ... } | main.rs:560:20:562:5 | exit \|...\| ... (normal) | | +| main.rs:556:1:565:1 | enter fn capture_immut | main.rs:557:5:557:16 | let ... = 100 | | +| main.rs:556:1:565:1 | exit fn capture_immut (normal) | main.rs:556:1:565:1 | exit fn capture_immut | | +| main.rs:556:20:565:1 | { ... } | main.rs:556:1:565:1 | exit fn capture_immut (normal) | | +| main.rs:557:5:557:16 | let ... = 100 | main.rs:557:13:557:15 | 100 | | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | | +| main.rs:557:9:557:9 | x | main.rs:560:5:562:6 | let ... = ... | match | +| main.rs:557:13:557:15 | 100 | main.rs:557:9:557:9 | x | | +| main.rs:560:5:562:6 | let ... = ... | main.rs:560:15:562:5 | \|...\| ... | | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | | +| main.rs:560:9:560:11 | cap | main.rs:563:5:563:10 | ExprStmt | match | +| main.rs:560:15:562:5 | \|...\| ... | main.rs:560:9:560:11 | cap | | +| main.rs:560:15:562:5 | enter \|...\| ... | main.rs:561:9:561:21 | ExprStmt | | +| main.rs:560:15:562:5 | exit \|...\| ... (normal) | main.rs:560:15:562:5 | exit \|...\| ... | | +| main.rs:560:18:562:5 | { ... } | main.rs:560:15:562:5 | exit \|...\| ... (normal) | | | main.rs:561:9:561:17 | print_i64 | main.rs:561:19:561:19 | x | | -| main.rs:561:9:561:20 | print_i64(...) | main.rs:560:23:562:5 | { ... } | | +| main.rs:561:9:561:20 | print_i64(...) | main.rs:560:18:562:5 | { ... } | | | main.rs:561:9:561:21 | ExprStmt | main.rs:561:9:561:17 | print_i64 | | | main.rs:561:19:561:19 | x | main.rs:561:9:561:20 | print_i64(...) | | -| main.rs:563:5:563:12 | closure1 | main.rs:563:5:563:14 | closure1(...) | | -| main.rs:563:5:563:14 | closure1(...) | main.rs:564:5:564:17 | ExprStmt | | -| main.rs:563:5:563:15 | ExprStmt | main.rs:563:5:563:12 | closure1 | | +| main.rs:563:5:563:7 | cap | main.rs:563:5:563:9 | cap(...) | | +| main.rs:563:5:563:9 | cap(...) | main.rs:564:5:564:17 | ExprStmt | | +| main.rs:563:5:563:10 | ExprStmt | main.rs:563:5:563:7 | cap | | | main.rs:564:5:564:13 | print_i64 | main.rs:564:15:564:15 | x | | -| main.rs:564:5:564:16 | print_i64(...) | main.rs:566:5:566:18 | let ... = 2 | | +| main.rs:564:5:564:16 | print_i64(...) | main.rs:556:20:565:1 | { ... } | | | main.rs:564:5:564:17 | ExprStmt | main.rs:564:5:564:13 | print_i64 | | | main.rs:564:15:564:15 | x | main.rs:564:5:564:16 | print_i64(...) | | -| main.rs:566:5:566:18 | let ... = 2 | main.rs:566:17:566:17 | 2 | | -| main.rs:566:9:566:13 | mut y | main.rs:569:5:571:6 | let ... = ... | match | -| main.rs:566:13:566:13 | y | main.rs:566:9:566:13 | mut y | | -| main.rs:566:17:566:17 | 2 | main.rs:566:13:566:13 | y | | -| main.rs:569:5:571:6 | let ... = ... | main.rs:569:24:571:5 | \|...\| ... | | -| main.rs:569:9:569:20 | mut closure2 | main.rs:572:5:572:15 | ExprStmt | match | -| main.rs:569:13:569:20 | closure2 | main.rs:569:9:569:20 | mut closure2 | | -| main.rs:569:24:571:5 | \|...\| ... | main.rs:569:13:569:20 | closure2 | | -| main.rs:569:24:571:5 | enter \|...\| ... | main.rs:570:9:570:14 | ExprStmt | | -| main.rs:569:24:571:5 | exit \|...\| ... (normal) | main.rs:569:24:571:5 | exit \|...\| ... | | -| main.rs:569:27:571:5 | { ... } | main.rs:569:24:571:5 | exit \|...\| ... (normal) | | -| main.rs:570:9:570:9 | y | main.rs:570:13:570:13 | 3 | | -| main.rs:570:9:570:13 | ... = ... | main.rs:569:27:571:5 | { ... } | | -| main.rs:570:9:570:14 | ExprStmt | main.rs:570:9:570:9 | y | | -| main.rs:570:13:570:13 | 3 | main.rs:570:9:570:13 | ... = ... | | -| main.rs:572:5:572:12 | closure2 | main.rs:572:5:572:14 | closure2(...) | | -| main.rs:572:5:572:14 | closure2(...) | main.rs:573:5:573:17 | ExprStmt | | -| main.rs:572:5:572:15 | ExprStmt | main.rs:572:5:572:12 | closure2 | | -| main.rs:573:5:573:13 | print_i64 | main.rs:573:15:573:15 | y | | -| main.rs:573:5:573:16 | print_i64(...) | main.rs:575:5:575:18 | let ... = 2 | | -| main.rs:573:5:573:17 | ExprStmt | main.rs:573:5:573:13 | print_i64 | | -| main.rs:573:15:573:15 | y | main.rs:573:5:573:16 | print_i64(...) | | -| main.rs:575:5:575:18 | let ... = 2 | main.rs:575:17:575:17 | 2 | | -| main.rs:575:9:575:13 | mut z | main.rs:578:5:580:6 | let ... = ... | match | -| main.rs:575:13:575:13 | z | main.rs:575:9:575:13 | mut z | | -| main.rs:575:17:575:17 | 2 | main.rs:575:13:575:13 | z | | -| main.rs:578:5:580:6 | let ... = ... | main.rs:578:24:580:5 | \|...\| ... | | -| main.rs:578:9:578:20 | mut closure3 | main.rs:581:5:581:15 | ExprStmt | match | -| main.rs:578:13:578:20 | closure3 | main.rs:578:9:578:20 | mut closure3 | | -| main.rs:578:24:580:5 | \|...\| ... | main.rs:578:13:578:20 | closure3 | | -| main.rs:578:24:580:5 | enter \|...\| ... | main.rs:579:9:579:24 | ExprStmt | | -| main.rs:578:24:580:5 | exit \|...\| ... (normal) | main.rs:578:24:580:5 | exit \|...\| ... | | -| main.rs:578:27:580:5 | { ... } | main.rs:578:24:580:5 | exit \|...\| ... (normal) | | -| main.rs:579:9:579:9 | z | main.rs:579:22:579:22 | 1 | | -| main.rs:579:9:579:23 | z.add_assign(...) | main.rs:578:27:580:5 | { ... } | | -| main.rs:579:9:579:24 | ExprStmt | main.rs:579:9:579:9 | z | | -| main.rs:579:22:579:22 | 1 | main.rs:579:9:579:23 | z.add_assign(...) | | -| main.rs:581:5:581:12 | closure3 | main.rs:581:5:581:14 | closure3(...) | | -| main.rs:581:5:581:14 | closure3(...) | main.rs:582:5:582:17 | ExprStmt | | -| main.rs:581:5:581:15 | ExprStmt | main.rs:581:5:581:12 | closure3 | | -| main.rs:582:5:582:13 | print_i64 | main.rs:582:15:582:15 | z | | -| main.rs:582:5:582:16 | print_i64(...) | main.rs:556:18:583:1 | { ... } | | -| main.rs:582:5:582:17 | ExprStmt | main.rs:582:5:582:13 | print_i64 | | -| main.rs:582:15:582:15 | z | main.rs:582:5:582:16 | print_i64(...) | | -| main.rs:585:1:593:1 | enter fn async_block_capture | main.rs:586:5:586:23 | let ... = 0 | | -| main.rs:585:1:593:1 | exit fn async_block_capture (normal) | main.rs:585:1:593:1 | exit fn async_block_capture | | -| main.rs:585:32:593:1 | { ... } | main.rs:585:1:593:1 | exit fn async_block_capture (normal) | | -| main.rs:586:5:586:23 | let ... = 0 | main.rs:586:22:586:22 | 0 | | -| main.rs:586:9:586:13 | mut i | main.rs:587:5:589:6 | let ... = ... | match | -| main.rs:586:13:586:13 | i | main.rs:586:9:586:13 | mut i | | -| main.rs:586:22:586:22 | 0 | main.rs:586:13:586:13 | i | | -| main.rs:587:5:589:6 | let ... = ... | main.rs:587:17:589:5 | { ... } | | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | | -| main.rs:587:9:587:13 | block | main.rs:591:5:591:16 | ExprStmt | match | -| main.rs:587:17:589:5 | enter { ... } | main.rs:588:9:588:14 | ExprStmt | | -| main.rs:587:17:589:5 | exit { ... } (normal) | main.rs:587:17:589:5 | exit { ... } | | -| main.rs:587:17:589:5 | { ... } | main.rs:587:9:587:13 | block | | -| main.rs:588:9:588:9 | i | main.rs:588:13:588:13 | 1 | | -| main.rs:588:9:588:13 | ... = ... | main.rs:587:17:589:5 | exit { ... } (normal) | | -| main.rs:588:9:588:14 | ExprStmt | main.rs:588:9:588:9 | i | | -| main.rs:588:13:588:13 | 1 | main.rs:588:9:588:13 | ... = ... | | -| main.rs:591:5:591:9 | block | main.rs:591:5:591:15 | await block | | -| main.rs:591:5:591:15 | await block | main.rs:592:5:592:17 | ExprStmt | | -| main.rs:591:5:591:16 | ExprStmt | main.rs:591:5:591:9 | block | | -| main.rs:592:5:592:13 | print_i64 | main.rs:592:15:592:15 | i | | -| main.rs:592:5:592:16 | print_i64(...) | main.rs:585:32:593:1 | { ... } | | -| main.rs:592:5:592:17 | ExprStmt | main.rs:592:5:592:13 | print_i64 | | -| main.rs:592:15:592:15 | i | main.rs:592:5:592:16 | print_i64(...) | | -| main.rs:595:1:611:1 | enter fn phi | main.rs:595:8:595:8 | b | | -| main.rs:595:1:611:1 | exit fn phi (normal) | main.rs:595:1:611:1 | exit fn phi | | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:14 | ...: bool | match | -| main.rs:595:8:595:14 | ...: bool | main.rs:596:5:596:18 | let ... = 1 | | -| main.rs:595:17:611:1 | { ... } | main.rs:595:1:611:1 | exit fn phi (normal) | | -| main.rs:596:5:596:18 | let ... = 1 | main.rs:596:17:596:17 | 1 | | -| main.rs:596:9:596:13 | mut x | main.rs:597:5:597:17 | ExprStmt | match | -| main.rs:596:13:596:13 | x | main.rs:596:9:596:13 | mut x | | -| main.rs:596:17:596:17 | 1 | main.rs:596:13:596:13 | x | | -| main.rs:597:5:597:13 | print_i64 | main.rs:597:15:597:15 | x | | -| main.rs:597:5:597:16 | print_i64(...) | main.rs:598:5:598:21 | ExprStmt | | -| main.rs:597:5:597:17 | ExprStmt | main.rs:597:5:597:13 | print_i64 | | -| main.rs:597:15:597:15 | x | main.rs:597:5:597:16 | print_i64(...) | | -| main.rs:598:5:598:13 | print_i64 | main.rs:598:15:598:15 | x | | -| main.rs:598:5:598:20 | print_i64(...) | main.rs:599:5:609:6 | let _ = ... | | -| main.rs:598:5:598:21 | ExprStmt | main.rs:598:5:598:13 | print_i64 | | -| main.rs:598:15:598:15 | x | main.rs:598:19:598:19 | 1 | | -| main.rs:598:15:598:19 | ... + ... | main.rs:598:5:598:20 | print_i64(...) | | -| main.rs:598:19:598:19 | 1 | main.rs:598:15:598:19 | ... + ... | | -| main.rs:599:5:609:6 | let _ = ... | main.rs:600:16:600:16 | b | | -| main.rs:600:9:600:9 | _ | main.rs:610:5:610:17 | ExprStmt | match | -| main.rs:600:13:609:5 | if b {...} else {...} | main.rs:600:9:600:9 | _ | | -| main.rs:600:16:600:16 | b | main.rs:602:9:602:14 | ExprStmt | true | -| main.rs:600:16:600:16 | b | main.rs:606:9:606:14 | ExprStmt | false | -| main.rs:601:5:605:5 | { ... } | main.rs:600:13:609:5 | if b {...} else {...} | | -| main.rs:602:9:602:9 | x | main.rs:602:13:602:13 | 2 | | -| main.rs:602:9:602:13 | ... = ... | main.rs:603:9:603:21 | ExprStmt | | -| main.rs:602:9:602:14 | ExprStmt | main.rs:602:9:602:9 | x | | -| main.rs:602:13:602:13 | 2 | main.rs:602:9:602:13 | ... = ... | | -| main.rs:603:9:603:17 | print_i64 | main.rs:603:19:603:19 | x | | -| main.rs:603:9:603:20 | print_i64(...) | main.rs:604:9:604:25 | ExprStmt | | -| main.rs:603:9:603:21 | ExprStmt | main.rs:603:9:603:17 | print_i64 | | -| main.rs:603:19:603:19 | x | main.rs:603:9:603:20 | print_i64(...) | | -| main.rs:604:9:604:17 | print_i64 | main.rs:604:19:604:19 | x | | -| main.rs:604:9:604:24 | print_i64(...) | main.rs:601:5:605:5 | { ... } | | -| main.rs:604:9:604:25 | ExprStmt | main.rs:604:9:604:17 | print_i64 | | -| main.rs:604:19:604:19 | x | main.rs:604:23:604:23 | 1 | | -| main.rs:604:19:604:23 | ... + ... | main.rs:604:9:604:24 | print_i64(...) | | -| main.rs:604:23:604:23 | 1 | main.rs:604:19:604:23 | ... + ... | | -| main.rs:605:12:609:5 | { ... } | main.rs:600:13:609:5 | if b {...} else {...} | | -| main.rs:606:9:606:9 | x | main.rs:606:13:606:13 | 3 | | -| main.rs:606:9:606:13 | ... = ... | main.rs:607:9:607:21 | ExprStmt | | -| main.rs:606:9:606:14 | ExprStmt | main.rs:606:9:606:9 | x | | -| main.rs:606:13:606:13 | 3 | main.rs:606:9:606:13 | ... = ... | | -| main.rs:607:9:607:17 | print_i64 | main.rs:607:19:607:19 | x | | -| main.rs:607:9:607:20 | print_i64(...) | main.rs:608:9:608:25 | ExprStmt | | -| main.rs:607:9:607:21 | ExprStmt | main.rs:607:9:607:17 | print_i64 | | -| main.rs:607:19:607:19 | x | main.rs:607:9:607:20 | print_i64(...) | | -| main.rs:608:9:608:17 | print_i64 | main.rs:608:19:608:19 | x | | -| main.rs:608:9:608:24 | print_i64(...) | main.rs:605:12:609:5 | { ... } | | -| main.rs:608:9:608:25 | ExprStmt | main.rs:608:9:608:17 | print_i64 | | -| main.rs:608:19:608:19 | x | main.rs:608:23:608:23 | 1 | | -| main.rs:608:19:608:23 | ... + ... | main.rs:608:9:608:24 | print_i64(...) | | -| main.rs:608:23:608:23 | 1 | main.rs:608:19:608:23 | ... + ... | | -| main.rs:610:5:610:13 | print_i64 | main.rs:610:15:610:15 | x | | -| main.rs:610:5:610:16 | print_i64(...) | main.rs:595:17:611:1 | { ... } | | -| main.rs:610:5:610:17 | ExprStmt | main.rs:610:5:610:13 | print_i64 | | -| main.rs:610:15:610:15 | x | main.rs:610:5:610:16 | print_i64(...) | | -| main.rs:613:1:630:1 | enter fn phi_read | main.rs:613:13:613:14 | b1 | | -| main.rs:613:1:630:1 | exit fn phi_read (normal) | main.rs:613:1:630:1 | exit fn phi_read | | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:20 | ...: bool | match | -| main.rs:613:13:613:20 | ...: bool | main.rs:613:23:613:24 | b2 | | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:30 | ...: bool | match | -| main.rs:613:23:613:30 | ...: bool | main.rs:614:5:614:14 | let ... = 1 | | -| main.rs:613:33:630:1 | { ... } | main.rs:613:1:630:1 | exit fn phi_read (normal) | | -| main.rs:614:5:614:14 | let ... = 1 | main.rs:614:13:614:13 | 1 | | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | | -| main.rs:614:9:614:9 | x | main.rs:615:5:621:6 | let _ = ... | match | -| main.rs:614:13:614:13 | 1 | main.rs:614:9:614:9 | x | | -| main.rs:615:5:621:6 | let _ = ... | main.rs:616:16:616:17 | b1 | | -| main.rs:616:9:616:9 | _ | main.rs:623:5:629:6 | let _ = ... | match | -| main.rs:616:13:621:5 | if b1 {...} else {...} | main.rs:616:9:616:9 | _ | | -| main.rs:616:16:616:17 | b1 | main.rs:618:9:618:21 | ExprStmt | true | -| main.rs:616:16:616:17 | b1 | main.rs:620:9:620:21 | ExprStmt | false | -| main.rs:617:5:619:5 | { ... } | main.rs:616:13:621:5 | if b1 {...} else {...} | | +| main.rs:567:1:594:1 | enter fn capture_mut | main.rs:568:5:568:18 | let ... = 1 | | +| main.rs:567:1:594:1 | exit fn capture_mut (normal) | main.rs:567:1:594:1 | exit fn capture_mut | | +| main.rs:567:18:594:1 | { ... } | main.rs:567:1:594:1 | exit fn capture_mut (normal) | | +| main.rs:568:5:568:18 | let ... = 1 | main.rs:568:17:568:17 | 1 | | +| main.rs:568:9:568:13 | mut x | main.rs:571:5:573:6 | let ... = ... | match | +| main.rs:568:13:568:13 | x | main.rs:568:9:568:13 | mut x | | +| main.rs:568:17:568:17 | 1 | main.rs:568:13:568:13 | x | | +| main.rs:571:5:573:6 | let ... = ... | main.rs:571:20:573:5 | \|...\| ... | | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | | +| main.rs:571:9:571:16 | closure1 | main.rs:574:5:574:15 | ExprStmt | match | +| main.rs:571:20:573:5 | \|...\| ... | main.rs:571:9:571:16 | closure1 | | +| main.rs:571:20:573:5 | enter \|...\| ... | main.rs:572:9:572:21 | ExprStmt | | +| main.rs:571:20:573:5 | exit \|...\| ... (normal) | main.rs:571:20:573:5 | exit \|...\| ... | | +| main.rs:571:23:573:5 | { ... } | main.rs:571:20:573:5 | exit \|...\| ... (normal) | | +| main.rs:572:9:572:17 | print_i64 | main.rs:572:19:572:19 | x | | +| main.rs:572:9:572:20 | print_i64(...) | main.rs:571:23:573:5 | { ... } | | +| main.rs:572:9:572:21 | ExprStmt | main.rs:572:9:572:17 | print_i64 | | +| main.rs:572:19:572:19 | x | main.rs:572:9:572:20 | print_i64(...) | | +| main.rs:574:5:574:12 | closure1 | main.rs:574:5:574:14 | closure1(...) | | +| main.rs:574:5:574:14 | closure1(...) | main.rs:575:5:575:17 | ExprStmt | | +| main.rs:574:5:574:15 | ExprStmt | main.rs:574:5:574:12 | closure1 | | +| main.rs:575:5:575:13 | print_i64 | main.rs:575:15:575:15 | x | | +| main.rs:575:5:575:16 | print_i64(...) | main.rs:577:5:577:18 | let ... = 2 | | +| main.rs:575:5:575:17 | ExprStmt | main.rs:575:5:575:13 | print_i64 | | +| main.rs:575:15:575:15 | x | main.rs:575:5:575:16 | print_i64(...) | | +| main.rs:577:5:577:18 | let ... = 2 | main.rs:577:17:577:17 | 2 | | +| main.rs:577:9:577:13 | mut y | main.rs:580:5:582:6 | let ... = ... | match | +| main.rs:577:13:577:13 | y | main.rs:577:9:577:13 | mut y | | +| main.rs:577:17:577:17 | 2 | main.rs:577:13:577:13 | y | | +| main.rs:580:5:582:6 | let ... = ... | main.rs:580:24:582:5 | \|...\| ... | | +| main.rs:580:9:580:20 | mut closure2 | main.rs:583:5:583:15 | ExprStmt | match | +| main.rs:580:13:580:20 | closure2 | main.rs:580:9:580:20 | mut closure2 | | +| main.rs:580:24:582:5 | \|...\| ... | main.rs:580:13:580:20 | closure2 | | +| main.rs:580:24:582:5 | enter \|...\| ... | main.rs:581:9:581:14 | ExprStmt | | +| main.rs:580:24:582:5 | exit \|...\| ... (normal) | main.rs:580:24:582:5 | exit \|...\| ... | | +| main.rs:580:27:582:5 | { ... } | main.rs:580:24:582:5 | exit \|...\| ... (normal) | | +| main.rs:581:9:581:9 | y | main.rs:581:13:581:13 | 3 | | +| main.rs:581:9:581:13 | ... = ... | main.rs:580:27:582:5 | { ... } | | +| main.rs:581:9:581:14 | ExprStmt | main.rs:581:9:581:9 | y | | +| main.rs:581:13:581:13 | 3 | main.rs:581:9:581:13 | ... = ... | | +| main.rs:583:5:583:12 | closure2 | main.rs:583:5:583:14 | closure2(...) | | +| main.rs:583:5:583:14 | closure2(...) | main.rs:584:5:584:17 | ExprStmt | | +| main.rs:583:5:583:15 | ExprStmt | main.rs:583:5:583:12 | closure2 | | +| main.rs:584:5:584:13 | print_i64 | main.rs:584:15:584:15 | y | | +| main.rs:584:5:584:16 | print_i64(...) | main.rs:586:5:586:18 | let ... = 2 | | +| main.rs:584:5:584:17 | ExprStmt | main.rs:584:5:584:13 | print_i64 | | +| main.rs:584:15:584:15 | y | main.rs:584:5:584:16 | print_i64(...) | | +| main.rs:586:5:586:18 | let ... = 2 | main.rs:586:17:586:17 | 2 | | +| main.rs:586:9:586:13 | mut z | main.rs:589:5:591:6 | let ... = ... | match | +| main.rs:586:13:586:13 | z | main.rs:586:9:586:13 | mut z | | +| main.rs:586:17:586:17 | 2 | main.rs:586:13:586:13 | z | | +| main.rs:589:5:591:6 | let ... = ... | main.rs:589:24:591:5 | \|...\| ... | | +| main.rs:589:9:589:20 | mut closure3 | main.rs:592:5:592:15 | ExprStmt | match | +| main.rs:589:13:589:20 | closure3 | main.rs:589:9:589:20 | mut closure3 | | +| main.rs:589:24:591:5 | \|...\| ... | main.rs:589:13:589:20 | closure3 | | +| main.rs:589:24:591:5 | enter \|...\| ... | main.rs:590:9:590:24 | ExprStmt | | +| main.rs:589:24:591:5 | exit \|...\| ... (normal) | main.rs:589:24:591:5 | exit \|...\| ... | | +| main.rs:589:27:591:5 | { ... } | main.rs:589:24:591:5 | exit \|...\| ... (normal) | | +| main.rs:590:9:590:9 | z | main.rs:590:22:590:22 | 1 | | +| main.rs:590:9:590:23 | z.add_assign(...) | main.rs:589:27:591:5 | { ... } | | +| main.rs:590:9:590:24 | ExprStmt | main.rs:590:9:590:9 | z | | +| main.rs:590:22:590:22 | 1 | main.rs:590:9:590:23 | z.add_assign(...) | | +| main.rs:592:5:592:12 | closure3 | main.rs:592:5:592:14 | closure3(...) | | +| main.rs:592:5:592:14 | closure3(...) | main.rs:593:5:593:17 | ExprStmt | | +| main.rs:592:5:592:15 | ExprStmt | main.rs:592:5:592:12 | closure3 | | +| main.rs:593:5:593:13 | print_i64 | main.rs:593:15:593:15 | z | | +| main.rs:593:5:593:16 | print_i64(...) | main.rs:567:18:594:1 | { ... } | | +| main.rs:593:5:593:17 | ExprStmt | main.rs:593:5:593:13 | print_i64 | | +| main.rs:593:15:593:15 | z | main.rs:593:5:593:16 | print_i64(...) | | +| main.rs:596:1:604:1 | enter fn async_block_capture | main.rs:597:5:597:23 | let ... = 0 | | +| main.rs:596:1:604:1 | exit fn async_block_capture (normal) | main.rs:596:1:604:1 | exit fn async_block_capture | | +| main.rs:596:32:604:1 | { ... } | main.rs:596:1:604:1 | exit fn async_block_capture (normal) | | +| main.rs:597:5:597:23 | let ... = 0 | main.rs:597:22:597:22 | 0 | | +| main.rs:597:9:597:13 | mut i | main.rs:598:5:600:6 | let ... = ... | match | +| main.rs:597:13:597:13 | i | main.rs:597:9:597:13 | mut i | | +| main.rs:597:22:597:22 | 0 | main.rs:597:13:597:13 | i | | +| main.rs:598:5:600:6 | let ... = ... | main.rs:598:17:600:5 | { ... } | | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | | +| main.rs:598:9:598:13 | block | main.rs:602:5:602:16 | ExprStmt | match | +| main.rs:598:17:600:5 | enter { ... } | main.rs:599:9:599:14 | ExprStmt | | +| main.rs:598:17:600:5 | exit { ... } (normal) | main.rs:598:17:600:5 | exit { ... } | | +| main.rs:598:17:600:5 | { ... } | main.rs:598:9:598:13 | block | | +| main.rs:599:9:599:9 | i | main.rs:599:13:599:13 | 1 | | +| main.rs:599:9:599:13 | ... = ... | main.rs:598:17:600:5 | exit { ... } (normal) | | +| main.rs:599:9:599:14 | ExprStmt | main.rs:599:9:599:9 | i | | +| main.rs:599:13:599:13 | 1 | main.rs:599:9:599:13 | ... = ... | | +| main.rs:602:5:602:9 | block | main.rs:602:5:602:15 | await block | | +| main.rs:602:5:602:15 | await block | main.rs:603:5:603:17 | ExprStmt | | +| main.rs:602:5:602:16 | ExprStmt | main.rs:602:5:602:9 | block | | +| main.rs:603:5:603:13 | print_i64 | main.rs:603:15:603:15 | i | | +| main.rs:603:5:603:16 | print_i64(...) | main.rs:596:32:604:1 | { ... } | | +| main.rs:603:5:603:17 | ExprStmt | main.rs:603:5:603:13 | print_i64 | | +| main.rs:603:15:603:15 | i | main.rs:603:5:603:16 | print_i64(...) | | +| main.rs:606:1:622:1 | enter fn phi | main.rs:606:8:606:8 | b | | +| main.rs:606:1:622:1 | exit fn phi (normal) | main.rs:606:1:622:1 | exit fn phi | | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:14 | ...: bool | match | +| main.rs:606:8:606:14 | ...: bool | main.rs:607:5:607:18 | let ... = 1 | | +| main.rs:606:17:622:1 | { ... } | main.rs:606:1:622:1 | exit fn phi (normal) | | +| main.rs:607:5:607:18 | let ... = 1 | main.rs:607:17:607:17 | 1 | | +| main.rs:607:9:607:13 | mut x | main.rs:608:5:608:17 | ExprStmt | match | +| main.rs:607:13:607:13 | x | main.rs:607:9:607:13 | mut x | | +| main.rs:607:17:607:17 | 1 | main.rs:607:13:607:13 | x | | +| main.rs:608:5:608:13 | print_i64 | main.rs:608:15:608:15 | x | | +| main.rs:608:5:608:16 | print_i64(...) | main.rs:609:5:609:21 | ExprStmt | | +| main.rs:608:5:608:17 | ExprStmt | main.rs:608:5:608:13 | print_i64 | | +| main.rs:608:15:608:15 | x | main.rs:608:5:608:16 | print_i64(...) | | +| main.rs:609:5:609:13 | print_i64 | main.rs:609:15:609:15 | x | | +| main.rs:609:5:609:20 | print_i64(...) | main.rs:610:5:620:6 | let _ = ... | | +| main.rs:609:5:609:21 | ExprStmt | main.rs:609:5:609:13 | print_i64 | | +| main.rs:609:15:609:15 | x | main.rs:609:19:609:19 | 1 | | +| main.rs:609:15:609:19 | ... + ... | main.rs:609:5:609:20 | print_i64(...) | | +| main.rs:609:19:609:19 | 1 | main.rs:609:15:609:19 | ... + ... | | +| main.rs:610:5:620:6 | let _ = ... | main.rs:611:16:611:16 | b | | +| main.rs:611:9:611:9 | _ | main.rs:621:5:621:17 | ExprStmt | match | +| main.rs:611:13:620:5 | if b {...} else {...} | main.rs:611:9:611:9 | _ | | +| main.rs:611:16:611:16 | b | main.rs:613:9:613:14 | ExprStmt | true | +| main.rs:611:16:611:16 | b | main.rs:617:9:617:14 | ExprStmt | false | +| main.rs:612:5:616:5 | { ... } | main.rs:611:13:620:5 | if b {...} else {...} | | +| main.rs:613:9:613:9 | x | main.rs:613:13:613:13 | 2 | | +| main.rs:613:9:613:13 | ... = ... | main.rs:614:9:614:21 | ExprStmt | | +| main.rs:613:9:613:14 | ExprStmt | main.rs:613:9:613:9 | x | | +| main.rs:613:13:613:13 | 2 | main.rs:613:9:613:13 | ... = ... | | +| main.rs:614:9:614:17 | print_i64 | main.rs:614:19:614:19 | x | | +| main.rs:614:9:614:20 | print_i64(...) | main.rs:615:9:615:25 | ExprStmt | | +| main.rs:614:9:614:21 | ExprStmt | main.rs:614:9:614:17 | print_i64 | | +| main.rs:614:19:614:19 | x | main.rs:614:9:614:20 | print_i64(...) | | +| main.rs:615:9:615:17 | print_i64 | main.rs:615:19:615:19 | x | | +| main.rs:615:9:615:24 | print_i64(...) | main.rs:612:5:616:5 | { ... } | | +| main.rs:615:9:615:25 | ExprStmt | main.rs:615:9:615:17 | print_i64 | | +| main.rs:615:19:615:19 | x | main.rs:615:23:615:23 | 1 | | +| main.rs:615:19:615:23 | ... + ... | main.rs:615:9:615:24 | print_i64(...) | | +| main.rs:615:23:615:23 | 1 | main.rs:615:19:615:23 | ... + ... | | +| main.rs:616:12:620:5 | { ... } | main.rs:611:13:620:5 | if b {...} else {...} | | +| main.rs:617:9:617:9 | x | main.rs:617:13:617:13 | 3 | | +| main.rs:617:9:617:13 | ... = ... | main.rs:618:9:618:21 | ExprStmt | | +| main.rs:617:9:617:14 | ExprStmt | main.rs:617:9:617:9 | x | | +| main.rs:617:13:617:13 | 3 | main.rs:617:9:617:13 | ... = ... | | | main.rs:618:9:618:17 | print_i64 | main.rs:618:19:618:19 | x | | -| main.rs:618:9:618:20 | print_i64(...) | main.rs:617:5:619:5 | { ... } | | +| main.rs:618:9:618:20 | print_i64(...) | main.rs:619:9:619:25 | ExprStmt | | | main.rs:618:9:618:21 | ExprStmt | main.rs:618:9:618:17 | print_i64 | | | main.rs:618:19:618:19 | x | main.rs:618:9:618:20 | print_i64(...) | | -| main.rs:619:12:621:5 | { ... } | main.rs:616:13:621:5 | if b1 {...} else {...} | | -| main.rs:620:9:620:17 | print_i64 | main.rs:620:19:620:19 | x | | -| main.rs:620:9:620:20 | print_i64(...) | main.rs:619:12:621:5 | { ... } | | -| main.rs:620:9:620:21 | ExprStmt | main.rs:620:9:620:17 | print_i64 | | -| main.rs:620:19:620:19 | x | main.rs:620:9:620:20 | print_i64(...) | | -| main.rs:623:5:629:6 | let _ = ... | main.rs:624:16:624:17 | b2 | | -| main.rs:624:9:624:9 | _ | main.rs:613:33:630:1 | { ... } | match | -| main.rs:624:13:629:5 | if b2 {...} else {...} | main.rs:624:9:624:9 | _ | | -| main.rs:624:16:624:17 | b2 | main.rs:626:9:626:21 | ExprStmt | true | -| main.rs:624:16:624:17 | b2 | main.rs:628:9:628:21 | ExprStmt | false | -| main.rs:625:5:627:5 | { ... } | main.rs:624:13:629:5 | if b2 {...} else {...} | | -| main.rs:626:9:626:17 | print_i64 | main.rs:626:19:626:19 | x | | -| main.rs:626:9:626:20 | print_i64(...) | main.rs:625:5:627:5 | { ... } | | -| main.rs:626:9:626:21 | ExprStmt | main.rs:626:9:626:17 | print_i64 | | -| main.rs:626:19:626:19 | x | main.rs:626:9:626:20 | print_i64(...) | | -| main.rs:627:12:629:5 | { ... } | main.rs:624:13:629:5 | if b2 {...} else {...} | | -| main.rs:628:9:628:17 | print_i64 | main.rs:628:19:628:19 | x | | -| main.rs:628:9:628:20 | print_i64(...) | main.rs:627:12:629:5 | { ... } | | -| main.rs:628:9:628:21 | ExprStmt | main.rs:628:9:628:17 | print_i64 | | -| main.rs:628:19:628:19 | x | main.rs:628:9:628:20 | print_i64(...) | | -| main.rs:637:5:639:5 | enter fn my_get | main.rs:637:20:637:23 | self | | -| main.rs:637:5:639:5 | exit fn my_get (normal) | main.rs:637:5:639:5 | exit fn my_get | | -| main.rs:637:15:637:23 | SelfParam | main.rs:638:9:638:24 | ExprStmt | | -| main.rs:637:20:637:23 | self | main.rs:637:15:637:23 | SelfParam | | -| main.rs:638:9:638:23 | return ... | main.rs:637:5:639:5 | exit fn my_get (normal) | return | -| main.rs:638:9:638:24 | ExprStmt | main.rs:638:16:638:19 | self | | -| main.rs:638:16:638:19 | self | main.rs:638:16:638:23 | self.val | | -| main.rs:638:16:638:23 | self.val | main.rs:638:9:638:23 | return ... | | -| main.rs:641:5:643:5 | enter fn id | main.rs:641:11:641:14 | self | | -| main.rs:641:5:643:5 | exit fn id (normal) | main.rs:641:5:643:5 | exit fn id | | -| main.rs:641:11:641:14 | SelfParam | main.rs:642:9:642:12 | self | | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | SelfParam | | -| main.rs:641:25:643:5 | { ... } | main.rs:641:5:643:5 | exit fn id (normal) | | -| main.rs:642:9:642:12 | self | main.rs:641:25:643:5 | { ... } | | -| main.rs:645:5:652:5 | enter fn my_method | main.rs:645:23:645:26 | self | | -| main.rs:645:5:652:5 | exit fn my_method (normal) | main.rs:645:5:652:5 | exit fn my_method | | -| main.rs:645:18:645:26 | SelfParam | main.rs:646:9:649:10 | let ... = ... | | -| main.rs:645:23:645:26 | self | main.rs:645:18:645:26 | SelfParam | | -| main.rs:645:29:652:5 | { ... } | main.rs:645:5:652:5 | exit fn my_method (normal) | | -| main.rs:646:9:649:10 | let ... = ... | main.rs:646:21:649:9 | \|...\| ... | | -| main.rs:646:13:646:17 | mut f | main.rs:650:9:650:13 | ExprStmt | match | -| main.rs:646:17:646:17 | f | main.rs:646:13:646:17 | mut f | | -| main.rs:646:21:649:9 | \|...\| ... | main.rs:646:17:646:17 | f | | -| main.rs:646:21:649:9 | enter \|...\| ... | main.rs:646:22:646:22 | n | | -| main.rs:646:21:649:9 | exit \|...\| ... (normal) | main.rs:646:21:649:9 | exit \|...\| ... | | -| main.rs:646:22:646:22 | ... | main.rs:648:13:648:26 | ExprStmt | | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | ... | match | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | | -| main.rs:646:25:649:9 | { ... } | main.rs:646:21:649:9 | exit \|...\| ... (normal) | | -| main.rs:648:13:648:16 | self | main.rs:648:13:648:20 | self.val | | -| main.rs:648:13:648:20 | self.val | main.rs:648:25:648:25 | n | | -| main.rs:648:13:648:25 | ... += ... | main.rs:646:25:649:9 | { ... } | | -| main.rs:648:13:648:26 | ExprStmt | main.rs:648:13:648:16 | self | | -| main.rs:648:25:648:25 | n | main.rs:648:13:648:25 | ... += ... | | -| main.rs:650:9:650:9 | f | main.rs:650:11:650:11 | 3 | | -| main.rs:650:9:650:12 | f(...) | main.rs:651:9:651:13 | ExprStmt | | -| main.rs:650:9:650:13 | ExprStmt | main.rs:650:9:650:9 | f | | -| main.rs:650:11:650:11 | 3 | main.rs:650:9:650:12 | f(...) | | -| main.rs:651:9:651:9 | f | main.rs:651:11:651:11 | 4 | | -| main.rs:651:9:651:12 | f(...) | main.rs:645:29:652:5 | { ... } | | -| main.rs:651:9:651:13 | ExprStmt | main.rs:651:9:651:9 | f | | -| main.rs:651:11:651:11 | 4 | main.rs:651:9:651:12 | f(...) | | -| main.rs:655:1:662:1 | enter fn structs | main.rs:656:5:656:36 | let ... = ... | | -| main.rs:655:1:662:1 | exit fn structs (normal) | main.rs:655:1:662:1 | exit fn structs | | -| main.rs:655:14:662:1 | { ... } | main.rs:655:1:662:1 | exit fn structs (normal) | | -| main.rs:656:5:656:36 | let ... = ... | main.rs:656:33:656:33 | 1 | | -| main.rs:656:9:656:13 | mut a | main.rs:657:5:657:26 | ExprStmt | match | -| main.rs:656:13:656:13 | a | main.rs:656:9:656:13 | mut a | | -| main.rs:656:17:656:35 | MyStruct {...} | main.rs:656:13:656:13 | a | | -| main.rs:656:33:656:33 | 1 | main.rs:656:17:656:35 | MyStruct {...} | | -| main.rs:657:5:657:13 | print_i64 | main.rs:657:15:657:15 | a | | -| main.rs:657:5:657:25 | print_i64(...) | main.rs:658:5:658:14 | ExprStmt | | -| main.rs:657:5:657:26 | ExprStmt | main.rs:657:5:657:13 | print_i64 | | -| main.rs:657:15:657:15 | a | main.rs:657:15:657:24 | a.my_get() | | -| main.rs:657:15:657:24 | a.my_get() | main.rs:657:5:657:25 | print_i64(...) | | -| main.rs:658:5:658:5 | a | main.rs:658:5:658:9 | a.val | | -| main.rs:658:5:658:9 | a.val | main.rs:658:13:658:13 | 5 | | -| main.rs:658:5:658:13 | ... = ... | main.rs:659:5:659:26 | ExprStmt | | -| main.rs:658:5:658:14 | ExprStmt | main.rs:658:5:658:5 | a | | -| main.rs:658:13:658:13 | 5 | main.rs:658:5:658:13 | ... = ... | | -| main.rs:659:5:659:13 | print_i64 | main.rs:659:15:659:15 | a | | -| main.rs:659:5:659:25 | print_i64(...) | main.rs:660:5:660:28 | ExprStmt | | -| main.rs:659:5:659:26 | ExprStmt | main.rs:659:5:659:13 | print_i64 | | -| main.rs:659:15:659:15 | a | main.rs:659:15:659:24 | a.my_get() | | -| main.rs:659:15:659:24 | a.my_get() | main.rs:659:5:659:25 | print_i64(...) | | -| main.rs:660:5:660:5 | a | main.rs:660:25:660:25 | 2 | | -| main.rs:660:5:660:27 | ... = ... | main.rs:661:5:661:26 | ExprStmt | | -| main.rs:660:5:660:28 | ExprStmt | main.rs:660:5:660:5 | a | | -| main.rs:660:9:660:27 | MyStruct {...} | main.rs:660:5:660:27 | ... = ... | | -| main.rs:660:25:660:25 | 2 | main.rs:660:9:660:27 | MyStruct {...} | | -| main.rs:661:5:661:13 | print_i64 | main.rs:661:15:661:15 | a | | -| main.rs:661:5:661:25 | print_i64(...) | main.rs:655:14:662:1 | { ... } | | -| main.rs:661:5:661:26 | ExprStmt | main.rs:661:5:661:13 | print_i64 | | -| main.rs:661:15:661:15 | a | main.rs:661:15:661:24 | a.my_get() | | -| main.rs:661:15:661:24 | a.my_get() | main.rs:661:5:661:25 | print_i64(...) | | -| main.rs:664:1:671:1 | enter fn arrays | main.rs:665:5:665:26 | let ... = ... | | -| main.rs:664:1:671:1 | exit fn arrays (normal) | main.rs:664:1:671:1 | exit fn arrays | | -| main.rs:664:13:671:1 | { ... } | main.rs:664:1:671:1 | exit fn arrays (normal) | | -| main.rs:665:5:665:26 | let ... = ... | main.rs:665:18:665:18 | 1 | | -| main.rs:665:9:665:13 | mut a | main.rs:666:5:666:20 | ExprStmt | match | -| main.rs:665:13:665:13 | a | main.rs:665:9:665:13 | mut a | | -| main.rs:665:17:665:25 | [...] | main.rs:665:13:665:13 | a | | -| main.rs:665:18:665:18 | 1 | main.rs:665:21:665:21 | 2 | | -| main.rs:665:21:665:21 | 2 | main.rs:665:24:665:24 | 3 | | -| main.rs:665:24:665:24 | 3 | main.rs:665:17:665:25 | [...] | | -| main.rs:666:5:666:13 | print_i64 | main.rs:666:15:666:15 | a | | -| main.rs:666:5:666:19 | print_i64(...) | main.rs:667:5:667:13 | ExprStmt | | -| main.rs:666:5:666:20 | ExprStmt | main.rs:666:5:666:13 | print_i64 | | -| main.rs:666:15:666:15 | a | main.rs:666:17:666:17 | 0 | | -| main.rs:666:15:666:18 | a[0] | main.rs:666:5:666:19 | print_i64(...) | | -| main.rs:666:17:666:17 | 0 | main.rs:666:15:666:18 | a[0] | | -| main.rs:667:5:667:5 | a | main.rs:667:7:667:7 | 1 | | -| main.rs:667:5:667:8 | a[1] | main.rs:667:12:667:12 | 5 | | -| main.rs:667:5:667:12 | ... = ... | main.rs:668:5:668:20 | ExprStmt | | -| main.rs:667:5:667:13 | ExprStmt | main.rs:667:5:667:5 | a | | -| main.rs:667:7:667:7 | 1 | main.rs:667:5:667:8 | a[1] | | -| main.rs:667:12:667:12 | 5 | main.rs:667:5:667:12 | ... = ... | | +| main.rs:619:9:619:17 | print_i64 | main.rs:619:19:619:19 | x | | +| main.rs:619:9:619:24 | print_i64(...) | main.rs:616:12:620:5 | { ... } | | +| main.rs:619:9:619:25 | ExprStmt | main.rs:619:9:619:17 | print_i64 | | +| main.rs:619:19:619:19 | x | main.rs:619:23:619:23 | 1 | | +| main.rs:619:19:619:23 | ... + ... | main.rs:619:9:619:24 | print_i64(...) | | +| main.rs:619:23:619:23 | 1 | main.rs:619:19:619:23 | ... + ... | | +| main.rs:621:5:621:13 | print_i64 | main.rs:621:15:621:15 | x | | +| main.rs:621:5:621:16 | print_i64(...) | main.rs:606:17:622:1 | { ... } | | +| main.rs:621:5:621:17 | ExprStmt | main.rs:621:5:621:13 | print_i64 | | +| main.rs:621:15:621:15 | x | main.rs:621:5:621:16 | print_i64(...) | | +| main.rs:624:1:641:1 | enter fn phi_read | main.rs:624:13:624:14 | b1 | | +| main.rs:624:1:641:1 | exit fn phi_read (normal) | main.rs:624:1:641:1 | exit fn phi_read | | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:20 | ...: bool | match | +| main.rs:624:13:624:20 | ...: bool | main.rs:624:23:624:24 | b2 | | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:30 | ...: bool | match | +| main.rs:624:23:624:30 | ...: bool | main.rs:625:5:625:14 | let ... = 1 | | +| main.rs:624:33:641:1 | { ... } | main.rs:624:1:641:1 | exit fn phi_read (normal) | | +| main.rs:625:5:625:14 | let ... = 1 | main.rs:625:13:625:13 | 1 | | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | | +| main.rs:625:9:625:9 | x | main.rs:626:5:632:6 | let _ = ... | match | +| main.rs:625:13:625:13 | 1 | main.rs:625:9:625:9 | x | | +| main.rs:626:5:632:6 | let _ = ... | main.rs:627:16:627:17 | b1 | | +| main.rs:627:9:627:9 | _ | main.rs:634:5:640:6 | let _ = ... | match | +| main.rs:627:13:632:5 | if b1 {...} else {...} | main.rs:627:9:627:9 | _ | | +| main.rs:627:16:627:17 | b1 | main.rs:629:9:629:21 | ExprStmt | true | +| main.rs:627:16:627:17 | b1 | main.rs:631:9:631:21 | ExprStmt | false | +| main.rs:628:5:630:5 | { ... } | main.rs:627:13:632:5 | if b1 {...} else {...} | | +| main.rs:629:9:629:17 | print_i64 | main.rs:629:19:629:19 | x | | +| main.rs:629:9:629:20 | print_i64(...) | main.rs:628:5:630:5 | { ... } | | +| main.rs:629:9:629:21 | ExprStmt | main.rs:629:9:629:17 | print_i64 | | +| main.rs:629:19:629:19 | x | main.rs:629:9:629:20 | print_i64(...) | | +| main.rs:630:12:632:5 | { ... } | main.rs:627:13:632:5 | if b1 {...} else {...} | | +| main.rs:631:9:631:17 | print_i64 | main.rs:631:19:631:19 | x | | +| main.rs:631:9:631:20 | print_i64(...) | main.rs:630:12:632:5 | { ... } | | +| main.rs:631:9:631:21 | ExprStmt | main.rs:631:9:631:17 | print_i64 | | +| main.rs:631:19:631:19 | x | main.rs:631:9:631:20 | print_i64(...) | | +| main.rs:634:5:640:6 | let _ = ... | main.rs:635:16:635:17 | b2 | | +| main.rs:635:9:635:9 | _ | main.rs:624:33:641:1 | { ... } | match | +| main.rs:635:13:640:5 | if b2 {...} else {...} | main.rs:635:9:635:9 | _ | | +| main.rs:635:16:635:17 | b2 | main.rs:637:9:637:21 | ExprStmt | true | +| main.rs:635:16:635:17 | b2 | main.rs:639:9:639:21 | ExprStmt | false | +| main.rs:636:5:638:5 | { ... } | main.rs:635:13:640:5 | if b2 {...} else {...} | | +| main.rs:637:9:637:17 | print_i64 | main.rs:637:19:637:19 | x | | +| main.rs:637:9:637:20 | print_i64(...) | main.rs:636:5:638:5 | { ... } | | +| main.rs:637:9:637:21 | ExprStmt | main.rs:637:9:637:17 | print_i64 | | +| main.rs:637:19:637:19 | x | main.rs:637:9:637:20 | print_i64(...) | | +| main.rs:638:12:640:5 | { ... } | main.rs:635:13:640:5 | if b2 {...} else {...} | | +| main.rs:639:9:639:17 | print_i64 | main.rs:639:19:639:19 | x | | +| main.rs:639:9:639:20 | print_i64(...) | main.rs:638:12:640:5 | { ... } | | +| main.rs:639:9:639:21 | ExprStmt | main.rs:639:9:639:17 | print_i64 | | +| main.rs:639:19:639:19 | x | main.rs:639:9:639:20 | print_i64(...) | | +| main.rs:648:5:650:5 | enter fn my_get | main.rs:648:20:648:23 | self | | +| main.rs:648:5:650:5 | exit fn my_get (normal) | main.rs:648:5:650:5 | exit fn my_get | | +| main.rs:648:15:648:23 | SelfParam | main.rs:649:9:649:24 | ExprStmt | | +| main.rs:648:20:648:23 | self | main.rs:648:15:648:23 | SelfParam | | +| main.rs:649:9:649:23 | return ... | main.rs:648:5:650:5 | exit fn my_get (normal) | return | +| main.rs:649:9:649:24 | ExprStmt | main.rs:649:16:649:19 | self | | +| main.rs:649:16:649:19 | self | main.rs:649:16:649:23 | self.val | | +| main.rs:649:16:649:23 | self.val | main.rs:649:9:649:23 | return ... | | +| main.rs:652:5:654:5 | enter fn id | main.rs:652:11:652:14 | self | | +| main.rs:652:5:654:5 | exit fn id (normal) | main.rs:652:5:654:5 | exit fn id | | +| main.rs:652:11:652:14 | SelfParam | main.rs:653:9:653:12 | self | | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | SelfParam | | +| main.rs:652:25:654:5 | { ... } | main.rs:652:5:654:5 | exit fn id (normal) | | +| main.rs:653:9:653:12 | self | main.rs:652:25:654:5 | { ... } | | +| main.rs:656:5:663:5 | enter fn my_method | main.rs:656:23:656:26 | self | | +| main.rs:656:5:663:5 | exit fn my_method (normal) | main.rs:656:5:663:5 | exit fn my_method | | +| main.rs:656:18:656:26 | SelfParam | main.rs:657:9:660:10 | let ... = ... | | +| main.rs:656:23:656:26 | self | main.rs:656:18:656:26 | SelfParam | | +| main.rs:656:29:663:5 | { ... } | main.rs:656:5:663:5 | exit fn my_method (normal) | | +| main.rs:657:9:660:10 | let ... = ... | main.rs:657:21:660:9 | \|...\| ... | | +| main.rs:657:13:657:17 | mut f | main.rs:661:9:661:13 | ExprStmt | match | +| main.rs:657:17:657:17 | f | main.rs:657:13:657:17 | mut f | | +| main.rs:657:21:660:9 | \|...\| ... | main.rs:657:17:657:17 | f | | +| main.rs:657:21:660:9 | enter \|...\| ... | main.rs:657:22:657:22 | n | | +| main.rs:657:21:660:9 | exit \|...\| ... (normal) | main.rs:657:21:660:9 | exit \|...\| ... | | +| main.rs:657:22:657:22 | ... | main.rs:659:13:659:26 | ExprStmt | | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | ... | match | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | | +| main.rs:657:25:660:9 | { ... } | main.rs:657:21:660:9 | exit \|...\| ... (normal) | | +| main.rs:659:13:659:16 | self | main.rs:659:13:659:20 | self.val | | +| main.rs:659:13:659:20 | self.val | main.rs:659:25:659:25 | n | | +| main.rs:659:13:659:25 | ... += ... | main.rs:657:25:660:9 | { ... } | | +| main.rs:659:13:659:26 | ExprStmt | main.rs:659:13:659:16 | self | | +| main.rs:659:25:659:25 | n | main.rs:659:13:659:25 | ... += ... | | +| main.rs:661:9:661:9 | f | main.rs:661:11:661:11 | 3 | | +| main.rs:661:9:661:12 | f(...) | main.rs:662:9:662:13 | ExprStmt | | +| main.rs:661:9:661:13 | ExprStmt | main.rs:661:9:661:9 | f | | +| main.rs:661:11:661:11 | 3 | main.rs:661:9:661:12 | f(...) | | +| main.rs:662:9:662:9 | f | main.rs:662:11:662:11 | 4 | | +| main.rs:662:9:662:12 | f(...) | main.rs:656:29:663:5 | { ... } | | +| main.rs:662:9:662:13 | ExprStmt | main.rs:662:9:662:9 | f | | +| main.rs:662:11:662:11 | 4 | main.rs:662:9:662:12 | f(...) | | +| main.rs:666:1:673:1 | enter fn structs | main.rs:667:5:667:36 | let ... = ... | | +| main.rs:666:1:673:1 | exit fn structs (normal) | main.rs:666:1:673:1 | exit fn structs | | +| main.rs:666:14:673:1 | { ... } | main.rs:666:1:673:1 | exit fn structs (normal) | | +| main.rs:667:5:667:36 | let ... = ... | main.rs:667:33:667:33 | 1 | | +| main.rs:667:9:667:13 | mut a | main.rs:668:5:668:26 | ExprStmt | match | +| main.rs:667:13:667:13 | a | main.rs:667:9:667:13 | mut a | | +| main.rs:667:17:667:35 | MyStruct {...} | main.rs:667:13:667:13 | a | | +| main.rs:667:33:667:33 | 1 | main.rs:667:17:667:35 | MyStruct {...} | | | main.rs:668:5:668:13 | print_i64 | main.rs:668:15:668:15 | a | | -| main.rs:668:5:668:19 | print_i64(...) | main.rs:669:5:669:18 | ExprStmt | | -| main.rs:668:5:668:20 | ExprStmt | main.rs:668:5:668:13 | print_i64 | | -| main.rs:668:15:668:15 | a | main.rs:668:17:668:17 | 1 | | -| main.rs:668:15:668:18 | a[1] | main.rs:668:5:668:19 | print_i64(...) | | -| main.rs:668:17:668:17 | 1 | main.rs:668:15:668:18 | a[1] | | -| main.rs:669:5:669:5 | a | main.rs:669:10:669:10 | 4 | | -| main.rs:669:5:669:17 | ... = ... | main.rs:670:5:670:20 | ExprStmt | | -| main.rs:669:5:669:18 | ExprStmt | main.rs:669:5:669:5 | a | | -| main.rs:669:9:669:17 | [...] | main.rs:669:5:669:17 | ... = ... | | -| main.rs:669:10:669:10 | 4 | main.rs:669:13:669:13 | 5 | | -| main.rs:669:13:669:13 | 5 | main.rs:669:16:669:16 | 6 | | -| main.rs:669:16:669:16 | 6 | main.rs:669:9:669:17 | [...] | | +| main.rs:668:5:668:25 | print_i64(...) | main.rs:669:5:669:14 | ExprStmt | | +| main.rs:668:5:668:26 | ExprStmt | main.rs:668:5:668:13 | print_i64 | | +| main.rs:668:15:668:15 | a | main.rs:668:15:668:24 | a.my_get() | | +| main.rs:668:15:668:24 | a.my_get() | main.rs:668:5:668:25 | print_i64(...) | | +| main.rs:669:5:669:5 | a | main.rs:669:5:669:9 | a.val | | +| main.rs:669:5:669:9 | a.val | main.rs:669:13:669:13 | 5 | | +| main.rs:669:5:669:13 | ... = ... | main.rs:670:5:670:26 | ExprStmt | | +| main.rs:669:5:669:14 | ExprStmt | main.rs:669:5:669:5 | a | | +| main.rs:669:13:669:13 | 5 | main.rs:669:5:669:13 | ... = ... | | | main.rs:670:5:670:13 | print_i64 | main.rs:670:15:670:15 | a | | -| main.rs:670:5:670:19 | print_i64(...) | main.rs:664:13:671:1 | { ... } | | -| main.rs:670:5:670:20 | ExprStmt | main.rs:670:5:670:13 | print_i64 | | -| main.rs:670:15:670:15 | a | main.rs:670:17:670:17 | 2 | | -| main.rs:670:15:670:18 | a[2] | main.rs:670:5:670:19 | print_i64(...) | | -| main.rs:670:17:670:17 | 2 | main.rs:670:15:670:18 | a[2] | | -| main.rs:673:1:680:1 | enter fn ref_arg | main.rs:674:5:674:15 | let ... = 16 | | -| main.rs:673:1:680:1 | exit fn ref_arg (normal) | main.rs:673:1:680:1 | exit fn ref_arg | | -| main.rs:673:14:680:1 | { ... } | main.rs:673:1:680:1 | exit fn ref_arg (normal) | | -| main.rs:674:5:674:15 | let ... = 16 | main.rs:674:13:674:14 | 16 | | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | | -| main.rs:674:9:674:9 | x | main.rs:675:5:675:22 | ExprStmt | match | -| main.rs:674:13:674:14 | 16 | main.rs:674:9:674:9 | x | | -| main.rs:675:5:675:17 | print_i64_ref | main.rs:675:20:675:20 | x | | -| main.rs:675:5:675:21 | print_i64_ref(...) | main.rs:676:5:676:17 | ExprStmt | | -| main.rs:675:5:675:22 | ExprStmt | main.rs:675:5:675:17 | print_i64_ref | | -| main.rs:675:19:675:20 | &x | main.rs:675:5:675:21 | print_i64_ref(...) | | -| main.rs:675:20:675:20 | x | main.rs:675:19:675:20 | &x | | -| main.rs:676:5:676:13 | print_i64 | main.rs:676:15:676:15 | x | | -| main.rs:676:5:676:16 | print_i64(...) | main.rs:678:5:678:15 | let ... = 17 | | -| main.rs:676:5:676:17 | ExprStmt | main.rs:676:5:676:13 | print_i64 | | -| main.rs:676:15:676:15 | x | main.rs:676:5:676:16 | print_i64(...) | | -| main.rs:678:5:678:15 | let ... = 17 | main.rs:678:13:678:14 | 17 | | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | | -| main.rs:678:9:678:9 | z | main.rs:679:5:679:22 | ExprStmt | match | -| main.rs:678:13:678:14 | 17 | main.rs:678:9:678:9 | z | | -| main.rs:679:5:679:17 | print_i64_ref | main.rs:679:20:679:20 | z | | -| main.rs:679:5:679:21 | print_i64_ref(...) | main.rs:673:14:680:1 | { ... } | | -| main.rs:679:5:679:22 | ExprStmt | main.rs:679:5:679:17 | print_i64_ref | | -| main.rs:679:19:679:20 | &z | main.rs:679:5:679:21 | print_i64_ref(...) | | -| main.rs:679:20:679:20 | z | main.rs:679:19:679:20 | &z | | -| main.rs:687:5:689:5 | enter fn bar | main.rs:687:17:687:20 | self | | -| main.rs:687:5:689:5 | exit fn bar (normal) | main.rs:687:5:689:5 | exit fn bar | | -| main.rs:687:12:687:20 | SelfParam | main.rs:688:9:688:36 | ExprStmt | | -| main.rs:687:17:687:20 | self | main.rs:687:12:687:20 | SelfParam | | -| main.rs:687:23:689:5 | { ... } | main.rs:687:5:689:5 | exit fn bar (normal) | | -| main.rs:688:9:688:13 | * ... | main.rs:688:33:688:33 | 3 | | -| main.rs:688:9:688:35 | ... = ... | main.rs:687:23:689:5 | { ... } | | -| main.rs:688:9:688:36 | ExprStmt | main.rs:688:10:688:13 | self | | -| main.rs:688:10:688:13 | self | main.rs:688:9:688:13 | * ... | | -| main.rs:688:17:688:35 | MyStruct {...} | main.rs:688:9:688:35 | ... = ... | | -| main.rs:688:33:688:33 | 3 | main.rs:688:17:688:35 | MyStruct {...} | | -| main.rs:692:1:698:1 | enter fn ref_methodcall_receiver | main.rs:693:5:693:36 | let ... = ... | | -| main.rs:692:1:698:1 | exit fn ref_methodcall_receiver (normal) | main.rs:692:1:698:1 | exit fn ref_methodcall_receiver | | -| main.rs:692:30:698:1 | { ... } | main.rs:692:1:698:1 | exit fn ref_methodcall_receiver (normal) | | -| main.rs:693:5:693:36 | let ... = ... | main.rs:693:33:693:33 | 1 | | -| main.rs:693:9:693:13 | mut a | main.rs:694:5:694:12 | ExprStmt | match | -| main.rs:693:13:693:13 | a | main.rs:693:9:693:13 | mut a | | -| main.rs:693:17:693:35 | MyStruct {...} | main.rs:693:13:693:13 | a | | -| main.rs:693:33:693:33 | 1 | main.rs:693:17:693:35 | MyStruct {...} | | -| main.rs:694:5:694:5 | a | main.rs:694:5:694:11 | a.bar() | | -| main.rs:694:5:694:11 | a.bar() | main.rs:697:5:697:21 | ExprStmt | | -| main.rs:694:5:694:12 | ExprStmt | main.rs:694:5:694:5 | a | | -| main.rs:697:5:697:13 | print_i64 | main.rs:697:15:697:15 | a | | -| main.rs:697:5:697:20 | print_i64(...) | main.rs:692:30:698:1 | { ... } | | -| main.rs:697:5:697:21 | ExprStmt | main.rs:697:5:697:13 | print_i64 | | -| main.rs:697:15:697:15 | a | main.rs:697:15:697:19 | a.val | | -| main.rs:697:15:697:19 | a.val | main.rs:697:5:697:20 | print_i64(...) | | -| main.rs:714:1:725:1 | enter fn macro_invocation | main.rs:715:5:716:26 | let ... = ... | | -| main.rs:714:1:725:1 | exit fn macro_invocation (normal) | main.rs:714:1:725:1 | exit fn macro_invocation | | -| main.rs:714:23:725:1 | { ... } | main.rs:714:1:725:1 | exit fn macro_invocation (normal) | | -| main.rs:715:5:716:26 | let ... = ... | main.rs:716:23:716:24 | let ... = 37 | | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | | -| main.rs:715:9:715:22 | var_from_macro | main.rs:717:5:717:30 | ExprStmt | match | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | match | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | { ... } | | -| main.rs:716:9:716:25 | MacroExpr | main.rs:715:9:715:22 | var_from_macro | | -| main.rs:716:9:716:25 | let_in_macro!... | main.rs:716:9:716:25 | MacroExpr | | -| main.rs:716:23:716:24 | 37 | main.rs:716:9:716:21 | var_in_macro | | -| main.rs:716:23:716:24 | let ... = 37 | main.rs:716:23:716:24 | 37 | | -| main.rs:716:23:716:24 | { ... } | main.rs:716:9:716:25 | let_in_macro!... | | -| main.rs:717:5:717:13 | print_i64 | main.rs:717:15:717:28 | var_from_macro | | -| main.rs:717:5:717:29 | print_i64(...) | main.rs:718:5:718:26 | let ... = 33 | | -| main.rs:717:5:717:30 | ExprStmt | main.rs:717:5:717:13 | print_i64 | | -| main.rs:717:15:717:28 | var_from_macro | main.rs:717:5:717:29 | print_i64(...) | | -| main.rs:718:5:718:26 | let ... = 33 | main.rs:718:24:718:25 | 33 | | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | | -| main.rs:718:9:718:20 | var_in_macro | main.rs:723:5:723:44 | ExprStmt | match | -| main.rs:718:24:718:25 | 33 | main.rs:718:9:718:20 | var_in_macro | | -| main.rs:723:5:723:13 | print_i64 | main.rs:723:15:723:28 | let ... = 0 | | -| main.rs:723:5:723:43 | print_i64(...) | main.rs:724:5:724:28 | ExprStmt | | -| main.rs:723:5:723:44 | ExprStmt | main.rs:723:5:723:13 | print_i64 | | -| main.rs:723:15:723:28 | 0 | main.rs:723:15:723:28 | var_in_macro | | -| main.rs:723:15:723:28 | let ... = 0 | main.rs:723:15:723:28 | 0 | | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | match | -| main.rs:723:15:723:42 | MacroExpr | main.rs:723:5:723:43 | print_i64(...) | | -| main.rs:723:15:723:42 | let_in_macro2!... | main.rs:723:15:723:42 | MacroExpr | | -| main.rs:723:30:723:41 | var_in_macro | main.rs:723:30:723:41 | { ... } | | -| main.rs:723:30:723:41 | { ... } | main.rs:723:15:723:42 | let_in_macro2!... | | -| main.rs:724:5:724:13 | print_i64 | main.rs:724:15:724:26 | var_in_macro | | -| main.rs:724:5:724:27 | print_i64(...) | main.rs:714:23:725:1 | { ... } | | -| main.rs:724:5:724:28 | ExprStmt | main.rs:724:5:724:13 | print_i64 | | -| main.rs:724:15:724:26 | var_in_macro | main.rs:724:5:724:27 | print_i64(...) | | -| main.rs:727:1:731:1 | enter fn let_without_initializer | main.rs:728:5:728:10 | let ... | | -| main.rs:727:1:731:1 | exit fn let_without_initializer (normal) | main.rs:727:1:731:1 | exit fn let_without_initializer | | -| main.rs:727:30:731:1 | { ... } | main.rs:727:1:731:1 | exit fn let_without_initializer (normal) | | -| main.rs:728:5:728:10 | let ... | main.rs:728:9:728:9 | x | | -| main.rs:728:9:728:9 | x | main.rs:728:9:728:9 | x | | -| main.rs:728:9:728:9 | x | main.rs:729:5:729:10 | ExprStmt | match | -| main.rs:729:5:729:5 | x | main.rs:729:9:729:9 | 1 | | -| main.rs:729:5:729:9 | ... = ... | main.rs:730:5:730:17 | ExprStmt | | -| main.rs:729:5:729:10 | ExprStmt | main.rs:729:5:729:5 | x | | -| main.rs:729:9:729:9 | 1 | main.rs:729:5:729:9 | ... = ... | | -| main.rs:730:5:730:13 | print_i64 | main.rs:730:15:730:15 | x | | -| main.rs:730:5:730:16 | print_i64(...) | main.rs:727:30:731:1 | { ... } | | -| main.rs:730:5:730:17 | ExprStmt | main.rs:730:5:730:13 | print_i64 | | -| main.rs:730:15:730:15 | x | main.rs:730:5:730:16 | print_i64(...) | | -| main.rs:733:1:743:1 | enter fn capture_phi | main.rs:734:5:734:20 | let ... = 100 | | -| main.rs:733:1:743:1 | exit fn capture_phi (normal) | main.rs:733:1:743:1 | exit fn capture_phi | | -| main.rs:733:18:743:1 | { ... } | main.rs:733:1:743:1 | exit fn capture_phi (normal) | | -| main.rs:734:5:734:20 | let ... = 100 | main.rs:734:17:734:19 | 100 | | -| main.rs:734:9:734:13 | mut x | main.rs:735:5:740:6 | let ... = ... | match | -| main.rs:734:13:734:13 | x | main.rs:734:9:734:13 | mut x | | -| main.rs:734:17:734:19 | 100 | main.rs:734:13:734:13 | x | | -| main.rs:735:5:740:6 | let ... = ... | main.rs:735:19:740:5 | \|...\| ... | | -| main.rs:735:9:735:15 | mut cap | main.rs:741:5:741:14 | ExprStmt | match | -| main.rs:735:13:735:15 | cap | main.rs:735:9:735:15 | mut cap | | -| main.rs:735:19:740:5 | \|...\| ... | main.rs:735:13:735:15 | cap | | -| main.rs:735:19:740:5 | enter \|...\| ... | main.rs:735:20:735:20 | b | | -| main.rs:735:19:740:5 | exit \|...\| ... (normal) | main.rs:735:19:740:5 | exit \|...\| ... | | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:26 | ...: bool | match | -| main.rs:735:20:735:26 | ...: bool | main.rs:736:9:739:10 | let _ = ... | | -| main.rs:735:29:740:5 | { ... } | main.rs:735:19:740:5 | exit \|...\| ... (normal) | | -| main.rs:736:9:739:10 | let _ = ... | main.rs:737:20:737:20 | b | | -| main.rs:737:13:737:13 | _ | main.rs:735:29:740:5 | { ... } | match | -| main.rs:737:17:739:9 | if b {...} | main.rs:737:13:737:13 | _ | | -| main.rs:737:20:737:20 | b | main.rs:737:17:739:9 | if b {...} | false | -| main.rs:737:20:737:20 | b | main.rs:738:13:738:20 | ExprStmt | true | -| main.rs:737:22:739:9 | { ... } | main.rs:737:17:739:9 | if b {...} | | -| main.rs:738:13:738:13 | x | main.rs:738:17:738:19 | 200 | | -| main.rs:738:13:738:19 | ... = ... | main.rs:737:22:739:9 | { ... } | | -| main.rs:738:13:738:20 | ExprStmt | main.rs:738:13:738:13 | x | | -| main.rs:738:17:738:19 | 200 | main.rs:738:13:738:19 | ... = ... | | -| main.rs:741:5:741:7 | cap | main.rs:741:9:741:12 | true | | -| main.rs:741:5:741:13 | cap(...) | main.rs:742:5:742:17 | ExprStmt | | -| main.rs:741:5:741:14 | ExprStmt | main.rs:741:5:741:7 | cap | | -| main.rs:741:9:741:12 | true | main.rs:741:5:741:13 | cap(...) | | -| main.rs:742:5:742:13 | print_i64 | main.rs:742:15:742:15 | x | | -| main.rs:742:5:742:16 | print_i64(...) | main.rs:733:18:743:1 | { ... } | | -| main.rs:742:5:742:17 | ExprStmt | main.rs:742:5:742:13 | print_i64 | | -| main.rs:742:15:742:15 | x | main.rs:742:5:742:16 | print_i64(...) | | -| main.rs:745:1:788:1 | enter fn main | main.rs:746:5:746:25 | ExprStmt | | -| main.rs:745:1:788:1 | exit fn main (normal) | main.rs:745:1:788:1 | exit fn main | | -| main.rs:745:11:788:1 | { ... } | main.rs:745:1:788:1 | exit fn main (normal) | | -| main.rs:746:5:746:22 | immutable_variable | main.rs:746:5:746:24 | immutable_variable(...) | | -| main.rs:746:5:746:24 | immutable_variable(...) | main.rs:747:5:747:23 | ExprStmt | | -| main.rs:746:5:746:25 | ExprStmt | main.rs:746:5:746:22 | immutable_variable | | -| main.rs:747:5:747:20 | mutable_variable | main.rs:747:5:747:22 | mutable_variable(...) | | -| main.rs:747:5:747:22 | mutable_variable(...) | main.rs:748:5:748:40 | ExprStmt | | -| main.rs:747:5:747:23 | ExprStmt | main.rs:747:5:747:20 | mutable_variable | | -| main.rs:748:5:748:37 | mutable_variable_immutable_borrow | main.rs:748:5:748:39 | mutable_variable_immutable_borrow(...) | | -| main.rs:748:5:748:39 | mutable_variable_immutable_borrow(...) | main.rs:749:5:749:23 | ExprStmt | | -| main.rs:748:5:748:40 | ExprStmt | main.rs:748:5:748:37 | mutable_variable_immutable_borrow | | -| main.rs:749:5:749:20 | variable_shadow1 | main.rs:749:5:749:22 | variable_shadow1(...) | | -| main.rs:749:5:749:22 | variable_shadow1(...) | main.rs:750:5:750:23 | ExprStmt | | -| main.rs:749:5:749:23 | ExprStmt | main.rs:749:5:749:20 | variable_shadow1 | | -| main.rs:750:5:750:20 | variable_shadow2 | main.rs:750:5:750:22 | variable_shadow2(...) | | -| main.rs:750:5:750:22 | variable_shadow2(...) | main.rs:751:5:751:19 | ExprStmt | | -| main.rs:750:5:750:23 | ExprStmt | main.rs:750:5:750:20 | variable_shadow2 | | -| main.rs:751:5:751:16 | let_pattern1 | main.rs:751:5:751:18 | let_pattern1(...) | | -| main.rs:751:5:751:18 | let_pattern1(...) | main.rs:752:5:752:19 | ExprStmt | | -| main.rs:751:5:751:19 | ExprStmt | main.rs:751:5:751:16 | let_pattern1 | | -| main.rs:752:5:752:16 | let_pattern2 | main.rs:752:5:752:18 | let_pattern2(...) | | -| main.rs:752:5:752:18 | let_pattern2(...) | main.rs:753:5:753:19 | ExprStmt | | -| main.rs:752:5:752:19 | ExprStmt | main.rs:752:5:752:16 | let_pattern2 | | -| main.rs:753:5:753:16 | let_pattern3 | main.rs:753:5:753:18 | let_pattern3(...) | | -| main.rs:753:5:753:18 | let_pattern3(...) | main.rs:754:5:754:19 | ExprStmt | | -| main.rs:753:5:753:19 | ExprStmt | main.rs:753:5:753:16 | let_pattern3 | | -| main.rs:754:5:754:16 | let_pattern4 | main.rs:754:5:754:18 | let_pattern4(...) | | -| main.rs:754:5:754:18 | let_pattern4(...) | main.rs:755:5:755:21 | ExprStmt | | -| main.rs:754:5:754:19 | ExprStmt | main.rs:754:5:754:16 | let_pattern4 | | -| main.rs:755:5:755:18 | match_pattern1 | main.rs:755:5:755:20 | match_pattern1(...) | | -| main.rs:755:5:755:20 | match_pattern1(...) | main.rs:756:5:756:21 | ExprStmt | | -| main.rs:755:5:755:21 | ExprStmt | main.rs:755:5:755:18 | match_pattern1 | | -| main.rs:756:5:756:18 | match_pattern2 | main.rs:756:5:756:20 | match_pattern2(...) | | -| main.rs:756:5:756:20 | match_pattern2(...) | main.rs:757:5:757:21 | ExprStmt | | -| main.rs:756:5:756:21 | ExprStmt | main.rs:756:5:756:18 | match_pattern2 | | -| main.rs:757:5:757:18 | match_pattern3 | main.rs:757:5:757:20 | match_pattern3(...) | | -| main.rs:757:5:757:20 | match_pattern3(...) | main.rs:758:5:758:21 | ExprStmt | | -| main.rs:757:5:757:21 | ExprStmt | main.rs:757:5:757:18 | match_pattern3 | | -| main.rs:758:5:758:18 | match_pattern4 | main.rs:758:5:758:20 | match_pattern4(...) | | -| main.rs:758:5:758:20 | match_pattern4(...) | main.rs:759:5:759:21 | ExprStmt | | -| main.rs:758:5:758:21 | ExprStmt | main.rs:758:5:758:18 | match_pattern4 | | -| main.rs:759:5:759:18 | match_pattern5 | main.rs:759:5:759:20 | match_pattern5(...) | | -| main.rs:759:5:759:20 | match_pattern5(...) | main.rs:760:5:760:21 | ExprStmt | | -| main.rs:759:5:759:21 | ExprStmt | main.rs:759:5:759:18 | match_pattern5 | | -| main.rs:760:5:760:18 | match_pattern6 | main.rs:760:5:760:20 | match_pattern6(...) | | -| main.rs:760:5:760:20 | match_pattern6(...) | main.rs:761:5:761:21 | ExprStmt | | -| main.rs:760:5:760:21 | ExprStmt | main.rs:760:5:760:18 | match_pattern6 | | -| main.rs:761:5:761:18 | match_pattern7 | main.rs:761:5:761:20 | match_pattern7(...) | | -| main.rs:761:5:761:20 | match_pattern7(...) | main.rs:762:5:762:21 | ExprStmt | | -| main.rs:761:5:761:21 | ExprStmt | main.rs:761:5:761:18 | match_pattern7 | | -| main.rs:762:5:762:18 | match_pattern8 | main.rs:762:5:762:20 | match_pattern8(...) | | -| main.rs:762:5:762:20 | match_pattern8(...) | main.rs:763:5:763:21 | ExprStmt | | -| main.rs:762:5:762:21 | ExprStmt | main.rs:762:5:762:18 | match_pattern8 | | -| main.rs:763:5:763:18 | match_pattern9 | main.rs:763:5:763:20 | match_pattern9(...) | | -| main.rs:763:5:763:20 | match_pattern9(...) | main.rs:764:5:764:22 | ExprStmt | | -| main.rs:763:5:763:21 | ExprStmt | main.rs:763:5:763:18 | match_pattern9 | | -| main.rs:764:5:764:19 | match_pattern10 | main.rs:764:5:764:21 | match_pattern10(...) | | -| main.rs:764:5:764:21 | match_pattern10(...) | main.rs:765:5:765:22 | ExprStmt | | -| main.rs:764:5:764:22 | ExprStmt | main.rs:764:5:764:19 | match_pattern10 | | -| main.rs:765:5:765:19 | match_pattern11 | main.rs:765:5:765:21 | match_pattern11(...) | | -| main.rs:765:5:765:21 | match_pattern11(...) | main.rs:766:5:766:22 | ExprStmt | | -| main.rs:765:5:765:22 | ExprStmt | main.rs:765:5:765:19 | match_pattern11 | | -| main.rs:766:5:766:19 | match_pattern12 | main.rs:766:5:766:21 | match_pattern12(...) | | -| main.rs:766:5:766:21 | match_pattern12(...) | main.rs:767:5:767:22 | ExprStmt | | -| main.rs:766:5:766:22 | ExprStmt | main.rs:766:5:766:19 | match_pattern12 | | -| main.rs:767:5:767:19 | match_pattern13 | main.rs:767:5:767:21 | match_pattern13(...) | | -| main.rs:767:5:767:21 | match_pattern13(...) | main.rs:768:5:768:22 | ExprStmt | | -| main.rs:767:5:767:22 | ExprStmt | main.rs:767:5:767:19 | match_pattern13 | | -| main.rs:768:5:768:19 | match_pattern14 | main.rs:768:5:768:21 | match_pattern14(...) | | -| main.rs:768:5:768:21 | match_pattern14(...) | main.rs:769:5:769:22 | ExprStmt | | -| main.rs:768:5:768:22 | ExprStmt | main.rs:768:5:768:19 | match_pattern14 | | -| main.rs:769:5:769:19 | match_pattern15 | main.rs:769:5:769:21 | match_pattern15(...) | | -| main.rs:769:5:769:21 | match_pattern15(...) | main.rs:770:5:770:36 | ExprStmt | | -| main.rs:769:5:769:22 | ExprStmt | main.rs:769:5:769:19 | match_pattern15 | | -| main.rs:770:5:770:18 | param_pattern1 | main.rs:770:20:770:22 | "a" | | -| main.rs:770:5:770:35 | param_pattern1(...) | main.rs:771:5:771:37 | ExprStmt | | -| main.rs:770:5:770:36 | ExprStmt | main.rs:770:5:770:18 | param_pattern1 | | -| main.rs:770:20:770:22 | "a" | main.rs:770:26:770:28 | "b" | | -| main.rs:770:25:770:34 | TupleExpr | main.rs:770:5:770:35 | param_pattern1(...) | | -| main.rs:770:26:770:28 | "b" | main.rs:770:31:770:33 | "c" | | -| main.rs:770:31:770:33 | "c" | main.rs:770:25:770:34 | TupleExpr | | -| main.rs:771:5:771:18 | param_pattern2 | main.rs:771:20:771:31 | ...::Left | | -| main.rs:771:5:771:36 | param_pattern2(...) | main.rs:772:5:772:26 | ExprStmt | | -| main.rs:771:5:771:37 | ExprStmt | main.rs:771:5:771:18 | param_pattern2 | | -| main.rs:771:20:771:31 | ...::Left | main.rs:771:33:771:34 | 45 | | -| main.rs:771:20:771:35 | ...::Left(...) | main.rs:771:5:771:36 | param_pattern2(...) | | -| main.rs:771:33:771:34 | 45 | main.rs:771:20:771:35 | ...::Left(...) | | -| main.rs:772:5:772:23 | destruct_assignment | main.rs:772:5:772:25 | destruct_assignment(...) | | -| main.rs:772:5:772:25 | destruct_assignment(...) | main.rs:773:5:773:23 | ExprStmt | | -| main.rs:772:5:772:26 | ExprStmt | main.rs:772:5:772:23 | destruct_assignment | | -| main.rs:773:5:773:20 | closure_variable | main.rs:773:5:773:22 | closure_variable(...) | | -| main.rs:773:5:773:22 | closure_variable(...) | main.rs:774:5:774:22 | ExprStmt | | -| main.rs:773:5:773:23 | ExprStmt | main.rs:773:5:773:20 | closure_variable | | -| main.rs:774:5:774:19 | nested_function | main.rs:774:5:774:21 | nested_function(...) | | -| main.rs:774:5:774:21 | nested_function(...) | main.rs:775:5:775:19 | ExprStmt | | -| main.rs:774:5:774:22 | ExprStmt | main.rs:774:5:774:19 | nested_function | | -| main.rs:775:5:775:16 | for_variable | main.rs:775:5:775:18 | for_variable(...) | | -| main.rs:775:5:775:18 | for_variable(...) | main.rs:776:5:776:17 | ExprStmt | | -| main.rs:775:5:775:19 | ExprStmt | main.rs:775:5:775:16 | for_variable | | -| main.rs:776:5:776:14 | add_assign | main.rs:776:5:776:16 | add_assign(...) | | -| main.rs:776:5:776:16 | add_assign(...) | main.rs:777:5:777:13 | ExprStmt | | -| main.rs:776:5:776:17 | ExprStmt | main.rs:776:5:776:14 | add_assign | | -| main.rs:777:5:777:10 | mutate | main.rs:777:5:777:12 | mutate(...) | | -| main.rs:777:5:777:12 | mutate(...) | main.rs:778:5:778:17 | ExprStmt | | -| main.rs:777:5:777:13 | ExprStmt | main.rs:777:5:777:10 | mutate | | -| main.rs:778:5:778:14 | mutate_arg | main.rs:778:5:778:16 | mutate_arg(...) | | -| main.rs:778:5:778:16 | mutate_arg(...) | main.rs:779:5:779:12 | ExprStmt | | -| main.rs:778:5:778:17 | ExprStmt | main.rs:778:5:778:14 | mutate_arg | | -| main.rs:779:5:779:9 | alias | main.rs:779:5:779:11 | alias(...) | | -| main.rs:779:5:779:11 | alias(...) | main.rs:780:5:780:18 | ExprStmt | | -| main.rs:779:5:779:12 | ExprStmt | main.rs:779:5:779:9 | alias | | -| main.rs:780:5:780:15 | capture_mut | main.rs:780:5:780:17 | capture_mut(...) | | -| main.rs:780:5:780:17 | capture_mut(...) | main.rs:781:5:781:20 | ExprStmt | | -| main.rs:780:5:780:18 | ExprStmt | main.rs:780:5:780:15 | capture_mut | | -| main.rs:781:5:781:17 | capture_immut | main.rs:781:5:781:19 | capture_immut(...) | | -| main.rs:781:5:781:19 | capture_immut(...) | main.rs:782:5:782:26 | ExprStmt | | -| main.rs:781:5:781:20 | ExprStmt | main.rs:781:5:781:17 | capture_immut | | -| main.rs:782:5:782:23 | async_block_capture | main.rs:782:5:782:25 | async_block_capture(...) | | -| main.rs:782:5:782:25 | async_block_capture(...) | main.rs:783:5:783:14 | ExprStmt | | -| main.rs:782:5:782:26 | ExprStmt | main.rs:782:5:782:23 | async_block_capture | | -| main.rs:783:5:783:11 | structs | main.rs:783:5:783:13 | structs(...) | | -| main.rs:783:5:783:13 | structs(...) | main.rs:784:5:784:14 | ExprStmt | | -| main.rs:783:5:783:14 | ExprStmt | main.rs:783:5:783:11 | structs | | -| main.rs:784:5:784:11 | ref_arg | main.rs:784:5:784:13 | ref_arg(...) | | -| main.rs:784:5:784:13 | ref_arg(...) | main.rs:785:5:785:30 | ExprStmt | | -| main.rs:784:5:784:14 | ExprStmt | main.rs:784:5:784:11 | ref_arg | | -| main.rs:785:5:785:27 | ref_methodcall_receiver | main.rs:785:5:785:29 | ref_methodcall_receiver(...) | | -| main.rs:785:5:785:29 | ref_methodcall_receiver(...) | main.rs:786:5:786:23 | ExprStmt | | -| main.rs:785:5:785:30 | ExprStmt | main.rs:785:5:785:27 | ref_methodcall_receiver | | -| main.rs:786:5:786:20 | macro_invocation | main.rs:786:5:786:22 | macro_invocation(...) | | -| main.rs:786:5:786:22 | macro_invocation(...) | main.rs:787:5:787:18 | ExprStmt | | -| main.rs:786:5:786:23 | ExprStmt | main.rs:786:5:786:20 | macro_invocation | | -| main.rs:787:5:787:15 | capture_phi | main.rs:787:5:787:17 | capture_phi(...) | | -| main.rs:787:5:787:17 | capture_phi(...) | main.rs:745:11:788:1 | { ... } | | -| main.rs:787:5:787:18 | ExprStmt | main.rs:787:5:787:15 | capture_phi | | +| main.rs:670:5:670:25 | print_i64(...) | main.rs:671:5:671:28 | ExprStmt | | +| main.rs:670:5:670:26 | ExprStmt | main.rs:670:5:670:13 | print_i64 | | +| main.rs:670:15:670:15 | a | main.rs:670:15:670:24 | a.my_get() | | +| main.rs:670:15:670:24 | a.my_get() | main.rs:670:5:670:25 | print_i64(...) | | +| main.rs:671:5:671:5 | a | main.rs:671:25:671:25 | 2 | | +| main.rs:671:5:671:27 | ... = ... | main.rs:672:5:672:26 | ExprStmt | | +| main.rs:671:5:671:28 | ExprStmt | main.rs:671:5:671:5 | a | | +| main.rs:671:9:671:27 | MyStruct {...} | main.rs:671:5:671:27 | ... = ... | | +| main.rs:671:25:671:25 | 2 | main.rs:671:9:671:27 | MyStruct {...} | | +| main.rs:672:5:672:13 | print_i64 | main.rs:672:15:672:15 | a | | +| main.rs:672:5:672:25 | print_i64(...) | main.rs:666:14:673:1 | { ... } | | +| main.rs:672:5:672:26 | ExprStmt | main.rs:672:5:672:13 | print_i64 | | +| main.rs:672:15:672:15 | a | main.rs:672:15:672:24 | a.my_get() | | +| main.rs:672:15:672:24 | a.my_get() | main.rs:672:5:672:25 | print_i64(...) | | +| main.rs:675:1:682:1 | enter fn arrays | main.rs:676:5:676:26 | let ... = ... | | +| main.rs:675:1:682:1 | exit fn arrays (normal) | main.rs:675:1:682:1 | exit fn arrays | | +| main.rs:675:13:682:1 | { ... } | main.rs:675:1:682:1 | exit fn arrays (normal) | | +| main.rs:676:5:676:26 | let ... = ... | main.rs:676:18:676:18 | 1 | | +| main.rs:676:9:676:13 | mut a | main.rs:677:5:677:20 | ExprStmt | match | +| main.rs:676:13:676:13 | a | main.rs:676:9:676:13 | mut a | | +| main.rs:676:17:676:25 | [...] | main.rs:676:13:676:13 | a | | +| main.rs:676:18:676:18 | 1 | main.rs:676:21:676:21 | 2 | | +| main.rs:676:21:676:21 | 2 | main.rs:676:24:676:24 | 3 | | +| main.rs:676:24:676:24 | 3 | main.rs:676:17:676:25 | [...] | | +| main.rs:677:5:677:13 | print_i64 | main.rs:677:15:677:15 | a | | +| main.rs:677:5:677:19 | print_i64(...) | main.rs:678:5:678:13 | ExprStmt | | +| main.rs:677:5:677:20 | ExprStmt | main.rs:677:5:677:13 | print_i64 | | +| main.rs:677:15:677:15 | a | main.rs:677:17:677:17 | 0 | | +| main.rs:677:15:677:18 | a[0] | main.rs:677:5:677:19 | print_i64(...) | | +| main.rs:677:17:677:17 | 0 | main.rs:677:15:677:18 | a[0] | | +| main.rs:678:5:678:5 | a | main.rs:678:7:678:7 | 1 | | +| main.rs:678:5:678:8 | a[1] | main.rs:678:12:678:12 | 5 | | +| main.rs:678:5:678:12 | ... = ... | main.rs:679:5:679:20 | ExprStmt | | +| main.rs:678:5:678:13 | ExprStmt | main.rs:678:5:678:5 | a | | +| main.rs:678:7:678:7 | 1 | main.rs:678:5:678:8 | a[1] | | +| main.rs:678:12:678:12 | 5 | main.rs:678:5:678:12 | ... = ... | | +| main.rs:679:5:679:13 | print_i64 | main.rs:679:15:679:15 | a | | +| main.rs:679:5:679:19 | print_i64(...) | main.rs:680:5:680:18 | ExprStmt | | +| main.rs:679:5:679:20 | ExprStmt | main.rs:679:5:679:13 | print_i64 | | +| main.rs:679:15:679:15 | a | main.rs:679:17:679:17 | 1 | | +| main.rs:679:15:679:18 | a[1] | main.rs:679:5:679:19 | print_i64(...) | | +| main.rs:679:17:679:17 | 1 | main.rs:679:15:679:18 | a[1] | | +| main.rs:680:5:680:5 | a | main.rs:680:10:680:10 | 4 | | +| main.rs:680:5:680:17 | ... = ... | main.rs:681:5:681:20 | ExprStmt | | +| main.rs:680:5:680:18 | ExprStmt | main.rs:680:5:680:5 | a | | +| main.rs:680:9:680:17 | [...] | main.rs:680:5:680:17 | ... = ... | | +| main.rs:680:10:680:10 | 4 | main.rs:680:13:680:13 | 5 | | +| main.rs:680:13:680:13 | 5 | main.rs:680:16:680:16 | 6 | | +| main.rs:680:16:680:16 | 6 | main.rs:680:9:680:17 | [...] | | +| main.rs:681:5:681:13 | print_i64 | main.rs:681:15:681:15 | a | | +| main.rs:681:5:681:19 | print_i64(...) | main.rs:675:13:682:1 | { ... } | | +| main.rs:681:5:681:20 | ExprStmt | main.rs:681:5:681:13 | print_i64 | | +| main.rs:681:15:681:15 | a | main.rs:681:17:681:17 | 2 | | +| main.rs:681:15:681:18 | a[2] | main.rs:681:5:681:19 | print_i64(...) | | +| main.rs:681:17:681:17 | 2 | main.rs:681:15:681:18 | a[2] | | +| main.rs:684:1:691:1 | enter fn ref_arg | main.rs:685:5:685:15 | let ... = 16 | | +| main.rs:684:1:691:1 | exit fn ref_arg (normal) | main.rs:684:1:691:1 | exit fn ref_arg | | +| main.rs:684:14:691:1 | { ... } | main.rs:684:1:691:1 | exit fn ref_arg (normal) | | +| main.rs:685:5:685:15 | let ... = 16 | main.rs:685:13:685:14 | 16 | | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | | +| main.rs:685:9:685:9 | x | main.rs:686:5:686:22 | ExprStmt | match | +| main.rs:685:13:685:14 | 16 | main.rs:685:9:685:9 | x | | +| main.rs:686:5:686:17 | print_i64_ref | main.rs:686:20:686:20 | x | | +| main.rs:686:5:686:21 | print_i64_ref(...) | main.rs:687:5:687:17 | ExprStmt | | +| main.rs:686:5:686:22 | ExprStmt | main.rs:686:5:686:17 | print_i64_ref | | +| main.rs:686:19:686:20 | &x | main.rs:686:5:686:21 | print_i64_ref(...) | | +| main.rs:686:20:686:20 | x | main.rs:686:19:686:20 | &x | | +| main.rs:687:5:687:13 | print_i64 | main.rs:687:15:687:15 | x | | +| main.rs:687:5:687:16 | print_i64(...) | main.rs:689:5:689:15 | let ... = 17 | | +| main.rs:687:5:687:17 | ExprStmt | main.rs:687:5:687:13 | print_i64 | | +| main.rs:687:15:687:15 | x | main.rs:687:5:687:16 | print_i64(...) | | +| main.rs:689:5:689:15 | let ... = 17 | main.rs:689:13:689:14 | 17 | | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | | +| main.rs:689:9:689:9 | z | main.rs:690:5:690:22 | ExprStmt | match | +| main.rs:689:13:689:14 | 17 | main.rs:689:9:689:9 | z | | +| main.rs:690:5:690:17 | print_i64_ref | main.rs:690:20:690:20 | z | | +| main.rs:690:5:690:21 | print_i64_ref(...) | main.rs:684:14:691:1 | { ... } | | +| main.rs:690:5:690:22 | ExprStmt | main.rs:690:5:690:17 | print_i64_ref | | +| main.rs:690:19:690:20 | &z | main.rs:690:5:690:21 | print_i64_ref(...) | | +| main.rs:690:20:690:20 | z | main.rs:690:19:690:20 | &z | | +| main.rs:698:5:700:5 | enter fn bar | main.rs:698:17:698:20 | self | | +| main.rs:698:5:700:5 | exit fn bar (normal) | main.rs:698:5:700:5 | exit fn bar | | +| main.rs:698:12:698:20 | SelfParam | main.rs:699:9:699:36 | ExprStmt | | +| main.rs:698:17:698:20 | self | main.rs:698:12:698:20 | SelfParam | | +| main.rs:698:23:700:5 | { ... } | main.rs:698:5:700:5 | exit fn bar (normal) | | +| main.rs:699:9:699:13 | * ... | main.rs:699:33:699:33 | 3 | | +| main.rs:699:9:699:35 | ... = ... | main.rs:698:23:700:5 | { ... } | | +| main.rs:699:9:699:36 | ExprStmt | main.rs:699:10:699:13 | self | | +| main.rs:699:10:699:13 | self | main.rs:699:9:699:13 | * ... | | +| main.rs:699:17:699:35 | MyStruct {...} | main.rs:699:9:699:35 | ... = ... | | +| main.rs:699:33:699:33 | 3 | main.rs:699:17:699:35 | MyStruct {...} | | +| main.rs:703:1:709:1 | enter fn ref_methodcall_receiver | main.rs:704:5:704:36 | let ... = ... | | +| main.rs:703:1:709:1 | exit fn ref_methodcall_receiver (normal) | main.rs:703:1:709:1 | exit fn ref_methodcall_receiver | | +| main.rs:703:30:709:1 | { ... } | main.rs:703:1:709:1 | exit fn ref_methodcall_receiver (normal) | | +| main.rs:704:5:704:36 | let ... = ... | main.rs:704:33:704:33 | 1 | | +| main.rs:704:9:704:13 | mut a | main.rs:705:5:705:12 | ExprStmt | match | +| main.rs:704:13:704:13 | a | main.rs:704:9:704:13 | mut a | | +| main.rs:704:17:704:35 | MyStruct {...} | main.rs:704:13:704:13 | a | | +| main.rs:704:33:704:33 | 1 | main.rs:704:17:704:35 | MyStruct {...} | | +| main.rs:705:5:705:5 | a | main.rs:705:5:705:11 | a.bar() | | +| main.rs:705:5:705:11 | a.bar() | main.rs:708:5:708:21 | ExprStmt | | +| main.rs:705:5:705:12 | ExprStmt | main.rs:705:5:705:5 | a | | +| main.rs:708:5:708:13 | print_i64 | main.rs:708:15:708:15 | a | | +| main.rs:708:5:708:20 | print_i64(...) | main.rs:703:30:709:1 | { ... } | | +| main.rs:708:5:708:21 | ExprStmt | main.rs:708:5:708:13 | print_i64 | | +| main.rs:708:15:708:15 | a | main.rs:708:15:708:19 | a.val | | +| main.rs:708:15:708:19 | a.val | main.rs:708:5:708:20 | print_i64(...) | | +| main.rs:725:1:736:1 | enter fn macro_invocation | main.rs:726:5:727:26 | let ... = ... | | +| main.rs:725:1:736:1 | exit fn macro_invocation (normal) | main.rs:725:1:736:1 | exit fn macro_invocation | | +| main.rs:725:23:736:1 | { ... } | main.rs:725:1:736:1 | exit fn macro_invocation (normal) | | +| main.rs:726:5:727:26 | let ... = ... | main.rs:727:23:727:24 | let ... = 37 | | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | | +| main.rs:726:9:726:22 | var_from_macro | main.rs:728:5:728:30 | ExprStmt | match | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | match | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:23:727:24 | { ... } | | +| main.rs:727:9:727:25 | MacroExpr | main.rs:726:9:726:22 | var_from_macro | | +| main.rs:727:9:727:25 | let_in_macro!... | main.rs:727:9:727:25 | MacroExpr | | +| main.rs:727:23:727:24 | 37 | main.rs:727:9:727:21 | var_in_macro | | +| main.rs:727:23:727:24 | let ... = 37 | main.rs:727:23:727:24 | 37 | | +| main.rs:727:23:727:24 | { ... } | main.rs:727:9:727:25 | let_in_macro!... | | +| main.rs:728:5:728:13 | print_i64 | main.rs:728:15:728:28 | var_from_macro | | +| main.rs:728:5:728:29 | print_i64(...) | main.rs:729:5:729:26 | let ... = 33 | | +| main.rs:728:5:728:30 | ExprStmt | main.rs:728:5:728:13 | print_i64 | | +| main.rs:728:15:728:28 | var_from_macro | main.rs:728:5:728:29 | print_i64(...) | | +| main.rs:729:5:729:26 | let ... = 33 | main.rs:729:24:729:25 | 33 | | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | | +| main.rs:729:9:729:20 | var_in_macro | main.rs:734:5:734:44 | ExprStmt | match | +| main.rs:729:24:729:25 | 33 | main.rs:729:9:729:20 | var_in_macro | | +| main.rs:734:5:734:13 | print_i64 | main.rs:734:15:734:28 | let ... = 0 | | +| main.rs:734:5:734:43 | print_i64(...) | main.rs:735:5:735:28 | ExprStmt | | +| main.rs:734:5:734:44 | ExprStmt | main.rs:734:5:734:13 | print_i64 | | +| main.rs:734:15:734:28 | 0 | main.rs:734:15:734:28 | var_in_macro | | +| main.rs:734:15:734:28 | let ... = 0 | main.rs:734:15:734:28 | 0 | | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:30:734:41 | var_in_macro | match | +| main.rs:734:15:734:42 | MacroExpr | main.rs:734:5:734:43 | print_i64(...) | | +| main.rs:734:15:734:42 | let_in_macro2!... | main.rs:734:15:734:42 | MacroExpr | | +| main.rs:734:30:734:41 | var_in_macro | main.rs:734:30:734:41 | { ... } | | +| main.rs:734:30:734:41 | { ... } | main.rs:734:15:734:42 | let_in_macro2!... | | +| main.rs:735:5:735:13 | print_i64 | main.rs:735:15:735:26 | var_in_macro | | +| main.rs:735:5:735:27 | print_i64(...) | main.rs:725:23:736:1 | { ... } | | +| main.rs:735:5:735:28 | ExprStmt | main.rs:735:5:735:13 | print_i64 | | +| main.rs:735:15:735:26 | var_in_macro | main.rs:735:5:735:27 | print_i64(...) | | +| main.rs:738:1:742:1 | enter fn let_without_initializer | main.rs:739:5:739:10 | let ... | | +| main.rs:738:1:742:1 | exit fn let_without_initializer (normal) | main.rs:738:1:742:1 | exit fn let_without_initializer | | +| main.rs:738:30:742:1 | { ... } | main.rs:738:1:742:1 | exit fn let_without_initializer (normal) | | +| main.rs:739:5:739:10 | let ... | main.rs:739:9:739:9 | x | | +| main.rs:739:9:739:9 | x | main.rs:739:9:739:9 | x | | +| main.rs:739:9:739:9 | x | main.rs:740:5:740:10 | ExprStmt | match | +| main.rs:740:5:740:5 | x | main.rs:740:9:740:9 | 1 | | +| main.rs:740:5:740:9 | ... = ... | main.rs:741:5:741:17 | ExprStmt | | +| main.rs:740:5:740:10 | ExprStmt | main.rs:740:5:740:5 | x | | +| main.rs:740:9:740:9 | 1 | main.rs:740:5:740:9 | ... = ... | | +| main.rs:741:5:741:13 | print_i64 | main.rs:741:15:741:15 | x | | +| main.rs:741:5:741:16 | print_i64(...) | main.rs:738:30:742:1 | { ... } | | +| main.rs:741:5:741:17 | ExprStmt | main.rs:741:5:741:13 | print_i64 | | +| main.rs:741:15:741:15 | x | main.rs:741:5:741:16 | print_i64(...) | | +| main.rs:744:1:754:1 | enter fn capture_phi | main.rs:745:5:745:20 | let ... = 100 | | +| main.rs:744:1:754:1 | exit fn capture_phi (normal) | main.rs:744:1:754:1 | exit fn capture_phi | | +| main.rs:744:18:754:1 | { ... } | main.rs:744:1:754:1 | exit fn capture_phi (normal) | | +| main.rs:745:5:745:20 | let ... = 100 | main.rs:745:17:745:19 | 100 | | +| main.rs:745:9:745:13 | mut x | main.rs:746:5:751:6 | let ... = ... | match | +| main.rs:745:13:745:13 | x | main.rs:745:9:745:13 | mut x | | +| main.rs:745:17:745:19 | 100 | main.rs:745:13:745:13 | x | | +| main.rs:746:5:751:6 | let ... = ... | main.rs:746:19:751:5 | \|...\| ... | | +| main.rs:746:9:746:15 | mut cap | main.rs:752:5:752:14 | ExprStmt | match | +| main.rs:746:13:746:15 | cap | main.rs:746:9:746:15 | mut cap | | +| main.rs:746:19:751:5 | \|...\| ... | main.rs:746:13:746:15 | cap | | +| main.rs:746:19:751:5 | enter \|...\| ... | main.rs:746:20:746:20 | b | | +| main.rs:746:19:751:5 | exit \|...\| ... (normal) | main.rs:746:19:751:5 | exit \|...\| ... | | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:26 | ...: bool | match | +| main.rs:746:20:746:26 | ...: bool | main.rs:747:9:750:10 | let _ = ... | | +| main.rs:746:29:751:5 | { ... } | main.rs:746:19:751:5 | exit \|...\| ... (normal) | | +| main.rs:747:9:750:10 | let _ = ... | main.rs:748:20:748:20 | b | | +| main.rs:748:13:748:13 | _ | main.rs:746:29:751:5 | { ... } | match | +| main.rs:748:17:750:9 | if b {...} | main.rs:748:13:748:13 | _ | | +| main.rs:748:20:748:20 | b | main.rs:748:17:750:9 | if b {...} | false | +| main.rs:748:20:748:20 | b | main.rs:749:13:749:20 | ExprStmt | true | +| main.rs:748:22:750:9 | { ... } | main.rs:748:17:750:9 | if b {...} | | +| main.rs:749:13:749:13 | x | main.rs:749:17:749:19 | 200 | | +| main.rs:749:13:749:19 | ... = ... | main.rs:748:22:750:9 | { ... } | | +| main.rs:749:13:749:20 | ExprStmt | main.rs:749:13:749:13 | x | | +| main.rs:749:17:749:19 | 200 | main.rs:749:13:749:19 | ... = ... | | +| main.rs:752:5:752:7 | cap | main.rs:752:9:752:12 | true | | +| main.rs:752:5:752:13 | cap(...) | main.rs:753:5:753:17 | ExprStmt | | +| main.rs:752:5:752:14 | ExprStmt | main.rs:752:5:752:7 | cap | | +| main.rs:752:9:752:12 | true | main.rs:752:5:752:13 | cap(...) | | +| main.rs:753:5:753:13 | print_i64 | main.rs:753:15:753:15 | x | | +| main.rs:753:5:753:16 | print_i64(...) | main.rs:744:18:754:1 | { ... } | | +| main.rs:753:5:753:17 | ExprStmt | main.rs:753:5:753:13 | print_i64 | | +| main.rs:753:15:753:15 | x | main.rs:753:5:753:16 | print_i64(...) | | +| main.rs:757:5:772:5 | enter fn test | main.rs:759:9:759:25 | let ... = ... | | +| main.rs:757:5:772:5 | exit fn test (normal) | main.rs:757:5:772:5 | exit fn test | | +| main.rs:758:34:772:5 | { ... } | main.rs:757:5:772:5 | exit fn test (normal) | | +| main.rs:759:9:759:25 | let ... = ... | main.rs:759:17:759:20 | Some | | +| main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | | +| main.rs:759:13:759:13 | x | main.rs:760:9:767:10 | let ... = ... | match | +| main.rs:759:17:759:20 | Some | main.rs:759:22:759:23 | 42 | | +| main.rs:759:17:759:24 | Some(...) | main.rs:759:13:759:13 | x | | +| main.rs:759:22:759:23 | 42 | main.rs:759:17:759:24 | Some(...) | | +| main.rs:760:9:767:10 | let ... = ... | main.rs:761:19:761:19 | x | | +| main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | | +| main.rs:760:13:760:13 | y | main.rs:768:15:768:15 | y | match | +| main.rs:761:13:767:9 | match x { ... } | main.rs:760:13:760:13 | y | | +| main.rs:761:19:761:19 | x | main.rs:762:13:762:19 | Some(...) | | +| main.rs:762:13:762:19 | Some(...) | main.rs:762:18:762:18 | y | match | +| main.rs:762:13:762:19 | Some(...) | main.rs:765:13:765:16 | None | no-match | +| main.rs:762:18:762:18 | y | main.rs:762:18:762:18 | y | | +| main.rs:762:18:762:18 | y | main.rs:763:17:763:20 | None | match | +| main.rs:762:24:764:13 | { ... } | main.rs:761:13:767:9 | match x { ... } | | +| main.rs:763:17:763:20 | None | main.rs:762:24:764:13 | { ... } | | +| main.rs:765:13:765:16 | None | main.rs:765:13:765:16 | None | | +| main.rs:765:13:765:16 | None | main.rs:766:17:766:20 | None | match | +| main.rs:766:17:766:20 | None | main.rs:761:13:767:9 | match x { ... } | | +| main.rs:768:9:771:9 | match y { ... } | main.rs:758:34:772:5 | { ... } | | +| main.rs:768:15:768:15 | y | main.rs:769:13:769:16 | N0ne | | +| main.rs:769:13:769:16 | N0ne | main.rs:769:13:769:16 | N0ne | | +| main.rs:769:13:769:16 | N0ne | main.rs:770:17:770:20 | N0ne | match | +| main.rs:770:17:770:20 | N0ne | main.rs:768:9:771:9 | match y { ... } | | +| main.rs:774:5:781:5 | enter fn test2 | main.rs:776:9:777:17 | let ... = test | | +| main.rs:774:5:781:5 | exit fn test2 (normal) | main.rs:774:5:781:5 | exit fn test2 | | +| main.rs:775:31:781:5 | { ... } | main.rs:774:5:781:5 | exit fn test2 (normal) | | +| main.rs:776:9:777:17 | let ... = test | main.rs:777:13:777:16 | test | | +| main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | | +| main.rs:776:13:776:22 | test_alias | main.rs:778:9:779:25 | let ... = ... | match | +| main.rs:777:13:777:16 | test | main.rs:776:13:776:22 | test_alias | | +| main.rs:778:9:779:25 | let ... = ... | main.rs:779:13:779:22 | test_alias | | +| main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | | +| main.rs:778:13:778:16 | test | main.rs:780:9:780:12 | test | match | +| main.rs:779:13:779:22 | test_alias | main.rs:779:13:779:24 | test_alias(...) | | +| main.rs:779:13:779:24 | test_alias(...) | main.rs:778:13:778:16 | test | | +| main.rs:780:9:780:12 | test | main.rs:775:31:781:5 | { ... } | | +| main.rs:785:5:798:5 | enter fn test3 | main.rs:787:9:787:24 | let ... = ... | | +| main.rs:785:5:798:5 | exit fn test3 (normal) | main.rs:785:5:798:5 | exit fn test3 | | +| main.rs:786:16:798:5 | { ... } | main.rs:785:5:798:5 | exit fn test3 (normal) | | +| main.rs:787:9:787:24 | let ... = ... | main.rs:787:17:787:20 | Some | | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | | +| main.rs:787:13:787:13 | x | main.rs:788:9:792:10 | ExprStmt | match | +| main.rs:787:17:787:20 | Some | main.rs:787:22:787:22 | 0 | | +| main.rs:787:17:787:23 | Some(...) | main.rs:787:13:787:13 | x | | +| main.rs:787:22:787:22 | 0 | main.rs:787:17:787:23 | Some(...) | | +| main.rs:788:9:792:9 | match x { ... } | main.rs:793:9:797:10 | ExprStmt | | +| main.rs:788:9:792:10 | ExprStmt | main.rs:788:15:788:15 | x | | +| main.rs:788:15:788:15 | x | main.rs:789:13:789:19 | Some(...) | | +| main.rs:789:13:789:19 | Some(...) | main.rs:789:18:789:18 | x | match | +| main.rs:789:13:789:19 | Some(...) | main.rs:791:13:791:13 | _ | no-match | +| main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | | +| main.rs:789:18:789:18 | x | main.rs:790:20:790:20 | x | match | +| main.rs:790:20:790:20 | x | main.rs:788:9:792:9 | match x { ... } | | +| main.rs:791:13:791:13 | _ | main.rs:791:18:791:18 | 0 | match | +| main.rs:791:18:791:18 | 0 | main.rs:788:9:792:9 | match x { ... } | | +| main.rs:793:9:797:9 | match x { ... } | main.rs:786:16:798:5 | { ... } | | +| main.rs:793:9:797:10 | ExprStmt | main.rs:793:15:793:15 | x | | +| main.rs:793:15:793:15 | x | main.rs:794:13:794:19 | Some(...) | | +| main.rs:794:13:794:19 | Some(...) | main.rs:794:18:794:18 | z | match | +| main.rs:794:13:794:19 | Some(...) | main.rs:796:13:796:13 | _ | no-match | +| main.rs:794:18:794:18 | z | main.rs:794:18:794:18 | z | | +| main.rs:794:18:794:18 | z | main.rs:795:17:795:17 | z | match | +| main.rs:794:18:794:18 | z | main.rs:796:13:796:13 | _ | no-match | +| main.rs:795:17:795:17 | z | main.rs:793:9:797:9 | match x { ... } | | +| main.rs:796:13:796:13 | _ | main.rs:796:18:796:18 | 0 | match | +| main.rs:796:18:796:18 | 0 | main.rs:793:9:797:9 | match x { ... } | | +| main.rs:801:1:845:1 | enter fn main | main.rs:802:5:802:25 | ExprStmt | | +| main.rs:801:1:845:1 | exit fn main (normal) | main.rs:801:1:845:1 | exit fn main | | +| main.rs:801:11:845:1 | { ... } | main.rs:801:1:845:1 | exit fn main (normal) | | +| main.rs:802:5:802:22 | immutable_variable | main.rs:802:5:802:24 | immutable_variable(...) | | +| main.rs:802:5:802:24 | immutable_variable(...) | main.rs:803:5:803:23 | ExprStmt | | +| main.rs:802:5:802:25 | ExprStmt | main.rs:802:5:802:22 | immutable_variable | | +| main.rs:803:5:803:20 | mutable_variable | main.rs:803:5:803:22 | mutable_variable(...) | | +| main.rs:803:5:803:22 | mutable_variable(...) | main.rs:804:5:804:40 | ExprStmt | | +| main.rs:803:5:803:23 | ExprStmt | main.rs:803:5:803:20 | mutable_variable | | +| main.rs:804:5:804:37 | mutable_variable_immutable_borrow | main.rs:804:5:804:39 | mutable_variable_immutable_borrow(...) | | +| main.rs:804:5:804:39 | mutable_variable_immutable_borrow(...) | main.rs:805:5:805:23 | ExprStmt | | +| main.rs:804:5:804:40 | ExprStmt | main.rs:804:5:804:37 | mutable_variable_immutable_borrow | | +| main.rs:805:5:805:20 | variable_shadow1 | main.rs:805:5:805:22 | variable_shadow1(...) | | +| main.rs:805:5:805:22 | variable_shadow1(...) | main.rs:806:5:806:23 | ExprStmt | | +| main.rs:805:5:805:23 | ExprStmt | main.rs:805:5:805:20 | variable_shadow1 | | +| main.rs:806:5:806:20 | variable_shadow2 | main.rs:806:5:806:22 | variable_shadow2(...) | | +| main.rs:806:5:806:22 | variable_shadow2(...) | main.rs:807:5:807:19 | ExprStmt | | +| main.rs:806:5:806:23 | ExprStmt | main.rs:806:5:806:20 | variable_shadow2 | | +| main.rs:807:5:807:16 | let_pattern1 | main.rs:807:5:807:18 | let_pattern1(...) | | +| main.rs:807:5:807:18 | let_pattern1(...) | main.rs:808:5:808:19 | ExprStmt | | +| main.rs:807:5:807:19 | ExprStmt | main.rs:807:5:807:16 | let_pattern1 | | +| main.rs:808:5:808:16 | let_pattern2 | main.rs:808:5:808:18 | let_pattern2(...) | | +| main.rs:808:5:808:18 | let_pattern2(...) | main.rs:809:5:809:19 | ExprStmt | | +| main.rs:808:5:808:19 | ExprStmt | main.rs:808:5:808:16 | let_pattern2 | | +| main.rs:809:5:809:16 | let_pattern3 | main.rs:809:5:809:18 | let_pattern3(...) | | +| main.rs:809:5:809:18 | let_pattern3(...) | main.rs:810:5:810:19 | ExprStmt | | +| main.rs:809:5:809:19 | ExprStmt | main.rs:809:5:809:16 | let_pattern3 | | +| main.rs:810:5:810:16 | let_pattern4 | main.rs:810:5:810:18 | let_pattern4(...) | | +| main.rs:810:5:810:18 | let_pattern4(...) | main.rs:811:5:811:21 | ExprStmt | | +| main.rs:810:5:810:19 | ExprStmt | main.rs:810:5:810:16 | let_pattern4 | | +| main.rs:811:5:811:18 | match_pattern1 | main.rs:811:5:811:20 | match_pattern1(...) | | +| main.rs:811:5:811:20 | match_pattern1(...) | main.rs:812:5:812:21 | ExprStmt | | +| main.rs:811:5:811:21 | ExprStmt | main.rs:811:5:811:18 | match_pattern1 | | +| main.rs:812:5:812:18 | match_pattern2 | main.rs:812:5:812:20 | match_pattern2(...) | | +| main.rs:812:5:812:20 | match_pattern2(...) | main.rs:813:5:813:21 | ExprStmt | | +| main.rs:812:5:812:21 | ExprStmt | main.rs:812:5:812:18 | match_pattern2 | | +| main.rs:813:5:813:18 | match_pattern3 | main.rs:813:5:813:20 | match_pattern3(...) | | +| main.rs:813:5:813:20 | match_pattern3(...) | main.rs:814:5:814:21 | ExprStmt | | +| main.rs:813:5:813:21 | ExprStmt | main.rs:813:5:813:18 | match_pattern3 | | +| main.rs:814:5:814:18 | match_pattern4 | main.rs:814:5:814:20 | match_pattern4(...) | | +| main.rs:814:5:814:20 | match_pattern4(...) | main.rs:815:5:815:21 | ExprStmt | | +| main.rs:814:5:814:21 | ExprStmt | main.rs:814:5:814:18 | match_pattern4 | | +| main.rs:815:5:815:18 | match_pattern5 | main.rs:815:5:815:20 | match_pattern5(...) | | +| main.rs:815:5:815:20 | match_pattern5(...) | main.rs:816:5:816:21 | ExprStmt | | +| main.rs:815:5:815:21 | ExprStmt | main.rs:815:5:815:18 | match_pattern5 | | +| main.rs:816:5:816:18 | match_pattern6 | main.rs:816:5:816:20 | match_pattern6(...) | | +| main.rs:816:5:816:20 | match_pattern6(...) | main.rs:817:5:817:21 | ExprStmt | | +| main.rs:816:5:816:21 | ExprStmt | main.rs:816:5:816:18 | match_pattern6 | | +| main.rs:817:5:817:18 | match_pattern7 | main.rs:817:5:817:20 | match_pattern7(...) | | +| main.rs:817:5:817:20 | match_pattern7(...) | main.rs:818:5:818:21 | ExprStmt | | +| main.rs:817:5:817:21 | ExprStmt | main.rs:817:5:817:18 | match_pattern7 | | +| main.rs:818:5:818:18 | match_pattern8 | main.rs:818:5:818:20 | match_pattern8(...) | | +| main.rs:818:5:818:20 | match_pattern8(...) | main.rs:819:5:819:21 | ExprStmt | | +| main.rs:818:5:818:21 | ExprStmt | main.rs:818:5:818:18 | match_pattern8 | | +| main.rs:819:5:819:18 | match_pattern9 | main.rs:819:5:819:20 | match_pattern9(...) | | +| main.rs:819:5:819:20 | match_pattern9(...) | main.rs:820:5:820:22 | ExprStmt | | +| main.rs:819:5:819:21 | ExprStmt | main.rs:819:5:819:18 | match_pattern9 | | +| main.rs:820:5:820:19 | match_pattern10 | main.rs:820:5:820:21 | match_pattern10(...) | | +| main.rs:820:5:820:21 | match_pattern10(...) | main.rs:821:5:821:22 | ExprStmt | | +| main.rs:820:5:820:22 | ExprStmt | main.rs:820:5:820:19 | match_pattern10 | | +| main.rs:821:5:821:19 | match_pattern11 | main.rs:821:5:821:21 | match_pattern11(...) | | +| main.rs:821:5:821:21 | match_pattern11(...) | main.rs:822:5:822:22 | ExprStmt | | +| main.rs:821:5:821:22 | ExprStmt | main.rs:821:5:821:19 | match_pattern11 | | +| main.rs:822:5:822:19 | match_pattern12 | main.rs:822:5:822:21 | match_pattern12(...) | | +| main.rs:822:5:822:21 | match_pattern12(...) | main.rs:823:5:823:22 | ExprStmt | | +| main.rs:822:5:822:22 | ExprStmt | main.rs:822:5:822:19 | match_pattern12 | | +| main.rs:823:5:823:19 | match_pattern13 | main.rs:823:5:823:21 | match_pattern13(...) | | +| main.rs:823:5:823:21 | match_pattern13(...) | main.rs:824:5:824:22 | ExprStmt | | +| main.rs:823:5:823:22 | ExprStmt | main.rs:823:5:823:19 | match_pattern13 | | +| main.rs:824:5:824:19 | match_pattern14 | main.rs:824:5:824:21 | match_pattern14(...) | | +| main.rs:824:5:824:21 | match_pattern14(...) | main.rs:825:5:825:22 | ExprStmt | | +| main.rs:824:5:824:22 | ExprStmt | main.rs:824:5:824:19 | match_pattern14 | | +| main.rs:825:5:825:19 | match_pattern15 | main.rs:825:5:825:21 | match_pattern15(...) | | +| main.rs:825:5:825:21 | match_pattern15(...) | main.rs:826:5:826:22 | ExprStmt | | +| main.rs:825:5:825:22 | ExprStmt | main.rs:825:5:825:19 | match_pattern15 | | +| main.rs:826:5:826:19 | match_pattern16 | main.rs:826:5:826:21 | match_pattern16(...) | | +| main.rs:826:5:826:21 | match_pattern16(...) | main.rs:827:5:827:36 | ExprStmt | | +| main.rs:826:5:826:22 | ExprStmt | main.rs:826:5:826:19 | match_pattern16 | | +| main.rs:827:5:827:18 | param_pattern1 | main.rs:827:20:827:22 | "a" | | +| main.rs:827:5:827:35 | param_pattern1(...) | main.rs:828:5:828:37 | ExprStmt | | +| main.rs:827:5:827:36 | ExprStmt | main.rs:827:5:827:18 | param_pattern1 | | +| main.rs:827:20:827:22 | "a" | main.rs:827:26:827:28 | "b" | | +| main.rs:827:25:827:34 | TupleExpr | main.rs:827:5:827:35 | param_pattern1(...) | | +| main.rs:827:26:827:28 | "b" | main.rs:827:31:827:33 | "c" | | +| main.rs:827:31:827:33 | "c" | main.rs:827:25:827:34 | TupleExpr | | +| main.rs:828:5:828:18 | param_pattern2 | main.rs:828:20:828:31 | ...::Left | | +| main.rs:828:5:828:36 | param_pattern2(...) | main.rs:829:5:829:26 | ExprStmt | | +| main.rs:828:5:828:37 | ExprStmt | main.rs:828:5:828:18 | param_pattern2 | | +| main.rs:828:20:828:31 | ...::Left | main.rs:828:33:828:34 | 45 | | +| main.rs:828:20:828:35 | ...::Left(...) | main.rs:828:5:828:36 | param_pattern2(...) | | +| main.rs:828:33:828:34 | 45 | main.rs:828:20:828:35 | ...::Left(...) | | +| main.rs:829:5:829:23 | destruct_assignment | main.rs:829:5:829:25 | destruct_assignment(...) | | +| main.rs:829:5:829:25 | destruct_assignment(...) | main.rs:830:5:830:23 | ExprStmt | | +| main.rs:829:5:829:26 | ExprStmt | main.rs:829:5:829:23 | destruct_assignment | | +| main.rs:830:5:830:20 | closure_variable | main.rs:830:5:830:22 | closure_variable(...) | | +| main.rs:830:5:830:22 | closure_variable(...) | main.rs:831:5:831:22 | ExprStmt | | +| main.rs:830:5:830:23 | ExprStmt | main.rs:830:5:830:20 | closure_variable | | +| main.rs:831:5:831:19 | nested_function | main.rs:831:5:831:21 | nested_function(...) | | +| main.rs:831:5:831:21 | nested_function(...) | main.rs:832:5:832:19 | ExprStmt | | +| main.rs:831:5:831:22 | ExprStmt | main.rs:831:5:831:19 | nested_function | | +| main.rs:832:5:832:16 | for_variable | main.rs:832:5:832:18 | for_variable(...) | | +| main.rs:832:5:832:18 | for_variable(...) | main.rs:833:5:833:17 | ExprStmt | | +| main.rs:832:5:832:19 | ExprStmt | main.rs:832:5:832:16 | for_variable | | +| main.rs:833:5:833:14 | add_assign | main.rs:833:5:833:16 | add_assign(...) | | +| main.rs:833:5:833:16 | add_assign(...) | main.rs:834:5:834:13 | ExprStmt | | +| main.rs:833:5:833:17 | ExprStmt | main.rs:833:5:833:14 | add_assign | | +| main.rs:834:5:834:10 | mutate | main.rs:834:5:834:12 | mutate(...) | | +| main.rs:834:5:834:12 | mutate(...) | main.rs:835:5:835:17 | ExprStmt | | +| main.rs:834:5:834:13 | ExprStmt | main.rs:834:5:834:10 | mutate | | +| main.rs:835:5:835:14 | mutate_arg | main.rs:835:5:835:16 | mutate_arg(...) | | +| main.rs:835:5:835:16 | mutate_arg(...) | main.rs:836:5:836:12 | ExprStmt | | +| main.rs:835:5:835:17 | ExprStmt | main.rs:835:5:835:14 | mutate_arg | | +| main.rs:836:5:836:9 | alias | main.rs:836:5:836:11 | alias(...) | | +| main.rs:836:5:836:11 | alias(...) | main.rs:837:5:837:18 | ExprStmt | | +| main.rs:836:5:836:12 | ExprStmt | main.rs:836:5:836:9 | alias | | +| main.rs:837:5:837:15 | capture_mut | main.rs:837:5:837:17 | capture_mut(...) | | +| main.rs:837:5:837:17 | capture_mut(...) | main.rs:838:5:838:20 | ExprStmt | | +| main.rs:837:5:837:18 | ExprStmt | main.rs:837:5:837:15 | capture_mut | | +| main.rs:838:5:838:17 | capture_immut | main.rs:838:5:838:19 | capture_immut(...) | | +| main.rs:838:5:838:19 | capture_immut(...) | main.rs:839:5:839:26 | ExprStmt | | +| main.rs:838:5:838:20 | ExprStmt | main.rs:838:5:838:17 | capture_immut | | +| main.rs:839:5:839:23 | async_block_capture | main.rs:839:5:839:25 | async_block_capture(...) | | +| main.rs:839:5:839:25 | async_block_capture(...) | main.rs:840:5:840:14 | ExprStmt | | +| main.rs:839:5:839:26 | ExprStmt | main.rs:839:5:839:23 | async_block_capture | | +| main.rs:840:5:840:11 | structs | main.rs:840:5:840:13 | structs(...) | | +| main.rs:840:5:840:13 | structs(...) | main.rs:841:5:841:14 | ExprStmt | | +| main.rs:840:5:840:14 | ExprStmt | main.rs:840:5:840:11 | structs | | +| main.rs:841:5:841:11 | ref_arg | main.rs:841:5:841:13 | ref_arg(...) | | +| main.rs:841:5:841:13 | ref_arg(...) | main.rs:842:5:842:30 | ExprStmt | | +| main.rs:841:5:841:14 | ExprStmt | main.rs:841:5:841:11 | ref_arg | | +| main.rs:842:5:842:27 | ref_methodcall_receiver | main.rs:842:5:842:29 | ref_methodcall_receiver(...) | | +| main.rs:842:5:842:29 | ref_methodcall_receiver(...) | main.rs:843:5:843:23 | ExprStmt | | +| main.rs:842:5:842:30 | ExprStmt | main.rs:842:5:842:27 | ref_methodcall_receiver | | +| main.rs:843:5:843:20 | macro_invocation | main.rs:843:5:843:22 | macro_invocation(...) | | +| main.rs:843:5:843:22 | macro_invocation(...) | main.rs:844:5:844:18 | ExprStmt | | +| main.rs:843:5:843:23 | ExprStmt | main.rs:843:5:843:20 | macro_invocation | | +| main.rs:844:5:844:15 | capture_phi | main.rs:844:5:844:17 | capture_phi(...) | | +| main.rs:844:5:844:17 | capture_phi(...) | main.rs:801:11:845:1 | { ... } | | +| main.rs:844:5:844:18 | ExprStmt | main.rs:844:5:844:15 | capture_phi | | breakTarget | main.rs:326:9:326:13 | break | main.rs:317:5:327:5 | while ... { ... } | continueTarget diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index 4b9764b21c9a..0acf3e94c5b5 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -94,105 +94,115 @@ definition | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | | main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | -| main.rs:384:33:384:34 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:384:53:384:54 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | -| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | -| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | -| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | -| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | -| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | -| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | -| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | -| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | -| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | -| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | -| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | -| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | -| main.rs:566:13:566:13 | y | main.rs:566:13:566:13 | y | -| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | -| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | -| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | -| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | -| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | -| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | -| main.rs:586:13:586:13 | i | main.rs:586:13:586:13 | i | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | -| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | -| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | -| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | -| main.rs:645:23:645:26 | self | main.rs:645:23:645:26 | self | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | -| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | -| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | -| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | -| main.rs:734:13:734:13 | x | main.rs:734:13:734:13 | x | -| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | -| main.rs:735:19:740:5 | x | main.rs:734:13:734:13 | x | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | -| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | -| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | +| main.rs:395:33:395:34 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:395:53:395:54 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | +| main.rs:496:13:496:13 | a | main.rs:496:13:496:13 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | +| main.rs:499:6:499:11 | &mut a | main.rs:496:13:496:13 | a | +| main.rs:504:13:504:13 | i | main.rs:504:13:504:13 | i | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | +| main.rs:506:9:506:14 | &mut i | main.rs:504:13:504:13 | i | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | +| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | +| main.rs:535:13:535:13 | z | main.rs:535:13:535:13 | z | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | +| main.rs:539:9:539:14 | &mut z | main.rs:535:13:535:13 | z | +| main.rs:549:13:549:13 | x | main.rs:549:13:549:13 | x | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | +| main.rs:551:9:551:14 | &mut x | main.rs:549:13:549:13 | x | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | +| main.rs:560:15:562:5 | x | main.rs:557:9:557:9 | x | +| main.rs:568:13:568:13 | x | main.rs:568:13:568:13 | x | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | +| main.rs:571:20:573:5 | x | main.rs:568:13:568:13 | x | +| main.rs:577:13:577:13 | y | main.rs:577:13:577:13 | y | +| main.rs:580:13:580:20 | closure2 | main.rs:580:13:580:20 | closure2 | +| main.rs:581:9:581:9 | y | main.rs:577:13:577:13 | y | +| main.rs:583:5:583:14 | y | main.rs:577:13:577:13 | y | +| main.rs:586:13:586:13 | z | main.rs:586:13:586:13 | z | +| main.rs:589:13:589:20 | closure3 | main.rs:589:13:589:20 | closure3 | +| main.rs:589:24:591:5 | z | main.rs:586:13:586:13 | z | +| main.rs:597:13:597:13 | i | main.rs:597:13:597:13 | i | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | +| main.rs:599:9:599:9 | i | main.rs:597:13:597:13 | i | +| main.rs:602:5:602:15 | i | main.rs:597:13:597:13 | i | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | +| main.rs:648:20:648:23 | self | main.rs:648:20:648:23 | self | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | self | +| main.rs:656:23:656:26 | self | main.rs:656:23:656:26 | self | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | +| main.rs:657:21:660:9 | self | main.rs:656:23:656:26 | self | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | +| main.rs:667:13:667:13 | a | main.rs:667:13:667:13 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | +| main.rs:698:17:698:20 | self | main.rs:698:17:698:20 | self | +| main.rs:704:13:704:13 | a | main.rs:704:13:704:13 | a | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | +| main.rs:745:13:745:13 | x | main.rs:745:13:745:13 | x | +| main.rs:746:13:746:15 | cap | main.rs:746:13:746:15 | cap | +| main.rs:746:19:751:5 | x | main.rs:745:13:745:13 | x | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:745:13:745:13 | x | +| main.rs:749:13:749:13 | x | main.rs:745:13:745:13 | x | +| main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | +| main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | +| main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | +| main.rs:769:13:769:16 | N0ne | main.rs:769:13:769:16 | N0ne | +| main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | +| main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | +| main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | read | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -284,120 +294,131 @@ read | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | main.rs:357:19:357:19 | x | | main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x | | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | main.rs:379:15:379:16 | a8 | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | main.rs:380:15:380:16 | b3 | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | main.rs:381:15:381:16 | c1 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:386:15:386:16 | a9 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:404:9:404:11 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:405:9:405:10 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:406:9:406:10 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | main.rs:410:15:410:16 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:423:15:423:16 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:422:15:422:17 | a10 | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | main.rs:417:23:417:25 | a10 | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | main.rs:418:23:418:24 | b4 | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | main.rs:431:9:431:23 | example_closure | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | main.rs:429:9:429:9 | x | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | main.rs:432:15:432:16 | n1 | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | main.rs:439:9:439:26 | immutable_variable | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | main.rs:437:9:437:9 | x | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | main.rs:440:15:440:16 | n2 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:455:15:455:15 | f | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | main.rs:447:9:447:9 | x | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | main.rs:452:9:452:9 | x | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | main.rs:461:17:461:17 | x | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | main.rs:471:19:471:19 | f | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | main.rs:470:13:470:13 | x | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | main.rs:480:19:480:22 | text | -| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | main.rs:486:5:486:5 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:488:11:488:11 | a | -| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | main.rs:489:15:489:15 | a | -| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | main.rs:495:14:495:14 | i | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | main.rs:496:6:496:10 | ref_i | -| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | main.rs:497:15:497:15 | i | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:502:10:502:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:503:10:503:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:504:12:504:12 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:509:10:509:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:510:10:510:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:512:9:512:9 | x | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | main.rs:511:6:511:6 | y | -| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | main.rs:518:27:518:27 | x | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | main.rs:519:6:519:6 | y | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:526:19:526:19 | x | -| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | main.rs:528:14:528:14 | z | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:531:7:531:7 | w | -| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | main.rs:534:15:534:15 | z | -| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | main.rs:540:14:540:14 | x | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | main.rs:541:6:541:6 | y | -| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | main.rs:542:15:542:15 | x | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | main.rs:553:15:553:15 | x | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | main.rs:552:5:552:7 | cap | -| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | main.rs:550:19:550:19 | x | -| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | main.rs:564:15:564:15 | x | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:12 | closure1 | -| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | main.rs:561:19:561:19 | x | -| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | main.rs:572:5:572:12 | closure2 | -| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | main.rs:573:15:573:15 | y | -| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | main.rs:582:15:582:15 | z | -| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | main.rs:581:5:581:12 | closure3 | -| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | main.rs:579:9:579:9 | z | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | main.rs:591:5:591:9 | block | -| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | main.rs:592:15:592:15 | i | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | main.rs:600:16:600:16 | b | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:598:15:598:15 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:610:15:610:15 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:604:19:604:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:608:19:608:19 | x | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | main.rs:616:16:616:17 | b1 | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | main.rs:624:16:624:17 | b2 | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:626:19:626:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:628:19:628:19 | x | -| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | main.rs:638:16:638:19 | self | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | main.rs:642:9:642:12 | self | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:651:9:651:9 | f | -| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | main.rs:648:13:648:16 | self | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | main.rs:648:25:648:25 | n | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:657:15:657:15 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:659:15:659:15 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | main.rs:661:15:661:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:667:5:667:5 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:668:15:668:15 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | main.rs:670:15:670:15 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:676:15:676:15 | x | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | main.rs:679:20:679:20 | z | -| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | main.rs:688:10:688:13 | self | -| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | main.rs:694:5:694:5 | a | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | main.rs:697:15:697:15 | a | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | main.rs:717:15:717:28 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | main.rs:724:15:724:26 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | main.rs:730:15:730:15 | x | -| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | main.rs:741:5:741:7 | cap | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | main.rs:737:20:737:20 | b | -| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | main.rs:742:15:742:15 | x | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | main.rs:378:26:378:26 | y | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | main.rs:390:15:390:16 | a8 | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | main.rs:391:15:391:16 | b3 | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | main.rs:392:15:392:16 | c1 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:397:15:397:16 | a9 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:406:15:406:17 | a10 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:415:9:415:11 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:407:15:407:16 | b4 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:416:9:416:10 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:408:15:408:16 | c2 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:417:9:417:10 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | main.rs:421:15:421:16 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:420:15:420:16 | b4 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:434:15:434:16 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:419:15:419:17 | a10 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:433:15:433:17 | a10 | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | main.rs:428:23:428:25 | a10 | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | main.rs:429:23:429:24 | b4 | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | main.rs:442:9:442:23 | example_closure | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | main.rs:440:9:440:9 | x | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | main.rs:443:15:443:16 | n1 | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | main.rs:450:9:450:26 | immutable_variable | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | main.rs:448:9:448:9 | x | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | main.rs:451:15:451:16 | n2 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:459:15:459:15 | f | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:466:15:466:15 | f | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | main.rs:458:9:458:9 | x | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | main.rs:463:9:463:9 | x | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | main.rs:472:17:472:17 | x | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | main.rs:482:19:482:19 | f | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | main.rs:481:13:481:13 | x | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | main.rs:490:12:490:12 | v | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | main.rs:491:19:491:22 | text | +| main.rs:496:13:496:13 | a | main.rs:496:13:496:13 | a | main.rs:497:5:497:5 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:498:15:498:15 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:499:11:499:11 | a | +| main.rs:499:6:499:11 | &mut a | main.rs:496:13:496:13 | a | main.rs:500:15:500:15 | a | +| main.rs:504:13:504:13 | i | main.rs:504:13:504:13 | i | main.rs:506:14:506:14 | i | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | main.rs:507:6:507:10 | ref_i | +| main.rs:506:9:506:14 | &mut i | main.rs:504:13:504:13 | i | main.rs:508:15:508:15 | i | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:512:6:512:6 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:513:10:513:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:514:10:514:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:515:12:515:12 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:519:6:519:6 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:520:10:520:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:521:10:521:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:523:9:523:9 | x | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | main.rs:522:6:522:6 | y | +| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | main.rs:529:27:529:27 | x | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | main.rs:530:6:530:6 | y | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:533:15:533:15 | x | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:537:19:537:19 | x | +| main.rs:535:13:535:13 | z | main.rs:535:13:535:13 | z | main.rs:539:14:539:14 | z | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:540:9:540:9 | w | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:542:7:542:7 | w | +| main.rs:539:9:539:14 | &mut z | main.rs:535:13:535:13 | z | main.rs:545:15:545:15 | z | +| main.rs:549:13:549:13 | x | main.rs:549:13:549:13 | x | main.rs:551:14:551:14 | x | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | main.rs:552:6:552:6 | y | +| main.rs:551:9:551:14 | &mut x | main.rs:549:13:549:13 | x | main.rs:553:15:553:15 | x | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | main.rs:564:15:564:15 | x | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | main.rs:563:5:563:7 | cap | +| main.rs:560:15:562:5 | x | main.rs:557:9:557:9 | x | main.rs:561:19:561:19 | x | +| main.rs:568:13:568:13 | x | main.rs:568:13:568:13 | x | main.rs:575:15:575:15 | x | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | main.rs:574:5:574:12 | closure1 | +| main.rs:571:20:573:5 | x | main.rs:568:13:568:13 | x | main.rs:572:19:572:19 | x | +| main.rs:580:13:580:20 | closure2 | main.rs:580:13:580:20 | closure2 | main.rs:583:5:583:12 | closure2 | +| main.rs:583:5:583:14 | y | main.rs:577:13:577:13 | y | main.rs:584:15:584:15 | y | +| main.rs:586:13:586:13 | z | main.rs:586:13:586:13 | z | main.rs:593:15:593:15 | z | +| main.rs:589:13:589:20 | closure3 | main.rs:589:13:589:20 | closure3 | main.rs:592:5:592:12 | closure3 | +| main.rs:589:24:591:5 | z | main.rs:586:13:586:13 | z | main.rs:590:9:590:9 | z | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | main.rs:602:5:602:9 | block | +| main.rs:602:5:602:15 | i | main.rs:597:13:597:13 | i | main.rs:603:15:603:15 | i | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | main.rs:611:16:611:16 | b | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:608:15:608:15 | x | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:609:15:609:15 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:621:15:621:15 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:614:19:614:19 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:615:19:615:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:618:19:618:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:619:19:619:19 | x | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | main.rs:627:16:627:17 | b1 | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | main.rs:635:16:635:17 | b2 | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:637:19:637:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:639:19:639:19 | x | +| main.rs:648:20:648:23 | self | main.rs:648:20:648:23 | self | main.rs:649:16:649:19 | self | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | self | main.rs:653:9:653:12 | self | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:661:9:661:9 | f | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:662:9:662:9 | f | +| main.rs:657:21:660:9 | self | main.rs:656:23:656:26 | self | main.rs:659:13:659:16 | self | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | main.rs:659:25:659:25 | n | +| main.rs:667:13:667:13 | a | main.rs:667:13:667:13 | a | main.rs:668:15:668:15 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:669:5:669:5 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:670:15:670:15 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | main.rs:672:15:672:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:677:15:677:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:678:5:678:5 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:679:15:679:15 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | main.rs:681:15:681:15 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:686:20:686:20 | x | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:687:15:687:15 | x | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | main.rs:690:20:690:20 | z | +| main.rs:698:17:698:20 | self | main.rs:698:17:698:20 | self | main.rs:699:10:699:13 | self | +| main.rs:704:13:704:13 | a | main.rs:704:13:704:13 | a | main.rs:705:5:705:5 | a | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | main.rs:708:15:708:15 | a | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | main.rs:728:15:728:28 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | main.rs:735:15:735:26 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | main.rs:734:30:734:41 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | main.rs:741:15:741:15 | x | +| main.rs:746:13:746:15 | cap | main.rs:746:13:746:15 | cap | main.rs:752:5:752:7 | cap | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | main.rs:748:20:748:20 | b | +| main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | main.rs:753:15:753:15 | x | +| main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | main.rs:761:19:761:19 | x | +| main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | main.rs:768:15:768:15 | y | +| main.rs:769:13:769:16 | N0ne | main.rs:769:13:769:16 | N0ne | main.rs:770:17:770:20 | N0ne | +| main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | main.rs:779:13:779:22 | test_alias | +| main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | main.rs:780:9:780:12 | test | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:788:15:788:15 | x | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:793:15:793:15 | x | +| main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | main.rs:790:20:790:20 | x | firstRead | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -472,95 +493,105 @@ firstRead | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | main.rs:357:19:357:19 | x | | main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x | | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | main.rs:379:15:379:16 | a8 | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | main.rs:380:15:380:16 | b3 | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | main.rs:381:15:381:16 | c1 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:386:15:386:16 | a9 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | main.rs:410:15:410:16 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | main.rs:417:23:417:25 | a10 | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | main.rs:418:23:418:24 | b4 | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | main.rs:431:9:431:23 | example_closure | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | main.rs:429:9:429:9 | x | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | main.rs:432:15:432:16 | n1 | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | main.rs:439:9:439:26 | immutable_variable | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | main.rs:437:9:437:9 | x | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | main.rs:440:15:440:16 | n2 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | main.rs:447:9:447:9 | x | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | main.rs:452:9:452:9 | x | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | main.rs:461:17:461:17 | x | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | main.rs:471:19:471:19 | f | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | main.rs:470:13:470:13 | x | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | main.rs:480:19:480:22 | text | -| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | main.rs:486:5:486:5 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | -| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | main.rs:489:15:489:15 | a | -| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | main.rs:495:14:495:14 | i | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | main.rs:496:6:496:10 | ref_i | -| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | main.rs:497:15:497:15 | i | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | main.rs:511:6:511:6 | y | -| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | main.rs:518:27:518:27 | x | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | main.rs:519:6:519:6 | y | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | -| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | main.rs:528:14:528:14 | z | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | -| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | main.rs:534:15:534:15 | z | -| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | main.rs:540:14:540:14 | x | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | main.rs:541:6:541:6 | y | -| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | main.rs:542:15:542:15 | x | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | main.rs:553:15:553:15 | x | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | main.rs:552:5:552:7 | cap | -| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | main.rs:550:19:550:19 | x | -| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | main.rs:564:15:564:15 | x | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:12 | closure1 | -| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | main.rs:561:19:561:19 | x | -| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | main.rs:572:5:572:12 | closure2 | -| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | main.rs:573:15:573:15 | y | -| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | main.rs:582:15:582:15 | z | -| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | main.rs:581:5:581:12 | closure3 | -| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | main.rs:579:9:579:9 | z | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | main.rs:591:5:591:9 | block | -| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | main.rs:592:15:592:15 | i | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | main.rs:600:16:600:16 | b | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:610:15:610:15 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | main.rs:616:16:616:17 | b1 | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | main.rs:624:16:624:17 | b2 | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | -| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | main.rs:638:16:638:19 | self | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | main.rs:642:9:642:12 | self | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | -| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | main.rs:648:13:648:16 | self | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | main.rs:648:25:648:25 | n | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:657:15:657:15 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | main.rs:661:15:661:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | main.rs:670:15:670:15 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | main.rs:679:20:679:20 | z | -| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | main.rs:688:10:688:13 | self | -| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | main.rs:694:5:694:5 | a | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | main.rs:697:15:697:15 | a | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | main.rs:717:15:717:28 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | main.rs:724:15:724:26 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | main.rs:730:15:730:15 | x | -| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | main.rs:741:5:741:7 | cap | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | main.rs:737:20:737:20 | b | -| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | main.rs:742:15:742:15 | x | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | main.rs:378:26:378:26 | y | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | main.rs:390:15:390:16 | a8 | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | main.rs:391:15:391:16 | b3 | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | main.rs:392:15:392:16 | c1 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:397:15:397:16 | a9 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:406:15:406:17 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:407:15:407:16 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:408:15:408:16 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | main.rs:421:15:421:16 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:420:15:420:16 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:419:15:419:17 | a10 | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | main.rs:428:23:428:25 | a10 | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | main.rs:429:23:429:24 | b4 | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | main.rs:442:9:442:23 | example_closure | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | main.rs:440:9:440:9 | x | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | main.rs:443:15:443:16 | n1 | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | main.rs:450:9:450:26 | immutable_variable | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | main.rs:448:9:448:9 | x | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | main.rs:451:15:451:16 | n2 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:459:15:459:15 | f | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | main.rs:458:9:458:9 | x | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | main.rs:463:9:463:9 | x | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | main.rs:472:17:472:17 | x | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | main.rs:482:19:482:19 | f | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | main.rs:481:13:481:13 | x | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | main.rs:490:12:490:12 | v | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | main.rs:491:19:491:22 | text | +| main.rs:496:13:496:13 | a | main.rs:496:13:496:13 | a | main.rs:497:5:497:5 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:498:15:498:15 | a | +| main.rs:499:6:499:11 | &mut a | main.rs:496:13:496:13 | a | main.rs:500:15:500:15 | a | +| main.rs:504:13:504:13 | i | main.rs:504:13:504:13 | i | main.rs:506:14:506:14 | i | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | main.rs:507:6:507:10 | ref_i | +| main.rs:506:9:506:14 | &mut i | main.rs:504:13:504:13 | i | main.rs:508:15:508:15 | i | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:512:6:512:6 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:519:6:519:6 | x | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | main.rs:522:6:522:6 | y | +| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | main.rs:529:27:529:27 | x | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | main.rs:530:6:530:6 | y | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:533:15:533:15 | x | +| main.rs:535:13:535:13 | z | main.rs:535:13:535:13 | z | main.rs:539:14:539:14 | z | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:540:9:540:9 | w | +| main.rs:539:9:539:14 | &mut z | main.rs:535:13:535:13 | z | main.rs:545:15:545:15 | z | +| main.rs:549:13:549:13 | x | main.rs:549:13:549:13 | x | main.rs:551:14:551:14 | x | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | main.rs:552:6:552:6 | y | +| main.rs:551:9:551:14 | &mut x | main.rs:549:13:549:13 | x | main.rs:553:15:553:15 | x | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | main.rs:564:15:564:15 | x | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | main.rs:563:5:563:7 | cap | +| main.rs:560:15:562:5 | x | main.rs:557:9:557:9 | x | main.rs:561:19:561:19 | x | +| main.rs:568:13:568:13 | x | main.rs:568:13:568:13 | x | main.rs:575:15:575:15 | x | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | main.rs:574:5:574:12 | closure1 | +| main.rs:571:20:573:5 | x | main.rs:568:13:568:13 | x | main.rs:572:19:572:19 | x | +| main.rs:580:13:580:20 | closure2 | main.rs:580:13:580:20 | closure2 | main.rs:583:5:583:12 | closure2 | +| main.rs:583:5:583:14 | y | main.rs:577:13:577:13 | y | main.rs:584:15:584:15 | y | +| main.rs:586:13:586:13 | z | main.rs:586:13:586:13 | z | main.rs:593:15:593:15 | z | +| main.rs:589:13:589:20 | closure3 | main.rs:589:13:589:20 | closure3 | main.rs:592:5:592:12 | closure3 | +| main.rs:589:24:591:5 | z | main.rs:586:13:586:13 | z | main.rs:590:9:590:9 | z | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | main.rs:602:5:602:9 | block | +| main.rs:602:5:602:15 | i | main.rs:597:13:597:13 | i | main.rs:603:15:603:15 | i | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | main.rs:611:16:611:16 | b | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:608:15:608:15 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:621:15:621:15 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:614:19:614:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:618:19:618:19 | x | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | main.rs:627:16:627:17 | b1 | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | main.rs:635:16:635:17 | b2 | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | +| main.rs:648:20:648:23 | self | main.rs:648:20:648:23 | self | main.rs:649:16:649:19 | self | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | self | main.rs:653:9:653:12 | self | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:661:9:661:9 | f | +| main.rs:657:21:660:9 | self | main.rs:656:23:656:26 | self | main.rs:659:13:659:16 | self | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | main.rs:659:25:659:25 | n | +| main.rs:667:13:667:13 | a | main.rs:667:13:667:13 | a | main.rs:668:15:668:15 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:669:5:669:5 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | main.rs:672:15:672:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:677:15:677:15 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | main.rs:681:15:681:15 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:686:20:686:20 | x | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | main.rs:690:20:690:20 | z | +| main.rs:698:17:698:20 | self | main.rs:698:17:698:20 | self | main.rs:699:10:699:13 | self | +| main.rs:704:13:704:13 | a | main.rs:704:13:704:13 | a | main.rs:705:5:705:5 | a | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | main.rs:708:15:708:15 | a | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | main.rs:728:15:728:28 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | main.rs:735:15:735:26 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | main.rs:734:30:734:41 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | main.rs:741:15:741:15 | x | +| main.rs:746:13:746:15 | cap | main.rs:746:13:746:15 | cap | main.rs:752:5:752:7 | cap | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | main.rs:748:20:748:20 | b | +| main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | main.rs:753:15:753:15 | x | +| main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | main.rs:761:19:761:19 | x | +| main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | main.rs:768:15:768:15 | y | +| main.rs:769:13:769:16 | N0ne | main.rs:769:13:769:16 | N0ne | main.rs:770:17:770:20 | N0ne | +| main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | main.rs:779:13:779:22 | test_alias | +| main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | main.rs:780:9:780:12 | test | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:788:15:788:15 | x | +| main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | main.rs:790:20:790:20 | x | adjacentReads | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | main.rs:28:15:28:16 | x2 | main.rs:29:10:29:11 | x2 | | main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | main.rs:42:15:42:16 | x3 | main.rs:44:9:44:10 | x3 | @@ -580,33 +611,34 @@ adjacentReads | main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | main.rs:335:11:335:11 | x | main.rs:343:15:343:15 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:350:7:350:7 | x | main.rs:355:7:355:7 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:355:7:355:7 | x | main.rs:359:19:359:19 | x | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | main.rs:404:9:404:11 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | main.rs:405:9:405:10 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | main.rs:406:9:406:10 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | main.rs:423:15:423:16 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | main.rs:422:15:422:17 | a10 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | main.rs:455:15:455:15 | f | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | main.rs:488:11:488:11 | a | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | main.rs:502:10:502:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:502:10:502:10 | x | main.rs:503:10:503:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:503:10:503:10 | x | main.rs:504:12:504:12 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | main.rs:509:10:509:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:509:10:509:10 | x | main.rs:510:10:510:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:510:10:510:10 | x | main.rs:512:9:512:9 | x | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | main.rs:526:19:526:19 | x | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | main.rs:531:7:531:7 | w | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | main.rs:598:15:598:15 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | main.rs:604:19:604:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | main.rs:608:19:608:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | main.rs:626:19:626:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | main.rs:628:19:628:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | main.rs:626:19:626:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | main.rs:628:19:628:19 | x | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | main.rs:651:9:651:9 | f | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | main.rs:659:15:659:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | main.rs:667:5:667:5 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:667:5:667:5 | a | main.rs:668:15:668:15 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | main.rs:676:15:676:15 | x | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:406:15:406:17 | a10 | main.rs:415:9:415:11 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:407:15:407:16 | b4 | main.rs:416:9:416:10 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:408:15:408:16 | c2 | main.rs:417:9:417:10 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:420:15:420:16 | b4 | main.rs:434:15:434:16 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:419:15:419:17 | a10 | main.rs:433:15:433:17 | a10 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:459:15:459:15 | f | main.rs:466:15:466:15 | f | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:498:15:498:15 | a | main.rs:499:11:499:11 | a | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:512:6:512:6 | x | main.rs:513:10:513:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:513:10:513:10 | x | main.rs:514:10:514:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:514:10:514:10 | x | main.rs:515:12:515:12 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:519:6:519:6 | x | main.rs:520:10:520:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:520:10:520:10 | x | main.rs:521:10:521:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:521:10:521:10 | x | main.rs:523:9:523:9 | x | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:533:15:533:15 | x | main.rs:537:19:537:19 | x | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:540:9:540:9 | w | main.rs:542:7:542:7 | w | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:608:15:608:15 | x | main.rs:609:15:609:15 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:614:19:614:19 | x | main.rs:615:19:615:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:618:19:618:19 | x | main.rs:619:19:619:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | main.rs:637:19:637:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | main.rs:639:19:639:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | main.rs:637:19:637:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | main.rs:639:19:639:19 | x | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:661:9:661:9 | f | main.rs:662:9:662:9 | f | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:669:5:669:5 | a | main.rs:670:15:670:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:677:15:677:15 | a | main.rs:678:5:678:5 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:678:5:678:5 | a | main.rs:679:15:679:15 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:686:20:686:20 | x | main.rs:687:15:687:15 | x | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:788:15:788:15 | x | main.rs:793:15:793:15 | x | phi | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:210:22:210:23 | a3 | | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:210:42:210:43 | a3 | @@ -630,24 +662,24 @@ phi | main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:106:274:108 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:54:274:56 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:79:274:81 | a13 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:384:33:384:34 | a9 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:384:53:384:54 | a9 | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:602:9:602:9 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:606:9:606:9 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | main.rs:735:19:740:5 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | main.rs:738:13:738:13 | x | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:395:33:395:34 | a9 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:395:53:395:54 | a9 | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:613:9:613:9 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:617:9:617:9 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:745:13:745:13 | x | main.rs:746:19:751:5 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:745:13:745:13 | x | main.rs:749:13:749:13 | x | phiReadNode | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:625:9:625:9 | x | phiReadNodeFirstRead | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | main.rs:116:11:116:12 | s1 | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | main.rs:626:19:626:19 | x | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | main.rs:628:19:628:19 | x | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:625:9:625:9 | x | main.rs:637:19:637:19 | x | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:625:9:625:9 | x | main.rs:639:19:639:19 | x | phiReadInput | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:116:11:116:12 | SSA read(s1) | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:618:19:618:19 | SSA read(x) | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:620:19:620:19 | SSA read(x) | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:629:19:629:19 | SSA read(x) | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:631:19:631:19 | SSA read(x) | ultimateDef | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:22:210:23 | a3 | | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:42:210:43 | a3 | @@ -674,12 +706,12 @@ ultimateDef | main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:106:274:108 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:54:274:56 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:79:274:81 | a13 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:33:384:34 | a9 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:53:384:54 | a9 | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:602:9:602:9 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:606:9:606:9 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:735:19:740:5 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:738:13:738:13 | x | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:33:395:34 | a9 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:53:395:54 | a9 | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:613:9:613:9 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:617:9:617:9 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:746:19:751:5 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:749:13:749:13 | x | assigns | main.rs:20:9:20:10 | x1 | main.rs:20:14:20:16 | "a" | | main.rs:25:13:25:14 | x2 | main.rs:25:18:25:18 | 4 | @@ -715,51 +747,57 @@ assigns | main.rs:337:20:337:20 | x | main.rs:338:18:338:18 | x | | main.rs:348:9:348:9 | x | main.rs:348:13:348:18 | Ok(...) | | main.rs:364:9:364:9 | x | main.rs:364:13:364:19 | Some(...) | -| main.rs:427:9:427:23 | example_closure | main.rs:428:9:429:9 | \|...\| x | -| main.rs:430:9:430:10 | n1 | main.rs:431:9:431:26 | example_closure(...) | -| main.rs:435:9:435:26 | immutable_variable | main.rs:436:5:437:9 | \|...\| x | -| main.rs:438:9:438:10 | n2 | main.rs:439:9:439:29 | immutable_variable(...) | -| main.rs:445:9:445:9 | f | main.rs:446:9:447:9 | \|...\| x | -| main.rs:468:13:468:13 | f | main.rs:469:13:470:13 | \|...\| x | -| main.rs:476:9:476:9 | v | main.rs:476:13:476:41 | &... | -| main.rs:485:13:485:13 | a | main.rs:485:17:485:17 | 0 | -| main.rs:493:13:493:13 | i | main.rs:493:17:493:17 | 1 | -| main.rs:494:9:494:13 | ref_i | main.rs:495:9:495:14 | &mut i | -| main.rs:516:13:516:13 | x | main.rs:516:17:516:17 | 2 | -| main.rs:517:9:517:9 | y | main.rs:518:9:518:28 | mutate_param(...) | -| main.rs:524:13:524:13 | z | main.rs:524:17:524:17 | 4 | -| main.rs:525:9:525:9 | w | main.rs:526:9:526:19 | &mut ... | -| main.rs:538:13:538:13 | x | main.rs:538:17:538:17 | 1 | -| main.rs:539:9:539:9 | y | main.rs:540:9:540:14 | &mut x | -| main.rs:546:9:546:9 | x | main.rs:546:13:546:15 | 100 | -| main.rs:549:9:549:11 | cap | main.rs:549:15:551:5 | \|...\| ... | -| main.rs:557:13:557:13 | x | main.rs:557:17:557:17 | 1 | -| main.rs:560:9:560:16 | closure1 | main.rs:560:20:562:5 | \|...\| ... | -| main.rs:566:13:566:13 | y | main.rs:566:17:566:17 | 2 | -| main.rs:569:13:569:20 | closure2 | main.rs:569:24:571:5 | \|...\| ... | -| main.rs:570:9:570:9 | y | main.rs:570:13:570:13 | 3 | -| main.rs:575:13:575:13 | z | main.rs:575:17:575:17 | 2 | -| main.rs:578:13:578:20 | closure3 | main.rs:578:24:580:5 | \|...\| ... | -| main.rs:586:13:586:13 | i | main.rs:586:22:586:22 | 0 | -| main.rs:587:9:587:13 | block | main.rs:587:17:589:5 | { ... } | -| main.rs:588:9:588:9 | i | main.rs:588:13:588:13 | 1 | -| main.rs:596:13:596:13 | x | main.rs:596:17:596:17 | 1 | -| main.rs:602:9:602:9 | x | main.rs:602:13:602:13 | 2 | -| main.rs:606:9:606:9 | x | main.rs:606:13:606:13 | 3 | -| main.rs:614:9:614:9 | x | main.rs:614:13:614:13 | 1 | -| main.rs:646:17:646:17 | f | main.rs:646:21:649:9 | \|...\| ... | -| main.rs:656:13:656:13 | a | main.rs:656:17:656:35 | MyStruct {...} | -| main.rs:660:5:660:5 | a | main.rs:660:9:660:27 | MyStruct {...} | -| main.rs:665:13:665:13 | a | main.rs:665:17:665:25 | [...] | -| main.rs:669:5:669:5 | a | main.rs:669:9:669:17 | [...] | -| main.rs:674:9:674:9 | x | main.rs:674:13:674:14 | 16 | -| main.rs:678:9:678:9 | z | main.rs:678:13:678:14 | 17 | -| main.rs:693:13:693:13 | a | main.rs:693:17:693:35 | MyStruct {...} | -| main.rs:715:9:715:22 | var_from_macro | main.rs:716:9:716:25 | MacroExpr | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | 37 | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:24:718:25 | 33 | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | 0 | -| main.rs:729:5:729:5 | x | main.rs:729:9:729:9 | 1 | -| main.rs:734:13:734:13 | x | main.rs:734:17:734:19 | 100 | -| main.rs:735:13:735:15 | cap | main.rs:735:19:740:5 | \|...\| ... | -| main.rs:738:13:738:13 | x | main.rs:738:17:738:19 | 200 | +| main.rs:373:9:373:9 | x | main.rs:373:13:373:20 | Some(...) | +| main.rs:438:9:438:23 | example_closure | main.rs:439:9:440:9 | \|...\| x | +| main.rs:441:9:441:10 | n1 | main.rs:442:9:442:26 | example_closure(...) | +| main.rs:446:9:446:26 | immutable_variable | main.rs:447:5:448:9 | \|...\| x | +| main.rs:449:9:449:10 | n2 | main.rs:450:9:450:29 | immutable_variable(...) | +| main.rs:456:9:456:9 | f | main.rs:457:9:458:9 | \|...\| x | +| main.rs:479:13:479:13 | f | main.rs:480:13:481:13 | \|...\| x | +| main.rs:487:9:487:9 | v | main.rs:487:13:487:41 | &... | +| main.rs:496:13:496:13 | a | main.rs:496:17:496:17 | 0 | +| main.rs:504:13:504:13 | i | main.rs:504:17:504:17 | 1 | +| main.rs:505:9:505:13 | ref_i | main.rs:506:9:506:14 | &mut i | +| main.rs:527:13:527:13 | x | main.rs:527:17:527:17 | 2 | +| main.rs:528:9:528:9 | y | main.rs:529:9:529:28 | mutate_param(...) | +| main.rs:535:13:535:13 | z | main.rs:535:17:535:17 | 4 | +| main.rs:536:9:536:9 | w | main.rs:537:9:537:19 | &mut ... | +| main.rs:549:13:549:13 | x | main.rs:549:17:549:17 | 1 | +| main.rs:550:9:550:9 | y | main.rs:551:9:551:14 | &mut x | +| main.rs:557:9:557:9 | x | main.rs:557:13:557:15 | 100 | +| main.rs:560:9:560:11 | cap | main.rs:560:15:562:5 | \|...\| ... | +| main.rs:568:13:568:13 | x | main.rs:568:17:568:17 | 1 | +| main.rs:571:9:571:16 | closure1 | main.rs:571:20:573:5 | \|...\| ... | +| main.rs:577:13:577:13 | y | main.rs:577:17:577:17 | 2 | +| main.rs:580:13:580:20 | closure2 | main.rs:580:24:582:5 | \|...\| ... | +| main.rs:581:9:581:9 | y | main.rs:581:13:581:13 | 3 | +| main.rs:586:13:586:13 | z | main.rs:586:17:586:17 | 2 | +| main.rs:589:13:589:20 | closure3 | main.rs:589:24:591:5 | \|...\| ... | +| main.rs:597:13:597:13 | i | main.rs:597:22:597:22 | 0 | +| main.rs:598:9:598:13 | block | main.rs:598:17:600:5 | { ... } | +| main.rs:599:9:599:9 | i | main.rs:599:13:599:13 | 1 | +| main.rs:607:13:607:13 | x | main.rs:607:17:607:17 | 1 | +| main.rs:613:9:613:9 | x | main.rs:613:13:613:13 | 2 | +| main.rs:617:9:617:9 | x | main.rs:617:13:617:13 | 3 | +| main.rs:625:9:625:9 | x | main.rs:625:13:625:13 | 1 | +| main.rs:657:17:657:17 | f | main.rs:657:21:660:9 | \|...\| ... | +| main.rs:667:13:667:13 | a | main.rs:667:17:667:35 | MyStruct {...} | +| main.rs:671:5:671:5 | a | main.rs:671:9:671:27 | MyStruct {...} | +| main.rs:676:13:676:13 | a | main.rs:676:17:676:25 | [...] | +| main.rs:680:5:680:5 | a | main.rs:680:9:680:17 | [...] | +| main.rs:685:9:685:9 | x | main.rs:685:13:685:14 | 16 | +| main.rs:689:9:689:9 | z | main.rs:689:13:689:14 | 17 | +| main.rs:704:13:704:13 | a | main.rs:704:17:704:35 | MyStruct {...} | +| main.rs:726:9:726:22 | var_from_macro | main.rs:727:9:727:25 | MacroExpr | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:23:727:24 | 37 | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:24:729:25 | 33 | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | 0 | +| main.rs:740:5:740:5 | x | main.rs:740:9:740:9 | 1 | +| main.rs:745:13:745:13 | x | main.rs:745:17:745:19 | 100 | +| main.rs:746:13:746:15 | cap | main.rs:746:19:751:5 | \|...\| ... | +| main.rs:749:13:749:13 | x | main.rs:749:17:749:19 | 200 | +| main.rs:759:13:759:13 | x | main.rs:759:17:759:24 | Some(...) | +| main.rs:760:13:760:13 | y | main.rs:761:13:767:9 | match x { ... } | +| main.rs:776:13:776:22 | test_alias | main.rs:777:13:777:16 | test | +| main.rs:778:13:778:16 | test | main.rs:779:13:779:24 | test_alias(...) | +| main.rs:787:13:787:13 | x | main.rs:787:17:787:23 | Some(...) | diff --git a/rust/ql/test/library-tests/variables/main.rs b/rust/ql/test/library-tests/variables/main.rs index 3ed78f601d64..fe13f89b1775 100644 --- a/rust/ql/test/library-tests/variables/main.rs +++ b/rust/ql/test/library-tests/variables/main.rs @@ -369,6 +369,17 @@ fn match_pattern15() { }; } +fn match_pattern16() { + let x = Some(32); + match x { // $ read_access=x + Some(y) // y1 + if let Some(y) = // y2 + Some(y) // $ read_access=y1 + => print_i64(y), // $ read_access=y2 + _ => {}, + } +} + fn param_pattern1( a8: &str, // a8 ( @@ -742,6 +753,51 @@ fn capture_phi() { print_i64(x); // $ read_access=x } +mod patterns { + #[rustfmt::skip] + pub fn test() -> Option { + let x = Some(42); // x + let y : Option = // y1 + match x { // $ read_access=x + Some(y) => { // y2 + None + } + None => + None + }; + match y { // $ read_access=y1 + N0ne => // n0ne + N0ne // $ read_access=n0ne + } + } + + #[rustfmt::skip] + fn test2() -> Option { + let test_alias = // test_alias + test; + let test = // test + test_alias(); // $ read_access=test_alias + test // $ read_access=test + } + + const z: i32 = 0; + + #[rustfmt::skip] + fn test3() { + let x = Some(0); // x1 + match x { // $ read_access=x1 + Some(x) // x2 + => x, // $ read_access=x2 + _ => 0 + }; + match x { // $ read_access=x1 + Some(z) => + z, + _ => 0 + }; + } +} + fn main() { immutable_variable(); mutable_variable(); @@ -767,6 +823,7 @@ fn main() { match_pattern13(); match_pattern14(); match_pattern15(); + match_pattern16(); param_pattern1("a", ("b", "c")); param_pattern2(Either::Left(45)); destruct_assignment(); diff --git a/rust/ql/test/library-tests/variables/variables.expected b/rust/ql/test/library-tests/variables/variables.expected index 22c54b9740c9..ea360357d970 100644 --- a/rust/ql/test/library-tests/variables/variables.expected +++ b/rust/ql/test/library-tests/variables/variables.expected @@ -70,75 +70,86 @@ variable | main.rs:354:20:354:20 | x | | main.rs:364:9:364:9 | x | | main.rs:366:18:366:18 | x | -| main.rs:373:5:373:6 | a8 | -| main.rs:375:9:375:10 | b3 | -| main.rs:376:9:376:10 | c1 | -| main.rs:384:20:384:55 | a9 | -| main.rs:391:13:391:15 | a10 | -| main.rs:392:13:392:14 | b4 | -| main.rs:393:13:393:14 | c2 | -| main.rs:414:13:414:15 | a10 | -| main.rs:415:13:415:14 | b4 | -| main.rs:427:9:427:23 | example_closure | -| main.rs:428:10:428:10 | x | -| main.rs:430:9:430:10 | n1 | -| main.rs:435:9:435:26 | immutable_variable | -| main.rs:436:6:436:6 | x | -| main.rs:438:9:438:10 | n2 | -| main.rs:445:9:445:9 | f | -| main.rs:446:10:446:10 | x | -| main.rs:450:10:450:10 | x | -| main.rs:459:14:459:14 | x | -| main.rs:468:13:468:13 | f | -| main.rs:469:14:469:14 | x | -| main.rs:476:9:476:9 | v | -| main.rs:478:9:478:12 | text | -| main.rs:485:13:485:13 | a | -| main.rs:493:13:493:13 | i | -| main.rs:494:9:494:13 | ref_i | -| main.rs:500:17:500:17 | x | -| main.rs:507:22:507:22 | x | -| main.rs:507:38:507:38 | y | -| main.rs:516:13:516:13 | x | -| main.rs:517:9:517:9 | y | -| main.rs:524:13:524:13 | z | -| main.rs:525:9:525:9 | w | -| main.rs:538:13:538:13 | x | -| main.rs:539:9:539:9 | y | -| main.rs:546:9:546:9 | x | -| main.rs:549:9:549:11 | cap | -| main.rs:557:13:557:13 | x | -| main.rs:560:9:560:16 | closure1 | -| main.rs:566:13:566:13 | y | -| main.rs:569:13:569:20 | closure2 | -| main.rs:575:13:575:13 | z | -| main.rs:578:13:578:20 | closure3 | -| main.rs:586:13:586:13 | i | -| main.rs:587:9:587:13 | block | -| main.rs:595:8:595:8 | b | -| main.rs:596:13:596:13 | x | -| main.rs:613:13:613:14 | b1 | -| main.rs:613:23:613:24 | b2 | -| main.rs:614:9:614:9 | x | -| main.rs:637:20:637:23 | self | -| main.rs:641:11:641:14 | self | -| main.rs:645:23:645:26 | self | -| main.rs:646:17:646:17 | f | -| main.rs:646:22:646:22 | n | -| main.rs:656:13:656:13 | a | -| main.rs:665:13:665:13 | a | -| main.rs:674:9:674:9 | x | -| main.rs:678:9:678:9 | z | -| main.rs:687:17:687:20 | self | -| main.rs:693:13:693:13 | a | -| main.rs:715:9:715:22 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | -| main.rs:728:9:728:9 | x | -| main.rs:734:13:734:13 | x | -| main.rs:735:13:735:15 | cap | -| main.rs:735:20:735:20 | b | +| main.rs:373:9:373:9 | x | +| main.rs:375:14:375:14 | y | +| main.rs:376:25:376:25 | y | +| main.rs:384:5:384:6 | a8 | +| main.rs:386:9:386:10 | b3 | +| main.rs:387:9:387:10 | c1 | +| main.rs:395:20:395:55 | a9 | +| main.rs:402:13:402:15 | a10 | +| main.rs:403:13:403:14 | b4 | +| main.rs:404:13:404:14 | c2 | +| main.rs:425:13:425:15 | a10 | +| main.rs:426:13:426:14 | b4 | +| main.rs:438:9:438:23 | example_closure | +| main.rs:439:10:439:10 | x | +| main.rs:441:9:441:10 | n1 | +| main.rs:446:9:446:26 | immutable_variable | +| main.rs:447:6:447:6 | x | +| main.rs:449:9:449:10 | n2 | +| main.rs:456:9:456:9 | f | +| main.rs:457:10:457:10 | x | +| main.rs:461:10:461:10 | x | +| main.rs:470:14:470:14 | x | +| main.rs:479:13:479:13 | f | +| main.rs:480:14:480:14 | x | +| main.rs:487:9:487:9 | v | +| main.rs:489:9:489:12 | text | +| main.rs:496:13:496:13 | a | +| main.rs:504:13:504:13 | i | +| main.rs:505:9:505:13 | ref_i | +| main.rs:511:17:511:17 | x | +| main.rs:518:22:518:22 | x | +| main.rs:518:38:518:38 | y | +| main.rs:527:13:527:13 | x | +| main.rs:528:9:528:9 | y | +| main.rs:535:13:535:13 | z | +| main.rs:536:9:536:9 | w | +| main.rs:549:13:549:13 | x | +| main.rs:550:9:550:9 | y | +| main.rs:557:9:557:9 | x | +| main.rs:560:9:560:11 | cap | +| main.rs:568:13:568:13 | x | +| main.rs:571:9:571:16 | closure1 | +| main.rs:577:13:577:13 | y | +| main.rs:580:13:580:20 | closure2 | +| main.rs:586:13:586:13 | z | +| main.rs:589:13:589:20 | closure3 | +| main.rs:597:13:597:13 | i | +| main.rs:598:9:598:13 | block | +| main.rs:606:8:606:8 | b | +| main.rs:607:13:607:13 | x | +| main.rs:624:13:624:14 | b1 | +| main.rs:624:23:624:24 | b2 | +| main.rs:625:9:625:9 | x | +| main.rs:648:20:648:23 | self | +| main.rs:652:11:652:14 | self | +| main.rs:656:23:656:26 | self | +| main.rs:657:17:657:17 | f | +| main.rs:657:22:657:22 | n | +| main.rs:667:13:667:13 | a | +| main.rs:676:13:676:13 | a | +| main.rs:685:9:685:9 | x | +| main.rs:689:9:689:9 | z | +| main.rs:698:17:698:20 | self | +| main.rs:704:13:704:13 | a | +| main.rs:726:9:726:22 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | +| main.rs:739:9:739:9 | x | +| main.rs:745:13:745:13 | x | +| main.rs:746:13:746:15 | cap | +| main.rs:746:20:746:20 | b | +| main.rs:759:13:759:13 | x | +| main.rs:760:13:760:13 | y | +| main.rs:762:18:762:18 | y | +| main.rs:769:13:769:16 | N0ne | +| main.rs:776:13:776:22 | test_alias | +| main.rs:778:13:778:16 | test | +| main.rs:787:13:787:13 | x | +| main.rs:789:18:789:18 | x | variableAccess | main.rs:7:20:7:20 | s | main.rs:5:14:5:14 | s | | main.rs:12:20:12:20 | i | main.rs:10:14:10:14 | i | @@ -233,146 +244,157 @@ variableAccess | main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x | | main.rs:365:11:365:11 | x | main.rs:364:9:364:9 | x | | main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | -| main.rs:379:15:379:16 | a8 | main.rs:373:5:373:6 | a8 | -| main.rs:380:15:380:16 | b3 | main.rs:375:9:375:10 | b3 | -| main.rs:381:15:381:16 | c1 | main.rs:376:9:376:10 | c1 | -| main.rs:386:15:386:16 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:395:15:395:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:396:15:396:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:397:15:397:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:404:9:404:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:405:9:405:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:406:9:406:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:408:15:408:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:409:15:409:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:410:15:410:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:417:23:417:25 | a10 | main.rs:414:13:414:15 | a10 | -| main.rs:418:23:418:24 | b4 | main.rs:415:13:415:14 | b4 | -| main.rs:422:15:422:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:423:15:423:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:429:9:429:9 | x | main.rs:428:10:428:10 | x | -| main.rs:431:9:431:23 | example_closure | main.rs:427:9:427:23 | example_closure | -| main.rs:432:15:432:16 | n1 | main.rs:430:9:430:10 | n1 | -| main.rs:437:9:437:9 | x | main.rs:436:6:436:6 | x | -| main.rs:439:9:439:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | -| main.rs:440:15:440:16 | n2 | main.rs:438:9:438:10 | n2 | -| main.rs:447:9:447:9 | x | main.rs:446:10:446:10 | x | -| main.rs:448:15:448:15 | f | main.rs:445:9:445:9 | f | -| main.rs:452:9:452:9 | x | main.rs:450:10:450:10 | x | -| main.rs:455:15:455:15 | f | main.rs:445:9:445:9 | f | -| main.rs:461:17:461:17 | x | main.rs:459:14:459:14 | x | -| main.rs:470:13:470:13 | x | main.rs:469:14:469:14 | x | -| main.rs:471:19:471:19 | f | main.rs:468:13:468:13 | f | -| main.rs:479:12:479:12 | v | main.rs:476:9:476:9 | v | -| main.rs:480:19:480:22 | text | main.rs:478:9:478:12 | text | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | -| main.rs:487:15:487:15 | a | main.rs:485:13:485:13 | a | -| main.rs:488:11:488:11 | a | main.rs:485:13:485:13 | a | -| main.rs:489:15:489:15 | a | main.rs:485:13:485:13 | a | -| main.rs:495:14:495:14 | i | main.rs:493:13:493:13 | i | -| main.rs:496:6:496:10 | ref_i | main.rs:494:9:494:13 | ref_i | -| main.rs:497:15:497:15 | i | main.rs:493:13:493:13 | i | -| main.rs:501:6:501:6 | x | main.rs:500:17:500:17 | x | -| main.rs:502:10:502:10 | x | main.rs:500:17:500:17 | x | -| main.rs:503:10:503:10 | x | main.rs:500:17:500:17 | x | -| main.rs:504:12:504:12 | x | main.rs:500:17:500:17 | x | -| main.rs:508:6:508:6 | x | main.rs:507:22:507:22 | x | -| main.rs:509:10:509:10 | x | main.rs:507:22:507:22 | x | -| main.rs:510:10:510:10 | x | main.rs:507:22:507:22 | x | -| main.rs:511:6:511:6 | y | main.rs:507:38:507:38 | y | -| main.rs:512:9:512:9 | x | main.rs:507:22:507:22 | x | -| main.rs:518:27:518:27 | x | main.rs:516:13:516:13 | x | -| main.rs:519:6:519:6 | y | main.rs:517:9:517:9 | y | -| main.rs:522:15:522:15 | x | main.rs:516:13:516:13 | x | -| main.rs:526:19:526:19 | x | main.rs:516:13:516:13 | x | -| main.rs:528:14:528:14 | z | main.rs:524:13:524:13 | z | -| main.rs:529:9:529:9 | w | main.rs:525:9:525:9 | w | -| main.rs:531:7:531:7 | w | main.rs:525:9:525:9 | w | -| main.rs:534:15:534:15 | z | main.rs:524:13:524:13 | z | -| main.rs:540:14:540:14 | x | main.rs:538:13:538:13 | x | -| main.rs:541:6:541:6 | y | main.rs:539:9:539:9 | y | -| main.rs:542:15:542:15 | x | main.rs:538:13:538:13 | x | -| main.rs:550:19:550:19 | x | main.rs:546:9:546:9 | x | -| main.rs:552:5:552:7 | cap | main.rs:549:9:549:11 | cap | -| main.rs:553:15:553:15 | x | main.rs:546:9:546:9 | x | -| main.rs:561:19:561:19 | x | main.rs:557:13:557:13 | x | -| main.rs:563:5:563:12 | closure1 | main.rs:560:9:560:16 | closure1 | -| main.rs:564:15:564:15 | x | main.rs:557:13:557:13 | x | -| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | -| main.rs:572:5:572:12 | closure2 | main.rs:569:13:569:20 | closure2 | -| main.rs:573:15:573:15 | y | main.rs:566:13:566:13 | y | -| main.rs:579:9:579:9 | z | main.rs:575:13:575:13 | z | -| main.rs:581:5:581:12 | closure3 | main.rs:578:13:578:20 | closure3 | -| main.rs:582:15:582:15 | z | main.rs:575:13:575:13 | z | -| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | -| main.rs:591:5:591:9 | block | main.rs:587:9:587:13 | block | -| main.rs:592:15:592:15 | i | main.rs:586:13:586:13 | i | -| main.rs:597:15:597:15 | x | main.rs:596:13:596:13 | x | -| main.rs:598:15:598:15 | x | main.rs:596:13:596:13 | x | -| main.rs:600:16:600:16 | b | main.rs:595:8:595:8 | b | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | -| main.rs:603:19:603:19 | x | main.rs:596:13:596:13 | x | -| main.rs:604:19:604:19 | x | main.rs:596:13:596:13 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | -| main.rs:607:19:607:19 | x | main.rs:596:13:596:13 | x | -| main.rs:608:19:608:19 | x | main.rs:596:13:596:13 | x | -| main.rs:610:15:610:15 | x | main.rs:596:13:596:13 | x | -| main.rs:616:16:616:17 | b1 | main.rs:613:13:613:14 | b1 | -| main.rs:618:19:618:19 | x | main.rs:614:9:614:9 | x | -| main.rs:620:19:620:19 | x | main.rs:614:9:614:9 | x | -| main.rs:624:16:624:17 | b2 | main.rs:613:23:613:24 | b2 | -| main.rs:626:19:626:19 | x | main.rs:614:9:614:9 | x | -| main.rs:628:19:628:19 | x | main.rs:614:9:614:9 | x | -| main.rs:638:16:638:19 | self | main.rs:637:20:637:23 | self | -| main.rs:642:9:642:12 | self | main.rs:641:11:641:14 | self | -| main.rs:648:13:648:16 | self | main.rs:645:23:645:26 | self | -| main.rs:648:25:648:25 | n | main.rs:646:22:646:22 | n | -| main.rs:650:9:650:9 | f | main.rs:646:17:646:17 | f | -| main.rs:651:9:651:9 | f | main.rs:646:17:646:17 | f | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | -| main.rs:658:5:658:5 | a | main.rs:656:13:656:13 | a | -| main.rs:659:15:659:15 | a | main.rs:656:13:656:13 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | -| main.rs:661:15:661:15 | a | main.rs:656:13:656:13 | a | -| main.rs:666:15:666:15 | a | main.rs:665:13:665:13 | a | -| main.rs:667:5:667:5 | a | main.rs:665:13:665:13 | a | -| main.rs:668:15:668:15 | a | main.rs:665:13:665:13 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | -| main.rs:670:15:670:15 | a | main.rs:665:13:665:13 | a | -| main.rs:675:20:675:20 | x | main.rs:674:9:674:9 | x | -| main.rs:676:15:676:15 | x | main.rs:674:9:674:9 | x | -| main.rs:679:20:679:20 | z | main.rs:678:9:678:9 | z | -| main.rs:688:10:688:13 | self | main.rs:687:17:687:20 | self | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | -| main.rs:697:15:697:15 | a | main.rs:693:13:693:13 | a | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:717:15:717:28 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | -| main.rs:723:30:723:41 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | -| main.rs:724:15:724:26 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | -| main.rs:730:15:730:15 | x | main.rs:728:9:728:9 | x | -| main.rs:737:20:737:20 | b | main.rs:735:20:735:20 | b | -| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | -| main.rs:741:5:741:7 | cap | main.rs:735:13:735:15 | cap | -| main.rs:742:15:742:15 | x | main.rs:734:13:734:13 | x | +| main.rs:374:11:374:11 | x | main.rs:373:9:373:9 | x | +| main.rs:377:22:377:22 | y | main.rs:375:14:375:14 | y | +| main.rs:378:26:378:26 | y | main.rs:376:25:376:25 | y | +| main.rs:390:15:390:16 | a8 | main.rs:384:5:384:6 | a8 | +| main.rs:391:15:391:16 | b3 | main.rs:386:9:386:10 | b3 | +| main.rs:392:15:392:16 | c1 | main.rs:387:9:387:10 | c1 | +| main.rs:397:15:397:16 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:406:15:406:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:407:15:407:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:408:15:408:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:415:9:415:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:416:9:416:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:417:9:417:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:419:15:419:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:420:15:420:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:421:15:421:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:428:23:428:25 | a10 | main.rs:425:13:425:15 | a10 | +| main.rs:429:23:429:24 | b4 | main.rs:426:13:426:14 | b4 | +| main.rs:433:15:433:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:434:15:434:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:440:9:440:9 | x | main.rs:439:10:439:10 | x | +| main.rs:442:9:442:23 | example_closure | main.rs:438:9:438:23 | example_closure | +| main.rs:443:15:443:16 | n1 | main.rs:441:9:441:10 | n1 | +| main.rs:448:9:448:9 | x | main.rs:447:6:447:6 | x | +| main.rs:450:9:450:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | +| main.rs:451:15:451:16 | n2 | main.rs:449:9:449:10 | n2 | +| main.rs:458:9:458:9 | x | main.rs:457:10:457:10 | x | +| main.rs:459:15:459:15 | f | main.rs:456:9:456:9 | f | +| main.rs:463:9:463:9 | x | main.rs:461:10:461:10 | x | +| main.rs:466:15:466:15 | f | main.rs:456:9:456:9 | f | +| main.rs:472:17:472:17 | x | main.rs:470:14:470:14 | x | +| main.rs:481:13:481:13 | x | main.rs:480:14:480:14 | x | +| main.rs:482:19:482:19 | f | main.rs:479:13:479:13 | f | +| main.rs:490:12:490:12 | v | main.rs:487:9:487:9 | v | +| main.rs:491:19:491:22 | text | main.rs:489:9:489:12 | text | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | +| main.rs:498:15:498:15 | a | main.rs:496:13:496:13 | a | +| main.rs:499:11:499:11 | a | main.rs:496:13:496:13 | a | +| main.rs:500:15:500:15 | a | main.rs:496:13:496:13 | a | +| main.rs:506:14:506:14 | i | main.rs:504:13:504:13 | i | +| main.rs:507:6:507:10 | ref_i | main.rs:505:9:505:13 | ref_i | +| main.rs:508:15:508:15 | i | main.rs:504:13:504:13 | i | +| main.rs:512:6:512:6 | x | main.rs:511:17:511:17 | x | +| main.rs:513:10:513:10 | x | main.rs:511:17:511:17 | x | +| main.rs:514:10:514:10 | x | main.rs:511:17:511:17 | x | +| main.rs:515:12:515:12 | x | main.rs:511:17:511:17 | x | +| main.rs:519:6:519:6 | x | main.rs:518:22:518:22 | x | +| main.rs:520:10:520:10 | x | main.rs:518:22:518:22 | x | +| main.rs:521:10:521:10 | x | main.rs:518:22:518:22 | x | +| main.rs:522:6:522:6 | y | main.rs:518:38:518:38 | y | +| main.rs:523:9:523:9 | x | main.rs:518:22:518:22 | x | +| main.rs:529:27:529:27 | x | main.rs:527:13:527:13 | x | +| main.rs:530:6:530:6 | y | main.rs:528:9:528:9 | y | +| main.rs:533:15:533:15 | x | main.rs:527:13:527:13 | x | +| main.rs:537:19:537:19 | x | main.rs:527:13:527:13 | x | +| main.rs:539:14:539:14 | z | main.rs:535:13:535:13 | z | +| main.rs:540:9:540:9 | w | main.rs:536:9:536:9 | w | +| main.rs:542:7:542:7 | w | main.rs:536:9:536:9 | w | +| main.rs:545:15:545:15 | z | main.rs:535:13:535:13 | z | +| main.rs:551:14:551:14 | x | main.rs:549:13:549:13 | x | +| main.rs:552:6:552:6 | y | main.rs:550:9:550:9 | y | +| main.rs:553:15:553:15 | x | main.rs:549:13:549:13 | x | +| main.rs:561:19:561:19 | x | main.rs:557:9:557:9 | x | +| main.rs:563:5:563:7 | cap | main.rs:560:9:560:11 | cap | +| main.rs:564:15:564:15 | x | main.rs:557:9:557:9 | x | +| main.rs:572:19:572:19 | x | main.rs:568:13:568:13 | x | +| main.rs:574:5:574:12 | closure1 | main.rs:571:9:571:16 | closure1 | +| main.rs:575:15:575:15 | x | main.rs:568:13:568:13 | x | +| main.rs:581:9:581:9 | y | main.rs:577:13:577:13 | y | +| main.rs:583:5:583:12 | closure2 | main.rs:580:13:580:20 | closure2 | +| main.rs:584:15:584:15 | y | main.rs:577:13:577:13 | y | +| main.rs:590:9:590:9 | z | main.rs:586:13:586:13 | z | +| main.rs:592:5:592:12 | closure3 | main.rs:589:13:589:20 | closure3 | +| main.rs:593:15:593:15 | z | main.rs:586:13:586:13 | z | +| main.rs:599:9:599:9 | i | main.rs:597:13:597:13 | i | +| main.rs:602:5:602:9 | block | main.rs:598:9:598:13 | block | +| main.rs:603:15:603:15 | i | main.rs:597:13:597:13 | i | +| main.rs:608:15:608:15 | x | main.rs:607:13:607:13 | x | +| main.rs:609:15:609:15 | x | main.rs:607:13:607:13 | x | +| main.rs:611:16:611:16 | b | main.rs:606:8:606:8 | b | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | +| main.rs:614:19:614:19 | x | main.rs:607:13:607:13 | x | +| main.rs:615:19:615:19 | x | main.rs:607:13:607:13 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | +| main.rs:618:19:618:19 | x | main.rs:607:13:607:13 | x | +| main.rs:619:19:619:19 | x | main.rs:607:13:607:13 | x | +| main.rs:621:15:621:15 | x | main.rs:607:13:607:13 | x | +| main.rs:627:16:627:17 | b1 | main.rs:624:13:624:14 | b1 | +| main.rs:629:19:629:19 | x | main.rs:625:9:625:9 | x | +| main.rs:631:19:631:19 | x | main.rs:625:9:625:9 | x | +| main.rs:635:16:635:17 | b2 | main.rs:624:23:624:24 | b2 | +| main.rs:637:19:637:19 | x | main.rs:625:9:625:9 | x | +| main.rs:639:19:639:19 | x | main.rs:625:9:625:9 | x | +| main.rs:649:16:649:19 | self | main.rs:648:20:648:23 | self | +| main.rs:653:9:653:12 | self | main.rs:652:11:652:14 | self | +| main.rs:659:13:659:16 | self | main.rs:656:23:656:26 | self | +| main.rs:659:25:659:25 | n | main.rs:657:22:657:22 | n | +| main.rs:661:9:661:9 | f | main.rs:657:17:657:17 | f | +| main.rs:662:9:662:9 | f | main.rs:657:17:657:17 | f | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | +| main.rs:669:5:669:5 | a | main.rs:667:13:667:13 | a | +| main.rs:670:15:670:15 | a | main.rs:667:13:667:13 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | +| main.rs:672:15:672:15 | a | main.rs:667:13:667:13 | a | +| main.rs:677:15:677:15 | a | main.rs:676:13:676:13 | a | +| main.rs:678:5:678:5 | a | main.rs:676:13:676:13 | a | +| main.rs:679:15:679:15 | a | main.rs:676:13:676:13 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | +| main.rs:681:15:681:15 | a | main.rs:676:13:676:13 | a | +| main.rs:686:20:686:20 | x | main.rs:685:9:685:9 | x | +| main.rs:687:15:687:15 | x | main.rs:685:9:685:9 | x | +| main.rs:690:20:690:20 | z | main.rs:689:9:689:9 | z | +| main.rs:699:10:699:13 | self | main.rs:698:17:698:20 | self | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | +| main.rs:708:15:708:15 | a | main.rs:704:13:704:13 | a | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:728:15:728:28 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | +| main.rs:734:30:734:41 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | +| main.rs:735:15:735:26 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | +| main.rs:741:15:741:15 | x | main.rs:739:9:739:9 | x | +| main.rs:748:20:748:20 | b | main.rs:746:20:746:20 | b | +| main.rs:749:13:749:13 | x | main.rs:745:13:745:13 | x | +| main.rs:752:5:752:7 | cap | main.rs:746:13:746:15 | cap | +| main.rs:753:15:753:15 | x | main.rs:745:13:745:13 | x | +| main.rs:761:19:761:19 | x | main.rs:759:13:759:13 | x | +| main.rs:768:15:768:15 | y | main.rs:760:13:760:13 | y | +| main.rs:770:17:770:20 | N0ne | main.rs:769:13:769:16 | N0ne | +| main.rs:779:13:779:22 | test_alias | main.rs:776:13:776:22 | test_alias | +| main.rs:780:9:780:12 | test | main.rs:778:13:778:16 | test | +| main.rs:788:15:788:15 | x | main.rs:787:13:787:13 | x | +| main.rs:790:20:790:20 | x | main.rs:789:18:789:18 | x | +| main.rs:793:15:793:15 | x | main.rs:787:13:787:13 | x | variableWriteAccess | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:29:5:29:6 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:36:5:36:5 | x | main.rs:34:13:34:13 | x | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | -| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | -| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:581:9:581:9 | y | main.rs:577:13:577:13 | y | +| main.rs:599:9:599:9 | i | main.rs:597:13:597:13 | i | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | +| main.rs:749:13:749:13 | x | main.rs:745:13:745:13 | x | variableReadAccess | main.rs:7:20:7:20 | s | main.rs:5:14:5:14 | s | | main.rs:12:20:12:20 | i | main.rs:10:14:10:14 | i | @@ -462,111 +484,122 @@ variableReadAccess | main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x | | main.rs:365:11:365:11 | x | main.rs:364:9:364:9 | x | | main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | -| main.rs:379:15:379:16 | a8 | main.rs:373:5:373:6 | a8 | -| main.rs:380:15:380:16 | b3 | main.rs:375:9:375:10 | b3 | -| main.rs:381:15:381:16 | c1 | main.rs:376:9:376:10 | c1 | -| main.rs:386:15:386:16 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:395:15:395:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:396:15:396:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:397:15:397:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:404:9:404:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:405:9:405:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:406:9:406:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:408:15:408:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:409:15:409:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:410:15:410:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:417:23:417:25 | a10 | main.rs:414:13:414:15 | a10 | -| main.rs:418:23:418:24 | b4 | main.rs:415:13:415:14 | b4 | -| main.rs:422:15:422:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:423:15:423:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:429:9:429:9 | x | main.rs:428:10:428:10 | x | -| main.rs:431:9:431:23 | example_closure | main.rs:427:9:427:23 | example_closure | -| main.rs:432:15:432:16 | n1 | main.rs:430:9:430:10 | n1 | -| main.rs:437:9:437:9 | x | main.rs:436:6:436:6 | x | -| main.rs:439:9:439:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | -| main.rs:440:15:440:16 | n2 | main.rs:438:9:438:10 | n2 | -| main.rs:447:9:447:9 | x | main.rs:446:10:446:10 | x | -| main.rs:448:15:448:15 | f | main.rs:445:9:445:9 | f | -| main.rs:452:9:452:9 | x | main.rs:450:10:450:10 | x | -| main.rs:455:15:455:15 | f | main.rs:445:9:445:9 | f | -| main.rs:461:17:461:17 | x | main.rs:459:14:459:14 | x | -| main.rs:470:13:470:13 | x | main.rs:469:14:469:14 | x | -| main.rs:471:19:471:19 | f | main.rs:468:13:468:13 | f | -| main.rs:479:12:479:12 | v | main.rs:476:9:476:9 | v | -| main.rs:480:19:480:22 | text | main.rs:478:9:478:12 | text | -| main.rs:487:15:487:15 | a | main.rs:485:13:485:13 | a | -| main.rs:489:15:489:15 | a | main.rs:485:13:485:13 | a | -| main.rs:496:6:496:10 | ref_i | main.rs:494:9:494:13 | ref_i | -| main.rs:497:15:497:15 | i | main.rs:493:13:493:13 | i | -| main.rs:501:6:501:6 | x | main.rs:500:17:500:17 | x | -| main.rs:502:10:502:10 | x | main.rs:500:17:500:17 | x | -| main.rs:503:10:503:10 | x | main.rs:500:17:500:17 | x | -| main.rs:504:12:504:12 | x | main.rs:500:17:500:17 | x | -| main.rs:508:6:508:6 | x | main.rs:507:22:507:22 | x | -| main.rs:509:10:509:10 | x | main.rs:507:22:507:22 | x | -| main.rs:510:10:510:10 | x | main.rs:507:22:507:22 | x | -| main.rs:511:6:511:6 | y | main.rs:507:38:507:38 | y | -| main.rs:512:9:512:9 | x | main.rs:507:22:507:22 | x | -| main.rs:519:6:519:6 | y | main.rs:517:9:517:9 | y | -| main.rs:522:15:522:15 | x | main.rs:516:13:516:13 | x | -| main.rs:529:9:529:9 | w | main.rs:525:9:525:9 | w | -| main.rs:531:7:531:7 | w | main.rs:525:9:525:9 | w | -| main.rs:534:15:534:15 | z | main.rs:524:13:524:13 | z | -| main.rs:541:6:541:6 | y | main.rs:539:9:539:9 | y | -| main.rs:542:15:542:15 | x | main.rs:538:13:538:13 | x | -| main.rs:550:19:550:19 | x | main.rs:546:9:546:9 | x | -| main.rs:552:5:552:7 | cap | main.rs:549:9:549:11 | cap | -| main.rs:553:15:553:15 | x | main.rs:546:9:546:9 | x | -| main.rs:561:19:561:19 | x | main.rs:557:13:557:13 | x | -| main.rs:563:5:563:12 | closure1 | main.rs:560:9:560:16 | closure1 | -| main.rs:564:15:564:15 | x | main.rs:557:13:557:13 | x | -| main.rs:572:5:572:12 | closure2 | main.rs:569:13:569:20 | closure2 | -| main.rs:573:15:573:15 | y | main.rs:566:13:566:13 | y | -| main.rs:579:9:579:9 | z | main.rs:575:13:575:13 | z | -| main.rs:581:5:581:12 | closure3 | main.rs:578:13:578:20 | closure3 | -| main.rs:582:15:582:15 | z | main.rs:575:13:575:13 | z | -| main.rs:591:5:591:9 | block | main.rs:587:9:587:13 | block | -| main.rs:592:15:592:15 | i | main.rs:586:13:586:13 | i | -| main.rs:597:15:597:15 | x | main.rs:596:13:596:13 | x | -| main.rs:598:15:598:15 | x | main.rs:596:13:596:13 | x | -| main.rs:600:16:600:16 | b | main.rs:595:8:595:8 | b | -| main.rs:603:19:603:19 | x | main.rs:596:13:596:13 | x | -| main.rs:604:19:604:19 | x | main.rs:596:13:596:13 | x | -| main.rs:607:19:607:19 | x | main.rs:596:13:596:13 | x | -| main.rs:608:19:608:19 | x | main.rs:596:13:596:13 | x | -| main.rs:610:15:610:15 | x | main.rs:596:13:596:13 | x | -| main.rs:616:16:616:17 | b1 | main.rs:613:13:613:14 | b1 | -| main.rs:618:19:618:19 | x | main.rs:614:9:614:9 | x | -| main.rs:620:19:620:19 | x | main.rs:614:9:614:9 | x | -| main.rs:624:16:624:17 | b2 | main.rs:613:23:613:24 | b2 | -| main.rs:626:19:626:19 | x | main.rs:614:9:614:9 | x | -| main.rs:628:19:628:19 | x | main.rs:614:9:614:9 | x | -| main.rs:638:16:638:19 | self | main.rs:637:20:637:23 | self | -| main.rs:642:9:642:12 | self | main.rs:641:11:641:14 | self | -| main.rs:648:13:648:16 | self | main.rs:645:23:645:26 | self | -| main.rs:648:25:648:25 | n | main.rs:646:22:646:22 | n | -| main.rs:650:9:650:9 | f | main.rs:646:17:646:17 | f | -| main.rs:651:9:651:9 | f | main.rs:646:17:646:17 | f | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | -| main.rs:658:5:658:5 | a | main.rs:656:13:656:13 | a | -| main.rs:659:15:659:15 | a | main.rs:656:13:656:13 | a | -| main.rs:661:15:661:15 | a | main.rs:656:13:656:13 | a | -| main.rs:666:15:666:15 | a | main.rs:665:13:665:13 | a | -| main.rs:667:5:667:5 | a | main.rs:665:13:665:13 | a | -| main.rs:668:15:668:15 | a | main.rs:665:13:665:13 | a | -| main.rs:670:15:670:15 | a | main.rs:665:13:665:13 | a | -| main.rs:676:15:676:15 | x | main.rs:674:9:674:9 | x | -| main.rs:688:10:688:13 | self | main.rs:687:17:687:20 | self | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | -| main.rs:697:15:697:15 | a | main.rs:693:13:693:13 | a | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:717:15:717:28 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | -| main.rs:723:30:723:41 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | -| main.rs:724:15:724:26 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | -| main.rs:730:15:730:15 | x | main.rs:728:9:728:9 | x | -| main.rs:737:20:737:20 | b | main.rs:735:20:735:20 | b | -| main.rs:741:5:741:7 | cap | main.rs:735:13:735:15 | cap | -| main.rs:742:15:742:15 | x | main.rs:734:13:734:13 | x | +| main.rs:374:11:374:11 | x | main.rs:373:9:373:9 | x | +| main.rs:377:22:377:22 | y | main.rs:375:14:375:14 | y | +| main.rs:378:26:378:26 | y | main.rs:376:25:376:25 | y | +| main.rs:390:15:390:16 | a8 | main.rs:384:5:384:6 | a8 | +| main.rs:391:15:391:16 | b3 | main.rs:386:9:386:10 | b3 | +| main.rs:392:15:392:16 | c1 | main.rs:387:9:387:10 | c1 | +| main.rs:397:15:397:16 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:406:15:406:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:407:15:407:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:408:15:408:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:415:9:415:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:416:9:416:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:417:9:417:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:419:15:419:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:420:15:420:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:421:15:421:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:428:23:428:25 | a10 | main.rs:425:13:425:15 | a10 | +| main.rs:429:23:429:24 | b4 | main.rs:426:13:426:14 | b4 | +| main.rs:433:15:433:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:434:15:434:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:440:9:440:9 | x | main.rs:439:10:439:10 | x | +| main.rs:442:9:442:23 | example_closure | main.rs:438:9:438:23 | example_closure | +| main.rs:443:15:443:16 | n1 | main.rs:441:9:441:10 | n1 | +| main.rs:448:9:448:9 | x | main.rs:447:6:447:6 | x | +| main.rs:450:9:450:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | +| main.rs:451:15:451:16 | n2 | main.rs:449:9:449:10 | n2 | +| main.rs:458:9:458:9 | x | main.rs:457:10:457:10 | x | +| main.rs:459:15:459:15 | f | main.rs:456:9:456:9 | f | +| main.rs:463:9:463:9 | x | main.rs:461:10:461:10 | x | +| main.rs:466:15:466:15 | f | main.rs:456:9:456:9 | f | +| main.rs:472:17:472:17 | x | main.rs:470:14:470:14 | x | +| main.rs:481:13:481:13 | x | main.rs:480:14:480:14 | x | +| main.rs:482:19:482:19 | f | main.rs:479:13:479:13 | f | +| main.rs:490:12:490:12 | v | main.rs:487:9:487:9 | v | +| main.rs:491:19:491:22 | text | main.rs:489:9:489:12 | text | +| main.rs:498:15:498:15 | a | main.rs:496:13:496:13 | a | +| main.rs:500:15:500:15 | a | main.rs:496:13:496:13 | a | +| main.rs:507:6:507:10 | ref_i | main.rs:505:9:505:13 | ref_i | +| main.rs:508:15:508:15 | i | main.rs:504:13:504:13 | i | +| main.rs:512:6:512:6 | x | main.rs:511:17:511:17 | x | +| main.rs:513:10:513:10 | x | main.rs:511:17:511:17 | x | +| main.rs:514:10:514:10 | x | main.rs:511:17:511:17 | x | +| main.rs:515:12:515:12 | x | main.rs:511:17:511:17 | x | +| main.rs:519:6:519:6 | x | main.rs:518:22:518:22 | x | +| main.rs:520:10:520:10 | x | main.rs:518:22:518:22 | x | +| main.rs:521:10:521:10 | x | main.rs:518:22:518:22 | x | +| main.rs:522:6:522:6 | y | main.rs:518:38:518:38 | y | +| main.rs:523:9:523:9 | x | main.rs:518:22:518:22 | x | +| main.rs:530:6:530:6 | y | main.rs:528:9:528:9 | y | +| main.rs:533:15:533:15 | x | main.rs:527:13:527:13 | x | +| main.rs:540:9:540:9 | w | main.rs:536:9:536:9 | w | +| main.rs:542:7:542:7 | w | main.rs:536:9:536:9 | w | +| main.rs:545:15:545:15 | z | main.rs:535:13:535:13 | z | +| main.rs:552:6:552:6 | y | main.rs:550:9:550:9 | y | +| main.rs:553:15:553:15 | x | main.rs:549:13:549:13 | x | +| main.rs:561:19:561:19 | x | main.rs:557:9:557:9 | x | +| main.rs:563:5:563:7 | cap | main.rs:560:9:560:11 | cap | +| main.rs:564:15:564:15 | x | main.rs:557:9:557:9 | x | +| main.rs:572:19:572:19 | x | main.rs:568:13:568:13 | x | +| main.rs:574:5:574:12 | closure1 | main.rs:571:9:571:16 | closure1 | +| main.rs:575:15:575:15 | x | main.rs:568:13:568:13 | x | +| main.rs:583:5:583:12 | closure2 | main.rs:580:13:580:20 | closure2 | +| main.rs:584:15:584:15 | y | main.rs:577:13:577:13 | y | +| main.rs:590:9:590:9 | z | main.rs:586:13:586:13 | z | +| main.rs:592:5:592:12 | closure3 | main.rs:589:13:589:20 | closure3 | +| main.rs:593:15:593:15 | z | main.rs:586:13:586:13 | z | +| main.rs:602:5:602:9 | block | main.rs:598:9:598:13 | block | +| main.rs:603:15:603:15 | i | main.rs:597:13:597:13 | i | +| main.rs:608:15:608:15 | x | main.rs:607:13:607:13 | x | +| main.rs:609:15:609:15 | x | main.rs:607:13:607:13 | x | +| main.rs:611:16:611:16 | b | main.rs:606:8:606:8 | b | +| main.rs:614:19:614:19 | x | main.rs:607:13:607:13 | x | +| main.rs:615:19:615:19 | x | main.rs:607:13:607:13 | x | +| main.rs:618:19:618:19 | x | main.rs:607:13:607:13 | x | +| main.rs:619:19:619:19 | x | main.rs:607:13:607:13 | x | +| main.rs:621:15:621:15 | x | main.rs:607:13:607:13 | x | +| main.rs:627:16:627:17 | b1 | main.rs:624:13:624:14 | b1 | +| main.rs:629:19:629:19 | x | main.rs:625:9:625:9 | x | +| main.rs:631:19:631:19 | x | main.rs:625:9:625:9 | x | +| main.rs:635:16:635:17 | b2 | main.rs:624:23:624:24 | b2 | +| main.rs:637:19:637:19 | x | main.rs:625:9:625:9 | x | +| main.rs:639:19:639:19 | x | main.rs:625:9:625:9 | x | +| main.rs:649:16:649:19 | self | main.rs:648:20:648:23 | self | +| main.rs:653:9:653:12 | self | main.rs:652:11:652:14 | self | +| main.rs:659:13:659:16 | self | main.rs:656:23:656:26 | self | +| main.rs:659:25:659:25 | n | main.rs:657:22:657:22 | n | +| main.rs:661:9:661:9 | f | main.rs:657:17:657:17 | f | +| main.rs:662:9:662:9 | f | main.rs:657:17:657:17 | f | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | +| main.rs:669:5:669:5 | a | main.rs:667:13:667:13 | a | +| main.rs:670:15:670:15 | a | main.rs:667:13:667:13 | a | +| main.rs:672:15:672:15 | a | main.rs:667:13:667:13 | a | +| main.rs:677:15:677:15 | a | main.rs:676:13:676:13 | a | +| main.rs:678:5:678:5 | a | main.rs:676:13:676:13 | a | +| main.rs:679:15:679:15 | a | main.rs:676:13:676:13 | a | +| main.rs:681:15:681:15 | a | main.rs:676:13:676:13 | a | +| main.rs:687:15:687:15 | x | main.rs:685:9:685:9 | x | +| main.rs:699:10:699:13 | self | main.rs:698:17:698:20 | self | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | +| main.rs:708:15:708:15 | a | main.rs:704:13:704:13 | a | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:728:15:728:28 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | +| main.rs:734:30:734:41 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | +| main.rs:735:15:735:26 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | +| main.rs:741:15:741:15 | x | main.rs:739:9:739:9 | x | +| main.rs:748:20:748:20 | b | main.rs:746:20:746:20 | b | +| main.rs:752:5:752:7 | cap | main.rs:746:13:746:15 | cap | +| main.rs:753:15:753:15 | x | main.rs:745:13:745:13 | x | +| main.rs:761:19:761:19 | x | main.rs:759:13:759:13 | x | +| main.rs:768:15:768:15 | y | main.rs:760:13:760:13 | y | +| main.rs:770:17:770:20 | N0ne | main.rs:769:13:769:16 | N0ne | +| main.rs:779:13:779:22 | test_alias | main.rs:776:13:776:22 | test_alias | +| main.rs:780:9:780:12 | test | main.rs:778:13:778:16 | test | +| main.rs:788:15:788:15 | x | main.rs:787:13:787:13 | x | +| main.rs:790:20:790:20 | x | main.rs:789:18:789:18 | x | +| main.rs:793:15:793:15 | x | main.rs:787:13:787:13 | x | variableInitializer | main.rs:20:9:20:10 | x1 | main.rs:20:14:20:16 | "a" | | main.rs:25:13:25:14 | x2 | main.rs:25:18:25:18 | 4 | @@ -599,62 +632,68 @@ variableInitializer | main.rs:337:20:337:20 | x | main.rs:338:18:338:18 | x | | main.rs:348:9:348:9 | x | main.rs:348:13:348:18 | Ok(...) | | main.rs:364:9:364:9 | x | main.rs:364:13:364:19 | Some(...) | -| main.rs:427:9:427:23 | example_closure | main.rs:428:9:429:9 | \|...\| x | -| main.rs:430:9:430:10 | n1 | main.rs:431:9:431:26 | example_closure(...) | -| main.rs:435:9:435:26 | immutable_variable | main.rs:436:5:437:9 | \|...\| x | -| main.rs:438:9:438:10 | n2 | main.rs:439:9:439:29 | immutable_variable(...) | -| main.rs:445:9:445:9 | f | main.rs:446:9:447:9 | \|...\| x | -| main.rs:468:13:468:13 | f | main.rs:469:13:470:13 | \|...\| x | -| main.rs:476:9:476:9 | v | main.rs:476:13:476:41 | &... | -| main.rs:485:13:485:13 | a | main.rs:485:17:485:17 | 0 | -| main.rs:493:13:493:13 | i | main.rs:493:17:493:17 | 1 | -| main.rs:494:9:494:13 | ref_i | main.rs:495:9:495:14 | &mut i | -| main.rs:516:13:516:13 | x | main.rs:516:17:516:17 | 2 | -| main.rs:517:9:517:9 | y | main.rs:518:9:518:28 | mutate_param(...) | -| main.rs:524:13:524:13 | z | main.rs:524:17:524:17 | 4 | -| main.rs:525:9:525:9 | w | main.rs:526:9:526:19 | &mut ... | -| main.rs:538:13:538:13 | x | main.rs:538:17:538:17 | 1 | -| main.rs:539:9:539:9 | y | main.rs:540:9:540:14 | &mut x | -| main.rs:546:9:546:9 | x | main.rs:546:13:546:15 | 100 | -| main.rs:549:9:549:11 | cap | main.rs:549:15:551:5 | \|...\| ... | -| main.rs:557:13:557:13 | x | main.rs:557:17:557:17 | 1 | -| main.rs:560:9:560:16 | closure1 | main.rs:560:20:562:5 | \|...\| ... | -| main.rs:566:13:566:13 | y | main.rs:566:17:566:17 | 2 | -| main.rs:569:13:569:20 | closure2 | main.rs:569:24:571:5 | \|...\| ... | -| main.rs:575:13:575:13 | z | main.rs:575:17:575:17 | 2 | -| main.rs:578:13:578:20 | closure3 | main.rs:578:24:580:5 | \|...\| ... | -| main.rs:586:13:586:13 | i | main.rs:586:22:586:22 | 0 | -| main.rs:587:9:587:13 | block | main.rs:587:17:589:5 | { ... } | -| main.rs:596:13:596:13 | x | main.rs:596:17:596:17 | 1 | -| main.rs:614:9:614:9 | x | main.rs:614:13:614:13 | 1 | -| main.rs:646:17:646:17 | f | main.rs:646:21:649:9 | \|...\| ... | -| main.rs:656:13:656:13 | a | main.rs:656:17:656:35 | MyStruct {...} | -| main.rs:665:13:665:13 | a | main.rs:665:17:665:25 | [...] | -| main.rs:674:9:674:9 | x | main.rs:674:13:674:14 | 16 | -| main.rs:678:9:678:9 | z | main.rs:678:13:678:14 | 17 | -| main.rs:693:13:693:13 | a | main.rs:693:17:693:35 | MyStruct {...} | -| main.rs:715:9:715:22 | var_from_macro | main.rs:716:9:716:25 | MacroExpr | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | 37 | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:24:718:25 | 33 | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | 0 | -| main.rs:734:13:734:13 | x | main.rs:734:17:734:19 | 100 | -| main.rs:735:13:735:15 | cap | main.rs:735:19:740:5 | \|...\| ... | +| main.rs:373:9:373:9 | x | main.rs:373:13:373:20 | Some(...) | +| main.rs:438:9:438:23 | example_closure | main.rs:439:9:440:9 | \|...\| x | +| main.rs:441:9:441:10 | n1 | main.rs:442:9:442:26 | example_closure(...) | +| main.rs:446:9:446:26 | immutable_variable | main.rs:447:5:448:9 | \|...\| x | +| main.rs:449:9:449:10 | n2 | main.rs:450:9:450:29 | immutable_variable(...) | +| main.rs:456:9:456:9 | f | main.rs:457:9:458:9 | \|...\| x | +| main.rs:479:13:479:13 | f | main.rs:480:13:481:13 | \|...\| x | +| main.rs:487:9:487:9 | v | main.rs:487:13:487:41 | &... | +| main.rs:496:13:496:13 | a | main.rs:496:17:496:17 | 0 | +| main.rs:504:13:504:13 | i | main.rs:504:17:504:17 | 1 | +| main.rs:505:9:505:13 | ref_i | main.rs:506:9:506:14 | &mut i | +| main.rs:527:13:527:13 | x | main.rs:527:17:527:17 | 2 | +| main.rs:528:9:528:9 | y | main.rs:529:9:529:28 | mutate_param(...) | +| main.rs:535:13:535:13 | z | main.rs:535:17:535:17 | 4 | +| main.rs:536:9:536:9 | w | main.rs:537:9:537:19 | &mut ... | +| main.rs:549:13:549:13 | x | main.rs:549:17:549:17 | 1 | +| main.rs:550:9:550:9 | y | main.rs:551:9:551:14 | &mut x | +| main.rs:557:9:557:9 | x | main.rs:557:13:557:15 | 100 | +| main.rs:560:9:560:11 | cap | main.rs:560:15:562:5 | \|...\| ... | +| main.rs:568:13:568:13 | x | main.rs:568:17:568:17 | 1 | +| main.rs:571:9:571:16 | closure1 | main.rs:571:20:573:5 | \|...\| ... | +| main.rs:577:13:577:13 | y | main.rs:577:17:577:17 | 2 | +| main.rs:580:13:580:20 | closure2 | main.rs:580:24:582:5 | \|...\| ... | +| main.rs:586:13:586:13 | z | main.rs:586:17:586:17 | 2 | +| main.rs:589:13:589:20 | closure3 | main.rs:589:24:591:5 | \|...\| ... | +| main.rs:597:13:597:13 | i | main.rs:597:22:597:22 | 0 | +| main.rs:598:9:598:13 | block | main.rs:598:17:600:5 | { ... } | +| main.rs:607:13:607:13 | x | main.rs:607:17:607:17 | 1 | +| main.rs:625:9:625:9 | x | main.rs:625:13:625:13 | 1 | +| main.rs:657:17:657:17 | f | main.rs:657:21:660:9 | \|...\| ... | +| main.rs:667:13:667:13 | a | main.rs:667:17:667:35 | MyStruct {...} | +| main.rs:676:13:676:13 | a | main.rs:676:17:676:25 | [...] | +| main.rs:685:9:685:9 | x | main.rs:685:13:685:14 | 16 | +| main.rs:689:9:689:9 | z | main.rs:689:13:689:14 | 17 | +| main.rs:704:13:704:13 | a | main.rs:704:17:704:35 | MyStruct {...} | +| main.rs:726:9:726:22 | var_from_macro | main.rs:727:9:727:25 | MacroExpr | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:23:727:24 | 37 | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:24:729:25 | 33 | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | 0 | +| main.rs:745:13:745:13 | x | main.rs:745:17:745:19 | 100 | +| main.rs:746:13:746:15 | cap | main.rs:746:19:751:5 | \|...\| ... | +| main.rs:759:13:759:13 | x | main.rs:759:17:759:24 | Some(...) | +| main.rs:760:13:760:13 | y | main.rs:761:13:767:9 | match x { ... } | +| main.rs:776:13:776:22 | test_alias | main.rs:777:13:777:16 | test | +| main.rs:778:13:778:16 | test | main.rs:779:13:779:24 | test_alias(...) | +| main.rs:787:13:787:13 | x | main.rs:787:17:787:23 | Some(...) | capturedVariable -| main.rs:546:9:546:9 | x | -| main.rs:557:13:557:13 | x | -| main.rs:566:13:566:13 | y | -| main.rs:575:13:575:13 | z | -| main.rs:586:13:586:13 | i | -| main.rs:645:23:645:26 | self | -| main.rs:734:13:734:13 | x | +| main.rs:557:9:557:9 | x | +| main.rs:568:13:568:13 | x | +| main.rs:577:13:577:13 | y | +| main.rs:586:13:586:13 | z | +| main.rs:597:13:597:13 | i | +| main.rs:656:23:656:26 | self | +| main.rs:745:13:745:13 | x | capturedAccess -| main.rs:550:19:550:19 | x | | main.rs:561:19:561:19 | x | -| main.rs:570:9:570:9 | y | -| main.rs:579:9:579:9 | z | -| main.rs:588:9:588:9 | i | -| main.rs:648:13:648:16 | self | -| main.rs:738:13:738:13 | x | +| main.rs:572:19:572:19 | x | +| main.rs:581:9:581:9 | y | +| main.rs:590:9:590:9 | z | +| main.rs:599:9:599:9 | i | +| main.rs:659:13:659:16 | self | +| main.rs:749:13:749:13 | x | nestedFunctionAccess -| main.rs:458:19:458:19 | f | main.rs:459:9:462:9 | fn f | -| main.rs:465:23:465:23 | f | main.rs:459:9:462:9 | fn f | +| main.rs:469:19:469:19 | f | main.rs:470:9:473:9 | fn f | +| main.rs:476:23:476:23 | f | main.rs:470:9:473:9 | fn f | diff --git a/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected index b1c7e787dee5..538ecf9c2e35 100644 --- a/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,2 @@ multipleCallTargets | test.rs:117:9:117:21 | ptr.is_null() | -| test.rs:117:9:117:21 | ptr.is_null() | diff --git a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected index 5caae105914c..821f75cee26d 100644 --- a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,2 @@ multipleCallTargets | request_forgery_tests.rs:30:36:30:52 | user_url.as_str() | -| request_forgery_tests.rs:30:36:30:52 | user_url.as_str() | diff --git a/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected b/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected index aa5003a0e9d3..0f931ed3a0f8 100644 --- a/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected +++ b/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected @@ -1,29 +1,20 @@ #select | request_forgery_tests.rs:8:24:8:35 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:24:8:35 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:8:24:8:35 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:24:8:35 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:17:25:17:36 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:17:25:17:36 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:21:25:21:36 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:21:25:21:36 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:25:25:25:36 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:25:25:25:36 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:31:29:31:40 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:29:31:40 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:31:29:31:40 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:29:31:40 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:37:37:37:48 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:37:37:48 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:37:37:37:48 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:37:37:48 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:68:28:68:39 | ...::get | request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:68:28:68:39 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:65:33:65:40 | and_then | user-provided value | | request_forgery_tests.rs:68:28:68:39 | ...::get | request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:68:28:68:39 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:65:33:65:40 | and_then | user-provided value | edges | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:38:8:45 | user_url | provenance | | -| request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:38:8:45 | user_url | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:16:27:16:49 | MacroExpr | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:20:27:20:57 | MacroExpr | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:24:27:24:70 | MacroExpr | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:43:31:50 | user_url | provenance | | -| request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:43:31:50 | user_url | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:51:37:58 | user_url | provenance | | -| request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:51:37:58 | user_url | provenance | | -| request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | request_forgery_tests.rs:8:24:8:35 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | request_forgery_tests.rs:8:24:8:35 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:8:38:8:45 | user_url | request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | provenance | | -| request_forgery_tests.rs:8:38:8:45 | user_url | request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | provenance | | | request_forgery_tests.rs:16:13:16:15 | url | request_forgery_tests.rs:17:39:17:41 | url | provenance | | | request_forgery_tests.rs:16:27:16:49 | ...::format(...) | request_forgery_tests.rs:16:27:16:49 | { ... } | provenance | | | request_forgery_tests.rs:16:27:16:49 | ...::must_use(...) | request_forgery_tests.rs:16:13:16:15 | url | provenance | | @@ -46,21 +37,13 @@ edges | request_forgery_tests.rs:25:38:25:41 | &url [&ref] | request_forgery_tests.rs:25:25:25:36 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:25:39:25:41 | url | request_forgery_tests.rs:25:38:25:41 | &url [&ref] | provenance | | | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | request_forgery_tests.rs:31:29:31:40 | ...::get | provenance | MaD:1 Sink:MaD:1 | -| request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | request_forgery_tests.rs:31:29:31:40 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:31:43:31:50 | user_url | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | provenance | | -| request_forgery_tests.rs:31:43:31:50 | user_url | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | provenance | | -| request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | request_forgery_tests.rs:37:37:37:48 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | request_forgery_tests.rs:37:37:37:48 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:37:51:37:58 | user_url | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | provenance | | -| request_forgery_tests.rs:37:51:37:58 | user_url | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | provenance | | -| request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:65:49:65:57 | ...: String | provenance | Src:MaD:2 | | request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:65:49:65:57 | ...: String | provenance | Src:MaD:2 | | request_forgery_tests.rs:65:49:65:57 | ...: String | request_forgery_tests.rs:68:42:68:42 | a | provenance | | -| request_forgery_tests.rs:65:49:65:57 | ...: String | request_forgery_tests.rs:68:42:68:42 | a | provenance | | -| request_forgery_tests.rs:68:41:68:42 | &a [&ref] | request_forgery_tests.rs:68:28:68:39 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:68:41:68:42 | &a [&ref] | request_forgery_tests.rs:68:28:68:39 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:68:42:68:42 | a | request_forgery_tests.rs:68:41:68:42 | &a [&ref] | provenance | | -| request_forgery_tests.rs:68:42:68:42 | a | request_forgery_tests.rs:68:41:68:42 | &a [&ref] | provenance | | models | 1 | Sink: reqwest::get; Argument[0]; request-url | | 2 | Source: <_ as warp::filter::Filter>::and_then; Argument[0].Parameter[0..7]; remote | @@ -68,13 +51,9 @@ models | 4 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | request_forgery_tests.rs:5:29:5:36 | user_url | semmle.label | user_url | -| request_forgery_tests.rs:5:29:5:36 | user_url | semmle.label | user_url | | request_forgery_tests.rs:8:24:8:35 | ...::get | semmle.label | ...::get | -| request_forgery_tests.rs:8:24:8:35 | ...::get | semmle.label | ...::get | -| request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | semmle.label | &user_url [&ref] | | request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | semmle.label | &user_url [&ref] | | request_forgery_tests.rs:8:38:8:45 | user_url | semmle.label | user_url | -| request_forgery_tests.rs:8:38:8:45 | user_url | semmle.label | user_url | | request_forgery_tests.rs:16:13:16:15 | url | semmle.label | url | | request_forgery_tests.rs:16:27:16:49 | ...::format(...) | semmle.label | ...::format(...) | | request_forgery_tests.rs:16:27:16:49 | ...::must_use(...) | semmle.label | ...::must_use(...) | @@ -100,25 +79,14 @@ nodes | request_forgery_tests.rs:25:38:25:41 | &url [&ref] | semmle.label | &url [&ref] | | request_forgery_tests.rs:25:39:25:41 | url | semmle.label | url | | request_forgery_tests.rs:31:29:31:40 | ...::get | semmle.label | ...::get | -| request_forgery_tests.rs:31:29:31:40 | ...::get | semmle.label | ...::get | | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | semmle.label | &user_url [&ref] | -| request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | semmle.label | &user_url [&ref] | -| request_forgery_tests.rs:31:43:31:50 | user_url | semmle.label | user_url | | request_forgery_tests.rs:31:43:31:50 | user_url | semmle.label | user_url | | request_forgery_tests.rs:37:37:37:48 | ...::get | semmle.label | ...::get | -| request_forgery_tests.rs:37:37:37:48 | ...::get | semmle.label | ...::get | -| request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | semmle.label | &user_url [&ref] | | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | semmle.label | &user_url [&ref] | | request_forgery_tests.rs:37:51:37:58 | user_url | semmle.label | user_url | -| request_forgery_tests.rs:37:51:37:58 | user_url | semmle.label | user_url | -| request_forgery_tests.rs:65:33:65:40 | and_then | semmle.label | and_then | | request_forgery_tests.rs:65:33:65:40 | and_then | semmle.label | and_then | | request_forgery_tests.rs:65:49:65:57 | ...: String | semmle.label | ...: String | -| request_forgery_tests.rs:65:49:65:57 | ...: String | semmle.label | ...: String | -| request_forgery_tests.rs:68:28:68:39 | ...::get | semmle.label | ...::get | | request_forgery_tests.rs:68:28:68:39 | ...::get | semmle.label | ...::get | | request_forgery_tests.rs:68:41:68:42 | &a [&ref] | semmle.label | &a [&ref] | -| request_forgery_tests.rs:68:41:68:42 | &a [&ref] | semmle.label | &a [&ref] | -| request_forgery_tests.rs:68:42:68:42 | a | semmle.label | a | | request_forgery_tests.rs:68:42:68:42 | a | semmle.label | a | subpaths