diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 4b718fc43998..f819632ce100 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -72,9 +72,9 @@ private ItemNode getAChildSuccessor(ItemNode item, string name, SuccessorKind ki if item instanceof ImplOrTraitItemNode and result instanceof AssocItem then kind.isExternal() else - if result instanceof Use - then kind.isInternal() - else kind.isBoth() + if result.isPublic() + then kind.isBoth() + else kind.isInternal() ) } @@ -165,6 +165,20 @@ abstract class ItemNode extends Locatable { /** Gets the visibility of this item, if any. */ abstract Visibility getVisibility(); + /** + * Holds if this item is public. + * + * This is the case when this item either has `pub` visibility (but is not + * a `use`; a `use` itself is not visible from the outside), or when this + * item is a variant. + */ + predicate isPublic() { + exists(this.getVisibility()) and + not this instanceof Use + or + this instanceof Variant + } + /** Gets the `i`th type parameter of this item, if any. */ abstract TypeParam getTypeParam(int i); @@ -380,9 +394,7 @@ abstract private class ModuleLikeNode extends ItemNode { private class SourceFileItemNode extends ModuleLikeNode, SourceFile { pragma[nomagic] - ModuleLikeNode getSuper() { - result = any(ModuleItemNode mod | fileImport(mod, this)).getASuccessor("super") - } + ModuleLikeNode getSuper() { fileImport(result.getAnItemInScope(), this) } override string getName() { result = "(source file)" } @@ -1300,7 +1312,8 @@ private predicate useTreeDeclares(UseTree tree, string name) { */ pragma[nomagic] private predicate declaresDirectly(ItemNode item, Namespace ns, string name) { - exists(ItemNode child, SuccessorKind kind | child = getAChildSuccessor(item, name, kind) | + exists(ItemNode child, SuccessorKind kind | + child = getAChildSuccessor(item, name, kind) and child.getNamespace() = ns and kind.isInternalOrBoth() ) @@ -1491,6 +1504,13 @@ private ItemNode resolvePathCandQualifier(RelevantPath qualifier, RelevantPath p name = path.getText() } +pragma[nomagic] +private Crate getCrate0(Locatable l) { result.getASourceFile().getFile() = l.getFile() } + +bindingset[l] +pragma[inline_late] +private Crate getCrate(Locatable l) { result = getCrate0(l) } + /** * Gets the item that `path` resolves to in `ns` when `qualifier` is the * qualifier of `path` and `qualifier` resolves to `q`, if any. @@ -1501,8 +1521,17 @@ private ItemNode resolvePathCandQualified( ) { exists(string name, SuccessorKind kind | q = resolvePathCandQualifier(qualifier, path, name) and - result = getASuccessor(q, name, ns, kind) and + result = getASuccessor(q, name, ns, kind) + | kind.isExternalOrBoth() + or + // Non-public items are visible to paths in descendant modules of the declaring + // module; the declaration may happen via a `use` statement, where the item + // being used is _not_ itself in an ancestor module, and we currently don't track + // that information in `getASuccessor`. So, for simplicity, we allow for non-public + // items when the path and the item are in the same crate. + getCrate(path) = getCrate(result) and + not result instanceof TypeParam ) } @@ -1646,10 +1675,12 @@ private ItemNode resolveUseTreeListItemQualifier( pragma[nomagic] private ItemNode resolveUseTreeListItem(Use use, UseTree tree) { - tree = use.getUseTree() and - result = resolvePathCand(tree.getPath()) - or - result = resolveUseTreeListItem(use, tree, tree.getPath(), _) + exists(Path path | path = tree.getPath() | + tree = use.getUseTree() and + result = resolvePathCand(path) + or + result = resolveUseTreeListItem(use, tree, path, _) + ) } /** Holds if `use` imports `item` as `name`. */ @@ -1673,7 +1704,10 @@ private predicate useImportEdge(Use use, string name, ItemNode item, SuccessorKi item = used and ( not tree.hasRename() and - name = item.getName() + exists(string pathName | + pathName = tree.getPath().getText() and + if pathName = "self" then name = item.getName() else name = pathName + ) or exists(Rename rename | rename = tree.getRename() | name = rename.getName().getText() diff --git a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected index 5ba71c14933d..0fb7a59f6f47 100644 --- a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected @@ -11,6 +11,8 @@ multipleCallTargets | test.rs:179:30:179:68 | ...::_print(...) | | test.rs:188:26:188:105 | ...::_print(...) | | test.rs:229:22:229:72 | ... .read_to_string(...) | +| test.rs:664:22:664:43 | file.read(...) | +| test.rs:673:22:673:41 | f1.read(...) | | test.rs:697:18:697:38 | ...::_print(...) | | test.rs:702:18:702:45 | ...::_print(...) | | test.rs:720:38:720:42 | ...::_print(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected index 88a728253d80..db0cb969d5a7 100644 --- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected @@ -1,138 +1,140 @@ models -| 1 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 2 | Source: ::send_request; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 3 | Source: ::file_name; ReturnValue; file | -| 4 | Source: ::path; ReturnValue; file | -| 5 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 6 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 7 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 8 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 9 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 10 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 11 | Source: ::file_name; ReturnValue; file | -| 12 | Source: ::path; ReturnValue; file | -| 13 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 14 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 15 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 16 | Source: std::env::args; ReturnValue.Element; commandargs | -| 17 | Source: std::env::args_os; ReturnValue.Element; commandargs | -| 18 | Source: std::env::current_dir; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | -| 19 | Source: std::env::current_exe; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | -| 20 | Source: std::env::home_dir; ReturnValue.Field[core::option::Option::Some(0)]; commandargs | -| 21 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | -| 22 | Source: std::env::var_os; ReturnValue.Field[core::option::Option::Some(0)]; environment | -| 23 | Source: std::fs::read; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 24 | Source: std::fs::read; ReturnValue; file | -| 25 | Source: std::fs::read_link; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 26 | Source: std::fs::read_to_string; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 27 | Source: std::fs::read_to_string; ReturnValue; file | -| 28 | Source: std::io::stdio::stdin; ReturnValue; stdin | -| 29 | Source: tokio::fs::read::read; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 30 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 31 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 32 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | -| 33 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 34 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | -| 35 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 36 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | -| 37 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 38 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 39 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 40 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 41 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 42 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 43 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 44 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 45 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 46 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | -| 47 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | -| 48 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | -| 49 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | -| 50 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | -| 51 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | -| 52 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | -| 53 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | -| 54 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 55 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 56 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 57 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 58 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 59 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | -| 60 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 61 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 62 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | -| 63 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 64 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | -| 65 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 66 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 67 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 68 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 69 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 70 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 71 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 72 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 73 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 74 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 75 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 76 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 77 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::__pointer]; value | -| 78 | Summary: ::new; Argument[0]; ReturnValue; value | -| 79 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 80 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 81 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 82 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 83 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 84 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 85 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 86 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 87 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 88 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 89 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 90 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 91 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 92 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 93 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 94 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 95 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | -| 96 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 97 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 98 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | -| 99 | Summary: ::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 100 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 101 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 102 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 103 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 104 | Summary: ::read_exact; Argument[self]; Argument[0].Reference; taint | -| 105 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | -| 106 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 107 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 108 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 109 | Summary: ::lock; Argument[self]; ReturnValue; taint | -| 110 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 111 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 112 | Summary: ::as_path; Argument[self]; ReturnValue; value | -| 113 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 114 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 115 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 116 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 117 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | -| 118 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | -| 119 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | +| 1 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 2 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 3 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 4 | Source: ::send_request; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 5 | Source: ::file_name; ReturnValue; file | +| 6 | Source: ::path; ReturnValue; file | +| 7 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 8 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 9 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 10 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 11 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 12 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 13 | Source: ::file_name; ReturnValue; file | +| 14 | Source: ::path; ReturnValue; file | +| 15 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 16 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 17 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 18 | Source: std::env::args; ReturnValue.Element; commandargs | +| 19 | Source: std::env::args_os; ReturnValue.Element; commandargs | +| 20 | Source: std::env::current_dir; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | +| 21 | Source: std::env::current_exe; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | +| 22 | Source: std::env::home_dir; ReturnValue.Field[core::option::Option::Some(0)]; commandargs | +| 23 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | +| 24 | Source: std::env::var_os; ReturnValue.Field[core::option::Option::Some(0)]; environment | +| 25 | Source: std::fs::read; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 26 | Source: std::fs::read; ReturnValue; file | +| 27 | Source: std::fs::read_link; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 28 | Source: std::fs::read_to_string; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 29 | Source: std::fs::read_to_string; ReturnValue; file | +| 30 | Source: std::io::stdio::stdin; ReturnValue; stdin | +| 31 | Source: tokio::fs::read::read; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 32 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 33 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 34 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | +| 35 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | +| 36 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | +| 37 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 38 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | +| 39 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 40 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 41 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 42 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 43 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 44 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 45 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 46 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 47 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 48 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | +| 49 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | +| 50 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | +| 51 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | +| 52 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | +| 53 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | +| 54 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | +| 55 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 56 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 57 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 58 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 59 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 60 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 61 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | +| 62 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 63 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 64 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | +| 65 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 66 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | +| 67 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 68 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 69 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 70 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 71 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 72 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 73 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 74 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 75 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 76 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 77 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 78 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 79 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::__pointer]; value | +| 80 | Summary: ::new; Argument[0]; ReturnValue; value | +| 81 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 82 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 83 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 84 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 85 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 86 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 87 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 88 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 89 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 90 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 91 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 92 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 93 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 94 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 95 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 96 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 97 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | +| 98 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 99 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 100 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | +| 101 | Summary: ::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 102 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 103 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 104 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 105 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 106 | Summary: ::read_exact; Argument[self]; Argument[0].Reference; taint | +| 107 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | +| 108 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 109 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 110 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 111 | Summary: ::lock; Argument[self]; ReturnValue; taint | +| 112 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 113 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 114 | Summary: ::as_path; Argument[self]; ReturnValue; value | +| 115 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 116 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 117 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 118 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 119 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | +| 120 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | +| 121 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | edges -| test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | provenance | Src:MaD:21 | -| test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:22 | +| test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | provenance | Src:MaD:23 | +| test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:24 | | test.rs:11:9:11:12 | var1 | test.rs:14:10:14:13 | var1 | provenance | | -| test.rs:11:16:11:28 | ...::var | test.rs:11:16:11:36 | ...::var(...) [Ok] | provenance | Src:MaD:21 | -| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:79 | +| test.rs:11:16:11:28 | ...::var | test.rs:11:16:11:36 | ...::var(...) [Ok] | provenance | Src:MaD:23 | +| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:81 | | test.rs:11:16:11:59 | ... .expect(...) | test.rs:11:9:11:12 | var1 | provenance | | | test.rs:12:9:12:12 | var2 | test.rs:15:10:15:13 | var2 | provenance | | -| test.rs:12:16:12:31 | ...::var_os | test.rs:12:16:12:39 | ...::var_os(...) [Some] | provenance | Src:MaD:22 | -| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:75 | +| test.rs:12:16:12:31 | ...::var_os | test.rs:12:16:12:39 | ...::var_os(...) [Some] | provenance | Src:MaD:24 | +| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:77 | | test.rs:12:16:12:48 | ... .unwrap() | test.rs:12:9:12:12 | var2 | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:30:20:30:23 | args [element] | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:31:17:31:20 | args [element] | provenance | | -| test.rs:29:29:29:42 | ...::args | test.rs:29:29:29:44 | ...::args(...) [element] | provenance | Src:MaD:16 | -| test.rs:29:29:29:44 | ...::args(...) [element] | test.rs:29:29:29:54 | ... .collect() [element] | provenance | MaD:34 | +| test.rs:29:29:29:42 | ...::args | test.rs:29:29:29:44 | ...::args(...) [element] | provenance | Src:MaD:18 | +| test.rs:29:29:29:44 | ...::args(...) [element] | test.rs:29:29:29:54 | ... .collect() [element] | provenance | MaD:36 | | test.rs:29:29:29:54 | ... .collect() [element] | test.rs:29:9:29:12 | args [element] | provenance | | | test.rs:30:9:30:15 | my_path [&ref] | test.rs:36:10:36:16 | my_path | provenance | | | test.rs:30:19:30:26 | &... [&ref] | test.rs:30:9:30:15 | my_path [&ref] | provenance | | @@ -143,89 +145,89 @@ edges | test.rs:31:17:31:20 | args [element] | test.rs:31:17:31:23 | args[1] | provenance | | | test.rs:31:17:31:23 | args[1] | test.rs:31:16:31:23 | &... [&ref] | provenance | | | test.rs:32:9:32:12 | arg2 | test.rs:38:10:38:13 | arg2 | provenance | | -| test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:16 | -| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:35 | -| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:75 | +| test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:18 | +| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:37 | +| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:77 | | test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:9:32:12 | arg2 | provenance | | | test.rs:33:9:33:12 | arg3 | test.rs:39:10:39:13 | arg3 | provenance | | -| test.rs:33:16:33:32 | ...::args_os | test.rs:33:16:33:34 | ...::args_os(...) [element] | provenance | Src:MaD:17 | -| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:35 | -| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:75 | +| test.rs:33:16:33:32 | ...::args_os | test.rs:33:16:33:34 | ...::args_os(...) [element] | provenance | Src:MaD:19 | +| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:37 | +| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:77 | | test.rs:33:16:33:50 | ... .unwrap() | test.rs:33:9:33:12 | arg3 | provenance | | | test.rs:34:9:34:12 | arg4 | test.rs:40:10:40:13 | arg4 | provenance | | -| test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:16 | -| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:35 | -| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:75 | -| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:83 | -| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:80 | +| test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:18 | +| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:37 | +| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:77 | +| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:85 | +| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:82 | | test.rs:34:16:34:73 | ... .unwrap() | test.rs:34:9:34:12 | arg4 | provenance | | | test.rs:42:9:42:11 | arg | test.rs:43:14:43:16 | arg | provenance | | -| test.rs:42:16:42:29 | ...::args | test.rs:42:16:42:31 | ...::args(...) [element] | provenance | Src:MaD:16 | +| test.rs:42:16:42:29 | ...::args | test.rs:42:16:42:31 | ...::args(...) [element] | provenance | Src:MaD:18 | | test.rs:42:16:42:31 | ...::args(...) [element] | test.rs:42:9:42:11 | arg | provenance | | | test.rs:46:9:46:11 | arg | test.rs:47:14:47:16 | arg | provenance | | -| test.rs:46:16:46:32 | ...::args_os | test.rs:46:16:46:34 | ...::args_os(...) [element] | provenance | Src:MaD:17 | +| test.rs:46:16:46:32 | ...::args_os | test.rs:46:16:46:34 | ...::args_os(...) [element] | provenance | Src:MaD:19 | | test.rs:46:16:46:34 | ...::args_os(...) [element] | test.rs:46:9:46:11 | arg | provenance | | | test.rs:52:9:52:11 | dir | test.rs:56:10:56:12 | dir | provenance | | -| test.rs:52:15:52:35 | ...::current_dir | test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:18 | -| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:79 | +| test.rs:52:15:52:35 | ...::current_dir | test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:20 | +| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:81 | | test.rs:52:15:52:54 | ... .expect(...) | test.rs:52:9:52:11 | dir | provenance | | | test.rs:53:9:53:11 | exe | test.rs:57:10:57:12 | exe | provenance | | -| test.rs:53:15:53:35 | ...::current_exe | test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:19 | -| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:79 | +| test.rs:53:15:53:35 | ...::current_exe | test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:21 | +| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:81 | | test.rs:53:15:53:54 | ... .expect(...) | test.rs:53:9:53:11 | exe | provenance | | | test.rs:54:9:54:12 | home | test.rs:58:10:58:13 | home | provenance | | -| test.rs:54:16:54:33 | ...::home_dir | test.rs:54:16:54:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:20 | -| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:74 | +| test.rs:54:16:54:33 | ...::home_dir | test.rs:54:16:54:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:22 | +| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:76 | | test.rs:54:16:54:52 | ... .expect(...) | test.rs:54:9:54:12 | home | provenance | | | test.rs:62:9:62:22 | remote_string1 | test.rs:63:10:63:23 | remote_string1 | provenance | | -| test.rs:62:26:62:47 | ...::get | test.rs:62:26:62:62 | ...::get(...) [Ok] | provenance | Src:MaD:14 | +| test.rs:62:26:62:47 | ...::get | test.rs:62:26:62:62 | ...::get(...) [Ok] | provenance | Src:MaD:16 | | test.rs:62:26:62:62 | ...::get(...) [Ok] | test.rs:62:26:62:63 | TryExpr | provenance | | -| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:90 | +| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:92 | | test.rs:62:26:62:70 | ... .text() [Ok] | test.rs:62:26:62:71 | TryExpr | provenance | | | test.rs:62:26:62:71 | TryExpr | test.rs:62:9:62:22 | remote_string1 | provenance | | | test.rs:65:9:65:22 | remote_string2 | test.rs:66:10:66:23 | remote_string2 | provenance | | -| test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:14 | -| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:80 | -| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:90 | -| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:80 | +| test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:16 | +| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:82 | +| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:92 | +| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:82 | | test.rs:65:26:65:87 | ... .unwrap() | test.rs:65:9:65:22 | remote_string2 | provenance | | | test.rs:68:9:68:22 | remote_string3 | test.rs:69:10:69:23 | remote_string3 | provenance | | -| test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:14 | -| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:80 | -| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:91 | -| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:80 | +| test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:16 | +| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:82 | +| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:93 | +| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:82 | | test.rs:68:26:68:107 | ... .unwrap() | test.rs:68:9:68:22 | remote_string3 | provenance | | | test.rs:71:9:71:22 | remote_string4 | test.rs:72:10:72:23 | remote_string4 | provenance | | -| test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:14 | -| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:80 | -| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:89 | -| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:80 | +| test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:16 | +| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:82 | +| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:91 | +| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:82 | | test.rs:71:26:71:88 | ... .unwrap() | test.rs:71:9:71:22 | remote_string4 | provenance | | | test.rs:74:9:74:22 | remote_string5 | test.rs:75:10:75:23 | remote_string5 | provenance | | -| test.rs:74:26:74:37 | ...::get | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:15 | +| test.rs:74:26:74:37 | ...::get | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:17 | | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | test.rs:74:26:74:58 | await ... [Ok] | provenance | | | test.rs:74:26:74:58 | await ... [Ok] | test.rs:74:26:74:59 | TryExpr | provenance | | -| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:88 | +| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:90 | | test.rs:74:26:74:66 | ... .text() [future, Ok] | test.rs:74:26:74:72 | await ... [Ok] | provenance | | | test.rs:74:26:74:72 | await ... [Ok] | test.rs:74:26:74:73 | TryExpr | provenance | | | test.rs:74:26:74:73 | TryExpr | test.rs:74:9:74:22 | remote_string5 | provenance | | | test.rs:77:9:77:22 | remote_string6 | test.rs:78:10:78:23 | remote_string6 | provenance | | -| test.rs:77:26:77:37 | ...::get | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:15 | +| test.rs:77:26:77:37 | ...::get | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:17 | | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | test.rs:77:26:77:58 | await ... [Ok] | provenance | | | test.rs:77:26:77:58 | await ... [Ok] | test.rs:77:26:77:59 | TryExpr | provenance | | -| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:86 | +| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:88 | | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | test.rs:77:26:77:73 | await ... [Ok] | provenance | | | test.rs:77:26:77:73 | await ... [Ok] | test.rs:77:26:77:74 | TryExpr | provenance | | | test.rs:77:26:77:74 | TryExpr | test.rs:77:9:77:22 | remote_string6 | provenance | | -| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:87 | -| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:87 | -| test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:15 | +| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:89 | +| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:89 | +| test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:17 | | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | test.rs:80:24:80:56 | await ... [Ok] | provenance | | | test.rs:80:24:80:56 | await ... [Ok] | test.rs:80:24:80:57 | TryExpr | provenance | | | test.rs:80:24:80:57 | TryExpr | test.rs:80:9:80:20 | mut request1 | provenance | | | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | test.rs:81:10:81:31 | await ... [Ok, Some] | provenance | | | test.rs:81:10:81:31 | await ... [Ok, Some] | test.rs:81:10:81:32 | TryExpr [Some] | provenance | | -| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:75 | +| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:77 | | test.rs:82:15:82:25 | Some(...) [Some] | test.rs:82:20:82:24 | chunk | provenance | | | test.rs:82:20:82:24 | chunk | test.rs:83:14:83:18 | chunk | provenance | | | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | test.rs:82:29:82:50 | await ... [Ok, Some] | provenance | | @@ -236,129 +238,129 @@ edges | test.rs:114:24:114:51 | sender.send_request(...) [future, Ok] | test.rs:114:24:114:57 | await ... [Ok] | provenance | | | test.rs:114:24:114:57 | await ... [Ok] | test.rs:114:24:114:58 | TryExpr | provenance | | | test.rs:114:24:114:58 | TryExpr | test.rs:114:13:114:20 | response | provenance | | -| test.rs:114:31:114:42 | send_request | test.rs:114:24:114:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | +| test.rs:114:31:114:42 | send_request | test.rs:114:24:114:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:4 | | test.rs:115:15:115:22 | response | test.rs:115:14:115:22 | &response | provenance | | | test.rs:121:9:121:20 | mut response | test.rs:122:11:122:18 | response | provenance | | | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | test.rs:121:24:121:57 | await ... [Ok] | provenance | | | test.rs:121:24:121:57 | await ... [Ok] | test.rs:121:24:121:58 | TryExpr | provenance | | | test.rs:121:24:121:58 | TryExpr | test.rs:121:9:121:20 | mut response | provenance | | -| test.rs:121:31:121:42 | send_request | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | +| test.rs:121:31:121:42 | send_request | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:4 | | test.rs:122:11:122:18 | response | test.rs:122:10:122:18 | &response | provenance | | -| test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:28 MaD:28 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:103 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:53 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:102 | +| test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:30 MaD:30 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:105 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:55 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:104 | | test.rs:211:44:211:54 | [post] &mut buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | test.rs:211:49:211:54 | [post] buffer | provenance | | | test.rs:211:49:211:54 | [post] buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:212:15:212:20 | buffer | test.rs:212:14:212:20 | &buffer | provenance | | -| test.rs:217:22:217:35 | ...::stdin | test.rs:217:22:217:37 | ...::stdin(...) | provenance | Src:MaD:28 MaD:28 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:55 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:106 | +| test.rs:217:22:217:35 | ...::stdin | test.rs:217:22:217:37 | ...::stdin(...) | provenance | Src:MaD:30 MaD:30 | +| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:57 | +| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:108 | | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | test.rs:217:56:217:61 | [post] buffer | provenance | | | test.rs:217:56:217:61 | [post] buffer | test.rs:218:15:218:20 | buffer | provenance | | | test.rs:218:15:218:20 | buffer | test.rs:218:14:218:20 | &buffer | provenance | | -| test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:28 MaD:28 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:108 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:56 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:107 | +| test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:30 MaD:30 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:110 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:58 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:109 | | test.rs:223:54:223:64 | [post] &mut buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | test.rs:223:59:223:64 | [post] buffer | provenance | | | test.rs:223:59:223:64 | [post] buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:224:15:224:20 | buffer | test.rs:224:14:224:20 | &buffer | provenance | | -| test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:28 MaD:28 | -| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:109 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:56 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:110 | +| test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:30 MaD:30 | +| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:111 | +| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:58 | +| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:112 | | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | test.rs:229:66:229:71 | [post] buffer | provenance | | | test.rs:229:66:229:71 | [post] buffer | test.rs:230:15:230:20 | buffer | provenance | | | test.rs:230:15:230:20 | buffer | test.rs:230:14:230:20 | &buffer | provenance | | -| test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:28 MaD:28 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:105 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:54 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:104 | +| test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:30 MaD:30 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:107 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:56 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:106 | | test.rs:235:37:235:47 | [post] &mut buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | test.rs:235:42:235:47 | [post] buffer | provenance | | | test.rs:235:42:235:47 | [post] buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:236:15:236:20 | buffer | test.rs:236:14:236:20 | &buffer | provenance | | -| test.rs:239:17:239:30 | ...::stdin | test.rs:239:17:239:32 | ...::stdin(...) | provenance | Src:MaD:28 MaD:28 | -| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:50 | +| test.rs:239:17:239:30 | ...::stdin | test.rs:239:17:239:32 | ...::stdin(...) | provenance | Src:MaD:30 MaD:30 | +| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:52 | | test.rs:239:17:239:40 | ... .bytes() | test.rs:240:14:240:17 | byte | provenance | | -| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:99 | +| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:101 | | test.rs:246:26:246:66 | ...::new(...) | test.rs:246:13:246:22 | mut reader | provenance | | -| test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:28 MaD:28 | -| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:101 | +| test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:30 MaD:30 | +| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:103 | | test.rs:247:13:247:16 | data | test.rs:248:15:248:18 | data | provenance | | | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | test.rs:247:20:247:37 | TryExpr | provenance | | | test.rs:247:20:247:37 | TryExpr | test.rs:247:13:247:16 | data | provenance | | | test.rs:248:15:248:18 | data | test.rs:248:14:248:18 | &data | provenance | | -| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:100 | +| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:102 | | test.rs:252:22:252:62 | ...::new(...) | test.rs:252:13:252:18 | reader | provenance | | -| test.rs:252:46:252:59 | ...::stdin | test.rs:252:46:252:61 | ...::stdin(...) | provenance | Src:MaD:28 MaD:28 | -| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:101 | +| test.rs:252:46:252:59 | ...::stdin | test.rs:252:46:252:61 | ...::stdin(...) | provenance | Src:MaD:30 MaD:30 | +| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:103 | | test.rs:253:13:253:16 | data | test.rs:254:15:254:18 | data | provenance | | | test.rs:253:20:253:34 | reader.buffer() | test.rs:253:13:253:16 | data | provenance | | | test.rs:254:15:254:18 | data | test.rs:254:14:254:18 | &data | provenance | | -| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:47 | +| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:49 | | test.rs:259:26:259:66 | ...::new(...) | test.rs:259:13:259:22 | mut reader | provenance | | -| test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:28 MaD:28 | -| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:101 | +| test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:30 MaD:30 | +| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:103 | | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | test.rs:260:31:260:36 | [post] buffer | provenance | | | test.rs:260:31:260:36 | [post] buffer | test.rs:261:15:261:20 | buffer | provenance | | | test.rs:261:15:261:20 | buffer | test.rs:261:14:261:20 | &buffer | provenance | | -| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:48 | +| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:50 | | test.rs:266:26:266:66 | ...::new(...) | test.rs:266:13:266:22 | mut reader | provenance | | -| test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:28 MaD:28 | -| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:101 | +| test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:30 MaD:30 | +| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:103 | | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | test.rs:267:38:267:43 | [post] buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:268:15:268:20 | buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:269:14:269:22 | buffer[0] | provenance | | | test.rs:268:15:268:20 | buffer | test.rs:268:14:268:20 | &buffer | provenance | | -| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:98 | -| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:98 | -| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:49 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:100 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:100 | +| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:51 | | test.rs:273:32:273:84 | ... .split(...) | test.rs:273:13:273:28 | mut reader_split | provenance | | -| test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:28 MaD:28 | -| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:101 | -| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:75 | -| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:80 | +| test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:30 MaD:30 | +| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:103 | +| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:77 | +| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:82 | | test.rs:275:19:275:29 | Some(...) [Some, Ok] | test.rs:275:24:275:28 | chunk [Ok] | provenance | | -| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:80 | +| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:82 | | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | test.rs:275:19:275:29 | Some(...) [Some, Ok] | provenance | | -| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:46 | +| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:48 | | test.rs:281:22:281:62 | ...::new(...) | test.rs:281:13:281:18 | reader | provenance | | -| test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:28 MaD:28 | -| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:101 | +| test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:30 MaD:30 | +| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:103 | | test.rs:282:21:282:34 | reader.lines() | test.rs:283:18:283:21 | line | provenance | | -| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:32 MaD:32 | +| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:65 | +| test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:34 MaD:34 | | test.rs:309:25:309:42 | ...::stdin(...) | test.rs:309:13:309:21 | mut stdin | provenance | | | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | test.rs:311:38:311:43 | [post] buffer | provenance | | | test.rs:311:38:311:43 | [post] buffer | test.rs:312:15:312:20 | buffer | provenance | | | test.rs:312:15:312:20 | buffer | test.rs:312:14:312:20 | &buffer | provenance | | -| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:69 | -| test.rs:316:25:316:40 | ...::stdin | test.rs:316:25:316:42 | ...::stdin(...) | provenance | Src:MaD:32 MaD:32 | +| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:71 | +| test.rs:316:25:316:40 | ...::stdin | test.rs:316:25:316:42 | ...::stdin(...) | provenance | Src:MaD:34 MaD:34 | | test.rs:316:25:316:42 | ...::stdin(...) | test.rs:316:13:316:21 | mut stdin | provenance | | | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | test.rs:318:45:318:50 | [post] buffer | provenance | | | test.rs:318:45:318:50 | [post] buffer | test.rs:319:15:319:20 | buffer | provenance | | | test.rs:319:15:319:20 | buffer | test.rs:319:14:319:20 | &buffer | provenance | | -| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:70 | -| test.rs:323:25:323:40 | ...::stdin | test.rs:323:25:323:42 | ...::stdin(...) | provenance | Src:MaD:32 MaD:32 | +| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:72 | +| test.rs:323:25:323:40 | ...::stdin | test.rs:323:25:323:42 | ...::stdin(...) | provenance | Src:MaD:34 MaD:34 | | test.rs:323:25:323:42 | ...::stdin(...) | test.rs:323:13:323:21 | mut stdin | provenance | | | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | test.rs:325:48:325:53 | [post] buffer | provenance | | | test.rs:325:48:325:53 | [post] buffer | test.rs:326:15:326:20 | buffer | provenance | | | test.rs:326:15:326:20 | buffer | test.rs:326:14:326:20 | &buffer | provenance | | -| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:330:25:330:40 | ...::stdin | test.rs:330:25:330:42 | ...::stdin(...) | provenance | Src:MaD:32 MaD:32 | +| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:67 | +| test.rs:330:25:330:40 | ...::stdin | test.rs:330:25:330:42 | ...::stdin(...) | provenance | Src:MaD:34 MaD:34 | | test.rs:330:25:330:42 | ...::stdin(...) | test.rs:330:13:330:21 | mut stdin | provenance | | | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | test.rs:332:31:332:36 | [post] buffer | provenance | | | test.rs:332:31:332:36 | [post] buffer | test.rs:333:15:333:20 | buffer | provenance | | | test.rs:333:15:333:20 | buffer | test.rs:333:14:333:20 | &buffer | provenance | | -| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:71 | -| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:67 | -| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:66 | -| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:68 | -| test.rs:337:25:337:40 | ...::stdin | test.rs:337:25:337:42 | ...::stdin(...) | provenance | Src:MaD:32 MaD:32 | +| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:73 | +| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:69 | +| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:68 | +| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:70 | +| test.rs:337:25:337:40 | ...::stdin | test.rs:337:25:337:42 | ...::stdin(...) | provenance | Src:MaD:34 MaD:34 | | test.rs:337:25:337:42 | ...::stdin(...) | test.rs:337:13:337:21 | mut stdin | provenance | | | test.rs:338:13:338:14 | v1 | test.rs:342:14:342:15 | v1 | provenance | | | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | test.rs:338:18:338:38 | await ... [Ok] | provenance | | @@ -376,150 +378,150 @@ edges | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | test.rs:341:18:341:42 | await ... [Ok] | provenance | | | test.rs:341:18:341:42 | await ... [Ok] | test.rs:341:18:341:43 | TryExpr | provenance | | | test.rs:341:18:341:43 | TryExpr | test.rs:341:13:341:14 | v4 | provenance | | -| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:349:25:349:40 | ...::stdin | test.rs:349:25:349:42 | ...::stdin(...) | provenance | Src:MaD:32 MaD:32 | +| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:66 | +| test.rs:349:25:349:40 | ...::stdin | test.rs:349:25:349:42 | ...::stdin(...) | provenance | Src:MaD:34 MaD:34 | | test.rs:349:25:349:42 | ...::stdin(...) | test.rs:349:13:349:21 | mut stdin | provenance | | | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | test.rs:351:29:351:34 | [post] buffer | provenance | | | test.rs:351:29:351:34 | [post] buffer | test.rs:352:15:352:20 | buffer | provenance | | | test.rs:352:15:352:20 | buffer | test.rs:352:14:352:20 | &buffer | provenance | | -| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:58 | +| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:60 | | test.rs:358:26:358:70 | ...::new(...) | test.rs:358:13:358:22 | mut reader | provenance | | -| test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:32 MaD:32 | -| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:114 | +| test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:34 MaD:34 | +| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:116 | | test.rs:359:13:359:16 | data | test.rs:360:15:360:18 | data | provenance | | | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | test.rs:359:20:359:42 | await ... [Ok] | provenance | | | test.rs:359:20:359:42 | await ... [Ok] | test.rs:359:20:359:43 | TryExpr | provenance | | | test.rs:359:20:359:43 | TryExpr | test.rs:359:13:359:16 | data | provenance | | | test.rs:360:15:360:18 | data | test.rs:360:14:360:18 | &data | provenance | | -| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:113 | +| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:115 | | test.rs:364:22:364:66 | ...::new(...) | test.rs:364:13:364:18 | reader | provenance | | -| test.rs:364:48:364:63 | ...::stdin | test.rs:364:48:364:65 | ...::stdin(...) | provenance | Src:MaD:32 MaD:32 | -| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:114 | +| test.rs:364:48:364:63 | ...::stdin | test.rs:364:48:364:65 | ...::stdin(...) | provenance | Src:MaD:34 MaD:34 | +| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:116 | | test.rs:365:13:365:16 | data | test.rs:366:15:366:18 | data | provenance | | | test.rs:365:20:365:34 | reader.buffer() | test.rs:365:13:365:16 | data | provenance | | | test.rs:366:15:366:18 | data | test.rs:366:14:366:18 | &data | provenance | | -| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:60 | +| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:62 | | test.rs:371:26:371:70 | ...::new(...) | test.rs:371:13:371:22 | mut reader | provenance | | -| test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:32 MaD:32 | -| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:114 | +| test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:34 MaD:34 | +| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:116 | | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | test.rs:372:31:372:36 | [post] buffer | provenance | | | test.rs:372:31:372:36 | [post] buffer | test.rs:373:15:373:20 | buffer | provenance | | | test.rs:373:15:373:20 | buffer | test.rs:373:14:373:20 | &buffer | provenance | | -| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:61 | +| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:63 | | test.rs:378:26:378:70 | ...::new(...) | test.rs:378:13:378:22 | mut reader | provenance | | -| test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:32 MaD:32 | -| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:114 | +| test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:34 MaD:34 | +| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:116 | | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | test.rs:379:38:379:43 | [post] buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:380:15:380:20 | buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:381:14:381:22 | buffer[0] | provenance | | | test.rs:380:15:380:20 | buffer | test.rs:380:14:380:20 | &buffer | provenance | | -| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:116 | -| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:116 | -| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:62 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:118 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:118 | +| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:64 | | test.rs:385:32:385:88 | ... .split(...) | test.rs:385:13:385:28 | mut reader_split | provenance | | -| test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:32 MaD:32 | -| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:114 | +| test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:34 MaD:34 | +| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:116 | | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:386:14:386:46 | await ... [Ok, Some] | provenance | | | test.rs:386:14:386:46 | await ... [Ok, Some] | test.rs:386:14:386:47 | TryExpr [Some] | provenance | | -| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:75 | +| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:77 | | test.rs:387:19:387:29 | Some(...) [Some] | test.rs:387:24:387:28 | chunk | provenance | | | test.rs:387:24:387:28 | chunk | test.rs:388:18:388:22 | chunk | provenance | | | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | test.rs:387:33:387:65 | await ... [Ok, Some] | provenance | | | test.rs:387:33:387:65 | await ... [Ok, Some] | test.rs:387:33:387:66 | TryExpr [Some] | provenance | | | test.rs:387:33:387:66 | TryExpr [Some] | test.rs:387:19:387:29 | Some(...) [Some] | provenance | | -| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:59 | +| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:61 | | test.rs:393:22:393:66 | ...::new(...) | test.rs:393:13:393:18 | reader | provenance | | -| test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:32 MaD:32 | -| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:114 | -| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:115 | -| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:115 | +| test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:34 MaD:34 | +| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:116 | +| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:117 | +| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:117 | | test.rs:394:25:394:38 | reader.lines() | test.rs:394:13:394:21 | mut lines | provenance | | | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | test.rs:395:14:395:36 | await ... [Ok, Some] | provenance | | | test.rs:395:14:395:36 | await ... [Ok, Some] | test.rs:395:14:395:37 | TryExpr [Some] | provenance | | -| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:75 | +| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:77 | | test.rs:396:19:396:28 | Some(...) [Some] | test.rs:396:24:396:27 | line | provenance | | | test.rs:396:24:396:27 | line | test.rs:397:18:397:21 | line | provenance | | | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | test.rs:396:32:396:54 | await ... [Ok, Some] | provenance | | | test.rs:396:32:396:54 | await ... [Ok, Some] | test.rs:396:32:396:55 | TryExpr [Some] | provenance | | | test.rs:396:32:396:55 | TryExpr [Some] | test.rs:396:19:396:28 | Some(...) [Some] | provenance | | | test.rs:408:13:408:18 | buffer | test.rs:409:14:409:19 | buffer | provenance | | -| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:43 | ...::read [Ok] | provenance | Src:MaD:23 | -| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | Src:MaD:23 | -| test.rs:408:31:408:43 | ...::read [Ok] | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | MaD:24 | +| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:43 | ...::read [Ok] | provenance | Src:MaD:25 | +| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | Src:MaD:25 | +| test.rs:408:31:408:43 | ...::read [Ok] | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | MaD:26 | | test.rs:408:31:408:55 | ...::read(...) [Ok] | test.rs:408:31:408:56 | TryExpr | provenance | | | test.rs:408:31:408:56 | TryExpr | test.rs:408:13:408:18 | buffer | provenance | | | test.rs:413:13:413:18 | buffer | test.rs:414:14:414:19 | buffer | provenance | | -| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:38 | ...::read [Ok] | provenance | Src:MaD:23 | -| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | Src:MaD:23 | -| test.rs:413:31:413:38 | ...::read [Ok] | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | MaD:24 | +| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:38 | ...::read [Ok] | provenance | Src:MaD:25 | +| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | Src:MaD:25 | +| test.rs:413:31:413:38 | ...::read [Ok] | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | MaD:26 | | test.rs:413:31:413:50 | ...::read(...) [Ok] | test.rs:413:31:413:51 | TryExpr | provenance | | | test.rs:413:31:413:51 | TryExpr | test.rs:413:13:413:18 | buffer | provenance | | | test.rs:418:13:418:18 | buffer | test.rs:419:14:419:19 | buffer | provenance | | -| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:39 | ...::read_to_string [Ok] | provenance | Src:MaD:26 | -| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:26 | -| test.rs:418:22:418:39 | ...::read_to_string [Ok] | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | MaD:27 | +| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:39 | ...::read_to_string [Ok] | provenance | Src:MaD:28 | +| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:28 | +| test.rs:418:22:418:39 | ...::read_to_string [Ok] | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | MaD:29 | | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | test.rs:418:22:418:52 | TryExpr | provenance | | | test.rs:418:22:418:52 | TryExpr | test.rs:418:13:418:18 | buffer | provenance | | | test.rs:425:13:425:16 | path | test.rs:426:14:426:17 | path | provenance | | -| test.rs:425:13:425:16 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:33 | +| test.rs:425:13:425:16 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:35 | | test.rs:425:13:425:16 | path | test.rs:427:14:427:17 | path | provenance | | -| test.rs:425:13:425:16 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:33 | +| test.rs:425:13:425:16 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:35 | | test.rs:425:13:425:16 | path | test.rs:437:14:437:17 | path | provenance | | | test.rs:425:20:425:27 | e.path() | test.rs:425:13:425:16 | path | provenance | | -| test.rs:425:22:425:25 | path | test.rs:425:20:425:27 | e.path() | provenance | Src:MaD:4 MaD:4 | -| test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:33 | -| test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:33 | -| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:112 | +| test.rs:425:22:425:25 | path | test.rs:425:20:425:27 | e.path() | provenance | Src:MaD:6 MaD:6 | +| test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:35 | +| test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:35 | +| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:114 | | test.rs:439:13:439:21 | file_name | test.rs:440:14:440:22 | file_name | provenance | | -| test.rs:439:13:439:21 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:33 | +| test.rs:439:13:439:21 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:35 | | test.rs:439:13:439:21 | file_name | test.rs:445:14:445:22 | file_name | provenance | | | test.rs:439:25:439:37 | e.file_name() | test.rs:439:13:439:21 | file_name | provenance | | -| test.rs:439:27:439:35 | file_name | test.rs:439:25:439:37 | e.file_name() | provenance | Src:MaD:3 MaD:3 | -| test.rs:440:14:440:22 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:33 | +| test.rs:439:27:439:35 | file_name | test.rs:439:25:439:37 | e.file_name() | provenance | Src:MaD:5 MaD:5 | +| test.rs:440:14:440:22 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:35 | | test.rs:461:13:461:18 | target | test.rs:462:14:462:19 | target | provenance | | -| test.rs:461:22:461:34 | ...::read_link | test.rs:461:22:461:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:25 | +| test.rs:461:22:461:34 | ...::read_link | test.rs:461:22:461:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:27 | | test.rs:461:22:461:49 | ...::read_link(...) [Ok] | test.rs:461:22:461:50 | TryExpr | provenance | | | test.rs:461:22:461:50 | TryExpr | test.rs:461:13:461:18 | target | provenance | | | test.rs:470:13:470:18 | buffer | test.rs:471:14:471:19 | buffer | provenance | | -| test.rs:470:31:470:45 | ...::read | test.rs:470:31:470:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:29 | +| test.rs:470:31:470:45 | ...::read | test.rs:470:31:470:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:31 | | test.rs:470:31:470:57 | ...::read(...) [future, Ok] | test.rs:470:31:470:63 | await ... [Ok] | provenance | | | test.rs:470:31:470:63 | await ... [Ok] | test.rs:470:31:470:64 | TryExpr | provenance | | | test.rs:470:31:470:64 | TryExpr | test.rs:470:13:470:18 | buffer | provenance | | | test.rs:475:13:475:18 | buffer | test.rs:476:14:476:19 | buffer | provenance | | -| test.rs:475:31:475:45 | ...::read | test.rs:475:31:475:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:29 | +| test.rs:475:31:475:45 | ...::read | test.rs:475:31:475:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:31 | | test.rs:475:31:475:57 | ...::read(...) [future, Ok] | test.rs:475:31:475:63 | await ... [Ok] | provenance | | | test.rs:475:31:475:63 | await ... [Ok] | test.rs:475:31:475:64 | TryExpr | provenance | | | test.rs:475:31:475:64 | TryExpr | test.rs:475:13:475:18 | buffer | provenance | | | test.rs:480:13:480:18 | buffer | test.rs:481:14:481:19 | buffer | provenance | | -| test.rs:480:22:480:46 | ...::read_to_string | test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:31 | +| test.rs:480:22:480:46 | ...::read_to_string | test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:33 | | test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | test.rs:480:22:480:64 | await ... [Ok] | provenance | | | test.rs:480:22:480:64 | await ... [Ok] | test.rs:480:22:480:65 | TryExpr | provenance | | | test.rs:480:22:480:65 | TryExpr | test.rs:480:13:480:18 | buffer | provenance | | | test.rs:486:13:486:16 | path | test.rs:488:14:488:17 | path | provenance | | | test.rs:486:20:486:31 | entry.path() | test.rs:486:13:486:16 | path | provenance | | -| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:12 MaD:12 | -| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:12 MaD:12 | +| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:14 MaD:14 | +| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:14 MaD:14 | | test.rs:487:13:487:21 | file_name | test.rs:489:14:489:22 | file_name | provenance | | | test.rs:487:25:487:41 | entry.file_name() | test.rs:487:13:487:21 | file_name | provenance | | -| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:11 MaD:11 | -| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:11 MaD:11 | +| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:13 MaD:13 | +| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:13 MaD:13 | | test.rs:493:13:493:18 | target | test.rs:494:14:494:19 | target | provenance | | -| test.rs:493:22:493:41 | ...::read_link | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:30 | +| test.rs:493:22:493:41 | ...::read_link | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:32 | | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | test.rs:493:22:493:62 | await ... [Ok] | provenance | | | test.rs:493:22:493:62 | await ... [Ok] | test.rs:493:22:493:63 | TryExpr | provenance | | | test.rs:493:22:493:63 | TryExpr | test.rs:493:13:493:18 | target | provenance | | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:93 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:53 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:92 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:95 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:55 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:94 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:97 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:56 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:96 | -| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:54 | -| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:50 | -| test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:95 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:55 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:94 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:97 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:57 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:96 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:99 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:58 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:98 | +| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:56 | +| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:52 | +| test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:7 | | test.rs:503:20:503:50 | ...::open(...) [Ok] | test.rs:503:20:503:51 | TryExpr | provenance | | | test.rs:503:20:503:51 | TryExpr | test.rs:503:9:503:16 | mut file | provenance | | | test.rs:507:32:507:42 | [post] &mut buffer | test.rs:508:15:508:20 | buffer | provenance | | @@ -538,69 +540,69 @@ edges | test.rs:525:30:525:35 | [post] buffer | test.rs:526:15:526:20 | buffer | provenance | | | test.rs:526:15:526:20 | buffer | test.rs:526:14:526:20 | &buffer | provenance | | | test.rs:529:17:529:28 | file.bytes() | test.rs:530:14:530:17 | byte | provenance | | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:93 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:53 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:92 | -| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:80 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:95 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:55 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:94 | +| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:82 | | test.rs:536:22:536:72 | ... .unwrap() | test.rs:536:13:536:18 | mut f1 | provenance | | -| test.rs:536:50:536:53 | open | test.rs:536:22:536:63 | ... .open(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:536:50:536:53 | open | test.rs:536:22:536:63 | ... .open(...) [Ok] | provenance | Src:MaD:8 | | test.rs:538:30:538:40 | [post] &mut buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | test.rs:538:35:538:40 | [post] buffer | provenance | | | test.rs:538:35:538:40 | [post] buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:539:15:539:20 | buffer | test.rs:539:14:539:20 | &buffer | provenance | | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:93 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:53 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:92 | -| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:80 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:95 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:55 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:94 | +| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:82 | | test.rs:543:22:543:89 | ... .unwrap() | test.rs:543:13:543:18 | mut f2 | provenance | | -| test.rs:543:67:543:70 | open | test.rs:543:22:543:80 | ... .open(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:543:67:543:70 | open | test.rs:543:22:543:80 | ... .open(...) [Ok] | provenance | Src:MaD:8 | | test.rs:545:30:545:40 | [post] &mut buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | test.rs:545:35:545:40 | [post] buffer | provenance | | | test.rs:545:35:545:40 | [post] buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:546:15:546:20 | buffer | test.rs:546:14:546:20 | &buffer | provenance | | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:93 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:53 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:92 | -| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:80 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:95 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:55 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:94 | +| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:82 | | test.rs:550:22:550:123 | ... .unwrap() | test.rs:550:13:550:18 | mut f3 | provenance | | -| test.rs:550:101:550:104 | open | test.rs:550:22:550:114 | ... .open(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:550:101:550:104 | open | test.rs:550:22:550:114 | ... .open(...) [Ok] | provenance | Src:MaD:8 | | test.rs:552:30:552:40 | [post] &mut buffer | test.rs:553:15:553:20 | buffer | provenance | | | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | test.rs:552:35:552:40 | [post] buffer | provenance | | | test.rs:552:35:552:40 | [post] buffer | test.rs:553:15:553:20 | buffer | provenance | | | test.rs:553:15:553:20 | buffer | test.rs:553:14:553:20 | &buffer | provenance | | -| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:52 | -| test.rs:560:21:560:39 | ...::open | test.rs:560:21:560:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:54 | +| test.rs:560:21:560:39 | ...::open | test.rs:560:21:560:51 | ...::open(...) [Ok] | provenance | Src:MaD:7 | | test.rs:560:21:560:51 | ...::open(...) [Ok] | test.rs:560:21:560:52 | TryExpr | provenance | | | test.rs:560:21:560:52 | TryExpr | test.rs:560:13:560:17 | file1 | provenance | | | test.rs:561:13:561:17 | file2 | test.rs:562:38:562:42 | file2 | provenance | | -| test.rs:561:21:561:39 | ...::open | test.rs:561:21:561:59 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:561:21:561:39 | ...::open | test.rs:561:21:561:59 | ...::open(...) [Ok] | provenance | Src:MaD:7 | | test.rs:561:21:561:59 | ...::open(...) [Ok] | test.rs:561:21:561:60 | TryExpr | provenance | | | test.rs:561:21:561:60 | TryExpr | test.rs:561:13:561:17 | file2 | provenance | | -| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:56 | +| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:58 | | test.rs:562:26:562:43 | file1.chain(...) | test.rs:562:13:562:22 | mut reader | provenance | | -| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:51 | +| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:53 | | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | test.rs:563:36:563:41 | [post] buffer | provenance | | | test.rs:563:36:563:41 | [post] buffer | test.rs:564:15:564:20 | buffer | provenance | | | test.rs:564:15:564:20 | buffer | test.rs:564:14:564:20 | &buffer | provenance | | -| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:57 | -| test.rs:569:21:569:39 | ...::open | test.rs:569:21:569:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:59 | +| test.rs:569:21:569:39 | ...::open | test.rs:569:21:569:51 | ...::open(...) [Ok] | provenance | Src:MaD:7 | | test.rs:569:21:569:51 | ...::open(...) [Ok] | test.rs:569:21:569:52 | TryExpr | provenance | | | test.rs:569:21:569:52 | TryExpr | test.rs:569:13:569:17 | file1 | provenance | | -| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:56 | +| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:58 | | test.rs:570:26:570:40 | file1.take(...) | test.rs:570:13:570:22 | mut reader | provenance | | | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | test.rs:571:36:571:41 | [post] buffer | provenance | | | test.rs:571:36:571:41 | [post] buffer | test.rs:572:15:572:20 | buffer | provenance | | | test.rs:572:15:572:20 | buffer | test.rs:572:14:572:20 | &buffer | provenance | | -| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:69 | -| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:70 | -| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:71 | -| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:67 | -| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:66 | -| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:68 | -| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:581:20:581:40 | ...::open | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:9 | +| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:65 | +| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:71 | +| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:72 | +| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:67 | +| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:73 | +| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:69 | +| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:68 | +| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:70 | +| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:66 | +| test.rs:581:20:581:40 | ...::open | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:11 | | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | test.rs:581:20:581:58 | await ... [Ok] | provenance | | | test.rs:581:20:581:58 | await ... [Ok] | test.rs:581:20:581:59 | TryExpr | provenance | | | test.rs:581:20:581:59 | TryExpr | test.rs:581:9:581:16 | mut file | provenance | | @@ -635,17 +637,39 @@ edges | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | test.rs:620:28:620:33 | [post] buffer | provenance | | | test.rs:620:28:620:33 | [post] buffer | test.rs:621:15:621:20 | buffer | provenance | | | test.rs:621:15:621:20 | buffer | test.rs:621:14:621:20 | &buffer | provenance | | -| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:63 | +| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:65 | | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | test.rs:627:22:627:71 | await ... [Ok] | provenance | | | test.rs:627:22:627:71 | await ... [Ok] | test.rs:627:22:627:72 | TryExpr | provenance | | | test.rs:627:22:627:72 | TryExpr | test.rs:627:13:627:18 | mut f1 | provenance | | -| test.rs:627:52:627:55 | open | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:10 | +| test.rs:627:52:627:55 | open | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:12 | | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | test.rs:629:35:629:40 | [post] buffer | provenance | | | test.rs:629:35:629:40 | [post] buffer | test.rs:630:15:630:20 | buffer | provenance | | | test.rs:630:15:630:20 | buffer | test.rs:630:14:630:20 | &buffer | provenance | | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:53 | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:111 | -| test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:7 | +| test.rs:660:9:660:16 | mut file | test.rs:664:22:664:25 | file | provenance | | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:44 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:45 | +| test.rs:660:20:660:44 | ...::open | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:660:20:660:56 | ...::open(...) [future, Ok] | test.rs:660:20:660:62 | await ... [Ok] | provenance | | +| test.rs:660:20:660:62 | await ... [Ok] | test.rs:660:20:660:63 | TryExpr | provenance | | +| test.rs:660:20:660:63 | TryExpr | test.rs:660:9:660:16 | mut file | provenance | | +| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:44 | +| test.rs:664:32:664:42 | [post] &mut buffer [&ref] | test.rs:664:37:664:42 | [post] buffer | provenance | | +| test.rs:664:37:664:42 | [post] buffer | test.rs:665:15:665:20 | buffer | provenance | | +| test.rs:665:15:665:20 | buffer | test.rs:665:14:665:20 | &buffer | provenance | | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:22:673:23 | f1 | provenance | | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:44 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:45 | +| test.rs:671:22:671:69 | ... .open(...) [future, Ok] | test.rs:671:22:671:75 | await ... [Ok] | provenance | | +| test.rs:671:22:671:75 | await ... [Ok] | test.rs:671:22:671:76 | TryExpr | provenance | | +| test.rs:671:22:671:76 | TryExpr | test.rs:671:13:671:18 | mut f1 | provenance | | +| test.rs:671:56:671:59 | open | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:2 | +| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:44 | +| test.rs:673:30:673:40 | [post] &mut buffer [&ref] | test.rs:673:35:673:40 | [post] buffer | provenance | | +| test.rs:673:35:673:40 | [post] buffer | test.rs:674:15:674:20 | buffer | provenance | | +| test.rs:674:15:674:20 | buffer | test.rs:674:14:674:20 | &buffer | provenance | | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:55 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:113 | +| test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:9 | | test.rs:688:26:688:62 | ...::connect(...) [Ok] | test.rs:688:26:688:63 | TryExpr | provenance | | | test.rs:688:26:688:63 | TryExpr | test.rs:688:13:688:22 | mut stream | provenance | | | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | test.rs:695:34:695:39 | [post] buffer | provenance | | @@ -653,21 +677,21 @@ edges | test.rs:695:34:695:39 | [post] buffer | test.rs:699:14:699:22 | buffer[0] | provenance | | | test.rs:698:15:698:20 | buffer | test.rs:698:14:698:20 | &buffer | provenance | | | test.rs:707:13:707:22 | mut stream | test.rs:715:58:715:63 | stream | provenance | | -| test.rs:707:26:707:61 | ...::connect_timeout | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:8 | +| test.rs:707:26:707:61 | ...::connect_timeout | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:10 | | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | test.rs:707:26:707:106 | TryExpr | provenance | | | test.rs:707:26:707:106 | TryExpr | test.rs:707:13:707:22 | mut stream | provenance | | -| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:47 | -| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:57 | +| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:49 | +| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:59 | | test.rs:715:34:715:74 | ... .take(...) | test.rs:715:21:715:30 | mut reader | provenance | | -| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:101 | +| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:103 | | test.rs:718:44:718:52 | [post] &mut line [&ref] | test.rs:718:49:718:52 | [post] line | provenance | | | test.rs:718:49:718:52 | [post] line | test.rs:725:35:725:38 | line | provenance | | | test.rs:725:35:725:38 | line | test.rs:725:34:725:38 | &line | provenance | | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:117 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:63 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:118 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:119 | -| test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:13 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:119 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:65 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:120 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:121 | +| test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:15 | | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | test.rs:759:28:759:72 | await ... [Ok] | provenance | | | test.rs:759:28:759:72 | await ... [Ok] | test.rs:759:28:759:73 | TryExpr | provenance | | | test.rs:759:28:759:73 | TryExpr | test.rs:759:9:759:24 | mut tokio_stream | provenance | | @@ -687,7 +711,7 @@ edges | test.rs:817:27:817:32 | buffer | test.rs:817:26:817:32 | &buffer | provenance | | | test_futures_io.rs:19:9:19:11 | tcp | test_futures_io.rs:20:11:20:13 | tcp | provenance | | | test_futures_io.rs:19:9:19:11 | tcp | test_futures_io.rs:26:53:26:55 | tcp | provenance | | -| test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | +| test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | provenance | Src:MaD:3 | | test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | test_futures_io.rs:19:15:19:43 | await ... [Ok] | provenance | | | test_futures_io.rs:19:15:19:43 | await ... [Ok] | test_futures_io.rs:19:15:19:44 | TryExpr | provenance | | | test_futures_io.rs:19:15:19:44 | TryExpr | test_futures_io.rs:19:9:19:11 | tcp | provenance | | @@ -696,13 +720,13 @@ edges | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:32:40:32:45 | reader | provenance | | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:45:64:45:69 | reader | provenance | | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:27:49:32 | reader | provenance | | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:42 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:43 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:44 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:45 | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:54:51:54:56 | reader | provenance | | | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | test_futures_io.rs:26:22:26:62 | await ... [Ok] | provenance | | | test_futures_io.rs:26:22:26:62 | await ... [Ok] | test_futures_io.rs:26:22:26:63 | TryExpr | provenance | | | test_futures_io.rs:26:22:26:63 | TryExpr | test_futures_io.rs:26:9:26:18 | mut reader | provenance | | -| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:84 | +| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:86 | | test_futures_io.rs:27:11:27:16 | reader | test_futures_io.rs:27:10:27:16 | &reader | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned | test_futures_io.rs:33:15:33:20 | pinned | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | test_futures_io.rs:33:15:33:20 | pinned [&ref] | provenance | | @@ -710,56 +734,56 @@ edges | test_futures_io.rs:32:26:32:46 | ...::new(...) | test_futures_io.rs:32:13:32:22 | mut pinned | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) [Pin, &ref] | test_futures_io.rs:32:13:32:22 | mut pinned [Pin, &ref] | provenance | | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:76 | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:78 | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [Pin, &ref] | provenance | MaD:77 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:78 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:80 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [Pin, &ref] | provenance | MaD:79 | | test_futures_io.rs:32:40:32:45 | reader | test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | provenance | | | test_futures_io.rs:33:15:33:20 | pinned | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | | test_futures_io.rs:33:15:33:20 | pinned [&ref] | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | | test_futures_io.rs:33:15:33:20 | pinned [Pin, &ref] | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:42 | +| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:44 | | test_futures_io.rs:45:64:45:69 | reader | test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | provenance | | | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | test_futures_io.rs:45:77:45:83 | [post] buffer1 | provenance | | | test_futures_io.rs:45:77:45:83 | [post] buffer1 | test_futures_io.rs:46:15:46:36 | buffer1[...] | provenance | | | test_futures_io.rs:46:15:46:36 | buffer1[...] | test_futures_io.rs:46:14:46:36 | &... | provenance | | -| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:42 | +| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:44 | | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | test_futures_io.rs:49:44:49:50 | [post] buffer2 | provenance | | | test_futures_io.rs:49:44:49:50 | [post] buffer2 | test_futures_io.rs:51:15:51:36 | buffer2[...] | provenance | | | test_futures_io.rs:51:15:51:36 | buffer2[...] | test_futures_io.rs:51:14:51:36 | &... | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:55:11:55:17 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:59:40:59:46 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:69:37:69:43 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:37 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:39 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:90:40:90:46 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:103:64:103:70 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:27:107:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:42 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:43 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:44 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:45 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:113:40:113:46 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:37 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:39 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:27:132:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:40 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:41 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:42 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:43 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:27:139:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:38 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:39 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:40 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:41 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:27:146:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:44 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:45 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:46 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:47 | | test_futures_io.rs:54:23:54:57 | ...::new(...) | test_futures_io.rs:54:9:54:19 | mut reader2 | provenance | | -| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:85 | +| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:87 | | test_futures_io.rs:55:11:55:17 | reader2 | test_futures_io.rs:55:10:55:17 | &reader2 | provenance | | | test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:60:15:60:20 | pinned | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:36 | +| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:38 | | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:60:15:60:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:36 | +| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:38 | | test_futures_io.rs:59:13:59:22 | mut pinned [Pin, &ref] | test_futures_io.rs:60:15:60:20 | pinned [Pin, &ref] | provenance | | | test_futures_io.rs:59:26:59:47 | ...::new(...) | test_futures_io.rs:59:13:59:22 | mut pinned | provenance | | | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | provenance | | | test_futures_io.rs:59:26:59:47 | ...::new(...) [Pin, &ref] | test_futures_io.rs:59:13:59:22 | mut pinned [Pin, &ref] | provenance | | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:76 | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:78 | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [Pin, &ref] | provenance | MaD:77 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:78 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:80 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [Pin, &ref] | provenance | MaD:79 | | test_futures_io.rs:59:40:59:46 | reader2 | test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:60:15:60:20 | pinned | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | | test_futures_io.rs:60:15:60:20 | pinned [&ref] | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | @@ -772,11 +796,11 @@ edges | test_futures_io.rs:63:31:63:33 | buf | test_futures_io.rs:65:18:65:20 | buf | provenance | | | test_futures_io.rs:64:19:64:24 | buffer [Ready, Ok] | test_futures_io.rs:64:18:64:24 | &buffer | provenance | | | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:36 | -| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:36 | +| test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:38 | +| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:38 | | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:76 | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:78 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:78 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:80 | | test_futures_io.rs:69:37:69:43 | reader2 | test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:71:13:71:32 | ...::Ready(...) [Ready, Ok] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:72:23:72:29 | buffer2 [Ready, Ok] | provenance | | @@ -794,33 +818,33 @@ edges | test_futures_io.rs:90:26:90:47 | ...::new(...) | test_futures_io.rs:90:13:90:22 | mut pinned | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) [Pin, &ref] | test_futures_io.rs:90:13:90:22 | mut pinned [Pin, &ref] | provenance | | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:76 | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:78 | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [Pin, &ref] | provenance | MaD:77 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:78 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:80 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [Pin, &ref] | provenance | MaD:79 | | test_futures_io.rs:90:40:90:46 | reader2 | test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:91:15:91:20 | pinned | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | | test_futures_io.rs:91:15:91:20 | pinned [&ref] | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | | test_futures_io.rs:91:15:91:20 | pinned [Pin, &ref] | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:42 | +| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:44 | | test_futures_io.rs:103:64:103:70 | reader2 | test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | test_futures_io.rs:103:78:103:84 | [post] buffer1 | provenance | | | test_futures_io.rs:103:78:103:84 | [post] buffer1 | test_futures_io.rs:104:15:104:36 | buffer1[...] | provenance | | | test_futures_io.rs:104:15:104:36 | buffer1[...] | test_futures_io.rs:104:14:104:36 | &... | provenance | | -| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:42 | +| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:44 | | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | test_futures_io.rs:107:45:107:51 | [post] buffer2 | provenance | | | test_futures_io.rs:107:45:107:51 | [post] buffer2 | test_futures_io.rs:108:15:108:36 | buffer2[...] | provenance | | | test_futures_io.rs:108:15:108:36 | buffer2[...] | test_futures_io.rs:108:14:108:36 | &... | provenance | | | test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:114:15:114:20 | pinned | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:36 | +| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:38 | | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:114:15:114:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:36 | +| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:38 | | test_futures_io.rs:113:13:113:22 | mut pinned [Pin, &ref] | test_futures_io.rs:114:15:114:20 | pinned [Pin, &ref] | provenance | | | test_futures_io.rs:113:26:113:47 | ...::new(...) | test_futures_io.rs:113:13:113:22 | mut pinned | provenance | | | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | provenance | | | test_futures_io.rs:113:26:113:47 | ...::new(...) [Pin, &ref] | test_futures_io.rs:113:13:113:22 | mut pinned [Pin, &ref] | provenance | | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:76 | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:78 | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [Pin, &ref] | provenance | MaD:77 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:78 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:80 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [Pin, &ref] | provenance | MaD:79 | | test_futures_io.rs:113:40:113:46 | reader2 | test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:114:15:114:20 | pinned | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | | test_futures_io.rs:114:15:114:20 | pinned [&ref] | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | @@ -836,40 +860,40 @@ edges | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | test_futures_io.rs:125:22:125:45 | await ... [Ok] | provenance | | | test_futures_io.rs:125:22:125:45 | await ... [Ok] | test_futures_io.rs:125:22:125:46 | TryExpr | provenance | | | test_futures_io.rs:125:22:125:46 | TryExpr | test_futures_io.rs:125:13:125:18 | buffer | provenance | | -| test_futures_io.rs:132:27:132:33 | reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:40 | +| test_futures_io.rs:132:27:132:33 | reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:42 | | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | test_futures_io.rs:132:58:132:61 | [post] line | provenance | | | test_futures_io.rs:132:58:132:61 | [post] line | test_futures_io.rs:133:15:133:18 | line | provenance | | | test_futures_io.rs:133:15:133:18 | line | test_futures_io.rs:133:14:133:18 | &line | provenance | | -| test_futures_io.rs:139:27:139:33 | reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:38 | +| test_futures_io.rs:139:27:139:33 | reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:40 | | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | test_futures_io.rs:139:50:139:53 | [post] line | provenance | | | test_futures_io.rs:139:50:139:53 | [post] line | test_futures_io.rs:140:15:140:18 | line | provenance | | | test_futures_io.rs:140:15:140:18 | line | test_futures_io.rs:140:14:140:18 | &line | provenance | | -| test_futures_io.rs:146:27:146:33 | reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:44 | +| test_futures_io.rs:146:27:146:33 | reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:46 | | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | test_futures_io.rs:146:52:146:57 | [post] buffer | provenance | | | test_futures_io.rs:146:52:146:57 | [post] buffer | test_futures_io.rs:147:15:147:20 | buffer | provenance | | | test_futures_io.rs:147:15:147:20 | buffer | test_futures_io.rs:147:14:147:20 | &buffer | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:73 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:82 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:73 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:82 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:75 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:84 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:75 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:84 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:72 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:81 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:72 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:81 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:74 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:83 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:74 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:83 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:73 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:82 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:73 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:82 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:72 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:81 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:72 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:81 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:75 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:84 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:75 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:84 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:74 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:83 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:74 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:83 | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | nodes @@ -1437,6 +1461,26 @@ nodes | test.rs:629:35:629:40 | [post] buffer | semmle.label | [post] buffer | | test.rs:630:14:630:20 | &buffer | semmle.label | &buffer | | test.rs:630:15:630:20 | buffer | semmle.label | buffer | +| test.rs:660:9:660:16 | mut file | semmle.label | mut file | +| test.rs:660:20:660:44 | ...::open | semmle.label | ...::open | +| test.rs:660:20:660:56 | ...::open(...) [future, Ok] | semmle.label | ...::open(...) [future, Ok] | +| test.rs:660:20:660:62 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:660:20:660:63 | TryExpr | semmle.label | TryExpr | +| test.rs:664:22:664:25 | file | semmle.label | file | +| test.rs:664:32:664:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:664:37:664:42 | [post] buffer | semmle.label | [post] buffer | +| test.rs:665:14:665:20 | &buffer | semmle.label | &buffer | +| test.rs:665:15:665:20 | buffer | semmle.label | buffer | +| test.rs:671:13:671:18 | mut f1 | semmle.label | mut f1 | +| test.rs:671:22:671:69 | ... .open(...) [future, Ok] | semmle.label | ... .open(...) [future, Ok] | +| test.rs:671:22:671:75 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:671:22:671:76 | TryExpr | semmle.label | TryExpr | +| test.rs:671:56:671:59 | open | semmle.label | open | +| test.rs:673:22:673:23 | f1 | semmle.label | f1 | +| test.rs:673:30:673:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:673:35:673:40 | [post] buffer | semmle.label | [post] buffer | +| test.rs:674:14:674:20 | &buffer | semmle.label | &buffer | +| test.rs:674:15:674:20 | buffer | semmle.label | buffer | | test.rs:688:13:688:22 | mut stream | semmle.label | mut stream | | test.rs:688:26:688:53 | ...::connect | semmle.label | ...::connect | | test.rs:688:26:688:62 | ...::connect(...) [Ok] | semmle.label | ...::connect(...) [Ok] | @@ -1738,6 +1782,8 @@ testFailures | test.rs:615:14:615:15 | v4 | test.rs:581:20:581:40 | ...::open | test.rs:615:14:615:15 | v4 | $@ | test.rs:581:20:581:40 | ...::open | ...::open | | test.rs:621:14:621:20 | &buffer | test.rs:581:20:581:40 | ...::open | test.rs:621:14:621:20 | &buffer | $@ | test.rs:581:20:581:40 | ...::open | ...::open | | test.rs:630:14:630:20 | &buffer | test.rs:627:52:627:55 | open | test.rs:630:14:630:20 | &buffer | $@ | test.rs:627:52:627:55 | open | open | +| test.rs:665:14:665:20 | &buffer | test.rs:660:20:660:44 | ...::open | test.rs:665:14:665:20 | &buffer | $@ | test.rs:660:20:660:44 | ...::open | ...::open | +| test.rs:674:14:674:20 | &buffer | test.rs:671:56:671:59 | open | test.rs:674:14:674:20 | &buffer | $@ | test.rs:671:56:671:59 | open | open | | test.rs:698:14:698:20 | &buffer | test.rs:688:26:688:53 | ...::connect | test.rs:698:14:698:20 | &buffer | $@ | test.rs:688:26:688:53 | ...::connect | ...::connect | | test.rs:699:14:699:22 | buffer[0] | test.rs:688:26:688:53 | ...::connect | test.rs:699:14:699:22 | buffer[0] | $@ | test.rs:688:26:688:53 | ...::connect | ...::connect | | test.rs:725:34:725:38 | &line | test.rs:707:26:707:61 | ...::connect_timeout | test.rs:725:34:725:38 | &line | $@ | test.rs:707:26:707:61 | ...::connect_timeout | ...::connect_timeout | diff --git a/rust/ql/test/library-tests/dataflow/sources/test.rs b/rust/ql/test/library-tests/dataflow/sources/test.rs index 6e30159ea1a3..895a789cfaf4 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test.rs @@ -662,7 +662,7 @@ async fn test_async_std_file() -> std::io::Result<()> { { let mut buffer = [0u8; 100]; let _bytes = file.read(&mut buffer).await?; - sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" + sink(&buffer); // $ hasTaintFlow="file.txt" } // --- OpenOptions --- @@ -671,7 +671,7 @@ async fn test_async_std_file() -> std::io::Result<()> { let mut f1 = async_std::fs::OpenOptions::new().open("f1.txt").await?; // $ Alert[rust/summary/taint-sources] let mut buffer = [0u8; 1024]; let _bytes = f1.read(&mut buffer).await?; - sink(&buffer); // $ MISSING: hasTaintFlow="f1.txt" + sink(&buffer); // $ hasTaintFlow="f1.txt" } Ok(()) diff --git a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected index 9d1761069feb..7a3fd01dbc7d 100644 --- a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,3 @@ multipleCallTargets -| main.rs:118:9:118:11 | f(...) | +| main.rs:124:9:124:11 | f(...) | | proc_macro.rs:9:5:9:10 | ...::new(...) | diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs index 1de91a60fe44..5146373b8966 100644 --- a/rust/ql/test/library-tests/path-resolution/main.rs +++ b/rust/ql/test/library-tests/path-resolution/main.rs @@ -8,7 +8,13 @@ mod my2; // I14 use my2::*; // $ item=I14 -use my2::nested2::nested3::nested4::{f, g}; // $ item=I11 item=I12 item=I13 +#[rustfmt::skip] +use my2::nested2::nested3::nested4::{ // $ item=I11 + f, // $ item=I12 + g, // $ item=I13 +}; + +use my2::nested8_f; // $ item=I119 mod m1 { fn f() { diff --git a/rust/ql/test/library-tests/path-resolution/my2/mod.rs b/rust/ql/test/library-tests/path-resolution/my2/mod.rs index 43c1a05e91fe..85edb6832027 100644 --- a/rust/ql/test/library-tests/path-resolution/my2/mod.rs +++ b/rust/ql/test/library-tests/path-resolution/my2/mod.rs @@ -7,11 +7,17 @@ fn g() { pub use nested2::nested5::*; // $ item=I114 -pub use nested2::nested7::nested8::{self}; // $ item=I118 +#[rustfmt::skip] +pub use nested2::nested7::nested8::{ // $ item=I118 + self, // $ item=I118 + f as nested8_f // $ item=I119 +}; + +use nested2::nested5::nested6::f as nested6_f; // $ item=I116 pub mod my3; #[path = "renamed.rs"] mod mymod; -use mymod::f; // $ item=I1001 +pub use mymod::f; // $ item=I1001 diff --git a/rust/ql/test/library-tests/path-resolution/my2/my3/mod.rs b/rust/ql/test/library-tests/path-resolution/my2/my3/mod.rs index 6b54377728bb..b459ca05aa6c 100644 --- a/rust/ql/test/library-tests/path-resolution/my2/my3/mod.rs +++ b/rust/ql/test/library-tests/path-resolution/my2/my3/mod.rs @@ -6,3 +6,5 @@ pub fn f() { use super::super::h; // $ item=I25 use super::g; // $ item=I9 + +use super::nested6_f; // $ item=I116 diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected index a51816a52282..067365a53864 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected @@ -2,38 +2,38 @@ mod | lib.rs:1:1:1:11 | mod my | | main.rs:1:1:1:7 | mod my | | main.rs:7:1:7:8 | mod my2 | -| main.rs:13:1:37:1 | mod m1 | -| main.rs:18:5:36:5 | mod m2 | -| main.rs:29:9:35:9 | mod m3 | -| main.rs:39:1:46:1 | mod m4 | -| main.rs:103:1:107:1 | mod m5 | -| main.rs:109:1:120:1 | mod m6 | -| main.rs:122:1:141:1 | mod m7 | -| main.rs:143:1:197:1 | mod m8 | -| main.rs:199:1:207:1 | mod m9 | -| main.rs:209:1:228:1 | mod m10 | -| main.rs:230:1:267:1 | mod m11 | -| main.rs:240:5:240:12 | mod f | -| main.rs:269:1:281:1 | mod m12 | -| main.rs:283:1:296:1 | mod m13 | -| main.rs:287:5:295:5 | mod m14 | -| main.rs:298:1:367:1 | mod m15 | -| main.rs:369:1:461:1 | mod m16 | -| main.rs:463:1:513:1 | mod trait_visibility | -| main.rs:464:5:486:5 | mod m | -| main.rs:515:1:545:1 | mod m17 | -| main.rs:547:1:565:1 | mod m18 | -| main.rs:552:5:564:5 | mod m19 | -| main.rs:557:9:563:9 | mod m20 | -| main.rs:567:1:592:1 | mod m21 | -| main.rs:568:5:574:5 | mod m22 | -| main.rs:576:5:591:5 | mod m33 | -| main.rs:594:1:619:1 | mod m23 | -| main.rs:621:1:689:1 | mod m24 | -| main.rs:706:1:758:1 | mod associated_types | +| main.rs:19:1:43:1 | mod m1 | +| main.rs:24:5:42:5 | mod m2 | +| main.rs:35:9:41:9 | mod m3 | +| main.rs:45:1:52:1 | mod m4 | +| main.rs:109:1:113:1 | mod m5 | +| main.rs:115:1:126:1 | mod m6 | +| main.rs:128:1:147:1 | mod m7 | +| main.rs:149:1:203:1 | mod m8 | +| main.rs:205:1:213:1 | mod m9 | +| main.rs:215:1:234:1 | mod m10 | +| main.rs:236:1:273:1 | mod m11 | +| main.rs:246:5:246:12 | mod f | +| main.rs:275:1:287:1 | mod m12 | +| main.rs:289:1:302:1 | mod m13 | +| main.rs:293:5:301:5 | mod m14 | +| main.rs:304:1:373:1 | mod m15 | +| main.rs:375:1:467:1 | mod m16 | +| main.rs:469:1:519:1 | mod trait_visibility | +| main.rs:470:5:492:5 | mod m | +| main.rs:521:1:551:1 | mod m17 | +| main.rs:553:1:571:1 | mod m18 | +| main.rs:558:5:570:5 | mod m19 | +| main.rs:563:9:569:9 | mod m20 | +| main.rs:573:1:598:1 | mod m21 | +| main.rs:574:5:580:5 | mod m22 | +| main.rs:582:5:597:5 | mod m33 | +| main.rs:600:1:625:1 | mod m23 | +| main.rs:627:1:695:1 | mod m24 | +| main.rs:712:1:764:1 | mod associated_types | | my2/mod.rs:1:1:1:16 | mod nested2 | -| my2/mod.rs:12:1:12:12 | mod my3 | -| my2/mod.rs:14:1:15:10 | mod mymod | +| my2/mod.rs:18:1:18:12 | mod my3 | +| my2/mod.rs:20:1:21:10 | mod mymod | | my2/nested2.rs:1:1:11:1 | mod nested3 | | my2/nested2.rs:2:5:10:5 | mod nested4 | | my2/nested2.rs:13:1:19:1 | mod nested5 | @@ -52,385 +52,394 @@ resolvePath | main.rs:5:5:5:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | | main.rs:5:5:5:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | | main.rs:9:5:9:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:11:5:11:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:11:5:11:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:11:5:11:25 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:11:5:11:34 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:11:38:11:38 | f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:11:41:11:41 | g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:25:13:25:13 | f | main.rs:19:9:21:9 | fn f | -| main.rs:26:13:26:17 | super | main.rs:13:1:37:1 | mod m1 | -| main.rs:26:13:26:20 | ...::f | main.rs:14:5:16:5 | fn f | -| 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:799: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 | -| main.rs:44:9:44:9 | g | main.rs:23:9:27:9 | fn g | -| main.rs:56:13:56:14 | m1 | main.rs:13:1:37:1 | mod m1 | -| main.rs:56:13:56:18 | ...::m2 | main.rs:18:5:36:5 | mod m2 | -| main.rs:56:13:56:21 | ...::g | main.rs:23:9:27:9 | fn g | -| main.rs:57:9:57:9 | g | main.rs:23:9:27:9 | fn g | -| 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:799: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:78:16:78:18 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:81:17:81:19 | Foo | main.rs:77:9:79:9 | struct Foo | -| main.rs:85:5:85:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:85:5:85:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:87:5:87:21 | my2_nested2_alias | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:87:5:87:30 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:87:34:87:40 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:87:34:87:43 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:87:57:87:63 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| 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:799: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 | -| main.rs:125:13:125:15 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:128:16:128:18 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:134:19:134:24 | MyEnum | main.rs:123:5:131:5 | enum MyEnum | -| main.rs:137:17:137:22 | MyEnum | main.rs:123:5:131:5 | enum MyEnum | -| main.rs:137:17:137:25 | ...::A | main.rs:124:9:126:9 | A | -| main.rs:138:17:138:22 | MyEnum | main.rs:123:5:131:5 | enum MyEnum | -| main.rs:138:17:138:25 | ...::B | main.rs:126:12:129:9 | B | -| main.rs:139:9:139:14 | MyEnum | main.rs:123:5:131:5 | enum MyEnum | -| main.rs:139:9:139:17 | ...::C | main.rs:129:12:130:9 | C | -| main.rs:149:13:149:13 | f | main.rs:156:5:158:5 | fn f | -| main.rs:150:13:150:16 | Self | main.rs:144:5:152:5 | trait MyTrait | -| main.rs:150:13:150:19 | ...::f | main.rs:145:9:145:20 | fn f | -| main.rs:161:10:161:16 | MyTrait | main.rs:144:5:152:5 | trait MyTrait | -| main.rs:161:22:161:29 | MyStruct | main.rs:154:5:154:22 | struct MyStruct | -| main.rs:164:13:164:13 | f | main.rs:156:5:158:5 | fn f | -| main.rs:165:13:165:16 | Self | main.rs:160:5:171:5 | impl MyTrait for MyStruct { ... } | -| main.rs:165:13:165:19 | ...::g | main.rs:168:9:170:9 | fn g | -| main.rs:174:10:174:17 | MyStruct | main.rs:154:5:154:22 | struct MyStruct | -| main.rs:177:13:177:13 | f | main.rs:156:5:158:5 | fn f | -| main.rs:183:17:183:24 | MyStruct | main.rs:154:5:154:22 | struct MyStruct | -| main.rs:184:9:184:15 | MyTrait | main.rs:144:5:152:5 | trait MyTrait | -| main.rs:184:9:184:18 | ...::f | main.rs:145:9:145:20 | fn f | -| main.rs:185:9:185:16 | MyStruct | main.rs:154:5:154:22 | struct MyStruct | -| main.rs:185:9:185:19 | ...::f | main.rs:161:33:166:9 | fn f | -| main.rs:186:10:186:17 | MyStruct | main.rs:154:5:154:22 | struct MyStruct | -| main.rs:187:10:187:16 | MyTrait | main.rs:144:5:152:5 | trait MyTrait | -| main.rs:190:17:190:24 | MyStruct | main.rs:154:5:154:22 | struct MyStruct | -| main.rs:192:17:192:24 | MyStruct | main.rs:154:5:154:22 | struct MyStruct | -| main.rs:194:9:194:16 | MyStruct | main.rs:154:5:154:22 | struct MyStruct | -| main.rs:194:9:194:19 | ...::h | main.rs:174:21:178:9 | fn h | -| main.rs:203:19:203:22 | self | main.rs:199:1:207:1 | mod m9 | -| main.rs:203:19:203:32 | ...::MyStruct | main.rs:200:5:200:26 | struct MyStruct | -| main.rs:205:9:205:12 | self | main.rs:199:1:207:1 | mod m9 | -| main.rs:205:9:205:22 | ...::MyStruct | main.rs:200:5:200:26 | struct MyStruct | -| main.rs:215:12:215:12 | T | main.rs:212:7:212:7 | T | -| main.rs:220:12:220:12 | T | main.rs:219:14:219:14 | T | -| main.rs:222:7:224:7 | MyStruct::<...> | main.rs:210:5:216:5 | struct MyStruct | -| main.rs:223:9:223:9 | T | main.rs:219:14:219:14 | T | -| main.rs:226:9:226:16 | MyStruct | main.rs:210:5:216:5 | struct MyStruct | -| main.rs:236:17:236:19 | Foo | main.rs:231:5:231:21 | struct Foo | -| main.rs:237:9:237:11 | Foo | main.rs:233:5:233:15 | fn Foo | -| main.rs:246:9:246:11 | Bar | main.rs:242:5:244:5 | enum Bar | -| main.rs:246:9:246:19 | ...::FooBar | main.rs:243:9:243:17 | FooBar | -| main.rs:251:13:251:15 | Foo | main.rs:231:5:231:21 | struct Foo | -| main.rs:252:17:252:22 | FooBar | main.rs:243:9:243:17 | FooBar | -| main.rs:253:17:253:22 | FooBar | main.rs:248:5:248:18 | fn FooBar | -| main.rs:261:9:261:9 | E | main.rs:256:15:259:5 | enum E | -| main.rs:261:9:261:12 | ...::C | main.rs:258:9:258:9 | C | -| main.rs:264:17:264:17 | S | main.rs:256:5:256:13 | struct S | -| main.rs:265:17:265:17 | C | main.rs:258:9:258:9 | C | -| main.rs:278:16:278:16 | T | main.rs:272:7:272:7 | T | -| main.rs:279:14:279:17 | Self | main.rs:270:5:280:5 | trait MyParamTrait | -| main.rs:279:14:279:33 | ...::AssociatedType | main.rs:274:9:274:28 | type AssociatedType | -| main.rs:288:13:288:16 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:288:13:288:21 | ...::m13 | main.rs:283:1:296:1 | mod m13 | -| main.rs:288:13:288:24 | ...::f | main.rs:284:5:284:17 | fn f | -| main.rs:288:13:288:24 | ...::f | main.rs:284:19:285:19 | struct f | -| main.rs:291:17:291:17 | f | main.rs:284:19:285:19 | struct f | -| main.rs:292:21:292:21 | f | main.rs:284:19:285:19 | struct f | -| main.rs:293:13:293:13 | f | main.rs:284:5:284:17 | fn f | -| main.rs:307:9:307:14 | Trait1 | main.rs:299:5:303:5 | trait Trait1 | -| main.rs:310:13:310:16 | Self | main.rs:305:5:313:5 | trait Trait2 | -| main.rs:310:13:310:19 | ...::g | main.rs:302:9:302:20 | fn g | -| main.rs:320:9:320:12 | Self | main.rs:315:5:328:5 | trait Trait3 | -| main.rs:320:15:320:20 | Trait1 | main.rs:299:5:303:5 | trait Trait1 | -| main.rs:321:9:321:10 | TT | main.rs:317:9:317:10 | TT | -| main.rs:321:13:321:18 | Trait1 | main.rs:299:5:303:5 | trait Trait1 | -| main.rs:323:25:323:26 | TT | main.rs:317:9:317:10 | TT | -| main.rs:324:13:324:16 | Self | main.rs:315:5:328:5 | trait Trait3 | -| main.rs:324:13:324:19 | ...::g | main.rs:302:9:302:20 | fn g | -| main.rs:325:13:325:14 | TT | main.rs:317:9:317:10 | TT | -| main.rs:325:13:325:17 | ...::g | main.rs:302:9:302:20 | fn g | -| main.rs:333:10:333:15 | Trait1 | main.rs:299:5:303:5 | trait Trait1 | -| main.rs:334:11:334:11 | S | main.rs:330:5:330:13 | struct S | -| main.rs:337:13:337:16 | Self | main.rs:332:5:344:5 | impl Trait1 for S { ... } | -| main.rs:337:13:337:19 | ...::g | main.rs:341:9:343:9 | fn g | -| main.rs:347:10:347:15 | Trait2 | main.rs:305:5:313:5 | trait Trait2 | -| main.rs:348:11:348:11 | S | main.rs:330:5:330:13 | struct S | -| main.rs:357:17:357:17 | S | main.rs:330:5:330:13 | struct S | -| main.rs:358:10:358:10 | S | main.rs:330:5:330:13 | struct S | -| main.rs:359:14:359:19 | Trait1 | main.rs:299:5:303:5 | trait Trait1 | -| main.rs:361:10:361:10 | S | main.rs:330:5:330:13 | struct S | -| main.rs:362:14:362:19 | Trait2 | main.rs:305:5:313:5 | trait Trait2 | -| main.rs:364:9:364:9 | S | main.rs:330:5:330:13 | struct S | -| main.rs:364:9:364:12 | ...::g | main.rs:341:9:343:9 | fn g | -| main.rs:374:24:374:24 | T | main.rs:372:7:372:7 | T | -| main.rs:376:24:376:24 | T | main.rs:372:7:372:7 | T | -| main.rs:379:24:379:24 | T | main.rs:372:7:372:7 | T | -| main.rs:380:13:380:16 | Self | main.rs:370:5:386:5 | trait Trait1 | -| main.rs:380:13:380:19 | ...::g | main.rs:376:9:377:9 | fn g | -| main.rs:384:18:384:18 | T | main.rs:372:7:372:7 | T | -| main.rs:392:9:394:9 | Trait1::<...> | main.rs:370:5:386:5 | trait Trait1 | -| main.rs:393:11:393:11 | T | main.rs:390:7:390:7 | T | -| main.rs:395:24:395:24 | T | main.rs:390:7:390:7 | T | -| main.rs:397:13:397:16 | Self | main.rs:388:5:401:5 | trait Trait2 | -| main.rs:397:13:397:19 | ...::g | main.rs:376:9:377:9 | fn g | -| main.rs:399:13:399:16 | Self | main.rs:388:5:401:5 | trait Trait2 | -| main.rs:399:13:399:19 | ...::c | main.rs:384:9:385:9 | Const | -| main.rs:406:10:408:5 | Trait1::<...> | main.rs:370:5:386:5 | trait Trait1 | -| main.rs:407:7:407:7 | S | main.rs:403:5:403:13 | struct S | -| main.rs:409:11:409:11 | S | main.rs:403:5:403:13 | struct S | -| main.rs:410:24:410:24 | S | main.rs:403:5:403:13 | struct S | -| main.rs:412:13:412:16 | Self | main.rs:405:5:423:5 | impl Trait1::<...> for S { ... } | -| main.rs:412:13:412:19 | ...::g | main.rs:416:9:419:9 | fn g | -| main.rs:416:24:416:24 | S | main.rs:403:5:403:13 | struct S | -| main.rs:418:13:418:16 | Self | main.rs:405:5:423:5 | impl Trait1::<...> for S { ... } | -| main.rs:418:13:418:19 | ...::c | main.rs:421:9:422:9 | Const | -| main.rs:421:18:421:18 | S | main.rs:403:5:403:13 | struct S | -| main.rs:421:22:421:22 | S | main.rs:403:5:403:13 | struct S | -| main.rs:426:10:428:5 | Trait2::<...> | main.rs:388:5:401:5 | trait Trait2 | -| main.rs:427:7:427:7 | S | main.rs:403:5:403:13 | struct S | -| main.rs:429:11:429:11 | S | main.rs:403:5:403:13 | struct S | -| main.rs:430:24:430:24 | S | main.rs:403:5:403:13 | struct S | -| main.rs:432:13:432:16 | Self | main.rs:425:5:434:5 | impl Trait2::<...> for S { ... } | -| main.rs:439:17:439:17 | S | main.rs:403:5:403:13 | struct S | -| main.rs:440:10:440:10 | S | main.rs:403:5:403:13 | struct S | -| main.rs:441:14:443:11 | Trait1::<...> | main.rs:370:5:386:5 | trait Trait1 | -| main.rs:442:13:442:13 | S | main.rs:403:5:403:13 | struct S | -| main.rs:445:10:445:10 | S | main.rs:403:5:403:13 | struct S | -| main.rs:446:14:448:11 | Trait2::<...> | main.rs:388:5:401:5 | trait Trait2 | -| main.rs:447:13:447:13 | S | main.rs:403:5:403:13 | struct S | -| main.rs:450:9:450:9 | S | main.rs:403:5:403:13 | struct S | -| main.rs:450:9:450:12 | ...::g | main.rs:416:9:419:9 | fn g | -| main.rs:452:9:452:9 | S | main.rs:403:5:403:13 | struct S | -| main.rs:452:9:452:12 | ...::h | main.rs:379:9:382:9 | fn h | -| main.rs:454:9:454:9 | S | main.rs:403:5:403:13 | struct S | -| main.rs:454:9:454:12 | ...::c | main.rs:421:9:422:9 | Const | -| main.rs:455:10:455:10 | S | main.rs:403:5:403:13 | struct S | -| main.rs:456:14:458:11 | Trait1::<...> | main.rs:370:5:386:5 | trait Trait1 | -| main.rs:457:13:457:13 | S | main.rs:403:5:403:13 | struct S | -| main.rs:475:14:475:16 | Foo | main.rs:465:9:467:9 | trait Foo | -| main.rs:475:22:475:22 | X | main.rs:473:9:473:21 | struct X | -| main.rs:481:14:481:16 | Bar | main.rs:469:9:471:9 | trait Bar | -| main.rs:481:22:481:22 | X | main.rs:473:9:473:21 | struct X | -| main.rs:488:9:488:9 | m | main.rs:464:5:486:5 | mod m | -| main.rs:488:9:488:12 | ...::X | main.rs:473:9:473:21 | struct X | -| main.rs:491:17:491:17 | X | main.rs:473:9:473:21 | struct X | -| main.rs:494:17:494:17 | m | main.rs:464:5:486:5 | mod m | -| main.rs:494:17:494:22 | ...::Foo | main.rs:465:9:467:9 | trait Foo | -| main.rs:495:13:495:13 | X | main.rs:473:9:473:21 | struct X | -| main.rs:495:13:495:23 | ...::a_method | main.rs:475:26:478:13 | fn a_method | -| main.rs:499:17:499:17 | m | main.rs:464:5:486:5 | mod m | -| main.rs:499:17:499:22 | ...::Bar | main.rs:469:9:471:9 | trait Bar | -| main.rs:500:13:500:13 | X | main.rs:473:9:473:21 | struct X | -| main.rs:500:13:500:23 | ...::a_method | main.rs:481:26:484:13 | fn a_method | -| main.rs:504:17:504:17 | m | main.rs:464:5:486:5 | mod m | -| main.rs:504:17:504:22 | ...::Bar | main.rs:469:9:471:9 | trait Bar | -| main.rs:505:13:505:13 | X | main.rs:473:9:473:21 | struct X | -| main.rs:505:13:505:23 | ...::a_method | main.rs:481:26:484:13 | fn a_method | -| main.rs:510:13:510:13 | m | main.rs:464:5:486:5 | mod m | -| main.rs:510:13:510:18 | ...::Bar | main.rs:469:9:471:9 | trait Bar | -| main.rs:510:13:510:28 | ...::a_method | main.rs:470:13:470:31 | fn a_method | -| main.rs:523:10:523:16 | MyTrait | main.rs:516:5:518:5 | trait MyTrait | -| main.rs:524:9:524:9 | S | main.rs:520:5:520:13 | struct S | -| main.rs:532:7:532:13 | MyTrait | main.rs:516:5:518:5 | trait MyTrait | -| main.rs:533:10:533:10 | T | main.rs:531:10:531:10 | T | -| main.rs:535:9:535:9 | T | main.rs:531:10:531:10 | T | -| main.rs:535:9:535:12 | ...::f | main.rs:517:9:517:20 | fn f | -| main.rs:536:9:536:15 | MyTrait | main.rs:516:5:518:5 | trait MyTrait | -| main.rs:536:9:536:18 | ...::f | main.rs:517:9:517:20 | fn f | -| main.rs:541:9:541:9 | g | main.rs:530:5:537:5 | fn g | -| main.rs:542:11:542:11 | S | main.rs:520:5:520:13 | struct S | -| main.rs:560:17:560:21 | super | main.rs:552:5:564:5 | mod m19 | -| main.rs:560:17:560:24 | ...::f | main.rs:553:9:555:9 | fn f | -| main.rs:561:17:561:21 | super | main.rs:552:5:564:5 | mod m19 | -| main.rs:561:17:561:28 | ...::super | main.rs:547:1:565:1 | mod m18 | -| main.rs:561:17:561:31 | ...::f | main.rs:548:5:550:5 | fn f | -| main.rs:578:13:578:17 | super | main.rs:567:1:592:1 | mod m21 | -| main.rs:578:13:578:22 | ...::m22 | main.rs:568:5:574:5 | mod m22 | -| main.rs:578:13:578:30 | ...::MyEnum | main.rs:569:9:571:9 | enum MyEnum | -| main.rs:579:13:579:16 | self | main.rs:569:9:571:9 | enum MyEnum | -| main.rs:583:13:583:17 | super | main.rs:567:1:592:1 | mod m21 | -| main.rs:583:13:583:22 | ...::m22 | main.rs:568:5:574:5 | mod m22 | -| main.rs:583:13:583:32 | ...::MyStruct | main.rs:573:9:573:28 | struct MyStruct | -| main.rs:584:13:584:16 | self | main.rs:573:9:573:28 | struct MyStruct | -| main.rs:588:21:588:26 | MyEnum | main.rs:569:9:571:9 | enum MyEnum | -| main.rs:588:21:588:29 | ...::A | main.rs:570:13:570:13 | A | -| main.rs:589:21:589:28 | MyStruct | main.rs:573:9:573:28 | struct MyStruct | -| main.rs:605:10:607:5 | Trait1::<...> | main.rs:595:5:600:5 | trait Trait1 | -| main.rs:606:7:606:10 | Self | main.rs:602:5:602:13 | struct S | -| main.rs:608:11:608:11 | S | main.rs:602:5:602:13 | struct S | -| main.rs:616:17:616:17 | S | main.rs:602:5:602:13 | struct S | -| main.rs:632:15:632:15 | T | main.rs:631:26:631:26 | T | -| main.rs:637:9:637:24 | GenericStruct::<...> | main.rs:630:5:633:5 | struct GenericStruct | -| main.rs:637:23:637:23 | T | main.rs:636:10:636:10 | T | -| main.rs:639:9:639:9 | T | main.rs:636:10:636:10 | T | -| main.rs:639:12:639:17 | TraitA | main.rs:622:5:624:5 | trait TraitA | -| main.rs:648:9:648:24 | GenericStruct::<...> | main.rs:630:5:633:5 | struct GenericStruct | -| main.rs:648:23:648:23 | T | main.rs:647:10:647:10 | T | -| main.rs:650:9:650:9 | T | main.rs:647:10:647:10 | T | -| main.rs:650:12:650:17 | TraitB | main.rs:626:5:628:5 | trait TraitB | -| main.rs:651:9:651:9 | T | main.rs:647:10:647:10 | T | -| main.rs:651:12:651:17 | TraitA | main.rs:622:5:624:5 | trait TraitA | -| main.rs:662:10:662:15 | TraitA | main.rs:622:5:624:5 | trait TraitA | -| main.rs:662:21:662:31 | Implementor | main.rs:659:5:659:23 | struct Implementor | -| main.rs:669:10:669:15 | TraitB | main.rs:626:5:628:5 | trait TraitB | -| main.rs:669:21:669:31 | Implementor | main.rs:659:5:659:23 | struct Implementor | -| main.rs:677:24:677:34 | Implementor | main.rs:659:5:659:23 | struct Implementor | -| main.rs:678:23:678:35 | GenericStruct | main.rs:630:5:633:5 | struct GenericStruct | -| main.rs:684:9:684:36 | GenericStruct::<...> | main.rs:630:5:633:5 | struct GenericStruct | -| main.rs:684:9:684:50 | ...::call_trait_a | main.rs:641:9:643:9 | fn call_trait_a | -| main.rs:684:25:684:35 | Implementor | main.rs:659:5:659:23 | struct Implementor | -| main.rs:687:9:687:36 | GenericStruct::<...> | main.rs:630:5:633:5 | struct GenericStruct | -| main.rs:687:9:687:47 | ...::call_both | main.rs:653:9:656:9 | fn call_both | -| main.rs:687:25:687:35 | Implementor | main.rs:659:5:659:23 | struct Implementor | -| main.rs:693:3:693:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:693:3:693:24 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | -| main.rs:697:6:697:12 | AStruct | main.rs:696:1:696:17 | struct AStruct | -| main.rs:699:7:699:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:699:7:699:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | -| main.rs:702:7:702:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:702:7:702:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | -| main.rs:707:9:707:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:707:9:707:19 | ...::marker | {EXTERNAL LOCATION} | mod marker | -| main.rs:707:9:707:32 | ...::PhantomData | {EXTERNAL LOCATION} | struct PhantomData | -| main.rs:708:9:708:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:708:9:708:19 | ...::result | {EXTERNAL LOCATION} | mod result | -| main.rs:708:9:708:27 | ...::Result | {EXTERNAL LOCATION} | enum Result | -| main.rs:716:19:716:22 | Self | main.rs:710:5:718:5 | trait Reduce | -| main.rs:716:19:716:29 | ...::Input | main.rs:711:9:711:19 | type Input | -| main.rs:717:14:717:46 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:717:21:717:24 | Self | main.rs:710:5:718:5 | trait Reduce | -| main.rs:717:21:717:32 | ...::Output | main.rs:712:21:713:20 | type Output | -| main.rs:717:35:717:38 | Self | main.rs:710:5:718:5 | trait Reduce | -| main.rs:717:35:717:45 | ...::Error | main.rs:711:21:712:19 | type Error | -| main.rs:721:17:721:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | -| main.rs:721:29:721:33 | Input | main.rs:720:19:720:23 | Input | -| main.rs:722:17:722:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | -| main.rs:722:29:722:33 | Error | main.rs:720:26:720:30 | Error | -| main.rs:729:11:729:16 | Reduce | main.rs:710:5:718:5 | trait Reduce | -| main.rs:730:13:733:9 | MyImpl::<...> | main.rs:720:5:723:5 | struct MyImpl | -| main.rs:731:13:731:17 | Input | main.rs:727:13:727:17 | Input | -| main.rs:732:13:732:17 | Error | main.rs:728:13:728:17 | Error | -| main.rs:735:22:738:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:736:13:736:17 | Input | main.rs:727:13:727:17 | Input | -| main.rs:737:13:737:16 | Self | main.rs:725:5:757:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:737:13:737:23 | ...::Error | main.rs:739:11:743:9 | type Error | -| main.rs:740:22:742:9 | Option::<...> | {EXTERNAL LOCATION} | enum Option | -| main.rs:741:11:741:15 | Error | main.rs:728:13:728:17 | Error | -| main.rs:745:13:745:17 | Input | main.rs:727:13:727:17 | Input | -| main.rs:750:19:750:22 | Self | main.rs:725:5:757:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:750:19:750:29 | ...::Input | main.rs:735:9:739:9 | type Input | -| main.rs:751:14:754:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:752:13:752:16 | Self | main.rs:725:5:757:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:752:13:752:24 | ...::Output | main.rs:743:11:746:9 | type Output | -| main.rs:753:13:753:16 | Self | main.rs:725:5:757:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:753:13:753:23 | ...::Error | main.rs:739:11:743:9 | type Error | -| main.rs:760:5:760:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:760:11:760:14 | self | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:762:15:762:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:762:15:762:25 | ...::string | {EXTERNAL LOCATION} | mod string | -| main.rs:762:15:762:33 | ...::String | {EXTERNAL LOCATION} | struct String | -| main.rs:765:5:765:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:765:5:765:14 | ...::nested | my.rs:1:1:1:15 | mod nested | -| main.rs:765:5:765:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | -| main.rs:765:5:765:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | -| main.rs:765:5:765:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | -| main.rs:766:5:766:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:766:5:766:9 | ...::f | my.rs:5:1:7:1 | fn f | -| main.rs:767:5:767:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:767:5:767:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:767:5:767:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:767:5:767:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:768:5:768:5 | f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:769:5:769:5 | g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:770:5:770:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:770:5:770:12 | ...::h | main.rs:50:1:69:1 | fn h | -| main.rs:771:5:771:6 | m1 | main.rs:13:1:37:1 | mod m1 | -| main.rs:771:5:771:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 | -| main.rs:771:5:771:13 | ...::g | main.rs:23:9:27:9 | fn g | -| main.rs:772:5:772:6 | m1 | main.rs:13:1:37:1 | mod m1 | -| main.rs:772:5:772:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 | -| main.rs:772:5:772:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 | -| main.rs:772:5:772:17 | ...::h | main.rs:30:27:34:13 | fn h | -| main.rs:773:5:773:6 | m4 | main.rs:39:1:46:1 | mod m4 | -| main.rs:773:5:773:9 | ...::i | main.rs:42:5:45:5 | fn i | -| main.rs:774:5:774:5 | h | main.rs:50:1:69:1 | fn h | -| main.rs:775:5:775:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:776:5:776:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:777:5:777:5 | j | main.rs:97:1:101:1 | fn j | -| main.rs:778:5:778:6 | m6 | main.rs:109:1:120:1 | mod m6 | -| main.rs:778:5:778:9 | ...::g | main.rs:114:5:119:5 | fn g | -| main.rs:779:5:779:6 | m7 | main.rs:122:1:141:1 | mod m7 | -| main.rs:779:5:779:9 | ...::f | main.rs:133:5:140:5 | fn f | -| main.rs:780:5:780:6 | m8 | main.rs:143:1:197:1 | mod m8 | -| main.rs:780:5:780:9 | ...::g | main.rs:181:5:196:5 | fn g | -| main.rs:781:5:781:6 | m9 | main.rs:199:1:207:1 | mod m9 | -| main.rs:781:5:781:9 | ...::f | main.rs:202:5:206:5 | fn f | -| main.rs:782:5:782:7 | m11 | main.rs:230:1:267:1 | mod m11 | -| main.rs:782:5:782:10 | ...::f | main.rs:235:5:238:5 | fn f | -| main.rs:783:5:783:7 | m15 | main.rs:298:1:367:1 | mod m15 | -| main.rs:783:5:783:10 | ...::f | main.rs:354:5:366:5 | fn f | -| main.rs:784:5:784:7 | m16 | main.rs:369:1:461:1 | mod m16 | -| main.rs:784:5:784:10 | ...::f | main.rs:436:5:460:5 | fn f | -| main.rs:785:5:785:20 | trait_visibility | main.rs:463:1:513:1 | mod trait_visibility | -| main.rs:785:5:785:23 | ...::f | main.rs:490:5:512:5 | fn f | -| main.rs:786:5:786:7 | m17 | main.rs:515:1:545:1 | mod m17 | -| main.rs:786:5:786:10 | ...::f | main.rs:539:5:544:5 | fn f | -| main.rs:787:5:787:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | -| main.rs:787:5:787:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | -| main.rs:788:5:788:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | -| main.rs:788:5:788:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | -| main.rs:789:5:789:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 | -| main.rs:789:5:789:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | -| main.rs:790:5:790:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | -| main.rs:791:5:791:7 | m18 | main.rs:547:1:565:1 | mod m18 | -| main.rs:791:5:791:12 | ...::m19 | main.rs:552:5:564:5 | mod m19 | -| main.rs:791:5:791:17 | ...::m20 | main.rs:557:9:563:9 | mod m20 | -| main.rs:791:5:791:20 | ...::g | main.rs:558:13:562:13 | fn g | -| main.rs:792:5:792:7 | m23 | main.rs:594:1:619:1 | mod m23 | -| main.rs:792:5:792:10 | ...::f | main.rs:614:5:618:5 | fn f | -| main.rs:793:5:793:7 | m24 | main.rs:621:1:689:1 | mod m24 | -| main.rs:793:5:793:10 | ...::f | main.rs:675:5:688:5 | fn f | -| main.rs:794:5:794:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:794:5:794:11 | ...::h | main.rs:50:1:69:1 | fn h | -| main.rs:796:5:796:11 | AStruct | main.rs:696:1:696:17 | struct AStruct | -| main.rs:797:5:797:11 | AStruct | main.rs:696:1:696:17 | struct AStruct | +| main.rs:12:5:12:7 | my2 | main.rs:7:1:7:8 | mod my2 | +| main.rs:12:5:12:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:12:5:12:25 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:12:5:12:34 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:13:5:13:5 | f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:14:5:14:5 | g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:17:5:17:7 | my2 | main.rs:7:1:7:8 | mod my2 | +| main.rs:17:5:17:18 | ...::nested8_f | my2/nested2.rs:23:9:25:9 | fn f | +| main.rs:31:13:31:13 | f | main.rs:25:9:27:9 | fn f | +| main.rs:32:13:32:17 | super | main.rs:19:1:43:1 | mod m1 | +| main.rs:32:13:32:20 | ...::f | main.rs:20:5:22:5 | fn f | +| main.rs:36:17:36:21 | super | main.rs:24:5:42:5 | mod m2 | +| main.rs:36:17:36:24 | ...::f | main.rs:25:9:27:9 | fn f | +| main.rs:39:17:39:17 | f | main.rs:25:9:27:9 | fn f | +| main.rs:46:9:46:13 | super | main.rs:1:1:805:2 | SourceFile | +| main.rs:46:9:46:17 | ...::m1 | main.rs:19:1:43:1 | mod m1 | +| main.rs:46:9:46:21 | ...::m2 | main.rs:24:5:42:5 | mod m2 | +| main.rs:46:9:46:24 | ...::g | main.rs:29:9:33:9 | fn g | +| main.rs:50:9:50:9 | g | main.rs:29:9:33:9 | fn g | +| main.rs:62:13:62:14 | m1 | main.rs:19:1:43:1 | mod m1 | +| main.rs:62:13:62:18 | ...::m2 | main.rs:24:5:42:5 | mod m2 | +| main.rs:62:13:62:21 | ...::g | main.rs:29:9:33:9 | fn g | +| main.rs:63:9:63:9 | g | main.rs:29:9:33:9 | fn g | +| main.rs:67:17:67:19 | Foo | main.rs:65:9:65:21 | struct Foo | +| main.rs:70:13:70:15 | Foo | main.rs:59:5:59:17 | struct Foo | +| main.rs:72:5:72:5 | f | main.rs:61:5:68:5 | fn f | +| main.rs:74:5:74:8 | self | main.rs:1:1:805:2 | SourceFile | +| main.rs:74:5:74:11 | ...::i | main.rs:77:1:89:1 | fn i | +| main.rs:80:13:80:15 | Foo | main.rs:54:1:54:13 | struct Foo | +| main.rs:84:16:84:18 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:87:17:87:19 | Foo | main.rs:83:9:85:9 | struct Foo | +| main.rs:91:5:91:7 | my2 | main.rs:7:1:7:8 | mod my2 | +| main.rs:91:5:91:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:93:5:93:21 | my2_nested2_alias | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:93:5:93:30 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:93:34:93:40 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:93:34:93:43 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:93:57:93:63 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:93:57:93:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:93:80:93:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:106:5:106:22 | f_defined_in_macro | main.rs:105:18:105:42 | fn f_defined_in_macro | +| main.rs:123:13:123:17 | super | main.rs:1:1:805:2 | SourceFile | +| main.rs:123:13:123:21 | ...::m5 | main.rs:109:1:113:1 | mod m5 | +| main.rs:124:9:124:9 | f | main.rs:110:5:112:5 | fn f | +| main.rs:124:9:124:9 | f | main.rs:116:5:118:5 | fn f | +| main.rs:131:13:131:15 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:134:16:134:18 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:140:19:140:24 | MyEnum | main.rs:129:5:137:5 | enum MyEnum | +| main.rs:143:17:143:22 | MyEnum | main.rs:129:5:137:5 | enum MyEnum | +| main.rs:143:17:143:25 | ...::A | main.rs:130:9:132:9 | A | +| main.rs:144:17:144:22 | MyEnum | main.rs:129:5:137:5 | enum MyEnum | +| main.rs:144:17:144:25 | ...::B | main.rs:132:12:135:9 | B | +| main.rs:145:9:145:14 | MyEnum | main.rs:129:5:137:5 | enum MyEnum | +| main.rs:145:9:145:17 | ...::C | main.rs:135:12:136:9 | C | +| main.rs:155:13:155:13 | f | main.rs:162:5:164:5 | fn f | +| main.rs:156:13:156:16 | Self | main.rs:150:5:158:5 | trait MyTrait | +| main.rs:156:13:156:19 | ...::f | main.rs:151:9:151:20 | fn f | +| main.rs:167:10:167:16 | MyTrait | main.rs:150:5:158:5 | trait MyTrait | +| main.rs:167:22:167:29 | MyStruct | main.rs:160:5:160:22 | struct MyStruct | +| main.rs:170:13:170:13 | f | main.rs:162:5:164:5 | fn f | +| main.rs:171:13:171:16 | Self | main.rs:166:5:177:5 | impl MyTrait for MyStruct { ... } | +| main.rs:171:13:171:19 | ...::g | main.rs:174:9:176:9 | fn g | +| main.rs:180:10:180:17 | MyStruct | main.rs:160:5:160:22 | struct MyStruct | +| main.rs:183:13:183:13 | f | main.rs:162:5:164:5 | fn f | +| main.rs:189:17:189:24 | MyStruct | main.rs:160:5:160:22 | struct MyStruct | +| main.rs:190:9:190:15 | MyTrait | main.rs:150:5:158:5 | trait MyTrait | +| main.rs:190:9:190:18 | ...::f | main.rs:151:9:151:20 | fn f | +| main.rs:191:9:191:16 | MyStruct | main.rs:160:5:160:22 | struct MyStruct | +| main.rs:191:9:191:19 | ...::f | main.rs:167:33:172:9 | fn f | +| main.rs:192:10:192:17 | MyStruct | main.rs:160:5:160:22 | struct MyStruct | +| main.rs:193:10:193:16 | MyTrait | main.rs:150:5:158:5 | trait MyTrait | +| main.rs:196:17:196:24 | MyStruct | main.rs:160:5:160:22 | struct MyStruct | +| main.rs:198:17:198:24 | MyStruct | main.rs:160:5:160:22 | struct MyStruct | +| main.rs:200:9:200:16 | MyStruct | main.rs:160:5:160:22 | struct MyStruct | +| main.rs:200:9:200:19 | ...::h | main.rs:180:21:184:9 | fn h | +| main.rs:209:19:209:22 | self | main.rs:205:1:213:1 | mod m9 | +| main.rs:209:19:209:32 | ...::MyStruct | main.rs:206:5:206:26 | struct MyStruct | +| main.rs:211:9:211:12 | self | main.rs:205:1:213:1 | mod m9 | +| main.rs:211:9:211:22 | ...::MyStruct | main.rs:206:5:206:26 | struct MyStruct | +| main.rs:221:12:221:12 | T | main.rs:218:7:218:7 | T | +| main.rs:226:12:226:12 | T | main.rs:225:14:225:14 | T | +| main.rs:228:7:230:7 | MyStruct::<...> | main.rs:216:5:222:5 | struct MyStruct | +| main.rs:229:9:229:9 | T | main.rs:225:14:225:14 | T | +| main.rs:232:9:232:16 | MyStruct | main.rs:216:5:222:5 | struct MyStruct | +| main.rs:242:17:242:19 | Foo | main.rs:237:5:237:21 | struct Foo | +| main.rs:243:9:243:11 | Foo | main.rs:239:5:239:15 | fn Foo | +| main.rs:252:9:252:11 | Bar | main.rs:248:5:250:5 | enum Bar | +| main.rs:252:9:252:19 | ...::FooBar | main.rs:249:9:249:17 | FooBar | +| main.rs:257:13:257:15 | Foo | main.rs:237:5:237:21 | struct Foo | +| main.rs:258:17:258:22 | FooBar | main.rs:249:9:249:17 | FooBar | +| main.rs:259:17:259:22 | FooBar | main.rs:254:5:254:18 | fn FooBar | +| main.rs:267:9:267:9 | E | main.rs:262:15:265:5 | enum E | +| main.rs:267:9:267:12 | ...::C | main.rs:264:9:264:9 | C | +| main.rs:270:17:270:17 | S | main.rs:262:5:262:13 | struct S | +| main.rs:271:17:271:17 | C | main.rs:264:9:264:9 | C | +| main.rs:284:16:284:16 | T | main.rs:278:7:278:7 | T | +| main.rs:285:14:285:17 | Self | main.rs:276:5:286:5 | trait MyParamTrait | +| main.rs:285:14:285:33 | ...::AssociatedType | main.rs:280:9:280:28 | type AssociatedType | +| main.rs:294:13:294:16 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:294:13:294:21 | ...::m13 | main.rs:289:1:302:1 | mod m13 | +| main.rs:294:13:294:24 | ...::f | main.rs:290:5:290:17 | fn f | +| main.rs:294:13:294:24 | ...::f | main.rs:290:19:291:19 | struct f | +| main.rs:297:17:297:17 | f | main.rs:290:19:291:19 | struct f | +| main.rs:298:21:298:21 | f | main.rs:290:19:291:19 | struct f | +| main.rs:299:13:299:13 | f | main.rs:290:5:290:17 | fn f | +| main.rs:313:9:313:14 | Trait1 | main.rs:305:5:309:5 | trait Trait1 | +| main.rs:316:13:316:16 | Self | main.rs:311:5:319:5 | trait Trait2 | +| main.rs:316:13:316:19 | ...::g | main.rs:308:9:308:20 | fn g | +| main.rs:326:9:326:12 | Self | main.rs:321:5:334:5 | trait Trait3 | +| main.rs:326:15:326:20 | Trait1 | main.rs:305:5:309:5 | trait Trait1 | +| main.rs:327:9:327:10 | TT | main.rs:323:9:323:10 | TT | +| main.rs:327:13:327:18 | Trait1 | main.rs:305:5:309:5 | trait Trait1 | +| main.rs:329:25:329:26 | TT | main.rs:323:9:323:10 | TT | +| main.rs:330:13:330:16 | Self | main.rs:321:5:334:5 | trait Trait3 | +| main.rs:330:13:330:19 | ...::g | main.rs:308:9:308:20 | fn g | +| main.rs:331:13:331:14 | TT | main.rs:323:9:323:10 | TT | +| main.rs:331:13:331:17 | ...::g | main.rs:308:9:308:20 | fn g | +| main.rs:339:10:339:15 | Trait1 | main.rs:305:5:309:5 | trait Trait1 | +| main.rs:340:11:340:11 | S | main.rs:336:5:336:13 | struct S | +| main.rs:343:13:343:16 | Self | main.rs:338:5:350:5 | impl Trait1 for S { ... } | +| main.rs:343:13:343:19 | ...::g | main.rs:347:9:349:9 | fn g | +| main.rs:353:10:353:15 | Trait2 | main.rs:311:5:319:5 | trait Trait2 | +| main.rs:354:11:354:11 | S | main.rs:336:5:336:13 | struct S | +| main.rs:363:17:363:17 | S | main.rs:336:5:336:13 | struct S | +| main.rs:364:10:364:10 | S | main.rs:336:5:336:13 | struct S | +| main.rs:365:14:365:19 | Trait1 | main.rs:305:5:309:5 | trait Trait1 | +| main.rs:367:10:367:10 | S | main.rs:336:5:336:13 | struct S | +| main.rs:368:14:368:19 | Trait2 | main.rs:311:5:319:5 | trait Trait2 | +| main.rs:370:9:370:9 | S | main.rs:336:5:336:13 | struct S | +| main.rs:370:9:370:12 | ...::g | main.rs:347:9:349:9 | fn g | +| main.rs:380:24:380:24 | T | main.rs:378:7:378:7 | T | +| main.rs:382:24:382:24 | T | main.rs:378:7:378:7 | T | +| main.rs:385:24:385:24 | T | main.rs:378:7:378:7 | T | +| main.rs:386:13:386:16 | Self | main.rs:376:5:392:5 | trait Trait1 | +| main.rs:386:13:386:19 | ...::g | main.rs:382:9:383:9 | fn g | +| main.rs:390:18:390:18 | T | main.rs:378:7:378:7 | T | +| main.rs:398:9:400:9 | Trait1::<...> | main.rs:376:5:392:5 | trait Trait1 | +| main.rs:399:11:399:11 | T | main.rs:396:7:396:7 | T | +| main.rs:401:24:401:24 | T | main.rs:396:7:396:7 | T | +| main.rs:403:13:403:16 | Self | main.rs:394:5:407:5 | trait Trait2 | +| main.rs:403:13:403:19 | ...::g | main.rs:382:9:383:9 | fn g | +| main.rs:405:13:405:16 | Self | main.rs:394:5:407:5 | trait Trait2 | +| main.rs:405:13:405:19 | ...::c | main.rs:390:9:391:9 | Const | +| main.rs:412:10:414:5 | Trait1::<...> | main.rs:376:5:392:5 | trait Trait1 | +| main.rs:413:7:413:7 | S | main.rs:409:5:409:13 | struct S | +| main.rs:415:11:415:11 | S | main.rs:409:5:409:13 | struct S | +| main.rs:416:24:416:24 | S | main.rs:409:5:409:13 | struct S | +| main.rs:418:13:418:16 | Self | main.rs:411:5:429:5 | impl Trait1::<...> for S { ... } | +| main.rs:418:13:418:19 | ...::g | main.rs:422:9:425:9 | fn g | +| main.rs:422:24:422:24 | S | main.rs:409:5:409:13 | struct S | +| main.rs:424:13:424:16 | Self | main.rs:411:5:429:5 | impl Trait1::<...> for S { ... } | +| main.rs:424:13:424:19 | ...::c | main.rs:427:9:428:9 | Const | +| main.rs:427:18:427:18 | S | main.rs:409:5:409:13 | struct S | +| main.rs:427:22:427:22 | S | main.rs:409:5:409:13 | struct S | +| main.rs:432:10:434:5 | Trait2::<...> | main.rs:394:5:407:5 | trait Trait2 | +| main.rs:433:7:433:7 | S | main.rs:409:5:409:13 | struct S | +| main.rs:435:11:435:11 | S | main.rs:409:5:409:13 | struct S | +| main.rs:436:24:436:24 | S | main.rs:409:5:409:13 | struct S | +| main.rs:438:13:438:16 | Self | main.rs:431:5:440:5 | impl Trait2::<...> for S { ... } | +| main.rs:445:17:445:17 | S | main.rs:409:5:409:13 | struct S | +| main.rs:446:10:446:10 | S | main.rs:409:5:409:13 | struct S | +| main.rs:447:14:449:11 | Trait1::<...> | main.rs:376:5:392:5 | trait Trait1 | +| main.rs:448:13:448:13 | S | main.rs:409:5:409:13 | struct S | +| main.rs:451:10:451:10 | S | main.rs:409:5:409:13 | struct S | +| main.rs:452:14:454:11 | Trait2::<...> | main.rs:394:5:407:5 | trait Trait2 | +| main.rs:453:13:453:13 | S | main.rs:409:5:409:13 | struct S | +| main.rs:456:9:456:9 | S | main.rs:409:5:409:13 | struct S | +| main.rs:456:9:456:12 | ...::g | main.rs:422:9:425:9 | fn g | +| main.rs:458:9:458:9 | S | main.rs:409:5:409:13 | struct S | +| main.rs:458:9:458:12 | ...::h | main.rs:385:9:388:9 | fn h | +| main.rs:460:9:460:9 | S | main.rs:409:5:409:13 | struct S | +| main.rs:460:9:460:12 | ...::c | main.rs:427:9:428:9 | Const | +| main.rs:461:10:461:10 | S | main.rs:409:5:409:13 | struct S | +| main.rs:462:14:464:11 | Trait1::<...> | main.rs:376:5:392:5 | trait Trait1 | +| main.rs:463:13:463:13 | S | main.rs:409:5:409:13 | struct S | +| main.rs:481:14:481:16 | Foo | main.rs:471:9:473:9 | trait Foo | +| main.rs:481:22:481:22 | X | main.rs:479:9:479:21 | struct X | +| main.rs:487:14:487:16 | Bar | main.rs:475:9:477:9 | trait Bar | +| main.rs:487:22:487:22 | X | main.rs:479:9:479:21 | struct X | +| main.rs:494:9:494:9 | m | main.rs:470:5:492:5 | mod m | +| main.rs:494:9:494:12 | ...::X | main.rs:479:9:479:21 | struct X | +| main.rs:497:17:497:17 | X | main.rs:479:9:479:21 | struct X | +| main.rs:500:17:500:17 | m | main.rs:470:5:492:5 | mod m | +| main.rs:500:17:500:22 | ...::Foo | main.rs:471:9:473:9 | trait Foo | +| main.rs:501:13:501:13 | X | main.rs:479:9:479:21 | struct X | +| main.rs:501:13:501:23 | ...::a_method | main.rs:481:26:484:13 | fn a_method | +| main.rs:505:17:505:17 | m | main.rs:470:5:492:5 | mod m | +| main.rs:505:17:505:22 | ...::Bar | main.rs:475:9:477:9 | trait Bar | +| main.rs:506:13:506:13 | X | main.rs:479:9:479:21 | struct X | +| main.rs:506:13:506:23 | ...::a_method | main.rs:487:26:490:13 | fn a_method | +| main.rs:510:17:510:17 | m | main.rs:470:5:492:5 | mod m | +| main.rs:510:17:510:22 | ...::Bar | main.rs:475:9:477:9 | trait Bar | +| main.rs:511:13:511:13 | X | main.rs:479:9:479:21 | struct X | +| main.rs:511:13:511:23 | ...::a_method | main.rs:487:26:490:13 | fn a_method | +| main.rs:516:13:516:13 | m | main.rs:470:5:492:5 | mod m | +| main.rs:516:13:516:18 | ...::Bar | main.rs:475:9:477:9 | trait Bar | +| main.rs:516:13:516:28 | ...::a_method | main.rs:476:13:476:31 | fn a_method | +| main.rs:529:10:529:16 | MyTrait | main.rs:522:5:524:5 | trait MyTrait | +| main.rs:530:9:530:9 | S | main.rs:526:5:526:13 | struct S | +| main.rs:538:7:538:13 | MyTrait | main.rs:522:5:524:5 | trait MyTrait | +| main.rs:539:10:539:10 | T | main.rs:537:10:537:10 | T | +| main.rs:541:9:541:9 | T | main.rs:537:10:537:10 | T | +| main.rs:541:9:541:12 | ...::f | main.rs:523:9:523:20 | fn f | +| main.rs:542:9:542:15 | MyTrait | main.rs:522:5:524:5 | trait MyTrait | +| main.rs:542:9:542:18 | ...::f | main.rs:523:9:523:20 | fn f | +| main.rs:547:9:547:9 | g | main.rs:536:5:543:5 | fn g | +| main.rs:548:11:548:11 | S | main.rs:526:5:526:13 | struct S | +| main.rs:566:17:566:21 | super | main.rs:558:5:570:5 | mod m19 | +| main.rs:566:17:566:24 | ...::f | main.rs:559:9:561:9 | fn f | +| main.rs:567:17:567:21 | super | main.rs:558:5:570:5 | mod m19 | +| main.rs:567:17:567:28 | ...::super | main.rs:553:1:571:1 | mod m18 | +| main.rs:567:17:567:31 | ...::f | main.rs:554:5:556:5 | fn f | +| main.rs:584:13:584:17 | super | main.rs:573:1:598:1 | mod m21 | +| main.rs:584:13:584:22 | ...::m22 | main.rs:574:5:580:5 | mod m22 | +| main.rs:584:13:584:30 | ...::MyEnum | main.rs:575:9:577:9 | enum MyEnum | +| main.rs:585:13:585:16 | self | main.rs:575:9:577:9 | enum MyEnum | +| main.rs:589:13:589:17 | super | main.rs:573:1:598:1 | mod m21 | +| main.rs:589:13:589:22 | ...::m22 | main.rs:574:5:580:5 | mod m22 | +| main.rs:589:13:589:32 | ...::MyStruct | main.rs:579:9:579:28 | struct MyStruct | +| main.rs:590:13:590:16 | self | main.rs:579:9:579:28 | struct MyStruct | +| main.rs:594:21:594:26 | MyEnum | main.rs:575:9:577:9 | enum MyEnum | +| main.rs:594:21:594:29 | ...::A | main.rs:576:13:576:13 | A | +| main.rs:595:21:595:28 | MyStruct | main.rs:579:9:579:28 | struct MyStruct | +| main.rs:611:10:613:5 | Trait1::<...> | main.rs:601:5:606:5 | trait Trait1 | +| main.rs:612:7:612:10 | Self | main.rs:608:5:608:13 | struct S | +| main.rs:614:11:614:11 | S | main.rs:608:5:608:13 | struct S | +| main.rs:622:17:622:17 | S | main.rs:608:5:608:13 | struct S | +| main.rs:638:15:638:15 | T | main.rs:637:26:637:26 | T | +| main.rs:643:9:643:24 | GenericStruct::<...> | main.rs:636:5:639:5 | struct GenericStruct | +| main.rs:643:23:643:23 | T | main.rs:642:10:642:10 | T | +| main.rs:645:9:645:9 | T | main.rs:642:10:642:10 | T | +| main.rs:645:12:645:17 | TraitA | main.rs:628:5:630:5 | trait TraitA | +| main.rs:654:9:654:24 | GenericStruct::<...> | main.rs:636:5:639:5 | struct GenericStruct | +| main.rs:654:23:654:23 | T | main.rs:653:10:653:10 | T | +| main.rs:656:9:656:9 | T | main.rs:653:10:653:10 | T | +| main.rs:656:12:656:17 | TraitB | main.rs:632:5:634:5 | trait TraitB | +| main.rs:657:9:657:9 | T | main.rs:653:10:653:10 | T | +| main.rs:657:12:657:17 | TraitA | main.rs:628:5:630:5 | trait TraitA | +| main.rs:668:10:668:15 | TraitA | main.rs:628:5:630:5 | trait TraitA | +| main.rs:668:21:668:31 | Implementor | main.rs:665:5:665:23 | struct Implementor | +| main.rs:675:10:675:15 | TraitB | main.rs:632:5:634:5 | trait TraitB | +| main.rs:675:21:675:31 | Implementor | main.rs:665:5:665:23 | struct Implementor | +| main.rs:683:24:683:34 | Implementor | main.rs:665:5:665:23 | struct Implementor | +| main.rs:684:23:684:35 | GenericStruct | main.rs:636:5:639:5 | struct GenericStruct | +| main.rs:690:9:690:36 | GenericStruct::<...> | main.rs:636:5:639:5 | struct GenericStruct | +| main.rs:690:9:690:50 | ...::call_trait_a | main.rs:647:9:649:9 | fn call_trait_a | +| main.rs:690:25:690:35 | Implementor | main.rs:665:5:665:23 | struct Implementor | +| main.rs:693:9:693:36 | GenericStruct::<...> | main.rs:636:5:639:5 | struct GenericStruct | +| main.rs:693:9:693:47 | ...::call_both | main.rs:659:9:662:9 | fn call_both | +| main.rs:693:25:693:35 | Implementor | main.rs:665:5:665:23 | struct Implementor | +| main.rs:699:3:699:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:699:3:699:24 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | +| main.rs:703:6:703:12 | AStruct | main.rs:702:1:702:17 | struct AStruct | +| main.rs:705:7:705:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:705:7:705:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | +| main.rs:708:7:708:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:708:7:708:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | +| main.rs:713:9:713:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:713:9:713:19 | ...::marker | {EXTERNAL LOCATION} | mod marker | +| main.rs:713:9:713:32 | ...::PhantomData | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:714:9:714:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:714:9:714:19 | ...::result | {EXTERNAL LOCATION} | mod result | +| main.rs:714:9:714:27 | ...::Result | {EXTERNAL LOCATION} | enum Result | +| main.rs:722:19:722:22 | Self | main.rs:716:5:724:5 | trait Reduce | +| main.rs:722:19:722:29 | ...::Input | main.rs:717:9:717:19 | type Input | +| main.rs:723:14:723:46 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:723:21:723:24 | Self | main.rs:716:5:724:5 | trait Reduce | +| main.rs:723:21:723:32 | ...::Output | main.rs:718:21:719:20 | type Output | +| main.rs:723:35:723:38 | Self | main.rs:716:5:724:5 | trait Reduce | +| main.rs:723:35:723:45 | ...::Error | main.rs:717:21:718:19 | type Error | +| main.rs:727:17:727:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:727:29:727:33 | Input | main.rs:726:19:726:23 | Input | +| main.rs:728:17:728:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:728:29:728:33 | Error | main.rs:726:26:726:30 | Error | +| main.rs:735:11:735:16 | Reduce | main.rs:716:5:724:5 | trait Reduce | +| main.rs:736:13:739:9 | MyImpl::<...> | main.rs:726:5:729:5 | struct MyImpl | +| main.rs:737:13:737:17 | Input | main.rs:733:13:733:17 | Input | +| main.rs:738:13:738:17 | Error | main.rs:734:13:734:17 | Error | +| main.rs:741:22:744:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:742:13:742:17 | Input | main.rs:733:13:733:17 | Input | +| main.rs:743:13:743:16 | Self | main.rs:731:5:763:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:743:13:743:23 | ...::Error | main.rs:745:11:749:9 | type Error | +| main.rs:746:22:748:9 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:747:11:747:15 | Error | main.rs:734:13:734:17 | Error | +| main.rs:751:13:751:17 | Input | main.rs:733:13:733:17 | Input | +| main.rs:756:19:756:22 | Self | main.rs:731:5:763:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:756:19:756:29 | ...::Input | main.rs:741:9:745:9 | type Input | +| main.rs:757:14:760:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:758:13:758:16 | Self | main.rs:731:5:763:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:758:13:758:24 | ...::Output | main.rs:749:11:752:9 | type Output | +| main.rs:759:13:759:16 | Self | main.rs:731:5:763:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:759:13:759:23 | ...::Error | main.rs:745:11:749:9 | type Error | +| main.rs:766:5:766:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:766:11:766:14 | self | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:768:15:768:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:768:15:768:25 | ...::string | {EXTERNAL LOCATION} | mod string | +| main.rs:768:15:768:33 | ...::String | {EXTERNAL LOCATION} | struct String | +| main.rs:771:5:771:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:771:5:771:14 | ...::nested | my.rs:1:1:1:15 | mod nested | +| main.rs:771:5:771:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | +| main.rs:771:5:771:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | +| main.rs:771:5:771:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | +| main.rs:772:5:772:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:772:5:772:9 | ...::f | my.rs:5:1:7:1 | fn f | +| main.rs:773:5:773:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:773:5:773:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:773:5:773:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:773:5:773:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:774:5:774:5 | f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:775:5:775:5 | g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:776:5:776:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:776:5:776:12 | ...::h | main.rs:56:1:75:1 | fn h | +| main.rs:777:5:777:6 | m1 | main.rs:19:1:43:1 | mod m1 | +| main.rs:777:5:777:10 | ...::m2 | main.rs:24:5:42:5 | mod m2 | +| main.rs:777:5:777:13 | ...::g | main.rs:29:9:33:9 | fn g | +| main.rs:778:5:778:6 | m1 | main.rs:19:1:43:1 | mod m1 | +| main.rs:778:5:778:10 | ...::m2 | main.rs:24:5:42:5 | mod m2 | +| main.rs:778:5:778:14 | ...::m3 | main.rs:35:9:41:9 | mod m3 | +| main.rs:778:5:778:17 | ...::h | main.rs:36:27:40:13 | fn h | +| main.rs:779:5:779:6 | m4 | main.rs:45:1:52:1 | mod m4 | +| main.rs:779:5:779:9 | ...::i | main.rs:48:5:51:5 | fn i | +| main.rs:780:5:780:5 | h | main.rs:56:1:75:1 | fn h | +| main.rs:781:5:781:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:782:5:782:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:783:5:783:5 | j | main.rs:103:1:107:1 | fn j | +| main.rs:784:5:784:6 | m6 | main.rs:115:1:126:1 | mod m6 | +| main.rs:784:5:784:9 | ...::g | main.rs:120:5:125:5 | fn g | +| main.rs:785:5:785:6 | m7 | main.rs:128:1:147:1 | mod m7 | +| main.rs:785:5:785:9 | ...::f | main.rs:139:5:146:5 | fn f | +| main.rs:786:5:786:6 | m8 | main.rs:149:1:203:1 | mod m8 | +| main.rs:786:5:786:9 | ...::g | main.rs:187:5:202:5 | fn g | +| main.rs:787:5:787:6 | m9 | main.rs:205:1:213:1 | mod m9 | +| main.rs:787:5:787:9 | ...::f | main.rs:208:5:212:5 | fn f | +| main.rs:788:5:788:7 | m11 | main.rs:236:1:273:1 | mod m11 | +| main.rs:788:5:788:10 | ...::f | main.rs:241:5:244:5 | fn f | +| main.rs:789:5:789:7 | m15 | main.rs:304:1:373:1 | mod m15 | +| main.rs:789:5:789:10 | ...::f | main.rs:360:5:372:5 | fn f | +| main.rs:790:5:790:7 | m16 | main.rs:375:1:467:1 | mod m16 | +| main.rs:790:5:790:10 | ...::f | main.rs:442:5:466:5 | fn f | +| main.rs:791:5:791:20 | trait_visibility | main.rs:469:1:519:1 | mod trait_visibility | +| main.rs:791:5:791:23 | ...::f | main.rs:496:5:518:5 | fn f | +| main.rs:792:5:792:7 | m17 | main.rs:521:1:551:1 | mod m17 | +| main.rs:792:5:792:10 | ...::f | main.rs:545:5:550:5 | fn f | +| main.rs:793:5:793:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | +| main.rs:793:5:793:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | +| main.rs:794:5:794:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | +| main.rs:794:5:794:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | +| main.rs:795:5:795:7 | my3 | my2/mod.rs:18:1:18:12 | mod my3 | +| main.rs:795:5:795:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | +| main.rs:796:5:796:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:797:5:797:7 | m18 | main.rs:553:1:571:1 | mod m18 | +| main.rs:797:5:797:12 | ...::m19 | main.rs:558:5:570:5 | mod m19 | +| main.rs:797:5:797:17 | ...::m20 | main.rs:563:9:569:9 | mod m20 | +| main.rs:797:5:797:20 | ...::g | main.rs:564:13:568:13 | fn g | +| main.rs:798:5:798:7 | m23 | main.rs:600:1:625:1 | mod m23 | +| main.rs:798:5:798:10 | ...::f | main.rs:620:5:624:5 | fn f | +| main.rs:799:5:799:7 | m24 | main.rs:627:1:695:1 | mod m24 | +| main.rs:799:5:799:10 | ...::f | main.rs:681:5:694:5 | fn f | +| main.rs:800:5:800:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:800:5:800:11 | ...::h | main.rs:56:1:75:1 | fn h | +| main.rs:802:5:802:11 | AStruct | main.rs:702:1:702:17 | struct AStruct | +| main.rs:803:5:803:11 | AStruct | main.rs:702:1:702:17 | struct AStruct | | 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 | | my2/mod.rs:5:5:5:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | | my2/mod.rs:8:9:8:15 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | | my2/mod.rs:8:9:8:24 | ...::nested5 | my2/nested2.rs:13:1:19:1 | mod nested5 | -| my2/mod.rs:10:9:10:15 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| my2/mod.rs:10:9:10:24 | ...::nested7 | my2/nested2.rs:21:1:27:1 | mod nested7 | -| my2/mod.rs:10:9:10:33 | ...::nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | -| my2/mod.rs:10:37:10:40 | self | my2/nested2.rs:22:5:26:5 | mod nested8 | -| my2/mod.rs:17:5:17:9 | mymod | my2/mod.rs:14:1:15:10 | mod mymod | -| my2/mod.rs:17:5:17:12 | ...::f | my2/renamed.rs:1:1:1:13 | fn f | +| my2/mod.rs:11:9:11:15 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| my2/mod.rs:11:9:11:24 | ...::nested7 | my2/nested2.rs:21:1:27:1 | mod nested7 | +| my2/mod.rs:11:9:11:33 | ...::nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | +| my2/mod.rs:12:5:12:8 | self | my2/nested2.rs:22:5:26:5 | mod nested8 | +| my2/mod.rs:13:5:13:5 | f | my2/nested2.rs:23:9:25:9 | fn f | +| my2/mod.rs:16:5:16:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| my2/mod.rs:16:5:16:20 | ...::nested5 | my2/nested2.rs:13:1:19:1 | mod nested5 | +| my2/mod.rs:16:5:16:29 | ...::nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | +| my2/mod.rs:16:5:16:32 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | +| my2/mod.rs:23:9:23:13 | mymod | my2/mod.rs:20:1:21:10 | mod mymod | +| my2/mod.rs:23:9:23:16 | ...::f | my2/renamed.rs:1:1:1:13 | fn f | | my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g | -| my2/my3/mod.rs:4:5:4:5 | h | main.rs:50:1:69:1 | fn h | -| my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:17:30 | SourceFile | -| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:799:2 | SourceFile | -| my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:50:1:69:1 | fn h | -| my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:17:30 | SourceFile | +| my2/my3/mod.rs:4:5:4:5 | h | main.rs:56:1:75:1 | fn h | +| my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:23:34 | SourceFile | +| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:805:2 | SourceFile | +| my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:56:1:75:1 | fn h | +| my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:23:34 | SourceFile | | my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g | +| my2/my3/mod.rs:10:5:10:9 | super | my2/mod.rs:1:1:23:34 | SourceFile | +| my2/my3/mod.rs:10:5:10:20 | ...::nested6_f | my2/nested2.rs:15:9:17:9 | fn f | | my.rs:3:5:3:10 | nested | my.rs:1:1:1:15 | mod nested | | my.rs:3:5:3:13 | ...::g | my/nested.rs:19:1:22:1 | fn g | | my.rs:11:5:11:5 | g | my/nested.rs:19:1:22:1 | fn g |