+
+
+Constructing URLs with the HTTP protocol can lead to unsecured connections.
+
+Furthermore, constructing URLs with the HTTP protocol can create problems if other parts of the
+code expect HTTPS URLs. A typical pattern is to use libraries that expect secure connections,
+which may fail or fall back to insecure behavior when provided with HTTP URLs instead of HTTPS URLs.
+
+
+
+
+When you construct a URL for network requests, ensure that you use an HTTPS URL rather than an HTTP URL.
+Then, any connections that are made using that URL are secure SSL/TLS connections.
+
+
+
+
+The following example shows two ways of making a network request using a URL. When the request is
+made using an HTTP URL rather than an HTTPS URL, the connection is unsecured and can be intercepted
+by attackers. When the request is made using an HTTPS URL, the connection is a secure SSL/TLS connection.
+
+
+
+A better approach is to use HTTPS:
+
+
+
+
+
+
+
+OWASP:
+Transport Layer Protection Cheat Sheet.
+
+
+OWASP Top 10:
+A08:2021 - Software and Data Integrity Failures.
+
+Rust reqwest documentation:
+reqwest crate.
+
+
+
+
\ No newline at end of file
diff --git a/rust/ql/src/queries/security/CWE-319/UseOfHttp.ql b/rust/ql/src/queries/security/CWE-319/UseOfHttp.ql
new file mode 100644
index 00000000000..4a464d90bbe
--- /dev/null
+++ b/rust/ql/src/queries/security/CWE-319/UseOfHttp.ql
@@ -0,0 +1,42 @@
+/**
+ * @name Failure to use HTTPS URLs
+ * @description Non-HTTPS connections can be intercepted by third parties.
+ * @kind path-problem
+ * @problem.severity warning
+ * @security-severity 8.1
+ * @precision high
+ * @id rust/non-https-url
+ * @tags security
+ * external/cwe/cwe-319
+ * external/cwe/cwe-345
+ */
+
+import rust
+import codeql.rust.dataflow.DataFlow
+import codeql.rust.dataflow.TaintTracking
+import codeql.rust.security.UseOfHttpExtensions
+
+/**
+ * A taint configuration for HTTP URL strings that flow to URL-using sinks.
+ */
+module UseOfHttpConfig implements DataFlow::ConfigSig {
+ import UseOfHttp
+
+ predicate isSource(DataFlow::Node node) { node instanceof Source }
+
+ predicate isSink(DataFlow::Node node) { node instanceof Sink }
+
+ predicate isBarrier(DataFlow::Node barrier) { barrier instanceof Barrier }
+
+ predicate observeDiffInformedIncrementalMode() { any() }
+}
+
+module UseOfHttpFlow = TaintTracking::Global;
+
+import UseOfHttpFlow::PathGraph
+
+from UseOfHttpFlow::PathNode sourceNode, UseOfHttpFlow::PathNode sinkNode
+where UseOfHttpFlow::flowPath(sourceNode, sinkNode)
+select sinkNode.getNode(), sourceNode, sinkNode,
+ "This URL may be constructed with the HTTP protocol, from $@.", sourceNode.getNode(),
+ "this HTTP URL"
diff --git a/rust/ql/src/queries/security/CWE-319/UseOfHttpBad.rs b/rust/ql/src/queries/security/CWE-319/UseOfHttpBad.rs
new file mode 100644
index 00000000000..ada466cae5c
--- /dev/null
+++ b/rust/ql/src/queries/security/CWE-319/UseOfHttpBad.rs
@@ -0,0 +1,10 @@
+// BAD: Using HTTP URL which can be intercepted
+use reqwest;
+
+fn main() {
+ let url = "http://example.com/sensitive-data";
+
+ // This makes an insecure HTTP request that can be intercepted
+ let response = reqwest::blocking::get(url).unwrap();
+ println!("Response: {}", response.text().unwrap());
+}
\ No newline at end of file
diff --git a/rust/ql/src/queries/security/CWE-319/UseOfHttpGood.rs b/rust/ql/src/queries/security/CWE-319/UseOfHttpGood.rs
new file mode 100644
index 00000000000..22b94235fa1
--- /dev/null
+++ b/rust/ql/src/queries/security/CWE-319/UseOfHttpGood.rs
@@ -0,0 +1,10 @@
+// GOOD: Using HTTPS URL which provides encryption
+use reqwest;
+
+fn main() {
+ let url = "https://example.com/sensitive-data";
+
+ // This makes a secure HTTPS request that is encrypted
+ let response = reqwest::blocking::get(url).unwrap();
+ println!("Response: {}", response.text().unwrap());
+}
\ No newline at end of file
diff --git a/rust/ql/src/queries/summary/Stats.qll b/rust/ql/src/queries/summary/Stats.qll
index 7a1de4f1314..d49e1fdde5d 100644
--- a/rust/ql/src/queries/summary/Stats.qll
+++ b/rust/ql/src/queries/summary/Stats.qll
@@ -27,6 +27,7 @@ private import codeql.rust.security.LogInjectionExtensions
private import codeql.rust.security.SqlInjectionExtensions
private import codeql.rust.security.TaintedPathExtensions
private import codeql.rust.security.UncontrolledAllocationSizeExtensions
+private import codeql.rust.security.UseOfHttpExtensions
private import codeql.rust.security.WeakSensitiveDataHashingExtensions
private import codeql.rust.security.HardcodedCryptographicValueExtensions
diff --git a/rust/ql/test/query-tests/security/CWE-319/Cargo.lock b/rust/ql/test/query-tests/security/CWE-319/Cargo.lock
new file mode 100644
index 00000000000..ad4b5cebd22
--- /dev/null
+++ b/rust/ql/test/query-tests/security/CWE-319/Cargo.lock
@@ -0,0 +1,1574 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "addr2line"
+version = "0.24.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler2"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
+
+[[package]]
+name = "atomic-waker"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+[[package]]
+name = "backtrace"
+version = "0.3.75"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002"
+dependencies = [
+ "addr2line",
+ "cfg-if",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+ "windows-targets",
+]
+
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
+name = "bitflags"
+version = "2.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
+
+[[package]]
+name = "bumpalo"
+version = "3.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
+
+[[package]]
+name = "bytes"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
+
+[[package]]
+name = "cc"
+version = "1.2.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44"
+dependencies = [
+ "find-msvc-tools",
+ "shlex",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9"
+
+[[package]]
+name = "core-foundation"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+
+[[package]]
+name = "errno"
+version = "0.3.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
+dependencies = [
+ "libc",
+ "windows-sys 0.61.0",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
+
+[[package]]
+name = "find-msvc-tools"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d"
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "foreign-types"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+dependencies = [
+ "foreign-types-shared",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
+
+[[package]]
+name = "futures-io"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
+
+[[package]]
+name = "futures-sink"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
+
+[[package]]
+name = "futures-task"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
+
+[[package]]
+name = "futures-util"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
+dependencies = [
+ "futures-core",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.11.1+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "r-efi",
+ "wasi 0.14.5+wasi-0.2.4",
+]
+
+[[package]]
+name = "gimli"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
+
+[[package]]
+name = "h2"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
+dependencies = [
+ "atomic-waker",
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "http",
+ "indexmap",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.15.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
+
+[[package]]
+name = "http"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
+dependencies = [
+ "bytes",
+ "http",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "http",
+ "http-body",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "httparse"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
+
+[[package]]
+name = "hyper"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e"
+dependencies = [
+ "atomic-waker",
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "h2",
+ "http",
+ "http-body",
+ "httparse",
+ "itoa",
+ "pin-project-lite",
+ "pin-utils",
+ "smallvec",
+ "tokio",
+ "want",
+]
+
+[[package]]
+name = "hyper-rustls"
+version = "0.27.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
+dependencies = [
+ "http",
+ "hyper",
+ "hyper-util",
+ "rustls",
+ "rustls-pki-types",
+ "tokio",
+ "tokio-rustls",
+ "tower-service",
+]
+
+[[package]]
+name = "hyper-tls"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
+dependencies = [
+ "bytes",
+ "http-body-util",
+ "hyper",
+ "hyper-util",
+ "native-tls",
+ "tokio",
+ "tokio-native-tls",
+ "tower-service",
+]
+
+[[package]]
+name = "hyper-util"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e"
+dependencies = [
+ "base64",
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "http",
+ "http-body",
+ "hyper",
+ "ipnet",
+ "libc",
+ "percent-encoding",
+ "pin-project-lite",
+ "socket2",
+ "system-configuration",
+ "tokio",
+ "tower-service",
+ "tracing",
+ "windows-registry",
+]
+
+[[package]]
+name = "icu_collections"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47"
+dependencies = [
+ "displaydoc",
+ "potential_utf",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locale_core"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3"
+
+[[package]]
+name = "icu_properties"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_locale_core",
+ "icu_properties_data",
+ "icu_provider",
+ "potential_utf",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632"
+
+[[package]]
+name = "icu_provider"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af"
+dependencies = [
+ "displaydoc",
+ "icu_locale_core",
+ "stable_deref_trait",
+ "tinystr",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "idna"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
+dependencies = [
+ "idna_adapter",
+ "smallvec",
+ "utf8_iter",
+]
+
+[[package]]
+name = "idna_adapter"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
+dependencies = [
+ "icu_normalizer",
+ "icu_properties",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "206a8042aec68fa4a62e8d3f7aa4ceb508177d9324faf261e1959e495b7a1921"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "io-uring"
+version = "0.7.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "libc",
+]
+
+[[package]]
+name = "ipnet"
+version = "2.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
+
+[[package]]
+name = "iri-string"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2"
+dependencies = [
+ "memchr",
+ "serde",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
+
+[[package]]
+name = "js-sys"
+version = "0.3.78"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.175"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
+
+[[package]]
+name = "litemap"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
+
+[[package]]
+name = "log"
+version = "0.4.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
+
+[[package]]
+name = "memchr"
+version = "2.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
+
+[[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.8.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
+dependencies = [
+ "adler2",
+]
+
+[[package]]
+name = "mio"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
+dependencies = [
+ "libc",
+ "wasi 0.11.1+wasi-snapshot-preview1",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "native-tls"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
+dependencies = [
+ "libc",
+ "log",
+ "openssl",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "security-framework",
+ "security-framework-sys",
+ "tempfile",
+]
+
+[[package]]
+name = "object"
+version = "0.36.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+
+[[package]]
+name = "openssl"
+version = "0.10.73"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "foreign-types",
+ "libc",
+ "once_cell",
+ "openssl-macros",
+ "openssl-sys",
+]
+
+[[package]]
+name = "openssl-macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
+
+[[package]]
+name = "potential_utf"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a"
+dependencies = [
+ "zerovec",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "r-efi"
+version = "5.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
+
+[[package]]
+name = "reqwest"
+version = "0.12.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb"
+dependencies = [
+ "base64",
+ "bytes",
+ "encoding_rs",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http",
+ "http-body",
+ "http-body-util",
+ "hyper",
+ "hyper-rustls",
+ "hyper-tls",
+ "hyper-util",
+ "js-sys",
+ "log",
+ "mime",
+ "native-tls",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustls-pki-types",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "sync_wrapper",
+ "tokio",
+ "tokio-native-tls",
+ "tower",
+ "tower-http",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "ring"
+version = "0.17.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
+dependencies = [
+ "cc",
+ "cfg-if",
+ "getrandom 0.2.16",
+ "libc",
+ "untrusted",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustc-demangle"
+version = "0.1.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace"
+
+[[package]]
+name = "rustix"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
+dependencies = [
+ "bitflags",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.61.0",
+]
+
+[[package]]
+name = "rustls"
+version = "0.23.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc"
+dependencies = [
+ "once_cell",
+ "rustls-pki-types",
+ "rustls-webpki",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-pki-types"
+version = "1.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79"
+dependencies = [
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.103.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5a37813727b78798e53c2bec3f5e8fe12a6d6f8389bf9ca7802add4c9905ad8"
+dependencies = [
+ "ring",
+ "rustls-pki-types",
+ "untrusted",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
+
+[[package]]
+name = "ryu"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
+
+[[package]]
+name = "schannel"
+version = "0.1.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
+dependencies = [
+ "windows-sys 0.61.0",
+]
+
+[[package]]
+name = "security-framework"
+version = "2.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.223"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a505d71960adde88e293da5cb5eda57093379f64e61cf77bf0e6a63af07a7bac"
+dependencies = [
+ "serde_core",
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_core"
+version = "1.0.223"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20f57cbd357666aa7b3ac84a90b4ea328f1d4ddb6772b430caa5d9e1309bb9e9"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.223"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d428d07faf17e306e699ec1e91996e5a165ba5d6bce5b5155173e91a8a01a56"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.145"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+ "serde_core",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "slab"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
+
+[[package]]
+name = "smallvec"
+version = "1.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
+
+[[package]]
+name = "socket2"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"
+dependencies = [
+ "libc",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "subtle"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
+
+[[package]]
+name = "syn"
+version = "2.0.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "sync_wrapper"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "system-configuration"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "system-configuration-sys",
+]
+
+[[package]]
+name = "system-configuration-sys"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84fa4d11fadde498443cca10fd3ac23c951f0dc59e080e9f4b93d4df4e4eea53"
+dependencies = [
+ "fastrand",
+ "getrandom 0.3.3",
+ "once_cell",
+ "rustix",
+ "windows-sys 0.61.0",
+]
+
+[[package]]
+name = "test"
+version = "0.0.1"
+dependencies = [
+ "reqwest",
+]
+
+[[package]]
+name = "tinystr"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"
+dependencies = [
+ "displaydoc",
+ "zerovec",
+]
+
+[[package]]
+name = "tokio"
+version = "1.47.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038"
+dependencies = [
+ "backtrace",
+ "bytes",
+ "io-uring",
+ "libc",
+ "mio",
+ "pin-project-lite",
+ "slab",
+ "socket2",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "tokio-native-tls"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
+dependencies = [
+ "native-tls",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.26.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b"
+dependencies = [
+ "rustls",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.7.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "tower"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project-lite",
+ "sync_wrapper",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-http"
+version = "0.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
+dependencies = [
+ "bitflags",
+ "bytes",
+ "futures-util",
+ "http",
+ "http-body",
+ "iri-string",
+ "pin-project-lite",
+ "tower",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
+
+[[package]]
+name = "tower-service"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
+
+[[package]]
+name = "tracing"
+version = "0.1.41"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
+dependencies = [
+ "pin-project-lite",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "try-lock"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d"
+
+[[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
+[[package]]
+name = "url"
+version = "2.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+]
+
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "want"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+dependencies = [
+ "try-lock",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.1+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
+
+[[package]]
+name = "wasi"
+version = "0.14.5+wasi-0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4494f6290a82f5fe584817a676a34b9d6763e8d9d18204009fb31dceca98fd4"
+dependencies = [
+ "wasip2",
+]
+
+[[package]]
+name = "wasip2"
+version = "1.0.0+wasi-0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03fa2761397e5bd52002cd7e73110c71af2109aca4e521a9f40473fe685b0a24"
+dependencies = [
+ "wit-bindgen",
+]
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb"
+dependencies = [
+ "bumpalo",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.51"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ca85039a9b469b38336411d6d6ced91f3fc87109a2a27b0c197663f5144dffe"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "once_cell",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.78"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77e4b637749ff0d92b8fad63aa1f7cff3cbe125fd49c175cd6345e7272638b12"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "windows-link"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
+
+[[package]]
+name = "windows-link"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65"
+
+[[package]]
+name = "windows-registry"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
+dependencies = [
+ "windows-link 0.1.3",
+ "windows-result",
+ "windows-strings",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
+dependencies = [
+ "windows-link 0.1.3",
+]
+
+[[package]]
+name = "windows-strings"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
+dependencies = [
+ "windows-link 0.1.3",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.61.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa"
+dependencies = [
+ "windows-link 0.2.0",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "wit-bindgen"
+version = "0.45.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36"
+
+[[package]]
+name = "writeable"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
+
+[[package]]
+name = "yoke"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
+dependencies = [
+ "serde",
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
+
+[[package]]
+name = "zerotrie"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
diff --git a/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
new file mode 100644
index 00000000000..53cc8606cc8
--- /dev/null
+++ b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
@@ -0,0 +1,78 @@
+#select
+| main.rs:12:22:12:43 | ...::get | main.rs:12:45:12:68 | "http://example.com/api" | main.rs:12:22:12:43 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:12:45:12:68 | "http://example.com/api" | this HTTP URL |
+| main.rs:13:22:13:43 | ...::get | main.rs:13:45:13:73 | "http://api.example.com/data" | main.rs:13:22:13:43 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:13:45:13:73 | "http://api.example.com/data" | this HTTP URL |
+| main.rs:25:21:25:42 | ...::get | main.rs:22:20:22:39 | "http://example.com" | main.rs:25:21:25:42 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:22:20:22:39 | "http://example.com" | this HTTP URL |
+| main.rs:36:30:36:51 | ...::get | main.rs:33:20:33:28 | "http://" | main.rs:36:30:36:51 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:33:20:33:28 | "http://" | this HTTP URL |
+| main.rs:60:21:60:42 | ...::get | main.rs:59:15:59:49 | "http://example.com/sensitive-... | main.rs:60:21:60:42 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:59:15:59:49 | "http://example.com/sensitive-... | this HTTP URL |
+edges
+| main.rs:12:45:12:68 | "http://example.com/api" | main.rs:12:22:12:43 | ...::get | provenance | MaD:1 Sink:MaD:1 |
+| main.rs:13:45:13:73 | "http://api.example.com/data" | main.rs:13:22:13:43 | ...::get | provenance | MaD:1 Sink:MaD:1 |
+| main.rs:22:9:22:16 | base_url | main.rs:24:28:24:53 | MacroExpr | provenance | |
+| main.rs:22:20:22:39 | "http://example.com" | main.rs:22:9:22:16 | base_url | provenance | |
+| main.rs:24:9:24:16 | full_url | main.rs:25:45:25:52 | full_url | provenance | |
+| main.rs:24:20:24:26 | res | main.rs:24:28:24:53 | { ... } | provenance | |
+| main.rs:24:28:24:53 | ...::format(...) | main.rs:24:20:24:26 | res | provenance | |
+| main.rs:24:28:24:53 | ...::must_use(...) | main.rs:24:9:24:16 | full_url | provenance | |
+| main.rs:24:28:24:53 | MacroExpr | main.rs:24:28:24:53 | ...::format(...) | provenance | MaD:2 |
+| main.rs:24:28:24:53 | { ... } | main.rs:24:28:24:53 | ...::must_use(...) | provenance | MaD:3 |
+| main.rs:25:44:25:52 | &full_url [&ref] | main.rs:25:21:25:42 | ...::get | provenance | MaD:1 Sink:MaD:1 |
+| main.rs:25:45:25:52 | full_url | main.rs:25:44:25:52 | &full_url [&ref] | provenance | |
+| main.rs:33:9:33:16 | protocol | main.rs:35:32:35:53 | MacroExpr | provenance | |
+| main.rs:33:20:33:28 | "http://" | main.rs:33:9:33:16 | protocol | provenance | |
+| main.rs:35:9:35:20 | insecure_url | main.rs:36:54:36:65 | insecure_url | provenance | |
+| main.rs:35:24:35:30 | res | main.rs:35:32:35:53 | { ... } | provenance | |
+| main.rs:35:32:35:53 | ...::format(...) | main.rs:35:24:35:30 | res | provenance | |
+| main.rs:35:32:35:53 | ...::must_use(...) | main.rs:35:9:35:20 | insecure_url | provenance | |
+| main.rs:35:32:35:53 | MacroExpr | main.rs:35:32:35:53 | ...::format(...) | provenance | MaD:2 |
+| main.rs:35:32:35:53 | { ... } | main.rs:35:32:35:53 | ...::must_use(...) | provenance | MaD:3 |
+| main.rs:36:53:36:65 | &insecure_url [&ref] | main.rs:36:30:36:51 | ...::get | provenance | MaD:1 Sink:MaD:1 |
+| main.rs:36:54:36:65 | insecure_url | main.rs:36:53:36:65 | &insecure_url [&ref] | provenance | |
+| main.rs:59:9:59:11 | url | main.rs:60:44:60:46 | url | provenance | |
+| main.rs:59:15:59:49 | "http://example.com/sensitive-... | main.rs:59:9:59:11 | url | provenance | |
+| main.rs:60:44:60:46 | url | main.rs:60:21:60:42 | ...::get | provenance | MaD:1 Sink:MaD:1 |
+models
+| 1 | Sink: reqwest::blocking::get; Argument[0]; request-url |
+| 2 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint |
+| 3 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value |
+nodes
+| main.rs:12:22:12:43 | ...::get | semmle.label | ...::get |
+| main.rs:12:45:12:68 | "http://example.com/api" | semmle.label | "http://example.com/api" |
+| main.rs:13:22:13:43 | ...::get | semmle.label | ...::get |
+| main.rs:13:45:13:73 | "http://api.example.com/data" | semmle.label | "http://api.example.com/data" |
+| main.rs:22:9:22:16 | base_url | semmle.label | base_url |
+| main.rs:22:20:22:39 | "http://example.com" | semmle.label | "http://example.com" |
+| main.rs:24:9:24:16 | full_url | semmle.label | full_url |
+| main.rs:24:20:24:26 | res | semmle.label | res |
+| main.rs:24:28:24:53 | ...::format(...) | semmle.label | ...::format(...) |
+| main.rs:24:28:24:53 | ...::must_use(...) | semmle.label | ...::must_use(...) |
+| main.rs:24:28:24:53 | MacroExpr | semmle.label | MacroExpr |
+| main.rs:24:28:24:53 | { ... } | semmle.label | { ... } |
+| main.rs:25:21:25:42 | ...::get | semmle.label | ...::get |
+| main.rs:25:44:25:52 | &full_url [&ref] | semmle.label | &full_url [&ref] |
+| main.rs:25:45:25:52 | full_url | semmle.label | full_url |
+| main.rs:33:9:33:16 | protocol | semmle.label | protocol |
+| main.rs:33:20:33:28 | "http://" | semmle.label | "http://" |
+| main.rs:35:9:35:20 | insecure_url | semmle.label | insecure_url |
+| main.rs:35:24:35:30 | res | semmle.label | res |
+| main.rs:35:32:35:53 | ...::format(...) | semmle.label | ...::format(...) |
+| main.rs:35:32:35:53 | ...::must_use(...) | semmle.label | ...::must_use(...) |
+| main.rs:35:32:35:53 | MacroExpr | semmle.label | MacroExpr |
+| main.rs:35:32:35:53 | { ... } | semmle.label | { ... } |
+| main.rs:36:30:36:51 | ...::get | semmle.label | ...::get |
+| main.rs:36:53:36:65 | &insecure_url [&ref] | semmle.label | &insecure_url [&ref] |
+| main.rs:36:54:36:65 | insecure_url | semmle.label | insecure_url |
+| main.rs:59:9:59:11 | url | semmle.label | url |
+| main.rs:59:15:59:49 | "http://example.com/sensitive-... | semmle.label | "http://example.com/sensitive-... |
+| main.rs:60:21:60:42 | ...::get | semmle.label | ...::get |
+| main.rs:60:44:60:46 | url | semmle.label | url |
+subpaths
+testFailures
+| main.rs:22:20:22:39 | "http://example.com" | Unexpected result: Source |
+| main.rs:22:42:22:71 | //... | Missing result: Alert[rust/non-https-url] |
+| main.rs:25:21:25:42 | ...::get | Unexpected result: Alert |
+| main.rs:33:20:33:28 | "http://" | Unexpected result: Source |
+| main.rs:33:31:33:60 | //... | Missing result: Alert[rust/non-https-url] |
+| main.rs:36:30:36:51 | ...::get | Unexpected result: Alert |
+| main.rs:59:15:59:49 | "http://example.com/sensitive-... | Unexpected result: Source |
+| main.rs:59:52:59:81 | //... | Missing result: Alert[rust/non-https-url] |
+| main.rs:60:21:60:42 | ...::get | Unexpected result: Alert |
diff --git a/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.qlref b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.qlref
new file mode 100644
index 00000000000..90b53330019
--- /dev/null
+++ b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.qlref
@@ -0,0 +1,4 @@
+query: queries/security/CWE-319/UseOfHttp.ql
+postprocess:
+ - utils/test/PrettyPrintModels.ql
+ - utils/test/InlineExpectationsTestQuery.ql
\ No newline at end of file
diff --git a/rust/ql/test/query-tests/security/CWE-319/main.rs b/rust/ql/test/query-tests/security/CWE-319/main.rs
new file mode 100644
index 00000000000..ae58967a49b
--- /dev/null
+++ b/rust/ql/test/query-tests/security/CWE-319/main.rs
@@ -0,0 +1,65 @@
+use reqwest;
+use std::env;
+
+fn main() {
+ test_direct_literals();
+ test_dynamic_urls();
+ test_localhost_exemptions();
+}
+
+fn test_direct_literals() {
+ // BAD: Direct HTTP URLs that should be flagged
+ let _response1 = reqwest::blocking::get("http://example.com/api").unwrap(); // $ Alert[rust/non-https-url]
+ let _response2 = reqwest::blocking::get("http://api.example.com/data").unwrap(); // $ Alert[rust/non-https-url]
+
+ // GOOD: HTTPS URLs that should not be flagged
+ let _response3 = reqwest::blocking::get("https://example.com/api").unwrap();
+ let _response4 = reqwest::blocking::get("https://api.example.com/data").unwrap();
+}
+
+fn test_dynamic_urls() {
+ // BAD: HTTP URLs constructed dynamically
+ let base_url = "http://example.com"; // $ Alert[rust/non-https-url]
+ let endpoint = "/api/users";
+ let full_url = format!("{}{}", base_url, endpoint);
+ let _response = reqwest::blocking::get(&full_url).unwrap();
+
+ // GOOD: HTTPS URLs constructed dynamically
+ let secure_base = "https://example.com";
+ let secure_full = format!("{}{}", secure_base, endpoint);
+ let _secure_response = reqwest::blocking::get(&secure_full).unwrap();
+
+ // BAD: HTTP protocol string
+ let protocol = "http://"; // $ Alert[rust/non-https-url]
+ let host = "api.example.com";
+ let insecure_url = format!("{}{}", protocol, host);
+ let _insecure_response = reqwest::blocking::get(&insecure_url).unwrap();
+
+ // GOOD: HTTPS protocol string
+ let secure_protocol = "https://";
+ let secure_url = format!("{}{}", secure_protocol, host);
+ let _secure_response2 = reqwest::blocking::get(&secure_url).unwrap();
+}
+
+fn test_localhost_exemptions() {
+ // GOOD: localhost URLs should not be flagged (local development)
+ let _local1 = reqwest::blocking::get("http://localhost:8080/api").unwrap();
+ let _local2 = reqwest::blocking::get("http://127.0.0.1:3000/test").unwrap();
+ let _local3 = reqwest::blocking::get("http://192.168.1.100/internal").unwrap();
+ let _local4 = reqwest::blocking::get("http://10.0.0.1/admin").unwrap();
+
+ // Test IPv6 localhost variants
+ let _local5 = reqwest::blocking::get("http://[::1]:8080/api").unwrap();
+ let _local6 = reqwest::blocking::get("http://[0:0:0:0:0:0:0:1]/test").unwrap();
+}
+
+// Additional test cases that mirror the Bad/Good examples
+fn test_examples() {
+ // From UseOfHttpBad.rs - BAD case
+ let url = "http://example.com/sensitive-data"; // $ Alert[rust/non-https-url]
+ let _response = reqwest::blocking::get(url).unwrap();
+
+ // From UseOfHttpGood.rs - GOOD case
+ let secure_url = "https://example.com/sensitive-data";
+ let _secure_response = reqwest::blocking::get(secure_url).unwrap();
+}
\ No newline at end of file
diff --git a/rust/ql/test/query-tests/security/CWE-319/options.yml b/rust/ql/test/query-tests/security/CWE-319/options.yml
new file mode 100644
index 00000000000..aa57719603d
--- /dev/null
+++ b/rust/ql/test/query-tests/security/CWE-319/options.yml
@@ -0,0 +1,3 @@
+qltest_cargo_check: true
+qltest_dependencies:
+ - reqwest = { version = "0.12.9", features = ["blocking"] }
\ No newline at end of file
From 8442146a0fe0ec65aa9649a746045d8a209560d4 Mon Sep 17 00:00:00 2001
From: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
Date: Mon, 15 Sep 2025 16:40:58 +0100
Subject: [PATCH 14/49] Rust: Add a couple of simple data flow test cases.
---
.../dataflow/local/DataFlowStep.expected | 2041 +++++++++--------
.../dataflow/local/inline-flow.expected | 1051 ++++-----
.../test/library-tests/dataflow/local/main.rs | 12 +
3 files changed, 1573 insertions(+), 1531 deletions(-)
diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected
index 86bd270ba93..b395948f420 100644
--- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected
+++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected
@@ -97,1031 +97,1050 @@ localStep
| main.rs:70:5:70:5 | [SSA] i | main.rs:71:10:71:10 | i |
| main.rs:70:5:70:5 | i | main.rs:70:5:70:5 | [SSA] i |
| main.rs:70:9:70:17 | source(...) | main.rs:70:5:70:5 | i |
-| main.rs:75:9:75:9 | [SSA] a | main.rs:76:5:76:5 | a |
-| main.rs:75:9:75:9 | a | main.rs:75:9:75:9 | [SSA] a |
-| main.rs:75:9:75:9 | a | main.rs:75:9:75:9 | a |
-| main.rs:75:13:75:17 | { ... } | main.rs:75:9:75:9 | a |
-| main.rs:75:15:75:15 | 0 | main.rs:75:13:75:17 | { ... } |
-| main.rs:76:5:76:5 | a | main.rs:74:31:77:1 | { ... } |
-| main.rs:79:22:79:22 | [SSA] b | main.rs:81:12:81:12 | b |
-| main.rs:79:22:79:22 | b | main.rs:79:22:79:22 | [SSA] b |
-| main.rs:79:22:79:22 | b | main.rs:79:22:79:22 | b |
-| main.rs:79:22:79:28 | ...: bool | main.rs:79:22:79:22 | b |
-| main.rs:80:9:80:9 | [SSA] a | main.rs:86:5:86:5 | a |
-| main.rs:80:9:80:9 | a | main.rs:80:9:80:9 | [SSA] a |
-| main.rs:80:9:80:9 | a | main.rs:80:9:80:9 | a |
-| main.rs:80:13:85:5 | 'block: { ... } | main.rs:80:9:80:9 | a |
-| main.rs:82:13:82:26 | break 'block 1 | main.rs:80:13:85:5 | 'block: { ... } |
-| main.rs:82:26:82:26 | 1 | main.rs:82:13:82:26 | break 'block 1 |
-| main.rs:84:9:84:9 | 2 | main.rs:80:13:85:5 | 'block: { ... } |
-| main.rs:86:5:86:5 | a | main.rs:79:38:87:1 | { ... } |
-| main.rs:89:22:89:22 | [SSA] b | main.rs:91:12:91:12 | b |
-| main.rs:89:22:89:22 | b | main.rs:89:22:89:22 | [SSA] b |
-| main.rs:89:22:89:22 | b | main.rs:89:22:89:22 | b |
-| main.rs:89:22:89:28 | ...: bool | main.rs:89:22:89:22 | b |
-| main.rs:90:9:90:9 | [SSA] a | main.rs:96:5:96:5 | a |
-| main.rs:90:9:90:9 | a | main.rs:90:9:90:9 | [SSA] a |
-| main.rs:90:9:90:9 | a | main.rs:90:9:90:9 | a |
-| main.rs:90:13:95:5 | 'block: { ... } | main.rs:90:9:90:9 | a |
-| main.rs:92:13:92:26 | break 'block 1 | main.rs:90:13:95:5 | 'block: { ... } |
-| main.rs:92:26:92:26 | 1 | main.rs:92:13:92:26 | break 'block 1 |
-| main.rs:94:9:94:22 | break 'block 2 | main.rs:90:13:95:5 | 'block: { ... } |
-| main.rs:94:22:94:22 | 2 | main.rs:94:9:94:22 | break 'block 2 |
-| main.rs:96:5:96:5 | a | main.rs:89:38:97:1 | { ... } |
-| main.rs:103:9:103:9 | [SSA] i | main.rs:104:11:104:11 | i |
-| main.rs:103:9:103:9 | i | main.rs:103:9:103:9 | [SSA] i |
-| main.rs:103:9:103:9 | i | main.rs:103:9:103:9 | i |
-| main.rs:103:13:103:31 | ...::new(...) | main.rs:103:9:103:9 | i |
-| main.rs:104:11:104:11 | [post] receiver for i | main.rs:104:11:104:11 | [post] i |
-| main.rs:104:11:104:11 | i | main.rs:104:11:104:11 | receiver for i |
-| main.rs:111:9:111:9 | [SSA] a | main.rs:112:10:112:10 | a |
-| main.rs:111:9:111:9 | a | main.rs:111:9:111:9 | [SSA] a |
-| main.rs:111:9:111:9 | a | main.rs:111:9:111:9 | a |
-| main.rs:111:13:111:26 | TupleExpr | main.rs:111:9:111:9 | a |
-| main.rs:112:10:112:10 | [post] a | main.rs:113:10:113:10 | a |
-| main.rs:112:10:112:10 | a | main.rs:113:10:113:10 | a |
-| main.rs:117:9:117:9 | [SSA] a | main.rs:118:24:118:24 | a |
-| main.rs:117:9:117:9 | a | main.rs:117:9:117:9 | [SSA] a |
-| main.rs:117:9:117:9 | a | main.rs:117:9:117:9 | a |
-| main.rs:117:13:117:30 | TupleExpr | main.rs:117:9:117:9 | a |
-| main.rs:118:10:118:11 | [SSA] a0 | main.rs:119:10:119:11 | a0 |
-| main.rs:118:10:118:11 | a0 | main.rs:118:10:118:11 | [SSA] a0 |
-| main.rs:118:10:118:11 | a0 | main.rs:118:10:118:11 | a0 |
-| main.rs:118:14:118:15 | [SSA] a1 | main.rs:120:10:120:11 | a1 |
-| main.rs:118:14:118:15 | a1 | main.rs:118:14:118:15 | [SSA] a1 |
-| main.rs:118:14:118:15 | a1 | main.rs:118:14:118:15 | a1 |
-| main.rs:118:18:118:19 | [SSA] a2 | main.rs:121:10:121:11 | a2 |
-| main.rs:118:18:118:19 | a2 | main.rs:118:18:118:19 | [SSA] a2 |
-| main.rs:118:18:118:19 | a2 | main.rs:118:18:118:19 | a2 |
-| main.rs:118:24:118:24 | a | main.rs:118:9:118:20 | TuplePat |
-| main.rs:125:9:125:13 | mut a | main.rs:125:13:125:13 | a |
-| main.rs:125:13:125:13 | [SSA] a | main.rs:126:10:126:10 | a |
-| main.rs:125:13:125:13 | a | main.rs:125:13:125:13 | [SSA] a |
-| main.rs:125:17:125:31 | TupleExpr | main.rs:125:9:125:13 | mut a |
-| main.rs:126:10:126:10 | [post] a | main.rs:127:10:127:10 | a |
-| main.rs:126:10:126:10 | a | main.rs:127:10:127:10 | a |
-| main.rs:127:10:127:10 | [post] a | main.rs:128:5:128:5 | a |
-| main.rs:127:10:127:10 | a | main.rs:128:5:128:5 | a |
-| main.rs:128:5:128:5 | [post] a | main.rs:129:5:129:5 | a |
-| main.rs:128:5:128:5 | a | main.rs:129:5:129:5 | a |
-| main.rs:128:11:128:20 | source(...) | main.rs:128:5:128:7 | a.0 |
-| main.rs:129:5:129:5 | [post] a | main.rs:130:10:130:10 | a |
-| main.rs:129:5:129:5 | a | main.rs:130:10:130:10 | a |
-| main.rs:129:11:129:11 | 2 | main.rs:129:5:129:7 | a.1 |
-| main.rs:130:10:130:10 | [post] a | main.rs:131:10:131:10 | a |
-| main.rs:130:10:130:10 | a | main.rs:131:10:131:10 | a |
-| main.rs:135:9:135:9 | [SSA] a | main.rs:136:14:136:14 | a |
-| main.rs:135:9:135:9 | a | main.rs:135:9:135:9 | [SSA] a |
-| main.rs:135:9:135:9 | a | main.rs:135:9:135:9 | a |
-| main.rs:135:13:135:27 | TupleExpr | main.rs:135:9:135:9 | a |
-| main.rs:136:9:136:9 | [SSA] b | main.rs:137:10:137:10 | b |
-| main.rs:136:9:136:9 | b | main.rs:136:9:136:9 | [SSA] b |
-| main.rs:136:9:136:9 | b | main.rs:136:9:136:9 | b |
-| main.rs:136:13:136:18 | TupleExpr | main.rs:136:9:136:9 | b |
-| main.rs:137:10:137:10 | [post] b | main.rs:138:10:138:10 | b |
-| main.rs:137:10:137:10 | b | main.rs:138:10:138:10 | b |
-| main.rs:138:10:138:10 | [post] b | main.rs:139:10:139:10 | b |
-| main.rs:138:10:138:10 | b | main.rs:139:10:139:10 | b |
-| main.rs:151:9:151:9 | [SSA] p | main.rs:152:10:152:10 | p |
-| main.rs:151:9:151:9 | p | main.rs:151:9:151:9 | [SSA] p |
-| main.rs:151:9:151:9 | p | main.rs:151:9:151:9 | p |
-| main.rs:151:13:151:40 | Point {...} | main.rs:151:9:151:9 | p |
-| main.rs:152:10:152:10 | [post] p | main.rs:153:10:153:10 | p |
-| main.rs:152:10:152:10 | p | main.rs:153:10:153:10 | p |
-| main.rs:157:9:157:13 | mut p | main.rs:157:13:157:13 | p |
-| main.rs:157:13:157:13 | [SSA] p | main.rs:158:10:158:10 | p |
-| main.rs:157:13:157:13 | p | main.rs:157:13:157:13 | [SSA] p |
-| main.rs:157:17:157:44 | Point {...} | main.rs:157:9:157:13 | mut p |
-| main.rs:158:10:158:10 | [post] p | main.rs:159:5:159:5 | p |
-| main.rs:158:10:158:10 | p | main.rs:159:5:159:5 | p |
-| main.rs:159:5:159:5 | [post] p | main.rs:160:10:160:10 | p |
-| main.rs:159:5:159:5 | p | main.rs:160:10:160:10 | p |
-| main.rs:159:11:159:20 | source(...) | main.rs:159:5:159:7 | p.y |
-| main.rs:164:9:164:9 | [SSA] p | main.rs:168:32:168:32 | p |
-| main.rs:164:9:164:9 | p | main.rs:164:9:164:9 | [SSA] p |
-| main.rs:164:9:164:9 | p | main.rs:164:9:164:9 | p |
-| main.rs:164:13:167:5 | Point {...} | main.rs:164:9:164:9 | p |
-| main.rs:168:20:168:20 | [SSA] a | main.rs:169:10:169:10 | a |
-| main.rs:168:20:168:20 | a | main.rs:168:20:168:20 | [SSA] a |
-| main.rs:168:20:168:20 | a | main.rs:168:20:168:20 | a |
-| main.rs:168:26:168:26 | [SSA] b | main.rs:170:10:170:10 | b |
-| main.rs:168:26:168:26 | b | main.rs:168:26:168:26 | [SSA] b |
-| main.rs:168:26:168:26 | b | main.rs:168:26:168:26 | b |
-| main.rs:168:32:168:32 | p | main.rs:168:9:168:28 | Point {...} |
-| main.rs:179:9:179:9 | [SSA] p | main.rs:186:10:186:10 | p |
-| main.rs:179:9:179:9 | p | main.rs:179:9:179:9 | [SSA] p |
-| main.rs:179:9:179:9 | p | main.rs:179:9:179:9 | p |
-| main.rs:179:13:185:5 | Point3D {...} | main.rs:179:9:179:9 | p |
-| main.rs:186:10:186:10 | [post] p | main.rs:187:10:187:10 | p |
-| main.rs:186:10:186:10 | p | main.rs:187:10:187:10 | p |
-| main.rs:187:10:187:10 | [post] p | main.rs:188:10:188:10 | p |
-| main.rs:187:10:187:10 | p | main.rs:188:10:188:10 | p |
-| main.rs:192:9:192:9 | [SSA] y | main.rs:194:30:194:30 | y |
-| main.rs:192:9:192:9 | y | main.rs:192:9:192:9 | [SSA] y |
-| main.rs:192:9:192:9 | y | main.rs:192:9:192:9 | y |
-| main.rs:192:13:192:22 | source(...) | main.rs:192:9:192:9 | y |
-| main.rs:193:9:193:9 | [SSA] p | main.rs:197:11:197:11 | p |
-| main.rs:193:9:193:9 | p | main.rs:193:9:193:9 | [SSA] p |
-| main.rs:193:9:193:9 | p | main.rs:193:9:193:9 | p |
-| main.rs:193:13:196:5 | Point3D {...} | main.rs:193:9:193:9 | p |
-| main.rs:197:5:206:5 | match p { ... } | main.rs:191:26:207:1 | { ... } |
-| main.rs:197:11:197:11 | p | main.rs:198:9:201:9 | Point3D {...} |
-| main.rs:199:28:199:28 | [SSA] x | main.rs:202:18:202:18 | x |
-| main.rs:199:28:199:28 | x | main.rs:199:28:199:28 | [SSA] x |
-| main.rs:199:28:199:28 | x | main.rs:199:28:199:28 | x |
-| main.rs:199:31:199:31 | [SSA] y | main.rs:203:18:203:18 | y |
-| main.rs:199:31:199:31 | y | main.rs:199:31:199:31 | [SSA] y |
-| main.rs:199:31:199:31 | y | main.rs:199:31:199:31 | y |
-| main.rs:200:13:200:13 | [SSA] z | main.rs:204:18:204:18 | z |
-| main.rs:200:13:200:13 | z | main.rs:200:13:200:13 | [SSA] z |
-| main.rs:200:13:200:13 | z | main.rs:200:13:200:13 | z |
-| main.rs:201:14:205:9 | { ... } | main.rs:197:5:206:5 | match p { ... } |
-| main.rs:212:9:212:9 | [SSA] s | main.rs:213:10:213:10 | s |
-| main.rs:212:9:212:9 | s | main.rs:212:9:212:9 | [SSA] s |
-| main.rs:212:9:212:9 | s | main.rs:212:9:212:9 | s |
-| main.rs:212:13:212:40 | MyTupleStruct(...) | main.rs:212:9:212:9 | s |
-| main.rs:213:10:213:10 | [post] s | main.rs:214:10:214:10 | s |
-| main.rs:213:10:213:10 | s | main.rs:214:10:214:10 | s |
-| main.rs:214:10:214:10 | [post] s | main.rs:216:11:216:11 | s |
-| main.rs:214:10:214:10 | s | main.rs:216:11:216:11 | s |
-| main.rs:216:5:221:5 | match s { ... } | main.rs:211:19:222:1 | { ... } |
-| main.rs:216:11:216:11 | s | main.rs:217:9:217:27 | MyTupleStruct(...) |
-| main.rs:217:23:217:23 | [SSA] x | main.rs:218:18:218:18 | x |
-| main.rs:217:23:217:23 | x | main.rs:217:23:217:23 | [SSA] x |
-| main.rs:217:23:217:23 | x | main.rs:217:23:217:23 | x |
-| main.rs:217:26:217:26 | [SSA] y | main.rs:219:18:219:18 | y |
-| main.rs:217:26:217:26 | y | main.rs:217:26:217:26 | [SSA] y |
-| main.rs:217:26:217:26 | y | main.rs:217:26:217:26 | y |
-| main.rs:217:32:220:9 | { ... } | main.rs:216:5:221:5 | match s { ... } |
-| main.rs:228:9:228:10 | [SSA] s1 | main.rs:230:11:230:12 | s1 |
-| main.rs:228:9:228:10 | s1 | main.rs:228:9:228:10 | [SSA] s1 |
-| main.rs:228:9:228:10 | s1 | main.rs:228:9:228:10 | s1 |
-| main.rs:228:14:228:37 | ...::Some(...) | main.rs:228:9:228:10 | s1 |
-| main.rs:229:9:229:10 | [SSA] s2 | main.rs:234:11:234:12 | s2 |
-| main.rs:229:9:229:10 | s2 | main.rs:229:9:229:10 | [SSA] s2 |
-| main.rs:229:9:229:10 | s2 | main.rs:229:9:229:10 | s2 |
-| main.rs:229:14:229:28 | ...::Some(...) | main.rs:229:9:229:10 | s2 |
-| main.rs:230:11:230:12 | s1 | main.rs:231:9:231:23 | ...::Some(...) |
-| main.rs:230:11:230:12 | s1 | main.rs:232:9:232:20 | ...::None |
-| main.rs:231:22:231:22 | [SSA] n | main.rs:231:33:231:33 | n |
-| main.rs:231:22:231:22 | n | main.rs:231:22:231:22 | [SSA] n |
-| main.rs:231:22:231:22 | n | main.rs:231:22:231:22 | n |
-| main.rs:231:28:231:34 | sink(...) | main.rs:230:5:233:5 | match s1 { ... } |
-| main.rs:232:25:232:31 | sink(...) | main.rs:230:5:233:5 | match s1 { ... } |
-| main.rs:234:5:237:5 | match s2 { ... } | main.rs:227:37:238:1 | { ... } |
-| main.rs:234:11:234:12 | s2 | main.rs:235:9:235:23 | ...::Some(...) |
-| main.rs:234:11:234:12 | s2 | main.rs:236:9:236:20 | ...::None |
-| main.rs:235:22:235:22 | [SSA] n | main.rs:235:33:235:33 | n |
-| main.rs:235:22:235:22 | n | main.rs:235:22:235:22 | [SSA] n |
-| main.rs:235:22:235:22 | n | main.rs:235:22:235:22 | n |
-| main.rs:235:28:235:34 | sink(...) | main.rs:234:5:237:5 | match s2 { ... } |
-| main.rs:236:25:236:31 | sink(...) | main.rs:234:5:237:5 | match s2 { ... } |
-| main.rs:241:9:241:10 | [SSA] s1 | main.rs:243:11:243:12 | s1 |
-| main.rs:241:9:241:10 | s1 | main.rs:241:9:241:10 | [SSA] s1 |
-| main.rs:241:9:241:10 | s1 | main.rs:241:9:241:10 | s1 |
-| main.rs:241:14:241:29 | Some(...) | main.rs:241:9:241:10 | s1 |
-| main.rs:242:9:242:10 | [SSA] s2 | main.rs:247:11:247:12 | s2 |
-| main.rs:242:9:242:10 | s2 | main.rs:242:9:242:10 | [SSA] s2 |
-| main.rs:242:9:242:10 | s2 | main.rs:242:9:242:10 | s2 |
-| main.rs:242:14:242:20 | Some(...) | main.rs:242:9:242:10 | s2 |
-| main.rs:243:11:243:12 | s1 | main.rs:244:9:244:15 | Some(...) |
-| main.rs:243:11:243:12 | s1 | main.rs:245:9:245:12 | None |
-| main.rs:244:14:244:14 | [SSA] n | main.rs:244:25:244:25 | n |
-| main.rs:244:14:244:14 | n | main.rs:244:14:244:14 | [SSA] n |
-| main.rs:244:14:244:14 | n | main.rs:244:14:244:14 | n |
-| main.rs:244:20:244:26 | sink(...) | main.rs:243:5:246:5 | match s1 { ... } |
-| main.rs:245:17:245:23 | sink(...) | main.rs:243:5:246:5 | match s1 { ... } |
-| main.rs:247:5:250:5 | match s2 { ... } | main.rs:240:39:251:1 | { ... } |
-| main.rs:247:11:247:12 | s2 | main.rs:248:9:248:15 | Some(...) |
-| main.rs:247:11:247:12 | s2 | main.rs:249:9:249:12 | None |
-| main.rs:248:14:248:14 | [SSA] n | main.rs:248:25:248:25 | n |
-| main.rs:248:14:248:14 | n | main.rs:248:14:248:14 | [SSA] n |
-| main.rs:248:14:248:14 | n | main.rs:248:14:248:14 | n |
-| main.rs:248:20:248:26 | sink(...) | main.rs:247:5:250:5 | match s2 { ... } |
-| main.rs:249:17:249:23 | sink(...) | main.rs:247:5:250:5 | match s2 { ... } |
-| main.rs:254:9:254:10 | [SSA] s1 | main.rs:255:22:255:23 | s1 |
-| main.rs:254:9:254:10 | s1 | main.rs:254:9:254:10 | [SSA] s1 |
-| main.rs:254:9:254:10 | s1 | main.rs:254:9:254:10 | s1 |
-| main.rs:254:14:254:29 | Some(...) | main.rs:254:9:254:10 | s1 |
-| main.rs:255:5:262:5 | if ... {...} | main.rs:253:25:263:1 | { ... } |
-| main.rs:255:17:255:17 | [SSA] n | main.rs:257:18:257:18 | n |
-| main.rs:255:17:255:17 | n | main.rs:255:17:255:17 | [SSA] n |
-| main.rs:255:17:255:17 | n | main.rs:255:17:255:17 | n |
-| main.rs:255:22:255:23 | s1 | main.rs:255:12:255:18 | Some(...) |
-| main.rs:257:18:257:18 | [post] n | main.rs:261:14:261:14 | n |
-| main.rs:257:18:257:18 | n | main.rs:261:14:261:14 | n |
-| main.rs:258:13:258:16 | true | main.rs:256:12:259:9 | { ... } |
-| main.rs:260:5:262:5 | { ... } | main.rs:255:5:262:5 | if ... {...} |
-| main.rs:266:9:266:10 | [SSA] s1 | main.rs:267:10:267:11 | s1 |
+| main.rs:72:5:72:5 | [SSA] i | main.rs:73:10:73:10 | i |
+| main.rs:72:5:72:5 | i | main.rs:72:5:72:5 | [SSA] i |
+| main.rs:72:9:72:9 | 2 | main.rs:72:5:72:5 | i |
+| main.rs:75:9:75:13 | mut j | main.rs:75:13:75:13 | j |
+| main.rs:75:17:75:17 | 3 | main.rs:75:9:75:13 | mut j |
+| main.rs:76:9:76:9 | [SSA] k | main.rs:77:9:77:9 | k |
+| main.rs:76:9:76:9 | k | main.rs:76:9:76:9 | [SSA] k |
+| main.rs:76:9:76:9 | k | main.rs:76:9:76:9 | k |
+| main.rs:76:13:76:21 | source(...) | main.rs:76:9:76:9 | k |
+| main.rs:77:5:77:5 | [SSA] j | main.rs:78:10:78:10 | j |
+| main.rs:77:5:77:5 | j | main.rs:77:5:77:5 | [SSA] j |
+| main.rs:77:9:77:9 | k | main.rs:77:5:77:5 | j |
+| main.rs:77:9:77:9 | k | main.rs:79:10:79:10 | k |
+| main.rs:81:9:81:13 | mut l | main.rs:81:13:81:13 | l |
+| main.rs:81:17:81:25 | source(...) | main.rs:81:9:81:13 | mut l |
+| main.rs:82:5:82:5 | [SSA] l | main.rs:82:9:82:9 | l |
+| main.rs:82:5:82:5 | l | main.rs:82:5:82:5 | [SSA] l |
+| main.rs:82:9:82:9 | l | main.rs:82:5:82:5 | l |
+| main.rs:82:9:82:9 | l | main.rs:83:10:83:10 | l |
+| main.rs:87:9:87:9 | [SSA] a | main.rs:88:5:88:5 | a |
+| main.rs:87:9:87:9 | a | main.rs:87:9:87:9 | [SSA] a |
+| main.rs:87:9:87:9 | a | main.rs:87:9:87:9 | a |
+| main.rs:87:13:87:17 | { ... } | main.rs:87:9:87:9 | a |
+| main.rs:87:15:87:15 | 0 | main.rs:87:13:87:17 | { ... } |
+| main.rs:88:5:88:5 | a | main.rs:86:31:89:1 | { ... } |
+| main.rs:91:22:91:22 | [SSA] b | main.rs:93:12:93:12 | b |
+| main.rs:91:22:91:22 | b | main.rs:91:22:91:22 | [SSA] b |
+| main.rs:91:22:91:22 | b | main.rs:91:22:91:22 | b |
+| main.rs:91:22:91:28 | ...: bool | main.rs:91:22:91:22 | b |
+| main.rs:92:9:92:9 | [SSA] a | main.rs:98:5:98:5 | a |
+| main.rs:92:9:92:9 | a | main.rs:92:9:92:9 | [SSA] a |
+| main.rs:92:9:92:9 | a | main.rs:92:9:92:9 | a |
+| main.rs:92:13:97:5 | 'block: { ... } | main.rs:92:9:92:9 | a |
+| main.rs:94:13:94:26 | break 'block 1 | main.rs:92:13:97:5 | 'block: { ... } |
+| main.rs:94:26:94:26 | 1 | main.rs:94:13:94:26 | break 'block 1 |
+| main.rs:96:9:96:9 | 2 | main.rs:92:13:97:5 | 'block: { ... } |
+| main.rs:98:5:98:5 | a | main.rs:91:38:99:1 | { ... } |
+| main.rs:101:22:101:22 | [SSA] b | main.rs:103:12:103:12 | b |
+| main.rs:101:22:101:22 | b | main.rs:101:22:101:22 | [SSA] b |
+| main.rs:101:22:101:22 | b | main.rs:101:22:101:22 | b |
+| main.rs:101:22:101:28 | ...: bool | main.rs:101:22:101:22 | b |
+| main.rs:102:9:102:9 | [SSA] a | main.rs:108:5:108:5 | a |
+| main.rs:102:9:102:9 | a | main.rs:102:9:102:9 | [SSA] a |
+| main.rs:102:9:102:9 | a | main.rs:102:9:102:9 | a |
+| main.rs:102:13:107:5 | 'block: { ... } | main.rs:102:9:102:9 | a |
+| main.rs:104:13:104:26 | break 'block 1 | main.rs:102:13:107:5 | 'block: { ... } |
+| main.rs:104:26:104:26 | 1 | main.rs:104:13:104:26 | break 'block 1 |
+| main.rs:106:9:106:22 | break 'block 2 | main.rs:102:13:107:5 | 'block: { ... } |
+| main.rs:106:22:106:22 | 2 | main.rs:106:9:106:22 | break 'block 2 |
+| main.rs:108:5:108:5 | a | main.rs:101:38:109:1 | { ... } |
+| main.rs:115:9:115:9 | [SSA] i | main.rs:116:11:116:11 | i |
+| main.rs:115:9:115:9 | i | main.rs:115:9:115:9 | [SSA] i |
+| main.rs:115:9:115:9 | i | main.rs:115:9:115:9 | i |
+| main.rs:115:13:115:31 | ...::new(...) | main.rs:115:9:115:9 | i |
+| main.rs:116:11:116:11 | [post] receiver for i | main.rs:116:11:116:11 | [post] i |
+| main.rs:116:11:116:11 | i | main.rs:116:11:116:11 | receiver for i |
+| main.rs:123:9:123:9 | [SSA] a | main.rs:124:10:124:10 | a |
+| main.rs:123:9:123:9 | a | main.rs:123:9:123:9 | [SSA] a |
+| main.rs:123:9:123:9 | a | main.rs:123:9:123:9 | a |
+| main.rs:123:13:123:26 | TupleExpr | main.rs:123:9:123:9 | a |
+| main.rs:124:10:124:10 | [post] a | main.rs:125:10:125:10 | a |
+| main.rs:124:10:124:10 | a | main.rs:125:10:125:10 | a |
+| main.rs:129:9:129:9 | [SSA] a | main.rs:130:24:130:24 | a |
+| main.rs:129:9:129:9 | a | main.rs:129:9:129:9 | [SSA] a |
+| main.rs:129:9:129:9 | a | main.rs:129:9:129:9 | a |
+| main.rs:129:13:129:30 | TupleExpr | main.rs:129:9:129:9 | a |
+| main.rs:130:10:130:11 | [SSA] a0 | main.rs:131:10:131:11 | a0 |
+| main.rs:130:10:130:11 | a0 | main.rs:130:10:130:11 | [SSA] a0 |
+| main.rs:130:10:130:11 | a0 | main.rs:130:10:130:11 | a0 |
+| main.rs:130:14:130:15 | [SSA] a1 | main.rs:132:10:132:11 | a1 |
+| main.rs:130:14:130:15 | a1 | main.rs:130:14:130:15 | [SSA] a1 |
+| main.rs:130:14:130:15 | a1 | main.rs:130:14:130:15 | a1 |
+| main.rs:130:18:130:19 | [SSA] a2 | main.rs:133:10:133:11 | a2 |
+| main.rs:130:18:130:19 | a2 | main.rs:130:18:130:19 | [SSA] a2 |
+| main.rs:130:18:130:19 | a2 | main.rs:130:18:130:19 | a2 |
+| main.rs:130:24:130:24 | a | main.rs:130:9:130:20 | TuplePat |
+| main.rs:137:9:137:13 | mut a | main.rs:137:13:137:13 | a |
+| main.rs:137:13:137:13 | [SSA] a | main.rs:138:10:138:10 | a |
+| main.rs:137:13:137:13 | a | main.rs:137:13:137:13 | [SSA] a |
+| main.rs:137:17:137:31 | TupleExpr | main.rs:137:9:137:13 | mut a |
+| main.rs:138:10:138:10 | [post] a | main.rs:139:10:139:10 | a |
+| main.rs:138:10:138:10 | a | main.rs:139:10:139:10 | a |
+| main.rs:139:10:139:10 | [post] a | main.rs:140:5:140:5 | a |
+| main.rs:139:10:139:10 | a | main.rs:140:5:140:5 | a |
+| main.rs:140:5:140:5 | [post] a | main.rs:141:5:141:5 | a |
+| main.rs:140:5:140:5 | a | main.rs:141:5:141:5 | a |
+| main.rs:140:11:140:20 | source(...) | main.rs:140:5:140:7 | a.0 |
+| main.rs:141:5:141:5 | [post] a | main.rs:142:10:142:10 | a |
+| main.rs:141:5:141:5 | a | main.rs:142:10:142:10 | a |
+| main.rs:141:11:141:11 | 2 | main.rs:141:5:141:7 | a.1 |
+| main.rs:142:10:142:10 | [post] a | main.rs:143:10:143:10 | a |
+| main.rs:142:10:142:10 | a | main.rs:143:10:143:10 | a |
+| main.rs:147:9:147:9 | [SSA] a | main.rs:148:14:148:14 | a |
+| main.rs:147:9:147:9 | a | main.rs:147:9:147:9 | [SSA] a |
+| main.rs:147:9:147:9 | a | main.rs:147:9:147:9 | a |
+| main.rs:147:13:147:27 | TupleExpr | main.rs:147:9:147:9 | a |
+| main.rs:148:9:148:9 | [SSA] b | main.rs:149:10:149:10 | b |
+| main.rs:148:9:148:9 | b | main.rs:148:9:148:9 | [SSA] b |
+| main.rs:148:9:148:9 | b | main.rs:148:9:148:9 | b |
+| main.rs:148:13:148:18 | TupleExpr | main.rs:148:9:148:9 | b |
+| main.rs:149:10:149:10 | [post] b | main.rs:150:10:150:10 | b |
+| main.rs:149:10:149:10 | b | main.rs:150:10:150:10 | b |
+| main.rs:150:10:150:10 | [post] b | main.rs:151:10:151:10 | b |
+| main.rs:150:10:150:10 | b | main.rs:151:10:151:10 | b |
+| main.rs:163:9:163:9 | [SSA] p | main.rs:164:10:164:10 | p |
+| main.rs:163:9:163:9 | p | main.rs:163:9:163:9 | [SSA] p |
+| main.rs:163:9:163:9 | p | main.rs:163:9:163:9 | p |
+| main.rs:163:13:163:40 | Point {...} | main.rs:163:9:163:9 | p |
+| main.rs:164:10:164:10 | [post] p | main.rs:165:10:165:10 | p |
+| main.rs:164:10:164:10 | p | main.rs:165:10:165:10 | p |
+| main.rs:169:9:169:13 | mut p | main.rs:169:13:169:13 | p |
+| main.rs:169:13:169:13 | [SSA] p | main.rs:170:10:170:10 | p |
+| main.rs:169:13:169:13 | p | main.rs:169:13:169:13 | [SSA] p |
+| main.rs:169:17:169:44 | Point {...} | main.rs:169:9:169:13 | mut p |
+| main.rs:170:10:170:10 | [post] p | main.rs:171:5:171:5 | p |
+| main.rs:170:10:170:10 | p | main.rs:171:5:171:5 | p |
+| main.rs:171:5:171:5 | [post] p | main.rs:172:10:172:10 | p |
+| main.rs:171:5:171:5 | p | main.rs:172:10:172:10 | p |
+| main.rs:171:11:171:20 | source(...) | main.rs:171:5:171:7 | p.y |
+| main.rs:176:9:176:9 | [SSA] p | main.rs:180:32:180:32 | p |
+| main.rs:176:9:176:9 | p | main.rs:176:9:176:9 | [SSA] p |
+| main.rs:176:9:176:9 | p | main.rs:176:9:176:9 | p |
+| main.rs:176:13:179:5 | Point {...} | main.rs:176:9:176:9 | p |
+| main.rs:180:20:180:20 | [SSA] a | main.rs:181:10:181:10 | a |
+| main.rs:180:20:180:20 | a | main.rs:180:20:180:20 | [SSA] a |
+| main.rs:180:20:180:20 | a | main.rs:180:20:180:20 | a |
+| main.rs:180:26:180:26 | [SSA] b | main.rs:182:10:182:10 | b |
+| main.rs:180:26:180:26 | b | main.rs:180:26:180:26 | [SSA] b |
+| main.rs:180:26:180:26 | b | main.rs:180:26:180:26 | b |
+| main.rs:180:32:180:32 | p | main.rs:180:9:180:28 | Point {...} |
+| main.rs:191:9:191:9 | [SSA] p | main.rs:198:10:198:10 | p |
+| main.rs:191:9:191:9 | p | main.rs:191:9:191:9 | [SSA] p |
+| main.rs:191:9:191:9 | p | main.rs:191:9:191:9 | p |
+| main.rs:191:13:197:5 | Point3D {...} | main.rs:191:9:191:9 | p |
+| main.rs:198:10:198:10 | [post] p | main.rs:199:10:199:10 | p |
+| main.rs:198:10:198:10 | p | main.rs:199:10:199:10 | p |
+| main.rs:199:10:199:10 | [post] p | main.rs:200:10:200:10 | p |
+| main.rs:199:10:199:10 | p | main.rs:200:10:200:10 | p |
+| main.rs:204:9:204:9 | [SSA] y | main.rs:206:30:206:30 | y |
+| main.rs:204:9:204:9 | y | main.rs:204:9:204:9 | [SSA] y |
+| main.rs:204:9:204:9 | y | main.rs:204:9:204:9 | y |
+| main.rs:204:13:204:22 | source(...) | main.rs:204:9:204:9 | y |
+| main.rs:205:9:205:9 | [SSA] p | main.rs:209:11:209:11 | p |
+| main.rs:205:9:205:9 | p | main.rs:205:9:205:9 | [SSA] p |
+| main.rs:205:9:205:9 | p | main.rs:205:9:205:9 | p |
+| main.rs:205:13:208:5 | Point3D {...} | main.rs:205:9:205:9 | p |
+| main.rs:209:5:218:5 | match p { ... } | main.rs:203:26:219:1 | { ... } |
+| main.rs:209:11:209:11 | p | main.rs:210:9:213:9 | Point3D {...} |
+| main.rs:211:28:211:28 | [SSA] x | main.rs:214:18:214:18 | x |
+| main.rs:211:28:211:28 | x | main.rs:211:28:211:28 | [SSA] x |
+| main.rs:211:28:211:28 | x | main.rs:211:28:211:28 | x |
+| main.rs:211:31:211:31 | [SSA] y | main.rs:215:18:215:18 | y |
+| main.rs:211:31:211:31 | y | main.rs:211:31:211:31 | [SSA] y |
+| main.rs:211:31:211:31 | y | main.rs:211:31:211:31 | y |
+| main.rs:212:13:212:13 | [SSA] z | main.rs:216:18:216:18 | z |
+| main.rs:212:13:212:13 | z | main.rs:212:13:212:13 | [SSA] z |
+| main.rs:212:13:212:13 | z | main.rs:212:13:212:13 | z |
+| main.rs:213:14:217:9 | { ... } | main.rs:209:5:218:5 | match p { ... } |
+| main.rs:224:9:224:9 | [SSA] s | main.rs:225:10:225:10 | s |
+| main.rs:224:9:224:9 | s | main.rs:224:9:224:9 | [SSA] s |
+| main.rs:224:9:224:9 | s | main.rs:224:9:224:9 | s |
+| main.rs:224:13:224:40 | MyTupleStruct(...) | main.rs:224:9:224:9 | s |
+| main.rs:225:10:225:10 | [post] s | main.rs:226:10:226:10 | s |
+| main.rs:225:10:225:10 | s | main.rs:226:10:226:10 | s |
+| main.rs:226:10:226:10 | [post] s | main.rs:228:11:228:11 | s |
+| main.rs:226:10:226:10 | s | main.rs:228:11:228:11 | s |
+| main.rs:228:5:233:5 | match s { ... } | main.rs:223:19:234:1 | { ... } |
+| main.rs:228:11:228:11 | s | main.rs:229:9:229:27 | MyTupleStruct(...) |
+| main.rs:229:23:229:23 | [SSA] x | main.rs:230:18:230:18 | x |
+| main.rs:229:23:229:23 | x | main.rs:229:23:229:23 | [SSA] x |
+| main.rs:229:23:229:23 | x | main.rs:229:23:229:23 | x |
+| main.rs:229:26:229:26 | [SSA] y | main.rs:231:18:231:18 | y |
+| main.rs:229:26:229:26 | y | main.rs:229:26:229:26 | [SSA] y |
+| main.rs:229:26:229:26 | y | main.rs:229:26:229:26 | y |
+| main.rs:229:32:232:9 | { ... } | main.rs:228:5:233:5 | match s { ... } |
+| main.rs:240:9:240:10 | [SSA] s1 | main.rs:242:11:242:12 | s1 |
+| main.rs:240:9:240:10 | s1 | main.rs:240:9:240:10 | [SSA] s1 |
+| main.rs:240:9:240:10 | s1 | main.rs:240:9:240:10 | s1 |
+| main.rs:240:14:240:37 | ...::Some(...) | main.rs:240:9:240:10 | s1 |
+| main.rs:241:9:241:10 | [SSA] s2 | main.rs:246:11:246:12 | s2 |
+| main.rs:241:9:241:10 | s2 | main.rs:241:9:241:10 | [SSA] s2 |
+| main.rs:241:9:241:10 | s2 | main.rs:241:9:241:10 | s2 |
+| main.rs:241:14:241:28 | ...::Some(...) | main.rs:241:9:241:10 | s2 |
+| main.rs:242:11:242:12 | s1 | main.rs:243:9:243:23 | ...::Some(...) |
+| main.rs:242:11:242:12 | s1 | main.rs:244:9:244:20 | ...::None |
+| main.rs:243:22:243:22 | [SSA] n | main.rs:243:33:243:33 | n |
+| main.rs:243:22:243:22 | n | main.rs:243:22:243:22 | [SSA] n |
+| main.rs:243:22:243:22 | n | main.rs:243:22:243:22 | n |
+| main.rs:243:28:243:34 | sink(...) | main.rs:242:5:245:5 | match s1 { ... } |
+| main.rs:244:25:244:31 | sink(...) | main.rs:242:5:245:5 | match s1 { ... } |
+| main.rs:246:5:249:5 | match s2 { ... } | main.rs:239:37:250:1 | { ... } |
+| main.rs:246:11:246:12 | s2 | main.rs:247:9:247:23 | ...::Some(...) |
+| main.rs:246:11:246:12 | s2 | main.rs:248:9:248:20 | ...::None |
+| main.rs:247:22:247:22 | [SSA] n | main.rs:247:33:247:33 | n |
+| main.rs:247:22:247:22 | n | main.rs:247:22:247:22 | [SSA] n |
+| main.rs:247:22:247:22 | n | main.rs:247:22:247:22 | n |
+| main.rs:247:28:247:34 | sink(...) | main.rs:246:5:249:5 | match s2 { ... } |
+| main.rs:248:25:248:31 | sink(...) | main.rs:246:5:249:5 | match s2 { ... } |
+| main.rs:253:9:253:10 | [SSA] s1 | main.rs:255:11:255:12 | s1 |
+| main.rs:253:9:253:10 | s1 | main.rs:253:9:253:10 | [SSA] s1 |
+| main.rs:253:9:253:10 | s1 | main.rs:253:9:253:10 | s1 |
+| main.rs:253:14:253:29 | Some(...) | main.rs:253:9:253:10 | s1 |
+| main.rs:254:9:254:10 | [SSA] s2 | main.rs:259:11:259:12 | s2 |
+| main.rs:254:9:254:10 | s2 | main.rs:254:9:254:10 | [SSA] s2 |
+| main.rs:254:9:254:10 | s2 | main.rs:254:9:254:10 | s2 |
+| main.rs:254:14:254:20 | Some(...) | main.rs:254:9:254:10 | s2 |
+| main.rs:255:11:255:12 | s1 | main.rs:256:9:256:15 | Some(...) |
+| main.rs:255:11:255:12 | s1 | main.rs:257:9:257:12 | None |
+| main.rs:256:14:256:14 | [SSA] n | main.rs:256:25:256:25 | n |
+| main.rs:256:14:256:14 | n | main.rs:256:14:256:14 | [SSA] n |
+| main.rs:256:14:256:14 | n | main.rs:256:14:256:14 | n |
+| main.rs:256:20:256:26 | sink(...) | main.rs:255:5:258:5 | match s1 { ... } |
+| main.rs:257:17:257:23 | sink(...) | main.rs:255:5:258:5 | match s1 { ... } |
+| main.rs:259:5:262:5 | match s2 { ... } | main.rs:252:39:263:1 | { ... } |
+| main.rs:259:11:259:12 | s2 | main.rs:260:9:260:15 | Some(...) |
+| main.rs:259:11:259:12 | s2 | main.rs:261:9:261:12 | None |
+| main.rs:260:14:260:14 | [SSA] n | main.rs:260:25:260:25 | n |
+| main.rs:260:14:260:14 | n | main.rs:260:14:260:14 | [SSA] n |
+| main.rs:260:14:260:14 | n | main.rs:260:14:260:14 | n |
+| main.rs:260:20:260:26 | sink(...) | main.rs:259:5:262:5 | match s2 { ... } |
+| main.rs:261:17:261:23 | sink(...) | main.rs:259:5:262:5 | match s2 { ... } |
+| main.rs:266:9:266:10 | [SSA] s1 | main.rs:267:22:267:23 | s1 |
| main.rs:266:9:266:10 | s1 | main.rs:266:9:266:10 | [SSA] s1 |
| main.rs:266:9:266:10 | s1 | main.rs:266:9:266:10 | s1 |
| main.rs:266:14:266:29 | Some(...) | main.rs:266:9:266:10 | s1 |
-| main.rs:267:10:267:11 | [post] receiver for s1 | main.rs:267:10:267:11 | [post] s1 |
-| main.rs:267:10:267:11 | s1 | main.rs:267:10:267:11 | receiver for s1 |
-| main.rs:271:9:271:10 | [SSA] s1 | main.rs:272:10:272:11 | s1 |
-| main.rs:271:9:271:10 | s1 | main.rs:271:9:271:10 | [SSA] s1 |
-| main.rs:271:9:271:10 | s1 | main.rs:271:9:271:10 | s1 |
-| main.rs:271:14:271:29 | Some(...) | main.rs:271:9:271:10 | s1 |
-| main.rs:272:10:272:11 | [post] receiver for s1 | main.rs:272:10:272:11 | [post] s1 |
-| main.rs:272:10:272:11 | s1 | main.rs:272:10:272:11 | receiver for s1 |
-| main.rs:274:9:274:10 | [SSA] s2 | main.rs:275:10:275:11 | s2 |
-| main.rs:274:9:274:10 | s2 | main.rs:274:9:274:10 | [SSA] s2 |
-| main.rs:274:9:274:10 | s2 | main.rs:274:9:274:10 | s2 |
-| main.rs:274:14:274:20 | Some(...) | main.rs:274:9:274:10 | s2 |
-| main.rs:275:10:275:11 | [post] receiver for s2 | main.rs:275:10:275:11 | [post] s2 |
-| main.rs:275:10:275:11 | s2 | main.rs:275:10:275:11 | receiver for s2 |
-| main.rs:279:9:279:10 | [SSA] s1 | main.rs:280:10:280:11 | s1 |
-| main.rs:279:9:279:10 | s1 | main.rs:279:9:279:10 | [SSA] s1 |
-| main.rs:279:9:279:10 | s1 | main.rs:279:9:279:10 | s1 |
-| main.rs:279:14:279:29 | Some(...) | main.rs:279:9:279:10 | s1 |
-| main.rs:280:10:280:11 | [post] receiver for s1 | main.rs:280:10:280:11 | [post] s1 |
-| main.rs:280:10:280:11 | s1 | main.rs:280:10:280:11 | receiver for s1 |
-| main.rs:282:9:282:10 | [SSA] s2 | main.rs:283:10:283:11 | s2 |
-| main.rs:282:9:282:10 | s2 | main.rs:282:9:282:10 | [SSA] s2 |
-| main.rs:282:9:282:10 | s2 | main.rs:282:9:282:10 | s2 |
-| main.rs:282:14:282:17 | None | main.rs:282:9:282:10 | s2 |
-| main.rs:283:10:283:11 | [post] receiver for s2 | main.rs:283:10:283:11 | [post] s2 |
-| main.rs:283:10:283:11 | s2 | main.rs:283:10:283:11 | receiver for s2 |
-| main.rs:287:9:287:10 | [SSA] s1 | main.rs:289:14:289:15 | s1 |
-| main.rs:287:9:287:10 | s1 | main.rs:287:9:287:10 | [SSA] s1 |
-| main.rs:287:9:287:10 | s1 | main.rs:287:9:287:10 | s1 |
-| main.rs:287:14:287:29 | Some(...) | main.rs:287:9:287:10 | s1 |
-| main.rs:288:9:288:10 | [SSA] s2 | main.rs:291:10:291:11 | s2 |
-| main.rs:288:9:288:10 | s2 | main.rs:288:9:288:10 | [SSA] s2 |
-| main.rs:288:9:288:10 | s2 | main.rs:288:9:288:10 | s2 |
-| main.rs:288:14:288:20 | Some(...) | main.rs:288:9:288:10 | s2 |
-| main.rs:289:9:289:10 | [SSA] i1 | main.rs:290:10:290:11 | i1 |
-| main.rs:289:9:289:10 | i1 | main.rs:289:9:289:10 | [SSA] i1 |
-| main.rs:289:9:289:10 | i1 | main.rs:289:9:289:10 | i1 |
-| main.rs:289:14:289:16 | TryExpr | main.rs:289:9:289:10 | i1 |
-| main.rs:292:5:292:11 | Some(...) | main.rs:286:41:293:1 | { ... } |
-| main.rs:296:9:296:10 | [SSA] r1 | main.rs:297:28:297:29 | r1 |
-| main.rs:296:9:296:10 | r1 | main.rs:296:9:296:10 | [SSA] r1 |
-| main.rs:296:9:296:10 | r1 | main.rs:296:9:296:10 | r1 |
-| main.rs:296:32:296:45 | Ok(...) | main.rs:296:9:296:10 | r1 |
-| main.rs:297:9:297:11 | [SSA] o1a | main.rs:299:10:299:12 | o1a |
-| main.rs:297:9:297:11 | o1a | main.rs:297:9:297:11 | [SSA] o1a |
-| main.rs:297:9:297:11 | o1a | main.rs:297:9:297:11 | o1a |
-| main.rs:297:28:297:29 | [post] r1 | main.rs:298:28:298:29 | r1 |
-| main.rs:297:28:297:29 | [post] receiver for r1 | main.rs:297:28:297:29 | [post] r1 |
-| main.rs:297:28:297:29 | r1 | main.rs:297:28:297:29 | receiver for r1 |
-| main.rs:297:28:297:29 | r1 | main.rs:298:28:298:29 | r1 |
-| main.rs:297:28:297:34 | r1.ok() | main.rs:297:9:297:11 | o1a |
-| main.rs:298:9:298:11 | [SSA] o1b | main.rs:300:10:300:12 | o1b |
-| main.rs:298:9:298:11 | o1b | main.rs:298:9:298:11 | [SSA] o1b |
-| main.rs:298:9:298:11 | o1b | main.rs:298:9:298:11 | o1b |
-| main.rs:298:28:298:29 | [post] receiver for r1 | main.rs:298:28:298:29 | [post] r1 |
-| main.rs:298:28:298:29 | r1 | main.rs:298:28:298:29 | receiver for r1 |
-| main.rs:298:28:298:35 | r1.err() | main.rs:298:9:298:11 | o1b |
-| main.rs:299:10:299:12 | [post] receiver for o1a | main.rs:299:10:299:12 | [post] o1a |
-| main.rs:299:10:299:12 | o1a | main.rs:299:10:299:12 | receiver for o1a |
-| main.rs:300:10:300:12 | [post] receiver for o1b | main.rs:300:10:300:12 | [post] o1b |
-| main.rs:300:10:300:12 | o1b | main.rs:300:10:300:12 | receiver for o1b |
-| main.rs:302:9:302:10 | [SSA] r2 | main.rs:303:28:303:29 | r2 |
-| main.rs:302:9:302:10 | r2 | main.rs:302:9:302:10 | [SSA] r2 |
-| main.rs:302:9:302:10 | r2 | main.rs:302:9:302:10 | r2 |
-| main.rs:302:32:302:46 | Err(...) | main.rs:302:9:302:10 | r2 |
-| main.rs:303:9:303:11 | [SSA] o2a | main.rs:305:10:305:12 | o2a |
-| main.rs:303:9:303:11 | o2a | main.rs:303:9:303:11 | [SSA] o2a |
-| main.rs:303:9:303:11 | o2a | main.rs:303:9:303:11 | o2a |
-| main.rs:303:28:303:29 | [post] r2 | main.rs:304:28:304:29 | r2 |
-| main.rs:303:28:303:29 | [post] receiver for r2 | main.rs:303:28:303:29 | [post] r2 |
-| main.rs:303:28:303:29 | r2 | main.rs:303:28:303:29 | receiver for r2 |
-| main.rs:303:28:303:29 | r2 | main.rs:304:28:304:29 | r2 |
-| main.rs:303:28:303:34 | r2.ok() | main.rs:303:9:303:11 | o2a |
-| main.rs:304:9:304:11 | [SSA] o2b | main.rs:306:10:306:12 | o2b |
-| main.rs:304:9:304:11 | o2b | main.rs:304:9:304:11 | [SSA] o2b |
-| main.rs:304:9:304:11 | o2b | main.rs:304:9:304:11 | o2b |
-| main.rs:304:28:304:29 | [post] receiver for r2 | main.rs:304:28:304:29 | [post] r2 |
-| main.rs:304:28:304:29 | r2 | main.rs:304:28:304:29 | receiver for r2 |
-| main.rs:304:28:304:35 | r2.err() | main.rs:304:9:304:11 | o2b |
-| main.rs:305:10:305:12 | [post] receiver for o2a | main.rs:305:10:305:12 | [post] o2a |
-| main.rs:305:10:305:12 | o2a | main.rs:305:10:305:12 | receiver for o2a |
-| main.rs:306:10:306:12 | [post] receiver for o2b | main.rs:306:10:306:12 | [post] o2b |
-| main.rs:306:10:306:12 | o2b | main.rs:306:10:306:12 | receiver for o2b |
-| main.rs:310:9:310:10 | [SSA] s1 | main.rs:313:14:313:15 | s1 |
-| main.rs:310:9:310:10 | s1 | main.rs:310:9:310:10 | [SSA] s1 |
-| main.rs:310:9:310:10 | s1 | main.rs:310:9:310:10 | s1 |
-| main.rs:310:32:310:45 | Ok(...) | main.rs:310:9:310:10 | s1 |
-| main.rs:311:9:311:10 | [SSA] s2 | main.rs:314:14:314:15 | s2 |
-| main.rs:311:9:311:10 | s2 | main.rs:311:9:311:10 | [SSA] s2 |
-| main.rs:311:9:311:10 | s2 | main.rs:311:9:311:10 | s2 |
-| main.rs:311:32:311:36 | Ok(...) | main.rs:311:9:311:10 | s2 |
-| main.rs:312:9:312:10 | [SSA] s3 | main.rs:317:14:317:15 | s3 |
-| main.rs:312:9:312:10 | s3 | main.rs:312:9:312:10 | [SSA] s3 |
-| main.rs:312:9:312:10 | s3 | main.rs:312:9:312:10 | s3 |
-| main.rs:312:32:312:46 | Err(...) | main.rs:312:9:312:10 | s3 |
-| main.rs:313:9:313:10 | [SSA] i1 | main.rs:315:10:315:11 | i1 |
-| main.rs:313:9:313:10 | i1 | main.rs:313:9:313:10 | [SSA] i1 |
-| main.rs:313:9:313:10 | i1 | main.rs:313:9:313:10 | i1 |
-| main.rs:313:14:313:16 | TryExpr | main.rs:313:9:313:10 | i1 |
-| main.rs:314:9:314:10 | [SSA] i2 | main.rs:316:10:316:11 | i2 |
-| main.rs:314:9:314:10 | i2 | main.rs:314:9:314:10 | [SSA] i2 |
-| main.rs:314:9:314:10 | i2 | main.rs:314:9:314:10 | i2 |
-| main.rs:314:14:314:16 | TryExpr | main.rs:314:9:314:10 | i2 |
-| main.rs:317:9:317:10 | [SSA] i3 | main.rs:318:10:318:11 | i3 |
-| main.rs:317:9:317:10 | i3 | main.rs:317:9:317:10 | [SSA] i3 |
-| main.rs:317:9:317:10 | i3 | main.rs:317:9:317:10 | i3 |
-| main.rs:317:14:317:16 | TryExpr | main.rs:317:9:317:10 | i3 |
-| main.rs:319:5:319:9 | Ok(...) | main.rs:309:46:320:1 | { ... } |
-| main.rs:323:9:323:10 | [SSA] s1 | main.rs:324:10:324:11 | s1 |
-| main.rs:323:9:323:10 | s1 | main.rs:323:9:323:10 | [SSA] s1 |
-| main.rs:323:9:323:10 | s1 | main.rs:323:9:323:10 | s1 |
-| main.rs:323:32:323:45 | Ok(...) | main.rs:323:9:323:10 | s1 |
-| main.rs:324:10:324:11 | [post] receiver for s1 | main.rs:324:10:324:11 | [post] s1 |
-| main.rs:324:10:324:11 | [post] s1 | main.rs:325:10:325:11 | s1 |
-| main.rs:324:10:324:11 | s1 | main.rs:324:10:324:11 | receiver for s1 |
-| main.rs:324:10:324:11 | s1 | main.rs:325:10:325:11 | s1 |
-| main.rs:325:10:325:11 | [post] receiver for s1 | main.rs:325:10:325:11 | [post] s1 |
-| main.rs:325:10:325:11 | s1 | main.rs:325:10:325:11 | receiver for s1 |
-| main.rs:327:9:327:10 | [SSA] s2 | main.rs:328:10:328:11 | s2 |
-| main.rs:327:9:327:10 | s2 | main.rs:327:9:327:10 | [SSA] s2 |
-| main.rs:327:9:327:10 | s2 | main.rs:327:9:327:10 | s2 |
-| main.rs:327:32:327:46 | Err(...) | main.rs:327:9:327:10 | s2 |
-| main.rs:328:10:328:11 | [post] receiver for s2 | main.rs:328:10:328:11 | [post] s2 |
-| main.rs:328:10:328:11 | [post] s2 | main.rs:329:10:329:11 | s2 |
-| main.rs:328:10:328:11 | s2 | main.rs:328:10:328:11 | receiver for s2 |
-| main.rs:328:10:328:11 | s2 | main.rs:329:10:329:11 | s2 |
-| main.rs:329:10:329:11 | [post] receiver for s2 | main.rs:329:10:329:11 | [post] s2 |
-| main.rs:329:10:329:11 | s2 | main.rs:329:10:329:11 | receiver for s2 |
-| main.rs:338:9:338:10 | [SSA] s1 | main.rs:340:11:340:12 | s1 |
-| main.rs:338:9:338:10 | s1 | main.rs:338:9:338:10 | [SSA] s1 |
-| main.rs:338:9:338:10 | s1 | main.rs:338:9:338:10 | s1 |
-| main.rs:338:14:338:39 | ...::A(...) | main.rs:338:9:338:10 | s1 |
-| main.rs:339:9:339:10 | [SSA] s2 | main.rs:347:11:347:12 | s2 |
+| main.rs:267:5:274:5 | if ... {...} | main.rs:265:25:275:1 | { ... } |
+| main.rs:267:17:267:17 | [SSA] n | main.rs:269:18:269:18 | n |
+| main.rs:267:17:267:17 | n | main.rs:267:17:267:17 | [SSA] n |
+| main.rs:267:17:267:17 | n | main.rs:267:17:267:17 | n |
+| main.rs:267:22:267:23 | s1 | main.rs:267:12:267:18 | Some(...) |
+| main.rs:269:18:269:18 | [post] n | main.rs:273:14:273:14 | n |
+| main.rs:269:18:269:18 | n | main.rs:273:14:273:14 | n |
+| main.rs:270:13:270:16 | true | main.rs:268:12:271:9 | { ... } |
+| main.rs:272:5:274:5 | { ... } | main.rs:267:5:274:5 | if ... {...} |
+| main.rs:278:9:278:10 | [SSA] s1 | main.rs:279:10:279:11 | s1 |
+| main.rs:278:9:278:10 | s1 | main.rs:278:9:278:10 | [SSA] s1 |
+| main.rs:278:9:278:10 | s1 | main.rs:278:9:278:10 | s1 |
+| main.rs:278:14:278:29 | Some(...) | main.rs:278:9:278:10 | s1 |
+| main.rs:279:10:279:11 | [post] receiver for s1 | main.rs:279:10:279:11 | [post] s1 |
+| main.rs:279:10:279:11 | s1 | main.rs:279:10:279:11 | receiver for s1 |
+| main.rs:283:9:283:10 | [SSA] s1 | main.rs:284:10:284:11 | s1 |
+| main.rs:283:9:283:10 | s1 | main.rs:283:9:283:10 | [SSA] s1 |
+| main.rs:283:9:283:10 | s1 | main.rs:283:9:283:10 | s1 |
+| main.rs:283:14:283:29 | Some(...) | main.rs:283:9:283:10 | s1 |
+| main.rs:284:10:284:11 | [post] receiver for s1 | main.rs:284:10:284:11 | [post] s1 |
+| main.rs:284:10:284:11 | s1 | main.rs:284:10:284:11 | receiver for s1 |
+| main.rs:286:9:286:10 | [SSA] s2 | main.rs:287:10:287:11 | s2 |
+| main.rs:286:9:286:10 | s2 | main.rs:286:9:286:10 | [SSA] s2 |
+| main.rs:286:9:286:10 | s2 | main.rs:286:9:286:10 | s2 |
+| main.rs:286:14:286:20 | Some(...) | main.rs:286:9:286:10 | s2 |
+| main.rs:287:10:287:11 | [post] receiver for s2 | main.rs:287:10:287:11 | [post] s2 |
+| main.rs:287:10:287:11 | s2 | main.rs:287:10:287:11 | receiver for s2 |
+| main.rs:291:9:291:10 | [SSA] s1 | main.rs:292:10:292:11 | s1 |
+| main.rs:291:9:291:10 | s1 | main.rs:291:9:291:10 | [SSA] s1 |
+| main.rs:291:9:291:10 | s1 | main.rs:291:9:291:10 | s1 |
+| main.rs:291:14:291:29 | Some(...) | main.rs:291:9:291:10 | s1 |
+| main.rs:292:10:292:11 | [post] receiver for s1 | main.rs:292:10:292:11 | [post] s1 |
+| main.rs:292:10:292:11 | s1 | main.rs:292:10:292:11 | receiver for s1 |
+| main.rs:294:9:294:10 | [SSA] s2 | main.rs:295:10:295:11 | s2 |
+| main.rs:294:9:294:10 | s2 | main.rs:294:9:294:10 | [SSA] s2 |
+| main.rs:294:9:294:10 | s2 | main.rs:294:9:294:10 | s2 |
+| main.rs:294:14:294:17 | None | main.rs:294:9:294:10 | s2 |
+| main.rs:295:10:295:11 | [post] receiver for s2 | main.rs:295:10:295:11 | [post] s2 |
+| main.rs:295:10:295:11 | s2 | main.rs:295:10:295:11 | receiver for s2 |
+| main.rs:299:9:299:10 | [SSA] s1 | main.rs:301:14:301:15 | s1 |
+| main.rs:299:9:299:10 | s1 | main.rs:299:9:299:10 | [SSA] s1 |
+| main.rs:299:9:299:10 | s1 | main.rs:299:9:299:10 | s1 |
+| main.rs:299:14:299:29 | Some(...) | main.rs:299:9:299:10 | s1 |
+| main.rs:300:9:300:10 | [SSA] s2 | main.rs:303:10:303:11 | s2 |
+| main.rs:300:9:300:10 | s2 | main.rs:300:9:300:10 | [SSA] s2 |
+| main.rs:300:9:300:10 | s2 | main.rs:300:9:300:10 | s2 |
+| main.rs:300:14:300:20 | Some(...) | main.rs:300:9:300:10 | s2 |
+| main.rs:301:9:301:10 | [SSA] i1 | main.rs:302:10:302:11 | i1 |
+| main.rs:301:9:301:10 | i1 | main.rs:301:9:301:10 | [SSA] i1 |
+| main.rs:301:9:301:10 | i1 | main.rs:301:9:301:10 | i1 |
+| main.rs:301:14:301:16 | TryExpr | main.rs:301:9:301:10 | i1 |
+| main.rs:304:5:304:11 | Some(...) | main.rs:298:41:305:1 | { ... } |
+| main.rs:308:9:308:10 | [SSA] r1 | main.rs:309:28:309:29 | r1 |
+| main.rs:308:9:308:10 | r1 | main.rs:308:9:308:10 | [SSA] r1 |
+| main.rs:308:9:308:10 | r1 | main.rs:308:9:308:10 | r1 |
+| main.rs:308:32:308:45 | Ok(...) | main.rs:308:9:308:10 | r1 |
+| main.rs:309:9:309:11 | [SSA] o1a | main.rs:311:10:311:12 | o1a |
+| main.rs:309:9:309:11 | o1a | main.rs:309:9:309:11 | [SSA] o1a |
+| main.rs:309:9:309:11 | o1a | main.rs:309:9:309:11 | o1a |
+| main.rs:309:28:309:29 | [post] r1 | main.rs:310:28:310:29 | r1 |
+| main.rs:309:28:309:29 | [post] receiver for r1 | main.rs:309:28:309:29 | [post] r1 |
+| main.rs:309:28:309:29 | r1 | main.rs:309:28:309:29 | receiver for r1 |
+| main.rs:309:28:309:29 | r1 | main.rs:310:28:310:29 | r1 |
+| main.rs:309:28:309:34 | r1.ok() | main.rs:309:9:309:11 | o1a |
+| main.rs:310:9:310:11 | [SSA] o1b | main.rs:312:10:312:12 | o1b |
+| main.rs:310:9:310:11 | o1b | main.rs:310:9:310:11 | [SSA] o1b |
+| main.rs:310:9:310:11 | o1b | main.rs:310:9:310:11 | o1b |
+| main.rs:310:28:310:29 | [post] receiver for r1 | main.rs:310:28:310:29 | [post] r1 |
+| main.rs:310:28:310:29 | r1 | main.rs:310:28:310:29 | receiver for r1 |
+| main.rs:310:28:310:35 | r1.err() | main.rs:310:9:310:11 | o1b |
+| main.rs:311:10:311:12 | [post] receiver for o1a | main.rs:311:10:311:12 | [post] o1a |
+| main.rs:311:10:311:12 | o1a | main.rs:311:10:311:12 | receiver for o1a |
+| main.rs:312:10:312:12 | [post] receiver for o1b | main.rs:312:10:312:12 | [post] o1b |
+| main.rs:312:10:312:12 | o1b | main.rs:312:10:312:12 | receiver for o1b |
+| main.rs:314:9:314:10 | [SSA] r2 | main.rs:315:28:315:29 | r2 |
+| main.rs:314:9:314:10 | r2 | main.rs:314:9:314:10 | [SSA] r2 |
+| main.rs:314:9:314:10 | r2 | main.rs:314:9:314:10 | r2 |
+| main.rs:314:32:314:46 | Err(...) | main.rs:314:9:314:10 | r2 |
+| main.rs:315:9:315:11 | [SSA] o2a | main.rs:317:10:317:12 | o2a |
+| main.rs:315:9:315:11 | o2a | main.rs:315:9:315:11 | [SSA] o2a |
+| main.rs:315:9:315:11 | o2a | main.rs:315:9:315:11 | o2a |
+| main.rs:315:28:315:29 | [post] r2 | main.rs:316:28:316:29 | r2 |
+| main.rs:315:28:315:29 | [post] receiver for r2 | main.rs:315:28:315:29 | [post] r2 |
+| main.rs:315:28:315:29 | r2 | main.rs:315:28:315:29 | receiver for r2 |
+| main.rs:315:28:315:29 | r2 | main.rs:316:28:316:29 | r2 |
+| main.rs:315:28:315:34 | r2.ok() | main.rs:315:9:315:11 | o2a |
+| main.rs:316:9:316:11 | [SSA] o2b | main.rs:318:10:318:12 | o2b |
+| main.rs:316:9:316:11 | o2b | main.rs:316:9:316:11 | [SSA] o2b |
+| main.rs:316:9:316:11 | o2b | main.rs:316:9:316:11 | o2b |
+| main.rs:316:28:316:29 | [post] receiver for r2 | main.rs:316:28:316:29 | [post] r2 |
+| main.rs:316:28:316:29 | r2 | main.rs:316:28:316:29 | receiver for r2 |
+| main.rs:316:28:316:35 | r2.err() | main.rs:316:9:316:11 | o2b |
+| main.rs:317:10:317:12 | [post] receiver for o2a | main.rs:317:10:317:12 | [post] o2a |
+| main.rs:317:10:317:12 | o2a | main.rs:317:10:317:12 | receiver for o2a |
+| main.rs:318:10:318:12 | [post] receiver for o2b | main.rs:318:10:318:12 | [post] o2b |
+| main.rs:318:10:318:12 | o2b | main.rs:318:10:318:12 | receiver for o2b |
+| main.rs:322:9:322:10 | [SSA] s1 | main.rs:325:14:325:15 | s1 |
+| main.rs:322:9:322:10 | s1 | main.rs:322:9:322:10 | [SSA] s1 |
+| main.rs:322:9:322:10 | s1 | main.rs:322:9:322:10 | s1 |
+| main.rs:322:32:322:45 | Ok(...) | main.rs:322:9:322:10 | s1 |
+| main.rs:323:9:323:10 | [SSA] s2 | main.rs:326:14:326:15 | s2 |
+| main.rs:323:9:323:10 | s2 | main.rs:323:9:323:10 | [SSA] s2 |
+| main.rs:323:9:323:10 | s2 | main.rs:323:9:323:10 | s2 |
+| main.rs:323:32:323:36 | Ok(...) | main.rs:323:9:323:10 | s2 |
+| main.rs:324:9:324:10 | [SSA] s3 | main.rs:329:14:329:15 | s3 |
+| main.rs:324:9:324:10 | s3 | main.rs:324:9:324:10 | [SSA] s3 |
+| main.rs:324:9:324:10 | s3 | main.rs:324:9:324:10 | s3 |
+| main.rs:324:32:324:46 | Err(...) | main.rs:324:9:324:10 | s3 |
+| main.rs:325:9:325:10 | [SSA] i1 | main.rs:327:10:327:11 | i1 |
+| main.rs:325:9:325:10 | i1 | main.rs:325:9:325:10 | [SSA] i1 |
+| main.rs:325:9:325:10 | i1 | main.rs:325:9:325:10 | i1 |
+| main.rs:325:14:325:16 | TryExpr | main.rs:325:9:325:10 | i1 |
+| main.rs:326:9:326:10 | [SSA] i2 | main.rs:328:10:328:11 | i2 |
+| main.rs:326:9:326:10 | i2 | main.rs:326:9:326:10 | [SSA] i2 |
+| main.rs:326:9:326:10 | i2 | main.rs:326:9:326:10 | i2 |
+| main.rs:326:14:326:16 | TryExpr | main.rs:326:9:326:10 | i2 |
+| main.rs:329:9:329:10 | [SSA] i3 | main.rs:330:10:330:11 | i3 |
+| main.rs:329:9:329:10 | i3 | main.rs:329:9:329:10 | [SSA] i3 |
+| main.rs:329:9:329:10 | i3 | main.rs:329:9:329:10 | i3 |
+| main.rs:329:14:329:16 | TryExpr | main.rs:329:9:329:10 | i3 |
+| main.rs:331:5:331:9 | Ok(...) | main.rs:321:46:332:1 | { ... } |
+| main.rs:335:9:335:10 | [SSA] s1 | main.rs:336:10:336:11 | s1 |
+| main.rs:335:9:335:10 | s1 | main.rs:335:9:335:10 | [SSA] s1 |
+| main.rs:335:9:335:10 | s1 | main.rs:335:9:335:10 | s1 |
+| main.rs:335:32:335:45 | Ok(...) | main.rs:335:9:335:10 | s1 |
+| main.rs:336:10:336:11 | [post] receiver for s1 | main.rs:336:10:336:11 | [post] s1 |
+| main.rs:336:10:336:11 | [post] s1 | main.rs:337:10:337:11 | s1 |
+| main.rs:336:10:336:11 | s1 | main.rs:336:10:336:11 | receiver for s1 |
+| main.rs:336:10:336:11 | s1 | main.rs:337:10:337:11 | s1 |
+| main.rs:337:10:337:11 | [post] receiver for s1 | main.rs:337:10:337:11 | [post] s1 |
+| main.rs:337:10:337:11 | s1 | main.rs:337:10:337:11 | receiver for s1 |
+| main.rs:339:9:339:10 | [SSA] s2 | main.rs:340:10:340:11 | s2 |
| main.rs:339:9:339:10 | s2 | main.rs:339:9:339:10 | [SSA] s2 |
| main.rs:339:9:339:10 | s2 | main.rs:339:9:339:10 | s2 |
-| main.rs:339:14:339:30 | ...::B(...) | main.rs:339:9:339:10 | s2 |
-| main.rs:340:11:340:12 | s1 | main.rs:341:9:341:25 | ...::A(...) |
-| main.rs:340:11:340:12 | s1 | main.rs:342:9:342:25 | ...::B(...) |
-| main.rs:340:11:340:12 | s1 | main.rs:344:11:344:12 | s1 |
-| main.rs:341:24:341:24 | [SSA] n | main.rs:341:35:341:35 | n |
-| main.rs:341:24:341:24 | n | main.rs:341:24:341:24 | [SSA] n |
-| main.rs:341:24:341:24 | n | main.rs:341:24:341:24 | n |
-| main.rs:341:30:341:36 | sink(...) | main.rs:340:5:343:5 | match s1 { ... } |
-| main.rs:342:24:342:24 | [SSA] n | main.rs:342:35:342:35 | n |
-| main.rs:342:24:342:24 | n | main.rs:342:24:342:24 | [SSA] n |
-| main.rs:342:24:342:24 | n | main.rs:342:24:342:24 | n |
-| main.rs:342:30:342:36 | sink(...) | main.rs:340:5:343:5 | match s1 { ... } |
-| main.rs:344:11:344:12 | s1 | main.rs:345:9:345:45 | ... \| ... |
-| main.rs:345:9:345:45 | ... \| ... | main.rs:345:9:345:25 | ...::A(...) |
-| main.rs:345:9:345:45 | ... \| ... | main.rs:345:29:345:45 | ...::B(...) |
-| main.rs:345:24:345:24 | [SSA] n | main.rs:345:55:345:55 | n |
-| main.rs:345:24:345:24 | n | main.rs:345:24:345:24 | [SSA] n |
-| main.rs:345:24:345:24 | n | main.rs:345:24:345:24 | n |
-| main.rs:345:44:345:44 | [SSA] n | main.rs:345:55:345:55 | n |
-| main.rs:345:44:345:44 | n | main.rs:345:44:345:44 | [SSA] n |
-| main.rs:345:44:345:44 | n | main.rs:345:44:345:44 | n |
-| main.rs:345:50:345:56 | sink(...) | main.rs:344:5:346:5 | match s1 { ... } |
-| main.rs:347:5:350:5 | match s2 { ... } | main.rs:337:48:351:1 | { ... } |
-| main.rs:347:11:347:12 | s2 | main.rs:348:9:348:25 | ...::A(...) |
-| main.rs:347:11:347:12 | s2 | main.rs:349:9:349:25 | ...::B(...) |
-| main.rs:348:24:348:24 | [SSA] n | main.rs:348:35:348:35 | n |
-| main.rs:348:24:348:24 | n | main.rs:348:24:348:24 | [SSA] n |
-| main.rs:348:24:348:24 | n | main.rs:348:24:348:24 | n |
-| main.rs:348:30:348:36 | sink(...) | main.rs:347:5:350:5 | match s2 { ... } |
-| main.rs:349:24:349:24 | [SSA] n | main.rs:349:35:349:35 | n |
-| main.rs:349:24:349:24 | n | main.rs:349:24:349:24 | [SSA] n |
-| main.rs:349:24:349:24 | n | main.rs:349:24:349:24 | n |
-| main.rs:349:30:349:36 | sink(...) | main.rs:347:5:350:5 | match s2 { ... } |
-| main.rs:356:9:356:10 | [SSA] s1 | main.rs:358:11:358:12 | s1 |
-| main.rs:356:9:356:10 | s1 | main.rs:356:9:356:10 | [SSA] s1 |
-| main.rs:356:9:356:10 | s1 | main.rs:356:9:356:10 | s1 |
-| main.rs:356:14:356:26 | A(...) | main.rs:356:9:356:10 | s1 |
-| main.rs:357:9:357:10 | [SSA] s2 | main.rs:365:11:365:12 | s2 |
-| main.rs:357:9:357:10 | s2 | main.rs:357:9:357:10 | [SSA] s2 |
-| main.rs:357:9:357:10 | s2 | main.rs:357:9:357:10 | s2 |
-| main.rs:357:14:357:17 | B(...) | main.rs:357:9:357:10 | s2 |
-| main.rs:358:11:358:12 | s1 | main.rs:359:9:359:12 | A(...) |
-| main.rs:358:11:358:12 | s1 | main.rs:360:9:360:12 | B(...) |
-| main.rs:358:11:358:12 | s1 | main.rs:362:11:362:12 | s1 |
-| main.rs:359:11:359:11 | [SSA] n | main.rs:359:22:359:22 | n |
-| main.rs:359:11:359:11 | n | main.rs:359:11:359:11 | [SSA] n |
-| main.rs:359:11:359:11 | n | main.rs:359:11:359:11 | n |
-| main.rs:359:17:359:23 | sink(...) | main.rs:358:5:361:5 | match s1 { ... } |
-| main.rs:360:11:360:11 | [SSA] n | main.rs:360:22:360:22 | n |
-| main.rs:360:11:360:11 | n | main.rs:360:11:360:11 | [SSA] n |
-| main.rs:360:11:360:11 | n | main.rs:360:11:360:11 | n |
-| main.rs:360:17:360:23 | sink(...) | main.rs:358:5:361:5 | match s1 { ... } |
-| main.rs:362:11:362:12 | s1 | main.rs:363:9:363:19 | ... \| ... |
-| main.rs:363:9:363:19 | ... \| ... | main.rs:363:9:363:12 | A(...) |
-| main.rs:363:9:363:19 | ... \| ... | main.rs:363:16:363:19 | B(...) |
-| main.rs:363:11:363:11 | [SSA] n | main.rs:363:29:363:29 | n |
-| main.rs:363:11:363:11 | n | main.rs:363:11:363:11 | [SSA] n |
-| main.rs:363:11:363:11 | n | main.rs:363:11:363:11 | n |
-| main.rs:363:18:363:18 | [SSA] n | main.rs:363:29:363:29 | n |
-| main.rs:363:18:363:18 | n | main.rs:363:18:363:18 | [SSA] n |
-| main.rs:363:18:363:18 | n | main.rs:363:18:363:18 | n |
-| main.rs:363:24:363:30 | sink(...) | main.rs:362:5:364:5 | match s1 { ... } |
-| main.rs:365:5:368:5 | match s2 { ... } | main.rs:355:50:369:1 | { ... } |
-| main.rs:365:11:365:12 | s2 | main.rs:366:9:366:12 | A(...) |
-| main.rs:365:11:365:12 | s2 | main.rs:367:9:367:12 | B(...) |
-| main.rs:366:11:366:11 | [SSA] n | main.rs:366:22:366:22 | n |
-| main.rs:366:11:366:11 | n | main.rs:366:11:366:11 | [SSA] n |
-| main.rs:366:11:366:11 | n | main.rs:366:11:366:11 | n |
-| main.rs:366:17:366:23 | sink(...) | main.rs:365:5:368:5 | match s2 { ... } |
-| main.rs:367:11:367:11 | [SSA] n | main.rs:367:22:367:22 | n |
-| main.rs:367:11:367:11 | n | main.rs:367:11:367:11 | [SSA] n |
-| main.rs:367:11:367:11 | n | main.rs:367:11:367:11 | n |
-| main.rs:367:17:367:23 | sink(...) | main.rs:365:5:368:5 | match s2 { ... } |
-| main.rs:377:9:377:10 | [SSA] s1 | main.rs:381:11:381:12 | s1 |
-| main.rs:377:9:377:10 | s1 | main.rs:377:9:377:10 | [SSA] s1 |
-| main.rs:377:9:377:10 | s1 | main.rs:377:9:377:10 | s1 |
-| main.rs:377:14:379:5 | ...::C {...} | main.rs:377:9:377:10 | s1 |
-| main.rs:380:9:380:10 | [SSA] s2 | main.rs:388:11:388:12 | s2 |
-| main.rs:380:9:380:10 | s2 | main.rs:380:9:380:10 | [SSA] s2 |
-| main.rs:380:9:380:10 | s2 | main.rs:380:9:380:10 | s2 |
-| main.rs:380:14:380:43 | ...::D {...} | main.rs:380:9:380:10 | s2 |
-| main.rs:381:11:381:12 | s1 | main.rs:382:9:382:38 | ...::C {...} |
-| main.rs:381:11:381:12 | s1 | main.rs:383:9:383:38 | ...::D {...} |
-| main.rs:381:11:381:12 | s1 | main.rs:385:11:385:12 | s1 |
-| main.rs:382:36:382:36 | [SSA] n | main.rs:382:48:382:48 | n |
-| main.rs:382:36:382:36 | n | main.rs:382:36:382:36 | [SSA] n |
-| main.rs:382:36:382:36 | n | main.rs:382:36:382:36 | n |
-| main.rs:382:43:382:49 | sink(...) | main.rs:381:5:384:5 | match s1 { ... } |
-| main.rs:383:36:383:36 | [SSA] n | main.rs:383:48:383:48 | n |
-| main.rs:383:36:383:36 | n | main.rs:383:36:383:36 | [SSA] n |
-| main.rs:383:36:383:36 | n | main.rs:383:36:383:36 | n |
-| main.rs:383:43:383:49 | sink(...) | main.rs:381:5:384:5 | match s1 { ... } |
-| main.rs:385:11:385:12 | s1 | main.rs:386:9:386:71 | ... \| ... |
-| main.rs:386:9:386:71 | ... \| ... | main.rs:386:9:386:38 | ...::C {...} |
-| main.rs:386:9:386:71 | ... \| ... | main.rs:386:42:386:71 | ...::D {...} |
-| main.rs:386:36:386:36 | [SSA] n | main.rs:386:81:386:81 | n |
-| main.rs:386:36:386:36 | n | main.rs:386:36:386:36 | [SSA] n |
-| main.rs:386:36:386:36 | n | main.rs:386:36:386:36 | n |
-| main.rs:386:69:386:69 | [SSA] n | main.rs:386:81:386:81 | n |
-| main.rs:386:69:386:69 | n | main.rs:386:69:386:69 | [SSA] n |
-| main.rs:386:69:386:69 | n | main.rs:386:69:386:69 | n |
-| main.rs:386:76:386:82 | sink(...) | main.rs:385:5:387:5 | match s1 { ... } |
-| main.rs:388:5:391:5 | match s2 { ... } | main.rs:376:49:392:1 | { ... } |
-| main.rs:388:11:388:12 | s2 | main.rs:389:9:389:38 | ...::C {...} |
-| main.rs:388:11:388:12 | s2 | main.rs:390:9:390:38 | ...::D {...} |
-| main.rs:389:36:389:36 | [SSA] n | main.rs:389:48:389:48 | n |
-| main.rs:389:36:389:36 | n | main.rs:389:36:389:36 | [SSA] n |
-| main.rs:389:36:389:36 | n | main.rs:389:36:389:36 | n |
-| main.rs:389:43:389:49 | sink(...) | main.rs:388:5:391:5 | match s2 { ... } |
-| main.rs:390:36:390:36 | [SSA] n | main.rs:390:48:390:48 | n |
-| main.rs:390:36:390:36 | n | main.rs:390:36:390:36 | [SSA] n |
-| main.rs:390:36:390:36 | n | main.rs:390:36:390:36 | n |
-| main.rs:390:43:390:49 | sink(...) | main.rs:388:5:391:5 | match s2 { ... } |
-| main.rs:397:9:397:10 | [SSA] s1 | main.rs:401:11:401:12 | s1 |
-| main.rs:397:9:397:10 | s1 | main.rs:397:9:397:10 | [SSA] s1 |
-| main.rs:397:9:397:10 | s1 | main.rs:397:9:397:10 | s1 |
-| main.rs:397:14:399:5 | C {...} | main.rs:397:9:397:10 | s1 |
-| main.rs:400:9:400:10 | [SSA] s2 | main.rs:408:11:408:12 | s2 |
-| main.rs:400:9:400:10 | s2 | main.rs:400:9:400:10 | [SSA] s2 |
-| main.rs:400:9:400:10 | s2 | main.rs:400:9:400:10 | s2 |
-| main.rs:400:14:400:29 | D {...} | main.rs:400:9:400:10 | s2 |
-| main.rs:401:11:401:12 | s1 | main.rs:402:9:402:24 | C {...} |
-| main.rs:401:11:401:12 | s1 | main.rs:403:9:403:24 | D {...} |
-| main.rs:401:11:401:12 | s1 | main.rs:405:11:405:12 | s1 |
-| main.rs:402:22:402:22 | [SSA] n | main.rs:402:34:402:34 | n |
-| main.rs:402:22:402:22 | n | main.rs:402:22:402:22 | [SSA] n |
-| main.rs:402:22:402:22 | n | main.rs:402:22:402:22 | n |
-| main.rs:402:29:402:35 | sink(...) | main.rs:401:5:404:5 | match s1 { ... } |
-| main.rs:403:22:403:22 | [SSA] n | main.rs:403:34:403:34 | n |
-| main.rs:403:22:403:22 | n | main.rs:403:22:403:22 | [SSA] n |
-| main.rs:403:22:403:22 | n | main.rs:403:22:403:22 | n |
-| main.rs:403:29:403:35 | sink(...) | main.rs:401:5:404:5 | match s1 { ... } |
-| main.rs:405:11:405:12 | s1 | main.rs:406:9:406:43 | ... \| ... |
-| main.rs:406:9:406:43 | ... \| ... | main.rs:406:9:406:24 | C {...} |
-| main.rs:406:9:406:43 | ... \| ... | main.rs:406:28:406:43 | D {...} |
-| main.rs:406:22:406:22 | [SSA] n | main.rs:406:53:406:53 | n |
-| main.rs:406:22:406:22 | n | main.rs:406:22:406:22 | [SSA] n |
-| main.rs:406:22:406:22 | n | main.rs:406:22:406:22 | n |
-| main.rs:406:41:406:41 | [SSA] n | main.rs:406:53:406:53 | n |
-| main.rs:406:41:406:41 | n | main.rs:406:41:406:41 | [SSA] n |
-| main.rs:406:41:406:41 | n | main.rs:406:41:406:41 | n |
-| main.rs:406:48:406:54 | sink(...) | main.rs:405:5:407:5 | match s1 { ... } |
-| main.rs:408:5:411:5 | match s2 { ... } | main.rs:396:51:412:1 | { ... } |
-| main.rs:408:11:408:12 | s2 | main.rs:409:9:409:24 | C {...} |
-| main.rs:408:11:408:12 | s2 | main.rs:410:9:410:24 | D {...} |
-| main.rs:409:22:409:22 | [SSA] n | main.rs:409:34:409:34 | n |
-| main.rs:409:22:409:22 | n | main.rs:409:22:409:22 | [SSA] n |
-| main.rs:409:22:409:22 | n | main.rs:409:22:409:22 | n |
-| main.rs:409:29:409:35 | sink(...) | main.rs:408:5:411:5 | match s2 { ... } |
-| main.rs:410:22:410:22 | [SSA] n | main.rs:410:34:410:34 | n |
-| main.rs:410:22:410:22 | n | main.rs:410:22:410:22 | [SSA] n |
-| main.rs:410:22:410:22 | n | main.rs:410:22:410:22 | n |
-| main.rs:410:29:410:35 | sink(...) | main.rs:408:5:411:5 | match s2 { ... } |
-| main.rs:418:9:418:12 | [SSA] arr1 | main.rs:419:14:419:17 | arr1 |
-| main.rs:418:9:418:12 | arr1 | main.rs:418:9:418:12 | [SSA] arr1 |
-| main.rs:418:9:418:12 | arr1 | main.rs:418:9:418:12 | arr1 |
-| main.rs:418:16:418:33 | [...] | main.rs:418:9:418:12 | arr1 |
-| main.rs:419:9:419:10 | [SSA] n1 | main.rs:420:10:420:11 | n1 |
-| main.rs:419:9:419:10 | n1 | main.rs:419:9:419:10 | [SSA] n1 |
-| main.rs:419:9:419:10 | n1 | main.rs:419:9:419:10 | n1 |
-| main.rs:419:14:419:20 | arr1[2] | main.rs:419:9:419:10 | n1 |
-| main.rs:422:9:422:12 | [SSA] arr2 | main.rs:423:14:423:17 | arr2 |
-| main.rs:422:9:422:12 | arr2 | main.rs:422:9:422:12 | [SSA] arr2 |
-| main.rs:422:9:422:12 | arr2 | main.rs:422:9:422:12 | arr2 |
-| main.rs:422:16:422:31 | [...; 10] | main.rs:422:9:422:12 | arr2 |
-| main.rs:423:9:423:10 | [SSA] n2 | main.rs:424:10:424:11 | n2 |
-| main.rs:423:9:423:10 | n2 | main.rs:423:9:423:10 | [SSA] n2 |
-| main.rs:423:9:423:10 | n2 | main.rs:423:9:423:10 | n2 |
-| main.rs:423:14:423:20 | arr2[4] | main.rs:423:9:423:10 | n2 |
-| main.rs:426:9:426:12 | [SSA] arr3 | main.rs:427:14:427:17 | arr3 |
-| main.rs:426:9:426:12 | arr3 | main.rs:426:9:426:12 | [SSA] arr3 |
-| main.rs:426:9:426:12 | arr3 | main.rs:426:9:426:12 | arr3 |
-| main.rs:426:16:426:24 | [...] | main.rs:426:9:426:12 | arr3 |
-| main.rs:427:9:427:10 | [SSA] n3 | main.rs:428:10:428:11 | n3 |
-| main.rs:427:9:427:10 | n3 | main.rs:427:9:427:10 | [SSA] n3 |
-| main.rs:427:9:427:10 | n3 | main.rs:427:9:427:10 | n3 |
-| main.rs:427:14:427:20 | arr3[2] | main.rs:427:9:427:10 | n3 |
-| main.rs:432:9:432:12 | [SSA] arr1 | main.rs:433:15:433:18 | arr1 |
-| main.rs:432:9:432:12 | arr1 | main.rs:432:9:432:12 | [SSA] arr1 |
-| main.rs:432:9:432:12 | arr1 | main.rs:432:9:432:12 | arr1 |
-| main.rs:432:16:432:33 | [...] | main.rs:432:9:432:12 | arr1 |
-| main.rs:433:9:433:10 | [SSA] n1 | main.rs:434:14:434:15 | n1 |
-| main.rs:433:9:433:10 | n1 | main.rs:433:9:433:10 | [SSA] n1 |
-| main.rs:433:9:433:10 | n1 | main.rs:433:9:433:10 | n1 |
-| main.rs:437:9:437:12 | [SSA] arr2 | main.rs:438:15:438:18 | arr2 |
-| main.rs:437:9:437:12 | arr2 | main.rs:437:9:437:12 | [SSA] arr2 |
-| main.rs:437:9:437:12 | arr2 | main.rs:437:9:437:12 | arr2 |
-| main.rs:437:16:437:24 | [...] | main.rs:437:9:437:12 | arr2 |
-| main.rs:438:5:440:5 | for ... in ... { ... } | main.rs:431:21:441:1 | { ... } |
-| main.rs:438:9:438:10 | [SSA] n2 | main.rs:439:14:439:15 | n2 |
-| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | [SSA] n2 |
-| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 |
-| main.rs:444:9:444:12 | [SSA] arr1 | main.rs:445:11:445:14 | arr1 |
+| main.rs:339:32:339:46 | Err(...) | main.rs:339:9:339:10 | s2 |
+| main.rs:340:10:340:11 | [post] receiver for s2 | main.rs:340:10:340:11 | [post] s2 |
+| main.rs:340:10:340:11 | [post] s2 | main.rs:341:10:341:11 | s2 |
+| main.rs:340:10:340:11 | s2 | main.rs:340:10:340:11 | receiver for s2 |
+| main.rs:340:10:340:11 | s2 | main.rs:341:10:341:11 | s2 |
+| main.rs:341:10:341:11 | [post] receiver for s2 | main.rs:341:10:341:11 | [post] s2 |
+| main.rs:341:10:341:11 | s2 | main.rs:341:10:341:11 | receiver for s2 |
+| main.rs:350:9:350:10 | [SSA] s1 | main.rs:352:11:352:12 | s1 |
+| main.rs:350:9:350:10 | s1 | main.rs:350:9:350:10 | [SSA] s1 |
+| main.rs:350:9:350:10 | s1 | main.rs:350:9:350:10 | s1 |
+| main.rs:350:14:350:39 | ...::A(...) | main.rs:350:9:350:10 | s1 |
+| main.rs:351:9:351:10 | [SSA] s2 | main.rs:359:11:359:12 | s2 |
+| main.rs:351:9:351:10 | s2 | main.rs:351:9:351:10 | [SSA] s2 |
+| main.rs:351:9:351:10 | s2 | main.rs:351:9:351:10 | s2 |
+| main.rs:351:14:351:30 | ...::B(...) | main.rs:351:9:351:10 | s2 |
+| main.rs:352:11:352:12 | s1 | main.rs:353:9:353:25 | ...::A(...) |
+| main.rs:352:11:352:12 | s1 | main.rs:354:9:354:25 | ...::B(...) |
+| main.rs:352:11:352:12 | s1 | main.rs:356:11:356:12 | s1 |
+| main.rs:353:24:353:24 | [SSA] n | main.rs:353:35:353:35 | n |
+| main.rs:353:24:353:24 | n | main.rs:353:24:353:24 | [SSA] n |
+| main.rs:353:24:353:24 | n | main.rs:353:24:353:24 | n |
+| main.rs:353:30:353:36 | sink(...) | main.rs:352:5:355:5 | match s1 { ... } |
+| main.rs:354:24:354:24 | [SSA] n | main.rs:354:35:354:35 | n |
+| main.rs:354:24:354:24 | n | main.rs:354:24:354:24 | [SSA] n |
+| main.rs:354:24:354:24 | n | main.rs:354:24:354:24 | n |
+| main.rs:354:30:354:36 | sink(...) | main.rs:352:5:355:5 | match s1 { ... } |
+| main.rs:356:11:356:12 | s1 | main.rs:357:9:357:45 | ... \| ... |
+| main.rs:357:9:357:45 | ... \| ... | main.rs:357:9:357:25 | ...::A(...) |
+| main.rs:357:9:357:45 | ... \| ... | main.rs:357:29:357:45 | ...::B(...) |
+| main.rs:357:24:357:24 | [SSA] n | main.rs:357:55:357:55 | n |
+| main.rs:357:24:357:24 | n | main.rs:357:24:357:24 | [SSA] n |
+| main.rs:357:24:357:24 | n | main.rs:357:24:357:24 | n |
+| main.rs:357:44:357:44 | [SSA] n | main.rs:357:55:357:55 | n |
+| main.rs:357:44:357:44 | n | main.rs:357:44:357:44 | [SSA] n |
+| main.rs:357:44:357:44 | n | main.rs:357:44:357:44 | n |
+| main.rs:357:50:357:56 | sink(...) | main.rs:356:5:358:5 | match s1 { ... } |
+| main.rs:359:5:362:5 | match s2 { ... } | main.rs:349:48:363:1 | { ... } |
+| main.rs:359:11:359:12 | s2 | main.rs:360:9:360:25 | ...::A(...) |
+| main.rs:359:11:359:12 | s2 | main.rs:361:9:361:25 | ...::B(...) |
+| main.rs:360:24:360:24 | [SSA] n | main.rs:360:35:360:35 | n |
+| main.rs:360:24:360:24 | n | main.rs:360:24:360:24 | [SSA] n |
+| main.rs:360:24:360:24 | n | main.rs:360:24:360:24 | n |
+| main.rs:360:30:360:36 | sink(...) | main.rs:359:5:362:5 | match s2 { ... } |
+| main.rs:361:24:361:24 | [SSA] n | main.rs:361:35:361:35 | n |
+| main.rs:361:24:361:24 | n | main.rs:361:24:361:24 | [SSA] n |
+| main.rs:361:24:361:24 | n | main.rs:361:24:361:24 | n |
+| main.rs:361:30:361:36 | sink(...) | main.rs:359:5:362:5 | match s2 { ... } |
+| main.rs:368:9:368:10 | [SSA] s1 | main.rs:370:11:370:12 | s1 |
+| main.rs:368:9:368:10 | s1 | main.rs:368:9:368:10 | [SSA] s1 |
+| main.rs:368:9:368:10 | s1 | main.rs:368:9:368:10 | s1 |
+| main.rs:368:14:368:26 | A(...) | main.rs:368:9:368:10 | s1 |
+| main.rs:369:9:369:10 | [SSA] s2 | main.rs:377:11:377:12 | s2 |
+| main.rs:369:9:369:10 | s2 | main.rs:369:9:369:10 | [SSA] s2 |
+| main.rs:369:9:369:10 | s2 | main.rs:369:9:369:10 | s2 |
+| main.rs:369:14:369:17 | B(...) | main.rs:369:9:369:10 | s2 |
+| main.rs:370:11:370:12 | s1 | main.rs:371:9:371:12 | A(...) |
+| main.rs:370:11:370:12 | s1 | main.rs:372:9:372:12 | B(...) |
+| main.rs:370:11:370:12 | s1 | main.rs:374:11:374:12 | s1 |
+| main.rs:371:11:371:11 | [SSA] n | main.rs:371:22:371:22 | n |
+| main.rs:371:11:371:11 | n | main.rs:371:11:371:11 | [SSA] n |
+| main.rs:371:11:371:11 | n | main.rs:371:11:371:11 | n |
+| main.rs:371:17:371:23 | sink(...) | main.rs:370:5:373:5 | match s1 { ... } |
+| main.rs:372:11:372:11 | [SSA] n | main.rs:372:22:372:22 | n |
+| main.rs:372:11:372:11 | n | main.rs:372:11:372:11 | [SSA] n |
+| main.rs:372:11:372:11 | n | main.rs:372:11:372:11 | n |
+| main.rs:372:17:372:23 | sink(...) | main.rs:370:5:373:5 | match s1 { ... } |
+| main.rs:374:11:374:12 | s1 | main.rs:375:9:375:19 | ... \| ... |
+| main.rs:375:9:375:19 | ... \| ... | main.rs:375:9:375:12 | A(...) |
+| main.rs:375:9:375:19 | ... \| ... | main.rs:375:16:375:19 | B(...) |
+| main.rs:375:11:375:11 | [SSA] n | main.rs:375:29:375:29 | n |
+| main.rs:375:11:375:11 | n | main.rs:375:11:375:11 | [SSA] n |
+| main.rs:375:11:375:11 | n | main.rs:375:11:375:11 | n |
+| main.rs:375:18:375:18 | [SSA] n | main.rs:375:29:375:29 | n |
+| main.rs:375:18:375:18 | n | main.rs:375:18:375:18 | [SSA] n |
+| main.rs:375:18:375:18 | n | main.rs:375:18:375:18 | n |
+| main.rs:375:24:375:30 | sink(...) | main.rs:374:5:376:5 | match s1 { ... } |
+| main.rs:377:5:380:5 | match s2 { ... } | main.rs:367:50:381:1 | { ... } |
+| main.rs:377:11:377:12 | s2 | main.rs:378:9:378:12 | A(...) |
+| main.rs:377:11:377:12 | s2 | main.rs:379:9:379:12 | B(...) |
+| main.rs:378:11:378:11 | [SSA] n | main.rs:378:22:378:22 | n |
+| main.rs:378:11:378:11 | n | main.rs:378:11:378:11 | [SSA] n |
+| main.rs:378:11:378:11 | n | main.rs:378:11:378:11 | n |
+| main.rs:378:17:378:23 | sink(...) | main.rs:377:5:380:5 | match s2 { ... } |
+| main.rs:379:11:379:11 | [SSA] n | main.rs:379:22:379:22 | n |
+| main.rs:379:11:379:11 | n | main.rs:379:11:379:11 | [SSA] n |
+| main.rs:379:11:379:11 | n | main.rs:379:11:379:11 | n |
+| main.rs:379:17:379:23 | sink(...) | main.rs:377:5:380:5 | match s2 { ... } |
+| main.rs:389:9:389:10 | [SSA] s1 | main.rs:393:11:393:12 | s1 |
+| main.rs:389:9:389:10 | s1 | main.rs:389:9:389:10 | [SSA] s1 |
+| main.rs:389:9:389:10 | s1 | main.rs:389:9:389:10 | s1 |
+| main.rs:389:14:391:5 | ...::C {...} | main.rs:389:9:389:10 | s1 |
+| main.rs:392:9:392:10 | [SSA] s2 | main.rs:400:11:400:12 | s2 |
+| main.rs:392:9:392:10 | s2 | main.rs:392:9:392:10 | [SSA] s2 |
+| main.rs:392:9:392:10 | s2 | main.rs:392:9:392:10 | s2 |
+| main.rs:392:14:392:43 | ...::D {...} | main.rs:392:9:392:10 | s2 |
+| main.rs:393:11:393:12 | s1 | main.rs:394:9:394:38 | ...::C {...} |
+| main.rs:393:11:393:12 | s1 | main.rs:395:9:395:38 | ...::D {...} |
+| main.rs:393:11:393:12 | s1 | main.rs:397:11:397:12 | s1 |
+| main.rs:394:36:394:36 | [SSA] n | main.rs:394:48:394:48 | n |
+| main.rs:394:36:394:36 | n | main.rs:394:36:394:36 | [SSA] n |
+| main.rs:394:36:394:36 | n | main.rs:394:36:394:36 | n |
+| main.rs:394:43:394:49 | sink(...) | main.rs:393:5:396:5 | match s1 { ... } |
+| main.rs:395:36:395:36 | [SSA] n | main.rs:395:48:395:48 | n |
+| main.rs:395:36:395:36 | n | main.rs:395:36:395:36 | [SSA] n |
+| main.rs:395:36:395:36 | n | main.rs:395:36:395:36 | n |
+| main.rs:395:43:395:49 | sink(...) | main.rs:393:5:396:5 | match s1 { ... } |
+| main.rs:397:11:397:12 | s1 | main.rs:398:9:398:71 | ... \| ... |
+| main.rs:398:9:398:71 | ... \| ... | main.rs:398:9:398:38 | ...::C {...} |
+| main.rs:398:9:398:71 | ... \| ... | main.rs:398:42:398:71 | ...::D {...} |
+| main.rs:398:36:398:36 | [SSA] n | main.rs:398:81:398:81 | n |
+| main.rs:398:36:398:36 | n | main.rs:398:36:398:36 | [SSA] n |
+| main.rs:398:36:398:36 | n | main.rs:398:36:398:36 | n |
+| main.rs:398:69:398:69 | [SSA] n | main.rs:398:81:398:81 | n |
+| main.rs:398:69:398:69 | n | main.rs:398:69:398:69 | [SSA] n |
+| main.rs:398:69:398:69 | n | main.rs:398:69:398:69 | n |
+| main.rs:398:76:398:82 | sink(...) | main.rs:397:5:399:5 | match s1 { ... } |
+| main.rs:400:5:403:5 | match s2 { ... } | main.rs:388:49:404:1 | { ... } |
+| main.rs:400:11:400:12 | s2 | main.rs:401:9:401:38 | ...::C {...} |
+| main.rs:400:11:400:12 | s2 | main.rs:402:9:402:38 | ...::D {...} |
+| main.rs:401:36:401:36 | [SSA] n | main.rs:401:48:401:48 | n |
+| main.rs:401:36:401:36 | n | main.rs:401:36:401:36 | [SSA] n |
+| main.rs:401:36:401:36 | n | main.rs:401:36:401:36 | n |
+| main.rs:401:43:401:49 | sink(...) | main.rs:400:5:403:5 | match s2 { ... } |
+| main.rs:402:36:402:36 | [SSA] n | main.rs:402:48:402:48 | n |
+| main.rs:402:36:402:36 | n | main.rs:402:36:402:36 | [SSA] n |
+| main.rs:402:36:402:36 | n | main.rs:402:36:402:36 | n |
+| main.rs:402:43:402:49 | sink(...) | main.rs:400:5:403:5 | match s2 { ... } |
+| main.rs:409:9:409:10 | [SSA] s1 | main.rs:413:11:413:12 | s1 |
+| main.rs:409:9:409:10 | s1 | main.rs:409:9:409:10 | [SSA] s1 |
+| main.rs:409:9:409:10 | s1 | main.rs:409:9:409:10 | s1 |
+| main.rs:409:14:411:5 | C {...} | main.rs:409:9:409:10 | s1 |
+| main.rs:412:9:412:10 | [SSA] s2 | main.rs:420:11:420:12 | s2 |
+| main.rs:412:9:412:10 | s2 | main.rs:412:9:412:10 | [SSA] s2 |
+| main.rs:412:9:412:10 | s2 | main.rs:412:9:412:10 | s2 |
+| main.rs:412:14:412:29 | D {...} | main.rs:412:9:412:10 | s2 |
+| main.rs:413:11:413:12 | s1 | main.rs:414:9:414:24 | C {...} |
+| main.rs:413:11:413:12 | s1 | main.rs:415:9:415:24 | D {...} |
+| main.rs:413:11:413:12 | s1 | main.rs:417:11:417:12 | s1 |
+| main.rs:414:22:414:22 | [SSA] n | main.rs:414:34:414:34 | n |
+| main.rs:414:22:414:22 | n | main.rs:414:22:414:22 | [SSA] n |
+| main.rs:414:22:414:22 | n | main.rs:414:22:414:22 | n |
+| main.rs:414:29:414:35 | sink(...) | main.rs:413:5:416:5 | match s1 { ... } |
+| main.rs:415:22:415:22 | [SSA] n | main.rs:415:34:415:34 | n |
+| main.rs:415:22:415:22 | n | main.rs:415:22:415:22 | [SSA] n |
+| main.rs:415:22:415:22 | n | main.rs:415:22:415:22 | n |
+| main.rs:415:29:415:35 | sink(...) | main.rs:413:5:416:5 | match s1 { ... } |
+| main.rs:417:11:417:12 | s1 | main.rs:418:9:418:43 | ... \| ... |
+| main.rs:418:9:418:43 | ... \| ... | main.rs:418:9:418:24 | C {...} |
+| main.rs:418:9:418:43 | ... \| ... | main.rs:418:28:418:43 | D {...} |
+| main.rs:418:22:418:22 | [SSA] n | main.rs:418:53:418:53 | n |
+| main.rs:418:22:418:22 | n | main.rs:418:22:418:22 | [SSA] n |
+| main.rs:418:22:418:22 | n | main.rs:418:22:418:22 | n |
+| main.rs:418:41:418:41 | [SSA] n | main.rs:418:53:418:53 | n |
+| main.rs:418:41:418:41 | n | main.rs:418:41:418:41 | [SSA] n |
+| main.rs:418:41:418:41 | n | main.rs:418:41:418:41 | n |
+| main.rs:418:48:418:54 | sink(...) | main.rs:417:5:419:5 | match s1 { ... } |
+| main.rs:420:5:423:5 | match s2 { ... } | main.rs:408:51:424:1 | { ... } |
+| main.rs:420:11:420:12 | s2 | main.rs:421:9:421:24 | C {...} |
+| main.rs:420:11:420:12 | s2 | main.rs:422:9:422:24 | D {...} |
+| main.rs:421:22:421:22 | [SSA] n | main.rs:421:34:421:34 | n |
+| main.rs:421:22:421:22 | n | main.rs:421:22:421:22 | [SSA] n |
+| main.rs:421:22:421:22 | n | main.rs:421:22:421:22 | n |
+| main.rs:421:29:421:35 | sink(...) | main.rs:420:5:423:5 | match s2 { ... } |
+| main.rs:422:22:422:22 | [SSA] n | main.rs:422:34:422:34 | n |
+| main.rs:422:22:422:22 | n | main.rs:422:22:422:22 | [SSA] n |
+| main.rs:422:22:422:22 | n | main.rs:422:22:422:22 | n |
+| main.rs:422:29:422:35 | sink(...) | main.rs:420:5:423:5 | match s2 { ... } |
+| main.rs:430:9:430:12 | [SSA] arr1 | main.rs:431:14:431:17 | arr1 |
+| main.rs:430:9:430:12 | arr1 | main.rs:430:9:430:12 | [SSA] arr1 |
+| main.rs:430:9:430:12 | arr1 | main.rs:430:9:430:12 | arr1 |
+| main.rs:430:16:430:33 | [...] | main.rs:430:9:430:12 | arr1 |
+| main.rs:431:9:431:10 | [SSA] n1 | main.rs:432:10:432:11 | n1 |
+| main.rs:431:9:431:10 | n1 | main.rs:431:9:431:10 | [SSA] n1 |
+| main.rs:431:9:431:10 | n1 | main.rs:431:9:431:10 | n1 |
+| main.rs:431:14:431:20 | arr1[2] | main.rs:431:9:431:10 | n1 |
+| main.rs:434:9:434:12 | [SSA] arr2 | main.rs:435:14:435:17 | arr2 |
+| main.rs:434:9:434:12 | arr2 | main.rs:434:9:434:12 | [SSA] arr2 |
+| main.rs:434:9:434:12 | arr2 | main.rs:434:9:434:12 | arr2 |
+| main.rs:434:16:434:31 | [...; 10] | main.rs:434:9:434:12 | arr2 |
+| main.rs:435:9:435:10 | [SSA] n2 | main.rs:436:10:436:11 | n2 |
+| main.rs:435:9:435:10 | n2 | main.rs:435:9:435:10 | [SSA] n2 |
+| main.rs:435:9:435:10 | n2 | main.rs:435:9:435:10 | n2 |
+| main.rs:435:14:435:20 | arr2[4] | main.rs:435:9:435:10 | n2 |
+| main.rs:438:9:438:12 | [SSA] arr3 | main.rs:439:14:439:17 | arr3 |
+| main.rs:438:9:438:12 | arr3 | main.rs:438:9:438:12 | [SSA] arr3 |
+| main.rs:438:9:438:12 | arr3 | main.rs:438:9:438:12 | arr3 |
+| main.rs:438:16:438:24 | [...] | main.rs:438:9:438:12 | arr3 |
+| main.rs:439:9:439:10 | [SSA] n3 | main.rs:440:10:440:11 | n3 |
+| main.rs:439:9:439:10 | n3 | main.rs:439:9:439:10 | [SSA] n3 |
+| main.rs:439:9:439:10 | n3 | main.rs:439:9:439:10 | n3 |
+| main.rs:439:14:439:20 | arr3[2] | main.rs:439:9:439:10 | n3 |
+| main.rs:444:9:444:12 | [SSA] arr1 | main.rs:445:15:445:18 | arr1 |
| main.rs:444:9:444:12 | arr1 | main.rs:444:9:444:12 | [SSA] arr1 |
| main.rs:444:9:444:12 | arr1 | main.rs:444:9:444:12 | arr1 |
| main.rs:444:16:444:33 | [...] | main.rs:444:9:444:12 | arr1 |
-| main.rs:445:5:451:5 | match arr1 { ... } | main.rs:443:26:452:1 | { ... } |
-| main.rs:445:11:445:14 | arr1 | main.rs:446:9:446:17 | SlicePat |
-| main.rs:446:10:446:10 | [SSA] a | main.rs:447:18:447:18 | a |
-| main.rs:446:10:446:10 | a | main.rs:446:10:446:10 | [SSA] a |
-| main.rs:446:10:446:10 | a | main.rs:446:10:446:10 | a |
-| main.rs:446:13:446:13 | [SSA] b | main.rs:448:18:448:18 | b |
-| main.rs:446:13:446:13 | b | main.rs:446:13:446:13 | [SSA] b |
-| main.rs:446:13:446:13 | b | main.rs:446:13:446:13 | b |
-| main.rs:446:16:446:16 | [SSA] c | main.rs:449:18:449:18 | c |
-| main.rs:446:16:446:16 | c | main.rs:446:16:446:16 | [SSA] c |
-| main.rs:446:16:446:16 | c | main.rs:446:16:446:16 | c |
-| main.rs:446:22:450:9 | { ... } | main.rs:445:5:451:5 | match arr1 { ... } |
-| main.rs:455:9:455:19 | mut mut_arr | main.rs:455:13:455:19 | mut_arr |
-| main.rs:455:13:455:19 | [SSA] mut_arr | main.rs:456:10:456:16 | mut_arr |
-| main.rs:455:13:455:19 | mut_arr | main.rs:455:13:455:19 | [SSA] mut_arr |
-| main.rs:455:23:455:31 | [...] | main.rs:455:9:455:19 | mut mut_arr |
-| main.rs:456:10:456:16 | [post] mut_arr | main.rs:458:5:458:11 | mut_arr |
-| main.rs:456:10:456:16 | mut_arr | main.rs:458:5:458:11 | mut_arr |
-| main.rs:458:5:458:11 | [post] mut_arr | main.rs:459:13:459:19 | mut_arr |
-| main.rs:458:5:458:11 | mut_arr | main.rs:459:13:459:19 | mut_arr |
-| main.rs:458:18:458:27 | source(...) | main.rs:458:5:458:14 | mut_arr[1] |
-| main.rs:459:9:459:9 | [SSA] d | main.rs:460:10:460:10 | d |
-| main.rs:459:9:459:9 | d | main.rs:459:9:459:9 | [SSA] d |
-| main.rs:459:9:459:9 | d | main.rs:459:9:459:9 | d |
-| main.rs:459:13:459:19 | [post] mut_arr | main.rs:461:10:461:16 | mut_arr |
-| main.rs:459:13:459:19 | mut_arr | main.rs:461:10:461:16 | mut_arr |
-| main.rs:459:13:459:22 | mut_arr[1] | main.rs:459:9:459:9 | d |
-| main.rs:466:39:466:43 | [SSA] names | main.rs:468:25:468:29 | names |
-| main.rs:466:39:466:43 | names | main.rs:466:39:466:43 | [SSA] names |
-| main.rs:466:39:466:43 | names | main.rs:466:39:466:43 | names |
-| main.rs:466:39:466:72 | ...: Vec::<...> | main.rs:466:39:466:43 | names |
-| main.rs:467:9:467:20 | default_name | main.rs:467:9:467:20 | [SSA] default_name |
-| main.rs:467:9:467:20 | default_name | main.rs:467:9:467:20 | default_name |
-| main.rs:467:24:467:33 | [post] receiver for source(...) | main.rs:467:24:467:33 | [post] source(...) |
-| main.rs:467:24:467:33 | source(...) | main.rs:467:24:467:33 | receiver for source(...) |
-| main.rs:467:24:467:45 | ... .to_string() | main.rs:467:9:467:20 | default_name |
-| main.rs:467:24:467:45 | ... .to_string() | main.rs:468:9:468:20 | SSA phi read(default_name) |
-| main.rs:468:5:474:5 | for ... in ... { ... } | main.rs:466:75:475:1 | { ... } |
-| main.rs:468:9:468:20 | SSA phi read(default_name) | main.rs:470:41:470:67 | default_name |
-| main.rs:468:10:468:13 | [SSA] cond | main.rs:469:12:469:15 | cond |
-| main.rs:468:10:468:13 | cond | main.rs:468:10:468:13 | [SSA] cond |
-| main.rs:468:10:468:13 | cond | main.rs:468:10:468:13 | cond |
-| main.rs:468:16:468:19 | [SSA] name | main.rs:470:21:470:24 | name |
-| main.rs:468:16:468:19 | name | main.rs:468:16:468:19 | [SSA] name |
-| main.rs:468:16:468:19 | name | main.rs:468:16:468:19 | name |
-| main.rs:469:9:473:9 | if cond {...} | main.rs:468:31:474:5 | { ... } |
-| main.rs:470:17:470:17 | [SSA] n | main.rs:471:18:471:18 | n |
-| main.rs:470:17:470:17 | n | main.rs:470:17:470:17 | [SSA] n |
-| main.rs:470:17:470:17 | n | main.rs:470:17:470:17 | n |
-| main.rs:470:21:470:24 | [post] receiver for name | main.rs:470:21:470:24 | [post] name |
-| main.rs:470:21:470:24 | name | main.rs:470:21:470:24 | receiver for name |
-| main.rs:470:21:470:68 | name.unwrap_or_else(...) | main.rs:470:17:470:17 | n |
-| main.rs:470:41:470:67 | [post] default_name | main.rs:468:9:468:20 | SSA phi read(default_name) |
-| main.rs:470:41:470:67 | closure self in \|...\| ... | main.rs:470:44:470:55 | this |
-| main.rs:470:41:470:67 | default_name | main.rs:468:9:468:20 | SSA phi read(default_name) |
-| main.rs:470:44:470:55 | [post] receiver for default_name | main.rs:470:44:470:55 | [post] default_name |
-| main.rs:470:44:470:55 | default_name | main.rs:470:44:470:55 | receiver for default_name |
-| main.rs:471:18:471:18 | [post] receiver for n | main.rs:471:18:471:18 | [post] n |
-| main.rs:471:18:471:18 | n | main.rs:471:18:471:18 | receiver for n |
-| main.rs:484:9:484:9 | [SSA] s | main.rs:485:10:485:10 | s |
-| main.rs:484:9:484:9 | s | main.rs:484:9:484:9 | [SSA] s |
-| main.rs:484:9:484:9 | s | main.rs:484:9:484:9 | s |
-| main.rs:484:13:484:27 | MacroExpr | main.rs:484:9:484:9 | s |
-| main.rs:484:25:484:26 | source(...) | main.rs:484:13:484:27 | MacroExpr |
-| main.rs:488:16:488:16 | [SSA] s | main.rs:489:20:489:20 | s |
-| main.rs:488:16:488:16 | s | main.rs:488:16:488:16 | [SSA] s |
-| main.rs:488:16:488:16 | s | main.rs:488:16:488:16 | s |
-| main.rs:488:16:488:24 | ...: String | main.rs:488:16:488:16 | s |
-| main.rs:489:14:489:20 | FormatArgsExpr | main.rs:489:14:489:20 | MacroExpr |
-| main.rs:489:14:489:20 | MacroBlockExpr | main.rs:489:5:489:21 | MacroExpr |
-| main.rs:489:14:489:20 | [post] MacroExpr | main.rs:489:14:489:20 | [post] FormatArgsExpr |
-| main.rs:489:14:489:20 | { ... } | main.rs:489:14:489:20 | MacroBlockExpr |
-| main.rs:493:9:493:9 | [SSA] a | main.rs:494:13:494:13 | a |
-| main.rs:493:9:493:9 | a | main.rs:493:9:493:9 | [SSA] a |
-| main.rs:493:9:493:9 | a | main.rs:493:9:493:9 | a |
-| main.rs:493:13:493:22 | source(...) | main.rs:493:9:493:9 | a |
-| main.rs:494:9:494:9 | [SSA] b | main.rs:495:13:495:13 | b |
-| main.rs:494:9:494:9 | b | main.rs:494:9:494:9 | [SSA] b |
-| main.rs:494:9:494:9 | b | main.rs:494:9:494:9 | b |
-| main.rs:494:13:494:13 | [post] a | main.rs:498:10:498:10 | a |
-| main.rs:494:13:494:13 | [post] receiver for a | main.rs:494:13:494:13 | [post] a |
-| main.rs:494:13:494:13 | a | main.rs:494:13:494:13 | receiver for a |
-| main.rs:494:13:494:13 | a | main.rs:498:10:498:10 | a |
-| main.rs:494:13:494:25 | a.to_string() | main.rs:494:9:494:9 | b |
-| main.rs:495:9:495:9 | [SSA] c | main.rs:500:10:500:10 | c |
-| main.rs:495:9:495:9 | c | main.rs:495:9:495:9 | [SSA] c |
-| main.rs:495:9:495:9 | c | main.rs:495:9:495:9 | c |
-| main.rs:495:13:495:13 | [post] b | main.rs:496:18:496:18 | b |
-| main.rs:495:13:495:13 | [post] receiver for b | main.rs:495:13:495:13 | [post] b |
-| main.rs:495:13:495:13 | b | main.rs:495:13:495:13 | receiver for b |
-| main.rs:495:13:495:13 | b | main.rs:496:18:496:18 | b |
-| main.rs:495:13:495:28 | [post] receiver for b.parse() | main.rs:495:13:495:28 | [post] b.parse() |
-| main.rs:495:13:495:28 | b.parse() | main.rs:495:13:495:28 | receiver for b.parse() |
-| main.rs:495:13:495:37 | ... .unwrap() | main.rs:495:9:495:9 | c |
-| main.rs:496:9:496:9 | [SSA] d | main.rs:501:10:501:10 | d |
-| main.rs:496:9:496:9 | d | main.rs:496:9:496:9 | [SSA] d |
-| main.rs:496:9:496:9 | d | main.rs:496:9:496:9 | d |
-| main.rs:496:18:496:18 | [post] b | main.rs:499:17:499:17 | b |
-| main.rs:496:18:496:18 | [post] receiver for b | main.rs:496:18:496:18 | [post] b |
-| main.rs:496:18:496:18 | b | main.rs:496:18:496:18 | receiver for b |
-| main.rs:496:18:496:18 | b | main.rs:499:17:499:17 | b |
-| main.rs:496:18:496:26 | [post] receiver for b.parse() | main.rs:496:18:496:26 | [post] b.parse() |
-| main.rs:496:18:496:26 | b.parse() | main.rs:496:18:496:26 | receiver for b.parse() |
-| main.rs:496:18:496:35 | ... .unwrap() | main.rs:496:9:496:9 | d |
-| main.rs:505:9:505:10 | [SSA] vs | main.rs:507:10:507:11 | vs |
-| main.rs:505:9:505:10 | vs | main.rs:505:9:505:10 | [SSA] vs |
-| main.rs:505:9:505:10 | vs | main.rs:505:9:505:10 | vs |
-| main.rs:505:14:505:34 | [...] | main.rs:505:9:505:10 | vs |
-| main.rs:507:10:507:11 | [post] vs | main.rs:508:11:508:12 | vs |
-| main.rs:507:10:507:11 | vs | main.rs:508:11:508:12 | vs |
-| main.rs:508:11:508:12 | [post] receiver for vs | main.rs:508:11:508:12 | [post] vs |
-| main.rs:508:11:508:12 | [post] vs | main.rs:509:11:509:12 | vs |
-| main.rs:508:11:508:12 | vs | main.rs:508:11:508:12 | receiver for vs |
-| main.rs:508:11:508:12 | vs | main.rs:509:11:509:12 | vs |
-| main.rs:508:11:508:19 | [post] receiver for vs.iter() | main.rs:508:11:508:19 | [post] vs.iter() |
-| main.rs:508:11:508:19 | vs.iter() | main.rs:508:11:508:19 | receiver for vs.iter() |
-| main.rs:508:11:508:26 | ... .next() | main.rs:508:11:508:26 | receiver for ... .next() |
-| main.rs:508:11:508:26 | [post] receiver for ... .next() | main.rs:508:11:508:26 | [post] ... .next() |
-| main.rs:508:11:508:35 | ... .unwrap() | main.rs:508:11:508:35 | receiver for ... .unwrap() |
-| main.rs:508:11:508:35 | [post] receiver for ... .unwrap() | main.rs:508:11:508:35 | [post] ... .unwrap() |
-| main.rs:509:11:509:12 | [post] receiver for vs | main.rs:509:11:509:12 | [post] vs |
-| main.rs:509:11:509:12 | [post] vs | main.rs:511:14:511:15 | vs |
-| main.rs:509:11:509:12 | vs | main.rs:509:11:509:12 | receiver for vs |
-| main.rs:509:11:509:12 | vs | main.rs:511:14:511:15 | vs |
-| main.rs:509:11:509:19 | [post] receiver for vs.iter() | main.rs:509:11:509:19 | [post] vs.iter() |
-| main.rs:509:11:509:19 | vs.iter() | main.rs:509:11:509:19 | receiver for vs.iter() |
-| main.rs:509:11:509:26 | ... .nth(...) | main.rs:509:11:509:26 | receiver for ... .nth(...) |
-| main.rs:509:11:509:26 | [post] receiver for ... .nth(...) | main.rs:509:11:509:26 | [post] ... .nth(...) |
-| main.rs:509:11:509:35 | ... .unwrap() | main.rs:509:11:509:35 | receiver for ... .unwrap() |
-| main.rs:509:11:509:35 | [post] receiver for ... .unwrap() | main.rs:509:11:509:35 | [post] ... .unwrap() |
-| main.rs:511:9:511:9 | [SSA] v | main.rs:512:14:512:14 | v |
-| main.rs:511:9:511:9 | v | main.rs:511:9:511:9 | [SSA] v |
-| main.rs:511:9:511:9 | v | main.rs:511:9:511:9 | v |
-| main.rs:511:14:511:15 | vs | main.rs:514:15:514:16 | vs |
-| main.rs:514:10:514:10 | [SSA] v | main.rs:515:14:515:14 | v |
-| main.rs:514:10:514:10 | v | main.rs:514:10:514:10 | [SSA] v |
-| main.rs:514:10:514:10 | v | main.rs:514:10:514:10 | v |
-| main.rs:514:15:514:16 | [post] receiver for vs | main.rs:514:15:514:16 | [post] vs |
-| main.rs:514:15:514:16 | [post] vs | main.rs:518:26:518:27 | vs |
-| main.rs:514:15:514:16 | vs | main.rs:514:15:514:16 | receiver for vs |
-| main.rs:514:15:514:16 | vs | main.rs:518:26:518:27 | vs |
-| main.rs:518:9:518:11 | [SSA] vs2 | main.rs:519:15:519:17 | vs2 |
-| main.rs:518:9:518:11 | vs2 | main.rs:518:9:518:11 | [SSA] vs2 |
-| main.rs:518:9:518:11 | vs2 | main.rs:518:9:518:11 | vs2 |
-| main.rs:518:26:518:27 | [post] receiver for vs | main.rs:518:26:518:27 | [post] vs |
-| main.rs:518:26:518:27 | [post] vs | main.rs:523:5:523:6 | vs |
-| main.rs:518:26:518:27 | vs | main.rs:518:26:518:27 | receiver for vs |
-| main.rs:518:26:518:27 | vs | main.rs:523:5:523:6 | vs |
-| main.rs:518:26:518:34 | [post] receiver for vs.iter() | main.rs:518:26:518:34 | [post] vs.iter() |
-| main.rs:518:26:518:34 | vs.iter() | main.rs:518:26:518:34 | receiver for vs.iter() |
-| main.rs:518:26:518:44 | ... .collect() | main.rs:518:9:518:11 | vs2 |
-| main.rs:519:10:519:10 | [SSA] v | main.rs:520:14:520:14 | v |
-| main.rs:519:10:519:10 | v | main.rs:519:10:519:10 | [SSA] v |
-| main.rs:519:10:519:10 | v | main.rs:519:10:519:10 | v |
-| main.rs:523:5:523:6 | [post] receiver for vs | main.rs:523:5:523:6 | [post] vs |
-| main.rs:523:5:523:6 | [post] vs | main.rs:524:5:524:6 | vs |
-| main.rs:523:5:523:6 | vs | main.rs:523:5:523:6 | receiver for vs |
-| main.rs:523:5:523:6 | vs | main.rs:524:5:524:6 | vs |
-| main.rs:523:5:523:13 | [post] receiver for vs.iter() | main.rs:523:5:523:13 | [post] vs.iter() |
-| main.rs:523:5:523:13 | vs.iter() | main.rs:523:5:523:13 | receiver for vs.iter() |
-| main.rs:523:20:523:20 | ... | main.rs:523:20:523:20 | x |
-| main.rs:523:20:523:20 | [SSA] x | main.rs:523:29:523:29 | x |
-| main.rs:523:20:523:20 | x | main.rs:523:20:523:20 | [SSA] x |
-| main.rs:523:20:523:20 | x | main.rs:523:20:523:20 | x |
-| main.rs:523:29:523:29 | [post] receiver for x | main.rs:523:29:523:29 | [post] x |
-| main.rs:523:29:523:29 | x | main.rs:523:29:523:29 | receiver for x |
-| main.rs:524:5:524:6 | [post] receiver for vs | main.rs:524:5:524:6 | [post] vs |
-| main.rs:524:5:524:6 | [post] vs | main.rs:526:14:526:15 | vs |
-| main.rs:524:5:524:6 | vs | main.rs:524:5:524:6 | receiver for vs |
-| main.rs:524:5:524:6 | vs | main.rs:526:14:526:15 | vs |
-| main.rs:524:5:524:13 | [post] receiver for vs.iter() | main.rs:524:5:524:13 | [post] vs.iter() |
-| main.rs:524:5:524:13 | vs.iter() | main.rs:524:5:524:13 | receiver for vs.iter() |
-| main.rs:524:25:524:25 | ... | main.rs:524:25:524:25 | x |
-| main.rs:524:25:524:25 | [SSA] x | main.rs:524:34:524:34 | x |
-| main.rs:524:25:524:25 | x | main.rs:524:25:524:25 | [SSA] x |
-| main.rs:524:25:524:25 | x | main.rs:524:25:524:25 | x |
-| main.rs:524:34:524:34 | [post] receiver for x | main.rs:524:34:524:34 | [post] x |
-| main.rs:524:34:524:34 | x | main.rs:524:34:524:34 | receiver for x |
-| main.rs:526:9:526:9 | [SSA] v | main.rs:527:14:527:14 | v |
-| main.rs:526:9:526:9 | v | main.rs:526:9:526:9 | [SSA] v |
-| main.rs:526:9:526:9 | v | main.rs:526:9:526:9 | v |
-| main.rs:526:14:526:15 | [post] receiver for vs | main.rs:526:14:526:15 | [post] vs |
-| main.rs:526:14:526:15 | vs | main.rs:526:14:526:15 | receiver for vs |
-| main.rs:530:9:530:18 | mut vs_mut | main.rs:530:13:530:18 | vs_mut |
-| main.rs:530:13:530:18 | [SSA] vs_mut | main.rs:532:10:532:15 | vs_mut |
-| main.rs:530:13:530:18 | vs_mut | main.rs:530:13:530:18 | [SSA] vs_mut |
-| main.rs:530:22:530:42 | [...] | main.rs:530:9:530:18 | mut vs_mut |
-| main.rs:532:10:532:15 | [post] vs_mut | main.rs:533:11:533:16 | [SSA] vs_mut |
-| main.rs:532:10:532:15 | [post] vs_mut | main.rs:533:11:533:16 | vs_mut |
-| main.rs:532:10:532:15 | vs_mut | main.rs:533:11:533:16 | [SSA] vs_mut |
-| main.rs:532:10:532:15 | vs_mut | main.rs:533:11:533:16 | vs_mut |
-| main.rs:533:11:533:16 | [SSA] vs_mut | main.rs:534:11:534:16 | [SSA] vs_mut |
-| main.rs:533:11:533:16 | [SSA] vs_mut | main.rs:534:11:534:16 | vs_mut |
-| main.rs:533:11:533:16 | [post] receiver for vs_mut | main.rs:533:11:533:16 | [post] vs_mut |
-| main.rs:533:11:533:16 | [post] vs_mut | main.rs:534:11:534:16 | [SSA] vs_mut |
-| main.rs:533:11:533:16 | [post] vs_mut | main.rs:534:11:534:16 | vs_mut |
-| main.rs:533:11:533:16 | vs_mut | main.rs:533:11:533:16 | receiver for vs_mut |
-| main.rs:533:11:533:16 | vs_mut | main.rs:534:11:534:16 | [SSA] vs_mut |
-| main.rs:533:11:533:16 | vs_mut | main.rs:534:11:534:16 | vs_mut |
-| main.rs:533:11:533:23 | [post] receiver for vs_mut.iter() | main.rs:533:11:533:23 | [post] vs_mut.iter() |
-| main.rs:533:11:533:23 | vs_mut.iter() | main.rs:533:11:533:23 | receiver for vs_mut.iter() |
-| main.rs:533:11:533:30 | ... .next() | main.rs:533:11:533:30 | receiver for ... .next() |
-| main.rs:533:11:533:30 | [post] receiver for ... .next() | main.rs:533:11:533:30 | [post] ... .next() |
-| main.rs:533:11:533:39 | ... .unwrap() | main.rs:533:11:533:39 | receiver for ... .unwrap() |
-| main.rs:533:11:533:39 | [post] receiver for ... .unwrap() | main.rs:533:11:533:39 | [post] ... .unwrap() |
-| main.rs:534:11:534:16 | [SSA] vs_mut | main.rs:536:19:536:24 | vs_mut |
-| main.rs:534:11:534:16 | [post] receiver for vs_mut | main.rs:534:11:534:16 | [post] vs_mut |
-| main.rs:534:11:534:16 | [post] vs_mut | main.rs:536:19:536:24 | vs_mut |
-| main.rs:534:11:534:16 | vs_mut | main.rs:534:11:534:16 | receiver for vs_mut |
-| main.rs:534:11:534:16 | vs_mut | main.rs:536:19:536:24 | vs_mut |
-| main.rs:534:11:534:23 | [post] receiver for vs_mut.iter() | main.rs:534:11:534:23 | [post] vs_mut.iter() |
-| main.rs:534:11:534:23 | vs_mut.iter() | main.rs:534:11:534:23 | receiver for vs_mut.iter() |
-| main.rs:534:11:534:30 | ... .nth(...) | main.rs:534:11:534:30 | receiver for ... .nth(...) |
-| main.rs:534:11:534:30 | [post] receiver for ... .nth(...) | main.rs:534:11:534:30 | [post] ... .nth(...) |
-| main.rs:534:11:534:39 | ... .unwrap() | main.rs:534:11:534:39 | receiver for ... .unwrap() |
-| main.rs:534:11:534:39 | [post] receiver for ... .unwrap() | main.rs:534:11:534:39 | [post] ... .unwrap() |
-| main.rs:536:5:538:5 | for ... in ... { ... } | main.rs:504:16:539:1 | { ... } |
-| main.rs:536:14:536:14 | [SSA] v | main.rs:537:14:537:14 | v |
-| main.rs:536:14:536:14 | v | main.rs:536:14:536:14 | [SSA] v |
-| main.rs:536:14:536:14 | v | main.rs:536:14:536:14 | v |
-| main.rs:536:19:536:24 | [post] receiver for vs_mut | main.rs:536:19:536:24 | [post] vs_mut |
-| main.rs:536:19:536:24 | vs_mut | main.rs:536:19:536:24 | receiver for vs_mut |
-| main.rs:542:9:542:9 | [SSA] a | main.rs:547:10:547:10 | a |
-| main.rs:542:9:542:9 | a | main.rs:542:9:542:9 | [SSA] a |
-| main.rs:542:9:542:9 | a | main.rs:542:9:542:9 | a |
-| main.rs:542:13:542:22 | source(...) | main.rs:542:9:542:9 | a |
-| main.rs:543:9:543:9 | [SSA] b | main.rs:548:15:548:15 | b |
-| main.rs:543:9:543:9 | b | main.rs:543:9:543:9 | [SSA] b |
-| main.rs:543:9:543:9 | b | main.rs:543:9:543:9 | b |
-| main.rs:543:13:543:22 | source(...) | main.rs:543:9:543:9 | b |
-| main.rs:544:9:544:9 | [SSA] c | main.rs:545:18:545:18 | c |
-| main.rs:544:9:544:9 | c | main.rs:544:9:544:9 | [SSA] c |
-| main.rs:544:9:544:9 | c | main.rs:544:9:544:9 | c |
-| main.rs:544:13:544:22 | source(...) | main.rs:544:9:544:9 | c |
-| main.rs:545:9:545:13 | [SSA] c_ref | main.rs:549:14:549:18 | c_ref |
-| main.rs:545:9:545:13 | c_ref | main.rs:545:9:545:13 | [SSA] c_ref |
-| main.rs:545:9:545:13 | c_ref | main.rs:545:9:545:13 | c_ref |
-| main.rs:545:17:545:18 | &c | main.rs:545:9:545:13 | c_ref |
-| main.rs:549:14:549:18 | [post] c_ref | main.rs:550:11:550:15 | c_ref |
-| main.rs:549:14:549:18 | c_ref | main.rs:550:11:550:15 | c_ref |
-| main.rs:550:11:550:15 | [post] receiver for c_ref | main.rs:550:11:550:15 | [post] c_ref |
-| main.rs:550:11:550:15 | c_ref | main.rs:550:11:550:15 | receiver for c_ref |
-| main.rs:554:9:554:9 | [SSA] a | main.rs:556:10:556:10 | a |
+| main.rs:445:9:445:10 | [SSA] n1 | main.rs:446:14:446:15 | n1 |
+| main.rs:445:9:445:10 | n1 | main.rs:445:9:445:10 | [SSA] n1 |
+| main.rs:445:9:445:10 | n1 | main.rs:445:9:445:10 | n1 |
+| main.rs:449:9:449:12 | [SSA] arr2 | main.rs:450:15:450:18 | arr2 |
+| main.rs:449:9:449:12 | arr2 | main.rs:449:9:449:12 | [SSA] arr2 |
+| main.rs:449:9:449:12 | arr2 | main.rs:449:9:449:12 | arr2 |
+| main.rs:449:16:449:24 | [...] | main.rs:449:9:449:12 | arr2 |
+| main.rs:450:5:452:5 | for ... in ... { ... } | main.rs:443:21:453:1 | { ... } |
+| main.rs:450:9:450:10 | [SSA] n2 | main.rs:451:14:451:15 | n2 |
+| main.rs:450:9:450:10 | n2 | main.rs:450:9:450:10 | [SSA] n2 |
+| main.rs:450:9:450:10 | n2 | main.rs:450:9:450:10 | n2 |
+| main.rs:456:9:456:12 | [SSA] arr1 | main.rs:457:11:457:14 | arr1 |
+| main.rs:456:9:456:12 | arr1 | main.rs:456:9:456:12 | [SSA] arr1 |
+| main.rs:456:9:456:12 | arr1 | main.rs:456:9:456:12 | arr1 |
+| main.rs:456:16:456:33 | [...] | main.rs:456:9:456:12 | arr1 |
+| main.rs:457:5:463:5 | match arr1 { ... } | main.rs:455:26:464:1 | { ... } |
+| main.rs:457:11:457:14 | arr1 | main.rs:458:9:458:17 | SlicePat |
+| main.rs:458:10:458:10 | [SSA] a | main.rs:459:18:459:18 | a |
+| main.rs:458:10:458:10 | a | main.rs:458:10:458:10 | [SSA] a |
+| main.rs:458:10:458:10 | a | main.rs:458:10:458:10 | a |
+| main.rs:458:13:458:13 | [SSA] b | main.rs:460:18:460:18 | b |
+| main.rs:458:13:458:13 | b | main.rs:458:13:458:13 | [SSA] b |
+| main.rs:458:13:458:13 | b | main.rs:458:13:458:13 | b |
+| main.rs:458:16:458:16 | [SSA] c | main.rs:461:18:461:18 | c |
+| main.rs:458:16:458:16 | c | main.rs:458:16:458:16 | [SSA] c |
+| main.rs:458:16:458:16 | c | main.rs:458:16:458:16 | c |
+| main.rs:458:22:462:9 | { ... } | main.rs:457:5:463:5 | match arr1 { ... } |
+| main.rs:467:9:467:19 | mut mut_arr | main.rs:467:13:467:19 | mut_arr |
+| main.rs:467:13:467:19 | [SSA] mut_arr | main.rs:468:10:468:16 | mut_arr |
+| main.rs:467:13:467:19 | mut_arr | main.rs:467:13:467:19 | [SSA] mut_arr |
+| main.rs:467:23:467:31 | [...] | main.rs:467:9:467:19 | mut mut_arr |
+| main.rs:468:10:468:16 | [post] mut_arr | main.rs:470:5:470:11 | mut_arr |
+| main.rs:468:10:468:16 | mut_arr | main.rs:470:5:470:11 | mut_arr |
+| main.rs:470:5:470:11 | [post] mut_arr | main.rs:471:13:471:19 | mut_arr |
+| main.rs:470:5:470:11 | mut_arr | main.rs:471:13:471:19 | mut_arr |
+| main.rs:470:18:470:27 | source(...) | main.rs:470:5:470:14 | mut_arr[1] |
+| main.rs:471:9:471:9 | [SSA] d | main.rs:472:10:472:10 | d |
+| main.rs:471:9:471:9 | d | main.rs:471:9:471:9 | [SSA] d |
+| main.rs:471:9:471:9 | d | main.rs:471:9:471:9 | d |
+| main.rs:471:13:471:19 | [post] mut_arr | main.rs:473:10:473:16 | mut_arr |
+| main.rs:471:13:471:19 | mut_arr | main.rs:473:10:473:16 | mut_arr |
+| main.rs:471:13:471:22 | mut_arr[1] | main.rs:471:9:471:9 | d |
+| main.rs:478:39:478:43 | [SSA] names | main.rs:480:25:480:29 | names |
+| main.rs:478:39:478:43 | names | main.rs:478:39:478:43 | [SSA] names |
+| main.rs:478:39:478:43 | names | main.rs:478:39:478:43 | names |
+| main.rs:478:39:478:72 | ...: Vec::<...> | main.rs:478:39:478:43 | names |
+| main.rs:479:9:479:20 | default_name | main.rs:479:9:479:20 | [SSA] default_name |
+| main.rs:479:9:479:20 | default_name | main.rs:479:9:479:20 | default_name |
+| main.rs:479:24:479:33 | [post] receiver for source(...) | main.rs:479:24:479:33 | [post] source(...) |
+| main.rs:479:24:479:33 | source(...) | main.rs:479:24:479:33 | receiver for source(...) |
+| main.rs:479:24:479:45 | ... .to_string() | main.rs:479:9:479:20 | default_name |
+| main.rs:479:24:479:45 | ... .to_string() | main.rs:480:9:480:20 | SSA phi read(default_name) |
+| main.rs:480:5:486:5 | for ... in ... { ... } | main.rs:478:75:487:1 | { ... } |
+| main.rs:480:9:480:20 | SSA phi read(default_name) | main.rs:482:41:482:67 | default_name |
+| main.rs:480:10:480:13 | [SSA] cond | main.rs:481:12:481:15 | cond |
+| main.rs:480:10:480:13 | cond | main.rs:480:10:480:13 | [SSA] cond |
+| main.rs:480:10:480:13 | cond | main.rs:480:10:480:13 | cond |
+| main.rs:480:16:480:19 | [SSA] name | main.rs:482:21:482:24 | name |
+| main.rs:480:16:480:19 | name | main.rs:480:16:480:19 | [SSA] name |
+| main.rs:480:16:480:19 | name | main.rs:480:16:480:19 | name |
+| main.rs:481:9:485:9 | if cond {...} | main.rs:480:31:486:5 | { ... } |
+| main.rs:482:17:482:17 | [SSA] n | main.rs:483:18:483:18 | n |
+| main.rs:482:17:482:17 | n | main.rs:482:17:482:17 | [SSA] n |
+| main.rs:482:17:482:17 | n | main.rs:482:17:482:17 | n |
+| main.rs:482:21:482:24 | [post] receiver for name | main.rs:482:21:482:24 | [post] name |
+| main.rs:482:21:482:24 | name | main.rs:482:21:482:24 | receiver for name |
+| main.rs:482:21:482:68 | name.unwrap_or_else(...) | main.rs:482:17:482:17 | n |
+| main.rs:482:41:482:67 | [post] default_name | main.rs:480:9:480:20 | SSA phi read(default_name) |
+| main.rs:482:41:482:67 | closure self in \|...\| ... | main.rs:482:44:482:55 | this |
+| main.rs:482:41:482:67 | default_name | main.rs:480:9:480:20 | SSA phi read(default_name) |
+| main.rs:482:44:482:55 | [post] receiver for default_name | main.rs:482:44:482:55 | [post] default_name |
+| main.rs:482:44:482:55 | default_name | main.rs:482:44:482:55 | receiver for default_name |
+| main.rs:483:18:483:18 | [post] receiver for n | main.rs:483:18:483:18 | [post] n |
+| main.rs:483:18:483:18 | n | main.rs:483:18:483:18 | receiver for n |
+| main.rs:496:9:496:9 | [SSA] s | main.rs:497:10:497:10 | s |
+| main.rs:496:9:496:9 | s | main.rs:496:9:496:9 | [SSA] s |
+| main.rs:496:9:496:9 | s | main.rs:496:9:496:9 | s |
+| main.rs:496:13:496:27 | MacroExpr | main.rs:496:9:496:9 | s |
+| main.rs:496:25:496:26 | source(...) | main.rs:496:13:496:27 | MacroExpr |
+| main.rs:500:16:500:16 | [SSA] s | main.rs:501:20:501:20 | s |
+| main.rs:500:16:500:16 | s | main.rs:500:16:500:16 | [SSA] s |
+| main.rs:500:16:500:16 | s | main.rs:500:16:500:16 | s |
+| main.rs:500:16:500:24 | ...: String | main.rs:500:16:500:16 | s |
+| main.rs:501:14:501:20 | FormatArgsExpr | main.rs:501:14:501:20 | MacroExpr |
+| main.rs:501:14:501:20 | MacroBlockExpr | main.rs:501:5:501:21 | MacroExpr |
+| main.rs:501:14:501:20 | [post] MacroExpr | main.rs:501:14:501:20 | [post] FormatArgsExpr |
+| main.rs:501:14:501:20 | { ... } | main.rs:501:14:501:20 | MacroBlockExpr |
+| main.rs:505:9:505:9 | [SSA] a | main.rs:506:13:506:13 | a |
+| main.rs:505:9:505:9 | a | main.rs:505:9:505:9 | [SSA] a |
+| main.rs:505:9:505:9 | a | main.rs:505:9:505:9 | a |
+| main.rs:505:13:505:22 | source(...) | main.rs:505:9:505:9 | a |
+| main.rs:506:9:506:9 | [SSA] b | main.rs:507:13:507:13 | b |
+| main.rs:506:9:506:9 | b | main.rs:506:9:506:9 | [SSA] b |
+| main.rs:506:9:506:9 | b | main.rs:506:9:506:9 | b |
+| main.rs:506:13:506:13 | [post] a | main.rs:510:10:510:10 | a |
+| main.rs:506:13:506:13 | [post] receiver for a | main.rs:506:13:506:13 | [post] a |
+| main.rs:506:13:506:13 | a | main.rs:506:13:506:13 | receiver for a |
+| main.rs:506:13:506:13 | a | main.rs:510:10:510:10 | a |
+| main.rs:506:13:506:25 | a.to_string() | main.rs:506:9:506:9 | b |
+| main.rs:507:9:507:9 | [SSA] c | main.rs:512:10:512:10 | c |
+| main.rs:507:9:507:9 | c | main.rs:507:9:507:9 | [SSA] c |
+| main.rs:507:9:507:9 | c | main.rs:507:9:507:9 | c |
+| main.rs:507:13:507:13 | [post] b | main.rs:508:18:508:18 | b |
+| main.rs:507:13:507:13 | [post] receiver for b | main.rs:507:13:507:13 | [post] b |
+| main.rs:507:13:507:13 | b | main.rs:507:13:507:13 | receiver for b |
+| main.rs:507:13:507:13 | b | main.rs:508:18:508:18 | b |
+| main.rs:507:13:507:28 | [post] receiver for b.parse() | main.rs:507:13:507:28 | [post] b.parse() |
+| main.rs:507:13:507:28 | b.parse() | main.rs:507:13:507:28 | receiver for b.parse() |
+| main.rs:507:13:507:37 | ... .unwrap() | main.rs:507:9:507:9 | c |
+| main.rs:508:9:508:9 | [SSA] d | main.rs:513:10:513:10 | d |
+| main.rs:508:9:508:9 | d | main.rs:508:9:508:9 | [SSA] d |
+| main.rs:508:9:508:9 | d | main.rs:508:9:508:9 | d |
+| main.rs:508:18:508:18 | [post] b | main.rs:511:17:511:17 | b |
+| main.rs:508:18:508:18 | [post] receiver for b | main.rs:508:18:508:18 | [post] b |
+| main.rs:508:18:508:18 | b | main.rs:508:18:508:18 | receiver for b |
+| main.rs:508:18:508:18 | b | main.rs:511:17:511:17 | b |
+| main.rs:508:18:508:26 | [post] receiver for b.parse() | main.rs:508:18:508:26 | [post] b.parse() |
+| main.rs:508:18:508:26 | b.parse() | main.rs:508:18:508:26 | receiver for b.parse() |
+| main.rs:508:18:508:35 | ... .unwrap() | main.rs:508:9:508:9 | d |
+| main.rs:517:9:517:10 | [SSA] vs | main.rs:519:10:519:11 | vs |
+| main.rs:517:9:517:10 | vs | main.rs:517:9:517:10 | [SSA] vs |
+| main.rs:517:9:517:10 | vs | main.rs:517:9:517:10 | vs |
+| main.rs:517:14:517:34 | [...] | main.rs:517:9:517:10 | vs |
+| main.rs:519:10:519:11 | [post] vs | main.rs:520:11:520:12 | vs |
+| main.rs:519:10:519:11 | vs | main.rs:520:11:520:12 | vs |
+| main.rs:520:11:520:12 | [post] receiver for vs | main.rs:520:11:520:12 | [post] vs |
+| main.rs:520:11:520:12 | [post] vs | main.rs:521:11:521:12 | vs |
+| main.rs:520:11:520:12 | vs | main.rs:520:11:520:12 | receiver for vs |
+| main.rs:520:11:520:12 | vs | main.rs:521:11:521:12 | vs |
+| main.rs:520:11:520:19 | [post] receiver for vs.iter() | main.rs:520:11:520:19 | [post] vs.iter() |
+| main.rs:520:11:520:19 | vs.iter() | main.rs:520:11:520:19 | receiver for vs.iter() |
+| main.rs:520:11:520:26 | ... .next() | main.rs:520:11:520:26 | receiver for ... .next() |
+| main.rs:520:11:520:26 | [post] receiver for ... .next() | main.rs:520:11:520:26 | [post] ... .next() |
+| main.rs:520:11:520:35 | ... .unwrap() | main.rs:520:11:520:35 | receiver for ... .unwrap() |
+| main.rs:520:11:520:35 | [post] receiver for ... .unwrap() | main.rs:520:11:520:35 | [post] ... .unwrap() |
+| main.rs:521:11:521:12 | [post] receiver for vs | main.rs:521:11:521:12 | [post] vs |
+| main.rs:521:11:521:12 | [post] vs | main.rs:523:14:523:15 | vs |
+| main.rs:521:11:521:12 | vs | main.rs:521:11:521:12 | receiver for vs |
+| main.rs:521:11:521:12 | vs | main.rs:523:14:523:15 | vs |
+| main.rs:521:11:521:19 | [post] receiver for vs.iter() | main.rs:521:11:521:19 | [post] vs.iter() |
+| main.rs:521:11:521:19 | vs.iter() | main.rs:521:11:521:19 | receiver for vs.iter() |
+| main.rs:521:11:521:26 | ... .nth(...) | main.rs:521:11:521:26 | receiver for ... .nth(...) |
+| main.rs:521:11:521:26 | [post] receiver for ... .nth(...) | main.rs:521:11:521:26 | [post] ... .nth(...) |
+| main.rs:521:11:521:35 | ... .unwrap() | main.rs:521:11:521:35 | receiver for ... .unwrap() |
+| main.rs:521:11:521:35 | [post] receiver for ... .unwrap() | main.rs:521:11:521:35 | [post] ... .unwrap() |
+| main.rs:523:9:523:9 | [SSA] v | main.rs:524:14:524:14 | v |
+| main.rs:523:9:523:9 | v | main.rs:523:9:523:9 | [SSA] v |
+| main.rs:523:9:523:9 | v | main.rs:523:9:523:9 | v |
+| main.rs:523:14:523:15 | vs | main.rs:526:15:526:16 | vs |
+| main.rs:526:10:526:10 | [SSA] v | main.rs:527:14:527:14 | v |
+| main.rs:526:10:526:10 | v | main.rs:526:10:526:10 | [SSA] v |
+| main.rs:526:10:526:10 | v | main.rs:526:10:526:10 | v |
+| main.rs:526:15:526:16 | [post] receiver for vs | main.rs:526:15:526:16 | [post] vs |
+| main.rs:526:15:526:16 | [post] vs | main.rs:530:26:530:27 | vs |
+| main.rs:526:15:526:16 | vs | main.rs:526:15:526:16 | receiver for vs |
+| main.rs:526:15:526:16 | vs | main.rs:530:26:530:27 | vs |
+| main.rs:530:9:530:11 | [SSA] vs2 | main.rs:531:15:531:17 | vs2 |
+| main.rs:530:9:530:11 | vs2 | main.rs:530:9:530:11 | [SSA] vs2 |
+| main.rs:530:9:530:11 | vs2 | main.rs:530:9:530:11 | vs2 |
+| main.rs:530:26:530:27 | [post] receiver for vs | main.rs:530:26:530:27 | [post] vs |
+| main.rs:530:26:530:27 | [post] vs | main.rs:535:5:535:6 | vs |
+| main.rs:530:26:530:27 | vs | main.rs:530:26:530:27 | receiver for vs |
+| main.rs:530:26:530:27 | vs | main.rs:535:5:535:6 | vs |
+| main.rs:530:26:530:34 | [post] receiver for vs.iter() | main.rs:530:26:530:34 | [post] vs.iter() |
+| main.rs:530:26:530:34 | vs.iter() | main.rs:530:26:530:34 | receiver for vs.iter() |
+| main.rs:530:26:530:44 | ... .collect() | main.rs:530:9:530:11 | vs2 |
+| main.rs:531:10:531:10 | [SSA] v | main.rs:532:14:532:14 | v |
+| main.rs:531:10:531:10 | v | main.rs:531:10:531:10 | [SSA] v |
+| main.rs:531:10:531:10 | v | main.rs:531:10:531:10 | v |
+| main.rs:535:5:535:6 | [post] receiver for vs | main.rs:535:5:535:6 | [post] vs |
+| main.rs:535:5:535:6 | [post] vs | main.rs:536:5:536:6 | vs |
+| main.rs:535:5:535:6 | vs | main.rs:535:5:535:6 | receiver for vs |
+| main.rs:535:5:535:6 | vs | main.rs:536:5:536:6 | vs |
+| main.rs:535:5:535:13 | [post] receiver for vs.iter() | main.rs:535:5:535:13 | [post] vs.iter() |
+| main.rs:535:5:535:13 | vs.iter() | main.rs:535:5:535:13 | receiver for vs.iter() |
+| main.rs:535:20:535:20 | ... | main.rs:535:20:535:20 | x |
+| main.rs:535:20:535:20 | [SSA] x | main.rs:535:29:535:29 | x |
+| main.rs:535:20:535:20 | x | main.rs:535:20:535:20 | [SSA] x |
+| main.rs:535:20:535:20 | x | main.rs:535:20:535:20 | x |
+| main.rs:535:29:535:29 | [post] receiver for x | main.rs:535:29:535:29 | [post] x |
+| main.rs:535:29:535:29 | x | main.rs:535:29:535:29 | receiver for x |
+| main.rs:536:5:536:6 | [post] receiver for vs | main.rs:536:5:536:6 | [post] vs |
+| main.rs:536:5:536:6 | [post] vs | main.rs:538:14:538:15 | vs |
+| main.rs:536:5:536:6 | vs | main.rs:536:5:536:6 | receiver for vs |
+| main.rs:536:5:536:6 | vs | main.rs:538:14:538:15 | vs |
+| main.rs:536:5:536:13 | [post] receiver for vs.iter() | main.rs:536:5:536:13 | [post] vs.iter() |
+| main.rs:536:5:536:13 | vs.iter() | main.rs:536:5:536:13 | receiver for vs.iter() |
+| main.rs:536:25:536:25 | ... | main.rs:536:25:536:25 | x |
+| main.rs:536:25:536:25 | [SSA] x | main.rs:536:34:536:34 | x |
+| main.rs:536:25:536:25 | x | main.rs:536:25:536:25 | [SSA] x |
+| main.rs:536:25:536:25 | x | main.rs:536:25:536:25 | x |
+| main.rs:536:34:536:34 | [post] receiver for x | main.rs:536:34:536:34 | [post] x |
+| main.rs:536:34:536:34 | x | main.rs:536:34:536:34 | receiver for x |
+| main.rs:538:9:538:9 | [SSA] v | main.rs:539:14:539:14 | v |
+| main.rs:538:9:538:9 | v | main.rs:538:9:538:9 | [SSA] v |
+| main.rs:538:9:538:9 | v | main.rs:538:9:538:9 | v |
+| main.rs:538:14:538:15 | [post] receiver for vs | main.rs:538:14:538:15 | [post] vs |
+| main.rs:538:14:538:15 | vs | main.rs:538:14:538:15 | receiver for vs |
+| main.rs:542:9:542:18 | mut vs_mut | main.rs:542:13:542:18 | vs_mut |
+| main.rs:542:13:542:18 | [SSA] vs_mut | main.rs:544:10:544:15 | vs_mut |
+| main.rs:542:13:542:18 | vs_mut | main.rs:542:13:542:18 | [SSA] vs_mut |
+| main.rs:542:22:542:42 | [...] | main.rs:542:9:542:18 | mut vs_mut |
+| main.rs:544:10:544:15 | [post] vs_mut | main.rs:545:11:545:16 | [SSA] vs_mut |
+| main.rs:544:10:544:15 | [post] vs_mut | main.rs:545:11:545:16 | vs_mut |
+| main.rs:544:10:544:15 | vs_mut | main.rs:545:11:545:16 | [SSA] vs_mut |
+| main.rs:544:10:544:15 | vs_mut | main.rs:545:11:545:16 | vs_mut |
+| main.rs:545:11:545:16 | [SSA] vs_mut | main.rs:546:11:546:16 | [SSA] vs_mut |
+| main.rs:545:11:545:16 | [SSA] vs_mut | main.rs:546:11:546:16 | vs_mut |
+| main.rs:545:11:545:16 | [post] receiver for vs_mut | main.rs:545:11:545:16 | [post] vs_mut |
+| main.rs:545:11:545:16 | [post] vs_mut | main.rs:546:11:546:16 | [SSA] vs_mut |
+| main.rs:545:11:545:16 | [post] vs_mut | main.rs:546:11:546:16 | vs_mut |
+| main.rs:545:11:545:16 | vs_mut | main.rs:545:11:545:16 | receiver for vs_mut |
+| main.rs:545:11:545:16 | vs_mut | main.rs:546:11:546:16 | [SSA] vs_mut |
+| main.rs:545:11:545:16 | vs_mut | main.rs:546:11:546:16 | vs_mut |
+| main.rs:545:11:545:23 | [post] receiver for vs_mut.iter() | main.rs:545:11:545:23 | [post] vs_mut.iter() |
+| main.rs:545:11:545:23 | vs_mut.iter() | main.rs:545:11:545:23 | receiver for vs_mut.iter() |
+| main.rs:545:11:545:30 | ... .next() | main.rs:545:11:545:30 | receiver for ... .next() |
+| main.rs:545:11:545:30 | [post] receiver for ... .next() | main.rs:545:11:545:30 | [post] ... .next() |
+| main.rs:545:11:545:39 | ... .unwrap() | main.rs:545:11:545:39 | receiver for ... .unwrap() |
+| main.rs:545:11:545:39 | [post] receiver for ... .unwrap() | main.rs:545:11:545:39 | [post] ... .unwrap() |
+| main.rs:546:11:546:16 | [SSA] vs_mut | main.rs:548:19:548:24 | vs_mut |
+| main.rs:546:11:546:16 | [post] receiver for vs_mut | main.rs:546:11:546:16 | [post] vs_mut |
+| main.rs:546:11:546:16 | [post] vs_mut | main.rs:548:19:548:24 | vs_mut |
+| main.rs:546:11:546:16 | vs_mut | main.rs:546:11:546:16 | receiver for vs_mut |
+| main.rs:546:11:546:16 | vs_mut | main.rs:548:19:548:24 | vs_mut |
+| main.rs:546:11:546:23 | [post] receiver for vs_mut.iter() | main.rs:546:11:546:23 | [post] vs_mut.iter() |
+| main.rs:546:11:546:23 | vs_mut.iter() | main.rs:546:11:546:23 | receiver for vs_mut.iter() |
+| main.rs:546:11:546:30 | ... .nth(...) | main.rs:546:11:546:30 | receiver for ... .nth(...) |
+| main.rs:546:11:546:30 | [post] receiver for ... .nth(...) | main.rs:546:11:546:30 | [post] ... .nth(...) |
+| main.rs:546:11:546:39 | ... .unwrap() | main.rs:546:11:546:39 | receiver for ... .unwrap() |
+| main.rs:546:11:546:39 | [post] receiver for ... .unwrap() | main.rs:546:11:546:39 | [post] ... .unwrap() |
+| main.rs:548:5:550:5 | for ... in ... { ... } | main.rs:516:16:551:1 | { ... } |
+| main.rs:548:14:548:14 | [SSA] v | main.rs:549:14:549:14 | v |
+| main.rs:548:14:548:14 | v | main.rs:548:14:548:14 | [SSA] v |
+| main.rs:548:14:548:14 | v | main.rs:548:14:548:14 | v |
+| main.rs:548:19:548:24 | [post] receiver for vs_mut | main.rs:548:19:548:24 | [post] vs_mut |
+| main.rs:548:19:548:24 | vs_mut | main.rs:548:19:548:24 | receiver for vs_mut |
+| main.rs:554:9:554:9 | [SSA] a | main.rs:559:10:559:10 | a |
| main.rs:554:9:554:9 | a | main.rs:554:9:554:9 | [SSA] a |
| main.rs:554:9:554:9 | a | main.rs:554:9:554:9 | a |
-| main.rs:554:18:554:27 | source(...) | main.rs:554:9:554:9 | a |
-| main.rs:556:10:556:10 | [post] a | main.rs:557:10:557:10 | a |
-| main.rs:556:10:556:10 | a | main.rs:557:10:557:10 | a |
-| main.rs:557:10:557:10 | [post] a | main.rs:558:20:558:20 | a |
-| main.rs:557:10:557:10 | [post] receiver for a | main.rs:557:10:557:10 | [post] a |
-| main.rs:557:10:557:10 | a | main.rs:557:10:557:10 | receiver for a |
-| main.rs:557:10:557:10 | a | main.rs:558:20:558:20 | a |
-| main.rs:560:9:560:9 | [SSA] b | main.rs:562:10:562:10 | b |
-| main.rs:560:9:560:9 | b | main.rs:560:9:560:9 | [SSA] b |
-| main.rs:560:9:560:9 | b | main.rs:560:9:560:9 | b |
-| main.rs:560:18:560:34 | ... as i32 | main.rs:560:9:560:9 | b |
-| main.rs:562:10:562:10 | [post] b | main.rs:563:10:563:10 | b |
-| main.rs:562:10:562:10 | b | main.rs:563:10:563:10 | b |
-| main.rs:563:10:563:10 | [post] b | main.rs:564:20:564:20 | b |
-| main.rs:563:10:563:10 | [post] receiver for b | main.rs:563:10:563:10 | [post] b |
-| main.rs:563:10:563:10 | b | main.rs:563:10:563:10 | receiver for b |
-| main.rs:563:10:563:10 | b | main.rs:564:20:564:20 | b |
-| main.rs:592:13:592:33 | result_questionmark(...) | main.rs:592:9:592:9 | _ |
-| main.rs:604:36:604:39 | ...::new(...) | main.rs:604:36:604:41 | MacroExpr |
-| main.rs:604:36:604:41 | [post] MacroExpr | main.rs:604:36:604:39 | [post] ...::new(...) |
+| main.rs:554:13:554:22 | source(...) | main.rs:554:9:554:9 | a |
+| main.rs:555:9:555:9 | [SSA] b | main.rs:560:15:560:15 | b |
+| main.rs:555:9:555:9 | b | main.rs:555:9:555:9 | [SSA] b |
+| main.rs:555:9:555:9 | b | main.rs:555:9:555:9 | b |
+| main.rs:555:13:555:22 | source(...) | main.rs:555:9:555:9 | b |
+| main.rs:556:9:556:9 | [SSA] c | main.rs:557:18:557:18 | c |
+| main.rs:556:9:556:9 | c | main.rs:556:9:556:9 | [SSA] c |
+| main.rs:556:9:556:9 | c | main.rs:556:9:556:9 | c |
+| main.rs:556:13:556:22 | source(...) | main.rs:556:9:556:9 | c |
+| main.rs:557:9:557:13 | [SSA] c_ref | main.rs:561:14:561:18 | c_ref |
+| main.rs:557:9:557:13 | c_ref | main.rs:557:9:557:13 | [SSA] c_ref |
+| main.rs:557:9:557:13 | c_ref | main.rs:557:9:557:13 | c_ref |
+| main.rs:557:17:557:18 | &c | main.rs:557:9:557:13 | c_ref |
+| main.rs:561:14:561:18 | [post] c_ref | main.rs:562:11:562:15 | c_ref |
+| main.rs:561:14:561:18 | c_ref | main.rs:562:11:562:15 | c_ref |
+| main.rs:562:11:562:15 | [post] receiver for c_ref | main.rs:562:11:562:15 | [post] c_ref |
+| main.rs:562:11:562:15 | c_ref | main.rs:562:11:562:15 | receiver for c_ref |
+| main.rs:566:9:566:9 | [SSA] a | main.rs:568:10:568:10 | a |
+| main.rs:566:9:566:9 | a | main.rs:566:9:566:9 | [SSA] a |
+| main.rs:566:9:566:9 | a | main.rs:566:9:566:9 | a |
+| main.rs:566:18:566:27 | source(...) | main.rs:566:9:566:9 | a |
+| main.rs:568:10:568:10 | [post] a | main.rs:569:10:569:10 | a |
+| main.rs:568:10:568:10 | a | main.rs:569:10:569:10 | a |
+| main.rs:569:10:569:10 | [post] a | main.rs:570:20:570:20 | a |
+| main.rs:569:10:569:10 | [post] receiver for a | main.rs:569:10:569:10 | [post] a |
+| main.rs:569:10:569:10 | a | main.rs:569:10:569:10 | receiver for a |
+| main.rs:569:10:569:10 | a | main.rs:570:20:570:20 | a |
+| main.rs:572:9:572:9 | [SSA] b | main.rs:574:10:574:10 | b |
+| main.rs:572:9:572:9 | b | main.rs:572:9:572:9 | [SSA] b |
+| main.rs:572:9:572:9 | b | main.rs:572:9:572:9 | b |
+| main.rs:572:18:572:34 | ... as i32 | main.rs:572:9:572:9 | b |
+| main.rs:574:10:574:10 | [post] b | main.rs:575:10:575:10 | b |
+| main.rs:574:10:574:10 | b | main.rs:575:10:575:10 | b |
+| main.rs:575:10:575:10 | [post] b | main.rs:576:20:576:20 | b |
+| main.rs:575:10:575:10 | [post] receiver for b | main.rs:575:10:575:10 | [post] b |
+| main.rs:575:10:575:10 | b | main.rs:575:10:575:10 | receiver for b |
+| main.rs:575:10:575:10 | b | main.rs:576:20:576:20 | b |
+| main.rs:604:13:604:33 | result_questionmark(...) | main.rs:604:9:604:9 | _ |
+| main.rs:616:36:616:39 | ...::new(...) | main.rs:616:36:616:41 | MacroExpr |
+| main.rs:616:36:616:41 | [post] MacroExpr | main.rs:616:36:616:39 | [post] ...::new(...) |
readStep
| main.rs:50:9:50:15 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:50:14:50:14 | _ |
-| main.rs:104:11:104:11 | [post] receiver for i | file://:0:0:0:0 | &ref | main.rs:104:11:104:11 | [post] i |
-| main.rs:104:11:104:11 | i | file://:0:0:0:0 | &ref | main.rs:104:10:104:11 | * ... |
-| main.rs:112:10:112:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:112:10:112:12 | a.0 |
-| main.rs:113:10:113:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:113:10:113:12 | a.1 |
-| main.rs:118:9:118:20 | TuplePat | file://:0:0:0:0 | tuple.0 | main.rs:118:10:118:11 | a0 |
-| main.rs:118:9:118:20 | TuplePat | file://:0:0:0:0 | tuple.1 | main.rs:118:14:118:15 | a1 |
-| main.rs:118:9:118:20 | TuplePat | file://:0:0:0:0 | tuple.2 | main.rs:118:18:118:19 | a2 |
-| main.rs:126:10:126:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:126:10:126:12 | a.0 |
-| main.rs:127:10:127:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:127:10:127:12 | a.1 |
-| main.rs:128:5:128:5 | a | file://:0:0:0:0 | tuple.0 | main.rs:128:5:128:7 | a.0 |
-| main.rs:129:5:129:5 | a | file://:0:0:0:0 | tuple.1 | main.rs:129:5:129:7 | a.1 |
-| main.rs:130:10:130:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:130:10:130:12 | a.0 |
-| main.rs:131:10:131:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:131:10:131:12 | a.1 |
-| main.rs:137:10:137:10 | b | file://:0:0:0:0 | tuple.0 | main.rs:137:10:137:12 | b.0 |
-| main.rs:137:10:137:12 | b.0 | file://:0:0:0:0 | tuple.0 | main.rs:137:10:137:15 | ... .0 |
-| main.rs:138:10:138:10 | b | file://:0:0:0:0 | tuple.0 | main.rs:138:10:138:12 | b.0 |
-| main.rs:138:10:138:12 | b.0 | file://:0:0:0:0 | tuple.1 | main.rs:138:10:138:15 | ... .1 |
-| main.rs:139:10:139:10 | b | file://:0:0:0:0 | tuple.1 | main.rs:139:10:139:12 | b.1 |
-| main.rs:152:10:152:10 | p | main.rs:146:5:146:10 | Point.x | main.rs:152:10:152:12 | p.x |
-| main.rs:153:10:153:10 | p | main.rs:147:5:147:10 | Point.y | main.rs:153:10:153:12 | p.y |
-| main.rs:158:10:158:10 | p | main.rs:147:5:147:10 | Point.y | main.rs:158:10:158:12 | p.y |
-| main.rs:159:5:159:5 | p | main.rs:147:5:147:10 | Point.y | main.rs:159:5:159:7 | p.y |
-| main.rs:160:10:160:10 | p | main.rs:147:5:147:10 | Point.y | main.rs:160:10:160:12 | p.y |
-| main.rs:168:9:168:28 | Point {...} | main.rs:146:5:146:10 | Point.x | main.rs:168:20:168:20 | a |
-| main.rs:168:9:168:28 | Point {...} | main.rs:147:5:147:10 | Point.y | main.rs:168:26:168:26 | b |
-| main.rs:186:10:186:10 | p | main.rs:174:5:174:16 | Point3D.plane | main.rs:186:10:186:16 | p.plane |
-| main.rs:186:10:186:16 | p.plane | main.rs:146:5:146:10 | Point.x | main.rs:186:10:186:18 | ... .x |
-| main.rs:187:10:187:10 | p | main.rs:174:5:174:16 | Point3D.plane | main.rs:187:10:187:16 | p.plane |
-| main.rs:187:10:187:16 | p.plane | main.rs:147:5:147:10 | Point.y | main.rs:187:10:187:18 | ... .y |
-| main.rs:188:10:188:10 | p | main.rs:175:5:175:10 | Point3D.z | main.rs:188:10:188:12 | p.z |
-| main.rs:198:9:201:9 | Point3D {...} | main.rs:174:5:174:16 | Point3D.plane | main.rs:199:20:199:33 | Point {...} |
-| main.rs:198:9:201:9 | Point3D {...} | main.rs:175:5:175:10 | Point3D.z | main.rs:200:13:200:13 | z |
-| main.rs:199:20:199:33 | Point {...} | main.rs:146:5:146:10 | Point.x | main.rs:199:28:199:28 | x |
-| main.rs:199:20:199:33 | Point {...} | main.rs:147:5:147:10 | Point.y | main.rs:199:31:199:31 | y |
-| main.rs:213:10:213:10 | s | file://:0:0:0:0 | tuple.0 | main.rs:213:10:213:12 | s.0 |
-| main.rs:213:10:213:10 | s | main.rs:209:22:209:24 | MyTupleStruct(0) | main.rs:213:10:213:12 | s.0 |
-| main.rs:214:10:214:10 | s | file://:0:0:0:0 | tuple.1 | main.rs:214:10:214:12 | s.1 |
-| main.rs:214:10:214:10 | s | main.rs:209:27:209:29 | MyTupleStruct(1) | main.rs:214:10:214:12 | s.1 |
-| main.rs:217:9:217:27 | MyTupleStruct(...) | main.rs:209:22:209:24 | MyTupleStruct(0) | main.rs:217:23:217:23 | x |
-| main.rs:217:9:217:27 | MyTupleStruct(...) | main.rs:209:27:209:29 | MyTupleStruct(1) | main.rs:217:26:217:26 | y |
-| main.rs:231:9:231:23 | ...::Some(...) | {EXTERNAL LOCATION} | Some | main.rs:231:22:231:22 | n |
-| main.rs:235:9:235:23 | ...::Some(...) | {EXTERNAL LOCATION} | Some | main.rs:235:22:235:22 | n |
-| main.rs:244:9:244:15 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:244:14:244:14 | n |
-| main.rs:248:9:248:15 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:248:14:248:14 | n |
-| main.rs:255:12:255:18 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:255:17:255:17 | n |
-| main.rs:289:14:289:15 | s1 | {EXTERNAL LOCATION} | Some | main.rs:289:14:289:16 | TryExpr |
-| main.rs:289:14:289:15 | s1 | {EXTERNAL LOCATION} | Ok | main.rs:289:14:289:16 | TryExpr |
-| main.rs:291:10:291:11 | s2 | {EXTERNAL LOCATION} | Some | main.rs:291:10:291:12 | TryExpr |
-| main.rs:291:10:291:11 | s2 | {EXTERNAL LOCATION} | Ok | main.rs:291:10:291:12 | TryExpr |
-| main.rs:313:14:313:15 | s1 | {EXTERNAL LOCATION} | Some | main.rs:313:14:313:16 | TryExpr |
-| main.rs:313:14:313:15 | s1 | {EXTERNAL LOCATION} | Ok | main.rs:313:14:313:16 | TryExpr |
-| main.rs:314:14:314:15 | s2 | {EXTERNAL LOCATION} | Some | main.rs:314:14:314:16 | TryExpr |
-| main.rs:314:14:314:15 | s2 | {EXTERNAL LOCATION} | Ok | main.rs:314:14:314:16 | TryExpr |
-| main.rs:317:14:317:15 | s3 | {EXTERNAL LOCATION} | Some | main.rs:317:14:317:16 | TryExpr |
-| main.rs:317:14:317:15 | s3 | {EXTERNAL LOCATION} | Ok | main.rs:317:14:317:16 | TryExpr |
-| main.rs:341:9:341:25 | ...::A(...) | main.rs:333:7:333:9 | A | main.rs:341:24:341:24 | n |
-| main.rs:342:9:342:25 | ...::B(...) | main.rs:334:7:334:9 | B | main.rs:342:24:342:24 | n |
-| main.rs:345:9:345:25 | ...::A(...) | main.rs:333:7:333:9 | A | main.rs:345:24:345:24 | n |
-| main.rs:345:29:345:45 | ...::B(...) | main.rs:334:7:334:9 | B | main.rs:345:44:345:44 | n |
-| main.rs:348:9:348:25 | ...::A(...) | main.rs:333:7:333:9 | A | main.rs:348:24:348:24 | n |
-| main.rs:349:9:349:25 | ...::B(...) | main.rs:334:7:334:9 | B | main.rs:349:24:349:24 | n |
-| main.rs:359:9:359:12 | A(...) | main.rs:333:7:333:9 | A | main.rs:359:11:359:11 | n |
-| main.rs:360:9:360:12 | B(...) | main.rs:334:7:334:9 | B | main.rs:360:11:360:11 | n |
-| main.rs:363:9:363:12 | A(...) | main.rs:333:7:333:9 | A | main.rs:363:11:363:11 | n |
-| main.rs:363:16:363:19 | B(...) | main.rs:334:7:334:9 | B | main.rs:363:18:363:18 | n |
-| main.rs:366:9:366:12 | A(...) | main.rs:333:7:333:9 | A | main.rs:366:11:366:11 | n |
-| main.rs:367:9:367:12 | B(...) | main.rs:334:7:334:9 | B | main.rs:367:11:367:11 | n |
-| main.rs:382:9:382:38 | ...::C {...} | main.rs:372:9:372:20 | C | main.rs:382:36:382:36 | n |
-| main.rs:383:9:383:38 | ...::D {...} | main.rs:373:9:373:20 | D | main.rs:383:36:383:36 | n |
-| main.rs:386:9:386:38 | ...::C {...} | main.rs:372:9:372:20 | C | main.rs:386:36:386:36 | n |
-| main.rs:386:42:386:71 | ...::D {...} | main.rs:373:9:373:20 | D | main.rs:386:69:386:69 | n |
-| main.rs:389:9:389:38 | ...::C {...} | main.rs:372:9:372:20 | C | main.rs:389:36:389:36 | n |
-| main.rs:390:9:390:38 | ...::D {...} | main.rs:373:9:373:20 | D | main.rs:390:36:390:36 | n |
-| main.rs:402:9:402:24 | C {...} | main.rs:372:9:372:20 | C | main.rs:402:22:402:22 | n |
-| main.rs:403:9:403:24 | D {...} | main.rs:373:9:373:20 | D | main.rs:403:22:403:22 | n |
-| main.rs:406:9:406:24 | C {...} | main.rs:372:9:372:20 | C | main.rs:406:22:406:22 | n |
-| main.rs:406:28:406:43 | D {...} | main.rs:373:9:373:20 | D | main.rs:406:41:406:41 | n |
-| main.rs:409:9:409:24 | C {...} | main.rs:372:9:372:20 | C | main.rs:409:22:409:22 | n |
-| main.rs:410:9:410:24 | D {...} | main.rs:373:9:373:20 | D | main.rs:410:22:410:22 | n |
-| main.rs:419:14:419:17 | arr1 | file://:0:0:0:0 | element | main.rs:419:14:419:20 | arr1[2] |
-| main.rs:423:14:423:17 | arr2 | file://:0:0:0:0 | element | main.rs:423:14:423:20 | arr2[4] |
-| main.rs:427:14:427:17 | arr3 | file://:0:0:0:0 | element | main.rs:427:14:427:20 | arr3[2] |
-| main.rs:433:15:433:18 | arr1 | file://:0:0:0:0 | element | main.rs:433:9:433:10 | n1 |
-| main.rs:438:15:438:18 | arr2 | file://:0:0:0:0 | element | main.rs:438:9:438:10 | n2 |
-| main.rs:446:9:446:17 | SlicePat | file://:0:0:0:0 | element | main.rs:446:10:446:10 | a |
-| main.rs:446:9:446:17 | SlicePat | file://:0:0:0:0 | element | main.rs:446:13:446:13 | b |
-| main.rs:446:9:446:17 | SlicePat | file://:0:0:0:0 | element | main.rs:446:16:446:16 | c |
-| main.rs:456:10:456:16 | mut_arr | file://:0:0:0:0 | element | main.rs:456:10:456:19 | mut_arr[1] |
-| main.rs:458:5:458:11 | mut_arr | file://:0:0:0:0 | element | main.rs:458:5:458:14 | mut_arr[1] |
-| main.rs:459:13:459:19 | mut_arr | file://:0:0:0:0 | element | main.rs:459:13:459:22 | mut_arr[1] |
-| main.rs:461:10:461:16 | mut_arr | file://:0:0:0:0 | element | main.rs:461:10:461:19 | mut_arr[0] |
-| main.rs:468:9:468:20 | TuplePat | file://:0:0:0:0 | tuple.0 | main.rs:468:10:468:13 | cond |
-| main.rs:468:9:468:20 | TuplePat | file://:0:0:0:0 | tuple.1 | main.rs:468:16:468:19 | name |
-| main.rs:468:25:468:29 | names | file://:0:0:0:0 | element | main.rs:468:9:468:20 | TuplePat |
-| main.rs:470:41:470:67 | [post] \|...\| ... | main.rs:467:9:467:20 | captured default_name | main.rs:470:41:470:67 | [post] default_name |
-| main.rs:470:44:470:55 | this | main.rs:467:9:467:20 | captured default_name | main.rs:470:44:470:55 | default_name |
-| main.rs:471:18:471:18 | [post] receiver for n | file://:0:0:0:0 | &ref | main.rs:471:18:471:18 | [post] n |
-| main.rs:495:13:495:13 | [post] receiver for b | file://:0:0:0:0 | &ref | main.rs:495:13:495:13 | [post] b |
-| main.rs:496:18:496:18 | [post] receiver for b | file://:0:0:0:0 | &ref | main.rs:496:18:496:18 | [post] b |
-| main.rs:507:10:507:11 | vs | file://:0:0:0:0 | element | main.rs:507:10:507:14 | vs[0] |
-| main.rs:508:11:508:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:508:10:508:35 | * ... |
-| main.rs:509:11:509:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:509:10:509:35 | * ... |
-| main.rs:511:14:511:15 | vs | file://:0:0:0:0 | element | main.rs:511:9:511:9 | v |
-| main.rs:514:9:514:10 | &... | file://:0:0:0:0 | &ref | main.rs:514:10:514:10 | v |
-| main.rs:514:15:514:23 | vs.iter() | file://:0:0:0:0 | element | main.rs:514:9:514:10 | &... |
-| main.rs:519:9:519:10 | &... | file://:0:0:0:0 | &ref | main.rs:519:10:519:10 | v |
-| main.rs:519:15:519:17 | vs2 | file://:0:0:0:0 | element | main.rs:519:9:519:10 | &... |
-| main.rs:523:29:523:29 | x | file://:0:0:0:0 | &ref | main.rs:523:28:523:29 | * ... |
-| main.rs:524:34:524:34 | x | file://:0:0:0:0 | &ref | main.rs:524:33:524:34 | * ... |
-| main.rs:526:14:526:27 | vs.into_iter() | file://:0:0:0:0 | element | main.rs:526:9:526:9 | v |
-| main.rs:532:10:532:15 | vs_mut | file://:0:0:0:0 | element | main.rs:532:10:532:18 | vs_mut[0] |
-| main.rs:533:11:533:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:533:10:533:39 | * ... |
-| main.rs:534:11:534:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:534:10:534:39 | * ... |
-| main.rs:536:9:536:14 | &mut ... | file://:0:0:0:0 | &ref | main.rs:536:14:536:14 | v |
-| main.rs:536:19:536:35 | vs_mut.iter_mut() | file://:0:0:0:0 | element | main.rs:536:9:536:14 | &mut ... |
-| main.rs:550:11:550:15 | c_ref | file://:0:0:0:0 | &ref | main.rs:550:10:550:15 | * ... |
+| main.rs:116:11:116:11 | [post] receiver for i | file://:0:0:0:0 | &ref | main.rs:116:11:116:11 | [post] i |
+| main.rs:116:11:116:11 | i | file://:0:0:0:0 | &ref | main.rs:116:10:116:11 | * ... |
+| main.rs:124:10:124:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:124:10:124:12 | a.0 |
+| main.rs:125:10:125:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:125:10:125:12 | a.1 |
+| main.rs:130:9:130:20 | TuplePat | file://:0:0:0:0 | tuple.0 | main.rs:130:10:130:11 | a0 |
+| main.rs:130:9:130:20 | TuplePat | file://:0:0:0:0 | tuple.1 | main.rs:130:14:130:15 | a1 |
+| main.rs:130:9:130:20 | TuplePat | file://:0:0:0:0 | tuple.2 | main.rs:130:18:130:19 | a2 |
+| main.rs:138:10:138:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:138:10:138:12 | a.0 |
+| main.rs:139:10:139:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:139:10:139:12 | a.1 |
+| main.rs:140:5:140:5 | a | file://:0:0:0:0 | tuple.0 | main.rs:140:5:140:7 | a.0 |
+| main.rs:141:5:141:5 | a | file://:0:0:0:0 | tuple.1 | main.rs:141:5:141:7 | a.1 |
+| main.rs:142:10:142:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:142:10:142:12 | a.0 |
+| main.rs:143:10:143:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:143:10:143:12 | a.1 |
+| main.rs:149:10:149:10 | b | file://:0:0:0:0 | tuple.0 | main.rs:149:10:149:12 | b.0 |
+| main.rs:149:10:149:12 | b.0 | file://:0:0:0:0 | tuple.0 | main.rs:149:10:149:15 | ... .0 |
+| main.rs:150:10:150:10 | b | file://:0:0:0:0 | tuple.0 | main.rs:150:10:150:12 | b.0 |
+| main.rs:150:10:150:12 | b.0 | file://:0:0:0:0 | tuple.1 | main.rs:150:10:150:15 | ... .1 |
+| main.rs:151:10:151:10 | b | file://:0:0:0:0 | tuple.1 | main.rs:151:10:151:12 | b.1 |
+| main.rs:164:10:164:10 | p | main.rs:158:5:158:10 | Point.x | main.rs:164:10:164:12 | p.x |
+| main.rs:165:10:165:10 | p | main.rs:159:5:159:10 | Point.y | main.rs:165:10:165:12 | p.y |
+| main.rs:170:10:170:10 | p | main.rs:159:5:159:10 | Point.y | main.rs:170:10:170:12 | p.y |
+| main.rs:171:5:171:5 | p | main.rs:159:5:159:10 | Point.y | main.rs:171:5:171:7 | p.y |
+| main.rs:172:10:172:10 | p | main.rs:159:5:159:10 | Point.y | main.rs:172:10:172:12 | p.y |
+| main.rs:180:9:180:28 | Point {...} | main.rs:158:5:158:10 | Point.x | main.rs:180:20:180:20 | a |
+| main.rs:180:9:180:28 | Point {...} | main.rs:159:5:159:10 | Point.y | main.rs:180:26:180:26 | b |
+| main.rs:198:10:198:10 | p | main.rs:186:5:186:16 | Point3D.plane | main.rs:198:10:198:16 | p.plane |
+| main.rs:198:10:198:16 | p.plane | main.rs:158:5:158:10 | Point.x | main.rs:198:10:198:18 | ... .x |
+| main.rs:199:10:199:10 | p | main.rs:186:5:186:16 | Point3D.plane | main.rs:199:10:199:16 | p.plane |
+| main.rs:199:10:199:16 | p.plane | main.rs:159:5:159:10 | Point.y | main.rs:199:10:199:18 | ... .y |
+| main.rs:200:10:200:10 | p | main.rs:187:5:187:10 | Point3D.z | main.rs:200:10:200:12 | p.z |
+| main.rs:210:9:213:9 | Point3D {...} | main.rs:186:5:186:16 | Point3D.plane | main.rs:211:20:211:33 | Point {...} |
+| main.rs:210:9:213:9 | Point3D {...} | main.rs:187:5:187:10 | Point3D.z | main.rs:212:13:212:13 | z |
+| main.rs:211:20:211:33 | Point {...} | main.rs:158:5:158:10 | Point.x | main.rs:211:28:211:28 | x |
+| main.rs:211:20:211:33 | Point {...} | main.rs:159:5:159:10 | Point.y | main.rs:211:31:211:31 | y |
+| main.rs:225:10:225:10 | s | file://:0:0:0:0 | tuple.0 | main.rs:225:10:225:12 | s.0 |
+| main.rs:225:10:225:10 | s | main.rs:221:22:221:24 | MyTupleStruct(0) | main.rs:225:10:225:12 | s.0 |
+| main.rs:226:10:226:10 | s | file://:0:0:0:0 | tuple.1 | main.rs:226:10:226:12 | s.1 |
+| main.rs:226:10:226:10 | s | main.rs:221:27:221:29 | MyTupleStruct(1) | main.rs:226:10:226:12 | s.1 |
+| main.rs:229:9:229:27 | MyTupleStruct(...) | main.rs:221:22:221:24 | MyTupleStruct(0) | main.rs:229:23:229:23 | x |
+| main.rs:229:9:229:27 | MyTupleStruct(...) | main.rs:221:27:221:29 | MyTupleStruct(1) | main.rs:229:26:229:26 | y |
+| main.rs:243:9:243:23 | ...::Some(...) | {EXTERNAL LOCATION} | Some | main.rs:243:22:243:22 | n |
+| main.rs:247:9:247:23 | ...::Some(...) | {EXTERNAL LOCATION} | Some | main.rs:247:22:247:22 | n |
+| main.rs:256:9:256:15 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:256:14:256:14 | n |
+| main.rs:260:9:260:15 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:260:14:260:14 | n |
+| main.rs:267:12:267:18 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:267:17:267:17 | n |
+| main.rs:301:14:301:15 | s1 | {EXTERNAL LOCATION} | Some | main.rs:301:14:301:16 | TryExpr |
+| main.rs:301:14:301:15 | s1 | {EXTERNAL LOCATION} | Ok | main.rs:301:14:301:16 | TryExpr |
+| main.rs:303:10:303:11 | s2 | {EXTERNAL LOCATION} | Some | main.rs:303:10:303:12 | TryExpr |
+| main.rs:303:10:303:11 | s2 | {EXTERNAL LOCATION} | Ok | main.rs:303:10:303:12 | TryExpr |
+| main.rs:325:14:325:15 | s1 | {EXTERNAL LOCATION} | Some | main.rs:325:14:325:16 | TryExpr |
+| main.rs:325:14:325:15 | s1 | {EXTERNAL LOCATION} | Ok | main.rs:325:14:325:16 | TryExpr |
+| main.rs:326:14:326:15 | s2 | {EXTERNAL LOCATION} | Some | main.rs:326:14:326:16 | TryExpr |
+| main.rs:326:14:326:15 | s2 | {EXTERNAL LOCATION} | Ok | main.rs:326:14:326:16 | TryExpr |
+| main.rs:329:14:329:15 | s3 | {EXTERNAL LOCATION} | Some | main.rs:329:14:329:16 | TryExpr |
+| main.rs:329:14:329:15 | s3 | {EXTERNAL LOCATION} | Ok | main.rs:329:14:329:16 | TryExpr |
+| main.rs:353:9:353:25 | ...::A(...) | main.rs:345:7:345:9 | A | main.rs:353:24:353:24 | n |
+| main.rs:354:9:354:25 | ...::B(...) | main.rs:346:7:346:9 | B | main.rs:354:24:354:24 | n |
+| main.rs:357:9:357:25 | ...::A(...) | main.rs:345:7:345:9 | A | main.rs:357:24:357:24 | n |
+| main.rs:357:29:357:45 | ...::B(...) | main.rs:346:7:346:9 | B | main.rs:357:44:357:44 | n |
+| main.rs:360:9:360:25 | ...::A(...) | main.rs:345:7:345:9 | A | main.rs:360:24:360:24 | n |
+| main.rs:361:9:361:25 | ...::B(...) | main.rs:346:7:346:9 | B | main.rs:361:24:361:24 | n |
+| main.rs:371:9:371:12 | A(...) | main.rs:345:7:345:9 | A | main.rs:371:11:371:11 | n |
+| main.rs:372:9:372:12 | B(...) | main.rs:346:7:346:9 | B | main.rs:372:11:372:11 | n |
+| main.rs:375:9:375:12 | A(...) | main.rs:345:7:345:9 | A | main.rs:375:11:375:11 | n |
+| main.rs:375:16:375:19 | B(...) | main.rs:346:7:346:9 | B | main.rs:375:18:375:18 | n |
+| main.rs:378:9:378:12 | A(...) | main.rs:345:7:345:9 | A | main.rs:378:11:378:11 | n |
+| main.rs:379:9:379:12 | B(...) | main.rs:346:7:346:9 | B | main.rs:379:11:379:11 | n |
+| main.rs:394:9:394:38 | ...::C {...} | main.rs:384:9:384:20 | C | main.rs:394:36:394:36 | n |
+| main.rs:395:9:395:38 | ...::D {...} | main.rs:385:9:385:20 | D | main.rs:395:36:395:36 | n |
+| main.rs:398:9:398:38 | ...::C {...} | main.rs:384:9:384:20 | C | main.rs:398:36:398:36 | n |
+| main.rs:398:42:398:71 | ...::D {...} | main.rs:385:9:385:20 | D | main.rs:398:69:398:69 | n |
+| main.rs:401:9:401:38 | ...::C {...} | main.rs:384:9:384:20 | C | main.rs:401:36:401:36 | n |
+| main.rs:402:9:402:38 | ...::D {...} | main.rs:385:9:385:20 | D | main.rs:402:36:402:36 | n |
+| main.rs:414:9:414:24 | C {...} | main.rs:384:9:384:20 | C | main.rs:414:22:414:22 | n |
+| main.rs:415:9:415:24 | D {...} | main.rs:385:9:385:20 | D | main.rs:415:22:415:22 | n |
+| main.rs:418:9:418:24 | C {...} | main.rs:384:9:384:20 | C | main.rs:418:22:418:22 | n |
+| main.rs:418:28:418:43 | D {...} | main.rs:385:9:385:20 | D | main.rs:418:41:418:41 | n |
+| main.rs:421:9:421:24 | C {...} | main.rs:384:9:384:20 | C | main.rs:421:22:421:22 | n |
+| main.rs:422:9:422:24 | D {...} | main.rs:385:9:385:20 | D | main.rs:422:22:422:22 | n |
+| main.rs:431:14:431:17 | arr1 | file://:0:0:0:0 | element | main.rs:431:14:431:20 | arr1[2] |
+| main.rs:435:14:435:17 | arr2 | file://:0:0:0:0 | element | main.rs:435:14:435:20 | arr2[4] |
+| main.rs:439:14:439:17 | arr3 | file://:0:0:0:0 | element | main.rs:439:14:439:20 | arr3[2] |
+| main.rs:445:15:445:18 | arr1 | file://:0:0:0:0 | element | main.rs:445:9:445:10 | n1 |
+| main.rs:450:15:450:18 | arr2 | file://:0:0:0:0 | element | main.rs:450:9:450:10 | n2 |
+| main.rs:458:9:458:17 | SlicePat | file://:0:0:0:0 | element | main.rs:458:10:458:10 | a |
+| main.rs:458:9:458:17 | SlicePat | file://:0:0:0:0 | element | main.rs:458:13:458:13 | b |
+| main.rs:458:9:458:17 | SlicePat | file://:0:0:0:0 | element | main.rs:458:16:458:16 | c |
+| main.rs:468:10:468:16 | mut_arr | file://:0:0:0:0 | element | main.rs:468:10:468:19 | mut_arr[1] |
+| main.rs:470:5:470:11 | mut_arr | file://:0:0:0:0 | element | main.rs:470:5:470:14 | mut_arr[1] |
+| main.rs:471:13:471:19 | mut_arr | file://:0:0:0:0 | element | main.rs:471:13:471:22 | mut_arr[1] |
+| main.rs:473:10:473:16 | mut_arr | file://:0:0:0:0 | element | main.rs:473:10:473:19 | mut_arr[0] |
+| main.rs:480:9:480:20 | TuplePat | file://:0:0:0:0 | tuple.0 | main.rs:480:10:480:13 | cond |
+| main.rs:480:9:480:20 | TuplePat | file://:0:0:0:0 | tuple.1 | main.rs:480:16:480:19 | name |
+| main.rs:480:25:480:29 | names | file://:0:0:0:0 | element | main.rs:480:9:480:20 | TuplePat |
+| main.rs:482:41:482:67 | [post] \|...\| ... | main.rs:479:9:479:20 | captured default_name | main.rs:482:41:482:67 | [post] default_name |
+| main.rs:482:44:482:55 | this | main.rs:479:9:479:20 | captured default_name | main.rs:482:44:482:55 | default_name |
+| main.rs:483:18:483:18 | [post] receiver for n | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | [post] n |
+| main.rs:507:13:507:13 | [post] receiver for b | file://:0:0:0:0 | &ref | main.rs:507:13:507:13 | [post] b |
+| main.rs:508:18:508:18 | [post] receiver for b | file://:0:0:0:0 | &ref | main.rs:508:18:508:18 | [post] b |
+| main.rs:519:10:519:11 | vs | file://:0:0:0:0 | element | main.rs:519:10:519:14 | vs[0] |
+| main.rs:520:11:520:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:520:10:520:35 | * ... |
+| main.rs:521:11:521:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:521:10:521:35 | * ... |
+| main.rs:523:14:523:15 | vs | file://:0:0:0:0 | element | main.rs:523:9:523:9 | v |
+| main.rs:526:9:526:10 | &... | file://:0:0:0:0 | &ref | main.rs:526:10:526:10 | v |
+| main.rs:526:15:526:23 | vs.iter() | file://:0:0:0:0 | element | main.rs:526:9:526:10 | &... |
+| main.rs:531:9:531:10 | &... | file://:0:0:0:0 | &ref | main.rs:531:10:531:10 | v |
+| main.rs:531:15:531:17 | vs2 | file://:0:0:0:0 | element | main.rs:531:9:531:10 | &... |
+| main.rs:535:29:535:29 | x | file://:0:0:0:0 | &ref | main.rs:535:28:535:29 | * ... |
+| main.rs:536:34:536:34 | x | file://:0:0:0:0 | &ref | main.rs:536:33:536:34 | * ... |
+| main.rs:538:14:538:27 | vs.into_iter() | file://:0:0:0:0 | element | main.rs:538:9:538:9 | v |
+| main.rs:544:10:544:15 | vs_mut | file://:0:0:0:0 | element | main.rs:544:10:544:18 | vs_mut[0] |
+| main.rs:545:11:545:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:545:10:545:39 | * ... |
+| main.rs:546:11:546:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:546:10:546:39 | * ... |
+| main.rs:548:9:548:14 | &mut ... | file://:0:0:0:0 | &ref | main.rs:548:14:548:14 | v |
+| main.rs:548:19:548:35 | vs_mut.iter_mut() | file://:0:0:0:0 | element | main.rs:548:9:548:14 | &mut ... |
+| main.rs:562:11:562:15 | c_ref | file://:0:0:0:0 | &ref | main.rs:562:10:562:15 | * ... |
storeStep
-| main.rs:104:11:104:11 | i | file://:0:0:0:0 | &ref | main.rs:104:11:104:11 | receiver for i |
-| main.rs:111:14:111:22 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:111:13:111:26 | TupleExpr |
-| main.rs:111:25:111:25 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:111:13:111:26 | TupleExpr |
-| main.rs:117:14:117:14 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:117:13:117:30 | TupleExpr |
-| main.rs:117:17:117:26 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:117:13:117:30 | TupleExpr |
-| main.rs:117:29:117:29 | 2 | file://:0:0:0:0 | tuple.2 | main.rs:117:13:117:30 | TupleExpr |
-| main.rs:125:18:125:18 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:125:17:125:31 | TupleExpr |
-| main.rs:125:21:125:30 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:125:17:125:31 | TupleExpr |
-| main.rs:128:11:128:20 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:128:5:128:5 | [post] a |
-| main.rs:129:11:129:11 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:129:5:129:5 | [post] a |
-| main.rs:135:14:135:14 | 3 | file://:0:0:0:0 | tuple.0 | main.rs:135:13:135:27 | TupleExpr |
-| main.rs:135:17:135:26 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:135:13:135:27 | TupleExpr |
-| main.rs:136:14:136:14 | a | file://:0:0:0:0 | tuple.0 | main.rs:136:13:136:18 | TupleExpr |
-| main.rs:136:17:136:17 | 3 | file://:0:0:0:0 | tuple.1 | main.rs:136:13:136:18 | TupleExpr |
-| main.rs:151:24:151:32 | source(...) | main.rs:146:5:146:10 | Point.x | main.rs:151:13:151:40 | Point {...} |
-| main.rs:151:38:151:38 | 2 | main.rs:147:5:147:10 | Point.y | main.rs:151:13:151:40 | Point {...} |
-| main.rs:157:28:157:36 | source(...) | main.rs:146:5:146:10 | Point.x | main.rs:157:17:157:44 | Point {...} |
-| main.rs:157:42:157:42 | 2 | main.rs:147:5:147:10 | Point.y | main.rs:157:17:157:44 | Point {...} |
-| main.rs:159:11:159:20 | source(...) | main.rs:147:5:147:10 | Point.y | main.rs:159:5:159:5 | [post] p |
-| main.rs:165:12:165:21 | source(...) | main.rs:146:5:146:10 | Point.x | main.rs:164:13:167:5 | Point {...} |
-| main.rs:166:12:166:12 | 2 | main.rs:147:5:147:10 | Point.y | main.rs:164:13:167:5 | Point {...} |
-| main.rs:180:16:183:9 | Point {...} | main.rs:174:5:174:16 | Point3D.plane | main.rs:179:13:185:5 | Point3D {...} |
-| main.rs:181:16:181:16 | 2 | main.rs:146:5:146:10 | Point.x | main.rs:180:16:183:9 | Point {...} |
-| main.rs:182:16:182:25 | source(...) | main.rs:147:5:147:10 | Point.y | main.rs:180:16:183:9 | Point {...} |
-| main.rs:184:12:184:12 | 4 | main.rs:175:5:175:10 | Point3D.z | main.rs:179:13:185:5 | Point3D {...} |
-| main.rs:194:16:194:32 | Point {...} | main.rs:174:5:174:16 | Point3D.plane | main.rs:193:13:196:5 | Point3D {...} |
-| main.rs:194:27:194:27 | 2 | main.rs:146:5:146:10 | Point.x | main.rs:194:16:194:32 | Point {...} |
-| main.rs:194:30:194:30 | y | main.rs:147:5:147:10 | Point.y | main.rs:194:16:194:32 | Point {...} |
-| main.rs:195:12:195:12 | 4 | main.rs:175:5:175:10 | Point3D.z | main.rs:193:13:196:5 | Point3D {...} |
-| main.rs:212:27:212:36 | source(...) | main.rs:209:22:209:24 | MyTupleStruct(0) | main.rs:212:13:212:40 | MyTupleStruct(...) |
-| main.rs:212:39:212:39 | 2 | main.rs:209:27:209:29 | MyTupleStruct(1) | main.rs:212:13:212:40 | MyTupleStruct(...) |
-| main.rs:228:27:228:36 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:228:14:228:37 | ...::Some(...) |
-| main.rs:229:27:229:27 | 2 | {EXTERNAL LOCATION} | Some | main.rs:229:14:229:28 | ...::Some(...) |
-| main.rs:241:19:241:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:241:14:241:29 | Some(...) |
-| main.rs:242:19:242:19 | 2 | {EXTERNAL LOCATION} | Some | main.rs:242:14:242:20 | Some(...) |
-| main.rs:254:19:254:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:254:14:254:29 | Some(...) |
+| main.rs:116:11:116:11 | i | file://:0:0:0:0 | &ref | main.rs:116:11:116:11 | receiver for i |
+| main.rs:123:14:123:22 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:123:13:123:26 | TupleExpr |
+| main.rs:123:25:123:25 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:123:13:123:26 | TupleExpr |
+| main.rs:129:14:129:14 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:129:13:129:30 | TupleExpr |
+| main.rs:129:17:129:26 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:129:13:129:30 | TupleExpr |
+| main.rs:129:29:129:29 | 2 | file://:0:0:0:0 | tuple.2 | main.rs:129:13:129:30 | TupleExpr |
+| main.rs:137:18:137:18 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:137:17:137:31 | TupleExpr |
+| main.rs:137:21:137:30 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:137:17:137:31 | TupleExpr |
+| main.rs:140:11:140:20 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:140:5:140:5 | [post] a |
+| main.rs:141:11:141:11 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:141:5:141:5 | [post] a |
+| main.rs:147:14:147:14 | 3 | file://:0:0:0:0 | tuple.0 | main.rs:147:13:147:27 | TupleExpr |
+| main.rs:147:17:147:26 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:147:13:147:27 | TupleExpr |
+| main.rs:148:14:148:14 | a | file://:0:0:0:0 | tuple.0 | main.rs:148:13:148:18 | TupleExpr |
+| main.rs:148:17:148:17 | 3 | file://:0:0:0:0 | tuple.1 | main.rs:148:13:148:18 | TupleExpr |
+| main.rs:163:24:163:32 | source(...) | main.rs:158:5:158:10 | Point.x | main.rs:163:13:163:40 | Point {...} |
+| main.rs:163:38:163:38 | 2 | main.rs:159:5:159:10 | Point.y | main.rs:163:13:163:40 | Point {...} |
+| main.rs:169:28:169:36 | source(...) | main.rs:158:5:158:10 | Point.x | main.rs:169:17:169:44 | Point {...} |
+| main.rs:169:42:169:42 | 2 | main.rs:159:5:159:10 | Point.y | main.rs:169:17:169:44 | Point {...} |
+| main.rs:171:11:171:20 | source(...) | main.rs:159:5:159:10 | Point.y | main.rs:171:5:171:5 | [post] p |
+| main.rs:177:12:177:21 | source(...) | main.rs:158:5:158:10 | Point.x | main.rs:176:13:179:5 | Point {...} |
+| main.rs:178:12:178:12 | 2 | main.rs:159:5:159:10 | Point.y | main.rs:176:13:179:5 | Point {...} |
+| main.rs:192:16:195:9 | Point {...} | main.rs:186:5:186:16 | Point3D.plane | main.rs:191:13:197:5 | Point3D {...} |
+| main.rs:193:16:193:16 | 2 | main.rs:158:5:158:10 | Point.x | main.rs:192:16:195:9 | Point {...} |
+| main.rs:194:16:194:25 | source(...) | main.rs:159:5:159:10 | Point.y | main.rs:192:16:195:9 | Point {...} |
+| main.rs:196:12:196:12 | 4 | main.rs:187:5:187:10 | Point3D.z | main.rs:191:13:197:5 | Point3D {...} |
+| main.rs:206:16:206:32 | Point {...} | main.rs:186:5:186:16 | Point3D.plane | main.rs:205:13:208:5 | Point3D {...} |
+| main.rs:206:27:206:27 | 2 | main.rs:158:5:158:10 | Point.x | main.rs:206:16:206:32 | Point {...} |
+| main.rs:206:30:206:30 | y | main.rs:159:5:159:10 | Point.y | main.rs:206:16:206:32 | Point {...} |
+| main.rs:207:12:207:12 | 4 | main.rs:187:5:187:10 | Point3D.z | main.rs:205:13:208:5 | Point3D {...} |
+| main.rs:224:27:224:36 | source(...) | main.rs:221:22:221:24 | MyTupleStruct(0) | main.rs:224:13:224:40 | MyTupleStruct(...) |
+| main.rs:224:39:224:39 | 2 | main.rs:221:27:221:29 | MyTupleStruct(1) | main.rs:224:13:224:40 | MyTupleStruct(...) |
+| main.rs:240:27:240:36 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:240:14:240:37 | ...::Some(...) |
+| main.rs:241:27:241:27 | 2 | {EXTERNAL LOCATION} | Some | main.rs:241:14:241:28 | ...::Some(...) |
+| main.rs:253:19:253:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:253:14:253:29 | Some(...) |
+| main.rs:254:19:254:19 | 2 | {EXTERNAL LOCATION} | Some | main.rs:254:14:254:20 | Some(...) |
| main.rs:266:19:266:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:266:14:266:29 | Some(...) |
-| main.rs:271:19:271:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:271:14:271:29 | Some(...) |
-| main.rs:274:19:274:19 | 0 | {EXTERNAL LOCATION} | Some | main.rs:274:14:274:20 | Some(...) |
-| main.rs:279:19:279:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:279:14:279:29 | Some(...) |
-| main.rs:287:19:287:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:287:14:287:29 | Some(...) |
-| main.rs:288:19:288:19 | 2 | {EXTERNAL LOCATION} | Some | main.rs:288:14:288:20 | Some(...) |
-| main.rs:292:10:292:10 | 0 | {EXTERNAL LOCATION} | Some | main.rs:292:5:292:11 | Some(...) |
-| main.rs:296:35:296:44 | source(...) | {EXTERNAL LOCATION} | Ok | main.rs:296:32:296:45 | Ok(...) |
-| main.rs:302:36:302:45 | source(...) | {EXTERNAL LOCATION} | Err | main.rs:302:32:302:46 | Err(...) |
-| main.rs:310:35:310:44 | source(...) | {EXTERNAL LOCATION} | Ok | main.rs:310:32:310:45 | Ok(...) |
-| main.rs:311:35:311:35 | 2 | {EXTERNAL LOCATION} | Ok | main.rs:311:32:311:36 | Ok(...) |
-| main.rs:312:36:312:45 | source(...) | {EXTERNAL LOCATION} | Err | main.rs:312:32:312:46 | Err(...) |
-| main.rs:319:8:319:8 | 0 | {EXTERNAL LOCATION} | Ok | main.rs:319:5:319:9 | Ok(...) |
-| main.rs:323:35:323:44 | source(...) | {EXTERNAL LOCATION} | Ok | main.rs:323:32:323:45 | Ok(...) |
-| main.rs:327:36:327:45 | source(...) | {EXTERNAL LOCATION} | Err | main.rs:327:32:327:46 | Err(...) |
-| main.rs:338:29:338:38 | source(...) | main.rs:333:7:333:9 | A | main.rs:338:14:338:39 | ...::A(...) |
-| main.rs:339:29:339:29 | 2 | main.rs:334:7:334:9 | B | main.rs:339:14:339:30 | ...::B(...) |
-| main.rs:356:16:356:25 | source(...) | main.rs:333:7:333:9 | A | main.rs:356:14:356:26 | A(...) |
-| main.rs:357:16:357:16 | 2 | main.rs:334:7:334:9 | B | main.rs:357:14:357:17 | B(...) |
-| main.rs:378:18:378:27 | source(...) | main.rs:372:9:372:20 | C | main.rs:377:14:379:5 | ...::C {...} |
-| main.rs:380:41:380:41 | 2 | main.rs:373:9:373:20 | D | main.rs:380:14:380:43 | ...::D {...} |
-| main.rs:398:18:398:27 | source(...) | main.rs:372:9:372:20 | C | main.rs:397:14:399:5 | C {...} |
-| main.rs:400:27:400:27 | 2 | main.rs:373:9:373:20 | D | main.rs:400:14:400:29 | D {...} |
-| main.rs:418:17:418:17 | 1 | file://:0:0:0:0 | element | main.rs:418:16:418:33 | [...] |
-| main.rs:418:20:418:20 | 2 | file://:0:0:0:0 | element | main.rs:418:16:418:33 | [...] |
-| main.rs:418:23:418:32 | source(...) | file://:0:0:0:0 | element | main.rs:418:16:418:33 | [...] |
-| main.rs:422:17:422:26 | source(...) | file://:0:0:0:0 | element | main.rs:422:16:422:31 | [...; 10] |
-| main.rs:426:17:426:17 | 1 | file://:0:0:0:0 | element | main.rs:426:16:426:24 | [...] |
-| main.rs:426:20:426:20 | 2 | file://:0:0:0:0 | element | main.rs:426:16:426:24 | [...] |
-| main.rs:426:23:426:23 | 3 | file://:0:0:0:0 | element | main.rs:426:16:426:24 | [...] |
-| main.rs:432:17:432:17 | 1 | file://:0:0:0:0 | element | main.rs:432:16:432:33 | [...] |
-| main.rs:432:20:432:20 | 2 | file://:0:0:0:0 | element | main.rs:432:16:432:33 | [...] |
-| main.rs:432:23:432:32 | source(...) | file://:0:0:0:0 | element | main.rs:432:16:432:33 | [...] |
-| main.rs:437:17:437:17 | 1 | file://:0:0:0:0 | element | main.rs:437:16:437:24 | [...] |
-| main.rs:437:20:437:20 | 2 | file://:0:0:0:0 | element | main.rs:437:16:437:24 | [...] |
-| main.rs:437:23:437:23 | 3 | file://:0:0:0:0 | element | main.rs:437:16:437:24 | [...] |
+| main.rs:278:19:278:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:278:14:278:29 | Some(...) |
+| main.rs:283:19:283:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:283:14:283:29 | Some(...) |
+| main.rs:286:19:286:19 | 0 | {EXTERNAL LOCATION} | Some | main.rs:286:14:286:20 | Some(...) |
+| main.rs:291:19:291:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:291:14:291:29 | Some(...) |
+| main.rs:299:19:299:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:299:14:299:29 | Some(...) |
+| main.rs:300:19:300:19 | 2 | {EXTERNAL LOCATION} | Some | main.rs:300:14:300:20 | Some(...) |
+| main.rs:304:10:304:10 | 0 | {EXTERNAL LOCATION} | Some | main.rs:304:5:304:11 | Some(...) |
+| main.rs:308:35:308:44 | source(...) | {EXTERNAL LOCATION} | Ok | main.rs:308:32:308:45 | Ok(...) |
+| main.rs:314:36:314:45 | source(...) | {EXTERNAL LOCATION} | Err | main.rs:314:32:314:46 | Err(...) |
+| main.rs:322:35:322:44 | source(...) | {EXTERNAL LOCATION} | Ok | main.rs:322:32:322:45 | Ok(...) |
+| main.rs:323:35:323:35 | 2 | {EXTERNAL LOCATION} | Ok | main.rs:323:32:323:36 | Ok(...) |
+| main.rs:324:36:324:45 | source(...) | {EXTERNAL LOCATION} | Err | main.rs:324:32:324:46 | Err(...) |
+| main.rs:331:8:331:8 | 0 | {EXTERNAL LOCATION} | Ok | main.rs:331:5:331:9 | Ok(...) |
+| main.rs:335:35:335:44 | source(...) | {EXTERNAL LOCATION} | Ok | main.rs:335:32:335:45 | Ok(...) |
+| main.rs:339:36:339:45 | source(...) | {EXTERNAL LOCATION} | Err | main.rs:339:32:339:46 | Err(...) |
+| main.rs:350:29:350:38 | source(...) | main.rs:345:7:345:9 | A | main.rs:350:14:350:39 | ...::A(...) |
+| main.rs:351:29:351:29 | 2 | main.rs:346:7:346:9 | B | main.rs:351:14:351:30 | ...::B(...) |
+| main.rs:368:16:368:25 | source(...) | main.rs:345:7:345:9 | A | main.rs:368:14:368:26 | A(...) |
+| main.rs:369:16:369:16 | 2 | main.rs:346:7:346:9 | B | main.rs:369:14:369:17 | B(...) |
+| main.rs:390:18:390:27 | source(...) | main.rs:384:9:384:20 | C | main.rs:389:14:391:5 | ...::C {...} |
+| main.rs:392:41:392:41 | 2 | main.rs:385:9:385:20 | D | main.rs:392:14:392:43 | ...::D {...} |
+| main.rs:410:18:410:27 | source(...) | main.rs:384:9:384:20 | C | main.rs:409:14:411:5 | C {...} |
+| main.rs:412:27:412:27 | 2 | main.rs:385:9:385:20 | D | main.rs:412:14:412:29 | D {...} |
+| main.rs:430:17:430:17 | 1 | file://:0:0:0:0 | element | main.rs:430:16:430:33 | [...] |
+| main.rs:430:20:430:20 | 2 | file://:0:0:0:0 | element | main.rs:430:16:430:33 | [...] |
+| main.rs:430:23:430:32 | source(...) | file://:0:0:0:0 | element | main.rs:430:16:430:33 | [...] |
+| main.rs:434:17:434:26 | source(...) | file://:0:0:0:0 | element | main.rs:434:16:434:31 | [...; 10] |
+| main.rs:438:17:438:17 | 1 | file://:0:0:0:0 | element | main.rs:438:16:438:24 | [...] |
+| main.rs:438:20:438:20 | 2 | file://:0:0:0:0 | element | main.rs:438:16:438:24 | [...] |
+| main.rs:438:23:438:23 | 3 | file://:0:0:0:0 | element | main.rs:438:16:438:24 | [...] |
| main.rs:444:17:444:17 | 1 | file://:0:0:0:0 | element | main.rs:444:16:444:33 | [...] |
| main.rs:444:20:444:20 | 2 | file://:0:0:0:0 | element | main.rs:444:16:444:33 | [...] |
| main.rs:444:23:444:32 | source(...) | file://:0:0:0:0 | element | main.rs:444:16:444:33 | [...] |
-| main.rs:455:24:455:24 | 1 | file://:0:0:0:0 | element | main.rs:455:23:455:31 | [...] |
-| main.rs:455:27:455:27 | 2 | file://:0:0:0:0 | element | main.rs:455:23:455:31 | [...] |
-| main.rs:455:30:455:30 | 3 | file://:0:0:0:0 | element | main.rs:455:23:455:31 | [...] |
-| main.rs:458:18:458:27 | source(...) | file://:0:0:0:0 | element | main.rs:458:5:458:11 | [post] mut_arr |
-| main.rs:470:41:470:67 | default_name | main.rs:467:9:467:20 | captured default_name | main.rs:470:41:470:67 | \|...\| ... |
-| main.rs:471:18:471:18 | n | file://:0:0:0:0 | &ref | main.rs:471:18:471:18 | receiver for n |
-| main.rs:495:13:495:13 | b | file://:0:0:0:0 | &ref | main.rs:495:13:495:13 | receiver for b |
-| main.rs:496:18:496:18 | b | file://:0:0:0:0 | &ref | main.rs:496:18:496:18 | receiver for b |
-| main.rs:505:15:505:24 | source(...) | file://:0:0:0:0 | element | main.rs:505:14:505:34 | [...] |
-| main.rs:505:27:505:27 | 2 | file://:0:0:0:0 | element | main.rs:505:14:505:34 | [...] |
-| main.rs:505:30:505:30 | 3 | file://:0:0:0:0 | element | main.rs:505:14:505:34 | [...] |
-| main.rs:505:33:505:33 | 4 | file://:0:0:0:0 | element | main.rs:505:14:505:34 | [...] |
-| main.rs:530:23:530:32 | source(...) | file://:0:0:0:0 | element | main.rs:530:22:530:42 | [...] |
-| main.rs:530:35:530:35 | 2 | file://:0:0:0:0 | element | main.rs:530:22:530:42 | [...] |
-| main.rs:530:38:530:38 | 3 | file://:0:0:0:0 | element | main.rs:530:22:530:42 | [...] |
-| main.rs:530:41:530:41 | 4 | file://:0:0:0:0 | element | main.rs:530:22:530:42 | [...] |
-| main.rs:545:18:545:18 | c | file://:0:0:0:0 | &ref | main.rs:545:17:545:18 | &c |
-| main.rs:548:15:548:15 | b | file://:0:0:0:0 | &ref | main.rs:548:14:548:15 | &b |
-| main.rs:571:27:571:27 | 0 | {EXTERNAL LOCATION} | Some | main.rs:571:22:571:28 | Some(...) |
+| main.rs:449:17:449:17 | 1 | file://:0:0:0:0 | element | main.rs:449:16:449:24 | [...] |
+| main.rs:449:20:449:20 | 2 | file://:0:0:0:0 | element | main.rs:449:16:449:24 | [...] |
+| main.rs:449:23:449:23 | 3 | file://:0:0:0:0 | element | main.rs:449:16:449:24 | [...] |
+| main.rs:456:17:456:17 | 1 | file://:0:0:0:0 | element | main.rs:456:16:456:33 | [...] |
+| main.rs:456:20:456:20 | 2 | file://:0:0:0:0 | element | main.rs:456:16:456:33 | [...] |
+| main.rs:456:23:456:32 | source(...) | file://:0:0:0:0 | element | main.rs:456:16:456:33 | [...] |
+| main.rs:467:24:467:24 | 1 | file://:0:0:0:0 | element | main.rs:467:23:467:31 | [...] |
+| main.rs:467:27:467:27 | 2 | file://:0:0:0:0 | element | main.rs:467:23:467:31 | [...] |
+| main.rs:467:30:467:30 | 3 | file://:0:0:0:0 | element | main.rs:467:23:467:31 | [...] |
+| main.rs:470:18:470:27 | source(...) | file://:0:0:0:0 | element | main.rs:470:5:470:11 | [post] mut_arr |
+| main.rs:482:41:482:67 | default_name | main.rs:479:9:479:20 | captured default_name | main.rs:482:41:482:67 | \|...\| ... |
+| main.rs:483:18:483:18 | n | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | receiver for n |
+| main.rs:507:13:507:13 | b | file://:0:0:0:0 | &ref | main.rs:507:13:507:13 | receiver for b |
+| main.rs:508:18:508:18 | b | file://:0:0:0:0 | &ref | main.rs:508:18:508:18 | receiver for b |
+| main.rs:517:15:517:24 | source(...) | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] |
+| main.rs:517:27:517:27 | 2 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] |
+| main.rs:517:30:517:30 | 3 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] |
+| main.rs:517:33:517:33 | 4 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] |
+| main.rs:542:23:542:32 | source(...) | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] |
+| main.rs:542:35:542:35 | 2 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] |
+| main.rs:542:38:542:38 | 3 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] |
+| main.rs:542:41:542:41 | 4 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] |
+| main.rs:557:18:557:18 | c | file://:0:0:0:0 | &ref | main.rs:557:17:557:18 | &c |
+| main.rs:560:15:560:15 | b | file://:0:0:0:0 | &ref | main.rs:560:14:560:15 | &b |
+| main.rs:583:27:583:27 | 0 | {EXTERNAL LOCATION} | Some | main.rs:583:22:583:28 | Some(...) |
diff --git a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected
index 707a63342ba..eafe3a7452e 100644
--- a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected
+++ b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected
@@ -27,225 +27,229 @@ edges
| main.rs:62:15:62:23 | source(...) | main.rs:61:9:61:9 | b | provenance | |
| main.rs:70:5:70:5 | i | main.rs:71:10:71:10 | i | provenance | |
| main.rs:70:9:70:17 | source(...) | main.rs:70:5:70:5 | i | provenance | |
-| main.rs:103:9:103:9 | i [&ref] | main.rs:104:11:104:11 | i [&ref] | provenance | |
-| main.rs:103:13:103:31 | ...::new(...) [&ref] | main.rs:103:9:103:9 | i [&ref] | provenance | |
-| main.rs:103:22:103:30 | source(...) | main.rs:103:13:103:31 | ...::new(...) [&ref] | provenance | MaD:1 |
-| main.rs:104:11:104:11 | i [&ref] | main.rs:104:10:104:11 | * ... | provenance | |
-| main.rs:111:9:111:9 | a [tuple.0] | main.rs:112:10:112:10 | a [tuple.0] | provenance | |
-| main.rs:111:13:111:26 | TupleExpr [tuple.0] | main.rs:111:9:111:9 | a [tuple.0] | provenance | |
-| main.rs:111:14:111:22 | source(...) | main.rs:111:13:111:26 | TupleExpr [tuple.0] | provenance | |
-| main.rs:112:10:112:10 | a [tuple.0] | main.rs:112:10:112:12 | a.0 | provenance | |
-| main.rs:117:9:117:9 | a [tuple.1] | main.rs:118:9:118:20 | TuplePat [tuple.1] | provenance | |
-| main.rs:117:13:117:30 | TupleExpr [tuple.1] | main.rs:117:9:117:9 | a [tuple.1] | provenance | |
-| main.rs:117:17:117:26 | source(...) | main.rs:117:13:117:30 | TupleExpr [tuple.1] | provenance | |
-| main.rs:118:9:118:20 | TuplePat [tuple.1] | main.rs:118:14:118:15 | a1 | provenance | |
-| main.rs:118:14:118:15 | a1 | main.rs:120:10:120:11 | a1 | provenance | |
-| main.rs:125:9:125:13 | mut a [tuple.1] | main.rs:127:10:127:10 | a [tuple.1] | provenance | |
-| main.rs:125:17:125:31 | TupleExpr [tuple.1] | main.rs:125:9:125:13 | mut a [tuple.1] | provenance | |
-| main.rs:125:21:125:30 | source(...) | main.rs:125:17:125:31 | TupleExpr [tuple.1] | provenance | |
-| main.rs:127:10:127:10 | a [tuple.1] | main.rs:127:10:127:12 | a.1 | provenance | |
-| main.rs:128:5:128:5 | [post] a [tuple.0] | main.rs:129:5:129:5 | a [tuple.0] | provenance | |
-| main.rs:128:11:128:20 | source(...) | main.rs:128:5:128:5 | [post] a [tuple.0] | provenance | |
-| main.rs:129:5:129:5 | a [tuple.0] | main.rs:130:10:130:10 | a [tuple.0] | provenance | |
-| main.rs:130:10:130:10 | a [tuple.0] | main.rs:130:10:130:12 | a.0 | provenance | |
-| main.rs:135:9:135:9 | a [tuple.1] | main.rs:136:14:136:14 | a [tuple.1] | provenance | |
-| main.rs:135:13:135:27 | TupleExpr [tuple.1] | main.rs:135:9:135:9 | a [tuple.1] | provenance | |
-| main.rs:135:17:135:26 | source(...) | main.rs:135:13:135:27 | TupleExpr [tuple.1] | provenance | |
-| main.rs:136:9:136:9 | b [tuple.0, tuple.1] | main.rs:138:10:138:10 | b [tuple.0, tuple.1] | provenance | |
-| main.rs:136:13:136:18 | TupleExpr [tuple.0, tuple.1] | main.rs:136:9:136:9 | b [tuple.0, tuple.1] | provenance | |
-| main.rs:136:14:136:14 | a [tuple.1] | main.rs:136:13:136:18 | TupleExpr [tuple.0, tuple.1] | provenance | |
-| main.rs:138:10:138:10 | b [tuple.0, tuple.1] | main.rs:138:10:138:12 | b.0 [tuple.1] | provenance | |
-| main.rs:138:10:138:12 | b.0 [tuple.1] | main.rs:138:10:138:15 | ... .1 | provenance | |
-| main.rs:151:9:151:9 | p [Point.x] | main.rs:152:10:152:10 | p [Point.x] | provenance | |
-| main.rs:151:13:151:40 | Point {...} [Point.x] | main.rs:151:9:151:9 | p [Point.x] | provenance | |
-| main.rs:151:24:151:32 | source(...) | main.rs:151:13:151:40 | Point {...} [Point.x] | provenance | |
-| main.rs:152:10:152:10 | p [Point.x] | main.rs:152:10:152:12 | p.x | provenance | |
-| main.rs:159:5:159:5 | [post] p [Point.y] | main.rs:160:10:160:10 | p [Point.y] | provenance | |
-| main.rs:159:11:159:20 | source(...) | main.rs:159:5:159:5 | [post] p [Point.y] | provenance | |
-| main.rs:160:10:160:10 | p [Point.y] | main.rs:160:10:160:12 | p.y | provenance | |
-| main.rs:164:9:164:9 | p [Point.x] | main.rs:168:9:168:28 | Point {...} [Point.x] | provenance | |
-| main.rs:164:13:167:5 | Point {...} [Point.x] | main.rs:164:9:164:9 | p [Point.x] | provenance | |
-| main.rs:165:12:165:21 | source(...) | main.rs:164:13:167:5 | Point {...} [Point.x] | provenance | |
-| main.rs:168:9:168:28 | Point {...} [Point.x] | main.rs:168:20:168:20 | a | provenance | |
-| main.rs:168:20:168:20 | a | main.rs:169:10:169:10 | a | provenance | |
-| main.rs:179:9:179:9 | p [Point3D.plane, Point.y] | main.rs:187:10:187:10 | p [Point3D.plane, Point.y] | provenance | |
-| main.rs:179:13:185:5 | Point3D {...} [Point3D.plane, Point.y] | main.rs:179:9:179:9 | p [Point3D.plane, Point.y] | provenance | |
-| main.rs:180:16:183:9 | Point {...} [Point.y] | main.rs:179:13:185:5 | Point3D {...} [Point3D.plane, Point.y] | provenance | |
-| main.rs:182:16:182:25 | source(...) | main.rs:180:16:183:9 | Point {...} [Point.y] | provenance | |
-| main.rs:187:10:187:10 | p [Point3D.plane, Point.y] | main.rs:187:10:187:16 | p.plane [Point.y] | provenance | |
-| main.rs:187:10:187:16 | p.plane [Point.y] | main.rs:187:10:187:18 | ... .y | provenance | |
-| main.rs:192:9:192:9 | y | main.rs:194:30:194:30 | y | provenance | |
-| main.rs:192:13:192:22 | source(...) | main.rs:192:9:192:9 | y | provenance | |
-| main.rs:193:9:193:9 | p [Point3D.plane, Point.y] | main.rs:197:11:197:11 | p [Point3D.plane, Point.y] | provenance | |
-| main.rs:193:13:196:5 | Point3D {...} [Point3D.plane, Point.y] | main.rs:193:9:193:9 | p [Point3D.plane, Point.y] | provenance | |
-| main.rs:194:16:194:32 | Point {...} [Point.y] | main.rs:193:13:196:5 | Point3D {...} [Point3D.plane, Point.y] | provenance | |
-| main.rs:194:30:194:30 | y | main.rs:194:16:194:32 | Point {...} [Point.y] | provenance | |
-| main.rs:197:11:197:11 | p [Point3D.plane, Point.y] | main.rs:198:9:201:9 | Point3D {...} [Point3D.plane, Point.y] | provenance | |
-| main.rs:198:9:201:9 | Point3D {...} [Point3D.plane, Point.y] | main.rs:199:20:199:33 | Point {...} [Point.y] | provenance | |
-| main.rs:199:20:199:33 | Point {...} [Point.y] | main.rs:199:31:199:31 | y | provenance | |
-| main.rs:199:31:199:31 | y | main.rs:203:18:203:18 | y | provenance | |
-| main.rs:212:9:212:9 | s [MyTupleStruct(0)] | main.rs:213:10:213:10 | s [MyTupleStruct(0)] | provenance | |
-| main.rs:212:9:212:9 | s [MyTupleStruct(0)] | main.rs:216:11:216:11 | s [MyTupleStruct(0)] | provenance | |
-| main.rs:212:13:212:40 | MyTupleStruct(...) [MyTupleStruct(0)] | main.rs:212:9:212:9 | s [MyTupleStruct(0)] | provenance | |
-| main.rs:212:27:212:36 | source(...) | main.rs:212:13:212:40 | MyTupleStruct(...) [MyTupleStruct(0)] | provenance | |
-| main.rs:213:10:213:10 | s [MyTupleStruct(0)] | main.rs:213:10:213:12 | s.0 | provenance | |
-| main.rs:216:11:216:11 | s [MyTupleStruct(0)] | main.rs:217:9:217:27 | MyTupleStruct(...) [MyTupleStruct(0)] | provenance | |
-| main.rs:217:9:217:27 | MyTupleStruct(...) [MyTupleStruct(0)] | main.rs:217:23:217:23 | x | provenance | |
-| main.rs:217:23:217:23 | x | main.rs:218:18:218:18 | x | provenance | |
-| main.rs:228:9:228:10 | s1 [Some] | main.rs:230:11:230:12 | s1 [Some] | provenance | |
-| main.rs:228:14:228:37 | ...::Some(...) [Some] | main.rs:228:9:228:10 | s1 [Some] | provenance | |
-| main.rs:228:27:228:36 | source(...) | main.rs:228:14:228:37 | ...::Some(...) [Some] | provenance | |
-| main.rs:230:11:230:12 | s1 [Some] | main.rs:231:9:231:23 | ...::Some(...) [Some] | provenance | |
-| main.rs:231:9:231:23 | ...::Some(...) [Some] | main.rs:231:22:231:22 | n | provenance | |
-| main.rs:231:22:231:22 | n | main.rs:231:33:231:33 | n | provenance | |
-| main.rs:241:9:241:10 | s1 [Some] | main.rs:243:11:243:12 | s1 [Some] | provenance | |
-| main.rs:241:14:241:29 | Some(...) [Some] | main.rs:241:9:241:10 | s1 [Some] | provenance | |
-| main.rs:241:19:241:28 | source(...) | main.rs:241:14:241:29 | Some(...) [Some] | provenance | |
-| main.rs:243:11:243:12 | s1 [Some] | main.rs:244:9:244:15 | Some(...) [Some] | provenance | |
-| main.rs:244:9:244:15 | Some(...) [Some] | main.rs:244:14:244:14 | n | provenance | |
-| main.rs:244:14:244:14 | n | main.rs:244:25:244:25 | n | provenance | |
-| main.rs:254:9:254:10 | s1 [Some] | main.rs:255:12:255:18 | Some(...) [Some] | provenance | |
-| main.rs:254:14:254:29 | Some(...) [Some] | main.rs:254:9:254:10 | s1 [Some] | provenance | |
-| main.rs:254:19:254:28 | source(...) | main.rs:254:14:254:29 | Some(...) [Some] | provenance | |
-| main.rs:255:12:255:18 | Some(...) [Some] | main.rs:255:17:255:17 | n | provenance | |
-| main.rs:255:17:255:17 | n | main.rs:257:18:257:18 | n | provenance | |
-| main.rs:255:17:255:17 | n | main.rs:261:14:261:14 | n | provenance | |
-| main.rs:266:9:266:10 | s1 [Some] | main.rs:267:10:267:20 | s1.unwrap() | provenance | MaD:2 |
+| main.rs:76:9:76:9 | k | main.rs:77:5:77:5 | j | provenance | |
+| main.rs:76:9:76:9 | k | main.rs:79:10:79:10 | k | provenance | |
+| main.rs:76:13:76:21 | source(...) | main.rs:76:9:76:9 | k | provenance | |
+| main.rs:77:5:77:5 | j | main.rs:78:10:78:10 | j | provenance | |
+| main.rs:115:9:115:9 | i [&ref] | main.rs:116:11:116:11 | i [&ref] | provenance | |
+| main.rs:115:13:115:31 | ...::new(...) [&ref] | main.rs:115:9:115:9 | i [&ref] | provenance | |
+| main.rs:115:22:115:30 | source(...) | main.rs:115:13:115:31 | ...::new(...) [&ref] | provenance | MaD:1 |
+| main.rs:116:11:116:11 | i [&ref] | main.rs:116:10:116:11 | * ... | provenance | |
+| main.rs:123:9:123:9 | a [tuple.0] | main.rs:124:10:124:10 | a [tuple.0] | provenance | |
+| main.rs:123:13:123:26 | TupleExpr [tuple.0] | main.rs:123:9:123:9 | a [tuple.0] | provenance | |
+| main.rs:123:14:123:22 | source(...) | main.rs:123:13:123:26 | TupleExpr [tuple.0] | provenance | |
+| main.rs:124:10:124:10 | a [tuple.0] | main.rs:124:10:124:12 | a.0 | provenance | |
+| main.rs:129:9:129:9 | a [tuple.1] | main.rs:130:9:130:20 | TuplePat [tuple.1] | provenance | |
+| main.rs:129:13:129:30 | TupleExpr [tuple.1] | main.rs:129:9:129:9 | a [tuple.1] | provenance | |
+| main.rs:129:17:129:26 | source(...) | main.rs:129:13:129:30 | TupleExpr [tuple.1] | provenance | |
+| main.rs:130:9:130:20 | TuplePat [tuple.1] | main.rs:130:14:130:15 | a1 | provenance | |
+| main.rs:130:14:130:15 | a1 | main.rs:132:10:132:11 | a1 | provenance | |
+| main.rs:137:9:137:13 | mut a [tuple.1] | main.rs:139:10:139:10 | a [tuple.1] | provenance | |
+| main.rs:137:17:137:31 | TupleExpr [tuple.1] | main.rs:137:9:137:13 | mut a [tuple.1] | provenance | |
+| main.rs:137:21:137:30 | source(...) | main.rs:137:17:137:31 | TupleExpr [tuple.1] | provenance | |
+| main.rs:139:10:139:10 | a [tuple.1] | main.rs:139:10:139:12 | a.1 | provenance | |
+| main.rs:140:5:140:5 | [post] a [tuple.0] | main.rs:141:5:141:5 | a [tuple.0] | provenance | |
+| main.rs:140:11:140:20 | source(...) | main.rs:140:5:140:5 | [post] a [tuple.0] | provenance | |
+| main.rs:141:5:141:5 | a [tuple.0] | main.rs:142:10:142:10 | a [tuple.0] | provenance | |
+| main.rs:142:10:142:10 | a [tuple.0] | main.rs:142:10:142:12 | a.0 | provenance | |
+| main.rs:147:9:147:9 | a [tuple.1] | main.rs:148:14:148:14 | a [tuple.1] | provenance | |
+| main.rs:147:13:147:27 | TupleExpr [tuple.1] | main.rs:147:9:147:9 | a [tuple.1] | provenance | |
+| main.rs:147:17:147:26 | source(...) | main.rs:147:13:147:27 | TupleExpr [tuple.1] | provenance | |
+| main.rs:148:9:148:9 | b [tuple.0, tuple.1] | main.rs:150:10:150:10 | b [tuple.0, tuple.1] | provenance | |
+| main.rs:148:13:148:18 | TupleExpr [tuple.0, tuple.1] | main.rs:148:9:148:9 | b [tuple.0, tuple.1] | provenance | |
+| main.rs:148:14:148:14 | a [tuple.1] | main.rs:148:13:148:18 | TupleExpr [tuple.0, tuple.1] | provenance | |
+| main.rs:150:10:150:10 | b [tuple.0, tuple.1] | main.rs:150:10:150:12 | b.0 [tuple.1] | provenance | |
+| main.rs:150:10:150:12 | b.0 [tuple.1] | main.rs:150:10:150:15 | ... .1 | provenance | |
+| main.rs:163:9:163:9 | p [Point.x] | main.rs:164:10:164:10 | p [Point.x] | provenance | |
+| main.rs:163:13:163:40 | Point {...} [Point.x] | main.rs:163:9:163:9 | p [Point.x] | provenance | |
+| main.rs:163:24:163:32 | source(...) | main.rs:163:13:163:40 | Point {...} [Point.x] | provenance | |
+| main.rs:164:10:164:10 | p [Point.x] | main.rs:164:10:164:12 | p.x | provenance | |
+| main.rs:171:5:171:5 | [post] p [Point.y] | main.rs:172:10:172:10 | p [Point.y] | provenance | |
+| main.rs:171:11:171:20 | source(...) | main.rs:171:5:171:5 | [post] p [Point.y] | provenance | |
+| main.rs:172:10:172:10 | p [Point.y] | main.rs:172:10:172:12 | p.y | provenance | |
+| main.rs:176:9:176:9 | p [Point.x] | main.rs:180:9:180:28 | Point {...} [Point.x] | provenance | |
+| main.rs:176:13:179:5 | Point {...} [Point.x] | main.rs:176:9:176:9 | p [Point.x] | provenance | |
+| main.rs:177:12:177:21 | source(...) | main.rs:176:13:179:5 | Point {...} [Point.x] | provenance | |
+| main.rs:180:9:180:28 | Point {...} [Point.x] | main.rs:180:20:180:20 | a | provenance | |
+| main.rs:180:20:180:20 | a | main.rs:181:10:181:10 | a | provenance | |
+| main.rs:191:9:191:9 | p [Point3D.plane, Point.y] | main.rs:199:10:199:10 | p [Point3D.plane, Point.y] | provenance | |
+| main.rs:191:13:197:5 | Point3D {...} [Point3D.plane, Point.y] | main.rs:191:9:191:9 | p [Point3D.plane, Point.y] | provenance | |
+| main.rs:192:16:195:9 | Point {...} [Point.y] | main.rs:191:13:197:5 | Point3D {...} [Point3D.plane, Point.y] | provenance | |
+| main.rs:194:16:194:25 | source(...) | main.rs:192:16:195:9 | Point {...} [Point.y] | provenance | |
+| main.rs:199:10:199:10 | p [Point3D.plane, Point.y] | main.rs:199:10:199:16 | p.plane [Point.y] | provenance | |
+| main.rs:199:10:199:16 | p.plane [Point.y] | main.rs:199:10:199:18 | ... .y | provenance | |
+| main.rs:204:9:204:9 | y | main.rs:206:30:206:30 | y | provenance | |
+| main.rs:204:13:204:22 | source(...) | main.rs:204:9:204:9 | y | provenance | |
+| main.rs:205:9:205:9 | p [Point3D.plane, Point.y] | main.rs:209:11:209:11 | p [Point3D.plane, Point.y] | provenance | |
+| main.rs:205:13:208:5 | Point3D {...} [Point3D.plane, Point.y] | main.rs:205:9:205:9 | p [Point3D.plane, Point.y] | provenance | |
+| main.rs:206:16:206:32 | Point {...} [Point.y] | main.rs:205:13:208:5 | Point3D {...} [Point3D.plane, Point.y] | provenance | |
+| main.rs:206:30:206:30 | y | main.rs:206:16:206:32 | Point {...} [Point.y] | provenance | |
+| main.rs:209:11:209:11 | p [Point3D.plane, Point.y] | main.rs:210:9:213:9 | Point3D {...} [Point3D.plane, Point.y] | provenance | |
+| main.rs:210:9:213:9 | Point3D {...} [Point3D.plane, Point.y] | main.rs:211:20:211:33 | Point {...} [Point.y] | provenance | |
+| main.rs:211:20:211:33 | Point {...} [Point.y] | main.rs:211:31:211:31 | y | provenance | |
+| main.rs:211:31:211:31 | y | main.rs:215:18:215:18 | y | provenance | |
+| main.rs:224:9:224:9 | s [MyTupleStruct(0)] | main.rs:225:10:225:10 | s [MyTupleStruct(0)] | provenance | |
+| main.rs:224:9:224:9 | s [MyTupleStruct(0)] | main.rs:228:11:228:11 | s [MyTupleStruct(0)] | provenance | |
+| main.rs:224:13:224:40 | MyTupleStruct(...) [MyTupleStruct(0)] | main.rs:224:9:224:9 | s [MyTupleStruct(0)] | provenance | |
+| main.rs:224:27:224:36 | source(...) | main.rs:224:13:224:40 | MyTupleStruct(...) [MyTupleStruct(0)] | provenance | |
+| main.rs:225:10:225:10 | s [MyTupleStruct(0)] | main.rs:225:10:225:12 | s.0 | provenance | |
+| main.rs:228:11:228:11 | s [MyTupleStruct(0)] | main.rs:229:9:229:27 | MyTupleStruct(...) [MyTupleStruct(0)] | provenance | |
+| main.rs:229:9:229:27 | MyTupleStruct(...) [MyTupleStruct(0)] | main.rs:229:23:229:23 | x | provenance | |
+| main.rs:229:23:229:23 | x | main.rs:230:18:230:18 | x | provenance | |
+| main.rs:240:9:240:10 | s1 [Some] | main.rs:242:11:242:12 | s1 [Some] | provenance | |
+| main.rs:240:14:240:37 | ...::Some(...) [Some] | main.rs:240:9:240:10 | s1 [Some] | provenance | |
+| main.rs:240:27:240:36 | source(...) | main.rs:240:14:240:37 | ...::Some(...) [Some] | provenance | |
+| main.rs:242:11:242:12 | s1 [Some] | main.rs:243:9:243:23 | ...::Some(...) [Some] | provenance | |
+| main.rs:243:9:243:23 | ...::Some(...) [Some] | main.rs:243:22:243:22 | n | provenance | |
+| main.rs:243:22:243:22 | n | main.rs:243:33:243:33 | n | provenance | |
+| main.rs:253:9:253:10 | s1 [Some] | main.rs:255:11:255:12 | s1 [Some] | provenance | |
+| main.rs:253:14:253:29 | Some(...) [Some] | main.rs:253:9:253:10 | s1 [Some] | provenance | |
+| main.rs:253:19:253:28 | source(...) | main.rs:253:14:253:29 | Some(...) [Some] | provenance | |
+| main.rs:255:11:255:12 | s1 [Some] | main.rs:256:9:256:15 | Some(...) [Some] | provenance | |
+| main.rs:256:9:256:15 | Some(...) [Some] | main.rs:256:14:256:14 | n | provenance | |
+| main.rs:256:14:256:14 | n | main.rs:256:25:256:25 | n | provenance | |
+| main.rs:266:9:266:10 | s1 [Some] | main.rs:267:12:267:18 | Some(...) [Some] | provenance | |
| main.rs:266:14:266:29 | Some(...) [Some] | main.rs:266:9:266:10 | s1 [Some] | provenance | |
| main.rs:266:19:266:28 | source(...) | main.rs:266:14:266:29 | Some(...) [Some] | provenance | |
-| main.rs:271:9:271:10 | s1 [Some] | main.rs:272:10:272:24 | s1.unwrap_or(...) | provenance | MaD:4 |
-| main.rs:271:14:271:29 | Some(...) [Some] | main.rs:271:9:271:10 | s1 [Some] | provenance | |
-| main.rs:271:19:271:28 | source(...) | main.rs:271:14:271:29 | Some(...) [Some] | provenance | |
-| main.rs:275:23:275:32 | source(...) | main.rs:275:10:275:33 | s2.unwrap_or(...) | provenance | MaD:3 |
-| main.rs:279:9:279:10 | s1 [Some] | main.rs:280:10:280:32 | s1.unwrap_or_else(...) | provenance | MaD:6 |
-| main.rs:279:14:279:29 | Some(...) [Some] | main.rs:279:9:279:10 | s1 [Some] | provenance | |
-| main.rs:279:19:279:28 | source(...) | main.rs:279:14:279:29 | Some(...) [Some] | provenance | |
-| main.rs:283:31:283:40 | source(...) | main.rs:283:10:283:41 | s2.unwrap_or_else(...) | provenance | MaD:5 |
-| main.rs:287:9:287:10 | s1 [Some] | main.rs:289:14:289:15 | s1 [Some] | provenance | |
-| main.rs:287:14:287:29 | Some(...) [Some] | main.rs:287:9:287:10 | s1 [Some] | provenance | |
-| main.rs:287:19:287:28 | source(...) | main.rs:287:14:287:29 | Some(...) [Some] | provenance | |
-| main.rs:289:9:289:10 | i1 | main.rs:290:10:290:11 | i1 | provenance | |
-| main.rs:289:14:289:15 | s1 [Some] | main.rs:289:14:289:16 | TryExpr | provenance | |
-| main.rs:289:14:289:16 | TryExpr | main.rs:289:9:289:10 | i1 | provenance | |
-| main.rs:296:9:296:10 | r1 [Ok] | main.rs:297:28:297:34 | r1.ok() [Some] | provenance | MaD:10 |
-| main.rs:296:32:296:45 | Ok(...) [Ok] | main.rs:296:9:296:10 | r1 [Ok] | provenance | |
-| main.rs:296:35:296:44 | source(...) | main.rs:296:32:296:45 | Ok(...) [Ok] | provenance | |
-| main.rs:297:9:297:11 | o1a [Some] | main.rs:299:10:299:21 | o1a.unwrap() | provenance | MaD:2 |
-| main.rs:297:28:297:34 | r1.ok() [Some] | main.rs:297:9:297:11 | o1a [Some] | provenance | |
-| main.rs:302:9:302:10 | r2 [Err] | main.rs:304:28:304:35 | r2.err() [Some] | provenance | MaD:7 |
-| main.rs:302:32:302:46 | Err(...) [Err] | main.rs:302:9:302:10 | r2 [Err] | provenance | |
-| main.rs:302:36:302:45 | source(...) | main.rs:302:32:302:46 | Err(...) [Err] | provenance | |
-| main.rs:304:9:304:11 | o2b [Some] | main.rs:306:10:306:21 | o2b.unwrap() | provenance | MaD:2 |
-| main.rs:304:28:304:35 | r2.err() [Some] | main.rs:304:9:304:11 | o2b [Some] | provenance | |
-| main.rs:310:9:310:10 | s1 [Ok] | main.rs:313:14:313:15 | s1 [Ok] | provenance | |
-| main.rs:310:32:310:45 | Ok(...) [Ok] | main.rs:310:9:310:10 | s1 [Ok] | provenance | |
-| main.rs:310:35:310:44 | source(...) | main.rs:310:32:310:45 | Ok(...) [Ok] | provenance | |
-| main.rs:313:9:313:10 | i1 | main.rs:315:10:315:11 | i1 | provenance | |
-| main.rs:313:14:313:15 | s1 [Ok] | main.rs:313:14:313:16 | TryExpr | provenance | |
-| main.rs:313:14:313:16 | TryExpr | main.rs:313:9:313:10 | i1 | provenance | |
-| main.rs:323:9:323:10 | s1 [Ok] | main.rs:324:10:324:22 | s1.expect(...) | provenance | MaD:8 |
-| main.rs:323:32:323:45 | Ok(...) [Ok] | main.rs:323:9:323:10 | s1 [Ok] | provenance | |
-| main.rs:323:35:323:44 | source(...) | main.rs:323:32:323:45 | Ok(...) [Ok] | provenance | |
-| main.rs:327:9:327:10 | s2 [Err] | main.rs:329:10:329:26 | s2.expect_err(...) | provenance | MaD:9 |
-| main.rs:327:32:327:46 | Err(...) [Err] | main.rs:327:9:327:10 | s2 [Err] | provenance | |
-| main.rs:327:36:327:45 | source(...) | main.rs:327:32:327:46 | Err(...) [Err] | provenance | |
-| main.rs:338:9:338:10 | s1 [A] | main.rs:340:11:340:12 | s1 [A] | provenance | |
-| main.rs:338:14:338:39 | ...::A(...) [A] | main.rs:338:9:338:10 | s1 [A] | provenance | |
-| main.rs:338:29:338:38 | source(...) | main.rs:338:14:338:39 | ...::A(...) [A] | provenance | |
-| main.rs:340:11:340:12 | s1 [A] | main.rs:341:9:341:25 | ...::A(...) [A] | provenance | |
-| main.rs:340:11:340:12 | s1 [A] | main.rs:344:11:344:12 | s1 [A] | provenance | |
-| main.rs:341:9:341:25 | ...::A(...) [A] | main.rs:341:24:341:24 | n | provenance | |
-| main.rs:341:24:341:24 | n | main.rs:341:35:341:35 | n | provenance | |
-| main.rs:344:11:344:12 | s1 [A] | main.rs:345:9:345:25 | ...::A(...) [A] | provenance | |
-| main.rs:345:9:345:25 | ...::A(...) [A] | main.rs:345:24:345:24 | n | provenance | |
-| main.rs:345:24:345:24 | n | main.rs:345:55:345:55 | n | provenance | |
-| main.rs:356:9:356:10 | s1 [A] | main.rs:358:11:358:12 | s1 [A] | provenance | |
-| main.rs:356:14:356:26 | A(...) [A] | main.rs:356:9:356:10 | s1 [A] | provenance | |
-| main.rs:356:16:356:25 | source(...) | main.rs:356:14:356:26 | A(...) [A] | provenance | |
-| main.rs:358:11:358:12 | s1 [A] | main.rs:359:9:359:12 | A(...) [A] | provenance | |
-| main.rs:358:11:358:12 | s1 [A] | main.rs:362:11:362:12 | s1 [A] | provenance | |
-| main.rs:359:9:359:12 | A(...) [A] | main.rs:359:11:359:11 | n | provenance | |
-| main.rs:359:11:359:11 | n | main.rs:359:22:359:22 | n | provenance | |
-| main.rs:362:11:362:12 | s1 [A] | main.rs:363:9:363:12 | A(...) [A] | provenance | |
-| main.rs:363:9:363:12 | A(...) [A] | main.rs:363:11:363:11 | n | provenance | |
-| main.rs:363:11:363:11 | n | main.rs:363:29:363:29 | n | provenance | |
-| main.rs:377:9:377:10 | s1 [C] | main.rs:381:11:381:12 | s1 [C] | provenance | |
-| main.rs:377:14:379:5 | ...::C {...} [C] | main.rs:377:9:377:10 | s1 [C] | provenance | |
-| main.rs:378:18:378:27 | source(...) | main.rs:377:14:379:5 | ...::C {...} [C] | provenance | |
-| main.rs:381:11:381:12 | s1 [C] | main.rs:382:9:382:38 | ...::C {...} [C] | provenance | |
-| main.rs:381:11:381:12 | s1 [C] | main.rs:385:11:385:12 | s1 [C] | provenance | |
-| main.rs:382:9:382:38 | ...::C {...} [C] | main.rs:382:36:382:36 | n | provenance | |
-| main.rs:382:36:382:36 | n | main.rs:382:48:382:48 | n | provenance | |
-| main.rs:385:11:385:12 | s1 [C] | main.rs:386:9:386:38 | ...::C {...} [C] | provenance | |
-| main.rs:386:9:386:38 | ...::C {...} [C] | main.rs:386:36:386:36 | n | provenance | |
-| main.rs:386:36:386:36 | n | main.rs:386:81:386:81 | n | provenance | |
-| main.rs:397:9:397:10 | s1 [C] | main.rs:401:11:401:12 | s1 [C] | provenance | |
-| main.rs:397:14:399:5 | C {...} [C] | main.rs:397:9:397:10 | s1 [C] | provenance | |
-| main.rs:398:18:398:27 | source(...) | main.rs:397:14:399:5 | C {...} [C] | provenance | |
-| main.rs:401:11:401:12 | s1 [C] | main.rs:402:9:402:24 | C {...} [C] | provenance | |
-| main.rs:401:11:401:12 | s1 [C] | main.rs:405:11:405:12 | s1 [C] | provenance | |
-| main.rs:402:9:402:24 | C {...} [C] | main.rs:402:22:402:22 | n | provenance | |
-| main.rs:402:22:402:22 | n | main.rs:402:34:402:34 | n | provenance | |
-| main.rs:405:11:405:12 | s1 [C] | main.rs:406:9:406:24 | C {...} [C] | provenance | |
-| main.rs:406:9:406:24 | C {...} [C] | main.rs:406:22:406:22 | n | provenance | |
-| main.rs:406:22:406:22 | n | main.rs:406:53:406:53 | n | provenance | |
-| main.rs:418:9:418:12 | arr1 [element] | main.rs:419:14:419:17 | arr1 [element] | provenance | |
-| main.rs:418:16:418:33 | [...] [element] | main.rs:418:9:418:12 | arr1 [element] | provenance | |
-| main.rs:418:23:418:32 | source(...) | main.rs:418:16:418:33 | [...] [element] | provenance | |
-| main.rs:419:9:419:10 | n1 | main.rs:420:10:420:11 | n1 | provenance | |
-| main.rs:419:14:419:17 | arr1 [element] | main.rs:419:14:419:20 | arr1[2] | provenance | |
-| main.rs:419:14:419:20 | arr1[2] | main.rs:419:9:419:10 | n1 | provenance | |
-| main.rs:422:9:422:12 | arr2 [element] | main.rs:423:14:423:17 | arr2 [element] | provenance | |
-| main.rs:422:16:422:31 | [...; 10] [element] | main.rs:422:9:422:12 | arr2 [element] | provenance | |
-| main.rs:422:17:422:26 | source(...) | main.rs:422:16:422:31 | [...; 10] [element] | provenance | |
-| main.rs:423:9:423:10 | n2 | main.rs:424:10:424:11 | n2 | provenance | |
-| main.rs:423:14:423:17 | arr2 [element] | main.rs:423:14:423:20 | arr2[4] | provenance | |
-| main.rs:423:14:423:20 | arr2[4] | main.rs:423:9:423:10 | n2 | provenance | |
-| main.rs:432:9:432:12 | arr1 [element] | main.rs:433:15:433:18 | arr1 [element] | provenance | |
-| main.rs:432:16:432:33 | [...] [element] | main.rs:432:9:432:12 | arr1 [element] | provenance | |
-| main.rs:432:23:432:32 | source(...) | main.rs:432:16:432:33 | [...] [element] | provenance | |
-| main.rs:433:9:433:10 | n1 | main.rs:434:14:434:15 | n1 | provenance | |
-| main.rs:433:15:433:18 | arr1 [element] | main.rs:433:9:433:10 | n1 | provenance | |
-| main.rs:444:9:444:12 | arr1 [element] | main.rs:445:11:445:14 | arr1 [element] | provenance | |
+| main.rs:267:12:267:18 | Some(...) [Some] | main.rs:267:17:267:17 | n | provenance | |
+| main.rs:267:17:267:17 | n | main.rs:269:18:269:18 | n | provenance | |
+| main.rs:267:17:267:17 | n | main.rs:273:14:273:14 | n | provenance | |
+| main.rs:278:9:278:10 | s1 [Some] | main.rs:279:10:279:20 | s1.unwrap() | provenance | MaD:2 |
+| main.rs:278:14:278:29 | Some(...) [Some] | main.rs:278:9:278:10 | s1 [Some] | provenance | |
+| main.rs:278:19:278:28 | source(...) | main.rs:278:14:278:29 | Some(...) [Some] | provenance | |
+| main.rs:283:9:283:10 | s1 [Some] | main.rs:284:10:284:24 | s1.unwrap_or(...) | provenance | MaD:4 |
+| main.rs:283:14:283:29 | Some(...) [Some] | main.rs:283:9:283:10 | s1 [Some] | provenance | |
+| main.rs:283:19:283:28 | source(...) | main.rs:283:14:283:29 | Some(...) [Some] | provenance | |
+| main.rs:287:23:287:32 | source(...) | main.rs:287:10:287:33 | s2.unwrap_or(...) | provenance | MaD:3 |
+| main.rs:291:9:291:10 | s1 [Some] | main.rs:292:10:292:32 | s1.unwrap_or_else(...) | provenance | MaD:6 |
+| main.rs:291:14:291:29 | Some(...) [Some] | main.rs:291:9:291:10 | s1 [Some] | provenance | |
+| main.rs:291:19:291:28 | source(...) | main.rs:291:14:291:29 | Some(...) [Some] | provenance | |
+| main.rs:295:31:295:40 | source(...) | main.rs:295:10:295:41 | s2.unwrap_or_else(...) | provenance | MaD:5 |
+| main.rs:299:9:299:10 | s1 [Some] | main.rs:301:14:301:15 | s1 [Some] | provenance | |
+| main.rs:299:14:299:29 | Some(...) [Some] | main.rs:299:9:299:10 | s1 [Some] | provenance | |
+| main.rs:299:19:299:28 | source(...) | main.rs:299:14:299:29 | Some(...) [Some] | provenance | |
+| main.rs:301:9:301:10 | i1 | main.rs:302:10:302:11 | i1 | provenance | |
+| main.rs:301:14:301:15 | s1 [Some] | main.rs:301:14:301:16 | TryExpr | provenance | |
+| main.rs:301:14:301:16 | TryExpr | main.rs:301:9:301:10 | i1 | provenance | |
+| main.rs:308:9:308:10 | r1 [Ok] | main.rs:309:28:309:34 | r1.ok() [Some] | provenance | MaD:10 |
+| main.rs:308:32:308:45 | Ok(...) [Ok] | main.rs:308:9:308:10 | r1 [Ok] | provenance | |
+| main.rs:308:35:308:44 | source(...) | main.rs:308:32:308:45 | Ok(...) [Ok] | provenance | |
+| main.rs:309:9:309:11 | o1a [Some] | main.rs:311:10:311:21 | o1a.unwrap() | provenance | MaD:2 |
+| main.rs:309:28:309:34 | r1.ok() [Some] | main.rs:309:9:309:11 | o1a [Some] | provenance | |
+| main.rs:314:9:314:10 | r2 [Err] | main.rs:316:28:316:35 | r2.err() [Some] | provenance | MaD:7 |
+| main.rs:314:32:314:46 | Err(...) [Err] | main.rs:314:9:314:10 | r2 [Err] | provenance | |
+| main.rs:314:36:314:45 | source(...) | main.rs:314:32:314:46 | Err(...) [Err] | provenance | |
+| main.rs:316:9:316:11 | o2b [Some] | main.rs:318:10:318:21 | o2b.unwrap() | provenance | MaD:2 |
+| main.rs:316:28:316:35 | r2.err() [Some] | main.rs:316:9:316:11 | o2b [Some] | provenance | |
+| main.rs:322:9:322:10 | s1 [Ok] | main.rs:325:14:325:15 | s1 [Ok] | provenance | |
+| main.rs:322:32:322:45 | Ok(...) [Ok] | main.rs:322:9:322:10 | s1 [Ok] | provenance | |
+| main.rs:322:35:322:44 | source(...) | main.rs:322:32:322:45 | Ok(...) [Ok] | provenance | |
+| main.rs:325:9:325:10 | i1 | main.rs:327:10:327:11 | i1 | provenance | |
+| main.rs:325:14:325:15 | s1 [Ok] | main.rs:325:14:325:16 | TryExpr | provenance | |
+| main.rs:325:14:325:16 | TryExpr | main.rs:325:9:325:10 | i1 | provenance | |
+| main.rs:335:9:335:10 | s1 [Ok] | main.rs:336:10:336:22 | s1.expect(...) | provenance | MaD:8 |
+| main.rs:335:32:335:45 | Ok(...) [Ok] | main.rs:335:9:335:10 | s1 [Ok] | provenance | |
+| main.rs:335:35:335:44 | source(...) | main.rs:335:32:335:45 | Ok(...) [Ok] | provenance | |
+| main.rs:339:9:339:10 | s2 [Err] | main.rs:341:10:341:26 | s2.expect_err(...) | provenance | MaD:9 |
+| main.rs:339:32:339:46 | Err(...) [Err] | main.rs:339:9:339:10 | s2 [Err] | provenance | |
+| main.rs:339:36:339:45 | source(...) | main.rs:339:32:339:46 | Err(...) [Err] | provenance | |
+| main.rs:350:9:350:10 | s1 [A] | main.rs:352:11:352:12 | s1 [A] | provenance | |
+| main.rs:350:14:350:39 | ...::A(...) [A] | main.rs:350:9:350:10 | s1 [A] | provenance | |
+| main.rs:350:29:350:38 | source(...) | main.rs:350:14:350:39 | ...::A(...) [A] | provenance | |
+| main.rs:352:11:352:12 | s1 [A] | main.rs:353:9:353:25 | ...::A(...) [A] | provenance | |
+| main.rs:352:11:352:12 | s1 [A] | main.rs:356:11:356:12 | s1 [A] | provenance | |
+| main.rs:353:9:353:25 | ...::A(...) [A] | main.rs:353:24:353:24 | n | provenance | |
+| main.rs:353:24:353:24 | n | main.rs:353:35:353:35 | n | provenance | |
+| main.rs:356:11:356:12 | s1 [A] | main.rs:357:9:357:25 | ...::A(...) [A] | provenance | |
+| main.rs:357:9:357:25 | ...::A(...) [A] | main.rs:357:24:357:24 | n | provenance | |
+| main.rs:357:24:357:24 | n | main.rs:357:55:357:55 | n | provenance | |
+| main.rs:368:9:368:10 | s1 [A] | main.rs:370:11:370:12 | s1 [A] | provenance | |
+| main.rs:368:14:368:26 | A(...) [A] | main.rs:368:9:368:10 | s1 [A] | provenance | |
+| main.rs:368:16:368:25 | source(...) | main.rs:368:14:368:26 | A(...) [A] | provenance | |
+| main.rs:370:11:370:12 | s1 [A] | main.rs:371:9:371:12 | A(...) [A] | provenance | |
+| main.rs:370:11:370:12 | s1 [A] | main.rs:374:11:374:12 | s1 [A] | provenance | |
+| main.rs:371:9:371:12 | A(...) [A] | main.rs:371:11:371:11 | n | provenance | |
+| main.rs:371:11:371:11 | n | main.rs:371:22:371:22 | n | provenance | |
+| main.rs:374:11:374:12 | s1 [A] | main.rs:375:9:375:12 | A(...) [A] | provenance | |
+| main.rs:375:9:375:12 | A(...) [A] | main.rs:375:11:375:11 | n | provenance | |
+| main.rs:375:11:375:11 | n | main.rs:375:29:375:29 | n | provenance | |
+| main.rs:389:9:389:10 | s1 [C] | main.rs:393:11:393:12 | s1 [C] | provenance | |
+| main.rs:389:14:391:5 | ...::C {...} [C] | main.rs:389:9:389:10 | s1 [C] | provenance | |
+| main.rs:390:18:390:27 | source(...) | main.rs:389:14:391:5 | ...::C {...} [C] | provenance | |
+| main.rs:393:11:393:12 | s1 [C] | main.rs:394:9:394:38 | ...::C {...} [C] | provenance | |
+| main.rs:393:11:393:12 | s1 [C] | main.rs:397:11:397:12 | s1 [C] | provenance | |
+| main.rs:394:9:394:38 | ...::C {...} [C] | main.rs:394:36:394:36 | n | provenance | |
+| main.rs:394:36:394:36 | n | main.rs:394:48:394:48 | n | provenance | |
+| main.rs:397:11:397:12 | s1 [C] | main.rs:398:9:398:38 | ...::C {...} [C] | provenance | |
+| main.rs:398:9:398:38 | ...::C {...} [C] | main.rs:398:36:398:36 | n | provenance | |
+| main.rs:398:36:398:36 | n | main.rs:398:81:398:81 | n | provenance | |
+| main.rs:409:9:409:10 | s1 [C] | main.rs:413:11:413:12 | s1 [C] | provenance | |
+| main.rs:409:14:411:5 | C {...} [C] | main.rs:409:9:409:10 | s1 [C] | provenance | |
+| main.rs:410:18:410:27 | source(...) | main.rs:409:14:411:5 | C {...} [C] | provenance | |
+| main.rs:413:11:413:12 | s1 [C] | main.rs:414:9:414:24 | C {...} [C] | provenance | |
+| main.rs:413:11:413:12 | s1 [C] | main.rs:417:11:417:12 | s1 [C] | provenance | |
+| main.rs:414:9:414:24 | C {...} [C] | main.rs:414:22:414:22 | n | provenance | |
+| main.rs:414:22:414:22 | n | main.rs:414:34:414:34 | n | provenance | |
+| main.rs:417:11:417:12 | s1 [C] | main.rs:418:9:418:24 | C {...} [C] | provenance | |
+| main.rs:418:9:418:24 | C {...} [C] | main.rs:418:22:418:22 | n | provenance | |
+| main.rs:418:22:418:22 | n | main.rs:418:53:418:53 | n | provenance | |
+| main.rs:430:9:430:12 | arr1 [element] | main.rs:431:14:431:17 | arr1 [element] | provenance | |
+| main.rs:430:16:430:33 | [...] [element] | main.rs:430:9:430:12 | arr1 [element] | provenance | |
+| main.rs:430:23:430:32 | source(...) | main.rs:430:16:430:33 | [...] [element] | provenance | |
+| main.rs:431:9:431:10 | n1 | main.rs:432:10:432:11 | n1 | provenance | |
+| main.rs:431:14:431:17 | arr1 [element] | main.rs:431:14:431:20 | arr1[2] | provenance | |
+| main.rs:431:14:431:20 | arr1[2] | main.rs:431:9:431:10 | n1 | provenance | |
+| main.rs:434:9:434:12 | arr2 [element] | main.rs:435:14:435:17 | arr2 [element] | provenance | |
+| main.rs:434:16:434:31 | [...; 10] [element] | main.rs:434:9:434:12 | arr2 [element] | provenance | |
+| main.rs:434:17:434:26 | source(...) | main.rs:434:16:434:31 | [...; 10] [element] | provenance | |
+| main.rs:435:9:435:10 | n2 | main.rs:436:10:436:11 | n2 | provenance | |
+| main.rs:435:14:435:17 | arr2 [element] | main.rs:435:14:435:20 | arr2[4] | provenance | |
+| main.rs:435:14:435:20 | arr2[4] | main.rs:435:9:435:10 | n2 | provenance | |
+| main.rs:444:9:444:12 | arr1 [element] | main.rs:445:15:445:18 | arr1 [element] | provenance | |
| main.rs:444:16:444:33 | [...] [element] | main.rs:444:9:444:12 | arr1 [element] | provenance | |
| main.rs:444:23:444:32 | source(...) | main.rs:444:16:444:33 | [...] [element] | provenance | |
-| main.rs:445:11:445:14 | arr1 [element] | main.rs:446:9:446:17 | SlicePat [element] | provenance | |
-| main.rs:446:9:446:17 | SlicePat [element] | main.rs:446:10:446:10 | a | provenance | |
-| main.rs:446:9:446:17 | SlicePat [element] | main.rs:446:13:446:13 | b | provenance | |
-| main.rs:446:9:446:17 | SlicePat [element] | main.rs:446:16:446:16 | c | provenance | |
-| main.rs:446:10:446:10 | a | main.rs:447:18:447:18 | a | provenance | |
-| main.rs:446:13:446:13 | b | main.rs:448:18:448:18 | b | provenance | |
-| main.rs:446:16:446:16 | c | main.rs:449:18:449:18 | c | provenance | |
-| main.rs:458:5:458:11 | [post] mut_arr [element] | main.rs:459:13:459:19 | mut_arr [element] | provenance | |
-| main.rs:458:5:458:11 | [post] mut_arr [element] | main.rs:461:10:461:16 | mut_arr [element] | provenance | |
-| main.rs:458:18:458:27 | source(...) | main.rs:458:5:458:11 | [post] mut_arr [element] | provenance | |
-| main.rs:459:9:459:9 | d | main.rs:460:10:460:10 | d | provenance | |
-| main.rs:459:13:459:19 | mut_arr [element] | main.rs:459:13:459:22 | mut_arr[1] | provenance | |
-| main.rs:459:13:459:22 | mut_arr[1] | main.rs:459:9:459:9 | d | provenance | |
-| main.rs:461:10:461:16 | mut_arr [element] | main.rs:461:10:461:19 | mut_arr[0] | provenance | |
-| main.rs:484:9:484:9 | s | main.rs:485:10:485:10 | s | provenance | |
-| main.rs:484:25:484:26 | source(...) | main.rs:484:9:484:9 | s | provenance | |
-| main.rs:493:9:493:9 | a | main.rs:498:10:498:10 | a | provenance | |
-| main.rs:493:13:493:22 | source(...) | main.rs:493:9:493:9 | a | provenance | |
-| main.rs:505:9:505:10 | vs [element] | main.rs:507:10:507:11 | vs [element] | provenance | |
-| main.rs:505:9:505:10 | vs [element] | main.rs:511:14:511:15 | vs [element] | provenance | |
-| main.rs:505:14:505:34 | [...] [element] | main.rs:505:9:505:10 | vs [element] | provenance | |
-| main.rs:505:15:505:24 | source(...) | main.rs:505:14:505:34 | [...] [element] | provenance | |
-| main.rs:507:10:507:11 | vs [element] | main.rs:507:10:507:14 | vs[0] | provenance | |
-| main.rs:511:9:511:9 | v | main.rs:512:14:512:14 | v | provenance | |
-| main.rs:511:14:511:15 | vs [element] | main.rs:511:9:511:9 | v | provenance | |
-| main.rs:530:9:530:18 | mut vs_mut [element] | main.rs:532:10:532:15 | vs_mut [element] | provenance | |
-| main.rs:530:22:530:42 | [...] [element] | main.rs:530:9:530:18 | mut vs_mut [element] | provenance | |
-| main.rs:530:23:530:32 | source(...) | main.rs:530:22:530:42 | [...] [element] | provenance | |
-| main.rs:532:10:532:15 | vs_mut [element] | main.rs:532:10:532:18 | vs_mut[0] | provenance | |
-| main.rs:542:9:542:9 | a | main.rs:547:10:547:10 | a | provenance | |
-| main.rs:542:13:542:22 | source(...) | main.rs:542:9:542:9 | a | provenance | |
-| main.rs:544:9:544:9 | c | main.rs:545:18:545:18 | c | provenance | |
-| main.rs:544:13:544:22 | source(...) | main.rs:544:9:544:9 | c | provenance | |
-| main.rs:545:9:545:13 | c_ref [&ref] | main.rs:550:11:550:15 | c_ref [&ref] | provenance | |
-| main.rs:545:17:545:18 | &c [&ref] | main.rs:545:9:545:13 | c_ref [&ref] | provenance | |
-| main.rs:545:18:545:18 | c | main.rs:545:17:545:18 | &c [&ref] | provenance | |
-| main.rs:550:11:550:15 | c_ref [&ref] | main.rs:550:10:550:15 | * ... | provenance | |
+| main.rs:445:9:445:10 | n1 | main.rs:446:14:446:15 | n1 | provenance | |
+| main.rs:445:15:445:18 | arr1 [element] | main.rs:445:9:445:10 | n1 | provenance | |
+| main.rs:456:9:456:12 | arr1 [element] | main.rs:457:11:457:14 | arr1 [element] | provenance | |
+| main.rs:456:16:456:33 | [...] [element] | main.rs:456:9:456:12 | arr1 [element] | provenance | |
+| main.rs:456:23:456:32 | source(...) | main.rs:456:16:456:33 | [...] [element] | provenance | |
+| main.rs:457:11:457:14 | arr1 [element] | main.rs:458:9:458:17 | SlicePat [element] | provenance | |
+| main.rs:458:9:458:17 | SlicePat [element] | main.rs:458:10:458:10 | a | provenance | |
+| main.rs:458:9:458:17 | SlicePat [element] | main.rs:458:13:458:13 | b | provenance | |
+| main.rs:458:9:458:17 | SlicePat [element] | main.rs:458:16:458:16 | c | provenance | |
+| main.rs:458:10:458:10 | a | main.rs:459:18:459:18 | a | provenance | |
+| main.rs:458:13:458:13 | b | main.rs:460:18:460:18 | b | provenance | |
+| main.rs:458:16:458:16 | c | main.rs:461:18:461:18 | c | provenance | |
+| main.rs:470:5:470:11 | [post] mut_arr [element] | main.rs:471:13:471:19 | mut_arr [element] | provenance | |
+| main.rs:470:5:470:11 | [post] mut_arr [element] | main.rs:473:10:473:16 | mut_arr [element] | provenance | |
+| main.rs:470:18:470:27 | source(...) | main.rs:470:5:470:11 | [post] mut_arr [element] | provenance | |
+| main.rs:471:9:471:9 | d | main.rs:472:10:472:10 | d | provenance | |
+| main.rs:471:13:471:19 | mut_arr [element] | main.rs:471:13:471:22 | mut_arr[1] | provenance | |
+| main.rs:471:13:471:22 | mut_arr[1] | main.rs:471:9:471:9 | d | provenance | |
+| main.rs:473:10:473:16 | mut_arr [element] | main.rs:473:10:473:19 | mut_arr[0] | provenance | |
+| main.rs:496:9:496:9 | s | main.rs:497:10:497:10 | s | provenance | |
+| main.rs:496:25:496:26 | source(...) | main.rs:496:9:496:9 | s | provenance | |
+| main.rs:505:9:505:9 | a | main.rs:510:10:510:10 | a | provenance | |
+| main.rs:505:13:505:22 | source(...) | main.rs:505:9:505:9 | a | provenance | |
+| main.rs:517:9:517:10 | vs [element] | main.rs:519:10:519:11 | vs [element] | provenance | |
+| main.rs:517:9:517:10 | vs [element] | main.rs:523:14:523:15 | vs [element] | provenance | |
+| main.rs:517:14:517:34 | [...] [element] | main.rs:517:9:517:10 | vs [element] | provenance | |
+| main.rs:517:15:517:24 | source(...) | main.rs:517:14:517:34 | [...] [element] | provenance | |
+| main.rs:519:10:519:11 | vs [element] | main.rs:519:10:519:14 | vs[0] | provenance | |
+| main.rs:523:9:523:9 | v | main.rs:524:14:524:14 | v | provenance | |
+| main.rs:523:14:523:15 | vs [element] | main.rs:523:9:523:9 | v | provenance | |
+| main.rs:542:9:542:18 | mut vs_mut [element] | main.rs:544:10:544:15 | vs_mut [element] | provenance | |
+| main.rs:542:22:542:42 | [...] [element] | main.rs:542:9:542:18 | mut vs_mut [element] | provenance | |
+| main.rs:542:23:542:32 | source(...) | main.rs:542:22:542:42 | [...] [element] | provenance | |
+| main.rs:544:10:544:15 | vs_mut [element] | main.rs:544:10:544:18 | vs_mut[0] | provenance | |
+| main.rs:554:9:554:9 | a | main.rs:559:10:559:10 | a | provenance | |
+| main.rs:554:13:554:22 | source(...) | main.rs:554:9:554:9 | a | provenance | |
+| main.rs:556:9:556:9 | c | main.rs:557:18:557:18 | c | provenance | |
+| main.rs:556:13:556:22 | source(...) | main.rs:556:9:556:9 | c | provenance | |
+| main.rs:557:9:557:13 | c_ref [&ref] | main.rs:562:11:562:15 | c_ref [&ref] | provenance | |
+| main.rs:557:17:557:18 | &c [&ref] | main.rs:557:9:557:13 | c_ref [&ref] | provenance | |
+| main.rs:557:18:557:18 | c | main.rs:557:17:557:18 | &c [&ref] | provenance | |
+| main.rs:562:11:562:15 | c_ref [&ref] | main.rs:562:10:562:15 | * ... | provenance | |
nodes
| main.rs:19:10:19:18 | source(...) | semmle.label | source(...) |
| main.rs:23:9:23:9 | s | semmle.label | s |
@@ -270,266 +274,271 @@ nodes
| main.rs:70:5:70:5 | i | semmle.label | i |
| main.rs:70:9:70:17 | source(...) | semmle.label | source(...) |
| main.rs:71:10:71:10 | i | semmle.label | i |
-| main.rs:103:9:103:9 | i [&ref] | semmle.label | i [&ref] |
-| main.rs:103:13:103:31 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] |
-| main.rs:103:22:103:30 | source(...) | semmle.label | source(...) |
-| main.rs:104:10:104:11 | * ... | semmle.label | * ... |
-| main.rs:104:11:104:11 | i [&ref] | semmle.label | i [&ref] |
-| main.rs:111:9:111:9 | a [tuple.0] | semmle.label | a [tuple.0] |
-| main.rs:111:13:111:26 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] |
-| main.rs:111:14:111:22 | source(...) | semmle.label | source(...) |
-| main.rs:112:10:112:10 | a [tuple.0] | semmle.label | a [tuple.0] |
-| main.rs:112:10:112:12 | a.0 | semmle.label | a.0 |
-| main.rs:117:9:117:9 | a [tuple.1] | semmle.label | a [tuple.1] |
-| main.rs:117:13:117:30 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] |
-| main.rs:117:17:117:26 | source(...) | semmle.label | source(...) |
-| main.rs:118:9:118:20 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] |
-| main.rs:118:14:118:15 | a1 | semmle.label | a1 |
-| main.rs:120:10:120:11 | a1 | semmle.label | a1 |
-| main.rs:125:9:125:13 | mut a [tuple.1] | semmle.label | mut a [tuple.1] |
-| main.rs:125:17:125:31 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] |
-| main.rs:125:21:125:30 | source(...) | semmle.label | source(...) |
-| main.rs:127:10:127:10 | a [tuple.1] | semmle.label | a [tuple.1] |
-| main.rs:127:10:127:12 | a.1 | semmle.label | a.1 |
-| main.rs:128:5:128:5 | [post] a [tuple.0] | semmle.label | [post] a [tuple.0] |
-| main.rs:128:11:128:20 | source(...) | semmle.label | source(...) |
-| main.rs:129:5:129:5 | a [tuple.0] | semmle.label | a [tuple.0] |
-| main.rs:130:10:130:10 | a [tuple.0] | semmle.label | a [tuple.0] |
-| main.rs:130:10:130:12 | a.0 | semmle.label | a.0 |
-| main.rs:135:9:135:9 | a [tuple.1] | semmle.label | a [tuple.1] |
-| main.rs:135:13:135:27 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] |
-| main.rs:135:17:135:26 | source(...) | semmle.label | source(...) |
-| main.rs:136:9:136:9 | b [tuple.0, tuple.1] | semmle.label | b [tuple.0, tuple.1] |
-| main.rs:136:13:136:18 | TupleExpr [tuple.0, tuple.1] | semmle.label | TupleExpr [tuple.0, tuple.1] |
-| main.rs:136:14:136:14 | a [tuple.1] | semmle.label | a [tuple.1] |
-| main.rs:138:10:138:10 | b [tuple.0, tuple.1] | semmle.label | b [tuple.0, tuple.1] |
-| main.rs:138:10:138:12 | b.0 [tuple.1] | semmle.label | b.0 [tuple.1] |
-| main.rs:138:10:138:15 | ... .1 | semmle.label | ... .1 |
-| main.rs:151:9:151:9 | p [Point.x] | semmle.label | p [Point.x] |
-| main.rs:151:13:151:40 | Point {...} [Point.x] | semmle.label | Point {...} [Point.x] |
-| main.rs:151:24:151:32 | source(...) | semmle.label | source(...) |
-| main.rs:152:10:152:10 | p [Point.x] | semmle.label | p [Point.x] |
-| main.rs:152:10:152:12 | p.x | semmle.label | p.x |
-| main.rs:159:5:159:5 | [post] p [Point.y] | semmle.label | [post] p [Point.y] |
-| main.rs:159:11:159:20 | source(...) | semmle.label | source(...) |
-| main.rs:160:10:160:10 | p [Point.y] | semmle.label | p [Point.y] |
-| main.rs:160:10:160:12 | p.y | semmle.label | p.y |
-| main.rs:164:9:164:9 | p [Point.x] | semmle.label | p [Point.x] |
-| main.rs:164:13:167:5 | Point {...} [Point.x] | semmle.label | Point {...} [Point.x] |
-| main.rs:165:12:165:21 | source(...) | semmle.label | source(...) |
-| main.rs:168:9:168:28 | Point {...} [Point.x] | semmle.label | Point {...} [Point.x] |
-| main.rs:168:20:168:20 | a | semmle.label | a |
-| main.rs:169:10:169:10 | a | semmle.label | a |
-| main.rs:179:9:179:9 | p [Point3D.plane, Point.y] | semmle.label | p [Point3D.plane, Point.y] |
-| main.rs:179:13:185:5 | Point3D {...} [Point3D.plane, Point.y] | semmle.label | Point3D {...} [Point3D.plane, Point.y] |
-| main.rs:180:16:183:9 | Point {...} [Point.y] | semmle.label | Point {...} [Point.y] |
-| main.rs:182:16:182:25 | source(...) | semmle.label | source(...) |
-| main.rs:187:10:187:10 | p [Point3D.plane, Point.y] | semmle.label | p [Point3D.plane, Point.y] |
-| main.rs:187:10:187:16 | p.plane [Point.y] | semmle.label | p.plane [Point.y] |
-| main.rs:187:10:187:18 | ... .y | semmle.label | ... .y |
-| main.rs:192:9:192:9 | y | semmle.label | y |
-| main.rs:192:13:192:22 | source(...) | semmle.label | source(...) |
-| main.rs:193:9:193:9 | p [Point3D.plane, Point.y] | semmle.label | p [Point3D.plane, Point.y] |
-| main.rs:193:13:196:5 | Point3D {...} [Point3D.plane, Point.y] | semmle.label | Point3D {...} [Point3D.plane, Point.y] |
-| main.rs:194:16:194:32 | Point {...} [Point.y] | semmle.label | Point {...} [Point.y] |
-| main.rs:194:30:194:30 | y | semmle.label | y |
-| main.rs:197:11:197:11 | p [Point3D.plane, Point.y] | semmle.label | p [Point3D.plane, Point.y] |
-| main.rs:198:9:201:9 | Point3D {...} [Point3D.plane, Point.y] | semmle.label | Point3D {...} [Point3D.plane, Point.y] |
-| main.rs:199:20:199:33 | Point {...} [Point.y] | semmle.label | Point {...} [Point.y] |
-| main.rs:199:31:199:31 | y | semmle.label | y |
-| main.rs:203:18:203:18 | y | semmle.label | y |
-| main.rs:212:9:212:9 | s [MyTupleStruct(0)] | semmle.label | s [MyTupleStruct(0)] |
-| main.rs:212:13:212:40 | MyTupleStruct(...) [MyTupleStruct(0)] | semmle.label | MyTupleStruct(...) [MyTupleStruct(0)] |
-| main.rs:212:27:212:36 | source(...) | semmle.label | source(...) |
-| main.rs:213:10:213:10 | s [MyTupleStruct(0)] | semmle.label | s [MyTupleStruct(0)] |
-| main.rs:213:10:213:12 | s.0 | semmle.label | s.0 |
-| main.rs:216:11:216:11 | s [MyTupleStruct(0)] | semmle.label | s [MyTupleStruct(0)] |
-| main.rs:217:9:217:27 | MyTupleStruct(...) [MyTupleStruct(0)] | semmle.label | MyTupleStruct(...) [MyTupleStruct(0)] |
-| main.rs:217:23:217:23 | x | semmle.label | x |
-| main.rs:218:18:218:18 | x | semmle.label | x |
-| main.rs:228:9:228:10 | s1 [Some] | semmle.label | s1 [Some] |
-| main.rs:228:14:228:37 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] |
-| main.rs:228:27:228:36 | source(...) | semmle.label | source(...) |
-| main.rs:230:11:230:12 | s1 [Some] | semmle.label | s1 [Some] |
-| main.rs:231:9:231:23 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] |
-| main.rs:231:22:231:22 | n | semmle.label | n |
-| main.rs:231:33:231:33 | n | semmle.label | n |
-| main.rs:241:9:241:10 | s1 [Some] | semmle.label | s1 [Some] |
-| main.rs:241:14:241:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
-| main.rs:241:19:241:28 | source(...) | semmle.label | source(...) |
-| main.rs:243:11:243:12 | s1 [Some] | semmle.label | s1 [Some] |
-| main.rs:244:9:244:15 | Some(...) [Some] | semmle.label | Some(...) [Some] |
-| main.rs:244:14:244:14 | n | semmle.label | n |
-| main.rs:244:25:244:25 | n | semmle.label | n |
-| main.rs:254:9:254:10 | s1 [Some] | semmle.label | s1 [Some] |
-| main.rs:254:14:254:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
-| main.rs:254:19:254:28 | source(...) | semmle.label | source(...) |
-| main.rs:255:12:255:18 | Some(...) [Some] | semmle.label | Some(...) [Some] |
-| main.rs:255:17:255:17 | n | semmle.label | n |
-| main.rs:257:18:257:18 | n | semmle.label | n |
-| main.rs:261:14:261:14 | n | semmle.label | n |
+| main.rs:76:9:76:9 | k | semmle.label | k |
+| main.rs:76:13:76:21 | source(...) | semmle.label | source(...) |
+| main.rs:77:5:77:5 | j | semmle.label | j |
+| main.rs:78:10:78:10 | j | semmle.label | j |
+| main.rs:79:10:79:10 | k | semmle.label | k |
+| main.rs:115:9:115:9 | i [&ref] | semmle.label | i [&ref] |
+| main.rs:115:13:115:31 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] |
+| main.rs:115:22:115:30 | source(...) | semmle.label | source(...) |
+| main.rs:116:10:116:11 | * ... | semmle.label | * ... |
+| main.rs:116:11:116:11 | i [&ref] | semmle.label | i [&ref] |
+| main.rs:123:9:123:9 | a [tuple.0] | semmle.label | a [tuple.0] |
+| main.rs:123:13:123:26 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] |
+| main.rs:123:14:123:22 | source(...) | semmle.label | source(...) |
+| main.rs:124:10:124:10 | a [tuple.0] | semmle.label | a [tuple.0] |
+| main.rs:124:10:124:12 | a.0 | semmle.label | a.0 |
+| main.rs:129:9:129:9 | a [tuple.1] | semmle.label | a [tuple.1] |
+| main.rs:129:13:129:30 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] |
+| main.rs:129:17:129:26 | source(...) | semmle.label | source(...) |
+| main.rs:130:9:130:20 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] |
+| main.rs:130:14:130:15 | a1 | semmle.label | a1 |
+| main.rs:132:10:132:11 | a1 | semmle.label | a1 |
+| main.rs:137:9:137:13 | mut a [tuple.1] | semmle.label | mut a [tuple.1] |
+| main.rs:137:17:137:31 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] |
+| main.rs:137:21:137:30 | source(...) | semmle.label | source(...) |
+| main.rs:139:10:139:10 | a [tuple.1] | semmle.label | a [tuple.1] |
+| main.rs:139:10:139:12 | a.1 | semmle.label | a.1 |
+| main.rs:140:5:140:5 | [post] a [tuple.0] | semmle.label | [post] a [tuple.0] |
+| main.rs:140:11:140:20 | source(...) | semmle.label | source(...) |
+| main.rs:141:5:141:5 | a [tuple.0] | semmle.label | a [tuple.0] |
+| main.rs:142:10:142:10 | a [tuple.0] | semmle.label | a [tuple.0] |
+| main.rs:142:10:142:12 | a.0 | semmle.label | a.0 |
+| main.rs:147:9:147:9 | a [tuple.1] | semmle.label | a [tuple.1] |
+| main.rs:147:13:147:27 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] |
+| main.rs:147:17:147:26 | source(...) | semmle.label | source(...) |
+| main.rs:148:9:148:9 | b [tuple.0, tuple.1] | semmle.label | b [tuple.0, tuple.1] |
+| main.rs:148:13:148:18 | TupleExpr [tuple.0, tuple.1] | semmle.label | TupleExpr [tuple.0, tuple.1] |
+| main.rs:148:14:148:14 | a [tuple.1] | semmle.label | a [tuple.1] |
+| main.rs:150:10:150:10 | b [tuple.0, tuple.1] | semmle.label | b [tuple.0, tuple.1] |
+| main.rs:150:10:150:12 | b.0 [tuple.1] | semmle.label | b.0 [tuple.1] |
+| main.rs:150:10:150:15 | ... .1 | semmle.label | ... .1 |
+| main.rs:163:9:163:9 | p [Point.x] | semmle.label | p [Point.x] |
+| main.rs:163:13:163:40 | Point {...} [Point.x] | semmle.label | Point {...} [Point.x] |
+| main.rs:163:24:163:32 | source(...) | semmle.label | source(...) |
+| main.rs:164:10:164:10 | p [Point.x] | semmle.label | p [Point.x] |
+| main.rs:164:10:164:12 | p.x | semmle.label | p.x |
+| main.rs:171:5:171:5 | [post] p [Point.y] | semmle.label | [post] p [Point.y] |
+| main.rs:171:11:171:20 | source(...) | semmle.label | source(...) |
+| main.rs:172:10:172:10 | p [Point.y] | semmle.label | p [Point.y] |
+| main.rs:172:10:172:12 | p.y | semmle.label | p.y |
+| main.rs:176:9:176:9 | p [Point.x] | semmle.label | p [Point.x] |
+| main.rs:176:13:179:5 | Point {...} [Point.x] | semmle.label | Point {...} [Point.x] |
+| main.rs:177:12:177:21 | source(...) | semmle.label | source(...) |
+| main.rs:180:9:180:28 | Point {...} [Point.x] | semmle.label | Point {...} [Point.x] |
+| main.rs:180:20:180:20 | a | semmle.label | a |
+| main.rs:181:10:181:10 | a | semmle.label | a |
+| main.rs:191:9:191:9 | p [Point3D.plane, Point.y] | semmle.label | p [Point3D.plane, Point.y] |
+| main.rs:191:13:197:5 | Point3D {...} [Point3D.plane, Point.y] | semmle.label | Point3D {...} [Point3D.plane, Point.y] |
+| main.rs:192:16:195:9 | Point {...} [Point.y] | semmle.label | Point {...} [Point.y] |
+| main.rs:194:16:194:25 | source(...) | semmle.label | source(...) |
+| main.rs:199:10:199:10 | p [Point3D.plane, Point.y] | semmle.label | p [Point3D.plane, Point.y] |
+| main.rs:199:10:199:16 | p.plane [Point.y] | semmle.label | p.plane [Point.y] |
+| main.rs:199:10:199:18 | ... .y | semmle.label | ... .y |
+| main.rs:204:9:204:9 | y | semmle.label | y |
+| main.rs:204:13:204:22 | source(...) | semmle.label | source(...) |
+| main.rs:205:9:205:9 | p [Point3D.plane, Point.y] | semmle.label | p [Point3D.plane, Point.y] |
+| main.rs:205:13:208:5 | Point3D {...} [Point3D.plane, Point.y] | semmle.label | Point3D {...} [Point3D.plane, Point.y] |
+| main.rs:206:16:206:32 | Point {...} [Point.y] | semmle.label | Point {...} [Point.y] |
+| main.rs:206:30:206:30 | y | semmle.label | y |
+| main.rs:209:11:209:11 | p [Point3D.plane, Point.y] | semmle.label | p [Point3D.plane, Point.y] |
+| main.rs:210:9:213:9 | Point3D {...} [Point3D.plane, Point.y] | semmle.label | Point3D {...} [Point3D.plane, Point.y] |
+| main.rs:211:20:211:33 | Point {...} [Point.y] | semmle.label | Point {...} [Point.y] |
+| main.rs:211:31:211:31 | y | semmle.label | y |
+| main.rs:215:18:215:18 | y | semmle.label | y |
+| main.rs:224:9:224:9 | s [MyTupleStruct(0)] | semmle.label | s [MyTupleStruct(0)] |
+| main.rs:224:13:224:40 | MyTupleStruct(...) [MyTupleStruct(0)] | semmle.label | MyTupleStruct(...) [MyTupleStruct(0)] |
+| main.rs:224:27:224:36 | source(...) | semmle.label | source(...) |
+| main.rs:225:10:225:10 | s [MyTupleStruct(0)] | semmle.label | s [MyTupleStruct(0)] |
+| main.rs:225:10:225:12 | s.0 | semmle.label | s.0 |
+| main.rs:228:11:228:11 | s [MyTupleStruct(0)] | semmle.label | s [MyTupleStruct(0)] |
+| main.rs:229:9:229:27 | MyTupleStruct(...) [MyTupleStruct(0)] | semmle.label | MyTupleStruct(...) [MyTupleStruct(0)] |
+| main.rs:229:23:229:23 | x | semmle.label | x |
+| main.rs:230:18:230:18 | x | semmle.label | x |
+| main.rs:240:9:240:10 | s1 [Some] | semmle.label | s1 [Some] |
+| main.rs:240:14:240:37 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] |
+| main.rs:240:27:240:36 | source(...) | semmle.label | source(...) |
+| main.rs:242:11:242:12 | s1 [Some] | semmle.label | s1 [Some] |
+| main.rs:243:9:243:23 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] |
+| main.rs:243:22:243:22 | n | semmle.label | n |
+| main.rs:243:33:243:33 | n | semmle.label | n |
+| main.rs:253:9:253:10 | s1 [Some] | semmle.label | s1 [Some] |
+| main.rs:253:14:253:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
+| main.rs:253:19:253:28 | source(...) | semmle.label | source(...) |
+| main.rs:255:11:255:12 | s1 [Some] | semmle.label | s1 [Some] |
+| main.rs:256:9:256:15 | Some(...) [Some] | semmle.label | Some(...) [Some] |
+| main.rs:256:14:256:14 | n | semmle.label | n |
+| main.rs:256:25:256:25 | n | semmle.label | n |
| main.rs:266:9:266:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:266:14:266:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:266:19:266:28 | source(...) | semmle.label | source(...) |
-| main.rs:267:10:267:20 | s1.unwrap() | semmle.label | s1.unwrap() |
-| main.rs:271:9:271:10 | s1 [Some] | semmle.label | s1 [Some] |
-| main.rs:271:14:271:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
-| main.rs:271:19:271:28 | source(...) | semmle.label | source(...) |
-| main.rs:272:10:272:24 | s1.unwrap_or(...) | semmle.label | s1.unwrap_or(...) |
-| main.rs:275:10:275:33 | s2.unwrap_or(...) | semmle.label | s2.unwrap_or(...) |
-| main.rs:275:23:275:32 | source(...) | semmle.label | source(...) |
-| main.rs:279:9:279:10 | s1 [Some] | semmle.label | s1 [Some] |
-| main.rs:279:14:279:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
-| main.rs:279:19:279:28 | source(...) | semmle.label | source(...) |
-| main.rs:280:10:280:32 | s1.unwrap_or_else(...) | semmle.label | s1.unwrap_or_else(...) |
-| main.rs:283:10:283:41 | s2.unwrap_or_else(...) | semmle.label | s2.unwrap_or_else(...) |
-| main.rs:283:31:283:40 | source(...) | semmle.label | source(...) |
-| main.rs:287:9:287:10 | s1 [Some] | semmle.label | s1 [Some] |
-| main.rs:287:14:287:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
-| main.rs:287:19:287:28 | source(...) | semmle.label | source(...) |
-| main.rs:289:9:289:10 | i1 | semmle.label | i1 |
-| main.rs:289:14:289:15 | s1 [Some] | semmle.label | s1 [Some] |
-| main.rs:289:14:289:16 | TryExpr | semmle.label | TryExpr |
-| main.rs:290:10:290:11 | i1 | semmle.label | i1 |
-| main.rs:296:9:296:10 | r1 [Ok] | semmle.label | r1 [Ok] |
-| main.rs:296:32:296:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
-| main.rs:296:35:296:44 | source(...) | semmle.label | source(...) |
-| main.rs:297:9:297:11 | o1a [Some] | semmle.label | o1a [Some] |
-| main.rs:297:28:297:34 | r1.ok() [Some] | semmle.label | r1.ok() [Some] |
-| main.rs:299:10:299:21 | o1a.unwrap() | semmle.label | o1a.unwrap() |
-| main.rs:302:9:302:10 | r2 [Err] | semmle.label | r2 [Err] |
-| main.rs:302:32:302:46 | Err(...) [Err] | semmle.label | Err(...) [Err] |
-| main.rs:302:36:302:45 | source(...) | semmle.label | source(...) |
-| main.rs:304:9:304:11 | o2b [Some] | semmle.label | o2b [Some] |
-| main.rs:304:28:304:35 | r2.err() [Some] | semmle.label | r2.err() [Some] |
-| main.rs:306:10:306:21 | o2b.unwrap() | semmle.label | o2b.unwrap() |
-| main.rs:310:9:310:10 | s1 [Ok] | semmle.label | s1 [Ok] |
-| main.rs:310:32:310:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
-| main.rs:310:35:310:44 | source(...) | semmle.label | source(...) |
-| main.rs:313:9:313:10 | i1 | semmle.label | i1 |
-| main.rs:313:14:313:15 | s1 [Ok] | semmle.label | s1 [Ok] |
-| main.rs:313:14:313:16 | TryExpr | semmle.label | TryExpr |
-| main.rs:315:10:315:11 | i1 | semmle.label | i1 |
-| main.rs:323:9:323:10 | s1 [Ok] | semmle.label | s1 [Ok] |
-| main.rs:323:32:323:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
-| main.rs:323:35:323:44 | source(...) | semmle.label | source(...) |
-| main.rs:324:10:324:22 | s1.expect(...) | semmle.label | s1.expect(...) |
-| main.rs:327:9:327:10 | s2 [Err] | semmle.label | s2 [Err] |
-| main.rs:327:32:327:46 | Err(...) [Err] | semmle.label | Err(...) [Err] |
-| main.rs:327:36:327:45 | source(...) | semmle.label | source(...) |
-| main.rs:329:10:329:26 | s2.expect_err(...) | semmle.label | s2.expect_err(...) |
-| main.rs:338:9:338:10 | s1 [A] | semmle.label | s1 [A] |
-| main.rs:338:14:338:39 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
-| main.rs:338:29:338:38 | source(...) | semmle.label | source(...) |
-| main.rs:340:11:340:12 | s1 [A] | semmle.label | s1 [A] |
-| main.rs:341:9:341:25 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
-| main.rs:341:24:341:24 | n | semmle.label | n |
-| main.rs:341:35:341:35 | n | semmle.label | n |
-| main.rs:344:11:344:12 | s1 [A] | semmle.label | s1 [A] |
-| main.rs:345:9:345:25 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
-| main.rs:345:24:345:24 | n | semmle.label | n |
-| main.rs:345:55:345:55 | n | semmle.label | n |
-| main.rs:356:9:356:10 | s1 [A] | semmle.label | s1 [A] |
-| main.rs:356:14:356:26 | A(...) [A] | semmle.label | A(...) [A] |
-| main.rs:356:16:356:25 | source(...) | semmle.label | source(...) |
-| main.rs:358:11:358:12 | s1 [A] | semmle.label | s1 [A] |
-| main.rs:359:9:359:12 | A(...) [A] | semmle.label | A(...) [A] |
-| main.rs:359:11:359:11 | n | semmle.label | n |
-| main.rs:359:22:359:22 | n | semmle.label | n |
-| main.rs:362:11:362:12 | s1 [A] | semmle.label | s1 [A] |
-| main.rs:363:9:363:12 | A(...) [A] | semmle.label | A(...) [A] |
-| main.rs:363:11:363:11 | n | semmle.label | n |
-| main.rs:363:29:363:29 | n | semmle.label | n |
-| main.rs:377:9:377:10 | s1 [C] | semmle.label | s1 [C] |
-| main.rs:377:14:379:5 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
-| main.rs:378:18:378:27 | source(...) | semmle.label | source(...) |
-| main.rs:381:11:381:12 | s1 [C] | semmle.label | s1 [C] |
-| main.rs:382:9:382:38 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
-| main.rs:382:36:382:36 | n | semmle.label | n |
-| main.rs:382:48:382:48 | n | semmle.label | n |
-| main.rs:385:11:385:12 | s1 [C] | semmle.label | s1 [C] |
-| main.rs:386:9:386:38 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
-| main.rs:386:36:386:36 | n | semmle.label | n |
-| main.rs:386:81:386:81 | n | semmle.label | n |
-| main.rs:397:9:397:10 | s1 [C] | semmle.label | s1 [C] |
-| main.rs:397:14:399:5 | C {...} [C] | semmle.label | C {...} [C] |
-| main.rs:398:18:398:27 | source(...) | semmle.label | source(...) |
-| main.rs:401:11:401:12 | s1 [C] | semmle.label | s1 [C] |
-| main.rs:402:9:402:24 | C {...} [C] | semmle.label | C {...} [C] |
-| main.rs:402:22:402:22 | n | semmle.label | n |
-| main.rs:402:34:402:34 | n | semmle.label | n |
-| main.rs:405:11:405:12 | s1 [C] | semmle.label | s1 [C] |
-| main.rs:406:9:406:24 | C {...} [C] | semmle.label | C {...} [C] |
-| main.rs:406:22:406:22 | n | semmle.label | n |
-| main.rs:406:53:406:53 | n | semmle.label | n |
-| main.rs:418:9:418:12 | arr1 [element] | semmle.label | arr1 [element] |
-| main.rs:418:16:418:33 | [...] [element] | semmle.label | [...] [element] |
-| main.rs:418:23:418:32 | source(...) | semmle.label | source(...) |
-| main.rs:419:9:419:10 | n1 | semmle.label | n1 |
-| main.rs:419:14:419:17 | arr1 [element] | semmle.label | arr1 [element] |
-| main.rs:419:14:419:20 | arr1[2] | semmle.label | arr1[2] |
-| main.rs:420:10:420:11 | n1 | semmle.label | n1 |
-| main.rs:422:9:422:12 | arr2 [element] | semmle.label | arr2 [element] |
-| main.rs:422:16:422:31 | [...; 10] [element] | semmle.label | [...; 10] [element] |
-| main.rs:422:17:422:26 | source(...) | semmle.label | source(...) |
-| main.rs:423:9:423:10 | n2 | semmle.label | n2 |
-| main.rs:423:14:423:17 | arr2 [element] | semmle.label | arr2 [element] |
-| main.rs:423:14:423:20 | arr2[4] | semmle.label | arr2[4] |
-| main.rs:424:10:424:11 | n2 | semmle.label | n2 |
-| main.rs:432:9:432:12 | arr1 [element] | semmle.label | arr1 [element] |
-| main.rs:432:16:432:33 | [...] [element] | semmle.label | [...] [element] |
-| main.rs:432:23:432:32 | source(...) | semmle.label | source(...) |
-| main.rs:433:9:433:10 | n1 | semmle.label | n1 |
-| main.rs:433:15:433:18 | arr1 [element] | semmle.label | arr1 [element] |
-| main.rs:434:14:434:15 | n1 | semmle.label | n1 |
+| main.rs:267:12:267:18 | Some(...) [Some] | semmle.label | Some(...) [Some] |
+| main.rs:267:17:267:17 | n | semmle.label | n |
+| main.rs:269:18:269:18 | n | semmle.label | n |
+| main.rs:273:14:273:14 | n | semmle.label | n |
+| main.rs:278:9:278:10 | s1 [Some] | semmle.label | s1 [Some] |
+| main.rs:278:14:278:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
+| main.rs:278:19:278:28 | source(...) | semmle.label | source(...) |
+| main.rs:279:10:279:20 | s1.unwrap() | semmle.label | s1.unwrap() |
+| main.rs:283:9:283:10 | s1 [Some] | semmle.label | s1 [Some] |
+| main.rs:283:14:283:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
+| main.rs:283:19:283:28 | source(...) | semmle.label | source(...) |
+| main.rs:284:10:284:24 | s1.unwrap_or(...) | semmle.label | s1.unwrap_or(...) |
+| main.rs:287:10:287:33 | s2.unwrap_or(...) | semmle.label | s2.unwrap_or(...) |
+| main.rs:287:23:287:32 | source(...) | semmle.label | source(...) |
+| main.rs:291:9:291:10 | s1 [Some] | semmle.label | s1 [Some] |
+| main.rs:291:14:291:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
+| main.rs:291:19:291:28 | source(...) | semmle.label | source(...) |
+| main.rs:292:10:292:32 | s1.unwrap_or_else(...) | semmle.label | s1.unwrap_or_else(...) |
+| main.rs:295:10:295:41 | s2.unwrap_or_else(...) | semmle.label | s2.unwrap_or_else(...) |
+| main.rs:295:31:295:40 | source(...) | semmle.label | source(...) |
+| main.rs:299:9:299:10 | s1 [Some] | semmle.label | s1 [Some] |
+| main.rs:299:14:299:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
+| main.rs:299:19:299:28 | source(...) | semmle.label | source(...) |
+| main.rs:301:9:301:10 | i1 | semmle.label | i1 |
+| main.rs:301:14:301:15 | s1 [Some] | semmle.label | s1 [Some] |
+| main.rs:301:14:301:16 | TryExpr | semmle.label | TryExpr |
+| main.rs:302:10:302:11 | i1 | semmle.label | i1 |
+| main.rs:308:9:308:10 | r1 [Ok] | semmle.label | r1 [Ok] |
+| main.rs:308:32:308:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
+| main.rs:308:35:308:44 | source(...) | semmle.label | source(...) |
+| main.rs:309:9:309:11 | o1a [Some] | semmle.label | o1a [Some] |
+| main.rs:309:28:309:34 | r1.ok() [Some] | semmle.label | r1.ok() [Some] |
+| main.rs:311:10:311:21 | o1a.unwrap() | semmle.label | o1a.unwrap() |
+| main.rs:314:9:314:10 | r2 [Err] | semmle.label | r2 [Err] |
+| main.rs:314:32:314:46 | Err(...) [Err] | semmle.label | Err(...) [Err] |
+| main.rs:314:36:314:45 | source(...) | semmle.label | source(...) |
+| main.rs:316:9:316:11 | o2b [Some] | semmle.label | o2b [Some] |
+| main.rs:316:28:316:35 | r2.err() [Some] | semmle.label | r2.err() [Some] |
+| main.rs:318:10:318:21 | o2b.unwrap() | semmle.label | o2b.unwrap() |
+| main.rs:322:9:322:10 | s1 [Ok] | semmle.label | s1 [Ok] |
+| main.rs:322:32:322:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
+| main.rs:322:35:322:44 | source(...) | semmle.label | source(...) |
+| main.rs:325:9:325:10 | i1 | semmle.label | i1 |
+| main.rs:325:14:325:15 | s1 [Ok] | semmle.label | s1 [Ok] |
+| main.rs:325:14:325:16 | TryExpr | semmle.label | TryExpr |
+| main.rs:327:10:327:11 | i1 | semmle.label | i1 |
+| main.rs:335:9:335:10 | s1 [Ok] | semmle.label | s1 [Ok] |
+| main.rs:335:32:335:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
+| main.rs:335:35:335:44 | source(...) | semmle.label | source(...) |
+| main.rs:336:10:336:22 | s1.expect(...) | semmle.label | s1.expect(...) |
+| main.rs:339:9:339:10 | s2 [Err] | semmle.label | s2 [Err] |
+| main.rs:339:32:339:46 | Err(...) [Err] | semmle.label | Err(...) [Err] |
+| main.rs:339:36:339:45 | source(...) | semmle.label | source(...) |
+| main.rs:341:10:341:26 | s2.expect_err(...) | semmle.label | s2.expect_err(...) |
+| main.rs:350:9:350:10 | s1 [A] | semmle.label | s1 [A] |
+| main.rs:350:14:350:39 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
+| main.rs:350:29:350:38 | source(...) | semmle.label | source(...) |
+| main.rs:352:11:352:12 | s1 [A] | semmle.label | s1 [A] |
+| main.rs:353:9:353:25 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
+| main.rs:353:24:353:24 | n | semmle.label | n |
+| main.rs:353:35:353:35 | n | semmle.label | n |
+| main.rs:356:11:356:12 | s1 [A] | semmle.label | s1 [A] |
+| main.rs:357:9:357:25 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
+| main.rs:357:24:357:24 | n | semmle.label | n |
+| main.rs:357:55:357:55 | n | semmle.label | n |
+| main.rs:368:9:368:10 | s1 [A] | semmle.label | s1 [A] |
+| main.rs:368:14:368:26 | A(...) [A] | semmle.label | A(...) [A] |
+| main.rs:368:16:368:25 | source(...) | semmle.label | source(...) |
+| main.rs:370:11:370:12 | s1 [A] | semmle.label | s1 [A] |
+| main.rs:371:9:371:12 | A(...) [A] | semmle.label | A(...) [A] |
+| main.rs:371:11:371:11 | n | semmle.label | n |
+| main.rs:371:22:371:22 | n | semmle.label | n |
+| main.rs:374:11:374:12 | s1 [A] | semmle.label | s1 [A] |
+| main.rs:375:9:375:12 | A(...) [A] | semmle.label | A(...) [A] |
+| main.rs:375:11:375:11 | n | semmle.label | n |
+| main.rs:375:29:375:29 | n | semmle.label | n |
+| main.rs:389:9:389:10 | s1 [C] | semmle.label | s1 [C] |
+| main.rs:389:14:391:5 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
+| main.rs:390:18:390:27 | source(...) | semmle.label | source(...) |
+| main.rs:393:11:393:12 | s1 [C] | semmle.label | s1 [C] |
+| main.rs:394:9:394:38 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
+| main.rs:394:36:394:36 | n | semmle.label | n |
+| main.rs:394:48:394:48 | n | semmle.label | n |
+| main.rs:397:11:397:12 | s1 [C] | semmle.label | s1 [C] |
+| main.rs:398:9:398:38 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
+| main.rs:398:36:398:36 | n | semmle.label | n |
+| main.rs:398:81:398:81 | n | semmle.label | n |
+| main.rs:409:9:409:10 | s1 [C] | semmle.label | s1 [C] |
+| main.rs:409:14:411:5 | C {...} [C] | semmle.label | C {...} [C] |
+| main.rs:410:18:410:27 | source(...) | semmle.label | source(...) |
+| main.rs:413:11:413:12 | s1 [C] | semmle.label | s1 [C] |
+| main.rs:414:9:414:24 | C {...} [C] | semmle.label | C {...} [C] |
+| main.rs:414:22:414:22 | n | semmle.label | n |
+| main.rs:414:34:414:34 | n | semmle.label | n |
+| main.rs:417:11:417:12 | s1 [C] | semmle.label | s1 [C] |
+| main.rs:418:9:418:24 | C {...} [C] | semmle.label | C {...} [C] |
+| main.rs:418:22:418:22 | n | semmle.label | n |
+| main.rs:418:53:418:53 | n | semmle.label | n |
+| main.rs:430:9:430:12 | arr1 [element] | semmle.label | arr1 [element] |
+| main.rs:430:16:430:33 | [...] [element] | semmle.label | [...] [element] |
+| main.rs:430:23:430:32 | source(...) | semmle.label | source(...) |
+| main.rs:431:9:431:10 | n1 | semmle.label | n1 |
+| main.rs:431:14:431:17 | arr1 [element] | semmle.label | arr1 [element] |
+| main.rs:431:14:431:20 | arr1[2] | semmle.label | arr1[2] |
+| main.rs:432:10:432:11 | n1 | semmle.label | n1 |
+| main.rs:434:9:434:12 | arr2 [element] | semmle.label | arr2 [element] |
+| main.rs:434:16:434:31 | [...; 10] [element] | semmle.label | [...; 10] [element] |
+| main.rs:434:17:434:26 | source(...) | semmle.label | source(...) |
+| main.rs:435:9:435:10 | n2 | semmle.label | n2 |
+| main.rs:435:14:435:17 | arr2 [element] | semmle.label | arr2 [element] |
+| main.rs:435:14:435:20 | arr2[4] | semmle.label | arr2[4] |
+| main.rs:436:10:436:11 | n2 | semmle.label | n2 |
| main.rs:444:9:444:12 | arr1 [element] | semmle.label | arr1 [element] |
| main.rs:444:16:444:33 | [...] [element] | semmle.label | [...] [element] |
| main.rs:444:23:444:32 | source(...) | semmle.label | source(...) |
-| main.rs:445:11:445:14 | arr1 [element] | semmle.label | arr1 [element] |
-| main.rs:446:9:446:17 | SlicePat [element] | semmle.label | SlicePat [element] |
-| main.rs:446:10:446:10 | a | semmle.label | a |
-| main.rs:446:13:446:13 | b | semmle.label | b |
-| main.rs:446:16:446:16 | c | semmle.label | c |
-| main.rs:447:18:447:18 | a | semmle.label | a |
-| main.rs:448:18:448:18 | b | semmle.label | b |
-| main.rs:449:18:449:18 | c | semmle.label | c |
-| main.rs:458:5:458:11 | [post] mut_arr [element] | semmle.label | [post] mut_arr [element] |
-| main.rs:458:18:458:27 | source(...) | semmle.label | source(...) |
-| main.rs:459:9:459:9 | d | semmle.label | d |
-| main.rs:459:13:459:19 | mut_arr [element] | semmle.label | mut_arr [element] |
-| main.rs:459:13:459:22 | mut_arr[1] | semmle.label | mut_arr[1] |
-| main.rs:460:10:460:10 | d | semmle.label | d |
-| main.rs:461:10:461:16 | mut_arr [element] | semmle.label | mut_arr [element] |
-| main.rs:461:10:461:19 | mut_arr[0] | semmle.label | mut_arr[0] |
-| main.rs:484:9:484:9 | s | semmle.label | s |
-| main.rs:484:25:484:26 | source(...) | semmle.label | source(...) |
-| main.rs:485:10:485:10 | s | semmle.label | s |
-| main.rs:493:9:493:9 | a | semmle.label | a |
-| main.rs:493:13:493:22 | source(...) | semmle.label | source(...) |
-| main.rs:498:10:498:10 | a | semmle.label | a |
-| main.rs:505:9:505:10 | vs [element] | semmle.label | vs [element] |
-| main.rs:505:14:505:34 | [...] [element] | semmle.label | [...] [element] |
-| main.rs:505:15:505:24 | source(...) | semmle.label | source(...) |
-| main.rs:507:10:507:11 | vs [element] | semmle.label | vs [element] |
-| main.rs:507:10:507:14 | vs[0] | semmle.label | vs[0] |
-| main.rs:511:9:511:9 | v | semmle.label | v |
-| main.rs:511:14:511:15 | vs [element] | semmle.label | vs [element] |
-| main.rs:512:14:512:14 | v | semmle.label | v |
-| main.rs:530:9:530:18 | mut vs_mut [element] | semmle.label | mut vs_mut [element] |
-| main.rs:530:22:530:42 | [...] [element] | semmle.label | [...] [element] |
-| main.rs:530:23:530:32 | source(...) | semmle.label | source(...) |
-| main.rs:532:10:532:15 | vs_mut [element] | semmle.label | vs_mut [element] |
-| main.rs:532:10:532:18 | vs_mut[0] | semmle.label | vs_mut[0] |
-| main.rs:542:9:542:9 | a | semmle.label | a |
-| main.rs:542:13:542:22 | source(...) | semmle.label | source(...) |
-| main.rs:544:9:544:9 | c | semmle.label | c |
-| main.rs:544:13:544:22 | source(...) | semmle.label | source(...) |
-| main.rs:545:9:545:13 | c_ref [&ref] | semmle.label | c_ref [&ref] |
-| main.rs:545:17:545:18 | &c [&ref] | semmle.label | &c [&ref] |
-| main.rs:545:18:545:18 | c | semmle.label | c |
-| main.rs:547:10:547:10 | a | semmle.label | a |
-| main.rs:550:10:550:15 | * ... | semmle.label | * ... |
-| main.rs:550:11:550:15 | c_ref [&ref] | semmle.label | c_ref [&ref] |
+| main.rs:445:9:445:10 | n1 | semmle.label | n1 |
+| main.rs:445:15:445:18 | arr1 [element] | semmle.label | arr1 [element] |
+| main.rs:446:14:446:15 | n1 | semmle.label | n1 |
+| main.rs:456:9:456:12 | arr1 [element] | semmle.label | arr1 [element] |
+| main.rs:456:16:456:33 | [...] [element] | semmle.label | [...] [element] |
+| main.rs:456:23:456:32 | source(...) | semmle.label | source(...) |
+| main.rs:457:11:457:14 | arr1 [element] | semmle.label | arr1 [element] |
+| main.rs:458:9:458:17 | SlicePat [element] | semmle.label | SlicePat [element] |
+| main.rs:458:10:458:10 | a | semmle.label | a |
+| main.rs:458:13:458:13 | b | semmle.label | b |
+| main.rs:458:16:458:16 | c | semmle.label | c |
+| main.rs:459:18:459:18 | a | semmle.label | a |
+| main.rs:460:18:460:18 | b | semmle.label | b |
+| main.rs:461:18:461:18 | c | semmle.label | c |
+| main.rs:470:5:470:11 | [post] mut_arr [element] | semmle.label | [post] mut_arr [element] |
+| main.rs:470:18:470:27 | source(...) | semmle.label | source(...) |
+| main.rs:471:9:471:9 | d | semmle.label | d |
+| main.rs:471:13:471:19 | mut_arr [element] | semmle.label | mut_arr [element] |
+| main.rs:471:13:471:22 | mut_arr[1] | semmle.label | mut_arr[1] |
+| main.rs:472:10:472:10 | d | semmle.label | d |
+| main.rs:473:10:473:16 | mut_arr [element] | semmle.label | mut_arr [element] |
+| main.rs:473:10:473:19 | mut_arr[0] | semmle.label | mut_arr[0] |
+| main.rs:496:9:496:9 | s | semmle.label | s |
+| main.rs:496:25:496:26 | source(...) | semmle.label | source(...) |
+| main.rs:497:10:497:10 | s | semmle.label | s |
+| main.rs:505:9:505:9 | a | semmle.label | a |
+| main.rs:505:13:505:22 | source(...) | semmle.label | source(...) |
+| main.rs:510:10:510:10 | a | semmle.label | a |
+| main.rs:517:9:517:10 | vs [element] | semmle.label | vs [element] |
+| main.rs:517:14:517:34 | [...] [element] | semmle.label | [...] [element] |
+| main.rs:517:15:517:24 | source(...) | semmle.label | source(...) |
+| main.rs:519:10:519:11 | vs [element] | semmle.label | vs [element] |
+| main.rs:519:10:519:14 | vs[0] | semmle.label | vs[0] |
+| main.rs:523:9:523:9 | v | semmle.label | v |
+| main.rs:523:14:523:15 | vs [element] | semmle.label | vs [element] |
+| main.rs:524:14:524:14 | v | semmle.label | v |
+| main.rs:542:9:542:18 | mut vs_mut [element] | semmle.label | mut vs_mut [element] |
+| main.rs:542:22:542:42 | [...] [element] | semmle.label | [...] [element] |
+| main.rs:542:23:542:32 | source(...) | semmle.label | source(...) |
+| main.rs:544:10:544:15 | vs_mut [element] | semmle.label | vs_mut [element] |
+| main.rs:544:10:544:18 | vs_mut[0] | semmle.label | vs_mut[0] |
+| main.rs:554:9:554:9 | a | semmle.label | a |
+| main.rs:554:13:554:22 | source(...) | semmle.label | source(...) |
+| main.rs:556:9:556:9 | c | semmle.label | c |
+| main.rs:556:13:556:22 | source(...) | semmle.label | source(...) |
+| main.rs:557:9:557:13 | c_ref [&ref] | semmle.label | c_ref [&ref] |
+| main.rs:557:17:557:18 | &c [&ref] | semmle.label | &c [&ref] |
+| main.rs:557:18:557:18 | c | semmle.label | c |
+| main.rs:559:10:559:10 | a | semmle.label | a |
+| main.rs:562:10:562:15 | * ... | semmle.label | * ... |
+| main.rs:562:11:562:15 | c_ref [&ref] | semmle.label | c_ref [&ref] |
subpaths
testFailures
#select
@@ -542,54 +551,56 @@ testFailures
| main.rs:53:10:53:10 | b | main.rs:48:13:48:21 | source(...) | main.rs:53:10:53:10 | b | $@ | main.rs:48:13:48:21 | source(...) | source(...) |
| main.rs:64:10:64:10 | b | main.rs:62:15:62:23 | source(...) | main.rs:64:10:64:10 | b | $@ | main.rs:62:15:62:23 | source(...) | source(...) |
| main.rs:71:10:71:10 | i | main.rs:70:9:70:17 | source(...) | main.rs:71:10:71:10 | i | $@ | main.rs:70:9:70:17 | source(...) | source(...) |
-| main.rs:104:10:104:11 | * ... | main.rs:103:22:103:30 | source(...) | main.rs:104:10:104:11 | * ... | $@ | main.rs:103:22:103:30 | source(...) | source(...) |
-| main.rs:112:10:112:12 | a.0 | main.rs:111:14:111:22 | source(...) | main.rs:112:10:112:12 | a.0 | $@ | main.rs:111:14:111:22 | source(...) | source(...) |
-| main.rs:120:10:120:11 | a1 | main.rs:117:17:117:26 | source(...) | main.rs:120:10:120:11 | a1 | $@ | main.rs:117:17:117:26 | source(...) | source(...) |
-| main.rs:127:10:127:12 | a.1 | main.rs:125:21:125:30 | source(...) | main.rs:127:10:127:12 | a.1 | $@ | main.rs:125:21:125:30 | source(...) | source(...) |
-| main.rs:130:10:130:12 | a.0 | main.rs:128:11:128:20 | source(...) | main.rs:130:10:130:12 | a.0 | $@ | main.rs:128:11:128:20 | source(...) | source(...) |
-| main.rs:138:10:138:15 | ... .1 | main.rs:135:17:135:26 | source(...) | main.rs:138:10:138:15 | ... .1 | $@ | main.rs:135:17:135:26 | source(...) | source(...) |
-| main.rs:152:10:152:12 | p.x | main.rs:151:24:151:32 | source(...) | main.rs:152:10:152:12 | p.x | $@ | main.rs:151:24:151:32 | source(...) | source(...) |
-| main.rs:160:10:160:12 | p.y | main.rs:159:11:159:20 | source(...) | main.rs:160:10:160:12 | p.y | $@ | main.rs:159:11:159:20 | source(...) | source(...) |
-| main.rs:169:10:169:10 | a | main.rs:165:12:165:21 | source(...) | main.rs:169:10:169:10 | a | $@ | main.rs:165:12:165:21 | source(...) | source(...) |
-| main.rs:187:10:187:18 | ... .y | main.rs:182:16:182:25 | source(...) | main.rs:187:10:187:18 | ... .y | $@ | main.rs:182:16:182:25 | source(...) | source(...) |
-| main.rs:203:18:203:18 | y | main.rs:192:13:192:22 | source(...) | main.rs:203:18:203:18 | y | $@ | main.rs:192:13:192:22 | source(...) | source(...) |
-| main.rs:213:10:213:12 | s.0 | main.rs:212:27:212:36 | source(...) | main.rs:213:10:213:12 | s.0 | $@ | main.rs:212:27:212:36 | source(...) | source(...) |
-| main.rs:218:18:218:18 | x | main.rs:212:27:212:36 | source(...) | main.rs:218:18:218:18 | x | $@ | main.rs:212:27:212:36 | source(...) | source(...) |
-| main.rs:231:33:231:33 | n | main.rs:228:27:228:36 | source(...) | main.rs:231:33:231:33 | n | $@ | main.rs:228:27:228:36 | source(...) | source(...) |
-| main.rs:244:25:244:25 | n | main.rs:241:19:241:28 | source(...) | main.rs:244:25:244:25 | n | $@ | main.rs:241:19:241:28 | source(...) | source(...) |
-| main.rs:257:18:257:18 | n | main.rs:254:19:254:28 | source(...) | main.rs:257:18:257:18 | n | $@ | main.rs:254:19:254:28 | source(...) | source(...) |
-| main.rs:261:14:261:14 | n | main.rs:254:19:254:28 | source(...) | main.rs:261:14:261:14 | n | $@ | main.rs:254:19:254:28 | source(...) | source(...) |
-| main.rs:267:10:267:20 | s1.unwrap() | main.rs:266:19:266:28 | source(...) | main.rs:267:10:267:20 | s1.unwrap() | $@ | main.rs:266:19:266:28 | source(...) | source(...) |
-| main.rs:272:10:272:24 | s1.unwrap_or(...) | main.rs:271:19:271:28 | source(...) | main.rs:272:10:272:24 | s1.unwrap_or(...) | $@ | main.rs:271:19:271:28 | source(...) | source(...) |
-| main.rs:275:10:275:33 | s2.unwrap_or(...) | main.rs:275:23:275:32 | source(...) | main.rs:275:10:275:33 | s2.unwrap_or(...) | $@ | main.rs:275:23:275:32 | source(...) | source(...) |
-| main.rs:280:10:280:32 | s1.unwrap_or_else(...) | main.rs:279:19:279:28 | source(...) | main.rs:280:10:280:32 | s1.unwrap_or_else(...) | $@ | main.rs:279:19:279:28 | source(...) | source(...) |
-| main.rs:283:10:283:41 | s2.unwrap_or_else(...) | main.rs:283:31:283:40 | source(...) | main.rs:283:10:283:41 | s2.unwrap_or_else(...) | $@ | main.rs:283:31:283:40 | source(...) | source(...) |
-| main.rs:290:10:290:11 | i1 | main.rs:287:19:287:28 | source(...) | main.rs:290:10:290:11 | i1 | $@ | main.rs:287:19:287:28 | source(...) | source(...) |
-| main.rs:299:10:299:21 | o1a.unwrap() | main.rs:296:35:296:44 | source(...) | main.rs:299:10:299:21 | o1a.unwrap() | $@ | main.rs:296:35:296:44 | source(...) | source(...) |
-| main.rs:306:10:306:21 | o2b.unwrap() | main.rs:302:36:302:45 | source(...) | main.rs:306:10:306:21 | o2b.unwrap() | $@ | main.rs:302:36:302:45 | source(...) | source(...) |
-| main.rs:315:10:315:11 | i1 | main.rs:310:35:310:44 | source(...) | main.rs:315:10:315:11 | i1 | $@ | main.rs:310:35:310:44 | source(...) | source(...) |
-| main.rs:324:10:324:22 | s1.expect(...) | main.rs:323:35:323:44 | source(...) | main.rs:324:10:324:22 | s1.expect(...) | $@ | main.rs:323:35:323:44 | source(...) | source(...) |
-| main.rs:329:10:329:26 | s2.expect_err(...) | main.rs:327:36:327:45 | source(...) | main.rs:329:10:329:26 | s2.expect_err(...) | $@ | main.rs:327:36:327:45 | source(...) | source(...) |
-| main.rs:341:35:341:35 | n | main.rs:338:29:338:38 | source(...) | main.rs:341:35:341:35 | n | $@ | main.rs:338:29:338:38 | source(...) | source(...) |
-| main.rs:345:55:345:55 | n | main.rs:338:29:338:38 | source(...) | main.rs:345:55:345:55 | n | $@ | main.rs:338:29:338:38 | source(...) | source(...) |
-| main.rs:359:22:359:22 | n | main.rs:356:16:356:25 | source(...) | main.rs:359:22:359:22 | n | $@ | main.rs:356:16:356:25 | source(...) | source(...) |
-| main.rs:363:29:363:29 | n | main.rs:356:16:356:25 | source(...) | main.rs:363:29:363:29 | n | $@ | main.rs:356:16:356:25 | source(...) | source(...) |
-| main.rs:382:48:382:48 | n | main.rs:378:18:378:27 | source(...) | main.rs:382:48:382:48 | n | $@ | main.rs:378:18:378:27 | source(...) | source(...) |
-| main.rs:386:81:386:81 | n | main.rs:378:18:378:27 | source(...) | main.rs:386:81:386:81 | n | $@ | main.rs:378:18:378:27 | source(...) | source(...) |
-| main.rs:402:34:402:34 | n | main.rs:398:18:398:27 | source(...) | main.rs:402:34:402:34 | n | $@ | main.rs:398:18:398:27 | source(...) | source(...) |
-| main.rs:406:53:406:53 | n | main.rs:398:18:398:27 | source(...) | main.rs:406:53:406:53 | n | $@ | main.rs:398:18:398:27 | source(...) | source(...) |
-| main.rs:420:10:420:11 | n1 | main.rs:418:23:418:32 | source(...) | main.rs:420:10:420:11 | n1 | $@ | main.rs:418:23:418:32 | source(...) | source(...) |
-| main.rs:424:10:424:11 | n2 | main.rs:422:17:422:26 | source(...) | main.rs:424:10:424:11 | n2 | $@ | main.rs:422:17:422:26 | source(...) | source(...) |
-| main.rs:434:14:434:15 | n1 | main.rs:432:23:432:32 | source(...) | main.rs:434:14:434:15 | n1 | $@ | main.rs:432:23:432:32 | source(...) | source(...) |
-| main.rs:447:18:447:18 | a | main.rs:444:23:444:32 | source(...) | main.rs:447:18:447:18 | a | $@ | main.rs:444:23:444:32 | source(...) | source(...) |
-| main.rs:448:18:448:18 | b | main.rs:444:23:444:32 | source(...) | main.rs:448:18:448:18 | b | $@ | main.rs:444:23:444:32 | source(...) | source(...) |
-| main.rs:449:18:449:18 | c | main.rs:444:23:444:32 | source(...) | main.rs:449:18:449:18 | c | $@ | main.rs:444:23:444:32 | source(...) | source(...) |
-| main.rs:460:10:460:10 | d | main.rs:458:18:458:27 | source(...) | main.rs:460:10:460:10 | d | $@ | main.rs:458:18:458:27 | source(...) | source(...) |
-| main.rs:461:10:461:19 | mut_arr[0] | main.rs:458:18:458:27 | source(...) | main.rs:461:10:461:19 | mut_arr[0] | $@ | main.rs:458:18:458:27 | source(...) | source(...) |
-| main.rs:485:10:485:10 | s | main.rs:484:25:484:26 | source(...) | main.rs:485:10:485:10 | s | $@ | main.rs:484:25:484:26 | source(...) | source(...) |
-| main.rs:498:10:498:10 | a | main.rs:493:13:493:22 | source(...) | main.rs:498:10:498:10 | a | $@ | main.rs:493:13:493:22 | source(...) | source(...) |
-| main.rs:507:10:507:14 | vs[0] | main.rs:505:15:505:24 | source(...) | main.rs:507:10:507:14 | vs[0] | $@ | main.rs:505:15:505:24 | source(...) | source(...) |
-| main.rs:512:14:512:14 | v | main.rs:505:15:505:24 | source(...) | main.rs:512:14:512:14 | v | $@ | main.rs:505:15:505:24 | source(...) | source(...) |
-| main.rs:532:10:532:18 | vs_mut[0] | main.rs:530:23:530:32 | source(...) | main.rs:532:10:532:18 | vs_mut[0] | $@ | main.rs:530:23:530:32 | source(...) | source(...) |
-| main.rs:547:10:547:10 | a | main.rs:542:13:542:22 | source(...) | main.rs:547:10:547:10 | a | $@ | main.rs:542:13:542:22 | source(...) | source(...) |
-| main.rs:550:10:550:15 | * ... | main.rs:544:13:544:22 | source(...) | main.rs:550:10:550:15 | * ... | $@ | main.rs:544:13:544:22 | source(...) | source(...) |
+| main.rs:78:10:78:10 | j | main.rs:76:13:76:21 | source(...) | main.rs:78:10:78:10 | j | $@ | main.rs:76:13:76:21 | source(...) | source(...) |
+| main.rs:79:10:79:10 | k | main.rs:76:13:76:21 | source(...) | main.rs:79:10:79:10 | k | $@ | main.rs:76:13:76:21 | source(...) | source(...) |
+| main.rs:116:10:116:11 | * ... | main.rs:115:22:115:30 | source(...) | main.rs:116:10:116:11 | * ... | $@ | main.rs:115:22:115:30 | source(...) | source(...) |
+| main.rs:124:10:124:12 | a.0 | main.rs:123:14:123:22 | source(...) | main.rs:124:10:124:12 | a.0 | $@ | main.rs:123:14:123:22 | source(...) | source(...) |
+| main.rs:132:10:132:11 | a1 | main.rs:129:17:129:26 | source(...) | main.rs:132:10:132:11 | a1 | $@ | main.rs:129:17:129:26 | source(...) | source(...) |
+| main.rs:139:10:139:12 | a.1 | main.rs:137:21:137:30 | source(...) | main.rs:139:10:139:12 | a.1 | $@ | main.rs:137:21:137:30 | source(...) | source(...) |
+| main.rs:142:10:142:12 | a.0 | main.rs:140:11:140:20 | source(...) | main.rs:142:10:142:12 | a.0 | $@ | main.rs:140:11:140:20 | source(...) | source(...) |
+| main.rs:150:10:150:15 | ... .1 | main.rs:147:17:147:26 | source(...) | main.rs:150:10:150:15 | ... .1 | $@ | main.rs:147:17:147:26 | source(...) | source(...) |
+| main.rs:164:10:164:12 | p.x | main.rs:163:24:163:32 | source(...) | main.rs:164:10:164:12 | p.x | $@ | main.rs:163:24:163:32 | source(...) | source(...) |
+| main.rs:172:10:172:12 | p.y | main.rs:171:11:171:20 | source(...) | main.rs:172:10:172:12 | p.y | $@ | main.rs:171:11:171:20 | source(...) | source(...) |
+| main.rs:181:10:181:10 | a | main.rs:177:12:177:21 | source(...) | main.rs:181:10:181:10 | a | $@ | main.rs:177:12:177:21 | source(...) | source(...) |
+| main.rs:199:10:199:18 | ... .y | main.rs:194:16:194:25 | source(...) | main.rs:199:10:199:18 | ... .y | $@ | main.rs:194:16:194:25 | source(...) | source(...) |
+| main.rs:215:18:215:18 | y | main.rs:204:13:204:22 | source(...) | main.rs:215:18:215:18 | y | $@ | main.rs:204:13:204:22 | source(...) | source(...) |
+| main.rs:225:10:225:12 | s.0 | main.rs:224:27:224:36 | source(...) | main.rs:225:10:225:12 | s.0 | $@ | main.rs:224:27:224:36 | source(...) | source(...) |
+| main.rs:230:18:230:18 | x | main.rs:224:27:224:36 | source(...) | main.rs:230:18:230:18 | x | $@ | main.rs:224:27:224:36 | source(...) | source(...) |
+| main.rs:243:33:243:33 | n | main.rs:240:27:240:36 | source(...) | main.rs:243:33:243:33 | n | $@ | main.rs:240:27:240:36 | source(...) | source(...) |
+| main.rs:256:25:256:25 | n | main.rs:253:19:253:28 | source(...) | main.rs:256:25:256:25 | n | $@ | main.rs:253:19:253:28 | source(...) | source(...) |
+| main.rs:269:18:269:18 | n | main.rs:266:19:266:28 | source(...) | main.rs:269:18:269:18 | n | $@ | main.rs:266:19:266:28 | source(...) | source(...) |
+| main.rs:273:14:273:14 | n | main.rs:266:19:266:28 | source(...) | main.rs:273:14:273:14 | n | $@ | main.rs:266:19:266:28 | source(...) | source(...) |
+| main.rs:279:10:279:20 | s1.unwrap() | main.rs:278:19:278:28 | source(...) | main.rs:279:10:279:20 | s1.unwrap() | $@ | main.rs:278:19:278:28 | source(...) | source(...) |
+| main.rs:284:10:284:24 | s1.unwrap_or(...) | main.rs:283:19:283:28 | source(...) | main.rs:284:10:284:24 | s1.unwrap_or(...) | $@ | main.rs:283:19:283:28 | source(...) | source(...) |
+| main.rs:287:10:287:33 | s2.unwrap_or(...) | main.rs:287:23:287:32 | source(...) | main.rs:287:10:287:33 | s2.unwrap_or(...) | $@ | main.rs:287:23:287:32 | source(...) | source(...) |
+| main.rs:292:10:292:32 | s1.unwrap_or_else(...) | main.rs:291:19:291:28 | source(...) | main.rs:292:10:292:32 | s1.unwrap_or_else(...) | $@ | main.rs:291:19:291:28 | source(...) | source(...) |
+| main.rs:295:10:295:41 | s2.unwrap_or_else(...) | main.rs:295:31:295:40 | source(...) | main.rs:295:10:295:41 | s2.unwrap_or_else(...) | $@ | main.rs:295:31:295:40 | source(...) | source(...) |
+| main.rs:302:10:302:11 | i1 | main.rs:299:19:299:28 | source(...) | main.rs:302:10:302:11 | i1 | $@ | main.rs:299:19:299:28 | source(...) | source(...) |
+| main.rs:311:10:311:21 | o1a.unwrap() | main.rs:308:35:308:44 | source(...) | main.rs:311:10:311:21 | o1a.unwrap() | $@ | main.rs:308:35:308:44 | source(...) | source(...) |
+| main.rs:318:10:318:21 | o2b.unwrap() | main.rs:314:36:314:45 | source(...) | main.rs:318:10:318:21 | o2b.unwrap() | $@ | main.rs:314:36:314:45 | source(...) | source(...) |
+| main.rs:327:10:327:11 | i1 | main.rs:322:35:322:44 | source(...) | main.rs:327:10:327:11 | i1 | $@ | main.rs:322:35:322:44 | source(...) | source(...) |
+| main.rs:336:10:336:22 | s1.expect(...) | main.rs:335:35:335:44 | source(...) | main.rs:336:10:336:22 | s1.expect(...) | $@ | main.rs:335:35:335:44 | source(...) | source(...) |
+| main.rs:341:10:341:26 | s2.expect_err(...) | main.rs:339:36:339:45 | source(...) | main.rs:341:10:341:26 | s2.expect_err(...) | $@ | main.rs:339:36:339:45 | source(...) | source(...) |
+| main.rs:353:35:353:35 | n | main.rs:350:29:350:38 | source(...) | main.rs:353:35:353:35 | n | $@ | main.rs:350:29:350:38 | source(...) | source(...) |
+| main.rs:357:55:357:55 | n | main.rs:350:29:350:38 | source(...) | main.rs:357:55:357:55 | n | $@ | main.rs:350:29:350:38 | source(...) | source(...) |
+| main.rs:371:22:371:22 | n | main.rs:368:16:368:25 | source(...) | main.rs:371:22:371:22 | n | $@ | main.rs:368:16:368:25 | source(...) | source(...) |
+| main.rs:375:29:375:29 | n | main.rs:368:16:368:25 | source(...) | main.rs:375:29:375:29 | n | $@ | main.rs:368:16:368:25 | source(...) | source(...) |
+| main.rs:394:48:394:48 | n | main.rs:390:18:390:27 | source(...) | main.rs:394:48:394:48 | n | $@ | main.rs:390:18:390:27 | source(...) | source(...) |
+| main.rs:398:81:398:81 | n | main.rs:390:18:390:27 | source(...) | main.rs:398:81:398:81 | n | $@ | main.rs:390:18:390:27 | source(...) | source(...) |
+| main.rs:414:34:414:34 | n | main.rs:410:18:410:27 | source(...) | main.rs:414:34:414:34 | n | $@ | main.rs:410:18:410:27 | source(...) | source(...) |
+| main.rs:418:53:418:53 | n | main.rs:410:18:410:27 | source(...) | main.rs:418:53:418:53 | n | $@ | main.rs:410:18:410:27 | source(...) | source(...) |
+| main.rs:432:10:432:11 | n1 | main.rs:430:23:430:32 | source(...) | main.rs:432:10:432:11 | n1 | $@ | main.rs:430:23:430:32 | source(...) | source(...) |
+| main.rs:436:10:436:11 | n2 | main.rs:434:17:434:26 | source(...) | main.rs:436:10:436:11 | n2 | $@ | main.rs:434:17:434:26 | source(...) | source(...) |
+| main.rs:446:14:446:15 | n1 | main.rs:444:23:444:32 | source(...) | main.rs:446:14:446:15 | n1 | $@ | main.rs:444:23:444:32 | source(...) | source(...) |
+| main.rs:459:18:459:18 | a | main.rs:456:23:456:32 | source(...) | main.rs:459:18:459:18 | a | $@ | main.rs:456:23:456:32 | source(...) | source(...) |
+| main.rs:460:18:460:18 | b | main.rs:456:23:456:32 | source(...) | main.rs:460:18:460:18 | b | $@ | main.rs:456:23:456:32 | source(...) | source(...) |
+| main.rs:461:18:461:18 | c | main.rs:456:23:456:32 | source(...) | main.rs:461:18:461:18 | c | $@ | main.rs:456:23:456:32 | source(...) | source(...) |
+| main.rs:472:10:472:10 | d | main.rs:470:18:470:27 | source(...) | main.rs:472:10:472:10 | d | $@ | main.rs:470:18:470:27 | source(...) | source(...) |
+| main.rs:473:10:473:19 | mut_arr[0] | main.rs:470:18:470:27 | source(...) | main.rs:473:10:473:19 | mut_arr[0] | $@ | main.rs:470:18:470:27 | source(...) | source(...) |
+| main.rs:497:10:497:10 | s | main.rs:496:25:496:26 | source(...) | main.rs:497:10:497:10 | s | $@ | main.rs:496:25:496:26 | source(...) | source(...) |
+| main.rs:510:10:510:10 | a | main.rs:505:13:505:22 | source(...) | main.rs:510:10:510:10 | a | $@ | main.rs:505:13:505:22 | source(...) | source(...) |
+| main.rs:519:10:519:14 | vs[0] | main.rs:517:15:517:24 | source(...) | main.rs:519:10:519:14 | vs[0] | $@ | main.rs:517:15:517:24 | source(...) | source(...) |
+| main.rs:524:14:524:14 | v | main.rs:517:15:517:24 | source(...) | main.rs:524:14:524:14 | v | $@ | main.rs:517:15:517:24 | source(...) | source(...) |
+| main.rs:544:10:544:18 | vs_mut[0] | main.rs:542:23:542:32 | source(...) | main.rs:544:10:544:18 | vs_mut[0] | $@ | main.rs:542:23:542:32 | source(...) | source(...) |
+| main.rs:559:10:559:10 | a | main.rs:554:13:554:22 | source(...) | main.rs:559:10:559:10 | a | $@ | main.rs:554:13:554:22 | source(...) | source(...) |
+| main.rs:562:10:562:15 | * ... | main.rs:556:13:556:22 | source(...) | main.rs:562:10:562:15 | * ... | $@ | main.rs:556:13:556:22 | source(...) | source(...) |
diff --git a/rust/ql/test/library-tests/dataflow/local/main.rs b/rust/ql/test/library-tests/dataflow/local/main.rs
index 598aed6777f..d352eb0cbf1 100644
--- a/rust/ql/test/library-tests/dataflow/local/main.rs
+++ b/rust/ql/test/library-tests/dataflow/local/main.rs
@@ -69,6 +69,18 @@ fn assignment() {
sink(i);
i = source(6);
sink(i); // $ hasValueFlow=6
+ i = 2;
+ sink(i);
+
+ let mut j = 3;
+ let k = source(7);
+ j = k;
+ sink(j); // $ hasValueFlow=7
+ sink(k); // $ hasValueFlow=7
+
+ let mut l = source(8);
+ l = l;
+ sink(l); // $ MISSING: hasValueFlow=8
}
fn block_expression1() -> i64 {
From 49de716f10ab1d9e0ec7155363edc5e9e23405f5 Mon Sep 17 00:00:00 2001
From: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
Date: Tue, 16 Sep 2025 10:50:28 +0100
Subject: [PATCH 15/49] Rust: Accept consistency check changes.
---
.../local/CONSISTENCY/PathResolutionConsistency.expected | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/PathResolutionConsistency.expected
index f5f63c61593..cbf6523d21c 100644
--- a/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/PathResolutionConsistency.expected
+++ b/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/PathResolutionConsistency.expected
@@ -1,2 +1,2 @@
multipleCallTargets
-| main.rs:471:18:471:24 | n.len() |
+| main.rs:483:18:483:24 | n.len() |
From 7b04cf1a73ddb561738e31ba5b31348ced20c626 Mon Sep 17 00:00:00 2001
From: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
Date: Tue, 16 Sep 2025 12:15:44 +0100
Subject: [PATCH 16/49] Rust: Fix up the test annotations.
---
.../security/CWE-319/UseOfHttp.expected | 10 -------
.../test/query-tests/security/CWE-319/main.rs | 30 +++++++++----------
2 files changed, 15 insertions(+), 25 deletions(-)
diff --git a/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
index 53cc8606cc8..f2a2e7e05f4 100644
--- a/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
+++ b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
@@ -66,13 +66,3 @@ nodes
| main.rs:60:21:60:42 | ...::get | semmle.label | ...::get |
| main.rs:60:44:60:46 | url | semmle.label | url |
subpaths
-testFailures
-| main.rs:22:20:22:39 | "http://example.com" | Unexpected result: Source |
-| main.rs:22:42:22:71 | //... | Missing result: Alert[rust/non-https-url] |
-| main.rs:25:21:25:42 | ...::get | Unexpected result: Alert |
-| main.rs:33:20:33:28 | "http://" | Unexpected result: Source |
-| main.rs:33:31:33:60 | //... | Missing result: Alert[rust/non-https-url] |
-| main.rs:36:30:36:51 | ...::get | Unexpected result: Alert |
-| main.rs:59:15:59:49 | "http://example.com/sensitive-... | Unexpected result: Source |
-| main.rs:59:52:59:81 | //... | Missing result: Alert[rust/non-https-url] |
-| main.rs:60:21:60:42 | ...::get | Unexpected result: Alert |
diff --git a/rust/ql/test/query-tests/security/CWE-319/main.rs b/rust/ql/test/query-tests/security/CWE-319/main.rs
index ae58967a49b..52f744e39a1 100644
--- a/rust/ql/test/query-tests/security/CWE-319/main.rs
+++ b/rust/ql/test/query-tests/security/CWE-319/main.rs
@@ -11,30 +11,30 @@ fn test_direct_literals() {
// BAD: Direct HTTP URLs that should be flagged
let _response1 = reqwest::blocking::get("http://example.com/api").unwrap(); // $ Alert[rust/non-https-url]
let _response2 = reqwest::blocking::get("http://api.example.com/data").unwrap(); // $ Alert[rust/non-https-url]
-
- // GOOD: HTTPS URLs that should not be flagged
+
+ // GOOD: HTTPS URLs that should not be flagged
let _response3 = reqwest::blocking::get("https://example.com/api").unwrap();
let _response4 = reqwest::blocking::get("https://api.example.com/data").unwrap();
}
fn test_dynamic_urls() {
// BAD: HTTP URLs constructed dynamically
- let base_url = "http://example.com"; // $ Alert[rust/non-https-url]
+ let base_url = "http://example.com"; // $ Source
let endpoint = "/api/users";
let full_url = format!("{}{}", base_url, endpoint);
- let _response = reqwest::blocking::get(&full_url).unwrap();
-
+ let _response = reqwest::blocking::get(&full_url).unwrap(); // $ Alert[rust/non-https-url]
+
// GOOD: HTTPS URLs constructed dynamically
let secure_base = "https://example.com";
let secure_full = format!("{}{}", secure_base, endpoint);
let _secure_response = reqwest::blocking::get(&secure_full).unwrap();
-
+
// BAD: HTTP protocol string
- let protocol = "http://"; // $ Alert[rust/non-https-url]
+ let protocol = "http://"; // $ Source
let host = "api.example.com";
let insecure_url = format!("{}{}", protocol, host);
- let _insecure_response = reqwest::blocking::get(&insecure_url).unwrap();
-
+ let _insecure_response = reqwest::blocking::get(&insecure_url).unwrap(); // $ Alert[rust/non-https-url]
+
// GOOD: HTTPS protocol string
let secure_protocol = "https://";
let secure_url = format!("{}{}", secure_protocol, host);
@@ -47,7 +47,7 @@ fn test_localhost_exemptions() {
let _local2 = reqwest::blocking::get("http://127.0.0.1:3000/test").unwrap();
let _local3 = reqwest::blocking::get("http://192.168.1.100/internal").unwrap();
let _local4 = reqwest::blocking::get("http://10.0.0.1/admin").unwrap();
-
+
// Test IPv6 localhost variants
let _local5 = reqwest::blocking::get("http://[::1]:8080/api").unwrap();
let _local6 = reqwest::blocking::get("http://[0:0:0:0:0:0:0:1]/test").unwrap();
@@ -56,10 +56,10 @@ fn test_localhost_exemptions() {
// Additional test cases that mirror the Bad/Good examples
fn test_examples() {
// From UseOfHttpBad.rs - BAD case
- let url = "http://example.com/sensitive-data"; // $ Alert[rust/non-https-url]
- let _response = reqwest::blocking::get(url).unwrap();
-
- // From UseOfHttpGood.rs - GOOD case
+ let url = "http://example.com/sensitive-data"; // $ Source
+ let _response = reqwest::blocking::get(url).unwrap(); // $ Alert[rust/non-https-url]
+
+ // From UseOfHttpGood.rs - GOOD case
let secure_url = "https://example.com/sensitive-data";
let _secure_response = reqwest::blocking::get(secure_url).unwrap();
-}
\ No newline at end of file
+}
From 0924dec545a0eff7113574d629f4c5f2b99007be Mon Sep 17 00:00:00 2001
From: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
Date: Tue, 16 Sep 2025 11:21:57 +0100
Subject: [PATCH 17/49] Rust: Make the tests of the example code closer to the
actual example code.
---
.../security/CWE-319/UseOfHttp.expected | 16 ++++++++--------
.../test/query-tests/security/CWE-319/main.rs | 18 ++++++++++++++----
2 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
index f2a2e7e05f4..e8b7d301335 100644
--- a/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
+++ b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
@@ -3,7 +3,7 @@
| main.rs:13:22:13:43 | ...::get | main.rs:13:45:13:73 | "http://api.example.com/data" | main.rs:13:22:13:43 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:13:45:13:73 | "http://api.example.com/data" | this HTTP URL |
| main.rs:25:21:25:42 | ...::get | main.rs:22:20:22:39 | "http://example.com" | main.rs:25:21:25:42 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:22:20:22:39 | "http://example.com" | this HTTP URL |
| main.rs:36:30:36:51 | ...::get | main.rs:33:20:33:28 | "http://" | main.rs:36:30:36:51 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:33:20:33:28 | "http://" | this HTTP URL |
-| main.rs:60:21:60:42 | ...::get | main.rs:59:15:59:49 | "http://example.com/sensitive-... | main.rs:60:21:60:42 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:59:15:59:49 | "http://example.com/sensitive-... | this HTTP URL |
+| main.rs:63:24:63:45 | ...::get | main.rs:60:19:60:53 | "http://example.com/sensitive-... | main.rs:63:24:63:45 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:60:19:60:53 | "http://example.com/sensitive-... | this HTTP URL |
edges
| main.rs:12:45:12:68 | "http://example.com/api" | main.rs:12:22:12:43 | ...::get | provenance | MaD:1 Sink:MaD:1 |
| main.rs:13:45:13:73 | "http://api.example.com/data" | main.rs:13:22:13:43 | ...::get | provenance | MaD:1 Sink:MaD:1 |
@@ -27,9 +27,9 @@ edges
| main.rs:35:32:35:53 | { ... } | main.rs:35:32:35:53 | ...::must_use(...) | provenance | MaD:3 |
| main.rs:36:53:36:65 | &insecure_url [&ref] | main.rs:36:30:36:51 | ...::get | provenance | MaD:1 Sink:MaD:1 |
| main.rs:36:54:36:65 | insecure_url | main.rs:36:53:36:65 | &insecure_url [&ref] | provenance | |
-| main.rs:59:9:59:11 | url | main.rs:60:44:60:46 | url | provenance | |
-| main.rs:59:15:59:49 | "http://example.com/sensitive-... | main.rs:59:9:59:11 | url | provenance | |
-| main.rs:60:44:60:46 | url | main.rs:60:21:60:42 | ...::get | provenance | MaD:1 Sink:MaD:1 |
+| main.rs:60:13:60:15 | url | main.rs:63:47:63:49 | url | provenance | |
+| main.rs:60:19:60:53 | "http://example.com/sensitive-... | main.rs:60:13:60:15 | url | provenance | |
+| main.rs:63:47:63:49 | url | main.rs:63:24:63:45 | ...::get | provenance | MaD:1 Sink:MaD:1 |
models
| 1 | Sink: reqwest::blocking::get; Argument[0]; request-url |
| 2 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint |
@@ -61,8 +61,8 @@ nodes
| main.rs:36:30:36:51 | ...::get | semmle.label | ...::get |
| main.rs:36:53:36:65 | &insecure_url [&ref] | semmle.label | &insecure_url [&ref] |
| main.rs:36:54:36:65 | insecure_url | semmle.label | insecure_url |
-| main.rs:59:9:59:11 | url | semmle.label | url |
-| main.rs:59:15:59:49 | "http://example.com/sensitive-... | semmle.label | "http://example.com/sensitive-... |
-| main.rs:60:21:60:42 | ...::get | semmle.label | ...::get |
-| main.rs:60:44:60:46 | url | semmle.label | url |
+| main.rs:60:13:60:15 | url | semmle.label | url |
+| main.rs:60:19:60:53 | "http://example.com/sensitive-... | semmle.label | "http://example.com/sensitive-... |
+| main.rs:63:24:63:45 | ...::get | semmle.label | ...::get |
+| main.rs:63:47:63:49 | url | semmle.label | url |
subpaths
diff --git a/rust/ql/test/query-tests/security/CWE-319/main.rs b/rust/ql/test/query-tests/security/CWE-319/main.rs
index 52f744e39a1..cec94840f29 100644
--- a/rust/ql/test/query-tests/security/CWE-319/main.rs
+++ b/rust/ql/test/query-tests/security/CWE-319/main.rs
@@ -56,10 +56,20 @@ fn test_localhost_exemptions() {
// Additional test cases that mirror the Bad/Good examples
fn test_examples() {
// From UseOfHttpBad.rs - BAD case
- let url = "http://example.com/sensitive-data"; // $ Source
- let _response = reqwest::blocking::get(url).unwrap(); // $ Alert[rust/non-https-url]
+ {
+ let url = "http://example.com/sensitive-data"; // $ Source
+
+ // This makes an insecure HTTP request that can be intercepted
+ let response = reqwest::blocking::get(url).unwrap(); // $ Alert[rust/non-https-url]
+ println!("Response: {}", response.text().unwrap());
+ }
// From UseOfHttpGood.rs - GOOD case
- let secure_url = "https://example.com/sensitive-data";
- let _secure_response = reqwest::blocking::get(secure_url).unwrap();
+ {
+ let url = "https://example.com/sensitive-data";
+
+ // This makes a secure HTTPS request that is encrypted
+ let response = reqwest::blocking::get(url).unwrap();
+ println!("Response: {}", response.text().unwrap());
+ }
}
From 9c7fc583373c353f5bf6cf35d055af3b6f28ad0e Mon Sep 17 00:00:00 2001
From: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
Date: Tue, 16 Sep 2025 12:06:05 +0100
Subject: [PATCH 18/49] Rust: Add tests for a few more edge cases.
---
.../security/CWE-319/UseOfHttp.expected | 120 ++++++++++--------
.../test/query-tests/security/CWE-319/main.rs | 22 +++-
2 files changed, 79 insertions(+), 63 deletions(-)
diff --git a/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
index e8b7d301335..216d11b3606 100644
--- a/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
+++ b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
@@ -1,35 +1,39 @@
#select
| main.rs:12:22:12:43 | ...::get | main.rs:12:45:12:68 | "http://example.com/api" | main.rs:12:22:12:43 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:12:45:12:68 | "http://example.com/api" | this HTTP URL |
-| main.rs:13:22:13:43 | ...::get | main.rs:13:45:13:73 | "http://api.example.com/data" | main.rs:13:22:13:43 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:13:45:13:73 | "http://api.example.com/data" | this HTTP URL |
-| main.rs:25:21:25:42 | ...::get | main.rs:22:20:22:39 | "http://example.com" | main.rs:25:21:25:42 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:22:20:22:39 | "http://example.com" | this HTTP URL |
-| main.rs:36:30:36:51 | ...::get | main.rs:33:20:33:28 | "http://" | main.rs:36:30:36:51 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:33:20:33:28 | "http://" | this HTTP URL |
-| main.rs:63:24:63:45 | ...::get | main.rs:60:19:60:53 | "http://example.com/sensitive-... | main.rs:63:24:63:45 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:60:19:60:53 | "http://example.com/sensitive-... | this HTTP URL |
+| main.rs:14:22:14:43 | ...::get | main.rs:14:45:14:73 | "http://api.example.com/data" | main.rs:14:22:14:43 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:14:45:14:73 | "http://api.example.com/data" | this HTTP URL |
+| main.rs:26:21:26:42 | ...::get | main.rs:23:20:23:39 | "http://example.com" | main.rs:26:21:26:42 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:23:20:23:39 | "http://example.com" | this HTTP URL |
+| main.rs:37:30:37:51 | ...::get | main.rs:34:20:34:28 | "http://" | main.rs:37:30:37:51 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:34:20:34:28 | "http://" | this HTTP URL |
+| main.rs:53:19:53:40 | ...::get | main.rs:53:42:53:68 | "http://172.31.255.255/bar" | main.rs:53:19:53:40 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:53:42:53:68 | "http://172.31.255.255/bar" | this HTTP URL |
+| main.rs:60:20:60:41 | ...::get | main.rs:60:43:60:65 | "http://172.32.0.0/baz" | main.rs:60:20:60:41 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:60:43:60:65 | "http://172.32.0.0/baz" | this HTTP URL |
+| main.rs:71:24:71:45 | ...::get | main.rs:68:19:68:53 | "http://example.com/sensitive-... | main.rs:71:24:71:45 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:68:19:68:53 | "http://example.com/sensitive-... | this HTTP URL |
edges
| main.rs:12:45:12:68 | "http://example.com/api" | main.rs:12:22:12:43 | ...::get | provenance | MaD:1 Sink:MaD:1 |
-| main.rs:13:45:13:73 | "http://api.example.com/data" | main.rs:13:22:13:43 | ...::get | provenance | MaD:1 Sink:MaD:1 |
-| main.rs:22:9:22:16 | base_url | main.rs:24:28:24:53 | MacroExpr | provenance | |
-| main.rs:22:20:22:39 | "http://example.com" | main.rs:22:9:22:16 | base_url | provenance | |
-| main.rs:24:9:24:16 | full_url | main.rs:25:45:25:52 | full_url | provenance | |
-| main.rs:24:20:24:26 | res | main.rs:24:28:24:53 | { ... } | provenance | |
-| main.rs:24:28:24:53 | ...::format(...) | main.rs:24:20:24:26 | res | provenance | |
-| main.rs:24:28:24:53 | ...::must_use(...) | main.rs:24:9:24:16 | full_url | provenance | |
-| main.rs:24:28:24:53 | MacroExpr | main.rs:24:28:24:53 | ...::format(...) | provenance | MaD:2 |
-| main.rs:24:28:24:53 | { ... } | main.rs:24:28:24:53 | ...::must_use(...) | provenance | MaD:3 |
-| main.rs:25:44:25:52 | &full_url [&ref] | main.rs:25:21:25:42 | ...::get | provenance | MaD:1 Sink:MaD:1 |
-| main.rs:25:45:25:52 | full_url | main.rs:25:44:25:52 | &full_url [&ref] | provenance | |
-| main.rs:33:9:33:16 | protocol | main.rs:35:32:35:53 | MacroExpr | provenance | |
-| main.rs:33:20:33:28 | "http://" | main.rs:33:9:33:16 | protocol | provenance | |
-| main.rs:35:9:35:20 | insecure_url | main.rs:36:54:36:65 | insecure_url | provenance | |
-| main.rs:35:24:35:30 | res | main.rs:35:32:35:53 | { ... } | provenance | |
-| main.rs:35:32:35:53 | ...::format(...) | main.rs:35:24:35:30 | res | provenance | |
-| main.rs:35:32:35:53 | ...::must_use(...) | main.rs:35:9:35:20 | insecure_url | provenance | |
-| main.rs:35:32:35:53 | MacroExpr | main.rs:35:32:35:53 | ...::format(...) | provenance | MaD:2 |
-| main.rs:35:32:35:53 | { ... } | main.rs:35:32:35:53 | ...::must_use(...) | provenance | MaD:3 |
-| main.rs:36:53:36:65 | &insecure_url [&ref] | main.rs:36:30:36:51 | ...::get | provenance | MaD:1 Sink:MaD:1 |
-| main.rs:36:54:36:65 | insecure_url | main.rs:36:53:36:65 | &insecure_url [&ref] | provenance | |
-| main.rs:60:13:60:15 | url | main.rs:63:47:63:49 | url | provenance | |
-| main.rs:60:19:60:53 | "http://example.com/sensitive-... | main.rs:60:13:60:15 | url | provenance | |
-| main.rs:63:47:63:49 | url | main.rs:63:24:63:45 | ...::get | provenance | MaD:1 Sink:MaD:1 |
+| main.rs:14:45:14:73 | "http://api.example.com/data" | main.rs:14:22:14:43 | ...::get | provenance | MaD:1 Sink:MaD:1 |
+| main.rs:23:9:23:16 | base_url | main.rs:25:28:25:53 | MacroExpr | provenance | |
+| main.rs:23:20:23:39 | "http://example.com" | main.rs:23:9:23:16 | base_url | provenance | |
+| main.rs:25:9:25:16 | full_url | main.rs:26:45:26:52 | full_url | provenance | |
+| main.rs:25:20:25:26 | res | main.rs:25:28:25:53 | { ... } | provenance | |
+| main.rs:25:28:25:53 | ...::format(...) | main.rs:25:20:25:26 | res | provenance | |
+| main.rs:25:28:25:53 | ...::must_use(...) | main.rs:25:9:25:16 | full_url | provenance | |
+| main.rs:25:28:25:53 | MacroExpr | main.rs:25:28:25:53 | ...::format(...) | provenance | MaD:2 |
+| main.rs:25:28:25:53 | { ... } | main.rs:25:28:25:53 | ...::must_use(...) | provenance | MaD:3 |
+| main.rs:26:44:26:52 | &full_url [&ref] | main.rs:26:21:26:42 | ...::get | provenance | MaD:1 Sink:MaD:1 |
+| main.rs:26:45:26:52 | full_url | main.rs:26:44:26:52 | &full_url [&ref] | provenance | |
+| main.rs:34:9:34:16 | protocol | main.rs:36:32:36:53 | MacroExpr | provenance | |
+| main.rs:34:20:34:28 | "http://" | main.rs:34:9:34:16 | protocol | provenance | |
+| main.rs:36:9:36:20 | insecure_url | main.rs:37:54:37:65 | insecure_url | provenance | |
+| main.rs:36:24:36:30 | res | main.rs:36:32:36:53 | { ... } | provenance | |
+| main.rs:36:32:36:53 | ...::format(...) | main.rs:36:24:36:30 | res | provenance | |
+| main.rs:36:32:36:53 | ...::must_use(...) | main.rs:36:9:36:20 | insecure_url | provenance | |
+| main.rs:36:32:36:53 | MacroExpr | main.rs:36:32:36:53 | ...::format(...) | provenance | MaD:2 |
+| main.rs:36:32:36:53 | { ... } | main.rs:36:32:36:53 | ...::must_use(...) | provenance | MaD:3 |
+| main.rs:37:53:37:65 | &insecure_url [&ref] | main.rs:37:30:37:51 | ...::get | provenance | MaD:1 Sink:MaD:1 |
+| main.rs:37:54:37:65 | insecure_url | main.rs:37:53:37:65 | &insecure_url [&ref] | provenance | |
+| main.rs:53:42:53:68 | "http://172.31.255.255/bar" | main.rs:53:19:53:40 | ...::get | provenance | MaD:1 Sink:MaD:1 |
+| main.rs:60:43:60:65 | "http://172.32.0.0/baz" | main.rs:60:20:60:41 | ...::get | provenance | MaD:1 Sink:MaD:1 |
+| main.rs:68:13:68:15 | url | main.rs:71:47:71:49 | url | provenance | |
+| main.rs:68:19:68:53 | "http://example.com/sensitive-... | main.rs:68:13:68:15 | url | provenance | |
+| main.rs:71:47:71:49 | url | main.rs:71:24:71:45 | ...::get | provenance | MaD:1 Sink:MaD:1 |
models
| 1 | Sink: reqwest::blocking::get; Argument[0]; request-url |
| 2 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint |
@@ -37,32 +41,36 @@ models
nodes
| main.rs:12:22:12:43 | ...::get | semmle.label | ...::get |
| main.rs:12:45:12:68 | "http://example.com/api" | semmle.label | "http://example.com/api" |
-| main.rs:13:22:13:43 | ...::get | semmle.label | ...::get |
-| main.rs:13:45:13:73 | "http://api.example.com/data" | semmle.label | "http://api.example.com/data" |
-| main.rs:22:9:22:16 | base_url | semmle.label | base_url |
-| main.rs:22:20:22:39 | "http://example.com" | semmle.label | "http://example.com" |
-| main.rs:24:9:24:16 | full_url | semmle.label | full_url |
-| main.rs:24:20:24:26 | res | semmle.label | res |
-| main.rs:24:28:24:53 | ...::format(...) | semmle.label | ...::format(...) |
-| main.rs:24:28:24:53 | ...::must_use(...) | semmle.label | ...::must_use(...) |
-| main.rs:24:28:24:53 | MacroExpr | semmle.label | MacroExpr |
-| main.rs:24:28:24:53 | { ... } | semmle.label | { ... } |
-| main.rs:25:21:25:42 | ...::get | semmle.label | ...::get |
-| main.rs:25:44:25:52 | &full_url [&ref] | semmle.label | &full_url [&ref] |
-| main.rs:25:45:25:52 | full_url | semmle.label | full_url |
-| main.rs:33:9:33:16 | protocol | semmle.label | protocol |
-| main.rs:33:20:33:28 | "http://" | semmle.label | "http://" |
-| main.rs:35:9:35:20 | insecure_url | semmle.label | insecure_url |
-| main.rs:35:24:35:30 | res | semmle.label | res |
-| main.rs:35:32:35:53 | ...::format(...) | semmle.label | ...::format(...) |
-| main.rs:35:32:35:53 | ...::must_use(...) | semmle.label | ...::must_use(...) |
-| main.rs:35:32:35:53 | MacroExpr | semmle.label | MacroExpr |
-| main.rs:35:32:35:53 | { ... } | semmle.label | { ... } |
-| main.rs:36:30:36:51 | ...::get | semmle.label | ...::get |
-| main.rs:36:53:36:65 | &insecure_url [&ref] | semmle.label | &insecure_url [&ref] |
-| main.rs:36:54:36:65 | insecure_url | semmle.label | insecure_url |
-| main.rs:60:13:60:15 | url | semmle.label | url |
-| main.rs:60:19:60:53 | "http://example.com/sensitive-... | semmle.label | "http://example.com/sensitive-... |
-| main.rs:63:24:63:45 | ...::get | semmle.label | ...::get |
-| main.rs:63:47:63:49 | url | semmle.label | url |
+| main.rs:14:22:14:43 | ...::get | semmle.label | ...::get |
+| main.rs:14:45:14:73 | "http://api.example.com/data" | semmle.label | "http://api.example.com/data" |
+| main.rs:23:9:23:16 | base_url | semmle.label | base_url |
+| main.rs:23:20:23:39 | "http://example.com" | semmle.label | "http://example.com" |
+| main.rs:25:9:25:16 | full_url | semmle.label | full_url |
+| main.rs:25:20:25:26 | res | semmle.label | res |
+| main.rs:25:28:25:53 | ...::format(...) | semmle.label | ...::format(...) |
+| main.rs:25:28:25:53 | ...::must_use(...) | semmle.label | ...::must_use(...) |
+| main.rs:25:28:25:53 | MacroExpr | semmle.label | MacroExpr |
+| main.rs:25:28:25:53 | { ... } | semmle.label | { ... } |
+| main.rs:26:21:26:42 | ...::get | semmle.label | ...::get |
+| main.rs:26:44:26:52 | &full_url [&ref] | semmle.label | &full_url [&ref] |
+| main.rs:26:45:26:52 | full_url | semmle.label | full_url |
+| main.rs:34:9:34:16 | protocol | semmle.label | protocol |
+| main.rs:34:20:34:28 | "http://" | semmle.label | "http://" |
+| main.rs:36:9:36:20 | insecure_url | semmle.label | insecure_url |
+| main.rs:36:24:36:30 | res | semmle.label | res |
+| main.rs:36:32:36:53 | ...::format(...) | semmle.label | ...::format(...) |
+| main.rs:36:32:36:53 | ...::must_use(...) | semmle.label | ...::must_use(...) |
+| main.rs:36:32:36:53 | MacroExpr | semmle.label | MacroExpr |
+| main.rs:36:32:36:53 | { ... } | semmle.label | { ... } |
+| main.rs:37:30:37:51 | ...::get | semmle.label | ...::get |
+| main.rs:37:53:37:65 | &insecure_url [&ref] | semmle.label | &insecure_url [&ref] |
+| main.rs:37:54:37:65 | insecure_url | semmle.label | insecure_url |
+| main.rs:53:19:53:40 | ...::get | semmle.label | ...::get |
+| main.rs:53:42:53:68 | "http://172.31.255.255/bar" | semmle.label | "http://172.31.255.255/bar" |
+| main.rs:60:20:60:41 | ...::get | semmle.label | ...::get |
+| main.rs:60:43:60:65 | "http://172.32.0.0/baz" | semmle.label | "http://172.32.0.0/baz" |
+| main.rs:68:13:68:15 | url | semmle.label | url |
+| main.rs:68:19:68:53 | "http://example.com/sensitive-... | semmle.label | "http://example.com/sensitive-... |
+| main.rs:71:24:71:45 | ...::get | semmle.label | ...::get |
+| main.rs:71:47:71:49 | url | semmle.label | url |
subpaths
diff --git a/rust/ql/test/query-tests/security/CWE-319/main.rs b/rust/ql/test/query-tests/security/CWE-319/main.rs
index cec94840f29..0dd59ce0880 100644
--- a/rust/ql/test/query-tests/security/CWE-319/main.rs
+++ b/rust/ql/test/query-tests/security/CWE-319/main.rs
@@ -10,7 +10,8 @@ fn main() {
fn test_direct_literals() {
// BAD: Direct HTTP URLs that should be flagged
let _response1 = reqwest::blocking::get("http://example.com/api").unwrap(); // $ Alert[rust/non-https-url]
- let _response2 = reqwest::blocking::get("http://api.example.com/data").unwrap(); // $ Alert[rust/non-https-url]
+ let _response2 = reqwest::blocking::get("HTTP://EXAMPLE.COM/API").unwrap(); // $ MISSING: Alert[rust/non-https-url]
+ let _response3 = reqwest::blocking::get("http://api.example.com/data").unwrap(); // $ Alert[rust/non-https-url]
// GOOD: HTTPS URLs that should not be flagged
let _response3 = reqwest::blocking::get("https://example.com/api").unwrap();
@@ -44,13 +45,20 @@ fn test_dynamic_urls() {
fn test_localhost_exemptions() {
// GOOD: localhost URLs should not be flagged (local development)
let _local1 = reqwest::blocking::get("http://localhost:8080/api").unwrap();
- let _local2 = reqwest::blocking::get("http://127.0.0.1:3000/test").unwrap();
- let _local3 = reqwest::blocking::get("http://192.168.1.100/internal").unwrap();
- let _local4 = reqwest::blocking::get("http://10.0.0.1/admin").unwrap();
+ let _local2 = reqwest::blocking::get("HTTP://LOCALHOST:8080/api").unwrap();
+ let _local3 = reqwest::blocking::get("http://127.0.0.1:3000/test").unwrap();
+ let _local4 = reqwest::blocking::get("http://192.168.1.100/internal").unwrap();
+ let _local5 = reqwest::blocking::get("http://10.0.0.1/admin").unwrap();
+ let _local6 = reqwest::blocking::get("http://172.16.0.0/foo").unwrap();
+ let _local7 = reqwest::blocking::get("http://172.31.255.255/bar").unwrap(); // $ SPURIOUS: Alert[rust/non-https-url]
+
+ // GOOD: test IPv6 localhost variants
+ let _local8 = reqwest::blocking::get("http://[::1]:8080/api").unwrap();
+ let _local9 = reqwest::blocking::get("http://[0:0:0:0:0:0:0:1]/test").unwrap();
+
+ // BAD: non-private IP address
+ let _local10 = reqwest::blocking::get("http://172.32.0.0/baz").unwrap(); // $ Alert[rust/non-https-url]
- // Test IPv6 localhost variants
- let _local5 = reqwest::blocking::get("http://[::1]:8080/api").unwrap();
- let _local6 = reqwest::blocking::get("http://[0:0:0:0:0:0:0:1]/test").unwrap();
}
// Additional test cases that mirror the Bad/Good examples
From 0f5aa857b874b22bfb53b67b08be2336e14af351 Mon Sep 17 00:00:00 2001
From: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
Date: Tue, 16 Sep 2025 11:32:52 +0100
Subject: [PATCH 19/49] Rust: Remove unnecessary import.
---
rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll | 1 -
1 file changed, 1 deletion(-)
diff --git a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll
index 026880785b6..8001e6270dd 100644
--- a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll
+++ b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll
@@ -6,7 +6,6 @@
import rust
private import codeql.rust.dataflow.DataFlow
private import codeql.rust.dataflow.FlowSink
-private import codeql.rust.elements.LiteralExprExt
private import codeql.rust.Concepts
/**
From 80ce55ab1072fb534776fc7b02a93ca6a2b18ce2 Mon Sep 17 00:00:00 2001
From: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
Date: Tue, 16 Sep 2025 11:58:23 +0100
Subject: [PATCH 20/49] Rust: Make the private address spaces URL more
accurate.
---
rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll | 2 +-
rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected | 4 ----
rust/ql/test/query-tests/security/CWE-319/main.rs | 2 +-
3 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll
index 8001e6270dd..58466dd0a4f 100644
--- a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll
+++ b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll
@@ -38,7 +38,7 @@ module UseOfHttp {
exists(string s | this.getTextValue() = s |
// Match HTTP URLs that are not private/local
s.regexpMatch("\"http://.*\"") and
- not s.regexpMatch("\"http://(localhost|127\\.0\\.0\\.1|192\\.168\\.[0-9]+\\.[0-9]+|10\\.[0-9]+\\.[0-9]+\\.[0-9]+|172\\.16\\.[0-9]+\\.[0-9]+|\\[::1\\]|\\[0:0:0:0:0:0:0:1\\]).*\"")
+ not s.regexpMatch("\"http://(localhost|127\\.0\\.0\\.1|192\\.168\\.[0-9]+\\.[0-9]+|10\\.[0-9]+\\.[0-9]+\\.[0-9]+|172\\.(1[6-9]|2[0-9]|3[01])\\.[0-9]+|\\[::1\\]|\\[0:0:0:0:0:0:0:1\\]).*\"")
)
}
}
diff --git a/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
index 216d11b3606..ef99b001fcf 100644
--- a/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
+++ b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
@@ -3,7 +3,6 @@
| main.rs:14:22:14:43 | ...::get | main.rs:14:45:14:73 | "http://api.example.com/data" | main.rs:14:22:14:43 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:14:45:14:73 | "http://api.example.com/data" | this HTTP URL |
| main.rs:26:21:26:42 | ...::get | main.rs:23:20:23:39 | "http://example.com" | main.rs:26:21:26:42 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:23:20:23:39 | "http://example.com" | this HTTP URL |
| main.rs:37:30:37:51 | ...::get | main.rs:34:20:34:28 | "http://" | main.rs:37:30:37:51 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:34:20:34:28 | "http://" | this HTTP URL |
-| main.rs:53:19:53:40 | ...::get | main.rs:53:42:53:68 | "http://172.31.255.255/bar" | main.rs:53:19:53:40 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:53:42:53:68 | "http://172.31.255.255/bar" | this HTTP URL |
| main.rs:60:20:60:41 | ...::get | main.rs:60:43:60:65 | "http://172.32.0.0/baz" | main.rs:60:20:60:41 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:60:43:60:65 | "http://172.32.0.0/baz" | this HTTP URL |
| main.rs:71:24:71:45 | ...::get | main.rs:68:19:68:53 | "http://example.com/sensitive-... | main.rs:71:24:71:45 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:68:19:68:53 | "http://example.com/sensitive-... | this HTTP URL |
edges
@@ -29,7 +28,6 @@ edges
| main.rs:36:32:36:53 | { ... } | main.rs:36:32:36:53 | ...::must_use(...) | provenance | MaD:3 |
| main.rs:37:53:37:65 | &insecure_url [&ref] | main.rs:37:30:37:51 | ...::get | provenance | MaD:1 Sink:MaD:1 |
| main.rs:37:54:37:65 | insecure_url | main.rs:37:53:37:65 | &insecure_url [&ref] | provenance | |
-| main.rs:53:42:53:68 | "http://172.31.255.255/bar" | main.rs:53:19:53:40 | ...::get | provenance | MaD:1 Sink:MaD:1 |
| main.rs:60:43:60:65 | "http://172.32.0.0/baz" | main.rs:60:20:60:41 | ...::get | provenance | MaD:1 Sink:MaD:1 |
| main.rs:68:13:68:15 | url | main.rs:71:47:71:49 | url | provenance | |
| main.rs:68:19:68:53 | "http://example.com/sensitive-... | main.rs:68:13:68:15 | url | provenance | |
@@ -65,8 +63,6 @@ nodes
| main.rs:37:30:37:51 | ...::get | semmle.label | ...::get |
| main.rs:37:53:37:65 | &insecure_url [&ref] | semmle.label | &insecure_url [&ref] |
| main.rs:37:54:37:65 | insecure_url | semmle.label | insecure_url |
-| main.rs:53:19:53:40 | ...::get | semmle.label | ...::get |
-| main.rs:53:42:53:68 | "http://172.31.255.255/bar" | semmle.label | "http://172.31.255.255/bar" |
| main.rs:60:20:60:41 | ...::get | semmle.label | ...::get |
| main.rs:60:43:60:65 | "http://172.32.0.0/baz" | semmle.label | "http://172.32.0.0/baz" |
| main.rs:68:13:68:15 | url | semmle.label | url |
diff --git a/rust/ql/test/query-tests/security/CWE-319/main.rs b/rust/ql/test/query-tests/security/CWE-319/main.rs
index 0dd59ce0880..908e6c61c2c 100644
--- a/rust/ql/test/query-tests/security/CWE-319/main.rs
+++ b/rust/ql/test/query-tests/security/CWE-319/main.rs
@@ -50,7 +50,7 @@ fn test_localhost_exemptions() {
let _local4 = reqwest::blocking::get("http://192.168.1.100/internal").unwrap();
let _local5 = reqwest::blocking::get("http://10.0.0.1/admin").unwrap();
let _local6 = reqwest::blocking::get("http://172.16.0.0/foo").unwrap();
- let _local7 = reqwest::blocking::get("http://172.31.255.255/bar").unwrap(); // $ SPURIOUS: Alert[rust/non-https-url]
+ let _local7 = reqwest::blocking::get("http://172.31.255.255/bar").unwrap();
// GOOD: test IPv6 localhost variants
let _local8 = reqwest::blocking::get("http://[::1]:8080/api").unwrap();
From 4b281fdf12fb8a64cd194aee324ded70855b4695 Mon Sep 17 00:00:00 2001
From: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
Date: Tue, 16 Sep 2025 13:02:54 +0100
Subject: [PATCH 21/49] Rust: Use case insensitive regexps.
---
rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll | 4 ++--
rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected | 4 ++++
rust/ql/test/query-tests/security/CWE-319/main.rs | 2 +-
3 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll
index 58466dd0a4f..5e0d534fb7d 100644
--- a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll
+++ b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll
@@ -37,8 +37,8 @@ module UseOfHttp {
HttpStringLiteral() {
exists(string s | this.getTextValue() = s |
// Match HTTP URLs that are not private/local
- s.regexpMatch("\"http://.*\"") and
- not s.regexpMatch("\"http://(localhost|127\\.0\\.0\\.1|192\\.168\\.[0-9]+\\.[0-9]+|10\\.[0-9]+\\.[0-9]+\\.[0-9]+|172\\.(1[6-9]|2[0-9]|3[01])\\.[0-9]+|\\[::1\\]|\\[0:0:0:0:0:0:0:1\\]).*\"")
+ s.regexpMatch("(?i)\"http://.*\"") and
+ not s.regexpMatch("(?i)\"http://(localhost|127\\.0\\.0\\.1|192\\.168\\.[0-9]+\\.[0-9]+|10\\.[0-9]+\\.[0-9]+\\.[0-9]+|172\\.(1[6-9]|2[0-9]|3[01])\\.[0-9]+|\\[::1\\]|\\[0:0:0:0:0:0:0:1\\]).*\"")
)
}
}
diff --git a/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
index ef99b001fcf..952bd741d1c 100644
--- a/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
+++ b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected
@@ -1,5 +1,6 @@
#select
| main.rs:12:22:12:43 | ...::get | main.rs:12:45:12:68 | "http://example.com/api" | main.rs:12:22:12:43 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:12:45:12:68 | "http://example.com/api" | this HTTP URL |
+| main.rs:13:22:13:43 | ...::get | main.rs:13:45:13:68 | "HTTP://EXAMPLE.COM/API" | main.rs:13:22:13:43 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:13:45:13:68 | "HTTP://EXAMPLE.COM/API" | this HTTP URL |
| main.rs:14:22:14:43 | ...::get | main.rs:14:45:14:73 | "http://api.example.com/data" | main.rs:14:22:14:43 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:14:45:14:73 | "http://api.example.com/data" | this HTTP URL |
| main.rs:26:21:26:42 | ...::get | main.rs:23:20:23:39 | "http://example.com" | main.rs:26:21:26:42 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:23:20:23:39 | "http://example.com" | this HTTP URL |
| main.rs:37:30:37:51 | ...::get | main.rs:34:20:34:28 | "http://" | main.rs:37:30:37:51 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:34:20:34:28 | "http://" | this HTTP URL |
@@ -7,6 +8,7 @@
| main.rs:71:24:71:45 | ...::get | main.rs:68:19:68:53 | "http://example.com/sensitive-... | main.rs:71:24:71:45 | ...::get | This URL may be constructed with the HTTP protocol, from $@. | main.rs:68:19:68:53 | "http://example.com/sensitive-... | this HTTP URL |
edges
| main.rs:12:45:12:68 | "http://example.com/api" | main.rs:12:22:12:43 | ...::get | provenance | MaD:1 Sink:MaD:1 |
+| main.rs:13:45:13:68 | "HTTP://EXAMPLE.COM/API" | main.rs:13:22:13:43 | ...::get | provenance | MaD:1 Sink:MaD:1 |
| main.rs:14:45:14:73 | "http://api.example.com/data" | main.rs:14:22:14:43 | ...::get | provenance | MaD:1 Sink:MaD:1 |
| main.rs:23:9:23:16 | base_url | main.rs:25:28:25:53 | MacroExpr | provenance | |
| main.rs:23:20:23:39 | "http://example.com" | main.rs:23:9:23:16 | base_url | provenance | |
@@ -39,6 +41,8 @@ models
nodes
| main.rs:12:22:12:43 | ...::get | semmle.label | ...::get |
| main.rs:12:45:12:68 | "http://example.com/api" | semmle.label | "http://example.com/api" |
+| main.rs:13:22:13:43 | ...::get | semmle.label | ...::get |
+| main.rs:13:45:13:68 | "HTTP://EXAMPLE.COM/API" | semmle.label | "HTTP://EXAMPLE.COM/API" |
| main.rs:14:22:14:43 | ...::get | semmle.label | ...::get |
| main.rs:14:45:14:73 | "http://api.example.com/data" | semmle.label | "http://api.example.com/data" |
| main.rs:23:9:23:16 | base_url | semmle.label | base_url |
diff --git a/rust/ql/test/query-tests/security/CWE-319/main.rs b/rust/ql/test/query-tests/security/CWE-319/main.rs
index 908e6c61c2c..0a3539923da 100644
--- a/rust/ql/test/query-tests/security/CWE-319/main.rs
+++ b/rust/ql/test/query-tests/security/CWE-319/main.rs
@@ -10,7 +10,7 @@ fn main() {
fn test_direct_literals() {
// BAD: Direct HTTP URLs that should be flagged
let _response1 = reqwest::blocking::get("http://example.com/api").unwrap(); // $ Alert[rust/non-https-url]
- let _response2 = reqwest::blocking::get("HTTP://EXAMPLE.COM/API").unwrap(); // $ MISSING: Alert[rust/non-https-url]
+ let _response2 = reqwest::blocking::get("HTTP://EXAMPLE.COM/API").unwrap(); // $ Alert[rust/non-https-url]
let _response3 = reqwest::blocking::get("http://api.example.com/data").unwrap(); // $ Alert[rust/non-https-url]
// GOOD: HTTPS URLs that should not be flagged
From 0eb602aad2991216268e79bbe5db05472f2156c0 Mon Sep 17 00:00:00 2001
From: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
Date: Tue, 16 Sep 2025 14:00:43 +0100
Subject: [PATCH 22/49] Rust: Update a redirected URL.
---
.../src/queries/security/CWE-319/UseOfHttp.qhelp | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp b/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp
index a8ca1d9c7c7..a1345b189bb 100644
--- a/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp
+++ b/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp
@@ -6,21 +6,21 @@
Constructing URLs with the HTTP protocol can lead to unsecured connections.
-Furthermore, constructing URLs with the HTTP protocol can create problems if other parts of the
-code expect HTTPS URLs. A typical pattern is to use libraries that expect secure connections,
+
Furthermore, constructing URLs with the HTTP protocol can create problems if other parts of the
+code expect HTTPS URLs. A typical pattern is to use libraries that expect secure connections,
which may fail or fall back to insecure behavior when provided with HTTP URLs instead of HTTPS URLs.
-When you construct a URL for network requests, ensure that you use an HTTPS URL rather than an HTTP URL.
+
When you construct a URL for network requests, ensure that you use an HTTPS URL rather than an HTTP URL.
Then, any connections that are made using that URL are secure SSL/TLS connections.
-The following example shows two ways of making a network request using a URL. When the request is
-made using an HTTP URL rather than an HTTPS URL, the connection is unsecured and can be intercepted
+
The following example shows two ways of making a network request using a URL. When the request is
+made using an HTTP URL rather than an HTTPS URL, the connection is unsecured and can be intercepted
by attackers. When the request is made using an HTTPS URL, the connection is a secure SSL/TLS connection.
@@ -34,15 +34,15 @@ by attackers. When the request is made using an HTTPS URL, the connection is a s
OWASP:
-Transport Layer Protection Cheat Sheet.
+Transport Layer Security Cheat Sheet.
OWASP Top 10:
A08:2021 - Software and Data Integrity Failures.
-Rust reqwest documentation:
+Rust reqwest documentation:
reqwest crate.
-
\ No newline at end of file
+
From 31bf86fd1bcb60946c038d1329f132647bc60288 Mon Sep 17 00:00:00 2001
From: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
Date: Tue, 16 Sep 2025 14:04:47 +0100
Subject: [PATCH 23/49] Rust: Improve the flow around the qhelp example.
---
rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp b/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp
index a1345b189bb..e4e0fc5eaa9 100644
--- a/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp
+++ b/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp
@@ -19,13 +19,14 @@ Then, any connections that are made using that URL are secure SSL/TLS connection
-The following example shows two ways of making a network request using a URL. When the request is
+
The following examples show two ways of making a network request using a URL. When the request is
made using an HTTP URL rather than an HTTPS URL, the connection is unsecured and can be intercepted
-by attackers. When the request is made using an HTTPS URL, the connection is a secure SSL/TLS connection.
+by attackers:
-A better approach is to use HTTPS:
+A better approach is to use HTTPS. When the request is made using an HTTPS URL, the connection
+is a secure SSL/TLS connection:
From 220197484489f80467cee4cfcb3e975ed018d0d2 Mon Sep 17 00:00:00 2001
From: Alex Eyers-Taylor
Date: Thu, 21 Aug 2025 19:48:21 +0100
Subject: [PATCH 24/49] Jave: Use force local to make parsing local after
global regex finding.
---
.../semmle/code/java/regex/RegexFlowConfigs.qll | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/java/ql/lib/semmle/code/java/regex/RegexFlowConfigs.qll b/java/ql/lib/semmle/code/java/regex/RegexFlowConfigs.qll
index 6a934bdd578..929fa2d6c91 100644
--- a/java/ql/lib/semmle/code/java/regex/RegexFlowConfigs.qll
+++ b/java/ql/lib/semmle/code/java/regex/RegexFlowConfigs.qll
@@ -163,6 +163,12 @@ private module RegexFlowConfig implements DataFlow::ConfigSig {
private module RegexFlow = DataFlow::Global;
+private predicate usedAsRegexImpl(StringLiteral regex, string mode, boolean match_full_string) {
+ RegexFlow::flow(DataFlow::exprNode(regex), _) and
+ mode = "None" and // TODO: proper mode detection
+ (if matchesFullString(regex) then match_full_string = true else match_full_string = false)
+}
+
/**
* Holds if `regex` is used as a regex, with the mode `mode` (if known).
* If regex mode is not known, `mode` will be `"None"`.
@@ -170,11 +176,9 @@ private module RegexFlow = DataFlow::Global;
* As an optimisation, only regexes containing an infinite repitition quatifier (`+`, `*`, or `{x,}`)
* and therefore may be relevant for ReDoS queries are considered.
*/
-predicate usedAsRegex(StringLiteral regex, string mode, boolean match_full_string) {
- RegexFlow::flow(DataFlow::exprNode(regex), _) and
- mode = "None" and // TODO: proper mode detection
- (if matchesFullString(regex) then match_full_string = true else match_full_string = false)
-}
+overlay[local]
+predicate usedAsRegex(StringLiteral regex, string mode, boolean match_full_string) =
+ forceLocal(usedAsRegexImpl/3)(regex, mode, match_full_string)
/**
* Holds if `regex` is used as a regular expression that is matched against a full string,
From 6f1fcbf41bf7484025a208af19a19630dc3a4df9 Mon Sep 17 00:00:00 2001
From: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
Date: Tue, 16 Sep 2025 17:08:22 +0100
Subject: [PATCH 25/49] Rust: Add IPv6 private address range (and explanatory
comments).
---
rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll
index 5e0d534fb7d..bd91cde238f 100644
--- a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll
+++ b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll
@@ -36,9 +36,12 @@ module UseOfHttp {
class HttpStringLiteral extends StringLiteralExpr {
HttpStringLiteral() {
exists(string s | this.getTextValue() = s |
- // Match HTTP URLs that are not private/local
+ // match HTTP URLs
s.regexpMatch("(?i)\"http://.*\"") and
- not s.regexpMatch("(?i)\"http://(localhost|127\\.0\\.0\\.1|192\\.168\\.[0-9]+\\.[0-9]+|10\\.[0-9]+\\.[0-9]+\\.[0-9]+|172\\.(1[6-9]|2[0-9]|3[01])\\.[0-9]+|\\[::1\\]|\\[0:0:0:0:0:0:0:1\\]).*\"")
+ // exclude private/local addresses:
+ // - IPv4: localhost / 127.0.0.1, 192.168.x.x, 10.x.x.x, 172.16.x.x -> 172.31.x.x
+ // - IPv6 (address inside []): ::1 (or 0:0:0:0:0:0:0:1), fc00::/7 (i.e. anything beginning `fcxx:` or `fdxx:`)
+ not s.regexpMatch("(?i)\"http://(localhost|127\\.0\\.0\\.1|192\\.168\\.[0-9]+\\.[0-9]+|10\\.[0-9]+\\.[0-9]+\\.[0-9]+|172\\.(1[6-9]|2[0-9]|3[01])\\.[0-9]+|\\[::1\\]|\\[0:0:0:0:0:0:0:1\\]|\\[f[cd][0-9a-f]{2}:.*\\]).*\"")
)
}
}
From 1bccf42556fa214a6e7d44e3f0322cc09d008b09 Mon Sep 17 00:00:00 2001
From: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
Date: Wed, 17 Sep 2025 13:59:54 +0100
Subject: [PATCH 26/49] Rust: Update test results following fix on main.
---
.../library-tests/dataflow/local/DataFlowStep.expected | 5 +++--
.../library-tests/dataflow/local/inline-flow.expected | 8 ++++++++
rust/ql/test/library-tests/dataflow/local/main.rs | 2 +-
3 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected
index 0af30149e74..b2fc845081c 100644
--- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected
+++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected
@@ -111,11 +111,12 @@ localStep
| main.rs:77:9:77:9 | k | main.rs:77:5:77:5 | j |
| main.rs:77:9:77:9 | k | main.rs:79:10:79:10 | k |
| main.rs:81:9:81:13 | mut l | main.rs:81:13:81:13 | l |
+| main.rs:81:13:81:13 | [SSA] l | main.rs:82:9:82:9 | l |
+| main.rs:81:13:81:13 | l | main.rs:81:13:81:13 | [SSA] l |
| main.rs:81:17:81:25 | source(...) | main.rs:81:9:81:13 | mut l |
-| main.rs:82:5:82:5 | [SSA] l | main.rs:82:9:82:9 | l |
+| main.rs:82:5:82:5 | [SSA] l | main.rs:83:10:83:10 | l |
| main.rs:82:5:82:5 | l | main.rs:82:5:82:5 | [SSA] l |
| main.rs:82:9:82:9 | l | main.rs:82:5:82:5 | l |
-| main.rs:82:9:82:9 | l | main.rs:83:10:83:10 | l |
| main.rs:87:9:87:9 | [SSA] a | main.rs:88:5:88:5 | a |
| main.rs:87:9:87:9 | a | main.rs:87:9:87:9 | [SSA] a |
| main.rs:87:9:87:9 | a | main.rs:87:9:87:9 | a |
diff --git a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected
index eafe3a7452e..00640ed9aa4 100644
--- a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected
+++ b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected
@@ -31,6 +31,9 @@ edges
| main.rs:76:9:76:9 | k | main.rs:79:10:79:10 | k | provenance | |
| main.rs:76:13:76:21 | source(...) | main.rs:76:9:76:9 | k | provenance | |
| main.rs:77:5:77:5 | j | main.rs:78:10:78:10 | j | provenance | |
+| main.rs:81:9:81:13 | mut l | main.rs:82:5:82:5 | l | provenance | |
+| main.rs:81:17:81:25 | source(...) | main.rs:81:9:81:13 | mut l | provenance | |
+| main.rs:82:5:82:5 | l | main.rs:83:10:83:10 | l | provenance | |
| main.rs:115:9:115:9 | i [&ref] | main.rs:116:11:116:11 | i [&ref] | provenance | |
| main.rs:115:13:115:31 | ...::new(...) [&ref] | main.rs:115:9:115:9 | i [&ref] | provenance | |
| main.rs:115:22:115:30 | source(...) | main.rs:115:13:115:31 | ...::new(...) [&ref] | provenance | MaD:1 |
@@ -279,6 +282,10 @@ nodes
| main.rs:77:5:77:5 | j | semmle.label | j |
| main.rs:78:10:78:10 | j | semmle.label | j |
| main.rs:79:10:79:10 | k | semmle.label | k |
+| main.rs:81:9:81:13 | mut l | semmle.label | mut l |
+| main.rs:81:17:81:25 | source(...) | semmle.label | source(...) |
+| main.rs:82:5:82:5 | l | semmle.label | l |
+| main.rs:83:10:83:10 | l | semmle.label | l |
| main.rs:115:9:115:9 | i [&ref] | semmle.label | i [&ref] |
| main.rs:115:13:115:31 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] |
| main.rs:115:22:115:30 | source(...) | semmle.label | source(...) |
@@ -553,6 +560,7 @@ testFailures
| main.rs:71:10:71:10 | i | main.rs:70:9:70:17 | source(...) | main.rs:71:10:71:10 | i | $@ | main.rs:70:9:70:17 | source(...) | source(...) |
| main.rs:78:10:78:10 | j | main.rs:76:13:76:21 | source(...) | main.rs:78:10:78:10 | j | $@ | main.rs:76:13:76:21 | source(...) | source(...) |
| main.rs:79:10:79:10 | k | main.rs:76:13:76:21 | source(...) | main.rs:79:10:79:10 | k | $@ | main.rs:76:13:76:21 | source(...) | source(...) |
+| main.rs:83:10:83:10 | l | main.rs:81:17:81:25 | source(...) | main.rs:83:10:83:10 | l | $@ | main.rs:81:17:81:25 | source(...) | source(...) |
| main.rs:116:10:116:11 | * ... | main.rs:115:22:115:30 | source(...) | main.rs:116:10:116:11 | * ... | $@ | main.rs:115:22:115:30 | source(...) | source(...) |
| main.rs:124:10:124:12 | a.0 | main.rs:123:14:123:22 | source(...) | main.rs:124:10:124:12 | a.0 | $@ | main.rs:123:14:123:22 | source(...) | source(...) |
| main.rs:132:10:132:11 | a1 | main.rs:129:17:129:26 | source(...) | main.rs:132:10:132:11 | a1 | $@ | main.rs:129:17:129:26 | source(...) | source(...) |
diff --git a/rust/ql/test/library-tests/dataflow/local/main.rs b/rust/ql/test/library-tests/dataflow/local/main.rs
index d352eb0cbf1..7cab42da52b 100644
--- a/rust/ql/test/library-tests/dataflow/local/main.rs
+++ b/rust/ql/test/library-tests/dataflow/local/main.rs
@@ -80,7 +80,7 @@ fn assignment() {
let mut l = source(8);
l = l;
- sink(l); // $ MISSING: hasValueFlow=8
+ sink(l); // $ hasValueFlow=8
}
fn block_expression1() -> i64 {
From d5a238768c6c232620dbc8912fd2e60f62029668 Mon Sep 17 00:00:00 2001
From: Anders Schack-Mulligen
Date: Wed, 17 Sep 2025 16:37:23 +0200
Subject: [PATCH 27/49] Shared/Cfg: Fix missing JoinBlockPredecessor.
---
shared/controlflow/codeql/controlflow/Cfg.qll | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/shared/controlflow/codeql/controlflow/Cfg.qll b/shared/controlflow/codeql/controlflow/Cfg.qll
index 4945c8da9cf..9e094385405 100644
--- a/shared/controlflow/codeql/controlflow/Cfg.qll
+++ b/shared/controlflow/codeql/controlflow/Cfg.qll
@@ -1020,6 +1020,12 @@ module MakeWithSplitting<
not jbp instanceof BasicBlocks::EntryBasicBlock and
id = idOfAstNode(jbp.getFirstNode().(AstCfgNode).getAstNode()) and
kind = 1
+ or
+ exists(AnnotatedExitNode aen |
+ jbp.getFirstNode() = aen and
+ id = idOfCfgScope(aen.getScope()) and
+ if aen.isNormal() then kind = 2 else kind = 3
+ )
}
string getSplitString(BasicBlocks::JoinPredecessorBasicBlock jbp) {
From 34b40a14e876481909726ce811663a9683d1d62a Mon Sep 17 00:00:00 2001
From: Alex Eyers-Taylor
Date: Wed, 17 Sep 2025 16:22:22 +0100
Subject: [PATCH 28/49] Java: Make a TC overlay caller.
---
java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll | 1 +
1 file changed, 1 insertion(+)
diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll
index 4b436edc6aa..23e9f680c97 100644
--- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll
+++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll
@@ -83,6 +83,7 @@ overlay[caller?]
pragma[inline]
predicate localFlow(Node node1, Node node2) { node1 = node2 or localFlowStepPlus(node1, node2) }
+overlay[caller?]
private predicate localFlowStepPlus(Node node1, Node node2) = fastTC(localFlowStep/2)(node1, node2)
/**
From aba2cb487e7ef76dee681c2af85f789091e09670 Mon Sep 17 00:00:00 2001
From: Tom Hvitved
Date: Wed, 17 Sep 2025 20:27:10 +0200
Subject: [PATCH 29/49] Rust: Convert data flow test to `@kind path-problem`
---
.../dataflow/sources/InlineFlow.expected | 1779 +++++++++++++++++
.../dataflow/sources/InlineFlow.ql | 9 +
2 files changed, 1788 insertions(+)
diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected
index e69de29bb2d..88a728253d8 100644
--- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected
+++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected
@@ -0,0 +1,1779 @@
+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 |
+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: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: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: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: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 | |
+| test.rs:30:20:30:23 | args [element] | test.rs:30:20:30:26 | args[0] | provenance | |
+| test.rs:30:20:30:26 | args[0] | test.rs:30:19:30:26 | &... [&ref] | provenance | |
+| test.rs:31:9:31:12 | arg1 [&ref] | test.rs:37:10:37:13 | arg1 | provenance | |
+| test.rs:31:16:31:23 | &... [&ref] | test.rs:31:9:31:12 | arg1 [&ref] | provenance | |
+| 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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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 | |
+| test.rs:82:29:82:50 | await ... [Ok, Some] | test.rs:82:29:82:51 | TryExpr [Some] | provenance | |
+| test.rs:82:29:82:51 | TryExpr [Some] | test.rs:82:15:82:25 | Some(...) [Some] | provenance | |
+| test.rs:114:13:114:20 | response | test.rs:115:15:115:22 | response | provenance | |
+| test.rs:114:13:114:20 | response | test.rs:116:14:116:21 | response | provenance | |
+| 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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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 | |
+| test.rs:338:18:338:38 | await ... [Ok] | test.rs:338:18:338:39 | TryExpr | provenance | |
+| test.rs:338:18:338:39 | TryExpr | test.rs:338:13:338:14 | v1 | provenance | |
+| test.rs:339:13:339:14 | v2 | test.rs:343:14:343:15 | v2 | provenance | |
+| test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | test.rs:339:18:339:39 | await ... [Ok] | provenance | |
+| test.rs:339:18:339:39 | await ... [Ok] | test.rs:339:18:339:40 | TryExpr | provenance | |
+| test.rs:339:18:339:40 | TryExpr | test.rs:339:13:339:14 | v2 | provenance | |
+| test.rs:340:13:340:14 | v3 | test.rs:344:14:344:15 | v3 | provenance | |
+| test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | test.rs:340:18:340:39 | await ... [Ok] | provenance | |
+| test.rs:340:18:340:39 | await ... [Ok] | test.rs:340:18:340:40 | TryExpr | provenance | |
+| test.rs:340:18:340:40 | TryExpr | test.rs:340:13:340:14 | v3 | provenance | |
+| test.rs:341:13:341:14 | v4 | test.rs:345:14:345:15 | v4 | provenance | |
+| 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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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 | |
+| test.rs:507:32:507:42 | [post] &mut buffer [&ref] | test.rs:507:37:507:42 | [post] buffer | provenance | |
+| test.rs:507:37:507:42 | [post] buffer | test.rs:508:15:508:20 | buffer | provenance | |
+| test.rs:508:15:508:20 | buffer | test.rs:508:14:508:20 | &buffer | provenance | |
+| test.rs:513:39:513:49 | [post] &mut buffer | test.rs:514:15:514:20 | buffer | provenance | |
+| test.rs:513:39:513:49 | [post] &mut buffer [&ref] | test.rs:513:44:513:49 | [post] buffer | provenance | |
+| test.rs:513:44:513:49 | [post] buffer | test.rs:514:15:514:20 | buffer | provenance | |
+| test.rs:514:15:514:20 | buffer | test.rs:514:14:514:20 | &buffer | provenance | |
+| test.rs:519:42:519:52 | [post] &mut buffer | test.rs:520:15:520:20 | buffer | provenance | |
+| test.rs:519:42:519:52 | [post] &mut buffer [&ref] | test.rs:519:47:519:52 | [post] buffer | provenance | |
+| test.rs:519:47:519:52 | [post] buffer | test.rs:520:15:520:20 | buffer | provenance | |
+| test.rs:520:15:520:20 | buffer | test.rs:520:14:520:20 | &buffer | provenance | |
+| test.rs:525:25:525:35 | [post] &mut buffer [&ref] | test.rs:525:30:525:35 | [post] buffer | provenance | |
+| 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: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: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: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: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: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: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: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: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: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: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: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: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: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 | |
+| test.rs:585:32:585:42 | [post] &mut buffer [&ref] | test.rs:585:37:585:42 | [post] buffer | provenance | |
+| test.rs:585:37:585:42 | [post] buffer | test.rs:586:15:586:20 | buffer | provenance | |
+| test.rs:586:15:586:20 | buffer | test.rs:586:14:586:20 | &buffer | provenance | |
+| test.rs:591:39:591:49 | [post] &mut buffer [&ref] | test.rs:591:44:591:49 | [post] buffer | provenance | |
+| test.rs:591:44:591:49 | [post] buffer | test.rs:592:15:592:20 | buffer | provenance | |
+| test.rs:592:15:592:20 | buffer | test.rs:592:14:592:20 | &buffer | provenance | |
+| test.rs:597:42:597:52 | [post] &mut buffer [&ref] | test.rs:597:47:597:52 | [post] buffer | provenance | |
+| test.rs:597:47:597:52 | [post] buffer | test.rs:598:15:598:20 | buffer | provenance | |
+| test.rs:598:15:598:20 | buffer | test.rs:598:14:598:20 | &buffer | provenance | |
+| test.rs:603:25:603:35 | [post] &mut buffer [&ref] | test.rs:603:30:603:35 | [post] buffer | provenance | |
+| test.rs:603:30:603:35 | [post] buffer | test.rs:604:15:604:20 | buffer | provenance | |
+| test.rs:604:15:604:20 | buffer | test.rs:604:14:604:20 | &buffer | provenance | |
+| test.rs:608:13:608:14 | v1 | test.rs:612:14:612:15 | v1 | provenance | |
+| test.rs:608:18:608:31 | file.read_u8() [future, Ok] | test.rs:608:18:608:37 | await ... [Ok] | provenance | |
+| test.rs:608:18:608:37 | await ... [Ok] | test.rs:608:18:608:38 | TryExpr | provenance | |
+| test.rs:608:18:608:38 | TryExpr | test.rs:608:13:608:14 | v1 | provenance | |
+| test.rs:609:13:609:14 | v2 | test.rs:613:14:613:15 | v2 | provenance | |
+| test.rs:609:18:609:32 | file.read_i16() [future, Ok] | test.rs:609:18:609:38 | await ... [Ok] | provenance | |
+| test.rs:609:18:609:38 | await ... [Ok] | test.rs:609:18:609:39 | TryExpr | provenance | |
+| test.rs:609:18:609:39 | TryExpr | test.rs:609:13:609:14 | v2 | provenance | |
+| test.rs:610:13:610:14 | v3 | test.rs:614:14:614:15 | v3 | provenance | |
+| test.rs:610:18:610:32 | file.read_f32() [future, Ok] | test.rs:610:18:610:38 | await ... [Ok] | provenance | |
+| test.rs:610:18:610:38 | await ... [Ok] | test.rs:610:18:610:39 | TryExpr | provenance | |
+| test.rs:610:18:610:39 | TryExpr | test.rs:610:13:610:14 | v3 | provenance | |
+| test.rs:611:13:611:14 | v4 | test.rs:615:14:615:15 | v4 | provenance | |
+| test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | test.rs:611:18:611:41 | await ... [Ok] | provenance | |
+| test.rs:611:18:611:41 | await ... [Ok] | test.rs:611:18:611:42 | TryExpr | provenance | |
+| test.rs:611:18:611:42 | TryExpr | test.rs:611:13:611:14 | v4 | provenance | |
+| 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: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: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: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 | |
+| test.rs:695:34:695:39 | [post] buffer | test.rs:698:15:698:20 | buffer | provenance | |
+| 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: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: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: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: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 | |
+| test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | test.rs:767:40:767:46 | [post] buffer1 | provenance | |
+| test.rs:767:40:767:46 | [post] buffer1 | test.rs:774:15:774:21 | buffer1 | provenance | |
+| test.rs:767:40:767:46 | [post] buffer1 | test.rs:775:14:775:23 | buffer1[0] | provenance | |
+| test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | test.rs:771:41:771:47 | [post] buffer2 | provenance | |
+| test.rs:771:41:771:47 | [post] buffer2 | test.rs:778:15:778:21 | buffer2 | provenance | |
+| test.rs:771:41:771:47 | [post] buffer2 | test.rs:779:14:779:23 | buffer2[0] | provenance | |
+| test.rs:774:15:774:21 | buffer1 | test.rs:774:14:774:21 | &buffer1 | provenance | |
+| test.rs:778:15:778:21 | buffer2 | test.rs:778:14:778:21 | &buffer2 | provenance | |
+| test.rs:787:41:787:51 | [post] &mut buffer [&ref] | test.rs:787:46:787:51 | [post] buffer | provenance | |
+| test.rs:787:46:787:51 | [post] buffer | test.rs:794:27:794:32 | buffer | provenance | |
+| test.rs:794:27:794:32 | buffer | test.rs:794:26:794:32 | &buffer | provenance | |
+| test.rs:810:45:810:55 | [post] &mut buffer [&ref] | test.rs:810:50:810:55 | [post] buffer | provenance | |
+| test.rs:810:50:810:55 | [post] buffer | test.rs:817:27:817:32 | buffer | provenance | |
+| 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: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 | |
+| test_futures_io.rs:20:11:20:13 | tcp | test_futures_io.rs:20:10:20:13 | &tcp | provenance | |
+| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:27:11:27:16 | reader | provenance | |
+| 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: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: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 | |
+| test_futures_io.rs:32:13:32:22 | mut pinned [Pin, &ref] | test_futures_io.rs:33:15:33:20 | pinned [Pin, &ref] | provenance | |
+| 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: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: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: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: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: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: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: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: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: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: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 [&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 [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: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 | |
+| test_futures_io.rs:60:15:60:20 | pinned [Pin, &ref] | test_futures_io.rs:60:14:60:20 | &pinned | provenance | |
+| test_futures_io.rs:62:13:62:18 | buffer [Ready, Ok] | test_futures_io.rs:63:16:63:35 | ...::Ready(...) [Ready, Ok] | provenance | |
+| test_futures_io.rs:62:13:62:18 | buffer [Ready, Ok] | test_futures_io.rs:64:19:64:24 | buffer [Ready, Ok] | provenance | |
+| test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | test_futures_io.rs:62:13:62:18 | buffer [Ready, Ok] | provenance | |
+| test_futures_io.rs:63:16:63:35 | ...::Ready(...) [Ready, Ok] | test_futures_io.rs:63:28:63:34 | Ok(...) [Ok] | provenance | |
+| test_futures_io.rs:63:28:63:34 | Ok(...) [Ok] | test_futures_io.rs:63:31:63:33 | buf | provenance | |
+| 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: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: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 | |
+| test_futures_io.rs:71:13:71:32 | ...::Ready(...) [Ready, Ok] | test_futures_io.rs:71:25:71:31 | Ok(...) [Ok] | provenance | |
+| test_futures_io.rs:71:25:71:31 | Ok(...) [Ok] | test_futures_io.rs:71:28:71:30 | buf | provenance | |
+| test_futures_io.rs:71:28:71:30 | buf | test_futures_io.rs:73:22:73:24 | buf | provenance | |
+| test_futures_io.rs:72:23:72:29 | buffer2 [Ready, Ok] | test_futures_io.rs:72:22:72:29 | &buffer2 | provenance | |
+| test_futures_io.rs:83:13:83:18 | buffer | test_futures_io.rs:84:14:84:19 | buffer | provenance | |
+| test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | test_futures_io.rs:83:22:83:45 | await ... [Ok] | provenance | |
+| test_futures_io.rs:83:22:83:45 | await ... [Ok] | test_futures_io.rs:83:22:83:46 | TryExpr | provenance | |
+| test_futures_io.rs:83:22:83:46 | TryExpr | test_futures_io.rs:83:13:83:18 | buffer | provenance | |
+| test_futures_io.rs:90:13:90:22 | mut pinned | test_futures_io.rs:91:15:91:20 | pinned | provenance | |
+| test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | test_futures_io.rs:91:15:91:20 | pinned [&ref] | provenance | |
+| test_futures_io.rs:90:13:90:22 | mut pinned [Pin, &ref] | test_futures_io.rs:91:15:91:20 | pinned [Pin, &ref] | provenance | |
+| 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: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: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: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 [&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 [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: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 | |
+| test_futures_io.rs:114:15:114:20 | pinned [Pin, &ref] | test_futures_io.rs:114:14:114:20 | &pinned | provenance | |
+| test_futures_io.rs:116:13:116:18 | buffer [Ready, Ok] | test_futures_io.rs:117:15:117:20 | buffer [Ready, Ok] | provenance | |
+| test_futures_io.rs:116:13:116:18 | buffer [Ready, Ok] | test_futures_io.rs:118:16:118:35 | ...::Ready(...) [Ready, Ok] | provenance | |
+| test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | test_futures_io.rs:116:13:116:18 | buffer [Ready, Ok] | provenance | |
+| test_futures_io.rs:117:15:117:20 | buffer [Ready, Ok] | test_futures_io.rs:117:14:117:20 | &buffer | provenance | |
+| test_futures_io.rs:118:16:118:35 | ...::Ready(...) [Ready, Ok] | test_futures_io.rs:118:28:118:34 | Ok(...) [Ok] | provenance | |
+| test_futures_io.rs:118:28:118:34 | Ok(...) [Ok] | test_futures_io.rs:118:31:118:33 | buf | provenance | |
+| test_futures_io.rs:118:31:118:33 | buf | test_futures_io.rs:119:18:119:20 | buf | provenance | |
+| test_futures_io.rs:125:13:125:18 | buffer | test_futures_io.rs:126:14:126:19 | buffer | provenance | |
+| 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: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: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: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: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: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: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
+| test.rs:8:10:8:22 | ...::var | semmle.label | ...::var |
+| test.rs:8:10:8:30 | ...::var(...) | semmle.label | ...::var(...) |
+| test.rs:9:10:9:25 | ...::var_os | semmle.label | ...::var_os |
+| test.rs:9:10:9:33 | ...::var_os(...) | semmle.label | ...::var_os(...) |
+| test.rs:11:9:11:12 | var1 | semmle.label | var1 |
+| test.rs:11:16:11:28 | ...::var | semmle.label | ...::var |
+| test.rs:11:16:11:36 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] |
+| test.rs:11:16:11:59 | ... .expect(...) | semmle.label | ... .expect(...) |
+| test.rs:12:9:12:12 | var2 | semmle.label | var2 |
+| test.rs:12:16:12:31 | ...::var_os | semmle.label | ...::var_os |
+| test.rs:12:16:12:39 | ...::var_os(...) [Some] | semmle.label | ...::var_os(...) [Some] |
+| test.rs:12:16:12:48 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:14:10:14:13 | var1 | semmle.label | var1 |
+| test.rs:15:10:15:13 | var2 | semmle.label | var2 |
+| test.rs:29:9:29:12 | args [element] | semmle.label | args [element] |
+| test.rs:29:29:29:42 | ...::args | semmle.label | ...::args |
+| test.rs:29:29:29:44 | ...::args(...) [element] | semmle.label | ...::args(...) [element] |
+| test.rs:29:29:29:54 | ... .collect() [element] | semmle.label | ... .collect() [element] |
+| test.rs:30:9:30:15 | my_path [&ref] | semmle.label | my_path [&ref] |
+| test.rs:30:19:30:26 | &... [&ref] | semmle.label | &... [&ref] |
+| test.rs:30:20:30:23 | args [element] | semmle.label | args [element] |
+| test.rs:30:20:30:26 | args[0] | semmle.label | args[0] |
+| test.rs:31:9:31:12 | arg1 [&ref] | semmle.label | arg1 [&ref] |
+| test.rs:31:16:31:23 | &... [&ref] | semmle.label | &... [&ref] |
+| test.rs:31:17:31:20 | args [element] | semmle.label | args [element] |
+| test.rs:31:17:31:23 | args[1] | semmle.label | args[1] |
+| test.rs:32:9:32:12 | arg2 | semmle.label | arg2 |
+| test.rs:32:16:32:29 | ...::args | semmle.label | ...::args |
+| test.rs:32:16:32:31 | ...::args(...) [element] | semmle.label | ...::args(...) [element] |
+| test.rs:32:16:32:38 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] |
+| test.rs:32:16:32:47 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:33:9:33:12 | arg3 | semmle.label | arg3 |
+| test.rs:33:16:33:32 | ...::args_os | semmle.label | ...::args_os |
+| test.rs:33:16:33:34 | ...::args_os(...) [element] | semmle.label | ...::args_os(...) [element] |
+| test.rs:33:16:33:41 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] |
+| test.rs:33:16:33:50 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:34:9:34:12 | arg4 | semmle.label | arg4 |
+| test.rs:34:16:34:29 | ...::args | semmle.label | ...::args |
+| test.rs:34:16:34:31 | ...::args(...) [element] | semmle.label | ...::args(...) [element] |
+| test.rs:34:16:34:38 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] |
+| test.rs:34:16:34:47 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:34:16:34:64 | ... .parse() [Ok] | semmle.label | ... .parse() [Ok] |
+| test.rs:34:16:34:73 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:36:10:36:16 | my_path | semmle.label | my_path |
+| test.rs:37:10:37:13 | arg1 | semmle.label | arg1 |
+| test.rs:38:10:38:13 | arg2 | semmle.label | arg2 |
+| test.rs:39:10:39:13 | arg3 | semmle.label | arg3 |
+| test.rs:40:10:40:13 | arg4 | semmle.label | arg4 |
+| test.rs:42:9:42:11 | arg | semmle.label | arg |
+| test.rs:42:16:42:29 | ...::args | semmle.label | ...::args |
+| test.rs:42:16:42:31 | ...::args(...) [element] | semmle.label | ...::args(...) [element] |
+| test.rs:43:14:43:16 | arg | semmle.label | arg |
+| test.rs:46:9:46:11 | arg | semmle.label | arg |
+| test.rs:46:16:46:32 | ...::args_os | semmle.label | ...::args_os |
+| test.rs:46:16:46:34 | ...::args_os(...) [element] | semmle.label | ...::args_os(...) [element] |
+| test.rs:47:14:47:16 | arg | semmle.label | arg |
+| test.rs:52:9:52:11 | dir | semmle.label | dir |
+| test.rs:52:15:52:35 | ...::current_dir | semmle.label | ...::current_dir |
+| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | semmle.label | ...::current_dir(...) [Ok] |
+| test.rs:52:15:52:54 | ... .expect(...) | semmle.label | ... .expect(...) |
+| test.rs:53:9:53:11 | exe | semmle.label | exe |
+| test.rs:53:15:53:35 | ...::current_exe | semmle.label | ...::current_exe |
+| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | semmle.label | ...::current_exe(...) [Ok] |
+| test.rs:53:15:53:54 | ... .expect(...) | semmle.label | ... .expect(...) |
+| test.rs:54:9:54:12 | home | semmle.label | home |
+| test.rs:54:16:54:33 | ...::home_dir | semmle.label | ...::home_dir |
+| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | semmle.label | ...::home_dir(...) [Some] |
+| test.rs:54:16:54:52 | ... .expect(...) | semmle.label | ... .expect(...) |
+| test.rs:56:10:56:12 | dir | semmle.label | dir |
+| test.rs:57:10:57:12 | exe | semmle.label | exe |
+| test.rs:58:10:58:13 | home | semmle.label | home |
+| test.rs:62:9:62:22 | remote_string1 | semmle.label | remote_string1 |
+| test.rs:62:26:62:47 | ...::get | semmle.label | ...::get |
+| test.rs:62:26:62:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] |
+| test.rs:62:26:62:63 | TryExpr | semmle.label | TryExpr |
+| test.rs:62:26:62:70 | ... .text() [Ok] | semmle.label | ... .text() [Ok] |
+| test.rs:62:26:62:71 | TryExpr | semmle.label | TryExpr |
+| test.rs:63:10:63:23 | remote_string1 | semmle.label | remote_string1 |
+| test.rs:65:9:65:22 | remote_string2 | semmle.label | remote_string2 |
+| test.rs:65:26:65:47 | ...::get | semmle.label | ...::get |
+| test.rs:65:26:65:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] |
+| test.rs:65:26:65:71 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:65:26:65:78 | ... .text() [Ok] | semmle.label | ... .text() [Ok] |
+| test.rs:65:26:65:87 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:66:10:66:23 | remote_string2 | semmle.label | remote_string2 |
+| test.rs:68:9:68:22 | remote_string3 | semmle.label | remote_string3 |
+| test.rs:68:26:68:47 | ...::get | semmle.label | ...::get |
+| test.rs:68:26:68:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] |
+| test.rs:68:26:68:71 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | semmle.label | ... .text_with_charset(...) [Ok] |
+| test.rs:68:26:68:107 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:69:10:69:23 | remote_string3 | semmle.label | remote_string3 |
+| test.rs:71:9:71:22 | remote_string4 | semmle.label | remote_string4 |
+| test.rs:71:26:71:47 | ...::get | semmle.label | ...::get |
+| test.rs:71:26:71:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] |
+| test.rs:71:26:71:71 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:71:26:71:79 | ... .bytes() [Ok] | semmle.label | ... .bytes() [Ok] |
+| test.rs:71:26:71:88 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:72:10:72:23 | remote_string4 | semmle.label | remote_string4 |
+| test.rs:74:9:74:22 | remote_string5 | semmle.label | remote_string5 |
+| test.rs:74:26:74:37 | ...::get | semmle.label | ...::get |
+| test.rs:74:26:74:52 | ...::get(...) [future, Ok] | semmle.label | ...::get(...) [future, Ok] |
+| test.rs:74:26:74:58 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:74:26:74:59 | TryExpr | semmle.label | TryExpr |
+| test.rs:74:26:74:66 | ... .text() [future, Ok] | semmle.label | ... .text() [future, Ok] |
+| test.rs:74:26:74:72 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:74:26:74:73 | TryExpr | semmle.label | TryExpr |
+| test.rs:75:10:75:23 | remote_string5 | semmle.label | remote_string5 |
+| test.rs:77:9:77:22 | remote_string6 | semmle.label | remote_string6 |
+| test.rs:77:26:77:37 | ...::get | semmle.label | ...::get |
+| test.rs:77:26:77:52 | ...::get(...) [future, Ok] | semmle.label | ...::get(...) [future, Ok] |
+| test.rs:77:26:77:58 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:77:26:77:59 | TryExpr | semmle.label | TryExpr |
+| test.rs:77:26:77:67 | ... .bytes() [future, Ok] | semmle.label | ... .bytes() [future, Ok] |
+| test.rs:77:26:77:73 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:77:26:77:74 | TryExpr | semmle.label | TryExpr |
+| test.rs:78:10:78:23 | remote_string6 | semmle.label | remote_string6 |
+| test.rs:80:9:80:20 | mut request1 | semmle.label | mut request1 |
+| test.rs:80:24:80:35 | ...::get | semmle.label | ...::get |
+| test.rs:80:24:80:50 | ...::get(...) [future, Ok] | semmle.label | ...::get(...) [future, Ok] |
+| test.rs:80:24:80:56 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:80:24:80:57 | TryExpr | semmle.label | TryExpr |
+| test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | semmle.label | request1.chunk() [future, Ok, Some] |
+| test.rs:81:10:81:31 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] |
+| test.rs:81:10:81:32 | TryExpr [Some] | semmle.label | TryExpr [Some] |
+| test.rs:81:10:81:41 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:82:15:82:25 | Some(...) [Some] | semmle.label | Some(...) [Some] |
+| test.rs:82:20:82:24 | chunk | semmle.label | chunk |
+| test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | semmle.label | request1.chunk() [future, Ok, Some] |
+| test.rs:82:29:82:50 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] |
+| test.rs:82:29:82:51 | TryExpr [Some] | semmle.label | TryExpr [Some] |
+| test.rs:83:14:83:18 | chunk | semmle.label | chunk |
+| test.rs:114:13:114:20 | response | semmle.label | response |
+| test.rs:114:24:114:51 | sender.send_request(...) [future, Ok] | semmle.label | sender.send_request(...) [future, Ok] |
+| test.rs:114:24:114:57 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:114:24:114:58 | TryExpr | semmle.label | TryExpr |
+| test.rs:114:31:114:42 | send_request | semmle.label | send_request |
+| test.rs:115:14:115:22 | &response | semmle.label | &response |
+| test.rs:115:15:115:22 | response | semmle.label | response |
+| test.rs:116:14:116:21 | response | semmle.label | response |
+| test.rs:121:9:121:20 | mut response | semmle.label | mut response |
+| test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | semmle.label | sender.send_request(...) [future, Ok] |
+| test.rs:121:24:121:57 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:121:24:121:58 | TryExpr | semmle.label | TryExpr |
+| test.rs:121:31:121:42 | send_request | semmle.label | send_request |
+| test.rs:122:10:122:18 | &response | semmle.label | &response |
+| test.rs:122:11:122:18 | response | semmle.label | response |
+| test.rs:211:22:211:35 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:211:22:211:37 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:211:44:211:54 | [post] &mut buffer | semmle.label | [post] &mut buffer |
+| test.rs:211:44:211:54 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:211:49:211:54 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:212:14:212:20 | &buffer | semmle.label | &buffer |
+| test.rs:212:15:212:20 | buffer | semmle.label | buffer |
+| test.rs:217:22:217:35 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:217:22:217:37 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:217:51:217:61 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:217:56:217:61 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:218:14:218:20 | &buffer | semmle.label | &buffer |
+| test.rs:218:15:218:20 | buffer | semmle.label | buffer |
+| test.rs:223:22:223:35 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:223:22:223:37 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:223:54:223:64 | [post] &mut buffer | semmle.label | [post] &mut buffer |
+| test.rs:223:54:223:64 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:223:59:223:64 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:224:14:224:20 | &buffer | semmle.label | &buffer |
+| test.rs:224:15:224:20 | buffer | semmle.label | buffer |
+| test.rs:229:22:229:35 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:229:22:229:37 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:229:22:229:44 | ... .lock() | semmle.label | ... .lock() |
+| test.rs:229:61:229:71 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:229:66:229:71 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:230:14:230:20 | &buffer | semmle.label | &buffer |
+| test.rs:230:15:230:20 | buffer | semmle.label | buffer |
+| test.rs:235:9:235:22 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:235:9:235:24 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:235:37:235:47 | [post] &mut buffer | semmle.label | [post] &mut buffer |
+| test.rs:235:37:235:47 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:235:42:235:47 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:236:14:236:20 | &buffer | semmle.label | &buffer |
+| test.rs:236:15:236:20 | buffer | semmle.label | buffer |
+| test.rs:239:17:239:30 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:239:17:239:32 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:239:17:239:40 | ... .bytes() | semmle.label | ... .bytes() |
+| test.rs:240:14:240:17 | byte | semmle.label | byte |
+| test.rs:246:13:246:22 | mut reader | semmle.label | mut reader |
+| test.rs:246:26:246:66 | ...::new(...) | semmle.label | ...::new(...) |
+| test.rs:246:50:246:63 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:246:50:246:65 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:247:13:247:16 | data | semmle.label | data |
+| test.rs:247:20:247:36 | reader.fill_buf() [Ok] | semmle.label | reader.fill_buf() [Ok] |
+| test.rs:247:20:247:37 | TryExpr | semmle.label | TryExpr |
+| test.rs:248:14:248:18 | &data | semmle.label | &data |
+| test.rs:248:15:248:18 | data | semmle.label | data |
+| test.rs:252:13:252:18 | reader | semmle.label | reader |
+| test.rs:252:22:252:62 | ...::new(...) | semmle.label | ...::new(...) |
+| test.rs:252:46:252:59 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:252:46:252:61 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:253:13:253:16 | data | semmle.label | data |
+| test.rs:253:20:253:34 | reader.buffer() | semmle.label | reader.buffer() |
+| test.rs:254:14:254:18 | &data | semmle.label | &data |
+| test.rs:254:15:254:18 | data | semmle.label | data |
+| test.rs:259:13:259:22 | mut reader | semmle.label | mut reader |
+| test.rs:259:26:259:66 | ...::new(...) | semmle.label | ...::new(...) |
+| test.rs:259:50:259:63 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:259:50:259:65 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:260:26:260:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:260:31:260:36 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:261:14:261:20 | &buffer | semmle.label | &buffer |
+| test.rs:261:15:261:20 | buffer | semmle.label | buffer |
+| test.rs:266:13:266:22 | mut reader | semmle.label | mut reader |
+| test.rs:266:26:266:66 | ...::new(...) | semmle.label | ...::new(...) |
+| test.rs:266:50:266:63 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:266:50:266:65 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:267:33:267:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:267:38:267:43 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:268:14:268:20 | &buffer | semmle.label | &buffer |
+| test.rs:268:15:268:20 | buffer | semmle.label | buffer |
+| test.rs:269:14:269:22 | buffer[0] | semmle.label | buffer[0] |
+| test.rs:273:13:273:28 | mut reader_split | semmle.label | mut reader_split |
+| test.rs:273:32:273:72 | ...::new(...) | semmle.label | ...::new(...) |
+| test.rs:273:32:273:84 | ... .split(...) | semmle.label | ... .split(...) |
+| test.rs:273:56:273:69 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:273:56:273:71 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | semmle.label | reader_split.next() [Some, Ok] |
+| test.rs:274:14:274:41 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] |
+| test.rs:274:14:274:50 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:275:19:275:29 | Some(...) [Some, Ok] | semmle.label | Some(...) [Some, Ok] |
+| test.rs:275:24:275:28 | chunk [Ok] | semmle.label | chunk [Ok] |
+| test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | semmle.label | reader_split.next() [Some, Ok] |
+| test.rs:276:18:276:31 | chunk.unwrap() | semmle.label | chunk.unwrap() |
+| test.rs:281:13:281:18 | reader | semmle.label | reader |
+| test.rs:281:22:281:62 | ...::new(...) | semmle.label | ...::new(...) |
+| test.rs:281:46:281:59 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:281:46:281:61 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:282:21:282:34 | reader.lines() | semmle.label | reader.lines() |
+| test.rs:283:18:283:21 | line | semmle.label | line |
+| test.rs:309:13:309:21 | mut stdin | semmle.label | mut stdin |
+| test.rs:309:25:309:40 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:309:25:309:42 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:311:33:311:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:311:38:311:43 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:312:14:312:20 | &buffer | semmle.label | &buffer |
+| test.rs:312:15:312:20 | buffer | semmle.label | buffer |
+| test.rs:316:13:316:21 | mut stdin | semmle.label | mut stdin |
+| test.rs:316:25:316:40 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:316:25:316:42 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:318:40:318:50 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:318:45:318:50 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:319:14:319:20 | &buffer | semmle.label | &buffer |
+| test.rs:319:15:319:20 | buffer | semmle.label | buffer |
+| test.rs:323:13:323:21 | mut stdin | semmle.label | mut stdin |
+| test.rs:323:25:323:40 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:323:25:323:42 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:325:43:325:53 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:325:48:325:53 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:326:14:326:20 | &buffer | semmle.label | &buffer |
+| test.rs:326:15:326:20 | buffer | semmle.label | buffer |
+| test.rs:330:13:330:21 | mut stdin | semmle.label | mut stdin |
+| test.rs:330:25:330:40 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:330:25:330:42 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:332:26:332:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:332:31:332:36 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:333:14:333:20 | &buffer | semmle.label | &buffer |
+| test.rs:333:15:333:20 | buffer | semmle.label | buffer |
+| test.rs:337:13:337:21 | mut stdin | semmle.label | mut stdin |
+| test.rs:337:25:337:40 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:337:25:337:42 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:338:13:338:14 | v1 | semmle.label | v1 |
+| test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | semmle.label | stdin.read_u8() [future, Ok] |
+| test.rs:338:18:338:38 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:338:18:338:39 | TryExpr | semmle.label | TryExpr |
+| test.rs:339:13:339:14 | v2 | semmle.label | v2 |
+| test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | semmle.label | stdin.read_i16() [future, Ok] |
+| test.rs:339:18:339:39 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:339:18:339:40 | TryExpr | semmle.label | TryExpr |
+| test.rs:340:13:340:14 | v3 | semmle.label | v3 |
+| test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | semmle.label | stdin.read_f32() [future, Ok] |
+| test.rs:340:18:340:39 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:340:18:340:40 | TryExpr | semmle.label | TryExpr |
+| test.rs:341:13:341:14 | v4 | semmle.label | v4 |
+| test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | semmle.label | stdin.read_i64_le() [future, Ok] |
+| test.rs:341:18:341:42 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:341:18:341:43 | TryExpr | semmle.label | TryExpr |
+| test.rs:342:14:342:15 | v1 | semmle.label | v1 |
+| test.rs:343:14:343:15 | v2 | semmle.label | v2 |
+| test.rs:344:14:344:15 | v3 | semmle.label | v3 |
+| test.rs:345:14:345:15 | v4 | semmle.label | v4 |
+| test.rs:349:13:349:21 | mut stdin | semmle.label | mut stdin |
+| test.rs:349:25:349:40 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:349:25:349:42 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:351:24:351:34 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:351:29:351:34 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:352:14:352:20 | &buffer | semmle.label | &buffer |
+| test.rs:352:15:352:20 | buffer | semmle.label | buffer |
+| test.rs:358:13:358:22 | mut reader | semmle.label | mut reader |
+| test.rs:358:26:358:70 | ...::new(...) | semmle.label | ...::new(...) |
+| test.rs:358:52:358:67 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:358:52:358:69 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:359:13:359:16 | data | semmle.label | data |
+| test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | semmle.label | reader.fill_buf() [future, Ok] |
+| test.rs:359:20:359:42 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:359:20:359:43 | TryExpr | semmle.label | TryExpr |
+| test.rs:360:14:360:18 | &data | semmle.label | &data |
+| test.rs:360:15:360:18 | data | semmle.label | data |
+| test.rs:364:13:364:18 | reader | semmle.label | reader |
+| test.rs:364:22:364:66 | ...::new(...) | semmle.label | ...::new(...) |
+| test.rs:364:48:364:63 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:364:48:364:65 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:365:13:365:16 | data | semmle.label | data |
+| test.rs:365:20:365:34 | reader.buffer() | semmle.label | reader.buffer() |
+| test.rs:366:14:366:18 | &data | semmle.label | &data |
+| test.rs:366:15:366:18 | data | semmle.label | data |
+| test.rs:371:13:371:22 | mut reader | semmle.label | mut reader |
+| test.rs:371:26:371:70 | ...::new(...) | semmle.label | ...::new(...) |
+| test.rs:371:52:371:67 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:371:52:371:69 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:372:26:372:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:372:31:372:36 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:373:14:373:20 | &buffer | semmle.label | &buffer |
+| test.rs:373:15:373:20 | buffer | semmle.label | buffer |
+| test.rs:378:13:378:22 | mut reader | semmle.label | mut reader |
+| test.rs:378:26:378:70 | ...::new(...) | semmle.label | ...::new(...) |
+| test.rs:378:52:378:67 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:378:52:378:69 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:379:33:379:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:379:38:379:43 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:380:14:380:20 | &buffer | semmle.label | &buffer |
+| test.rs:380:15:380:20 | buffer | semmle.label | buffer |
+| test.rs:381:14:381:22 | buffer[0] | semmle.label | buffer[0] |
+| test.rs:385:13:385:28 | mut reader_split | semmle.label | mut reader_split |
+| test.rs:385:32:385:76 | ...::new(...) | semmle.label | ...::new(...) |
+| test.rs:385:32:385:88 | ... .split(...) | semmle.label | ... .split(...) |
+| test.rs:385:58:385:73 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:385:58:385:75 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | semmle.label | reader_split.next_segment() [future, Ok, Some] |
+| test.rs:386:14:386:46 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] |
+| test.rs:386:14:386:47 | TryExpr [Some] | semmle.label | TryExpr [Some] |
+| test.rs:386:14:386:56 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:387:19:387:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
+| test.rs:387:24:387:28 | chunk | semmle.label | chunk |
+| test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | semmle.label | reader_split.next_segment() [future, Ok, Some] |
+| test.rs:387:33:387:65 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] |
+| test.rs:387:33:387:66 | TryExpr [Some] | semmle.label | TryExpr [Some] |
+| test.rs:388:18:388:22 | chunk | semmle.label | chunk |
+| test.rs:393:13:393:18 | reader | semmle.label | reader |
+| test.rs:393:22:393:66 | ...::new(...) | semmle.label | ...::new(...) |
+| test.rs:393:48:393:63 | ...::stdin | semmle.label | ...::stdin |
+| test.rs:393:48:393:65 | ...::stdin(...) | semmle.label | ...::stdin(...) |
+| test.rs:394:13:394:21 | mut lines | semmle.label | mut lines |
+| test.rs:394:25:394:38 | reader.lines() | semmle.label | reader.lines() |
+| test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | semmle.label | lines.next_line() [future, Ok, Some] |
+| test.rs:395:14:395:36 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] |
+| test.rs:395:14:395:37 | TryExpr [Some] | semmle.label | TryExpr [Some] |
+| test.rs:395:14:395:46 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:396:19:396:28 | Some(...) [Some] | semmle.label | Some(...) [Some] |
+| test.rs:396:24:396:27 | line | semmle.label | line |
+| test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | semmle.label | lines.next_line() [future, Ok, Some] |
+| test.rs:396:32:396:54 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] |
+| test.rs:396:32:396:55 | TryExpr [Some] | semmle.label | TryExpr [Some] |
+| test.rs:397:18:397:21 | line | semmle.label | line |
+| test.rs:408:13:408:18 | buffer | semmle.label | buffer |
+| test.rs:408:31:408:43 | ...::read | semmle.label | ...::read |
+| test.rs:408:31:408:43 | ...::read [Ok] | semmle.label | ...::read [Ok] |
+| test.rs:408:31:408:55 | ...::read(...) [Ok] | semmle.label | ...::read(...) [Ok] |
+| test.rs:408:31:408:56 | TryExpr | semmle.label | TryExpr |
+| test.rs:409:14:409:19 | buffer | semmle.label | buffer |
+| test.rs:413:13:413:18 | buffer | semmle.label | buffer |
+| test.rs:413:31:413:38 | ...::read | semmle.label | ...::read |
+| test.rs:413:31:413:38 | ...::read [Ok] | semmle.label | ...::read [Ok] |
+| test.rs:413:31:413:50 | ...::read(...) [Ok] | semmle.label | ...::read(...) [Ok] |
+| test.rs:413:31:413:51 | TryExpr | semmle.label | TryExpr |
+| test.rs:414:14:414:19 | buffer | semmle.label | buffer |
+| test.rs:418:13:418:18 | buffer | semmle.label | buffer |
+| test.rs:418:22:418:39 | ...::read_to_string | semmle.label | ...::read_to_string |
+| test.rs:418:22:418:39 | ...::read_to_string [Ok] | semmle.label | ...::read_to_string [Ok] |
+| test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | semmle.label | ...::read_to_string(...) [Ok] |
+| test.rs:418:22:418:52 | TryExpr | semmle.label | TryExpr |
+| test.rs:419:14:419:19 | buffer | semmle.label | buffer |
+| test.rs:425:13:425:16 | path | semmle.label | path |
+| test.rs:425:20:425:27 | e.path() | semmle.label | e.path() |
+| test.rs:425:22:425:25 | path | semmle.label | path |
+| test.rs:426:14:426:17 | path | semmle.label | path |
+| test.rs:426:14:426:25 | path.clone() | semmle.label | path.clone() |
+| test.rs:427:14:427:17 | path | semmle.label | path |
+| test.rs:427:14:427:25 | path.clone() | semmle.label | path.clone() |
+| test.rs:427:14:427:35 | ... .as_path() | semmle.label | ... .as_path() |
+| test.rs:437:14:437:17 | path | semmle.label | path |
+| test.rs:439:13:439:21 | file_name | semmle.label | file_name |
+| test.rs:439:25:439:37 | e.file_name() | semmle.label | e.file_name() |
+| test.rs:439:27:439:35 | file_name | semmle.label | file_name |
+| test.rs:440:14:440:22 | file_name | semmle.label | file_name |
+| test.rs:440:14:440:30 | file_name.clone() | semmle.label | file_name.clone() |
+| test.rs:445:14:445:22 | file_name | semmle.label | file_name |
+| test.rs:461:13:461:18 | target | semmle.label | target |
+| test.rs:461:22:461:34 | ...::read_link | semmle.label | ...::read_link |
+| test.rs:461:22:461:49 | ...::read_link(...) [Ok] | semmle.label | ...::read_link(...) [Ok] |
+| test.rs:461:22:461:50 | TryExpr | semmle.label | TryExpr |
+| test.rs:462:14:462:19 | target | semmle.label | target |
+| test.rs:470:13:470:18 | buffer | semmle.label | buffer |
+| test.rs:470:31:470:45 | ...::read | semmle.label | ...::read |
+| test.rs:470:31:470:57 | ...::read(...) [future, Ok] | semmle.label | ...::read(...) [future, Ok] |
+| test.rs:470:31:470:63 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:470:31:470:64 | TryExpr | semmle.label | TryExpr |
+| test.rs:471:14:471:19 | buffer | semmle.label | buffer |
+| test.rs:475:13:475:18 | buffer | semmle.label | buffer |
+| test.rs:475:31:475:45 | ...::read | semmle.label | ...::read |
+| test.rs:475:31:475:57 | ...::read(...) [future, Ok] | semmle.label | ...::read(...) [future, Ok] |
+| test.rs:475:31:475:63 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:475:31:475:64 | TryExpr | semmle.label | TryExpr |
+| test.rs:476:14:476:19 | buffer | semmle.label | buffer |
+| test.rs:480:13:480:18 | buffer | semmle.label | buffer |
+| test.rs:480:22:480:46 | ...::read_to_string | semmle.label | ...::read_to_string |
+| test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | semmle.label | ...::read_to_string(...) [future, Ok] |
+| test.rs:480:22:480:64 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:480:22:480:65 | TryExpr | semmle.label | TryExpr |
+| test.rs:481:14:481:19 | buffer | semmle.label | buffer |
+| test.rs:486:13:486:16 | path | semmle.label | path |
+| test.rs:486:20:486:31 | entry.path() | semmle.label | entry.path() |
+| test.rs:486:26:486:29 | path | semmle.label | path |
+| test.rs:486:26:486:29 | path | semmle.label | path |
+| test.rs:487:13:487:21 | file_name | semmle.label | file_name |
+| test.rs:487:25:487:41 | entry.file_name() | semmle.label | entry.file_name() |
+| test.rs:487:31:487:39 | file_name | semmle.label | file_name |
+| test.rs:487:31:487:39 | file_name | semmle.label | file_name |
+| test.rs:488:14:488:17 | path | semmle.label | path |
+| test.rs:489:14:489:22 | file_name | semmle.label | file_name |
+| test.rs:493:13:493:18 | target | semmle.label | target |
+| test.rs:493:22:493:41 | ...::read_link | semmle.label | ...::read_link |
+| test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | semmle.label | ...::read_link(...) [future, Ok] |
+| test.rs:493:22:493:62 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:493:22:493:63 | TryExpr | semmle.label | TryExpr |
+| test.rs:494:14:494:19 | target | semmle.label | target |
+| test.rs:503:9:503:16 | mut file | semmle.label | mut file |
+| test.rs:503:20:503:38 | ...::open | semmle.label | ...::open |
+| test.rs:503:20:503:50 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] |
+| test.rs:503:20:503:51 | TryExpr | semmle.label | TryExpr |
+| test.rs:507:32:507:42 | [post] &mut buffer | semmle.label | [post] &mut buffer |
+| test.rs:507:32:507:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:507:37:507:42 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:508:14:508:20 | &buffer | semmle.label | &buffer |
+| test.rs:508:15:508:20 | buffer | semmle.label | buffer |
+| test.rs:513:39:513:49 | [post] &mut buffer | semmle.label | [post] &mut buffer |
+| test.rs:513:39:513:49 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:513:44:513:49 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:514:14:514:20 | &buffer | semmle.label | &buffer |
+| test.rs:514:15:514:20 | buffer | semmle.label | buffer |
+| test.rs:519:42:519:52 | [post] &mut buffer | semmle.label | [post] &mut buffer |
+| test.rs:519:42:519:52 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:519:47:519:52 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:520:14:520:20 | &buffer | semmle.label | &buffer |
+| test.rs:520:15:520:20 | buffer | semmle.label | buffer |
+| test.rs:525:25:525:35 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:525:30:525:35 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:526:14:526:20 | &buffer | semmle.label | &buffer |
+| test.rs:526:15:526:20 | buffer | semmle.label | buffer |
+| test.rs:529:17:529:28 | file.bytes() | semmle.label | file.bytes() |
+| test.rs:530:14:530:17 | byte | semmle.label | byte |
+| test.rs:536:13:536:18 | mut f1 | semmle.label | mut f1 |
+| test.rs:536:22:536:63 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] |
+| test.rs:536:22:536:72 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:536:50:536:53 | open | semmle.label | open |
+| test.rs:538:30:538:40 | [post] &mut buffer | semmle.label | [post] &mut buffer |
+| test.rs:538:30:538:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:538:35:538:40 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:539:14:539:20 | &buffer | semmle.label | &buffer |
+| test.rs:539:15:539:20 | buffer | semmle.label | buffer |
+| test.rs:543:13:543:18 | mut f2 | semmle.label | mut f2 |
+| test.rs:543:22:543:80 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] |
+| test.rs:543:22:543:89 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:543:67:543:70 | open | semmle.label | open |
+| test.rs:545:30:545:40 | [post] &mut buffer | semmle.label | [post] &mut buffer |
+| test.rs:545:30:545:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:545:35:545:40 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:546:14:546:20 | &buffer | semmle.label | &buffer |
+| test.rs:546:15:546:20 | buffer | semmle.label | buffer |
+| test.rs:550:13:550:18 | mut f3 | semmle.label | mut f3 |
+| test.rs:550:22:550:114 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] |
+| test.rs:550:22:550:123 | ... .unwrap() | semmle.label | ... .unwrap() |
+| test.rs:550:101:550:104 | open | semmle.label | open |
+| test.rs:552:30:552:40 | [post] &mut buffer | semmle.label | [post] &mut buffer |
+| test.rs:552:30:552:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:552:35:552:40 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:553:14:553:20 | &buffer | semmle.label | &buffer |
+| test.rs:553:15:553:20 | buffer | semmle.label | buffer |
+| test.rs:560:13:560:17 | file1 | semmle.label | file1 |
+| test.rs:560:21:560:39 | ...::open | semmle.label | ...::open |
+| test.rs:560:21:560:51 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] |
+| test.rs:560:21:560:52 | TryExpr | semmle.label | TryExpr |
+| test.rs:561:13:561:17 | file2 | semmle.label | file2 |
+| test.rs:561:21:561:39 | ...::open | semmle.label | ...::open |
+| test.rs:561:21:561:59 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] |
+| test.rs:561:21:561:60 | TryExpr | semmle.label | TryExpr |
+| test.rs:562:13:562:22 | mut reader | semmle.label | mut reader |
+| test.rs:562:26:562:43 | file1.chain(...) | semmle.label | file1.chain(...) |
+| test.rs:562:38:562:42 | file2 | semmle.label | file2 |
+| test.rs:563:31:563:41 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:563:36:563:41 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:564:14:564:20 | &buffer | semmle.label | &buffer |
+| test.rs:564:15:564:20 | buffer | semmle.label | buffer |
+| test.rs:569:13:569:17 | file1 | semmle.label | file1 |
+| test.rs:569:21:569:39 | ...::open | semmle.label | ...::open |
+| test.rs:569:21:569:51 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] |
+| test.rs:569:21:569:52 | TryExpr | semmle.label | TryExpr |
+| test.rs:570:13:570:22 | mut reader | semmle.label | mut reader |
+| test.rs:570:26:570:40 | file1.take(...) | semmle.label | file1.take(...) |
+| test.rs:571:31:571:41 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:571:36:571:41 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:572:14:572:20 | &buffer | semmle.label | &buffer |
+| test.rs:572:15:572:20 | buffer | semmle.label | buffer |
+| test.rs:581:9:581:16 | mut file | semmle.label | mut file |
+| test.rs:581:20:581:40 | ...::open | semmle.label | ...::open |
+| test.rs:581:20:581:52 | ...::open(...) [future, Ok] | semmle.label | ...::open(...) [future, Ok] |
+| test.rs:581:20:581:58 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:581:20:581:59 | TryExpr | semmle.label | TryExpr |
+| test.rs:585:32:585:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:585:37:585:42 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:586:14:586:20 | &buffer | semmle.label | &buffer |
+| test.rs:586:15:586:20 | buffer | semmle.label | buffer |
+| test.rs:591:39:591:49 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:591:44:591:49 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:592:14:592:20 | &buffer | semmle.label | &buffer |
+| test.rs:592:15:592:20 | buffer | semmle.label | buffer |
+| test.rs:597:42:597:52 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:597:47:597:52 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:598:14:598:20 | &buffer | semmle.label | &buffer |
+| test.rs:598:15:598:20 | buffer | semmle.label | buffer |
+| test.rs:603:25:603:35 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:603:30:603:35 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:604:14:604:20 | &buffer | semmle.label | &buffer |
+| test.rs:604:15:604:20 | buffer | semmle.label | buffer |
+| test.rs:608:13:608:14 | v1 | semmle.label | v1 |
+| test.rs:608:18:608:31 | file.read_u8() [future, Ok] | semmle.label | file.read_u8() [future, Ok] |
+| test.rs:608:18:608:37 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:608:18:608:38 | TryExpr | semmle.label | TryExpr |
+| test.rs:609:13:609:14 | v2 | semmle.label | v2 |
+| test.rs:609:18:609:32 | file.read_i16() [future, Ok] | semmle.label | file.read_i16() [future, Ok] |
+| test.rs:609:18:609:38 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:609:18:609:39 | TryExpr | semmle.label | TryExpr |
+| test.rs:610:13:610:14 | v3 | semmle.label | v3 |
+| test.rs:610:18:610:32 | file.read_f32() [future, Ok] | semmle.label | file.read_f32() [future, Ok] |
+| test.rs:610:18:610:38 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:610:18:610:39 | TryExpr | semmle.label | TryExpr |
+| test.rs:611:13:611:14 | v4 | semmle.label | v4 |
+| test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | semmle.label | file.read_i64_le() [future, Ok] |
+| test.rs:611:18:611:41 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:611:18:611:42 | TryExpr | semmle.label | TryExpr |
+| test.rs:612:14:612:15 | v1 | semmle.label | v1 |
+| test.rs:613:14:613:15 | v2 | semmle.label | v2 |
+| test.rs:614:14:614:15 | v3 | semmle.label | v3 |
+| test.rs:615:14:615:15 | v4 | semmle.label | v4 |
+| test.rs:620:23:620:33 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:620:28:620:33 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:621:14:621:20 | &buffer | semmle.label | &buffer |
+| test.rs:621:15:621:20 | buffer | semmle.label | buffer |
+| test.rs:627:13:627:18 | mut f1 | semmle.label | mut f1 |
+| test.rs:627:22:627:65 | ... .open(...) [future, Ok] | semmle.label | ... .open(...) [future, Ok] |
+| test.rs:627:22:627:71 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:627:22:627:72 | TryExpr | semmle.label | TryExpr |
+| test.rs:627:52:627:55 | open | semmle.label | open |
+| test.rs:629:30:629:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| 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: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] |
+| test.rs:688:26:688:63 | TryExpr | semmle.label | TryExpr |
+| test.rs:695:29:695:39 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:695:34:695:39 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:698:14:698:20 | &buffer | semmle.label | &buffer |
+| test.rs:698:15:698:20 | buffer | semmle.label | buffer |
+| test.rs:699:14:699:22 | buffer[0] | semmle.label | buffer[0] |
+| test.rs:707:13:707:22 | mut stream | semmle.label | mut stream |
+| test.rs:707:26:707:61 | ...::connect_timeout | semmle.label | ...::connect_timeout |
+| test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | semmle.label | ...::connect_timeout(...) [Ok] |
+| test.rs:707:26:707:106 | TryExpr | semmle.label | TryExpr |
+| test.rs:715:21:715:30 | mut reader | semmle.label | mut reader |
+| test.rs:715:34:715:64 | ...::new(...) | semmle.label | ...::new(...) |
+| test.rs:715:34:715:74 | ... .take(...) | semmle.label | ... .take(...) |
+| test.rs:715:58:715:63 | stream | semmle.label | stream |
+| test.rs:718:44:718:52 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] |
+| test.rs:718:49:718:52 | [post] line | semmle.label | [post] line |
+| test.rs:725:34:725:38 | &line | semmle.label | &line |
+| test.rs:725:35:725:38 | line | semmle.label | line |
+| test.rs:759:9:759:24 | mut tokio_stream | semmle.label | mut tokio_stream |
+| test.rs:759:28:759:57 | ...::connect | semmle.label | ...::connect |
+| test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] |
+| test.rs:759:28:759:72 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test.rs:759:28:759:73 | TryExpr | semmle.label | TryExpr |
+| test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] |
+| test.rs:767:40:767:46 | [post] buffer1 | semmle.label | [post] buffer1 |
+| test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] |
+| test.rs:771:41:771:47 | [post] buffer2 | semmle.label | [post] buffer2 |
+| test.rs:774:14:774:21 | &buffer1 | semmle.label | &buffer1 |
+| test.rs:774:15:774:21 | buffer1 | semmle.label | buffer1 |
+| test.rs:775:14:775:23 | buffer1[0] | semmle.label | buffer1[0] |
+| test.rs:778:14:778:21 | &buffer2 | semmle.label | &buffer2 |
+| test.rs:778:15:778:21 | buffer2 | semmle.label | buffer2 |
+| test.rs:779:14:779:23 | buffer2[0] | semmle.label | buffer2[0] |
+| test.rs:787:41:787:51 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:787:46:787:51 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:794:26:794:32 | &buffer | semmle.label | &buffer |
+| test.rs:794:27:794:32 | buffer | semmle.label | buffer |
+| test.rs:810:45:810:55 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test.rs:810:50:810:55 | [post] buffer | semmle.label | [post] buffer |
+| test.rs:817:26:817:32 | &buffer | semmle.label | &buffer |
+| test.rs:817:27:817:32 | buffer | semmle.label | buffer |
+| test_futures_io.rs:19:9:19:11 | tcp | semmle.label | tcp |
+| test_futures_io.rs:19:15:19:32 | ...::connect | semmle.label | ...::connect |
+| test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] |
+| test_futures_io.rs:19:15:19:43 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test_futures_io.rs:19:15:19:44 | TryExpr | semmle.label | TryExpr |
+| test_futures_io.rs:20:10:20:13 | &tcp | semmle.label | &tcp |
+| test_futures_io.rs:20:11:20:13 | tcp | semmle.label | tcp |
+| test_futures_io.rs:26:9:26:18 | mut reader | semmle.label | mut reader |
+| test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | semmle.label | connector.connect(...) [future, Ok] |
+| test_futures_io.rs:26:22:26:62 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test_futures_io.rs:26:22:26:63 | TryExpr | semmle.label | TryExpr |
+| test_futures_io.rs:26:53:26:55 | tcp | semmle.label | tcp |
+| test_futures_io.rs:27:10:27:16 | &reader | semmle.label | &reader |
+| test_futures_io.rs:27:11:27:16 | reader | semmle.label | reader |
+| test_futures_io.rs:32:13:32:22 | mut pinned | semmle.label | mut pinned |
+| test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | semmle.label | mut pinned [&ref] |
+| test_futures_io.rs:32:13:32:22 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] |
+| test_futures_io.rs:32:26:32:46 | ...::new(...) | semmle.label | ...::new(...) |
+| test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] |
+| test_futures_io.rs:32:26:32:46 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] |
+| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | semmle.label | &mut reader [&ref] |
+| test_futures_io.rs:32:40:32:45 | reader | semmle.label | reader |
+| test_futures_io.rs:33:14:33:20 | &pinned | semmle.label | &pinned |
+| test_futures_io.rs:33:15:33:20 | pinned | semmle.label | pinned |
+| test_futures_io.rs:33:15:33:20 | pinned [&ref] | semmle.label | pinned [&ref] |
+| test_futures_io.rs:33:15:33:20 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] |
+| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | semmle.label | &mut reader [&ref] |
+| test_futures_io.rs:45:64:45:69 | reader | semmle.label | reader |
+| test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] |
+| test_futures_io.rs:45:77:45:83 | [post] buffer1 | semmle.label | [post] buffer1 |
+| test_futures_io.rs:46:14:46:36 | &... | semmle.label | &... |
+| test_futures_io.rs:46:15:46:36 | buffer1[...] | semmle.label | buffer1[...] |
+| test_futures_io.rs:49:27:49:32 | reader | semmle.label | reader |
+| test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] |
+| test_futures_io.rs:49:44:49:50 | [post] buffer2 | semmle.label | [post] buffer2 |
+| test_futures_io.rs:51:14:51:36 | &... | semmle.label | &... |
+| test_futures_io.rs:51:15:51:36 | buffer2[...] | semmle.label | buffer2[...] |
+| test_futures_io.rs:54:9:54:19 | mut reader2 | semmle.label | mut reader2 |
+| test_futures_io.rs:54:23:54:57 | ...::new(...) | semmle.label | ...::new(...) |
+| test_futures_io.rs:54:51:54:56 | reader | semmle.label | reader |
+| test_futures_io.rs:55:10:55:17 | &reader2 | semmle.label | &reader2 |
+| test_futures_io.rs:55:11:55:17 | reader2 | semmle.label | reader2 |
+| test_futures_io.rs:59:13:59:22 | mut pinned | semmle.label | mut pinned |
+| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | semmle.label | mut pinned [&ref] |
+| test_futures_io.rs:59:13:59:22 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] |
+| test_futures_io.rs:59:26:59:47 | ...::new(...) | semmle.label | ...::new(...) |
+| test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] |
+| test_futures_io.rs:59:26:59:47 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] |
+| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] |
+| test_futures_io.rs:59:40:59:46 | reader2 | semmle.label | reader2 |
+| test_futures_io.rs:60:14:60:20 | &pinned | semmle.label | &pinned |
+| test_futures_io.rs:60:15:60:20 | pinned | semmle.label | pinned |
+| test_futures_io.rs:60:15:60:20 | pinned [&ref] | semmle.label | pinned [&ref] |
+| test_futures_io.rs:60:15:60:20 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] |
+| test_futures_io.rs:62:13:62:18 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] |
+| test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] |
+| test_futures_io.rs:63:16:63:35 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] |
+| test_futures_io.rs:63:28:63:34 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
+| test_futures_io.rs:63:31:63:33 | buf | semmle.label | buf |
+| test_futures_io.rs:64:18:64:24 | &buffer | semmle.label | &buffer |
+| test_futures_io.rs:64:19:64:24 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] |
+| test_futures_io.rs:65:18:65:20 | buf | semmle.label | buf |
+| test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] |
+| test_futures_io.rs:69:23:69:44 | ...::new(...) | semmle.label | ...::new(...) |
+| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] |
+| test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | semmle.label | ... .poll_fill_buf(...) [Ready, Ok] |
+| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] |
+| test_futures_io.rs:69:37:69:43 | reader2 | semmle.label | reader2 |
+| test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] |
+| test_futures_io.rs:71:13:71:32 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] |
+| test_futures_io.rs:71:25:71:31 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
+| test_futures_io.rs:71:28:71:30 | buf | semmle.label | buf |
+| test_futures_io.rs:72:22:72:29 | &buffer2 | semmle.label | &buffer2 |
+| test_futures_io.rs:72:23:72:29 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] |
+| test_futures_io.rs:73:22:73:24 | buf | semmle.label | buf |
+| test_futures_io.rs:83:13:83:18 | buffer | semmle.label | buffer |
+| test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] |
+| test_futures_io.rs:83:22:83:45 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test_futures_io.rs:83:22:83:46 | TryExpr | semmle.label | TryExpr |
+| test_futures_io.rs:84:14:84:19 | buffer | semmle.label | buffer |
+| test_futures_io.rs:90:13:90:22 | mut pinned | semmle.label | mut pinned |
+| test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | semmle.label | mut pinned [&ref] |
+| test_futures_io.rs:90:13:90:22 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] |
+| test_futures_io.rs:90:26:90:47 | ...::new(...) | semmle.label | ...::new(...) |
+| test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] |
+| test_futures_io.rs:90:26:90:47 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] |
+| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] |
+| test_futures_io.rs:90:40:90:46 | reader2 | semmle.label | reader2 |
+| test_futures_io.rs:91:14:91:20 | &pinned | semmle.label | &pinned |
+| test_futures_io.rs:91:15:91:20 | pinned | semmle.label | pinned |
+| test_futures_io.rs:91:15:91:20 | pinned [&ref] | semmle.label | pinned [&ref] |
+| test_futures_io.rs:91:15:91:20 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] |
+| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] |
+| test_futures_io.rs:103:64:103:70 | reader2 | semmle.label | reader2 |
+| test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] |
+| test_futures_io.rs:103:78:103:84 | [post] buffer1 | semmle.label | [post] buffer1 |
+| test_futures_io.rs:104:14:104:36 | &... | semmle.label | &... |
+| test_futures_io.rs:104:15:104:36 | buffer1[...] | semmle.label | buffer1[...] |
+| test_futures_io.rs:107:27:107:33 | reader2 | semmle.label | reader2 |
+| test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] |
+| test_futures_io.rs:107:45:107:51 | [post] buffer2 | semmle.label | [post] buffer2 |
+| test_futures_io.rs:108:14:108:36 | &... | semmle.label | &... |
+| test_futures_io.rs:108:15:108:36 | buffer2[...] | semmle.label | buffer2[...] |
+| test_futures_io.rs:113:13:113:22 | mut pinned | semmle.label | mut pinned |
+| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | semmle.label | mut pinned [&ref] |
+| test_futures_io.rs:113:13:113:22 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] |
+| test_futures_io.rs:113:26:113:47 | ...::new(...) | semmle.label | ...::new(...) |
+| test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] |
+| test_futures_io.rs:113:26:113:47 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] |
+| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] |
+| test_futures_io.rs:113:40:113:46 | reader2 | semmle.label | reader2 |
+| test_futures_io.rs:114:14:114:20 | &pinned | semmle.label | &pinned |
+| test_futures_io.rs:114:15:114:20 | pinned | semmle.label | pinned |
+| test_futures_io.rs:114:15:114:20 | pinned [&ref] | semmle.label | pinned [&ref] |
+| test_futures_io.rs:114:15:114:20 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] |
+| test_futures_io.rs:116:13:116:18 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] |
+| test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] |
+| test_futures_io.rs:117:14:117:20 | &buffer | semmle.label | &buffer |
+| test_futures_io.rs:117:15:117:20 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] |
+| test_futures_io.rs:118:16:118:35 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] |
+| test_futures_io.rs:118:28:118:34 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
+| test_futures_io.rs:118:31:118:33 | buf | semmle.label | buf |
+| test_futures_io.rs:119:18:119:20 | buf | semmle.label | buf |
+| test_futures_io.rs:125:13:125:18 | buffer | semmle.label | buffer |
+| test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] |
+| test_futures_io.rs:125:22:125:45 | await ... [Ok] | semmle.label | await ... [Ok] |
+| test_futures_io.rs:125:22:125:46 | TryExpr | semmle.label | TryExpr |
+| test_futures_io.rs:126:14:126:19 | buffer | semmle.label | buffer |
+| test_futures_io.rs:132:27:132:33 | reader2 | semmle.label | reader2 |
+| test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] |
+| test_futures_io.rs:132:58:132:61 | [post] line | semmle.label | [post] line |
+| test_futures_io.rs:133:14:133:18 | &line | semmle.label | &line |
+| test_futures_io.rs:133:15:133:18 | line | semmle.label | line |
+| test_futures_io.rs:139:27:139:33 | reader2 | semmle.label | reader2 |
+| test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] |
+| test_futures_io.rs:139:50:139:53 | [post] line | semmle.label | [post] line |
+| test_futures_io.rs:140:14:140:18 | &line | semmle.label | &line |
+| test_futures_io.rs:140:15:140:18 | line | semmle.label | line |
+| test_futures_io.rs:146:27:146:33 | reader2 | semmle.label | reader2 |
+| test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
+| test_futures_io.rs:146:52:146:57 | [post] buffer | semmle.label | [post] buffer |
+| test_futures_io.rs:147:14:147:20 | &buffer | semmle.label | &buffer |
+| test_futures_io.rs:147:15:147:20 | buffer | semmle.label | buffer |
+| web_frameworks.rs:11:31:11:31 | a | semmle.label | a |
+| web_frameworks.rs:11:31:11:31 | a | semmle.label | a |
+| web_frameworks.rs:13:14:13:14 | a | semmle.label | a |
+| web_frameworks.rs:13:14:13:14 | a | semmle.label | a |
+| web_frameworks.rs:13:14:13:22 | a.as_str() | semmle.label | a.as_str() |
+| web_frameworks.rs:13:14:13:23 | a.as_str() | semmle.label | a.as_str() |
+| web_frameworks.rs:14:14:14:14 | a | semmle.label | a |
+| web_frameworks.rs:14:14:14:14 | a | semmle.label | a |
+| web_frameworks.rs:14:14:14:24 | a.as_bytes() | semmle.label | a.as_bytes() |
+| web_frameworks.rs:14:14:14:25 | a.as_bytes() | semmle.label | a.as_bytes() |
+| web_frameworks.rs:15:14:15:14 | a | semmle.label | a |
+| web_frameworks.rs:15:14:15:14 | a | semmle.label | a |
+| web_frameworks.rs:68:15:68:15 | a | semmle.label | a |
+| web_frameworks.rs:68:15:68:15 | a | semmle.label | a |
+| web_frameworks.rs:70:14:70:14 | a | semmle.label | a |
+| web_frameworks.rs:70:14:70:14 | a | semmle.label | a |
+subpaths
+testFailures
+#select
+| test.rs:8:10:8:30 | ...::var(...) | test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | $@ | test.rs:8:10:8:22 | ...::var | ...::var |
+| test.rs:9:10:9:33 | ...::var_os(...) | test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | $@ | test.rs:9:10:9:25 | ...::var_os | ...::var_os |
+| test.rs:14:10:14:13 | var1 | test.rs:11:16:11:28 | ...::var | test.rs:14:10:14:13 | var1 | $@ | test.rs:11:16:11:28 | ...::var | ...::var |
+| test.rs:15:10:15:13 | var2 | test.rs:12:16:12:31 | ...::var_os | test.rs:15:10:15:13 | var2 | $@ | test.rs:12:16:12:31 | ...::var_os | ...::var_os |
+| test.rs:36:10:36:16 | my_path | test.rs:29:29:29:42 | ...::args | test.rs:36:10:36:16 | my_path | $@ | test.rs:29:29:29:42 | ...::args | ...::args |
+| test.rs:37:10:37:13 | arg1 | test.rs:29:29:29:42 | ...::args | test.rs:37:10:37:13 | arg1 | $@ | test.rs:29:29:29:42 | ...::args | ...::args |
+| test.rs:38:10:38:13 | arg2 | test.rs:32:16:32:29 | ...::args | test.rs:38:10:38:13 | arg2 | $@ | test.rs:32:16:32:29 | ...::args | ...::args |
+| test.rs:39:10:39:13 | arg3 | test.rs:33:16:33:32 | ...::args_os | test.rs:39:10:39:13 | arg3 | $@ | test.rs:33:16:33:32 | ...::args_os | ...::args_os |
+| test.rs:40:10:40:13 | arg4 | test.rs:34:16:34:29 | ...::args | test.rs:40:10:40:13 | arg4 | $@ | test.rs:34:16:34:29 | ...::args | ...::args |
+| test.rs:43:14:43:16 | arg | test.rs:42:16:42:29 | ...::args | test.rs:43:14:43:16 | arg | $@ | test.rs:42:16:42:29 | ...::args | ...::args |
+| test.rs:47:14:47:16 | arg | test.rs:46:16:46:32 | ...::args_os | test.rs:47:14:47:16 | arg | $@ | test.rs:46:16:46:32 | ...::args_os | ...::args_os |
+| test.rs:56:10:56:12 | dir | test.rs:52:15:52:35 | ...::current_dir | test.rs:56:10:56:12 | dir | $@ | test.rs:52:15:52:35 | ...::current_dir | ...::current_dir |
+| test.rs:57:10:57:12 | exe | test.rs:53:15:53:35 | ...::current_exe | test.rs:57:10:57:12 | exe | $@ | test.rs:53:15:53:35 | ...::current_exe | ...::current_exe |
+| test.rs:58:10:58:13 | home | test.rs:54:16:54:33 | ...::home_dir | test.rs:58:10:58:13 | home | $@ | test.rs:54:16:54:33 | ...::home_dir | ...::home_dir |
+| test.rs:63:10:63:23 | remote_string1 | test.rs:62:26:62:47 | ...::get | test.rs:63:10:63:23 | remote_string1 | $@ | test.rs:62:26:62:47 | ...::get | ...::get |
+| test.rs:66:10:66:23 | remote_string2 | test.rs:65:26:65:47 | ...::get | test.rs:66:10:66:23 | remote_string2 | $@ | test.rs:65:26:65:47 | ...::get | ...::get |
+| test.rs:69:10:69:23 | remote_string3 | test.rs:68:26:68:47 | ...::get | test.rs:69:10:69:23 | remote_string3 | $@ | test.rs:68:26:68:47 | ...::get | ...::get |
+| test.rs:72:10:72:23 | remote_string4 | test.rs:71:26:71:47 | ...::get | test.rs:72:10:72:23 | remote_string4 | $@ | test.rs:71:26:71:47 | ...::get | ...::get |
+| test.rs:75:10:75:23 | remote_string5 | test.rs:74:26:74:37 | ...::get | test.rs:75:10:75:23 | remote_string5 | $@ | test.rs:74:26:74:37 | ...::get | ...::get |
+| test.rs:78:10:78:23 | remote_string6 | test.rs:77:26:77:37 | ...::get | test.rs:78:10:78:23 | remote_string6 | $@ | test.rs:77:26:77:37 | ...::get | ...::get |
+| test.rs:81:10:81:41 | ... .unwrap() | test.rs:80:24:80:35 | ...::get | test.rs:81:10:81:41 | ... .unwrap() | $@ | test.rs:80:24:80:35 | ...::get | ...::get |
+| test.rs:83:14:83:18 | chunk | test.rs:80:24:80:35 | ...::get | test.rs:83:14:83:18 | chunk | $@ | test.rs:80:24:80:35 | ...::get | ...::get |
+| test.rs:115:14:115:22 | &response | test.rs:114:31:114:42 | send_request | test.rs:115:14:115:22 | &response | $@ | test.rs:114:31:114:42 | send_request | send_request |
+| test.rs:116:14:116:21 | response | test.rs:114:31:114:42 | send_request | test.rs:116:14:116:21 | response | $@ | test.rs:114:31:114:42 | send_request | send_request |
+| test.rs:122:10:122:18 | &response | test.rs:121:31:121:42 | send_request | test.rs:122:10:122:18 | &response | $@ | test.rs:121:31:121:42 | send_request | send_request |
+| test.rs:212:14:212:20 | &buffer | test.rs:211:22:211:35 | ...::stdin | test.rs:212:14:212:20 | &buffer | $@ | test.rs:211:22:211:35 | ...::stdin | ...::stdin |
+| test.rs:218:14:218:20 | &buffer | test.rs:217:22:217:35 | ...::stdin | test.rs:218:14:218:20 | &buffer | $@ | test.rs:217:22:217:35 | ...::stdin | ...::stdin |
+| test.rs:224:14:224:20 | &buffer | test.rs:223:22:223:35 | ...::stdin | test.rs:224:14:224:20 | &buffer | $@ | test.rs:223:22:223:35 | ...::stdin | ...::stdin |
+| test.rs:230:14:230:20 | &buffer | test.rs:229:22:229:35 | ...::stdin | test.rs:230:14:230:20 | &buffer | $@ | test.rs:229:22:229:35 | ...::stdin | ...::stdin |
+| test.rs:236:14:236:20 | &buffer | test.rs:235:9:235:22 | ...::stdin | test.rs:236:14:236:20 | &buffer | $@ | test.rs:235:9:235:22 | ...::stdin | ...::stdin |
+| test.rs:240:14:240:17 | byte | test.rs:239:17:239:30 | ...::stdin | test.rs:240:14:240:17 | byte | $@ | test.rs:239:17:239:30 | ...::stdin | ...::stdin |
+| test.rs:248:14:248:18 | &data | test.rs:246:50:246:63 | ...::stdin | test.rs:248:14:248:18 | &data | $@ | test.rs:246:50:246:63 | ...::stdin | ...::stdin |
+| test.rs:254:14:254:18 | &data | test.rs:252:46:252:59 | ...::stdin | test.rs:254:14:254:18 | &data | $@ | test.rs:252:46:252:59 | ...::stdin | ...::stdin |
+| test.rs:261:14:261:20 | &buffer | test.rs:259:50:259:63 | ...::stdin | test.rs:261:14:261:20 | &buffer | $@ | test.rs:259:50:259:63 | ...::stdin | ...::stdin |
+| test.rs:268:14:268:20 | &buffer | test.rs:266:50:266:63 | ...::stdin | test.rs:268:14:268:20 | &buffer | $@ | test.rs:266:50:266:63 | ...::stdin | ...::stdin |
+| test.rs:269:14:269:22 | buffer[0] | test.rs:266:50:266:63 | ...::stdin | test.rs:269:14:269:22 | buffer[0] | $@ | test.rs:266:50:266:63 | ...::stdin | ...::stdin |
+| test.rs:274:14:274:50 | ... .unwrap() | test.rs:273:56:273:69 | ...::stdin | test.rs:274:14:274:50 | ... .unwrap() | $@ | test.rs:273:56:273:69 | ...::stdin | ...::stdin |
+| test.rs:276:18:276:31 | chunk.unwrap() | test.rs:273:56:273:69 | ...::stdin | test.rs:276:18:276:31 | chunk.unwrap() | $@ | test.rs:273:56:273:69 | ...::stdin | ...::stdin |
+| test.rs:283:18:283:21 | line | test.rs:281:46:281:59 | ...::stdin | test.rs:283:18:283:21 | line | $@ | test.rs:281:46:281:59 | ...::stdin | ...::stdin |
+| test.rs:312:14:312:20 | &buffer | test.rs:309:25:309:40 | ...::stdin | test.rs:312:14:312:20 | &buffer | $@ | test.rs:309:25:309:40 | ...::stdin | ...::stdin |
+| test.rs:319:14:319:20 | &buffer | test.rs:316:25:316:40 | ...::stdin | test.rs:319:14:319:20 | &buffer | $@ | test.rs:316:25:316:40 | ...::stdin | ...::stdin |
+| test.rs:326:14:326:20 | &buffer | test.rs:323:25:323:40 | ...::stdin | test.rs:326:14:326:20 | &buffer | $@ | test.rs:323:25:323:40 | ...::stdin | ...::stdin |
+| test.rs:333:14:333:20 | &buffer | test.rs:330:25:330:40 | ...::stdin | test.rs:333:14:333:20 | &buffer | $@ | test.rs:330:25:330:40 | ...::stdin | ...::stdin |
+| test.rs:342:14:342:15 | v1 | test.rs:337:25:337:40 | ...::stdin | test.rs:342:14:342:15 | v1 | $@ | test.rs:337:25:337:40 | ...::stdin | ...::stdin |
+| test.rs:343:14:343:15 | v2 | test.rs:337:25:337:40 | ...::stdin | test.rs:343:14:343:15 | v2 | $@ | test.rs:337:25:337:40 | ...::stdin | ...::stdin |
+| test.rs:344:14:344:15 | v3 | test.rs:337:25:337:40 | ...::stdin | test.rs:344:14:344:15 | v3 | $@ | test.rs:337:25:337:40 | ...::stdin | ...::stdin |
+| test.rs:345:14:345:15 | v4 | test.rs:337:25:337:40 | ...::stdin | test.rs:345:14:345:15 | v4 | $@ | test.rs:337:25:337:40 | ...::stdin | ...::stdin |
+| test.rs:352:14:352:20 | &buffer | test.rs:349:25:349:40 | ...::stdin | test.rs:352:14:352:20 | &buffer | $@ | test.rs:349:25:349:40 | ...::stdin | ...::stdin |
+| test.rs:360:14:360:18 | &data | test.rs:358:52:358:67 | ...::stdin | test.rs:360:14:360:18 | &data | $@ | test.rs:358:52:358:67 | ...::stdin | ...::stdin |
+| test.rs:366:14:366:18 | &data | test.rs:364:48:364:63 | ...::stdin | test.rs:366:14:366:18 | &data | $@ | test.rs:364:48:364:63 | ...::stdin | ...::stdin |
+| test.rs:373:14:373:20 | &buffer | test.rs:371:52:371:67 | ...::stdin | test.rs:373:14:373:20 | &buffer | $@ | test.rs:371:52:371:67 | ...::stdin | ...::stdin |
+| test.rs:380:14:380:20 | &buffer | test.rs:378:52:378:67 | ...::stdin | test.rs:380:14:380:20 | &buffer | $@ | test.rs:378:52:378:67 | ...::stdin | ...::stdin |
+| test.rs:381:14:381:22 | buffer[0] | test.rs:378:52:378:67 | ...::stdin | test.rs:381:14:381:22 | buffer[0] | $@ | test.rs:378:52:378:67 | ...::stdin | ...::stdin |
+| test.rs:386:14:386:56 | ... .unwrap() | test.rs:385:58:385:73 | ...::stdin | test.rs:386:14:386:56 | ... .unwrap() | $@ | test.rs:385:58:385:73 | ...::stdin | ...::stdin |
+| test.rs:388:18:388:22 | chunk | test.rs:385:58:385:73 | ...::stdin | test.rs:388:18:388:22 | chunk | $@ | test.rs:385:58:385:73 | ...::stdin | ...::stdin |
+| test.rs:395:14:395:46 | ... .unwrap() | test.rs:393:48:393:63 | ...::stdin | test.rs:395:14:395:46 | ... .unwrap() | $@ | test.rs:393:48:393:63 | ...::stdin | ...::stdin |
+| test.rs:397:18:397:21 | line | test.rs:393:48:393:63 | ...::stdin | test.rs:397:18:397:21 | line | $@ | test.rs:393:48:393:63 | ...::stdin | ...::stdin |
+| test.rs:409:14:409:19 | buffer | test.rs:408:31:408:43 | ...::read | test.rs:409:14:409:19 | buffer | $@ | test.rs:408:31:408:43 | ...::read | ...::read |
+| test.rs:414:14:414:19 | buffer | test.rs:413:31:413:38 | ...::read | test.rs:414:14:414:19 | buffer | $@ | test.rs:413:31:413:38 | ...::read | ...::read |
+| test.rs:419:14:419:19 | buffer | test.rs:418:22:418:39 | ...::read_to_string | test.rs:419:14:419:19 | buffer | $@ | test.rs:418:22:418:39 | ...::read_to_string | ...::read_to_string |
+| test.rs:426:14:426:25 | path.clone() | test.rs:425:22:425:25 | path | test.rs:426:14:426:25 | path.clone() | $@ | test.rs:425:22:425:25 | path | path |
+| test.rs:427:14:427:35 | ... .as_path() | test.rs:425:22:425:25 | path | test.rs:427:14:427:35 | ... .as_path() | $@ | test.rs:425:22:425:25 | path | path |
+| test.rs:437:14:437:17 | path | test.rs:425:22:425:25 | path | test.rs:437:14:437:17 | path | $@ | test.rs:425:22:425:25 | path | path |
+| test.rs:440:14:440:30 | file_name.clone() | test.rs:439:27:439:35 | file_name | test.rs:440:14:440:30 | file_name.clone() | $@ | test.rs:439:27:439:35 | file_name | file_name |
+| test.rs:445:14:445:22 | file_name | test.rs:439:27:439:35 | file_name | test.rs:445:14:445:22 | file_name | $@ | test.rs:439:27:439:35 | file_name | file_name |
+| test.rs:462:14:462:19 | target | test.rs:461:22:461:34 | ...::read_link | test.rs:462:14:462:19 | target | $@ | test.rs:461:22:461:34 | ...::read_link | ...::read_link |
+| test.rs:471:14:471:19 | buffer | test.rs:470:31:470:45 | ...::read | test.rs:471:14:471:19 | buffer | $@ | test.rs:470:31:470:45 | ...::read | ...::read |
+| test.rs:476:14:476:19 | buffer | test.rs:475:31:475:45 | ...::read | test.rs:476:14:476:19 | buffer | $@ | test.rs:475:31:475:45 | ...::read | ...::read |
+| test.rs:481:14:481:19 | buffer | test.rs:480:22:480:46 | ...::read_to_string | test.rs:481:14:481:19 | buffer | $@ | test.rs:480:22:480:46 | ...::read_to_string | ...::read_to_string |
+| test.rs:488:14:488:17 | path | test.rs:486:26:486:29 | path | test.rs:488:14:488:17 | path | $@ | test.rs:486:26:486:29 | path | path |
+| test.rs:488:14:488:17 | path | test.rs:486:26:486:29 | path | test.rs:488:14:488:17 | path | $@ | test.rs:486:26:486:29 | path | path |
+| test.rs:489:14:489:22 | file_name | test.rs:487:31:487:39 | file_name | test.rs:489:14:489:22 | file_name | $@ | test.rs:487:31:487:39 | file_name | file_name |
+| test.rs:489:14:489:22 | file_name | test.rs:487:31:487:39 | file_name | test.rs:489:14:489:22 | file_name | $@ | test.rs:487:31:487:39 | file_name | file_name |
+| test.rs:494:14:494:19 | target | test.rs:493:22:493:41 | ...::read_link | test.rs:494:14:494:19 | target | $@ | test.rs:493:22:493:41 | ...::read_link | ...::read_link |
+| test.rs:508:14:508:20 | &buffer | test.rs:503:20:503:38 | ...::open | test.rs:508:14:508:20 | &buffer | $@ | test.rs:503:20:503:38 | ...::open | ...::open |
+| test.rs:514:14:514:20 | &buffer | test.rs:503:20:503:38 | ...::open | test.rs:514:14:514:20 | &buffer | $@ | test.rs:503:20:503:38 | ...::open | ...::open |
+| test.rs:520:14:520:20 | &buffer | test.rs:503:20:503:38 | ...::open | test.rs:520:14:520:20 | &buffer | $@ | test.rs:503:20:503:38 | ...::open | ...::open |
+| test.rs:526:14:526:20 | &buffer | test.rs:503:20:503:38 | ...::open | test.rs:526:14:526:20 | &buffer | $@ | test.rs:503:20:503:38 | ...::open | ...::open |
+| test.rs:530:14:530:17 | byte | test.rs:503:20:503:38 | ...::open | test.rs:530:14:530:17 | byte | $@ | test.rs:503:20:503:38 | ...::open | ...::open |
+| test.rs:539:14:539:20 | &buffer | test.rs:536:50:536:53 | open | test.rs:539:14:539:20 | &buffer | $@ | test.rs:536:50:536:53 | open | open |
+| test.rs:546:14:546:20 | &buffer | test.rs:543:67:543:70 | open | test.rs:546:14:546:20 | &buffer | $@ | test.rs:543:67:543:70 | open | open |
+| test.rs:553:14:553:20 | &buffer | test.rs:550:101:550:104 | open | test.rs:553:14:553:20 | &buffer | $@ | test.rs:550:101:550:104 | open | open |
+| test.rs:564:14:564:20 | &buffer | test.rs:560:21:560:39 | ...::open | test.rs:564:14:564:20 | &buffer | $@ | test.rs:560:21:560:39 | ...::open | ...::open |
+| test.rs:564:14:564:20 | &buffer | test.rs:561:21:561:39 | ...::open | test.rs:564:14:564:20 | &buffer | $@ | test.rs:561:21:561:39 | ...::open | ...::open |
+| test.rs:572:14:572:20 | &buffer | test.rs:569:21:569:39 | ...::open | test.rs:572:14:572:20 | &buffer | $@ | test.rs:569:21:569:39 | ...::open | ...::open |
+| test.rs:586:14:586:20 | &buffer | test.rs:581:20:581:40 | ...::open | test.rs:586:14:586:20 | &buffer | $@ | test.rs:581:20:581:40 | ...::open | ...::open |
+| test.rs:592:14:592:20 | &buffer | test.rs:581:20:581:40 | ...::open | test.rs:592:14:592:20 | &buffer | $@ | test.rs:581:20:581:40 | ...::open | ...::open |
+| test.rs:598:14:598:20 | &buffer | test.rs:581:20:581:40 | ...::open | test.rs:598:14:598:20 | &buffer | $@ | test.rs:581:20:581:40 | ...::open | ...::open |
+| test.rs:604:14:604:20 | &buffer | test.rs:581:20:581:40 | ...::open | test.rs:604:14:604:20 | &buffer | $@ | test.rs:581:20:581:40 | ...::open | ...::open |
+| test.rs:612:14:612:15 | v1 | test.rs:581:20:581:40 | ...::open | test.rs:612:14:612:15 | v1 | $@ | test.rs:581:20:581:40 | ...::open | ...::open |
+| test.rs:613:14:613:15 | v2 | test.rs:581:20:581:40 | ...::open | test.rs:613:14:613:15 | v2 | $@ | test.rs:581:20:581:40 | ...::open | ...::open |
+| test.rs:614:14:614:15 | v3 | test.rs:581:20:581:40 | ...::open | test.rs:614:14:614:15 | v3 | $@ | test.rs:581:20:581:40 | ...::open | ...::open |
+| 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: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 |
+| test.rs:774:14:774:21 | &buffer1 | test.rs:759:28:759:57 | ...::connect | test.rs:774:14:774:21 | &buffer1 | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect |
+| test.rs:775:14:775:23 | buffer1[0] | test.rs:759:28:759:57 | ...::connect | test.rs:775:14:775:23 | buffer1[0] | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect |
+| test.rs:778:14:778:21 | &buffer2 | test.rs:759:28:759:57 | ...::connect | test.rs:778:14:778:21 | &buffer2 | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect |
+| test.rs:779:14:779:23 | buffer2[0] | test.rs:759:28:759:57 | ...::connect | test.rs:779:14:779:23 | buffer2[0] | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect |
+| test.rs:794:26:794:32 | &buffer | test.rs:759:28:759:57 | ...::connect | test.rs:794:26:794:32 | &buffer | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect |
+| test.rs:817:26:817:32 | &buffer | test.rs:759:28:759:57 | ...::connect | test.rs:817:26:817:32 | &buffer | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect |
+| test_futures_io.rs:20:10:20:13 | &tcp | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:20:10:20:13 | &tcp | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:27:10:27:16 | &reader | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:27:10:27:16 | &reader | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:33:14:33:20 | &pinned | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:33:14:33:20 | &pinned | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:46:14:46:36 | &... | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:46:14:46:36 | &... | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:51:14:51:36 | &... | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:51:14:51:36 | &... | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:55:10:55:17 | &reader2 | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:55:10:55:17 | &reader2 | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:60:14:60:20 | &pinned | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:60:14:60:20 | &pinned | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:64:18:64:24 | &buffer | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:64:18:64:24 | &buffer | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:65:18:65:20 | buf | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:65:18:65:20 | buf | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:72:22:72:29 | &buffer2 | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:72:22:72:29 | &buffer2 | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:73:22:73:24 | buf | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:73:22:73:24 | buf | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:84:14:84:19 | buffer | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:84:14:84:19 | buffer | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:91:14:91:20 | &pinned | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:91:14:91:20 | &pinned | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:104:14:104:36 | &... | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:104:14:104:36 | &... | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:108:14:108:36 | &... | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:108:14:108:36 | &... | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:114:14:114:20 | &pinned | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:114:14:114:20 | &pinned | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:117:14:117:20 | &buffer | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:117:14:117:20 | &buffer | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:119:18:119:20 | buf | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:119:18:119:20 | buf | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:126:14:126:19 | buffer | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:126:14:126:19 | buffer | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:133:14:133:18 | &line | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:133:14:133:18 | &line | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:140:14:140:18 | &line | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:140:14:140:18 | &line | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| test_futures_io.rs:147:14:147:20 | &buffer | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:147:14:147:20 | &buffer | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect |
+| web_frameworks.rs:13:14:13:22 | a.as_str() | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | $@ | web_frameworks.rs:11:31:11:31 | a | a |
+| web_frameworks.rs:13:14:13:23 | a.as_str() | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | $@ | web_frameworks.rs:11:31:11:31 | a | a |
+| web_frameworks.rs:14:14:14:24 | a.as_bytes() | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | $@ | web_frameworks.rs:11:31:11:31 | a | a |
+| web_frameworks.rs:14:14:14:25 | a.as_bytes() | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | $@ | web_frameworks.rs:11:31:11:31 | a | a |
+| web_frameworks.rs:15:14:15:14 | a | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | $@ | web_frameworks.rs:11:31:11:31 | a | a |
+| web_frameworks.rs:15:14:15:14 | a | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | $@ | web_frameworks.rs:11:31:11:31 | a | a |
+| web_frameworks.rs:70:14:70:14 | a | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | $@ | web_frameworks.rs:68:15:68:15 | a | a |
+| web_frameworks.rs:70:14:70:14 | a | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | $@ | web_frameworks.rs:68:15:68:15 | a | a |
diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql
index d13ca71f16e..09b4ab5bf90 100644
--- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql
+++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql
@@ -1,3 +1,7 @@
+/**
+ * @kind path-problem
+ */
+
import rust
import codeql.rust.dataflow.DataFlow
import codeql.rust.Concepts
@@ -25,3 +29,8 @@ module MyFlowConfig implements DataFlow::ConfigSig {
module MyFlowTest = TaintFlowTest;
import MyFlowTest
+import PathGraph
+
+from PathNode source, PathNode sink
+where flowPath(source, sink)
+select sink, source, sink, "$@", source, source.toString()
From d93b2edc0daf081a5da8aa9a5daa470d8f70f944 Mon Sep 17 00:00:00 2001
From: Anders Schack-Mulligen
Date: Thu, 18 Sep 2025 08:13:43 +0200
Subject: [PATCH 30/49] Ruby: Accept test changes.
---
.../controlflow/graph/BasicBlocks.expected | 40 +++++++++++++------
1 file changed, 28 insertions(+), 12 deletions(-)
diff --git a/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.expected b/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.expected
index 35b18b7132b..720ee26e679 100644
--- a/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.expected
+++ b/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.expected
@@ -6252,7 +6252,8 @@ joinBlockPredecessor
| break_ensure.rb:20:7:22:9 | [ensure: exception] if ... | break_ensure.rb:21:9:21:20 | [ensure: exception] self | 1 |
| break_ensure.rb:20:7:22:9 | if ... | break_ensure.rb:16:7:18:9 | if ... | 0 |
| break_ensure.rb:20:7:22:9 | if ... | break_ensure.rb:21:9:21:20 | self | 1 |
-| break_ensure.rb:27:1:42:3 | exit m3 | break_ensure.rb:33:5:39:7 | [ensure: exception] while ... | 0 |
+| break_ensure.rb:27:1:42:3 | exit m3 | break_ensure.rb:27:1:42:3 | exit m3 (normal) | 0 |
+| break_ensure.rb:27:1:42:3 | exit m3 | break_ensure.rb:33:5:39:7 | [ensure: exception] while ... | 1 |
| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:33:5:39:7 | [ensure: return] while ... | 1 |
| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:33:5:39:7 | while ... | 0 |
| break_ensure.rb:33:5:39:7 | [ensure: exception] while ... | break_ensure.rb:33:11:33:11 | [ensure: exception] y | 0 |
@@ -6286,20 +6287,25 @@ joinBlockPredecessor
| case.rb:9:3:17:5 | case ... | case.rb:14:25:14:25 | 6 | 3 |
| case.rb:9:3:17:5 | case ... | case.rb:15:28:15:28 | 7 | 4 |
| case.rb:9:3:17:5 | case ... | case.rb:16:10:16:10 | 8 | 5 |
-| case.rb:20:1:24:3 | exit case_match_no_match | case.rb:21:3:23:5 | case ... | 0 |
-| case.rb:26:1:30:3 | exit case_match_raise | case.rb:27:3:29:5 | case ... | 0 |
-| case.rb:32:1:39:3 | exit case_match_array | case.rb:33:3:38:5 | case ... | 0 |
+| case.rb:20:1:24:3 | exit case_match_no_match | case.rb:20:1:24:3 | exit case_match_no_match (abnormal) | 0 |
+| case.rb:20:1:24:3 | exit case_match_no_match | case.rb:21:3:23:5 | case ... | 1 |
+| case.rb:26:1:30:3 | exit case_match_raise | case.rb:26:1:30:3 | exit case_match_raise (abnormal) | 0 |
+| case.rb:26:1:30:3 | exit case_match_raise | case.rb:27:3:29:5 | case ... | 1 |
+| case.rb:32:1:39:3 | exit case_match_array | case.rb:32:1:39:3 | exit case_match_array (abnormal) | 0 |
+| case.rb:32:1:39:3 | exit case_match_array | case.rb:33:3:38:5 | case ... | 1 |
| case.rb:32:1:39:3 | exit case_match_array (abnormal) | case.rb:37:5:37:27 | in ... then ... | 0 |
| case.rb:32:1:39:3 | exit case_match_array (abnormal) | case.rb:37:8:37:26 | [ ..., * ] | 1 |
| case.rb:33:3:38:5 | case ... | case.rb:32:1:39:3 | enter case_match_array | 0 |
| case.rb:33:3:38:5 | case ... | case.rb:35:9:35:9 | x | 1 |
| case.rb:33:3:38:5 | case ... | case.rb:36:9:36:9 | x | 2 |
| case.rb:33:3:38:5 | case ... | case.rb:37:25:37:25 | e | 3 |
-| case.rb:41:1:45:3 | exit case_match_find | case.rb:43:20:43:20 | y | 0 |
+| case.rb:41:1:45:3 | exit case_match_find | case.rb:41:1:45:3 | exit case_match_find (abnormal) | 0 |
+| case.rb:41:1:45:3 | exit case_match_find | case.rb:43:20:43:20 | y | 1 |
| case.rb:41:1:45:3 | exit case_match_find (abnormal) | case.rb:41:1:45:3 | enter case_match_find | 0 |
| case.rb:41:1:45:3 | exit case_match_find (abnormal) | case.rb:43:10:43:10 | x | 1 |
| case.rb:41:1:45:3 | exit case_match_find (abnormal) | case.rb:43:16:43:16 | 2 | 2 |
-| case.rb:47:1:53:3 | exit case_match_hash | case.rb:48:3:52:5 | case ... | 0 |
+| case.rb:47:1:53:3 | exit case_match_hash | case.rb:47:1:53:3 | exit case_match_hash (abnormal) | 0 |
+| case.rb:47:1:53:3 | exit case_match_hash | case.rb:48:3:52:5 | case ... | 1 |
| case.rb:47:1:53:3 | exit case_match_hash (abnormal) | case.rb:51:5:51:17 | in ... then ... | 0 |
| case.rb:47:1:53:3 | exit case_match_hash (abnormal) | case.rb:51:8:51:16 | { ..., ** } | 1 |
| case.rb:48:3:52:5 | case ... | case.rb:49:29:49:32 | rest | 0 |
@@ -6315,7 +6321,8 @@ joinBlockPredecessor
| case.rb:56:3:60:5 | case ... | case.rb:58:5:58:10 | in ... then ... | 1 |
| case.rb:64:3:66:5 | case ... | case.rb:63:1:67:3 | enter case_match_underscore | 0 |
| case.rb:64:3:66:5 | case ... | case.rb:65:12:65:12 | _ | 1 |
-| case.rb:69:1:93:3 | exit case_match_various | case.rb:72:3:92:5 | case ... | 0 |
+| case.rb:69:1:93:3 | exit case_match_various | case.rb:69:1:93:3 | exit case_match_various (abnormal) | 0 |
+| case.rb:69:1:93:3 | exit case_match_various | case.rb:72:3:92:5 | case ... | 1 |
| case.rb:72:3:92:5 | case ... | case.rb:69:1:93:3 | enter case_match_various | 0 |
| case.rb:72:3:92:5 | case ... | case.rb:74:5:74:11 | in ... then ... | 1 |
| case.rb:72:3:92:5 | case ... | case.rb:75:5:75:15 | in ... then ... | 2 |
@@ -6347,7 +6354,8 @@ joinBlockPredecessor
| case.rb:72:3:92:5 | case ... | case.rb:91:13:91:14 | "" | 28 |
| case.rb:72:3:92:5 | case ... | case.rb:91:18:91:19 | [ ..., * ] | 29 |
| case.rb:72:3:92:5 | case ... | case.rb:91:23:91:24 | { ..., ** } | 30 |
-| case.rb:95:1:99:3 | exit case_match_guard_no_else | case.rb:97:25:97:25 | 6 | 0 |
+| case.rb:95:1:99:3 | exit case_match_guard_no_else | case.rb:95:1:99:3 | exit case_match_guard_no_else (abnormal) | 0 |
+| case.rb:95:1:99:3 | exit case_match_guard_no_else | case.rb:97:25:97:25 | 6 | 1 |
| cfg.html.erb:18:14:22:16 | if ... | cfg.html.erb:19:19:19:32 | self | 0 |
| cfg.html.erb:18:14:22:16 | if ... | cfg.html.erb:21:19:21:32 | self | 1 |
| cfg.rb:41:1:45:3 | case ... | cfg.rb:42:15:42:24 | self | 0 |
@@ -6454,7 +6462,8 @@ joinBlockPredecessor
| loops.rb:31:9:31:9 | x | loops.rb:31:15:32:5 | do ... | 1 |
| raise.rb:7:1:12:3 | exit m1 | raise.rb:8:3:10:5 | if ... | 0 |
| raise.rb:7:1:12:3 | exit m1 | raise.rb:9:5:9:17 | self | 1 |
-| raise.rb:14:1:23:3 | exit m2 | raise.rb:22:3:22:15 | self | 0 |
+| raise.rb:14:1:23:3 | exit m2 | raise.rb:14:1:23:3 | exit m2 (abnormal) | 0 |
+| raise.rb:14:1:23:3 | exit m2 | raise.rb:22:3:22:15 | self | 1 |
| raise.rb:22:3:22:15 | self | raise.rb:16:5:18:7 | if ... | 0 |
| raise.rb:22:3:22:15 | self | raise.rb:20:5:20:18 | self | 1 |
| raise.rb:33:3:33:15 | self | raise.rb:27:5:29:7 | if ... | 0 |
@@ -6463,25 +6472,30 @@ joinBlockPredecessor
| raise.rb:44:3:44:15 | self | raise.rb:39:7:39:22 | self | 1 |
| raise.rb:54:3:54:15 | self | raise.rb:49:5:51:7 | if ... | 0 |
| raise.rb:54:3:54:15 | self | raise.rb:50:7:50:22 | self | 1 |
-| raise.rb:57:1:66:3 | exit m6 | raise.rb:65:3:65:15 | self | 0 |
+| raise.rb:57:1:66:3 | exit m6 | raise.rb:57:1:66:3 | exit m6 (abnormal) | 0 |
+| raise.rb:57:1:66:3 | exit m6 | raise.rb:65:3:65:15 | self | 1 |
| raise.rb:62:36:62:36 | e | raise.rb:60:7:60:22 | self | 0 |
| raise.rb:62:36:62:36 | e | raise.rb:62:22:62:31 | ExceptionB | 1 |
| raise.rb:65:3:65:15 | self | raise.rb:59:5:61:7 | if ... | 0 |
| raise.rb:65:3:65:15 | self | raise.rb:62:36:62:36 | e | 1 |
-| raise.rb:68:1:77:3 | exit m7 | raise.rb:76:3:76:15 | [ensure: exception] self | 0 |
+| raise.rb:68:1:77:3 | exit m7 | raise.rb:68:1:77:3 | exit m7 (normal) | 0 |
+| raise.rb:68:1:77:3 | exit m7 | raise.rb:76:3:76:15 | [ensure: exception] self | 1 |
| raise.rb:68:1:77:3 | exit m7 (normal) | raise.rb:72:13:72:17 | x < 0 | 0 |
| raise.rb:68:1:77:3 | exit m7 (normal) | raise.rb:76:3:76:15 | self | 1 |
| raise.rb:76:3:76:15 | [ensure: exception] self | raise.rb:68:1:77:3 | enter m7 | 0 |
| raise.rb:76:3:76:15 | [ensure: exception] self | raise.rb:70:5:70:17 | self | 1 |
| raise.rb:76:3:76:15 | [ensure: exception] self | raise.rb:71:3:72:18 | elsif ... | 2 |
| raise.rb:76:3:76:15 | [ensure: exception] self | raise.rb:71:9:71:9 | x | 3 |
-| raise.rb:79:1:92:3 | exit m8 | raise.rb:89:5:89:17 | [ensure: exception] self | 0 |
+| raise.rb:79:1:92:3 | exit m8 | raise.rb:79:1:92:3 | exit m8 (normal) | 0 |
+| raise.rb:79:1:92:3 | exit m8 | raise.rb:89:5:89:17 | [ensure: exception] self | 1 |
| raise.rb:79:1:92:3 | exit m8 (normal) | raise.rb:85:15:85:19 | x < 0 | 0 |
| raise.rb:79:1:92:3 | exit m8 (normal) | raise.rb:89:5:89:17 | self | 1 |
| raise.rb:89:5:89:17 | [ensure: exception] self | raise.rb:79:1:92:3 | enter m8 | 0 |
| raise.rb:89:5:89:17 | [ensure: exception] self | raise.rb:83:7:83:19 | self | 1 |
| raise.rb:89:5:89:17 | [ensure: exception] self | raise.rb:84:5:85:20 | elsif ... | 2 |
| raise.rb:89:5:89:17 | [ensure: exception] self | raise.rb:84:11:84:11 | x | 3 |
+| raise.rb:94:1:119:3 | exit m9 | raise.rb:94:1:119:3 | exit m9 (abnormal) | 1 |
+| raise.rb:94:1:119:3 | exit m9 | raise.rb:94:1:119:3 | exit m9 (normal) | 0 |
| raise.rb:94:1:119:3 | exit m9 (abnormal) | raise.rb:116:3:118:5 | [ensure: exception] if ... | 0 |
| raise.rb:94:1:119:3 | exit m9 (abnormal) | raise.rb:117:5:117:22 | [ensure: exception] self | 2 |
| raise.rb:94:1:119:3 | exit m9 (abnormal) | raise.rb:117:5:117:22 | [ensure: return] self | 3 |
@@ -6520,6 +6534,8 @@ joinBlockPredecessor
| raise.rb:155:16:155:50 | exit { ... } | raise.rb:155:25:155:48 | ... if ... | 0 |
| raise.rb:160:9:162:7 | exit -> { ... } | raise.rb:161:7:161:14 | self | 1 |
| raise.rb:160:9:162:7 | exit -> { ... } | raise.rb:161:7:161:23 | ... unless ... | 0 |
+| raise.rb:172:1:182:3 | exit m16 | raise.rb:172:1:182:3 | exit m16 (abnormal) | 1 |
+| raise.rb:172:1:182:3 | exit m16 | raise.rb:172:1:182:3 | exit m16 (normal) | 0 |
| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:175:14:175:14 | 1 | 0 |
| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:177:14:177:14 | 2 | 1 |
| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:180:12:180:12 | 3 | 2 |
From 3cd737e40d43fe5108a2f5710bb733e2c37ce454 Mon Sep 17 00:00:00 2001
From: Kasper Svendsen
Date: Thu, 18 Sep 2025 10:32:20 +0200
Subject: [PATCH 31/49] Overlay: Future-proof Java config discarding
---
java/ql/lib/semmle/code/java/Overlay.qll | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/java/ql/lib/semmle/code/java/Overlay.qll b/java/ql/lib/semmle/code/java/Overlay.qll
index 1d1a3896ba7..27e8badc233 100644
--- a/java/ql/lib/semmle/code/java/Overlay.qll
+++ b/java/ql/lib/semmle/code/java/Overlay.qll
@@ -73,22 +73,24 @@ private predicate discardReferableLocatable(@locatable el) {
)
}
+/** Gets the raw file for a configLocatable. */
overlay[local]
-private predicate baseConfigLocatable(@configLocatable l) { not isOverlay() and exists(l) }
+private string getRawFileForConfig(@configLocatable el) {
+ exists(@location loc, @file file |
+ configLocations(el, loc) and
+ locations_default(loc, file, _, _, _, _) and
+ files(file, result)
+ )
+}
overlay[local]
-private predicate overlayHasConfigLocatables() {
- isOverlay() and
- exists(@configLocatable el)
+private string baseConfigLocatable(@configLocatable el) {
+ not isOverlay() and result = getRawFileForConfig(el)
}
overlay[discard_entity]
private predicate discardBaseConfigLocatable(@configLocatable el) {
- // The properties extractor is currently not incremental, so if
- // the overlay contains any config locatables, the overlay should
- // contain a full extraction and all config locatables from base
- // should be discarded.
- baseConfigLocatable(el) and overlayHasConfigLocatables()
+ overlayChangedFiles(baseConfigLocatable(el))
}
overlay[local]
From dbb9a26f78938a5ddd4763d56e9c7cdb54f204c5 Mon Sep 17 00:00:00 2001
From: Kasper Svendsen
Date: Thu, 18 Sep 2025 10:35:11 +0200
Subject: [PATCH 32/49] Overlay: Future-proof Java XML discarding
---
java/ql/lib/semmle/code/java/Overlay.qll | 22 +---------------------
java/ql/lib/semmle/code/xml/XML.qll | 11 +++++++++++
2 files changed, 12 insertions(+), 21 deletions(-)
diff --git a/java/ql/lib/semmle/code/java/Overlay.qll b/java/ql/lib/semmle/code/java/Overlay.qll
index 27e8badc233..0f6033d87b3 100644
--- a/java/ql/lib/semmle/code/java/Overlay.qll
+++ b/java/ql/lib/semmle/code/java/Overlay.qll
@@ -18,7 +18,7 @@ predicate isOverlay() { databaseMetadata("isOverlay", "true") }
overlay[local]
string getRawFile(@locatable el) {
exists(@location loc, @file file |
- hasLocation(el, loc) and
+ (hasLocation(el, loc) or xmllocations(el, loc)) and
locations_default(loc, file, _, _, _, _) and
files(file, result)
)
@@ -92,23 +92,3 @@ overlay[discard_entity]
private predicate discardBaseConfigLocatable(@configLocatable el) {
overlayChangedFiles(baseConfigLocatable(el))
}
-
-overlay[local]
-private predicate baseXmlLocatable(@xmllocatable l) {
- not isOverlay() and not files(l, _) and not xmlNs(l, _, _, _)
-}
-
-overlay[local]
-private predicate overlayHasXmlLocatable() {
- isOverlay() and
- exists(@xmllocatable l | not files(l, _) and not xmlNs(l, _, _, _))
-}
-
-overlay[discard_entity]
-private predicate discardBaseXmlLocatable(@xmllocatable el) {
- // The XML extractor is currently not incremental, so if
- // the overlay contains any XML locatables, the overlay should
- // contain a full extraction and all XML locatables from base
- // should be discarded.
- baseXmlLocatable(el) and overlayHasXmlLocatable()
-}
diff --git a/java/ql/lib/semmle/code/xml/XML.qll b/java/ql/lib/semmle/code/xml/XML.qll
index e4073362fc6..cd00991eb65 100644
--- a/java/ql/lib/semmle/code/xml/XML.qll
+++ b/java/ql/lib/semmle/code/xml/XML.qll
@@ -6,6 +6,7 @@ module;
import semmle.files.FileSystem
private import codeql.xml.Xml
+private import semmle.code.java.Overlay
private module Input implements InputSig {
class XmlLocatableBase = @xmllocatable or @xmlnamespaceable;
@@ -69,3 +70,13 @@ private module Input implements InputSig {
}
import Make
+
+private class DiscardableXmlAttribute extends DiscardableLocatable, @xmlattribute { }
+
+private class DiscardableXmlElement extends DiscardableLocatable, @xmlelement { }
+
+private class DiscardableXmlComment extends DiscardableLocatable, @xmlcomment { }
+
+private class DiscardableXmlCharacters extends DiscardableLocatable, @xmlcharacters { }
+
+private class DiscardableXmlDtd extends DiscardableLocatable, @xmldtd { }
From c831a8c2d92d7dd7be628f16b3df9eb528184868 Mon Sep 17 00:00:00 2001
From: Tom Hvitved
Date: Wed, 17 Sep 2025 13:43:24 +0200
Subject: [PATCH 33/49] Rust: Add more path resolution tests
---
.../PathResolutionConsistency.expected | 3 +-
.../library-tests/path-resolution/main.rs | 10 +-
.../library-tests/path-resolution/my2/mod.rs | 10 +-
.../path-resolution/my2/my3/mod.rs | 2 +
.../path-resolution/path-resolution.expected | 813 +++++++++---------
5 files changed, 431 insertions(+), 407 deletions(-)
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 9d1761069fe..d945cb4c6c2 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,4 @@
multipleCallTargets
-| main.rs:118:9:118:11 | f(...) |
+| main.rs:124:9:124:11 | f(...) |
+| main.rs:774:5:774:7 | 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 1de91a60fe4..db8e4c0f39d 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() {
@@ -765,7 +771,7 @@ fn main() {
my::nested::nested1::nested2::f(); // $ item=I4
my::f(); // $ item=I38
nested2::nested3::nested4::f(); // $ item=I12
- f(); // $ item=I12
+ f(); // $ item=I12 $ SPURIOUS: item=I119
g(); // $ item=I13
crate::h(); // $ item=I25
m1::m2::g(); // $ item=I19
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 43c1a05e91f..85edb683202 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 6b54377728b..e2d413841c3 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; // $ MISSING: 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 a51816a5228..8f12af96c02 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:774:5:774:5 | f | my2/nested2.rs:23:9:25: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 |
| 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 |
From f6bdfba3b328e8f9d42f5af0fa0cae8363122e84 Mon Sep 17 00:00:00 2001
From: Tom Hvitved
Date: Wed, 17 Sep 2025 13:43:39 +0200
Subject: [PATCH 34/49] Rust: Path resolution improvements
---
.../codeql/rust/internal/PathResolution.qll | 60 +-
.../PathResolutionConsistency.expected | 2 +
.../dataflow/sources/InlineFlow.expected | 840 +++++++++---------
.../library-tests/dataflow/sources/test.rs | 4 +-
.../PathResolutionConsistency.expected | 1 -
.../library-tests/path-resolution/main.rs | 2 +-
.../path-resolution/my2/my3/mod.rs | 2 +-
.../path-resolution/path-resolution.expected | 2 +-
8 files changed, 497 insertions(+), 416 deletions(-)
diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll
index 4b718fc4399..f819632ce10 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 5ba71c14933..0fb7a59f6f4 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 88a728253d8..db0cb969d5a 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 6e30159ea1a..895a789cfaf 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 d945cb4c6c2..7a3fd01dbc7 100644
--- a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected
+++ b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected
@@ -1,4 +1,3 @@
multipleCallTargets
| main.rs:124:9:124:11 | f(...) |
-| main.rs:774:5:774:7 | 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 db8e4c0f39d..5146373b896 100644
--- a/rust/ql/test/library-tests/path-resolution/main.rs
+++ b/rust/ql/test/library-tests/path-resolution/main.rs
@@ -771,7 +771,7 @@ fn main() {
my::nested::nested1::nested2::f(); // $ item=I4
my::f(); // $ item=I38
nested2::nested3::nested4::f(); // $ item=I12
- f(); // $ item=I12 $ SPURIOUS: item=I119
+ f(); // $ item=I12
g(); // $ item=I13
crate::h(); // $ item=I25
m1::m2::g(); // $ item=I19
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 e2d413841c3..b459ca05aa6 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
@@ -7,4 +7,4 @@ pub fn f() {
use super::super::h; // $ item=I25
use super::g; // $ item=I9
-use super::nested6_f; // $ MISSING: item=I116
+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 8f12af96c02..067365a5386 100644
--- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected
+++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected
@@ -361,7 +361,6 @@ resolvePath
| 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:774:5:774:5 | f | my2/nested2.rs:23:9:25: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 |
@@ -440,6 +439,7 @@ resolvePath
| 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 |
From a6c1ffc45d1c6bec8f01e55f5b4ac6989fd2a236 Mon Sep 17 00:00:00 2001
From: Philip Ginsbach
Date: Fri, 19 Sep 2025 10:39:36 +0100
Subject: [PATCH 35/49] sort the annotations alphabetically
---
.../ql-language-reference/annotations.rst | 6 +-
.../ql-language-specification.rst | 62 +++++++++----------
2 files changed, 34 insertions(+), 34 deletions(-)
diff --git a/docs/codeql/ql-language-reference/annotations.rst b/docs/codeql/ql-language-reference/annotations.rst
index 0ddb28c3a9d..00080087d36 100644
--- a/docs/codeql/ql-language-reference/annotations.rst
+++ b/docs/codeql/ql-language-reference/annotations.rst
@@ -16,9 +16,9 @@ For example, to declare a module ``M`` as private, you could use:
}
Note that some annotations act on an entity itself, whilst others act on a particular *name* for the entity:
- - Act on an **entity**: ``abstract``, ``cached``, ``external``, ``transient``, ``override``, ``pragma``, ``language``,
- and ``bindingset``
- - Act on a **name**: ``deprecated``, ``library``, ``private``, ``final``, and ``query``
+ - Act on an **entity**: ``abstract``, ``bindingset``, ``cached``, ``external``, ``language``,
+ ``override``, ``pragma``, and ``transient``
+ - Act on a **name**: ``deprecated``, ``final``, ``library``, ``private``, and ``query``
For example, if you annotate an entity with ``private``, then only that particular name is
private. You could still access that entity under a different name (using an :ref:`alias `).
diff --git a/docs/codeql/ql-language-reference/ql-language-specification.rst b/docs/codeql/ql-language-reference/ql-language-specification.rst
index 9989c73e5dc..854c9f28f60 100644
--- a/docs/codeql/ql-language-reference/ql-language-specification.rst
+++ b/docs/codeql/ql-language-reference/ql-language-specification.rst
@@ -761,17 +761,17 @@ Various kinds of syntax can have *annotations* applied to them. Annotations are
annotation ::= simpleAnnotation | argsAnnotation
simpleAnnotation ::= "abstract"
- | "cached"
- | "external"
- | "extensible"
- | "final"
- | "transient"
- | "library"
- | "private"
- | "deprecated"
- | "override"
| "additional"
+ | "cached"
+ | "deprecated"
+ | "extensible"
+ | "external"
+ | "final"
+ | "library"
+ | "override"
+ | "private"
| "query"
+ | "transient"
argsAnnotation ::= "pragma" "[" ("inline" | "inline_late" | "noinline" | "nomagic" | "noopt" | "assume_small_delta") "]"
| "language" "[" "monotonicAggregates" "]"
@@ -791,28 +791,28 @@ The following table summarizes the syntactic constructs which can be marked with
+================+=========+============+===================+=======================+=========+========+=========+=========+============+
| ``abstract`` | yes | | yes | | | | | | |
+----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
+| ``additional`` | yes | | | yes | | | yes | yes | yes |
++----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
| ``cached`` | yes | yes | yes | yes | | | yes | | |
+----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
-| ``external`` | | | | yes | | | | | |
-+----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
-| ``extensible`` | | | | yes | | | | | |
-+----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
-| ``final`` | yes | | yes | | | yes | | (yes) | |
-+----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
-| ``transient`` | | | | yes | | | | | |
-+----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
-| ``library`` | (yes) | | | | | | | | |
-+----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
-| ``private`` | yes | | yes | yes | yes | yes | yes | yes | yes |
-+----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
| ``deprecated`` | yes | | yes | yes | yes | yes | yes | yes | yes |
+----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
+| ``extensible`` | | | | yes | | | | | |
++----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
+| ``external`` | | | | yes | | | | | |
++----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
+| ``final`` | yes | | yes | | | yes | | (yes) | |
++----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
+| ``library`` | (yes) | | | | | | | | |
++----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
| ``override`` | | | yes | | | yes | | | |
+----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
-| ``additional`` | yes | | | yes | | | yes | yes | yes |
+| ``private`` | yes | | yes | yes | yes | yes | yes | yes | yes |
+----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
| ``query`` | | | | yes | | | | yes | |
+----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
+| ``transient`` | | | | yes | | | | | |
++----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+
The ``library`` annotation is only usable within a QLL file, not a QL file.
The ``final`` annotation is usable on type aliases, but not on module aliases and predicate aliases.
@@ -2292,17 +2292,17 @@ The complete grammar for QL is as follows:
annotation ::= simpleAnnotation | argsAnnotation
simpleAnnotation ::= "abstract"
- | "cached"
- | "external"
- | "extensible"
- | "final"
- | "transient"
- | "library"
- | "private"
- | "deprecated"
- | "override"
| "additional"
+ | "cached"
+ | "deprecated"
+ | "extensible"
+ | "external"
+ | "final"
+ | "library"
+ | "override"
+ | "private"
| "query"
+ | "transient"
argsAnnotation ::= "pragma" "[" ("inline" | "inline_late" | "noinline" | "nomagic" | "noopt" | "assume_small_delta") "]"
| "language" "[" "monotonicAggregates" "]"
From b27d3745781d0362ec42dfb384d1d21c296bdb05 Mon Sep 17 00:00:00 2001
From: Philip Ginsbach
Date: Fri, 19 Sep 2025 10:41:52 +0100
Subject: [PATCH 36/49] mention 'additional' and 'extensible' annotations
---
docs/codeql/ql-language-reference/annotations.rst | 4 ++--
.../ql-language-reference/ql-language-specification.rst | 5 +++--
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/docs/codeql/ql-language-reference/annotations.rst b/docs/codeql/ql-language-reference/annotations.rst
index 00080087d36..cffbbf73c71 100644
--- a/docs/codeql/ql-language-reference/annotations.rst
+++ b/docs/codeql/ql-language-reference/annotations.rst
@@ -16,9 +16,9 @@ For example, to declare a module ``M`` as private, you could use:
}
Note that some annotations act on an entity itself, whilst others act on a particular *name* for the entity:
- - Act on an **entity**: ``abstract``, ``bindingset``, ``cached``, ``external``, ``language``,
+ - Act on an **entity**: ``abstract``, ``bindingset``, ``cached``, ``extensible``, ``external``, ``language``,
``override``, ``pragma``, and ``transient``
- - Act on a **name**: ``deprecated``, ``final``, ``library``, ``private``, and ``query``
+ - Act on a **name**: ``additional``, ``deprecated``, ``final``, ``library``, ``private``, and ``query``
For example, if you annotate an entity with ``private``, then only that particular name is
private. You could still access that entity under a different name (using an :ref:`alias `).
diff --git a/docs/codeql/ql-language-reference/ql-language-specification.rst b/docs/codeql/ql-language-reference/ql-language-specification.rst
index 854c9f28f60..f834949c3cd 100644
--- a/docs/codeql/ql-language-reference/ql-language-specification.rst
+++ b/docs/codeql/ql-language-reference/ql-language-specification.rst
@@ -933,7 +933,8 @@ A predicate definition adds a mapping from the predicate name and arity to the p
When a predicate is a top-level clause in a module, it is called a non-member predicate. See below for "`Member predicates <#member-predicates>`__."
-A valid non-member predicate can be annotated with ``cached``, ``deprecated``, ``external``, ``transient``, ``private``, and ``query``. Note, the ``transient`` annotation can only be applied if the non-member predicate is also annotated with ``external``.
+A valid non-member predicate can be annotated with ``additional``, ``cached``, ``deprecated``, ``extensible``, ``external``, ``transient``, ``private``, and ``query``.
+Note, the ``transient`` annotation can only be applied if the non-member predicate is also annotated with ``external``.
The head of the predicate gives a name, an optional *result type*, and a sequence of variables declarations that are *arguments*:
@@ -979,7 +980,7 @@ A class type is said to *final inherit* from base types that are final or refere
A class adds a mapping from the class name to the class declaration to the current module's declared type environment.
-A valid class can be annotated with ``abstract``, ``final``, ``library``, and ``private``. Any other annotation renders the class invalid.
+A valid class can be annotated with ``abstract``, ``additional``, ``final``, ``library``, and ``private``. Any other annotation renders the class invalid.
A valid class may not inherit from itself, or from more than one primitive type. The set of types that a valid class inherits from must be disjoint from the set of types that it final inherits from.
From c7a9cc5a424c80dc4a3c538d20f934ad4d5f44c7 Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum
Date: Wed, 17 Sep 2025 14:55:52 +0200
Subject: [PATCH 37/49] Rust: Use annotations also for items in macro
expansions
---
.../lib/utils/test/PathResolutionInlineExpectationsTest.qll | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll b/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll
index c5a95ac9038..8d2fdb2d2eb 100644
--- a/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll
+++ b/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll
@@ -25,9 +25,9 @@ private module ResolveTest implements TestSig {
private predicate item(ItemNode i, string value) {
exists(string filepath, int line, boolean inMacro | itemAt(i, filepath, line, inMacro) |
- commmentAt(value, filepath, line) and inMacro = false
+ commmentAt(value, filepath, line)
or
- not (commmentAt(_, filepath, line) and inMacro = false) and
+ not commmentAt(_, filepath, line) and
value = i.getName()
)
}
From 32365fd673e0520ae10cea12212adfd3e98d0b6e Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum
Date: Wed, 17 Sep 2025 15:15:29 +0200
Subject: [PATCH 38/49] Rust: Account for attribute expansions in path
resolution
---
rust/ql/lib/codeql/rust/internal/PathResolution.qll | 11 ++++++-----
rust/ql/test/library-tests/path-resolution/main.rs | 7 +++----
.../path-resolution/path-resolution.expected | 10 ++++++----
3 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll
index f819632ce10..980033811dd 100644
--- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll
+++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll
@@ -156,6 +156,11 @@ private ItemNode getAChildSuccessor(ItemNode item, string name, SuccessorKind ki
* - https://doc.rust-lang.org/reference/names/namespaces.html
*/
abstract class ItemNode extends Locatable {
+ ItemNode() {
+ // Exclude items that are superceded by the expansion of an attribute macro.
+ not this.(Item).hasAttributeMacroExpansion()
+ }
+
/** Gets the (original) name of this item. */
abstract string getName();
@@ -660,11 +665,7 @@ final class ImplItemNode extends ImplOrTraitItemNode instanceof Impl {
override Visibility getVisibility() { result = Impl.super.getVisibility() }
- TypeParamItemNode getBlanketImplementationTypeParam() {
- result = this.resolveSelfTy() and
- // This impl block is not superseded by the expansion of an attribute macro.
- not exists(super.getAttributeMacroExpansion())
- }
+ TypeParamItemNode getBlanketImplementationTypeParam() { result = this.resolveSelfTy() }
/**
* Holds if this impl block is a blanket implementation. That is, the
diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs
index 5146373b896..1ad55d36ad4 100644
--- a/rust/ql/test/library-tests/path-resolution/main.rs
+++ b/rust/ql/test/library-tests/path-resolution/main.rs
@@ -798,8 +798,7 @@ fn main() {
m23::f(); // $ item=I108
m24::f(); // $ item=I121
zelf::h(); // $ item=I25
- z_changed(); // $ MISSING: item=I122
- AStruct::z_on_type(); // $ MISSING: item=I124
- AStruct {} // $ item=I123
- .z_on_instance(); // MISSING: item=I125
+ z_changed(); // $ item=I122
+ AStruct::z_on_type(); // $ item=I124
+ AStruct {}.z_on_instance(); // $ item=I123 item=I125
}
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 067365a5386..7c30ebc4a1e 100644
--- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected
+++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected
@@ -66,7 +66,7 @@ resolvePath
| 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:13 | super | main.rs:1:1:804: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 |
@@ -78,7 +78,7 @@ resolvePath
| 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:8 | self | main.rs:1:1:804: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 |
@@ -93,7 +93,7 @@ resolvePath
| 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:17 | super | main.rs:1:1:804: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 |
@@ -412,7 +412,9 @@ resolvePath
| 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:801:5:801:13 | z_changed | main.rs:700:1:700:8 | fn z_changed |
| main.rs:802:5:802:11 | AStruct | main.rs:702:1:702:17 | struct AStruct |
+| main.rs:802:5:802:22 | ...::z_on_type | main.rs:706:5:706:16 | fn z_on_type |
| 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 |
@@ -434,7 +436,7 @@ resolvePath
| my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g |
| my2/my3/mod.rs:4:5:4:5 | h | main.rs:56:1:75:1 | fn h |
| my2/my3/mod.rs: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:16 | ...::super | main.rs:1:1:804: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 |
From 2c84b49cede939e5f935213890910c0ad87d7643 Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum
Date: Wed, 17 Sep 2025 15:58:54 +0200
Subject: [PATCH 39/49] Rust: Update test expecations
---
.../security/CWE-696/BadCTorInitialization.expected | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/rust/ql/test/query-tests/security/CWE-696/BadCTorInitialization.expected b/rust/ql/test/query-tests/security/CWE-696/BadCTorInitialization.expected
index 3ac74a3cb13..ed95a8d448a 100644
--- a/rust/ql/test/query-tests/security/CWE-696/BadCTorInitialization.expected
+++ b/rust/ql/test/query-tests/security/CWE-696/BadCTorInitialization.expected
@@ -59,13 +59,11 @@ edges
| test.rs:129:4:130:21 | fn bad3_1 | test.rs:130:5:130:19 | call_target3_1(...) |
| test.rs:130:5:130:19 | call_target3_1(...) | test.rs:124:1:126:1 | fn call_target3_1 |
| test.rs:144:1:144:7 | Attr | test.rs:145:4:147:21 | fn bad3_3 |
-| test.rs:144:1:148:1 | fn bad3_3 | test.rs:146:5:146:20 | call_target3_1(...) |
| test.rs:145:4:147:21 | fn bad3_3 | test.rs:146:5:146:19 | call_target3_1(...) |
| test.rs:146:5:146:19 | call_target3_1(...) | test.rs:124:1:126:1 | fn call_target3_1 |
-| test.rs:146:5:146:20 | call_target3_1(...) | test.rs:124:1:126:1 | fn call_target3_1 |
| test.rs:150:1:150:7 | Attr | test.rs:151:4:152:13 | fn bad3_4 |
| test.rs:151:4:152:13 | fn bad3_4 | test.rs:152:5:152:11 | bad3_3(...) |
-| test.rs:152:5:152:11 | bad3_3(...) | test.rs:144:1:148:1 | fn bad3_3 |
+| test.rs:152:5:152:11 | bad3_3(...) | test.rs:145:4:147:21 | fn bad3_3 |
| test.rs:168:1:168:7 | Attr | test.rs:169:4:170:16 | fn bad4_1 |
| test.rs:169:4:170:16 | fn bad4_1 | test.rs:168:1:168:7 | ... .write(...) |
| test.rs:169:4:170:16 | fn bad4_1 | test.rs:168:1:168:7 | ...::stdout(...) |
From a9d7662bb7a20a08bdc794bc67c1d10f60c5f3f9 Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum
Date: Fri, 19 Sep 2025 13:09:07 +0200
Subject: [PATCH 40/49] Rust: Add path resolution test with attribute on impl
block
---
.../library-tests/path-resolution/main.rs | 22 +++
.../path-resolution/path-resolution.expected | 161 ++++++++++--------
.../path-resolution/proc_macro.rs | 8 +-
3 files changed, 116 insertions(+), 75 deletions(-)
diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs
index 1ad55d36ad4..42107ec5fd4 100644
--- a/rust/ql/test/library-tests/path-resolution/main.rs
+++ b/rust/ql/test/library-tests/path-resolution/main.rs
@@ -767,6 +767,27 @@ use std::{self as ztd}; // $ item=std
fn use_ztd(x: ztd::string::String) {} // $ item=String
+#[rustfmt::skip]
+mod impl_with_attribute_macro {
+ struct Foo; // IFoo
+
+ trait ATrait {
+ type Foo;
+ } // IATrait
+
+ #[proc_macro::identity] // $ item=identity
+ impl ATrait for i64 { // $ item=IATrait item=i64
+ type Foo =
+ i64 // $ item=i64
+ ; // IATrait_i64_Foo
+ }
+
+ pub fn test() {
+ // This should resolve to the struct, not the associated type.
+ let _x: Foo; // $ item=IFoo SPURIOUS: item=IATrait_i64_Foo
+ } // impl_with_attribute_macro::test
+}
+
fn main() {
my::nested::nested1::nested2::f(); // $ item=I4
my::f(); // $ item=I38
@@ -801,4 +822,5 @@ fn main() {
z_changed(); // $ item=I122
AStruct::z_on_type(); // $ item=I124
AStruct {}.z_on_instance(); // $ item=I123 item=I125
+ impl_with_attribute_macro::test(); // $ item=impl_with_attribute_macro::test
}
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 7c30ebc4a1e..e9bb668f681 100644
--- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected
+++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected
@@ -31,6 +31,7 @@ mod
| 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 |
+| main.rs:770:1:789:1 | mod impl_with_attribute_macro |
| my2/mod.rs:1:1:1:16 | mod nested2 |
| my2/mod.rs:18:1:18:12 | mod my3 |
| my2/mod.rs:20:1:21:10 | mod mymod |
@@ -66,7 +67,7 @@ resolvePath
| 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:804:2 | SourceFile |
+| main.rs:46:9:46:13 | super | main.rs:1:1:826: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 |
@@ -78,7 +79,7 @@ resolvePath
| 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:804:2 | SourceFile |
+| main.rs:74:5:74:8 | self | main.rs:1:1:826: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 |
@@ -93,7 +94,7 @@ resolvePath
| 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:804:2 | SourceFile |
+| main.rs:123:13:123:17 | super | main.rs:1:1:826: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 |
@@ -303,12 +304,12 @@ resolvePath
| 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:699:3:699:24 | ...::add_suffix | proc_macro.rs:4:1:13: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:705:7:705:28 | ...::add_suffix | proc_macro.rs:4:1:13: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:708:7:708:28 | ...::add_suffix | proc_macro.rs:4:1:13: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 |
@@ -349,73 +350,82 @@ resolvePath
| 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:801:5:801:13 | z_changed | main.rs:700:1:700:8 | fn z_changed |
-| main.rs:802:5:802:11 | AStruct | main.rs:702:1:702:17 | struct AStruct |
-| main.rs:802:5:802:22 | ...::z_on_type | main.rs:706:5:706:16 | fn z_on_type |
-| main.rs:803:5:803:11 | AStruct | main.rs:702:1:702:17 | struct AStruct |
+| main.rs:778:7:778:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
+| main.rs:778:7:778:26 | ...::identity | proc_macro.rs:15:1:18:1 | fn identity |
+| main.rs:779:10:779:15 | ATrait | main.rs:774:5:776:5 | trait ATrait |
+| main.rs:779:21:779:23 | i64 | {EXTERNAL LOCATION} | struct i64 |
+| main.rs:781:11:781:13 | i64 | {EXTERNAL LOCATION} | struct i64 |
+| main.rs:787:17:787:19 | Foo | main.rs:772:5:772:15 | struct Foo |
+| main.rs:787:17:787:19 | Foo | main.rs:779:27:782:9 | type Foo |
+| main.rs:792:5:792:6 | my | main.rs:1:1:1:7 | mod my |
+| main.rs:792:5:792:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
+| main.rs:792:5:792:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
+| main.rs:792:5:792:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
+| main.rs:792:5:792:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
+| main.rs:793:5:793:6 | my | main.rs:1:1:1:7 | mod my |
+| main.rs:793:5:793:9 | ...::f | my.rs:5:1:7:1 | fn f |
+| main.rs:794:5:794:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
+| main.rs:794:5:794:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
+| main.rs:794:5:794:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
+| main.rs:794:5:794:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
+| main.rs:795:5:795:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
+| main.rs:796:5:796:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
+| main.rs:797:5:797:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) |
+| main.rs:797:5:797:12 | ...::h | main.rs:56:1:75:1 | fn h |
+| main.rs:798:5:798:6 | m1 | main.rs:19:1:43:1 | mod m1 |
+| main.rs:798:5:798:10 | ...::m2 | main.rs:24:5:42:5 | mod m2 |
+| main.rs:798:5:798:13 | ...::g | main.rs:29:9:33:9 | fn g |
+| main.rs:799:5:799:6 | m1 | main.rs:19:1:43:1 | mod m1 |
+| main.rs:799:5:799:10 | ...::m2 | main.rs:24:5:42:5 | mod m2 |
+| main.rs:799:5:799:14 | ...::m3 | main.rs:35:9:41:9 | mod m3 |
+| main.rs:799:5:799:17 | ...::h | main.rs:36:27:40:13 | fn h |
+| main.rs:800:5:800:6 | m4 | main.rs:45:1:52:1 | mod m4 |
+| main.rs:800:5:800:9 | ...::i | main.rs:48:5:51:5 | fn i |
+| main.rs:801:5:801:5 | h | main.rs:56:1:75:1 | fn h |
+| main.rs:802:5:802:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
+| main.rs:803:5:803:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
+| main.rs:804:5:804:5 | j | main.rs:103:1:107:1 | fn j |
+| main.rs:805:5:805:6 | m6 | main.rs:115:1:126:1 | mod m6 |
+| main.rs:805:5:805:9 | ...::g | main.rs:120:5:125:5 | fn g |
+| main.rs:806:5:806:6 | m7 | main.rs:128:1:147:1 | mod m7 |
+| main.rs:806:5:806:9 | ...::f | main.rs:139:5:146:5 | fn f |
+| main.rs:807:5:807:6 | m8 | main.rs:149:1:203:1 | mod m8 |
+| main.rs:807:5:807:9 | ...::g | main.rs:187:5:202:5 | fn g |
+| main.rs:808:5:808:6 | m9 | main.rs:205:1:213:1 | mod m9 |
+| main.rs:808:5:808:9 | ...::f | main.rs:208:5:212:5 | fn f |
+| main.rs:809:5:809:7 | m11 | main.rs:236:1:273:1 | mod m11 |
+| main.rs:809:5:809:10 | ...::f | main.rs:241:5:244:5 | fn f |
+| main.rs:810:5:810:7 | m15 | main.rs:304:1:373:1 | mod m15 |
+| main.rs:810:5:810:10 | ...::f | main.rs:360:5:372:5 | fn f |
+| main.rs:811:5:811:7 | m16 | main.rs:375:1:467:1 | mod m16 |
+| main.rs:811:5:811:10 | ...::f | main.rs:442:5:466:5 | fn f |
+| main.rs:812:5:812:20 | trait_visibility | main.rs:469:1:519:1 | mod trait_visibility |
+| main.rs:812:5:812:23 | ...::f | main.rs:496:5:518:5 | fn f |
+| main.rs:813:5:813:7 | m17 | main.rs:521:1:551:1 | mod m17 |
+| main.rs:813:5:813:10 | ...::f | main.rs:545:5:550:5 | fn f |
+| main.rs:814:5:814:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
+| main.rs:814:5:814:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
+| main.rs:815:5:815:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
+| main.rs:815:5:815:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
+| main.rs:816:5:816:7 | my3 | my2/mod.rs:18:1:18:12 | mod my3 |
+| main.rs:816:5:816:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f |
+| main.rs:817:5:817:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
+| main.rs:818:5:818:7 | m18 | main.rs:553:1:571:1 | mod m18 |
+| main.rs:818:5:818:12 | ...::m19 | main.rs:558:5:570:5 | mod m19 |
+| main.rs:818:5:818:17 | ...::m20 | main.rs:563:9:569:9 | mod m20 |
+| main.rs:818:5:818:20 | ...::g | main.rs:564:13:568:13 | fn g |
+| main.rs:819:5:819:7 | m23 | main.rs:600:1:625:1 | mod m23 |
+| main.rs:819:5:819:10 | ...::f | main.rs:620:5:624:5 | fn f |
+| main.rs:820:5:820:7 | m24 | main.rs:627:1:695:1 | mod m24 |
+| main.rs:820:5:820:10 | ...::f | main.rs:681:5:694:5 | fn f |
+| main.rs:821:5:821:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) |
+| main.rs:821:5:821:11 | ...::h | main.rs:56:1:75:1 | fn h |
+| main.rs:822:5:822:13 | z_changed | main.rs:700:1:700:8 | fn z_changed |
+| main.rs:823:5:823:11 | AStruct | main.rs:702:1:702:17 | struct AStruct |
+| main.rs:823:5:823:22 | ...::z_on_type | main.rs:706:5:706:16 | fn z_on_type |
+| main.rs:824:5:824:11 | AStruct | main.rs:702:1:702:17 | struct AStruct |
+| main.rs:825:5:825:29 | impl_with_attribute_macro | main.rs:770:1:789:1 | mod impl_with_attribute_macro |
+| main.rs:825:5:825:35 | ...::test | main.rs:785:5:788:5 | fn test |
| 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 |
@@ -436,7 +446,7 @@ resolvePath
| my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g |
| my2/my3/mod.rs:4:5:4:5 | h | main.rs:56:1:75:1 | fn h |
| my2/my3/mod.rs: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:804:2 | SourceFile |
+| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:826: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 |
@@ -482,4 +492,7 @@ resolvePath
| proc_macro.rs:8:21:8:23 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) |
| proc_macro.rs:8:21:8:30 | ...::Ident | {EXTERNAL LOCATION} | struct Ident |
| proc_macro.rs:8:21:8:35 | ...::new | {EXTERNAL LOCATION} | fn new |
+| proc_macro.rs:16:24:16:34 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
+| proc_macro.rs:16:43:16:53 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
+| proc_macro.rs:16:59:16:69 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
testFailures
diff --git a/rust/ql/test/library-tests/path-resolution/proc_macro.rs b/rust/ql/test/library-tests/path-resolution/proc_macro.rs
index c95fc6fe640..11e3a7024ae 100644
--- a/rust/ql/test/library-tests/path-resolution/proc_macro.rs
+++ b/rust/ql/test/library-tests/path-resolution/proc_macro.rs
@@ -8,5 +8,11 @@ pub fn add_suffix(attr: TokenStream, item: TokenStream) -> TokenStream {
ast.sig.ident = syn::Ident::new(&format!("{}_{}", ast.sig.ident, suff), ast.sig.ident.span());
quote! {
#ast
- }.into()
+ }
+ .into()
+}
+
+#[proc_macro_attribute]
+pub fn identity(_attr: TokenStream, item: TokenStream) -> TokenStream {
+ item
}
From d88bc8e4086b3d90e80601b8489ed521c3cacdb2 Mon Sep 17 00:00:00 2001
From: Napalys Klicius
Date: Fri, 19 Sep 2025 14:23:40 +0200
Subject: [PATCH 41/49] JS: Add test case for `GraphQLObjectType`
---
.../CWE-094/CodeInjection/graph-ql.js | 28 ++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
diff --git a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/graph-ql.js b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/graph-ql.js
index f68f47cf3ac..c4b68e16990 100644
--- a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/graph-ql.js
+++ b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/graph-ql.js
@@ -1,5 +1,5 @@
const express = require('express');
-const { graphql, buildSchema } = require('graphql');
+const { graphql, buildSchema, GraphQLObjectType, GraphQLString } = require('graphql');
const app = express();
app.use(express.json());
@@ -53,4 +53,30 @@ app.post('/graphql', async (req, res) => {
rootValue: root1,
variableValues: variables
});
+
+ const MutationType = new GraphQLObjectType({
+ name: 'Mutation',
+ fields: {
+ runEval: {
+ type: GraphQLString,
+ args: {
+ value: { type: GraphQLString }
+ },
+ resolve: (_, { value }, context) => { // $ MISSING: Source[js/code-injection]
+ return eval(value); // $ MISSING: Alert[js/code-injection]
+ }
+ }
+ }
+ });
+
+ const schema = new GraphQLSchema({
+ query: QueryType,
+ mutation: MutationType
+ });
+
+ await graphql({
+ schema,
+ source: query,
+ variableValues: variables
+ });
});
From 60ceb89f01be59ecba08fc972d5a9bdd84e11ff2 Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum
Date: Fri, 19 Sep 2025 13:26:36 +0200
Subject: [PATCH 42/49] Rust: Add debug predicate for `ItemNode`
---
rust/ql/lib/codeql/rust/internal/PathResolution.qll | 2 ++
1 file changed, 2 insertions(+)
diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll
index 980033811dd..6b7df0db58a 100644
--- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll
+++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll
@@ -1807,6 +1807,8 @@ private module Debug {
path = p.toStringDebug()
}
+ predicate debugItemNode(ItemNode item) { item = getRelevantLocatable() }
+
ItemNode debugResolvePath(RelevantPath path) {
path = getRelevantLocatable() and
result = resolvePath(path)
From 72103adacc7cf9712acd464a38adebeb240d5fb5 Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum
Date: Fri, 19 Sep 2025 13:27:02 +0200
Subject: [PATCH 43/49] Rust: Fix spurious path resolution
The annotated impl block was filtered away, but it's children where not. This caused the associated type `Foo` to appear as if it was an item in the scope outside of the impl block.
---
.../codeql/rust/internal/PathResolution.qll | 20 ++++++++++++++++++-
.../library-tests/path-resolution/main.rs | 2 +-
.../path-resolution/path-resolution.expected | 1 -
3 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll
index 6b7df0db58a..46197b6189e 100644
--- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll
+++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll
@@ -78,6 +78,24 @@ private ItemNode getAChildSuccessor(ItemNode item, string name, SuccessorKind ki
)
}
+/**
+ * Holds if `n` is superceded by an attribute macro expansion. That is, `n` is
+ * an item or a transitive child of an item with an attribute macro expansion.
+ */
+predicate supercededByAttributeMacroExpansion(AstNode n) {
+ n.(Item).hasAttributeMacroExpansion()
+ or
+ exists(AstNode parent |
+ n.getParentNode() = parent and
+ supercededByAttributeMacroExpansion(parent) and
+ // Don't exclude expansions themselves as they supercede other nodes.
+ not n = parent.(Item).getAttributeMacroExpansion() and
+ // Don't consider attributes themselves to be superceded. E.g., in `#[a] fn
+ // f() {}` the macro expansion supercedes `fn f() {}` but not `#[a]`.
+ not n instanceof Attr
+ )
+}
+
/**
* An item that may be referred to by a path, and which is a node in
* the _item graph_.
@@ -158,7 +176,7 @@ private ItemNode getAChildSuccessor(ItemNode item, string name, SuccessorKind ki
abstract class ItemNode extends Locatable {
ItemNode() {
// Exclude items that are superceded by the expansion of an attribute macro.
- not this.(Item).hasAttributeMacroExpansion()
+ not supercededByAttributeMacroExpansion(this)
}
/** Gets the (original) name of this item. */
diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs
index 42107ec5fd4..9051f7f8412 100644
--- a/rust/ql/test/library-tests/path-resolution/main.rs
+++ b/rust/ql/test/library-tests/path-resolution/main.rs
@@ -784,7 +784,7 @@ mod impl_with_attribute_macro {
pub fn test() {
// This should resolve to the struct, not the associated type.
- let _x: Foo; // $ item=IFoo SPURIOUS: item=IATrait_i64_Foo
+ let _x: Foo; // $ item=IFoo
} // impl_with_attribute_macro::test
}
diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected
index e9bb668f681..a908ec1e5c1 100644
--- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected
+++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected
@@ -356,7 +356,6 @@ resolvePath
| main.rs:779:21:779:23 | i64 | {EXTERNAL LOCATION} | struct i64 |
| main.rs:781:11:781:13 | i64 | {EXTERNAL LOCATION} | struct i64 |
| main.rs:787:17:787:19 | Foo | main.rs:772:5:772:15 | struct Foo |
-| main.rs:787:17:787:19 | Foo | main.rs:779:27:782:9 | type Foo |
| main.rs:792:5:792:6 | my | main.rs:1:1:1:7 | mod my |
| main.rs:792:5:792:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
| main.rs:792:5:792:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
From afb6d307624ce482bf7f6f09c18b29353829bd34 Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum
Date: Fri, 19 Sep 2025 14:27:14 +0200
Subject: [PATCH 44/49] Rust: Fix typo in superseded
---
rust/ql/lib/codeql/rust/internal/PathResolution.qll | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll
index 46197b6189e..44e8b452255 100644
--- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll
+++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll
@@ -79,18 +79,18 @@ private ItemNode getAChildSuccessor(ItemNode item, string name, SuccessorKind ki
}
/**
- * Holds if `n` is superceded by an attribute macro expansion. That is, `n` is
+ * Holds if `n` is superseded by an attribute macro expansion. That is, `n` is
* an item or a transitive child of an item with an attribute macro expansion.
*/
-predicate supercededByAttributeMacroExpansion(AstNode n) {
+predicate supersededByAttributeMacroExpansion(AstNode n) {
n.(Item).hasAttributeMacroExpansion()
or
exists(AstNode parent |
n.getParentNode() = parent and
- supercededByAttributeMacroExpansion(parent) and
+ supersededByAttributeMacroExpansion(parent) and
// Don't exclude expansions themselves as they supercede other nodes.
not n = parent.(Item).getAttributeMacroExpansion() and
- // Don't consider attributes themselves to be superceded. E.g., in `#[a] fn
+ // Don't consider attributes themselves to be superseded. E.g., in `#[a] fn
// f() {}` the macro expansion supercedes `fn f() {}` but not `#[a]`.
not n instanceof Attr
)
@@ -175,8 +175,8 @@ predicate supercededByAttributeMacroExpansion(AstNode n) {
*/
abstract class ItemNode extends Locatable {
ItemNode() {
- // Exclude items that are superceded by the expansion of an attribute macro.
- not supercededByAttributeMacroExpansion(this)
+ // Exclude items that are superseded by the expansion of an attribute macro.
+ not supersededByAttributeMacroExpansion(this)
}
/** Gets the (original) name of this item. */
From 6cfc95015921ab781e16f36ac2ba5ba9a57187ae Mon Sep 17 00:00:00 2001
From: Napalys Klicius
Date: Fri, 19 Sep 2025 14:39:36 +0200
Subject: [PATCH 45/49] JS: Model `GraphQLObjectType` resolve params as sources
---
javascript/ql/lib/ext/graph-ql.model.yml | 5 +++++
.../Security/CWE-094/CodeInjection/CodeInjection.expected | 6 ++++++
.../CodeInjection/HeuristicSourceCodeInjection.expected | 5 +++++
.../query-tests/Security/CWE-094/CodeInjection/graph-ql.js | 4 ++--
4 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/javascript/ql/lib/ext/graph-ql.model.yml b/javascript/ql/lib/ext/graph-ql.model.yml
index 08233d1135d..2ea1c41ed9f 100644
--- a/javascript/ql/lib/ext/graph-ql.model.yml
+++ b/javascript/ql/lib/ext/graph-ql.model.yml
@@ -4,3 +4,8 @@ extensions:
extensible: summaryModel
data:
- ["graphql", "Member[graphql]", "Argument[0].Member[source,variableValues]", "Argument[0].Member[rootValue].AnyMember.Parameter[0]", "taint"]
+ - addsTo:
+ pack: codeql/javascript-all
+ extensible: sourceModel
+ data:
+ - ["graphql", "Member[GraphQLObjectType].Argument[0].Member[fields].AnyMember.Member[resolve].Parameter[1]", "remote"]
diff --git a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/CodeInjection.expected b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/CodeInjection.expected
index 3f5d8abed8a..fb3e4ad6e6a 100644
--- a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/CodeInjection.expected
+++ b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/CodeInjection.expected
@@ -63,6 +63,7 @@
| fastify.js:108:28:108:50 | reply.l ... tedCode | fastify.js:94:29:94:51 | request ... plyCode | fastify.js:108:28:108:50 | reply.l ... tedCode | This code execution depends on a $@. | fastify.js:94:29:94:51 | request ... plyCode | user-provided value |
| graph-ql.js:20:19:20:22 | expr | graph-ql.js:28:32:28:39 | req.body | graph-ql.js:20:19:20:22 | expr | This code execution depends on a $@. | graph-ql.js:28:32:28:39 | req.body | user-provided value |
| graph-ql.js:39:19:39:30 | name + title | graph-ql.js:28:32:28:39 | req.body | graph-ql.js:39:19:39:30 | name + title | This code execution depends on a $@. | graph-ql.js:28:32:28:39 | req.body | user-provided value |
+| graph-ql.js:66:23:66:27 | value | graph-ql.js:65:22:65:30 | { value } | graph-ql.js:66:23:66:27 | value | This code execution depends on a $@. | graph-ql.js:65:22:65:30 | { value } | user-provided value |
| module.js:9:16:9:29 | req.query.code | module.js:9:16:9:29 | req.query.code | module.js:9:16:9:29 | req.query.code | This code execution depends on a $@. | module.js:9:16:9:29 | req.query.code | user-provided value |
| module.js:11:17:11:30 | req.query.code | module.js:11:17:11:30 | req.query.code | module.js:11:17:11:30 | req.query.code | This code execution depends on a $@. | module.js:11:17:11:30 | req.query.code | user-provided value |
| react-native.js:8:32:8:38 | tainted | react-native.js:7:17:7:33 | req.param("code") | react-native.js:8:32:8:38 | tainted | This code execution depends on a $@. | react-native.js:7:17:7:33 | req.param("code") | user-provided value |
@@ -173,6 +174,8 @@ edges
| graph-ql.js:39:19:39:22 | name | graph-ql.js:39:19:39:30 | name + title | provenance | |
| graph-ql.js:39:26:39:30 | title | graph-ql.js:39:19:39:30 | name + title | provenance | |
| graph-ql.js:54:21:54:29 | variables | graph-ql.js:38:13:38:27 | { name, title } | provenance | |
+| graph-ql.js:65:22:65:30 | { value } | graph-ql.js:65:24:65:28 | value | provenance | |
+| graph-ql.js:65:24:65:28 | value | graph-ql.js:66:23:66:27 | value | provenance | |
| react-native.js:7:7:7:13 | tainted | react-native.js:8:32:8:38 | tainted | provenance | |
| react-native.js:7:7:7:13 | tainted | react-native.js:10:23:10:29 | tainted | provenance | |
| react-native.js:7:17:7:33 | req.param("code") | react-native.js:7:7:7:13 | tainted | provenance | |
@@ -323,6 +326,9 @@ nodes
| graph-ql.js:39:19:39:30 | name + title | semmle.label | name + title |
| graph-ql.js:39:26:39:30 | title | semmle.label | title |
| graph-ql.js:54:21:54:29 | variables | semmle.label | variables |
+| graph-ql.js:65:22:65:30 | { value } | semmle.label | { value } |
+| graph-ql.js:65:24:65:28 | value | semmle.label | value |
+| graph-ql.js:66:23:66:27 | value | semmle.label | value |
| module.js:9:16:9:29 | req.query.code | semmle.label | req.query.code |
| module.js:11:17:11:30 | req.query.code | semmle.label | req.query.code |
| react-native.js:7:7:7:13 | tainted | semmle.label | tainted |
diff --git a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/HeuristicSourceCodeInjection.expected b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/HeuristicSourceCodeInjection.expected
index 3d4022d8fb6..837ae37eaee 100644
--- a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/HeuristicSourceCodeInjection.expected
+++ b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/HeuristicSourceCodeInjection.expected
@@ -72,6 +72,8 @@ edges
| graph-ql.js:39:19:39:22 | name | graph-ql.js:39:19:39:30 | name + title | provenance | |
| graph-ql.js:39:26:39:30 | title | graph-ql.js:39:19:39:30 | name + title | provenance | |
| graph-ql.js:54:21:54:29 | variables | graph-ql.js:38:13:38:27 | { name, title } | provenance | |
+| graph-ql.js:65:22:65:30 | { value } | graph-ql.js:65:24:65:28 | value | provenance | |
+| graph-ql.js:65:24:65:28 | value | graph-ql.js:66:23:66:27 | value | provenance | |
| react-native.js:7:7:7:13 | tainted | react-native.js:8:32:8:38 | tainted | provenance | |
| react-native.js:7:7:7:13 | tainted | react-native.js:10:23:10:29 | tainted | provenance | |
| react-native.js:7:17:7:33 | req.param("code") | react-native.js:7:7:7:13 | tainted | provenance | |
@@ -224,6 +226,9 @@ nodes
| graph-ql.js:39:19:39:30 | name + title | semmle.label | name + title |
| graph-ql.js:39:26:39:30 | title | semmle.label | title |
| graph-ql.js:54:21:54:29 | variables | semmle.label | variables |
+| graph-ql.js:65:22:65:30 | { value } | semmle.label | { value } |
+| graph-ql.js:65:24:65:28 | value | semmle.label | value |
+| graph-ql.js:66:23:66:27 | value | semmle.label | value |
| module.js:9:16:9:29 | req.query.code | semmle.label | req.query.code |
| module.js:11:17:11:30 | req.query.code | semmle.label | req.query.code |
| react-native.js:7:7:7:13 | tainted | semmle.label | tainted |
diff --git a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/graph-ql.js b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/graph-ql.js
index c4b68e16990..167292330d2 100644
--- a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/graph-ql.js
+++ b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/graph-ql.js
@@ -62,8 +62,8 @@ app.post('/graphql', async (req, res) => {
args: {
value: { type: GraphQLString }
},
- resolve: (_, { value }, context) => { // $ MISSING: Source[js/code-injection]
- return eval(value); // $ MISSING: Alert[js/code-injection]
+ resolve: (_, { value }, context) => { // $ Source[js/code-injection]
+ return eval(value); // $ Alert[js/code-injection]
}
}
}
From 3a6a537986133f24bfecbde3f2c770952e4d4642 Mon Sep 17 00:00:00 2001
From: Napalys Klicius
Date: Fri, 19 Sep 2025 14:46:13 +0200
Subject: [PATCH 46/49] JS: Add change note
---
.../ql/lib/change-notes/2025-09-19-graphql-type-object.md | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 javascript/ql/lib/change-notes/2025-09-19-graphql-type-object.md
diff --git a/javascript/ql/lib/change-notes/2025-09-19-graphql-type-object.md b/javascript/ql/lib/change-notes/2025-09-19-graphql-type-object.md
new file mode 100644
index 00000000000..6afa4ece331
--- /dev/null
+++ b/javascript/ql/lib/change-notes/2025-09-19-graphql-type-object.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* Added modeling of `GraphQLObjectType` resolver function parameters as remote sources.
From c26a07bb1008a8122e6f39d8df24a128fc4c6e4c Mon Sep 17 00:00:00 2001
From: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
Date: Fri, 19 Sep 2025 16:49:54 +0100
Subject: [PATCH 47/49] Apply suggestions from code review
Co-authored-by: Simon Friis Vindum
---
rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp b/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp
index e4e0fc5eaa9..088f202965a 100644
--- a/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp
+++ b/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp
@@ -4,7 +4,7 @@
-Constructing URLs with the HTTP protocol can lead to unsecured connections.
+Constructing URLs with the HTTP protocol can lead to insecure connections.
Furthermore, constructing URLs with the HTTP protocol can create problems if other parts of the
code expect HTTPS URLs. A typical pattern is to use libraries that expect secure connections,
@@ -14,7 +14,7 @@ which may fail or fall back to insecure behavior when provided with HTTP URLs in
When you construct a URL for network requests, ensure that you use an HTTPS URL rather than an HTTP URL.
-Then, any connections that are made using that URL are secure SSL/TLS connections.
+Then, any connections that are made using that URL are secure TLS connections.
@@ -26,7 +26,7 @@ by attackers:
A better approach is to use HTTPS. When the request is made using an HTTPS URL, the connection
-is a secure SSL/TLS connection:
+is a secure TLS connection:
From 223ab5e60cc654b3255520c581ba8cdbd9716335 Mon Sep 17 00:00:00 2001
From: Tom Hvitved
Date: Sun, 21 Sep 2025 15:22:40 +0200
Subject: [PATCH 48/49] Rust: Add missing model
---
rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml b/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml
index 9e65ba1b196..706170d44b8 100644
--- a/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml
+++ b/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml
@@ -4,3 +4,9 @@ extensions:
extensible: sourceModel
data:
- ["::connect", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"]
+ - addsTo:
+ pack: codeql/rust-all
+ extensible: summaryModel
+ data:
+ - ["<_ as async_std::io::read::ReadExt>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"]
+ - ["<_ as async_std::io::read::ReadExt>::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
\ No newline at end of file
From 8d5d219c0f1d5372249c12a6f59ef3bf1046cd04 Mon Sep 17 00:00:00 2001
From: Tom Hvitved
Date: Sun, 21 Sep 2025 15:36:22 +0200
Subject: [PATCH 49/49] Rust: Update expected test output
---
.../dataflow/sources/InlineFlow.expected | 600 +++++++++---------
1 file changed, 308 insertions(+), 292 deletions(-)
diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected
index db0cb969d5a..af0e73ca2c0 100644
--- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected
+++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected
@@ -33,108 +33,110 @@ models
| 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: