Merge branch 'redsun82/rust-avoid-linecol-panic' into redsun82/rust-config

This commit is contained in:
Paolo Tranquilli
2025-02-12 17:02:19 +01:00
394 changed files with 19744 additions and 6184 deletions

View File

@@ -553,7 +553,6 @@ fn write_extractor(grammar: &AstSrc) -> mustache::Result<String> {
enums: grammar.enums.iter().map(enum_to_extractor_info).collect(),
nodes: grammar.nodes.iter().map(node_to_extractor_info).collect(),
};
// the concat dance is currently required by bazel
let template = mustache::compile_str(include_str!("templates/extractor.mustache"))?;
let res = template.render_to_string(&extractor_info)?;
Ok(fix_blank_lines(&res))

View File

@@ -81,6 +81,9 @@ pub struct Translator<'a> {
pub semantics: Option<&'a Semantics<'a, RootDatabase>>,
}
const UNKNOWN_LOCATION: (LineCol, LineCol) =
(LineCol { line: 0, col: 0 }, LineCol { line: 0, col: 0 });
impl<'a> Translator<'a> {
pub fn new(
trap: TrapFile,
@@ -98,8 +101,8 @@ impl<'a> Translator<'a> {
semantics: semantic_info.map(|i| i.semantics),
}
}
fn location(&self, range: TextRange) -> (LineCol, LineCol) {
let start = self.line_index.line_col(range.start());
fn location(&self, range: TextRange) -> Option<(LineCol, LineCol)> {
let start = self.line_index.try_line_col(range.start())?;
let range_end = range.end();
// QL end positions are inclusive, while TextRange offsets are exclusive and point at the position
// right after the last character of the range. We need to shift the end offset one character to the left to
@@ -111,11 +114,11 @@ impl<'a> Translator<'a> {
.checked_sub(i.into())
.and_then(|x| self.line_index.try_line_col(x))
{
return (start, end);
return Some((start, end));
}
}
let end = self.line_index.line_col(range_end);
(start, end)
let end = self.line_index.try_line_col(range_end)?;
Some((start, end))
}
pub fn text_range_for_node(&mut self, node: &impl ast::AstNode) -> Option<TextRange> {
@@ -132,8 +135,10 @@ impl<'a> Translator<'a> {
}
}
pub fn emit_location<T: TrapClass>(&mut self, label: Label<T>, node: &impl ast::AstNode) {
if let Some(range) = self.text_range_for_node(node) {
let (start, end) = self.location(range);
if let Some((start, end)) = self
.text_range_for_node(node)
.and_then(|r| self.location(r))
{
self.trap.emit_location(self.label, label, start, end)
} else {
self.emit_diagnostic(
@@ -141,7 +146,7 @@ impl<'a> Translator<'a> {
"locations".to_owned(),
"missing location for AstNode".to_owned(),
"missing location for AstNode".to_owned(),
(LineCol { line: 0, col: 0 }, LineCol { line: 0, col: 0 }),
UNKNOWN_LOCATION,
);
}
}
@@ -156,8 +161,9 @@ impl<'a> Translator<'a> {
if let Some(clipped_range) = token_range.intersect(parent_range) {
if let Some(parent_range2) = self.text_range_for_node(parent) {
let token_range = clipped_range + parent_range2.start() - parent_range.start();
let (start, end) = self.location(token_range);
self.trap.emit_location(self.label, label, start, end)
if let Some((start, end)) = self.location(token_range) {
self.trap.emit_location(self.label, label, start, end)
}
}
}
}
@@ -206,7 +212,7 @@ impl<'a> Translator<'a> {
"parse_error".to_owned(),
message.clone(),
message,
location,
location.unwrap_or(UNKNOWN_LOCATION),
);
}
}

View File

@@ -78,6 +78,12 @@ private import codeql.rust.elements.internal.PathResolution
/** Holds if `p` may resolve to multiple items including `i`. */
query predicate multiplePathResolutions(Path p, ItemNode i) {
i = resolvePath(p) and
// `use foo::bar` may use both a type `bar` and a value `bar`
not p =
any(UseTree use |
not use.isGlob() and
not use.hasUseTreeList()
).getPath() and
strictcount(resolvePath(p)) > 1
}

View File

@@ -843,6 +843,15 @@ final class ElementContent extends Content, TElementContent {
override Location getLocation() { result instanceof EmptyLocation }
}
/**
* A value that a future resolves to.
*/
final class FutureContent extends Content, TFutureContent {
override string toString() { result = "future" }
override Location getLocation() { result instanceof EmptyLocation }
}
/**
* Content stored at a position in a tuple.
*
@@ -1194,6 +1203,12 @@ module RustDataFlow implements InputSig<Location> {
c instanceof FunctionCallReturnContent
)
or
exists(AwaitExprCfgNode await |
c instanceof FutureContent and
node1.asExpr() = await.getExpr() and
node2.asExpr() = await
)
or
VariableCapture::readStep(node1, c, node2)
)
or
@@ -1211,6 +1226,17 @@ module RustDataFlow implements InputSig<Location> {
)
}
pragma[nomagic]
private predicate referenceAssignment(Node node1, Node node2, ReferenceContent c) {
exists(AssignmentExprCfgNode assignment, PrefixExprCfgNode deref |
assignment.getLhs() = deref and
deref.getOperatorName() = "*" and
node1.asExpr() = assignment.getRhs() and
node2.asExpr() = deref.getExpr() and
exists(c)
)
}
pragma[nomagic]
private predicate storeContentStep(Node node1, Content c, Node node2) {
exists(CallExprCfgNode call, int pos |
@@ -1242,6 +1268,8 @@ module RustDataFlow implements InputSig<Location> {
or
fieldAssignment(node1, node2.(PostUpdateNode).getPreUpdateNode(), c)
or
referenceAssignment(node1, node2.(PostUpdateNode).getPreUpdateNode(), c)
or
exists(AssignmentExprCfgNode assignment, IndexExprCfgNode index |
c instanceof ElementContent and
assignment.getLhs() = index and
@@ -1285,6 +1313,8 @@ module RustDataFlow implements InputSig<Location> {
predicate clearsContent(Node n, ContentSet cs) {
fieldAssignment(_, n, cs.(SingletonContentSet).getContent())
or
referenceAssignment(_, n, cs.(SingletonContentSet).getContent())
or
FlowSummaryImpl::Private::Steps::summaryClearsContent(n.(Node::FlowSummaryNode).getSummaryNode(),
cs)
or
@@ -1538,7 +1568,8 @@ private module Cached {
[
any(IndexExprCfgNode i).getBase(), any(FieldExprCfgNode access).getExpr(),
any(TryExprCfgNode try).getExpr(),
any(PrefixExprCfgNode pe | pe.getOperatorName() = "*").getExpr()
any(PrefixExprCfgNode pe | pe.getOperatorName() = "*").getExpr(),
any(AwaitExprCfgNode a).getExpr()
]
} or
TSsaNode(SsaImpl::DataFlowIntegration::SsaNode node) or
@@ -1594,6 +1625,7 @@ private module Cached {
// TODO: Remove once library types are extracted
TVariantInLibTupleFieldContent(VariantInLib::VariantInLib v, int pos) { pos = v.getAPosition() } or
TElementContent() or
TFutureContent() or
TTuplePositionContent(int pos) {
pos in [0 .. max([
any(TuplePat pat).getNumberOfFields(),

View File

@@ -89,6 +89,10 @@ module Input implements InputSig<Location, RustDataFlow> {
arg = v.getExtendedCanonicalPath() + "(" + v.getPosition() + ")"
)
or
result = "Reference" and
c = TReferenceContent() and
arg = ""
or
result = "Element" and
c = TElementContent() and
arg = ""
@@ -98,6 +102,10 @@ module Input implements InputSig<Location, RustDataFlow> {
c = TTuplePositionContent(pos) and
arg = pos.toString()
)
or
result = "Future" and
c = TFutureContent() and
arg = ""
)
}

View File

@@ -456,7 +456,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu
exists(ConditionBasicBlock conditionBlock, ConditionalSuccessor s |
guard = conditionBlock.getLastNode() and
s.getValue() = branch and
conditionBlock.controls(bb, s)
conditionBlock.edgeDominates(bb, s)
)
}

View File

@@ -28,6 +28,18 @@ module Impl {
* ```
*/
class IdentPat extends Generated::IdentPat {
override string toString() { result = this.getName().getText() }
override string toString() {
result = strictconcat(int i | | this.toStringPart(i), " " order by i)
}
private string toStringPart(int index) {
index = 0 and this.isRef() and result = "ref"
or
index = 1 and this.isMut() and result = "mut"
or
index = 2 and result = this.getName().getText()
or
index = 3 and this.hasPat() and result = "@ ..."
}
}
}

View File

@@ -5,6 +5,31 @@
private import rust
private import codeql.rust.elements.internal.generated.ParentChild
private newtype TNamespace =
TTypeNamespace() or
TValueNamespace()
/**
* A namespace.
*
* Either the _value_ namespace or the _type_ namespace, see
* https://doc.rust-lang.org/reference/names/namespaces.html.
*/
final class Namespace extends TNamespace {
/** Holds if this is the value namespace. */
predicate isValue() { this = TValueNamespace() }
/** Holds if this is the type namespace. */
predicate isType() { this = TTypeNamespace() }
/** Gets a textual representation of this namespace. */
string toString() {
this.isValue() and result = "value"
or
this.isType() and result = "type"
}
}
/**
* An item that may be referred to by a path, and which is a node in
* the _item graph_.
@@ -46,11 +71,15 @@ private import codeql.rust.elements.internal.generated.ParentChild
* - https://doc.rust-lang.org/reference/names/scopes.html
* - https://doc.rust-lang.org/reference/paths.html
* - https://doc.rust-lang.org/reference/visibility-and-privacy.html
* - https://doc.rust-lang.org/reference/names/namespaces.html
*/
abstract class ItemNode extends AstNode {
/** Gets the (original) name of this item. */
abstract string getName();
/** Gets the namespace that this item belongs to, if any. */
abstract Namespace getNamespace();
/** Gets the visibility of this item, if any. */
abstract Visibility getVisibility();
@@ -143,30 +172,44 @@ abstract private class ModuleLikeNode extends ItemNode {
private class SourceFileItemNode extends ModuleLikeNode, SourceFile {
override string getName() { result = "(source file)" }
override Namespace getNamespace() {
result.isType() // can be referenced with `super`
}
override Visibility getVisibility() { none() }
}
private class ConstItemNode extends ItemNode instanceof Const {
override string getName() { result = Const.super.getName().getText() }
override Namespace getNamespace() { result.isValue() }
override Visibility getVisibility() { result = Const.super.getVisibility() }
}
private class EnumItemNode extends ItemNode instanceof Enum {
override string getName() { result = Enum.super.getName().getText() }
override Namespace getNamespace() { result.isType() }
override Visibility getVisibility() { result = Enum.super.getVisibility() }
}
private class VariantItemNode extends ItemNode instanceof Variant {
override string getName() { result = Variant.super.getName().getText() }
override Namespace getNamespace() {
if super.getFieldList() instanceof RecordFieldList then result.isType() else result.isValue()
}
override Visibility getVisibility() { result = Variant.super.getVisibility() }
}
private class FunctionItemNode extends ItemNode instanceof Function {
override string getName() { result = Function.super.getName().getText() }
override Namespace getNamespace() { result.isValue() }
override Visibility getVisibility() { result = Function.super.getVisibility() }
}
@@ -184,57 +227,92 @@ abstract private class ImplOrTraitItemNode extends ItemNode {
}
}
private class ImplItemNode extends ImplOrTraitItemNode instanceof Impl {
class ImplItemNode extends ImplOrTraitItemNode instanceof Impl {
ItemNode resolveSelfTy() { result = resolvePath(super.getSelfTy().(PathTypeRepr).getPath()) }
override string getName() { result = "(impl)" }
override Namespace getNamespace() {
result.isType() // can be referenced with `Self`
}
override Visibility getVisibility() { result = Impl.super.getVisibility() }
}
private class MacroCallItemNode extends ItemNode instanceof MacroCall {
override string getName() { result = "(macro call)" }
override Namespace getNamespace() { none() }
override Visibility getVisibility() { none() }
}
private class ModuleItemNode extends ModuleLikeNode instanceof Module {
override string getName() { result = Module.super.getName().getText() }
override Namespace getNamespace() { result.isType() }
override Visibility getVisibility() { result = Module.super.getVisibility() }
}
private class StructItemNode extends ItemNode instanceof Struct {
override string getName() { result = Struct.super.getName().getText() }
override Namespace getNamespace() {
result.isType() // the struct itself
or
not super.getFieldList() instanceof RecordFieldList and
result.isValue() // the constructor
}
override Visibility getVisibility() { result = Struct.super.getVisibility() }
}
private class TraitItemNode extends ImplOrTraitItemNode instanceof Trait {
class TraitItemNode extends ImplOrTraitItemNode instanceof Trait {
override string getName() { result = Trait.super.getName().getText() }
override Namespace getNamespace() { result.isType() }
override Visibility getVisibility() { result = Trait.super.getVisibility() }
}
class TypeAliasItemNode extends ItemNode instanceof TypeAlias {
override string getName() { result = TypeAlias.super.getName().getText() }
override Namespace getNamespace() { result.isType() }
override Visibility getVisibility() { result = TypeAlias.super.getVisibility() }
}
private class UnionItemNode extends ItemNode instanceof Union {
override string getName() { result = Union.super.getName().getText() }
override Namespace getNamespace() { result.isType() }
override Visibility getVisibility() { result = Union.super.getVisibility() }
}
private class UseItemNode extends ItemNode instanceof Use {
override string getName() { result = "(use)" }
override Namespace getNamespace() { none() }
override Visibility getVisibility() { none() }
}
private class BlockExprItemNode extends ItemNode instanceof BlockExpr {
override string getName() { result = "(block expr)" }
override Namespace getNamespace() { none() }
override Visibility getVisibility() { none() }
}
private class TypeParamItemNode extends ItemNode instanceof TypeParam {
override string getName() { result = TypeParam.super.getName().getText() }
override Namespace getNamespace() { result.isType() }
override Visibility getVisibility() { none() }
}
@@ -320,19 +398,22 @@ private predicate useTreeDeclares(UseTree tree, string name) {
}
/**
* Holds if `item` explicitly declares a sub item named `name`. This includes
* items declared by `use` statements, except for glob imports.
* Holds if `item` explicitly declares a sub item named `name` in the
* namespace `ns`. This includes items declared by `use` statements,
* except for glob imports.
*/
pragma[nomagic]
private predicate declares(ItemNode item, string name) {
private predicate declares(ItemNode item, Namespace ns, string name) {
exists(ItemNode child | child.getImmediateParent() = item |
child.getName() = name
child.getName() = name and
child.getNamespace() = ns
or
useTreeDeclares(child.(Use).getUseTree(), name)
useTreeDeclares(child.(Use).getUseTree(), name) and
exists(ns) // `use foo::bar` can refer to both a value and a type
)
or
exists(MacroCallItemNode call |
declares(call, name) and
declares(call, ns, name) and
call.getImmediateParent() = item
)
}
@@ -351,19 +432,20 @@ private class RelevantPath extends Path {
/**
* Holds if the unqualified path `p` references an item named `name`, and `name`
* may be looked up inside enclosing item `encl`.
* may be looked up in the `ns` namespace inside enclosing item `encl`.
*/
pragma[nomagic]
private predicate unqualifiedPathLookup(RelevantPath p, string name, ItemNode encl) {
private predicate unqualifiedPathLookup(RelevantPath p, string name, Namespace ns, ItemNode encl) {
exists(ItemNode encl0 |
// lookup in the immediately enclosing item
p.isUnqualified(name) and
encl0.getADescendant() = p
encl0.getADescendant() = p and
exists(ns)
or
// lookup in an outer scope, but only if the item is not declared in inner scope
exists(ItemNode mid |
unqualifiedPathLookup(p, name, mid) and
not declares(mid, name)
unqualifiedPathLookup(p, name, ns, mid) and
not declares(mid, ns, name)
|
// nested modules do not have unqualified access to items from outer modules,
// except for items declared at top-level in the source file
@@ -374,16 +456,30 @@ private predicate unqualifiedPathLookup(RelevantPath p, string name, ItemNode en
|
// functions in `impl` blocks need to use explicit `Self::` to access other
// functions in the `impl` block
if encl0 instanceof ImplOrTraitItemNode then encl = encl0.getImmediateParent() else encl = encl0
if encl0 instanceof ImplOrTraitItemNode and ns.isValue()
then encl = encl0.getImmediateParent()
else encl = encl0
)
}
/** Gets the item that `path` resolves to, if any. */
cached
ItemNode resolvePath(RelevantPath path) {
exists(ItemNode encl, string name |
unqualifiedPathLookup(path, name, encl) and
result = encl.getASuccessor(name)
pragma[nomagic]
private ItemNode getASuccessor(ItemNode pred, string name, Namespace ns) {
result = pred.getASuccessor(name) and
ns = result.getNamespace()
}
pragma[nomagic]
private ItemNode resolvePath0(RelevantPath path) {
exists(ItemNode encl, Namespace ns, string name, ItemNode res |
unqualifiedPathLookup(path, name, ns, encl) and
res = getASuccessor(encl, name, ns)
|
if
not any(RelevantPath parent).getQualifier() = path and
name = "Self" and
res instanceof ImplItemNode
then result = res.(ImplItemNode).resolveSelfTy()
else result = res
)
or
exists(ItemNode q, string name |
@@ -394,6 +490,47 @@ ItemNode resolvePath(RelevantPath path) {
result = resolveUseTreeListItem(_, _, path)
}
/** Holds if path `p` must be looked up in namespace `n`. */
private predicate pathUsesNamespace(Path p, Namespace n) {
n.isValue() and
(
p = any(PathExpr pe).getPath()
or
p = any(TupleStructPat tsp).getPath()
)
or
n.isType() and
(
p = any(Visibility v).getPath()
or
p = any(RecordExpr re).getPath()
or
p = any(PathTypeRepr ptr).getPath()
or
p = any(RecordPat rp).getPath()
or
p =
any(UseTree use |
use.isGlob()
or
use.hasUseTreeList()
).getPath()
or
p = any(Path parent).getQualifier()
)
}
/** Gets the item that `path` resolves to, if any. */
cached
ItemNode resolvePath(RelevantPath path) {
result = resolvePath0(path) and
(
pathUsesNamespace(path, result.getNamespace())
or
not pathUsesNamespace(path, _)
)
}
pragma[nomagic]
private ItemNode resolvePathQualifier(RelevantPath path, string name) {
result = resolvePath(path.getQualifier()) and
@@ -452,14 +589,14 @@ pragma[nomagic]
private predicate useImportEdge(Use use, string name, ItemNode item) {
exists(UseTree tree, ItemNode used |
used = resolveUseTreeListItem(use, tree) and
not exists(tree.getUseTreeList()) and
not tree.hasUseTreeList() and
if tree.isGlob()
then
exists(ItemNode encl |
exists(ItemNode encl, Namespace ns |
encl.getADescendant() = use and
item = used.getASuccessor(name) and
item = getASuccessor(used, name, ns) and
// glob imports can be shadowed
not declares(encl, name)
not declares(encl, ns, name)
)
else item = used
|

View File

@@ -0,0 +1,13 @@
extensions:
- addsTo:
pack: codeql/rust-all
extensible: sourceModel
data:
- ["repo:https://github.com/hyperium/hyper:hyper", "<crate::client::conn::http1::SendRequest>::send_request", "ReturnValue.Future.Variant[crate::result::Result::Ok(0)]", "remote", "manual"]
- ["repo:https://github.com/hyperium/hyper:hyper", "<crate::client::conn::http2::SendRequest>::send_request", "ReturnValue.Future.Variant[crate::result::Result::Ok(0)]", "remote", "manual"]
- ["repo:https://github.com/hyperium/hyper:hyper", "<crate::client::conn::http1::SendRequest>::try_send_request", "ReturnValue.Future.Variant[crate::result::Result::Ok(0)]", "remote", "manual"]
- ["repo:https://github.com/hyperium/hyper:hyper", "<crate::client::conn::http2::SendRequest>::try_send_request", "ReturnValue.Future.Variant[crate::result::Result::Ok(0)]", "remote", "manual"]
- ["repo:https://github.com/hyperium/hyper:hyper", "<crate::client::Client>::get", "ReturnValue.Future", "remote", "manual"]
- ["repo:https://github.com/hyperium/hyper:hyper", "<crate::client::Client>::request", "ReturnValue.Future", "remote", "manual"]
- ["repo:https://github.com/hyperium/hyper-util:hyper-util", "<crate::client::legacy::Client>::get", "ReturnValue.Future", "remote", "manual"]
- ["repo:https://github.com/hyperium/hyper-util:hyper-util", "<crate::client::legacy::Client>::request", "ReturnValue.Future", "remote", "manual"]

View File

@@ -11,13 +11,6 @@ extensions:
- ["lang:core", "crate::iter::traits::iterator::Iterator::nth", "Argument[self].Element", "ReturnValue.Variant[crate::option::Option::Some(0)]", "value", "manual"]
- ["lang:core", "crate::iter::traits::iterator::Iterator::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"]
# Option
- ["lang:core", "<crate::option::Option>::unwrap", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::option::Option>::unwrap_or", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::option::Option>::unwrap_or", "Argument[0]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::option::Option>::unwrap_or_default", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::option::Option>::unwrap_or_else", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::option::Option>::unwrap_or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::option::Option>::unwrap_unchecked", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
- ["lang:core", "<crate::option::Option>::expect", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
# Result
- ["lang:core", "<crate::result::Result>::unwrap", "Argument[self].Variant[crate::result::Result::Ok(0)]", "ReturnValue", "value", "manual"]

View File

@@ -0,0 +1,65 @@
# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
extensions:
- addsTo:
pack: codeql/rust-all
extensible: summaryModel
data:
- ["lang:core", "<crate::option::Option as crate::clone::Clone>::clone", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue.Variant[crate::option::Option::Some(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option as crate::convert::From>::from", "Argument[0].Reference.Variant[crate::option::Option::Some(0)]", "ReturnValue.Variant[crate::option::Option::Some(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option as crate::convert::From>::from", "Argument[0]", "ReturnValue.Variant[crate::option::Option::Some(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::and", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::and_then", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::and_then", "Argument[self].Variant[crate::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::as_mut", "Argument[self].Reference.Variant[crate::option::Option::Some(0)]", "ReturnValue.Variant[crate::option::Option::Some(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::as_ref", "Argument[self].Reference.Variant[crate::option::Option::Some(0)]", "ReturnValue.Variant[crate::option::Option::Some(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::cloned", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue.Variant[crate::option::Option::Some(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::copied", "Argument[self].Variant[crate::option::Option::Some(0)].Reference", "ReturnValue.Variant[crate::option::Option::Some(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::flatten", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::get_or_insert", "Argument[0]", "Argument[self].Reference.Variant[crate::option::Option::Some(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::get_or_insert", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::get_or_insert", "Argument[self].Reference.Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::get_or_insert_default", "Argument[self].Reference.Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::get_or_insert_with", "Argument[self].Reference.Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::insert", "Argument[0]", "Argument[self].Reference.Variant[crate::option::Option::Some(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::insert", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::insert", "Argument[self].Reference.Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::inspect", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::is_none_or", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::is_none_or", "Argument[self].Variant[crate::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::is_some_and", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::is_some_and", "Argument[self].Variant[crate::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::map", "Argument[0].ReturnValue", "ReturnValue.Variant[crate::option::Option::Some(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::map", "Argument[self].Variant[crate::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::map_or", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::map_or", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::map_or", "Argument[self].Variant[crate::option::Option::Some(0)]", "Argument[1].Parameter[0]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::map_or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::map_or_else", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::map_or_else", "Argument[self].Variant[crate::option::Option::Some(0)]", "Argument[1].Parameter[0]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::ok_or", "Argument[0]", "ReturnValue.Variant[crate::result::Result::Err(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::ok_or", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue.Variant[crate::result::Result::Ok(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::ok_or_else", "Argument[0].ReturnValue", "ReturnValue.Variant[crate::result::Result::Err(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::ok_or_else", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue.Variant[crate::result::Result::Ok(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::or", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::or", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::or_else", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::take_if", "Argument[self].Reference.Variant[crate::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::transpose", "Argument[self].Variant[crate::option::Option::Some(0)].Variant[crate::result::Result::Err(0)]", "ReturnValue.Variant[crate::result::Result::Err(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::transpose", "Argument[self].Variant[crate::option::Option::Some(0)].Variant[crate::result::Result::Ok(0)]", "ReturnValue.Variant[crate::result::Result::Ok(0)].Variant[crate::option::Option::Some(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::unwrap", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::unwrap_or", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::unwrap_or", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::unwrap_or_default", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::unwrap_or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::unwrap_or_else", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::unwrap_unchecked", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::unzip", "Argument[self].Variant[crate::option::Option::Some(0)].Tuple[0]", "ReturnValue.Tuple[0].Variant[crate::option::Option::Some(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::unzip", "Argument[self].Variant[crate::option::Option::Some(0)].Tuple[1]", "ReturnValue.Tuple[1].Variant[crate::option::Option::Some(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::xor", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::xor", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::zip", "Argument[0].Variant[crate::option::Option::Some(0)]", "ReturnValue.Variant[crate::option::Option::Some(0)].Tuple[1]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::zip", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue.Variant[crate::option::Option::Some(0)].Tuple[0]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::zip_with", "Argument[0].Variant[crate::option::Option::Some(0)]", "Argument[1].Parameter[1]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::zip_with", "Argument[1].ReturnValue", "ReturnValue.Variant[crate::option::Option::Some(0)]", "value", "dfc-generated"]
- ["lang:core", "<crate::option::Option>::zip_with", "Argument[self].Variant[crate::option::Option::Some(0)]", "Argument[1].Parameter[0]", "value", "dfc-generated"]

View File

@@ -81,9 +81,8 @@ module ModelGeneratorInput implements ModelGeneratorInputSig<Location, RustDataF
}
bindingset[c]
string paramReturnNodeAsOutput(R::Callable c, ParameterPosition pos) {
// TODO: Implement this to support returning through parameters.
result = "paramReturnNodeAsOutput(" + c + ", " + pos + ")"
string paramReturnNodeAsOutput(Callable c, ParameterPosition pos) {
result = paramReturnNodeAsContentOutput(c, pos)
}
bindingset[c]

View File

@@ -1,2 +1,2 @@
| gen_ident_pat.rs:6:22:6:22 | y | getNumberOfAttrs: | 0 | isMut: | no | isRef: | no | hasName: | yes | hasPat: | no |
| gen_ident_pat.rs:10:9:10:25 | y | getNumberOfAttrs: | 0 | isMut: | no | isRef: | no | hasName: | yes | hasPat: | yes |
| gen_ident_pat.rs:10:9:10:25 | y @ ... | getNumberOfAttrs: | 0 | isMut: | no | isRef: | no | hasName: | yes | hasPat: | yes |

View File

@@ -1,2 +1,2 @@
| gen_ident_pat.rs:6:22:6:22 | y | gen_ident_pat.rs:6:22:6:22 | y |
| gen_ident_pat.rs:10:9:10:25 | y | gen_ident_pat.rs:10:9:10:9 | y |
| gen_ident_pat.rs:10:9:10:25 | y @ ... | gen_ident_pat.rs:10:9:10:9 | y |

View File

@@ -1 +1 @@
| gen_ident_pat.rs:10:9:10:25 | y | gen_ident_pat.rs:10:11:10:25 | ...::Some(...) |
| gen_ident_pat.rs:10:9:10:25 | y @ ... | gen_ident_pat.rs:10:11:10:25 | ...::Some(...) |

View File

@@ -610,69 +610,97 @@ dominates
| test.rs:395:13:395:15 | RangePat | test.rs:396:13:396:13 | _ |
| test.rs:395:20:395:20 | 3 | test.rs:395:20:395:20 | 3 |
| test.rs:396:13:396:13 | _ | test.rs:396:13:396:13 | _ |
| test.rs:402:5:407:5 | enter fn test_infinite_loop | test.rs:402:5:407:5 | enter fn test_infinite_loop |
| test.rs:402:5:407:5 | enter fn test_infinite_loop | test.rs:404:13:404:14 | TupleExpr |
| test.rs:404:13:404:14 | TupleExpr | test.rs:404:13:404:14 | TupleExpr |
| test.rs:411:5:413:5 | enter fn say_hello | test.rs:411:5:413:5 | enter fn say_hello |
| test.rs:415:5:434:5 | enter fn async_block | test.rs:415:5:434:5 | enter fn async_block |
| test.rs:416:26:418:9 | enter { ... } | test.rs:416:26:418:9 | enter { ... } |
| test.rs:419:31:421:9 | enter { ... } | test.rs:419:31:421:9 | enter { ... } |
| test.rs:428:22:433:9 | enter \|...\| ... | test.rs:428:22:433:9 | enter \|...\| ... |
| test.rs:428:28:433:9 | enter { ... } | test.rs:428:28:433:9 | enter { ... } |
| test.rs:428:28:433:9 | enter { ... } | test.rs:428:28:433:9 | exit { ... } (normal) |
| test.rs:428:28:433:9 | enter { ... } | test.rs:429:13:431:13 | if b {...} |
| test.rs:428:28:433:9 | enter { ... } | test.rs:430:17:430:41 | ExprStmt |
| test.rs:428:28:433:9 | exit { ... } (normal) | test.rs:428:28:433:9 | exit { ... } (normal) |
| test.rs:429:13:431:13 | if b {...} | test.rs:429:13:431:13 | if b {...} |
| test.rs:430:17:430:41 | ExprStmt | test.rs:430:17:430:41 | ExprStmt |
| test.rs:440:5:442:5 | enter fn add_two | test.rs:440:5:442:5 | enter fn add_two |
| test.rs:446:5:454:5 | enter fn const_block_assert | test.rs:446:5:454:5 | enter fn const_block_assert |
| test.rs:446:5:454:5 | enter fn const_block_assert | test.rs:450:13:450:49 | ExprStmt |
| test.rs:446:5:454:5 | enter fn const_block_assert | test.rs:450:21:450:48 | [boolean(false)] ! ... |
| test.rs:446:5:454:5 | enter fn const_block_assert | test.rs:450:21:450:48 | [boolean(true)] ! ... |
| test.rs:446:5:454:5 | enter fn const_block_assert | test.rs:450:21:450:48 | if ... {...} |
| test.rs:450:13:450:49 | ExprStmt | test.rs:450:13:450:49 | ExprStmt |
| test.rs:450:13:450:49 | enter fn panic_cold_explicit | test.rs:450:13:450:49 | enter fn panic_cold_explicit |
| test.rs:450:21:450:48 | [boolean(false)] ! ... | test.rs:450:21:450:48 | [boolean(false)] ! ... |
| test.rs:450:21:450:48 | [boolean(true)] ! ... | test.rs:450:13:450:49 | ExprStmt |
| test.rs:450:21:450:48 | [boolean(true)] ! ... | test.rs:450:21:450:48 | [boolean(true)] ! ... |
| test.rs:450:21:450:48 | if ... {...} | test.rs:450:21:450:48 | if ... {...} |
| test.rs:456:5:465:5 | enter fn const_block_panic | test.rs:456:5:465:5 | enter fn const_block_panic |
| test.rs:456:5:465:5 | enter fn const_block_panic | test.rs:458:9:463:9 | if false {...} |
| test.rs:458:9:463:9 | if false {...} | test.rs:458:9:463:9 | if false {...} |
| test.rs:461:17:461:24 | enter fn panic_cold_explicit | test.rs:461:17:461:24 | enter fn panic_cold_explicit |
| test.rs:468:1:473:1 | enter fn dead_code | test.rs:468:1:473:1 | enter fn dead_code |
| test.rs:468:1:473:1 | enter fn dead_code | test.rs:470:9:470:17 | ExprStmt |
| test.rs:470:9:470:17 | ExprStmt | test.rs:470:9:470:17 | ExprStmt |
| test.rs:475:1:475:16 | enter fn do_thing | test.rs:475:1:475:16 | enter fn do_thing |
| test.rs:477:1:479:1 | enter fn condition_not_met | test.rs:477:1:479:1 | enter fn condition_not_met |
| test.rs:481:1:481:21 | enter fn do_next_thing | test.rs:481:1:481:21 | enter fn do_next_thing |
| test.rs:483:1:483:21 | enter fn do_last_thing | test.rs:483:1:483:21 | enter fn do_last_thing |
| test.rs:485:1:499:1 | enter fn labelled_block1 | test.rs:485:1:499:1 | enter fn labelled_block1 |
| test.rs:485:1:499:1 | enter fn labelled_block1 | test.rs:486:18:497:5 | 'block: { ... } |
| test.rs:485:1:499:1 | enter fn labelled_block1 | test.rs:488:9:490:9 | if ... {...} |
| test.rs:485:1:499:1 | enter fn labelled_block1 | test.rs:489:13:489:27 | ExprStmt |
| test.rs:485:1:499:1 | enter fn labelled_block1 | test.rs:492:9:494:9 | if ... {...} |
| test.rs:485:1:499:1 | enter fn labelled_block1 | test.rs:493:13:493:27 | ExprStmt |
| test.rs:486:18:497:5 | 'block: { ... } | test.rs:486:18:497:5 | 'block: { ... } |
| test.rs:488:9:490:9 | if ... {...} | test.rs:488:9:490:9 | if ... {...} |
| test.rs:488:9:490:9 | if ... {...} | test.rs:492:9:494:9 | if ... {...} |
| test.rs:488:9:490:9 | if ... {...} | test.rs:493:13:493:27 | ExprStmt |
| test.rs:489:13:489:27 | ExprStmt | test.rs:489:13:489:27 | ExprStmt |
| test.rs:492:9:494:9 | if ... {...} | test.rs:492:9:494:9 | if ... {...} |
| test.rs:493:13:493:27 | ExprStmt | test.rs:493:13:493:27 | ExprStmt |
| test.rs:501:1:509:1 | enter fn labelled_block2 | test.rs:501:1:509:1 | enter fn labelled_block2 |
| test.rs:501:1:509:1 | enter fn labelled_block2 | test.rs:502:18:508:5 | 'block: { ... } |
| test.rs:501:1:509:1 | enter fn labelled_block2 | test.rs:504:18:504:18 | y |
| test.rs:501:1:509:1 | enter fn labelled_block2 | test.rs:505:13:505:27 | ExprStmt |
| test.rs:502:18:508:5 | 'block: { ... } | test.rs:502:18:508:5 | 'block: { ... } |
| test.rs:504:18:504:18 | y | test.rs:504:18:504:18 | y |
| test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern | test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern |
| test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern | test.rs:401:9:404:9 | match 43 { ... } |
| test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern | test.rs:402:13:402:21 | [match(true)] n @ ... |
| test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern | test.rs:402:17:402:17 | 1 |
| test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern | test.rs:402:20:402:21 | 10 |
| test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern | test.rs:403:13:403:13 | _ |
| test.rs:401:9:404:9 | match 43 { ... } | test.rs:401:9:404:9 | match 43 { ... } |
| test.rs:402:13:402:21 | [match(true)] n @ ... | test.rs:402:13:402:21 | [match(true)] n @ ... |
| test.rs:402:17:402:17 | 1 | test.rs:402:13:402:21 | [match(true)] n @ ... |
| test.rs:402:17:402:17 | 1 | test.rs:402:17:402:17 | 1 |
| test.rs:402:17:402:17 | 1 | test.rs:402:20:402:21 | 10 |
| test.rs:402:20:402:21 | 10 | test.rs:402:13:402:21 | [match(true)] n @ ... |
| test.rs:402:20:402:21 | 10 | test.rs:402:20:402:21 | 10 |
| test.rs:403:13:403:13 | _ | test.rs:403:13:403:13 | _ |
| test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref | test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref |
| test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref | test.rs:409:9:412:9 | match a { ... } |
| test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref | test.rs:410:13:410:29 | [match(true)] ref mut n @ ... |
| test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref | test.rs:410:25:410:25 | 1 |
| test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref | test.rs:410:28:410:29 | 10 |
| test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref | test.rs:411:13:411:21 | ref mut n |
| test.rs:409:9:412:9 | match a { ... } | test.rs:409:9:412:9 | match a { ... } |
| test.rs:410:13:410:29 | [match(true)] ref mut n @ ... | test.rs:410:13:410:29 | [match(true)] ref mut n @ ... |
| test.rs:410:25:410:25 | 1 | test.rs:410:13:410:29 | [match(true)] ref mut n @ ... |
| test.rs:410:25:410:25 | 1 | test.rs:410:25:410:25 | 1 |
| test.rs:410:25:410:25 | 1 | test.rs:410:28:410:29 | 10 |
| test.rs:410:28:410:29 | 10 | test.rs:410:13:410:29 | [match(true)] ref mut n @ ... |
| test.rs:410:28:410:29 | 10 | test.rs:410:28:410:29 | 10 |
| test.rs:411:13:411:21 | ref mut n | test.rs:411:13:411:21 | ref mut n |
| test.rs:418:5:423:5 | enter fn test_infinite_loop | test.rs:418:5:423:5 | enter fn test_infinite_loop |
| test.rs:418:5:423:5 | enter fn test_infinite_loop | test.rs:420:13:420:14 | TupleExpr |
| test.rs:420:13:420:14 | TupleExpr | test.rs:420:13:420:14 | TupleExpr |
| test.rs:427:5:429:5 | enter fn say_hello | test.rs:427:5:429:5 | enter fn say_hello |
| test.rs:431:5:450:5 | enter fn async_block | test.rs:431:5:450:5 | enter fn async_block |
| test.rs:432:26:434:9 | enter { ... } | test.rs:432:26:434:9 | enter { ... } |
| test.rs:435:31:437:9 | enter { ... } | test.rs:435:31:437:9 | enter { ... } |
| test.rs:444:22:449:9 | enter \|...\| ... | test.rs:444:22:449:9 | enter \|...\| ... |
| test.rs:444:28:449:9 | enter { ... } | test.rs:444:28:449:9 | enter { ... } |
| test.rs:444:28:449:9 | enter { ... } | test.rs:444:28:449:9 | exit { ... } (normal) |
| test.rs:444:28:449:9 | enter { ... } | test.rs:445:13:447:13 | if b {...} |
| test.rs:444:28:449:9 | enter { ... } | test.rs:446:17:446:41 | ExprStmt |
| test.rs:444:28:449:9 | exit { ... } (normal) | test.rs:444:28:449:9 | exit { ... } (normal) |
| test.rs:445:13:447:13 | if b {...} | test.rs:445:13:447:13 | if b {...} |
| test.rs:446:17:446:41 | ExprStmt | test.rs:446:17:446:41 | ExprStmt |
| test.rs:456:5:458:5 | enter fn add_two | test.rs:456:5:458:5 | enter fn add_two |
| test.rs:462:5:470:5 | enter fn const_block_assert | test.rs:462:5:470:5 | enter fn const_block_assert |
| test.rs:462:5:470:5 | enter fn const_block_assert | test.rs:466:13:466:49 | ExprStmt |
| test.rs:462:5:470:5 | enter fn const_block_assert | test.rs:466:21:466:48 | [boolean(false)] ! ... |
| test.rs:462:5:470:5 | enter fn const_block_assert | test.rs:466:21:466:48 | [boolean(true)] ! ... |
| test.rs:462:5:470:5 | enter fn const_block_assert | test.rs:466:21:466:48 | if ... {...} |
| test.rs:466:13:466:49 | ExprStmt | test.rs:466:13:466:49 | ExprStmt |
| test.rs:466:13:466:49 | enter fn panic_cold_explicit | test.rs:466:13:466:49 | enter fn panic_cold_explicit |
| test.rs:466:21:466:48 | [boolean(false)] ! ... | test.rs:466:21:466:48 | [boolean(false)] ! ... |
| test.rs:466:21:466:48 | [boolean(true)] ! ... | test.rs:466:13:466:49 | ExprStmt |
| test.rs:466:21:466:48 | [boolean(true)] ! ... | test.rs:466:21:466:48 | [boolean(true)] ! ... |
| test.rs:466:21:466:48 | if ... {...} | test.rs:466:21:466:48 | if ... {...} |
| test.rs:472:5:481:5 | enter fn const_block_panic | test.rs:472:5:481:5 | enter fn const_block_panic |
| test.rs:472:5:481:5 | enter fn const_block_panic | test.rs:474:9:479:9 | if false {...} |
| test.rs:474:9:479:9 | if false {...} | test.rs:474:9:479:9 | if false {...} |
| test.rs:477:17:477:24 | enter fn panic_cold_explicit | test.rs:477:17:477:24 | enter fn panic_cold_explicit |
| test.rs:484:1:489:1 | enter fn dead_code | test.rs:484:1:489:1 | enter fn dead_code |
| test.rs:484:1:489:1 | enter fn dead_code | test.rs:486:9:486:17 | ExprStmt |
| test.rs:486:9:486:17 | ExprStmt | test.rs:486:9:486:17 | ExprStmt |
| test.rs:491:1:491:16 | enter fn do_thing | test.rs:491:1:491:16 | enter fn do_thing |
| test.rs:493:1:495:1 | enter fn condition_not_met | test.rs:493:1:495:1 | enter fn condition_not_met |
| test.rs:497:1:497:21 | enter fn do_next_thing | test.rs:497:1:497:21 | enter fn do_next_thing |
| test.rs:499:1:499:21 | enter fn do_last_thing | test.rs:499:1:499:21 | enter fn do_last_thing |
| test.rs:501:1:515:1 | enter fn labelled_block1 | test.rs:501:1:515:1 | enter fn labelled_block1 |
| test.rs:501:1:515:1 | enter fn labelled_block1 | test.rs:502:18:513:5 | 'block: { ... } |
| test.rs:501:1:515:1 | enter fn labelled_block1 | test.rs:504:9:506:9 | if ... {...} |
| test.rs:501:1:515:1 | enter fn labelled_block1 | test.rs:505:13:505:27 | ExprStmt |
| test.rs:501:1:515:1 | enter fn labelled_block1 | test.rs:508:9:510:9 | if ... {...} |
| test.rs:501:1:515:1 | enter fn labelled_block1 | test.rs:509:13:509:27 | ExprStmt |
| test.rs:502:18:513:5 | 'block: { ... } | test.rs:502:18:513:5 | 'block: { ... } |
| test.rs:504:9:506:9 | if ... {...} | test.rs:504:9:506:9 | if ... {...} |
| test.rs:504:9:506:9 | if ... {...} | test.rs:508:9:510:9 | if ... {...} |
| test.rs:504:9:506:9 | if ... {...} | test.rs:509:13:509:27 | ExprStmt |
| test.rs:505:13:505:27 | ExprStmt | test.rs:505:13:505:27 | ExprStmt |
| test.rs:511:1:517:1 | enter fn test_nested_function2 | test.rs:511:1:517:1 | enter fn test_nested_function2 |
| test.rs:513:5:515:5 | enter fn nested | test.rs:513:5:515:5 | enter fn nested |
| test.rs:528:5:530:5 | enter fn new | test.rs:528:5:530:5 | enter fn new |
| test.rs:532:5:534:5 | enter fn negated | test.rs:532:5:534:5 | enter fn negated |
| test.rs:536:5:538:5 | enter fn multifly_add | test.rs:536:5:538:5 | enter fn multifly_add |
| test.rs:508:9:510:9 | if ... {...} | test.rs:508:9:510:9 | if ... {...} |
| test.rs:509:13:509:27 | ExprStmt | test.rs:509:13:509:27 | ExprStmt |
| test.rs:517:1:525:1 | enter fn labelled_block2 | test.rs:517:1:525:1 | enter fn labelled_block2 |
| test.rs:517:1:525:1 | enter fn labelled_block2 | test.rs:518:18:524:5 | 'block: { ... } |
| test.rs:517:1:525:1 | enter fn labelled_block2 | test.rs:520:18:520:18 | y |
| test.rs:517:1:525:1 | enter fn labelled_block2 | test.rs:521:13:521:27 | ExprStmt |
| test.rs:518:18:524:5 | 'block: { ... } | test.rs:518:18:524:5 | 'block: { ... } |
| test.rs:520:18:520:18 | y | test.rs:520:18:520:18 | y |
| test.rs:521:13:521:27 | ExprStmt | test.rs:521:13:521:27 | ExprStmt |
| test.rs:527:1:533:1 | enter fn test_nested_function2 | test.rs:527:1:533:1 | enter fn test_nested_function2 |
| test.rs:529:5:531:5 | enter fn nested | test.rs:529:5:531:5 | enter fn nested |
| test.rs:544:5:546:5 | enter fn new | test.rs:544:5:546:5 | enter fn new |
| test.rs:548:5:550:5 | enter fn negated | test.rs:548:5:550:5 | enter fn negated |
| test.rs:552:5:554:5 | enter fn multifly_add | test.rs:552:5:554:5 | enter fn multifly_add |
postDominance
| test.rs:5:5:8:5 | enter fn function_call | test.rs:5:5:8:5 | enter fn function_call |
| test.rs:10:5:13:5 | enter fn method_call | test.rs:10:5:13:5 | enter fn method_call |
@@ -1192,66 +1220,88 @@ postDominance
| test.rs:395:13:395:15 | RangePat | test.rs:395:13:395:15 | RangePat |
| test.rs:395:20:395:20 | 3 | test.rs:395:20:395:20 | 3 |
| test.rs:396:13:396:13 | _ | test.rs:396:13:396:13 | _ |
| test.rs:402:5:407:5 | enter fn test_infinite_loop | test.rs:402:5:407:5 | enter fn test_infinite_loop |
| test.rs:404:13:404:14 | TupleExpr | test.rs:404:13:404:14 | TupleExpr |
| test.rs:411:5:413:5 | enter fn say_hello | test.rs:411:5:413:5 | enter fn say_hello |
| test.rs:415:5:434:5 | enter fn async_block | test.rs:415:5:434:5 | enter fn async_block |
| test.rs:416:26:418:9 | enter { ... } | test.rs:416:26:418:9 | enter { ... } |
| test.rs:419:31:421:9 | enter { ... } | test.rs:419:31:421:9 | enter { ... } |
| test.rs:428:22:433:9 | enter \|...\| ... | test.rs:428:22:433:9 | enter \|...\| ... |
| test.rs:428:28:433:9 | enter { ... } | test.rs:428:28:433:9 | enter { ... } |
| test.rs:428:28:433:9 | exit { ... } (normal) | test.rs:428:28:433:9 | enter { ... } |
| test.rs:428:28:433:9 | exit { ... } (normal) | test.rs:428:28:433:9 | exit { ... } (normal) |
| test.rs:428:28:433:9 | exit { ... } (normal) | test.rs:429:13:431:13 | if b {...} |
| test.rs:428:28:433:9 | exit { ... } (normal) | test.rs:430:17:430:41 | ExprStmt |
| test.rs:429:13:431:13 | if b {...} | test.rs:429:13:431:13 | if b {...} |
| test.rs:430:17:430:41 | ExprStmt | test.rs:430:17:430:41 | ExprStmt |
| test.rs:440:5:442:5 | enter fn add_two | test.rs:440:5:442:5 | enter fn add_two |
| test.rs:446:5:454:5 | enter fn const_block_assert | test.rs:446:5:454:5 | enter fn const_block_assert |
| test.rs:450:13:450:49 | ExprStmt | test.rs:450:13:450:49 | ExprStmt |
| test.rs:450:13:450:49 | ExprStmt | test.rs:450:21:450:48 | [boolean(true)] ! ... |
| test.rs:450:13:450:49 | enter fn panic_cold_explicit | test.rs:450:13:450:49 | enter fn panic_cold_explicit |
| test.rs:450:21:450:48 | [boolean(false)] ! ... | test.rs:450:21:450:48 | [boolean(false)] ! ... |
| test.rs:450:21:450:48 | [boolean(true)] ! ... | test.rs:450:21:450:48 | [boolean(true)] ! ... |
| test.rs:450:21:450:48 | if ... {...} | test.rs:446:5:454:5 | enter fn const_block_assert |
| test.rs:450:21:450:48 | if ... {...} | test.rs:450:13:450:49 | ExprStmt |
| test.rs:450:21:450:48 | if ... {...} | test.rs:450:21:450:48 | [boolean(false)] ! ... |
| test.rs:450:21:450:48 | if ... {...} | test.rs:450:21:450:48 | [boolean(true)] ! ... |
| test.rs:450:21:450:48 | if ... {...} | test.rs:450:21:450:48 | if ... {...} |
| test.rs:456:5:465:5 | enter fn const_block_panic | test.rs:456:5:465:5 | enter fn const_block_panic |
| test.rs:458:9:463:9 | if false {...} | test.rs:456:5:465:5 | enter fn const_block_panic |
| test.rs:458:9:463:9 | if false {...} | test.rs:458:9:463:9 | if false {...} |
| test.rs:461:17:461:24 | enter fn panic_cold_explicit | test.rs:461:17:461:24 | enter fn panic_cold_explicit |
| test.rs:468:1:473:1 | enter fn dead_code | test.rs:468:1:473:1 | enter fn dead_code |
| test.rs:470:9:470:17 | ExprStmt | test.rs:468:1:473:1 | enter fn dead_code |
| test.rs:470:9:470:17 | ExprStmt | test.rs:470:9:470:17 | ExprStmt |
| test.rs:475:1:475:16 | enter fn do_thing | test.rs:475:1:475:16 | enter fn do_thing |
| test.rs:477:1:479:1 | enter fn condition_not_met | test.rs:477:1:479:1 | enter fn condition_not_met |
| test.rs:481:1:481:21 | enter fn do_next_thing | test.rs:481:1:481:21 | enter fn do_next_thing |
| test.rs:483:1:483:21 | enter fn do_last_thing | test.rs:483:1:483:21 | enter fn do_last_thing |
| test.rs:485:1:499:1 | enter fn labelled_block1 | test.rs:485:1:499:1 | enter fn labelled_block1 |
| test.rs:486:18:497:5 | 'block: { ... } | test.rs:485:1:499:1 | enter fn labelled_block1 |
| test.rs:486:18:497:5 | 'block: { ... } | test.rs:486:18:497:5 | 'block: { ... } |
| test.rs:486:18:497:5 | 'block: { ... } | test.rs:488:9:490:9 | if ... {...} |
| test.rs:486:18:497:5 | 'block: { ... } | test.rs:489:13:489:27 | ExprStmt |
| test.rs:486:18:497:5 | 'block: { ... } | test.rs:492:9:494:9 | if ... {...} |
| test.rs:486:18:497:5 | 'block: { ... } | test.rs:493:13:493:27 | ExprStmt |
| test.rs:488:9:490:9 | if ... {...} | test.rs:488:9:490:9 | if ... {...} |
| test.rs:489:13:489:27 | ExprStmt | test.rs:489:13:489:27 | ExprStmt |
| test.rs:492:9:494:9 | if ... {...} | test.rs:492:9:494:9 | if ... {...} |
| test.rs:493:13:493:27 | ExprStmt | test.rs:493:13:493:27 | ExprStmt |
| test.rs:501:1:509:1 | enter fn labelled_block2 | test.rs:501:1:509:1 | enter fn labelled_block2 |
| test.rs:502:18:508:5 | 'block: { ... } | test.rs:501:1:509:1 | enter fn labelled_block2 |
| test.rs:502:18:508:5 | 'block: { ... } | test.rs:502:18:508:5 | 'block: { ... } |
| test.rs:502:18:508:5 | 'block: { ... } | test.rs:504:18:504:18 | y |
| test.rs:502:18:508:5 | 'block: { ... } | test.rs:505:13:505:27 | ExprStmt |
| test.rs:504:18:504:18 | y | test.rs:504:18:504:18 | y |
| test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern | test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern |
| test.rs:401:9:404:9 | match 43 { ... } | test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern |
| test.rs:401:9:404:9 | match 43 { ... } | test.rs:401:9:404:9 | match 43 { ... } |
| test.rs:401:9:404:9 | match 43 { ... } | test.rs:402:13:402:21 | [match(true)] n @ ... |
| test.rs:401:9:404:9 | match 43 { ... } | test.rs:402:17:402:17 | 1 |
| test.rs:401:9:404:9 | match 43 { ... } | test.rs:402:20:402:21 | 10 |
| test.rs:401:9:404:9 | match 43 { ... } | test.rs:403:13:403:13 | _ |
| test.rs:402:13:402:21 | [match(true)] n @ ... | test.rs:402:13:402:21 | [match(true)] n @ ... |
| test.rs:402:17:402:17 | 1 | test.rs:402:17:402:17 | 1 |
| test.rs:402:20:402:21 | 10 | test.rs:402:20:402:21 | 10 |
| test.rs:403:13:403:13 | _ | test.rs:403:13:403:13 | _ |
| test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref | test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref |
| test.rs:409:9:412:9 | match a { ... } | test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref |
| test.rs:409:9:412:9 | match a { ... } | test.rs:409:9:412:9 | match a { ... } |
| test.rs:409:9:412:9 | match a { ... } | test.rs:410:13:410:29 | [match(true)] ref mut n @ ... |
| test.rs:409:9:412:9 | match a { ... } | test.rs:410:25:410:25 | 1 |
| test.rs:409:9:412:9 | match a { ... } | test.rs:410:28:410:29 | 10 |
| test.rs:409:9:412:9 | match a { ... } | test.rs:411:13:411:21 | ref mut n |
| test.rs:410:13:410:29 | [match(true)] ref mut n @ ... | test.rs:410:13:410:29 | [match(true)] ref mut n @ ... |
| test.rs:410:25:410:25 | 1 | test.rs:410:25:410:25 | 1 |
| test.rs:410:28:410:29 | 10 | test.rs:410:28:410:29 | 10 |
| test.rs:411:13:411:21 | ref mut n | test.rs:411:13:411:21 | ref mut n |
| test.rs:418:5:423:5 | enter fn test_infinite_loop | test.rs:418:5:423:5 | enter fn test_infinite_loop |
| test.rs:420:13:420:14 | TupleExpr | test.rs:420:13:420:14 | TupleExpr |
| test.rs:427:5:429:5 | enter fn say_hello | test.rs:427:5:429:5 | enter fn say_hello |
| test.rs:431:5:450:5 | enter fn async_block | test.rs:431:5:450:5 | enter fn async_block |
| test.rs:432:26:434:9 | enter { ... } | test.rs:432:26:434:9 | enter { ... } |
| test.rs:435:31:437:9 | enter { ... } | test.rs:435:31:437:9 | enter { ... } |
| test.rs:444:22:449:9 | enter \|...\| ... | test.rs:444:22:449:9 | enter \|...\| ... |
| test.rs:444:28:449:9 | enter { ... } | test.rs:444:28:449:9 | enter { ... } |
| test.rs:444:28:449:9 | exit { ... } (normal) | test.rs:444:28:449:9 | enter { ... } |
| test.rs:444:28:449:9 | exit { ... } (normal) | test.rs:444:28:449:9 | exit { ... } (normal) |
| test.rs:444:28:449:9 | exit { ... } (normal) | test.rs:445:13:447:13 | if b {...} |
| test.rs:444:28:449:9 | exit { ... } (normal) | test.rs:446:17:446:41 | ExprStmt |
| test.rs:445:13:447:13 | if b {...} | test.rs:445:13:447:13 | if b {...} |
| test.rs:446:17:446:41 | ExprStmt | test.rs:446:17:446:41 | ExprStmt |
| test.rs:456:5:458:5 | enter fn add_two | test.rs:456:5:458:5 | enter fn add_two |
| test.rs:462:5:470:5 | enter fn const_block_assert | test.rs:462:5:470:5 | enter fn const_block_assert |
| test.rs:466:13:466:49 | ExprStmt | test.rs:466:13:466:49 | ExprStmt |
| test.rs:466:13:466:49 | ExprStmt | test.rs:466:21:466:48 | [boolean(true)] ! ... |
| test.rs:466:13:466:49 | enter fn panic_cold_explicit | test.rs:466:13:466:49 | enter fn panic_cold_explicit |
| test.rs:466:21:466:48 | [boolean(false)] ! ... | test.rs:466:21:466:48 | [boolean(false)] ! ... |
| test.rs:466:21:466:48 | [boolean(true)] ! ... | test.rs:466:21:466:48 | [boolean(true)] ! ... |
| test.rs:466:21:466:48 | if ... {...} | test.rs:462:5:470:5 | enter fn const_block_assert |
| test.rs:466:21:466:48 | if ... {...} | test.rs:466:13:466:49 | ExprStmt |
| test.rs:466:21:466:48 | if ... {...} | test.rs:466:21:466:48 | [boolean(false)] ! ... |
| test.rs:466:21:466:48 | if ... {...} | test.rs:466:21:466:48 | [boolean(true)] ! ... |
| test.rs:466:21:466:48 | if ... {...} | test.rs:466:21:466:48 | if ... {...} |
| test.rs:472:5:481:5 | enter fn const_block_panic | test.rs:472:5:481:5 | enter fn const_block_panic |
| test.rs:474:9:479:9 | if false {...} | test.rs:472:5:481:5 | enter fn const_block_panic |
| test.rs:474:9:479:9 | if false {...} | test.rs:474:9:479:9 | if false {...} |
| test.rs:477:17:477:24 | enter fn panic_cold_explicit | test.rs:477:17:477:24 | enter fn panic_cold_explicit |
| test.rs:484:1:489:1 | enter fn dead_code | test.rs:484:1:489:1 | enter fn dead_code |
| test.rs:486:9:486:17 | ExprStmt | test.rs:484:1:489:1 | enter fn dead_code |
| test.rs:486:9:486:17 | ExprStmt | test.rs:486:9:486:17 | ExprStmt |
| test.rs:491:1:491:16 | enter fn do_thing | test.rs:491:1:491:16 | enter fn do_thing |
| test.rs:493:1:495:1 | enter fn condition_not_met | test.rs:493:1:495:1 | enter fn condition_not_met |
| test.rs:497:1:497:21 | enter fn do_next_thing | test.rs:497:1:497:21 | enter fn do_next_thing |
| test.rs:499:1:499:21 | enter fn do_last_thing | test.rs:499:1:499:21 | enter fn do_last_thing |
| test.rs:501:1:515:1 | enter fn labelled_block1 | test.rs:501:1:515:1 | enter fn labelled_block1 |
| test.rs:502:18:513:5 | 'block: { ... } | test.rs:501:1:515:1 | enter fn labelled_block1 |
| test.rs:502:18:513:5 | 'block: { ... } | test.rs:502:18:513:5 | 'block: { ... } |
| test.rs:502:18:513:5 | 'block: { ... } | test.rs:504:9:506:9 | if ... {...} |
| test.rs:502:18:513:5 | 'block: { ... } | test.rs:505:13:505:27 | ExprStmt |
| test.rs:502:18:513:5 | 'block: { ... } | test.rs:508:9:510:9 | if ... {...} |
| test.rs:502:18:513:5 | 'block: { ... } | test.rs:509:13:509:27 | ExprStmt |
| test.rs:504:9:506:9 | if ... {...} | test.rs:504:9:506:9 | if ... {...} |
| test.rs:505:13:505:27 | ExprStmt | test.rs:505:13:505:27 | ExprStmt |
| test.rs:511:1:517:1 | enter fn test_nested_function2 | test.rs:511:1:517:1 | enter fn test_nested_function2 |
| test.rs:513:5:515:5 | enter fn nested | test.rs:513:5:515:5 | enter fn nested |
| test.rs:528:5:530:5 | enter fn new | test.rs:528:5:530:5 | enter fn new |
| test.rs:532:5:534:5 | enter fn negated | test.rs:532:5:534:5 | enter fn negated |
| test.rs:536:5:538:5 | enter fn multifly_add | test.rs:536:5:538:5 | enter fn multifly_add |
| test.rs:508:9:510:9 | if ... {...} | test.rs:508:9:510:9 | if ... {...} |
| test.rs:509:13:509:27 | ExprStmt | test.rs:509:13:509:27 | ExprStmt |
| test.rs:517:1:525:1 | enter fn labelled_block2 | test.rs:517:1:525:1 | enter fn labelled_block2 |
| test.rs:518:18:524:5 | 'block: { ... } | test.rs:517:1:525:1 | enter fn labelled_block2 |
| test.rs:518:18:524:5 | 'block: { ... } | test.rs:518:18:524:5 | 'block: { ... } |
| test.rs:518:18:524:5 | 'block: { ... } | test.rs:520:18:520:18 | y |
| test.rs:518:18:524:5 | 'block: { ... } | test.rs:521:13:521:27 | ExprStmt |
| test.rs:520:18:520:18 | y | test.rs:520:18:520:18 | y |
| test.rs:521:13:521:27 | ExprStmt | test.rs:521:13:521:27 | ExprStmt |
| test.rs:527:1:533:1 | enter fn test_nested_function2 | test.rs:527:1:533:1 | enter fn test_nested_function2 |
| test.rs:529:5:531:5 | enter fn nested | test.rs:529:5:531:5 | enter fn nested |
| test.rs:544:5:546:5 | enter fn new | test.rs:544:5:546:5 | enter fn new |
| test.rs:548:5:550:5 | enter fn negated | test.rs:548:5:550:5 | enter fn negated |
| test.rs:552:5:554:5 | enter fn multifly_add | test.rs:552:5:554:5 | enter fn multifly_add |
immediateDominator
| test.rs:19:9:23:9 | if ... {...} else {...} | test.rs:18:5:24:5 | enter fn next |
| test.rs:20:13:20:13 | n | test.rs:18:5:24:5 | enter fn next |
@@ -1452,24 +1502,34 @@ immediateDominator
| test.rs:395:13:395:15 | RangePat | test.rs:394:13:394:16 | RangePat |
| test.rs:395:20:395:20 | 3 | test.rs:395:13:395:13 | 5 |
| test.rs:396:13:396:13 | _ | test.rs:395:13:395:15 | RangePat |
| test.rs:404:13:404:14 | TupleExpr | test.rs:402:5:407:5 | enter fn test_infinite_loop |
| test.rs:428:28:433:9 | exit { ... } (normal) | test.rs:428:28:433:9 | enter { ... } |
| test.rs:429:13:431:13 | if b {...} | test.rs:428:28:433:9 | enter { ... } |
| test.rs:430:17:430:41 | ExprStmt | test.rs:428:28:433:9 | enter { ... } |
| test.rs:450:13:450:49 | ExprStmt | test.rs:450:21:450:48 | [boolean(true)] ! ... |
| test.rs:450:21:450:48 | [boolean(false)] ! ... | test.rs:446:5:454:5 | enter fn const_block_assert |
| test.rs:450:21:450:48 | [boolean(true)] ! ... | test.rs:446:5:454:5 | enter fn const_block_assert |
| test.rs:450:21:450:48 | if ... {...} | test.rs:446:5:454:5 | enter fn const_block_assert |
| test.rs:458:9:463:9 | if false {...} | test.rs:456:5:465:5 | enter fn const_block_panic |
| test.rs:470:9:470:17 | ExprStmt | test.rs:468:1:473:1 | enter fn dead_code |
| test.rs:486:18:497:5 | 'block: { ... } | test.rs:485:1:499:1 | enter fn labelled_block1 |
| test.rs:488:9:490:9 | if ... {...} | test.rs:485:1:499:1 | enter fn labelled_block1 |
| test.rs:489:13:489:27 | ExprStmt | test.rs:485:1:499:1 | enter fn labelled_block1 |
| test.rs:492:9:494:9 | if ... {...} | test.rs:488:9:490:9 | if ... {...} |
| test.rs:493:13:493:27 | ExprStmt | test.rs:488:9:490:9 | if ... {...} |
| test.rs:502:18:508:5 | 'block: { ... } | test.rs:501:1:509:1 | enter fn labelled_block2 |
| test.rs:504:18:504:18 | y | test.rs:501:1:509:1 | enter fn labelled_block2 |
| test.rs:505:13:505:27 | ExprStmt | test.rs:501:1:509:1 | enter fn labelled_block2 |
| test.rs:401:9:404:9 | match 43 { ... } | test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern |
| test.rs:402:13:402:21 | [match(true)] n @ ... | test.rs:402:20:402:21 | 10 |
| test.rs:402:17:402:17 | 1 | test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern |
| test.rs:402:20:402:21 | 10 | test.rs:402:17:402:17 | 1 |
| test.rs:403:13:403:13 | _ | test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern |
| test.rs:409:9:412:9 | match a { ... } | test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref |
| test.rs:410:13:410:29 | [match(true)] ref mut n @ ... | test.rs:410:28:410:29 | 10 |
| test.rs:410:25:410:25 | 1 | test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref |
| test.rs:410:28:410:29 | 10 | test.rs:410:25:410:25 | 1 |
| test.rs:411:13:411:21 | ref mut n | test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref |
| test.rs:420:13:420:14 | TupleExpr | test.rs:418:5:423:5 | enter fn test_infinite_loop |
| test.rs:444:28:449:9 | exit { ... } (normal) | test.rs:444:28:449:9 | enter { ... } |
| test.rs:445:13:447:13 | if b {...} | test.rs:444:28:449:9 | enter { ... } |
| test.rs:446:17:446:41 | ExprStmt | test.rs:444:28:449:9 | enter { ... } |
| test.rs:466:13:466:49 | ExprStmt | test.rs:466:21:466:48 | [boolean(true)] ! ... |
| test.rs:466:21:466:48 | [boolean(false)] ! ... | test.rs:462:5:470:5 | enter fn const_block_assert |
| test.rs:466:21:466:48 | [boolean(true)] ! ... | test.rs:462:5:470:5 | enter fn const_block_assert |
| test.rs:466:21:466:48 | if ... {...} | test.rs:462:5:470:5 | enter fn const_block_assert |
| test.rs:474:9:479:9 | if false {...} | test.rs:472:5:481:5 | enter fn const_block_panic |
| test.rs:486:9:486:17 | ExprStmt | test.rs:484:1:489:1 | enter fn dead_code |
| test.rs:502:18:513:5 | 'block: { ... } | test.rs:501:1:515:1 | enter fn labelled_block1 |
| test.rs:504:9:506:9 | if ... {...} | test.rs:501:1:515:1 | enter fn labelled_block1 |
| test.rs:505:13:505:27 | ExprStmt | test.rs:501:1:515:1 | enter fn labelled_block1 |
| test.rs:508:9:510:9 | if ... {...} | test.rs:504:9:506:9 | if ... {...} |
| test.rs:509:13:509:27 | ExprStmt | test.rs:504:9:506:9 | if ... {...} |
| test.rs:518:18:524:5 | 'block: { ... } | test.rs:517:1:525:1 | enter fn labelled_block2 |
| test.rs:520:18:520:18 | y | test.rs:517:1:525:1 | enter fn labelled_block2 |
| test.rs:521:13:521:27 | ExprStmt | test.rs:517:1:525:1 | enter fn labelled_block2 |
controls
| test.rs:18:5:24:5 | enter fn next | test.rs:20:13:20:13 | n | true |
| test.rs:18:5:24:5 | enter fn next | test.rs:22:13:22:13 | 3 | false |
@@ -1659,20 +1719,20 @@ controls
| test.rs:346:10:349:9 | [boolean(true)] match r { ... } | test.rs:349:15:349:18 | cond | true |
| test.rs:347:18:347:18 | a | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | true |
| test.rs:347:18:347:18 | a | test.rs:349:15:349:18 | cond | true |
| test.rs:428:28:433:9 | enter { ... } | test.rs:429:13:431:13 | if b {...} | false |
| test.rs:428:28:433:9 | enter { ... } | test.rs:430:17:430:41 | ExprStmt | true |
| test.rs:446:5:454:5 | enter fn const_block_assert | test.rs:450:13:450:49 | ExprStmt | false |
| test.rs:446:5:454:5 | enter fn const_block_assert | test.rs:450:21:450:48 | [boolean(false)] ! ... | true |
| test.rs:446:5:454:5 | enter fn const_block_assert | test.rs:450:21:450:48 | [boolean(true)] ! ... | false |
| test.rs:450:21:450:48 | [boolean(true)] ! ... | test.rs:450:13:450:49 | ExprStmt | true |
| test.rs:456:5:465:5 | enter fn const_block_panic | test.rs:458:9:463:9 | if false {...} | false |
| test.rs:468:1:473:1 | enter fn dead_code | test.rs:470:9:470:17 | ExprStmt | true |
| test.rs:485:1:499:1 | enter fn labelled_block1 | test.rs:488:9:490:9 | if ... {...} | false |
| test.rs:485:1:499:1 | enter fn labelled_block1 | test.rs:489:13:489:27 | ExprStmt | true |
| test.rs:485:1:499:1 | enter fn labelled_block1 | test.rs:492:9:494:9 | if ... {...} | false |
| test.rs:485:1:499:1 | enter fn labelled_block1 | test.rs:493:13:493:27 | ExprStmt | false |
| test.rs:488:9:490:9 | if ... {...} | test.rs:492:9:494:9 | if ... {...} | false |
| test.rs:488:9:490:9 | if ... {...} | test.rs:493:13:493:27 | ExprStmt | true |
| test.rs:444:28:449:9 | enter { ... } | test.rs:445:13:447:13 | if b {...} | false |
| test.rs:444:28:449:9 | enter { ... } | test.rs:446:17:446:41 | ExprStmt | true |
| test.rs:462:5:470:5 | enter fn const_block_assert | test.rs:466:13:466:49 | ExprStmt | false |
| test.rs:462:5:470:5 | enter fn const_block_assert | test.rs:466:21:466:48 | [boolean(false)] ! ... | true |
| test.rs:462:5:470:5 | enter fn const_block_assert | test.rs:466:21:466:48 | [boolean(true)] ! ... | false |
| test.rs:466:21:466:48 | [boolean(true)] ! ... | test.rs:466:13:466:49 | ExprStmt | true |
| test.rs:472:5:481:5 | enter fn const_block_panic | test.rs:474:9:479:9 | if false {...} | false |
| test.rs:484:1:489:1 | enter fn dead_code | test.rs:486:9:486:17 | ExprStmt | true |
| test.rs:501:1:515:1 | enter fn labelled_block1 | test.rs:504:9:506:9 | if ... {...} | false |
| test.rs:501:1:515:1 | enter fn labelled_block1 | test.rs:505:13:505:27 | ExprStmt | true |
| test.rs:501:1:515:1 | enter fn labelled_block1 | test.rs:508:9:510:9 | if ... {...} | false |
| test.rs:501:1:515:1 | enter fn labelled_block1 | test.rs:509:13:509:27 | ExprStmt | false |
| test.rs:504:9:506:9 | if ... {...} | test.rs:508:9:510:9 | if ... {...} | false |
| test.rs:504:9:506:9 | if ... {...} | test.rs:509:13:509:27 | ExprStmt | true |
successor
| test.rs:18:5:24:5 | enter fn next | test.rs:20:13:20:13 | n | true |
| test.rs:18:5:24:5 | enter fn next | test.rs:22:13:22:13 | 3 | false |
@@ -1808,18 +1868,18 @@ successor
| test.rs:347:18:347:18 | a | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | false |
| test.rs:347:18:347:18 | a | test.rs:346:10:349:9 | [boolean(true)] match r { ... } | true |
| test.rs:348:13:348:13 | _ | test.rs:346:10:349:9 | [boolean(false)] match r { ... } | false |
| test.rs:428:28:433:9 | enter { ... } | test.rs:429:13:431:13 | if b {...} | false |
| test.rs:428:28:433:9 | enter { ... } | test.rs:430:17:430:41 | ExprStmt | true |
| test.rs:446:5:454:5 | enter fn const_block_assert | test.rs:450:21:450:48 | [boolean(false)] ! ... | true |
| test.rs:446:5:454:5 | enter fn const_block_assert | test.rs:450:21:450:48 | [boolean(true)] ! ... | false |
| test.rs:450:21:450:48 | [boolean(false)] ! ... | test.rs:450:21:450:48 | if ... {...} | false |
| test.rs:450:21:450:48 | [boolean(true)] ! ... | test.rs:450:13:450:49 | ExprStmt | true |
| test.rs:456:5:465:5 | enter fn const_block_panic | test.rs:458:9:463:9 | if false {...} | false |
| test.rs:468:1:473:1 | enter fn dead_code | test.rs:470:9:470:17 | ExprStmt | true |
| test.rs:485:1:499:1 | enter fn labelled_block1 | test.rs:488:9:490:9 | if ... {...} | false |
| test.rs:485:1:499:1 | enter fn labelled_block1 | test.rs:489:13:489:27 | ExprStmt | true |
| test.rs:488:9:490:9 | if ... {...} | test.rs:492:9:494:9 | if ... {...} | false |
| test.rs:488:9:490:9 | if ... {...} | test.rs:493:13:493:27 | ExprStmt | true |
| test.rs:444:28:449:9 | enter { ... } | test.rs:445:13:447:13 | if b {...} | false |
| test.rs:444:28:449:9 | enter { ... } | test.rs:446:17:446:41 | ExprStmt | true |
| test.rs:462:5:470:5 | enter fn const_block_assert | test.rs:466:21:466:48 | [boolean(false)] ! ... | true |
| test.rs:462:5:470:5 | enter fn const_block_assert | test.rs:466:21:466:48 | [boolean(true)] ! ... | false |
| test.rs:466:21:466:48 | [boolean(false)] ! ... | test.rs:466:21:466:48 | if ... {...} | false |
| test.rs:466:21:466:48 | [boolean(true)] ! ... | test.rs:466:13:466:49 | ExprStmt | true |
| test.rs:472:5:481:5 | enter fn const_block_panic | test.rs:474:9:479:9 | if false {...} | false |
| test.rs:484:1:489:1 | enter fn dead_code | test.rs:486:9:486:17 | ExprStmt | true |
| test.rs:501:1:515:1 | enter fn labelled_block1 | test.rs:504:9:506:9 | if ... {...} | false |
| test.rs:501:1:515:1 | enter fn labelled_block1 | test.rs:505:13:505:27 | ExprStmt | true |
| test.rs:504:9:506:9 | if ... {...} | test.rs:508:9:510:9 | if ... {...} | false |
| test.rs:504:9:506:9 | if ... {...} | test.rs:509:13:509:27 | ExprStmt | true |
joinBlockPredecessor
| test.rs:19:9:23:9 | if ... {...} else {...} | test.rs:20:13:20:13 | n | 1 |
| test.rs:19:9:23:9 | if ... {...} else {...} | test.rs:22:13:22:13 | 3 | 0 |
@@ -1951,14 +2011,24 @@ joinBlockPredecessor
| test.rs:395:13:395:15 | RangePat | test.rs:394:16:394:16 | 2 | 0 |
| test.rs:396:13:396:13 | _ | test.rs:395:13:395:13 | 5 | 0 |
| test.rs:396:13:396:13 | _ | test.rs:395:13:395:15 | RangePat | 1 |
| test.rs:404:13:404:14 | TupleExpr | test.rs:402:5:407:5 | enter fn test_infinite_loop | 1 |
| test.rs:404:13:404:14 | TupleExpr | test.rs:404:13:404:14 | TupleExpr | 0 |
| test.rs:428:28:433:9 | exit { ... } (normal) | test.rs:429:13:431:13 | if b {...} | 1 |
| test.rs:428:28:433:9 | exit { ... } (normal) | test.rs:430:17:430:41 | ExprStmt | 0 |
| test.rs:450:21:450:48 | if ... {...} | test.rs:450:13:450:49 | ExprStmt | 1 |
| test.rs:450:21:450:48 | if ... {...} | test.rs:450:21:450:48 | [boolean(false)] ! ... | 0 |
| test.rs:486:18:497:5 | 'block: { ... } | test.rs:489:13:489:27 | ExprStmt | 0 |
| test.rs:486:18:497:5 | 'block: { ... } | test.rs:492:9:494:9 | if ... {...} | 2 |
| test.rs:486:18:497:5 | 'block: { ... } | test.rs:493:13:493:27 | ExprStmt | 1 |
| test.rs:502:18:508:5 | 'block: { ... } | test.rs:504:18:504:18 | y | 1 |
| test.rs:502:18:508:5 | 'block: { ... } | test.rs:505:13:505:27 | ExprStmt | 0 |
| test.rs:401:9:404:9 | match 43 { ... } | test.rs:402:13:402:21 | [match(true)] n @ ... | 0 |
| test.rs:401:9:404:9 | match 43 { ... } | test.rs:403:13:403:13 | _ | 1 |
| test.rs:403:13:403:13 | _ | test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern | 2 |
| test.rs:403:13:403:13 | _ | test.rs:402:17:402:17 | 1 | 1 |
| test.rs:403:13:403:13 | _ | test.rs:402:20:402:21 | 10 | 0 |
| test.rs:409:9:412:9 | match a { ... } | test.rs:410:13:410:29 | [match(true)] ref mut n @ ... | 0 |
| test.rs:409:9:412:9 | match a { ... } | test.rs:411:13:411:21 | ref mut n | 1 |
| test.rs:411:13:411:21 | ref mut n | test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref | 2 |
| test.rs:411:13:411:21 | ref mut n | test.rs:410:25:410:25 | 1 | 1 |
| test.rs:411:13:411:21 | ref mut n | test.rs:410:28:410:29 | 10 | 0 |
| test.rs:420:13:420:14 | TupleExpr | test.rs:418:5:423:5 | enter fn test_infinite_loop | 1 |
| test.rs:420:13:420:14 | TupleExpr | test.rs:420:13:420:14 | TupleExpr | 0 |
| test.rs:444:28:449:9 | exit { ... } (normal) | test.rs:445:13:447:13 | if b {...} | 1 |
| test.rs:444:28:449:9 | exit { ... } (normal) | test.rs:446:17:446:41 | ExprStmt | 0 |
| test.rs:466:21:466:48 | if ... {...} | test.rs:466:13:466:49 | ExprStmt | 1 |
| test.rs:466:21:466:48 | if ... {...} | test.rs:466:21:466:48 | [boolean(false)] ! ... | 0 |
| test.rs:502:18:513:5 | 'block: { ... } | test.rs:505:13:505:27 | ExprStmt | 0 |
| test.rs:502:18:513:5 | 'block: { ... } | test.rs:508:9:510:9 | if ... {...} | 2 |
| test.rs:502:18:513:5 | 'block: { ... } | test.rs:509:13:509:27 | ExprStmt | 1 |
| test.rs:518:18:524:5 | 'block: { ... } | test.rs:520:18:520:18 | y | 1 |
| test.rs:518:18:524:5 | 'block: { ... } | test.rs:521:13:521:27 | ExprStmt | 0 |

View File

@@ -11,7 +11,7 @@ query predicate immediateDominator(BasicBlock bb1, BasicBlock bb2) {
}
query predicate controls(ConditionBasicBlock bb1, BasicBlock bb2, SuccessorType t) {
bb1.controls(bb2, t)
bb1.edgeDominates(bb2, t)
}
query predicate successor(ConditionBasicBlock bb1, BasicBlock bb2, SuccessorType t) {

View File

@@ -15,9 +15,9 @@ edges
| test.rs:10:5:13:5 | exit fn method_call (normal) | test.rs:10:5:13:5 | exit fn method_call | |
| test.rs:10:22:13:5 | { ... } | test.rs:10:5:13:5 | exit fn method_call (normal) | |
| test.rs:11:9:11:37 | let ... = ... | test.rs:11:23:11:34 | ...::new | |
| test.rs:11:13:11:19 | map | test.rs:12:9:12:28 | ExprStmt | match |
| test.rs:11:13:11:19 | mut map | test.rs:12:9:12:28 | ExprStmt | match |
| test.rs:11:23:11:34 | ...::new | test.rs:11:23:11:36 | ...::new(...) | |
| test.rs:11:23:11:36 | ...::new(...) | test.rs:11:13:11:19 | map | |
| test.rs:11:23:11:36 | ...::new(...) | test.rs:11:13:11:19 | mut map | |
| test.rs:12:9:12:11 | map | test.rs:12:20:12:21 | 37 | |
| test.rs:12:9:12:27 | map.insert(...) | test.rs:10:22:13:5 | { ... } | |
| test.rs:12:9:12:28 | ExprStmt | test.rs:12:9:12:11 | map | |
@@ -50,8 +50,8 @@ edges
| test.rs:26:32:26:32 | n | test.rs:26:32:26:37 | ...: i64 | match |
| test.rs:26:32:26:37 | ...: i64 | test.rs:27:9:27:22 | let ... = n | |
| test.rs:27:9:27:22 | let ... = n | test.rs:27:21:27:21 | n | |
| test.rs:27:13:27:17 | i | test.rs:28:9:40:9 | ExprStmt | match |
| test.rs:27:21:27:21 | n | test.rs:27:13:27:17 | i | |
| test.rs:27:13:27:17 | mut i | test.rs:28:9:40:9 | ExprStmt | match |
| test.rs:27:21:27:21 | n | test.rs:27:13:27:17 | mut i | |
| test.rs:28:9:40:9 | ExprStmt | test.rs:29:13:29:24 | ExprStmt | |
| test.rs:28:9:40:9 | loop { ... } | test.rs:41:9:41:20 | ExprStmt | |
| test.rs:28:14:40:9 | { ... } | test.rs:29:13:29:24 | ExprStmt | |
@@ -161,8 +161,8 @@ edges
| test.rs:86:19:86:24 | ...: i64 | test.rs:87:9:87:25 | let ... = true | |
| test.rs:86:27:95:5 | { ... } | test.rs:86:5:95:5 | exit fn test_while (normal) | |
| test.rs:87:9:87:25 | let ... = true | test.rs:87:21:87:24 | true | |
| test.rs:87:13:87:17 | b | test.rs:88:15:88:15 | b | match |
| test.rs:87:21:87:24 | true | test.rs:87:13:87:17 | b | |
| test.rs:87:13:87:17 | mut b | test.rs:88:15:88:15 | b | match |
| test.rs:87:21:87:24 | true | test.rs:87:13:87:17 | mut b | |
| test.rs:88:9:94:9 | while b { ... } | test.rs:86:27:95:5 | { ... } | |
| test.rs:88:15:88:15 | b | test.rs:88:9:94:9 | while b { ... } | false |
| test.rs:88:15:88:15 | b | test.rs:89:13:89:14 | ExprStmt | true |
@@ -185,9 +185,9 @@ edges
| test.rs:97:5:104:5 | exit fn test_while_let (normal) | test.rs:97:5:104:5 | exit fn test_while_let | |
| test.rs:97:25:104:5 | { ... } | test.rs:97:5:104:5 | exit fn test_while_let (normal) | |
| test.rs:98:9:98:29 | let ... = ... | test.rs:98:24:98:24 | 1 | |
| test.rs:98:13:98:20 | iter | test.rs:99:15:99:39 | let ... = ... | match |
| test.rs:98:13:98:20 | mut iter | test.rs:99:15:99:39 | let ... = ... | match |
| test.rs:98:24:98:24 | 1 | test.rs:98:27:98:28 | 10 | |
| test.rs:98:24:98:28 | 1..10 | test.rs:98:13:98:20 | iter | |
| test.rs:98:24:98:28 | 1..10 | test.rs:98:13:98:20 | mut iter | |
| test.rs:98:27:98:28 | 10 | test.rs:98:24:98:28 | 1..10 | |
| test.rs:99:9:103:9 | while ... { ... } | test.rs:97:25:104:5 | { ... } | |
| test.rs:99:15:99:39 | let ... = ... | test.rs:99:29:99:32 | iter | |
@@ -273,8 +273,8 @@ edges
| test.rs:137:29:137:35 | ...: bool | test.rs:138:9:138:22 | let ... = 3 | |
| test.rs:137:45:143:5 | { ... } | test.rs:137:5:143:5 | exit fn test_if_without_else (normal) | |
| test.rs:138:9:138:22 | let ... = 3 | test.rs:138:21:138:21 | 3 | |
| test.rs:138:13:138:17 | i | test.rs:139:9:141:9 | ExprStmt | match |
| test.rs:138:21:138:21 | 3 | test.rs:138:13:138:17 | i | |
| test.rs:138:13:138:17 | mut i | test.rs:139:9:141:9 | ExprStmt | match |
| test.rs:138:21:138:21 | 3 | test.rs:138:13:138:17 | mut i | |
| test.rs:139:9:141:9 | ExprStmt | test.rs:139:12:139:12 | b | |
| test.rs:139:9:141:9 | if b {...} | test.rs:142:9:142:9 | i | |
| test.rs:139:12:139:12 | b | test.rs:139:9:141:9 | if b {...} | false |
@@ -442,8 +442,8 @@ edges
| test.rs:201:27:201:32 | ...: i64 | test.rs:202:9:202:26 | let ... = false | |
| test.rs:201:42:211:5 | { ... } | test.rs:201:5:211:5 | exit fn test_if_assignment (normal) | |
| test.rs:202:9:202:26 | let ... = false | test.rs:202:21:202:25 | false | |
| test.rs:202:13:202:17 | x | test.rs:204:13:204:21 | ExprStmt | match |
| test.rs:202:21:202:25 | false | test.rs:202:13:202:17 | x | |
| test.rs:202:13:202:17 | mut x | test.rs:204:13:204:21 | ExprStmt | match |
| test.rs:202:21:202:25 | false | test.rs:202:13:202:17 | mut x | |
| test.rs:203:9:210:9 | if ... {...} else {...} | test.rs:201:42:211:5 | { ... } | |
| test.rs:203:12:206:9 | [boolean(false)] { ... } | test.rs:209:13:209:13 | 0 | false |
| test.rs:203:12:206:9 | [boolean(true)] { ... } | test.rs:207:13:207:13 | 1 | true |
@@ -901,282 +901,329 @@ edges
| test.rs:395:20:395:20 | 3 | test.rs:392:9:397:9 | match 42 { ... } | |
| test.rs:396:13:396:13 | _ | test.rs:396:18:396:18 | 4 | match |
| test.rs:396:18:396:18 | 4 | test.rs:392:9:397:9 | match 42 { ... } | |
| test.rs:402:5:407:5 | enter fn test_infinite_loop | test.rs:403:9:405:9 | ExprStmt | |
| test.rs:403:9:405:9 | ExprStmt | test.rs:404:13:404:14 | TupleExpr | |
| test.rs:403:14:405:9 | { ... } | test.rs:404:13:404:14 | TupleExpr | |
| test.rs:404:13:404:14 | TupleExpr | test.rs:403:14:405:9 | { ... } | |
| test.rs:411:5:413:5 | enter fn say_hello | test.rs:412:9:412:34 | ExprStmt | |
| test.rs:411:5:413:5 | exit fn say_hello (normal) | test.rs:411:5:413:5 | exit fn say_hello | |
| test.rs:411:26:413:5 | { ... } | test.rs:411:5:413:5 | exit fn say_hello (normal) | |
| test.rs:412:9:412:33 | ...::_print | test.rs:412:18:412:32 | "hello, world!\\n" | |
| test.rs:412:9:412:33 | MacroExpr | test.rs:411:26:413:5 | { ... } | |
| test.rs:412:9:412:33 | println!... | test.rs:412:9:412:33 | MacroExpr | |
| test.rs:412:9:412:34 | ExprStmt | test.rs:412:18:412:32 | MacroStmts | |
| test.rs:412:18:412:32 | "hello, world!\\n" | test.rs:412:18:412:32 | FormatArgsExpr | |
| test.rs:412:18:412:32 | ...::_print(...) | test.rs:412:18:412:32 | { ... } | |
| test.rs:412:18:412:32 | ...::format_args_nl!... | test.rs:412:18:412:32 | MacroExpr | |
| test.rs:412:18:412:32 | ExprStmt | test.rs:412:9:412:33 | ...::_print | |
| test.rs:412:18:412:32 | FormatArgsExpr | test.rs:412:18:412:32 | ...::format_args_nl!... | |
| test.rs:412:18:412:32 | MacroExpr | test.rs:412:18:412:32 | ...::_print(...) | |
| test.rs:412:18:412:32 | MacroStmts | test.rs:412:18:412:32 | ExprStmt | |
| test.rs:412:18:412:32 | { ... } | test.rs:412:9:412:33 | println!... | |
| test.rs:415:5:434:5 | enter fn async_block | test.rs:415:26:415:26 | b | |
| test.rs:415:5:434:5 | exit fn async_block (normal) | test.rs:415:5:434:5 | exit fn async_block | |
| test.rs:415:26:415:26 | b | test.rs:415:26:415:32 | ...: bool | match |
| test.rs:415:26:415:32 | ...: bool | test.rs:416:9:418:10 | let ... = ... | |
| test.rs:415:35:434:5 | { ... } | test.rs:415:5:434:5 | exit fn async_block (normal) | |
| test.rs:416:9:418:10 | let ... = ... | test.rs:416:26:418:9 | { ... } | |
| test.rs:416:13:416:22 | say_godbye | test.rs:419:9:421:10 | let ... = ... | match |
| test.rs:416:26:418:9 | enter { ... } | test.rs:417:13:417:42 | ExprStmt | |
| test.rs:416:26:418:9 | exit { ... } (normal) | test.rs:416:26:418:9 | exit { ... } | |
| test.rs:416:26:418:9 | { ... } | test.rs:416:13:416:22 | say_godbye | |
| test.rs:417:13:417:41 | ...::_print | test.rs:417:22:417:40 | "godbye, everyone!\\n" | |
| test.rs:417:13:417:41 | MacroExpr | test.rs:416:26:418:9 | exit { ... } (normal) | |
| test.rs:417:13:417:41 | println!... | test.rs:417:13:417:41 | MacroExpr | |
| test.rs:417:13:417:42 | ExprStmt | test.rs:417:22:417:40 | MacroStmts | |
| test.rs:417:22:417:40 | "godbye, everyone!\\n" | test.rs:417:22:417:40 | FormatArgsExpr | |
| test.rs:417:22:417:40 | ...::_print(...) | test.rs:417:22:417:40 | { ... } | |
| test.rs:417:22:417:40 | ...::format_args_nl!... | test.rs:417:22:417:40 | MacroExpr | |
| test.rs:417:22:417:40 | ExprStmt | test.rs:417:13:417:41 | ...::_print | |
| test.rs:417:22:417:40 | FormatArgsExpr | test.rs:417:22:417:40 | ...::format_args_nl!... | |
| test.rs:417:22:417:40 | MacroExpr | test.rs:417:22:417:40 | ...::_print(...) | |
| test.rs:417:22:417:40 | MacroStmts | test.rs:417:22:417:40 | ExprStmt | |
| test.rs:417:22:417:40 | { ... } | test.rs:417:13:417:41 | println!... | |
| test.rs:419:9:421:10 | let ... = ... | test.rs:419:31:421:9 | { ... } | |
| test.rs:419:13:419:27 | say_how_are_you | test.rs:422:9:422:28 | let ... = ... | match |
| test.rs:419:31:421:9 | enter { ... } | test.rs:420:13:420:37 | ExprStmt | |
| test.rs:419:31:421:9 | exit { ... } (normal) | test.rs:419:31:421:9 | exit { ... } | |
| test.rs:419:31:421:9 | { ... } | test.rs:419:13:419:27 | say_how_are_you | |
| test.rs:420:13:420:36 | ...::_print | test.rs:420:22:420:35 | "how are you?\\n" | |
| test.rs:420:13:420:36 | MacroExpr | test.rs:419:31:421:9 | exit { ... } (normal) | |
| test.rs:420:13:420:36 | println!... | test.rs:420:13:420:36 | MacroExpr | |
| test.rs:420:13:420:37 | ExprStmt | test.rs:420:22:420:35 | MacroStmts | |
| test.rs:420:22:420:35 | "how are you?\\n" | test.rs:420:22:420:35 | FormatArgsExpr | |
| test.rs:420:22:420:35 | ...::_print(...) | test.rs:420:22:420:35 | { ... } | |
| test.rs:420:22:420:35 | ...::format_args_nl!... | test.rs:420:22:420:35 | MacroExpr | |
| test.rs:420:22:420:35 | ExprStmt | test.rs:420:13:420:36 | ...::_print | |
| test.rs:420:22:420:35 | FormatArgsExpr | test.rs:420:22:420:35 | ...::format_args_nl!... | |
| test.rs:420:22:420:35 | MacroExpr | test.rs:420:22:420:35 | ...::_print(...) | |
| test.rs:420:22:420:35 | MacroStmts | test.rs:420:22:420:35 | ExprStmt | |
| test.rs:420:22:420:35 | { ... } | test.rs:420:13:420:36 | println!... | |
| test.rs:422:9:422:28 | let ... = ... | test.rs:422:20:422:27 | { ... } | |
| test.rs:422:13:422:16 | noop | test.rs:423:9:423:26 | ExprStmt | match |
| test.rs:422:20:422:27 | { ... } | test.rs:422:13:422:16 | noop | |
| test.rs:423:9:423:17 | say_hello | test.rs:423:9:423:19 | say_hello(...) | |
| test.rs:423:9:423:19 | say_hello(...) | test.rs:423:9:423:25 | await ... | |
| test.rs:423:9:423:25 | await ... | test.rs:424:9:424:30 | ExprStmt | |
| test.rs:423:9:423:26 | ExprStmt | test.rs:423:9:423:17 | say_hello | |
| test.rs:424:9:424:23 | say_how_are_you | test.rs:424:9:424:29 | await say_how_are_you | |
| test.rs:424:9:424:29 | await say_how_are_you | test.rs:425:9:425:25 | ExprStmt | |
| test.rs:424:9:424:30 | ExprStmt | test.rs:424:9:424:23 | say_how_are_you | |
| test.rs:425:9:425:18 | say_godbye | test.rs:425:9:425:24 | await say_godbye | |
| test.rs:425:9:425:24 | await say_godbye | test.rs:426:9:426:19 | ExprStmt | |
| test.rs:425:9:425:25 | ExprStmt | test.rs:425:9:425:18 | say_godbye | |
| test.rs:426:9:426:12 | noop | test.rs:426:9:426:18 | await noop | |
| test.rs:426:9:426:18 | await noop | test.rs:428:9:433:10 | let ... = ... | |
| test.rs:426:9:426:19 | ExprStmt | test.rs:426:9:426:12 | noop | |
| test.rs:428:9:433:10 | let ... = ... | test.rs:428:22:433:9 | \|...\| ... | |
| test.rs:428:13:428:18 | lambda | test.rs:415:35:434:5 | { ... } | match |
| test.rs:428:22:433:9 | \|...\| ... | test.rs:428:13:428:18 | lambda | |
| test.rs:428:22:433:9 | enter \|...\| ... | test.rs:428:23:428:25 | foo | |
| test.rs:428:22:433:9 | exit \|...\| ... (normal) | test.rs:428:22:433:9 | exit \|...\| ... | |
| test.rs:428:23:428:25 | ... | test.rs:428:28:433:9 | { ... } | |
| test.rs:428:23:428:25 | foo | test.rs:428:23:428:25 | ... | match |
| test.rs:428:28:433:9 | enter { ... } | test.rs:429:13:431:14 | ExprStmt | |
| test.rs:428:28:433:9 | exit { ... } (normal) | test.rs:428:28:433:9 | exit { ... } | |
| test.rs:428:28:433:9 | { ... } | test.rs:428:22:433:9 | exit \|...\| ... (normal) | |
| test.rs:429:13:431:13 | if b {...} | test.rs:432:13:432:15 | foo | |
| test.rs:429:13:431:14 | ExprStmt | test.rs:429:16:429:16 | b | |
| test.rs:429:16:429:16 | b | test.rs:429:13:431:13 | if b {...} | false |
| test.rs:429:16:429:16 | b | test.rs:430:17:430:41 | ExprStmt | true |
| test.rs:430:17:430:40 | return ... | test.rs:428:28:433:9 | exit { ... } (normal) | return |
| test.rs:430:17:430:41 | ExprStmt | test.rs:430:24:430:34 | async_block | |
| test.rs:430:24:430:34 | async_block | test.rs:430:36:430:39 | true | |
| test.rs:430:24:430:40 | async_block(...) | test.rs:430:17:430:40 | return ... | |
| test.rs:430:36:430:39 | true | test.rs:430:24:430:40 | async_block(...) | |
| test.rs:432:13:432:15 | foo | test.rs:428:28:433:9 | exit { ... } (normal) | |
| test.rs:440:5:442:5 | enter fn add_two | test.rs:440:22:440:22 | n | |
| test.rs:440:5:442:5 | exit fn add_two (normal) | test.rs:440:5:442:5 | exit fn add_two | |
| test.rs:440:22:440:22 | n | test.rs:440:22:440:27 | ...: i64 | match |
| test.rs:440:22:440:27 | ...: i64 | test.rs:441:9:441:9 | n | |
| test.rs:440:37:442:5 | { ... } | test.rs:440:5:442:5 | exit fn add_two (normal) | |
| test.rs:441:9:441:9 | n | test.rs:441:13:441:13 | 2 | |
| test.rs:441:9:441:13 | ... + ... | test.rs:440:37:442:5 | { ... } | |
| test.rs:441:13:441:13 | 2 | test.rs:441:9:441:13 | ... + ... | |
| test.rs:446:5:454:5 | enter fn const_block_assert | test.rs:449:9:451:9 | ExprStmt | |
| test.rs:446:5:454:5 | exit fn const_block_assert (normal) | test.rs:446:5:454:5 | exit fn const_block_assert | |
| test.rs:446:41:454:5 | { ... } | test.rs:446:5:454:5 | exit fn const_block_assert (normal) | |
| test.rs:449:9:451:9 | ExprStmt | test.rs:450:13:450:50 | ExprStmt | |
| test.rs:449:9:451:9 | { ... } | test.rs:453:9:453:10 | 42 | |
| test.rs:450:13:450:49 | ...::panic_2021!... | test.rs:450:13:450:49 | MacroExpr | |
| test.rs:450:13:450:49 | ...::panic_explicit | test.rs:450:13:450:49 | ...::panic_explicit(...) | |
| test.rs:450:13:450:49 | ...::panic_explicit(...) | test.rs:450:13:450:49 | { ... } | |
| test.rs:450:13:450:49 | ExprStmt | test.rs:450:13:450:49 | MacroStmts | |
| test.rs:450:13:450:49 | ExprStmt | test.rs:450:13:450:49 | panic_cold_explicit | |
| test.rs:450:13:450:49 | MacroExpr | test.rs:449:9:451:9 | { ... } | |
| test.rs:450:13:450:49 | MacroExpr | test.rs:450:13:450:49 | { ... } | |
| test.rs:450:13:450:49 | MacroStmts | test.rs:450:13:450:49 | fn panic_cold_explicit | |
| test.rs:450:13:450:49 | assert!... | test.rs:450:13:450:49 | MacroExpr | |
| test.rs:450:13:450:49 | enter fn panic_cold_explicit | test.rs:450:13:450:49 | ...::panic_explicit | |
| test.rs:450:13:450:49 | exit fn panic_cold_explicit (normal) | test.rs:450:13:450:49 | exit fn panic_cold_explicit | |
| test.rs:450:13:450:49 | fn panic_cold_explicit | test.rs:450:13:450:49 | ExprStmt | |
| test.rs:450:13:450:49 | panic_cold_explicit | test.rs:450:13:450:49 | panic_cold_explicit(...) | |
| test.rs:450:13:450:49 | panic_cold_explicit(...) | test.rs:450:13:450:49 | { ... } | |
| test.rs:450:13:450:49 | { ... } | test.rs:450:13:450:49 | ...::panic_2021!... | |
| test.rs:450:13:450:49 | { ... } | test.rs:450:13:450:49 | exit fn panic_cold_explicit (normal) | |
| test.rs:450:13:450:49 | { ... } | test.rs:450:21:450:48 | if ... {...} | |
| test.rs:450:13:450:50 | ExprStmt | test.rs:450:21:450:48 | MacroStmts | |
| test.rs:450:21:450:42 | ...::size_of::<...> | test.rs:450:21:450:44 | ...::size_of::<...>(...) | |
| test.rs:450:21:450:44 | ...::size_of::<...>(...) | test.rs:450:48:450:48 | 0 | |
| test.rs:450:21:450:48 | ... > ... | test.rs:450:21:450:48 | [boolean(false)] ! ... | true |
| test.rs:450:21:450:48 | ... > ... | test.rs:450:21:450:48 | [boolean(true)] ! ... | false |
| test.rs:450:21:450:48 | MacroStmts | test.rs:450:21:450:42 | ...::size_of::<...> | |
| test.rs:450:21:450:48 | [boolean(false)] ! ... | test.rs:450:21:450:48 | if ... {...} | false |
| test.rs:450:21:450:48 | [boolean(true)] ! ... | test.rs:450:13:450:49 | ExprStmt | true |
| test.rs:450:21:450:48 | if ... {...} | test.rs:450:21:450:48 | { ... } | |
| test.rs:450:21:450:48 | { ... } | test.rs:450:13:450:49 | assert!... | |
| test.rs:450:48:450:48 | 0 | test.rs:450:21:450:48 | ... > ... | |
| test.rs:453:9:453:10 | 42 | test.rs:446:41:454:5 | { ... } | |
| test.rs:456:5:465:5 | enter fn const_block_panic | test.rs:457:9:457:30 | Const | |
| test.rs:456:5:465:5 | exit fn const_block_panic (normal) | test.rs:456:5:465:5 | exit fn const_block_panic | |
| test.rs:456:35:465:5 | { ... } | test.rs:456:5:465:5 | exit fn const_block_panic (normal) | |
| test.rs:457:9:457:30 | Const | test.rs:458:9:463:9 | ExprStmt | |
| test.rs:458:9:463:9 | ExprStmt | test.rs:458:12:458:16 | false | |
| test.rs:458:9:463:9 | if false {...} | test.rs:464:9:464:9 | N | |
| test.rs:458:12:458:16 | false | test.rs:458:9:463:9 | if false {...} | false |
| test.rs:461:17:461:24 | ...::panic_explicit | test.rs:461:17:461:24 | ...::panic_explicit(...) | |
| test.rs:461:17:461:24 | ...::panic_explicit(...) | test.rs:461:17:461:24 | { ... } | |
| test.rs:461:17:461:24 | enter fn panic_cold_explicit | test.rs:461:17:461:24 | ...::panic_explicit | |
| test.rs:461:17:461:24 | exit fn panic_cold_explicit (normal) | test.rs:461:17:461:24 | exit fn panic_cold_explicit | |
| test.rs:461:17:461:24 | { ... } | test.rs:461:17:461:24 | exit fn panic_cold_explicit (normal) | |
| test.rs:464:9:464:9 | N | test.rs:456:35:465:5 | { ... } | |
| test.rs:468:1:473:1 | enter fn dead_code | test.rs:469:5:471:5 | ExprStmt | |
| test.rs:468:1:473:1 | exit fn dead_code (normal) | test.rs:468:1:473:1 | exit fn dead_code | |
| test.rs:469:5:471:5 | ExprStmt | test.rs:469:9:469:12 | true | |
| test.rs:469:9:469:12 | true | test.rs:470:9:470:17 | ExprStmt | true |
| test.rs:470:9:470:16 | return 0 | test.rs:468:1:473:1 | exit fn dead_code (normal) | return |
| test.rs:470:9:470:17 | ExprStmt | test.rs:470:16:470:16 | 0 | |
| test.rs:470:16:470:16 | 0 | test.rs:470:9:470:16 | return 0 | |
| test.rs:475:1:475:16 | enter fn do_thing | test.rs:475:15:475:16 | { ... } | |
| test.rs:475:1:475:16 | exit fn do_thing (normal) | test.rs:475:1:475:16 | exit fn do_thing | |
| test.rs:475:15:475:16 | { ... } | test.rs:475:1:475:16 | exit fn do_thing (normal) | |
| test.rs:477:1:479:1 | enter fn condition_not_met | test.rs:478:5:478:9 | false | |
| test.rs:477:1:479:1 | exit fn condition_not_met (normal) | test.rs:477:1:479:1 | exit fn condition_not_met | |
| test.rs:477:32:479:1 | { ... } | test.rs:477:1:479:1 | exit fn condition_not_met (normal) | |
| test.rs:478:5:478:9 | false | test.rs:477:32:479:1 | { ... } | |
| test.rs:481:1:481:21 | enter fn do_next_thing | test.rs:481:20:481:21 | { ... } | |
| test.rs:481:1:481:21 | exit fn do_next_thing (normal) | test.rs:481:1:481:21 | exit fn do_next_thing | |
| test.rs:481:20:481:21 | { ... } | test.rs:481:1:481:21 | exit fn do_next_thing (normal) | |
| test.rs:483:1:483:21 | enter fn do_last_thing | test.rs:483:20:483:21 | { ... } | |
| test.rs:483:1:483:21 | exit fn do_last_thing (normal) | test.rs:483:1:483:21 | exit fn do_last_thing | |
| test.rs:483:20:483:21 | { ... } | test.rs:483:1:483:21 | exit fn do_last_thing (normal) | |
| test.rs:485:1:499:1 | enter fn labelled_block1 | test.rs:486:5:497:6 | let ... = ... | |
| test.rs:485:1:499:1 | exit fn labelled_block1 (normal) | test.rs:485:1:499:1 | exit fn labelled_block1 | |
| test.rs:485:29:499:1 | { ... } | test.rs:485:1:499:1 | exit fn labelled_block1 (normal) | |
| test.rs:486:5:497:6 | let ... = ... | test.rs:487:9:487:19 | ExprStmt | |
| test.rs:486:9:486:14 | result | test.rs:498:5:498:10 | result | match |
| test.rs:486:18:497:5 | 'block: { ... } | test.rs:486:9:486:14 | result | |
| test.rs:487:9:487:16 | do_thing | test.rs:487:9:487:18 | do_thing(...) | |
| test.rs:487:9:487:18 | do_thing(...) | test.rs:488:9:490:9 | ExprStmt | |
| test.rs:487:9:487:19 | ExprStmt | test.rs:487:9:487:16 | do_thing | |
| test.rs:488:9:490:9 | ExprStmt | test.rs:488:12:488:28 | condition_not_met | |
| test.rs:488:9:490:9 | if ... {...} | test.rs:491:9:491:24 | ExprStmt | |
| test.rs:488:12:488:28 | condition_not_met | test.rs:488:12:488:30 | condition_not_met(...) | |
| test.rs:488:12:488:30 | condition_not_met(...) | test.rs:488:9:490:9 | if ... {...} | false |
| test.rs:488:12:488:30 | condition_not_met(...) | test.rs:489:13:489:27 | ExprStmt | true |
| test.rs:489:13:489:26 | break ''block 1 | test.rs:486:18:497:5 | 'block: { ... } | break |
| test.rs:489:13:489:27 | ExprStmt | test.rs:489:26:489:26 | 1 | |
| test.rs:489:26:489:26 | 1 | test.rs:489:13:489:26 | break ''block 1 | |
| test.rs:491:9:491:21 | do_next_thing | test.rs:491:9:491:23 | do_next_thing(...) | |
| test.rs:491:9:491:23 | do_next_thing(...) | test.rs:492:9:494:9 | ExprStmt | |
| test.rs:491:9:491:24 | ExprStmt | test.rs:491:9:491:21 | do_next_thing | |
| test.rs:492:9:494:9 | ExprStmt | test.rs:492:12:492:28 | condition_not_met | |
| test.rs:492:9:494:9 | if ... {...} | test.rs:495:9:495:24 | ExprStmt | |
| test.rs:492:12:492:28 | condition_not_met | test.rs:492:12:492:30 | condition_not_met(...) | |
| test.rs:492:12:492:30 | condition_not_met(...) | test.rs:492:9:494:9 | if ... {...} | false |
| test.rs:492:12:492:30 | condition_not_met(...) | test.rs:493:13:493:27 | ExprStmt | true |
| test.rs:493:13:493:26 | break ''block 2 | test.rs:486:18:497:5 | 'block: { ... } | break |
| test.rs:493:13:493:27 | ExprStmt | test.rs:493:26:493:26 | 2 | |
| test.rs:493:26:493:26 | 2 | test.rs:493:13:493:26 | break ''block 2 | |
| test.rs:495:9:495:21 | do_last_thing | test.rs:495:9:495:23 | do_last_thing(...) | |
| test.rs:495:9:495:23 | do_last_thing(...) | test.rs:496:9:496:9 | 3 | |
| test.rs:495:9:495:24 | ExprStmt | test.rs:495:9:495:21 | do_last_thing | |
| test.rs:496:9:496:9 | 3 | test.rs:486:18:497:5 | 'block: { ... } | |
| test.rs:498:5:498:10 | result | test.rs:485:29:499:1 | { ... } | |
| test.rs:501:1:509:1 | enter fn labelled_block2 | test.rs:502:5:508:6 | let ... = ... | |
| test.rs:501:1:509:1 | exit fn labelled_block2 (normal) | test.rs:501:1:509:1 | exit fn labelled_block2 | |
| test.rs:501:22:509:1 | { ... } | test.rs:501:1:509:1 | exit fn labelled_block2 (normal) | |
| test.rs:502:5:508:6 | let ... = ... | test.rs:503:9:503:34 | let ... = None | |
| test.rs:502:9:502:14 | result | test.rs:501:22:509:1 | { ... } | match |
| test.rs:502:18:508:5 | 'block: { ... } | test.rs:502:9:502:14 | result | |
| test.rs:503:9:503:34 | let ... = None | test.rs:503:30:503:33 | None | |
| test.rs:503:13:503:13 | x | test.rs:504:9:506:10 | let ... = x else {...} | match |
| test.rs:503:30:503:33 | None | test.rs:503:13:503:13 | x | |
| test.rs:504:9:506:10 | let ... = x else {...} | test.rs:504:23:504:23 | x | |
| test.rs:504:13:504:19 | Some(...) | test.rs:504:18:504:18 | y | match |
| test.rs:504:13:504:19 | Some(...) | test.rs:505:13:505:27 | ExprStmt | no-match |
| test.rs:504:18:504:18 | y | test.rs:507:9:507:9 | 0 | match |
| test.rs:504:23:504:23 | x | test.rs:504:13:504:19 | Some(...) | |
| test.rs:505:13:505:26 | break ''block 1 | test.rs:502:18:508:5 | 'block: { ... } | break |
| test.rs:400:5:405:5 | enter fn identifier_pattern_with_subpattern | test.rs:401:15:401:16 | 43 | |
| test.rs:400:5:405:5 | exit fn identifier_pattern_with_subpattern (normal) | test.rs:400:5:405:5 | exit fn identifier_pattern_with_subpattern | |
| test.rs:400:52:405:5 | { ... } | test.rs:400:5:405:5 | exit fn identifier_pattern_with_subpattern (normal) | |
| test.rs:401:9:404:9 | match 43 { ... } | test.rs:400:52:405:5 | { ... } | |
| test.rs:401:15:401:16 | 43 | test.rs:402:17:402:21 | RangePat | |
| test.rs:402:13:402:21 | [match(true)] n @ ... | test.rs:402:26:402:26 | 2 | match |
| test.rs:402:17:402:17 | 1 | test.rs:402:17:402:17 | 1 | |
| test.rs:402:17:402:17 | 1 | test.rs:402:20:402:21 | 10 | match |
| test.rs:402:17:402:17 | 1 | test.rs:403:13:403:13 | _ | no-match |
| test.rs:402:17:402:21 | RangePat | test.rs:402:17:402:17 | 1 | match |
| test.rs:402:17:402:21 | RangePat | test.rs:403:13:403:13 | _ | no-match |
| test.rs:402:20:402:21 | 10 | test.rs:402:13:402:21 | [match(true)] n @ ... | match |
| test.rs:402:20:402:21 | 10 | test.rs:402:20:402:21 | 10 | |
| test.rs:402:20:402:21 | 10 | test.rs:403:13:403:13 | _ | no-match |
| test.rs:402:26:402:26 | 2 | test.rs:402:30:402:30 | n | |
| test.rs:402:26:402:30 | ... * ... | test.rs:401:9:404:9 | match 43 { ... } | |
| test.rs:402:30:402:30 | n | test.rs:402:26:402:30 | ... * ... | |
| test.rs:403:13:403:13 | _ | test.rs:403:18:403:18 | 0 | match |
| test.rs:403:18:403:18 | 0 | test.rs:401:9:404:9 | match 43 { ... } | |
| test.rs:407:5:414:5 | enter fn identifier_pattern_with_ref | test.rs:408:9:408:23 | let ... = 10 | |
| test.rs:407:5:414:5 | exit fn identifier_pattern_with_ref (normal) | test.rs:407:5:414:5 | exit fn identifier_pattern_with_ref | |
| test.rs:407:45:414:5 | { ... } | test.rs:407:5:414:5 | exit fn identifier_pattern_with_ref (normal) | |
| test.rs:408:9:408:23 | let ... = 10 | test.rs:408:21:408:22 | 10 | |
| test.rs:408:13:408:17 | mut a | test.rs:409:9:412:10 | ExprStmt | match |
| test.rs:408:21:408:22 | 10 | test.rs:408:13:408:17 | mut a | |
| test.rs:409:9:412:9 | match a { ... } | test.rs:413:9:413:9 | a | |
| test.rs:409:9:412:10 | ExprStmt | test.rs:409:15:409:15 | a | |
| test.rs:409:15:409:15 | a | test.rs:410:25:410:29 | RangePat | |
| test.rs:410:13:410:29 | [match(true)] ref mut n @ ... | test.rs:410:35:410:35 | n | match |
| test.rs:410:25:410:25 | 1 | test.rs:410:25:410:25 | 1 | |
| test.rs:410:25:410:25 | 1 | test.rs:410:28:410:29 | 10 | match |
| test.rs:410:25:410:25 | 1 | test.rs:411:13:411:21 | ref mut n | no-match |
| test.rs:410:25:410:29 | RangePat | test.rs:410:25:410:25 | 1 | match |
| test.rs:410:25:410:29 | RangePat | test.rs:411:13:411:21 | ref mut n | no-match |
| test.rs:410:28:410:29 | 10 | test.rs:410:13:410:29 | [match(true)] ref mut n @ ... | match |
| test.rs:410:28:410:29 | 10 | test.rs:410:28:410:29 | 10 | |
| test.rs:410:28:410:29 | 10 | test.rs:411:13:411:21 | ref mut n | no-match |
| test.rs:410:34:410:35 | * ... | test.rs:410:40:410:41 | 10 | |
| test.rs:410:34:410:41 | ... += ... | test.rs:409:9:412:9 | match a { ... } | |
| test.rs:410:35:410:35 | n | test.rs:410:34:410:35 | * ... | |
| test.rs:410:40:410:41 | 10 | test.rs:410:34:410:41 | ... += ... | |
| test.rs:411:13:411:21 | ref mut n | test.rs:411:27:411:27 | n | match |
| test.rs:411:26:411:27 | * ... | test.rs:411:31:411:31 | 0 | |
| test.rs:411:26:411:31 | ... = ... | test.rs:409:9:412:9 | match a { ... } | |
| test.rs:411:27:411:27 | n | test.rs:411:26:411:27 | * ... | |
| test.rs:411:31:411:31 | 0 | test.rs:411:26:411:31 | ... = ... | |
| test.rs:413:9:413:9 | a | test.rs:407:45:414:5 | { ... } | |
| test.rs:418:5:423:5 | enter fn test_infinite_loop | test.rs:419:9:421:9 | ExprStmt | |
| test.rs:419:9:421:9 | ExprStmt | test.rs:420:13:420:14 | TupleExpr | |
| test.rs:419:14:421:9 | { ... } | test.rs:420:13:420:14 | TupleExpr | |
| test.rs:420:13:420:14 | TupleExpr | test.rs:419:14:421:9 | { ... } | |
| test.rs:427:5:429:5 | enter fn say_hello | test.rs:428:9:428:34 | ExprStmt | |
| test.rs:427:5:429:5 | exit fn say_hello (normal) | test.rs:427:5:429:5 | exit fn say_hello | |
| test.rs:427:26:429:5 | { ... } | test.rs:427:5:429:5 | exit fn say_hello (normal) | |
| test.rs:428:9:428:33 | ...::_print | test.rs:428:18:428:32 | "hello, world!\\n" | |
| test.rs:428:9:428:33 | MacroExpr | test.rs:427:26:429:5 | { ... } | |
| test.rs:428:9:428:33 | println!... | test.rs:428:9:428:33 | MacroExpr | |
| test.rs:428:9:428:34 | ExprStmt | test.rs:428:18:428:32 | MacroStmts | |
| test.rs:428:18:428:32 | "hello, world!\\n" | test.rs:428:18:428:32 | FormatArgsExpr | |
| test.rs:428:18:428:32 | ...::_print(...) | test.rs:428:18:428:32 | { ... } | |
| test.rs:428:18:428:32 | ...::format_args_nl!... | test.rs:428:18:428:32 | MacroExpr | |
| test.rs:428:18:428:32 | ExprStmt | test.rs:428:9:428:33 | ...::_print | |
| test.rs:428:18:428:32 | FormatArgsExpr | test.rs:428:18:428:32 | ...::format_args_nl!... | |
| test.rs:428:18:428:32 | MacroExpr | test.rs:428:18:428:32 | ...::_print(...) | |
| test.rs:428:18:428:32 | MacroStmts | test.rs:428:18:428:32 | ExprStmt | |
| test.rs:428:18:428:32 | { ... } | test.rs:428:9:428:33 | println!... | |
| test.rs:431:5:450:5 | enter fn async_block | test.rs:431:26:431:26 | b | |
| test.rs:431:5:450:5 | exit fn async_block (normal) | test.rs:431:5:450:5 | exit fn async_block | |
| test.rs:431:26:431:26 | b | test.rs:431:26:431:32 | ...: bool | match |
| test.rs:431:26:431:32 | ...: bool | test.rs:432:9:434:10 | let ... = ... | |
| test.rs:431:35:450:5 | { ... } | test.rs:431:5:450:5 | exit fn async_block (normal) | |
| test.rs:432:9:434:10 | let ... = ... | test.rs:432:26:434:9 | { ... } | |
| test.rs:432:13:432:22 | say_godbye | test.rs:435:9:437:10 | let ... = ... | match |
| test.rs:432:26:434:9 | enter { ... } | test.rs:433:13:433:42 | ExprStmt | |
| test.rs:432:26:434:9 | exit { ... } (normal) | test.rs:432:26:434:9 | exit { ... } | |
| test.rs:432:26:434:9 | { ... } | test.rs:432:13:432:22 | say_godbye | |
| test.rs:433:13:433:41 | ...::_print | test.rs:433:22:433:40 | "godbye, everyone!\\n" | |
| test.rs:433:13:433:41 | MacroExpr | test.rs:432:26:434:9 | exit { ... } (normal) | |
| test.rs:433:13:433:41 | println!... | test.rs:433:13:433:41 | MacroExpr | |
| test.rs:433:13:433:42 | ExprStmt | test.rs:433:22:433:40 | MacroStmts | |
| test.rs:433:22:433:40 | "godbye, everyone!\\n" | test.rs:433:22:433:40 | FormatArgsExpr | |
| test.rs:433:22:433:40 | ...::_print(...) | test.rs:433:22:433:40 | { ... } | |
| test.rs:433:22:433:40 | ...::format_args_nl!... | test.rs:433:22:433:40 | MacroExpr | |
| test.rs:433:22:433:40 | ExprStmt | test.rs:433:13:433:41 | ...::_print | |
| test.rs:433:22:433:40 | FormatArgsExpr | test.rs:433:22:433:40 | ...::format_args_nl!... | |
| test.rs:433:22:433:40 | MacroExpr | test.rs:433:22:433:40 | ...::_print(...) | |
| test.rs:433:22:433:40 | MacroStmts | test.rs:433:22:433:40 | ExprStmt | |
| test.rs:433:22:433:40 | { ... } | test.rs:433:13:433:41 | println!... | |
| test.rs:435:9:437:10 | let ... = ... | test.rs:435:31:437:9 | { ... } | |
| test.rs:435:13:435:27 | say_how_are_you | test.rs:438:9:438:28 | let ... = ... | match |
| test.rs:435:31:437:9 | enter { ... } | test.rs:436:13:436:37 | ExprStmt | |
| test.rs:435:31:437:9 | exit { ... } (normal) | test.rs:435:31:437:9 | exit { ... } | |
| test.rs:435:31:437:9 | { ... } | test.rs:435:13:435:27 | say_how_are_you | |
| test.rs:436:13:436:36 | ...::_print | test.rs:436:22:436:35 | "how are you?\\n" | |
| test.rs:436:13:436:36 | MacroExpr | test.rs:435:31:437:9 | exit { ... } (normal) | |
| test.rs:436:13:436:36 | println!... | test.rs:436:13:436:36 | MacroExpr | |
| test.rs:436:13:436:37 | ExprStmt | test.rs:436:22:436:35 | MacroStmts | |
| test.rs:436:22:436:35 | "how are you?\\n" | test.rs:436:22:436:35 | FormatArgsExpr | |
| test.rs:436:22:436:35 | ...::_print(...) | test.rs:436:22:436:35 | { ... } | |
| test.rs:436:22:436:35 | ...::format_args_nl!... | test.rs:436:22:436:35 | MacroExpr | |
| test.rs:436:22:436:35 | ExprStmt | test.rs:436:13:436:36 | ...::_print | |
| test.rs:436:22:436:35 | FormatArgsExpr | test.rs:436:22:436:35 | ...::format_args_nl!... | |
| test.rs:436:22:436:35 | MacroExpr | test.rs:436:22:436:35 | ...::_print(...) | |
| test.rs:436:22:436:35 | MacroStmts | test.rs:436:22:436:35 | ExprStmt | |
| test.rs:436:22:436:35 | { ... } | test.rs:436:13:436:36 | println!... | |
| test.rs:438:9:438:28 | let ... = ... | test.rs:438:20:438:27 | { ... } | |
| test.rs:438:13:438:16 | noop | test.rs:439:9:439:26 | ExprStmt | match |
| test.rs:438:20:438:27 | { ... } | test.rs:438:13:438:16 | noop | |
| test.rs:439:9:439:17 | say_hello | test.rs:439:9:439:19 | say_hello(...) | |
| test.rs:439:9:439:19 | say_hello(...) | test.rs:439:9:439:25 | await ... | |
| test.rs:439:9:439:25 | await ... | test.rs:440:9:440:30 | ExprStmt | |
| test.rs:439:9:439:26 | ExprStmt | test.rs:439:9:439:17 | say_hello | |
| test.rs:440:9:440:23 | say_how_are_you | test.rs:440:9:440:29 | await say_how_are_you | |
| test.rs:440:9:440:29 | await say_how_are_you | test.rs:441:9:441:25 | ExprStmt | |
| test.rs:440:9:440:30 | ExprStmt | test.rs:440:9:440:23 | say_how_are_you | |
| test.rs:441:9:441:18 | say_godbye | test.rs:441:9:441:24 | await say_godbye | |
| test.rs:441:9:441:24 | await say_godbye | test.rs:442:9:442:19 | ExprStmt | |
| test.rs:441:9:441:25 | ExprStmt | test.rs:441:9:441:18 | say_godbye | |
| test.rs:442:9:442:12 | noop | test.rs:442:9:442:18 | await noop | |
| test.rs:442:9:442:18 | await noop | test.rs:444:9:449:10 | let ... = ... | |
| test.rs:442:9:442:19 | ExprStmt | test.rs:442:9:442:12 | noop | |
| test.rs:444:9:449:10 | let ... = ... | test.rs:444:22:449:9 | \|...\| ... | |
| test.rs:444:13:444:18 | lambda | test.rs:431:35:450:5 | { ... } | match |
| test.rs:444:22:449:9 | \|...\| ... | test.rs:444:13:444:18 | lambda | |
| test.rs:444:22:449:9 | enter \|...\| ... | test.rs:444:23:444:25 | foo | |
| test.rs:444:22:449:9 | exit \|...\| ... (normal) | test.rs:444:22:449:9 | exit \|...\| ... | |
| test.rs:444:23:444:25 | ... | test.rs:444:28:449:9 | { ... } | |
| test.rs:444:23:444:25 | foo | test.rs:444:23:444:25 | ... | match |
| test.rs:444:28:449:9 | enter { ... } | test.rs:445:13:447:14 | ExprStmt | |
| test.rs:444:28:449:9 | exit { ... } (normal) | test.rs:444:28:449:9 | exit { ... } | |
| test.rs:444:28:449:9 | { ... } | test.rs:444:22:449:9 | exit \|...\| ... (normal) | |
| test.rs:445:13:447:13 | if b {...} | test.rs:448:13:448:15 | foo | |
| test.rs:445:13:447:14 | ExprStmt | test.rs:445:16:445:16 | b | |
| test.rs:445:16:445:16 | b | test.rs:445:13:447:13 | if b {...} | false |
| test.rs:445:16:445:16 | b | test.rs:446:17:446:41 | ExprStmt | true |
| test.rs:446:17:446:40 | return ... | test.rs:444:28:449:9 | exit { ... } (normal) | return |
| test.rs:446:17:446:41 | ExprStmt | test.rs:446:24:446:34 | async_block | |
| test.rs:446:24:446:34 | async_block | test.rs:446:36:446:39 | true | |
| test.rs:446:24:446:40 | async_block(...) | test.rs:446:17:446:40 | return ... | |
| test.rs:446:36:446:39 | true | test.rs:446:24:446:40 | async_block(...) | |
| test.rs:448:13:448:15 | foo | test.rs:444:28:449:9 | exit { ... } (normal) | |
| test.rs:456:5:458:5 | enter fn add_two | test.rs:456:22:456:22 | n | |
| test.rs:456:5:458:5 | exit fn add_two (normal) | test.rs:456:5:458:5 | exit fn add_two | |
| test.rs:456:22:456:22 | n | test.rs:456:22:456:27 | ...: i64 | match |
| test.rs:456:22:456:27 | ...: i64 | test.rs:457:9:457:9 | n | |
| test.rs:456:37:458:5 | { ... } | test.rs:456:5:458:5 | exit fn add_two (normal) | |
| test.rs:457:9:457:9 | n | test.rs:457:13:457:13 | 2 | |
| test.rs:457:9:457:13 | ... + ... | test.rs:456:37:458:5 | { ... } | |
| test.rs:457:13:457:13 | 2 | test.rs:457:9:457:13 | ... + ... | |
| test.rs:462:5:470:5 | enter fn const_block_assert | test.rs:465:9:467:9 | ExprStmt | |
| test.rs:462:5:470:5 | exit fn const_block_assert (normal) | test.rs:462:5:470:5 | exit fn const_block_assert | |
| test.rs:462:41:470:5 | { ... } | test.rs:462:5:470:5 | exit fn const_block_assert (normal) | |
| test.rs:465:9:467:9 | ExprStmt | test.rs:466:13:466:50 | ExprStmt | |
| test.rs:465:9:467:9 | { ... } | test.rs:469:9:469:10 | 42 | |
| test.rs:466:13:466:49 | ...::panic_2021!... | test.rs:466:13:466:49 | MacroExpr | |
| test.rs:466:13:466:49 | ...::panic_explicit | test.rs:466:13:466:49 | ...::panic_explicit(...) | |
| test.rs:466:13:466:49 | ...::panic_explicit(...) | test.rs:466:13:466:49 | { ... } | |
| test.rs:466:13:466:49 | ExprStmt | test.rs:466:13:466:49 | MacroStmts | |
| test.rs:466:13:466:49 | ExprStmt | test.rs:466:13:466:49 | panic_cold_explicit | |
| test.rs:466:13:466:49 | MacroExpr | test.rs:465:9:467:9 | { ... } | |
| test.rs:466:13:466:49 | MacroExpr | test.rs:466:13:466:49 | { ... } | |
| test.rs:466:13:466:49 | MacroStmts | test.rs:466:13:466:49 | fn panic_cold_explicit | |
| test.rs:466:13:466:49 | assert!... | test.rs:466:13:466:49 | MacroExpr | |
| test.rs:466:13:466:49 | enter fn panic_cold_explicit | test.rs:466:13:466:49 | ...::panic_explicit | |
| test.rs:466:13:466:49 | exit fn panic_cold_explicit (normal) | test.rs:466:13:466:49 | exit fn panic_cold_explicit | |
| test.rs:466:13:466:49 | fn panic_cold_explicit | test.rs:466:13:466:49 | ExprStmt | |
| test.rs:466:13:466:49 | panic_cold_explicit | test.rs:466:13:466:49 | panic_cold_explicit(...) | |
| test.rs:466:13:466:49 | panic_cold_explicit(...) | test.rs:466:13:466:49 | { ... } | |
| test.rs:466:13:466:49 | { ... } | test.rs:466:13:466:49 | ...::panic_2021!... | |
| test.rs:466:13:466:49 | { ... } | test.rs:466:13:466:49 | exit fn panic_cold_explicit (normal) | |
| test.rs:466:13:466:49 | { ... } | test.rs:466:21:466:48 | if ... {...} | |
| test.rs:466:13:466:50 | ExprStmt | test.rs:466:21:466:48 | MacroStmts | |
| test.rs:466:21:466:42 | ...::size_of::<...> | test.rs:466:21:466:44 | ...::size_of::<...>(...) | |
| test.rs:466:21:466:44 | ...::size_of::<...>(...) | test.rs:466:48:466:48 | 0 | |
| test.rs:466:21:466:48 | ... > ... | test.rs:466:21:466:48 | [boolean(false)] ! ... | true |
| test.rs:466:21:466:48 | ... > ... | test.rs:466:21:466:48 | [boolean(true)] ! ... | false |
| test.rs:466:21:466:48 | MacroStmts | test.rs:466:21:466:42 | ...::size_of::<...> | |
| test.rs:466:21:466:48 | [boolean(false)] ! ... | test.rs:466:21:466:48 | if ... {...} | false |
| test.rs:466:21:466:48 | [boolean(true)] ! ... | test.rs:466:13:466:49 | ExprStmt | true |
| test.rs:466:21:466:48 | if ... {...} | test.rs:466:21:466:48 | { ... } | |
| test.rs:466:21:466:48 | { ... } | test.rs:466:13:466:49 | assert!... | |
| test.rs:466:48:466:48 | 0 | test.rs:466:21:466:48 | ... > ... | |
| test.rs:469:9:469:10 | 42 | test.rs:462:41:470:5 | { ... } | |
| test.rs:472:5:481:5 | enter fn const_block_panic | test.rs:473:9:473:30 | Const | |
| test.rs:472:5:481:5 | exit fn const_block_panic (normal) | test.rs:472:5:481:5 | exit fn const_block_panic | |
| test.rs:472:35:481:5 | { ... } | test.rs:472:5:481:5 | exit fn const_block_panic (normal) | |
| test.rs:473:9:473:30 | Const | test.rs:474:9:479:9 | ExprStmt | |
| test.rs:474:9:479:9 | ExprStmt | test.rs:474:12:474:16 | false | |
| test.rs:474:9:479:9 | if false {...} | test.rs:480:9:480:9 | N | |
| test.rs:474:12:474:16 | false | test.rs:474:9:479:9 | if false {...} | false |
| test.rs:477:17:477:24 | ...::panic_explicit | test.rs:477:17:477:24 | ...::panic_explicit(...) | |
| test.rs:477:17:477:24 | ...::panic_explicit(...) | test.rs:477:17:477:24 | { ... } | |
| test.rs:477:17:477:24 | enter fn panic_cold_explicit | test.rs:477:17:477:24 | ...::panic_explicit | |
| test.rs:477:17:477:24 | exit fn panic_cold_explicit (normal) | test.rs:477:17:477:24 | exit fn panic_cold_explicit | |
| test.rs:477:17:477:24 | { ... } | test.rs:477:17:477:24 | exit fn panic_cold_explicit (normal) | |
| test.rs:480:9:480:9 | N | test.rs:472:35:481:5 | { ... } | |
| test.rs:484:1:489:1 | enter fn dead_code | test.rs:485:5:487:5 | ExprStmt | |
| test.rs:484:1:489:1 | exit fn dead_code (normal) | test.rs:484:1:489:1 | exit fn dead_code | |
| test.rs:485:5:487:5 | ExprStmt | test.rs:485:9:485:12 | true | |
| test.rs:485:9:485:12 | true | test.rs:486:9:486:17 | ExprStmt | true |
| test.rs:486:9:486:16 | return 0 | test.rs:484:1:489:1 | exit fn dead_code (normal) | return |
| test.rs:486:9:486:17 | ExprStmt | test.rs:486:16:486:16 | 0 | |
| test.rs:486:16:486:16 | 0 | test.rs:486:9:486:16 | return 0 | |
| test.rs:491:1:491:16 | enter fn do_thing | test.rs:491:15:491:16 | { ... } | |
| test.rs:491:1:491:16 | exit fn do_thing (normal) | test.rs:491:1:491:16 | exit fn do_thing | |
| test.rs:491:15:491:16 | { ... } | test.rs:491:1:491:16 | exit fn do_thing (normal) | |
| test.rs:493:1:495:1 | enter fn condition_not_met | test.rs:494:5:494:9 | false | |
| test.rs:493:1:495:1 | exit fn condition_not_met (normal) | test.rs:493:1:495:1 | exit fn condition_not_met | |
| test.rs:493:32:495:1 | { ... } | test.rs:493:1:495:1 | exit fn condition_not_met (normal) | |
| test.rs:494:5:494:9 | false | test.rs:493:32:495:1 | { ... } | |
| test.rs:497:1:497:21 | enter fn do_next_thing | test.rs:497:20:497:21 | { ... } | |
| test.rs:497:1:497:21 | exit fn do_next_thing (normal) | test.rs:497:1:497:21 | exit fn do_next_thing | |
| test.rs:497:20:497:21 | { ... } | test.rs:497:1:497:21 | exit fn do_next_thing (normal) | |
| test.rs:499:1:499:21 | enter fn do_last_thing | test.rs:499:20:499:21 | { ... } | |
| test.rs:499:1:499:21 | exit fn do_last_thing (normal) | test.rs:499:1:499:21 | exit fn do_last_thing | |
| test.rs:499:20:499:21 | { ... } | test.rs:499:1:499:21 | exit fn do_last_thing (normal) | |
| test.rs:501:1:515:1 | enter fn labelled_block1 | test.rs:502:5:513:6 | let ... = ... | |
| test.rs:501:1:515:1 | exit fn labelled_block1 (normal) | test.rs:501:1:515:1 | exit fn labelled_block1 | |
| test.rs:501:29:515:1 | { ... } | test.rs:501:1:515:1 | exit fn labelled_block1 (normal) | |
| test.rs:502:5:513:6 | let ... = ... | test.rs:503:9:503:19 | ExprStmt | |
| test.rs:502:9:502:14 | result | test.rs:514:5:514:10 | result | match |
| test.rs:502:18:513:5 | 'block: { ... } | test.rs:502:9:502:14 | result | |
| test.rs:503:9:503:16 | do_thing | test.rs:503:9:503:18 | do_thing(...) | |
| test.rs:503:9:503:18 | do_thing(...) | test.rs:504:9:506:9 | ExprStmt | |
| test.rs:503:9:503:19 | ExprStmt | test.rs:503:9:503:16 | do_thing | |
| test.rs:504:9:506:9 | ExprStmt | test.rs:504:12:504:28 | condition_not_met | |
| test.rs:504:9:506:9 | if ... {...} | test.rs:507:9:507:24 | ExprStmt | |
| test.rs:504:12:504:28 | condition_not_met | test.rs:504:12:504:30 | condition_not_met(...) | |
| test.rs:504:12:504:30 | condition_not_met(...) | test.rs:504:9:506:9 | if ... {...} | false |
| test.rs:504:12:504:30 | condition_not_met(...) | test.rs:505:13:505:27 | ExprStmt | true |
| test.rs:505:13:505:26 | break ''block 1 | test.rs:502:18:513:5 | 'block: { ... } | break |
| test.rs:505:13:505:27 | ExprStmt | test.rs:505:26:505:26 | 1 | |
| test.rs:505:26:505:26 | 1 | test.rs:505:13:505:26 | break ''block 1 | |
| test.rs:507:9:507:9 | 0 | test.rs:502:18:508:5 | 'block: { ... } | |
| test.rs:511:1:517:1 | enter fn test_nested_function2 | test.rs:512:5:512:18 | let ... = 0 | |
| test.rs:511:1:517:1 | exit fn test_nested_function2 (normal) | test.rs:511:1:517:1 | exit fn test_nested_function2 | |
| test.rs:511:28:517:1 | { ... } | test.rs:511:1:517:1 | exit fn test_nested_function2 (normal) | |
| test.rs:512:5:512:18 | let ... = 0 | test.rs:512:17:512:17 | 0 | |
| test.rs:512:9:512:13 | x | test.rs:513:5:515:5 | fn nested | match |
| test.rs:512:17:512:17 | 0 | test.rs:512:9:512:13 | x | |
| test.rs:513:5:515:5 | enter fn nested | test.rs:513:15:513:15 | x | |
| test.rs:513:5:515:5 | exit fn nested (normal) | test.rs:513:5:515:5 | exit fn nested | |
| test.rs:513:5:515:5 | fn nested | test.rs:516:5:516:19 | ExprStmt | |
| test.rs:513:15:513:15 | x | test.rs:513:15:513:25 | ...: ... | match |
| test.rs:513:15:513:25 | ...: ... | test.rs:514:9:514:16 | ExprStmt | |
| test.rs:513:28:515:5 | { ... } | test.rs:513:5:515:5 | exit fn nested (normal) | |
| test.rs:514:9:514:10 | * ... | test.rs:514:15:514:15 | 1 | |
| test.rs:514:9:514:15 | ... += ... | test.rs:513:28:515:5 | { ... } | |
| test.rs:514:9:514:16 | ExprStmt | test.rs:514:10:514:10 | x | |
| test.rs:514:10:514:10 | x | test.rs:514:9:514:10 | * ... | |
| test.rs:514:15:514:15 | 1 | test.rs:514:9:514:15 | ... += ... | |
| test.rs:516:5:516:10 | nested | test.rs:516:17:516:17 | x | |
| test.rs:516:5:516:18 | nested(...) | test.rs:511:28:517:1 | { ... } | |
| test.rs:516:5:516:19 | ExprStmt | test.rs:516:5:516:10 | nested | |
| test.rs:516:12:516:17 | &mut x | test.rs:516:5:516:18 | nested(...) | |
| test.rs:516:17:516:17 | x | test.rs:516:12:516:17 | &mut x | |
| test.rs:528:5:530:5 | enter fn new | test.rs:528:12:528:12 | a | |
| test.rs:528:5:530:5 | exit fn new (normal) | test.rs:528:5:530:5 | exit fn new | |
| test.rs:528:12:528:12 | a | test.rs:528:12:528:17 | ...: i64 | match |
| test.rs:528:12:528:17 | ...: i64 | test.rs:529:23:529:23 | a | |
| test.rs:528:28:530:5 | { ... } | test.rs:528:5:530:5 | exit fn new (normal) | |
| test.rs:529:9:529:25 | MyNumber {...} | test.rs:528:28:530:5 | { ... } | |
| test.rs:529:23:529:23 | a | test.rs:529:9:529:25 | MyNumber {...} | |
| test.rs:532:5:534:5 | enter fn negated | test.rs:532:16:532:19 | self | |
| test.rs:532:5:534:5 | exit fn negated (normal) | test.rs:532:5:534:5 | exit fn negated | |
| test.rs:532:16:532:19 | SelfParam | test.rs:533:23:533:26 | self | |
| test.rs:532:16:532:19 | self | test.rs:532:16:532:19 | SelfParam | |
| test.rs:532:30:534:5 | { ... } | test.rs:532:5:534:5 | exit fn negated (normal) | |
| test.rs:533:9:533:30 | MyNumber {...} | test.rs:532:30:534:5 | { ... } | |
| test.rs:533:23:533:26 | self | test.rs:533:23:533:28 | self.n | |
| test.rs:533:23:533:28 | self.n | test.rs:533:9:533:30 | MyNumber {...} | |
| test.rs:536:5:538:5 | enter fn multifly_add | test.rs:536:26:536:29 | self | |
| test.rs:536:5:538:5 | exit fn multifly_add (normal) | test.rs:536:5:538:5 | exit fn multifly_add | |
| test.rs:536:21:536:29 | SelfParam | test.rs:536:32:536:32 | a | |
| test.rs:536:26:536:29 | self | test.rs:536:21:536:29 | SelfParam | |
| test.rs:536:32:536:32 | a | test.rs:536:32:536:37 | ...: i64 | match |
| test.rs:536:32:536:37 | ...: i64 | test.rs:536:40:536:40 | b | |
| test.rs:536:40:536:40 | b | test.rs:536:40:536:45 | ...: i64 | match |
| test.rs:536:40:536:45 | ...: i64 | test.rs:537:9:537:34 | ExprStmt | |
| test.rs:536:48:538:5 | { ... } | test.rs:536:5:538:5 | exit fn multifly_add (normal) | |
| test.rs:537:9:537:12 | self | test.rs:537:9:537:14 | self.n | |
| test.rs:537:9:537:14 | self.n | test.rs:537:19:537:22 | self | |
| test.rs:537:9:537:33 | ... = ... | test.rs:536:48:538:5 | { ... } | |
| test.rs:537:9:537:34 | ExprStmt | test.rs:537:9:537:12 | self | |
| test.rs:537:18:537:33 | ... + ... | test.rs:537:9:537:33 | ... = ... | |
| test.rs:537:19:537:22 | self | test.rs:537:19:537:24 | self.n | |
| test.rs:537:19:537:24 | self.n | test.rs:537:28:537:28 | a | |
| test.rs:537:19:537:28 | ... * ... | test.rs:537:33:537:33 | b | |
| test.rs:537:28:537:28 | a | test.rs:537:19:537:28 | ... * ... | |
| test.rs:537:33:537:33 | b | test.rs:537:18:537:33 | ... + ... | |
| test.rs:507:9:507:21 | do_next_thing | test.rs:507:9:507:23 | do_next_thing(...) | |
| test.rs:507:9:507:23 | do_next_thing(...) | test.rs:508:9:510:9 | ExprStmt | |
| test.rs:507:9:507:24 | ExprStmt | test.rs:507:9:507:21 | do_next_thing | |
| test.rs:508:9:510:9 | ExprStmt | test.rs:508:12:508:28 | condition_not_met | |
| test.rs:508:9:510:9 | if ... {...} | test.rs:511:9:511:24 | ExprStmt | |
| test.rs:508:12:508:28 | condition_not_met | test.rs:508:12:508:30 | condition_not_met(...) | |
| test.rs:508:12:508:30 | condition_not_met(...) | test.rs:508:9:510:9 | if ... {...} | false |
| test.rs:508:12:508:30 | condition_not_met(...) | test.rs:509:13:509:27 | ExprStmt | true |
| test.rs:509:13:509:26 | break ''block 2 | test.rs:502:18:513:5 | 'block: { ... } | break |
| test.rs:509:13:509:27 | ExprStmt | test.rs:509:26:509:26 | 2 | |
| test.rs:509:26:509:26 | 2 | test.rs:509:13:509:26 | break ''block 2 | |
| test.rs:511:9:511:21 | do_last_thing | test.rs:511:9:511:23 | do_last_thing(...) | |
| test.rs:511:9:511:23 | do_last_thing(...) | test.rs:512:9:512:9 | 3 | |
| test.rs:511:9:511:24 | ExprStmt | test.rs:511:9:511:21 | do_last_thing | |
| test.rs:512:9:512:9 | 3 | test.rs:502:18:513:5 | 'block: { ... } | |
| test.rs:514:5:514:10 | result | test.rs:501:29:515:1 | { ... } | |
| test.rs:517:1:525:1 | enter fn labelled_block2 | test.rs:518:5:524:6 | let ... = ... | |
| test.rs:517:1:525:1 | exit fn labelled_block2 (normal) | test.rs:517:1:525:1 | exit fn labelled_block2 | |
| test.rs:517:22:525:1 | { ... } | test.rs:517:1:525:1 | exit fn labelled_block2 (normal) | |
| test.rs:518:5:524:6 | let ... = ... | test.rs:519:9:519:34 | let ... = None | |
| test.rs:518:9:518:14 | result | test.rs:517:22:525:1 | { ... } | match |
| test.rs:518:18:524:5 | 'block: { ... } | test.rs:518:9:518:14 | result | |
| test.rs:519:9:519:34 | let ... = None | test.rs:519:30:519:33 | None | |
| test.rs:519:13:519:13 | x | test.rs:520:9:522:10 | let ... = x else {...} | match |
| test.rs:519:30:519:33 | None | test.rs:519:13:519:13 | x | |
| test.rs:520:9:522:10 | let ... = x else {...} | test.rs:520:23:520:23 | x | |
| test.rs:520:13:520:19 | Some(...) | test.rs:520:18:520:18 | y | match |
| test.rs:520:13:520:19 | Some(...) | test.rs:521:13:521:27 | ExprStmt | no-match |
| test.rs:520:18:520:18 | y | test.rs:523:9:523:9 | 0 | match |
| test.rs:520:23:520:23 | x | test.rs:520:13:520:19 | Some(...) | |
| test.rs:521:13:521:26 | break ''block 1 | test.rs:518:18:524:5 | 'block: { ... } | break |
| test.rs:521:13:521:27 | ExprStmt | test.rs:521:26:521:26 | 1 | |
| test.rs:521:26:521:26 | 1 | test.rs:521:13:521:26 | break ''block 1 | |
| test.rs:523:9:523:9 | 0 | test.rs:518:18:524:5 | 'block: { ... } | |
| test.rs:527:1:533:1 | enter fn test_nested_function2 | test.rs:528:5:528:18 | let ... = 0 | |
| test.rs:527:1:533:1 | exit fn test_nested_function2 (normal) | test.rs:527:1:533:1 | exit fn test_nested_function2 | |
| test.rs:527:28:533:1 | { ... } | test.rs:527:1:533:1 | exit fn test_nested_function2 (normal) | |
| test.rs:528:5:528:18 | let ... = 0 | test.rs:528:17:528:17 | 0 | |
| test.rs:528:9:528:13 | mut x | test.rs:529:5:531:5 | fn nested | match |
| test.rs:528:17:528:17 | 0 | test.rs:528:9:528:13 | mut x | |
| test.rs:529:5:531:5 | enter fn nested | test.rs:529:15:529:15 | x | |
| test.rs:529:5:531:5 | exit fn nested (normal) | test.rs:529:5:531:5 | exit fn nested | |
| test.rs:529:5:531:5 | fn nested | test.rs:532:5:532:19 | ExprStmt | |
| test.rs:529:15:529:15 | x | test.rs:529:15:529:25 | ...: ... | match |
| test.rs:529:15:529:25 | ...: ... | test.rs:530:9:530:16 | ExprStmt | |
| test.rs:529:28:531:5 | { ... } | test.rs:529:5:531:5 | exit fn nested (normal) | |
| test.rs:530:9:530:10 | * ... | test.rs:530:15:530:15 | 1 | |
| test.rs:530:9:530:15 | ... += ... | test.rs:529:28:531:5 | { ... } | |
| test.rs:530:9:530:16 | ExprStmt | test.rs:530:10:530:10 | x | |
| test.rs:530:10:530:10 | x | test.rs:530:9:530:10 | * ... | |
| test.rs:530:15:530:15 | 1 | test.rs:530:9:530:15 | ... += ... | |
| test.rs:532:5:532:10 | nested | test.rs:532:17:532:17 | x | |
| test.rs:532:5:532:18 | nested(...) | test.rs:527:28:533:1 | { ... } | |
| test.rs:532:5:532:19 | ExprStmt | test.rs:532:5:532:10 | nested | |
| test.rs:532:12:532:17 | &mut x | test.rs:532:5:532:18 | nested(...) | |
| test.rs:532:17:532:17 | x | test.rs:532:12:532:17 | &mut x | |
| test.rs:544:5:546:5 | enter fn new | test.rs:544:12:544:12 | a | |
| test.rs:544:5:546:5 | exit fn new (normal) | test.rs:544:5:546:5 | exit fn new | |
| test.rs:544:12:544:12 | a | test.rs:544:12:544:17 | ...: i64 | match |
| test.rs:544:12:544:17 | ...: i64 | test.rs:545:23:545:23 | a | |
| test.rs:544:28:546:5 | { ... } | test.rs:544:5:546:5 | exit fn new (normal) | |
| test.rs:545:9:545:25 | MyNumber {...} | test.rs:544:28:546:5 | { ... } | |
| test.rs:545:23:545:23 | a | test.rs:545:9:545:25 | MyNumber {...} | |
| test.rs:548:5:550:5 | enter fn negated | test.rs:548:16:548:19 | self | |
| test.rs:548:5:550:5 | exit fn negated (normal) | test.rs:548:5:550:5 | exit fn negated | |
| test.rs:548:16:548:19 | SelfParam | test.rs:549:23:549:26 | self | |
| test.rs:548:16:548:19 | self | test.rs:548:16:548:19 | SelfParam | |
| test.rs:548:30:550:5 | { ... } | test.rs:548:5:550:5 | exit fn negated (normal) | |
| test.rs:549:9:549:30 | MyNumber {...} | test.rs:548:30:550:5 | { ... } | |
| test.rs:549:23:549:26 | self | test.rs:549:23:549:28 | self.n | |
| test.rs:549:23:549:28 | self.n | test.rs:549:9:549:30 | MyNumber {...} | |
| test.rs:552:5:554:5 | enter fn multifly_add | test.rs:552:26:552:29 | self | |
| test.rs:552:5:554:5 | exit fn multifly_add (normal) | test.rs:552:5:554:5 | exit fn multifly_add | |
| test.rs:552:21:552:29 | SelfParam | test.rs:552:32:552:32 | a | |
| test.rs:552:26:552:29 | self | test.rs:552:21:552:29 | SelfParam | |
| test.rs:552:32:552:32 | a | test.rs:552:32:552:37 | ...: i64 | match |
| test.rs:552:32:552:37 | ...: i64 | test.rs:552:40:552:40 | b | |
| test.rs:552:40:552:40 | b | test.rs:552:40:552:45 | ...: i64 | match |
| test.rs:552:40:552:45 | ...: i64 | test.rs:553:9:553:34 | ExprStmt | |
| test.rs:552:48:554:5 | { ... } | test.rs:552:5:554:5 | exit fn multifly_add (normal) | |
| test.rs:553:9:553:12 | self | test.rs:553:9:553:14 | self.n | |
| test.rs:553:9:553:14 | self.n | test.rs:553:19:553:22 | self | |
| test.rs:553:9:553:33 | ... = ... | test.rs:552:48:554:5 | { ... } | |
| test.rs:553:9:553:34 | ExprStmt | test.rs:553:9:553:12 | self | |
| test.rs:553:18:553:33 | ... + ... | test.rs:553:9:553:33 | ... = ... | |
| test.rs:553:19:553:22 | self | test.rs:553:19:553:24 | self.n | |
| test.rs:553:19:553:24 | self.n | test.rs:553:28:553:28 | a | |
| test.rs:553:19:553:28 | ... * ... | test.rs:553:33:553:33 | b | |
| test.rs:553:28:553:28 | a | test.rs:553:19:553:28 | ... * ... | |
| test.rs:553:33:553:33 | b | test.rs:553:18:553:33 | ... + ... | |
breakTarget
| test.rs:34:17:34:21 | break | test.rs:28:9:40:9 | loop { ... } |
| test.rs:48:21:48:25 | break | test.rs:46:13:53:13 | 'inner: loop { ... } |
@@ -1189,9 +1236,9 @@ breakTarget
| test.rs:216:17:216:28 | break ... | test.rs:214:13:219:9 | loop { ... } |
| test.rs:229:17:229:35 | break ''label ... | test.rs:227:13:232:9 | 'label: loop { ... } |
| test.rs:241:13:241:30 | break ''block ... | test.rs:240:13:242:9 | 'block: { ... } |
| test.rs:489:13:489:26 | break ''block 1 | test.rs:486:18:497:5 | 'block: { ... } |
| test.rs:493:13:493:26 | break ''block 2 | test.rs:486:18:497:5 | 'block: { ... } |
| test.rs:505:13:505:26 | break ''block 1 | test.rs:502:18:508:5 | 'block: { ... } |
| test.rs:505:13:505:26 | break ''block 1 | test.rs:502:18:513:5 | 'block: { ... } |
| test.rs:509:13:509:26 | break ''block 2 | test.rs:502:18:513:5 | 'block: { ... } |
| test.rs:521:13:521:26 | break ''block 1 | test.rs:518:18:524:5 | 'block: { ... } |
continueTarget
| test.rs:37:17:37:24 | continue | test.rs:28:9:40:9 | loop { ... } |
| test.rs:63:21:63:28 | continue | test.rs:61:13:68:13 | 'inner: loop { ... } |

View File

@@ -396,6 +396,22 @@ mod patterns {
_ => 4,
}
}
fn identifier_pattern_with_subpattern() -> i64 {
match 43 {
n @ 1..10 => 2 * n,
_ => 0,
}
}
fn identifier_pattern_with_ref() -> i64 {
let mut a = 10;
match a {
ref mut n @ 1..10 => *n += 10,
ref mut n => *n = 0,
};
a
}
}
mod divergence {

View File

@@ -42,6 +42,17 @@ edges
| main.rs:101:13:101:30 | mn.data_through(...) | main.rs:101:9:101:9 | b | provenance | |
| main.rs:101:29:101:29 | a | main.rs:77:28:77:33 | ...: i64 | provenance | |
| main.rs:101:29:101:29 | a | main.rs:101:13:101:30 | mn.data_through(...) | provenance | |
| main.rs:138:9:138:9 | a | main.rs:139:10:139:10 | a | provenance | |
| main.rs:138:13:138:21 | source(...) | main.rs:138:9:138:9 | a | provenance | |
| main.rs:148:13:148:13 | c | main.rs:149:14:149:14 | c | provenance | |
| main.rs:148:17:148:25 | source(...) | main.rs:148:13:148:13 | c | provenance | |
| main.rs:164:25:164:30 | ...: i64 | main.rs:165:10:165:10 | c | provenance | |
| main.rs:165:6:165:6 | [post] n [&ref] | main.rs:164:12:164:22 | ...: ... [Return] [&ref] | provenance | |
| main.rs:165:10:165:10 | c | main.rs:165:6:165:6 | [post] n [&ref] | provenance | |
| main.rs:173:13:173:13 | [post] m [&ref] | main.rs:174:11:174:11 | m [&ref] | provenance | |
| main.rs:173:16:173:25 | source(...) | main.rs:164:25:164:30 | ...: i64 | provenance | |
| main.rs:173:16:173:25 | source(...) | main.rs:173:13:173:13 | [post] m [&ref] | provenance | |
| main.rs:174:11:174:11 | m [&ref] | main.rs:174:10:174:11 | * ... | provenance | |
nodes
| main.rs:12:28:14:1 | { ... } | semmle.label | { ... } |
| main.rs:13:5:13:13 | source(...) | semmle.label | source(...) |
@@ -92,11 +103,26 @@ nodes
| main.rs:101:13:101:30 | mn.data_through(...) | semmle.label | mn.data_through(...) |
| main.rs:101:29:101:29 | a | semmle.label | a |
| main.rs:102:10:102:10 | b | semmle.label | b |
| main.rs:138:9:138:9 | a | semmle.label | a |
| main.rs:138:13:138:21 | source(...) | semmle.label | source(...) |
| main.rs:139:10:139:10 | a | semmle.label | a |
| main.rs:148:13:148:13 | c | semmle.label | c |
| main.rs:148:17:148:25 | source(...) | semmle.label | source(...) |
| main.rs:149:14:149:14 | c | semmle.label | c |
| main.rs:164:12:164:22 | ...: ... [Return] [&ref] | semmle.label | ...: ... [Return] [&ref] |
| main.rs:164:25:164:30 | ...: i64 | semmle.label | ...: i64 |
| main.rs:165:6:165:6 | [post] n [&ref] | semmle.label | [post] n [&ref] |
| main.rs:165:10:165:10 | c | semmle.label | c |
| main.rs:173:13:173:13 | [post] m [&ref] | semmle.label | [post] m [&ref] |
| main.rs:173:16:173:25 | source(...) | semmle.label | source(...) |
| main.rs:174:10:174:11 | * ... | semmle.label | * ... |
| main.rs:174:11:174:11 | m [&ref] | semmle.label | m [&ref] |
subpaths
| main.rs:36:26:36:26 | a | main.rs:30:17:30:22 | ...: i64 | main.rs:30:32:32:1 | { ... } | main.rs:36:13:36:27 | pass_through(...) |
| main.rs:41:26:44:5 | { ... } | main.rs:30:17:30:22 | ...: i64 | main.rs:30:32:32:1 | { ... } | main.rs:41:13:44:6 | pass_through(...) |
| main.rs:55:26:55:26 | a | main.rs:51:21:51:26 | ...: i64 | main.rs:51:36:53:5 | { ... } | main.rs:55:13:55:27 | pass_through(...) |
| main.rs:101:29:101:29 | a | main.rs:77:28:77:33 | ...: i64 | main.rs:77:43:83:5 | { ... } | main.rs:101:13:101:30 | mn.data_through(...) |
| main.rs:173:16:173:25 | source(...) | main.rs:164:25:164:30 | ...: i64 | main.rs:164:12:164:22 | ...: ... [Return] [&ref] | main.rs:173:13:173:13 | [post] m [&ref] |
testFailures
#select
| main.rs:18:10:18:10 | a | main.rs:13:5:13:13 | source(...) | main.rs:18:10:18:10 | a | $@ | main.rs:13:5:13:13 | source(...) | source(...) |
@@ -107,3 +133,6 @@ testFailures
| main.rs:68:14:68:14 | n | main.rs:94:13:94:21 | source(...) | main.rs:68:14:68:14 | n | $@ | main.rs:94:13:94:21 | source(...) | source(...) |
| main.rs:89:10:89:10 | a | main.rs:74:13:74:21 | source(...) | main.rs:89:10:89:10 | a | $@ | main.rs:74:13:74:21 | source(...) | source(...) |
| main.rs:102:10:102:10 | b | main.rs:100:13:100:21 | source(...) | main.rs:102:10:102:10 | b | $@ | main.rs:100:13:100:21 | source(...) | source(...) |
| main.rs:139:10:139:10 | a | main.rs:138:13:138:21 | source(...) | main.rs:139:10:139:10 | a | $@ | main.rs:138:13:138:21 | source(...) | source(...) |
| main.rs:149:14:149:14 | c | main.rs:148:17:148:25 | source(...) | main.rs:149:14:149:14 | c | $@ | main.rs:148:17:148:25 | source(...) | source(...) |
| main.rs:174:10:174:11 | * ... | main.rs:173:16:173:25 | source(...) | main.rs:174:10:174:11 | * ... | $@ | main.rs:173:16:173:25 | source(...) | source(...) |

View File

@@ -134,6 +134,54 @@ pub fn test_operator_overloading() {
sink(d.value); // $ MISSING: hasValueFlow=7
}
async fn async_source() -> i64 {
let a = source(1);
sink(a); // $ hasValueFlow=1
a
}
async fn test_async_await_async_part() {
let a = async_source().await;
sink(a); // $ MISSING: hasValueFlow=1
let b = async {
let c = source(2);
sink(c); // $ hasValueFlow=2
c
};
sink(b.await); // $ MISSING: hasValueFlow=2
}
fn test_async_await() {
let a = futures::executor::block_on(async_source());
sink(a); // $ MISSING: hasValueFlow=1
futures::executor::block_on(test_async_await_async_part());
}
// Flow out of mutable parameters.
fn set_int(n: &mut i64, c: i64) {
*n = c;
}
fn mutates_argument_1() {
// Passing an already borrowed value to a function and then reading from the same borrow.
let mut n = 0;
let m = &mut n;
sink(*m);
set_int(m, source(37));
sink(*m); // $ hasValueFlow=37
}
fn mutates_argument_2() {
// Borrowing at the call and then reading from the unborrowed variable.
let mut n = 0;
sink(n);
set_int(&mut n, source(88));
sink(n); // $ MISSING: hasValueFlow=88
}
fn main() {
data_out_of_call();
data_in_to_call();
@@ -145,4 +193,7 @@ fn main() {
data_through_method();
test_operator_overloading();
test_async_await();
mutates_argument_1();
mutates_argument_2();
}

View File

@@ -0,0 +1,3 @@
qltest_cargo_check: true
qltest_dependencies:
- futures = { version = "0.3" }

View File

@@ -29,11 +29,32 @@
| main.rs:131:28:131:36 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:133:13:133:20 | a.add(...) | main.rs:114:5:117:5 | fn add |
| main.rs:134:5:134:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:138:5:138:22 | data_out_of_call(...) | main.rs:16:1:19:1 | fn data_out_of_call |
| main.rs:139:5:139:21 | data_in_to_call(...) | main.rs:25:1:28:1 | fn data_in_to_call |
| main.rs:140:5:140:23 | data_through_call(...) | main.rs:34:1:38:1 | fn data_through_call |
| main.rs:141:5:141:34 | data_through_nested_function(...) | main.rs:48:1:57:1 | fn data_through_nested_function |
| main.rs:143:5:143:24 | data_out_of_method(...) | main.rs:86:1:90:1 | fn data_out_of_method |
| main.rs:144:5:144:28 | data_in_to_method_call(...) | main.rs:92:1:96:1 | fn data_in_to_method_call |
| main.rs:145:5:145:25 | data_through_method(...) | main.rs:98:1:103:1 | fn data_through_method |
| main.rs:147:5:147:31 | test_operator_overloading(...) | main.rs:120:1:135:1 | fn test_operator_overloading |
| main.rs:138:13:138:21 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:139:5:139:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:144:13:144:26 | async_source(...) | main.rs:137:1:141:1 | fn async_source |
| main.rs:145:5:145:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:148:17:148:25 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:149:9:149:15 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:152:5:152:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:156:41:156:54 | async_source(...) | main.rs:137:1:141:1 | fn async_source |
| main.rs:157:5:157:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:159:33:159:61 | test_async_await_async_part(...) | main.rs:143:1:153:1 | fn test_async_await_async_part |
| main.rs:172:5:172:12 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:173:5:173:26 | set_int(...) | main.rs:164:1:166:1 | fn set_int |
| main.rs:173:16:173:25 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:174:5:174:12 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:180:5:180:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:181:5:181:31 | set_int(...) | main.rs:164:1:166:1 | fn set_int |
| main.rs:181:21:181:30 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:182:5:182:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:186:5:186:22 | data_out_of_call(...) | main.rs:16:1:19:1 | fn data_out_of_call |
| main.rs:187:5:187:21 | data_in_to_call(...) | main.rs:25:1:28:1 | fn data_in_to_call |
| main.rs:188:5:188:23 | data_through_call(...) | main.rs:34:1:38:1 | fn data_through_call |
| main.rs:189:5:189:34 | data_through_nested_function(...) | main.rs:48:1:57:1 | fn data_through_nested_function |
| main.rs:191:5:191:24 | data_out_of_method(...) | main.rs:86:1:90:1 | fn data_out_of_method |
| main.rs:192:5:192:28 | data_in_to_method_call(...) | main.rs:92:1:96:1 | fn data_in_to_method_call |
| main.rs:193:5:193:25 | data_through_method(...) | main.rs:98:1:103:1 | fn data_through_method |
| main.rs:195:5:195:31 | test_operator_overloading(...) | main.rs:120:1:135:1 | fn test_operator_overloading |
| main.rs:196:5:196:22 | test_async_await(...) | main.rs:155:1:160:1 | fn test_async_await |
| main.rs:197:5:197:24 | mutates_argument_1(...) | main.rs:168:1:175:1 | fn mutates_argument_1 |
| main.rs:198:5:198:24 | mutates_argument_2(...) | main.rs:177:1:183:1 | fn mutates_argument_2 |

View File

@@ -1,2 +1,2 @@
identityLocalStep
| main.rs:425:9:425:20 | phi(default_name) | Node steps to itself |
| main.rs:428:9:428:20 | phi(default_name) | Node steps to itself |

File diff suppressed because it is too large Load Diff

View File

@@ -7,444 +7,464 @@ models
| 6 | Summary: lang:core; <crate::result::Result>::expect; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 7 | Summary: lang:core; <crate::result::Result>::expect_err; Argument[self].Variant[crate::result::Result::Err(0)]; ReturnValue; value |
edges
| main.rs:19:9:19:9 | s | main.rs:20:10:20:10 | s | provenance | |
| main.rs:19:13:19:21 | source(...) | main.rs:19:9:19:9 | s | provenance | |
| main.rs:24:9:24:9 | a | main.rs:26:9:26:9 | c | provenance | |
| main.rs:24:13:24:21 | source(...) | main.rs:24:9:24:9 | a | provenance | |
| main.rs:26:9:26:9 | c | main.rs:27:10:27:10 | c | provenance | |
| main.rs:31:9:31:9 | a | main.rs:32:9:32:9 | b | provenance | |
| main.rs:31:13:31:21 | source(...) | main.rs:31:9:31:9 | a | provenance | |
| main.rs:32:9:32:9 | b | main.rs:36:10:36:10 | b | provenance | |
| main.rs:44:9:44:9 | b | main.rs:47:10:47:10 | b | provenance | |
| main.rs:45:15:45:23 | source(...) | main.rs:44:9:44:9 | b | provenance | |
| main.rs:53:5:53:5 | i | main.rs:54:10:54:10 | i | provenance | |
| main.rs:53:9:53:17 | source(...) | main.rs:53:5:53:5 | i | provenance | |
| main.rs:94:9:94:9 | a [tuple.0] | main.rs:95:10:95:10 | a [tuple.0] | provenance | |
| main.rs:94:13:94:26 | TupleExpr [tuple.0] | main.rs:94:9:94:9 | a [tuple.0] | provenance | |
| main.rs:94:14:94:22 | source(...) | main.rs:94:13:94:26 | TupleExpr [tuple.0] | provenance | |
| main.rs:95:10:95:10 | a [tuple.0] | main.rs:95:10:95:12 | a.0 | provenance | |
| main.rs:100:9:100:9 | a [tuple.1] | main.rs:101:9:101:20 | TuplePat [tuple.1] | provenance | |
| main.rs:100:13:100:30 | TupleExpr [tuple.1] | main.rs:100:9:100:9 | a [tuple.1] | provenance | |
| main.rs:100:17:100:26 | source(...) | main.rs:100:13:100:30 | TupleExpr [tuple.1] | provenance | |
| main.rs:101:9:101:20 | TuplePat [tuple.1] | main.rs:101:14:101:15 | a1 | provenance | |
| main.rs:101:14:101:15 | a1 | main.rs:103:10:103:11 | a1 | provenance | |
| main.rs:108:9:108:13 | a [tuple.1] | main.rs:110:10:110:10 | a [tuple.1] | provenance | |
| main.rs:108:17:108:31 | TupleExpr [tuple.1] | main.rs:108:9:108:13 | a [tuple.1] | provenance | |
| main.rs:108:21:108:30 | source(...) | main.rs:108:17:108:31 | TupleExpr [tuple.1] | provenance | |
| main.rs:110:10:110:10 | a [tuple.1] | main.rs:110:10:110:12 | a.1 | provenance | |
| main.rs:111:5:111:5 | [post] a [tuple.0] | main.rs:112:5:112:5 | a [tuple.0] | provenance | |
| main.rs:111:11:111:20 | source(...) | main.rs:111:5:111:5 | [post] a [tuple.0] | provenance | |
| main.rs:112:5:112:5 | a [tuple.0] | main.rs:113:10:113:10 | a [tuple.0] | provenance | |
| main.rs:113:10:113:10 | a [tuple.0] | main.rs:113:10:113:12 | a.0 | provenance | |
| main.rs:118:9:118:9 | a [tuple.1] | main.rs:119:14:119:14 | a [tuple.1] | provenance | |
| main.rs:118:13:118:27 | TupleExpr [tuple.1] | main.rs:118:9:118:9 | a [tuple.1] | provenance | |
| main.rs:118:17:118:26 | source(...) | main.rs:118:13:118:27 | TupleExpr [tuple.1] | provenance | |
| main.rs:119:9:119:9 | b [tuple.0, tuple.1] | main.rs:121:10:121:10 | b [tuple.0, tuple.1] | provenance | |
| main.rs:119:13:119:18 | TupleExpr [tuple.0, tuple.1] | main.rs:119:9:119:9 | b [tuple.0, tuple.1] | provenance | |
| main.rs:119:14:119:14 | a [tuple.1] | main.rs:119:13:119:18 | TupleExpr [tuple.0, tuple.1] | provenance | |
| main.rs:121:10:121:10 | b [tuple.0, tuple.1] | main.rs:121:10:121:12 | b.0 [tuple.1] | provenance | |
| main.rs:121:10:121:12 | b.0 [tuple.1] | main.rs:121:10:121:15 | ... .1 | provenance | |
| main.rs:147:9:147:9 | p [Point.x] | main.rs:151:9:151:28 | Point {...} [Point.x] | provenance | |
| main.rs:147:13:150:5 | Point {...} [Point.x] | main.rs:147:9:147:9 | p [Point.x] | provenance | |
| main.rs:148:12:148:21 | source(...) | main.rs:147:13:150:5 | Point {...} [Point.x] | provenance | |
| main.rs:151:9:151:28 | Point {...} [Point.x] | main.rs:151:20:151:20 | a | provenance | |
| main.rs:151:20:151:20 | a | main.rs:152:10:152:10 | a | provenance | |
| main.rs:175:9:175:9 | y | main.rs:177:30:177:30 | y | provenance | |
| main.rs:175:13:175:22 | source(...) | main.rs:175:9:175:9 | y | provenance | |
| main.rs:176:9:176:9 | p [Point3D.plane, Point.y] | main.rs:180:11:180:11 | p [Point3D.plane, Point.y] | provenance | |
| main.rs:176:13:179:5 | Point3D {...} [Point3D.plane, Point.y] | main.rs:176:9:176:9 | p [Point3D.plane, Point.y] | provenance | |
| main.rs:177:16:177:32 | Point {...} [Point.y] | main.rs:176:13:179:5 | Point3D {...} [Point3D.plane, Point.y] | provenance | |
| main.rs:177:30:177:30 | y | main.rs:177:16:177:32 | Point {...} [Point.y] | provenance | |
| main.rs:180:11:180:11 | p [Point3D.plane, Point.y] | main.rs:181:9:184:9 | Point3D {...} [Point3D.plane, Point.y] | provenance | |
| main.rs:181:9:184:9 | Point3D {...} [Point3D.plane, Point.y] | main.rs:182:20:182:33 | Point {...} [Point.y] | provenance | |
| main.rs:182:20:182:33 | Point {...} [Point.y] | main.rs:182:31:182:31 | y | provenance | |
| main.rs:182:31:182:31 | y | main.rs:186:18:186:18 | y | provenance | |
| main.rs:195:9:195:9 | s [MyTupleStruct(0)] | main.rs:199:11:199:11 | s [MyTupleStruct(0)] | provenance | |
| main.rs:195:13:195:40 | MyTupleStruct(...) [MyTupleStruct(0)] | main.rs:195:9:195:9 | s [MyTupleStruct(0)] | provenance | |
| main.rs:195:27:195:36 | source(...) | main.rs:195:13:195:40 | MyTupleStruct(...) [MyTupleStruct(0)] | provenance | |
| main.rs:199:11:199:11 | s [MyTupleStruct(0)] | main.rs:200:9:200:27 | MyTupleStruct(...) [MyTupleStruct(0)] | provenance | |
| main.rs:200:9:200:27 | MyTupleStruct(...) [MyTupleStruct(0)] | main.rs:200:23:200:23 | x | provenance | |
| main.rs:200:23:200:23 | x | main.rs:201:18:201:18 | x | provenance | |
| main.rs:211:9:211:10 | s1 [Some] | main.rs:213:11:213:12 | s1 [Some] | provenance | |
| main.rs:211:14:211:37 | ...::Some(...) [Some] | main.rs:211:9:211:10 | s1 [Some] | provenance | |
| main.rs:211:27:211:36 | source(...) | main.rs:211:14:211:37 | ...::Some(...) [Some] | provenance | |
| main.rs:213:11:213:12 | s1 [Some] | main.rs:214:9:214:23 | ...::Some(...) [Some] | provenance | |
| main.rs:214:9:214:23 | ...::Some(...) [Some] | main.rs:214:22:214:22 | n | provenance | |
| main.rs:214:22:214:22 | n | main.rs:214:33:214:33 | n | provenance | |
| main.rs:224:9:224:10 | s1 [Some] | main.rs:226:11:226:12 | s1 [Some] | provenance | |
| main.rs:224:14:224:29 | Some(...) [Some] | main.rs:224:9:224:10 | s1 [Some] | provenance | |
| main.rs:224:19:224:28 | source(...) | main.rs:224:14:224:29 | Some(...) [Some] | provenance | |
| main.rs:226:11:226:12 | s1 [Some] | main.rs:227:9:227:15 | Some(...) [Some] | provenance | |
| main.rs:227:9:227:15 | Some(...) [Some] | main.rs:227:14:227:14 | n | provenance | |
| main.rs:227:14:227:14 | n | main.rs:227:25:227:25 | n | provenance | |
| main.rs:237:9:237:10 | s1 [Some] | main.rs:238:10:238:11 | s1 [Some] | provenance | |
| main.rs:237:14:237:29 | Some(...) [Some] | main.rs:237:9:237:10 | s1 [Some] | provenance | |
| main.rs:237:19:237:28 | source(...) | main.rs:237:14:237:29 | Some(...) [Some] | provenance | |
| main.rs:238:10:238:11 | s1 [Some] | main.rs:238:10:238:20 | s1.unwrap(...) | provenance | MaD:1 |
| main.rs:242:9:242:10 | s1 [Some] | main.rs:243:10:243:11 | s1 [Some] | provenance | |
| main.rs:242:14:242:29 | Some(...) [Some] | main.rs:242:9:242:10 | s1 [Some] | provenance | |
| main.rs:242:19:242:28 | source(...) | main.rs:242:14:242:29 | Some(...) [Some] | provenance | |
| main.rs:243:10:243:11 | s1 [Some] | main.rs:243:10:243:24 | s1.unwrap_or(...) | provenance | MaD:3 |
| main.rs:246:23:246:32 | source(...) | main.rs:246:10:246:33 | s2.unwrap_or(...) | provenance | MaD:2 |
| main.rs:250:9:250:10 | s1 [Some] | main.rs:251:10:251:11 | s1 [Some] | provenance | |
| main.rs:250:14:250:29 | Some(...) [Some] | main.rs:250:9:250:10 | s1 [Some] | provenance | |
| main.rs:250:19:250:28 | source(...) | main.rs:250:14:250:29 | Some(...) [Some] | provenance | |
| main.rs:251:10:251:11 | s1 [Some] | main.rs:251:10:251:32 | s1.unwrap_or_else(...) | provenance | MaD:5 |
| main.rs:254:31:254:40 | source(...) | main.rs:254:10:254:41 | s2.unwrap_or_else(...) | provenance | MaD:4 |
| main.rs:258:9:258:10 | s1 [Some] | main.rs:260:14:260:15 | s1 [Some] | provenance | |
| main.rs:258:14:258:29 | Some(...) [Some] | main.rs:258:9:258:10 | s1 [Some] | provenance | |
| main.rs:258:19:258:28 | source(...) | main.rs:258:14:258:29 | Some(...) [Some] | provenance | |
| main.rs:260:9:260:10 | i1 | main.rs:261:10:261:11 | i1 | provenance | |
| main.rs:260:14:260:15 | s1 [Some] | main.rs:260:14:260:16 | TryExpr | provenance | |
| main.rs:260:14:260:16 | TryExpr | main.rs:260:9:260:10 | i1 | provenance | |
| main.rs:267:9:267:10 | s1 [Ok] | main.rs:270:14:270:15 | s1 [Ok] | provenance | |
| main.rs:267:32:267:45 | Ok(...) [Ok] | main.rs:267:9:267:10 | s1 [Ok] | provenance | |
| main.rs:267:35:267:44 | source(...) | main.rs:267:32:267:45 | Ok(...) [Ok] | provenance | |
| main.rs:270:9:270:10 | i1 | main.rs:272:10:272:11 | i1 | provenance | |
| main.rs:270:14:270:15 | s1 [Ok] | main.rs:270:14:270:16 | TryExpr | provenance | |
| main.rs:270:14:270:16 | TryExpr | main.rs:270:9:270:10 | i1 | provenance | |
| main.rs:280:9:280:10 | s1 [Ok] | main.rs:281:10:281:11 | s1 [Ok] | provenance | |
| main.rs:280:32:280:45 | Ok(...) [Ok] | main.rs:280:9:280:10 | s1 [Ok] | provenance | |
| main.rs:280:35:280:44 | source(...) | main.rs:280:32:280:45 | Ok(...) [Ok] | provenance | |
| main.rs:281:10:281:11 | s1 [Ok] | main.rs:281:10:281:22 | s1.expect(...) | provenance | MaD:6 |
| main.rs:284:9:284:10 | s2 [Err] | main.rs:286:10:286:11 | s2 [Err] | provenance | |
| main.rs:284:32:284:46 | Err(...) [Err] | main.rs:284:9:284:10 | s2 [Err] | provenance | |
| main.rs:284:36:284:45 | source(...) | main.rs:284:32:284:46 | Err(...) [Err] | provenance | |
| main.rs:286:10:286:11 | s2 [Err] | main.rs:286:10:286:26 | s2.expect_err(...) | provenance | MaD:7 |
| main.rs:295:9:295:10 | s1 [A] | main.rs:297:11:297:12 | s1 [A] | provenance | |
| main.rs:295:14:295:39 | ...::A(...) [A] | main.rs:295:9:295:10 | s1 [A] | provenance | |
| main.rs:295:29:295:38 | source(...) | main.rs:295:14:295:39 | ...::A(...) [A] | provenance | |
| main.rs:297:11:297:12 | s1 [A] | main.rs:298:9:298:25 | ...::A(...) [A] | provenance | |
| main.rs:297:11:297:12 | s1 [A] | main.rs:301:11:301:12 | s1 [A] | provenance | |
| main.rs:298:9:298:25 | ...::A(...) [A] | main.rs:298:24:298:24 | n | provenance | |
| main.rs:298:24:298:24 | n | main.rs:298:35:298:35 | n | provenance | |
| main.rs:301:11:301:12 | s1 [A] | main.rs:302:9:302:25 | ...::A(...) [A] | provenance | |
| main.rs:302:9:302:25 | ...::A(...) [A] | main.rs:302:24:302:24 | n | provenance | |
| main.rs:302:24:302:24 | n | main.rs:302:55:302:55 | n | provenance | |
| main.rs:313:9:313:10 | s1 [A] | main.rs:315:11:315:12 | s1 [A] | provenance | |
| main.rs:313:14:313:26 | A(...) [A] | main.rs:313:9:313:10 | s1 [A] | provenance | |
| main.rs:313:16:313:25 | source(...) | main.rs:313:14:313:26 | A(...) [A] | provenance | |
| main.rs:315:11:315:12 | s1 [A] | main.rs:316:9:316:12 | A(...) [A] | provenance | |
| main.rs:315:11:315:12 | s1 [A] | main.rs:319:11:319:12 | s1 [A] | provenance | |
| main.rs:316:9:316:12 | A(...) [A] | main.rs:316:11:316:11 | n | provenance | |
| main.rs:316:11:316:11 | n | main.rs:316:22:316:22 | n | provenance | |
| main.rs:319:11:319:12 | s1 [A] | main.rs:320:9:320:12 | A(...) [A] | provenance | |
| main.rs:320:9:320:12 | A(...) [A] | main.rs:320:11:320:11 | n | provenance | |
| main.rs:320:11:320:11 | n | main.rs:320:29:320:29 | n | provenance | |
| main.rs:334:9:334:10 | s1 [C] | main.rs:338:11:338:12 | s1 [C] | provenance | |
| main.rs:334:14:336:5 | ...::C {...} [C] | main.rs:334:9:334:10 | s1 [C] | provenance | |
| main.rs:335:18:335:27 | source(...) | main.rs:334:14:336:5 | ...::C {...} [C] | provenance | |
| main.rs:338:11:338:12 | s1 [C] | main.rs:339:9:339:38 | ...::C {...} [C] | provenance | |
| main.rs:338:11:338:12 | s1 [C] | main.rs:342:11:342:12 | s1 [C] | provenance | |
| main.rs:339:9:339:38 | ...::C {...} [C] | main.rs:339:36:339:36 | n | provenance | |
| main.rs:339:36:339:36 | n | main.rs:339:48:339:48 | n | provenance | |
| main.rs:342:11:342:12 | s1 [C] | main.rs:343:9:343:38 | ...::C {...} [C] | provenance | |
| main.rs:343:9:343:38 | ...::C {...} [C] | main.rs:343:36:343:36 | n | provenance | |
| main.rs:343:36:343:36 | n | main.rs:343:81:343:81 | n | provenance | |
| main.rs:354:9:354:10 | s1 [C] | main.rs:358:11:358:12 | s1 [C] | provenance | |
| main.rs:354:14:356:5 | C {...} [C] | main.rs:354:9:354:10 | s1 [C] | provenance | |
| main.rs:355:18:355:27 | source(...) | main.rs:354:14:356:5 | C {...} [C] | provenance | |
| main.rs:358:11:358:12 | s1 [C] | main.rs:359:9:359:24 | C {...} [C] | provenance | |
| main.rs:358:11:358:12 | s1 [C] | main.rs:362:11:362:12 | s1 [C] | provenance | |
| main.rs:359:9:359:24 | C {...} [C] | main.rs:359:22:359:22 | n | provenance | |
| main.rs:359:22:359:22 | n | main.rs:359:34:359:34 | n | provenance | |
| main.rs:362:11:362:12 | s1 [C] | main.rs:363:9:363:24 | C {...} [C] | provenance | |
| main.rs:363:9:363:24 | C {...} [C] | main.rs:363:22:363:22 | n | provenance | |
| main.rs:363:22:363:22 | n | main.rs:363:53:363:53 | n | provenance | |
| main.rs:375:9:375:12 | arr1 [element] | main.rs:376:14:376:17 | arr1 [element] | provenance | |
| main.rs:375:16:375:33 | [...] [element] | main.rs:375:9:375:12 | arr1 [element] | provenance | |
| main.rs:375:23:375:32 | source(...) | main.rs:375:16:375:33 | [...] [element] | provenance | |
| main.rs:376:9:376:10 | n1 | main.rs:377:10:377:11 | n1 | provenance | |
| main.rs:376:14:376:17 | arr1 [element] | main.rs:376:14:376:20 | arr1[2] | provenance | |
| main.rs:376:14:376:20 | arr1[2] | main.rs:376:9:376:10 | n1 | provenance | |
| main.rs:379:9:379:12 | arr2 [element] | main.rs:380:14:380:17 | arr2 [element] | provenance | |
| main.rs:379:16:379:31 | [...; 10] [element] | main.rs:379:9:379:12 | arr2 [element] | provenance | |
| main.rs:379:17:379:26 | source(...) | main.rs:379:16:379:31 | [...; 10] [element] | provenance | |
| main.rs:380:9:380:10 | n2 | main.rs:381:10:381:11 | n2 | provenance | |
| main.rs:380:14:380:17 | arr2 [element] | main.rs:380:14:380:20 | arr2[4] | provenance | |
| main.rs:380:14:380:20 | arr2[4] | main.rs:380:9:380:10 | n2 | provenance | |
| main.rs:389:9:389:12 | arr1 [element] | main.rs:390:15:390:18 | arr1 [element] | provenance | |
| main.rs:389:16:389:33 | [...] [element] | main.rs:389:9:389:12 | arr1 [element] | provenance | |
| main.rs:389:23:389:32 | source(...) | main.rs:389:16:389:33 | [...] [element] | provenance | |
| main.rs:390:9:390:10 | n1 | main.rs:391:14:391:15 | n1 | provenance | |
| main.rs:390:15:390:18 | arr1 [element] | main.rs:390:9:390:10 | n1 | provenance | |
| main.rs:401:9:401:12 | arr1 [element] | main.rs:402:11:402:14 | arr1 [element] | provenance | |
| main.rs:401:16:401:33 | [...] [element] | main.rs:401:9:401:12 | arr1 [element] | provenance | |
| main.rs:401:23:401:32 | source(...) | main.rs:401:16:401:33 | [...] [element] | provenance | |
| main.rs:402:11:402:14 | arr1 [element] | main.rs:403:9:403:17 | SlicePat [element] | provenance | |
| main.rs:403:9:403:17 | SlicePat [element] | main.rs:403:10:403:10 | a | provenance | |
| main.rs:403:9:403:17 | SlicePat [element] | main.rs:403:13:403:13 | b | provenance | |
| main.rs:403:9:403:17 | SlicePat [element] | main.rs:403:16:403:16 | c | provenance | |
| main.rs:403:10:403:10 | a | main.rs:404:18:404:18 | a | provenance | |
| main.rs:403:13:403:13 | b | main.rs:405:18:405:18 | b | provenance | |
| main.rs:403:16:403:16 | c | main.rs:406:18:406:18 | c | provenance | |
| main.rs:415:5:415:11 | [post] mut_arr [element] | main.rs:416:13:416:19 | mut_arr [element] | provenance | |
| main.rs:415:5:415:11 | [post] mut_arr [element] | main.rs:418:10:418:16 | mut_arr [element] | provenance | |
| main.rs:415:18:415:27 | source(...) | main.rs:415:5:415:11 | [post] mut_arr [element] | provenance | |
| main.rs:416:9:416:9 | d | main.rs:417:10:417:10 | d | provenance | |
| main.rs:416:13:416:19 | mut_arr [element] | main.rs:416:13:416:22 | mut_arr[1] | provenance | |
| main.rs:416:13:416:22 | mut_arr[1] | main.rs:416:9:416:9 | d | provenance | |
| main.rs:418:10:418:16 | mut_arr [element] | main.rs:418:10:418:19 | mut_arr[0] | provenance | |
| main.rs:441:9:441:9 | s | main.rs:442:10:442:10 | s | provenance | |
| main.rs:441:25:441:26 | source(...) | main.rs:441:9:441:9 | s | provenance | |
| main.rs:22:9:22:9 | s | main.rs:23:10:23:10 | s | provenance | |
| main.rs:22:13:22:21 | source(...) | main.rs:22:9:22:9 | s | provenance | |
| main.rs:27:9:27:9 | a | main.rs:29:9:29:9 | c | provenance | |
| main.rs:27:13:27:21 | source(...) | main.rs:27:9:27:9 | a | provenance | |
| main.rs:29:9:29:9 | c | main.rs:30:10:30:10 | c | provenance | |
| main.rs:34:9:34:9 | a | main.rs:35:9:35:9 | b | provenance | |
| main.rs:34:13:34:21 | source(...) | main.rs:34:9:34:9 | a | provenance | |
| main.rs:35:9:35:9 | b | main.rs:39:10:39:10 | b | provenance | |
| main.rs:47:9:47:9 | b | main.rs:50:10:50:10 | b | provenance | |
| main.rs:48:15:48:23 | source(...) | main.rs:47:9:47:9 | b | provenance | |
| main.rs:56:5:56:5 | i | main.rs:57:10:57:10 | i | provenance | |
| main.rs:56:9:56:17 | source(...) | main.rs:56:5:56:5 | i | provenance | |
| main.rs:97:9:97:9 | a [tuple.0] | main.rs:98:10:98:10 | a [tuple.0] | provenance | |
| main.rs:97:13:97:26 | TupleExpr [tuple.0] | main.rs:97:9:97:9 | a [tuple.0] | provenance | |
| main.rs:97:14:97:22 | source(...) | main.rs:97:13:97:26 | TupleExpr [tuple.0] | provenance | |
| main.rs:98:10:98:10 | a [tuple.0] | main.rs:98:10:98:12 | a.0 | provenance | |
| main.rs:103:9:103:9 | a [tuple.1] | main.rs:104:9:104:20 | TuplePat [tuple.1] | provenance | |
| main.rs:103:13:103:30 | TupleExpr [tuple.1] | main.rs:103:9:103:9 | a [tuple.1] | provenance | |
| main.rs:103:17:103:26 | source(...) | main.rs:103:13:103:30 | TupleExpr [tuple.1] | provenance | |
| main.rs:104:9:104:20 | TuplePat [tuple.1] | main.rs:104:14:104:15 | a1 | provenance | |
| main.rs:104:14:104:15 | a1 | main.rs:106:10:106:11 | a1 | provenance | |
| main.rs:111:9:111:13 | mut a [tuple.1] | main.rs:113:10:113:10 | a [tuple.1] | provenance | |
| main.rs:111:17:111:31 | TupleExpr [tuple.1] | main.rs:111:9:111:13 | mut a [tuple.1] | provenance | |
| main.rs:111:21:111:30 | source(...) | main.rs:111:17:111:31 | TupleExpr [tuple.1] | provenance | |
| main.rs:113:10:113:10 | a [tuple.1] | main.rs:113:10:113:12 | a.1 | provenance | |
| main.rs:114:5:114:5 | [post] a [tuple.0] | main.rs:115:5:115:5 | a [tuple.0] | provenance | |
| main.rs:114:11:114:20 | source(...) | main.rs:114:5:114:5 | [post] a [tuple.0] | provenance | |
| main.rs:115:5:115:5 | a [tuple.0] | main.rs:116:10:116:10 | a [tuple.0] | provenance | |
| main.rs:116:10:116:10 | a [tuple.0] | main.rs:116:10:116:12 | a.0 | provenance | |
| main.rs:121:9:121:9 | a [tuple.1] | main.rs:122:14:122:14 | a [tuple.1] | provenance | |
| main.rs:121:13:121:27 | TupleExpr [tuple.1] | main.rs:121:9:121:9 | a [tuple.1] | provenance | |
| main.rs:121:17:121:26 | source(...) | main.rs:121:13:121:27 | TupleExpr [tuple.1] | provenance | |
| main.rs:122:9:122:9 | b [tuple.0, tuple.1] | main.rs:124:10:124:10 | b [tuple.0, tuple.1] | provenance | |
| main.rs:122:13:122:18 | TupleExpr [tuple.0, tuple.1] | main.rs:122:9:122:9 | b [tuple.0, tuple.1] | provenance | |
| main.rs:122:14:122:14 | a [tuple.1] | main.rs:122:13:122:18 | TupleExpr [tuple.0, tuple.1] | provenance | |
| main.rs:124:10:124:10 | b [tuple.0, tuple.1] | main.rs:124:10:124:12 | b.0 [tuple.1] | provenance | |
| main.rs:124:10:124:12 | b.0 [tuple.1] | main.rs:124:10:124:15 | ... .1 | provenance | |
| main.rs:150:9:150:9 | p [Point.x] | main.rs:154:9:154:28 | Point {...} [Point.x] | provenance | |
| main.rs:150:13:153:5 | Point {...} [Point.x] | main.rs:150:9:150:9 | p [Point.x] | provenance | |
| main.rs:151:12:151:21 | source(...) | main.rs:150:13:153:5 | Point {...} [Point.x] | provenance | |
| main.rs:154:9:154:28 | Point {...} [Point.x] | main.rs:154:20:154:20 | a | provenance | |
| main.rs:154:20:154:20 | a | main.rs:155:10:155:10 | a | provenance | |
| main.rs:178:9:178:9 | y | main.rs:180:30:180:30 | y | provenance | |
| main.rs:178:13:178:22 | source(...) | main.rs:178:9:178:9 | y | provenance | |
| main.rs:179:9:179:9 | p [Point3D.plane, Point.y] | main.rs:183:11:183:11 | p [Point3D.plane, Point.y] | provenance | |
| main.rs:179:13:182:5 | Point3D {...} [Point3D.plane, Point.y] | main.rs:179:9:179:9 | p [Point3D.plane, Point.y] | provenance | |
| main.rs:180:16:180:32 | Point {...} [Point.y] | main.rs:179:13:182:5 | Point3D {...} [Point3D.plane, Point.y] | provenance | |
| main.rs:180:30:180:30 | y | main.rs:180:16:180:32 | Point {...} [Point.y] | provenance | |
| main.rs:183:11:183:11 | p [Point3D.plane, Point.y] | main.rs:184:9:187:9 | Point3D {...} [Point3D.plane, Point.y] | provenance | |
| main.rs:184:9:187:9 | Point3D {...} [Point3D.plane, Point.y] | main.rs:185:20:185:33 | Point {...} [Point.y] | provenance | |
| main.rs:185:20:185:33 | Point {...} [Point.y] | main.rs:185:31:185:31 | y | provenance | |
| main.rs:185:31:185:31 | y | main.rs:189:18:189:18 | y | provenance | |
| main.rs:198:9:198:9 | s [MyTupleStruct(0)] | main.rs:202:11:202:11 | s [MyTupleStruct(0)] | provenance | |
| main.rs:198:13:198:40 | MyTupleStruct(...) [MyTupleStruct(0)] | main.rs:198:9:198:9 | s [MyTupleStruct(0)] | provenance | |
| main.rs:198:27:198:36 | source(...) | main.rs:198:13:198:40 | MyTupleStruct(...) [MyTupleStruct(0)] | provenance | |
| main.rs:202:11:202:11 | s [MyTupleStruct(0)] | main.rs:203:9:203:27 | MyTupleStruct(...) [MyTupleStruct(0)] | provenance | |
| main.rs:203:9:203:27 | MyTupleStruct(...) [MyTupleStruct(0)] | main.rs:203:23:203:23 | x | provenance | |
| main.rs:203:23:203:23 | x | main.rs:204:18:204:18 | x | provenance | |
| main.rs:214:9:214:10 | s1 [Some] | main.rs:216:11:216:12 | s1 [Some] | provenance | |
| main.rs:214:14:214:37 | ...::Some(...) [Some] | main.rs:214:9:214:10 | s1 [Some] | provenance | |
| main.rs:214:27:214:36 | source(...) | main.rs:214:14:214:37 | ...::Some(...) [Some] | provenance | |
| main.rs:216:11:216:12 | s1 [Some] | main.rs:217:9:217:23 | ...::Some(...) [Some] | provenance | |
| main.rs:217:9:217:23 | ...::Some(...) [Some] | main.rs:217:22:217:22 | n | provenance | |
| main.rs:217:22:217:22 | n | main.rs:217:33:217:33 | n | provenance | |
| main.rs:227:9:227:10 | s1 [Some] | main.rs:229:11:229:12 | s1 [Some] | provenance | |
| main.rs:227:14:227:29 | Some(...) [Some] | main.rs:227:9:227:10 | s1 [Some] | provenance | |
| main.rs:227:19:227:28 | source(...) | main.rs:227:14:227:29 | Some(...) [Some] | provenance | |
| main.rs:229:11:229:12 | s1 [Some] | main.rs:230:9:230:15 | Some(...) [Some] | provenance | |
| main.rs:230:9:230:15 | Some(...) [Some] | main.rs:230:14:230:14 | n | provenance | |
| main.rs:230:14:230:14 | n | main.rs:230:25:230:25 | n | provenance | |
| main.rs:240:9:240:10 | s1 [Some] | main.rs:241:10:241:11 | s1 [Some] | provenance | |
| main.rs:240:14:240:29 | Some(...) [Some] | main.rs:240:9:240:10 | s1 [Some] | provenance | |
| main.rs:240:19:240:28 | source(...) | main.rs:240:14:240:29 | Some(...) [Some] | provenance | |
| main.rs:241:10:241:11 | s1 [Some] | main.rs:241:10:241:20 | s1.unwrap(...) | provenance | MaD:1 |
| main.rs:245:9:245:10 | s1 [Some] | main.rs:246:10:246:11 | s1 [Some] | provenance | |
| main.rs:245:14:245:29 | Some(...) [Some] | main.rs:245:9:245:10 | s1 [Some] | provenance | |
| main.rs:245:19:245:28 | source(...) | main.rs:245:14:245:29 | Some(...) [Some] | provenance | |
| main.rs:246:10:246:11 | s1 [Some] | main.rs:246:10:246:24 | s1.unwrap_or(...) | provenance | MaD:3 |
| main.rs:249:23:249:32 | source(...) | main.rs:249:10:249:33 | s2.unwrap_or(...) | provenance | MaD:2 |
| main.rs:253:9:253:10 | s1 [Some] | main.rs:254:10:254:11 | s1 [Some] | provenance | |
| main.rs:253:14:253:29 | Some(...) [Some] | main.rs:253:9:253:10 | s1 [Some] | provenance | |
| main.rs:253:19:253:28 | source(...) | main.rs:253:14:253:29 | Some(...) [Some] | provenance | |
| main.rs:254:10:254:11 | s1 [Some] | main.rs:254:10:254:32 | s1.unwrap_or_else(...) | provenance | MaD:5 |
| main.rs:257:31:257:40 | source(...) | main.rs:257:10:257:41 | s2.unwrap_or_else(...) | provenance | MaD:4 |
| main.rs:261:9:261:10 | s1 [Some] | main.rs:263:14:263:15 | s1 [Some] | provenance | |
| main.rs:261:14:261:29 | Some(...) [Some] | main.rs:261:9:261:10 | s1 [Some] | provenance | |
| main.rs:261:19:261:28 | source(...) | main.rs:261:14:261:29 | Some(...) [Some] | provenance | |
| main.rs:263:9:263:10 | i1 | main.rs:264:10:264:11 | i1 | provenance | |
| main.rs:263:14:263:15 | s1 [Some] | main.rs:263:14:263:16 | TryExpr | provenance | |
| main.rs:263:14:263:16 | TryExpr | main.rs:263:9:263:10 | i1 | provenance | |
| main.rs:270:9:270:10 | s1 [Ok] | main.rs:273:14:273:15 | s1 [Ok] | provenance | |
| main.rs:270:32:270:45 | Ok(...) [Ok] | main.rs:270:9:270:10 | s1 [Ok] | provenance | |
| main.rs:270:35:270:44 | source(...) | main.rs:270:32:270:45 | Ok(...) [Ok] | provenance | |
| main.rs:273:9:273:10 | i1 | main.rs:275:10:275:11 | i1 | provenance | |
| main.rs:273:14:273:15 | s1 [Ok] | main.rs:273:14:273:16 | TryExpr | provenance | |
| main.rs:273:14:273:16 | TryExpr | main.rs:273:9:273:10 | i1 | provenance | |
| main.rs:283:9:283:10 | s1 [Ok] | main.rs:284:10:284:11 | s1 [Ok] | provenance | |
| main.rs:283:32:283:45 | Ok(...) [Ok] | main.rs:283:9:283:10 | s1 [Ok] | provenance | |
| main.rs:283:35:283:44 | source(...) | main.rs:283:32:283:45 | Ok(...) [Ok] | provenance | |
| main.rs:284:10:284:11 | s1 [Ok] | main.rs:284:10:284:22 | s1.expect(...) | provenance | MaD:6 |
| main.rs:287:9:287:10 | s2 [Err] | main.rs:289:10:289:11 | s2 [Err] | provenance | |
| main.rs:287:32:287:46 | Err(...) [Err] | main.rs:287:9:287:10 | s2 [Err] | provenance | |
| main.rs:287:36:287:45 | source(...) | main.rs:287:32:287:46 | Err(...) [Err] | provenance | |
| main.rs:289:10:289:11 | s2 [Err] | main.rs:289:10:289:26 | s2.expect_err(...) | provenance | MaD:7 |
| main.rs:298:9:298:10 | s1 [A] | main.rs:300:11:300:12 | s1 [A] | provenance | |
| main.rs:298:14:298:39 | ...::A(...) [A] | main.rs:298:9:298:10 | s1 [A] | provenance | |
| main.rs:298:29:298:38 | source(...) | main.rs:298:14:298:39 | ...::A(...) [A] | provenance | |
| main.rs:300:11:300:12 | s1 [A] | main.rs:301:9:301:25 | ...::A(...) [A] | provenance | |
| main.rs:300:11:300:12 | s1 [A] | main.rs:304:11:304:12 | s1 [A] | provenance | |
| main.rs:301:9:301:25 | ...::A(...) [A] | main.rs:301:24:301:24 | n | provenance | |
| main.rs:301:24:301:24 | n | main.rs:301:35:301:35 | n | provenance | |
| main.rs:304:11:304:12 | s1 [A] | main.rs:305:9:305:25 | ...::A(...) [A] | provenance | |
| main.rs:305:9:305:25 | ...::A(...) [A] | main.rs:305:24:305:24 | n | provenance | |
| main.rs:305:24:305:24 | n | main.rs:305:55:305:55 | n | provenance | |
| main.rs:316:9:316:10 | s1 [A] | main.rs:318:11:318:12 | s1 [A] | provenance | |
| main.rs:316:14:316:26 | A(...) [A] | main.rs:316:9:316:10 | s1 [A] | provenance | |
| main.rs:316:16:316:25 | source(...) | main.rs:316:14:316:26 | A(...) [A] | provenance | |
| main.rs:318:11:318:12 | s1 [A] | main.rs:319:9:319:12 | A(...) [A] | provenance | |
| main.rs:318:11:318:12 | s1 [A] | main.rs:322:11:322:12 | s1 [A] | provenance | |
| main.rs:319:9:319:12 | A(...) [A] | main.rs:319:11:319:11 | n | provenance | |
| main.rs:319:11:319:11 | n | main.rs:319:22:319:22 | n | provenance | |
| main.rs:322:11:322:12 | s1 [A] | main.rs:323:9:323:12 | A(...) [A] | provenance | |
| main.rs:323:9:323:12 | A(...) [A] | main.rs:323:11:323:11 | n | provenance | |
| main.rs:323:11:323:11 | n | main.rs:323:29:323:29 | n | provenance | |
| main.rs:337:9:337:10 | s1 [C] | main.rs:341:11:341:12 | s1 [C] | provenance | |
| main.rs:337:14:339:5 | ...::C {...} [C] | main.rs:337:9:337:10 | s1 [C] | provenance | |
| main.rs:338:18:338:27 | source(...) | main.rs:337:14:339:5 | ...::C {...} [C] | provenance | |
| main.rs:341:11:341:12 | s1 [C] | main.rs:342:9:342:38 | ...::C {...} [C] | provenance | |
| main.rs:341:11:341:12 | s1 [C] | main.rs:345:11:345:12 | s1 [C] | provenance | |
| main.rs:342:9:342:38 | ...::C {...} [C] | main.rs:342:36:342:36 | n | provenance | |
| main.rs:342:36:342:36 | n | main.rs:342:48:342:48 | n | provenance | |
| main.rs:345:11:345:12 | s1 [C] | main.rs:346:9:346:38 | ...::C {...} [C] | provenance | |
| main.rs:346:9:346:38 | ...::C {...} [C] | main.rs:346:36:346:36 | n | provenance | |
| main.rs:346:36:346:36 | n | main.rs:346:81:346:81 | n | provenance | |
| main.rs:357:9:357:10 | s1 [C] | main.rs:361:11:361:12 | s1 [C] | provenance | |
| main.rs:357:14:359:5 | C {...} [C] | main.rs:357:9:357:10 | s1 [C] | provenance | |
| main.rs:358:18:358:27 | source(...) | main.rs:357:14:359:5 | C {...} [C] | provenance | |
| main.rs:361:11:361:12 | s1 [C] | main.rs:362:9:362:24 | C {...} [C] | provenance | |
| main.rs:361:11:361:12 | s1 [C] | main.rs:365:11:365:12 | s1 [C] | provenance | |
| main.rs:362:9:362:24 | C {...} [C] | main.rs:362:22:362:22 | n | provenance | |
| main.rs:362:22:362:22 | n | main.rs:362:34:362:34 | n | provenance | |
| main.rs:365:11:365:12 | s1 [C] | main.rs:366:9:366:24 | C {...} [C] | provenance | |
| main.rs:366:9:366:24 | C {...} [C] | main.rs:366:22:366:22 | n | provenance | |
| main.rs:366:22:366:22 | n | main.rs:366:53:366:53 | n | provenance | |
| main.rs:378:9:378:12 | arr1 [element] | main.rs:379:14:379:17 | arr1 [element] | provenance | |
| main.rs:378:16:378:33 | [...] [element] | main.rs:378:9:378:12 | arr1 [element] | provenance | |
| main.rs:378:23:378:32 | source(...) | main.rs:378:16:378:33 | [...] [element] | provenance | |
| main.rs:379:9:379:10 | n1 | main.rs:380:10:380:11 | n1 | provenance | |
| main.rs:379:14:379:17 | arr1 [element] | main.rs:379:14:379:20 | arr1[2] | provenance | |
| main.rs:379:14:379:20 | arr1[2] | main.rs:379:9:379:10 | n1 | provenance | |
| main.rs:382:9:382:12 | arr2 [element] | main.rs:383:14:383:17 | arr2 [element] | provenance | |
| main.rs:382:16:382:31 | [...; 10] [element] | main.rs:382:9:382:12 | arr2 [element] | provenance | |
| main.rs:382:17:382:26 | source(...) | main.rs:382:16:382:31 | [...; 10] [element] | provenance | |
| main.rs:383:9:383:10 | n2 | main.rs:384:10:384:11 | n2 | provenance | |
| main.rs:383:14:383:17 | arr2 [element] | main.rs:383:14:383:20 | arr2[4] | provenance | |
| main.rs:383:14:383:20 | arr2[4] | main.rs:383:9:383:10 | n2 | provenance | |
| main.rs:392:9:392:12 | arr1 [element] | main.rs:393:15:393:18 | arr1 [element] | provenance | |
| main.rs:392:16:392:33 | [...] [element] | main.rs:392:9:392:12 | arr1 [element] | provenance | |
| main.rs:392:23:392:32 | source(...) | main.rs:392:16:392:33 | [...] [element] | provenance | |
| main.rs:393:9:393:10 | n1 | main.rs:394:14:394:15 | n1 | provenance | |
| main.rs:393:15:393:18 | arr1 [element] | main.rs:393:9:393:10 | n1 | provenance | |
| main.rs:404:9:404:12 | arr1 [element] | main.rs:405:11:405:14 | arr1 [element] | provenance | |
| main.rs:404:16:404:33 | [...] [element] | main.rs:404:9:404:12 | arr1 [element] | provenance | |
| main.rs:404:23:404:32 | source(...) | main.rs:404:16:404:33 | [...] [element] | provenance | |
| main.rs:405:11:405:14 | arr1 [element] | main.rs:406:9:406:17 | SlicePat [element] | provenance | |
| main.rs:406:9:406:17 | SlicePat [element] | main.rs:406:10:406:10 | a | provenance | |
| main.rs:406:9:406:17 | SlicePat [element] | main.rs:406:13:406:13 | b | provenance | |
| main.rs:406:9:406:17 | SlicePat [element] | main.rs:406:16:406:16 | c | provenance | |
| main.rs:406:10:406:10 | a | main.rs:407:18:407:18 | a | provenance | |
| main.rs:406:13:406:13 | b | main.rs:408:18:408:18 | b | provenance | |
| main.rs:406:16:406:16 | c | main.rs:409:18:409:18 | c | provenance | |
| main.rs:418:5:418:11 | [post] mut_arr [element] | main.rs:419:13:419:19 | mut_arr [element] | provenance | |
| main.rs:418:5:418:11 | [post] mut_arr [element] | main.rs:421:10:421:16 | mut_arr [element] | provenance | |
| main.rs:418:18:418:27 | source(...) | main.rs:418:5:418:11 | [post] mut_arr [element] | provenance | |
| main.rs:419:9:419:9 | d | main.rs:420:10:420:10 | d | provenance | |
| main.rs:419:13:419:19 | mut_arr [element] | main.rs:419:13:419:22 | mut_arr[1] | provenance | |
| main.rs:419:13:419:22 | mut_arr[1] | main.rs:419:9:419:9 | d | provenance | |
| main.rs:421:10:421:16 | mut_arr [element] | main.rs:421:10:421:19 | mut_arr[0] | provenance | |
| main.rs:444:9:444:9 | s | main.rs:445:10:445:10 | s | provenance | |
| main.rs:444:25:444:26 | source(...) | main.rs:444:9:444:9 | s | provenance | |
| main.rs:449:9:449:9 | a | main.rs:454:10:454:10 | a | provenance | |
| main.rs:449:13:449:22 | source(...) | main.rs:449:9:449:9 | a | provenance | |
| main.rs:451:9:451:9 | c | main.rs:452:18:452:18 | c | provenance | |
| main.rs:451:13:451:22 | source(...) | main.rs:451:9:451:9 | c | provenance | |
| main.rs:452:9:452:13 | c_ref [&ref] | main.rs:457:11:457:15 | c_ref [&ref] | provenance | |
| main.rs:452:17:452:18 | &c [&ref] | main.rs:452:9:452:13 | c_ref [&ref] | provenance | |
| main.rs:452:18:452:18 | c | main.rs:452:17:452:18 | &c [&ref] | provenance | |
| main.rs:457:11:457:15 | c_ref [&ref] | main.rs:457:10:457:15 | * ... | provenance | |
nodes
| main.rs:15:10:15:18 | source(...) | semmle.label | source(...) |
| main.rs:19:9:19:9 | s | semmle.label | s |
| main.rs:19:13:19:21 | source(...) | semmle.label | source(...) |
| main.rs:20:10:20:10 | s | semmle.label | s |
| main.rs:24:9:24:9 | a | semmle.label | a |
| main.rs:24:13:24:21 | source(...) | semmle.label | source(...) |
| main.rs:26:9:26:9 | c | semmle.label | c |
| main.rs:27:10:27:10 | c | semmle.label | c |
| main.rs:31:9:31:9 | a | semmle.label | a |
| main.rs:31:13:31:21 | source(...) | semmle.label | source(...) |
| main.rs:32:9:32:9 | b | semmle.label | b |
| main.rs:36:10:36:10 | b | semmle.label | b |
| main.rs:44:9:44:9 | b | semmle.label | b |
| main.rs:45:15:45:23 | source(...) | semmle.label | source(...) |
| main.rs:47:10:47:10 | b | semmle.label | b |
| main.rs:53:5:53:5 | i | semmle.label | i |
| main.rs:53:9:53:17 | source(...) | semmle.label | source(...) |
| main.rs:54:10:54:10 | i | semmle.label | i |
| main.rs:94:9:94:9 | a [tuple.0] | semmle.label | a [tuple.0] |
| main.rs:94:13:94:26 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] |
| main.rs:94:14:94:22 | source(...) | semmle.label | source(...) |
| main.rs:95:10:95:10 | a [tuple.0] | semmle.label | a [tuple.0] |
| main.rs:95:10:95:12 | a.0 | semmle.label | a.0 |
| main.rs:100:9:100:9 | a [tuple.1] | semmle.label | a [tuple.1] |
| main.rs:100:13:100:30 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] |
| main.rs:100:17:100:26 | source(...) | semmle.label | source(...) |
| main.rs:101:9:101:20 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] |
| main.rs:101:14:101:15 | a1 | semmle.label | a1 |
| main.rs:103:10:103:11 | a1 | semmle.label | a1 |
| main.rs:108:9:108:13 | a [tuple.1] | semmle.label | a [tuple.1] |
| main.rs:108:17:108:31 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] |
| main.rs:108:21:108:30 | source(...) | semmle.label | source(...) |
| main.rs:110:10:110:10 | a [tuple.1] | semmle.label | a [tuple.1] |
| main.rs:110:10:110:12 | a.1 | semmle.label | a.1 |
| main.rs:111:5:111:5 | [post] a [tuple.0] | semmle.label | [post] a [tuple.0] |
| main.rs:111:11:111:20 | source(...) | semmle.label | source(...) |
| main.rs:112:5:112:5 | a [tuple.0] | semmle.label | a [tuple.0] |
| main.rs:113:10:113:10 | a [tuple.0] | semmle.label | a [tuple.0] |
| main.rs:113:10:113:12 | a.0 | semmle.label | a.0 |
| main.rs:118:9:118:9 | a [tuple.1] | semmle.label | a [tuple.1] |
| main.rs:118:13:118:27 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] |
| main.rs:118:17:118:26 | source(...) | semmle.label | source(...) |
| main.rs:119:9:119:9 | b [tuple.0, tuple.1] | semmle.label | b [tuple.0, tuple.1] |
| main.rs:119:13:119:18 | TupleExpr [tuple.0, tuple.1] | semmle.label | TupleExpr [tuple.0, tuple.1] |
| main.rs:119:14:119:14 | a [tuple.1] | semmle.label | a [tuple.1] |
| main.rs:121:10:121:10 | b [tuple.0, tuple.1] | semmle.label | b [tuple.0, tuple.1] |
| main.rs:121:10:121:12 | b.0 [tuple.1] | semmle.label | b.0 [tuple.1] |
| main.rs:121:10:121:15 | ... .1 | semmle.label | ... .1 |
| main.rs:147:9:147:9 | p [Point.x] | semmle.label | p [Point.x] |
| main.rs:147:13:150:5 | Point {...} [Point.x] | semmle.label | Point {...} [Point.x] |
| main.rs:148:12:148:21 | source(...) | semmle.label | source(...) |
| main.rs:151:9:151:28 | Point {...} [Point.x] | semmle.label | Point {...} [Point.x] |
| main.rs:151:20:151:20 | a | semmle.label | a |
| main.rs:152:10:152:10 | a | semmle.label | a |
| main.rs:175:9:175:9 | y | semmle.label | y |
| main.rs:175:13:175:22 | source(...) | semmle.label | source(...) |
| main.rs:176:9:176:9 | p [Point3D.plane, Point.y] | semmle.label | p [Point3D.plane, Point.y] |
| main.rs:176:13:179:5 | Point3D {...} [Point3D.plane, Point.y] | semmle.label | Point3D {...} [Point3D.plane, Point.y] |
| main.rs:177:16:177:32 | Point {...} [Point.y] | semmle.label | Point {...} [Point.y] |
| main.rs:177:30:177:30 | y | semmle.label | y |
| main.rs:180:11:180:11 | p [Point3D.plane, Point.y] | semmle.label | p [Point3D.plane, Point.y] |
| main.rs:181:9:184:9 | Point3D {...} [Point3D.plane, Point.y] | semmle.label | Point3D {...} [Point3D.plane, Point.y] |
| main.rs:182:20:182:33 | Point {...} [Point.y] | semmle.label | Point {...} [Point.y] |
| main.rs:182:31:182:31 | y | semmle.label | y |
| main.rs:186:18:186:18 | y | semmle.label | y |
| main.rs:195:9:195:9 | s [MyTupleStruct(0)] | semmle.label | s [MyTupleStruct(0)] |
| main.rs:195:13:195:40 | MyTupleStruct(...) [MyTupleStruct(0)] | semmle.label | MyTupleStruct(...) [MyTupleStruct(0)] |
| main.rs:195:27:195:36 | source(...) | semmle.label | source(...) |
| main.rs:199:11:199:11 | s [MyTupleStruct(0)] | semmle.label | s [MyTupleStruct(0)] |
| main.rs:200:9:200:27 | MyTupleStruct(...) [MyTupleStruct(0)] | semmle.label | MyTupleStruct(...) [MyTupleStruct(0)] |
| main.rs:200:23:200:23 | x | semmle.label | x |
| main.rs:201:18:201:18 | x | semmle.label | x |
| main.rs:211:9:211:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:211:14:211:37 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] |
| main.rs:211:27:211:36 | source(...) | semmle.label | source(...) |
| main.rs:213:11:213:12 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:214:9:214:23 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] |
| main.rs:214:22:214:22 | n | semmle.label | n |
| main.rs:214:33:214:33 | n | semmle.label | n |
| main.rs:224:9:224:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:224:14:224:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:224:19:224:28 | source(...) | semmle.label | source(...) |
| main.rs:226:11:226:12 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:227:9:227:15 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:227:14:227:14 | n | semmle.label | n |
| main.rs:227:25:227:25 | n | semmle.label | n |
| main.rs:237:9:237:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:237:14:237:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:237:19:237:28 | source(...) | semmle.label | source(...) |
| main.rs:238:10:238:11 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:238:10:238:20 | s1.unwrap(...) | semmle.label | s1.unwrap(...) |
| main.rs:242:9:242:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:242:14:242:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:242:19:242:28 | source(...) | semmle.label | source(...) |
| main.rs:243:10:243:11 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:243:10:243:24 | s1.unwrap_or(...) | semmle.label | s1.unwrap_or(...) |
| main.rs:246:10:246:33 | s2.unwrap_or(...) | semmle.label | s2.unwrap_or(...) |
| main.rs:246:23:246:32 | source(...) | semmle.label | source(...) |
| main.rs:250:9:250:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:250:14:250:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:250:19:250:28 | source(...) | semmle.label | source(...) |
| main.rs:251:10:251:11 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:251:10:251:32 | s1.unwrap_or_else(...) | semmle.label | s1.unwrap_or_else(...) |
| main.rs:254:10:254:41 | s2.unwrap_or_else(...) | semmle.label | s2.unwrap_or_else(...) |
| main.rs:254:31:254:40 | source(...) | semmle.label | source(...) |
| main.rs:258:9:258:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:258:14:258:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:258:19:258:28 | source(...) | semmle.label | source(...) |
| main.rs:260:9:260:10 | i1 | semmle.label | i1 |
| main.rs:260:14:260:15 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:260:14:260:16 | TryExpr | semmle.label | TryExpr |
| main.rs:261:10:261:11 | i1 | semmle.label | i1 |
| main.rs:267:9:267:10 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:267:32:267:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
| main.rs:267:35:267:44 | source(...) | semmle.label | source(...) |
| main.rs:270:9:270:10 | i1 | semmle.label | i1 |
| main.rs:270:14:270:15 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:270:14:270:16 | TryExpr | semmle.label | TryExpr |
| main.rs:272:10:272:11 | i1 | semmle.label | i1 |
| main.rs:280:9:280:10 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:280:32:280:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
| main.rs:280:35:280:44 | source(...) | semmle.label | source(...) |
| main.rs:281:10:281:11 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:281:10:281:22 | s1.expect(...) | semmle.label | s1.expect(...) |
| main.rs:284:9:284:10 | s2 [Err] | semmle.label | s2 [Err] |
| main.rs:284:32:284:46 | Err(...) [Err] | semmle.label | Err(...) [Err] |
| main.rs:284:36:284:45 | source(...) | semmle.label | source(...) |
| main.rs:286:10:286:11 | s2 [Err] | semmle.label | s2 [Err] |
| main.rs:286:10:286:26 | s2.expect_err(...) | semmle.label | s2.expect_err(...) |
| main.rs:295:9:295:10 | s1 [A] | semmle.label | s1 [A] |
| main.rs:295:14:295:39 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
| main.rs:295:29:295:38 | source(...) | semmle.label | source(...) |
| main.rs:297:11:297:12 | s1 [A] | semmle.label | s1 [A] |
| main.rs:298:9:298:25 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
| main.rs:298:24:298:24 | n | semmle.label | n |
| main.rs:298:35:298:35 | n | semmle.label | n |
| main.rs:301:11:301:12 | s1 [A] | semmle.label | s1 [A] |
| main.rs:302:9:302:25 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
| main.rs:302:24:302:24 | n | semmle.label | n |
| main.rs:302:55:302:55 | n | semmle.label | n |
| main.rs:313:9:313:10 | s1 [A] | semmle.label | s1 [A] |
| main.rs:313:14:313:26 | A(...) [A] | semmle.label | A(...) [A] |
| main.rs:313:16:313:25 | source(...) | semmle.label | source(...) |
| main.rs:315:11:315:12 | s1 [A] | semmle.label | s1 [A] |
| main.rs:316:9:316:12 | A(...) [A] | semmle.label | A(...) [A] |
| main.rs:316:11:316:11 | n | semmle.label | n |
| main.rs:316:22:316:22 | n | semmle.label | n |
| main.rs:319:11:319:12 | s1 [A] | semmle.label | s1 [A] |
| main.rs:320:9:320:12 | A(...) [A] | semmle.label | A(...) [A] |
| main.rs:320:11:320:11 | n | semmle.label | n |
| main.rs:320:29:320:29 | n | semmle.label | n |
| main.rs:334:9:334:10 | s1 [C] | semmle.label | s1 [C] |
| main.rs:334:14:336:5 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:335:18:335:27 | source(...) | semmle.label | source(...) |
| main.rs:338:11:338:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:339:9:339:38 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:339:36:339:36 | n | semmle.label | n |
| main.rs:339:48:339:48 | n | semmle.label | n |
| main.rs:342:11:342:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:343:9:343:38 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:343:36:343:36 | n | semmle.label | n |
| main.rs:343:81:343:81 | n | semmle.label | n |
| main.rs:354:9:354:10 | s1 [C] | semmle.label | s1 [C] |
| main.rs:354:14:356:5 | C {...} [C] | semmle.label | C {...} [C] |
| main.rs:355:18:355:27 | source(...) | semmle.label | source(...) |
| main.rs:358:11:358:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:359:9:359:24 | C {...} [C] | semmle.label | C {...} [C] |
| main.rs:359:22:359:22 | n | semmle.label | n |
| main.rs:359:34:359:34 | n | semmle.label | n |
| main.rs:362:11:362:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:363:9:363:24 | C {...} [C] | semmle.label | C {...} [C] |
| main.rs:363:22:363:22 | n | semmle.label | n |
| main.rs:363:53:363:53 | n | semmle.label | n |
| main.rs:375:9:375:12 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:375:16:375:33 | [...] [element] | semmle.label | [...] [element] |
| main.rs:375:23:375:32 | source(...) | semmle.label | source(...) |
| main.rs:376:9:376:10 | n1 | semmle.label | n1 |
| main.rs:376:14:376:17 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:376:14:376:20 | arr1[2] | semmle.label | arr1[2] |
| main.rs:377:10:377:11 | n1 | semmle.label | n1 |
| main.rs:379:9:379:12 | arr2 [element] | semmle.label | arr2 [element] |
| main.rs:379:16:379:31 | [...; 10] [element] | semmle.label | [...; 10] [element] |
| main.rs:379:17:379:26 | source(...) | semmle.label | source(...) |
| main.rs:380:9:380:10 | n2 | semmle.label | n2 |
| main.rs:380:14:380:17 | arr2 [element] | semmle.label | arr2 [element] |
| main.rs:380:14:380:20 | arr2[4] | semmle.label | arr2[4] |
| main.rs:381:10:381:11 | n2 | semmle.label | n2 |
| main.rs:389:9:389:12 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:389:16:389:33 | [...] [element] | semmle.label | [...] [element] |
| main.rs:389:23:389:32 | source(...) | semmle.label | source(...) |
| main.rs:390:9:390:10 | n1 | semmle.label | n1 |
| main.rs:390:15:390:18 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:391:14:391:15 | n1 | semmle.label | n1 |
| main.rs:401:9:401:12 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:401:16:401:33 | [...] [element] | semmle.label | [...] [element] |
| main.rs:401:23:401:32 | source(...) | semmle.label | source(...) |
| main.rs:402:11:402:14 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:403:9:403:17 | SlicePat [element] | semmle.label | SlicePat [element] |
| main.rs:403:10:403:10 | a | semmle.label | a |
| main.rs:403:13:403:13 | b | semmle.label | b |
| main.rs:403:16:403:16 | c | semmle.label | c |
| main.rs:404:18:404:18 | a | semmle.label | a |
| main.rs:405:18:405:18 | b | semmle.label | b |
| main.rs:406:18:406:18 | c | semmle.label | c |
| main.rs:415:5:415:11 | [post] mut_arr [element] | semmle.label | [post] mut_arr [element] |
| main.rs:415:18:415:27 | source(...) | semmle.label | source(...) |
| main.rs:416:9:416:9 | d | semmle.label | d |
| main.rs:416:13:416:19 | mut_arr [element] | semmle.label | mut_arr [element] |
| main.rs:416:13:416:22 | mut_arr[1] | semmle.label | mut_arr[1] |
| main.rs:417:10:417:10 | d | semmle.label | d |
| main.rs:418:10:418:16 | mut_arr [element] | semmle.label | mut_arr [element] |
| main.rs:418:10:418:19 | mut_arr[0] | semmle.label | mut_arr[0] |
| main.rs:441:9:441:9 | s | semmle.label | s |
| main.rs:441:25:441:26 | source(...) | semmle.label | source(...) |
| main.rs:442:10:442:10 | s | semmle.label | s |
| main.rs:18:10:18:18 | source(...) | semmle.label | source(...) |
| main.rs:22:9:22:9 | s | semmle.label | s |
| main.rs:22:13:22:21 | source(...) | semmle.label | source(...) |
| main.rs:23:10:23:10 | s | semmle.label | s |
| main.rs:27:9:27:9 | a | semmle.label | a |
| main.rs:27:13:27:21 | source(...) | semmle.label | source(...) |
| main.rs:29:9:29:9 | c | semmle.label | c |
| main.rs:30:10:30:10 | c | semmle.label | c |
| main.rs:34:9:34:9 | a | semmle.label | a |
| main.rs:34:13:34:21 | source(...) | semmle.label | source(...) |
| main.rs:35:9:35:9 | b | semmle.label | b |
| main.rs:39:10:39:10 | b | semmle.label | b |
| main.rs:47:9:47:9 | b | semmle.label | b |
| main.rs:48:15:48:23 | source(...) | semmle.label | source(...) |
| main.rs:50:10:50:10 | b | semmle.label | b |
| main.rs:56:5:56:5 | i | semmle.label | i |
| main.rs:56:9:56:17 | source(...) | semmle.label | source(...) |
| main.rs:57:10:57:10 | i | semmle.label | i |
| main.rs:97:9:97:9 | a [tuple.0] | semmle.label | a [tuple.0] |
| main.rs:97:13:97:26 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] |
| main.rs:97:14:97:22 | source(...) | semmle.label | source(...) |
| main.rs:98:10:98:10 | a [tuple.0] | semmle.label | a [tuple.0] |
| main.rs:98:10:98:12 | a.0 | semmle.label | a.0 |
| main.rs:103:9:103:9 | a [tuple.1] | semmle.label | a [tuple.1] |
| main.rs:103:13:103:30 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] |
| main.rs:103:17:103:26 | source(...) | semmle.label | source(...) |
| main.rs:104:9:104:20 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] |
| main.rs:104:14:104:15 | a1 | semmle.label | a1 |
| main.rs:106:10:106:11 | a1 | semmle.label | a1 |
| main.rs:111:9:111:13 | mut a [tuple.1] | semmle.label | mut a [tuple.1] |
| main.rs:111:17:111:31 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] |
| main.rs:111:21:111:30 | source(...) | semmle.label | source(...) |
| main.rs:113:10:113:10 | a [tuple.1] | semmle.label | a [tuple.1] |
| main.rs:113:10:113:12 | a.1 | semmle.label | a.1 |
| main.rs:114:5:114:5 | [post] a [tuple.0] | semmle.label | [post] a [tuple.0] |
| main.rs:114:11:114:20 | source(...) | semmle.label | source(...) |
| main.rs:115:5:115:5 | a [tuple.0] | semmle.label | a [tuple.0] |
| main.rs:116:10:116:10 | a [tuple.0] | semmle.label | a [tuple.0] |
| main.rs:116:10:116:12 | a.0 | semmle.label | a.0 |
| main.rs:121:9:121:9 | a [tuple.1] | semmle.label | a [tuple.1] |
| main.rs:121:13:121:27 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] |
| main.rs:121:17:121:26 | source(...) | semmle.label | source(...) |
| main.rs:122:9:122:9 | b [tuple.0, tuple.1] | semmle.label | b [tuple.0, tuple.1] |
| main.rs:122:13:122:18 | TupleExpr [tuple.0, tuple.1] | semmle.label | TupleExpr [tuple.0, tuple.1] |
| main.rs:122:14:122:14 | a [tuple.1] | semmle.label | a [tuple.1] |
| main.rs:124:10:124:10 | b [tuple.0, tuple.1] | semmle.label | b [tuple.0, tuple.1] |
| main.rs:124:10:124:12 | b.0 [tuple.1] | semmle.label | b.0 [tuple.1] |
| main.rs:124:10:124:15 | ... .1 | semmle.label | ... .1 |
| main.rs:150:9:150:9 | p [Point.x] | semmle.label | p [Point.x] |
| main.rs:150:13:153:5 | Point {...} [Point.x] | semmle.label | Point {...} [Point.x] |
| main.rs:151:12:151:21 | source(...) | semmle.label | source(...) |
| main.rs:154:9:154:28 | Point {...} [Point.x] | semmle.label | Point {...} [Point.x] |
| main.rs:154:20:154:20 | a | semmle.label | a |
| main.rs:155:10:155:10 | a | semmle.label | a |
| main.rs:178:9:178:9 | y | semmle.label | y |
| main.rs:178:13:178:22 | source(...) | semmle.label | source(...) |
| main.rs:179:9:179:9 | p [Point3D.plane, Point.y] | semmle.label | p [Point3D.plane, Point.y] |
| main.rs:179:13:182:5 | Point3D {...} [Point3D.plane, Point.y] | semmle.label | Point3D {...} [Point3D.plane, Point.y] |
| main.rs:180:16:180:32 | Point {...} [Point.y] | semmle.label | Point {...} [Point.y] |
| main.rs:180:30:180:30 | y | semmle.label | y |
| main.rs:183:11:183:11 | p [Point3D.plane, Point.y] | semmle.label | p [Point3D.plane, Point.y] |
| main.rs:184:9:187:9 | Point3D {...} [Point3D.plane, Point.y] | semmle.label | Point3D {...} [Point3D.plane, Point.y] |
| main.rs:185:20:185:33 | Point {...} [Point.y] | semmle.label | Point {...} [Point.y] |
| main.rs:185:31:185:31 | y | semmle.label | y |
| main.rs:189:18:189:18 | y | semmle.label | y |
| main.rs:198:9:198:9 | s [MyTupleStruct(0)] | semmle.label | s [MyTupleStruct(0)] |
| main.rs:198:13:198:40 | MyTupleStruct(...) [MyTupleStruct(0)] | semmle.label | MyTupleStruct(...) [MyTupleStruct(0)] |
| main.rs:198:27:198:36 | source(...) | semmle.label | source(...) |
| main.rs:202:11:202:11 | s [MyTupleStruct(0)] | semmle.label | s [MyTupleStruct(0)] |
| main.rs:203:9:203:27 | MyTupleStruct(...) [MyTupleStruct(0)] | semmle.label | MyTupleStruct(...) [MyTupleStruct(0)] |
| main.rs:203:23:203:23 | x | semmle.label | x |
| main.rs:204:18:204:18 | x | semmle.label | x |
| main.rs:214:9:214:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:214:14:214:37 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] |
| main.rs:214:27:214:36 | source(...) | semmle.label | source(...) |
| main.rs:216:11:216:12 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:217:9:217:23 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] |
| main.rs:217:22:217:22 | n | semmle.label | n |
| main.rs:217:33:217:33 | n | semmle.label | n |
| main.rs:227:9:227:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:227:14:227:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:227:19:227:28 | source(...) | semmle.label | source(...) |
| main.rs:229:11:229:12 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:230:9:230:15 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:230:14:230:14 | n | semmle.label | n |
| main.rs:230:25:230:25 | n | semmle.label | n |
| main.rs:240:9:240:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:240:14:240:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:240:19:240:28 | source(...) | semmle.label | source(...) |
| main.rs:241:10:241:11 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:241:10:241:20 | s1.unwrap(...) | semmle.label | s1.unwrap(...) |
| main.rs:245:9:245:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:245:14:245:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:245:19:245:28 | source(...) | semmle.label | source(...) |
| main.rs:246:10:246:11 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:246:10:246:24 | s1.unwrap_or(...) | semmle.label | s1.unwrap_or(...) |
| main.rs:249:10:249:33 | s2.unwrap_or(...) | semmle.label | s2.unwrap_or(...) |
| main.rs:249:23:249:32 | source(...) | semmle.label | source(...) |
| main.rs:253:9:253:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:253:14:253:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:253:19:253:28 | source(...) | semmle.label | source(...) |
| main.rs:254:10:254:11 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:254:10:254:32 | s1.unwrap_or_else(...) | semmle.label | s1.unwrap_or_else(...) |
| main.rs:257:10:257:41 | s2.unwrap_or_else(...) | semmle.label | s2.unwrap_or_else(...) |
| main.rs:257:31:257:40 | source(...) | semmle.label | source(...) |
| main.rs:261:9:261:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:261:14:261:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:261:19:261:28 | source(...) | semmle.label | source(...) |
| main.rs:263:9:263:10 | i1 | semmle.label | i1 |
| main.rs:263:14:263:15 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:263:14:263:16 | TryExpr | semmle.label | TryExpr |
| main.rs:264:10:264:11 | i1 | semmle.label | i1 |
| main.rs:270:9:270:10 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:270:32:270:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
| main.rs:270:35:270:44 | source(...) | semmle.label | source(...) |
| main.rs:273:9:273:10 | i1 | semmle.label | i1 |
| main.rs:273:14:273:15 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:273:14:273:16 | TryExpr | semmle.label | TryExpr |
| main.rs:275:10:275:11 | i1 | semmle.label | i1 |
| main.rs:283:9:283:10 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:283:32:283:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
| main.rs:283:35:283:44 | source(...) | semmle.label | source(...) |
| main.rs:284:10:284:11 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:284:10:284:22 | s1.expect(...) | semmle.label | s1.expect(...) |
| main.rs:287:9:287:10 | s2 [Err] | semmle.label | s2 [Err] |
| main.rs:287:32:287:46 | Err(...) [Err] | semmle.label | Err(...) [Err] |
| main.rs:287:36:287:45 | source(...) | semmle.label | source(...) |
| main.rs:289:10:289:11 | s2 [Err] | semmle.label | s2 [Err] |
| main.rs:289:10:289:26 | s2.expect_err(...) | semmle.label | s2.expect_err(...) |
| main.rs:298:9:298:10 | s1 [A] | semmle.label | s1 [A] |
| main.rs:298:14:298:39 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
| main.rs:298:29:298:38 | source(...) | semmle.label | source(...) |
| main.rs:300:11:300:12 | s1 [A] | semmle.label | s1 [A] |
| main.rs:301:9:301:25 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
| main.rs:301:24:301:24 | n | semmle.label | n |
| main.rs:301:35:301:35 | n | semmle.label | n |
| main.rs:304:11:304:12 | s1 [A] | semmle.label | s1 [A] |
| main.rs:305:9:305:25 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
| main.rs:305:24:305:24 | n | semmle.label | n |
| main.rs:305:55:305:55 | n | semmle.label | n |
| main.rs:316:9:316:10 | s1 [A] | semmle.label | s1 [A] |
| main.rs:316:14:316:26 | A(...) [A] | semmle.label | A(...) [A] |
| main.rs:316:16:316:25 | source(...) | semmle.label | source(...) |
| main.rs:318:11:318:12 | s1 [A] | semmle.label | s1 [A] |
| main.rs:319:9:319:12 | A(...) [A] | semmle.label | A(...) [A] |
| main.rs:319:11:319:11 | n | semmle.label | n |
| main.rs:319:22:319:22 | n | semmle.label | n |
| main.rs:322:11:322:12 | s1 [A] | semmle.label | s1 [A] |
| main.rs:323:9:323:12 | A(...) [A] | semmle.label | A(...) [A] |
| main.rs:323:11:323:11 | n | semmle.label | n |
| main.rs:323:29:323:29 | n | semmle.label | n |
| main.rs:337:9:337:10 | s1 [C] | semmle.label | s1 [C] |
| main.rs:337:14:339:5 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:338:18:338:27 | source(...) | semmle.label | source(...) |
| main.rs:341:11:341:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:342:9:342:38 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:342:36:342:36 | n | semmle.label | n |
| main.rs:342:48:342:48 | n | semmle.label | n |
| main.rs:345:11:345:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:346:9:346:38 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:346:36:346:36 | n | semmle.label | n |
| main.rs:346:81:346:81 | n | semmle.label | n |
| main.rs:357:9:357:10 | s1 [C] | semmle.label | s1 [C] |
| main.rs:357:14:359:5 | C {...} [C] | semmle.label | C {...} [C] |
| main.rs:358:18:358:27 | source(...) | semmle.label | source(...) |
| main.rs:361:11:361:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:362:9:362:24 | C {...} [C] | semmle.label | C {...} [C] |
| main.rs:362:22:362:22 | n | semmle.label | n |
| main.rs:362:34:362:34 | n | semmle.label | n |
| main.rs:365:11:365:12 | s1 [C] | semmle.label | s1 [C] |
| main.rs:366:9:366:24 | C {...} [C] | semmle.label | C {...} [C] |
| main.rs:366:22:366:22 | n | semmle.label | n |
| main.rs:366:53:366:53 | n | semmle.label | n |
| main.rs:378:9:378:12 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:378:16:378:33 | [...] [element] | semmle.label | [...] [element] |
| main.rs:378:23:378:32 | source(...) | semmle.label | source(...) |
| main.rs:379:9:379:10 | n1 | semmle.label | n1 |
| main.rs:379:14:379:17 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:379:14:379:20 | arr1[2] | semmle.label | arr1[2] |
| main.rs:380:10:380:11 | n1 | semmle.label | n1 |
| main.rs:382:9:382:12 | arr2 [element] | semmle.label | arr2 [element] |
| main.rs:382:16:382:31 | [...; 10] [element] | semmle.label | [...; 10] [element] |
| main.rs:382:17:382:26 | source(...) | semmle.label | source(...) |
| main.rs:383:9:383:10 | n2 | semmle.label | n2 |
| main.rs:383:14:383:17 | arr2 [element] | semmle.label | arr2 [element] |
| main.rs:383:14:383:20 | arr2[4] | semmle.label | arr2[4] |
| main.rs:384:10:384:11 | n2 | semmle.label | n2 |
| main.rs:392:9:392:12 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:392:16:392:33 | [...] [element] | semmle.label | [...] [element] |
| main.rs:392:23:392:32 | source(...) | semmle.label | source(...) |
| main.rs:393:9:393:10 | n1 | semmle.label | n1 |
| main.rs:393:15:393:18 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:394:14:394:15 | n1 | semmle.label | n1 |
| main.rs:404:9:404:12 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:404:16:404:33 | [...] [element] | semmle.label | [...] [element] |
| main.rs:404:23:404:32 | source(...) | semmle.label | source(...) |
| main.rs:405:11:405:14 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:406:9:406:17 | SlicePat [element] | semmle.label | SlicePat [element] |
| main.rs:406:10:406:10 | a | semmle.label | a |
| main.rs:406:13:406:13 | b | semmle.label | b |
| main.rs:406:16:406:16 | c | semmle.label | c |
| main.rs:407:18:407:18 | a | semmle.label | a |
| main.rs:408:18:408:18 | b | semmle.label | b |
| main.rs:409:18:409:18 | c | semmle.label | c |
| main.rs:418:5:418:11 | [post] mut_arr [element] | semmle.label | [post] mut_arr [element] |
| main.rs:418:18:418:27 | source(...) | semmle.label | source(...) |
| main.rs:419:9:419:9 | d | semmle.label | d |
| main.rs:419:13:419:19 | mut_arr [element] | semmle.label | mut_arr [element] |
| main.rs:419:13:419:22 | mut_arr[1] | semmle.label | mut_arr[1] |
| main.rs:420:10:420:10 | d | semmle.label | d |
| main.rs:421:10:421:16 | mut_arr [element] | semmle.label | mut_arr [element] |
| main.rs:421:10:421:19 | mut_arr[0] | semmle.label | mut_arr[0] |
| main.rs:444:9:444:9 | s | semmle.label | s |
| main.rs:444:25:444:26 | source(...) | semmle.label | source(...) |
| main.rs:445:10:445:10 | s | semmle.label | s |
| main.rs:449:9:449:9 | a | semmle.label | a |
| main.rs:449:13:449:22 | source(...) | semmle.label | source(...) |
| main.rs:451:9:451:9 | c | semmle.label | c |
| main.rs:451:13:451:22 | source(...) | semmle.label | source(...) |
| main.rs:452:9:452:13 | c_ref [&ref] | semmle.label | c_ref [&ref] |
| main.rs:452:17:452:18 | &c [&ref] | semmle.label | &c [&ref] |
| main.rs:452:18:452:18 | c | semmle.label | c |
| main.rs:454:10:454:10 | a | semmle.label | a |
| main.rs:457:10:457:15 | * ... | semmle.label | * ... |
| main.rs:457:11:457:15 | c_ref [&ref] | semmle.label | c_ref [&ref] |
subpaths
testFailures
#select
| main.rs:15:10:15:18 | source(...) | main.rs:15:10:15:18 | source(...) | main.rs:15:10:15:18 | source(...) | $@ | main.rs:15:10:15:18 | source(...) | source(...) |
| main.rs:20:10:20:10 | s | main.rs:19:13:19:21 | source(...) | main.rs:20:10:20:10 | s | $@ | main.rs:19:13:19:21 | source(...) | source(...) |
| main.rs:27:10:27:10 | c | main.rs:24:13:24:21 | source(...) | main.rs:27:10:27:10 | c | $@ | main.rs:24:13:24:21 | source(...) | source(...) |
| main.rs:36:10:36:10 | b | main.rs:31:13:31:21 | source(...) | main.rs:36:10:36:10 | b | $@ | main.rs:31:13:31:21 | source(...) | source(...) |
| main.rs:47:10:47:10 | b | main.rs:45:15:45:23 | source(...) | main.rs:47:10:47:10 | b | $@ | main.rs:45:15:45:23 | source(...) | source(...) |
| main.rs:54:10:54:10 | i | main.rs:53:9:53:17 | source(...) | main.rs:54:10:54:10 | i | $@ | main.rs:53:9:53:17 | source(...) | source(...) |
| main.rs:95:10:95:12 | a.0 | main.rs:94:14:94:22 | source(...) | main.rs:95:10:95:12 | a.0 | $@ | main.rs:94:14:94:22 | source(...) | source(...) |
| main.rs:103:10:103:11 | a1 | main.rs:100:17:100:26 | source(...) | main.rs:103:10:103:11 | a1 | $@ | main.rs:100:17:100:26 | source(...) | source(...) |
| main.rs:110:10:110:12 | a.1 | main.rs:108:21:108:30 | source(...) | main.rs:110:10:110:12 | a.1 | $@ | main.rs:108:21:108:30 | source(...) | source(...) |
| main.rs:113:10:113:12 | a.0 | main.rs:111:11:111:20 | source(...) | main.rs:113:10:113:12 | a.0 | $@ | main.rs:111:11:111:20 | source(...) | source(...) |
| main.rs:121:10:121:15 | ... .1 | main.rs:118:17:118:26 | source(...) | main.rs:121:10:121:15 | ... .1 | $@ | main.rs:118:17:118:26 | source(...) | source(...) |
| main.rs:152:10:152:10 | a | main.rs:148:12:148:21 | source(...) | main.rs:152:10:152:10 | a | $@ | main.rs:148:12:148:21 | source(...) | source(...) |
| main.rs:186:18:186:18 | y | main.rs:175:13:175:22 | source(...) | main.rs:186:18:186:18 | y | $@ | main.rs:175:13:175:22 | source(...) | source(...) |
| main.rs:201:18:201:18 | x | main.rs:195:27:195:36 | source(...) | main.rs:201:18:201:18 | x | $@ | main.rs:195:27:195:36 | source(...) | source(...) |
| main.rs:214:33:214:33 | n | main.rs:211:27:211:36 | source(...) | main.rs:214:33:214:33 | n | $@ | main.rs:211:27:211:36 | source(...) | source(...) |
| main.rs:227:25:227:25 | n | main.rs:224:19:224:28 | source(...) | main.rs:227:25:227:25 | n | $@ | main.rs:224:19:224:28 | source(...) | source(...) |
| main.rs:238:10:238:20 | s1.unwrap(...) | main.rs:237:19:237:28 | source(...) | main.rs:238:10:238:20 | s1.unwrap(...) | $@ | main.rs:237:19:237:28 | source(...) | source(...) |
| main.rs:243:10:243:24 | s1.unwrap_or(...) | main.rs:242:19:242:28 | source(...) | main.rs:243:10:243:24 | s1.unwrap_or(...) | $@ | main.rs:242:19:242:28 | source(...) | source(...) |
| main.rs:246:10:246:33 | s2.unwrap_or(...) | main.rs:246:23:246:32 | source(...) | main.rs:246:10:246:33 | s2.unwrap_or(...) | $@ | main.rs:246:23:246:32 | source(...) | source(...) |
| main.rs:251:10:251:32 | s1.unwrap_or_else(...) | main.rs:250:19:250:28 | source(...) | main.rs:251:10:251:32 | s1.unwrap_or_else(...) | $@ | main.rs:250:19:250:28 | source(...) | source(...) |
| main.rs:254:10:254:41 | s2.unwrap_or_else(...) | main.rs:254:31:254:40 | source(...) | main.rs:254:10:254:41 | s2.unwrap_or_else(...) | $@ | main.rs:254:31:254:40 | source(...) | source(...) |
| main.rs:261:10:261:11 | i1 | main.rs:258:19:258:28 | source(...) | main.rs:261:10:261:11 | i1 | $@ | main.rs:258:19:258:28 | source(...) | source(...) |
| main.rs:272:10:272:11 | i1 | main.rs:267:35:267:44 | source(...) | main.rs:272:10:272:11 | i1 | $@ | main.rs:267:35:267:44 | source(...) | source(...) |
| main.rs:281:10:281:22 | s1.expect(...) | main.rs:280:35:280:44 | source(...) | main.rs:281:10:281:22 | s1.expect(...) | $@ | main.rs:280:35:280:44 | source(...) | source(...) |
| main.rs:286:10:286:26 | s2.expect_err(...) | main.rs:284:36:284:45 | source(...) | main.rs:286:10:286:26 | s2.expect_err(...) | $@ | main.rs:284:36:284:45 | source(...) | source(...) |
| main.rs:298:35:298:35 | n | main.rs:295:29:295:38 | source(...) | main.rs:298:35:298:35 | n | $@ | main.rs:295:29:295:38 | source(...) | source(...) |
| main.rs:302:55:302:55 | n | main.rs:295:29:295:38 | source(...) | main.rs:302:55:302:55 | n | $@ | main.rs:295:29:295:38 | source(...) | source(...) |
| main.rs:316:22:316:22 | n | main.rs:313:16:313:25 | source(...) | main.rs:316:22:316:22 | n | $@ | main.rs:313:16:313:25 | source(...) | source(...) |
| main.rs:320:29:320:29 | n | main.rs:313:16:313:25 | source(...) | main.rs:320:29:320:29 | n | $@ | main.rs:313:16:313:25 | source(...) | source(...) |
| main.rs:339:48:339:48 | n | main.rs:335:18:335:27 | source(...) | main.rs:339:48:339:48 | n | $@ | main.rs:335:18:335:27 | source(...) | source(...) |
| main.rs:343:81:343:81 | n | main.rs:335:18:335:27 | source(...) | main.rs:343:81:343:81 | n | $@ | main.rs:335:18:335:27 | source(...) | source(...) |
| main.rs:359:34:359:34 | n | main.rs:355:18:355:27 | source(...) | main.rs:359:34:359:34 | n | $@ | main.rs:355:18:355:27 | source(...) | source(...) |
| main.rs:363:53:363:53 | n | main.rs:355:18:355:27 | source(...) | main.rs:363:53:363:53 | n | $@ | main.rs:355:18:355:27 | source(...) | source(...) |
| main.rs:377:10:377:11 | n1 | main.rs:375:23:375:32 | source(...) | main.rs:377:10:377:11 | n1 | $@ | main.rs:375:23:375:32 | source(...) | source(...) |
| main.rs:381:10:381:11 | n2 | main.rs:379:17:379:26 | source(...) | main.rs:381:10:381:11 | n2 | $@ | main.rs:379:17:379:26 | source(...) | source(...) |
| main.rs:391:14:391:15 | n1 | main.rs:389:23:389:32 | source(...) | main.rs:391:14:391:15 | n1 | $@ | main.rs:389:23:389:32 | source(...) | source(...) |
| main.rs:404:18:404:18 | a | main.rs:401:23:401:32 | source(...) | main.rs:404:18:404:18 | a | $@ | main.rs:401:23:401:32 | source(...) | source(...) |
| main.rs:405:18:405:18 | b | main.rs:401:23:401:32 | source(...) | main.rs:405:18:405:18 | b | $@ | main.rs:401:23:401:32 | source(...) | source(...) |
| main.rs:406:18:406:18 | c | main.rs:401:23:401:32 | source(...) | main.rs:406:18:406:18 | c | $@ | main.rs:401:23:401:32 | source(...) | source(...) |
| main.rs:417:10:417:10 | d | main.rs:415:18:415:27 | source(...) | main.rs:417:10:417:10 | d | $@ | main.rs:415:18:415:27 | source(...) | source(...) |
| main.rs:418:10:418:19 | mut_arr[0] | main.rs:415:18:415:27 | source(...) | main.rs:418:10:418:19 | mut_arr[0] | $@ | main.rs:415:18:415:27 | source(...) | source(...) |
| main.rs:442:10:442:10 | s | main.rs:441:25:441:26 | source(...) | main.rs:442:10:442:10 | s | $@ | main.rs:441:25:441:26 | source(...) | source(...) |
| main.rs:18:10:18:18 | source(...) | main.rs:18:10:18:18 | source(...) | main.rs:18:10:18:18 | source(...) | $@ | main.rs:18:10:18:18 | source(...) | source(...) |
| main.rs:23:10:23:10 | s | main.rs:22:13:22:21 | source(...) | main.rs:23:10:23:10 | s | $@ | main.rs:22:13:22:21 | source(...) | source(...) |
| main.rs:30:10:30:10 | c | main.rs:27:13:27:21 | source(...) | main.rs:30:10:30:10 | c | $@ | main.rs:27:13:27:21 | source(...) | source(...) |
| main.rs:39:10:39:10 | b | main.rs:34:13:34:21 | source(...) | main.rs:39:10:39:10 | b | $@ | main.rs:34:13:34:21 | source(...) | source(...) |
| main.rs:50:10:50:10 | b | main.rs:48:15:48:23 | source(...) | main.rs:50:10:50:10 | b | $@ | main.rs:48:15:48:23 | source(...) | source(...) |
| main.rs:57:10:57:10 | i | main.rs:56:9:56:17 | source(...) | main.rs:57:10:57:10 | i | $@ | main.rs:56:9:56:17 | source(...) | source(...) |
| main.rs:98:10:98:12 | a.0 | main.rs:97:14:97:22 | source(...) | main.rs:98:10:98:12 | a.0 | $@ | main.rs:97:14:97:22 | source(...) | source(...) |
| main.rs:106:10:106:11 | a1 | main.rs:103:17:103:26 | source(...) | main.rs:106:10:106:11 | a1 | $@ | main.rs:103:17:103:26 | source(...) | source(...) |
| main.rs:113:10:113:12 | a.1 | main.rs:111:21:111:30 | source(...) | main.rs:113:10:113:12 | a.1 | $@ | main.rs:111:21:111:30 | source(...) | source(...) |
| main.rs:116:10:116:12 | a.0 | main.rs:114:11:114:20 | source(...) | main.rs:116:10:116:12 | a.0 | $@ | main.rs:114:11:114:20 | source(...) | source(...) |
| main.rs:124:10:124:15 | ... .1 | main.rs:121:17:121:26 | source(...) | main.rs:124:10:124:15 | ... .1 | $@ | main.rs:121:17:121:26 | source(...) | source(...) |
| main.rs:155:10:155:10 | a | main.rs:151:12:151:21 | source(...) | main.rs:155:10:155:10 | a | $@ | main.rs:151:12:151:21 | source(...) | source(...) |
| main.rs:189:18:189:18 | y | main.rs:178:13:178:22 | source(...) | main.rs:189:18:189:18 | y | $@ | main.rs:178:13:178:22 | source(...) | source(...) |
| main.rs:204:18:204:18 | x | main.rs:198:27:198:36 | source(...) | main.rs:204:18:204:18 | x | $@ | main.rs:198:27:198:36 | source(...) | source(...) |
| main.rs:217:33:217:33 | n | main.rs:214:27:214:36 | source(...) | main.rs:217:33:217:33 | n | $@ | main.rs:214:27:214:36 | source(...) | source(...) |
| main.rs:230:25:230:25 | n | main.rs:227:19:227:28 | source(...) | main.rs:230:25:230:25 | n | $@ | main.rs:227:19:227:28 | source(...) | source(...) |
| main.rs:241:10:241:20 | s1.unwrap(...) | main.rs:240:19:240:28 | source(...) | main.rs:241:10:241:20 | s1.unwrap(...) | $@ | main.rs:240:19:240:28 | source(...) | source(...) |
| main.rs:246:10:246:24 | s1.unwrap_or(...) | main.rs:245:19:245:28 | source(...) | main.rs:246:10:246:24 | s1.unwrap_or(...) | $@ | main.rs:245:19:245:28 | source(...) | source(...) |
| main.rs:249:10:249:33 | s2.unwrap_or(...) | main.rs:249:23:249:32 | source(...) | main.rs:249:10:249:33 | s2.unwrap_or(...) | $@ | main.rs:249:23:249:32 | source(...) | source(...) |
| main.rs:254:10:254:32 | s1.unwrap_or_else(...) | main.rs:253:19:253:28 | source(...) | main.rs:254:10:254:32 | s1.unwrap_or_else(...) | $@ | main.rs:253:19:253:28 | source(...) | source(...) |
| main.rs:257:10:257:41 | s2.unwrap_or_else(...) | main.rs:257:31:257:40 | source(...) | main.rs:257:10:257:41 | s2.unwrap_or_else(...) | $@ | main.rs:257:31:257:40 | source(...) | source(...) |
| main.rs:264:10:264:11 | i1 | main.rs:261:19:261:28 | source(...) | main.rs:264:10:264:11 | i1 | $@ | main.rs:261:19:261:28 | source(...) | source(...) |
| main.rs:275:10:275:11 | i1 | main.rs:270:35:270:44 | source(...) | main.rs:275:10:275:11 | i1 | $@ | main.rs:270:35:270:44 | source(...) | source(...) |
| main.rs:284:10:284:22 | s1.expect(...) | main.rs:283:35:283:44 | source(...) | main.rs:284:10:284:22 | s1.expect(...) | $@ | main.rs:283:35:283:44 | source(...) | source(...) |
| main.rs:289:10:289:26 | s2.expect_err(...) | main.rs:287:36:287:45 | source(...) | main.rs:289:10:289:26 | s2.expect_err(...) | $@ | main.rs:287:36:287:45 | source(...) | source(...) |
| main.rs:301:35:301:35 | n | main.rs:298:29:298:38 | source(...) | main.rs:301:35:301:35 | n | $@ | main.rs:298:29:298:38 | source(...) | source(...) |
| main.rs:305:55:305:55 | n | main.rs:298:29:298:38 | source(...) | main.rs:305:55:305:55 | n | $@ | main.rs:298:29:298:38 | source(...) | source(...) |
| main.rs:319:22:319:22 | n | main.rs:316:16:316:25 | source(...) | main.rs:319:22:319:22 | n | $@ | main.rs:316:16:316:25 | source(...) | source(...) |
| main.rs:323:29:323:29 | n | main.rs:316:16:316:25 | source(...) | main.rs:323:29:323:29 | n | $@ | main.rs:316:16:316:25 | source(...) | source(...) |
| main.rs:342:48:342:48 | n | main.rs:338:18:338:27 | source(...) | main.rs:342:48:342:48 | n | $@ | main.rs:338:18:338:27 | source(...) | source(...) |
| main.rs:346:81:346:81 | n | main.rs:338:18:338:27 | source(...) | main.rs:346:81:346:81 | n | $@ | main.rs:338:18:338:27 | source(...) | source(...) |
| main.rs:362:34:362:34 | n | main.rs:358:18:358:27 | source(...) | main.rs:362:34:362:34 | n | $@ | main.rs:358:18:358:27 | source(...) | source(...) |
| main.rs:366:53:366:53 | n | main.rs:358:18:358:27 | source(...) | main.rs:366:53:366:53 | n | $@ | main.rs:358:18:358:27 | source(...) | source(...) |
| main.rs:380:10:380:11 | n1 | main.rs:378:23:378:32 | source(...) | main.rs:380:10:380:11 | n1 | $@ | main.rs:378:23:378:32 | source(...) | source(...) |
| main.rs:384:10:384:11 | n2 | main.rs:382:17:382:26 | source(...) | main.rs:384:10:384:11 | n2 | $@ | main.rs:382:17:382:26 | source(...) | source(...) |
| main.rs:394:14:394:15 | n1 | main.rs:392:23:392:32 | source(...) | main.rs:394:14:394:15 | n1 | $@ | main.rs:392:23:392:32 | source(...) | source(...) |
| main.rs:407:18:407:18 | a | main.rs:404:23:404:32 | source(...) | main.rs:407:18:407:18 | a | $@ | main.rs:404:23:404:32 | source(...) | source(...) |
| main.rs:408:18:408:18 | b | main.rs:404:23:404:32 | source(...) | main.rs:408:18:408:18 | b | $@ | main.rs:404:23:404:32 | source(...) | source(...) |
| main.rs:409:18:409:18 | c | main.rs:404:23:404:32 | source(...) | main.rs:409:18:409:18 | c | $@ | main.rs:404:23:404:32 | source(...) | source(...) |
| main.rs:420:10:420:10 | d | main.rs:418:18:418:27 | source(...) | main.rs:420:10:420:10 | d | $@ | main.rs:418:18:418:27 | source(...) | source(...) |
| main.rs:421:10:421:19 | mut_arr[0] | main.rs:418:18:418:27 | source(...) | main.rs:421:10:421:19 | mut_arr[0] | $@ | main.rs:418:18:418:27 | source(...) | source(...) |
| main.rs:445:10:445:10 | s | main.rs:444:25:444:26 | source(...) | main.rs:445:10:445:10 | s | $@ | main.rs:444:25:444:26 | source(...) | source(...) |
| main.rs:454:10:454:10 | a | main.rs:449:13:449:22 | source(...) | main.rs:454:10:454:10 | a | $@ | main.rs:449:13:449:22 | source(...) | source(...) |
| main.rs:457:10:457:15 | * ... | main.rs:451:13:451:22 | source(...) | main.rs:457:10:457:15 | * ... | $@ | main.rs:451:13:451:22 | source(...) | source(...) |

View File

@@ -3,11 +3,14 @@
fn source(i: i64) -> i64 {
1000 + i
}
fn sink(s: i64) {
println!("{}", s);
}
fn sink_ref(sr: &i64) {
println!("{}", sr);
}
// -----------------------------------------------------------------------------
// Simple data flow through expressions and assignments
@@ -442,6 +445,18 @@ fn macro_invocation() {
sink(s); // $ hasValueFlow=37
}
fn references() {
let a = source(40);
let b = source(41);
let c = source(42);
let c_ref = &c;
sink(a); // $ hasValueFlow=40
sink_ref(&b); // $ hasTaintFlow=41
sink_ref(c_ref); // $ hasTaintFlow=42
sink(*c_ref); // $ hasValueFlow=42
}
fn main() {
direct();
variable_usage();
@@ -479,4 +494,5 @@ fn main() {
array_assignment();
captured_variable_and_continue(vec![]);
macro_invocation();
references();
}

View File

@@ -1,25 +1,27 @@
models
| 1 | Summary: lang:core; <crate::option::Option>::unwrap; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value |
| 2 | Summary: lang:core; <crate::result::Result>::unwrap; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
| 1 | Summary: lang:core; <crate::option::Option as crate::clone::Clone>::clone; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue.Variant[crate::option::Option::Some(0)]; value |
| 2 | Summary: lang:core; <crate::option::Option>::unwrap; Argument[self].Variant[crate::option::Option::Some(0)]; ReturnValue; value |
| 3 | Summary: lang:core; <crate::option::Option>::zip; Argument[0].Variant[crate::option::Option::Some(0)]; ReturnValue.Variant[crate::option::Option::Some(0)].Tuple[1]; value |
| 4 | Summary: lang:core; <crate::result::Result>::unwrap; Argument[self].Variant[crate::result::Result::Ok(0)]; ReturnValue; value |
edges
| main.rs:13:9:13:9 | a [Some] | main.rs:14:10:14:10 | a [Some] | provenance | |
| main.rs:13:9:13:9 | a [Some] | main.rs:15:13:15:13 | a [Some] | provenance | |
| main.rs:13:13:13:28 | Some(...) [Some] | main.rs:13:9:13:9 | a [Some] | provenance | |
| main.rs:13:18:13:27 | source(...) | main.rs:13:13:13:28 | Some(...) [Some] | provenance | |
| main.rs:14:10:14:10 | a [Some] | main.rs:14:10:14:19 | a.unwrap(...) | provenance | MaD:1 |
| main.rs:14:10:14:10 | a [Some] | main.rs:14:10:14:19 | a.unwrap(...) | provenance | MaD:2 |
| main.rs:15:9:15:9 | b [Some] | main.rs:16:10:16:10 | b [Some] | provenance | |
| main.rs:15:13:15:13 | a [Some] | main.rs:15:13:15:21 | a.clone(...) [Some] | provenance | |
| main.rs:15:13:15:13 | a [Some] | main.rs:15:13:15:21 | a.clone(...) [Some] | provenance | MaD:1 |
| main.rs:15:13:15:21 | a.clone(...) [Some] | main.rs:15:9:15:9 | b [Some] | provenance | |
| main.rs:16:10:16:10 | b [Some] | main.rs:16:10:16:19 | b.unwrap(...) | provenance | MaD:1 |
| main.rs:16:10:16:10 | b [Some] | main.rs:16:10:16:19 | b.unwrap(...) | provenance | MaD:2 |
| main.rs:20:9:20:9 | a [Ok] | main.rs:21:10:21:10 | a [Ok] | provenance | |
| main.rs:20:9:20:9 | a [Ok] | main.rs:22:13:22:13 | a [Ok] | provenance | |
| main.rs:20:31:20:44 | Ok(...) [Ok] | main.rs:20:9:20:9 | a [Ok] | provenance | |
| main.rs:20:34:20:43 | source(...) | main.rs:20:31:20:44 | Ok(...) [Ok] | provenance | |
| main.rs:21:10:21:10 | a [Ok] | main.rs:21:10:21:19 | a.unwrap(...) | provenance | MaD:2 |
| main.rs:21:10:21:10 | a [Ok] | main.rs:21:10:21:19 | a.unwrap(...) | provenance | MaD:4 |
| main.rs:22:9:22:9 | b [Ok] | main.rs:23:10:23:10 | b [Ok] | provenance | |
| main.rs:22:13:22:13 | a [Ok] | main.rs:22:13:22:21 | a.clone(...) [Ok] | provenance | |
| main.rs:22:13:22:21 | a.clone(...) [Ok] | main.rs:22:9:22:9 | b [Ok] | provenance | |
| main.rs:23:10:23:10 | b [Ok] | main.rs:23:10:23:19 | b.unwrap(...) | provenance | MaD:2 |
| main.rs:23:10:23:10 | b [Ok] | main.rs:23:10:23:19 | b.unwrap(...) | provenance | MaD:4 |
| main.rs:27:9:27:9 | a | main.rs:28:10:28:10 | a | provenance | |
| main.rs:27:9:27:9 | a | main.rs:29:13:29:13 | a | provenance | |
| main.rs:27:13:27:22 | source(...) | main.rs:27:9:27:9 | a | provenance | |
@@ -39,6 +41,16 @@ edges
| main.rs:47:15:47:15 | u [Wrapper] | main.rs:48:13:48:28 | Wrapper {...} [Wrapper] | provenance | |
| main.rs:48:13:48:28 | Wrapper {...} [Wrapper] | main.rs:48:26:48:26 | n | provenance | |
| main.rs:48:26:48:26 | n | main.rs:48:38:48:38 | n | provenance | |
| main.rs:59:13:59:13 | b [Some] | main.rs:60:23:60:23 | b [Some] | provenance | |
| main.rs:59:17:59:32 | Some(...) [Some] | main.rs:59:13:59:13 | b [Some] | provenance | |
| main.rs:59:22:59:31 | source(...) | main.rs:59:17:59:32 | Some(...) [Some] | provenance | |
| main.rs:60:13:60:13 | z [Some, tuple.1] | main.rs:61:15:61:15 | z [Some, tuple.1] | provenance | |
| main.rs:60:17:60:24 | a.zip(...) [Some, tuple.1] | main.rs:60:13:60:13 | z [Some, tuple.1] | provenance | |
| main.rs:60:23:60:23 | b [Some] | main.rs:60:17:60:24 | a.zip(...) [Some, tuple.1] | provenance | MaD:3 |
| main.rs:61:15:61:15 | z [Some, tuple.1] | main.rs:62:13:62:24 | Some(...) [Some, tuple.1] | provenance | |
| main.rs:62:13:62:24 | Some(...) [Some, tuple.1] | main.rs:62:18:62:23 | TuplePat [tuple.1] | provenance | |
| main.rs:62:18:62:23 | TuplePat [tuple.1] | main.rs:62:22:62:22 | m | provenance | |
| main.rs:62:22:62:22 | m | main.rs:64:22:64:22 | m | provenance | |
nodes
| main.rs:13:9:13:9 | a [Some] | semmle.label | a [Some] |
| main.rs:13:13:13:28 | Some(...) [Some] | semmle.label | Some(...) [Some] |
@@ -81,6 +93,17 @@ nodes
| main.rs:48:13:48:28 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] |
| main.rs:48:26:48:26 | n | semmle.label | n |
| main.rs:48:38:48:38 | n | semmle.label | n |
| main.rs:59:13:59:13 | b [Some] | semmle.label | b [Some] |
| main.rs:59:17:59:32 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:59:22:59:31 | source(...) | semmle.label | source(...) |
| main.rs:60:13:60:13 | z [Some, tuple.1] | semmle.label | z [Some, tuple.1] |
| main.rs:60:17:60:24 | a.zip(...) [Some, tuple.1] | semmle.label | a.zip(...) [Some, tuple.1] |
| main.rs:60:23:60:23 | b [Some] | semmle.label | b [Some] |
| main.rs:61:15:61:15 | z [Some, tuple.1] | semmle.label | z [Some, tuple.1] |
| main.rs:62:13:62:24 | Some(...) [Some, tuple.1] | semmle.label | Some(...) [Some, tuple.1] |
| main.rs:62:18:62:23 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] |
| main.rs:62:22:62:22 | m | semmle.label | m |
| main.rs:64:22:64:22 | m | semmle.label | m |
subpaths
testFailures
#select
@@ -92,3 +115,4 @@ testFailures
| main.rs:30:10:30:10 | b | main.rs:27:13:27:22 | source(...) | main.rs:30:10:30:10 | b | $@ | main.rs:27:13:27:22 | source(...) | source(...) |
| main.rs:44:38:44:38 | n | main.rs:42:30:42:39 | source(...) | main.rs:44:38:44:38 | n | $@ | main.rs:42:30:42:39 | source(...) | source(...) |
| main.rs:48:38:48:38 | n | main.rs:42:30:42:39 | source(...) | main.rs:48:38:48:38 | n | $@ | main.rs:42:30:42:39 | source(...) | source(...) |
| main.rs:64:22:64:22 | m | main.rs:59:22:59:31 | source(...) | main.rs:64:22:64:22 | m | $@ | main.rs:59:22:59:31 | source(...) | source(...) |

View File

@@ -50,6 +50,30 @@ mod my_clone {
}
}
mod flow_through_option {
use super::{source, sink};
// Test the auto generated flow summaries for `Option`
fn zip_flow() {
let a = Some(2);
let b = Some(source(38));
let z = a.zip(b);
match z {
Some((n, m)) => {
sink(n);
sink(m); // $ hasValueFlow=38
},
None => ()
}
}
fn higher_order_flow() {
let a = Some(0);
let b = a.map_or(3, |n| n + source(63));
sink(b); // $ hasTaintFlow=63
}
}
fn main() {
option_clone();
result_clone();

View File

@@ -203,6 +203,17 @@ fn test_apply_flow_through() {
sink(t); // $ hasValueFlow=33
}
// has a flow model with value flow from argument to returned future
async fn get_async_number(a: i64) -> i64 {
37
}
async fn test_get_async_number() {
let s = source(46);
let t = get_async_number(s).await;
sink(t); // $ hasValueFlow=46
}
impl MyFieldEnum {
// has a source model
fn source(&self, i: i64) -> MyFieldEnum {
@@ -268,7 +279,8 @@ fn test_simple_sink() {
simple_sink(s); // $ hasValueFlow=17
}
fn main() {
#[tokio::main]
async fn main() {
test_identify();
test_get_var_pos();
test_set_var_pos();
@@ -286,5 +298,6 @@ fn main() {
test_enum_method_sink();
test_simple_source();
test_simple_sink();
test_get_async_number().await;
let dummy = Some(0); // ensure that the the `lang:core` crate is extracted
}

View File

@@ -9,14 +9,15 @@ models
| 8 | Summary: repo::test; crate::apply; Argument[1].ReturnValue; ReturnValue; value |
| 9 | Summary: repo::test; crate::coerce; Argument[0]; ReturnValue; taint |
| 10 | Summary: repo::test; crate::get_array_element; Argument[0].Element; ReturnValue; value |
| 11 | Summary: repo::test; crate::get_struct_field; Argument[0].Struct[crate::MyStruct::field1]; ReturnValue; value |
| 12 | Summary: repo::test; crate::get_tuple_element; Argument[0].Tuple[0]; ReturnValue; value |
| 13 | Summary: repo::test; crate::get_var_field; Argument[0].Variant[crate::MyFieldEnum::C::field_c]; ReturnValue; value |
| 14 | Summary: repo::test; crate::get_var_pos; Argument[0].Variant[crate::MyPosEnum::A(0)]; ReturnValue; value |
| 15 | Summary: repo::test; crate::set_array_element; Argument[0]; ReturnValue.Element; value |
| 16 | Summary: repo::test; crate::set_tuple_element; Argument[0]; ReturnValue.Tuple[1]; value |
| 17 | Summary: repo::test; crate::set_var_field; Argument[0]; ReturnValue.Variant[crate::MyFieldEnum::D::field_d]; value |
| 18 | Summary: repo::test; crate::set_var_pos; Argument[0]; ReturnValue.Variant[crate::MyPosEnum::B(0)]; value |
| 11 | Summary: repo::test; crate::get_async_number; Argument[0]; ReturnValue.Future; value |
| 12 | Summary: repo::test; crate::get_struct_field; Argument[0].Struct[crate::MyStruct::field1]; ReturnValue; value |
| 13 | Summary: repo::test; crate::get_tuple_element; Argument[0].Tuple[0]; ReturnValue; value |
| 14 | Summary: repo::test; crate::get_var_field; Argument[0].Variant[crate::MyFieldEnum::C::field_c]; ReturnValue; value |
| 15 | Summary: repo::test; crate::get_var_pos; Argument[0].Variant[crate::MyPosEnum::A(0)]; ReturnValue; value |
| 16 | Summary: repo::test; crate::set_array_element; Argument[0]; ReturnValue.Element; value |
| 17 | Summary: repo::test; crate::set_tuple_element; Argument[0]; ReturnValue.Tuple[1]; value |
| 18 | Summary: repo::test; crate::set_var_field; Argument[0]; ReturnValue.Variant[crate::MyFieldEnum::D::field_d]; value |
| 19 | Summary: repo::test; crate::set_var_pos; Argument[0]; ReturnValue.Variant[crate::MyPosEnum::B(0)]; value |
edges
| main.rs:15:9:15:9 | s | main.rs:16:19:16:19 | s | provenance | |
| main.rs:15:9:15:9 | s | main.rs:16:19:16:19 | s | provenance | |
@@ -37,8 +38,8 @@ edges
| main.rs:41:14:41:28 | ...::A(...) [A] | main.rs:41:9:41:10 | e1 [A] | provenance | |
| main.rs:41:27:41:27 | s | main.rs:41:14:41:28 | ...::A(...) [A] | provenance | |
| main.rs:41:27:41:27 | s | main.rs:41:14:41:28 | ...::A(...) [A] | provenance | |
| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:14 |
| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:14 |
| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:15 |
| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:15 |
| main.rs:53:9:53:9 | s | main.rs:54:26:54:26 | s | provenance | |
| main.rs:53:9:53:9 | s | main.rs:54:26:54:26 | s | provenance | |
| main.rs:53:13:53:21 | source(...) | main.rs:53:9:53:9 | s | provenance | |
@@ -47,8 +48,8 @@ edges
| main.rs:54:9:54:10 | e1 [B] | main.rs:55:11:55:12 | e1 [B] | provenance | |
| main.rs:54:14:54:27 | set_var_pos(...) [B] | main.rs:54:9:54:10 | e1 [B] | provenance | |
| main.rs:54:14:54:27 | set_var_pos(...) [B] | main.rs:54:9:54:10 | e1 [B] | provenance | |
| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:18 |
| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:18 |
| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:19 |
| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:19 |
| main.rs:55:11:55:12 | e1 [B] | main.rs:57:9:57:23 | ...::B(...) [B] | provenance | |
| main.rs:55:11:55:12 | e1 [B] | main.rs:57:9:57:23 | ...::B(...) [B] | provenance | |
| main.rs:57:9:57:23 | ...::B(...) [B] | main.rs:57:22:57:22 | i | provenance | |
@@ -65,8 +66,8 @@ edges
| main.rs:73:14:73:42 | ...::C {...} [C] | main.rs:73:9:73:10 | e1 [C] | provenance | |
| main.rs:73:40:73:40 | s | main.rs:73:14:73:42 | ...::C {...} [C] | provenance | |
| main.rs:73:40:73:40 | s | main.rs:73:14:73:42 | ...::C {...} [C] | provenance | |
| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:13 |
| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:13 |
| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:14 |
| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:14 |
| main.rs:85:9:85:9 | s | main.rs:86:28:86:28 | s | provenance | |
| main.rs:85:9:85:9 | s | main.rs:86:28:86:28 | s | provenance | |
| main.rs:85:13:85:21 | source(...) | main.rs:85:9:85:9 | s | provenance | |
@@ -75,8 +76,8 @@ edges
| main.rs:86:9:86:10 | e1 [D] | main.rs:87:11:87:12 | e1 [D] | provenance | |
| main.rs:86:14:86:29 | set_var_field(...) [D] | main.rs:86:9:86:10 | e1 [D] | provenance | |
| main.rs:86:14:86:29 | set_var_field(...) [D] | main.rs:86:9:86:10 | e1 [D] | provenance | |
| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:17 |
| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:17 |
| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:18 |
| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:18 |
| main.rs:87:11:87:12 | e1 [D] | main.rs:89:9:89:37 | ...::D {...} [D] | provenance | |
| main.rs:87:11:87:12 | e1 [D] | main.rs:89:9:89:37 | ...::D {...} [D] | provenance | |
| main.rs:89:9:89:37 | ...::D {...} [D] | main.rs:89:35:89:35 | i | provenance | |
@@ -93,8 +94,8 @@ edges
| main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | main.rs:105:9:105:17 | my_struct [MyStruct.field1] | provenance | |
| main.rs:106:17:106:17 | s | main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | provenance | |
| main.rs:106:17:106:17 | s | main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | provenance | |
| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:11 |
| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:11 |
| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:12 |
| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:12 |
| main.rs:138:9:138:9 | s | main.rs:139:29:139:29 | s | provenance | |
| main.rs:138:9:138:9 | s | main.rs:139:29:139:29 | s | provenance | |
| main.rs:138:13:138:21 | source(...) | main.rs:138:9:138:9 | s | provenance | |
@@ -111,8 +112,8 @@ edges
| main.rs:149:9:149:11 | arr [element] | main.rs:150:10:150:12 | arr [element] | provenance | |
| main.rs:149:15:149:34 | set_array_element(...) [element] | main.rs:149:9:149:11 | arr [element] | provenance | |
| main.rs:149:15:149:34 | set_array_element(...) [element] | main.rs:149:9:149:11 | arr [element] | provenance | |
| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:15 |
| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:15 |
| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:16 |
| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:16 |
| main.rs:150:10:150:12 | arr [element] | main.rs:150:10:150:15 | arr[0] | provenance | |
| main.rs:150:10:150:12 | arr [element] | main.rs:150:10:150:15 | arr[0] | provenance | |
| main.rs:159:9:159:9 | s | main.rs:160:14:160:14 | s | provenance | |
@@ -125,8 +126,8 @@ edges
| main.rs:160:13:160:18 | TupleExpr [tuple.0] | main.rs:160:9:160:9 | t [tuple.0] | provenance | |
| main.rs:160:14:160:14 | s | main.rs:160:13:160:18 | TupleExpr [tuple.0] | provenance | |
| main.rs:160:14:160:14 | s | main.rs:160:13:160:18 | TupleExpr [tuple.0] | provenance | |
| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:12 |
| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:12 |
| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:13 |
| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:13 |
| main.rs:172:9:172:9 | s | main.rs:173:31:173:31 | s | provenance | |
| main.rs:172:9:172:9 | s | main.rs:173:31:173:31 | s | provenance | |
| main.rs:172:13:172:22 | source(...) | main.rs:172:9:172:9 | s | provenance | |
@@ -135,8 +136,8 @@ edges
| main.rs:173:9:173:9 | t [tuple.1] | main.rs:175:10:175:10 | t [tuple.1] | provenance | |
| main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | main.rs:173:9:173:9 | t [tuple.1] | provenance | |
| main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | main.rs:173:9:173:9 | t [tuple.1] | provenance | |
| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:16 |
| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:16 |
| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:17 |
| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:17 |
| main.rs:175:10:175:10 | t [tuple.1] | main.rs:175:10:175:12 | t.1 | provenance | |
| main.rs:175:10:175:10 | t [tuple.1] | main.rs:175:10:175:12 | t.1 | provenance | |
| main.rs:184:9:184:9 | s | main.rs:189:11:189:11 | s | provenance | |
@@ -177,62 +178,74 @@ edges
| main.rs:202:19:202:19 | s | main.rs:201:14:201:14 | ... | provenance | MaD:7 |
| main.rs:202:19:202:19 | s | main.rs:202:13:202:23 | apply(...) | provenance | MaD:7 |
| main.rs:202:19:202:19 | s | main.rs:202:13:202:23 | apply(...) | provenance | MaD:7 |
| main.rs:222:9:222:9 | s [D] | main.rs:223:11:223:11 | s [D] | provenance | |
| main.rs:222:9:222:9 | s [D] | main.rs:223:11:223:11 | s [D] | provenance | |
| main.rs:222:13:222:23 | enum_source | main.rs:222:13:222:27 | enum_source(...) [D] | provenance | Src:MaD:5 |
| main.rs:222:13:222:23 | enum_source | main.rs:222:13:222:27 | enum_source(...) [D] | provenance | Src:MaD:5 |
| main.rs:222:13:222:27 | enum_source(...) [D] | main.rs:222:9:222:9 | s [D] | provenance | |
| main.rs:222:13:222:27 | enum_source(...) [D] | main.rs:222:9:222:9 | s [D] | provenance | |
| main.rs:223:11:223:11 | s [D] | main.rs:225:9:225:37 | ...::D {...} [D] | provenance | |
| main.rs:223:11:223:11 | s [D] | main.rs:225:9:225:37 | ...::D {...} [D] | provenance | |
| main.rs:225:9:225:37 | ...::D {...} [D] | main.rs:225:35:225:35 | i | provenance | |
| main.rs:225:9:225:37 | ...::D {...} [D] | main.rs:225:35:225:35 | i | provenance | |
| main.rs:225:35:225:35 | i | main.rs:225:47:225:47 | i | provenance | |
| main.rs:225:35:225:35 | i | main.rs:225:47:225:47 | i | provenance | |
| main.rs:231:9:231:9 | s [C] | main.rs:232:11:232:11 | s [C] | provenance | |
| main.rs:231:9:231:9 | s [C] | main.rs:232:11:232:11 | s [C] | provenance | |
| main.rs:231:13:231:24 | e.source(...) [C] | main.rs:231:9:231:9 | s [C] | provenance | |
| main.rs:231:13:231:24 | e.source(...) [C] | main.rs:231:9:231:9 | s [C] | provenance | |
| main.rs:231:15:231:20 | source | main.rs:231:13:231:24 | e.source(...) [C] | provenance | Src:MaD:4 |
| main.rs:231:15:231:20 | source | main.rs:231:13:231:24 | e.source(...) [C] | provenance | Src:MaD:4 |
| main.rs:232:11:232:11 | s [C] | main.rs:233:9:233:37 | ...::C {...} [C] | provenance | |
| main.rs:232:11:232:11 | s [C] | main.rs:233:9:233:37 | ...::C {...} [C] | provenance | |
| main.rs:233:9:233:37 | ...::C {...} [C] | main.rs:233:35:233:35 | i | provenance | |
| main.rs:233:9:233:37 | ...::C {...} [C] | main.rs:233:35:233:35 | i | provenance | |
| main.rs:233:35:233:35 | i | main.rs:233:47:233:47 | i | provenance | |
| main.rs:233:35:233:35 | i | main.rs:233:47:233:47 | i | provenance | |
| main.rs:242:9:242:9 | s | main.rs:243:41:243:41 | s | provenance | |
| main.rs:242:9:242:9 | s | main.rs:243:41:243:41 | s | provenance | |
| main.rs:242:13:242:22 | source(...) | main.rs:242:9:242:9 | s | provenance | |
| main.rs:242:13:242:22 | source(...) | main.rs:242:9:242:9 | s | provenance | |
| main.rs:243:15:243:43 | ...::C {...} [C] | main.rs:243:5:243:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 |
| main.rs:243:15:243:43 | ...::C {...} [C] | main.rs:243:5:243:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 |
| main.rs:243:41:243:41 | s | main.rs:243:15:243:43 | ...::C {...} [C] | provenance | |
| main.rs:243:41:243:41 | s | main.rs:243:15:243:43 | ...::C {...} [C] | provenance | |
| main.rs:248:9:248:9 | s | main.rs:249:39:249:39 | s | provenance | |
| main.rs:248:9:248:9 | s | main.rs:249:39:249:39 | s | provenance | |
| main.rs:248:13:248:22 | source(...) | main.rs:248:9:248:9 | s | provenance | |
| main.rs:248:13:248:22 | source(...) | main.rs:248:9:248:9 | s | provenance | |
| main.rs:249:9:249:9 | e [D] | main.rs:250:5:250:5 | e [D] | provenance | |
| main.rs:249:9:249:9 | e [D] | main.rs:250:5:250:5 | e [D] | provenance | |
| main.rs:249:13:249:41 | ...::D {...} [D] | main.rs:249:9:249:9 | e [D] | provenance | |
| main.rs:249:13:249:41 | ...::D {...} [D] | main.rs:249:9:249:9 | e [D] | provenance | |
| main.rs:249:39:249:39 | s | main.rs:249:13:249:41 | ...::D {...} [D] | provenance | |
| main.rs:249:39:249:39 | s | main.rs:249:13:249:41 | ...::D {...} [D] | provenance | |
| main.rs:250:5:250:5 | e [D] | main.rs:250:7:250:10 | sink | provenance | MaD:1 Sink:MaD:1 |
| main.rs:250:5:250:5 | e [D] | main.rs:250:7:250:10 | sink | provenance | MaD:1 Sink:MaD:1 |
| main.rs:259:9:259:9 | s | main.rs:260:10:260:10 | s | provenance | |
| main.rs:259:9:259:9 | s | main.rs:260:10:260:10 | s | provenance | |
| main.rs:259:13:259:25 | simple_source | main.rs:259:13:259:29 | simple_source(...) | provenance | Src:MaD:6 MaD:6 |
| main.rs:259:13:259:25 | simple_source | main.rs:259:13:259:29 | simple_source(...) | provenance | Src:MaD:6 MaD:6 |
| main.rs:259:13:259:29 | simple_source(...) | main.rs:259:9:259:9 | s | provenance | |
| main.rs:259:13:259:29 | simple_source(...) | main.rs:259:9:259:9 | s | provenance | |
| main.rs:267:9:267:9 | s | main.rs:268:17:268:17 | s | provenance | |
| main.rs:267:9:267:9 | s | main.rs:268:17:268:17 | s | provenance | |
| main.rs:267:13:267:22 | source(...) | main.rs:267:9:267:9 | s | provenance | |
| main.rs:267:13:267:22 | source(...) | main.rs:267:9:267:9 | s | provenance | |
| main.rs:268:17:268:17 | s | main.rs:268:5:268:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 |
| main.rs:268:17:268:17 | s | main.rs:268:5:268:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 |
| main.rs:212:9:212:9 | s | main.rs:213:30:213:30 | s | provenance | |
| main.rs:212:9:212:9 | s | main.rs:213:30:213:30 | s | provenance | |
| main.rs:212:13:212:22 | source(...) | main.rs:212:9:212:9 | s | provenance | |
| main.rs:212:13:212:22 | source(...) | main.rs:212:9:212:9 | s | provenance | |
| main.rs:213:9:213:9 | t | main.rs:214:10:214:10 | t | provenance | |
| main.rs:213:9:213:9 | t | main.rs:214:10:214:10 | t | provenance | |
| main.rs:213:13:213:31 | get_async_number(...) [future] | main.rs:213:13:213:37 | await ... | provenance | |
| main.rs:213:13:213:31 | get_async_number(...) [future] | main.rs:213:13:213:37 | await ... | provenance | |
| main.rs:213:13:213:37 | await ... | main.rs:213:9:213:9 | t | provenance | |
| main.rs:213:13:213:37 | await ... | main.rs:213:9:213:9 | t | provenance | |
| main.rs:213:30:213:30 | s | main.rs:213:13:213:31 | get_async_number(...) [future] | provenance | MaD:11 |
| main.rs:213:30:213:30 | s | main.rs:213:13:213:31 | get_async_number(...) [future] | provenance | MaD:11 |
| main.rs:233:9:233:9 | s [D] | main.rs:234:11:234:11 | s [D] | provenance | |
| main.rs:233:9:233:9 | s [D] | main.rs:234:11:234:11 | s [D] | provenance | |
| main.rs:233:13:233:23 | enum_source | main.rs:233:13:233:27 | enum_source(...) [D] | provenance | Src:MaD:5 |
| main.rs:233:13:233:23 | enum_source | main.rs:233:13:233:27 | enum_source(...) [D] | provenance | Src:MaD:5 |
| main.rs:233:13:233:27 | enum_source(...) [D] | main.rs:233:9:233:9 | s [D] | provenance | |
| main.rs:233:13:233:27 | enum_source(...) [D] | main.rs:233:9:233:9 | s [D] | provenance | |
| main.rs:234:11:234:11 | s [D] | main.rs:236:9:236:37 | ...::D {...} [D] | provenance | |
| main.rs:234:11:234:11 | s [D] | main.rs:236:9:236:37 | ...::D {...} [D] | provenance | |
| main.rs:236:9:236:37 | ...::D {...} [D] | main.rs:236:35:236:35 | i | provenance | |
| main.rs:236:9:236:37 | ...::D {...} [D] | main.rs:236:35:236:35 | i | provenance | |
| main.rs:236:35:236:35 | i | main.rs:236:47:236:47 | i | provenance | |
| main.rs:236:35:236:35 | i | main.rs:236:47:236:47 | i | provenance | |
| main.rs:242:9:242:9 | s [C] | main.rs:243:11:243:11 | s [C] | provenance | |
| main.rs:242:9:242:9 | s [C] | main.rs:243:11:243:11 | s [C] | provenance | |
| main.rs:242:13:242:24 | e.source(...) [C] | main.rs:242:9:242:9 | s [C] | provenance | |
| main.rs:242:13:242:24 | e.source(...) [C] | main.rs:242:9:242:9 | s [C] | provenance | |
| main.rs:242:15:242:20 | source | main.rs:242:13:242:24 | e.source(...) [C] | provenance | Src:MaD:4 |
| main.rs:242:15:242:20 | source | main.rs:242:13:242:24 | e.source(...) [C] | provenance | Src:MaD:4 |
| main.rs:243:11:243:11 | s [C] | main.rs:244:9:244:37 | ...::C {...} [C] | provenance | |
| main.rs:243:11:243:11 | s [C] | main.rs:244:9:244:37 | ...::C {...} [C] | provenance | |
| main.rs:244:9:244:37 | ...::C {...} [C] | main.rs:244:35:244:35 | i | provenance | |
| main.rs:244:9:244:37 | ...::C {...} [C] | main.rs:244:35:244:35 | i | provenance | |
| main.rs:244:35:244:35 | i | main.rs:244:47:244:47 | i | provenance | |
| main.rs:244:35:244:35 | i | main.rs:244:47:244:47 | i | provenance | |
| main.rs:253:9:253:9 | s | main.rs:254:41:254:41 | s | provenance | |
| main.rs:253:9:253:9 | s | main.rs:254:41:254:41 | s | provenance | |
| main.rs:253:13:253:22 | source(...) | main.rs:253:9:253:9 | s | provenance | |
| main.rs:253:13:253:22 | source(...) | main.rs:253:9:253:9 | s | provenance | |
| main.rs:254:15:254:43 | ...::C {...} [C] | main.rs:254:5:254:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 |
| main.rs:254:15:254:43 | ...::C {...} [C] | main.rs:254:5:254:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 |
| main.rs:254:41:254:41 | s | main.rs:254:15:254:43 | ...::C {...} [C] | provenance | |
| main.rs:254:41:254:41 | s | main.rs:254:15:254:43 | ...::C {...} [C] | provenance | |
| main.rs:259:9:259:9 | s | main.rs:260:39:260:39 | s | provenance | |
| main.rs:259:9:259:9 | s | main.rs:260:39:260:39 | s | provenance | |
| main.rs:259:13:259:22 | source(...) | main.rs:259:9:259:9 | s | provenance | |
| main.rs:259:13:259:22 | source(...) | main.rs:259:9:259:9 | s | provenance | |
| main.rs:260:9:260:9 | e [D] | main.rs:261:5:261:5 | e [D] | provenance | |
| main.rs:260:9:260:9 | e [D] | main.rs:261:5:261:5 | e [D] | provenance | |
| main.rs:260:13:260:41 | ...::D {...} [D] | main.rs:260:9:260:9 | e [D] | provenance | |
| main.rs:260:13:260:41 | ...::D {...} [D] | main.rs:260:9:260:9 | e [D] | provenance | |
| main.rs:260:39:260:39 | s | main.rs:260:13:260:41 | ...::D {...} [D] | provenance | |
| main.rs:260:39:260:39 | s | main.rs:260:13:260:41 | ...::D {...} [D] | provenance | |
| main.rs:261:5:261:5 | e [D] | main.rs:261:7:261:10 | sink | provenance | MaD:1 Sink:MaD:1 |
| main.rs:261:5:261:5 | e [D] | main.rs:261:7:261:10 | sink | provenance | MaD:1 Sink:MaD:1 |
| main.rs:270:9:270:9 | s | main.rs:271:10:271:10 | s | provenance | |
| main.rs:270:9:270:9 | s | main.rs:271:10:271:10 | s | provenance | |
| main.rs:270:13:270:25 | simple_source | main.rs:270:13:270:29 | simple_source(...) | provenance | Src:MaD:6 MaD:6 |
| main.rs:270:13:270:25 | simple_source | main.rs:270:13:270:29 | simple_source(...) | provenance | Src:MaD:6 MaD:6 |
| main.rs:270:13:270:29 | simple_source(...) | main.rs:270:9:270:9 | s | provenance | |
| main.rs:270:13:270:29 | simple_source(...) | main.rs:270:9:270:9 | s | provenance | |
| main.rs:278:9:278:9 | s | main.rs:279:17:279:17 | s | provenance | |
| main.rs:278:9:278:9 | s | main.rs:279:17:279:17 | s | provenance | |
| main.rs:278:13:278:22 | source(...) | main.rs:278:9:278:9 | s | provenance | |
| main.rs:278:13:278:22 | source(...) | main.rs:278:9:278:9 | s | provenance | |
| main.rs:279:17:279:17 | s | main.rs:279:5:279:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 |
| main.rs:279:17:279:17 | s | main.rs:279:5:279:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 |
nodes
| main.rs:15:9:15:9 | s | semmle.label | s |
| main.rs:15:9:15:9 | s | semmle.label | s |
@@ -416,74 +429,88 @@ nodes
| main.rs:202:19:202:19 | s | semmle.label | s |
| main.rs:203:10:203:10 | t | semmle.label | t |
| main.rs:203:10:203:10 | t | semmle.label | t |
| main.rs:222:9:222:9 | s [D] | semmle.label | s [D] |
| main.rs:222:9:222:9 | s [D] | semmle.label | s [D] |
| main.rs:222:13:222:23 | enum_source | semmle.label | enum_source |
| main.rs:222:13:222:23 | enum_source | semmle.label | enum_source |
| main.rs:222:13:222:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] |
| main.rs:222:13:222:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] |
| main.rs:223:11:223:11 | s [D] | semmle.label | s [D] |
| main.rs:223:11:223:11 | s [D] | semmle.label | s [D] |
| main.rs:225:9:225:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:225:9:225:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:225:35:225:35 | i | semmle.label | i |
| main.rs:225:35:225:35 | i | semmle.label | i |
| main.rs:225:47:225:47 | i | semmle.label | i |
| main.rs:225:47:225:47 | i | semmle.label | i |
| main.rs:231:9:231:9 | s [C] | semmle.label | s [C] |
| main.rs:231:9:231:9 | s [C] | semmle.label | s [C] |
| main.rs:231:13:231:24 | e.source(...) [C] | semmle.label | e.source(...) [C] |
| main.rs:231:13:231:24 | e.source(...) [C] | semmle.label | e.source(...) [C] |
| main.rs:231:15:231:20 | source | semmle.label | source |
| main.rs:231:15:231:20 | source | semmle.label | source |
| main.rs:232:11:232:11 | s [C] | semmle.label | s [C] |
| main.rs:232:11:232:11 | s [C] | semmle.label | s [C] |
| main.rs:233:9:233:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:233:9:233:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:233:35:233:35 | i | semmle.label | i |
| main.rs:233:35:233:35 | i | semmle.label | i |
| main.rs:233:47:233:47 | i | semmle.label | i |
| main.rs:233:47:233:47 | i | semmle.label | i |
| main.rs:242:9:242:9 | s | semmle.label | s |
| main.rs:242:9:242:9 | s | semmle.label | s |
| main.rs:242:13:242:22 | source(...) | semmle.label | source(...) |
| main.rs:242:13:242:22 | source(...) | semmle.label | source(...) |
| main.rs:243:5:243:13 | enum_sink | semmle.label | enum_sink |
| main.rs:243:5:243:13 | enum_sink | semmle.label | enum_sink |
| main.rs:243:15:243:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:243:15:243:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:243:41:243:41 | s | semmle.label | s |
| main.rs:243:41:243:41 | s | semmle.label | s |
| main.rs:248:9:248:9 | s | semmle.label | s |
| main.rs:248:9:248:9 | s | semmle.label | s |
| main.rs:248:13:248:22 | source(...) | semmle.label | source(...) |
| main.rs:248:13:248:22 | source(...) | semmle.label | source(...) |
| main.rs:249:9:249:9 | e [D] | semmle.label | e [D] |
| main.rs:249:9:249:9 | e [D] | semmle.label | e [D] |
| main.rs:249:13:249:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:249:13:249:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:249:39:249:39 | s | semmle.label | s |
| main.rs:249:39:249:39 | s | semmle.label | s |
| main.rs:250:5:250:5 | e [D] | semmle.label | e [D] |
| main.rs:250:5:250:5 | e [D] | semmle.label | e [D] |
| main.rs:250:7:250:10 | sink | semmle.label | sink |
| main.rs:250:7:250:10 | sink | semmle.label | sink |
| main.rs:212:9:212:9 | s | semmle.label | s |
| main.rs:212:9:212:9 | s | semmle.label | s |
| main.rs:212:13:212:22 | source(...) | semmle.label | source(...) |
| main.rs:212:13:212:22 | source(...) | semmle.label | source(...) |
| main.rs:213:9:213:9 | t | semmle.label | t |
| main.rs:213:9:213:9 | t | semmle.label | t |
| main.rs:213:13:213:31 | get_async_number(...) [future] | semmle.label | get_async_number(...) [future] |
| main.rs:213:13:213:31 | get_async_number(...) [future] | semmle.label | get_async_number(...) [future] |
| main.rs:213:13:213:37 | await ... | semmle.label | await ... |
| main.rs:213:13:213:37 | await ... | semmle.label | await ... |
| main.rs:213:30:213:30 | s | semmle.label | s |
| main.rs:213:30:213:30 | s | semmle.label | s |
| main.rs:214:10:214:10 | t | semmle.label | t |
| main.rs:214:10:214:10 | t | semmle.label | t |
| main.rs:233:9:233:9 | s [D] | semmle.label | s [D] |
| main.rs:233:9:233:9 | s [D] | semmle.label | s [D] |
| main.rs:233:13:233:23 | enum_source | semmle.label | enum_source |
| main.rs:233:13:233:23 | enum_source | semmle.label | enum_source |
| main.rs:233:13:233:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] |
| main.rs:233:13:233:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] |
| main.rs:234:11:234:11 | s [D] | semmle.label | s [D] |
| main.rs:234:11:234:11 | s [D] | semmle.label | s [D] |
| main.rs:236:9:236:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:236:9:236:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:236:35:236:35 | i | semmle.label | i |
| main.rs:236:35:236:35 | i | semmle.label | i |
| main.rs:236:47:236:47 | i | semmle.label | i |
| main.rs:236:47:236:47 | i | semmle.label | i |
| main.rs:242:9:242:9 | s [C] | semmle.label | s [C] |
| main.rs:242:9:242:9 | s [C] | semmle.label | s [C] |
| main.rs:242:13:242:24 | e.source(...) [C] | semmle.label | e.source(...) [C] |
| main.rs:242:13:242:24 | e.source(...) [C] | semmle.label | e.source(...) [C] |
| main.rs:242:15:242:20 | source | semmle.label | source |
| main.rs:242:15:242:20 | source | semmle.label | source |
| main.rs:243:11:243:11 | s [C] | semmle.label | s [C] |
| main.rs:243:11:243:11 | s [C] | semmle.label | s [C] |
| main.rs:244:9:244:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:244:9:244:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:244:35:244:35 | i | semmle.label | i |
| main.rs:244:35:244:35 | i | semmle.label | i |
| main.rs:244:47:244:47 | i | semmle.label | i |
| main.rs:244:47:244:47 | i | semmle.label | i |
| main.rs:253:9:253:9 | s | semmle.label | s |
| main.rs:253:9:253:9 | s | semmle.label | s |
| main.rs:253:13:253:22 | source(...) | semmle.label | source(...) |
| main.rs:253:13:253:22 | source(...) | semmle.label | source(...) |
| main.rs:254:5:254:13 | enum_sink | semmle.label | enum_sink |
| main.rs:254:5:254:13 | enum_sink | semmle.label | enum_sink |
| main.rs:254:15:254:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:254:15:254:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:254:41:254:41 | s | semmle.label | s |
| main.rs:254:41:254:41 | s | semmle.label | s |
| main.rs:259:9:259:9 | s | semmle.label | s |
| main.rs:259:9:259:9 | s | semmle.label | s |
| main.rs:259:13:259:25 | simple_source | semmle.label | simple_source |
| main.rs:259:13:259:25 | simple_source | semmle.label | simple_source |
| main.rs:259:13:259:29 | simple_source(...) | semmle.label | simple_source(...) |
| main.rs:259:13:259:29 | simple_source(...) | semmle.label | simple_source(...) |
| main.rs:260:10:260:10 | s | semmle.label | s |
| main.rs:260:10:260:10 | s | semmle.label | s |
| main.rs:267:9:267:9 | s | semmle.label | s |
| main.rs:267:9:267:9 | s | semmle.label | s |
| main.rs:267:13:267:22 | source(...) | semmle.label | source(...) |
| main.rs:267:13:267:22 | source(...) | semmle.label | source(...) |
| main.rs:268:5:268:15 | simple_sink | semmle.label | simple_sink |
| main.rs:268:5:268:15 | simple_sink | semmle.label | simple_sink |
| main.rs:268:17:268:17 | s | semmle.label | s |
| main.rs:268:17:268:17 | s | semmle.label | s |
| main.rs:259:13:259:22 | source(...) | semmle.label | source(...) |
| main.rs:259:13:259:22 | source(...) | semmle.label | source(...) |
| main.rs:260:9:260:9 | e [D] | semmle.label | e [D] |
| main.rs:260:9:260:9 | e [D] | semmle.label | e [D] |
| main.rs:260:13:260:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:260:13:260:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:260:39:260:39 | s | semmle.label | s |
| main.rs:260:39:260:39 | s | semmle.label | s |
| main.rs:261:5:261:5 | e [D] | semmle.label | e [D] |
| main.rs:261:5:261:5 | e [D] | semmle.label | e [D] |
| main.rs:261:7:261:10 | sink | semmle.label | sink |
| main.rs:261:7:261:10 | sink | semmle.label | sink |
| main.rs:270:9:270:9 | s | semmle.label | s |
| main.rs:270:9:270:9 | s | semmle.label | s |
| main.rs:270:13:270:25 | simple_source | semmle.label | simple_source |
| main.rs:270:13:270:25 | simple_source | semmle.label | simple_source |
| main.rs:270:13:270:29 | simple_source(...) | semmle.label | simple_source(...) |
| main.rs:270:13:270:29 | simple_source(...) | semmle.label | simple_source(...) |
| main.rs:271:10:271:10 | s | semmle.label | s |
| main.rs:271:10:271:10 | s | semmle.label | s |
| main.rs:278:9:278:9 | s | semmle.label | s |
| main.rs:278:9:278:9 | s | semmle.label | s |
| main.rs:278:13:278:22 | source(...) | semmle.label | source(...) |
| main.rs:278:13:278:22 | source(...) | semmle.label | source(...) |
| main.rs:279:5:279:15 | simple_sink | semmle.label | simple_sink |
| main.rs:279:5:279:15 | simple_sink | semmle.label | simple_sink |
| main.rs:279:17:279:17 | s | semmle.label | s |
| main.rs:279:17:279:17 | s | semmle.label | s |
subpaths
| main.rs:195:23:195:23 | f [captured s] | main.rs:194:40:194:40 | s | main.rs:194:17:194:42 | if ... {...} else {...} | main.rs:195:13:195:24 | apply(...) |
| main.rs:195:23:195:23 | f [captured s] | main.rs:194:40:194:40 | s | main.rs:194:17:194:42 | if ... {...} else {...} | main.rs:195:13:195:24 | apply(...) |
@@ -519,15 +546,17 @@ invalidSpecComponent
| main.rs:196:10:196:10 | t | main.rs:193:13:193:22 | source(...) | main.rs:196:10:196:10 | t | $@ | main.rs:193:13:193:22 | source(...) | source(...) |
| main.rs:203:10:203:10 | t | main.rs:200:13:200:22 | source(...) | main.rs:203:10:203:10 | t | $@ | main.rs:200:13:200:22 | source(...) | source(...) |
| main.rs:203:10:203:10 | t | main.rs:200:13:200:22 | source(...) | main.rs:203:10:203:10 | t | $@ | main.rs:200:13:200:22 | source(...) | source(...) |
| main.rs:225:47:225:47 | i | main.rs:222:13:222:23 | enum_source | main.rs:225:47:225:47 | i | $@ | main.rs:222:13:222:23 | enum_source | enum_source |
| main.rs:225:47:225:47 | i | main.rs:222:13:222:23 | enum_source | main.rs:225:47:225:47 | i | $@ | main.rs:222:13:222:23 | enum_source | enum_source |
| main.rs:233:47:233:47 | i | main.rs:231:15:231:20 | source | main.rs:233:47:233:47 | i | $@ | main.rs:231:15:231:20 | source | source |
| main.rs:233:47:233:47 | i | main.rs:231:15:231:20 | source | main.rs:233:47:233:47 | i | $@ | main.rs:231:15:231:20 | source | source |
| main.rs:243:5:243:13 | enum_sink | main.rs:242:13:242:22 | source(...) | main.rs:243:5:243:13 | enum_sink | $@ | main.rs:242:13:242:22 | source(...) | source(...) |
| main.rs:243:5:243:13 | enum_sink | main.rs:242:13:242:22 | source(...) | main.rs:243:5:243:13 | enum_sink | $@ | main.rs:242:13:242:22 | source(...) | source(...) |
| main.rs:250:7:250:10 | sink | main.rs:248:13:248:22 | source(...) | main.rs:250:7:250:10 | sink | $@ | main.rs:248:13:248:22 | source(...) | source(...) |
| main.rs:250:7:250:10 | sink | main.rs:248:13:248:22 | source(...) | main.rs:250:7:250:10 | sink | $@ | main.rs:248:13:248:22 | source(...) | source(...) |
| main.rs:260:10:260:10 | s | main.rs:259:13:259:25 | simple_source | main.rs:260:10:260:10 | s | $@ | main.rs:259:13:259:25 | simple_source | simple_source |
| main.rs:260:10:260:10 | s | main.rs:259:13:259:25 | simple_source | main.rs:260:10:260:10 | s | $@ | main.rs:259:13:259:25 | simple_source | simple_source |
| main.rs:268:5:268:15 | simple_sink | main.rs:267:13:267:22 | source(...) | main.rs:268:5:268:15 | simple_sink | $@ | main.rs:267:13:267:22 | source(...) | source(...) |
| main.rs:268:5:268:15 | simple_sink | main.rs:267:13:267:22 | source(...) | main.rs:268:5:268:15 | simple_sink | $@ | main.rs:267:13:267:22 | source(...) | source(...) |
| main.rs:214:10:214:10 | t | main.rs:212:13:212:22 | source(...) | main.rs:214:10:214:10 | t | $@ | main.rs:212:13:212:22 | source(...) | source(...) |
| main.rs:214:10:214:10 | t | main.rs:212:13:212:22 | source(...) | main.rs:214:10:214:10 | t | $@ | main.rs:212:13:212:22 | source(...) | source(...) |
| main.rs:236:47:236:47 | i | main.rs:233:13:233:23 | enum_source | main.rs:236:47:236:47 | i | $@ | main.rs:233:13:233:23 | enum_source | enum_source |
| main.rs:236:47:236:47 | i | main.rs:233:13:233:23 | enum_source | main.rs:236:47:236:47 | i | $@ | main.rs:233:13:233:23 | enum_source | enum_source |
| main.rs:244:47:244:47 | i | main.rs:242:15:242:20 | source | main.rs:244:47:244:47 | i | $@ | main.rs:242:15:242:20 | source | source |
| main.rs:244:47:244:47 | i | main.rs:242:15:242:20 | source | main.rs:244:47:244:47 | i | $@ | main.rs:242:15:242:20 | source | source |
| main.rs:254:5:254:13 | enum_sink | main.rs:253:13:253:22 | source(...) | main.rs:254:5:254:13 | enum_sink | $@ | main.rs:253:13:253:22 | source(...) | source(...) |
| main.rs:254:5:254:13 | enum_sink | main.rs:253:13:253:22 | source(...) | main.rs:254:5:254:13 | enum_sink | $@ | main.rs:253:13:253:22 | source(...) | source(...) |
| main.rs:261:7:261:10 | sink | main.rs:259:13:259:22 | source(...) | main.rs:261:7:261:10 | sink | $@ | main.rs:259:13:259:22 | source(...) | source(...) |
| main.rs:261:7:261:10 | sink | main.rs:259:13:259:22 | source(...) | main.rs:261:7:261:10 | sink | $@ | main.rs:259:13:259:22 | source(...) | source(...) |
| main.rs:271:10:271:10 | s | main.rs:270:13:270:25 | simple_source | main.rs:271:10:271:10 | s | $@ | main.rs:270:13:270:25 | simple_source | simple_source |
| main.rs:271:10:271:10 | s | main.rs:270:13:270:25 | simple_source | main.rs:271:10:271:10 | s | $@ | main.rs:270:13:270:25 | simple_source | simple_source |
| main.rs:279:5:279:15 | simple_sink | main.rs:278:13:278:22 | source(...) | main.rs:279:5:279:15 | simple_sink | $@ | main.rs:278:13:278:22 | source(...) | source(...) |
| main.rs:279:5:279:15 | simple_sink | main.rs:278:13:278:22 | source(...) | main.rs:279:5:279:15 | simple_sink | $@ | main.rs:278:13:278:22 | source(...) | source(...) |

View File

@@ -30,3 +30,4 @@ extensions:
- ["repo::test", "crate::set_tuple_element", "Argument[0]", "ReturnValue.Tuple[1]", "value", "manual"]
- ["repo::test", "crate::apply", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"]
- ["repo::test", "crate::apply", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"]
- ["repo::test", "crate::get_async_number", "Argument[0]", "ReturnValue.Future", "value", "manual"]

View File

@@ -0,0 +1,2 @@
qltest_dependencies:
- tokio = { version = "1", features = ["full"] }

View File

@@ -8,42 +8,45 @@ edges
| main.rs:15:9:15:9 | c | main.rs:16:10:16:10 | c | provenance | |
| main.rs:15:13:15:14 | * ... | main.rs:15:9:15:9 | c | provenance | |
| main.rs:15:14:15:14 | b [&ref] | main.rs:15:13:15:14 | * ... | provenance | |
| main.rs:35:25:35:26 | &... [&ref] | main.rs:35:26:35:26 | n | provenance | |
| main.rs:35:25:35:32 | ...: ... [&ref] | main.rs:35:25:35:26 | &... [&ref] | provenance | |
| main.rs:35:26:35:26 | n | main.rs:36:10:36:10 | n | provenance | |
| main.rs:40:9:40:11 | val | main.rs:41:27:41:29 | val | provenance | |
| main.rs:40:15:40:24 | source(...) | main.rs:40:9:40:11 | val | provenance | |
| main.rs:41:26:41:29 | &val [&ref] | main.rs:35:25:35:32 | ...: ... [&ref] | provenance | |
| main.rs:41:27:41:29 | val | main.rs:41:26:41:29 | &val [&ref] | provenance | |
| main.rs:49:18:49:21 | SelfParam [MyNumber] | main.rs:50:15:50:18 | self [MyNumber] | provenance | |
| main.rs:50:15:50:18 | self [MyNumber] | main.rs:51:13:51:38 | ...::MyNumber(...) [MyNumber] | provenance | |
| main.rs:51:13:51:38 | ...::MyNumber(...) [MyNumber] | main.rs:51:32:51:37 | number | provenance | |
| main.rs:51:32:51:37 | number | main.rs:49:31:55:5 | { ... } | provenance | |
| main.rs:57:19:57:23 | SelfParam [&ref, MyNumber] | main.rs:58:15:58:18 | self [&ref, MyNumber] | provenance | |
| main.rs:58:15:58:18 | self [&ref, MyNumber] | main.rs:59:13:59:39 | &... [&ref, MyNumber] | provenance | |
| main.rs:59:13:59:39 | &... [&ref, MyNumber] | main.rs:59:14:59:39 | ...::MyNumber(...) [MyNumber] | provenance | |
| main.rs:59:14:59:39 | ...::MyNumber(...) [MyNumber] | main.rs:59:33:59:38 | number | provenance | |
| main.rs:59:33:59:38 | number | main.rs:57:33:63:5 | { ... } | provenance | |
| main.rs:67:9:67:17 | my_number [MyNumber] | main.rs:68:10:68:18 | my_number [MyNumber] | provenance | |
| main.rs:67:21:67:50 | ...::MyNumber(...) [MyNumber] | main.rs:67:9:67:17 | my_number [MyNumber] | provenance | |
| main.rs:67:40:67:49 | source(...) | main.rs:67:21:67:50 | ...::MyNumber(...) [MyNumber] | provenance | |
| main.rs:68:10:68:18 | my_number [MyNumber] | main.rs:49:18:49:21 | SelfParam [MyNumber] | provenance | |
| main.rs:68:10:68:18 | my_number [MyNumber] | main.rs:68:10:68:30 | my_number.to_number(...) | provenance | |
| main.rs:77:9:77:17 | my_number [&ref, MyNumber] | main.rs:78:10:78:18 | my_number [&ref, MyNumber] | provenance | |
| main.rs:77:21:77:51 | &... [&ref, MyNumber] | main.rs:77:9:77:17 | my_number [&ref, MyNumber] | provenance | |
| main.rs:77:22:77:51 | ...::MyNumber(...) [MyNumber] | main.rs:77:21:77:51 | &... [&ref, MyNumber] | provenance | |
| main.rs:77:41:77:50 | source(...) | main.rs:77:22:77:51 | ...::MyNumber(...) [MyNumber] | provenance | |
| main.rs:78:10:78:18 | my_number [&ref, MyNumber] | main.rs:57:19:57:23 | SelfParam [&ref, MyNumber] | provenance | |
| main.rs:78:10:78:18 | my_number [&ref, MyNumber] | main.rs:78:10:78:31 | my_number.get_number(...) | provenance | |
| main.rs:82:9:82:9 | a [&ref, tuple.0] | main.rs:85:19:85:19 | a [&ref, tuple.0] | provenance | |
| main.rs:82:13:82:28 | &... [&ref, tuple.0] | main.rs:82:9:82:9 | a [&ref, tuple.0] | provenance | |
| main.rs:82:14:82:28 | TupleExpr [tuple.0] | main.rs:82:13:82:28 | &... [&ref, tuple.0] | provenance | |
| main.rs:82:15:82:24 | source(...) | main.rs:82:14:82:28 | TupleExpr [tuple.0] | provenance | |
| main.rs:85:9:85:9 | b | main.rs:88:10:88:10 | b | provenance | |
| main.rs:85:19:85:19 | a [&ref, tuple.0] | main.rs:86:9:86:15 | &... [&ref, tuple.0] | provenance | |
| main.rs:86:9:86:15 | &... [&ref, tuple.0] | main.rs:86:10:86:15 | TuplePat [tuple.0] | provenance | |
| main.rs:86:10:86:15 | TuplePat [tuple.0] | main.rs:86:11:86:11 | n | provenance | |
| main.rs:86:11:86:11 | n | main.rs:85:9:85:9 | b | provenance | |
| main.rs:31:6:31:6 | [post] b [&ref] | main.rs:32:11:32:11 | b [&ref] | provenance | |
| main.rs:31:10:31:19 | source(...) | main.rs:31:6:31:6 | [post] b [&ref] | provenance | |
| main.rs:32:11:32:11 | b [&ref] | main.rs:32:10:32:11 | * ... | provenance | |
| main.rs:37:25:37:26 | &... [&ref] | main.rs:37:26:37:26 | n | provenance | |
| main.rs:37:25:37:32 | ...: ... [&ref] | main.rs:37:25:37:26 | &... [&ref] | provenance | |
| main.rs:37:26:37:26 | n | main.rs:38:10:38:10 | n | provenance | |
| main.rs:42:9:42:11 | val | main.rs:43:27:43:29 | val | provenance | |
| main.rs:42:15:42:24 | source(...) | main.rs:42:9:42:11 | val | provenance | |
| main.rs:43:26:43:29 | &val [&ref] | main.rs:37:25:37:32 | ...: ... [&ref] | provenance | |
| main.rs:43:27:43:29 | val | main.rs:43:26:43:29 | &val [&ref] | provenance | |
| main.rs:51:18:51:21 | SelfParam [MyNumber] | main.rs:52:15:52:18 | self [MyNumber] | provenance | |
| main.rs:52:15:52:18 | self [MyNumber] | main.rs:53:13:53:38 | ...::MyNumber(...) [MyNumber] | provenance | |
| main.rs:53:13:53:38 | ...::MyNumber(...) [MyNumber] | main.rs:53:32:53:37 | number | provenance | |
| main.rs:53:32:53:37 | number | main.rs:51:31:57:5 | { ... } | provenance | |
| main.rs:59:19:59:23 | SelfParam [&ref, MyNumber] | main.rs:60:15:60:18 | self [&ref, MyNumber] | provenance | |
| main.rs:60:15:60:18 | self [&ref, MyNumber] | main.rs:61:13:61:39 | &... [&ref, MyNumber] | provenance | |
| main.rs:61:13:61:39 | &... [&ref, MyNumber] | main.rs:61:14:61:39 | ...::MyNumber(...) [MyNumber] | provenance | |
| main.rs:61:14:61:39 | ...::MyNumber(...) [MyNumber] | main.rs:61:33:61:38 | number | provenance | |
| main.rs:61:33:61:38 | number | main.rs:59:33:65:5 | { ... } | provenance | |
| main.rs:69:9:69:17 | my_number [MyNumber] | main.rs:70:10:70:18 | my_number [MyNumber] | provenance | |
| main.rs:69:21:69:50 | ...::MyNumber(...) [MyNumber] | main.rs:69:9:69:17 | my_number [MyNumber] | provenance | |
| main.rs:69:40:69:49 | source(...) | main.rs:69:21:69:50 | ...::MyNumber(...) [MyNumber] | provenance | |
| main.rs:70:10:70:18 | my_number [MyNumber] | main.rs:51:18:51:21 | SelfParam [MyNumber] | provenance | |
| main.rs:70:10:70:18 | my_number [MyNumber] | main.rs:70:10:70:30 | my_number.to_number(...) | provenance | |
| main.rs:79:9:79:17 | my_number [&ref, MyNumber] | main.rs:80:10:80:18 | my_number [&ref, MyNumber] | provenance | |
| main.rs:79:21:79:51 | &... [&ref, MyNumber] | main.rs:79:9:79:17 | my_number [&ref, MyNumber] | provenance | |
| main.rs:79:22:79:51 | ...::MyNumber(...) [MyNumber] | main.rs:79:21:79:51 | &... [&ref, MyNumber] | provenance | |
| main.rs:79:41:79:50 | source(...) | main.rs:79:22:79:51 | ...::MyNumber(...) [MyNumber] | provenance | |
| main.rs:80:10:80:18 | my_number [&ref, MyNumber] | main.rs:59:19:59:23 | SelfParam [&ref, MyNumber] | provenance | |
| main.rs:80:10:80:18 | my_number [&ref, MyNumber] | main.rs:80:10:80:31 | my_number.get_number(...) | provenance | |
| main.rs:84:9:84:9 | a [&ref, tuple.0] | main.rs:87:19:87:19 | a [&ref, tuple.0] | provenance | |
| main.rs:84:13:84:28 | &... [&ref, tuple.0] | main.rs:84:9:84:9 | a [&ref, tuple.0] | provenance | |
| main.rs:84:14:84:28 | TupleExpr [tuple.0] | main.rs:84:13:84:28 | &... [&ref, tuple.0] | provenance | |
| main.rs:84:15:84:24 | source(...) | main.rs:84:14:84:28 | TupleExpr [tuple.0] | provenance | |
| main.rs:87:9:87:9 | b | main.rs:90:10:90:10 | b | provenance | |
| main.rs:87:19:87:19 | a [&ref, tuple.0] | main.rs:88:9:88:15 | &... [&ref, tuple.0] | provenance | |
| main.rs:88:9:88:15 | &... [&ref, tuple.0] | main.rs:88:10:88:15 | TuplePat [tuple.0] | provenance | |
| main.rs:88:10:88:15 | TuplePat [tuple.0] | main.rs:88:11:88:11 | n | provenance | |
| main.rs:88:11:88:11 | n | main.rs:87:9:87:9 | b | provenance | |
nodes
| main.rs:13:9:13:9 | a | semmle.label | a |
| main.rs:13:13:13:22 | source(...) | semmle.label | source(...) |
@@ -54,53 +57,58 @@ nodes
| main.rs:15:13:15:14 | * ... | semmle.label | * ... |
| main.rs:15:14:15:14 | b [&ref] | semmle.label | b [&ref] |
| main.rs:16:10:16:10 | c | semmle.label | c |
| main.rs:35:25:35:26 | &... [&ref] | semmle.label | &... [&ref] |
| main.rs:35:25:35:32 | ...: ... [&ref] | semmle.label | ...: ... [&ref] |
| main.rs:35:26:35:26 | n | semmle.label | n |
| main.rs:36:10:36:10 | n | semmle.label | n |
| main.rs:40:9:40:11 | val | semmle.label | val |
| main.rs:40:15:40:24 | source(...) | semmle.label | source(...) |
| main.rs:41:26:41:29 | &val [&ref] | semmle.label | &val [&ref] |
| main.rs:41:27:41:29 | val | semmle.label | val |
| main.rs:49:18:49:21 | SelfParam [MyNumber] | semmle.label | SelfParam [MyNumber] |
| main.rs:49:31:55:5 | { ... } | semmle.label | { ... } |
| main.rs:50:15:50:18 | self [MyNumber] | semmle.label | self [MyNumber] |
| main.rs:51:13:51:38 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
| main.rs:51:32:51:37 | number | semmle.label | number |
| main.rs:57:19:57:23 | SelfParam [&ref, MyNumber] | semmle.label | SelfParam [&ref, MyNumber] |
| main.rs:57:33:63:5 | { ... } | semmle.label | { ... } |
| main.rs:58:15:58:18 | self [&ref, MyNumber] | semmle.label | self [&ref, MyNumber] |
| main.rs:59:13:59:39 | &... [&ref, MyNumber] | semmle.label | &... [&ref, MyNumber] |
| main.rs:59:14:59:39 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
| main.rs:59:33:59:38 | number | semmle.label | number |
| main.rs:67:9:67:17 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
| main.rs:67:21:67:50 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
| main.rs:67:40:67:49 | source(...) | semmle.label | source(...) |
| main.rs:68:10:68:18 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
| main.rs:68:10:68:30 | my_number.to_number(...) | semmle.label | my_number.to_number(...) |
| main.rs:77:9:77:17 | my_number [&ref, MyNumber] | semmle.label | my_number [&ref, MyNumber] |
| main.rs:77:21:77:51 | &... [&ref, MyNumber] | semmle.label | &... [&ref, MyNumber] |
| main.rs:77:22:77:51 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
| main.rs:77:41:77:50 | source(...) | semmle.label | source(...) |
| main.rs:78:10:78:18 | my_number [&ref, MyNumber] | semmle.label | my_number [&ref, MyNumber] |
| main.rs:78:10:78:31 | my_number.get_number(...) | semmle.label | my_number.get_number(...) |
| main.rs:82:9:82:9 | a [&ref, tuple.0] | semmle.label | a [&ref, tuple.0] |
| main.rs:82:13:82:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] |
| main.rs:82:14:82:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] |
| main.rs:82:15:82:24 | source(...) | semmle.label | source(...) |
| main.rs:85:9:85:9 | b | semmle.label | b |
| main.rs:85:19:85:19 | a [&ref, tuple.0] | semmle.label | a [&ref, tuple.0] |
| main.rs:86:9:86:15 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] |
| main.rs:86:10:86:15 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] |
| main.rs:86:11:86:11 | n | semmle.label | n |
| main.rs:88:10:88:10 | b | semmle.label | b |
| main.rs:31:6:31:6 | [post] b [&ref] | semmle.label | [post] b [&ref] |
| main.rs:31:10:31:19 | source(...) | semmle.label | source(...) |
| main.rs:32:10:32:11 | * ... | semmle.label | * ... |
| main.rs:32:11:32:11 | b [&ref] | semmle.label | b [&ref] |
| main.rs:37:25:37:26 | &... [&ref] | semmle.label | &... [&ref] |
| main.rs:37:25:37:32 | ...: ... [&ref] | semmle.label | ...: ... [&ref] |
| main.rs:37:26:37:26 | n | semmle.label | n |
| main.rs:38:10:38:10 | n | semmle.label | n |
| main.rs:42:9:42:11 | val | semmle.label | val |
| main.rs:42:15:42:24 | source(...) | semmle.label | source(...) |
| main.rs:43:26:43:29 | &val [&ref] | semmle.label | &val [&ref] |
| main.rs:43:27:43:29 | val | semmle.label | val |
| main.rs:51:18:51:21 | SelfParam [MyNumber] | semmle.label | SelfParam [MyNumber] |
| main.rs:51:31:57:5 | { ... } | semmle.label | { ... } |
| main.rs:52:15:52:18 | self [MyNumber] | semmle.label | self [MyNumber] |
| main.rs:53:13:53:38 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
| main.rs:53:32:53:37 | number | semmle.label | number |
| main.rs:59:19:59:23 | SelfParam [&ref, MyNumber] | semmle.label | SelfParam [&ref, MyNumber] |
| main.rs:59:33:65:5 | { ... } | semmle.label | { ... } |
| main.rs:60:15:60:18 | self [&ref, MyNumber] | semmle.label | self [&ref, MyNumber] |
| main.rs:61:13:61:39 | &... [&ref, MyNumber] | semmle.label | &... [&ref, MyNumber] |
| main.rs:61:14:61:39 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
| main.rs:61:33:61:38 | number | semmle.label | number |
| main.rs:69:9:69:17 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
| main.rs:69:21:69:50 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
| main.rs:69:40:69:49 | source(...) | semmle.label | source(...) |
| main.rs:70:10:70:18 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
| main.rs:70:10:70:30 | my_number.to_number(...) | semmle.label | my_number.to_number(...) |
| main.rs:79:9:79:17 | my_number [&ref, MyNumber] | semmle.label | my_number [&ref, MyNumber] |
| main.rs:79:21:79:51 | &... [&ref, MyNumber] | semmle.label | &... [&ref, MyNumber] |
| main.rs:79:22:79:51 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
| main.rs:79:41:79:50 | source(...) | semmle.label | source(...) |
| main.rs:80:10:80:18 | my_number [&ref, MyNumber] | semmle.label | my_number [&ref, MyNumber] |
| main.rs:80:10:80:31 | my_number.get_number(...) | semmle.label | my_number.get_number(...) |
| main.rs:84:9:84:9 | a [&ref, tuple.0] | semmle.label | a [&ref, tuple.0] |
| main.rs:84:13:84:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] |
| main.rs:84:14:84:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] |
| main.rs:84:15:84:24 | source(...) | semmle.label | source(...) |
| main.rs:87:9:87:9 | b | semmle.label | b |
| main.rs:87:19:87:19 | a [&ref, tuple.0] | semmle.label | a [&ref, tuple.0] |
| main.rs:88:9:88:15 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] |
| main.rs:88:10:88:15 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] |
| main.rs:88:11:88:11 | n | semmle.label | n |
| main.rs:90:10:90:10 | b | semmle.label | b |
subpaths
| main.rs:68:10:68:18 | my_number [MyNumber] | main.rs:49:18:49:21 | SelfParam [MyNumber] | main.rs:49:31:55:5 | { ... } | main.rs:68:10:68:30 | my_number.to_number(...) |
| main.rs:78:10:78:18 | my_number [&ref, MyNumber] | main.rs:57:19:57:23 | SelfParam [&ref, MyNumber] | main.rs:57:33:63:5 | { ... } | main.rs:78:10:78:31 | my_number.get_number(...) |
| main.rs:70:10:70:18 | my_number [MyNumber] | main.rs:51:18:51:21 | SelfParam [MyNumber] | main.rs:51:31:57:5 | { ... } | main.rs:70:10:70:30 | my_number.to_number(...) |
| main.rs:80:10:80:18 | my_number [&ref, MyNumber] | main.rs:59:19:59:23 | SelfParam [&ref, MyNumber] | main.rs:59:33:65:5 | { ... } | main.rs:80:10:80:31 | my_number.get_number(...) |
testFailures
#select
| main.rs:16:10:16:10 | c | main.rs:13:13:13:22 | source(...) | main.rs:16:10:16:10 | c | $@ | main.rs:13:13:13:22 | source(...) | source(...) |
| main.rs:36:10:36:10 | n | main.rs:40:15:40:24 | source(...) | main.rs:36:10:36:10 | n | $@ | main.rs:40:15:40:24 | source(...) | source(...) |
| main.rs:68:10:68:30 | my_number.to_number(...) | main.rs:67:40:67:49 | source(...) | main.rs:68:10:68:30 | my_number.to_number(...) | $@ | main.rs:67:40:67:49 | source(...) | source(...) |
| main.rs:78:10:78:31 | my_number.get_number(...) | main.rs:77:41:77:50 | source(...) | main.rs:78:10:78:31 | my_number.get_number(...) | $@ | main.rs:77:41:77:50 | source(...) | source(...) |
| main.rs:88:10:88:10 | b | main.rs:82:15:82:24 | source(...) | main.rs:88:10:88:10 | b | $@ | main.rs:82:15:82:24 | source(...) | source(...) |
| main.rs:32:10:32:11 | * ... | main.rs:31:10:31:19 | source(...) | main.rs:32:10:32:11 | * ... | $@ | main.rs:31:10:31:19 | source(...) | source(...) |
| main.rs:38:10:38:10 | n | main.rs:42:15:42:24 | source(...) | main.rs:38:10:38:10 | n | $@ | main.rs:42:15:42:24 | source(...) | source(...) |
| main.rs:70:10:70:30 | my_number.to_number(...) | main.rs:69:40:69:49 | source(...) | main.rs:70:10:70:30 | my_number.to_number(...) | $@ | main.rs:69:40:69:49 | source(...) | source(...) |
| main.rs:80:10:80:31 | my_number.get_number(...) | main.rs:79:41:79:50 | source(...) | main.rs:80:10:80:31 | my_number.get_number(...) | $@ | main.rs:79:41:79:50 | source(...) | source(...) |
| main.rs:90:10:90:10 | b | main.rs:84:15:84:24 | source(...) | main.rs:90:10:90:10 | b | $@ | main.rs:84:15:84:24 | source(...) | source(...) |

View File

@@ -29,7 +29,9 @@ fn write_and_read_through_borrow() {
let b = &mut a;
sink(*b);
*b = source(37);
sink(*b); // $ MISSING: hasValueFlow=37
sink(*b); // $ hasValueFlow=37
*b = 0;
sink(*b); // now cleared
}
fn takes_borrowed_value(&n: &i64) {

View File

@@ -19,3 +19,6 @@
| test.rs:72:26:72:37 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). |
| test.rs:75:26:75:37 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). |
| test.rs:78:24:78:35 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). |
| test.rs:110:35:110:46 | send_request | Flow source 'RemoteSource' of type remote (DEFAULT). |
| test.rs:117:31:117:42 | send_request | Flow source 'RemoteSource' of type remote (DEFAULT). |
| test.rs:201:16:201:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs. |

View File

@@ -1,3 +1,9 @@
qltest_cargo_check: true
qltest_dependencies:
- reqwest = { version = "0.12.9", features = ["blocking"] }
- hyper = { version = "1.5.2", features = ["full"] }
- hyper-util = { version = "0.1.10", features = ["full"] }
- http-body-util = { version = "0.1.2" }
- http = { version = "1.2.0" }
- tokio = { version = "1.43.0", features = ["full"] }
- futures = { version = "0.3" }

View File

@@ -82,3 +82,130 @@ async fn test_reqwest() -> Result<(), reqwest::Error> {
Ok(())
}
use std::io::Write;
use http_body_util::BodyExt;
async fn test_hyper_http(case: i64) -> Result<(), Box<dyn std::error::Error>> {
// using http + hyper libs to fetch a web page
let address = "example.com:80";
let url = "http://example.com/";
// create the connection
println!("connecting to {}...", address);
let stream = tokio::net::TcpStream::connect(address).await?;
let io = hyper_util::rt::TokioIo::new(stream);
let (mut sender, conn) = hyper::client::conn::http1::handshake(io).await?;
// drive the HTTP connection
tokio::task::spawn(async move {
conn.await.expect("connection failed");
});
// make the request
println!("sending request...");
if (case == 0) {
// simple flow case
let request = http::Request::builder().uri(url).body(String::from(""))?;
let mut response = sender.send_request(request).await?; // $ Alert[rust/summary/taint-sources]
sink(&response); // $ hasTaintFlow=request
sink(response); // $ hasTaintFlow=request
return Ok(())
}
// more realistic uses of results...
let request = http::Request::builder().uri(url).body(String::from(""))?;
let mut response = sender.send_request(request).await?; // $ Alert[rust/summary/taint-sources]
sink(&response); // $ MISSING: hasTaintFlow=request
if !response.status().is_success() {
return Err("request failed".into())
}
match case {
1 => {
sink(response.body()); // $ MISSING: hasTaintFlow
sink(response.body_mut()); // $ MISSING: hasTaintFlow
let body = response.into_body();
sink(&body); // $ MISSING: hasTaintFlow
println!("awaiting response...");
let data = body.collect().await?;
sink(&data); // $ MISSING: hasTaintFlow
let bytes = data.to_bytes();
println!("bytes = {:?}", &bytes);
sink(bytes); // $ MISSING: hasTaintFlow
}
2 => {
println!("streaming response...");
while let Some(frame) = response.frame().await {
if let Some(data) = frame?.data_ref() {
std::io::stdout().write_all(data)?;
sink(data); // $ MISSING: hasTaintFlow
sink(data[0]); // $ MISSING: hasTaintFlow
for byte in data {
sink(byte); // $ MISSING: hasTaintFlow
}
}
}
}
3 => {
let headers = response.headers();
if headers.contains_key(http::header::CONTENT_TYPE) {
println!("CONTENT_TYPE = {}", response.headers()[http::header::CONTENT_TYPE].to_str().unwrap());
sink(&headers[http::header::CONTENT_TYPE]); // $ MISSING: hasTaintFlow
sink(headers[http::header::CONTENT_TYPE].to_str().unwrap()); // $ MISSING: hasTaintFlow
sink(headers[http::header::CONTENT_TYPE].as_bytes()); // $ MISSING: hasTaintFlow
sink(headers.get(http::header::CONTENT_TYPE).unwrap()); // $ MISSING: hasTaintFlow
}
if headers.contains_key("Content-type") {
println!("Content-type = {}", response.headers().get("Content-type").unwrap().to_str().unwrap());
sink(headers.get("Content-type").unwrap()); // $ MISSING: hasTaintFlow
sink(headers.get("Content-type").unwrap().to_str().unwrap()); // $ MISSING: hasTaintFlow
sink(headers.get("Content-type").unwrap().as_bytes()); // $ MISSING: hasTaintFlow
sink(&headers["Content-type"]); // $ MISSING: hasTaintFlow
}
if headers.contains_key(http::header::COOKIE) {
sink(response.headers().get(http::header::COOKIE)); // $ MISSING: hasTaintFlow
for cookie in headers.get_all(http::header::COOKIE) {
println!("cookie = {}", cookie.to_str().unwrap());
sink(cookie); // $ MISSING: hasTaintFlow
sink(cookie.to_str().unwrap()); // $ MISSING: hasTaintFlow
}
}
let (parts, body) = response.into_parts();
if parts.headers.contains_key(http::header::CONTENT_TYPE) {
println!("CONTENT_TYPE = {}", parts.headers[http::header::CONTENT_TYPE].to_str().unwrap());
sink(&parts.headers[http::header::CONTENT_TYPE]); // $ MISSING: hasTaintFlow
sink(parts.headers[http::header::CONTENT_TYPE].to_str().unwrap()); // $ MISSING: hasTaintFlow
sink(parts.headers[http::header::CONTENT_TYPE].as_bytes()); // $ MISSING: hasTaintFlow
sink(parts.headers.get(http::header::CONTENT_TYPE).unwrap()); // $ MISSING: hasTaintFlow
}
sink(body); // $ MISSING: hasTaintFlow
}
_ => {}
}
Ok(())
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let case = std::env::args().nth(1).unwrap_or(String::from("1")).parse::<i64>().unwrap(); // $ Alert[rust/summary/taint-sources]
println!("test_hyper_http...");
match futures::executor::block_on(test_hyper_http(case)) {
Ok(_) => println!("complete"),
Err(e) => println!("error: {}", e),
}
println!("");
Ok(())
}

View File

@@ -212,6 +212,74 @@ mod m10 {
}
}
mod m11 {
pub struct Foo {} // I61
fn Foo() {} // I62
pub fn f() {
let _ = Foo {}; // $ item=I61
Foo(); // $ item=I62
} // I63
mod f {} // I66
pub enum Bar {
FooBar {}, // I64
} // I65
use Bar::FooBar; // $ item=I64
fn FooBar() {} // I65
#[rustfmt::skip]
fn g(x: Foo) { // $ item=I61
let _ = FooBar {}; // $ item=I64
let _ = FooBar(); // $ item=I65
}
struct S; // I67
enum E {
C, // I68
}
use E::C; // $ item=I68
fn h() {
let _ = S; // $ item=I67
let _ = C; // $ item=I68
}
}
mod m12 {
#[rustfmt::skip]
trait MyParamTrait<
T // I69
> {
type AssociatedType; // I70
fn f(
&self,
x: T // $ item=I69
) -> Self::AssociatedType; // $ item=I70
}
}
mod m13 {
pub fn f() {} // I71
pub struct f {} // I72
mod m14 {
use crate::m13::f; // $ item=I71 item=I72
#[rustfmt::skip]
fn g(x: f) { // $ item=I72
let _ = f {}; // $ item=I72
f(); // $ item=I71
}
}
}
fn main() {
my::nested::nested1::nested2::f(); // $ item=I4
my::f(); // $ item=I38
@@ -230,4 +298,5 @@ fn main() {
m7::f(); // $ item=I45
m8::g(); // $ item=I55
m9::f(); // $ item=I57
m11::f(); // $ item=I63
}

View File

@@ -13,6 +13,11 @@ mod
| main.rs:139:1:182:1 | mod m8 |
| main.rs:184:1:192:1 | mod m9 |
| main.rs:194:1:213:1 | mod m10 |
| main.rs:215:1:252:1 | mod m11 |
| main.rs:225:5:225:12 | mod f |
| main.rs:254:1:266:1 | mod m12 |
| main.rs:268:1:281:1 | mod m13 |
| main.rs:272:5:280:5 | mod m14 |
| my2/mod.rs:1:1:1:16 | mod nested2 |
| my2/nested2.rs:1:1:11:1 | mod nested3 |
| my2/nested2.rs:2:5:10:5 | mod nested4 |
@@ -38,7 +43,7 @@ resolvePath
| main.rs:30:17:30:21 | super | main.rs:18:5:36:5 | mod m2 |
| main.rs:30:17:30:24 | ...::f | main.rs:19:9:21:9 | fn f |
| main.rs:33:17:33:17 | f | main.rs:19:9:21:9 | fn f |
| main.rs:40:9:40:13 | super | main.rs:1:1:233:2 | SourceFile |
| main.rs:40:9:40:13 | super | main.rs:1:1:302:2 | SourceFile |
| main.rs:40:9:40:17 | ...::m1 | main.rs:13:1:37:1 | mod m1 |
| main.rs:40:9:40:21 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
| main.rs:40:9:40:24 | ...::g | main.rs:23:9:27:9 | fn g |
@@ -50,7 +55,7 @@ resolvePath
| main.rs:61:17:61:19 | Foo | main.rs:59:9:59:21 | struct Foo |
| main.rs:64:13:64:15 | Foo | main.rs:53:5:53:17 | struct Foo |
| main.rs:66:5:66:5 | f | main.rs:55:5:62:5 | fn f |
| main.rs:68:5:68:8 | self | main.rs:1:1:233:2 | SourceFile |
| main.rs:68:5:68:8 | self | main.rs:1:1:302:2 | SourceFile |
| main.rs:68:5:68:11 | ...::i | main.rs:71:1:83:1 | fn i |
| main.rs:74:13:74:15 | Foo | main.rs:48:1:48:13 | struct Foo |
| main.rs:81:17:81:19 | Foo | main.rs:77:9:79:9 | struct Foo |
@@ -64,7 +69,7 @@ resolvePath
| main.rs:87:57:87:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g |
| main.rs:87:80:87:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
| main.rs:100:5:100:22 | f_defined_in_macro | main.rs:99:18:99:42 | fn f_defined_in_macro |
| main.rs:117:13:117:17 | super | main.rs:1:1:233:2 | SourceFile |
| main.rs:117:13:117:17 | super | main.rs:1:1:302:2 | SourceFile |
| main.rs:117:13:117:21 | ...::m5 | main.rs:103:1:107:1 | mod m5 |
| main.rs:118:9:118:9 | f | main.rs:104:5:106:5 | fn f |
| main.rs:118:9:118:9 | f | main.rs:110:5:112:5 | fn f |
@@ -99,42 +104,65 @@ resolvePath
| main.rs:207:7:209:7 | MyStruct::<...> | main.rs:195:5:201:5 | struct MyStruct |
| main.rs:208:9:208:9 | T | main.rs:204:14:204:14 | TypeParam |
| main.rs:211:9:211:16 | MyStruct | main.rs:195:5:201:5 | struct MyStruct |
| main.rs:216:5:216:6 | my | main.rs:1:1:1:7 | mod my |
| main.rs:216:5:216:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
| main.rs:216:5:216:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
| main.rs:216:5:216:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
| main.rs:216:5:216:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
| main.rs:217:5:217:6 | my | main.rs:1:1:1:7 | mod my |
| main.rs:217:5:217:9 | ...::f | my.rs:5:1:7:1 | fn f |
| main.rs:218:5:218:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
| main.rs:218:5:218:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
| main.rs:218:5:218:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
| main.rs:218:5:218:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
| main.rs:219:5:219:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
| main.rs:220:5:220:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
| main.rs:221:5:221:9 | crate | main.rs:1:1:233:2 | SourceFile |
| main.rs:221:5:221:12 | ...::h | main.rs:50:1:69:1 | fn h |
| main.rs:222:5:222:6 | m1 | main.rs:13:1:37:1 | mod m1 |
| main.rs:222:5:222:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
| main.rs:222:5:222:13 | ...::g | main.rs:23:9:27:9 | fn g |
| main.rs:223:5:223:6 | m1 | main.rs:13:1:37:1 | mod m1 |
| main.rs:223:5:223:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
| main.rs:223:5:223:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 |
| main.rs:223:5:223:17 | ...::h | main.rs:30:27:34:13 | fn h |
| main.rs:224:5:224:6 | m4 | main.rs:39:1:46:1 | mod m4 |
| main.rs:224:5:224:9 | ...::i | main.rs:42:5:45:5 | fn i |
| main.rs:225:5:225:5 | h | main.rs:50:1:69:1 | fn h |
| main.rs:226:5:226:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
| main.rs:227:5:227:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
| main.rs:228:5:228:5 | j | main.rs:97:1:101:1 | fn j |
| main.rs:229:5:229:6 | m6 | main.rs:109:1:120:1 | mod m6 |
| main.rs:229:5:229:9 | ...::g | main.rs:114:5:119:5 | fn g |
| main.rs:230:5:230:6 | m7 | main.rs:122:1:137:1 | mod m7 |
| main.rs:230:5:230:9 | ...::f | main.rs:129:5:136:5 | fn f |
| main.rs:231:5:231:6 | m8 | main.rs:139:1:182:1 | mod m8 |
| main.rs:231:5:231:9 | ...::g | main.rs:169:5:181:5 | fn g |
| main.rs:232:5:232:6 | m9 | main.rs:184:1:192:1 | mod m9 |
| main.rs:232:5:232:9 | ...::f | main.rs:187:5:191:5 | fn f |
| main.rs:221:17:221:19 | Foo | main.rs:216:5:216:21 | struct Foo |
| main.rs:222:9:222:11 | Foo | main.rs:218:5:218:15 | fn Foo |
| main.rs:231:9:231:11 | Bar | main.rs:227:5:229:5 | enum Bar |
| main.rs:231:9:231:19 | ...::FooBar | main.rs:228:9:228:17 | FooBar |
| main.rs:236:13:236:15 | Foo | main.rs:216:5:216:21 | struct Foo |
| main.rs:237:17:237:22 | FooBar | main.rs:228:9:228:17 | FooBar |
| main.rs:238:17:238:22 | FooBar | main.rs:233:5:233:18 | fn FooBar |
| main.rs:246:9:246:9 | E | main.rs:241:15:244:5 | enum E |
| main.rs:246:9:246:12 | ...::C | main.rs:243:9:243:9 | C |
| main.rs:249:17:249:17 | S | main.rs:241:5:241:13 | struct S |
| main.rs:250:17:250:17 | C | main.rs:243:9:243:9 | C |
| main.rs:263:16:263:16 | T | main.rs:257:7:257:7 | TypeParam |
| main.rs:264:14:264:17 | Self | main.rs:255:5:265:5 | trait MyParamTrait |
| main.rs:264:14:264:33 | ...::AssociatedType | main.rs:259:9:259:28 | TypeAlias |
| main.rs:273:13:273:17 | crate | main.rs:1:1:302:2 | SourceFile |
| main.rs:273:13:273:22 | ...::m13 | main.rs:268:1:281:1 | mod m13 |
| main.rs:273:13:273:25 | ...::f | main.rs:269:5:269:17 | fn f |
| main.rs:273:13:273:25 | ...::f | main.rs:269:19:270:19 | struct f |
| main.rs:276:17:276:17 | f | main.rs:269:19:270:19 | struct f |
| main.rs:277:21:277:21 | f | main.rs:269:19:270:19 | struct f |
| main.rs:278:13:278:13 | f | main.rs:269:5:269:17 | fn f |
| main.rs:284:5:284:6 | my | main.rs:1:1:1:7 | mod my |
| main.rs:284:5:284:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
| main.rs:284:5:284:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
| main.rs:284:5:284:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
| main.rs:284:5:284:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
| main.rs:285:5:285:6 | my | main.rs:1:1:1:7 | mod my |
| main.rs:285:5:285:9 | ...::f | my.rs:5:1:7:1 | fn f |
| main.rs:286:5:286:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
| main.rs:286:5:286:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
| main.rs:286:5:286:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
| main.rs:286:5:286:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
| main.rs:287:5:287:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
| main.rs:288:5:288:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
| main.rs:289:5:289:9 | crate | main.rs:1:1:302:2 | SourceFile |
| main.rs:289:5:289:12 | ...::h | main.rs:50:1:69:1 | fn h |
| main.rs:290:5:290:6 | m1 | main.rs:13:1:37:1 | mod m1 |
| main.rs:290:5:290:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
| main.rs:290:5:290:13 | ...::g | main.rs:23:9:27:9 | fn g |
| main.rs:291:5:291:6 | m1 | main.rs:13:1:37:1 | mod m1 |
| main.rs:291:5:291:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
| main.rs:291:5:291:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 |
| main.rs:291:5:291:17 | ...::h | main.rs:30:27:34:13 | fn h |
| main.rs:292:5:292:6 | m4 | main.rs:39:1:46:1 | mod m4 |
| main.rs:292:5:292:9 | ...::i | main.rs:42:5:45:5 | fn i |
| main.rs:293:5:293:5 | h | main.rs:50:1:69:1 | fn h |
| main.rs:294:5:294:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
| main.rs:295:5:295:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
| main.rs:296:5:296:5 | j | main.rs:97:1:101:1 | fn j |
| main.rs:297:5:297:6 | m6 | main.rs:109:1:120:1 | mod m6 |
| main.rs:297:5:297:9 | ...::g | main.rs:114:5:119:5 | fn g |
| main.rs:298:5:298:6 | m7 | main.rs:122:1:137:1 | mod m7 |
| main.rs:298:5:298:9 | ...::f | main.rs:129:5:136:5 | fn f |
| main.rs:299:5:299:6 | m8 | main.rs:139:1:182:1 | mod m8 |
| main.rs:299:5:299:9 | ...::g | main.rs:169:5:181:5 | fn g |
| main.rs:300:5:300:6 | m9 | main.rs:184:1:192:1 | mod m9 |
| main.rs:300:5:300:9 | ...::f | main.rs:187:5:191:5 | fn f |
| main.rs:301:5:301:7 | m11 | main.rs:215:1:252:1 | mod m11 |
| main.rs:301:5:301:10 | ...::f | main.rs:220:5:223:5 | fn f |
| 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 |
| my2/mod.rs:5:5:5:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |

View File

@@ -58,8 +58,8 @@ edges
| main.rs:20:1:25:1 | exit fn mutable_variable (normal) | main.rs:20:1:25:1 | exit fn mutable_variable | |
| main.rs:20:23:25:1 | { ... } | main.rs:20:1:25:1 | exit fn mutable_variable (normal) | |
| main.rs:21:5:21:19 | let ... = 4 | main.rs:21:18:21:18 | 4 | |
| main.rs:21:9:21:14 | x2 | main.rs:22:5:22:18 | ExprStmt | match |
| main.rs:21:18:21:18 | 4 | main.rs:21:9:21:14 | x2 | |
| main.rs:21:9:21:14 | mut x2 | main.rs:22:5:22:18 | ExprStmt | match |
| main.rs:21:18:21:18 | 4 | main.rs:21:9:21:14 | mut x2 | |
| main.rs:22:5:22:13 | print_i64 | main.rs:22:15:22:16 | x2 | |
| main.rs:22:5:22:17 | print_i64(...) | main.rs:23:5:23:11 | ExprStmt | |
| main.rs:22:5:22:18 | ExprStmt | main.rs:22:5:22:13 | print_i64 | |
@@ -76,8 +76,8 @@ edges
| main.rs:27:1:32:1 | exit fn mutable_variable_immutable_borrow (normal) | main.rs:27:1:32:1 | exit fn mutable_variable_immutable_borrow | |
| main.rs:27:40:32:1 | { ... } | main.rs:27:1:32:1 | exit fn mutable_variable_immutable_borrow (normal) | |
| main.rs:28:5:28:18 | let ... = 1 | main.rs:28:17:28:17 | 1 | |
| main.rs:28:9:28:13 | x | main.rs:29:5:29:22 | ExprStmt | match |
| main.rs:28:17:28:17 | 1 | main.rs:28:9:28:13 | x | |
| main.rs:28:9:28:13 | mut x | main.rs:29:5:29:22 | ExprStmt | match |
| main.rs:28:17:28:17 | 1 | main.rs:28:9:28:13 | mut x | |
| main.rs:29:5:29:17 | print_i64_ref | main.rs:29:20:29:20 | x | |
| main.rs:29:5:29:21 | print_i64_ref(...) | main.rs:30:5:30:10 | ExprStmt | |
| main.rs:29:5:29:22 | ExprStmt | main.rs:29:5:29:17 | print_i64_ref | |
@@ -202,8 +202,8 @@ edges
| main.rs:87:5:90:5 | if ... {...} | main.rs:84:19:91:1 | { ... } | |
| main.rs:87:8:88:12 | let ... = s1 | main.rs:88:11:88:12 | s1 | |
| main.rs:87:12:87:23 | Some(...) | main.rs:87:5:90:5 | if ... {...} | no-match |
| main.rs:87:12:87:23 | Some(...) | main.rs:87:17:87:22 | s2 | match |
| main.rs:87:17:87:22 | s2 | main.rs:89:9:89:22 | ExprStmt | match |
| main.rs:87:12:87:23 | Some(...) | main.rs:87:17:87:22 | ref s2 | match |
| main.rs:87:17:87:22 | ref s2 | main.rs:89:9:89:22 | ExprStmt | match |
| main.rs:88:11:88:12 | s1 | main.rs:87:12:87:23 | Some(...) | |
| main.rs:88:14:90:5 | { ... } | main.rs:87:5:90:5 | if ... {...} | |
| main.rs:89:9:89:17 | print_str | main.rs:89:19:89:20 | s2 | |
@@ -243,8 +243,8 @@ edges
| main.rs:104:5:107:5 | while ... { ... } | main.rs:101:19:108:1 | { ... } | |
| main.rs:104:11:105:12 | let ... = s1 | main.rs:105:11:105:12 | s1 | |
| main.rs:104:15:104:26 | Some(...) | main.rs:104:5:107:5 | while ... { ... } | no-match |
| main.rs:104:15:104:26 | Some(...) | main.rs:104:20:104:25 | s2 | match |
| main.rs:104:20:104:25 | s2 | main.rs:106:9:106:22 | ExprStmt | match |
| main.rs:104:15:104:26 | Some(...) | main.rs:104:20:104:25 | ref s2 | match |
| main.rs:104:20:104:25 | ref s2 | main.rs:106:9:106:22 | ExprStmt | match |
| main.rs:105:11:105:12 | s1 | main.rs:104:15:104:26 | Some(...) | |
| main.rs:105:14:107:5 | { ... } | main.rs:104:11:105:12 | let ... = s1 | |
| main.rs:106:9:106:17 | print_str | main.rs:106:19:106:20 | s2 | |
@@ -363,13 +363,13 @@ edges
| main.rs:171:11:171:13 | msg | main.rs:172:9:174:9 | ...::Hello {...} | |
| main.rs:172:9:174:9 | ...::Hello {...} | main.rs:173:31:173:35 | RangePat | match |
| main.rs:172:9:174:9 | ...::Hello {...} | main.rs:175:9:175:38 | ...::Hello {...} | no-match |
| main.rs:173:17:173:35 | [match(true)] id_variable | main.rs:174:14:174:22 | print_i64 | match |
| main.rs:173:17:173:35 | [match(true)] id_variable @ ... | main.rs:174:14:174:22 | print_i64 | match |
| main.rs:173:31:173:31 | 3 | main.rs:173:31:173:31 | 3 | |
| main.rs:173:31:173:31 | 3 | main.rs:173:35:173:35 | 7 | match |
| main.rs:173:31:173:31 | 3 | main.rs:175:9:175:38 | ...::Hello {...} | no-match |
| main.rs:173:31:173:35 | RangePat | main.rs:173:31:173:31 | 3 | match |
| main.rs:173:31:173:35 | RangePat | main.rs:175:9:175:38 | ...::Hello {...} | no-match |
| main.rs:173:35:173:35 | 7 | main.rs:173:17:173:35 | [match(true)] id_variable | match |
| main.rs:173:35:173:35 | 7 | main.rs:173:17:173:35 | [match(true)] id_variable @ ... | match |
| main.rs:173:35:173:35 | 7 | main.rs:173:35:173:35 | 7 | |
| main.rs:173:35:173:35 | 7 | main.rs:175:9:175:38 | ...::Hello {...} | no-match |
| main.rs:174:14:174:22 | print_i64 | main.rs:174:24:174:34 | id_variable | |
@@ -513,11 +513,11 @@ edges
| main.rs:229:31:229:32 | 32 | main.rs:229:18:229:33 | ...::Left(...) | |
| main.rs:231:5:242:5 | match either { ... } | main.rs:228:21:243:1 | { ... } | |
| main.rs:231:11:231:16 | either | main.rs:233:14:233:30 | ...::Left(...) | |
| main.rs:232:9:233:52 | [match(true)] e | main.rs:235:13:235:27 | ExprStmt | match |
| main.rs:232:9:233:52 | [match(true)] ref e @ ... | main.rs:235:13:235:27 | ExprStmt | match |
| main.rs:233:14:233:30 | ...::Left(...) | main.rs:233:27:233:29 | a11 | match |
| main.rs:233:14:233:30 | ...::Left(...) | main.rs:233:34:233:51 | ...::Right(...) | no-match |
| main.rs:233:14:233:51 | [match(false)] ... \| ... | main.rs:241:9:241:9 | _ | no-match |
| main.rs:233:14:233:51 | [match(true)] ... \| ... | main.rs:232:9:233:52 | [match(true)] e | match |
| main.rs:233:14:233:51 | [match(true)] ... \| ... | main.rs:232:9:233:52 | [match(true)] ref e @ ... | match |
| main.rs:233:27:233:29 | a11 | main.rs:233:14:233:51 | [match(true)] ... \| ... | match |
| main.rs:233:34:233:51 | ...::Right(...) | main.rs:233:14:233:51 | [match(false)] ... \| ... | no-match |
| main.rs:233:34:233:51 | ...::Right(...) | main.rs:233:48:233:50 | a11 | match |
@@ -607,10 +607,10 @@ edges
| main.rs:277:1:312:1 | exit fn destruct_assignment (normal) | main.rs:277:1:312:1 | exit fn destruct_assignment | |
| main.rs:277:26:312:1 | { ... } | main.rs:277:1:312:1 | exit fn destruct_assignment (normal) | |
| main.rs:278:5:282:18 | let ... = ... | main.rs:282:10:282:10 | 1 | |
| main.rs:278:9:282:5 | TuplePat | main.rs:279:9:279:15 | a10 | match |
| main.rs:279:9:279:15 | a10 | main.rs:280:9:280:14 | b4 | match |
| main.rs:280:9:280:14 | b4 | main.rs:281:9:281:14 | c2 | match |
| main.rs:281:9:281:14 | c2 | main.rs:283:5:283:19 | ExprStmt | match |
| main.rs:278:9:282:5 | TuplePat | main.rs:279:9:279:15 | mut a10 | match |
| main.rs:279:9:279:15 | mut a10 | main.rs:280:9:280:14 | mut b4 | match |
| main.rs:280:9:280:14 | mut b4 | main.rs:281:9:281:14 | mut c2 | match |
| main.rs:281:9:281:14 | mut c2 | main.rs:283:5:283:19 | ExprStmt | match |
| main.rs:282:9:282:17 | TupleExpr | main.rs:278:9:282:5 | TuplePat | |
| main.rs:282:10:282:10 | 1 | main.rs:282:13:282:13 | 2 | |
| main.rs:282:13:282:13 | 2 | main.rs:282:16:282:16 | 3 | |
@@ -807,8 +807,8 @@ edges
| main.rs:370:1:376:1 | exit fn add_assign (normal) | main.rs:370:1:376:1 | exit fn add_assign | |
| main.rs:370:17:376:1 | { ... } | main.rs:370:1:376:1 | exit fn add_assign (normal) | |
| main.rs:371:5:371:18 | let ... = 0 | main.rs:371:17:371:17 | 0 | |
| main.rs:371:9:371:13 | a | main.rs:372:5:372:11 | ExprStmt | match |
| main.rs:371:17:371:17 | 0 | main.rs:371:9:371:13 | a | |
| main.rs:371:9:371:13 | mut a | main.rs:372:5:372:11 | ExprStmt | match |
| main.rs:371:17:371:17 | 0 | main.rs:371:9:371:13 | mut a | |
| main.rs:372:5:372:5 | a | main.rs:372:10:372:10 | 1 | |
| main.rs:372:5:372:10 | ... += ... | main.rs:373:5:373:17 | ExprStmt | |
| main.rs:372:5:372:11 | ExprStmt | main.rs:372:5:372:5 | a | |
@@ -830,8 +830,8 @@ edges
| main.rs:378:1:384:1 | exit fn mutate (normal) | main.rs:378:1:384:1 | exit fn mutate | |
| main.rs:378:13:384:1 | { ... } | main.rs:378:1:384:1 | exit fn mutate (normal) | |
| main.rs:379:5:379:18 | let ... = 1 | main.rs:379:17:379:17 | 1 | |
| main.rs:379:9:379:13 | i | main.rs:380:5:381:15 | let ... = ... | match |
| main.rs:379:17:379:17 | 1 | main.rs:379:9:379:13 | i | |
| main.rs:379:9:379:13 | mut i | main.rs:380:5:381:15 | let ... = ... | match |
| main.rs:379:17:379:17 | 1 | main.rs:379:9:379:13 | mut i | |
| main.rs:380:5:381:15 | let ... = ... | main.rs:381:14:381:14 | i | |
| main.rs:380:9:380:13 | ref_i | main.rs:382:5:382:15 | ExprStmt | match |
| main.rs:381:9:381:14 | &mut i | main.rs:380:9:380:13 | ref_i | |
@@ -886,8 +886,8 @@ edges
| main.rs:401:1:419:1 | exit fn mutate_arg (normal) | main.rs:401:1:419:1 | exit fn mutate_arg | |
| main.rs:401:17:419:1 | { ... } | main.rs:401:1:419:1 | exit fn mutate_arg (normal) | |
| main.rs:402:5:402:18 | let ... = 2 | main.rs:402:17:402:17 | 2 | |
| main.rs:402:9:402:13 | x | main.rs:403:5:404:29 | let ... = ... | match |
| main.rs:402:17:402:17 | 2 | main.rs:402:9:402:13 | x | |
| main.rs:402:9:402:13 | mut x | main.rs:403:5:404:29 | let ... = ... | match |
| main.rs:402:17:402:17 | 2 | main.rs:402:9:402:13 | mut x | |
| main.rs:403:5:404:29 | let ... = ... | main.rs:404:9:404:20 | mutate_param | |
| main.rs:403:9:403:9 | y | main.rs:405:5:405:12 | ExprStmt | match |
| main.rs:404:9:404:20 | mutate_param | main.rs:404:27:404:27 | x | |
@@ -904,8 +904,8 @@ edges
| main.rs:407:5:407:17 | ExprStmt | main.rs:407:5:407:13 | print_i64 | |
| main.rs:407:15:407:15 | x | main.rs:407:5:407:16 | print_i64(...) | |
| main.rs:409:5:409:18 | let ... = 4 | main.rs:409:17:409:17 | 4 | |
| main.rs:409:9:409:13 | z | main.rs:410:5:411:20 | let ... = ... | match |
| main.rs:409:17:409:17 | 4 | main.rs:409:9:409:13 | z | |
| main.rs:409:9:409:13 | mut z | main.rs:410:5:411:20 | let ... = ... | match |
| main.rs:409:17:409:17 | 4 | main.rs:409:9:409:13 | mut z | |
| main.rs:410:5:411:20 | let ... = ... | main.rs:411:19:411:19 | x | |
| main.rs:410:9:410:9 | w | main.rs:412:5:415:6 | ExprStmt | match |
| main.rs:411:9:411:19 | &mut ... | main.rs:410:9:410:9 | w | |
@@ -931,8 +931,8 @@ edges
| main.rs:421:1:427:1 | exit fn alias (normal) | main.rs:421:1:427:1 | exit fn alias | |
| main.rs:421:12:427:1 | { ... } | main.rs:421:1:427:1 | exit fn alias (normal) | |
| main.rs:422:5:422:18 | let ... = 1 | main.rs:422:17:422:17 | 1 | |
| main.rs:422:9:422:13 | x | main.rs:423:5:424:15 | let ... = ... | match |
| main.rs:422:17:422:17 | 1 | main.rs:422:9:422:13 | x | |
| main.rs:422:9:422:13 | mut x | main.rs:423:5:424:15 | let ... = ... | match |
| main.rs:422:17:422:17 | 1 | main.rs:422:9:422:13 | mut x | |
| main.rs:423:5:424:15 | let ... = ... | main.rs:424:14:424:14 | x | |
| main.rs:423:9:423:9 | y | main.rs:425:5:425:11 | ExprStmt | match |
| main.rs:424:9:424:14 | &mut x | main.rs:423:9:423:9 | y | |
@@ -973,8 +973,8 @@ edges
| main.rs:439:1:463:1 | exit fn capture_mut (normal) | main.rs:439:1:463:1 | exit fn capture_mut | |
| main.rs:439:18:463:1 | { ... } | main.rs:439:1:463:1 | exit fn capture_mut (normal) | |
| main.rs:440:5:440:18 | let ... = 1 | main.rs:440:17:440:17 | 1 | |
| main.rs:440:9:440:13 | x | main.rs:442:5:444:6 | let ... = ... | match |
| main.rs:440:17:440:17 | 1 | main.rs:440:9:440:13 | x | |
| main.rs:440:9:440:13 | mut x | main.rs:442:5:444:6 | let ... = ... | match |
| main.rs:440:17:440:17 | 1 | main.rs:440:9:440:13 | mut x | |
| main.rs:442:5:444:6 | let ... = ... | main.rs:442:20:444:5 | \|...\| ... | |
| main.rs:442:9:442:16 | closure1 | main.rs:445:5:445:15 | ExprStmt | match |
| main.rs:442:20:444:5 | \|...\| ... | main.rs:442:9:442:16 | closure1 | |
@@ -993,11 +993,11 @@ edges
| main.rs:446:5:446:17 | ExprStmt | main.rs:446:5:446:13 | print_i64 | |
| main.rs:446:15:446:15 | x | main.rs:446:5:446:16 | print_i64(...) | |
| main.rs:448:5:448:18 | let ... = 2 | main.rs:448:17:448:17 | 2 | |
| main.rs:448:9:448:13 | y | main.rs:450:5:452:6 | let ... = ... | match |
| main.rs:448:17:448:17 | 2 | main.rs:448:9:448:13 | y | |
| main.rs:448:9:448:13 | mut y | main.rs:450:5:452:6 | let ... = ... | match |
| main.rs:448:17:448:17 | 2 | main.rs:448:9:448:13 | mut y | |
| main.rs:450:5:452:6 | let ... = ... | main.rs:450:24:452:5 | \|...\| ... | |
| main.rs:450:9:450:20 | closure2 | main.rs:453:5:453:15 | ExprStmt | match |
| main.rs:450:24:452:5 | \|...\| ... | main.rs:450:9:450:20 | closure2 | |
| main.rs:450:9:450:20 | mut closure2 | main.rs:453:5:453:15 | ExprStmt | match |
| main.rs:450:24:452:5 | \|...\| ... | main.rs:450:9:450:20 | mut closure2 | |
| main.rs:450:24:452:5 | enter \|...\| ... | main.rs:451:9:451:14 | ExprStmt | |
| main.rs:450:24:452:5 | exit \|...\| ... (normal) | main.rs:450:24:452:5 | exit \|...\| ... | |
| main.rs:450:27:452:5 | { ... } | main.rs:450:24:452:5 | exit \|...\| ... (normal) | |
@@ -1013,11 +1013,11 @@ edges
| main.rs:454:5:454:17 | ExprStmt | main.rs:454:5:454:13 | print_i64 | |
| main.rs:454:15:454:15 | y | main.rs:454:5:454:16 | print_i64(...) | |
| main.rs:456:5:456:18 | let ... = 2 | main.rs:456:17:456:17 | 2 | |
| main.rs:456:9:456:13 | z | main.rs:458:5:460:6 | let ... = ... | match |
| main.rs:456:17:456:17 | 2 | main.rs:456:9:456:13 | z | |
| main.rs:456:9:456:13 | mut z | main.rs:458:5:460:6 | let ... = ... | match |
| main.rs:456:17:456:17 | 2 | main.rs:456:9:456:13 | mut z | |
| main.rs:458:5:460:6 | let ... = ... | main.rs:458:24:460:5 | \|...\| ... | |
| main.rs:458:9:458:20 | closure3 | main.rs:461:5:461:15 | ExprStmt | match |
| main.rs:458:24:460:5 | \|...\| ... | main.rs:458:9:458:20 | closure3 | |
| main.rs:458:9:458:20 | mut closure3 | main.rs:461:5:461:15 | ExprStmt | match |
| main.rs:458:24:460:5 | \|...\| ... | main.rs:458:9:458:20 | mut closure3 | |
| main.rs:458:24:460:5 | enter \|...\| ... | main.rs:459:9:459:24 | ExprStmt | |
| main.rs:458:24:460:5 | exit \|...\| ... (normal) | main.rs:458:24:460:5 | exit \|...\| ... | |
| main.rs:458:27:460:5 | { ... } | main.rs:458:24:460:5 | exit \|...\| ... (normal) | |
@@ -1036,8 +1036,8 @@ edges
| main.rs:465:1:473:1 | exit fn async_block_capture (normal) | main.rs:465:1:473:1 | exit fn async_block_capture | |
| main.rs:465:32:473:1 | { ... } | main.rs:465:1:473:1 | exit fn async_block_capture (normal) | |
| main.rs:466:5:466:23 | let ... = 0 | main.rs:466:22:466:22 | 0 | |
| main.rs:466:9:466:13 | i | main.rs:467:5:469:6 | let ... = ... | match |
| main.rs:466:22:466:22 | 0 | main.rs:466:9:466:13 | i | |
| main.rs:466:9:466:13 | mut i | main.rs:467:5:469:6 | let ... = ... | match |
| main.rs:466:22:466:22 | 0 | main.rs:466:9:466:13 | mut i | |
| main.rs:467:5:469:6 | let ... = ... | main.rs:467:17:469:5 | { ... } | |
| main.rs:467:9:467:13 | block | main.rs:471:5:471:16 | ExprStmt | match |
| main.rs:467:17:469:5 | enter { ... } | main.rs:468:9:468:14 | ExprStmt | |
@@ -1060,8 +1060,8 @@ edges
| main.rs:475:8:475:15 | ...: bool | main.rs:476:5:476:18 | let ... = 1 | |
| main.rs:475:18:489:1 | { ... } | main.rs:475:1:489:1 | exit fn phi (normal) | |
| main.rs:476:5:476:18 | let ... = 1 | main.rs:476:17:476:17 | 1 | |
| main.rs:476:9:476:13 | x | main.rs:477:5:477:17 | ExprStmt | match |
| main.rs:476:17:476:17 | 1 | main.rs:476:9:476:13 | x | |
| main.rs:476:9:476:13 | mut x | main.rs:477:5:477:17 | ExprStmt | match |
| main.rs:476:17:476:17 | 1 | main.rs:476:9:476:13 | mut x | |
| main.rs:477:5:477:13 | print_i64 | main.rs:477:15:477:15 | x | |
| main.rs:477:5:477:16 | print_i64(...) | main.rs:478:5:478:21 | ExprStmt | |
| main.rs:477:5:477:17 | ExprStmt | main.rs:477:5:477:13 | print_i64 | |
@@ -1167,8 +1167,8 @@ edges
| main.rs:520:23:520:26 | self | main.rs:520:18:520:26 | SelfParam | |
| main.rs:520:29:527:5 | { ... } | main.rs:520:5:527:5 | exit fn my_method (normal) | |
| main.rs:521:9:524:10 | let ... = ... | main.rs:521:21:524:9 | \|...\| ... | |
| main.rs:521:13:521:17 | f | main.rs:525:9:525:13 | ExprStmt | match |
| main.rs:521:21:524:9 | \|...\| ... | main.rs:521:13:521:17 | f | |
| main.rs:521:13:521:17 | mut f | main.rs:525:9:525:13 | ExprStmt | match |
| main.rs:521:21:524:9 | \|...\| ... | main.rs:521:13:521:17 | mut f | |
| main.rs:521:21:524:9 | enter \|...\| ... | main.rs:521:22:521:22 | n | |
| main.rs:521:21:524:9 | exit \|...\| ... (normal) | main.rs:521:21:524:9 | exit \|...\| ... | |
| main.rs:521:22:521:22 | ... | main.rs:523:13:523:26 | ExprStmt | |
@@ -1191,8 +1191,8 @@ edges
| main.rs:530:1:537:1 | exit fn structs (normal) | main.rs:530:1:537:1 | exit fn structs | |
| main.rs:530:14:537:1 | { ... } | main.rs:530:1:537:1 | exit fn structs (normal) | |
| main.rs:531:5:531:36 | let ... = ... | main.rs:531:33:531:33 | 1 | |
| main.rs:531:9:531:13 | a | main.rs:532:5:532:26 | ExprStmt | match |
| main.rs:531:17:531:35 | MyStruct {...} | main.rs:531:9:531:13 | a | |
| main.rs:531:9:531:13 | mut a | main.rs:532:5:532:26 | ExprStmt | match |
| main.rs:531:17:531:35 | MyStruct {...} | main.rs:531:9:531:13 | mut a | |
| main.rs:531:33:531:33 | 1 | main.rs:531:17:531:35 | MyStruct {...} | |
| main.rs:532:5:532:13 | print_i64 | main.rs:532:15:532:15 | a | |
| main.rs:532:5:532:25 | print_i64(...) | main.rs:533:5:533:14 | ExprStmt | |
@@ -1223,8 +1223,8 @@ edges
| main.rs:539:1:546:1 | exit fn arrays (normal) | main.rs:539:1:546:1 | exit fn arrays | |
| main.rs:539:13:546:1 | { ... } | main.rs:539:1:546:1 | exit fn arrays (normal) | |
| main.rs:540:5:540:26 | let ... = ... | main.rs:540:18:540:18 | 1 | |
| main.rs:540:9:540:13 | a | main.rs:541:5:541:20 | ExprStmt | match |
| main.rs:540:17:540:25 | [...] | main.rs:540:9:540:13 | a | |
| main.rs:540:9:540:13 | mut a | main.rs:541:5:541:20 | ExprStmt | match |
| main.rs:540:17:540:25 | [...] | main.rs:540:9:540:13 | mut a | |
| main.rs:540:18:540:18 | 1 | main.rs:540:21:540:21 | 2 | |
| main.rs:540:21:540:21 | 2 | main.rs:540:24:540:24 | 3 | |
| main.rs:540:24:540:24 | 3 | main.rs:540:17:540:25 | [...] | |
@@ -1297,8 +1297,8 @@ edges
| main.rs:567:1:572:1 | exit fn ref_methodcall_receiver (normal) | main.rs:567:1:572:1 | exit fn ref_methodcall_receiver | |
| main.rs:567:30:572:1 | { ... } | main.rs:567:1:572:1 | exit fn ref_methodcall_receiver (normal) | |
| main.rs:568:3:568:34 | let ... = ... | main.rs:568:31:568:31 | 1 | |
| main.rs:568:7:568:11 | a | main.rs:569:3:569:10 | ExprStmt | match |
| main.rs:568:15:568:33 | MyStruct {...} | main.rs:568:7:568:11 | a | |
| main.rs:568:7:568:11 | mut a | main.rs:569:3:569:10 | ExprStmt | match |
| main.rs:568:15:568:33 | MyStruct {...} | main.rs:568:7:568:11 | mut a | |
| main.rs:568:31:568:31 | 1 | main.rs:568:15:568:33 | MyStruct {...} | |
| main.rs:569:3:569:3 | a | main.rs:569:3:569:9 | a.bar(...) | |
| main.rs:569:3:569:9 | a.bar(...) | main.rs:571:3:571:19 | ExprStmt | |

View File

@@ -12,9 +12,9 @@ definition
| main.rs:7:14:7:14 | i | main.rs:7:14:7:14 | i |
| main.rs:11:18:11:18 | i | main.rs:11:18:11:18 | i |
| main.rs:16:9:16:10 | x1 | main.rs:16:9:16:10 | x1 |
| main.rs:21:9:21:14 | x2 | main.rs:21:13:21:14 | x2 |
| main.rs:21:9:21:14 | mut x2 | main.rs:21:13:21:14 | x2 |
| main.rs:23:5:23:6 | x2 | main.rs:21:13:21:14 | x2 |
| main.rs:28:9:28:13 | x | main.rs:28:13:28:13 | x |
| main.rs:28:9:28:13 | mut x | main.rs:28:13:28:13 | x |
| main.rs:30:5:30:5 | x | main.rs:28:13:28:13 | x |
| main.rs:35:9:35:10 | x3 | main.rs:35:9:35:10 | x3 |
| main.rs:37:9:37:10 | x3 | main.rs:37:9:37:10 | x3 |
@@ -28,10 +28,10 @@ definition
| main.rs:77:12:77:13 | a2 | main.rs:77:12:77:13 | a2 |
| main.rs:78:12:78:13 | b2 | main.rs:78:12:78:13 | b2 |
| main.rs:85:9:85:10 | s1 | main.rs:85:9:85:10 | s1 |
| main.rs:87:17:87:22 | s2 | main.rs:87:21:87:22 | s2 |
| main.rs:87:17:87:22 | ref s2 | main.rs:87:21:87:22 | s2 |
| main.rs:94:14:94:15 | x5 | main.rs:94:14:94:15 | x5 |
| main.rs:102:9:102:10 | s1 | main.rs:102:9:102:10 | s1 |
| main.rs:104:20:104:25 | s2 | main.rs:104:24:104:25 | s2 |
| main.rs:104:20:104:25 | ref s2 | main.rs:104:24:104:25 | s2 |
| main.rs:111:9:111:10 | x6 | main.rs:111:9:111:10 | x6 |
| main.rs:112:9:112:10 | y1 | main.rs:112:9:112:10 | y1 |
| main.rs:116:14:116:15 | y1 | main.rs:116:14:116:15 | y1 |
@@ -44,7 +44,7 @@ definition
| main.rs:155:9:155:10 | p2 | main.rs:155:9:155:10 | p2 |
| main.rs:159:16:159:17 | x7 | main.rs:159:16:159:17 | x7 |
| main.rs:169:9:169:11 | msg | main.rs:169:9:169:11 | msg |
| main.rs:173:17:173:35 | [match(true)] id_variable | main.rs:173:17:173:27 | id_variable |
| main.rs:173:17:173:35 | [match(true)] id_variable @ ... | main.rs:173:17:173:27 | id_variable |
| main.rs:178:26:178:27 | id | main.rs:178:26:178:27 | id |
| main.rs:189:9:189:14 | either | main.rs:189:9:189:14 | either |
| main.rs:191:9:191:44 | [match(true)] phi | main.rs:191:9:191:44 | a3 |
@@ -70,7 +70,7 @@ definition
| main.rs:221:22:221:23 | a7 | main.rs:221:9:221:44 | a7 |
| main.rs:221:42:221:43 | a7 | main.rs:221:9:221:44 | a7 |
| main.rs:229:9:229:14 | either | main.rs:229:9:229:14 | either |
| main.rs:232:9:233:52 | [match(true)] e | main.rs:232:13:232:13 | e |
| main.rs:232:9:233:52 | [match(true)] ref e @ ... | main.rs:232:13:232:13 | e |
| main.rs:233:14:233:51 | [match(true)] phi | main.rs:233:14:233:51 | a11 |
| main.rs:233:27:233:29 | a11 | main.rs:233:14:233:51 | a11 |
| main.rs:233:48:233:50 | a11 | main.rs:233:14:233:51 | a11 |
@@ -88,9 +88,9 @@ definition
| main.rs:272:6:272:41 | [match(true)] phi | main.rs:272:6:272:41 | a9 |
| main.rs:272:19:272:20 | a9 | main.rs:272:6:272:41 | a9 |
| main.rs:272:39:272:40 | a9 | main.rs:272:6:272:41 | a9 |
| main.rs:279:9:279:15 | a10 | main.rs:279:13:279:15 | a10 |
| main.rs:280:9:280:14 | b4 | main.rs:280:13:280:14 | b4 |
| main.rs:281:9:281:14 | c2 | main.rs:281:13:281:14 | c2 |
| main.rs:279:9:279:15 | mut a10 | main.rs:279:13:279:15 | a10 |
| main.rs:280:9:280:14 | mut b4 | main.rs:280:13:280:14 | b4 |
| main.rs:281:9:281:14 | mut c2 | main.rs:281:13:281:14 | c2 |
| main.rs:288:9:288:10 | c2 | main.rs:281:13:281:14 | c2 |
| main.rs:289:9:289:10 | b4 | main.rs:280:13:280:14 | b4 |
| main.rs:290:9:290:11 | a10 | main.rs:279:13:279:15 | a10 |
@@ -120,20 +120,20 @@ definition
| main.rs:430:9:430:9 | x | main.rs:430:9:430:9 | x |
| main.rs:432:9:432:11 | cap | main.rs:432:9:432:11 | cap |
| main.rs:432:15:434:5 | <captured entry> x | main.rs:430:9:430:9 | x |
| main.rs:440:9:440:13 | x | main.rs:440:13:440:13 | x |
| main.rs:440:9:440:13 | mut x | main.rs:440:13:440:13 | x |
| main.rs:442:9:442:16 | closure1 | main.rs:442:9:442:16 | closure1 |
| main.rs:442:20:444:5 | <captured entry> x | main.rs:440:13:440:13 | x |
| main.rs:448:9:448:13 | y | main.rs:448:13:448:13 | y |
| main.rs:450:9:450:20 | closure2 | main.rs:450:13:450:20 | closure2 |
| main.rs:448:9:448:13 | mut y | main.rs:448:13:448:13 | y |
| main.rs:450:9:450:20 | mut closure2 | main.rs:450:13:450:20 | closure2 |
| main.rs:451:9:451:9 | y | main.rs:448:13:448:13 | y |
| main.rs:453:5:453:14 | <captured exit> y | main.rs:448:13:448:13 | y |
| main.rs:458:9:458:20 | closure3 | main.rs:458:13:458:20 | closure3 |
| main.rs:466:9:466:13 | i | main.rs:466:13:466:13 | i |
| main.rs:458:9:458:20 | mut closure3 | main.rs:458:13:458:20 | closure3 |
| main.rs:466:9:466:13 | mut i | main.rs:466:13:466:13 | i |
| main.rs:467:9:467:13 | block | main.rs:467:9:467:13 | block |
| main.rs:468:9:468:9 | i | main.rs:466:13:466:13 | i |
| main.rs:471:5:471:15 | <captured exit> i | main.rs:466:13:466:13 | i |
| main.rs:475:8:475:8 | b | main.rs:475:8:475:8 | b |
| main.rs:476:9:476:13 | x | main.rs:476:13:476:13 | x |
| main.rs:476:9:476:13 | mut x | main.rs:476:13:476:13 | x |
| main.rs:479:5:487:5 | phi | main.rs:476:13:476:13 | x |
| main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x |
| main.rs:484:9:484:9 | x | main.rs:476:13:476:13 | x |
@@ -143,10 +143,10 @@ definition
| main.rs:512:15:512:23 | SelfParam | main.rs:512:20:512:23 | self |
| main.rs:516:11:516:14 | SelfParam | main.rs:516:11:516:14 | self |
| main.rs:520:18:520:26 | SelfParam | main.rs:520:23:520:26 | self |
| main.rs:521:13:521:17 | f | main.rs:521:17:521:17 | f |
| main.rs:521:13:521:17 | mut f | main.rs:521:17:521:17 | f |
| main.rs:521:21:524:9 | <captured entry> self | main.rs:520:23:520:26 | self |
| main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | n |
| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a |
| main.rs:540:9:540:13 | mut a | main.rs:540:13:540:13 | a |
| main.rs:544:5:544:5 | a | main.rs:540:13:540:13 | a |
| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x |
| main.rs:553:9:553:9 | z | main.rs:553:9:553:9 | z |
@@ -160,9 +160,9 @@ read
| main.rs:7:14:7:14 | i | main.rs:7:14:7:14 | i | main.rs:8:20:8:20 | i |
| main.rs:11:18:11:18 | i | main.rs:11:18:11:18 | i | main.rs:12:16:12:16 | i |
| main.rs:16:9:16:10 | x1 | main.rs:16:9:16:10 | x1 | main.rs:17:15:17:16 | x1 |
| main.rs:21:9:21:14 | x2 | main.rs:21:13:21:14 | x2 | main.rs:22:15:22:16 | x2 |
| main.rs:21:9:21:14 | mut x2 | main.rs:21:13:21:14 | x2 | main.rs:22:15:22:16 | x2 |
| main.rs:23:5:23:6 | x2 | main.rs:21:13:21:14 | x2 | main.rs:24:15:24:16 | x2 |
| main.rs:28:9:28:13 | x | main.rs:28:13:28:13 | x | main.rs:29:20:29:20 | x |
| main.rs:28:9:28:13 | mut x | main.rs:28:13:28:13 | x | main.rs:29:20:29:20 | x |
| main.rs:30:5:30:5 | x | main.rs:28:13:28:13 | x | main.rs:31:20:31:20 | x |
| main.rs:35:9:35:10 | x3 | main.rs:35:9:35:10 | x3 | main.rs:36:15:36:16 | x3 |
| main.rs:35:9:35:10 | x3 | main.rs:35:9:35:10 | x3 | main.rs:38:9:38:10 | x3 |
@@ -178,10 +178,10 @@ read
| main.rs:77:12:77:13 | a2 | main.rs:77:12:77:13 | a2 | main.rs:80:15:80:16 | a2 |
| main.rs:78:12:78:13 | b2 | main.rs:78:12:78:13 | b2 | main.rs:81:15:81:16 | b2 |
| main.rs:85:9:85:10 | s1 | main.rs:85:9:85:10 | s1 | main.rs:88:11:88:12 | s1 |
| main.rs:87:17:87:22 | s2 | main.rs:87:21:87:22 | s2 | main.rs:89:19:89:20 | s2 |
| main.rs:87:17:87:22 | ref s2 | main.rs:87:21:87:22 | s2 | main.rs:89:19:89:20 | s2 |
| main.rs:94:14:94:15 | x5 | main.rs:94:14:94:15 | x5 | main.rs:98:15:98:16 | x5 |
| main.rs:102:9:102:10 | s1 | main.rs:102:9:102:10 | s1 | main.rs:105:11:105:12 | s1 |
| main.rs:104:20:104:25 | s2 | main.rs:104:24:104:25 | s2 | main.rs:106:19:106:20 | s2 |
| main.rs:104:20:104:25 | ref s2 | main.rs:104:24:104:25 | s2 | main.rs:106:19:106:20 | s2 |
| main.rs:111:9:111:10 | x6 | main.rs:111:9:111:10 | x6 | main.rs:114:11:114:12 | x6 |
| main.rs:112:9:112:10 | y1 | main.rs:112:9:112:10 | y1 | main.rs:124:15:124:16 | y1 |
| main.rs:116:14:116:15 | y1 | main.rs:116:14:116:15 | y1 | main.rs:119:23:119:24 | y1 |
@@ -195,7 +195,7 @@ read
| main.rs:155:9:155:10 | p2 | main.rs:155:9:155:10 | p2 | main.rs:157:11:157:12 | p2 |
| main.rs:159:16:159:17 | x7 | main.rs:159:16:159:17 | x7 | main.rs:160:24:160:25 | x7 |
| main.rs:169:9:169:11 | msg | main.rs:169:9:169:11 | msg | main.rs:171:11:171:13 | msg |
| main.rs:173:17:173:35 | [match(true)] id_variable | main.rs:173:17:173:27 | id_variable | main.rs:174:24:174:34 | id_variable |
| main.rs:173:17:173:35 | [match(true)] id_variable @ ... | main.rs:173:17:173:27 | id_variable | main.rs:174:24:174:34 | id_variable |
| main.rs:178:26:178:27 | id | main.rs:178:26:178:27 | id | main.rs:179:23:179:24 | id |
| main.rs:189:9:189:14 | either | main.rs:189:9:189:14 | either | main.rs:190:11:190:16 | either |
| main.rs:191:9:191:44 | [match(true)] phi | main.rs:191:9:191:44 | a3 | main.rs:192:26:192:27 | a3 |
@@ -209,7 +209,7 @@ read
| main.rs:221:9:221:44 | [match(true)] phi | main.rs:221:9:221:44 | a7 | main.rs:222:16:222:17 | a7 |
| main.rs:221:9:221:44 | [match(true)] phi | main.rs:221:9:221:44 | a7 | main.rs:223:26:223:27 | a7 |
| main.rs:229:9:229:14 | either | main.rs:229:9:229:14 | either | main.rs:231:11:231:16 | either |
| main.rs:232:9:233:52 | [match(true)] e | main.rs:232:13:232:13 | e | main.rs:237:15:237:15 | e |
| main.rs:232:9:233:52 | [match(true)] ref e @ ... | main.rs:232:13:232:13 | e | main.rs:237:15:237:15 | e |
| main.rs:233:14:233:51 | [match(true)] phi | main.rs:233:14:233:51 | a11 | main.rs:235:23:235:25 | a11 |
| main.rs:236:33:236:35 | a12 | main.rs:236:33:236:35 | a12 | main.rs:238:28:238:30 | a12 |
| main.rs:253:9:253:10 | fv | main.rs:253:9:253:10 | fv | main.rs:254:11:254:12 | fv |
@@ -218,9 +218,9 @@ read
| main.rs:263:9:263:10 | b3 | main.rs:263:9:263:10 | b3 | main.rs:267:15:267:16 | b3 |
| main.rs:264:9:264:10 | c1 | main.rs:264:9:264:10 | c1 | main.rs:268:15:268:16 | c1 |
| main.rs:272:6:272:41 | [match(true)] phi | main.rs:272:6:272:41 | a9 | main.rs:274:15:274:16 | a9 |
| main.rs:279:9:279:15 | a10 | main.rs:279:13:279:15 | a10 | main.rs:283:15:283:17 | a10 |
| main.rs:280:9:280:14 | b4 | main.rs:280:13:280:14 | b4 | main.rs:284:15:284:16 | b4 |
| main.rs:281:9:281:14 | c2 | main.rs:281:13:281:14 | c2 | main.rs:285:15:285:16 | c2 |
| main.rs:279:9:279:15 | mut a10 | main.rs:279:13:279:15 | a10 | main.rs:283:15:283:17 | a10 |
| main.rs:280:9:280:14 | mut b4 | main.rs:280:13:280:14 | b4 | main.rs:284:15:284:16 | b4 |
| main.rs:281:9:281:14 | mut c2 | main.rs:281:13:281:14 | c2 | main.rs:285:15:285:16 | c2 |
| main.rs:288:9:288:10 | c2 | main.rs:281:13:281:14 | c2 | main.rs:294:9:294:10 | c2 |
| main.rs:288:9:288:10 | c2 | main.rs:281:13:281:14 | c2 | main.rs:298:15:298:16 | c2 |
| main.rs:289:9:289:10 | b4 | main.rs:280:13:280:14 | b4 | main.rs:293:9:293:10 | b4 |
@@ -263,17 +263,17 @@ read
| main.rs:430:9:430:9 | x | main.rs:430:9:430:9 | x | main.rs:436:15:436:15 | x |
| main.rs:432:9:432:11 | cap | main.rs:432:9:432:11 | cap | main.rs:435:5:435:7 | cap |
| main.rs:432:15:434:5 | <captured entry> x | main.rs:430:9:430:9 | x | main.rs:433:19:433:19 | x |
| main.rs:440:9:440:13 | x | main.rs:440:13:440:13 | x | main.rs:446:15:446:15 | x |
| main.rs:440:9:440:13 | mut x | main.rs:440:13:440:13 | x | main.rs:446:15:446:15 | x |
| main.rs:442:9:442:16 | closure1 | main.rs:442:9:442:16 | closure1 | main.rs:445:5:445:12 | closure1 |
| main.rs:442:20:444:5 | <captured entry> x | main.rs:440:13:440:13 | x | main.rs:443:19:443:19 | x |
| main.rs:450:9:450:20 | closure2 | main.rs:450:13:450:20 | closure2 | main.rs:453:5:453:12 | closure2 |
| main.rs:450:9:450:20 | mut closure2 | main.rs:450:13:450:20 | closure2 | main.rs:453:5:453:12 | closure2 |
| main.rs:453:5:453:14 | <captured exit> y | main.rs:448:13:448:13 | y | main.rs:454:15:454:15 | y |
| main.rs:458:9:458:20 | closure3 | main.rs:458:13:458:20 | closure3 | main.rs:461:5:461:12 | closure3 |
| main.rs:458:9:458:20 | mut closure3 | main.rs:458:13:458:20 | closure3 | main.rs:461:5:461:12 | closure3 |
| main.rs:467:9:467:13 | block | main.rs:467:9:467:13 | block | main.rs:471:5:471:9 | block |
| main.rs:471:5:471:15 | <captured exit> i | main.rs:466:13:466:13 | i | main.rs:472:15:472:15 | i |
| main.rs:475:8:475:8 | b | main.rs:475:8:475:8 | b | main.rs:479:8:479:8 | b |
| main.rs:476:9:476:13 | x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x |
| main.rs:476:9:476:13 | x | main.rs:476:13:476:13 | x | main.rs:478:15:478:15 | x |
| main.rs:476:9:476:13 | mut x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x |
| main.rs:476:9:476:13 | mut x | main.rs:476:13:476:13 | x | main.rs:478:15:478:15 | x |
| main.rs:479:5:487:5 | phi | main.rs:476:13:476:13 | x | main.rs:488:15:488:15 | x |
| main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | main.rs:481:19:481:19 | x |
| main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | main.rs:482:19:482:19 | x |
@@ -287,13 +287,13 @@ read
| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:502:19:502:19 | x |
| main.rs:512:15:512:23 | SelfParam | main.rs:512:20:512:23 | self | main.rs:513:16:513:19 | self |
| main.rs:516:11:516:14 | SelfParam | main.rs:516:11:516:14 | self | main.rs:517:9:517:12 | self |
| main.rs:521:13:521:17 | f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f |
| main.rs:521:13:521:17 | f | main.rs:521:17:521:17 | f | main.rs:526:9:526:9 | f |
| main.rs:521:13:521:17 | mut f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f |
| main.rs:521:13:521:17 | mut f | main.rs:521:17:521:17 | f | main.rs:526:9:526:9 | f |
| main.rs:521:21:524:9 | <captured entry> self | main.rs:520:23:520:26 | self | main.rs:523:13:523:16 | self |
| main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | n | main.rs:523:25:523:25 | n |
| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a |
| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a | main.rs:542:5:542:5 | a |
| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a | main.rs:543:15:543:15 | a |
| main.rs:540:9:540:13 | mut a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a |
| main.rs:540:9:540:13 | mut a | main.rs:540:13:540:13 | a | main.rs:542:5:542:5 | a |
| main.rs:540:9:540:13 | mut a | main.rs:540:13:540:13 | a | main.rs:543:15:543:15 | a |
| main.rs:544:5:544:5 | a | main.rs:540:13:540:13 | a | main.rs:545:15:545:15 | a |
| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:550:20:550:20 | x |
| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:551:15:551:15 | x |
@@ -308,9 +308,9 @@ firstRead
| main.rs:7:14:7:14 | i | main.rs:7:14:7:14 | i | main.rs:8:20:8:20 | i |
| main.rs:11:18:11:18 | i | main.rs:11:18:11:18 | i | main.rs:12:16:12:16 | i |
| main.rs:16:9:16:10 | x1 | main.rs:16:9:16:10 | x1 | main.rs:17:15:17:16 | x1 |
| main.rs:21:9:21:14 | x2 | main.rs:21:13:21:14 | x2 | main.rs:22:15:22:16 | x2 |
| main.rs:21:9:21:14 | mut x2 | main.rs:21:13:21:14 | x2 | main.rs:22:15:22:16 | x2 |
| main.rs:23:5:23:6 | x2 | main.rs:21:13:21:14 | x2 | main.rs:24:15:24:16 | x2 |
| main.rs:28:9:28:13 | x | main.rs:28:13:28:13 | x | main.rs:29:20:29:20 | x |
| main.rs:28:9:28:13 | mut x | main.rs:28:13:28:13 | x | main.rs:29:20:29:20 | x |
| main.rs:30:5:30:5 | x | main.rs:28:13:28:13 | x | main.rs:31:20:31:20 | x |
| main.rs:35:9:35:10 | x3 | main.rs:35:9:35:10 | x3 | main.rs:36:15:36:16 | x3 |
| main.rs:37:9:37:10 | x3 | main.rs:37:9:37:10 | x3 | main.rs:39:15:39:16 | x3 |
@@ -324,10 +324,10 @@ firstRead
| main.rs:77:12:77:13 | a2 | main.rs:77:12:77:13 | a2 | main.rs:80:15:80:16 | a2 |
| main.rs:78:12:78:13 | b2 | main.rs:78:12:78:13 | b2 | main.rs:81:15:81:16 | b2 |
| main.rs:85:9:85:10 | s1 | main.rs:85:9:85:10 | s1 | main.rs:88:11:88:12 | s1 |
| main.rs:87:17:87:22 | s2 | main.rs:87:21:87:22 | s2 | main.rs:89:19:89:20 | s2 |
| main.rs:87:17:87:22 | ref s2 | main.rs:87:21:87:22 | s2 | main.rs:89:19:89:20 | s2 |
| main.rs:94:14:94:15 | x5 | main.rs:94:14:94:15 | x5 | main.rs:98:15:98:16 | x5 |
| main.rs:102:9:102:10 | s1 | main.rs:102:9:102:10 | s1 | main.rs:105:11:105:12 | s1 |
| main.rs:104:20:104:25 | s2 | main.rs:104:24:104:25 | s2 | main.rs:106:19:106:20 | s2 |
| main.rs:104:20:104:25 | ref s2 | main.rs:104:24:104:25 | s2 | main.rs:106:19:106:20 | s2 |
| main.rs:111:9:111:10 | x6 | main.rs:111:9:111:10 | x6 | main.rs:114:11:114:12 | x6 |
| main.rs:112:9:112:10 | y1 | main.rs:112:9:112:10 | y1 | main.rs:124:15:124:16 | y1 |
| main.rs:116:14:116:15 | y1 | main.rs:116:14:116:15 | y1 | main.rs:119:23:119:24 | y1 |
@@ -340,7 +340,7 @@ firstRead
| main.rs:155:9:155:10 | p2 | main.rs:155:9:155:10 | p2 | main.rs:157:11:157:12 | p2 |
| main.rs:159:16:159:17 | x7 | main.rs:159:16:159:17 | x7 | main.rs:160:24:160:25 | x7 |
| main.rs:169:9:169:11 | msg | main.rs:169:9:169:11 | msg | main.rs:171:11:171:13 | msg |
| main.rs:173:17:173:35 | [match(true)] id_variable | main.rs:173:17:173:27 | id_variable | main.rs:174:24:174:34 | id_variable |
| main.rs:173:17:173:35 | [match(true)] id_variable @ ... | main.rs:173:17:173:27 | id_variable | main.rs:174:24:174:34 | id_variable |
| main.rs:178:26:178:27 | id | main.rs:178:26:178:27 | id | main.rs:179:23:179:24 | id |
| main.rs:189:9:189:14 | either | main.rs:189:9:189:14 | either | main.rs:190:11:190:16 | either |
| main.rs:191:9:191:44 | [match(true)] phi | main.rs:191:9:191:44 | a3 | main.rs:192:26:192:27 | a3 |
@@ -351,7 +351,7 @@ firstRead
| main.rs:219:9:219:14 | either | main.rs:219:9:219:14 | either | main.rs:220:11:220:16 | either |
| main.rs:221:9:221:44 | [match(true)] phi | main.rs:221:9:221:44 | a7 | main.rs:222:16:222:17 | a7 |
| main.rs:229:9:229:14 | either | main.rs:229:9:229:14 | either | main.rs:231:11:231:16 | either |
| main.rs:232:9:233:52 | [match(true)] e | main.rs:232:13:232:13 | e | main.rs:237:15:237:15 | e |
| main.rs:232:9:233:52 | [match(true)] ref e @ ... | main.rs:232:13:232:13 | e | main.rs:237:15:237:15 | e |
| main.rs:233:14:233:51 | [match(true)] phi | main.rs:233:14:233:51 | a11 | main.rs:235:23:235:25 | a11 |
| main.rs:236:33:236:35 | a12 | main.rs:236:33:236:35 | a12 | main.rs:238:28:238:30 | a12 |
| main.rs:253:9:253:10 | fv | main.rs:253:9:253:10 | fv | main.rs:254:11:254:12 | fv |
@@ -360,9 +360,9 @@ firstRead
| main.rs:263:9:263:10 | b3 | main.rs:263:9:263:10 | b3 | main.rs:267:15:267:16 | b3 |
| main.rs:264:9:264:10 | c1 | main.rs:264:9:264:10 | c1 | main.rs:268:15:268:16 | c1 |
| main.rs:272:6:272:41 | [match(true)] phi | main.rs:272:6:272:41 | a9 | main.rs:274:15:274:16 | a9 |
| main.rs:279:9:279:15 | a10 | main.rs:279:13:279:15 | a10 | main.rs:283:15:283:17 | a10 |
| main.rs:280:9:280:14 | b4 | main.rs:280:13:280:14 | b4 | main.rs:284:15:284:16 | b4 |
| main.rs:281:9:281:14 | c2 | main.rs:281:13:281:14 | c2 | main.rs:285:15:285:16 | c2 |
| main.rs:279:9:279:15 | mut a10 | main.rs:279:13:279:15 | a10 | main.rs:283:15:283:17 | a10 |
| main.rs:280:9:280:14 | mut b4 | main.rs:280:13:280:14 | b4 | main.rs:284:15:284:16 | b4 |
| main.rs:281:9:281:14 | mut c2 | main.rs:281:13:281:14 | c2 | main.rs:285:15:285:16 | c2 |
| main.rs:288:9:288:10 | c2 | main.rs:281:13:281:14 | c2 | main.rs:294:9:294:10 | c2 |
| main.rs:289:9:289:10 | b4 | main.rs:280:13:280:14 | b4 | main.rs:293:9:293:10 | b4 |
| main.rs:290:9:290:11 | a10 | main.rs:279:13:279:15 | a10 | main.rs:292:9:292:11 | a10 |
@@ -392,16 +392,16 @@ firstRead
| main.rs:430:9:430:9 | x | main.rs:430:9:430:9 | x | main.rs:436:15:436:15 | x |
| main.rs:432:9:432:11 | cap | main.rs:432:9:432:11 | cap | main.rs:435:5:435:7 | cap |
| main.rs:432:15:434:5 | <captured entry> x | main.rs:430:9:430:9 | x | main.rs:433:19:433:19 | x |
| main.rs:440:9:440:13 | x | main.rs:440:13:440:13 | x | main.rs:446:15:446:15 | x |
| main.rs:440:9:440:13 | mut x | main.rs:440:13:440:13 | x | main.rs:446:15:446:15 | x |
| main.rs:442:9:442:16 | closure1 | main.rs:442:9:442:16 | closure1 | main.rs:445:5:445:12 | closure1 |
| main.rs:442:20:444:5 | <captured entry> x | main.rs:440:13:440:13 | x | main.rs:443:19:443:19 | x |
| main.rs:450:9:450:20 | closure2 | main.rs:450:13:450:20 | closure2 | main.rs:453:5:453:12 | closure2 |
| main.rs:450:9:450:20 | mut closure2 | main.rs:450:13:450:20 | closure2 | main.rs:453:5:453:12 | closure2 |
| main.rs:453:5:453:14 | <captured exit> y | main.rs:448:13:448:13 | y | main.rs:454:15:454:15 | y |
| main.rs:458:9:458:20 | closure3 | main.rs:458:13:458:20 | closure3 | main.rs:461:5:461:12 | closure3 |
| main.rs:458:9:458:20 | mut closure3 | main.rs:458:13:458:20 | closure3 | main.rs:461:5:461:12 | closure3 |
| main.rs:467:9:467:13 | block | main.rs:467:9:467:13 | block | main.rs:471:5:471:9 | block |
| main.rs:471:5:471:15 | <captured exit> i | main.rs:466:13:466:13 | i | main.rs:472:15:472:15 | i |
| main.rs:475:8:475:8 | b | main.rs:475:8:475:8 | b | main.rs:479:8:479:8 | b |
| main.rs:476:9:476:13 | x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x |
| main.rs:476:9:476:13 | mut x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x |
| main.rs:479:5:487:5 | phi | main.rs:476:13:476:13 | x | main.rs:488:15:488:15 | x |
| main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | main.rs:481:19:481:19 | x |
| main.rs:484:9:484:9 | x | main.rs:476:13:476:13 | x | main.rs:485:19:485:19 | x |
@@ -411,10 +411,10 @@ firstRead
| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:496:19:496:19 | x |
| main.rs:512:15:512:23 | SelfParam | main.rs:512:20:512:23 | self | main.rs:513:16:513:19 | self |
| main.rs:516:11:516:14 | SelfParam | main.rs:516:11:516:14 | self | main.rs:517:9:517:12 | self |
| main.rs:521:13:521:17 | f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f |
| main.rs:521:13:521:17 | mut f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f |
| main.rs:521:21:524:9 | <captured entry> self | main.rs:520:23:520:26 | self | main.rs:523:13:523:16 | self |
| main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | n | main.rs:523:25:523:25 | n |
| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a |
| main.rs:540:9:540:13 | mut a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a |
| main.rs:544:5:544:5 | a | main.rs:540:13:540:13 | a | main.rs:545:15:545:15 | a |
| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:550:20:550:20 | x |
| main.rs:553:9:553:9 | z | main.rs:553:9:553:9 | z | main.rs:554:20:554:20 | z |
@@ -444,16 +444,16 @@ adjacentReads
| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:395:10:395:10 | x | main.rs:396:10:396:10 | x |
| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:396:10:396:10 | x | main.rs:398:9:398:9 | x |
| main.rs:410:9:410:9 | w | main.rs:410:9:410:9 | w | main.rs:414:9:414:9 | w | main.rs:416:7:416:7 | w |
| main.rs:476:9:476:13 | x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x | main.rs:478:15:478:15 | x |
| main.rs:476:9:476:13 | mut x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x | main.rs:478:15:478:15 | x |
| main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | main.rs:481:19:481:19 | x | main.rs:482:19:482:19 | x |
| main.rs:484:9:484:9 | x | main.rs:476:13:476:13 | x | main.rs:485:19:485:19 | x | main.rs:486:19:486:19 | x |
| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:494:19:494:19 | x | main.rs:500:19:500:19 | x |
| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:494:19:494:19 | x | main.rs:502:19:502:19 | x |
| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:496:19:496:19 | x | main.rs:500:19:500:19 | x |
| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:496:19:496:19 | x | main.rs:502:19:502:19 | x |
| main.rs:521:13:521:17 | f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f | main.rs:526:9:526:9 | f |
| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a | main.rs:542:5:542:5 | a |
| main.rs:540:9:540:13 | a | main.rs:540:13:540:13 | a | main.rs:542:5:542:5 | a | main.rs:543:15:543:15 | a |
| main.rs:521:13:521:17 | mut f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f | main.rs:526:9:526:9 | f |
| main.rs:540:9:540:13 | mut a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a | main.rs:542:5:542:5 | a |
| main.rs:540:9:540:13 | mut a | main.rs:540:13:540:13 | a | main.rs:542:5:542:5 | a | main.rs:543:15:543:15 | a |
| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:550:20:550:20 | x | main.rs:551:15:551:15 | x |
phi
| main.rs:191:9:191:44 | [match(true)] phi | main.rs:191:9:191:44 | a3 | main.rs:191:22:191:23 | a3 |
@@ -525,9 +525,9 @@ ultimateDef
| main.rs:479:5:487:5 | phi | main.rs:484:9:484:9 | x |
assigns
| main.rs:16:9:16:10 | x1 | main.rs:16:14:16:16 | "a" |
| main.rs:21:9:21:14 | x2 | main.rs:21:18:21:18 | 4 |
| main.rs:21:9:21:14 | mut x2 | main.rs:21:18:21:18 | 4 |
| main.rs:23:5:23:6 | x2 | main.rs:23:10:23:10 | 5 |
| main.rs:28:9:28:13 | x | main.rs:28:17:28:17 | 1 |
| main.rs:28:9:28:13 | mut x | main.rs:28:17:28:17 | 1 |
| main.rs:30:5:30:5 | x | main.rs:30:9:30:9 | 2 |
| main.rs:35:9:35:10 | x3 | main.rs:35:14:35:14 | 1 |
| main.rs:37:9:37:10 | x3 | main.rs:38:9:38:14 | ... + ... |
@@ -559,21 +559,21 @@ assigns
| main.rs:423:9:423:9 | y | main.rs:424:9:424:14 | &mut x |
| main.rs:430:9:430:9 | x | main.rs:430:13:430:15 | 100 |
| main.rs:432:9:432:11 | cap | main.rs:432:15:434:5 | \|...\| ... |
| main.rs:440:9:440:13 | x | main.rs:440:17:440:17 | 1 |
| main.rs:440:9:440:13 | mut x | main.rs:440:17:440:17 | 1 |
| main.rs:442:9:442:16 | closure1 | main.rs:442:20:444:5 | \|...\| ... |
| main.rs:448:9:448:13 | y | main.rs:448:17:448:17 | 2 |
| main.rs:450:9:450:20 | closure2 | main.rs:450:24:452:5 | \|...\| ... |
| main.rs:448:9:448:13 | mut y | main.rs:448:17:448:17 | 2 |
| main.rs:450:9:450:20 | mut closure2 | main.rs:450:24:452:5 | \|...\| ... |
| main.rs:451:9:451:9 | y | main.rs:451:13:451:13 | 3 |
| main.rs:458:9:458:20 | closure3 | main.rs:458:24:460:5 | \|...\| ... |
| main.rs:466:9:466:13 | i | main.rs:466:22:466:22 | 0 |
| main.rs:458:9:458:20 | mut closure3 | main.rs:458:24:460:5 | \|...\| ... |
| main.rs:466:9:466:13 | mut i | main.rs:466:22:466:22 | 0 |
| main.rs:467:9:467:13 | block | main.rs:467:17:469:5 | { ... } |
| main.rs:468:9:468:9 | i | main.rs:468:13:468:13 | 1 |
| main.rs:476:9:476:13 | x | main.rs:476:17:476:17 | 1 |
| main.rs:476:9:476:13 | mut x | main.rs:476:17:476:17 | 1 |
| main.rs:480:9:480:9 | x | main.rs:480:13:480:13 | 2 |
| main.rs:484:9:484:9 | x | main.rs:484:13:484:13 | 3 |
| main.rs:492:9:492:9 | x | main.rs:492:13:492:13 | 1 |
| main.rs:521:13:521:17 | f | main.rs:521:21:524:9 | \|...\| ... |
| main.rs:540:9:540:13 | a | main.rs:540:17:540:25 | [...] |
| main.rs:521:13:521:17 | mut f | main.rs:521:21:524:9 | \|...\| ... |
| main.rs:540:9:540:13 | mut a | main.rs:540:17:540:25 | [...] |
| main.rs:544:5:544:5 | a | main.rs:544:9:544:17 | [...] |
| main.rs:549:9:549:9 | x | main.rs:549:13:549:14 | 16 |
| main.rs:553:9:553:9 | z | main.rs:553:13:553:14 | 17 |

View File

@@ -18,4 +18,4 @@
| main.rs:519:9:519:20 | var_in_macro | Variable $@ is assigned a value that is never used. | main.rs:519:9:519:20 | var_in_macro | var_in_macro |
| more.rs:44:9:44:14 | a_ptr4 | Variable $@ is assigned a value that is never used. | more.rs:44:9:44:14 | a_ptr4 | a_ptr4 |
| more.rs:59:9:59:13 | d_ptr | Variable $@ is assigned a value that is never used. | more.rs:59:9:59:13 | d_ptr | d_ptr |
| more.rs:65:9:65:17 | f_ptr | Variable $@ is assigned a value that is never used. | more.rs:65:13:65:17 | f_ptr | f_ptr |
| more.rs:65:9:65:17 | mut f_ptr | Variable $@ is assigned a value that is never used. | more.rs:65:13:65:17 | f_ptr | f_ptr |

View File

@@ -44,7 +44,9 @@ impl<T> MyOption<T> {
}
}
// summary=repo::test;<crate::option::MyOption>::as_ref;Argument[self].Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated
// NOTE: The returned value inside the variant should be inside a `Reference`, requires handling
// `ref` in patterns.
// summary=repo::test;<crate::option::MyOption>::as_ref;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated
pub fn as_ref(&self) -> MyOption<&T> {
match *self {
MySome(ref x) => MySome(x),
@@ -52,7 +54,7 @@ impl<T> MyOption<T> {
}
}
// summary=repo::test;<crate::option::MyOption>::as_mut;Argument[self].Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated
// summary=repo::test;<crate::option::MyOption>::as_mut;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated
pub fn as_mut(&mut self) -> MyOption<&mut T> {
match *self {
MySome(ref mut x) => MySome(x),
@@ -285,8 +287,11 @@ impl<T> MyOption<T> {
}
}
// MISSING: summary=repo::test;<crate::option::MyOption>::insert;Argument[0];ReturnValue;value;dfc-generated
// SPURIOUS-summary=repo::test;<crate::option::MyOption>::insert;Argument[self].Variant[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated
// summary=repo::test;<crate::option::MyOption>::insert;Argument[0];Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated
// The below should be `ReturnValue.Reference` and not just `ReturnValue`.
// SPURIOUS-summary=repo::test;<crate::option::MyOption>::insert;Argument[0];ReturnValue;value;dfc-generated
// The content of `self` is overwritten so it does not flow to the return value.
// SPURIOUS-summary=repo::test;<crate::option::MyOption>::insert;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated
pub fn insert(&mut self, value: T) -> &mut T {
*self = MySome(value);
@@ -294,13 +299,14 @@ impl<T> MyOption<T> {
unsafe { self.as_mut().unwrap_unchecked() }
}
// summary=repo::test;<crate::option::MyOption>::get_or_insert;Argument[self].Variant[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated
// MISSING: repo::test;<crate::option::MyOption>::get_or_insert;Argument[0];ReturnValue;value;dfc-generated
// summary=repo::test;<crate::option::MyOption>::get_or_insert;Argument[0];Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated
// summary=repo::test;<crate::option::MyOption>::get_or_insert;Argument[0];ReturnValue;value;dfc-generated
// summary=repo::test;<crate::option::MyOption>::get_or_insert;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated
pub fn get_or_insert(&mut self, value: T) -> &mut T {
self.get_or_insert_with(|| value)
}
// summary=repo::test;<crate::option::MyOption>::get_or_insert_default;Argument[self].Variant[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated
// summary=repo::test;<crate::option::MyOption>::get_or_insert_default;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated
pub fn get_or_insert_default(&mut self) -> &mut T
where
T: Default,
@@ -308,7 +314,7 @@ impl<T> MyOption<T> {
self.get_or_insert_with(T::default)
}
// summary=repo::test;<crate::option::MyOption>::get_or_insert_with;Argument[self].Variant[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated
// summary=repo::test;<crate::option::MyOption>::get_or_insert_with;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated
// MISSING: Mutating `self` parameter.
pub fn get_or_insert_with<F>(&mut self, f: F) -> &mut T
where
@@ -329,7 +335,7 @@ impl<T> MyOption<T> {
mem::replace(self, MyNone)
}
// summary=repo::test;<crate::option::MyOption>::take_if;Argument[self].Variant[crate::option::MyOption::MySome(0)];Argument[0].Parameter[0];value;dfc-generated
// summary=repo::test;<crate::option::MyOption>::take_if;Argument[self].Reference.Variant[crate::option::MyOption::MySome(0)];Argument[0].Parameter[0];value;dfc-generated
// MISSING: Uses `take` which doesn't have flow
pub fn take_if<P>(&mut self, predicate: P) -> MyOption<T>
where
@@ -378,7 +384,7 @@ impl<T, U> MyOption<(T, U)> {
}
impl<T> MyOption<&T> {
// summary=repo::test;<crate::option::MyOption>::copied;Argument[self].Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated
// summary=repo::test;<crate::option::MyOption>::copied;Argument[self].Variant[crate::option::MyOption::MySome(0)].Reference;ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated
pub fn copied(self) -> MyOption<T>
where
T: Copy,
@@ -404,7 +410,7 @@ impl<T> MyOption<&T> {
}
impl<T> MyOption<&mut T> {
// summary=repo::test;<crate::option::MyOption>::copied;Argument[self].Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated
// summary=repo::test;<crate::option::MyOption>::copied;Argument[self].Variant[crate::option::MyOption::MySome(0)].Reference;ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated
pub fn copied(self) -> MyOption<T>
where
T: Copy,
@@ -474,14 +480,14 @@ impl<T> From<T> for MyOption<T> {
}
impl<'a, T> From<&'a MyOption<T>> for MyOption<&'a T> {
// summary=repo::test;<crate::option::MyOption as crate::convert::From>::from;Argument[0].Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated
// summary=repo::test;<crate::option::MyOption as crate::convert::From>::from;Argument[0].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated
fn from(o: &'a MyOption<T>) -> MyOption<&'a T> {
o.as_ref()
}
}
impl<'a, T> From<&'a mut MyOption<T>> for MyOption<&'a mut T> {
// summary=repo::test;<crate::option::MyOption as crate::convert::From>::from;Argument[0].Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated
// summary=repo::test;<crate::option::MyOption as crate::convert::From>::from;Argument[0].Reference.Variant[crate::option::MyOption::MySome(0)];ReturnValue.Variant[crate::option::MyOption::MySome(0)];value;dfc-generated
fn from(o: &'a mut MyOption<T>) -> MyOption<&'a mut T> {
o.as_mut()
}

View File

@@ -76,3 +76,15 @@ impl MyStruct {
pub fn apply<F>(n: i64, f: F) -> i64 where F : FnOnce(i64) -> i64 {
f(n)
}
// Flow out of mutated arguments
// summary=repo::test;crate::summaries::set_int;Argument[1];Argument[0].Reference;value;dfc-generated
pub fn set_int(n: &mut i64, c: i64) {
*n = c;
}
// summary=repo::test;crate::summaries::read_int;Argument[0].Reference;ReturnValue;value;dfc-generated
pub fn read_int(n: &mut i64) -> i64 {
*n
}