diff --git a/.gitignore b/.gitignore index fe4a5de96721..4dbe45b8d28a 100644 --- a/.gitignore +++ b/.gitignore @@ -76,3 +76,6 @@ node_modules/ # some upgrade/downgrade checks create these files **/upgrades/*/*.dbscheme.stats **/downgrades/*/*.dbscheme.stats + +# Mergetool files +*.orig diff --git a/Cargo.lock b/Cargo.lock index b712c4f8d24b..77be7b054ed7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" @@ -23,12 +23,6 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -40,9 +34,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.19" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" +checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" dependencies = [ "anstyle", "anstyle-parse", @@ -70,22 +64,22 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.9" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -127,9 +121,9 @@ dependencies = [ [[package]] name = "atomic" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994" +checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340" dependencies = [ "bytemuck", ] @@ -154,9 +148,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" [[package]] name = "borsh" @@ -169,15 +163,15 @@ dependencies = [ [[package]] name = "boxcar" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c4925bc979b677330a8c7fe7a8c94af2dbb4a2d37b4a20a80d884400f46baa" +checksum = "36f64beae40a84da1b4b26ff2761a5b895c12adc41dc25aaee1c4f2bbfe97a6e" [[package]] name = "bstr" -version = "1.11.3" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" +checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" dependencies = [ "memchr", "serde", @@ -191,15 +185,15 @@ checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytemuck" -version = "1.21.0" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" [[package]] name = "camino" -version = "1.1.10" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" +checksum = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5" dependencies = [ "serde", ] @@ -246,10 +240,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.29" +version = "1.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" +checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -257,9 +252,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "cfg_aliases" @@ -297,7 +292,7 @@ version = "0.103.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90a37d2ab99352b4caca135061e7b4ac67024b648c28ed0b787feec4bea4caed" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "chalk-derive 0.103.0", ] @@ -307,7 +302,7 @@ version = "0.104.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7047a516de16226cd17344d41a319d0ea1064bf9e60bd612ab341ab4a34bbfa8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "chalk-derive 0.104.0", ] @@ -333,7 +328,7 @@ dependencies = [ "chalk-derive 0.103.0", "chalk-ir 0.103.0", "ena", - "indexmap 2.10.0", + "indexmap 2.11.1", "itertools 0.12.1", "petgraph", "rustc-hash 1.1.0", @@ -342,24 +337,23 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-link", + "windows-link 0.2.0", ] [[package]] name = "clap" -version = "4.5.44" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1f056bae57e3e54c3375c41ff79619ddd13460a17d7438712bd0d83fda4ff8" +checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" dependencies = [ "clap_builder", "clap_derive", @@ -367,9 +361,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.44" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8" +checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" dependencies = [ "anstream", "anstyle", @@ -379,9 +373,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.41" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491" +checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" dependencies = [ "heck", "proc-macro2", @@ -505,15 +499,15 @@ checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636" [[package]] name = "cov-mark" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0570650661aa447e7335f1d5e4f499d8e58796e617bedc9267d971e51c8b49d4" +checksum = "3f1d92727879fb4f24cec33a35e3bff74035541326cbc12ad44ba8886d1927b0" [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] @@ -612,9 +606,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" dependencies = [ "powerfmt", "serde", @@ -645,9 +639,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "either" @@ -661,7 +655,7 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" dependencies = [ - "log 0.4.27", + "log 0.4.28", ] [[package]] @@ -759,16 +753,10 @@ dependencies = [ ] [[package]] -name = "filetime" -version = "0.2.25" +name = "find-msvc-tools" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" -dependencies = [ - "cfg-if", - "libc", - "libredox", - "windows-sys 0.59.0", -] +checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" [[package]] name = "fixedbitset" @@ -778,9 +766,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", "miniz_oxide", @@ -800,9 +788,9 @@ checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -840,7 +828,7 @@ dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasi 0.14.5+wasi-0.2.4", ] [[package]] @@ -851,15 +839,15 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "globset" -version = "0.4.15" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" dependencies = [ "aho-corasick", "bstr", - "log 0.4.27", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "log 0.4.28", + "regex-automata", + "regex-syntax", ] [[package]] @@ -876,9 +864,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.4" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", @@ -891,7 +879,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.15.4", + "hashbrown 0.15.5", ] [[package]] @@ -931,7 +919,7 @@ dependencies = [ "core-foundation-sys", "iana-time-zone-haiku", "js-sys", - "log 0.4.27", + "log 0.4.28", "wasm-bindgen", "windows-core", ] @@ -1039,9 +1027,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -1071,12 +1059,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.10.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "206a8042aec68fa4a62e8d3f7aa4ceb508177d9324faf261e1959e495b7a1921" dependencies = [ "equivalent", - "hashbrown 0.15.4", + "hashbrown 0.15.5", "serde", ] @@ -1092,7 +1080,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "inotify-sys", "libc", ] @@ -1147,10 +1135,11 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ + "getrandom", "libc", ] @@ -1162,9 +1151,9 @@ checksum = "a037eddb7d28de1d0fc42411f501b53b75838d313908078d6698d064f3029b24" [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738" dependencies = [ "once_cell", "wasm-bindgen", @@ -1204,20 +1193,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.174" +version = "0.2.175" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" - -[[package]] -name = "libredox" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" -dependencies = [ - "bitflags 2.9.1", - "libc", - "redox_syscall", -] +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "line-index" @@ -1251,22 +1229,22 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.27", + "log 0.4.28", ] [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] @@ -1286,9 +1264,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.5" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] @@ -1300,18 +1278,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "log 0.4.27", + "log 0.4.28", "wasi 0.11.1+wasi-snapshot-preview1", "windows-sys 0.59.0", ] [[package]] name = "miow" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "359f76430b20a79f9e20e115b3428614e654f04fab314482fc0fda0ebd3c6044" +checksum = "536bfad37a309d62069485248eeaba1e8d9853aaf951caaeaed0585a95346f08" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.0", ] [[package]] @@ -1332,21 +1310,20 @@ checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "notify" -version = "8.0.0" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fee8403b3d66ac7b26aee6e40a897d85dc5ce26f44da36b8b73e987cc52e943" +checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.9.1", - "filetime", + "bitflags 2.9.4", "fsevent-sys", "inotify", "kqueue", "libc", - "log 0.4.27", + "log 0.4.28", "mio", "notify-types", "walkdir", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -1357,12 +1334,11 @@ checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" dependencies = [ - "overload", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -1419,19 +1395,13 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "7.0.0" +version = "7.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ac44c994af577c799b1b4bd80dc214701e349873ad894d6cdf96f4f7526e0b9" +checksum = "63eceb7b5d757011a87d08eb2123db15d87fb0c281f65d101ce30a1e96c3ad5c" dependencies = [ "memchr", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "papaya" version = "0.2.3" @@ -1490,9 +1460,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "perf-event" @@ -1520,7 +1490,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.10.0", + "indexmap 2.11.1", ] [[package]] @@ -1543,9 +1513,9 @@ checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ "zerovec", ] @@ -1567,9 +1537,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.97" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61789d7719defeb74ea5fe81f2fdfdbd28a803847077cecce2ff14e1472f6f1" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] @@ -1608,7 +1578,7 @@ version = "0.123.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f18c877575c259d127072e9bfc41d985202262fb4d6bfdae3d1252147c2562c2" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "ra-ap-rustc_hashes", "ra-ap-rustc_index", "tracing", @@ -1691,12 +1661,12 @@ dependencies = [ [[package]] name = "ra_ap_base_db" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47cac371778785196064f1a347fbbac0aafb1053786f17378bb138be59e57fc2" +checksum = "e876bb2c3e52a8d4e6684526a2d4e81f9d028b939ee4dc5dc775fe10deb44d59" dependencies = [ "dashmap", - "indexmap 2.10.0", + "indexmap 2.11.1", "la-arena", "ra_ap_cfg", "ra_ap_intern", @@ -1714,9 +1684,9 @@ dependencies = [ [[package]] name = "ra_ap_cfg" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6789ed14467e6625bef45b29555844d0168d8af1bea9edb0f1d44f0a9b69f398" +checksum = "3a0b56eb4536ce6d2431932c4d337aeeaf7bb22c9249b38cbe80677b5881228f" dependencies = [ "ra_ap_intern", "ra_ap_tt", @@ -1726,19 +1696,19 @@ dependencies = [ [[package]] name = "ra_ap_edition" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637b74c692dc9d9b44394f8c0f91c063e1b6223c6e54f4ee89c943db2f2ee26e" +checksum = "1bdc6cbe42c63ca78611bae82bfc8db24864f33dccc813697c5fde43a0907285" [[package]] name = "ra_ap_hir" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a94c69a3830f0b6fbc36c1d098fcc9430f63c8d47ee6f93e3d6810c3bf440296" +checksum = "ebffdc134eccabc17209d7760cfff7fd12ed18ab6e21188c5e084b97aa38504c" dependencies = [ "arrayvec", "either", - "indexmap 2.10.0", + "indexmap 2.11.1", "itertools 0.14.0", "ra_ap_base_db", "ra_ap_cfg", @@ -1758,17 +1728,17 @@ dependencies = [ [[package]] name = "ra_ap_hir_def" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d94fcf7743db2f4f7e2c2911563847eb8efe2b7fb9fa430c107f0ac05962254" +checksum = "81d2337ef59550392d42aa997aa1105a3d6d1c2b3a583c777786bc4a0a074fd5" dependencies = [ "arrayvec", - "bitflags 2.9.1", + "bitflags 2.9.4", "cov-mark", "drop_bomb", "either", "fst", - "indexmap 2.10.0", + "indexmap 2.11.1", "itertools 0.14.0", "la-arena", "ra-ap-rustc_abi", @@ -1796,9 +1766,9 @@ dependencies = [ [[package]] name = "ra_ap_hir_expand" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ea3f6a0ba0c1e8b63f4a41bc596c07aeb2db2f99b67fa077820cfb5fce58bd" +checksum = "97cf8ececb2743a819d8299a408e17f164dd1a1004d65936b3d5493b55330326" dependencies = [ "cov-mark", "either", @@ -1824,12 +1794,12 @@ dependencies = [ [[package]] name = "ra_ap_hir_ty" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eccf6c291a88892e59e7591e081da8b9158f8c0b1ed9cb9b73d02d29a0d3d6d9" +checksum = "bc004e1099ba766a61500c27d34eb5cd336430d0a89a9620315a90d7a202a73a" dependencies = [ "arrayvec", - "bitflags 2.9.1", + "bitflags 2.9.4", "chalk-derive 0.103.0", "chalk-ir 0.103.0", "chalk-recursive", @@ -1837,7 +1807,7 @@ dependencies = [ "cov-mark", "either", "ena", - "indexmap 2.10.0", + "indexmap 2.11.1", "itertools 0.14.0", "la-arena", "oorandom", @@ -1865,17 +1835,17 @@ dependencies = [ [[package]] name = "ra_ap_ide_db" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bbbc97cc9837f91100711b65fb0d8ce9d7ed8da0dc418e08678d973d53da6a3" +checksum = "d2acb572d6dbeb1c96d0339890ba91298b8f5f0ab22648da4ee2b4ab77dbc3fe" dependencies = [ "arrayvec", - "bitflags 2.9.1", + "bitflags 2.9.4", "cov-mark", "crossbeam-channel", "either", "fst", - "indexmap 2.10.0", + "indexmap 2.11.1", "itertools 0.14.0", "line-index", "memchr", @@ -1899,9 +1869,9 @@ dependencies = [ [[package]] name = "ra_ap_intern" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4785a674a41f9f52414fb7f19ab9a1d6886cad572e68721a883b0b85c256b" +checksum = "14586c2c4781b69fdd0c505972d9bff8c162a8740537a3ee506faff686d9a20d" dependencies = [ "dashmap", "hashbrown 0.14.5", @@ -1911,9 +1881,9 @@ dependencies = [ [[package]] name = "ra_ap_load-cargo" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3be9990782fd2c2d90b67e2e0b4a86e7412ec8a0719950d9a68292924e85691" +checksum = "50ce5546b3e3414507ab4d12348d0a28748062e33a1448895c68466d0b015503" dependencies = [ "anyhow", "crossbeam-channel", @@ -1932,9 +1902,9 @@ dependencies = [ [[package]] name = "ra_ap_mbe" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b713f4d927f9d86391f66237019b8e5dbcad4ddbbe37c91c2e21adca258b9aa" +checksum = "67333c6405797cb64aafb994b9a179157b30beeda2352e203e800be2b184a22d" dependencies = [ "arrayvec", "cov-mark", @@ -1951,9 +1921,9 @@ dependencies = [ [[package]] name = "ra_ap_parser" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d3fb8a5891c1c1d6fba5e58caa86b88f831990c878e361c54c1c1ff44ca8401" +checksum = "3a3b92b8b147c0826b83e70ad44e3c98e94201fc93e1f09396c43b4d7958c22a" dependencies = [ "drop_bomb", "ra-ap-rustc_lexer 0.123.0", @@ -1964,20 +1934,20 @@ dependencies = [ [[package]] name = "ra_ap_paths" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ccd5cfd0dae89ab2c70c4e5aa646f64bb8b5591622477342863c23a5f32dabc" +checksum = "d4991f3d57fac0def7822bebfeb159c8d7b58c824bf82044b765c54f2c0971e2" dependencies = [ "camino", ] [[package]] name = "ra_ap_proc_macro_api" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dae43c707bfb78f1b841ffb3731cc7876550463306c3b3986c20abd31033e7a2" +checksum = "45db9e2df587d56f0738afa89fb2c100ff7c1e9cbe49e07f6a8b62342832211b" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.1", "ra_ap_intern", "ra_ap_paths", "ra_ap_span", @@ -1992,9 +1962,9 @@ dependencies = [ [[package]] name = "ra_ap_profile" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a7b93ca94cf0821e8bcac6bf8464cc94d7b3cbe63ffb74946a58ad03991fae" +checksum = "19981637b8ee4160e228c815a7fef3944b5c0555d6af41a931be92d68978bc6c" dependencies = [ "cfg-if", "libc", @@ -2004,9 +1974,9 @@ dependencies = [ [[package]] name = "ra_ap_project_model" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0751b9433a0dd49c6ae58c9572faf9557d2b53818370d72112b3adeaae5eabc4" +checksum = "5bda0769fd6ca949fdd5917acb68ddc2c143745614ddd94ef38b376838611cf8" dependencies = [ "anyhow", "cargo_metadata", @@ -2031,9 +2001,9 @@ dependencies = [ [[package]] name = "ra_ap_query-group-macro" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a82732eb8f5dc592d1d8d9bee23c1d66532e39293f02e23c7a546b60b35072b" +checksum = "5f182a4b05f004eabaa83250a5de7ea3a13a92c88f3cbe98bfa1880cd9fbce0a" dependencies = [ "proc-macro2", "quote", @@ -2042,9 +2012,9 @@ dependencies = [ [[package]] name = "ra_ap_span" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c498ddf2d71705dcef9fb142269c0027c959a5eb17c435eea5466af7c3b9c47c" +checksum = "ca6f9fa2de07f5cccf431674b90e82c1fe1ea2339db3b3869eec44d135de09a4" dependencies = [ "hashbrown 0.14.5", "la-arena", @@ -2058,9 +2028,9 @@ dependencies = [ [[package]] name = "ra_ap_stdx" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26ade567b0d692c7efd4ceb921cdbe182beca0b5af9a5cf05c07cf0e14db512a" +checksum = "aa770adb32896fcba934b464ac3bd179163ba2b0766e275eed5b4e262e08492b" dependencies = [ "crossbeam-channel", "crossbeam-utils", @@ -2074,9 +2044,9 @@ dependencies = [ [[package]] name = "ra_ap_syntax" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dba62d25b0296eb095d9db77e56d096417a89db4f4de1956add0d472ebcaf922" +checksum = "6e9e1393281ad5c635239d353ed3cfbf28c8d0af03d0c61a3b24b31d1143b17f" dependencies = [ "either", "itertools 0.14.0", @@ -2092,9 +2062,9 @@ dependencies = [ [[package]] name = "ra_ap_syntax-bridge" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664466f2e824e285b671366f81128aa4a91b501fedbf7956a6bfb1f13d8b0b39" +checksum = "684e6ff1008ee5340335888f0453d94bb38950f110059a51f1818c7f6a56a807" dependencies = [ "ra_ap_intern", "ra_ap_parser", @@ -2107,9 +2077,9 @@ dependencies = [ [[package]] name = "ra_ap_toolchain" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ef82cfc5eb8f9d4a3be9876ce019b78fbfdb8ff4f7e4dee9e384d65122096ab" +checksum = "61969c5f72af03a9837e077c2d939d87a5c863623725c461777c352664a3bb03" dependencies = [ "camino", "home", @@ -2117,9 +2087,9 @@ dependencies = [ [[package]] name = "ra_ap_tt" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc858f5208f0d00f8638d14ab5ffab5d1bc79ad7fe1db5c5e0d478b9a02155c" +checksum = "fb87c7b35572c18a580ea811e970b94875fad5ac7cfa8644266a59081044f959" dependencies = [ "arrayvec", "ra-ap-rustc_lexer 0.123.0", @@ -2130,13 +2100,13 @@ dependencies = [ [[package]] name = "ra_ap_vfs" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e065b27829f5281d2ffc41de72551a0e4c4f49a9989ba7721676f414100c8af2" +checksum = "6c174d6b9b7a7f54687df7e00c3e75ed6f082a7943a9afb1d54f33c0c12773de" dependencies = [ "crossbeam-channel", "fst", - "indexmap 2.10.0", + "indexmap 2.11.1", "nohash-hasher", "ra_ap_paths", "ra_ap_stdx", @@ -2146,9 +2116,9 @@ dependencies = [ [[package]] name = "ra_ap_vfs-notify" -version = "0.0.300" +version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3c795e86c9b5fcdbb99145e401a0d6348ed471ac96f1b7de151c0abe07a5af" +checksum = "04f6fce8d47c7ce9b8f2cd0e5a55f8fc4878d6043e61f46cde4391d3a5c6086f" dependencies = [ "crossbeam-channel", "notify", @@ -2192,9 +2162,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -2202,9 +2172,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -2212,11 +2182,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.13" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", ] [[package]] @@ -2241,47 +2211,32 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.1.10" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "rowan" @@ -2334,15 +2289,15 @@ version = "0.2.3+llvm-462a31f5a5ab" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "486c2179b4796f65bfe2ee33679acf0927ac83ecf583ad6c91c3b4570911b9ad" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "smallvec", ] [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" @@ -2359,9 +2314,9 @@ dependencies = [ "boxcar", "crossbeam-queue", "crossbeam-utils", - "hashbrown 0.15.4", + "hashbrown 0.15.5", "hashlink", - "indexmap 2.10.0", + "indexmap 2.11.1", "intrusive-collections", "papaya", "parking_lot", @@ -2468,9 +2423,9 @@ dependencies = [ [[package]] name = "serde-untagged" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e" +checksum = "34836a629bcbc6f1afdf0907a744870039b1e14c0561cb26094fa683b158eff3" dependencies = [ "erased-serde", "serde", @@ -2500,10 +2455,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.142" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" dependencies = [ + "indexmap 2.11.1", "itoa", "memchr", "ryu", @@ -2538,7 +2494,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.10.0", + "indexmap 2.11.1", "schemars 0.9.0", "schemars 1.0.4", "serde", @@ -2566,7 +2522,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.1", "itoa", "ryu", "serde", @@ -2624,9 +2580,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.104" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -2664,18 +2620,18 @@ checksum = "144f754d318415ac792f9d69fc87abbbfc043ce2ef041c60f16ad828f638717d" [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" dependencies = [ "proc-macro2", "quote", @@ -2684,22 +2640,20 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] name = "time" -version = "0.3.41" +version = "0.3.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" dependencies = [ "deranged", - "itoa", "num-conv", "powerfmt", "serde", @@ -2709,15 +2663,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -2751,7 +2705,7 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75129e1dc5000bfbaa9fee9d1b21f974f9fbad9daec557a521ee6e080825f6e8" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.1", "serde", "serde_spanned 1.0.0", "toml_datetime 0.7.0", @@ -2784,7 +2738,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.1", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", @@ -2862,21 +2816,21 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "log 0.4.27", + "log 0.4.28", "once_cell", "tracing-core", ] [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "sharded-slab", "smallvec", "thread_local", @@ -2887,13 +2841,14 @@ dependencies = [ [[package]] name = "tree-sitter" -version = "0.24.6" +version = "0.25.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f2434c86ba59ed15af56039cc5bf1acf8ba76ce301e32ef08827388ef285ec5" +checksum = "ccd2a058a86cfece0bf96f7cce1021efef9c8ed0e892ab74639173e5ed7a34fa" dependencies = [ "cc", "regex", - "regex-syntax 0.8.5", + "regex-syntax", + "serde_json", "streaming-iterator", "tree-sitter-language", ] @@ -2920,9 +2875,9 @@ dependencies = [ [[package]] name = "tree-sitter-language" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c199356c799a8945965bb5f2c55b2ad9d9aa7c4b4f6e587fe9dea0bc715e5f9c" +checksum = "c4013970217383f67b18aef68f6fb2e8d409bc5755227092d32efb0422ba24b8" [[package]] name = "tree-sitter-ql" @@ -2983,9 +2938,9 @@ checksum = "a3e5df347f0bf3ec1d670aad6ca5c6a1859cd9ea61d2113125794654ccced68f" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" [[package]] name = "unicode-properties" @@ -3007,13 +2962,14 @@ checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -3058,33 +3014,43 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.2+wasi-0.2.4" +version = "0.14.5+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "a4494f6290a82f5fe584817a676a34b9d6763e8d9d18204009fb31dceca98fd4" dependencies = [ - "wit-bindgen-rt", + "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.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb" dependencies = [ "bumpalo", - "log 0.4.27", + "log 0.4.28", "proc-macro2", "quote", "syn", @@ -3093,9 +3059,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3103,9 +3069,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa" dependencies = [ "proc-macro2", "quote", @@ -3116,44 +3082,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1" dependencies = [ "unicode-ident", ] -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.0", ] -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - [[package]] name = "windows-core" version = "0.61.2" @@ -3162,7 +3106,7 @@ checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ "windows-implement", "windows-interface", - "windows-link", + "windows-link 0.1.3", "windows-result", "windows-strings", ] @@ -3195,13 +3139,19 @@ 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-result" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -3210,16 +3160,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", + "windows-link 0.1.3", ] [[package]] @@ -3246,22 +3187,16 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.2", + "windows-targets 0.53.3", ] [[package]] -name = "windows-targets" -version = "0.48.5" +name = "windows-sys" +version = "0.61.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows-link 0.2.0", ] [[package]] @@ -3282,10 +3217,11 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.2" +version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ + "windows-link 0.1.3", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -3296,12 +3232,6 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -3314,12 +3244,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -3332,12 +3256,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -3362,12 +3280,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -3380,12 +3292,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -3398,12 +3304,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -3416,12 +3316,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -3436,21 +3330,18 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.11" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.1", -] +checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36" [[package]] name = "writeable" @@ -3490,18 +3381,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", @@ -3542,9 +3433,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.2" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" dependencies = [ "yoke", "zerofrom", @@ -3582,9 +3473,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.15+zstd.1.5.7" +version = "2.0.16+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" dependencies = [ "cc", "pkg-config", diff --git a/MODULE.bazel b/MODULE.bazel index c2dc258aaac1..9d09fc99722b 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -89,8 +89,8 @@ use_repo( "vendor_py__cc-1.2.14", "vendor_py__clap-4.5.30", "vendor_py__regex-1.11.1", - "vendor_py__tree-sitter-0.20.4", - "vendor_py__tree-sitter-graph-0.7.0", + "vendor_py__tree-sitter-0.24.7", + "vendor_py__tree-sitter-graph-0.12.0", ) # deps for ruby+rust @@ -101,50 +101,50 @@ use_repo( "vendor_ts__anyhow-1.0.99", "vendor_ts__argfile-0.2.1", "vendor_ts__chalk-ir-0.104.0", - "vendor_ts__chrono-0.4.41", - "vendor_ts__clap-4.5.44", + "vendor_ts__chrono-0.4.42", + "vendor_ts__clap-4.5.47", "vendor_ts__dunce-1.0.5", "vendor_ts__either-1.15.0", "vendor_ts__encoding-0.2.33", "vendor_ts__figment-0.10.19", - "vendor_ts__flate2-1.1.0", + "vendor_ts__flate2-1.1.2", "vendor_ts__glob-0.3.3", - "vendor_ts__globset-0.4.15", + "vendor_ts__globset-0.4.16", "vendor_ts__itertools-0.14.0", "vendor_ts__lazy_static-1.5.0", "vendor_ts__mustache-0.9.0", "vendor_ts__num-traits-0.2.19", "vendor_ts__num_cpus-1.17.0", - "vendor_ts__proc-macro2-1.0.97", + "vendor_ts__proc-macro2-1.0.101", "vendor_ts__quote-1.0.40", - "vendor_ts__ra_ap_base_db-0.0.300", - "vendor_ts__ra_ap_cfg-0.0.300", - "vendor_ts__ra_ap_hir-0.0.300", - "vendor_ts__ra_ap_hir_def-0.0.300", - "vendor_ts__ra_ap_hir_expand-0.0.300", - "vendor_ts__ra_ap_hir_ty-0.0.300", - "vendor_ts__ra_ap_ide_db-0.0.300", - "vendor_ts__ra_ap_intern-0.0.300", - "vendor_ts__ra_ap_load-cargo-0.0.300", - "vendor_ts__ra_ap_parser-0.0.300", - "vendor_ts__ra_ap_paths-0.0.300", - "vendor_ts__ra_ap_project_model-0.0.300", - "vendor_ts__ra_ap_span-0.0.300", - "vendor_ts__ra_ap_stdx-0.0.300", - "vendor_ts__ra_ap_syntax-0.0.300", - "vendor_ts__ra_ap_vfs-0.0.300", + "vendor_ts__ra_ap_base_db-0.0.301", + "vendor_ts__ra_ap_cfg-0.0.301", + "vendor_ts__ra_ap_hir-0.0.301", + "vendor_ts__ra_ap_hir_def-0.0.301", + "vendor_ts__ra_ap_hir_expand-0.0.301", + "vendor_ts__ra_ap_hir_ty-0.0.301", + "vendor_ts__ra_ap_ide_db-0.0.301", + "vendor_ts__ra_ap_intern-0.0.301", + "vendor_ts__ra_ap_load-cargo-0.0.301", + "vendor_ts__ra_ap_parser-0.0.301", + "vendor_ts__ra_ap_paths-0.0.301", + "vendor_ts__ra_ap_project_model-0.0.301", + "vendor_ts__ra_ap_span-0.0.301", + "vendor_ts__ra_ap_stdx-0.0.301", + "vendor_ts__ra_ap_syntax-0.0.301", + "vendor_ts__ra_ap_vfs-0.0.301", "vendor_ts__rand-0.9.2", - "vendor_ts__rayon-1.10.0", - "vendor_ts__regex-1.11.1", + "vendor_ts__rayon-1.11.0", + "vendor_ts__regex-1.11.2", "vendor_ts__serde-1.0.219", - "vendor_ts__serde_json-1.0.142", + "vendor_ts__serde_json-1.0.143", "vendor_ts__serde_with-3.14.0", - "vendor_ts__syn-2.0.104", + "vendor_ts__syn-2.0.106", "vendor_ts__toml-0.9.5", "vendor_ts__tracing-0.1.41", "vendor_ts__tracing-flame-0.2.0", - "vendor_ts__tracing-subscriber-0.3.19", - "vendor_ts__tree-sitter-0.24.6", + "vendor_ts__tracing-subscriber-0.3.20", + "vendor_ts__tree-sitter-0.25.9", "vendor_ts__tree-sitter-embedded-template-0.23.2", "vendor_ts__tree-sitter-json-0.24.8", "vendor_ts__tree-sitter-ql-0.23.1", diff --git a/actions/ql/lib/CHANGELOG.md b/actions/ql/lib/CHANGELOG.md index 60f6a45ea945..e6ae9a82059e 100644 --- a/actions/ql/lib/CHANGELOG.md +++ b/actions/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.18 + +No user-facing changes. + ## 0.4.17 No user-facing changes. diff --git a/actions/ql/lib/change-notes/released/0.4.18.md b/actions/ql/lib/change-notes/released/0.4.18.md new file mode 100644 index 000000000000..a6a7b2e276b6 --- /dev/null +++ b/actions/ql/lib/change-notes/released/0.4.18.md @@ -0,0 +1,3 @@ +## 0.4.18 + +No user-facing changes. diff --git a/actions/ql/lib/codeql-pack.release.yml b/actions/ql/lib/codeql-pack.release.yml index d5b31a0cac9f..1a848f928999 100644 --- a/actions/ql/lib/codeql-pack.release.yml +++ b/actions/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.4.17 +lastReleaseVersion: 0.4.18 diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 55e8a97e16bb..bfebfa99d04d 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.17 +version: 0.4.18 library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/CHANGELOG.md b/actions/ql/src/CHANGELOG.md index 78b4591c5210..534ba89566b2 100644 --- a/actions/ql/src/CHANGELOG.md +++ b/actions/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.10 + +No user-facing changes. + ## 0.6.9 ### Minor Analysis Improvements diff --git a/actions/ql/src/change-notes/released/0.6.10.md b/actions/ql/src/change-notes/released/0.6.10.md new file mode 100644 index 000000000000..048cd0c98baf --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.10.md @@ -0,0 +1,3 @@ +## 0.6.10 + +No user-facing changes. diff --git a/actions/ql/src/codeql-pack.release.yml b/actions/ql/src/codeql-pack.release.yml index f03da398190a..c2eebb652b05 100644 --- a/actions/ql/src/codeql-pack.release.yml +++ b/actions/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.9 +lastReleaseVersion: 0.6.10 diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index ea42e41ebb88..9dba67fea767 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.9 +version: 0.6.10 library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index cfe24937b744..0909c8e3c881 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.6.1 + +No user-facing changes. + ## 5.6.0 ### Deprecated APIs diff --git a/cpp/ql/lib/change-notes/released/5.6.1.md b/cpp/ql/lib/change-notes/released/5.6.1.md new file mode 100644 index 000000000000..368d902c7fe9 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/5.6.1.md @@ -0,0 +1,3 @@ +## 5.6.1 + +No user-facing changes. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index df73323b21f0..2dcac412aa9c 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.6.0 +lastReleaseVersion: 5.6.1 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index d87444db7bf5..d32f408faff9 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 5.6.0 +version: 5.6.1 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll index 58c3dfdea16b..d89ab06ed829 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll @@ -104,7 +104,9 @@ private module StepsInput implements Impl::Private::StepsInputSig { result.getStaticCallTarget().getUnderlyingCallable() = sc } - Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponent sc) { none() } + DataFlowCallable getSourceNodeEnclosingCallable(Input::SourceBase source) { none() } + + Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { none() } Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { none() } } diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 0cafbd23191b..39549ed1bdc2 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.5.1 + +No user-facing changes. + ## 1.5.0 ### Major Analysis Improvements diff --git a/cpp/ql/src/change-notes/released/1.5.1.md b/cpp/ql/src/change-notes/released/1.5.1.md new file mode 100644 index 000000000000..7b24a64aca3a --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.5.1.md @@ -0,0 +1,3 @@ +## 1.5.1 + +No user-facing changes. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 639f80c43417..c5775c46013c 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.0 +lastReleaseVersion: 1.5.1 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 5a74eac8d615..7322e2571d12 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.0 +version: 1.5.1 groups: - cpp - queries diff --git a/cpp/ql/test/library-tests/permissive/accesses.expected b/cpp/ql/test/library-tests/permissive/accesses.expected index f3e66dcedaf7..e69de29bb2d1 100644 --- a/cpp/ql/test/library-tests/permissive/accesses.expected +++ b/cpp/ql/test/library-tests/permissive/accesses.expected @@ -1 +0,0 @@ -| permissive.cpp:6:5:6:7 | str | diff --git a/cpp/ql/test/library-tests/permissive/calls.expected b/cpp/ql/test/library-tests/permissive/calls.expected index 9d780e76405e..e69de29bb2d1 100644 --- a/cpp/ql/test/library-tests/permissive/calls.expected +++ b/cpp/ql/test/library-tests/permissive/calls.expected @@ -1 +0,0 @@ -| permissive.cpp:6:3:6:3 | call to f | permissive.cpp:2:13:2:13 | f | diff --git a/cpp/ql/test/library-tests/permissive/permissive.cpp b/cpp/ql/test/library-tests/permissive/permissive.cpp deleted file mode 100644 index 15f5b94ef61c..000000000000 --- a/cpp/ql/test/library-tests/permissive/permissive.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// semmle-extractor-options: --edg --permissive -static void f(char* foo) {} - -static void g(void) { - const char* str = "foo"; - f(str); -} - diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 41b8b166a6c6..bcfd38e14942 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.49 + +No user-facing changes. + ## 1.7.48 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.49.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.49.md new file mode 100644 index 000000000000..431bff76c0b7 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.49.md @@ -0,0 +1,3 @@ +## 1.7.49 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index f5fe8023097c..fe16fdfefdc8 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.48 +lastReleaseVersion: 1.7.49 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 8b069392a0b3..02e6cddfc17e 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.48 +version: 1.7.49 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 41b8b166a6c6..bcfd38e14942 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.49 + +No user-facing changes. + ## 1.7.48 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.49.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.49.md new file mode 100644 index 000000000000..431bff76c0b7 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.49.md @@ -0,0 +1,3 @@ +## 1.7.49 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index f5fe8023097c..fe16fdfefdc8 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.48 +lastReleaseVersion: 1.7.49 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 197f3182a634..84e6c8ef7e08 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.48 +version: 1.7.49 groups: - csharp - solorigate diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected index 53810418624d..fdc5e6eae9d1 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected @@ -1,20 +1,39 @@ ql/csharp/ql/src/API Abuse/CallToGCCollect.ql ql/csharp/ql/src/API Abuse/CallToObsoleteMethod.ql +ql/csharp/ql/src/API Abuse/ClassDoesNotImplementEquals.ql ql/csharp/ql/src/API Abuse/ClassImplementsICloneable.ql +ql/csharp/ql/src/API Abuse/DisposeNotCalledOnException.ql ql/csharp/ql/src/API Abuse/FormatInvalid.ql +ql/csharp/ql/src/API Abuse/InconsistentEqualsGetHashCode.ql +ql/csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql +ql/csharp/ql/src/API Abuse/IncorrectEqualsSignature.ql ql/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql +ql/csharp/ql/src/API Abuse/NonOverridingMethod.ql ql/csharp/ql/src/API Abuse/NullArgumentToEquals.ql ql/csharp/ql/src/ASP/BlockCodeResponseWrite.ql +ql/csharp/ql/src/ASP/SplitControlStructure.ql ql/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql ql/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql +ql/csharp/ql/src/Bad Practices/Comments/CommentedOutCode.ql +ql/csharp/ql/src/Bad Practices/Comments/TodoComments.ql ql/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql ql/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql +ql/csharp/ql/src/Bad Practices/Declarations/NoConstantsOnly.ql ql/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql +ql/csharp/ql/src/Bad Practices/ErroneousClassCompare.ql +ql/csharp/ql/src/Bad Practices/Implementation Hiding/AbstractToConcreteCollection.ql ql/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql +ql/csharp/ql/src/Bad Practices/Implementation Hiding/StaticArray.ql +ql/csharp/ql/src/Bad Practices/Naming Conventions/ConfusingMethodNames.ql +ql/csharp/ql/src/Bad Practices/Naming Conventions/ConfusingOverridesNames.ql +ql/csharp/ql/src/Bad Practices/Naming Conventions/ControlNamePrefixes.ql +ql/csharp/ql/src/Bad Practices/Naming Conventions/DefaultControlNames.ql ql/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql ql/csharp/ql/src/Bad Practices/Naming Conventions/SameNameAsSuper.ql ql/csharp/ql/src/Bad Practices/PathCombine.ql ql/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql +ql/csharp/ql/src/Bad Practices/UseOfSystemOutputStream.ql +ql/csharp/ql/src/Bad Practices/VirtualCallInConstructorOrDestructor.ql ql/csharp/ql/src/CSI/CompareIdenticalValues.ql ql/csharp/ql/src/CSI/NullAlways.ql ql/csharp/ql/src/CSI/NullMaybe.ql @@ -22,8 +41,10 @@ ql/csharp/ql/src/Concurrency/FutileSyncOnField.ql ql/csharp/ql/src/Concurrency/LockOrder.ql ql/csharp/ql/src/Concurrency/LockThis.ql ql/csharp/ql/src/Concurrency/LockedWait.ql +ql/csharp/ql/src/Concurrency/SynchSetUnsynchGet.ql +ql/csharp/ql/src/Concurrency/UnsafeLazyInitialization.ql +ql/csharp/ql/src/Concurrency/UnsynchronizedStaticAccess.ql ql/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql -ql/csharp/ql/src/Documentation/XmldocMissingSummary.ql ql/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql ql/csharp/ql/src/Language Abuse/CatchOfGenericException.ql ql/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql @@ -35,27 +56,42 @@ ql/csharp/ql/src/Language Abuse/NestedIf.ql ql/csharp/ql/src/Language Abuse/RethrowException.ql ql/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql ql/csharp/ql/src/Language Abuse/UnusedPropertyValue.ql +ql/csharp/ql/src/Language Abuse/UselessCastToSelf.ql +ql/csharp/ql/src/Language Abuse/UselessIsBeforeAs.ql +ql/csharp/ql/src/Language Abuse/UselessNullCoalescingExpression.ql +ql/csharp/ql/src/Language Abuse/UselessTypeTest.ql +ql/csharp/ql/src/Language Abuse/UselessUpcast.ql ql/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql ql/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql ql/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql ql/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql ql/csharp/ql/src/Likely Bugs/ConstantComparison.ql ql/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql +ql/csharp/ql/src/Likely Bugs/Dynamic/BadDynamicCall.ql ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql ql/csharp/ql/src/Likely Bugs/EqualsArray.ql +ql/csharp/ql/src/Likely Bugs/EqualsUsesAs.ql +ql/csharp/ql/src/Likely Bugs/EqualsUsesIs.ql ql/csharp/ql/src/Likely Bugs/HashedButNoHash.ql ql/csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql ql/csharp/ql/src/Likely Bugs/IncomparableEquals.ql +ql/csharp/ql/src/Likely Bugs/InconsistentCompareTo.ql +ql/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql +ql/csharp/ql/src/Likely Bugs/MishandlingJapaneseEra.ql ql/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql +ql/csharp/ql/src/Likely Bugs/ObjectComparison.ql ql/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql ql/csharp/ql/src/Likely Bugs/RecursiveEquals.ql +ql/csharp/ql/src/Likely Bugs/RecursiveOperatorEquals.ql ql/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql ql/csharp/ql/src/Likely Bugs/SelfAssignment.ql ql/csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql ql/csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql +ql/csharp/ql/src/Likely Bugs/Statements/UseBraces.ql ql/csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql ql/csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql ql/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql +ql/csharp/ql/src/Linq/BadMultipleIteration.ql ql/csharp/ql/src/Linq/MissedAllOpportunity.ql ql/csharp/ql/src/Linq/MissedCastOpportunity.ql ql/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql @@ -68,5 +104,6 @@ ql/csharp/ql/src/Performance/UseTryGetValue.ql ql/csharp/ql/src/Useless code/DefaultToString.ql ql/csharp/ql/src/Useless code/FutileConditional.ql ql/csharp/ql/src/Useless code/IntGetHashCode.ql +ql/csharp/ql/src/Useless code/PointlessForwardingMethod.ql ql/csharp/ql/src/Useless code/RedundantToStringCall.ql ql/csharp/ql/src/Useless code/UnusedLabel.ql diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected index 53810418624d..6694cc8461b8 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected @@ -23,7 +23,6 @@ ql/csharp/ql/src/Concurrency/LockOrder.ql ql/csharp/ql/src/Concurrency/LockThis.ql ql/csharp/ql/src/Concurrency/LockedWait.ql ql/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql -ql/csharp/ql/src/Documentation/XmldocMissingSummary.ql ql/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql ql/csharp/ql/src/Language Abuse/CatchOfGenericException.ql ql/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql diff --git a/csharp/ql/integration-tests/posix/query-suite/not_included_in_qls.expected b/csharp/ql/integration-tests/posix/query-suite/not_included_in_qls.expected index dff6574dddd0..4c8d4d42e98a 100644 --- a/csharp/ql/integration-tests/posix/query-suite/not_included_in_qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/not_included_in_qls.expected @@ -1,31 +1,20 @@ ql/csharp/ql/src/API Abuse/MissingDisposeCall.ql ql/csharp/ql/src/API Abuse/MissingDisposeMethod.ql -ql/csharp/ql/src/API Abuse/NonOverridingMethod.ql ql/csharp/ql/src/API Abuse/UncheckedReturnValue.ql ql/csharp/ql/src/ASP/ComplexInlineCode.ql ql/csharp/ql/src/ASP/NonInternationalizedText.ql -ql/csharp/ql/src/ASP/SplitControlStructure.ql ql/csharp/ql/src/AlertSuppression.ql ql/csharp/ql/src/Architecture/Dependencies/MutualDependency.ql ql/csharp/ql/src/Architecture/Refactoring Opportunities/FeatureEnvy.ql -ql/csharp/ql/src/Bad Practices/Comments/CommentedOutCode.ql -ql/csharp/ql/src/Bad Practices/Comments/TodoComments.ql ql/csharp/ql/src/Bad Practices/Declarations/EmptyInterface.ql -ql/csharp/ql/src/Bad Practices/Declarations/NoConstantsOnly.ql -ql/csharp/ql/src/Bad Practices/Implementation Hiding/StaticArray.ql ql/csharp/ql/src/Bad Practices/LeftoverDebugCode.ql ql/csharp/ql/src/Bad Practices/Magic Constants/MagicConstantsNumbers.ql ql/csharp/ql/src/Bad Practices/Magic Constants/MagicConstantsString.ql ql/csharp/ql/src/Bad Practices/Magic Constants/MagicNumbersUseConstant.ql ql/csharp/ql/src/Bad Practices/Magic Constants/MagicStringsUseConstant.ql -ql/csharp/ql/src/Bad Practices/Naming Conventions/ConfusingMethodNames.ql -ql/csharp/ql/src/Bad Practices/Naming Conventions/ConfusingOverridesNames.ql ql/csharp/ql/src/Bad Practices/Naming Conventions/ConstantNaming.ql -ql/csharp/ql/src/Bad Practices/Naming Conventions/ControlNamePrefixes.ql -ql/csharp/ql/src/Bad Practices/Naming Conventions/DefaultControlNames.ql ql/csharp/ql/src/Bad Practices/Naming Conventions/VariableNameTooShort.ql ql/csharp/ql/src/Bad Practices/UseOfHtmlInputHidden.ql -ql/csharp/ql/src/Bad Practices/UseOfSystemOutputStream.ql ql/csharp/ql/src/Configuration/PasswordInConfigurationFile.ql ql/csharp/ql/src/Dead Code/DeadRefTypes.ql ql/csharp/ql/src/Dead Code/NonAssignedFields.ql @@ -39,7 +28,6 @@ ql/csharp/ql/src/Documentation/XmldocMissingParam.ql ql/csharp/ql/src/Documentation/XmldocMissingReturn.ql ql/csharp/ql/src/Documentation/XmldocMissingTypeParam.ql ql/csharp/ql/src/Language Abuse/ForeachCapture.ql -ql/csharp/ql/src/Language Abuse/UselessIsBeforeAs.ql ql/csharp/ql/src/Likely Bugs/BadCheckOdd.ql ql/csharp/ql/src/Likely Bugs/RandomUsedOnce.ql ql/csharp/ql/src/Metrics/Callables/CCyclomaticComplexity.ql @@ -93,7 +81,6 @@ ql/csharp/ql/src/Security Features/CWE-611/UseXmlSecureResolver.ql ql/csharp/ql/src/Security Features/CWE-798/HardcodedConnectionString.ql ql/csharp/ql/src/Security Features/CWE-798/HardcodedCredentials.ql ql/csharp/ql/src/Security Features/CWE-838/InappropriateEncoding.ql -ql/csharp/ql/src/Useless code/PointlessForwardingMethod.ql ql/csharp/ql/src/definitions.ql ql/csharp/ql/src/experimental/CWE-099/TaintedWebClient.ql ql/csharp/ql/src/experimental/CWE-918/RequestForgery.ql diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index cb639225e7d2..095eab5cdbaf 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.2.5 + +No user-facing changes. + ## 5.2.4 No user-facing changes. diff --git a/csharp/ql/lib/change-notes/released/5.2.5.md b/csharp/ql/lib/change-notes/released/5.2.5.md new file mode 100644 index 000000000000..bd0e11570992 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/5.2.5.md @@ -0,0 +1,3 @@ +## 5.2.5 + +No user-facing changes. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index fc4dc64578b7..63222f8b4a01 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.2.4 +lastReleaseVersion: 5.2.5 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 4bc94c6c6d0d..df9b158288d6 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.2.4 +version: 5.2.5 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index 82ab4b638126..7185e39a45b2 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -273,6 +273,29 @@ module AbstractValues { private import AbstractValues +/** Gets the value resulting from matching `null` against `pat`. */ +private boolean patternMatchesNull(PatternExpr pat) { + pat instanceof NullLiteral and result = true + or + not pat instanceof NullLiteral and + not pat instanceof NotPatternExpr and + not pat instanceof OrPatternExpr and + not pat instanceof AndPatternExpr and + result = false + or + result = patternMatchesNull(pat.(NotPatternExpr).getPattern()).booleanNot() + or + exists(OrPatternExpr ope | pat = ope | + result = + patternMatchesNull(ope.getLeftOperand()).booleanOr(patternMatchesNull(ope.getRightOperand())) + ) + or + exists(AndPatternExpr ape | pat = ape | + result = + patternMatchesNull(ape.getLeftOperand()).booleanAnd(patternMatchesNull(ape.getRightOperand())) + ) +} + pragma[nomagic] private predicate typePattern(PatternMatch pm, TypePatternExpr tpe, Type t) { tpe = pm.getPattern() and @@ -362,8 +385,7 @@ class DereferenceableExpr extends Expr { isNull = branch or // E.g. `x is string` or `x is ""` - not pm.getPattern() instanceof NullLiteral and - branch = true and + branch.booleanNot() = patternMatchesNull(pm.getPattern()) and isNull = false or exists(TypePatternExpr tpe | diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll index 90db68f7c93a..3ee16f21489c 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll @@ -183,7 +183,7 @@ private module TypesInput implements Impl::Private::TypesInputSig { ) } - DataFlowType getSourceType(Input::SourceBase source, Impl::Private::SummaryComponent sc) { + DataFlowType getSourceType(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { none() } @@ -195,7 +195,9 @@ private module StepsInput implements Impl::Private::StepsInputSig { sc = viableCallable(result).asSummarizedCallable() } - Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponent sc) { none() } + DataFlowCallable getSourceNodeEnclosingCallable(Input::SourceBase source) { none() } + + Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { none() } Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { none() } } diff --git a/csharp/ql/src/API Abuse/ClassDoesNotImplementEquals.ql b/csharp/ql/src/API Abuse/ClassDoesNotImplementEquals.ql index 0539cd27a667..dc6ce132c9a6 100644 --- a/csharp/ql/src/API Abuse/ClassDoesNotImplementEquals.ql +++ b/csharp/ql/src/API Abuse/ClassDoesNotImplementEquals.ql @@ -7,8 +7,9 @@ * @problem.severity error * @precision medium * @id cs/class-missing-equals - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/API Abuse/DisposeNotCalledOnException.ql b/csharp/ql/src/API Abuse/DisposeNotCalledOnException.ql index 3349ee932510..989d2ecd499b 100644 --- a/csharp/ql/src/API Abuse/DisposeNotCalledOnException.ql +++ b/csharp/ql/src/API Abuse/DisposeNotCalledOnException.ql @@ -7,8 +7,10 @@ * @problem.severity warning * @precision medium * @id cs/dispose-not-called-on-throw - * @tags efficiency - * maintainability + * @tags quality + * reliability + * error-handling + * performance * external/cwe/cwe-404 * external/cwe/cwe-459 * external/cwe/cwe-460 diff --git a/csharp/ql/src/API Abuse/InconsistentEqualsGetHashCode.ql b/csharp/ql/src/API Abuse/InconsistentEqualsGetHashCode.ql index 569716b3bc0a..6ad43aad3a11 100644 --- a/csharp/ql/src/API Abuse/InconsistentEqualsGetHashCode.ql +++ b/csharp/ql/src/API Abuse/InconsistentEqualsGetHashCode.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision medium * @id cs/inconsistent-equals-and-gethashcode - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * external/cwe/cwe-581 */ diff --git a/csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql b/csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql index 6f6c17566bfd..63d947e02c7d 100644 --- a/csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql +++ b/csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql @@ -5,8 +5,9 @@ * @problem.severity warning * @precision medium * @id cs/wrong-compareto-signature - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/API Abuse/IncorrectEqualsSignature.ql b/csharp/ql/src/API Abuse/IncorrectEqualsSignature.ql index 7103cae4906a..5367b0ac6049 100644 --- a/csharp/ql/src/API Abuse/IncorrectEqualsSignature.ql +++ b/csharp/ql/src/API Abuse/IncorrectEqualsSignature.ql @@ -5,8 +5,9 @@ * @problem.severity warning * @precision medium * @id cs/wrong-equals-signature - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/API Abuse/NonOverridingMethod.ql b/csharp/ql/src/API Abuse/NonOverridingMethod.ql index 598ce670d9f4..bff2c17b3068 100644 --- a/csharp/ql/src/API Abuse/NonOverridingMethod.ql +++ b/csharp/ql/src/API Abuse/NonOverridingMethod.ql @@ -5,9 +5,10 @@ * @problem.severity recommendation * @precision medium * @id cs/nonoverriding-method - * @tags reliability + * @tags quality + * reliability + * correctness * readability - * naming */ import csharp diff --git a/csharp/ql/src/ASP/SplitControlStructure.ql b/csharp/ql/src/ASP/SplitControlStructure.ql index de7d44ccc1ea..701433c05608 100644 --- a/csharp/ql/src/ASP/SplitControlStructure.ql +++ b/csharp/ql/src/ASP/SplitControlStructure.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision medium * @id cs/asp/split-control-structure - * @tags maintainability - * frameworks/asp.net + * @tags quality + * maintainability + * readability */ import semmle.code.asp.AspNet diff --git a/csharp/ql/src/Bad Practices/Comments/CommentedOutCode.ql b/csharp/ql/src/Bad Practices/Comments/CommentedOutCode.ql index c079cc16a2ab..9da9e789e0c9 100644 --- a/csharp/ql/src/Bad Practices/Comments/CommentedOutCode.ql +++ b/csharp/ql/src/Bad Practices/Comments/CommentedOutCode.ql @@ -5,9 +5,9 @@ * @problem.severity recommendation * @precision medium * @id cs/commented-out-code - * @tags maintainability - * statistical - * non-attributable + * @tags quality + * maintainability + * readability */ import csharp diff --git a/csharp/ql/src/Bad Practices/Comments/TodoComments.ql b/csharp/ql/src/Bad Practices/Comments/TodoComments.ql index 751c064bccf6..50104f55eb76 100644 --- a/csharp/ql/src/Bad Practices/Comments/TodoComments.ql +++ b/csharp/ql/src/Bad Practices/Comments/TodoComments.ql @@ -6,7 +6,8 @@ * @problem.severity recommendation * @precision medium * @id cs/todo-comment - * @tags maintainability + * @tags quality + * maintainability * external/cwe/cwe-546 */ diff --git a/csharp/ql/src/Bad Practices/Declarations/NoConstantsOnly.ql b/csharp/ql/src/Bad Practices/Declarations/NoConstantsOnly.ql index 896b78046629..8ae848feaebb 100644 --- a/csharp/ql/src/Bad Practices/Declarations/NoConstantsOnly.ql +++ b/csharp/ql/src/Bad Practices/Declarations/NoConstantsOnly.ql @@ -6,8 +6,9 @@ * @problem.severity recommendation * @precision medium * @id cs/constants-only-interface - * @tags maintainability - * modularity + * @tags quality + * maintainability + * readability */ import csharp diff --git a/csharp/ql/src/Bad Practices/ErroneousClassCompare.ql b/csharp/ql/src/Bad Practices/ErroneousClassCompare.ql index 134d612979b5..658484c2ba73 100644 --- a/csharp/ql/src/Bad Practices/ErroneousClassCompare.ql +++ b/csharp/ql/src/Bad Practices/ErroneousClassCompare.ql @@ -5,7 +5,8 @@ * @problem.severity warning * @precision medium * @id cs/class-name-comparison - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-486 */ diff --git a/csharp/ql/src/Bad Practices/Implementation Hiding/AbstractToConcreteCollection.ql b/csharp/ql/src/Bad Practices/Implementation Hiding/AbstractToConcreteCollection.ql index 4becd8b58c35..80b108d2736e 100644 --- a/csharp/ql/src/Bad Practices/Implementation Hiding/AbstractToConcreteCollection.ql +++ b/csharp/ql/src/Bad Practices/Implementation Hiding/AbstractToConcreteCollection.ql @@ -7,9 +7,9 @@ * @problem.severity warning * @precision medium * @id cs/cast-from-abstract-to-concrete-collection - * @tags reliability - * maintainability - * modularity + * @tags quality + * reliability + * correctness * external/cwe/cwe-485 */ diff --git a/csharp/ql/src/Bad Practices/Implementation Hiding/StaticArray.ql b/csharp/ql/src/Bad Practices/Implementation Hiding/StaticArray.ql index 0d00adb50519..086182b697ca 100644 --- a/csharp/ql/src/Bad Practices/Implementation Hiding/StaticArray.ql +++ b/csharp/ql/src/Bad Practices/Implementation Hiding/StaticArray.ql @@ -5,9 +5,9 @@ * @problem.severity recommendation * @precision medium * @id cs/static-array - * @tags reliability - * maintainability - * modularity + * @tags quality + * reliability + * correctness * external/cwe/cwe-582 */ diff --git a/csharp/ql/src/Bad Practices/Naming Conventions/ConfusingMethodNames.ql b/csharp/ql/src/Bad Practices/Naming Conventions/ConfusingMethodNames.ql index 5e3f39d7a87a..199647b5f1f7 100644 --- a/csharp/ql/src/Bad Practices/Naming Conventions/ConfusingMethodNames.ql +++ b/csharp/ql/src/Bad Practices/Naming Conventions/ConfusingMethodNames.ql @@ -5,9 +5,9 @@ * @problem.severity recommendation * @precision medium * @id cs/confusing-method-name - * @tags maintainability + * @tags quality + * maintainability * readability - * naming */ import csharp diff --git a/csharp/ql/src/Bad Practices/Naming Conventions/ConfusingOverridesNames.ql b/csharp/ql/src/Bad Practices/Naming Conventions/ConfusingOverridesNames.ql index ae0853897298..1ef0ccad22a5 100644 --- a/csharp/ql/src/Bad Practices/Naming Conventions/ConfusingOverridesNames.ql +++ b/csharp/ql/src/Bad Practices/Naming Conventions/ConfusingOverridesNames.ql @@ -6,9 +6,10 @@ * @problem.severity recommendation * @precision medium * @id cs/confusing-override-name - * @tags reliability + * @tags quality + * maintainability * readability - * naming + * correctness */ import csharp diff --git a/csharp/ql/src/Bad Practices/Naming Conventions/ControlNamePrefixes.ql b/csharp/ql/src/Bad Practices/Naming Conventions/ControlNamePrefixes.ql index 550385d68286..7e80d4334bd4 100644 --- a/csharp/ql/src/Bad Practices/Naming Conventions/ControlNamePrefixes.ql +++ b/csharp/ql/src/Bad Practices/Naming Conventions/ControlNamePrefixes.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id cs/web/unprefixed-control-name - * @tags maintainability + * @tags quality + * maintainability + * readability */ import csharp diff --git a/csharp/ql/src/Bad Practices/Naming Conventions/DefaultControlNames.ql b/csharp/ql/src/Bad Practices/Naming Conventions/DefaultControlNames.ql index 92aa5e9e0c2d..e12bd2e6af30 100644 --- a/csharp/ql/src/Bad Practices/Naming Conventions/DefaultControlNames.ql +++ b/csharp/ql/src/Bad Practices/Naming Conventions/DefaultControlNames.ql @@ -6,8 +6,9 @@ * @problem.severity recommendation * @precision medium * @id cs/forms/default-control-name - * @tags readability - * naming + * @tags quality + * maintainability + * readability */ import csharp diff --git a/csharp/ql/src/Bad Practices/UseOfSystemOutputStream.ql b/csharp/ql/src/Bad Practices/UseOfSystemOutputStream.ql index a5a9418bb157..b9a45126d3c6 100644 --- a/csharp/ql/src/Bad Practices/UseOfSystemOutputStream.ql +++ b/csharp/ql/src/Bad Practices/UseOfSystemOutputStream.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id cs/console-output - * @tags maintainability + * @tags quality + * reliability + * error-handling */ import csharp diff --git a/csharp/ql/src/Bad Practices/VirtualCallInConstructorOrDestructor.ql b/csharp/ql/src/Bad Practices/VirtualCallInConstructorOrDestructor.ql index d754f1a03c59..a29b39d33a10 100644 --- a/csharp/ql/src/Bad Practices/VirtualCallInConstructorOrDestructor.ql +++ b/csharp/ql/src/Bad Practices/VirtualCallInConstructorOrDestructor.ql @@ -6,9 +6,9 @@ * @precision medium * @id cs/virtual-call-in-constructor * @alternate-ids cs/virtual-call-in-constructor-or-destructor - * @tags reliability - * maintainability - * modularity + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index e044a3dbb4f7..7fa8992c49af 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,10 @@ +## 1.4.1 + +### Minor Analysis Improvements + +* The modeling of null guards based on complex pattern expressions has been improved, which in turn improves the query `cs/dereferenced-value-may-be-null` by removing false positives. +* The query `cs/xmldoc/missing-summary` has been removed from the `code-quality` suite, to align with other languages. + ## 1.4.0 ### Deprecated Queries diff --git a/csharp/ql/src/Concurrency/SynchSetUnsynchGet.ql b/csharp/ql/src/Concurrency/SynchSetUnsynchGet.ql index 9c8bb72708cf..569aa1e53663 100644 --- a/csharp/ql/src/Concurrency/SynchSetUnsynchGet.ql +++ b/csharp/ql/src/Concurrency/SynchSetUnsynchGet.ql @@ -6,8 +6,10 @@ * @problem.severity error * @precision medium * @id cs/unsynchronized-getter - * @tags correctness + * @tags quality + * reliability * concurrency + * correctness * external/cwe/cwe-662 */ diff --git a/csharp/ql/src/Concurrency/UnsafeLazyInitialization.ql b/csharp/ql/src/Concurrency/UnsafeLazyInitialization.ql index 97b4fbdba8ee..db674d9c5c3f 100644 --- a/csharp/ql/src/Concurrency/UnsafeLazyInitialization.ql +++ b/csharp/ql/src/Concurrency/UnsafeLazyInitialization.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision medium * @id cs/unsafe-double-checked-lock - * @tags correctness + * @tags quality + * reliability * concurrency * external/cwe/cwe-609 */ diff --git a/csharp/ql/src/Concurrency/UnsynchronizedStaticAccess.ql b/csharp/ql/src/Concurrency/UnsynchronizedStaticAccess.ql index 1ce94edee3d2..150ae78ae090 100644 --- a/csharp/ql/src/Concurrency/UnsynchronizedStaticAccess.ql +++ b/csharp/ql/src/Concurrency/UnsynchronizedStaticAccess.ql @@ -6,7 +6,9 @@ * @problem.severity error * @precision medium * @id cs/unsynchronized-static-access - * @tags concurrency + * @tags quality + * reliability + * concurrency * external/cwe/cwe-362 * external/cwe/cwe-567 */ diff --git a/csharp/ql/src/Documentation/XmldocExtraParam.ql b/csharp/ql/src/Documentation/XmldocExtraParam.ql index a745edfb6d8f..a7ff7eaec70c 100644 --- a/csharp/ql/src/Documentation/XmldocExtraParam.ql +++ b/csharp/ql/src/Documentation/XmldocExtraParam.ql @@ -7,6 +7,7 @@ * @precision medium * @id cs/xmldoc/unknown-parameter * @tags maintainability + * readability */ import Documentation diff --git a/csharp/ql/src/Documentation/XmldocExtraTypeParam.ql b/csharp/ql/src/Documentation/XmldocExtraTypeParam.ql index 76c2039920dd..60ea1dd5a96d 100644 --- a/csharp/ql/src/Documentation/XmldocExtraTypeParam.ql +++ b/csharp/ql/src/Documentation/XmldocExtraTypeParam.ql @@ -7,6 +7,7 @@ * @precision medium * @id cs/xmldoc/unknown-type-parameter * @tags maintainability + * readability */ import Documentation diff --git a/csharp/ql/src/Documentation/XmldocMissing.ql b/csharp/ql/src/Documentation/XmldocMissing.ql index e0e05c4893bf..237e5224120c 100644 --- a/csharp/ql/src/Documentation/XmldocMissing.ql +++ b/csharp/ql/src/Documentation/XmldocMissing.ql @@ -7,6 +7,7 @@ * @precision medium * @id cs/xmldoc/missing-xmldoc * @tags maintainability + * readability */ import Documentation diff --git a/csharp/ql/src/Documentation/XmldocMissingSummary.ql b/csharp/ql/src/Documentation/XmldocMissingSummary.ql index 43b76d38017a..5d7d9c931adf 100644 --- a/csharp/ql/src/Documentation/XmldocMissingSummary.ql +++ b/csharp/ql/src/Documentation/XmldocMissingSummary.ql @@ -5,8 +5,7 @@ * @problem.severity recommendation * @precision high * @id cs/xmldoc/missing-summary - * @tags quality - * maintainability + * @tags maintainability * readability */ diff --git a/csharp/ql/src/Language Abuse/ForeachCapture.ql b/csharp/ql/src/Language Abuse/ForeachCapture.ql index 2f8346817a6f..03f1f99a044c 100644 --- a/csharp/ql/src/Language Abuse/ForeachCapture.ql +++ b/csharp/ql/src/Language Abuse/ForeachCapture.ql @@ -7,9 +7,8 @@ * @problem.severity recommendation * @precision medium * @id cs/captured-foreach-variable - * @tags portability - * maintainability - * language-features + * @tags reliability + * correctness * external/cwe/cwe-758 */ diff --git a/csharp/ql/src/Language Abuse/UselessCastToSelf.ql b/csharp/ql/src/Language Abuse/UselessCastToSelf.ql index a182009dfc2d..d1a08e1db1c5 100644 --- a/csharp/ql/src/Language Abuse/UselessCastToSelf.ql +++ b/csharp/ql/src/Language Abuse/UselessCastToSelf.ql @@ -5,8 +5,9 @@ * @problem.severity warning * @precision medium * @id cs/useless-cast-to-self - * @tags maintainability - * language-features + * @tags quality + * maintainability + * useless-code * external/cwe/cwe-561 */ diff --git a/csharp/ql/src/Language Abuse/UselessIsBeforeAs.ql b/csharp/ql/src/Language Abuse/UselessIsBeforeAs.ql index 6a82c40d8404..6b6d710bdf04 100644 --- a/csharp/ql/src/Language Abuse/UselessIsBeforeAs.ql +++ b/csharp/ql/src/Language Abuse/UselessIsBeforeAs.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision medium * @id cs/useless-is-before-as - * @tags maintainability - * language-features + * @tags quality + * maintainability + * useless-code * external/cwe/cwe-561 */ diff --git a/csharp/ql/src/Language Abuse/UselessNullCoalescingExpression.ql b/csharp/ql/src/Language Abuse/UselessNullCoalescingExpression.ql index ec73df23741c..7790fc5ba4ab 100644 --- a/csharp/ql/src/Language Abuse/UselessNullCoalescingExpression.ql +++ b/csharp/ql/src/Language Abuse/UselessNullCoalescingExpression.ql @@ -6,8 +6,9 @@ * @problem.severity error * @precision medium * @id cs/coalesce-of-identical-expressions - * @tags maintainability - * language-features + * @tags quality + * maintainability + * useless-code * external/cwe/cwe-561 */ diff --git a/csharp/ql/src/Language Abuse/UselessTypeTest.ql b/csharp/ql/src/Language Abuse/UselessTypeTest.ql index 11e7df050471..f89ffbdd637f 100644 --- a/csharp/ql/src/Language Abuse/UselessTypeTest.ql +++ b/csharp/ql/src/Language Abuse/UselessTypeTest.ql @@ -5,8 +5,9 @@ * @problem.severity warning * @precision medium * @id cs/useless-type-test - * @tags maintainability - * language-features + * @tags quality + * maintainability + * useless-code * external/cwe/cwe-561 */ diff --git a/csharp/ql/src/Language Abuse/UselessUpcast.ql b/csharp/ql/src/Language Abuse/UselessUpcast.ql index a06dc60cc7ab..81ff2cfe253c 100644 --- a/csharp/ql/src/Language Abuse/UselessUpcast.ql +++ b/csharp/ql/src/Language Abuse/UselessUpcast.ql @@ -5,8 +5,9 @@ * @problem.severity warning * @precision medium * @id cs/useless-upcast - * @tags maintainability - * language-features + * @tags quality + * maintainability + * useless-code * external/cwe/cwe-561 */ diff --git a/csharp/ql/src/Likely Bugs/Dynamic/BadDynamicCall.ql b/csharp/ql/src/Likely Bugs/Dynamic/BadDynamicCall.ql index 2efac6773f72..75f152b38de1 100644 --- a/csharp/ql/src/Likely Bugs/Dynamic/BadDynamicCall.ql +++ b/csharp/ql/src/Likely Bugs/Dynamic/BadDynamicCall.ql @@ -5,9 +5,9 @@ * @problem.severity error * @precision medium * @id cs/invalid-dynamic-call - * @tags reliability + * @tags quality + * reliability * correctness - * logic * external/cwe/cwe-628 */ diff --git a/csharp/ql/src/Likely Bugs/EqualsUsesAs.ql b/csharp/ql/src/Likely Bugs/EqualsUsesAs.ql index 5c11e10c36b1..12a0802aa9f1 100644 --- a/csharp/ql/src/Likely Bugs/EqualsUsesAs.ql +++ b/csharp/ql/src/Likely Bugs/EqualsUsesAs.ql @@ -5,8 +5,9 @@ * @problem.severity warning * @precision medium * @id cs/equals-uses-as - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Likely Bugs/EqualsUsesIs.ql b/csharp/ql/src/Likely Bugs/EqualsUsesIs.ql index 775a295a6cb0..1c209af4dfb4 100644 --- a/csharp/ql/src/Likely Bugs/EqualsUsesIs.ql +++ b/csharp/ql/src/Likely Bugs/EqualsUsesIs.ql @@ -5,8 +5,9 @@ * @problem.severity warning * @precision medium * @id cs/equals-uses-is - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Likely Bugs/InconsistentCompareTo.ql b/csharp/ql/src/Likely Bugs/InconsistentCompareTo.ql index 2c4e69cb2060..5209cf6438bf 100644 --- a/csharp/ql/src/Likely Bugs/InconsistentCompareTo.ql +++ b/csharp/ql/src/Likely Bugs/InconsistentCompareTo.ql @@ -5,8 +5,9 @@ * @problem.severity warning * @precision medium * @id cs/inconsistent-compareto-and-equals - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import semmle.code.csharp.frameworks.System diff --git a/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql b/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql index 8da3a910b0da..72cc9b1908a5 100644 --- a/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql +++ b/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql @@ -5,8 +5,9 @@ * @problem.severity warning * @precision medium * @id cs/unsafe-year-construction - * @tags date-time + * @tags quality * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Likely Bugs/MishandlingJapaneseEra.ql b/csharp/ql/src/Likely Bugs/MishandlingJapaneseEra.ql index a188fbe1b8ee..c8df36bf7bf2 100644 --- a/csharp/ql/src/Likely Bugs/MishandlingJapaneseEra.ql +++ b/csharp/ql/src/Likely Bugs/MishandlingJapaneseEra.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity warning * @precision medium - * @tags reliability - * date-time + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Likely Bugs/ObjectComparison.ql b/csharp/ql/src/Likely Bugs/ObjectComparison.ql index eec1961fbf50..5479ff69b34c 100644 --- a/csharp/ql/src/Likely Bugs/ObjectComparison.ql +++ b/csharp/ql/src/Likely Bugs/ObjectComparison.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision medium * @id cs/reference-equality-with-object - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-595 */ diff --git a/csharp/ql/src/Likely Bugs/RecursiveOperatorEquals.ql b/csharp/ql/src/Likely Bugs/RecursiveOperatorEquals.ql index fe01683578f0..2e4764965c96 100644 --- a/csharp/ql/src/Likely Bugs/RecursiveOperatorEquals.ql +++ b/csharp/ql/src/Likely Bugs/RecursiveOperatorEquals.ql @@ -5,8 +5,9 @@ * @problem.severity error * @precision medium * @id cs/recursive-operator-equals-call - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Likely Bugs/Statements/UseBraces.ql b/csharp/ql/src/Likely Bugs/Statements/UseBraces.ql index ba64dc1bf949..f639b060ac17 100644 --- a/csharp/ql/src/Likely Bugs/Statements/UseBraces.ql +++ b/csharp/ql/src/Likely Bugs/Statements/UseBraces.ql @@ -6,9 +6,10 @@ * @problem.severity warning * @precision medium * @id cs/misleading-indentation - * @tags changeability + * @tags quality + * maintainability + * readability * correctness - * logic */ import csharp diff --git a/csharp/ql/src/Linq/BadMultipleIteration.ql b/csharp/ql/src/Linq/BadMultipleIteration.ql index e07de273e63d..8146bbf167d8 100644 --- a/csharp/ql/src/Linq/BadMultipleIteration.ql +++ b/csharp/ql/src/Linq/BadMultipleIteration.ql @@ -5,9 +5,9 @@ * @problem.severity warning * @precision medium * @id cs/linq/inconsistent-enumeration - * @tags reliability - * maintainability - * language-features + * @tags quality + * reliability + * correctness * external/cwe/cwe-834 */ diff --git a/csharp/ql/src/Useless code/PointlessForwardingMethod.ql b/csharp/ql/src/Useless code/PointlessForwardingMethod.ql index 723c5b190a57..24a184b3274e 100644 --- a/csharp/ql/src/Useless code/PointlessForwardingMethod.ql +++ b/csharp/ql/src/Useless code/PointlessForwardingMethod.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision medium * @id cs/useless-forwarding-method - * @tags maintainability + * @tags quality + * maintainability * useless-code */ diff --git a/csharp/ql/src/change-notes/released/1.4.1.md b/csharp/ql/src/change-notes/released/1.4.1.md new file mode 100644 index 000000000000..f161787a1085 --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.4.1.md @@ -0,0 +1,6 @@ +## 1.4.1 + +### Minor Analysis Improvements + +* The modeling of null guards based on complex pattern expressions has been improved, which in turn improves the query `cs/dereferenced-value-may-be-null` by removing false positives. +* The query `cs/xmldoc/missing-summary` has been removed from the `code-quality` suite, to align with other languages. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index b8b2e97d5086..43ccf4467bed 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.0 +lastReleaseVersion: 1.4.1 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 88dd741a89d0..7ecdec07f350 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.4.0 +version: 1.4.1 groups: - csharp - queries diff --git a/csharp/ql/test/query-tests/Nullness/E.cs b/csharp/ql/test/query-tests/Nullness/E.cs index f8264523b687..ef5886997801 100644 --- a/csharp/ql/test/query-tests/Nullness/E.cs +++ b/csharp/ql/test/query-tests/Nullness/E.cs @@ -432,7 +432,7 @@ static bool Ex44(int? i, IEnumerable @is) return @is.Any(); } - static void Ex45(string s) + static void Ex45(string s) // $ Source[cs/dereferenced-value-may-be-null] { if (s is null) { @@ -441,7 +441,7 @@ static void Ex45(string s) if (s is not not null) { - s.ToString(); // $ MISSING: Alert[cs/dereferenced-value-is-always-null] + s.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] MISSING: Alert[cs/dereferenced-value-is-always-null] } if (s is not null) @@ -453,6 +453,15 @@ static void Ex45(string s) { s.ToString(); // GOOD } + + if (s is not object) + { + s.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] + } + else + { + s.ToString(); // GOOD + } } } diff --git a/csharp/ql/test/query-tests/Nullness/Implications.expected b/csharp/ql/test/query-tests/Nullness/Implications.expected index ec660dd44a42..584b4e3ad1a6 100644 --- a/csharp/ql/test/query-tests/Nullness/Implications.expected +++ b/csharp/ql/test/query-tests/Nullness/Implications.expected @@ -1302,9 +1302,10 @@ | E.cs:432:16:432:24 | call to method Any | true | E.cs:432:16:432:18 | access to parameter is | non-empty | | E.cs:437:13:437:21 | ... is ... | false | E.cs:437:13:437:13 | access to parameter s | non-null | | E.cs:437:13:437:21 | ... is ... | true | E.cs:437:13:437:13 | access to parameter s | null | -| E.cs:442:13:442:29 | ... is ... | true | E.cs:442:13:442:13 | access to parameter s | non-null | +| E.cs:442:13:442:29 | ... is ... | false | E.cs:442:13:442:13 | access to parameter s | non-null | | E.cs:447:13:447:25 | ... is ... | true | E.cs:447:13:447:13 | access to parameter s | non-null | | E.cs:452:13:452:23 | ... is ... | true | E.cs:452:13:452:13 | access to parameter s | non-null | +| E.cs:457:13:457:27 | ... is ... | false | E.cs:457:13:457:13 | access to parameter s | non-null | | F.cs:8:9:8:9 | access to local variable o | non-null | F.cs:7:20:7:23 | null | non-null | | F.cs:8:9:8:9 | access to local variable o | null | F.cs:7:20:7:23 | null | null | | F.cs:14:9:14:9 | access to local variable o | non-null | F.cs:13:21:13:24 | null | non-null | diff --git a/csharp/ql/test/query-tests/Nullness/NullCheck.expected b/csharp/ql/test/query-tests/Nullness/NullCheck.expected index 600699b6156c..7b4c89a0b219 100644 --- a/csharp/ql/test/query-tests/Nullness/NullCheck.expected +++ b/csharp/ql/test/query-tests/Nullness/NullCheck.expected @@ -300,9 +300,10 @@ | E.cs:429:13:429:22 | access to property HasValue | E.cs:429:13:429:13 | access to parameter i | true | false | | E.cs:437:13:437:21 | ... is ... | E.cs:437:13:437:13 | access to parameter s | false | false | | E.cs:437:13:437:21 | ... is ... | E.cs:437:13:437:13 | access to parameter s | true | true | -| E.cs:442:13:442:29 | ... is ... | E.cs:442:13:442:13 | access to parameter s | true | false | +| E.cs:442:13:442:29 | ... is ... | E.cs:442:13:442:13 | access to parameter s | false | false | | E.cs:447:13:447:25 | ... is ... | E.cs:447:13:447:13 | access to parameter s | true | false | | E.cs:452:13:452:23 | ... is ... | E.cs:452:13:452:13 | access to parameter s | true | false | +| E.cs:457:13:457:27 | ... is ... | E.cs:457:13:457:13 | access to parameter s | false | false | | Forwarding.cs:9:14:9:30 | call to method IsNullOrEmpty | Forwarding.cs:9:14:9:14 | access to local variable s | false | false | | Forwarding.cs:14:13:14:32 | call to method IsNotNullOrEmpty | Forwarding.cs:14:13:14:13 | access to local variable s | true | false | | Forwarding.cs:19:14:19:23 | call to method IsNull | Forwarding.cs:19:14:19:14 | access to local variable s | false | false | diff --git a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected index 876cde548b6a..816a8b3b4404 100644 --- a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected +++ b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected @@ -83,6 +83,8 @@ | E.cs:417:34:417:34 | access to parameter i | E.cs:417:24:417:40 | SSA capture def(i) | E.cs:417:34:417:34 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:415:27:415:27 | i | i | E.cs:415:27:415:27 | i | this | | E.cs:423:38:423:38 | access to parameter i | E.cs:423:28:423:44 | SSA capture def(i) | E.cs:423:38:423:38 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:420:27:420:27 | i | i | E.cs:420:27:420:27 | i | this | | E.cs:430:39:430:39 | access to parameter i | E.cs:430:29:430:45 | SSA capture def(i) | E.cs:430:39:430:39 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:427:27:427:27 | i | i | E.cs:427:27:427:27 | i | this | +| E.cs:444:13:444:13 | access to parameter s | E.cs:435:29:435:29 | SSA param(s) | E.cs:444:13:444:13 | access to parameter s | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:435:29:435:29 | s | s | E.cs:437:13:437:21 | ... is ... | this | +| E.cs:459:13:459:13 | access to parameter s | E.cs:435:29:435:29 | SSA param(s) | E.cs:459:13:459:13 | access to parameter s | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:435:29:435:29 | s | s | E.cs:437:13:437:21 | ... is ... | this | | GuardedString.cs:35:31:35:31 | access to local variable s | GuardedString.cs:7:16:7:32 | SSA def(s) | GuardedString.cs:35:31:35:31 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | GuardedString.cs:7:16:7:16 | s | s | GuardedString.cs:7:16:7:32 | String s = ... | this | | NullMaybeBad.cs:7:27:7:27 | access to parameter o | NullMaybeBad.cs:13:17:13:20 | null | NullMaybeBad.cs:7:27:7:27 | access to parameter o | Variable $@ may be null at this access because of $@ null argument. | NullMaybeBad.cs:5:25:5:25 | o | o | NullMaybeBad.cs:13:17:13:20 | null | this | | Params.cs:14:17:14:20 | access to parameter args | Params.cs:20:12:20:15 | null | Params.cs:14:17:14:20 | access to parameter args | Variable $@ may be null at this access because of $@ null argument. | Params.cs:12:36:12:39 | args | args | Params.cs:20:12:20:15 | null | this | @@ -445,7 +447,23 @@ edges | E.cs:423:28:423:44 | SSA capture def(i) | E.cs:423:38:423:38 | access to parameter i | | E.cs:430:29:430:45 | SSA capture def(i) | E.cs:430:39:430:39 | access to parameter i | | E.cs:435:29:435:29 | SSA param(s) | E.cs:437:13:437:21 | [true] ... is ... | +| E.cs:437:13:437:21 | [true] ... is ... | E.cs:438:9:440:9 | {...} | | E.cs:437:13:437:21 | [true] ... is ... | E.cs:439:13:439:13 | access to parameter s | +| E.cs:438:9:440:9 | {...} | E.cs:442:9:445:9 | if (...) ... | +| E.cs:442:9:445:9 | if (...) ... | E.cs:442:22:442:29 | [no-match] not ... | +| E.cs:442:13:442:29 | [true] ... is ... | E.cs:443:9:445:9 | {...} | +| E.cs:442:13:442:29 | [true] ... is ... | E.cs:444:13:444:13 | access to parameter s | +| E.cs:442:18:442:29 | [match] not ... | E.cs:442:13:442:29 | [true] ... is ... | +| E.cs:442:22:442:29 | [no-match] not ... | E.cs:442:18:442:29 | [match] not ... | +| E.cs:443:9:445:9 | {...} | E.cs:447:9:450:9 | if (...) ... | +| E.cs:447:9:450:9 | if (...) ... | E.cs:447:18:447:25 | [no-match] not ... | +| E.cs:447:13:447:25 | [false] ... is ... | E.cs:452:9:455:9 | if (...) ... | +| E.cs:447:18:447:25 | [no-match] not ... | E.cs:447:13:447:25 | [false] ... is ... | +| E.cs:452:9:455:9 | if (...) ... | E.cs:452:13:452:23 | [false] ... is ... | +| E.cs:452:13:452:23 | [false] ... is ... | E.cs:457:9:464:9 | if (...) ... | +| E.cs:457:9:464:9 | if (...) ... | E.cs:457:18:457:27 | [match] not ... | +| E.cs:457:13:457:27 | [true] ... is ... | E.cs:459:13:459:13 | access to parameter s | +| E.cs:457:18:457:27 | [match] not ... | E.cs:457:13:457:27 | [true] ... is ... | | F.cs:7:16:7:23 | SSA def(o) | F.cs:8:9:8:9 | access to local variable o | | Forwarding.cs:7:16:7:23 | SSA def(s) | Forwarding.cs:9:13:9:30 | [false] !... | | Forwarding.cs:9:13:9:30 | [false] !... | Forwarding.cs:14:9:17:9 | if (...) ... | @@ -894,7 +912,23 @@ nodes | E.cs:430:39:430:39 | access to parameter i | | E.cs:435:29:435:29 | SSA param(s) | | E.cs:437:13:437:21 | [true] ... is ... | +| E.cs:438:9:440:9 | {...} | | E.cs:439:13:439:13 | access to parameter s | +| E.cs:442:9:445:9 | if (...) ... | +| E.cs:442:13:442:29 | [true] ... is ... | +| E.cs:442:18:442:29 | [match] not ... | +| E.cs:442:22:442:29 | [no-match] not ... | +| E.cs:443:9:445:9 | {...} | +| E.cs:444:13:444:13 | access to parameter s | +| E.cs:447:9:450:9 | if (...) ... | +| E.cs:447:13:447:25 | [false] ... is ... | +| E.cs:447:18:447:25 | [no-match] not ... | +| E.cs:452:9:455:9 | if (...) ... | +| E.cs:452:13:452:23 | [false] ... is ... | +| E.cs:457:9:464:9 | if (...) ... | +| E.cs:457:13:457:27 | [true] ... is ... | +| E.cs:457:18:457:27 | [match] not ... | +| E.cs:459:13:459:13 | access to parameter s | | F.cs:7:16:7:23 | SSA def(o) | | F.cs:8:9:8:9 | access to local variable o | | Forwarding.cs:7:16:7:23 | SSA def(s) | diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst new file mode 100644 index 000000000000..1c4ac1996875 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst @@ -0,0 +1,176 @@ +.. _codeql-cli-2.23.1: + +========================== +CodeQL 2.23.1 (2025-09-23) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. + +Security Coverage +----------------- + +CodeQL 2.23.1 runs a total of 478 security queries when configured with the Default suite (covering 166 CWE). The Extended suite enables an additional 135 queries (covering 35 more CWE). 3 security queries have been added with this release. + +CodeQL CLI +---------- + +New Features +~~~~~~~~~~~~ + +* CodeQL now adds the sources and sinks of path alerts to the :code:`relatedLocations` property of SARIF results if they are not included as the primary location or within the alert message. This means that path alerts will show on PRs if a source or sink is added or modified, even for queries that don't follow the common convention of selecting the sink as the primary location and mentioning the source in the alert message. + +* CodeQL now populates file coverage information for GitHub Actions on + \ `the tool status page for code scanning `__. + +Query Packs +----------- + +Bug Fixes +~~~~~~~~~ + +C/C++ +""""" + +* The predicate :code:`occurenceCount` in the file module :code:`MagicConstants` has been deprecated. Use :code:`occurrenceCount` instead. +* The predicate :code:`additionalAdditionOrSubstractionCheckForLeapYear` in the file module :code:`LeapYear` has been deprecated. Use :code:`additionalAdditionOrSubtractionCheckForLeapYear` instead. + +C# +"" + +* The message for :code:`csharp/diagnostic/database-quality` has been updated to include detailed database health metrics. Additionally, the threshold for reporting database health issues has been lowered from 95% to 85% (if any metric falls below this percentage). These changes are visible on the tool status page. + +Java/Kotlin +""""""""""" + +* The message for :code:`java/diagnostic/database-quality` has been updated to include detailed database health metrics. Additionally, the threshold for reporting database health issues has been lowered from 95% to 85% (if any metric falls below this percentage). These changes are visible on the tool status page. + +Rust +"""" + +* The message for :code:`rust/diagnostic/database-quality` has been updated to include detailed database health metrics. These changes are visible on the tool status page. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The queries :code:`cpp/wrong-type-format-argument`, :code:`cpp/comparison-with-wider-type`, :code:`cpp/integer-multiplication-cast-to-long`, :code:`cpp/implicit-function-declaration` and :code:`cpp/suspicious-add-sizeof` have had their precisions reduced from :code:`high` to :code:`medium`. They will also now give alerts for projects built with :code:`build-mode: none`. +* The queries :code:`cpp/wrong-type-format-argument`, :code:`cpp/comparison-with-wider-type`, :code:`cpp/integer-multiplication-cast-to-long` and :code:`cpp/suspicious-add-sizeof` are no longer included in the :code:`code-scanning` suite. + +Java/Kotlin +""""""""""" + +* The implementation of :code:`java/dereferenced-value-may-be-null` has been completely replaced with a new general control-flow reachability library. This improves precision by reducing false positives. However, since the entire calculation has been reworked, there can be small corner cases where precision regressions might occur and new false positives may occur, but these cases should be rare. + +JavaScript/TypeScript +""""""""""""""""""""" + +* Added support for TypeScript 5.9 +* Added support for :code:`import defer` syntax in JavaScript and TypeScript. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* The query :code:`cs/call-to-object-tostring` has been improved to remove false positives for enum types. + +JavaScript/TypeScript +""""""""""""""""""""" + +* Data flow is now tracked through the :code:`Promise.try` and :code:`Array.prototype.with` functions. +* Query :code:`js/index-out-of-bounds` no longer produces a false-positive when a strictly-less-than check overrides a previous less-than-or-equal test. +* The query :code:`js/remote-property-injection` now detects property injection vulnerabilities through object enumeration patterns such as :code:`Object.keys()`. +* The query "Permissive CORS configuration" (:code:`js/cors-permissive-configuration`) has been promoted from experimental and is now part of the default security suite. Thank you to @maikypedia who `submitted the original experimental query `__! + +Python +"""""" + +* The queries :code:`py/missing-call-to-init`, :code:`py/missing-calls-to-del`, :code:`py/multiple-calls-to-init`, and :code:`py/multiple-calls-to-del` queries have been modernized; no longer relying on outdated libraries, producing more precise results with more descriptive alert messages, and improved documentation. + +GitHub Actions +"""""""""""""" + +* Actions analysis now reports file coverage information on the CodeQL status page. + +Deprecated Queries +~~~~~~~~~~~~~~~~~~ + +C# +"" + +* The query :code:`cs/captured-foreach-variable` has been deprecated as the semantics of capturing a 'foreach' variable and using it outside the loop has been stable since C# version 5. + +New Queries +~~~~~~~~~~~ + +Rust +"""" + +* Added a new query, :code:`rust/request-forgery`, for detecting server-side request forgery vulnerabilities. + +Language Libraries +------------------ + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Golang +"""""" + +* The second argument of the :code:`CreateTemp` function, from the :code:`os` package, is no longer a path-injection sink due to proper sanitization by Go. +* The query "Uncontrolled data used in path expression" (:code:`go/path-injection`) now detects sanitizing a path by adding :code:`os.PathSeparator` or ``\`` to the beginning. + +Java/Kotlin +""""""""""" + +* Improved support for various assertion libraries, in particular JUnit. This affects the control-flow graph slightly, and in turn affects several queries (mainly quality queries). Most queries should see improved precision (new true positives and fewer false positives), in particular :code:`java/constant-comparison`, :code:`java/index-out-of-bounds`, :code:`java/dereferenced-value-may-be-null`, and :code:`java/useless-null-check`. Some medium precision queries like :code:`java/toctou-race-condition` and :code:`java/unreleased-lock` may see mixed result changes (both slight improvements and slight regressions). +* Added taint flow model for :code:`java.crypto.KDF`. +* Added taint flow model for :code:`java.lang.ScopedValue`. + +JavaScript/TypeScript +""""""""""""""""""""" + +* Added modeling for promisification libraries :code:`@gar/promisify`, :code:`es6-promisify`, :code:`util.promisify`, :code:`thenify-all`, :code:`call-me-maybe`, :code:`@google-cloud/promisify`, and :code:`util-promisify`. +* Data flow is now tracked through promisified user-defined functions. + +Swift +""""" + +* Updated to allow analysis of Swift 6.1.3. + +Rust +"""" + +* Added cryptography related models for the :code:`cookie` and :code:`biscotti` crates. + +Deprecated APIs +~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The predicate :code:`getAContructorCall` in the class :code:`SslContextClass` has been deprecated. Use :code:`getAConstructorCall` instead. + +New Features +~~~~~~~~~~~~ + +C/C++ +""""" + +* Added predicates :code:`getTransitiveNumberOfVlaDimensionStmts`, :code:`getTransitiveVlaDimensionStmt`, and :code:`getParentVlaDecl` to :code:`VlaDeclStmt` for handling :code:`VlaDeclStmt`\ s whose base type is defined in terms of another :code:`VlaDeclStmt` via a :code:`typedef`. + +Java/Kotlin +""""""""""" + +* The Java extractor and QL libraries now support Java 25. +* Added support for Java 25 compact source files (JEP 512). The new predicate :code:`Class.isImplicit()` identifies classes that are implicitly declared when using compact source files, and the new predicate :code:`CompilationUnit.isCompactSourceFile()` identifies compilation units that contain compact source files. +* Added support for Java 25 module import declarations. +* Add :code:`ModuleImportDeclaration` class. diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index 87cd03ebfaf1..41230fc72f1c 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/index.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst @@ -11,6 +11,7 @@ A list of queries for each suite and language `is available here `). diff --git a/docs/codeql/ql-language-reference/ql-language-specification.rst b/docs/codeql/ql-language-reference/ql-language-specification.rst index 9989c73e5dc5..f834949c3cde 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" + | "additional" | "cached" - | "external" + | "deprecated" | "extensible" + | "external" | "final" - | "transient" | "library" - | "private" - | "deprecated" | "override" - | "additional" + | "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 | | | | | | +| ``deprecated`` | yes | | yes | yes | yes | yes | yes | yes | yes | +----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+ | ``extensible`` | | | | yes | | | | | | +----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+ -| ``final`` | yes | | yes | | | yes | | (yes) | | +| ``external`` | | | | yes | | | | | | +----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+ -| ``transient`` | | | | yes | | | | | | +| ``final`` | yes | | yes | | | yes | | (yes) | | +----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+ | ``library`` | (yes) | | | | | | | | | +----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+ -| ``private`` | yes | | yes | yes | yes | yes | yes | yes | yes | -+----------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+------------+ -| ``deprecated`` | yes | | yes | yes | yes | yes | yes | yes | 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. @@ -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. @@ -2292,17 +2293,17 @@ The complete grammar for QL is as follows: annotation ::= simpleAnnotation | argsAnnotation simpleAnnotation ::= "abstract" + | "additional" | "cached" - | "external" + | "deprecated" | "extensible" + | "external" | "final" - | "transient" | "library" - | "private" - | "deprecated" | "override" - | "additional" + | "private" | "query" + | "transient" argsAnnotation ::= "pragma" "[" ("inline" | "inline_late" | "noinline" | "nomagic" | "noopt" | "assume_small_delta") "]" | "language" "[" "monotonicAggregates" "]" diff --git a/go/extractor/util/registryproxy.go b/go/extractor/util/registryproxy.go index 301d45896d2e..1f20832e8d81 100644 --- a/go/extractor/util/registryproxy.go +++ b/go/extractor/util/registryproxy.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" "log/slog" + "net/url" "os" "os/exec" "strings" @@ -14,6 +15,7 @@ const PROXY_PORT = "CODEQL_PROXY_PORT" const PROXY_CA_CERTIFICATE = "CODEQL_PROXY_CA_CERTIFICATE" const PROXY_URLS = "CODEQL_PROXY_URLS" const GOPROXY_SERVER = "goproxy_server" +const GIT_SOURCE = "git_source" type RegistryConfig struct { Type string `json:"type"` @@ -26,9 +28,11 @@ var proxy_address string // The path to the temporary file that stores the proxy certificate, if any. var proxy_cert_file string -// An array of registry configurations that are relevant to Go. -// This excludes other registry configurations that may be available, but are not relevant to Go. -var proxy_configs []RegistryConfig +// An array of goproxy server URLs. +var goproxy_servers []string + +// An array of Git URLs. +var git_sources []string // Stores the environment variables that we wish to pass on to `go` commands. var proxy_vars []string = nil @@ -53,7 +57,13 @@ func getEnvVars() []string { if proxy_host, proxy_host_set := os.LookupEnv(PROXY_HOST); proxy_host_set && proxy_host != "" { if proxy_port, proxy_port_set := os.LookupEnv(PROXY_PORT); proxy_port_set && proxy_port != "" { proxy_address = fmt.Sprintf("http://%s:%s", proxy_host, proxy_port) - result = append(result, fmt.Sprintf("HTTP_PROXY=%s", proxy_address), fmt.Sprintf("HTTPS_PROXY=%s", proxy_address)) + result = append( + result, + fmt.Sprintf("HTTP_PROXY=%s", proxy_address), + fmt.Sprintf("HTTPS_PROXY=%s", proxy_address), + fmt.Sprintf("http_proxy=%s", proxy_address), + fmt.Sprintf("https_proxy=%s", proxy_address), + ) slog.Info("Found private registry proxy", slog.String("proxy_address", proxy_address)) } @@ -91,20 +101,49 @@ func getEnvVars() []string { // filter others out at this point. for _, cfg := range val { if cfg.Type == GOPROXY_SERVER { - proxy_configs = append(proxy_configs, cfg) + goproxy_servers = append(goproxy_servers, cfg.URL) slog.Info("Found GOPROXY server", slog.String("url", cfg.URL)) + } else if cfg.Type == GIT_SOURCE { + parsed, err := url.Parse(cfg.URL) + if err == nil && parsed.Hostname() != "" { + git_source := parsed.Hostname() + parsed.Path + "*" + git_sources = append(git_sources, git_source) + slog.Info("Found Git source", slog.String("source", git_source)) + } else { + slog.Warn("Not a valid URL for Git source", slog.String("url", cfg.URL)) + } } } - if len(proxy_configs) > 0 { + goprivate := []string{} + + if len(goproxy_servers) > 0 { goproxy_val := "https://proxy.golang.org,direct" - for _, cfg := range proxy_configs { - goproxy_val = cfg.URL + "," + goproxy_val + for _, url := range goproxy_servers { + goproxy_val = url + "," + goproxy_val } - result = append(result, fmt.Sprintf("GOPROXY=%s", goproxy_val), "GOPRIVATE=", "GONOPROXY=") + result = append(result, fmt.Sprintf("GOPROXY=%s", goproxy_val), "GONOPROXY=") + } + + if len(git_sources) > 0 { + goprivate = append(goprivate, git_sources...) + + if proxy_cert_file != "" { + slog.Info("Configuring `git` to use proxy certificate", slog.String("path", proxy_cert_file)) + cmd := exec.Command("git", "config", "--global", "http.sslCAInfo", proxy_cert_file) + + out, cmdErr := cmd.CombinedOutput() + slog.Info(string(out)) + + if cmdErr != nil { + slog.Error("Failed to configure `git` to accept the certificate file", slog.String("error", cmdErr.Error())) + } + } } + + result = append(result, fmt.Sprintf("GOPRIVATE=%s", strings.Join(goprivate, ","))) } } @@ -113,11 +152,6 @@ func getEnvVars() []string { // Applies private package proxy related environment variables to `cmd`. func ApplyProxyEnvVars(cmd *exec.Cmd) { - slog.Debug( - "Applying private registry proxy environment variables", - slog.String("cmd_args", strings.Join(cmd.Args, " ")), - ) - // If we haven't done so yet, check whether the proxy environment variables are set // and extract information from them. if !proxy_vars_checked { @@ -131,4 +165,10 @@ func ApplyProxyEnvVars(cmd *exec.Cmd) { if proxy_vars != nil { cmd.Env = append(os.Environ(), proxy_vars...) } + + slog.Debug( + "Applying private registry proxy environment variables", + slog.String("cmd_args", strings.Join(cmd.Args, " ")), + slog.String("proxy_vars", strings.Join(proxy_vars, ",")), + ) } diff --git a/go/extractor/util/registryproxy_test.go b/go/extractor/util/registryproxy_test.go index a21b1a215c11..ef63bd9d3f87 100644 --- a/go/extractor/util/registryproxy_test.go +++ b/go/extractor/util/registryproxy_test.go @@ -47,3 +47,31 @@ func TestParseRegistryConfigs(t *testing.T) { t.Fatalf("Expected `URL` to be `https://proxy.example.com/mod`, but got `%s`", first.URL) } } + +func TestParseRegistryConfigsMultiple(t *testing.T) { + multiple := parseRegistryConfigsSuccess(t, "[{ \"type\": \"git_source\", \"url\": \"https://github.com/github\" }, { \"type\": \"goproxy_server\", \"url\": \"https://proxy.example.com/mod\" }]") + + if len(multiple) != 2 { + t.Fatalf("Expected `parseRegistryConfigs` to return two configurations, but got %d.", len(multiple)) + } + + first := multiple[0] + + if first.Type != "git_source" { + t.Fatalf("Expected `Type` to be `git_source`, but got `%s`", first.Type) + } + + if first.URL != "https://github.com/github" { + t.Fatalf("Expected `URL` to be `https://github.com/github`, but got `%s`", first.URL) + } + + second := multiple[1] + + if second.Type != "goproxy_server" { + t.Fatalf("Expected `Type` to be `goproxy_server`, but got `%s`", second.Type) + } + + if second.URL != "https://proxy.example.com/mod" { + t.Fatalf("Expected `URL` to be `https://proxy.example.com/mod`, but got `%s`", second.URL) + } +} diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index d50406235570..331bb4c220e0 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.32 + +No user-facing changes. + ## 1.0.31 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.32.md b/go/ql/consistency-queries/change-notes/released/1.0.32.md new file mode 100644 index 000000000000..05c4073731c4 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.32.md @@ -0,0 +1,3 @@ +## 1.0.32 + +No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index f5bdc98ffc82..7bc5c51ba7bf 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.31 +lastReleaseVersion: 1.0.32 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index 365c82cf84c4..3b1e2d9586bb 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 1.0.31 +version: 1.0.32 groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 50d61186f738..adf218a99e44 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.3.5 + +No user-facing changes. + ## 4.3.4 ### Minor Analysis Improvements diff --git a/go/ql/lib/change-notes/released/4.3.5.md b/go/ql/lib/change-notes/released/4.3.5.md new file mode 100644 index 000000000000..e386c2fbd985 --- /dev/null +++ b/go/ql/lib/change-notes/released/4.3.5.md @@ -0,0 +1,3 @@ +## 4.3.5 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index f755e0936a72..d6a085129424 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.3.4 +lastReleaseVersion: 4.3.5 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 77b35bffac24..bc9bf12c80cc 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 4.3.4 +version: 4.3.5 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll index 35887d076c03..496870286e95 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll @@ -117,7 +117,9 @@ private module StepsInput implements Impl::Private::StepsInputSig { ) } - Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponent sc) { none() } + DataFlowCallable getSourceNodeEnclosingCallable(Input::SourceBase source) { none() } + + Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { none() } Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { none() } } diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index c3b9c32ff329..65d6436fce3e 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.4.6 + +No user-facing changes. + ## 1.4.5 No user-facing changes. diff --git a/go/ql/src/InconsistentCode/MistypedExponentiation.ql b/go/ql/src/InconsistentCode/MistypedExponentiation.ql index b445a713ce6f..91fb63d319c2 100644 --- a/go/ql/src/InconsistentCode/MistypedExponentiation.ql +++ b/go/ql/src/InconsistentCode/MistypedExponentiation.ql @@ -13,12 +13,16 @@ import go +private Expr getConstantInitialiser(Expr e) { + exists(DeclaredConstant c | e = c.getAReference() | result = c.getInit()) +} + /** Holds if `e` is not 0 and is either an octal or hexadecimal literal, or the number one. */ predicate maybeXorBitPattern(Expr e) { // 0 makes no sense as an xor bit pattern not e.getNumericValue() = 0 and // include octal and hex literals - e.(IntLit).getText().matches("0%") + [e, getConstantInitialiser(e)].(IntLit).getText().matches("0%") or e.getNumericValue() = 1 } diff --git a/go/ql/src/change-notes/released/1.4.6.md b/go/ql/src/change-notes/released/1.4.6.md new file mode 100644 index 000000000000..5146f9e1cbfa --- /dev/null +++ b/go/ql/src/change-notes/released/1.4.6.md @@ -0,0 +1,3 @@ +## 1.4.6 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index a74b6b08d860..3b00bbce928c 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.5 +lastReleaseVersion: 1.4.6 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 8060d5f6b3db..816d4b958675 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.4.5 +version: 1.4.6 groups: - go - queries diff --git a/go/ql/test/query-tests/InconsistentCode/MistypedExponentiation/main.go b/go/ql/test/query-tests/InconsistentCode/MistypedExponentiation/main.go index 2449ccdac62b..b8b4be44847e 100644 --- a/go/ql/test/query-tests/InconsistentCode/MistypedExponentiation/main.go +++ b/go/ql/test/query-tests/InconsistentCode/MistypedExponentiation/main.go @@ -22,6 +22,13 @@ func main() { mask := (((1 << 10) - 1) ^ 7) // OK + const ( + c1 = 0x1234 + c2 = 0x5678 + ) + + fmt.Println(c1 ^ c2) // OK + // This is not ok, but isn't detected because the multiplication binds tighter // than the xor operator and so the query doesn't see a constant on the left // hand side of ^. diff --git a/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected b/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected index 852389b950b5..cdd6769ab46f 100644 --- a/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected +++ b/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected @@ -1,61 +1,117 @@ ql/java/ql/src/Advisory/Declarations/MissingOverrideAnnotation.ql +ql/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql +ql/java/ql/src/Advisory/Declarations/NonPrivateField.ql ql/java/ql/src/Advisory/Documentation/ImpossibleJavadocThrows.ql ql/java/ql/src/Advisory/Documentation/SpuriousJavadocParam.ql +ql/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql +ql/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql +ql/java/ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql +ql/java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql +ql/java/ql/src/Advisory/Naming/NamingConventionsConstants.ql +ql/java/ql/src/Advisory/Naming/NamingConventionsMethods.ql +ql/java/ql/src/Advisory/Naming/NamingConventionsPackages.ql +ql/java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql +ql/java/ql/src/Advisory/Naming/NamingConventionsVariables.ql +ql/java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql +ql/java/ql/src/Advisory/Statements/OneStatementPerLine.ql +ql/java/ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql +ql/java/ql/src/Advisory/Types/GenericsConstructor.ql +ql/java/ql/src/Advisory/Types/GenericsReturnType.ql +ql/java/ql/src/Advisory/Types/GenericsVariable.ql ql/java/ql/src/Compatibility/JDK9/JdkInternalAccess.ql ql/java/ql/src/Compatibility/JDK9/UnderscoreIdentifier.ql +ql/java/ql/src/DeadCode/DeadClass.ql +ql/java/ql/src/DeadCode/DeadEnumConstant.ql +ql/java/ql/src/DeadCode/DeadField.ql +ql/java/ql/src/DeadCode/DeadMethod.ql ql/java/ql/src/DeadCode/UselessParameter.ql ql/java/ql/src/Language Abuse/EmptyMethod.ql ql/java/ql/src/Language Abuse/IterableIterator.ql ql/java/ql/src/Language Abuse/LabelInSwitch.ql +ql/java/ql/src/Language Abuse/OverridePackagePrivate.ql +ql/java/ql/src/Language Abuse/TypeVarExtendsFinalType.ql ql/java/ql/src/Language Abuse/TypeVariableHidesType.ql ql/java/ql/src/Language Abuse/UselessNullCheck.ql ql/java/ql/src/Language Abuse/UselessTypeTest.ql ql/java/ql/src/Language Abuse/WrappedIterator.ql +ql/java/ql/src/Likely Bugs/Arithmetic/BadAbsOfRandom.ql ql/java/ql/src/Likely Bugs/Arithmetic/ConstantExpAppearsNonConstant.ql ql/java/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql ql/java/ql/src/Likely Bugs/Arithmetic/LShiftLargerThanTypeWidth.ql +ql/java/ql/src/Likely Bugs/Arithmetic/MultiplyRemainder.ql +ql/java/ql/src/Likely Bugs/Arithmetic/RandomUsedOnce.ql ql/java/ql/src/Likely Bugs/Arithmetic/WhitespaceContradictsPrecedence.ql +ql/java/ql/src/Likely Bugs/Cloning/MissingCallToSuperClone.ql +ql/java/ql/src/Likely Bugs/Cloning/MissingMethodClone.ql ql/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql ql/java/ql/src/Likely Bugs/Collections/ContainsTypeMismatch.ql +ql/java/ql/src/Likely Bugs/Collections/IteratorRemoveMayFail.ql ql/java/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql ql/java/ql/src/Likely Bugs/Collections/RemoveTypeMismatch.ql ql/java/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql ql/java/ql/src/Likely Bugs/Comparison/CompareIdenticalValues.ql +ql/java/ql/src/Likely Bugs/Comparison/CovariantCompareTo.ql +ql/java/ql/src/Likely Bugs/Comparison/CovariantEquals.ql ql/java/ql/src/Likely Bugs/Comparison/EqualsArray.ql ql/java/ql/src/Likely Bugs/Comparison/HashedButNoHash.ql ql/java/ql/src/Likely Bugs/Comparison/IncomparableEquals.ql +ql/java/ql/src/Likely Bugs/Comparison/InconsistentCompareTo.ql ql/java/ql/src/Likely Bugs/Comparison/InconsistentEqualsHashCode.ql ql/java/ql/src/Likely Bugs/Comparison/MissingInstanceofInEquals.ql ql/java/ql/src/Likely Bugs/Comparison/RefEqBoxed.ql +ql/java/ql/src/Likely Bugs/Comparison/StringComparison.ql ql/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql ql/java/ql/src/Likely Bugs/Comparison/WrongNanComparison.ql +ql/java/ql/src/Likely Bugs/Concurrency/CallsToConditionWait.ql ql/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.ql +ql/java/ql/src/Likely Bugs/Concurrency/DateFormatThreadUnsafe.ql ql/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.ql ql/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLockingWithInitRace.ql +ql/java/ql/src/Likely Bugs/Concurrency/FutileSynchOnField.ql ql/java/ql/src/Likely Bugs/Concurrency/NonSynchronizedOverride.ql +ql/java/ql/src/Likely Bugs/Concurrency/NotifyNotNotifyAll.ql ql/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.ql +ql/java/ql/src/Likely Bugs/Concurrency/SleepWithLock.ql +ql/java/ql/src/Likely Bugs/Concurrency/StartInConstructor.ql ql/java/ql/src/Likely Bugs/Concurrency/SynchOnBoxedType.ql ql/java/ql/src/Likely Bugs/Concurrency/SynchSetUnsynchGet.ql +ql/java/ql/src/Likely Bugs/Concurrency/SynchWriteObject.ql +ql/java/ql/src/Likely Bugs/Finalization/NullifiedSuperFinalize.ql +ql/java/ql/src/Likely Bugs/Frameworks/JUnit/BadSuiteMethod.ql ql/java/ql/src/Likely Bugs/Frameworks/JUnit/JUnit5MissingNestedAnnotation.ql +ql/java/ql/src/Likely Bugs/Frameworks/Swing/BadlyOverriddenAdapter.ql ql/java/ql/src/Likely Bugs/Inheritance/NoNonFinalInConstructor.ql ql/java/ql/src/Likely Bugs/Likely Typos/ContainerSizeCmpZero.ql ql/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql +ql/java/ql/src/Likely Bugs/Likely Typos/DangerousNonCircuitLogic.ql +ql/java/ql/src/Likely Bugs/Likely Typos/EqualsTypo.ql +ql/java/ql/src/Likely Bugs/Likely Typos/HashCodeTypo.ql ql/java/ql/src/Likely Bugs/Likely Typos/MissingFormatArg.ql ql/java/ql/src/Likely Bugs/Likely Typos/MissingSpaceTypo.ql ql/java/ql/src/Likely Bugs/Likely Typos/SelfAssignment.ql ql/java/ql/src/Likely Bugs/Likely Typos/StringBufferCharInit.ql ql/java/ql/src/Likely Bugs/Likely Typos/SuspiciousDateFormat.ql +ql/java/ql/src/Likely Bugs/Likely Typos/ToStringTypo.ql ql/java/ql/src/Likely Bugs/Likely Typos/UnusedFormatArg.ql ql/java/ql/src/Likely Bugs/Nullness/NullAlways.ql ql/java/ql/src/Likely Bugs/Nullness/NullExprDeref.ql ql/java/ql/src/Likely Bugs/Nullness/NullMaybe.ql +ql/java/ql/src/Likely Bugs/Reflection/AnnotationPresentCheck.ql ql/java/ql/src/Likely Bugs/Resource Leaks/CloseReader.ql ql/java/ql/src/Likely Bugs/Resource Leaks/CloseSql.ql ql/java/ql/src/Likely Bugs/Resource Leaks/CloseWriter.ql +ql/java/ql/src/Likely Bugs/Serialization/IncorrectSerialVersionUID.ql +ql/java/ql/src/Likely Bugs/Serialization/IncorrectSerializableMethods.ql +ql/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorOnExternalizable.ql +ql/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorsOnSerializable.ql +ql/java/ql/src/Likely Bugs/Serialization/NonSerializableInnerClass.ql +ql/java/ql/src/Likely Bugs/Serialization/ReadResolveObject.ql ql/java/ql/src/Likely Bugs/Statements/ContinueInFalseLoop.ql +ql/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql ql/java/ql/src/Likely Bugs/Statements/PartiallyMaskedCatch.ql ql/java/ql/src/Likely Bugs/Statements/UseBraces.ql ql/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql +ql/java/ql/src/Likely Bugs/Termination/SpinOnField.ql ql/java/ql/src/Performance/InefficientEmptyStringTest.ql ql/java/ql/src/Performance/InefficientKeySetIterator.ql ql/java/ql/src/Performance/InefficientOutputStream.ql @@ -64,6 +120,7 @@ ql/java/ql/src/Performance/InnerClassCouldBeStatic.ql ql/java/ql/src/Performance/NewStringString.ql ql/java/ql/src/Performance/StringReplaceAllWithNonRegex.ql ql/java/ql/src/Violations of Best Practice/Boxed Types/BoxedVariable.ql +ql/java/ql/src/Violations of Best Practice/Dead Code/CreatesEmptyZip.ql ql/java/ql/src/Violations of Best Practice/Dead Code/DeadRefTypes.ql ql/java/ql/src/Violations of Best Practice/Dead Code/InterfaceCannotBeImplemented.ql ql/java/ql/src/Violations of Best Practice/Dead Code/UnreadLocal.ql @@ -73,10 +130,12 @@ ql/java/ql/src/Violations of Best Practice/Exception Handling/IgnoreExceptionalR ql/java/ql/src/Violations of Best Practice/Exception Handling/NumberFormatException.ql ql/java/ql/src/Violations of Best Practice/Implementation Hiding/AbstractToConcreteCollection.ql ql/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql +ql/java/ql/src/Violations of Best Practice/Implementation Hiding/GetClassGetResource.ql ql/java/ql/src/Violations of Best Practice/Implementation Hiding/VisibleForTestingAbuse.ql ql/java/ql/src/Violations of Best Practice/Naming Conventions/AmbiguousOuterSuper.ql ql/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingMethodNames.ql ql/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingOverloading.ql +ql/java/ql/src/Violations of Best Practice/Naming Conventions/FieldMasksSuperField.ql ql/java/ql/src/Violations of Best Practice/Naming Conventions/LocalShadowsFieldConfusing.ql ql/java/ql/src/Violations of Best Practice/Naming Conventions/SameNameAsSuper.ql ql/java/ql/src/Violations of Best Practice/Records/IgnoredSerializationMembersOfRecordClass.ql @@ -87,4 +146,5 @@ ql/java/ql/src/Violations of Best Practice/Undesirable Calls/CallsToStringToStri ql/java/ql/src/Violations of Best Practice/Undesirable Calls/CallsToSystemExit.ql ql/java/ql/src/Violations of Best Practice/Undesirable Calls/DefaultToString.ql ql/java/ql/src/Violations of Best Practice/Undesirable Calls/DoNotCallFinalize.ql +ql/java/ql/src/Violations of Best Practice/Undesirable Calls/NextFromIterator.ql ql/java/ql/src/Violations of Best Practice/Undesirable Calls/PrintLnArray.ql diff --git a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected index 3a1cd4e1adbc..d1b6428ae227 100644 --- a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected +++ b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected @@ -1,25 +1,8 @@ -ql/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql -ql/java/ql/src/Advisory/Declarations/NonPrivateField.ql ql/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql ql/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql ql/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql ql/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql ql/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql -ql/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql -ql/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql -ql/java/ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql -ql/java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql -ql/java/ql/src/Advisory/Naming/NamingConventionsConstants.ql -ql/java/ql/src/Advisory/Naming/NamingConventionsMethods.ql -ql/java/ql/src/Advisory/Naming/NamingConventionsPackages.ql -ql/java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql -ql/java/ql/src/Advisory/Naming/NamingConventionsVariables.ql -ql/java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql -ql/java/ql/src/Advisory/Statements/OneStatementPerLine.ql -ql/java/ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql -ql/java/ql/src/Advisory/Types/GenericsConstructor.ql -ql/java/ql/src/Advisory/Types/GenericsReturnType.ql -ql/java/ql/src/Advisory/Types/GenericsVariable.ql ql/java/ql/src/AlertSuppression.ql ql/java/ql/src/AlertSuppressionAnnotations.ql ql/java/ql/src/Architecture/Dependencies/MutualDependency.ql @@ -31,10 +14,6 @@ ql/java/ql/src/Architecture/Refactoring Opportunities/HubClasses.ql ql/java/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql ql/java/ql/src/Complexity/BlockWithTooManyStatements.ql ql/java/ql/src/Complexity/ComplexCondition.ql -ql/java/ql/src/DeadCode/DeadClass.ql -ql/java/ql/src/DeadCode/DeadEnumConstant.ql -ql/java/ql/src/DeadCode/DeadField.ql -ql/java/ql/src/DeadCode/DeadMethod.ql ql/java/ql/src/DeadCode/FLinesOfDeadCode.ql ql/java/ql/src/Frameworks/JavaEE/EJB/EjbContainerInterference.ql ql/java/ql/src/Frameworks/JavaEE/EJB/EjbFileIO.ql diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index a6b4649e42ee..0e74414917b6 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 7.7.1 + +No user-facing changes. + ## 7.7.0 ### New Features diff --git a/java/ql/lib/change-notes/released/7.7.1.md b/java/ql/lib/change-notes/released/7.7.1.md new file mode 100644 index 000000000000..7349fc621cc4 --- /dev/null +++ b/java/ql/lib/change-notes/released/7.7.1.md @@ -0,0 +1,3 @@ +## 7.7.1 + +No user-facing changes. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 5c876a864fc2..c94dbb3cd65d 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.7.0 +lastReleaseVersion: 7.7.1 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 00d60ce96ba0..f2f085e19c9e 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.7.0 +version: 7.7.1 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/lib/semmle/code/java/Overlay.qll b/java/ql/lib/semmle/code/java/Overlay.qll index 1d1a3896ba71..0f6033d87b3d 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) ) @@ -73,40 +73,22 @@ private predicate discardReferableLocatable(@locatable el) { ) } +/** Gets the raw file for a configLocatable. */ overlay[local] -private predicate baseConfigLocatable(@configLocatable l) { not isOverlay() and exists(l) } - -overlay[local] -private predicate overlayHasConfigLocatables() { - isOverlay() and - exists(@configLocatable 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() -} - -overlay[local] -private predicate baseXmlLocatable(@xmllocatable l) { - not isOverlay() and not files(l, _) and not xmlNs(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 overlayHasXmlLocatable() { - isOverlay() and - exists(@xmllocatable l | not files(l, _) and not xmlNs(l, _, _, _)) +private string baseConfigLocatable(@configLocatable el) { + not isOverlay() and result = getRawFileForConfig(el) } 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() +private predicate discardBaseConfigLocatable(@configLocatable el) { + overlayChangedFiles(baseConfigLocatable(el)) } 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 4b436edc6aa6..23e9f680c974 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) /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll index a2d25cadd883..8dc28ea2f601 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll @@ -132,7 +132,7 @@ private module TypesInput implements Impl::Private::TypesInputSig { exists(rk) } - DataFlowType getSourceType(Input::SourceBase source, Impl::Private::SummaryComponent sc) { + DataFlowType getSourceType(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { none() } @@ -144,7 +144,9 @@ private module StepsInput implements Impl::Private::StepsInputSig { sc = viableCallable(result).asSummarizedCallable() } - Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponent sc) { none() } + DataFlowCallable getSourceNodeEnclosingCallable(Input::SourceBase source) { none() } + + Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { none() } Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { none() } } diff --git a/java/ql/lib/semmle/code/java/regex/RegexFlowConfigs.qll b/java/ql/lib/semmle/code/java/regex/RegexFlowConfigs.qll index 6a934bdd5785..929fa2d6c912 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, diff --git a/java/ql/lib/semmle/code/xml/XML.qll b/java/ql/lib/semmle/code/xml/XML.qll index e4073362fc6f..cd00991eb65c 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 { } diff --git a/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql b/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql index 493168d80a7e..1ca836ab2317 100644 --- a/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql +++ b/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql @@ -7,7 +7,10 @@ * @problem.severity recommendation * @precision medium * @id java/non-final-immutable-field - * @tags reliability + * @tags quality + * reliability + * correctness + * readability */ import java diff --git a/java/ql/src/Advisory/Declarations/NonPrivateField.ql b/java/ql/src/Advisory/Declarations/NonPrivateField.ql index 30b18ec53fda..ca081f41ed67 100644 --- a/java/ql/src/Advisory/Declarations/NonPrivateField.ql +++ b/java/ql/src/Advisory/Declarations/NonPrivateField.ql @@ -6,7 +6,10 @@ * @problem.severity recommendation * @precision medium * @id java/non-private-field - * @tags maintainability + * @tags quality + * maintainability + * readability + * complexity */ import java diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql b/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql index 49d90a595d37..3d4eacf7ee61 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql @@ -7,6 +7,7 @@ * @precision medium * @id java/undocumented-function * @tags maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql b/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql index ec4735e5e211..b81500ff303a 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql @@ -7,6 +7,7 @@ * @precision medium * @id java/undocumented-parameter * @tags maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql b/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql index 6668fa6da33e..87f5bf2a7ff8 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql @@ -7,6 +7,7 @@ * @precision medium * @id java/undocumented-return-value * @tags maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql b/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql index 2b6b346062c9..ea12c8312391 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql @@ -7,6 +7,8 @@ * @precision medium * @id java/undocumented-exception * @tags maintainability + * readability + * error-handling */ import java diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql b/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql index b9c5958623da..21ea91703f96 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql @@ -7,6 +7,7 @@ * @precision medium * @id java/undocumented-type * @tags maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql b/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql index e2e9b32feeef..eb3b80f47205 100644 --- a/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql +++ b/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id java/use-of-clone-method - * @tags reliability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql b/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql index 45460ad15ed8..482aecd8e03c 100644 --- a/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql +++ b/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id java/override-of-clone-method - * @tags reliability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql b/java/ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql index 02abef171308..a3ab822872d6 100644 --- a/java/ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql +++ b/java/ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id java/use-of-cloneable-interface - * @tags reliability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql b/java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql index 3b5ddefbb34f..0d74c4281a2c 100644 --- a/java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql +++ b/java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id java/override-of-finalize-method - * @tags reliability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Advisory/Naming/NamingConventionsConstants.ql b/java/ql/src/Advisory/Naming/NamingConventionsConstants.ql index 4ee4bfd27cf1..bd079b6fc203 100644 --- a/java/ql/src/Advisory/Naming/NamingConventionsConstants.ql +++ b/java/ql/src/Advisory/Naming/NamingConventionsConstants.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id java/misnamed-constant - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Naming/NamingConventionsMethods.ql b/java/ql/src/Advisory/Naming/NamingConventionsMethods.ql index a4347b783a07..90b3edd4bbcc 100644 --- a/java/ql/src/Advisory/Naming/NamingConventionsMethods.ql +++ b/java/ql/src/Advisory/Naming/NamingConventionsMethods.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id java/misnamed-function - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Naming/NamingConventionsPackages.ql b/java/ql/src/Advisory/Naming/NamingConventionsPackages.ql index 7d135b21fac2..efd6207d66f0 100644 --- a/java/ql/src/Advisory/Naming/NamingConventionsPackages.ql +++ b/java/ql/src/Advisory/Naming/NamingConventionsPackages.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id java/misnamed-package - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql b/java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql index 6942eaab69a4..5106b6e80b7c 100644 --- a/java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql +++ b/java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id java/misnamed-type - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Naming/NamingConventionsVariables.ql b/java/ql/src/Advisory/Naming/NamingConventionsVariables.ql index bafa2ec5b14f..0d225aa1749b 100644 --- a/java/ql/src/Advisory/Naming/NamingConventionsVariables.ql +++ b/java/ql/src/Advisory/Naming/NamingConventionsVariables.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id java/misnamed-variable - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql b/java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql index eab8a596f0e7..28387ab766b9 100644 --- a/java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql +++ b/java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id java/missing-default-in-switch - * @tags reliability + * @tags quality + * reliability + * correctness * external/cwe/cwe-478 */ diff --git a/java/ql/src/Advisory/Statements/OneStatementPerLine.ql b/java/ql/src/Advisory/Statements/OneStatementPerLine.ql index b4133761e27e..2663cab57a9c 100644 --- a/java/ql/src/Advisory/Statements/OneStatementPerLine.ql +++ b/java/ql/src/Advisory/Statements/OneStatementPerLine.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id java/multiple-statements-on-same-line - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql b/java/ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql index 0172719094cb..b15dd1c17464 100644 --- a/java/ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql +++ b/java/ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id java/non-terminated-if-else-if-chain - * @tags reliability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Advisory/Types/GenericsConstructor.ql b/java/ql/src/Advisory/Types/GenericsConstructor.ql index 411c24662901..4af9f93c86f2 100644 --- a/java/ql/src/Advisory/Types/GenericsConstructor.ql +++ b/java/ql/src/Advisory/Types/GenericsConstructor.ql @@ -6,7 +6,10 @@ * @problem.severity recommendation * @precision medium * @id java/raw-constructor-invocation - * @tags maintainability + * @tags quality + * maintainability + * readability + * correctness */ import java diff --git a/java/ql/src/Advisory/Types/GenericsReturnType.ql b/java/ql/src/Advisory/Types/GenericsReturnType.ql index 0107f7953a2d..4f17664902b8 100644 --- a/java/ql/src/Advisory/Types/GenericsReturnType.ql +++ b/java/ql/src/Advisory/Types/GenericsReturnType.ql @@ -6,7 +6,10 @@ * @problem.severity recommendation * @precision medium * @id java/raw-return-type - * @tags maintainability + * @tags quality + * maintainability + * readability + * correctness */ import java diff --git a/java/ql/src/Advisory/Types/GenericsVariable.ql b/java/ql/src/Advisory/Types/GenericsVariable.ql index 8f5fb3c05c91..d686feae5121 100644 --- a/java/ql/src/Advisory/Types/GenericsVariable.ql +++ b/java/ql/src/Advisory/Types/GenericsVariable.ql @@ -6,7 +6,10 @@ * @problem.severity recommendation * @precision medium * @id java/raw-variable - * @tags maintainability + * @tags quality + * maintainability + * readability + * correctness */ import java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 022442a1628a..1e6df88fc31d 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.8.1 + +No user-facing changes. + ## 1.8.0 ### Major Analysis Improvements diff --git a/java/ql/src/DeadCode/DeadClass.ql b/java/ql/src/DeadCode/DeadClass.ql index 23f08fec3b87..22ffad4f835e 100644 --- a/java/ql/src/DeadCode/DeadClass.ql +++ b/java/ql/src/DeadCode/DeadClass.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision medium * @id java/dead-class - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ diff --git a/java/ql/src/DeadCode/DeadEnumConstant.ql b/java/ql/src/DeadCode/DeadEnumConstant.ql index 190449943483..791c2b2a751f 100644 --- a/java/ql/src/DeadCode/DeadEnumConstant.ql +++ b/java/ql/src/DeadCode/DeadEnumConstant.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision medium * @id java/dead-enum-constant - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ diff --git a/java/ql/src/DeadCode/DeadField.ql b/java/ql/src/DeadCode/DeadField.ql index 7a8bca7ac7bf..4dd0864bd159 100644 --- a/java/ql/src/DeadCode/DeadField.ql +++ b/java/ql/src/DeadCode/DeadField.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision medium * @id java/dead-field - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ diff --git a/java/ql/src/DeadCode/DeadMethod.ql b/java/ql/src/DeadCode/DeadMethod.ql index 77401341b6c8..ea01cbf4db91 100644 --- a/java/ql/src/DeadCode/DeadMethod.ql +++ b/java/ql/src/DeadCode/DeadMethod.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision medium * @id java/dead-function - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ diff --git a/java/ql/src/Language Abuse/OverridePackagePrivate.ql b/java/ql/src/Language Abuse/OverridePackagePrivate.ql index d2866c76abc1..66663e18c4b2 100644 --- a/java/ql/src/Language Abuse/OverridePackagePrivate.ql +++ b/java/ql/src/Language Abuse/OverridePackagePrivate.ql @@ -6,8 +6,10 @@ * @problem.severity warning * @precision medium * @id java/non-overriding-package-private - * @tags maintainability + * @tags quality + * maintainability * readability + * correctness */ import java diff --git a/java/ql/src/Language Abuse/TypeVarExtendsFinalType.ql b/java/ql/src/Language Abuse/TypeVarExtendsFinalType.ql index 77c318bcb9ea..13b77d10d066 100644 --- a/java/ql/src/Language Abuse/TypeVarExtendsFinalType.ql +++ b/java/ql/src/Language Abuse/TypeVarExtendsFinalType.ql @@ -7,9 +7,9 @@ * @problem.severity warning * @precision medium * @id java/type-bound-extends-final - * @tags maintainability + * @tags quality + * maintainability * readability - * types */ import java diff --git a/java/ql/src/Likely Bugs/Arithmetic/BadAbsOfRandom.ql b/java/ql/src/Likely Bugs/Arithmetic/BadAbsOfRandom.ql index 26353891f418..2af66f5cfba8 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/BadAbsOfRandom.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/BadAbsOfRandom.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision medium * @id java/abs-of-random - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Arithmetic/MultiplyRemainder.ql b/java/ql/src/Likely Bugs/Arithmetic/MultiplyRemainder.ql index 8992d1753d9b..ee1e1ca3fed9 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/MultiplyRemainder.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/MultiplyRemainder.ql @@ -6,7 +6,9 @@ * @problem.severity warning * @precision medium * @id java/multiplication-of-remainder - * @tags maintainability + * @tags quality + * maintainability + * readability * correctness */ diff --git a/java/ql/src/Likely Bugs/Arithmetic/RandomUsedOnce.ql b/java/ql/src/Likely Bugs/Arithmetic/RandomUsedOnce.ql index a18df3568993..7a81d366a6e0 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/RandomUsedOnce.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/RandomUsedOnce.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision medium * @id java/random-used-once - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * external/cwe/cwe-335 */ diff --git a/java/ql/src/Likely Bugs/Cloning/MissingCallToSuperClone.ql b/java/ql/src/Likely Bugs/Cloning/MissingCallToSuperClone.ql index 8c2f7b1d6f8a..afc7c54bbade 100644 --- a/java/ql/src/Likely Bugs/Cloning/MissingCallToSuperClone.ql +++ b/java/ql/src/Likely Bugs/Cloning/MissingCallToSuperClone.ql @@ -7,8 +7,9 @@ * @problem.severity error * @precision medium * @id java/missing-call-to-super-clone - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * external/cwe/cwe-580 */ diff --git a/java/ql/src/Likely Bugs/Cloning/MissingMethodClone.ql b/java/ql/src/Likely Bugs/Cloning/MissingMethodClone.ql index 6d48a118e290..2542637b7459 100644 --- a/java/ql/src/Likely Bugs/Cloning/MissingMethodClone.ql +++ b/java/ql/src/Likely Bugs/Cloning/MissingMethodClone.ql @@ -6,8 +6,9 @@ * @problem.severity error * @precision medium * @id java/missing-clone-method - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Collections/IteratorRemoveMayFail.ql b/java/ql/src/Likely Bugs/Collections/IteratorRemoveMayFail.ql index 0308f68f231c..09d686947e00 100644 --- a/java/ql/src/Likely Bugs/Collections/IteratorRemoveMayFail.ql +++ b/java/ql/src/Likely Bugs/Collections/IteratorRemoveMayFail.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision medium * @id java/iterator-remove-failure - * @tags reliability + * @tags quality + * reliability * correctness - * logic */ import java diff --git a/java/ql/src/Likely Bugs/Comparison/CovariantCompareTo.ql b/java/ql/src/Likely Bugs/Comparison/CovariantCompareTo.ql index de1e27073f66..6d55bfc64882 100644 --- a/java/ql/src/Likely Bugs/Comparison/CovariantCompareTo.ql +++ b/java/ql/src/Likely Bugs/Comparison/CovariantCompareTo.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision medium * @id java/wrong-compareto-signature - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/java/ql/src/Likely Bugs/Comparison/CovariantEquals.ql b/java/ql/src/Likely Bugs/Comparison/CovariantEquals.ql index 13f63f15a726..84018a513a5b 100644 --- a/java/ql/src/Likely Bugs/Comparison/CovariantEquals.ql +++ b/java/ql/src/Likely Bugs/Comparison/CovariantEquals.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision medium * @id java/wrong-equals-signature - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/java/ql/src/Likely Bugs/Comparison/InconsistentCompareTo.ql b/java/ql/src/Likely Bugs/Comparison/InconsistentCompareTo.ql index 8c5a7133e141..7592fe382666 100644 --- a/java/ql/src/Likely Bugs/Comparison/InconsistentCompareTo.ql +++ b/java/ql/src/Likely Bugs/Comparison/InconsistentCompareTo.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision medium * @id java/inconsistent-compareto-and-equals - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/java/ql/src/Likely Bugs/Comparison/StringComparison.ql b/java/ql/src/Likely Bugs/Comparison/StringComparison.ql index 63d09e0f7915..cfca2c8d7ddb 100644 --- a/java/ql/src/Likely Bugs/Comparison/StringComparison.ql +++ b/java/ql/src/Likely Bugs/Comparison/StringComparison.ql @@ -6,7 +6,9 @@ * @problem.severity warning * @precision medium * @id java/reference-equality-on-strings - * @tags reliability + * @tags quality + * reliability + * correctness * external/cwe/cwe-597 */ diff --git a/java/ql/src/Likely Bugs/Concurrency/CallsToConditionWait.ql b/java/ql/src/Likely Bugs/Concurrency/CallsToConditionWait.ql index bf1639361154..b89d619fada0 100644 --- a/java/ql/src/Likely Bugs/Concurrency/CallsToConditionWait.ql +++ b/java/ql/src/Likely Bugs/Concurrency/CallsToConditionWait.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision medium * @id java/wait-on-condition-interface - * @tags reliability + * @tags quality + * reliability * correctness * concurrency * external/cwe/cwe-662 diff --git a/java/ql/src/Likely Bugs/Concurrency/DateFormatThreadUnsafe.ql b/java/ql/src/Likely Bugs/Concurrency/DateFormatThreadUnsafe.ql index 18683ac690ff..0d87ca49bb27 100644 --- a/java/ql/src/Likely Bugs/Concurrency/DateFormatThreadUnsafe.ql +++ b/java/ql/src/Likely Bugs/Concurrency/DateFormatThreadUnsafe.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision medium * @id java/thread-unsafe-dateformat - * @tags reliability + * @tags quality + * reliability * correctness * concurrency */ diff --git a/java/ql/src/Likely Bugs/Concurrency/FutileSynchOnField.ql b/java/ql/src/Likely Bugs/Concurrency/FutileSynchOnField.ql index 7c1875dfe3ec..5d816ad8cf94 100644 --- a/java/ql/src/Likely Bugs/Concurrency/FutileSynchOnField.ql +++ b/java/ql/src/Likely Bugs/Concurrency/FutileSynchOnField.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision medium * @id java/unsafe-sync-on-field - * @tags reliability + * @tags quality + * reliability * correctness * concurrency * language-features diff --git a/java/ql/src/Likely Bugs/Concurrency/NotifyNotNotifyAll.ql b/java/ql/src/Likely Bugs/Concurrency/NotifyNotNotifyAll.ql index 047e6853011e..e21b816f1684 100644 --- a/java/ql/src/Likely Bugs/Concurrency/NotifyNotNotifyAll.ql +++ b/java/ql/src/Likely Bugs/Concurrency/NotifyNotNotifyAll.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision medium * @id java/notify-instead-of-notify-all - * @tags reliability + * @tags quality + * reliability * correctness * concurrency * external/cwe/cwe-662 diff --git a/java/ql/src/Likely Bugs/Concurrency/SleepWithLock.ql b/java/ql/src/Likely Bugs/Concurrency/SleepWithLock.ql index 417e426b7868..70a3a901ade5 100644 --- a/java/ql/src/Likely Bugs/Concurrency/SleepWithLock.ql +++ b/java/ql/src/Likely Bugs/Concurrency/SleepWithLock.ql @@ -6,9 +6,11 @@ * @problem.severity error * @precision medium * @id java/sleep-with-lock-held - * @tags reliability + * @tags quality + * reliability * correctness * concurrency + * performance * external/cwe/cwe-833 */ diff --git a/java/ql/src/Likely Bugs/Concurrency/StartInConstructor.ql b/java/ql/src/Likely Bugs/Concurrency/StartInConstructor.ql index cb971a5f109f..3c80e4519518 100644 --- a/java/ql/src/Likely Bugs/Concurrency/StartInConstructor.ql +++ b/java/ql/src/Likely Bugs/Concurrency/StartInConstructor.ql @@ -7,7 +7,8 @@ * @problem.severity warning * @precision medium * @id java/thread-start-in-constructor - * @tags reliability + * @tags quality + * reliability * correctness * concurrency */ diff --git a/java/ql/src/Likely Bugs/Concurrency/SynchWriteObject.ql b/java/ql/src/Likely Bugs/Concurrency/SynchWriteObject.ql index 3eaa67436992..1842076a71b2 100644 --- a/java/ql/src/Likely Bugs/Concurrency/SynchWriteObject.ql +++ b/java/ql/src/Likely Bugs/Concurrency/SynchWriteObject.ql @@ -6,10 +6,10 @@ * @problem.severity warning * @precision medium * @id java/inconsistent-sync-writeobject - * @tags reliability + * @tags quality + * reliability * correctness * concurrency - * language-features * external/cwe/cwe-662 */ diff --git a/java/ql/src/Likely Bugs/Finalization/NullifiedSuperFinalize.ql b/java/ql/src/Likely Bugs/Finalization/NullifiedSuperFinalize.ql index 19bac66e0281..07fb27d5a536 100644 --- a/java/ql/src/Likely Bugs/Finalization/NullifiedSuperFinalize.ql +++ b/java/ql/src/Likely Bugs/Finalization/NullifiedSuperFinalize.ql @@ -6,8 +6,9 @@ * @problem.severity error * @precision medium * @id java/missing-super-finalize - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * external/cwe/cwe-568 */ diff --git a/java/ql/src/Likely Bugs/Frameworks/JUnit/BadSuiteMethod.ql b/java/ql/src/Likely Bugs/Frameworks/JUnit/BadSuiteMethod.ql index 2b6ae1125ddd..fb82f330c22a 100644 --- a/java/ql/src/Likely Bugs/Frameworks/JUnit/BadSuiteMethod.ql +++ b/java/ql/src/Likely Bugs/Frameworks/JUnit/BadSuiteMethod.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision medium * @id java/wrong-junit-suite-signature - * @tags testability - * maintainability - * frameworks/junit + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Frameworks/Swing/BadlyOverriddenAdapter.ql b/java/ql/src/Likely Bugs/Frameworks/Swing/BadlyOverriddenAdapter.ql index ed3ab29c3659..6a2db4b695f3 100644 --- a/java/ql/src/Likely Bugs/Frameworks/Swing/BadlyOverriddenAdapter.ql +++ b/java/ql/src/Likely Bugs/Frameworks/Swing/BadlyOverriddenAdapter.ql @@ -7,9 +7,9 @@ * @problem.severity warning * @precision medium * @id java/wrong-swing-event-adapter-signature - * @tags reliability - * maintainability - * frameworks/swing + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Likely Typos/DangerousNonCircuitLogic.ql b/java/ql/src/Likely Bugs/Likely Typos/DangerousNonCircuitLogic.ql index 8d9409059f8e..c93e5fe91a11 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/DangerousNonCircuitLogic.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/DangerousNonCircuitLogic.ql @@ -7,7 +7,9 @@ * @problem.severity warning * @precision medium * @id java/non-short-circuit-evaluation - * @tags reliability + * @tags quality + * reliability + * correctness * readability * external/cwe/cwe-691 */ diff --git a/java/ql/src/Likely Bugs/Likely Typos/EqualsTypo.ql b/java/ql/src/Likely Bugs/Likely Typos/EqualsTypo.ql index 585306be9583..d5a117fc2dac 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/EqualsTypo.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/EqualsTypo.ql @@ -5,9 +5,10 @@ * @problem.severity warning * @precision medium * @id java/equals-typo - * @tags maintainability + * @tags quality + * reliability + * correctness * readability - * naming */ import java diff --git a/java/ql/src/Likely Bugs/Likely Typos/HashCodeTypo.ql b/java/ql/src/Likely Bugs/Likely Typos/HashCodeTypo.ql index 7a69f9f7953f..e75f9f337fde 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/HashCodeTypo.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/HashCodeTypo.ql @@ -5,9 +5,10 @@ * @problem.severity warning * @precision medium * @id java/hashcode-typo - * @tags maintainability + * @tags quality + * reliability + * correctness * readability - * naming */ import java diff --git a/java/ql/src/Likely Bugs/Likely Typos/ToStringTypo.ql b/java/ql/src/Likely Bugs/Likely Typos/ToStringTypo.ql index 928d9f5a7cc4..a4d46ec69e0c 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/ToStringTypo.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/ToStringTypo.ql @@ -5,9 +5,10 @@ * @problem.severity warning * @precision medium * @id java/tostring-typo - * @tags maintainability + * @tags quality + * reliability + * correctness * readability - * naming */ import java diff --git a/java/ql/src/Likely Bugs/Reflection/AnnotationPresentCheck.ql b/java/ql/src/Likely Bugs/Reflection/AnnotationPresentCheck.ql index 0bfb4b45a5a5..8b75b8c97867 100644 --- a/java/ql/src/Likely Bugs/Reflection/AnnotationPresentCheck.ql +++ b/java/ql/src/Likely Bugs/Reflection/AnnotationPresentCheck.ql @@ -6,8 +6,9 @@ * @problem.severity error * @precision medium * @id java/ineffective-annotation-present-check - * @tags correctness - * logic + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Serialization/IncorrectSerialVersionUID.ql b/java/ql/src/Likely Bugs/Serialization/IncorrectSerialVersionUID.ql index af86d90d690d..813db75526e1 100644 --- a/java/ql/src/Likely Bugs/Serialization/IncorrectSerialVersionUID.ql +++ b/java/ql/src/Likely Bugs/Serialization/IncorrectSerialVersionUID.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision medium * @id java/incorrect-serial-version-uid - * @tags reliability - * maintainability - * language-features + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Serialization/IncorrectSerializableMethods.ql b/java/ql/src/Likely Bugs/Serialization/IncorrectSerializableMethods.ql index 815245d1a7d3..0fbf52d207e8 100644 --- a/java/ql/src/Likely Bugs/Serialization/IncorrectSerializableMethods.ql +++ b/java/ql/src/Likely Bugs/Serialization/IncorrectSerializableMethods.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision medium * @id java/wrong-object-serialization-signature - * @tags reliability - * maintainability - * language-features + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorOnExternalizable.ql b/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorOnExternalizable.ql index 44c92634fe07..47bb0640b5ef 100644 --- a/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorOnExternalizable.ql +++ b/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorOnExternalizable.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision medium * @id java/missing-no-arg-constructor-on-externalizable - * @tags reliability - * maintainability - * language-features + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorsOnSerializable.ql b/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorsOnSerializable.ql index 651908b0b865..c38a074529d3 100644 --- a/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorsOnSerializable.ql +++ b/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorsOnSerializable.ql @@ -7,9 +7,9 @@ * @problem.severity warning * @precision medium * @id java/missing-no-arg-constructor-on-serializable - * @tags reliability - * maintainability - * language-features + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Serialization/NonSerializableInnerClass.ql b/java/ql/src/Likely Bugs/Serialization/NonSerializableInnerClass.ql index 8081c551eed3..520dba86c418 100644 --- a/java/ql/src/Likely Bugs/Serialization/NonSerializableInnerClass.ql +++ b/java/ql/src/Likely Bugs/Serialization/NonSerializableInnerClass.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision medium * @id java/non-serializable-inner-class - * @tags reliability - * maintainability - * language-features + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Serialization/ReadResolveObject.ql b/java/ql/src/Likely Bugs/Serialization/ReadResolveObject.ql index 64e5a4833628..629e601f4694 100644 --- a/java/ql/src/Likely Bugs/Serialization/ReadResolveObject.ql +++ b/java/ql/src/Likely Bugs/Serialization/ReadResolveObject.ql @@ -7,9 +7,9 @@ * @problem.severity warning * @precision medium * @id java/wrong-readresolve-signature - * @tags reliability - * maintainability - * language-features + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql b/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql index d1cdb8bdfbbb..0e6584bb4e5c 100644 --- a/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql +++ b/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision medium * @id java/missing-case-in-switch - * @tags reliability - * readability + * @tags quality + * reliability + * correctness * external/cwe/cwe-478 */ diff --git a/java/ql/src/Likely Bugs/Termination/SpinOnField.ql b/java/ql/src/Likely Bugs/Termination/SpinOnField.ql index d1a7d49db55c..7cfb2308c966 100644 --- a/java/ql/src/Likely Bugs/Termination/SpinOnField.ql +++ b/java/ql/src/Likely Bugs/Termination/SpinOnField.ql @@ -6,9 +6,11 @@ * @problem.severity warning * @precision medium * @id java/spin-on-field - * @tags efficiency + * @tags quality + * reliability * correctness * concurrency + * performance */ import java diff --git a/java/ql/src/Violations of Best Practice/Dead Code/CreatesEmptyZip.ql b/java/ql/src/Violations of Best Practice/Dead Code/CreatesEmptyZip.ql index a2b6afbbeee0..beea4bba5d5a 100644 --- a/java/ql/src/Violations of Best Practice/Dead Code/CreatesEmptyZip.ql +++ b/java/ql/src/Violations of Best Practice/Dead Code/CreatesEmptyZip.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision medium * @id java/empty-zip-file-entry - * @tags reliability - * readability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Violations of Best Practice/Implementation Hiding/GetClassGetResource.ql b/java/ql/src/Violations of Best Practice/Implementation Hiding/GetClassGetResource.ql index 7f52c495835e..61e928b8c700 100644 --- a/java/ql/src/Violations of Best Practice/Implementation Hiding/GetClassGetResource.ql +++ b/java/ql/src/Violations of Best Practice/Implementation Hiding/GetClassGetResource.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision medium * @id java/unsafe-get-resource - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Violations of Best Practice/Naming Conventions/FieldMasksSuperField.ql b/java/ql/src/Violations of Best Practice/Naming Conventions/FieldMasksSuperField.ql index faf64b0ae5ed..e45ba34b5e55 100644 --- a/java/ql/src/Violations of Best Practice/Naming Conventions/FieldMasksSuperField.ql +++ b/java/ql/src/Violations of Best Practice/Naming Conventions/FieldMasksSuperField.ql @@ -7,8 +7,10 @@ * @problem.severity warning * @precision medium * @id java/field-masks-super-field - * @tags maintainability + * @tags quality + * maintainability * readability + * correctness */ import java diff --git a/java/ql/src/Violations of Best Practice/Undesirable Calls/NextFromIterator.ql b/java/ql/src/Violations of Best Practice/Undesirable Calls/NextFromIterator.ql index ebdf55761989..31c0d0821e2c 100644 --- a/java/ql/src/Violations of Best Practice/Undesirable Calls/NextFromIterator.ql +++ b/java/ql/src/Violations of Best Practice/Undesirable Calls/NextFromIterator.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision medium * @id java/iterator-hasnext-calls-next - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/java/ql/src/change-notes/released/1.8.1.md b/java/ql/src/change-notes/released/1.8.1.md new file mode 100644 index 000000000000..0b1a7cdad10a --- /dev/null +++ b/java/ql/src/change-notes/released/1.8.1.md @@ -0,0 +1,3 @@ +## 1.8.1 + +No user-facing changes. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index dc8a37cc443d..28a7c123ae84 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.8.0 +lastReleaseVersion: 1.8.1 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 947cfcb6d134..bbfafc65503d 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.8.0 +version: 1.8.1 groups: - java - queries diff --git a/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected b/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected index 6894a776b379..1d2d3c1ff8ce 100644 --- a/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected +++ b/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected @@ -4,6 +4,9 @@ ql/javascript/ql/src/AngularJS/IncompatibleService.ql ql/javascript/ql/src/AngularJS/MissingExplicitInjection.ql ql/javascript/ql/src/AngularJS/RepeatedInjection.ql ql/javascript/ql/src/AngularJS/UseNgSrc.ql +ql/javascript/ql/src/Comments/CommentedOutCode.ql +ql/javascript/ql/src/Comments/TodoComments.ql +ql/javascript/ql/src/DOM/Alert.ql ql/javascript/ql/src/DOM/DuplicateAttributes.ql ql/javascript/ql/src/DOM/MalformedIdAttribute.ql ql/javascript/ql/src/DOM/PseudoEval.ql @@ -20,11 +23,13 @@ ql/javascript/ql/src/Declarations/IneffectiveParameterType.ql ql/javascript/ql/src/Declarations/MissingThisQualifier.ql ql/javascript/ql/src/Declarations/MissingVarDecl.ql ql/javascript/ql/src/Declarations/MixedStaticInstanceThisAccess.ql +ql/javascript/ql/src/Declarations/RedeclaredVariable.ql ql/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql ql/javascript/ql/src/Declarations/TemporalDeadZone.ql ql/javascript/ql/src/Declarations/UniqueParameterNames.ql ql/javascript/ql/src/Declarations/UniquePropertyNames.ql ql/javascript/ql/src/Declarations/UnreachableMethodOverloads.ql +ql/javascript/ql/src/Declarations/UnusedParameter.ql ql/javascript/ql/src/Declarations/UnusedVariable.ql ql/javascript/ql/src/Expressions/ComparisonWithNaN.ql ql/javascript/ql/src/Expressions/DuplicateCondition.ql @@ -48,9 +53,12 @@ ql/javascript/ql/src/Expressions/UnclearOperatorPrecedence.ql ql/javascript/ql/src/Expressions/UnknownDirective.ql ql/javascript/ql/src/Expressions/UnneededDefensiveProgramming.ql ql/javascript/ql/src/Expressions/WhitespaceContradictsPrecedence.ql +ql/javascript/ql/src/LanguageFeatures/ArgumentsCallerCallee.ql ql/javascript/ql/src/LanguageFeatures/BadTypeof.ql ql/javascript/ql/src/LanguageFeatures/ConditionalComments.ql +ql/javascript/ql/src/LanguageFeatures/DebuggerStatement.ql ql/javascript/ql/src/LanguageFeatures/DeleteVar.ql +ql/javascript/ql/src/LanguageFeatures/Eval.ql ql/javascript/ql/src/LanguageFeatures/ExpressionClosures.ql ql/javascript/ql/src/LanguageFeatures/ForInComprehensionBlocks.ql ql/javascript/ql/src/LanguageFeatures/IllegalInvocation.ql @@ -71,6 +79,7 @@ ql/javascript/ql/src/LanguageFeatures/WithStatement.ql ql/javascript/ql/src/LanguageFeatures/YieldInNonGenerator.ql ql/javascript/ql/src/NodeJS/InvalidExport.ql ql/javascript/ql/src/NodeJS/MissingExports.ql +ql/javascript/ql/src/Performance/ReassignParameterAndUseArguments.ql ql/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.ql ql/javascript/ql/src/React/DirectStateMutation.ql ql/javascript/ql/src/React/InconsistentStateUpdate.ql @@ -78,6 +87,7 @@ ql/javascript/ql/src/React/UnsupportedStateUpdateInLifecycleMethod.ql ql/javascript/ql/src/React/UnusedOrUndefinedStateProperty.ql ql/javascript/ql/src/RegExp/BackrefBeforeGroup.ql ql/javascript/ql/src/RegExp/BackrefIntoNegativeLookahead.ql +ql/javascript/ql/src/RegExp/BackspaceEscape.ql ql/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql ql/javascript/ql/src/RegExp/EmptyCharacterClass.ql ql/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql @@ -86,7 +96,9 @@ ql/javascript/ql/src/RegExp/UnmatchableCaret.ql ql/javascript/ql/src/RegExp/UnmatchableDollar.ql ql/javascript/ql/src/Statements/DanglingElse.ql ql/javascript/ql/src/Statements/IgnoreArrayResult.ql +ql/javascript/ql/src/Statements/ImplicitReturn.ql ql/javascript/ql/src/Statements/InconsistentLoopOrientation.ql +ql/javascript/ql/src/Statements/InconsistentReturn.ql ql/javascript/ql/src/Statements/LabelInCase.ql ql/javascript/ql/src/Statements/LoopIterationSkippedDueToShifting.ql ql/javascript/ql/src/Statements/MisleadingIndentationAfterControlStmt.ql diff --git a/javascript/ql/integration-tests/query-suite/not_included_in_qls.expected b/javascript/ql/integration-tests/query-suite/not_included_in_qls.expected index fa52a97a4e4a..46317e8800f2 100644 --- a/javascript/ql/integration-tests/query-suite/not_included_in_qls.expected +++ b/javascript/ql/integration-tests/query-suite/not_included_in_qls.expected @@ -1,18 +1,13 @@ ql/javascript/ql/src/AlertSuppression.ql ql/javascript/ql/src/AngularJS/DeadAngularJSEventListener.ql ql/javascript/ql/src/AngularJS/UnusedAngularDependency.ql -ql/javascript/ql/src/Comments/CommentedOutCode.ql ql/javascript/ql/src/Comments/FCommentedOutCode.ql -ql/javascript/ql/src/Comments/TodoComments.ql -ql/javascript/ql/src/DOM/Alert.ql ql/javascript/ql/src/DOM/AmbiguousIdAttribute.ql ql/javascript/ql/src/DOM/ConflictingAttributes.ql ql/javascript/ql/src/DOM/TargetBlank.ql ql/javascript/ql/src/Declarations/DeadStoreOfGlobal.ql -ql/javascript/ql/src/Declarations/RedeclaredVariable.ql ql/javascript/ql/src/Declarations/TooManyParameters.ql ql/javascript/ql/src/Declarations/UnstableCyclicImport.ql -ql/javascript/ql/src/Declarations/UnusedParameter.ql ql/javascript/ql/src/Declarations/UnusedProperty.ql ql/javascript/ql/src/Electron/EnablingNodeIntegration.ql ql/javascript/ql/src/Expressions/BitwiseSignCheck.ql @@ -21,10 +16,7 @@ ql/javascript/ql/src/Expressions/MisspelledIdentifier.ql ql/javascript/ql/src/JSDoc/BadParamTag.ql ql/javascript/ql/src/JSDoc/JSDocForNonExistentParameter.ql ql/javascript/ql/src/JSDoc/UndocumentedParameter.ql -ql/javascript/ql/src/LanguageFeatures/ArgumentsCallerCallee.ql -ql/javascript/ql/src/LanguageFeatures/DebuggerStatement.ql ql/javascript/ql/src/LanguageFeatures/EmptyArrayInit.ql -ql/javascript/ql/src/LanguageFeatures/Eval.ql ql/javascript/ql/src/LanguageFeatures/JumpFromFinally.ql ql/javascript/ql/src/LanguageFeatures/SetterIgnoresParameter.ql ql/javascript/ql/src/LanguageFeatures/WrongExtensionJSON.ql @@ -48,8 +40,6 @@ ql/javascript/ql/src/NodeJS/DubiousImport.ql ql/javascript/ql/src/NodeJS/UnresolvableImport.ql ql/javascript/ql/src/NodeJS/UnusedDependency.ql ql/javascript/ql/src/Performance/NonLocalForIn.ql -ql/javascript/ql/src/Performance/ReassignParameterAndUseArguments.ql -ql/javascript/ql/src/RegExp/BackspaceEscape.ql ql/javascript/ql/src/RegExp/MalformedRegExp.ql ql/javascript/ql/src/Security/CWE-020/ExternalAPIsUsedWithUntrustedData.ql ql/javascript/ql/src/Security/CWE-020/UntrustedDataToExternalAPI.ql @@ -59,8 +49,6 @@ ql/javascript/ql/src/Security/CWE-798/HardcodedCredentials.ql ql/javascript/ql/src/Security/CWE-807/DifferentKindsComparisonBypass.ql ql/javascript/ql/src/Security/trest/test.ql ql/javascript/ql/src/Statements/EphemeralLoop.ql -ql/javascript/ql/src/Statements/ImplicitReturn.ql -ql/javascript/ql/src/Statements/InconsistentReturn.ql ql/javascript/ql/src/Statements/NestedLoopsSameVariable.ql ql/javascript/ql/src/Statements/ReturnOutsideFunction.ql ql/javascript/ql/src/Summary/TaintSinks.ql diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index b98534e791d6..975d14e10988 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,11 @@ +## 2.6.12 + +### Minor Analysis Improvements + +* Added modeling of `GraphQLObjectType` resolver function parameters as remote sources. +* Support for the [graphql](https://www.npmjs.com/package/graphql) library has been improved. Data flow from GraphQL query sources and variables to resolver function parameters is now tracked. +* Added support for the `aws-sdk` and `@aws-sdk/client-dynamodb`, `@aws-sdk/client-athena`, `@aws-sdk/client-s3`, and `@aws-sdk/client-rds-data` packages. + ## 2.6.11 ### Minor Analysis Improvements diff --git a/javascript/ql/lib/change-notes/released/2.6.12.md b/javascript/ql/lib/change-notes/released/2.6.12.md new file mode 100644 index 000000000000..adc136621d85 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.6.12.md @@ -0,0 +1,7 @@ +## 2.6.12 + +### Minor Analysis Improvements + +* Added modeling of `GraphQLObjectType` resolver function parameters as remote sources. +* Support for the [graphql](https://www.npmjs.com/package/graphql) library has been improved. Data flow from GraphQL query sources and variables to resolver function parameters is now tracked. +* Added support for the `aws-sdk` and `@aws-sdk/client-dynamodb`, `@aws-sdk/client-athena`, `@aws-sdk/client-s3`, and `@aws-sdk/client-rds-data` packages. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index a31eb42966ca..8b34428a8454 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.6.11 +lastReleaseVersion: 2.6.12 diff --git a/javascript/ql/lib/ext/aws-sdk.model.yml b/javascript/ql/lib/ext/aws-sdk.model.yml index eefa87fbe613..40fa4b8b703a 100644 --- a/javascript/ql/lib/ext/aws-sdk.model.yml +++ b/javascript/ql/lib/ext/aws-sdk.model.yml @@ -1,8 +1,52 @@ extensions: + - addsTo: + pack: codeql/javascript-all + extensible: typeModel + data: + - ["aws-sdk.Athena", "aws-sdk", "Member[Athena]"] + - ["aws-sdk.S3", "aws-sdk", "Member[S3]"] + - ["aws-sdk.RDSDataService", "aws-sdk", "Member[RDSDataService]"] + - ["aws-sdk.DynamoDB", "aws-sdk", "Member[DynamoDB]"] + - ["@aws-sdk/client.Client", "@aws-sdk/client-athena", "Member[AthenaClient]"] + - ["@aws-sdk/client.Client", "@aws-sdk/client-s3", "Member[S3Client]"] + - ["@aws-sdk/client.Client", "@aws-sdk/client-dynamodb", "Member[DynamoDBClient,DynamoDB]"] + - ["@aws-sdk/client.Client", "@aws-sdk/client-rds-data", "Member[RDSDataClient]"] - addsTo: pack: codeql/javascript-all extensible: sinkModel data: - - ["aws-sdk", "AnyMember.Argument[0].Member[secretAccessKey,accessKeyId]", "credentials-key"] - - ["aws-sdk", "AnyMember.Member[secretAccessKey,accessKeyId]", "credentials-key"] - - ["aws-sdk", "Member[Credentials].Argument[0,1]", "credentials-key"] + - ["aws-sdk", "AnyMember.Argument[0].Member[secretAccessKey,accessKeyId]", "credentials-key"] + - ["aws-sdk", "AnyMember.Member[secretAccessKey,accessKeyId]", "credentials-key"] + - ["aws-sdk", "Member[Credentials].Argument[0,1]", "credentials-key"] + - ["@aws-sdk/client.Client", "ReturnValue.Member[send].Argument[0]", "sql-injection"] + - ["aws-sdk.Athena", "ReturnValue.Member[startQueryExecution,createNamedQuery,updateNamedQuery].Argument[0].Member[QueryString]", "sql-injection"] + - ["aws-sdk.S3", "ReturnValue.Member[selectObjectContent].Argument[0].Member[Expression]", "sql-injection"] + - ["aws-sdk.RDSDataService", "ReturnValue.Member[executeStatement,batchExecuteStatement].Argument[0].Member[sql]", "sql-injection"] + - ["aws-sdk.RDSDataService", "ReturnValue.Member[batchExecuteStatement].Argument[0].Member[parameterSets].ArrayElement.Member[sql]", "sql-injection"] + - ["aws-sdk.DynamoDB", "ReturnValue.Member[executeStatement].Argument[0].Member[Statement]", "sql-injection"] + - ["aws-sdk.DynamoDB", "ReturnValue.Member[batchExecuteStatement].Argument[0].Member[Statements].ArrayElement.Member[Statement]", "sql-injection"] + - addsTo: + pack: codeql/javascript-all + extensible: summaryModel + data: + - ["@aws-sdk/client-athena", "Member[StartQueryExecutionCommand,CreateNamedQueryCommand,UpdateNamedQueryCommand]", "Argument[0].Member[QueryString]", "ReturnValue", "taint"] + - ["@aws-sdk/client-athena", "Member[CreatePreparedStatementCommand]", "Argument[0].Member[QueryStatement]", "ReturnValue", "taint"] + - ["@aws-sdk/client-s3", "Member[SelectObjectContentCommand]", "Argument[0].Member[Expression]", "ReturnValue", "taint"] + - ["@aws-sdk/client-rds-data", "Member[ExecuteStatementCommand,BatchExecuteStatementCommand]", "Argument[0].Member[sql]", "ReturnValue", "taint"] + - ["@aws-sdk/client-rds-data", "Member[BatchExecuteStatementCommand]", "Argument[0].Member[parameterSets].ArrayElement.Member[sql]", "ReturnValue", "taint"] + - ["@aws-sdk/client-rds-data", "Member[ExecuteSqlCommand]", "Argument[0].Member[sqlStatements]", "ReturnValue", "taint"] + - ["@aws-sdk/client-dynamodb", "Member[ExecuteStatementCommand]", "Argument[0].Member[Statement]", "ReturnValue", "taint"] + - ["@aws-sdk/client-dynamodb", "Member[BatchExecuteStatementCommand]", "Argument[0].Member[Statements].ArrayElement.Member[Statement]", "ReturnValue", "taint"] + - addsTo: + pack: codeql/javascript-all + extensible: sourceModel + data: + - ["@aws-sdk/client.Client", "ReturnValue.Member[send].ReturnValue.Awaited", "database-access-result"] + - ["aws-sdk.Athena", "ReturnValue.Member[getQueryResults].ReturnValue.Member[promise].ReturnValue.Awaited", "database-access-result"] + - ["aws-sdk.Athena", "ReturnValue.Member[getQueryResults].Argument[1].Parameter[1]", "database-access-result"] + - ["aws-sdk.S3", "ReturnValue.Member[getObject].ReturnValue.Member[promise].ReturnValue.Awaited", "database-access-result"] + - ["aws-sdk.S3", "ReturnValue.Member[getObject].Argument[1].Parameter[1]", "database-access-result"] + - ["aws-sdk.RDSDataService", "ReturnValue.Member[executeStatement,batchExecuteStatement].ReturnValue.Member[promise].ReturnValue.Awaited", "database-access-result"] + - ["aws-sdk.RDSDataService", "ReturnValue.Member[executeStatement,batchExecuteStatement].Argument[1].Parameter[1]", "database-access-result"] + - ["aws-sdk.DynamoDB", "ReturnValue.Member[executeStatement,batchExecuteStatement,query,scan,getItem,batchGetItem].ReturnValue.Member[promise].ReturnValue.Awaited", "database-access-result"] + - ["aws-sdk.DynamoDB", "ReturnValue.Member[executeStatement,batchExecuteStatement,query,scan,getItem,batchGetItem].Argument[1].Parameter[1]", "database-access-result"] diff --git a/javascript/ql/lib/ext/graph-ql.model.yml b/javascript/ql/lib/ext/graph-ql.model.yml new file mode 100644 index 000000000000..2ea1c41ed9fc --- /dev/null +++ b/javascript/ql/lib/ext/graph-ql.model.yml @@ -0,0 +1,11 @@ +extensions: + - addsTo: + pack: codeql/javascript-all + 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/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 3656daac7b72..74ccf251956f 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.11 +version: 2.6.12 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll index 6315b34b0a4f..a5131e4fd64e 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll @@ -150,7 +150,9 @@ private module FlowSummaryStepInput implements Private::StepsInputSig { ) } - DataFlow::Node getSourceNode(SourceBase source, Private::SummaryComponent sc) { none() } + DataFlowCallable getSourceNodeEnclosingCallable(SourceBase source) { none() } + + DataFlow::Node getSourceNode(SourceBase source, Private::SummaryComponentStack s) { none() } DataFlow::Node getSinkNode(SinkBase sink, Private::SummaryComponent sc) { none() } } diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Express.qll b/javascript/ql/lib/semmle/javascript/frameworks/Express.qll index 8c016b3afe91..be3cb7b1ccb8 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Express.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Express.qll @@ -781,6 +781,40 @@ module Express { override RouteHandler getRouteHandler() { result = response.getRouteHandler() } } + /** + * A call to `res.json()` or `res.jsonp()`. + * + * This sets the `content-type` header. + */ + private class ResponseJsonCall extends DataFlow::MethodCallNode, Http::HeaderDefinition { + private ResponseSource response; + + ResponseJsonCall() { this = response.ref().getAMethodCall(["json", "jsonp"]) } + + override RouteHandler getRouteHandler() { result = response.getRouteHandler() } + + override string getAHeaderName() { result = "content-type" } + + override predicate defines(string headerName, string headerValue) { + // Note: for `jsonp` the actual content-type header will be `text/javascript` or similar, but to avoid + // generating a spurious HTML injection sink, we treat it as `application/json` here. + headerName = "content-type" and headerValue = "application/json" + } + } + + /** + * An argument passed to the `json` or `jsonp` method of an HTTP response object. + */ + private class ResponseJsonCallArgument extends Http::ResponseSendArgument { + ResponseJsonCall call; + + ResponseJsonCallArgument() { this = call.getArgument(0) } + + override RouteHandler getRouteHandler() { result = call.getRouteHandler() } + + override HeaderDefinition getAnAssociatedHeaderDefinition() { result = call } + } + /** * An invocation of the `cookie` method on an HTTP response object. */ diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 619bc14bf299..46aae437f779 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.1.1 + +No user-facing changes. + ## 2.1.0 ### Major Analysis Improvements @@ -10,7 +14,7 @@ * Data flow is now tracked through the `Promise.try` and `Array.prototype.with` functions. * Query `js/index-out-of-bounds` no longer produces a false-positive when a strictly-less-than check overrides a previous less-than-or-equal test. * The query `js/remote-property-injection` now detects property injection vulnerabilities through object enumeration patterns such as `Object.keys()`. -* The query "Permissive CORS configuration" (`js/cors-permissive-configuration`) has been promoted from experimental and is now part of the default security suite. +* The query "Permissive CORS configuration" (`js/cors-permissive-configuration`) has been promoted from experimental and is now part of the default security suite. Thank you to @maikypedia who [submitted the original experimental query](https://github.com/github/codeql/pull/14342)! ## 2.0.3 diff --git a/javascript/ql/src/Comments/CommentedOutCode.ql b/javascript/ql/src/Comments/CommentedOutCode.ql index 2528172522d5..460a3bc21331 100644 --- a/javascript/ql/src/Comments/CommentedOutCode.ql +++ b/javascript/ql/src/Comments/CommentedOutCode.ql @@ -4,9 +4,9 @@ * @kind problem * @problem.severity recommendation * @id js/commented-out-code - * @tags maintainability - * statistical - * non-attributable + * @tags quality + * maintainability + * readability * @precision medium */ diff --git a/javascript/ql/src/Comments/TodoComments.ql b/javascript/ql/src/Comments/TodoComments.ql index 3d7f92cfbfc3..487dde1f737f 100644 --- a/javascript/ql/src/Comments/TodoComments.ql +++ b/javascript/ql/src/Comments/TodoComments.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity recommendation * @id js/todo-comment - * @tags maintainability + * @tags quality + * maintainability + * readability * external/cwe/cwe-546 * @precision medium */ diff --git a/javascript/ql/src/DOM/Alert.ql b/javascript/ql/src/DOM/Alert.ql index 97fd505d2f96..43218c439c18 100644 --- a/javascript/ql/src/DOM/Alert.ql +++ b/javascript/ql/src/DOM/Alert.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity recommendation * @id js/alert-call - * @tags maintainability + * @tags quality + * reliability + * correctness * external/cwe/cwe-489 * @precision medium */ diff --git a/javascript/ql/src/Declarations/RedeclaredVariable.ql b/javascript/ql/src/Declarations/RedeclaredVariable.ql index a48e4e5f65e7..098cfdaffc47 100644 --- a/javascript/ql/src/Declarations/RedeclaredVariable.ql +++ b/javascript/ql/src/Declarations/RedeclaredVariable.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity recommendation * @id js/variable-redeclaration - * @tags reliability + * @tags quality + * reliability + * correctness * readability * @precision medium */ diff --git a/javascript/ql/src/Declarations/UnusedParameter.ql b/javascript/ql/src/Declarations/UnusedParameter.ql index d48dc11ed2ab..6cb84d2f7c1f 100644 --- a/javascript/ql/src/Declarations/UnusedParameter.ql +++ b/javascript/ql/src/Declarations/UnusedParameter.ql @@ -4,7 +4,10 @@ * @kind problem * @problem.severity recommendation * @id js/unused-parameter - * @tags maintainability + * @tags quality + * reliability + * correctness + * readability * @precision medium */ diff --git a/javascript/ql/src/LanguageFeatures/ArgumentsCallerCallee.ql b/javascript/ql/src/LanguageFeatures/ArgumentsCallerCallee.ql index 6354383f6c78..9bbf22eebaaa 100644 --- a/javascript/ql/src/LanguageFeatures/ArgumentsCallerCallee.ql +++ b/javascript/ql/src/LanguageFeatures/ArgumentsCallerCallee.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity recommendation * @id js/call-stack-introspection - * @tags maintainability - * language-features + * @tags quality + * reliability + * correctness * @precision medium */ diff --git a/javascript/ql/src/LanguageFeatures/DebuggerStatement.ql b/javascript/ql/src/LanguageFeatures/DebuggerStatement.ql index 6ffca36df7cd..a81f8e93051f 100644 --- a/javascript/ql/src/LanguageFeatures/DebuggerStatement.ql +++ b/javascript/ql/src/LanguageFeatures/DebuggerStatement.ql @@ -4,9 +4,10 @@ * @kind problem * @problem.severity recommendation * @id js/debugger-statement - * @tags efficiency - * maintainability - * language-features + * @tags quality + * reliability + * correctness + * performance * external/cwe/cwe-489 * @precision medium */ diff --git a/javascript/ql/src/LanguageFeatures/Eval.ql b/javascript/ql/src/LanguageFeatures/Eval.ql index f1f753774c04..940ec716da7f 100644 --- a/javascript/ql/src/LanguageFeatures/Eval.ql +++ b/javascript/ql/src/LanguageFeatures/Eval.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity recommendation * @id js/eval-call - * @tags maintainability - * language-features + * @tags quality + * reliability + * correctness * external/cwe/cwe-676 * @precision medium */ diff --git a/javascript/ql/src/Performance/ReassignParameterAndUseArguments.ql b/javascript/ql/src/Performance/ReassignParameterAndUseArguments.ql index 0e54de5d7d89..7fddaa745926 100644 --- a/javascript/ql/src/Performance/ReassignParameterAndUseArguments.ql +++ b/javascript/ql/src/Performance/ReassignParameterAndUseArguments.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity recommendation * @id js/parameter-reassignment-with-arguments - * @tags efficiency - * maintainability + * @tags quality + * reliability + * performance * @precision medium */ diff --git a/javascript/ql/src/RegExp/BackspaceEscape.ql b/javascript/ql/src/RegExp/BackspaceEscape.ql index 054f46f06b68..cee6c7672cee 100644 --- a/javascript/ql/src/RegExp/BackspaceEscape.ql +++ b/javascript/ql/src/RegExp/BackspaceEscape.ql @@ -5,9 +5,10 @@ * @kind problem * @problem.severity recommendation * @id js/regex/backspace-escape - * @tags maintainability + * @tags quality + * maintainability * readability - * regular-expressions + * correctness * @precision medium */ diff --git a/javascript/ql/src/Statements/ImplicitReturn.ql b/javascript/ql/src/Statements/ImplicitReturn.ql index 9bc50f0798a6..cf76ec616062 100644 --- a/javascript/ql/src/Statements/ImplicitReturn.ql +++ b/javascript/ql/src/Statements/ImplicitReturn.ql @@ -5,7 +5,10 @@ * @kind problem * @problem.severity recommendation * @id js/implicit-return - * @tags maintainability + * @tags quality + * reliability + * correctness + * readability * @precision medium */ diff --git a/javascript/ql/src/Statements/InconsistentReturn.ql b/javascript/ql/src/Statements/InconsistentReturn.ql index b6978301e023..a6e810d52bf2 100644 --- a/javascript/ql/src/Statements/InconsistentReturn.ql +++ b/javascript/ql/src/Statements/InconsistentReturn.ql @@ -4,8 +4,10 @@ * @kind problem * @problem.severity recommendation * @id js/mixed-returns - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness + * readability * @precision medium */ diff --git a/javascript/ql/src/change-notes/released/2.1.0.md b/javascript/ql/src/change-notes/released/2.1.0.md index e0ef5ddd6e15..c95b5add20b7 100644 --- a/javascript/ql/src/change-notes/released/2.1.0.md +++ b/javascript/ql/src/change-notes/released/2.1.0.md @@ -10,4 +10,4 @@ * Data flow is now tracked through the `Promise.try` and `Array.prototype.with` functions. * Query `js/index-out-of-bounds` no longer produces a false-positive when a strictly-less-than check overrides a previous less-than-or-equal test. * The query `js/remote-property-injection` now detects property injection vulnerabilities through object enumeration patterns such as `Object.keys()`. -* The query "Permissive CORS configuration" (`js/cors-permissive-configuration`) has been promoted from experimental and is now part of the default security suite. +* The query "Permissive CORS configuration" (`js/cors-permissive-configuration`) has been promoted from experimental and is now part of the default security suite. Thank you to @maikypedia who [submitted the original experimental query](https://github.com/github/codeql/pull/14342)! diff --git a/javascript/ql/src/change-notes/released/2.1.1.md b/javascript/ql/src/change-notes/released/2.1.1.md new file mode 100644 index 000000000000..f023e9166c2d --- /dev/null +++ b/javascript/ql/src/change-notes/released/2.1.1.md @@ -0,0 +1,3 @@ +## 2.1.1 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 487a1a58b2b8..576c2ea18d68 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.1.0 +lastReleaseVersion: 2.1.1 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 0b379a03d5bb..cafde25bbf9e 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.1.0 +version: 2.1.1 groups: - javascript - queries diff --git a/javascript/ql/test/library-tests/frameworks/Express/src/json.js b/javascript/ql/test/library-tests/frameworks/Express/src/json.js new file mode 100644 index 000000000000..6b87cad68cfc --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/Express/src/json.js @@ -0,0 +1,10 @@ +const express = require('express'); +const app = express(); + +app.get('/test/json', function(req, res) { + res.json(req.query.data); +}); + +app.get('/test/jsonp', function(req, res) { + res.jsonp(req.query.data); +}); diff --git a/javascript/ql/test/library-tests/frameworks/Express/tests.expected b/javascript/ql/test/library-tests/frameworks/Express/tests.expected index ec4253740f77..9007a1ed984e 100644 --- a/javascript/ql/test/library-tests/frameworks/Express/tests.expected +++ b/javascript/ql/test/library-tests/frameworks/Express/tests.expected @@ -131,6 +131,12 @@ test_isRequest | src/inheritedFromNode.js:4:24:4:26 | req | | src/inheritedFromNode.js:4:24:4:26 | req | | src/inheritedFromNode.js:7:2:7:4 | req | +| src/json.js:4:32:4:34 | req | +| src/json.js:4:32:4:34 | req | +| src/json.js:5:14:5:16 | req | +| src/json.js:8:33:8:35 | req | +| src/json.js:8:33:8:35 | req | +| src/json.js:9:15:9:17 | req | | src/middleware-flow.js:5:20:5:22 | req | | src/middleware-flow.js:5:20:5:22 | req | | src/middleware-flow.js:6:5:6:7 | req | @@ -201,6 +207,8 @@ test_RouteSetup | src/express.js:65:1:69:2 | app.get ... es);\\n}) | src/express.js:2:11:2:19 | express() | false | | src/express.js:71:1:75:2 | app.get ... es);\\n}) | src/express.js:2:11:2:19 | express() | false | | src/inheritedFromNode.js:4:1:8:2 | app.pos ... url;\\n}) | src/inheritedFromNode.js:2:11:2:19 | express() | false | +| src/json.js:4:1:6:2 | app.get ... ta);\\n}) | src/json.js:2:13:2:21 | express() | false | +| src/json.js:8:1:10:2 | app.get ... ta);\\n}) | src/json.js:2:13:2:21 | express() | false | | src/middleware-flow.js:13:5:13:25 | router. ... tallDb) | src/middleware-flow.js:2:13:2:21 | express() | true | | src/middleware-flow.js:17:5:21:6 | router. ... \\n }) | src/middleware-flow.js:2:13:2:21 | express() | false | | src/middleware-flow.js:39:1:43:2 | unrelat ... .db;\\n}) | src/middleware-flow.js:37:22:37:30 | express() | false | @@ -345,6 +353,14 @@ test_isResponse | src/inheritedFromNode.js:4:29:4:31 | res | | src/inheritedFromNode.js:5:2:5:4 | res | | src/inheritedFromNode.js:6:2:6:4 | res | +| src/json.js:4:37:4:39 | res | +| src/json.js:4:37:4:39 | res | +| src/json.js:5:5:5:7 | res | +| src/json.js:5:5:5:28 | res.jso ... y.data) | +| src/json.js:8:38:8:40 | res | +| src/json.js:8:38:8:40 | res | +| src/json.js:9:5:9:7 | res | +| src/json.js:9:5:9:29 | res.jso ... y.data) | | src/middleware-flow.js:5:25:5:27 | res | | src/middleware-flow.js:17:30:17:32 | res | | src/middleware-flow.js:23:23:23:25 | res | @@ -575,6 +591,12 @@ test_RequestExpr | src/inheritedFromNode.js:4:24:4:26 | req | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | | src/inheritedFromNode.js:4:24:4:26 | req | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | | src/inheritedFromNode.js:7:2:7:4 | req | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | +| src/json.js:4:32:4:34 | req | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:4:32:4:34 | req | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:5:14:5:16 | req | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:8:33:8:35 | req | src/json.js:8:24:10:1 | functio ... ata);\\n} | +| src/json.js:8:33:8:35 | req | src/json.js:8:24:10:1 | functio ... ata);\\n} | +| src/json.js:9:15:9:17 | req | src/json.js:8:24:10:1 | functio ... ata);\\n} | | src/middleware-flow.js:5:20:5:22 | req | src/middleware-flow.js:5:1:10:1 | functio ... xt();\\n} | | src/middleware-flow.js:5:20:5:22 | req | src/middleware-flow.js:5:1:10:1 | functio ... xt();\\n} | | src/middleware-flow.js:6:5:6:7 | req | src/middleware-flow.js:5:1:10:1 | functio ... xt();\\n} | @@ -627,6 +649,7 @@ test_appCreation | src/express4.js:2:11:2:19 | express() | | src/express.js:2:11:2:19 | express() | | src/inheritedFromNode.js:2:11:2:19 | express() | +| src/json.js:2:13:2:21 | express() | | src/middleware-flow.js:2:13:2:21 | express() | | src/middleware-flow.js:37:22:37:30 | express() | | src/params.js:2:11:2:19 | express() | @@ -651,6 +674,8 @@ test_ResponseBody | src/express.js:61:12:61:25 | req.params.foo | src/express.js:59:23:63:1 | functio ... res);\\n} | | src/express.js:67:12:67:25 | req.params.foo | src/express.js:65:27:69:1 | functio ... res);\\n} | | src/express.js:73:12:73:19 | req.path | src/express.js:71:23:75:1 | functio ... res);\\n} | +| src/json.js:5:14:5:27 | req.query.data | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:9:15:9:28 | req.query.data | src/json.js:8:24:10:1 | functio ... ata);\\n} | | src/params.js:8:18:8:22 | value | src/params.js:4:18:12:1 | (req, r ... }\\n} | | src/params.js:15:12:15:18 | "Hello" | src/params.js:14:24:16:1 | functio ... lo");\\n} | test_ResponseExpr @@ -820,6 +845,14 @@ test_ResponseExpr | src/inheritedFromNode.js:4:29:4:31 | res | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | | src/inheritedFromNode.js:5:2:5:4 | res | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | | src/inheritedFromNode.js:6:2:6:4 | res | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | +| src/json.js:4:37:4:39 | res | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:4:37:4:39 | res | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:5:5:5:7 | res | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:5:5:5:28 | res.jso ... y.data) | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:8:38:8:40 | res | src/json.js:8:24:10:1 | functio ... ata);\\n} | +| src/json.js:8:38:8:40 | res | src/json.js:8:24:10:1 | functio ... ata);\\n} | +| src/json.js:9:5:9:7 | res | src/json.js:8:24:10:1 | functio ... ata);\\n} | +| src/json.js:9:5:9:29 | res.jso ... y.data) | src/json.js:8:24:10:1 | functio ... ata);\\n} | | src/middleware-flow.js:5:25:5:27 | res | src/middleware-flow.js:5:1:10:1 | functio ... xt();\\n} | | src/middleware-flow.js:17:30:17:32 | res | src/middleware-flow.js:17:24:21:5 | (req, r ... ;\\n } | | src/middleware-flow.js:23:23:23:25 | res | src/middleware-flow.js:23:17:23:41 | (req, r ... q.db; } | @@ -940,6 +973,8 @@ test_RouteHandler | src/express.js:65:27:69:1 | functio ... res);\\n} | src/express.js:65:36:65:38 | req | src/express.js:65:41:65:43 | res | | src/express.js:71:23:75:1 | functio ... res);\\n} | src/express.js:71:32:71:34 | req | src/express.js:71:37:71:39 | res | | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | src/inheritedFromNode.js:4:24:4:26 | req | src/inheritedFromNode.js:4:29:4:31 | res | +| src/json.js:4:23:6:1 | functio ... ata);\\n} | src/json.js:4:32:4:34 | req | src/json.js:4:37:4:39 | res | +| src/json.js:8:24:10:1 | functio ... ata);\\n} | src/json.js:8:33:8:35 | req | src/json.js:8:38:8:40 | res | | src/middleware-flow.js:5:1:10:1 | functio ... xt();\\n} | src/middleware-flow.js:5:20:5:22 | req | src/middleware-flow.js:5:25:5:27 | res | | src/middleware-flow.js:17:24:21:5 | (req, r ... ;\\n } | src/middleware-flow.js:17:25:17:27 | req | src/middleware-flow.js:17:30:17:32 | res | | src/middleware-flow.js:23:17:23:41 | (req, r ... q.db; } | src/middleware-flow.js:23:18:23:20 | req | src/middleware-flow.js:23:23:23:25 | res | @@ -972,6 +1007,8 @@ test_HeaderDefinition | src/express.js:66:3:66:42 | res.hea ... plain") | src/express.js:65:27:69:1 | functio ... res);\\n} | | src/express.js:72:3:72:41 | res.hea ... /html") | src/express.js:71:23:75:1 | functio ... res);\\n} | | src/inheritedFromNode.js:6:2:6:16 | res.setHeader() | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | +| src/json.js:5:5:5:28 | res.jso ... y.data) | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:9:5:9:29 | res.jso ... y.data) | src/json.js:8:24:10:1 | functio ... ata);\\n} | | src/responseExprs.js:19:5:19:16 | res.append() | src/responseExprs.js:16:30:42:1 | functio ... }\\n} | | src/responseExprs.js:37:5:37:28 | f(res.a ... ppend() | src/responseExprs.js:16:30:42:1 | functio ... }\\n} | | src/responseExprs.js:37:7:37:18 | res.append() | src/responseExprs.js:16:30:42:1 | functio ... }\\n} | @@ -1036,6 +1073,8 @@ test_RouteHandlerExpr | src/express.js:65:27:69:1 | functio ... res);\\n} | src/express.js:65:1:69:2 | app.get ... es);\\n}) | true | | src/express.js:71:23:75:1 | functio ... res);\\n} | src/express.js:71:1:75:2 | app.get ... es);\\n}) | true | | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | src/inheritedFromNode.js:4:1:8:2 | app.pos ... url;\\n}) | true | +| src/json.js:4:23:6:1 | functio ... ata);\\n} | src/json.js:4:1:6:2 | app.get ... ta);\\n}) | true | +| src/json.js:8:24:10:1 | functio ... ata);\\n} | src/json.js:8:1:10:2 | app.get ... ta);\\n}) | true | | src/middleware-flow.js:13:16:13:24 | installDb | src/middleware-flow.js:13:5:13:25 | router. ... tallDb) | false | | src/middleware-flow.js:17:24:21:5 | (req, r ... ;\\n } | src/middleware-flow.js:17:5:21:6 | router. ... \\n }) | true | | src/middleware-flow.js:27:23:27:32 | routers[p] | src/middleware-flow.js:27:9:27:33 | router. ... ers[p]) | true | @@ -1068,6 +1107,7 @@ test_isRouterCreation | src/express4.js:2:11:2:19 | express() | | src/express.js:2:11:2:19 | express() | | src/inheritedFromNode.js:2:11:2:19 | express() | +| src/json.js:2:13:2:21 | express() | | src/middleware-flow.js:2:13:2:21 | express() | | src/middleware-flow.js:37:22:37:30 | express() | | src/params.js:2:11:2:19 | express() | @@ -1111,6 +1151,8 @@ test_RequestInputAccess | src/express.js:67:12:67:25 | req.params.foo | parameter | src/express.js:65:27:69:1 | functio ... res);\\n} | | src/express.js:73:12:73:19 | req.path | url | src/express.js:71:23:75:1 | functio ... res);\\n} | | src/inheritedFromNode.js:7:2:7:8 | req.url | url | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | +| src/json.js:5:14:5:27 | req.query.data | parameter | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:9:15:9:28 | req.query.data | parameter | src/json.js:8:24:10:1 | functio ... ata);\\n} | | src/params.js:4:35:4:39 | value | parameter | src/params.js:4:18:12:1 | (req, r ... }\\n} | | src/params.js:5:17:5:28 | req.query.xx | parameter | src/params.js:4:18:12:1 | (req, r ... }\\n} | | src/params.js:6:17:6:24 | req.body | body | src/params.js:4:18:12:1 | (req, r ... }\\n} | @@ -1125,6 +1167,8 @@ test_ResponseSendArgument | src/express.js:61:12:61:25 | req.params.foo | src/express.js:59:23:63:1 | functio ... res);\\n} | | src/express.js:67:12:67:25 | req.params.foo | src/express.js:65:27:69:1 | functio ... res);\\n} | | src/express.js:73:12:73:19 | req.path | src/express.js:71:23:75:1 | functio ... res);\\n} | +| src/json.js:5:14:5:27 | req.query.data | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:9:15:9:28 | req.query.data | src/json.js:8:24:10:1 | functio ... ata);\\n} | | src/params.js:8:18:8:22 | value | src/params.js:4:18:12:1 | (req, r ... }\\n} | | src/params.js:15:12:15:18 | "Hello" | src/params.js:14:24:16:1 | functio ... lo");\\n} | test_RouteSetup_getRouter @@ -1182,6 +1226,8 @@ test_RouteSetup_getRouter | src/express.js:65:1:69:2 | app.get ... es);\\n}) | src/express.js:2:11:2:19 | express() | | src/express.js:71:1:75:2 | app.get ... es);\\n}) | src/express.js:2:11:2:19 | express() | | src/inheritedFromNode.js:4:1:8:2 | app.pos ... url;\\n}) | src/inheritedFromNode.js:2:11:2:19 | express() | +| src/json.js:4:1:6:2 | app.get ... ta);\\n}) | src/json.js:2:13:2:21 | express() | +| src/json.js:8:1:10:2 | app.get ... ta);\\n}) | src/json.js:2:13:2:21 | express() | | src/middleware-flow.js:13:5:13:25 | router. ... tallDb) | src/middleware-flow.js:2:13:2:21 | express() | | src/middleware-flow.js:17:5:21:6 | router. ... \\n }) | src/middleware-flow.js:2:13:2:21 | express() | | src/middleware-flow.js:27:9:27:33 | router. ... ers[p]) | src/middleware-flow.js:2:13:2:21 | express() | @@ -1226,6 +1272,8 @@ test_RouteSetup_getServer | src/express.js:65:1:69:2 | app.get ... es);\\n}) | src/express.js:2:11:2:19 | express() | | src/express.js:71:1:75:2 | app.get ... es);\\n}) | src/express.js:2:11:2:19 | express() | | src/inheritedFromNode.js:4:1:8:2 | app.pos ... url;\\n}) | src/inheritedFromNode.js:2:11:2:19 | express() | +| src/json.js:4:1:6:2 | app.get ... ta);\\n}) | src/json.js:2:13:2:21 | express() | +| src/json.js:8:1:10:2 | app.get ... ta);\\n}) | src/json.js:2:13:2:21 | express() | | src/middleware-flow.js:13:5:13:25 | router. ... tallDb) | src/middleware-flow.js:2:13:2:21 | express() | | src/middleware-flow.js:17:5:21:6 | router. ... \\n }) | src/middleware-flow.js:2:13:2:21 | express() | | src/middleware-flow.js:39:1:43:2 | unrelat ... .db;\\n}) | src/middleware-flow.js:37:22:37:30 | express() | @@ -1266,6 +1314,8 @@ test_StandardRouteHandler | src/express.js:65:27:69:1 | functio ... res);\\n} | src/express.js:2:11:2:19 | express() | src/express.js:65:36:65:38 | req | src/express.js:65:41:65:43 | res | | src/express.js:71:23:75:1 | functio ... res);\\n} | src/express.js:2:11:2:19 | express() | src/express.js:71:32:71:34 | req | src/express.js:71:37:71:39 | res | | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | src/inheritedFromNode.js:2:11:2:19 | express() | src/inheritedFromNode.js:4:24:4:26 | req | src/inheritedFromNode.js:4:29:4:31 | res | +| src/json.js:4:23:6:1 | functio ... ata);\\n} | src/json.js:2:13:2:21 | express() | src/json.js:4:32:4:34 | req | src/json.js:4:37:4:39 | res | +| src/json.js:8:24:10:1 | functio ... ata);\\n} | src/json.js:2:13:2:21 | express() | src/json.js:8:33:8:35 | req | src/json.js:8:38:8:40 | res | | src/middleware-flow.js:5:1:10:1 | functio ... xt();\\n} | src/middleware-flow.js:2:13:2:21 | express() | src/middleware-flow.js:5:20:5:22 | req | src/middleware-flow.js:5:25:5:27 | res | | src/middleware-flow.js:17:24:21:5 | (req, r ... ;\\n } | src/middleware-flow.js:2:13:2:21 | express() | src/middleware-flow.js:17:25:17:27 | req | src/middleware-flow.js:17:30:17:32 | res | | src/middleware-flow.js:39:23:43:1 | (req, r ... s.db;\\n} | src/middleware-flow.js:37:22:37:30 | express() | src/middleware-flow.js:39:24:39:26 | req | src/middleware-flow.js:39:29:39:31 | res | @@ -1322,6 +1372,8 @@ test_HeaderDefinition_defines | src/express.js:60:3:60:47 | res.hea ... n/xml") | content-type | application/xml | | src/express.js:66:3:66:42 | res.hea ... plain") | content-type | text/plain | | src/express.js:72:3:72:41 | res.hea ... /html") | content-type | text/html | +| src/json.js:5:5:5:28 | res.jso ... y.data) | content-type | application/json | +| src/json.js:9:5:9:29 | res.jso ... y.data) | content-type | application/json | test_RouteHandlerExpr_getBody | src/advanced-routehandler-registration.js:51:9:51:60 | (req, r ... tever") | src/advanced-routehandler-registration.js:51:9:51:60 | (req, r ... tever") | | src/advanced-routehandler-registration.js:64:9:64:53 | (req, r ... q, res) | src/advanced-routehandler-registration.js:64:9:64:53 | (req, r ... q, res) | @@ -1346,6 +1398,8 @@ test_RouteHandlerExpr_getBody | src/express.js:65:27:69:1 | functio ... res);\\n} | src/express.js:65:27:69:1 | functio ... res);\\n} | | src/express.js:71:23:75:1 | functio ... res);\\n} | src/express.js:71:23:75:1 | functio ... res);\\n} | | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | +| src/json.js:4:23:6:1 | functio ... ata);\\n} | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:8:24:10:1 | functio ... ata);\\n} | src/json.js:8:24:10:1 | functio ... ata);\\n} | | src/middleware-flow.js:13:16:13:24 | installDb | src/middleware-flow.js:5:1:10:1 | functio ... xt();\\n} | | src/middleware-flow.js:17:24:21:5 | (req, r ... ;\\n } | src/middleware-flow.js:17:24:21:5 | (req, r ... ;\\n } | | src/middleware-flow.js:39:23:43:1 | (req, r ... s.db;\\n} | src/middleware-flow.js:39:23:43:1 | (req, r ... s.db;\\n} | @@ -1466,6 +1520,8 @@ test_RouteSetup_getARouteHandler | src/express.js:65:1:69:2 | app.get ... es);\\n}) | src/express.js:65:27:69:1 | functio ... res);\\n} | | src/express.js:71:1:75:2 | app.get ... es);\\n}) | src/express.js:71:23:75:1 | functio ... res);\\n} | | src/inheritedFromNode.js:4:1:8:2 | app.pos ... url;\\n}) | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | +| src/json.js:4:1:6:2 | app.get ... ta);\\n}) | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:8:1:10:2 | app.get ... ta);\\n}) | src/json.js:8:24:10:1 | functio ... ata);\\n} | | src/middleware-flow.js:13:5:13:25 | router. ... tallDb) | src/middleware-flow.js:5:1:10:1 | functio ... xt();\\n} | | src/middleware-flow.js:17:5:21:6 | router. ... \\n }) | src/middleware-flow.js:17:24:21:5 | (req, r ... ;\\n } | | src/middleware-flow.js:27:9:27:33 | router. ... ers[p]) | src/middleware-flow.js:23:17:23:41 | (req, r ... q.db; } | @@ -1526,6 +1582,8 @@ test_RouteSetup_getRequestMethod | src/express.js:65:1:69:2 | app.get ... es);\\n}) | GET | | src/express.js:71:1:75:2 | app.get ... es);\\n}) | GET | | src/inheritedFromNode.js:4:1:8:2 | app.pos ... url;\\n}) | POST | +| src/json.js:4:1:6:2 | app.get ... ta);\\n}) | GET | +| src/json.js:8:1:10:2 | app.get ... ta);\\n}) | GET | | src/middleware-flow.js:17:5:21:6 | router. ... \\n }) | GET | | src/middleware-flow.js:27:9:27:33 | router. ... ers[p]) | GET | | src/middleware-flow.js:39:1:43:2 | unrelat ... .db;\\n}) | GET | @@ -1699,6 +1757,12 @@ test_RouteHandler_getARequestExpr | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | src/inheritedFromNode.js:4:24:4:26 | req | | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | src/inheritedFromNode.js:4:24:4:26 | req | | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | src/inheritedFromNode.js:7:2:7:4 | req | +| src/json.js:4:23:6:1 | functio ... ata);\\n} | src/json.js:4:32:4:34 | req | +| src/json.js:4:23:6:1 | functio ... ata);\\n} | src/json.js:4:32:4:34 | req | +| src/json.js:4:23:6:1 | functio ... ata);\\n} | src/json.js:5:14:5:16 | req | +| src/json.js:8:24:10:1 | functio ... ata);\\n} | src/json.js:8:33:8:35 | req | +| src/json.js:8:24:10:1 | functio ... ata);\\n} | src/json.js:8:33:8:35 | req | +| src/json.js:8:24:10:1 | functio ... ata);\\n} | src/json.js:9:15:9:17 | req | | src/middleware-flow.js:5:1:10:1 | functio ... xt();\\n} | src/middleware-flow.js:5:20:5:22 | req | | src/middleware-flow.js:5:1:10:1 | functio ... xt();\\n} | src/middleware-flow.js:5:20:5:22 | req | | src/middleware-flow.js:5:1:10:1 | functio ... xt();\\n} | src/middleware-flow.js:6:5:6:7 | req | @@ -1909,6 +1973,14 @@ test_RouteHandler_getAResponseExpr | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | src/inheritedFromNode.js:4:29:4:31 | res | | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | src/inheritedFromNode.js:5:2:5:4 | res | | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | src/inheritedFromNode.js:6:2:6:4 | res | +| src/json.js:4:23:6:1 | functio ... ata);\\n} | src/json.js:4:37:4:39 | res | +| src/json.js:4:23:6:1 | functio ... ata);\\n} | src/json.js:4:37:4:39 | res | +| src/json.js:4:23:6:1 | functio ... ata);\\n} | src/json.js:5:5:5:7 | res | +| src/json.js:4:23:6:1 | functio ... ata);\\n} | src/json.js:5:5:5:28 | res.jso ... y.data) | +| src/json.js:8:24:10:1 | functio ... ata);\\n} | src/json.js:8:38:8:40 | res | +| src/json.js:8:24:10:1 | functio ... ata);\\n} | src/json.js:8:38:8:40 | res | +| src/json.js:8:24:10:1 | functio ... ata);\\n} | src/json.js:9:5:9:7 | res | +| src/json.js:8:24:10:1 | functio ... ata);\\n} | src/json.js:9:5:9:29 | res.jso ... y.data) | | src/middleware-flow.js:5:1:10:1 | functio ... xt();\\n} | src/middleware-flow.js:5:25:5:27 | res | | src/middleware-flow.js:17:24:21:5 | (req, r ... ;\\n } | src/middleware-flow.js:17:30:17:32 | res | | src/middleware-flow.js:23:17:23:41 | (req, r ... q.db; } | src/middleware-flow.js:23:23:23:25 | res | @@ -2041,6 +2113,8 @@ test_RouteSetup_getRouteHandlerExpr | src/express.js:65:1:69:2 | app.get ... es);\\n}) | 0 | src/express.js:65:27:69:1 | functio ... res);\\n} | | src/express.js:71:1:75:2 | app.get ... es);\\n}) | 0 | src/express.js:71:23:75:1 | functio ... res);\\n} | | src/inheritedFromNode.js:4:1:8:2 | app.pos ... url;\\n}) | 0 | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | +| src/json.js:4:1:6:2 | app.get ... ta);\\n}) | 0 | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:8:1:10:2 | app.get ... ta);\\n}) | 0 | src/json.js:8:24:10:1 | functio ... ata);\\n} | | src/middleware-flow.js:13:5:13:25 | router. ... tallDb) | 0 | src/middleware-flow.js:13:16:13:24 | installDb | | src/middleware-flow.js:17:5:21:6 | router. ... \\n }) | 0 | src/middleware-flow.js:17:24:21:5 | (req, r ... ;\\n } | | src/middleware-flow.js:27:9:27:33 | router. ... ers[p]) | 0 | src/middleware-flow.js:27:23:27:32 | routers[p] | @@ -2073,6 +2147,8 @@ test_HeaderDefinition_getAHeaderName | src/express.js:60:3:60:47 | res.hea ... n/xml") | content-type | | src/express.js:66:3:66:42 | res.hea ... plain") | content-type | | src/express.js:72:3:72:41 | res.hea ... /html") | content-type | +| src/json.js:5:5:5:28 | res.jso ... y.data) | content-type | +| src/json.js:9:5:9:29 | res.jso ... y.data) | content-type | test_RouteHandlerExpr_getAsSubRouter | src/csurf-example.js:13:17:13:19 | api | src/csurf-example.js:30:16:30:35 | new express.Router() | | src/express2.js:6:9:6:14 | router | src/express2.js:2:14:2:23 | e.Router() | @@ -2089,6 +2165,8 @@ test_RouteHandler_getAResponseHeader | src/express.js:65:27:69:1 | functio ... res);\\n} | content-type | src/express.js:66:3:66:42 | res.hea ... plain") | | src/express.js:71:23:75:1 | functio ... res);\\n} | access-control-allow-credentials | src/express.js:12:3:12:54 | arg.hea ... , true) | | src/express.js:71:23:75:1 | functio ... res);\\n} | content-type | src/express.js:72:3:72:41 | res.hea ... /html") | +| src/json.js:4:23:6:1 | functio ... ata);\\n} | content-type | src/json.js:5:5:5:28 | res.jso ... y.data) | +| src/json.js:8:24:10:1 | functio ... ata);\\n} | content-type | src/json.js:9:5:9:29 | res.jso ... y.data) | test_RouteSetup_getARouteHandlerExpr | src/advanced-routehandler-registration.js:10:3:10:24 | app.get ... es0[p]) | src/advanced-routehandler-registration.js:10:14:10:23 | routes0[p] | | src/advanced-routehandler-registration.js:19:3:19:18 | app.use(handler) | src/advanced-routehandler-registration.js:19:11:19:17 | handler | @@ -2149,6 +2227,8 @@ test_RouteSetup_getARouteHandlerExpr | src/express.js:65:1:69:2 | app.get ... es);\\n}) | src/express.js:65:27:69:1 | functio ... res);\\n} | | src/express.js:71:1:75:2 | app.get ... es);\\n}) | src/express.js:71:23:75:1 | functio ... res);\\n} | | src/inheritedFromNode.js:4:1:8:2 | app.pos ... url;\\n}) | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | +| src/json.js:4:1:6:2 | app.get ... ta);\\n}) | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:8:1:10:2 | app.get ... ta);\\n}) | src/json.js:8:24:10:1 | functio ... ata);\\n} | | src/middleware-flow.js:13:5:13:25 | router. ... tallDb) | src/middleware-flow.js:13:16:13:24 | installDb | | src/middleware-flow.js:17:5:21:6 | router. ... \\n }) | src/middleware-flow.js:17:24:21:5 | (req, r ... ;\\n } | | src/middleware-flow.js:27:9:27:33 | router. ... ers[p]) | src/middleware-flow.js:27:23:27:32 | routers[p] | @@ -2181,6 +2261,7 @@ test_RouterDefinition_RouterDefinition | src/express4.js:2:11:2:19 | express() | | src/express.js:2:11:2:19 | express() | | src/inheritedFromNode.js:2:11:2:19 | express() | +| src/json.js:2:13:2:21 | express() | | src/middleware-flow.js:2:13:2:21 | express() | | src/middleware-flow.js:37:22:37:30 | express() | | src/params.js:2:11:2:19 | express() | @@ -2216,6 +2297,8 @@ test_RouterDefinition_getARouteHandler | src/express.js:2:11:2:19 | express() | src/express.js:65:27:69:1 | functio ... res);\\n} | | src/express.js:2:11:2:19 | express() | src/express.js:71:23:75:1 | functio ... res);\\n} | | src/inheritedFromNode.js:2:11:2:19 | express() | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | +| src/json.js:2:13:2:21 | express() | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:2:13:2:21 | express() | src/json.js:8:24:10:1 | functio ... ata);\\n} | | src/middleware-flow.js:2:13:2:21 | express() | src/middleware-flow.js:5:1:10:1 | functio ... xt();\\n} | | src/middleware-flow.js:2:13:2:21 | express() | src/middleware-flow.js:17:24:21:5 | (req, r ... ;\\n } | | src/middleware-flow.js:37:22:37:30 | express() | src/middleware-flow.js:39:23:43:1 | (req, r ... s.db;\\n} | @@ -2334,6 +2417,8 @@ test_RouteSetup_getLastRouteHandlerExpr | src/express.js:65:1:69:2 | app.get ... es);\\n}) | src/express.js:65:27:69:1 | functio ... res);\\n} | | src/express.js:71:1:75:2 | app.get ... es);\\n}) | src/express.js:71:23:75:1 | functio ... res);\\n} | | src/inheritedFromNode.js:4:1:8:2 | app.pos ... url;\\n}) | src/inheritedFromNode.js:4:15:8:1 | functio ... .url;\\n} | +| src/json.js:4:1:6:2 | app.get ... ta);\\n}) | src/json.js:4:23:6:1 | functio ... ata);\\n} | +| src/json.js:8:1:10:2 | app.get ... ta);\\n}) | src/json.js:8:24:10:1 | functio ... ata);\\n} | | src/middleware-flow.js:13:5:13:25 | router. ... tallDb) | src/middleware-flow.js:13:16:13:24 | installDb | | src/middleware-flow.js:17:5:21:6 | router. ... \\n }) | src/middleware-flow.js:17:24:21:5 | (req, r ... ;\\n } | | src/middleware-flow.js:27:9:27:33 | router. ... ers[p]) | src/middleware-flow.js:27:23:27:32 | routers[p] | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected index 4f27cd94835c..f8781e6741b9 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected @@ -32,6 +32,82 @@ nodes | angular-tempate-url.js:13:30:13:31 | ev | semmle.label | ev | | angular-tempate-url.js:14:26:14:27 | ev | semmle.label | ev | | angular-tempate-url.js:14:26:14:32 | ev.data | semmle.label | ev.data | +| aws-db.js:15:31:15:37 | results | semmle.label | results | +| aws-db.js:15:31:15:76 | results ... arValue | semmle.label | results ... arValue | +| aws-db.js:20:31:20:38 | response | semmle.label | response | +| aws-db.js:20:31:20:54 | respons ... tring() | semmle.label | respons ... tring() | +| aws-db.js:24:31:24:39 | response2 | semmle.label | response2 | +| aws-db.js:24:31:24:47 | response2.records | semmle.label | response2.records | +| aws-db.js:28:31:28:39 | response3 | semmle.label | response3 | +| aws-db.js:28:31:28:44 | response3.Item | semmle.label | response3.Item | +| aws-db.js:43:31:43:37 | results | semmle.label | results | +| aws-db.js:43:31:43:76 | results ... arValue | semmle.label | results ... arValue | +| aws-db.js:46:35:46:38 | data | semmle.label | data | +| aws-db.js:46:35:46:77 | data.Re ... arValue | semmle.label | data.Re ... arValue | +| aws-db.js:51:31:51:38 | response | semmle.label | response | +| aws-db.js:51:31:51:54 | respons ... tring() | semmle.label | respons ... tring() | +| aws-db.js:54:35:54:38 | data | semmle.label | data | +| aws-db.js:54:35:54:54 | data.Body.toString() | semmle.label | data.Body.toString() | +| aws-db.js:59:31:59:39 | response1 | semmle.label | response1 | +| aws-db.js:59:31:59:47 | response1.records | semmle.label | response1.records | +| aws-db.js:62:35:62:38 | data | semmle.label | data | +| aws-db.js:62:35:62:46 | data.records | semmle.label | data.records | +| aws-db.js:66:31:66:39 | response2 | semmle.label | response2 | +| aws-db.js:66:31:66:53 | respons ... Results | semmle.label | respons ... Results | +| aws-db.js:69:35:69:38 | data | semmle.label | data | +| aws-db.js:69:35:69:52 | data.updateResults | semmle.label | data.updateResults | +| aws-db.js:74:35:74:38 | data | semmle.label | data | +| aws-db.js:74:35:74:43 | data.Item | semmle.label | data.Item | +| aws-db.js:77:35:77:38 | data | semmle.label | data | +| aws-db.js:77:35:77:43 | data.Item | semmle.label | data.Item | +| aws.js:14:31:14:36 | result | semmle.label | result | +| aws.js:14:31:14:44 | result.comment | semmle.label | result.comment | +| aws.js:18:31:18:37 | result2 | semmle.label | result2 | +| aws.js:18:31:18:45 | result2.comment | semmle.label | result2.comment | +| aws.js:22:31:22:37 | result3 | semmle.label | result3 | +| aws.js:22:31:22:45 | result3.comment | semmle.label | result3.comment | +| aws.js:26:31:26:37 | result4 | semmle.label | result4 | +| aws.js:26:31:26:45 | result4.comment | semmle.label | result4.comment | +| aws.js:34:31:34:34 | data | semmle.label | data | +| aws.js:34:31:34:42 | data.comment | semmle.label | data.comment | +| aws.js:37:35:37:38 | data | semmle.label | data | +| aws.js:37:35:37:46 | data.comment | semmle.label | data.comment | +| aws.js:47:31:47:34 | data | semmle.label | data | +| aws.js:47:31:47:42 | data.comment | semmle.label | data.comment | +| aws.js:50:35:50:38 | data | semmle.label | data | +| aws.js:50:35:50:46 | data.comment | semmle.label | data.comment | +| aws.js:59:31:59:34 | data | semmle.label | data | +| aws.js:59:31:59:42 | data.comment | semmle.label | data.comment | +| aws.js:62:35:62:38 | data | semmle.label | data | +| aws.js:62:35:62:46 | data.comment | semmle.label | data.comment | +| aws.js:66:31:66:35 | data2 | semmle.label | data2 | +| aws.js:66:31:66:43 | data2.comment | semmle.label | data2.comment | +| aws.js:69:35:69:38 | data | semmle.label | data | +| aws.js:69:35:69:46 | data.comment | semmle.label | data.comment | +| aws.js:78:31:78:34 | data | semmle.label | data | +| aws.js:78:31:78:42 | data.comment | semmle.label | data.comment | +| aws.js:81:35:81:38 | data | semmle.label | data | +| aws.js:81:35:81:46 | data.comment | semmle.label | data.comment | +| aws.js:85:31:85:35 | data2 | semmle.label | data2 | +| aws.js:85:31:85:43 | data2.comment | semmle.label | data2.comment | +| aws.js:88:35:88:38 | data | semmle.label | data | +| aws.js:88:35:88:46 | data.comment | semmle.label | data.comment | +| aws.js:92:31:92:35 | data3 | semmle.label | data3 | +| aws.js:92:31:92:43 | data3.comment | semmle.label | data3.comment | +| aws.js:95:35:95:38 | data | semmle.label | data | +| aws.js:95:35:95:46 | data.comment | semmle.label | data.comment | +| aws.js:99:31:99:35 | data4 | semmle.label | data4 | +| aws.js:99:31:99:43 | data4.comment | semmle.label | data4.comment | +| aws.js:102:35:102:38 | data | semmle.label | data | +| aws.js:102:35:102:46 | data.comment | semmle.label | data.comment | +| aws.js:106:31:106:35 | data5 | semmle.label | data5 | +| aws.js:106:31:106:43 | data5.comment | semmle.label | data5.comment | +| aws.js:109:35:109:38 | data | semmle.label | data | +| aws.js:109:35:109:46 | data.comment | semmle.label | data.comment | +| aws.js:113:31:113:35 | data6 | semmle.label | data6 | +| aws.js:113:31:113:43 | data6.comment | semmle.label | data6.comment | +| aws.js:116:35:116:38 | data | semmle.label | data | +| aws.js:116:35:116:46 | data.comment | semmle.label | data.comment | | classnames.js:7:31:7:84 | `` | semmle.label | `` | | classnames.js:7:47:7:69 | classNa ... w.name) | semmle.label | classNa ... w.name) | | classnames.js:7:58:7:68 | window.name | semmle.label | window.name | @@ -724,6 +800,44 @@ edges | angular-tempate-url.js:13:30:13:31 | ev | angular-tempate-url.js:14:26:14:27 | ev | provenance | | | angular-tempate-url.js:14:26:14:27 | ev | angular-tempate-url.js:14:26:14:32 | ev.data | provenance | | | angular-tempate-url.js:14:26:14:32 | ev.data | angular-tempate-url.js:9:26:9:45 | Cookie.get("unsafe") | provenance | | +| aws-db.js:15:31:15:37 | results | aws-db.js:15:31:15:76 | results ... arValue | provenance | | +| aws-db.js:20:31:20:38 | response | aws-db.js:20:31:20:54 | respons ... tring() | provenance | | +| aws-db.js:24:31:24:39 | response2 | aws-db.js:24:31:24:47 | response2.records | provenance | | +| aws-db.js:28:31:28:39 | response3 | aws-db.js:28:31:28:44 | response3.Item | provenance | | +| aws-db.js:43:31:43:37 | results | aws-db.js:43:31:43:76 | results ... arValue | provenance | | +| aws-db.js:46:35:46:38 | data | aws-db.js:46:35:46:77 | data.Re ... arValue | provenance | | +| aws-db.js:51:31:51:38 | response | aws-db.js:51:31:51:54 | respons ... tring() | provenance | | +| aws-db.js:54:35:54:38 | data | aws-db.js:54:35:54:54 | data.Body.toString() | provenance | | +| aws-db.js:59:31:59:39 | response1 | aws-db.js:59:31:59:47 | response1.records | provenance | | +| aws-db.js:62:35:62:38 | data | aws-db.js:62:35:62:46 | data.records | provenance | | +| aws-db.js:66:31:66:39 | response2 | aws-db.js:66:31:66:53 | respons ... Results | provenance | | +| aws-db.js:69:35:69:38 | data | aws-db.js:69:35:69:52 | data.updateResults | provenance | | +| aws-db.js:74:35:74:38 | data | aws-db.js:74:35:74:43 | data.Item | provenance | | +| aws-db.js:77:35:77:38 | data | aws-db.js:77:35:77:43 | data.Item | provenance | | +| aws.js:14:31:14:36 | result | aws.js:14:31:14:44 | result.comment | provenance | | +| aws.js:18:31:18:37 | result2 | aws.js:18:31:18:45 | result2.comment | provenance | | +| aws.js:22:31:22:37 | result3 | aws.js:22:31:22:45 | result3.comment | provenance | | +| aws.js:26:31:26:37 | result4 | aws.js:26:31:26:45 | result4.comment | provenance | | +| aws.js:34:31:34:34 | data | aws.js:34:31:34:42 | data.comment | provenance | | +| aws.js:37:35:37:38 | data | aws.js:37:35:37:46 | data.comment | provenance | | +| aws.js:47:31:47:34 | data | aws.js:47:31:47:42 | data.comment | provenance | | +| aws.js:50:35:50:38 | data | aws.js:50:35:50:46 | data.comment | provenance | | +| aws.js:59:31:59:34 | data | aws.js:59:31:59:42 | data.comment | provenance | | +| aws.js:62:35:62:38 | data | aws.js:62:35:62:46 | data.comment | provenance | | +| aws.js:66:31:66:35 | data2 | aws.js:66:31:66:43 | data2.comment | provenance | | +| aws.js:69:35:69:38 | data | aws.js:69:35:69:46 | data.comment | provenance | | +| aws.js:78:31:78:34 | data | aws.js:78:31:78:42 | data.comment | provenance | | +| aws.js:81:35:81:38 | data | aws.js:81:35:81:46 | data.comment | provenance | | +| aws.js:85:31:85:35 | data2 | aws.js:85:31:85:43 | data2.comment | provenance | | +| aws.js:88:35:88:38 | data | aws.js:88:35:88:46 | data.comment | provenance | | +| aws.js:92:31:92:35 | data3 | aws.js:92:31:92:43 | data3.comment | provenance | | +| aws.js:95:35:95:38 | data | aws.js:95:35:95:46 | data.comment | provenance | | +| aws.js:99:31:99:35 | data4 | aws.js:99:31:99:43 | data4.comment | provenance | | +| aws.js:102:35:102:38 | data | aws.js:102:35:102:46 | data.comment | provenance | | +| aws.js:106:31:106:35 | data5 | aws.js:106:31:106:43 | data5.comment | provenance | | +| aws.js:109:35:109:38 | data | aws.js:109:35:109:46 | data.comment | provenance | | +| aws.js:113:31:113:35 | data6 | aws.js:113:31:113:43 | data6.comment | provenance | | +| aws.js:116:35:116:38 | data | aws.js:116:35:116:46 | data.comment | provenance | | | classnames.js:7:47:7:69 | classNa ... w.name) | classnames.js:7:31:7:84 | `` | provenance | | | classnames.js:7:58:7:68 | window.name | classnames.js:7:47:7:69 | classNa ... w.name) | provenance | | | classnames.js:8:47:8:70 | classNa ... w.name) | classnames.js:8:31:8:85 | `` | provenance | | @@ -1319,6 +1433,44 @@ subpaths | various-concat-obfuscations.js:21:17:21:46 | documen ... h.attrs | various-concat-obfuscations.js:17:24:17:28 | attrs | various-concat-obfuscations.js:18:10:18:105 | '
') | various-concat-obfuscations.js:21:4:21:47 | indirec ... .attrs) | | various-concat-obfuscations.js:21:17:21:46 | documen ... h.attrs | various-concat-obfuscations.js:17:24:17:28 | attrs | various-concat-obfuscations.js:18:10:18:105 | '
') [ArrayElement] | various-concat-obfuscations.js:21:4:21:47 | indirec ... .attrs) | #select +| aws-db.js:15:31:15:76 | results ... arValue | aws-db.js:15:31:15:37 | results | aws-db.js:15:31:15:76 | results ... arValue | Cross-site scripting vulnerability due to $@. | aws-db.js:15:31:15:37 | results | user-provided value | +| aws-db.js:20:31:20:54 | respons ... tring() | aws-db.js:20:31:20:38 | response | aws-db.js:20:31:20:54 | respons ... tring() | Cross-site scripting vulnerability due to $@. | aws-db.js:20:31:20:38 | response | user-provided value | +| aws-db.js:24:31:24:47 | response2.records | aws-db.js:24:31:24:39 | response2 | aws-db.js:24:31:24:47 | response2.records | Cross-site scripting vulnerability due to $@. | aws-db.js:24:31:24:39 | response2 | user-provided value | +| aws-db.js:28:31:28:44 | response3.Item | aws-db.js:28:31:28:39 | response3 | aws-db.js:28:31:28:44 | response3.Item | Cross-site scripting vulnerability due to $@. | aws-db.js:28:31:28:39 | response3 | user-provided value | +| aws-db.js:43:31:43:76 | results ... arValue | aws-db.js:43:31:43:37 | results | aws-db.js:43:31:43:76 | results ... arValue | Cross-site scripting vulnerability due to $@. | aws-db.js:43:31:43:37 | results | user-provided value | +| aws-db.js:46:35:46:77 | data.Re ... arValue | aws-db.js:46:35:46:38 | data | aws-db.js:46:35:46:77 | data.Re ... arValue | Cross-site scripting vulnerability due to $@. | aws-db.js:46:35:46:38 | data | user-provided value | +| aws-db.js:51:31:51:54 | respons ... tring() | aws-db.js:51:31:51:38 | response | aws-db.js:51:31:51:54 | respons ... tring() | Cross-site scripting vulnerability due to $@. | aws-db.js:51:31:51:38 | response | user-provided value | +| aws-db.js:54:35:54:54 | data.Body.toString() | aws-db.js:54:35:54:38 | data | aws-db.js:54:35:54:54 | data.Body.toString() | Cross-site scripting vulnerability due to $@. | aws-db.js:54:35:54:38 | data | user-provided value | +| aws-db.js:59:31:59:47 | response1.records | aws-db.js:59:31:59:39 | response1 | aws-db.js:59:31:59:47 | response1.records | Cross-site scripting vulnerability due to $@. | aws-db.js:59:31:59:39 | response1 | user-provided value | +| aws-db.js:62:35:62:46 | data.records | aws-db.js:62:35:62:38 | data | aws-db.js:62:35:62:46 | data.records | Cross-site scripting vulnerability due to $@. | aws-db.js:62:35:62:38 | data | user-provided value | +| aws-db.js:66:31:66:53 | respons ... Results | aws-db.js:66:31:66:39 | response2 | aws-db.js:66:31:66:53 | respons ... Results | Cross-site scripting vulnerability due to $@. | aws-db.js:66:31:66:39 | response2 | user-provided value | +| aws-db.js:69:35:69:52 | data.updateResults | aws-db.js:69:35:69:38 | data | aws-db.js:69:35:69:52 | data.updateResults | Cross-site scripting vulnerability due to $@. | aws-db.js:69:35:69:38 | data | user-provided value | +| aws-db.js:74:35:74:43 | data.Item | aws-db.js:74:35:74:38 | data | aws-db.js:74:35:74:43 | data.Item | Cross-site scripting vulnerability due to $@. | aws-db.js:74:35:74:38 | data | user-provided value | +| aws-db.js:77:35:77:43 | data.Item | aws-db.js:77:35:77:38 | data | aws-db.js:77:35:77:43 | data.Item | Cross-site scripting vulnerability due to $@. | aws-db.js:77:35:77:38 | data | user-provided value | +| aws.js:14:31:14:44 | result.comment | aws.js:14:31:14:36 | result | aws.js:14:31:14:44 | result.comment | Cross-site scripting vulnerability due to $@. | aws.js:14:31:14:36 | result | user-provided value | +| aws.js:18:31:18:45 | result2.comment | aws.js:18:31:18:37 | result2 | aws.js:18:31:18:45 | result2.comment | Cross-site scripting vulnerability due to $@. | aws.js:18:31:18:37 | result2 | user-provided value | +| aws.js:22:31:22:45 | result3.comment | aws.js:22:31:22:37 | result3 | aws.js:22:31:22:45 | result3.comment | Cross-site scripting vulnerability due to $@. | aws.js:22:31:22:37 | result3 | user-provided value | +| aws.js:26:31:26:45 | result4.comment | aws.js:26:31:26:37 | result4 | aws.js:26:31:26:45 | result4.comment | Cross-site scripting vulnerability due to $@. | aws.js:26:31:26:37 | result4 | user-provided value | +| aws.js:34:31:34:42 | data.comment | aws.js:34:31:34:34 | data | aws.js:34:31:34:42 | data.comment | Cross-site scripting vulnerability due to $@. | aws.js:34:31:34:34 | data | user-provided value | +| aws.js:37:35:37:46 | data.comment | aws.js:37:35:37:38 | data | aws.js:37:35:37:46 | data.comment | Cross-site scripting vulnerability due to $@. | aws.js:37:35:37:38 | data | user-provided value | +| aws.js:47:31:47:42 | data.comment | aws.js:47:31:47:34 | data | aws.js:47:31:47:42 | data.comment | Cross-site scripting vulnerability due to $@. | aws.js:47:31:47:34 | data | user-provided value | +| aws.js:50:35:50:46 | data.comment | aws.js:50:35:50:38 | data | aws.js:50:35:50:46 | data.comment | Cross-site scripting vulnerability due to $@. | aws.js:50:35:50:38 | data | user-provided value | +| aws.js:59:31:59:42 | data.comment | aws.js:59:31:59:34 | data | aws.js:59:31:59:42 | data.comment | Cross-site scripting vulnerability due to $@. | aws.js:59:31:59:34 | data | user-provided value | +| aws.js:62:35:62:46 | data.comment | aws.js:62:35:62:38 | data | aws.js:62:35:62:46 | data.comment | Cross-site scripting vulnerability due to $@. | aws.js:62:35:62:38 | data | user-provided value | +| aws.js:66:31:66:43 | data2.comment | aws.js:66:31:66:35 | data2 | aws.js:66:31:66:43 | data2.comment | Cross-site scripting vulnerability due to $@. | aws.js:66:31:66:35 | data2 | user-provided value | +| aws.js:69:35:69:46 | data.comment | aws.js:69:35:69:38 | data | aws.js:69:35:69:46 | data.comment | Cross-site scripting vulnerability due to $@. | aws.js:69:35:69:38 | data | user-provided value | +| aws.js:78:31:78:42 | data.comment | aws.js:78:31:78:34 | data | aws.js:78:31:78:42 | data.comment | Cross-site scripting vulnerability due to $@. | aws.js:78:31:78:34 | data | user-provided value | +| aws.js:81:35:81:46 | data.comment | aws.js:81:35:81:38 | data | aws.js:81:35:81:46 | data.comment | Cross-site scripting vulnerability due to $@. | aws.js:81:35:81:38 | data | user-provided value | +| aws.js:85:31:85:43 | data2.comment | aws.js:85:31:85:35 | data2 | aws.js:85:31:85:43 | data2.comment | Cross-site scripting vulnerability due to $@. | aws.js:85:31:85:35 | data2 | user-provided value | +| aws.js:88:35:88:46 | data.comment | aws.js:88:35:88:38 | data | aws.js:88:35:88:46 | data.comment | Cross-site scripting vulnerability due to $@. | aws.js:88:35:88:38 | data | user-provided value | +| aws.js:92:31:92:43 | data3.comment | aws.js:92:31:92:35 | data3 | aws.js:92:31:92:43 | data3.comment | Cross-site scripting vulnerability due to $@. | aws.js:92:31:92:35 | data3 | user-provided value | +| aws.js:95:35:95:46 | data.comment | aws.js:95:35:95:38 | data | aws.js:95:35:95:46 | data.comment | Cross-site scripting vulnerability due to $@. | aws.js:95:35:95:38 | data | user-provided value | +| aws.js:99:31:99:43 | data4.comment | aws.js:99:31:99:35 | data4 | aws.js:99:31:99:43 | data4.comment | Cross-site scripting vulnerability due to $@. | aws.js:99:31:99:35 | data4 | user-provided value | +| aws.js:102:35:102:46 | data.comment | aws.js:102:35:102:38 | data | aws.js:102:35:102:46 | data.comment | Cross-site scripting vulnerability due to $@. | aws.js:102:35:102:38 | data | user-provided value | +| aws.js:106:31:106:43 | data5.comment | aws.js:106:31:106:35 | data5 | aws.js:106:31:106:43 | data5.comment | Cross-site scripting vulnerability due to $@. | aws.js:106:31:106:35 | data5 | user-provided value | +| aws.js:109:35:109:46 | data.comment | aws.js:109:35:109:38 | data | aws.js:109:35:109:46 | data.comment | Cross-site scripting vulnerability due to $@. | aws.js:109:35:109:38 | data | user-provided value | +| aws.js:113:31:113:43 | data6.comment | aws.js:113:31:113:35 | data6 | aws.js:113:31:113:43 | data6.comment | Cross-site scripting vulnerability due to $@. | aws.js:113:31:113:35 | data6 | user-provided value | +| aws.js:116:35:116:46 | data.comment | aws.js:116:35:116:38 | data | aws.js:116:35:116:46 | data.comment | Cross-site scripting vulnerability due to $@. | aws.js:116:35:116:38 | data | user-provided value | | hana.js:11:37:11:51 | rows[0].comment | hana.js:11:37:11:40 | rows | hana.js:11:37:11:51 | rows[0].comment | Cross-site scripting vulnerability due to $@. | hana.js:11:37:11:40 | rows | user-provided value | | hana.js:16:37:16:51 | rows[0].comment | hana.js:16:37:16:40 | rows | hana.js:16:37:16:51 | rows[0].comment | Cross-site scripting vulnerability due to $@. | hana.js:16:37:16:40 | rows | user-provided value | | hana.js:19:37:19:51 | rows[0].comment | hana.js:19:37:19:40 | rows | hana.js:19:37:19:51 | rows[0].comment | Cross-site scripting vulnerability due to $@. | hana.js:19:37:19:40 | rows | user-provided value | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/aws-db.js b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/aws-db.js new file mode 100644 index 000000000000..0f345f7172e0 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/aws-db.js @@ -0,0 +1,79 @@ +const { AthenaClient, GetQueryResultsCommand } = require('@aws-sdk/client-athena'); +const { S3Client, GetObjectCommand } = require("@aws-sdk/client-s3"); +const { RDSDataClient, ExecuteStatementCommand } = require("@aws-sdk/client-rds-data"); +const { DynamoDBClient, GetItemCommand } = require("@aws-sdk/client-dynamodb"); + + +const express = require('express'); +const bodyParser = require('body-parser'); +const app = express(); +app.use(bodyParser.json()); + +app.post('/v3/all', async (req, res) => { + const client = new AthenaClient({ region: "us-east-1" }); + const results = await client.send(new GetQueryResultsCommand({ QueryExecutionId })); + document.body.innerHTML = results.ResultSet.Rows[0].Data[0].VarCharValue; // $ Alert[js/xss-additional-sources-dom-test] + + const s3 = new S3Client({ region: "us-east-1" }); + const command = new GetObjectCommand({ Bucket: bucket, Key: key }); + const response = await s3.send(command); + document.body.innerHTML = response.Body.toString(); // $ Alert[js/xss-additional-sources-dom-test] + + const clientRDS = new RDSDataClient({ region: "us-east-1" }); + const response2 = await clientRDS.send(new ExecuteStatementCommand(command)); + document.body.innerHTML = response2.records; // $ Alert[js/xss-additional-sources-dom-test] + + const clientDyamo = new DynamoDBClient({ region: "us-east-1" }); + const response3 = await clientDyamo.send(new GetItemCommand(command)); + document.body.innerHTML = response3.Item; // $ Alert[js/xss-additional-sources-dom-test] + +}); + + +app.post('/v2/all', async (req, res) => { + const AWS = require('aws-sdk'); + const athena = new AWS.Athena(); + const params = { + QueryString: 'SELECT * FROM my_table', + ResultConfiguration: { OutputLocation: 's3://bucket/prefix/' } + }; + const { QueryExecutionId } = await athena.startQueryExecution(params).promise(); + + const results = await athena.getQueryResults({ QueryExecutionId }).promise(); + document.body.innerHTML = results.ResultSet.Rows[0].Data[0].VarCharValue; // $ Alert[js/xss-additional-sources-dom-test] + + athena.getQueryResults({ QueryExecutionId }, (err, data) => { + document.body.innerHTML = data.ResultSet.Rows[0].Data[0].VarCharValue; // $ Alert[js/xss-additional-sources-dom-test] + }); + + const s3 = new AWS.S3({ region: "us-east-1" }); + const response = await s3.getObject({ Bucket: "bucket", Key: "key" }).promise(); + document.body.innerHTML = response.Body.toString(); // $ Alert[js/xss-additional-sources-dom-test] + + s3.getObject({ Bucket: "bucket", Key: "key" }, (err, data) => { + document.body.innerHTML = data.Body.toString(); // $ Alert[js/xss-additional-sources-dom-test] + }); + + const rdsData = new AWS.RDSDataService({ region: "us-east-1" }); + const response1 = await rdsData.executeStatement(params).promise(); + document.body.innerHTML = response1.records; // $ Alert[js/xss-additional-sources-dom-test] + + rdsData.executeStatement(params, function(err, data) { + document.body.innerHTML = data.records; // $ Alert[js/xss-additional-sources-dom-test] + }); + + const response2 = await rdsData.batchExecuteStatement(params).promise(); + document.body.innerHTML = response2.updateResults; // $ Alert[js/xss-additional-sources-dom-test] + + rdsData.batchExecuteStatement(params, function(err, data) { + document.body.innerHTML = data.updateResults; // $ Alert[js/xss-additional-sources-dom-test] + }); + + const dynamodb = new AWS.DynamoDB({ region: "us-east-1" }); + dynamodb.executeStatement(params, (err, data) => { + document.body.innerHTML = data.Item; // $ Alert[js/xss-additional-sources-dom-test] + }); + dynamodb.executeStatement(params).promise().then(data => { + document.body.innerHTML = data.Item; // $ Alert[js/xss-additional-sources-dom-test] + }); +}); diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/aws.js b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/aws.js new file mode 100644 index 000000000000..103689c078f2 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/aws.js @@ -0,0 +1,118 @@ +const AWS = require('aws-sdk'); +const { AthenaClient } = require('@aws-sdk/client-athena'); +const { S3Client } = require('@aws-sdk/client-s3'); +const { RDSDataClient } = require('@aws-sdk/client-rds-data'); +const { DynamoDBClient } = require('@aws-sdk/client-dynamodb'); +const express = require('express'); + +const app = express(); + +// AWS V3 Common tests +app.post('/aws-v3-common', async (req, res) => { + const athenaClient = new AthenaClient({}); + const result = await athenaClient.send({}); + document.body.innerHTML = result.comment; // $ Alert[js/xss-additional-sources-dom-test] + + const s3Client = new S3Client({}); + const result2 = await s3Client.send({}); + document.body.innerHTML = result2.comment; // $ Alert[js/xss-additional-sources-dom-test] + + const rdsDataClient = new RDSDataClient({}); + const result3 = await rdsDataClient.send({}); + document.body.innerHTML = result3.comment; // $ Alert[js/xss-additional-sources-dom-test] + + const dynamoClient = new DynamoDBClient({}); + const result4 = await dynamoClient.send({}); + document.body.innerHTML = result4.comment; // $ Alert[js/xss-additional-sources-dom-test] +}); + +// Athena Client V2 tests +app.post('/athena-v2', async (req, res) => { + const athena = new AWS.Athena(); + + const data = await athena.getQueryResults({}).promise(); + document.body.innerHTML = data.comment; // $ Alert[js/xss-additional-sources-dom-test] + + athena.getQueryResults({}, function(err, data) { + document.body.innerHTML = data.comment; // $ Alert[js/xss-additional-sources-dom-test] + }); +}); + +// S3 Client V2 tests +app.post('/s3-v2', async (req, res) => { + const s3 = new AWS.S3(); + + + const data = await s3.getObject({}).promise(); + document.body.innerHTML = data.comment; // $ Alert[js/xss-additional-sources-dom-test] + + s3.getObject({}, function(err, data) { + document.body.innerHTML = data.comment; // $ Alert[js/xss-additional-sources-dom-test] + }); +}); + +// RDS Data Client V2 tests +app.post('/rds-data-v2', async (req, res) => { + const rdsData = new AWS.RDSDataService(); + + const data = await rdsData.executeStatement({}).promise(); + document.body.innerHTML = data.comment; // $ Alert[js/xss-additional-sources-dom-test] + + rdsData.executeStatement({}, function(err, data) { + document.body.innerHTML = data.comment; // $ Alert[js/xss-additional-sources-dom-test] + }); + + const data2 = await rdsData.batchExecuteStatement({}).promise(); + document.body.innerHTML = data2.comment; // $ Alert[js/xss-additional-sources-dom-test] + + rdsData.batchExecuteStatement({}, function(err, data) { + document.body.innerHTML = data.comment; // $ Alert[js/xss-additional-sources-dom-test] + }); +}); + +// DynamoDB Client V2 tests +app.post('/dynamodb-v2', async (req, res) => { + const dynamodb = new AWS.DynamoDB(); + + const data = await dynamodb.executeStatement({}).promise(); + document.body.innerHTML = data.comment; // $ Alert[js/xss-additional-sources-dom-test] + + dynamodb.executeStatement({}, function(err, data) { + document.body.innerHTML = data.comment; // $ Alert[js/xss-additional-sources-dom-test] + }); + + const data2 = await dynamodb.batchExecuteStatement({}).promise(); + document.body.innerHTML = data2.comment; // $ Alert[js/xss-additional-sources-dom-test] + + dynamodb.batchExecuteStatement({}, function(err, data) { + document.body.innerHTML = data.comment; // $ Alert[js/xss-additional-sources-dom-test] + }); + + const data3 = await dynamodb.query({}).promise(); + document.body.innerHTML = data3.comment; // $ Alert[js/xss-additional-sources-dom-test] + + dynamodb.query({}, function(err, data) { + document.body.innerHTML = data.comment; // $ Alert[js/xss-additional-sources-dom-test] + }); + + const data4 = await dynamodb.scan({}).promise(); + document.body.innerHTML = data4.comment; // $ Alert[js/xss-additional-sources-dom-test] + + dynamodb.scan({}, function(err, data) { + document.body.innerHTML = data.comment; // $ Alert[js/xss-additional-sources-dom-test] + }); + + const data5 = await dynamodb.getItem({}).promise(); + document.body.innerHTML = data5.comment; // $ Alert[js/xss-additional-sources-dom-test] + + dynamodb.getItem({}, function(err, data) { + document.body.innerHTML = data.comment; // $ Alert[js/xss-additional-sources-dom-test] + }); + + const data6 = await dynamodb.batchGetItem({}).promise(); + document.body.innerHTML = data6.comment; // $ Alert[js/xss-additional-sources-dom-test] + + dynamodb.batchGetItem({}, function(err, data) { + document.body.innerHTML = data.comment; // $ Alert[js/xss-additional-sources-dom-test] + }); +}); diff --git a/javascript/ql/test/query-tests/Security/CWE-089/untyped/SqlInjection.expected b/javascript/ql/test/query-tests/Security/CWE-089/untyped/SqlInjection.expected index 9405e075e332..f28fb93238d9 100644 --- a/javascript/ql/test/query-tests/Security/CWE-089/untyped/SqlInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-089/untyped/SqlInjection.expected @@ -1,4 +1,20 @@ #select +| athena.js:19:23:19:23 | p | athena.js:9:23:9:30 | req.body | athena.js:19:23:19:23 | p | This query string depends on a $@. | athena.js:9:23:9:30 | req.body | user-provided value | +| athena.js:27:23:27:58 | new Cre ... arams2) | athena.js:9:23:9:30 | req.body | athena.js:27:23:27:58 | new Cre ... arams2) | This query string depends on a $@. | athena.js:9:23:9:30 | req.body | user-provided value | +| athena.js:36:23:36:58 | new Upd ... arams3) | athena.js:9:23:9:30 | req.body | athena.js:36:23:36:58 | new Upd ... arams3) | This query string depends on a $@. | athena.js:9:23:9:30 | req.body | user-provided value | +| athena.js:48:22:48:30 | userQuery | athena.js:43:23:43:30 | req.body | athena.js:48:22:48:30 | userQuery | This query string depends on a $@. | athena.js:43:23:43:30 | req.body | user-provided value | +| athena.js:57:22:57:30 | userQuery | athena.js:43:23:43:30 | req.body | athena.js:57:22:57:30 | userQuery | This query string depends on a $@. | athena.js:43:23:43:30 | req.body | user-provided value | +| athena.js:66:22:66:30 | userQuery | athena.js:43:23:43:30 | req.body | athena.js:66:22:66:30 | userQuery | This query string depends on a $@. | athena.js:43:23:43:30 | req.body | user-provided value | +| athena.js:84:23:84:29 | command | athena.js:75:32:75:39 | req.body | athena.js:84:23:84:29 | command | This query string depends on a $@. | athena.js:75:32:75:39 | req.body | user-provided value | +| clients3.js:18:23:18:60 | new Sel ... params) | clients3.js:10:26:10:33 | req.body | clients3.js:18:23:18:60 | new Sel ... params) | This query string depends on a $@. | clients3.js:10:26:10:33 | req.body | user-provided value | +| clients3.js:29:21:29:68 | "SELECT ... usInput | clients3.js:23:26:23:33 | req.body | clients3.js:29:21:29:68 | "SELECT ... usInput | This query string depends on a $@. | clients3.js:23:26:23:33 | req.body | user-provided value | +| clients3.js:38:21:38:68 | "SELECT ... usInput | clients3.js:23:26:23:33 | req.body | clients3.js:38:21:38:68 | "SELECT ... usInput | This query string depends on a $@. | clients3.js:23:26:23:33 | req.body | user-provided value | +| dynamodb.js:15:23:15:29 | command | dynamodb.js:9:26:9:33 | req.body | dynamodb.js:15:23:15:29 | command | This query string depends on a $@. | dynamodb.js:9:26:9:33 | req.body | user-provided value | +| dynamodb.js:21:23:21:35 | updateCommand | dynamodb.js:9:26:9:33 | req.body | dynamodb.js:21:23:21:35 | updateCommand | This query string depends on a $@. | dynamodb.js:9:26:9:33 | req.body | user-provided value | +| dynamodb.js:47:24:47:30 | command | dynamodb.js:9:26:9:33 | req.body | dynamodb.js:47:24:47:30 | command | This query string depends on a $@. | dynamodb.js:9:26:9:33 | req.body | user-provided value | +| dynamodb.js:58:20:58:77 | `SELECT ... nput}'` | dynamodb.js:56:26:56:33 | req.body | dynamodb.js:58:20:58:77 | `SELECT ... nput}'` | This query string depends on a $@. | dynamodb.js:56:26:56:33 | req.body | user-provided value | +| dynamodb.js:64:28:64:85 | `SELECT ... nput}'` | dynamodb.js:56:26:56:33 | req.body | dynamodb.js:64:28:64:85 | `SELECT ... nput}'` | This query string depends on a $@. | dynamodb.js:56:26:56:33 | req.body | user-provided value | +| dynamodb.js:67:28:67:85 | `SELECT ... nput}'` | dynamodb.js:56:26:56:33 | req.body | dynamodb.js:67:28:67:85 | `SELECT ... nput}'` | This query string depends on a $@. | dynamodb.js:56:26:56:33 | req.body | user-provided value | | graphql.js:9:34:19:5 | `\\n ... }\\n ` | graphql.js:8:16:8:28 | req.params.id | graphql.js:9:34:19:5 | `\\n ... }\\n ` | This query string depends on a $@. | graphql.js:8:16:8:28 | req.params.id | user-provided value | | graphql.js:26:30:26:40 | `foo ${id}` | graphql.js:25:16:25:28 | req.params.id | graphql.js:26:30:26:40 | `foo ${id}` | This query string depends on a $@. | graphql.js:25:16:25:28 | req.params.id | user-provided value | | graphql.js:29:32:29:42 | `foo ${id}` | graphql.js:25:16:25:28 | req.params.id | graphql.js:29:32:29:42 | `foo ${id}` | This query string depends on a $@. | graphql.js:25:16:25:28 | req.params.id | user-provided value | @@ -122,6 +138,10 @@ | pg-promise.js:60:20:60:24 | query | pg-promise.js:7:16:7:34 | req.params.category | pg-promise.js:60:20:60:24 | query | This query string depends on a $@. | pg-promise.js:7:16:7:34 | req.params.category | user-provided value | | pg-promise.js:63:23:63:27 | query | pg-promise.js:7:16:7:34 | req.params.category | pg-promise.js:63:23:63:27 | query | This query string depends on a $@. | pg-promise.js:7:16:7:34 | req.params.category | user-provided value | | pg-promise.js:64:16:64:20 | query | pg-promise.js:7:16:7:34 | req.params.category | pg-promise.js:64:16:64:20 | query | This query string depends on a $@. | pg-promise.js:7:16:7:34 | req.params.category | user-provided value | +| rds-client.js:19:23:19:58 | new Exe ... arams1) | rds-client.js:8:23:8:30 | req.body | rds-client.js:19:23:19:58 | new Exe ... arams1) | This query string depends on a $@. | rds-client.js:8:23:8:30 | req.body | user-provided value | +| rds-client.js:36:23:36:51 | new Exe ... params) | rds-client.js:8:23:8:30 | req.body | rds-client.js:36:23:36:51 | new Exe ... params) | This query string depends on a $@. | rds-client.js:8:23:8:30 | req.body | user-provided value | +| rds-client.js:53:14:53:22 | userQuery | rds-client.js:44:23:44:30 | req.body | rds-client.js:53:14:53:22 | userQuery | This query string depends on a $@. | rds-client.js:44:23:44:30 | req.body | user-provided value | +| rds-client.js:61:50:61:52 | sql | rds-client.js:45:25:45:32 | req.body | rds-client.js:61:50:61:52 | sql | This query string depends on a $@. | rds-client.js:45:25:45:32 | req.body | user-provided value | | redis.js:10:16:10:27 | req.body.key | redis.js:10:16:10:23 | req.body | redis.js:10:16:10:27 | req.body.key | This query object depends on a $@. | redis.js:10:16:10:23 | req.body | user-provided value | | redis.js:18:16:18:18 | key | redis.js:12:15:12:22 | req.body | redis.js:18:16:18:18 | key | This query object depends on a $@. | redis.js:12:15:12:22 | req.body | user-provided value | | redis.js:19:43:19:45 | key | redis.js:12:15:12:22 | req.body | redis.js:19:43:19:45 | key | This query object depends on a $@. | redis.js:12:15:12:22 | req.body | user-provided value | @@ -137,6 +157,72 @@ | tst4.js:8:10:8:66 | 'SELECT ... d + '"' | tst4.js:8:46:8:60 | $routeParams.id | tst4.js:8:10:8:66 | 'SELECT ... d + '"' | This query string depends on a $@. | tst4.js:8:46:8:60 | $routeParams.id | user-provided value | | tst.js:10:10:10:64 | 'SELECT ... d + '"' | tst.js:10:46:10:58 | req.params.id | tst.js:10:10:10:64 | 'SELECT ... d + '"' | This query string depends on a $@. | tst.js:10:46:10:58 | req.params.id | user-provided value | edges +| athena.js:9:11:9:19 | userQuery | athena.js:14:30:14:38 | userQuery | provenance | | +| athena.js:9:11:9:19 | userQuery | athena.js:24:22:24:30 | userQuery | provenance | | +| athena.js:9:11:9:19 | userQuery | athena.js:33:22:33:30 | userQuery | provenance | | +| athena.js:9:23:9:30 | req.body | athena.js:9:11:9:19 | userQuery | provenance | | +| athena.js:13:11:13:17 | params1 [QueryString] | athena.js:18:46:18:52 | params1 [QueryString] | provenance | | +| athena.js:13:21:17:5 | { \\n ... }\\n } [QueryString] | athena.js:13:11:13:17 | params1 [QueryString] | provenance | | +| athena.js:14:22:14:38 | "SQL" + userQuery | athena.js:13:21:17:5 | { \\n ... }\\n } [QueryString] | provenance | | +| athena.js:14:30:14:38 | userQuery | athena.js:14:22:14:38 | "SQL" + userQuery | provenance | | +| athena.js:18:11:18:11 | p | athena.js:19:23:19:23 | p | provenance | | +| athena.js:18:15:18:53 | new Sta ... arams1) | athena.js:18:11:18:11 | p | provenance | | +| athena.js:18:46:18:52 | params1 [QueryString] | athena.js:18:15:18:53 | new Sta ... arams1) | provenance | | +| athena.js:21:11:21:17 | params2 [QueryString] | athena.js:27:51:27:57 | params2 [QueryString] | provenance | | +| athena.js:21:21:26:5 | {\\n ... "\\n } [QueryString] | athena.js:21:11:21:17 | params2 [QueryString] | provenance | | +| athena.js:24:22:24:30 | userQuery | athena.js:21:21:26:5 | {\\n ... "\\n } [QueryString] | provenance | | +| athena.js:27:51:27:57 | params2 [QueryString] | athena.js:27:23:27:58 | new Cre ... arams2) | provenance | | +| athena.js:29:11:29:17 | params3 [QueryString] | athena.js:36:51:36:57 | params3 [QueryString] | provenance | | +| athena.js:29:21:35:5 | {\\n ... "\\n } [QueryString] | athena.js:29:11:29:17 | params3 [QueryString] | provenance | | +| athena.js:33:22:33:30 | userQuery | athena.js:29:21:35:5 | {\\n ... "\\n } [QueryString] | provenance | | +| athena.js:36:51:36:57 | params3 [QueryString] | athena.js:36:23:36:58 | new Upd ... arams3) | provenance | | +| athena.js:43:11:43:19 | userQuery | athena.js:48:22:48:30 | userQuery | provenance | | +| athena.js:43:11:43:19 | userQuery | athena.js:57:22:57:30 | userQuery | provenance | | +| athena.js:43:11:43:19 | userQuery | athena.js:66:22:66:30 | userQuery | provenance | | +| athena.js:43:23:43:30 | req.body | athena.js:43:11:43:19 | userQuery | provenance | | +| athena.js:75:11:75:28 | userQueryStatement | athena.js:80:25:80:42 | userQueryStatement | provenance | | +| athena.js:75:32:75:39 | req.body | athena.js:75:11:75:28 | userQueryStatement | provenance | | +| athena.js:77:11:77:15 | input [QueryStatement] | athena.js:83:56:83:60 | input [QueryStatement] | provenance | | +| athena.js:77:19:82:5 | {\\n ... ,\\n } [QueryStatement] | athena.js:77:11:77:15 | input [QueryStatement] | provenance | | +| athena.js:80:25:80:42 | userQueryStatement | athena.js:77:19:82:5 | {\\n ... ,\\n } [QueryStatement] | provenance | | +| athena.js:83:11:83:17 | command | athena.js:84:23:84:29 | command | provenance | | +| athena.js:83:21:83:61 | new Cre ... (input) | athena.js:83:11:83:17 | command | provenance | | +| athena.js:83:56:83:60 | input [QueryStatement] | athena.js:83:21:83:61 | new Cre ... (input) | provenance | | +| clients3.js:10:9:10:22 | maliciousInput | clients3.js:16:55:16:68 | maliciousInput | provenance | | +| clients3.js:10:26:10:33 | req.body | clients3.js:10:9:10:22 | maliciousInput | provenance | | +| clients3.js:12:11:12:16 | params [Expression] | clients3.js:18:54:18:59 | params [Expression] | provenance | | +| clients3.js:12:20:17:5 | {\\n ... ,\\n } [Expression] | clients3.js:12:11:12:16 | params [Expression] | provenance | | +| clients3.js:16:21:16:68 | "SELECT ... usInput | clients3.js:12:20:17:5 | {\\n ... ,\\n } [Expression] | provenance | | +| clients3.js:16:55:16:68 | maliciousInput | clients3.js:16:21:16:68 | "SELECT ... usInput | provenance | | +| clients3.js:18:54:18:59 | params [Expression] | clients3.js:18:23:18:60 | new Sel ... params) | provenance | | +| clients3.js:23:9:23:22 | maliciousInput | clients3.js:29:55:29:68 | maliciousInput | provenance | | +| clients3.js:23:9:23:22 | maliciousInput | clients3.js:38:55:38:68 | maliciousInput | provenance | | +| clients3.js:23:26:23:33 | req.body | clients3.js:23:9:23:22 | maliciousInput | provenance | | +| clients3.js:29:55:29:68 | maliciousInput | clients3.js:29:21:29:68 | "SELECT ... usInput | provenance | | +| clients3.js:38:55:38:68 | maliciousInput | clients3.js:38:21:38:68 | "SELECT ... usInput | provenance | | +| dynamodb.js:9:9:9:22 | maliciousInput | dynamodb.js:11:64:11:77 | maliciousInput | provenance | | +| dynamodb.js:9:9:9:22 | maliciousInput | dynamodb.js:17:80:17:93 | maliciousInput | provenance | | +| dynamodb.js:9:26:9:33 | req.body | dynamodb.js:9:9:9:22 | maliciousInput | provenance | | +| dynamodb.js:11:11:11:19 | statement | dynamodb.js:13:20:13:28 | statement | provenance | | +| dynamodb.js:11:64:11:77 | maliciousInput | dynamodb.js:11:11:11:19 | statement | provenance | | +| dynamodb.js:12:11:12:17 | command | dynamodb.js:15:23:15:29 | command | provenance | | +| dynamodb.js:12:11:12:17 | command | dynamodb.js:47:24:47:30 | command | provenance | | +| dynamodb.js:12:21:14:6 | new Exe ... \\n }) | dynamodb.js:12:11:12:17 | command | provenance | | +| dynamodb.js:12:49:14:5 | {\\n ... t\\n } [Statement] | dynamodb.js:12:21:14:6 | new Exe ... \\n }) | provenance | | +| dynamodb.js:13:20:13:28 | statement | dynamodb.js:12:49:14:5 | {\\n ... t\\n } [Statement] | provenance | | +| dynamodb.js:17:11:17:25 | updateStatement | dynamodb.js:19:20:19:34 | updateStatement | provenance | | +| dynamodb.js:17:80:17:93 | maliciousInput | dynamodb.js:17:11:17:25 | updateStatement | provenance | | +| dynamodb.js:18:11:18:23 | updateCommand | dynamodb.js:21:23:21:35 | updateCommand | provenance | | +| dynamodb.js:18:27:20:6 | new Exe ... \\n }) | dynamodb.js:18:11:18:23 | updateCommand | provenance | | +| dynamodb.js:18:55:20:5 | {\\n ... t\\n } [Statement] | dynamodb.js:18:27:20:6 | new Exe ... \\n }) | provenance | | +| dynamodb.js:19:20:19:34 | updateStatement | dynamodb.js:18:55:20:5 | {\\n ... t\\n } [Statement] | provenance | | +| dynamodb.js:56:9:56:22 | maliciousInput | dynamodb.js:58:61:58:74 | maliciousInput | provenance | | +| dynamodb.js:56:9:56:22 | maliciousInput | dynamodb.js:64:69:64:82 | maliciousInput | provenance | | +| dynamodb.js:56:9:56:22 | maliciousInput | dynamodb.js:67:69:67:82 | maliciousInput | provenance | | +| dynamodb.js:56:26:56:33 | req.body | dynamodb.js:56:9:56:22 | maliciousInput | provenance | | +| dynamodb.js:58:61:58:74 | maliciousInput | dynamodb.js:58:20:58:77 | `SELECT ... nput}'` | provenance | | +| dynamodb.js:64:69:64:82 | maliciousInput | dynamodb.js:64:28:64:85 | `SELECT ... nput}'` | provenance | | +| dynamodb.js:67:69:67:82 | maliciousInput | dynamodb.js:67:28:67:85 | `SELECT ... nput}'` | provenance | | | graphql.js:8:11:8:12 | id | graphql.js:11:46:11:47 | id | provenance | | | graphql.js:8:16:8:28 | req.params.id | graphql.js:8:11:8:12 | id | provenance | | | graphql.js:11:46:11:47 | id | graphql.js:9:34:19:5 | `\\n ... }\\n ` | provenance | | @@ -490,6 +576,23 @@ edges | pg-promise.js:22:11:22:15 | query | pg-promise.js:60:20:60:24 | query | provenance | | | pg-promise.js:22:11:22:15 | query | pg-promise.js:63:23:63:27 | query | provenance | | | pg-promise.js:22:11:22:15 | query | pg-promise.js:64:16:64:20 | query | provenance | | +| rds-client.js:8:11:8:19 | userQuery | rds-client.js:17:14:17:22 | userQuery | provenance | | +| rds-client.js:8:11:8:19 | userQuery | rds-client.js:33:24:33:32 | userQuery | provenance | | +| rds-client.js:8:23:8:30 | req.body | rds-client.js:8:11:8:19 | userQuery | provenance | | +| rds-client.js:13:11:13:17 | params1 [sql] | rds-client.js:19:51:19:57 | params1 [sql] | provenance | | +| rds-client.js:13:21:18:5 | {\\n ... y\\n } [sql] | rds-client.js:13:11:13:17 | params1 [sql] | provenance | | +| rds-client.js:17:14:17:22 | userQuery | rds-client.js:13:21:18:5 | {\\n ... y\\n } [sql] | provenance | | +| rds-client.js:19:51:19:57 | params1 [sql] | rds-client.js:19:23:19:58 | new Exe ... arams1) | provenance | | +| rds-client.js:29:11:29:16 | params [sqlStatements] | rds-client.js:36:45:36:50 | params [sqlStatements] | provenance | | +| rds-client.js:29:20:34:5 | {\\n ... y\\n } [sqlStatements] | rds-client.js:29:11:29:16 | params [sqlStatements] | provenance | | +| rds-client.js:33:24:33:32 | userQuery | rds-client.js:29:20:34:5 | {\\n ... y\\n } [sqlStatements] | provenance | | +| rds-client.js:36:45:36:50 | params [sqlStatements] | rds-client.js:36:23:36:51 | new Exe ... params) | provenance | | +| rds-client.js:44:11:44:19 | userQuery | rds-client.js:53:14:53:22 | userQuery | provenance | | +| rds-client.js:44:23:44:30 | req.body | rds-client.js:44:11:44:19 | userQuery | provenance | | +| rds-client.js:45:11:45:21 | userQueries | rds-client.js:61:24:61:34 | userQueries | provenance | | +| rds-client.js:45:25:45:32 | req.body | rds-client.js:45:11:45:21 | userQueries | provenance | | +| rds-client.js:61:24:61:34 | userQueries | rds-client.js:61:40:61:42 | sql | provenance | | +| rds-client.js:61:40:61:42 | sql | rds-client.js:61:50:61:52 | sql | provenance | | | redis.js:10:16:10:23 | req.body | redis.js:10:16:10:27 | req.body.key | provenance | Config | | redis.js:12:9:12:11 | key | redis.js:13:16:13:18 | key | provenance | | | redis.js:12:9:12:11 | key | redis.js:18:16:18:18 | key | provenance | | @@ -518,6 +621,79 @@ edges | tst4.js:8:46:8:60 | $routeParams.id | tst4.js:8:10:8:66 | 'SELECT ... d + '"' | provenance | | | tst.js:10:46:10:58 | req.params.id | tst.js:10:10:10:64 | 'SELECT ... d + '"' | provenance | | nodes +| athena.js:9:11:9:19 | userQuery | semmle.label | userQuery | +| athena.js:9:23:9:30 | req.body | semmle.label | req.body | +| athena.js:13:11:13:17 | params1 [QueryString] | semmle.label | params1 [QueryString] | +| athena.js:13:21:17:5 | { \\n ... }\\n } [QueryString] | semmle.label | { \\n ... }\\n } [QueryString] | +| athena.js:14:22:14:38 | "SQL" + userQuery | semmle.label | "SQL" + userQuery | +| athena.js:14:30:14:38 | userQuery | semmle.label | userQuery | +| athena.js:18:11:18:11 | p | semmle.label | p | +| athena.js:18:15:18:53 | new Sta ... arams1) | semmle.label | new Sta ... arams1) | +| athena.js:18:46:18:52 | params1 [QueryString] | semmle.label | params1 [QueryString] | +| athena.js:19:23:19:23 | p | semmle.label | p | +| athena.js:21:11:21:17 | params2 [QueryString] | semmle.label | params2 [QueryString] | +| athena.js:21:21:26:5 | {\\n ... "\\n } [QueryString] | semmle.label | {\\n ... "\\n } [QueryString] | +| athena.js:24:22:24:30 | userQuery | semmle.label | userQuery | +| athena.js:27:23:27:58 | new Cre ... arams2) | semmle.label | new Cre ... arams2) | +| athena.js:27:51:27:57 | params2 [QueryString] | semmle.label | params2 [QueryString] | +| athena.js:29:11:29:17 | params3 [QueryString] | semmle.label | params3 [QueryString] | +| athena.js:29:21:35:5 | {\\n ... "\\n } [QueryString] | semmle.label | {\\n ... "\\n } [QueryString] | +| athena.js:33:22:33:30 | userQuery | semmle.label | userQuery | +| athena.js:36:23:36:58 | new Upd ... arams3) | semmle.label | new Upd ... arams3) | +| athena.js:36:51:36:57 | params3 [QueryString] | semmle.label | params3 [QueryString] | +| athena.js:43:11:43:19 | userQuery | semmle.label | userQuery | +| athena.js:43:23:43:30 | req.body | semmle.label | req.body | +| athena.js:48:22:48:30 | userQuery | semmle.label | userQuery | +| athena.js:57:22:57:30 | userQuery | semmle.label | userQuery | +| athena.js:66:22:66:30 | userQuery | semmle.label | userQuery | +| athena.js:75:11:75:28 | userQueryStatement | semmle.label | userQueryStatement | +| athena.js:75:32:75:39 | req.body | semmle.label | req.body | +| athena.js:77:11:77:15 | input [QueryStatement] | semmle.label | input [QueryStatement] | +| athena.js:77:19:82:5 | {\\n ... ,\\n } [QueryStatement] | semmle.label | {\\n ... ,\\n } [QueryStatement] | +| athena.js:80:25:80:42 | userQueryStatement | semmle.label | userQueryStatement | +| athena.js:83:11:83:17 | command | semmle.label | command | +| athena.js:83:21:83:61 | new Cre ... (input) | semmle.label | new Cre ... (input) | +| athena.js:83:56:83:60 | input [QueryStatement] | semmle.label | input [QueryStatement] | +| athena.js:84:23:84:29 | command | semmle.label | command | +| clients3.js:10:9:10:22 | maliciousInput | semmle.label | maliciousInput | +| clients3.js:10:26:10:33 | req.body | semmle.label | req.body | +| clients3.js:12:11:12:16 | params [Expression] | semmle.label | params [Expression] | +| clients3.js:12:20:17:5 | {\\n ... ,\\n } [Expression] | semmle.label | {\\n ... ,\\n } [Expression] | +| clients3.js:16:21:16:68 | "SELECT ... usInput | semmle.label | "SELECT ... usInput | +| clients3.js:16:55:16:68 | maliciousInput | semmle.label | maliciousInput | +| clients3.js:18:23:18:60 | new Sel ... params) | semmle.label | new Sel ... params) | +| clients3.js:18:54:18:59 | params [Expression] | semmle.label | params [Expression] | +| clients3.js:23:9:23:22 | maliciousInput | semmle.label | maliciousInput | +| clients3.js:23:26:23:33 | req.body | semmle.label | req.body | +| clients3.js:29:21:29:68 | "SELECT ... usInput | semmle.label | "SELECT ... usInput | +| clients3.js:29:55:29:68 | maliciousInput | semmle.label | maliciousInput | +| clients3.js:38:21:38:68 | "SELECT ... usInput | semmle.label | "SELECT ... usInput | +| clients3.js:38:55:38:68 | maliciousInput | semmle.label | maliciousInput | +| dynamodb.js:9:9:9:22 | maliciousInput | semmle.label | maliciousInput | +| dynamodb.js:9:26:9:33 | req.body | semmle.label | req.body | +| dynamodb.js:11:11:11:19 | statement | semmle.label | statement | +| dynamodb.js:11:64:11:77 | maliciousInput | semmle.label | maliciousInput | +| dynamodb.js:12:11:12:17 | command | semmle.label | command | +| dynamodb.js:12:21:14:6 | new Exe ... \\n }) | semmle.label | new Exe ... \\n }) | +| dynamodb.js:12:49:14:5 | {\\n ... t\\n } [Statement] | semmle.label | {\\n ... t\\n } [Statement] | +| dynamodb.js:13:20:13:28 | statement | semmle.label | statement | +| dynamodb.js:15:23:15:29 | command | semmle.label | command | +| dynamodb.js:17:11:17:25 | updateStatement | semmle.label | updateStatement | +| dynamodb.js:17:80:17:93 | maliciousInput | semmle.label | maliciousInput | +| dynamodb.js:18:11:18:23 | updateCommand | semmle.label | updateCommand | +| dynamodb.js:18:27:20:6 | new Exe ... \\n }) | semmle.label | new Exe ... \\n }) | +| dynamodb.js:18:55:20:5 | {\\n ... t\\n } [Statement] | semmle.label | {\\n ... t\\n } [Statement] | +| dynamodb.js:19:20:19:34 | updateStatement | semmle.label | updateStatement | +| dynamodb.js:21:23:21:35 | updateCommand | semmle.label | updateCommand | +| dynamodb.js:47:24:47:30 | command | semmle.label | command | +| dynamodb.js:56:9:56:22 | maliciousInput | semmle.label | maliciousInput | +| dynamodb.js:56:26:56:33 | req.body | semmle.label | req.body | +| dynamodb.js:58:20:58:77 | `SELECT ... nput}'` | semmle.label | `SELECT ... nput}'` | +| dynamodb.js:58:61:58:74 | maliciousInput | semmle.label | maliciousInput | +| dynamodb.js:64:28:64:85 | `SELECT ... nput}'` | semmle.label | `SELECT ... nput}'` | +| dynamodb.js:64:69:64:82 | maliciousInput | semmle.label | maliciousInput | +| dynamodb.js:67:28:67:85 | `SELECT ... nput}'` | semmle.label | `SELECT ... nput}'` | +| dynamodb.js:67:69:67:82 | maliciousInput | semmle.label | maliciousInput | | graphql.js:8:11:8:12 | id | semmle.label | id | | graphql.js:8:16:8:28 | req.params.id | semmle.label | req.params.id | | graphql.js:9:34:19:5 | `\\n ... }\\n ` | semmle.label | `\\n ... }\\n ` | @@ -803,6 +979,26 @@ nodes | pg-promise.js:60:20:60:24 | query | semmle.label | query | | pg-promise.js:63:23:63:27 | query | semmle.label | query | | pg-promise.js:64:16:64:20 | query | semmle.label | query | +| rds-client.js:8:11:8:19 | userQuery | semmle.label | userQuery | +| rds-client.js:8:23:8:30 | req.body | semmle.label | req.body | +| rds-client.js:13:11:13:17 | params1 [sql] | semmle.label | params1 [sql] | +| rds-client.js:13:21:18:5 | {\\n ... y\\n } [sql] | semmle.label | {\\n ... y\\n } [sql] | +| rds-client.js:17:14:17:22 | userQuery | semmle.label | userQuery | +| rds-client.js:19:23:19:58 | new Exe ... arams1) | semmle.label | new Exe ... arams1) | +| rds-client.js:19:51:19:57 | params1 [sql] | semmle.label | params1 [sql] | +| rds-client.js:29:11:29:16 | params [sqlStatements] | semmle.label | params [sqlStatements] | +| rds-client.js:29:20:34:5 | {\\n ... y\\n } [sqlStatements] | semmle.label | {\\n ... y\\n } [sqlStatements] | +| rds-client.js:33:24:33:32 | userQuery | semmle.label | userQuery | +| rds-client.js:36:23:36:51 | new Exe ... params) | semmle.label | new Exe ... params) | +| rds-client.js:36:45:36:50 | params [sqlStatements] | semmle.label | params [sqlStatements] | +| rds-client.js:44:11:44:19 | userQuery | semmle.label | userQuery | +| rds-client.js:44:23:44:30 | req.body | semmle.label | req.body | +| rds-client.js:45:11:45:21 | userQueries | semmle.label | userQueries | +| rds-client.js:45:25:45:32 | req.body | semmle.label | req.body | +| rds-client.js:53:14:53:22 | userQuery | semmle.label | userQuery | +| rds-client.js:61:24:61:34 | userQueries | semmle.label | userQueries | +| rds-client.js:61:40:61:42 | sql | semmle.label | sql | +| rds-client.js:61:50:61:52 | sql | semmle.label | sql | | redis.js:10:16:10:23 | req.body | semmle.label | req.body | | redis.js:10:16:10:27 | req.body.key | semmle.label | req.body.key | | redis.js:12:9:12:11 | key | semmle.label | key | diff --git a/javascript/ql/test/query-tests/Security/CWE-089/untyped/athena.js b/javascript/ql/test/query-tests/Security/CWE-089/untyped/athena.js new file mode 100644 index 000000000000..a671fdc53567 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-089/untyped/athena.js @@ -0,0 +1,85 @@ +const { AthenaClient, StartQueryExecutionCommand, CreateNamedQueryCommand, UpdateNamedQueryCommand, CreatePreparedStatementCommand } = require("@aws-sdk/client-athena"); +const AWS = require('aws-sdk'); +const express = require('express'); +const bodyParser = require('body-parser'); +const app = express(); +app.use(bodyParser.json()); + +app.post('/v3/athena/all', async (req, res) => { + const userQuery = req.body.query; // $ Source + + const client = new AthenaClient({ region: "us-east-1" }); + + const params1 = { + QueryString: "SQL" + userQuery, + QueryExecutionContext: { Database: "default" }, + ResultConfiguration: { OutputLocation: "s3://my-results/" } + }; + const p = new StartQueryExecutionCommand(params1); + await client.send(p); // $ Alert + + const params2 = { + Name: "user_query", + Database: "default", + QueryString: userQuery, + Description: "User-provided query" + }; + await client.send(new CreateNamedQueryCommand(params2)); // $ Alert -- This only stores query to database, not executed + + const params3 = { + NamedQueryId: "namedQueryId", + Name: "user_query_updated", + Database: "default", + QueryString: userQuery, + Description: "Updated user-provided query" + }; + await client.send(new UpdateNamedQueryCommand(params3)); // $ Alert -- This only stores query to database, not executed + + res.end(); +}); + + +app.post('/v2/athena/all', async (req, res) => { + const userQuery = req.body.query; // $ Source + + const athena = new AWS.Athena({ region: "us-east-1" }); + + const params1 = { + QueryString: userQuery, // $ Alert + QueryExecutionContext: { Database: "default" }, + ResultConfiguration: { OutputLocation: "s3://my-results/" } + }; + await athena.startQueryExecution(params1).promise(); + + const params2 = { + Name: "user_query", + Database: "default", + QueryString: userQuery, // $ Alert -- This only stores query to database, not executed + Description: "User-provided query" + }; + await athena.createNamedQuery(params2).promise(); + + const params3 = { + NamedQueryId: "namedQueryId", + Name: "user_query_updated", + Database: "default", + QueryString: userQuery, // $ Alert -- This only stores query to database, not executed + Description: "Updated user-provided query" + }; + await athena.updateNamedQuery(params3).promise(); + + res.end(); +}); + +app.post('/dynamodb-v3', async (req, res) => { + const userQueryStatement = req.body.query; // $ Source + const client = new AthenaClient({ region: "us-east-1" }); + const input = { + StatementName: "STRING_VALUE", + WorkGroup: "STRING_VALUE", + QueryStatement: userQueryStatement, + Description: "STRING_VALUE", + }; + const command = new CreatePreparedStatementCommand(input); + await client.send(command); // $ Alert +}); diff --git a/javascript/ql/test/query-tests/Security/CWE-089/untyped/clients3.js b/javascript/ql/test/query-tests/Security/CWE-089/untyped/clients3.js new file mode 100644 index 000000000000..9c6bce426575 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-089/untyped/clients3.js @@ -0,0 +1,44 @@ +const { S3Client, SelectObjectContentCommand } = require("@aws-sdk/client-s3"); +const AWS = require('aws-sdk'); +const express = require('express'); +const bodyParser = require('body-parser'); + +const app = express(); +app.use(bodyParser.json()); + +app.post('/client/v3/execute', async (req, res) => { + let maliciousInput = req.body.filter; // $ Source + const client = new S3Client({ region: "us-east-1" }); + const params = { + Bucket: "my-bucket", + Key: "data.csv", + ExpressionType: "SQL", + Expression: "SELECT * FROM S3Object WHERE " + maliciousInput, + }; + await client.send(new SelectObjectContentCommand(params)); // $ Alert + res.end(); +}); + +app.post('/client/v2/execute', async (req, res) => { + let maliciousInput = req.body.filter; // $ Source + const s3 = new AWS.S3({ region: "us-east-1" }); + const params = { + Bucket: "my-bucket", + Key: "data.csv", + ExpressionType: "SQL", + Expression: "SELECT * FROM S3Object WHERE " + maliciousInput, // $ Alert + }; + await s3.selectObjectContent(params).promise(); + res.end(); + + const params1 = { + Bucket: "my-bucket", + Key: "data.csv", + ExpressionType: "SQL", + Expression: "SELECT * FROM S3Object WHERE " + maliciousInput, // $ Alert + }; + + s3.selectObjectContent(params1, (err, data) => { + res.end(); + }); +}); diff --git a/javascript/ql/test/query-tests/Security/CWE-089/untyped/dynamodb.js b/javascript/ql/test/query-tests/Security/CWE-089/untyped/dynamodb.js new file mode 100644 index 000000000000..ef9e3c3005ce --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-089/untyped/dynamodb.js @@ -0,0 +1,73 @@ +import {DynamoDBClient, ExecuteStatementCommand, BatchExecuteStatementCommand, DynamoDB} from "@aws-sdk/client-dynamodb"; +const express = require('express'); + +const app = express(); +const region = 'us-east-1'; + +app.post('/partiql/v3/execute', async (req, res) => { + const client = new DynamoDBClient({}); + let maliciousInput = req.body.data; // $ Source + + const statement = `SELECT * FROM Users WHERE username = '${maliciousInput}'`; + const command = new ExecuteStatementCommand({ + Statement: statement + }); + await client.send(command); // $ Alert + + const updateStatement = "UPDATE Users SET status = 'active' WHERE id = " + maliciousInput; + const updateCommand = new ExecuteStatementCommand({ + Statement: updateStatement + }); + await client.send(updateCommand); // $ Alert + + + const batchInput = { + Statements: [{ + Statement: `SELECT * FROM Users WHERE username = '${maliciousInput}'` + }, + { + Statement: "UPDATE Users SET role = 'user' WHERE username = bob" + } + ] + }; + + const batchCommand = new BatchExecuteStatementCommand(batchInput); + await client.send(batchCommand); // $ MISSING: Alert + + const batchInput2 = { + Statements: maliciousInput.map(input => ({ + Statement: `SELECT * FROM SensitiveData WHERE username = '${input}'` + })) + }; + + const batchCommand2 = new BatchExecuteStatementCommand(batchInput2); + await client.send(batchCommand2); // $ MISSING: Alert + + const client2 = new DynamoDB({}); + await client2.send(command); // $ Alert + await client2.send(batchCommand); // $ MISSING: Alert +}); + +app.post('/partiql/v2/execute', async (req, res) => { + const AWS = require('aws-sdk'); + const dynamodb = new AWS.DynamoDB({ + region: 'us-east-1' + }); + let maliciousInput = req.body.data; // $ Source + const params = { + Statement: `SELECT * FROM Users WHERE username = '${maliciousInput}'` // $ Alert + }; + + dynamodb.executeStatement(params, function(err, data) {}); + const params2 = { + Statements: [{ + Statement: `SELECT * FROM Users WHERE username = '${maliciousInput}'` // $ Alert + }, + { + Statement: `SELECT * FROM Users WHERE username = '${maliciousInput}'` // $ Alert + } + ] + }; + + dynamodb.batchExecuteStatement(params2, function(err, data) {}); +}); diff --git a/javascript/ql/test/query-tests/Security/CWE-089/untyped/rds-client.js b/javascript/ql/test/query-tests/Security/CWE-089/untyped/rds-client.js new file mode 100644 index 000000000000..35d41e145f98 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-089/untyped/rds-client.js @@ -0,0 +1,68 @@ +const { RDSDataClient, BatchExecuteStatementCommand, ExecuteStatementCommand, ExecuteSqlCommand } = require("@aws-sdk/client-rds-data"); +const express = require('express'); +const bodyParser = require('body-parser'); +const app = express(); +app.use(bodyParser.json()); + +app.post('/v3/rds/all', async (req, res) => { + const userQuery = req.body.query; // $ Source + const userQueries = req.body.queries; // $ MISSING: Source + + const client = new RDSDataClient({ region: "us-east-1" }); + + const params1 = { + resourceArn: "arn:aws:rds:us-east-1:123456789012:cluster:my-aurora-cluster", + secretArn: "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret", + database: "userDatabase", + sql: userQuery + }; + await client.send(new ExecuteStatementCommand(params1)); // $ Alert + + const params2 = { + resourceArn: "arn:aws:rds:us-east-1:123456789012:cluster:my-aurora-cluster", + secretArn: "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret", + database: "userDatabase", + parameterSets: userQueries.map(sql => ({ sql })) + }; + await client.send(new BatchExecuteStatementCommand(params2)); // $ MISSING: Alert + + const params = { + resourceArn: "...", + secretArn: "...", + database: "userDatabase", + sqlStatements: userQuery + }; + + await client.send(new ExecuteSqlCommand(params)); // $ Alert + + res.end(); +}); + +const AWS = require('aws-sdk'); + +app.post('/v2/rds/all', async (req, res) => { + const userQuery = req.body.query; // $ Source + const userQueries = req.body.queries; // $ Source + + const rdsData = new AWS.RDSDataService({ region: "us-east-1" }); + + const params1 = { + resourceArn: "arn:aws:rds:us-east-1:123456789012:cluster:my-aurora-cluster", + secretArn: "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret", + database: "userDatabase", + sql: userQuery // $ Alert + }; + await rdsData.executeStatement(params1).promise(); + + const params2 = { + resourceArn: "arn:aws:rds:us-east-1:123456789012:cluster:my-aurora-cluster", + secretArn: "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret", + database: "userDatabase", + parameterSets: userQueries.map(sql => ({ sql })) // $ Alert + }; + await rdsData.batchExecuteStatement(params2).promise(); + + res.end(); +}); + +app.listen(3000); 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 8ddaba30fc8c..fb3e4ad6e6a1 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 @@ -61,6 +61,9 @@ | fastify.js:107:23:107:31 | userInput | fastify.js:106:21:106:38 | request.query.code | fastify.js:107:23:107:31 | userInput | This code execution depends on a $@. | fastify.js:106:21:106:38 | request.query.code | user-provided value | | fastify.js:108:28:108:50 | reply.l ... tedCode | fastify.js:94:29:94:41 | request.query | fastify.js:108:28:108:50 | reply.l ... tedCode | This code execution depends on a $@. | fastify.js:94:29:94:41 | request.query | user-provided value | | 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 | @@ -154,6 +157,25 @@ edges | fastify.js:106:9:106:17 | userInput | fastify.js:107:23:107:31 | userInput | provenance | | | fastify.js:106:21:106:33 | request.query | fastify.js:106:9:106:17 | userInput | provenance | | | fastify.js:106:21:106:38 | request.query.code | fastify.js:106:9:106:17 | userInput | provenance | | +| graph-ql.js:18:10:18:17 | { expr } | graph-ql.js:18:12:18:15 | expr | provenance | | +| graph-ql.js:18:12:18:15 | expr | graph-ql.js:20:19:20:22 | expr | provenance | | +| graph-ql.js:28:9:28:28 | { query, variables } | graph-ql.js:28:11:28:15 | query | provenance | | +| graph-ql.js:28:9:28:28 | { query, variables } | graph-ql.js:28:18:28:26 | variables | provenance | | +| graph-ql.js:28:11:28:15 | query | graph-ql.js:31:13:31:17 | query | provenance | | +| graph-ql.js:28:18:28:26 | variables | graph-ql.js:33:21:33:29 | variables | provenance | | +| graph-ql.js:28:18:28:26 | variables | graph-ql.js:54:21:54:29 | variables | provenance | | +| graph-ql.js:28:32:28:39 | req.body | graph-ql.js:28:9:28:28 | { query, variables } | provenance | | +| graph-ql.js:31:13:31:17 | query | graph-ql.js:18:10:18:17 | { expr } | provenance | | +| graph-ql.js:33:21:33:29 | variables | graph-ql.js:18:10:18:17 | { expr } | provenance | | +| graph-ql.js:38:13:38:27 | { name, title } | graph-ql.js:38:15:38:18 | name | provenance | | +| graph-ql.js:38:13:38:27 | { name, title } | graph-ql.js:38:21:38:25 | title | provenance | | +| graph-ql.js:38:15:38:18 | name | graph-ql.js:39:19:39:22 | name | provenance | | +| graph-ql.js:38:21:38:25 | title | graph-ql.js:39:26:39:30 | title | provenance | | +| 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 | | @@ -288,6 +310,25 @@ nodes | fastify.js:106:21:106:38 | request.query.code | semmle.label | request.query.code | | fastify.js:107:23:107:31 | userInput | semmle.label | userInput | | fastify.js:108:28:108:50 | reply.l ... tedCode | semmle.label | reply.l ... tedCode | +| graph-ql.js:18:10:18:17 | { expr } | semmle.label | { expr } | +| graph-ql.js:18:12:18:15 | expr | semmle.label | expr | +| graph-ql.js:20:19:20:22 | expr | semmle.label | expr | +| graph-ql.js:28:9:28:28 | { query, variables } | semmle.label | { query, variables } | +| graph-ql.js:28:11:28:15 | query | semmle.label | query | +| graph-ql.js:28:18:28:26 | variables | semmle.label | variables | +| graph-ql.js:28:32:28:39 | req.body | semmle.label | req.body | +| graph-ql.js:31:13:31:17 | query | semmle.label | query | +| graph-ql.js:33:21:33:29 | variables | semmle.label | variables | +| graph-ql.js:38:13:38:27 | { name, title } | semmle.label | { name, title } | +| graph-ql.js:38:15:38:18 | name | semmle.label | name | +| graph-ql.js:38:21:38:25 | title | semmle.label | title | +| graph-ql.js:39:19:39:22 | name | semmle.label | name | +| 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 db39855c5e5c..837ae37eaee2 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 @@ -55,6 +55,25 @@ edges | fastify.js:106:9:106:17 | userInput | fastify.js:107:23:107:31 | userInput | provenance | | | fastify.js:106:21:106:33 | request.query | fastify.js:106:9:106:17 | userInput | provenance | | | fastify.js:106:21:106:38 | request.query.code | fastify.js:106:9:106:17 | userInput | provenance | | +| graph-ql.js:18:10:18:17 | { expr } | graph-ql.js:18:12:18:15 | expr | provenance | | +| graph-ql.js:18:12:18:15 | expr | graph-ql.js:20:19:20:22 | expr | provenance | | +| graph-ql.js:28:9:28:28 | { query, variables } | graph-ql.js:28:11:28:15 | query | provenance | | +| graph-ql.js:28:9:28:28 | { query, variables } | graph-ql.js:28:18:28:26 | variables | provenance | | +| graph-ql.js:28:11:28:15 | query | graph-ql.js:31:13:31:17 | query | provenance | | +| graph-ql.js:28:18:28:26 | variables | graph-ql.js:33:21:33:29 | variables | provenance | | +| graph-ql.js:28:18:28:26 | variables | graph-ql.js:54:21:54:29 | variables | provenance | | +| graph-ql.js:28:32:28:39 | req.body | graph-ql.js:28:9:28:28 | { query, variables } | provenance | | +| graph-ql.js:31:13:31:17 | query | graph-ql.js:18:10:18:17 | { expr } | provenance | | +| graph-ql.js:33:21:33:29 | variables | graph-ql.js:18:10:18:17 | { expr } | provenance | | +| graph-ql.js:38:13:38:27 | { name, title } | graph-ql.js:38:15:38:18 | name | provenance | | +| graph-ql.js:38:13:38:27 | { name, title } | graph-ql.js:38:21:38:25 | title | provenance | | +| graph-ql.js:38:15:38:18 | name | graph-ql.js:39:19:39:22 | name | provenance | | +| graph-ql.js:38:21:38:25 | title | graph-ql.js:39:26:39:30 | title | provenance | | +| 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 | | @@ -191,6 +210,25 @@ nodes | fastify.js:106:21:106:38 | request.query.code | semmle.label | request.query.code | | fastify.js:107:23:107:31 | userInput | semmle.label | userInput | | fastify.js:108:28:108:50 | reply.l ... tedCode | semmle.label | reply.l ... tedCode | +| graph-ql.js:18:10:18:17 | { expr } | semmle.label | { expr } | +| graph-ql.js:18:12:18:15 | expr | semmle.label | expr | +| graph-ql.js:20:19:20:22 | expr | semmle.label | expr | +| graph-ql.js:28:9:28:28 | { query, variables } | semmle.label | { query, variables } | +| graph-ql.js:28:11:28:15 | query | semmle.label | query | +| graph-ql.js:28:18:28:26 | variables | semmle.label | variables | +| graph-ql.js:28:32:28:39 | req.body | semmle.label | req.body | +| graph-ql.js:31:13:31:17 | query | semmle.label | query | +| graph-ql.js:33:21:33:29 | variables | semmle.label | variables | +| graph-ql.js:38:13:38:27 | { name, title } | semmle.label | { name, title } | +| graph-ql.js:38:15:38:18 | name | semmle.label | name | +| graph-ql.js:38:21:38:25 | title | semmle.label | title | +| graph-ql.js:39:19:39:22 | name | semmle.label | name | +| 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 new file mode 100644 index 000000000000..167292330d29 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/graph-ql.js @@ -0,0 +1,82 @@ +const express = require('express'); +const { graphql, buildSchema, GraphQLObjectType, GraphQLString } = require('graphql'); + +const app = express(); +app.use(express.json()); + +const schema = buildSchema(` + type Query { + greet(name: String!): String + calc(expr: String!): String + } +`); + +const root = { + greet: ({ name }) => { + return `Hello, ${name}!`; + }, + calc: ({ expr }) => { + try { + return eval(expr).toString(); // $ Alert[js/code-injection] + } catch (e) { + return `Error: ${e.message}`; + } + } +}; + +app.post('/graphql', async (req, res) => { + const { query, variables } = req.body; // $ Source[js/code-injection] + const result = await graphql({ + schema, + source: query, + rootValue: root, + variableValues: variables + }); + res.json(result); + + const root1 = { + greet: ({ name, title }) => { + return eval(name + title).toString(); // $ Alert[js/code-injection] + } + }; + graphql({ + schema: buildSchema(` + type Query { + greet(name: String!, title: String): String + } + `), + source: ` + query GreetUser($name: String!, $title: String) { + greet(name: $name, title: $title) + } + `, + rootValue: root1, + variableValues: variables + }); + + const MutationType = new GraphQLObjectType({ + name: 'Mutation', + fields: { + runEval: { + type: GraphQLString, + args: { + value: { type: GraphQLString } + }, + resolve: (_, { value }, context) => { // $ Source[js/code-injection] + return eval(value); // $ Alert[js/code-injection] + } + } + } + }); + + const schema = new GraphQLSchema({ + query: QueryType, + mutation: MutationType + }); + + await graphql({ + schema, + source: query, + variableValues: variables + }); +}); diff --git a/misc/bazel/3rdparty/py_deps/BUILD.bazel b/misc/bazel/3rdparty/py_deps/BUILD.bazel index f756b4a519f7..86bfde266419 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.bazel @@ -80,26 +80,26 @@ alias( ) alias( - name = "tree-sitter-0.20.4", - actual = "@vendor_py__tree-sitter-0.20.4//:tree_sitter", + name = "tree-sitter-0.24.7", + actual = "@vendor_py__tree-sitter-0.24.7//:tree_sitter", tags = ["manual"], ) alias( name = "tree-sitter", - actual = "@vendor_py__tree-sitter-0.20.4//:tree_sitter", + actual = "@vendor_py__tree-sitter-0.24.7//:tree_sitter", tags = ["manual"], ) alias( - name = "tree-sitter-graph-0.7.0", - actual = "@vendor_py__tree-sitter-graph-0.7.0//:tree_sitter_graph", + name = "tree-sitter-graph-0.12.0", + actual = "@vendor_py__tree-sitter-graph-0.12.0//:tree_sitter_graph", tags = ["manual"], ) alias( name = "tree-sitter-graph", - actual = "@vendor_py__tree-sitter-graph-0.7.0//:tree_sitter_graph", + actual = "@vendor_py__tree-sitter-graph-0.12.0//:tree_sitter_graph", tags = ["manual"], ) diff --git a/misc/bazel/3rdparty/py_deps/BUILD.hashbrown-0.9.1.bazel b/misc/bazel/3rdparty/py_deps/BUILD.hashbrown-0.9.1.bazel deleted file mode 100644 index 15fc24acbf1d..000000000000 --- a/misc/bazel/3rdparty/py_deps/BUILD.hashbrown-0.9.1.bazel +++ /dev/null @@ -1,99 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_py_deps -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "hashbrown", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "ahash", - "inline-more", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=hashbrown", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.9.1", - deps = [ - "@vendor_py__ahash-0.4.8//:ahash", - ], -) diff --git a/misc/bazel/3rdparty/py_deps/BUILD.ahash-0.4.8.bazel b/misc/bazel/3rdparty/py_deps/BUILD.streaming-iterator-0.1.9.bazel similarity index 96% rename from misc/bazel/3rdparty/py_deps/BUILD.ahash-0.4.8.bazel rename to misc/bazel/3rdparty/py_deps/BUILD.streaming-iterator-0.1.9.bazel index 057a5225197a..2e3575479e84 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.ahash-0.4.8.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.streaming-iterator-0.1.9.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "ahash", + name = "streaming_iterator", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -35,7 +35,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2018", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -44,7 +44,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=ahash", + "crate-name=streaming-iterator", "manual", "noclippy", "norustfmt", @@ -88,5 +88,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.8", + version = "0.1.9", ) diff --git a/misc/bazel/3rdparty/py_deps/BUILD.string-interner-0.12.2.bazel b/misc/bazel/3rdparty/py_deps/BUILD.string-interner-0.12.2.bazel deleted file mode 100644 index 5e177a306e97..000000000000 --- a/misc/bazel/3rdparty/py_deps/BUILD.string-interner-0.12.2.bazel +++ /dev/null @@ -1,101 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_py_deps -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "string_interner", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "backends", - "inline-more", - "std", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=string-interner", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.12.2", - deps = [ - "@vendor_py__cfg-if-1.0.0//:cfg_if", - "@vendor_py__hashbrown-0.9.1//:hashbrown", - ], -) diff --git a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-0.20.4.bazel b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-0.24.7.bazel similarity index 90% rename from misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-0.20.4.bazel rename to misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-0.24.7.bazel index fea7b8b185e7..312b70e23379 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-0.20.4.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-0.24.7.bazel @@ -38,8 +38,12 @@ rust_library( "WORKSPACE.bazel", ], ), + crate_features = [ + "default", + "std", + ], crate_root = "binding_rust/lib.rs", - edition = "2018", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -92,10 +96,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.20.4", + version = "0.24.7", deps = [ "@vendor_py__regex-1.11.1//:regex", - "@vendor_py__tree-sitter-0.20.4//:build_script_build", + "@vendor_py__regex-syntax-0.8.5//:regex_syntax", + "@vendor_py__streaming-iterator-0.1.9//:streaming_iterator", + "@vendor_py__tree-sitter-0.24.7//:build_script_build", + "@vendor_py__tree-sitter-language-0.1.5//:tree_sitter_language", ], ) @@ -118,6 +125,10 @@ cargo_build_script( "WORKSPACE.bazel", ], ), + crate_features = [ + "default", + "std", + ], crate_name = "build_script_build", crate_root = "binding_rust/build.rs", data = glob( @@ -132,7 +143,8 @@ cargo_build_script( "WORKSPACE.bazel", ], ), - edition = "2018", + edition = "2021", + links = "tree-sitter", pkg_name = "tree-sitter", rustc_env_files = [ ":cargo_toml_env_vars", @@ -147,7 +159,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "0.20.4", + version = "0.24.7", visibility = ["//visibility:private"], deps = [ "@vendor_py__cc-1.2.14//:cc", diff --git a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-graph-0.7.0.bazel b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-graph-0.12.0.bazel similarity index 96% rename from misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-graph-0.7.0.bazel rename to misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-graph-0.12.0.bazel index 4db3e576764f..ad8dd864b008 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-graph-0.7.0.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-graph-0.12.0.bazel @@ -88,15 +88,15 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.7.0", + version = "0.12.0", deps = [ "@vendor_py__log-0.4.25//:log", "@vendor_py__regex-1.11.1//:regex", "@vendor_py__serde-1.0.217//:serde", "@vendor_py__serde_json-1.0.138//:serde_json", "@vendor_py__smallvec-1.14.0//:smallvec", - "@vendor_py__string-interner-0.12.2//:string_interner", + "@vendor_py__streaming-iterator-0.1.9//:streaming_iterator", "@vendor_py__thiserror-1.0.69//:thiserror", - "@vendor_py__tree-sitter-0.20.4//:tree_sitter", + "@vendor_py__tree-sitter-0.24.7//:tree_sitter", ], ) diff --git a/misc/bazel/3rdparty/py_deps/BUILD.cfg-if-1.0.0.bazel b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-language-0.1.5.bazel similarity index 95% rename from misc/bazel/3rdparty/py_deps/BUILD.cfg-if-1.0.0.bazel rename to misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-language-0.1.5.bazel index da9dbdfb977c..409bc07da9f9 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.cfg-if-1.0.0.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-language-0.1.5.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "cfg_if", + name = "tree_sitter_language", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -34,8 +34,8 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_root = "src/lib.rs", - edition = "2018", + crate_root = "language.rs", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -44,7 +44,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=cfg-if", + "crate-name=tree-sitter-language", "manual", "noclippy", "norustfmt", @@ -88,5 +88,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.0", + version = "0.1.5", ) diff --git a/misc/bazel/3rdparty/py_deps/defs.bzl b/misc/bazel/3rdparty/py_deps/defs.bzl index 9d78e46b2f88..ea04edbae037 100644 --- a/misc/bazel/3rdparty/py_deps/defs.bzl +++ b/misc/bazel/3rdparty/py_deps/defs.bzl @@ -298,13 +298,13 @@ _NORMAL_DEPENDENCIES = { "anyhow": Label("@vendor_py__anyhow-1.0.95//:anyhow"), "clap": Label("@vendor_py__clap-4.5.30//:clap"), "regex": Label("@vendor_py__regex-1.11.1//:regex"), - "tree-sitter": Label("@vendor_py__tree-sitter-0.20.4//:tree_sitter"), - "tree-sitter-graph": Label("@vendor_py__tree-sitter-graph-0.7.0//:tree_sitter_graph"), + "tree-sitter": Label("@vendor_py__tree-sitter-0.24.7//:tree_sitter"), + "tree-sitter-graph": Label("@vendor_py__tree-sitter-graph-0.12.0//:tree_sitter_graph"), }, }, "python/extractor/tsg-python/tsp": { _COMMON_CONDITION: { - "tree-sitter": Label("@vendor_py__tree-sitter-0.20.4//:tree_sitter"), + "tree-sitter": Label("@vendor_py__tree-sitter-0.24.7//:tree_sitter"), }, }, } @@ -452,16 +452,6 @@ def crate_repositories(): Returns: A list of repos visible to the module through the module extension. """ - maybe( - http_archive, - name = "vendor_py__ahash-0.4.8", - sha256 = "0453232ace82dee0dd0b4c87a59bd90f7b53b314f3e0f61fe2ee7c8a16482289", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ahash/0.4.8/download"], - strip_prefix = "ahash-0.4.8", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.ahash-0.4.8.bazel"), - ) - maybe( http_archive, name = "vendor_py__aho-corasick-1.1.3", @@ -542,16 +532,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.cc-1.2.14.bazel"), ) - maybe( - http_archive, - name = "vendor_py__cfg-if-1.0.0", - sha256 = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd", - type = "tar.gz", - urls = ["https://static.crates.io/crates/cfg-if/1.0.0/download"], - strip_prefix = "cfg-if-1.0.0", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.cfg-if-1.0.0.bazel"), - ) - maybe( http_archive, name = "vendor_py__clap-4.5.30", @@ -592,16 +572,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.colorchoice-1.0.3.bazel"), ) - maybe( - http_archive, - name = "vendor_py__hashbrown-0.9.1", - sha256 = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04", - type = "tar.gz", - urls = ["https://static.crates.io/crates/hashbrown/0.9.1/download"], - strip_prefix = "hashbrown-0.9.1", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.hashbrown-0.9.1.bazel"), - ) - maybe( http_archive, name = "vendor_py__is_terminal_polyfill-1.70.1", @@ -764,12 +734,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_py__string-interner-0.12.2", - sha256 = "383196d1876517ee6f9f0864d1fc1070331b803335d3c6daaa04bbcccd823c08", + name = "vendor_py__streaming-iterator-0.1.9", + sha256 = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520", type = "tar.gz", - urls = ["https://static.crates.io/crates/string-interner/0.12.2/download"], - strip_prefix = "string-interner-0.12.2", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.string-interner-0.12.2.bazel"), + urls = ["https://static.crates.io/crates/streaming-iterator/0.1.9/download"], + strip_prefix = "streaming-iterator-0.1.9", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.streaming-iterator-0.1.9.bazel"), ) maybe( @@ -814,22 +784,32 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_py__tree-sitter-0.20.4", - sha256 = "4e34327f8eac545e3f037382471b2b19367725a242bba7bc45edb9efb49fe39a", + name = "vendor_py__tree-sitter-0.24.7", + sha256 = "a5387dffa7ffc7d2dae12b50c6f7aab8ff79d6210147c6613561fc3d474c6f75", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tree-sitter/0.24.7/download"], + strip_prefix = "tree-sitter-0.24.7", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.tree-sitter-0.24.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__tree-sitter-graph-0.12.0", + sha256 = "63f86eb73c7d891c4b9b6fe4d4e63dd94c506e4788af7c2296afdcfbeea626cc", type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter/0.20.4/download"], - strip_prefix = "tree-sitter-0.20.4", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.tree-sitter-0.20.4.bazel"), + urls = ["https://static.crates.io/crates/tree-sitter-graph/0.12.0/download"], + strip_prefix = "tree-sitter-graph-0.12.0", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.tree-sitter-graph-0.12.0.bazel"), ) maybe( http_archive, - name = "vendor_py__tree-sitter-graph-0.7.0", - sha256 = "639d21e886f581d293de5f5081f09af003c54607ff3fa85efa159b243ba1f97a", + name = "vendor_py__tree-sitter-language-0.1.5", + sha256 = "c4013970217383f67b18aef68f6fb2e8d409bc5755227092d32efb0422ba24b8", type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter-graph/0.7.0/download"], - strip_prefix = "tree-sitter-graph-0.7.0", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.tree-sitter-graph-0.7.0.bazel"), + urls = ["https://static.crates.io/crates/tree-sitter-language/0.1.5/download"], + strip_prefix = "tree-sitter-language-0.1.5", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.tree-sitter-language-0.1.5.bazel"), ) maybe( @@ -957,6 +937,6 @@ def crate_repositories(): struct(repo = "vendor_py__cc-1.2.14", is_dev_dep = False), struct(repo = "vendor_py__clap-4.5.30", is_dev_dep = False), struct(repo = "vendor_py__regex-1.11.1", is_dev_dep = False), - struct(repo = "vendor_py__tree-sitter-0.20.4", is_dev_dep = False), - struct(repo = "vendor_py__tree-sitter-graph-0.7.0", is_dev_dep = False), + struct(repo = "vendor_py__tree-sitter-0.24.7", is_dev_dep = False), + struct(repo = "vendor_py__tree-sitter-graph-0.12.0", is_dev_dep = False), ] diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.adler2-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.adler2-2.0.1.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.adler2-2.0.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.adler2-2.0.1.bazel index 5ee0a08f4c77..61dd4b8015d0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.adler2-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.adler2-2.0.1.bazel @@ -88,5 +88,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.0", + version = "2.0.1", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android-tzdata-0.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android-tzdata-0.1.1.bazel deleted file mode 100644 index 8a7e7f71b1fe..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android-tzdata-0.1.1.bazel +++ /dev/null @@ -1,92 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "android_tzdata", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=android-tzdata", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.1.1", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel index 0d633d276d5d..d53f2d8803f3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel @@ -90,6 +90,6 @@ rust_library( }), version = "0.1.5", deps = [ - "@vendor_ts__libc-0.2.174//:libc", + "@vendor_ts__libc-0.2.175//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.20.bazel similarity index 92% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.19.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.20.bazel index efabc537139c..612f153cad1e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.19.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.20.bazel @@ -93,23 +93,23 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.6.19", + version = "0.6.20", deps = [ "@vendor_ts__anstyle-1.0.11//:anstyle", "@vendor_ts__anstyle-parse-0.2.7//:anstyle_parse", - "@vendor_ts__anstyle-query-1.1.3//:anstyle_query", + "@vendor_ts__anstyle-query-1.1.4//:anstyle_query", "@vendor_ts__colorchoice-1.0.4//:colorchoice", "@vendor_ts__is_terminal_polyfill-1.70.1//:is_terminal_polyfill", "@vendor_ts__utf8parse-0.2.2//:utf8parse", ] + select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__anstyle-wincon-3.0.9//:anstyle_wincon", # aarch64-pc-windows-msvc + "@vendor_ts__anstyle-wincon-3.0.10//:anstyle_wincon", # aarch64-pc-windows-msvc ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__anstyle-wincon-3.0.9//:anstyle_wincon", # i686-pc-windows-msvc + "@vendor_ts__anstyle-wincon-3.0.10//:anstyle_wincon", # i686-pc-windows-msvc ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__anstyle-wincon-3.0.9//:anstyle_wincon", # x86_64-pc-windows-msvc + "@vendor_ts__anstyle-wincon-3.0.10//:anstyle_wincon", # x86_64-pc-windows-msvc ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.4.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.4.bazel index 04bdb7d55361..56c6b1fe9214 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.4.bazel @@ -88,16 +88,16 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.1.3", + version = "1.1.4", deps = select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.10.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.9.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.10.bazel index acb0616902e3..6be501fabe1c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.10.bazel @@ -88,21 +88,21 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "3.0.9", + version = "3.0.10", deps = [ "@vendor_ts__anstyle-1.0.11//:anstyle", ] + select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ "@vendor_ts__once_cell_polyfill-1.70.1//:once_cell_polyfill", # cfg(windows) - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ "@vendor_ts__once_cell_polyfill-1.70.1//:once_cell_polyfill", # cfg(windows) - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ "@vendor_ts__once_cell_polyfill-1.70.1//:once_cell_polyfill", # cfg(windows) - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-0.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-0.2.1.bazel index c28444a73c16..5b77349d60f3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-0.2.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-0.2.1.bazel @@ -94,6 +94,6 @@ rust_library( version = "0.2.1", deps = [ "@vendor_ts__fs-err-2.11.0//:fs_err", - "@vendor_ts__os_str_bytes-7.0.0//:os_str_bytes", + "@vendor_ts__os_str_bytes-7.1.1//:os_str_bytes", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-0.6.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-0.6.1.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-0.6.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-0.6.1.bazel index 4cb9d323813b..f81c241a363e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-0.6.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-0.6.1.bazel @@ -92,8 +92,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.6.0", + version = "0.6.1", deps = [ - "@vendor_ts__bytemuck-1.21.0//:bytemuck", + "@vendor_ts__bytemuck-1.23.2//:bytemuck", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel index df61c70b2497..720687fcb84b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel @@ -68,26 +68,26 @@ alias( ) alias( - name = "chrono-0.4.41", - actual = "@vendor_ts__chrono-0.4.41//:chrono", + name = "chrono-0.4.42", + actual = "@vendor_ts__chrono-0.4.42//:chrono", tags = ["manual"], ) alias( name = "chrono", - actual = "@vendor_ts__chrono-0.4.41//:chrono", + actual = "@vendor_ts__chrono-0.4.42//:chrono", tags = ["manual"], ) alias( - name = "clap-4.5.44", - actual = "@vendor_ts__clap-4.5.44//:clap", + name = "clap-4.5.47", + actual = "@vendor_ts__clap-4.5.47//:clap", tags = ["manual"], ) alias( name = "clap", - actual = "@vendor_ts__clap-4.5.44//:clap", + actual = "@vendor_ts__clap-4.5.47//:clap", tags = ["manual"], ) @@ -140,14 +140,14 @@ alias( ) alias( - name = "flate2-1.1.0", - actual = "@vendor_ts__flate2-1.1.0//:flate2", + name = "flate2-1.1.2", + actual = "@vendor_ts__flate2-1.1.2//:flate2", tags = ["manual"], ) alias( name = "flate2", - actual = "@vendor_ts__flate2-1.1.0//:flate2", + actual = "@vendor_ts__flate2-1.1.2//:flate2", tags = ["manual"], ) @@ -164,14 +164,14 @@ alias( ) alias( - name = "globset-0.4.15", - actual = "@vendor_ts__globset-0.4.15//:globset", + name = "globset-0.4.16", + actual = "@vendor_ts__globset-0.4.16//:globset", tags = ["manual"], ) alias( name = "globset", - actual = "@vendor_ts__globset-0.4.15//:globset", + actual = "@vendor_ts__globset-0.4.16//:globset", tags = ["manual"], ) @@ -236,14 +236,14 @@ alias( ) alias( - name = "proc-macro2-1.0.97", - actual = "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + name = "proc-macro2-1.0.101", + actual = "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", tags = ["manual"], ) alias( name = "proc-macro2", - actual = "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + actual = "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", tags = ["manual"], ) @@ -260,200 +260,200 @@ alias( ) alias( - name = "ra_ap_base_db-0.0.300", - actual = "@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db", + name = "ra_ap_base_db-0.0.301", + actual = "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db", tags = ["manual"], ) alias( name = "ra_ap_base_db", - actual = "@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db", + actual = "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db", tags = ["manual"], ) alias( - name = "ra_ap_cfg-0.0.300", - actual = "@vendor_ts__ra_ap_cfg-0.0.300//:ra_ap_cfg", + name = "ra_ap_cfg-0.0.301", + actual = "@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg", tags = ["manual"], ) alias( name = "ra_ap_cfg", - actual = "@vendor_ts__ra_ap_cfg-0.0.300//:ra_ap_cfg", + actual = "@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg", tags = ["manual"], ) alias( - name = "ra_ap_hir-0.0.300", - actual = "@vendor_ts__ra_ap_hir-0.0.300//:ra_ap_hir", + name = "ra_ap_hir-0.0.301", + actual = "@vendor_ts__ra_ap_hir-0.0.301//:ra_ap_hir", tags = ["manual"], ) alias( name = "ra_ap_hir", - actual = "@vendor_ts__ra_ap_hir-0.0.300//:ra_ap_hir", + actual = "@vendor_ts__ra_ap_hir-0.0.301//:ra_ap_hir", tags = ["manual"], ) alias( - name = "ra_ap_hir_def-0.0.300", - actual = "@vendor_ts__ra_ap_hir_def-0.0.300//:ra_ap_hir_def", + name = "ra_ap_hir_def-0.0.301", + actual = "@vendor_ts__ra_ap_hir_def-0.0.301//:ra_ap_hir_def", tags = ["manual"], ) alias( name = "ra_ap_hir_def", - actual = "@vendor_ts__ra_ap_hir_def-0.0.300//:ra_ap_hir_def", + actual = "@vendor_ts__ra_ap_hir_def-0.0.301//:ra_ap_hir_def", tags = ["manual"], ) alias( - name = "ra_ap_hir_expand-0.0.300", - actual = "@vendor_ts__ra_ap_hir_expand-0.0.300//:ra_ap_hir_expand", + name = "ra_ap_hir_expand-0.0.301", + actual = "@vendor_ts__ra_ap_hir_expand-0.0.301//:ra_ap_hir_expand", tags = ["manual"], ) alias( name = "ra_ap_hir_expand", - actual = "@vendor_ts__ra_ap_hir_expand-0.0.300//:ra_ap_hir_expand", + actual = "@vendor_ts__ra_ap_hir_expand-0.0.301//:ra_ap_hir_expand", tags = ["manual"], ) alias( - name = "ra_ap_hir_ty-0.0.300", - actual = "@vendor_ts__ra_ap_hir_ty-0.0.300//:ra_ap_hir_ty", + name = "ra_ap_hir_ty-0.0.301", + actual = "@vendor_ts__ra_ap_hir_ty-0.0.301//:ra_ap_hir_ty", tags = ["manual"], ) alias( name = "ra_ap_hir_ty", - actual = "@vendor_ts__ra_ap_hir_ty-0.0.300//:ra_ap_hir_ty", + actual = "@vendor_ts__ra_ap_hir_ty-0.0.301//:ra_ap_hir_ty", tags = ["manual"], ) alias( - name = "ra_ap_ide_db-0.0.300", - actual = "@vendor_ts__ra_ap_ide_db-0.0.300//:ra_ap_ide_db", + name = "ra_ap_ide_db-0.0.301", + actual = "@vendor_ts__ra_ap_ide_db-0.0.301//:ra_ap_ide_db", tags = ["manual"], ) alias( name = "ra_ap_ide_db", - actual = "@vendor_ts__ra_ap_ide_db-0.0.300//:ra_ap_ide_db", + actual = "@vendor_ts__ra_ap_ide_db-0.0.301//:ra_ap_ide_db", tags = ["manual"], ) alias( - name = "ra_ap_intern-0.0.300", - actual = "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern", + name = "ra_ap_intern-0.0.301", + actual = "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", tags = ["manual"], ) alias( name = "ra_ap_intern", - actual = "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern", + actual = "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", tags = ["manual"], ) alias( - name = "ra_ap_load-cargo-0.0.300", - actual = "@vendor_ts__ra_ap_load-cargo-0.0.300//:ra_ap_load_cargo", + name = "ra_ap_load-cargo-0.0.301", + actual = "@vendor_ts__ra_ap_load-cargo-0.0.301//:ra_ap_load_cargo", tags = ["manual"], ) alias( name = "ra_ap_load-cargo", - actual = "@vendor_ts__ra_ap_load-cargo-0.0.300//:ra_ap_load_cargo", + actual = "@vendor_ts__ra_ap_load-cargo-0.0.301//:ra_ap_load_cargo", tags = ["manual"], ) alias( - name = "ra_ap_parser-0.0.300", - actual = "@vendor_ts__ra_ap_parser-0.0.300//:ra_ap_parser", + name = "ra_ap_parser-0.0.301", + actual = "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser", tags = ["manual"], ) alias( name = "ra_ap_parser", - actual = "@vendor_ts__ra_ap_parser-0.0.300//:ra_ap_parser", + actual = "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser", tags = ["manual"], ) alias( - name = "ra_ap_paths-0.0.300", - actual = "@vendor_ts__ra_ap_paths-0.0.300//:ra_ap_paths", + name = "ra_ap_paths-0.0.301", + actual = "@vendor_ts__ra_ap_paths-0.0.301//:ra_ap_paths", tags = ["manual"], ) alias( name = "ra_ap_paths", - actual = "@vendor_ts__ra_ap_paths-0.0.300//:ra_ap_paths", + actual = "@vendor_ts__ra_ap_paths-0.0.301//:ra_ap_paths", tags = ["manual"], ) alias( - name = "ra_ap_project_model-0.0.300", - actual = "@vendor_ts__ra_ap_project_model-0.0.300//:ra_ap_project_model", + name = "ra_ap_project_model-0.0.301", + actual = "@vendor_ts__ra_ap_project_model-0.0.301//:ra_ap_project_model", tags = ["manual"], ) alias( name = "ra_ap_project_model", - actual = "@vendor_ts__ra_ap_project_model-0.0.300//:ra_ap_project_model", + actual = "@vendor_ts__ra_ap_project_model-0.0.301//:ra_ap_project_model", tags = ["manual"], ) alias( - name = "ra_ap_span-0.0.300", - actual = "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span", + name = "ra_ap_span-0.0.301", + actual = "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", tags = ["manual"], ) alias( name = "ra_ap_span", - actual = "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span", + actual = "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", tags = ["manual"], ) alias( - name = "ra_ap_stdx-0.0.300", - actual = "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", + name = "ra_ap_stdx-0.0.301", + actual = "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", tags = ["manual"], ) alias( - name = "stdx-0.0.300", - actual = "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", + name = "stdx-0.0.301", + actual = "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", tags = ["manual"], ) alias( name = "stdx", - actual = "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", + actual = "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", tags = ["manual"], ) alias( - name = "ra_ap_syntax-0.0.300", - actual = "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax", + name = "ra_ap_syntax-0.0.301", + actual = "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax", tags = ["manual"], ) alias( name = "ra_ap_syntax", - actual = "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax", + actual = "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax", tags = ["manual"], ) alias( - name = "ra_ap_vfs-0.0.300", - actual = "@vendor_ts__ra_ap_vfs-0.0.300//:ra_ap_vfs", + name = "ra_ap_vfs-0.0.301", + actual = "@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs", tags = ["manual"], ) alias( name = "ra_ap_vfs", - actual = "@vendor_ts__ra_ap_vfs-0.0.300//:ra_ap_vfs", + actual = "@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs", tags = ["manual"], ) @@ -470,26 +470,26 @@ alias( ) alias( - name = "rayon-1.10.0", - actual = "@vendor_ts__rayon-1.10.0//:rayon", + name = "rayon-1.11.0", + actual = "@vendor_ts__rayon-1.11.0//:rayon", tags = ["manual"], ) alias( name = "rayon", - actual = "@vendor_ts__rayon-1.10.0//:rayon", + actual = "@vendor_ts__rayon-1.11.0//:rayon", tags = ["manual"], ) alias( - name = "regex-1.11.1", - actual = "@vendor_ts__regex-1.11.1//:regex", + name = "regex-1.11.2", + actual = "@vendor_ts__regex-1.11.2//:regex", tags = ["manual"], ) alias( name = "regex", - actual = "@vendor_ts__regex-1.11.1//:regex", + actual = "@vendor_ts__regex-1.11.2//:regex", tags = ["manual"], ) @@ -506,14 +506,14 @@ alias( ) alias( - name = "serde_json-1.0.142", - actual = "@vendor_ts__serde_json-1.0.142//:serde_json", + name = "serde_json-1.0.143", + actual = "@vendor_ts__serde_json-1.0.143//:serde_json", tags = ["manual"], ) alias( name = "serde_json", - actual = "@vendor_ts__serde_json-1.0.142//:serde_json", + actual = "@vendor_ts__serde_json-1.0.143//:serde_json", tags = ["manual"], ) @@ -530,14 +530,14 @@ alias( ) alias( - name = "syn-2.0.104", - actual = "@vendor_ts__syn-2.0.104//:syn", + name = "syn-2.0.106", + actual = "@vendor_ts__syn-2.0.106//:syn", tags = ["manual"], ) alias( name = "syn", - actual = "@vendor_ts__syn-2.0.104//:syn", + actual = "@vendor_ts__syn-2.0.106//:syn", tags = ["manual"], ) @@ -578,26 +578,26 @@ alias( ) alias( - name = "tracing-subscriber-0.3.19", - actual = "@vendor_ts__tracing-subscriber-0.3.19//:tracing_subscriber", + name = "tracing-subscriber-0.3.20", + actual = "@vendor_ts__tracing-subscriber-0.3.20//:tracing_subscriber", tags = ["manual"], ) alias( name = "tracing-subscriber", - actual = "@vendor_ts__tracing-subscriber-0.3.19//:tracing_subscriber", + actual = "@vendor_ts__tracing-subscriber-0.3.20//:tracing_subscriber", tags = ["manual"], ) alias( - name = "tree-sitter-0.24.6", - actual = "@vendor_ts__tree-sitter-0.24.6//:tree_sitter", + name = "tree-sitter-0.25.9", + actual = "@vendor_ts__tree-sitter-0.25.9//:tree_sitter", tags = ["manual"], ) alias( name = "tree-sitter", - actual = "@vendor_ts__tree-sitter-0.24.6//:tree_sitter", + actual = "@vendor_ts__tree-sitter-0.25.9//:tree_sitter", tags = ["manual"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.4.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.4.bazel index fbb0a5c36567..f4b462ce1317 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.4.bazel @@ -88,5 +88,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.9.1", + version = "2.9.4", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.13.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.14.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.13.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.14.bazel index ac24b2ad6298..2286d8017db1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.13.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.14.bazel @@ -88,5 +88,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.13", + version = "0.2.14", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.11.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.11.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel index 1793e0d7daee..0433f5fe9071 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.11.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel @@ -92,7 +92,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.11.3", + version = "1.12.0", deps = [ "@vendor_ts__memchr-2.7.5//:memchr", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.21.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.23.2.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.21.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.23.2.bazel index cf7710e627da..ce1e2725e32f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.21.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.23.2.bazel @@ -88,5 +88,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.21.0", + version = "1.23.2", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.12.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.10.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.12.bazel index f7df381842ed..9a90162b227e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.10.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.12.bazel @@ -96,9 +96,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.1.10", + version = "1.1.12", deps = [ - "@vendor_ts__camino-1.1.10//:build_script_build", + "@vendor_ts__camino-1.1.12//:build_script_build", "@vendor_ts__serde-1.0.219//:serde", ], ) @@ -155,7 +155,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.1.10", + version = "1.1.12", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel index a4d476d9ad99..d0dfee25c63c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel @@ -92,11 +92,11 @@ rust_library( deps = [ "@vendor_ts__semver-1.0.26//:semver", "@vendor_ts__serde-1.0.219//:serde", - "@vendor_ts__serde-untagged-0.1.7//:serde_untagged", + "@vendor_ts__serde-untagged-0.1.8//:serde_untagged", "@vendor_ts__serde-value-0.7.0//:serde_value", - "@vendor_ts__thiserror-2.0.12//:thiserror", + "@vendor_ts__thiserror-2.0.16//:thiserror", "@vendor_ts__toml-0.8.23//:toml", "@vendor_ts__unicode-xid-0.2.6//:unicode_xid", - "@vendor_ts__url-2.5.4//:url", + "@vendor_ts__url-2.5.7//:url", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel index 37ecc0be0e08..c96de37e1161 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel @@ -93,12 +93,12 @@ rust_library( }), version = "0.21.0", deps = [ - "@vendor_ts__camino-1.1.10//:camino", + "@vendor_ts__camino-1.1.12//:camino", "@vendor_ts__cargo-platform-0.2.0//:cargo_platform", "@vendor_ts__cargo-util-schemas-0.8.2//:cargo_util_schemas", "@vendor_ts__semver-1.0.26//:semver", "@vendor_ts__serde-1.0.219//:serde", - "@vendor_ts__serde_json-1.0.142//:serde_json", - "@vendor_ts__thiserror-2.0.12//:thiserror", + "@vendor_ts__serde_json-1.0.143//:serde_json", + "@vendor_ts__thiserror-2.0.16//:thiserror", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.29.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.37.bazel similarity index 85% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.29.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.37.bazel index 94f1085dc752..ab0df21161a2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.29.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.37.bazel @@ -91,43 +91,44 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.2.29", + version = "1.2.37", deps = [ - "@vendor_ts__jobserver-0.1.32//:jobserver", + "@vendor_ts__find-msvc-tools-0.1.1//:find_msvc_tools", + "@vendor_ts__jobserver-0.1.34//:jobserver", "@vendor_ts__shlex-1.3.0//:shlex", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # aarch64-apple-darwin + "@vendor_ts__libc-0.2.175//:libc", # aarch64-apple-darwin ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # aarch64-unknown-linux-gnu + "@vendor_ts__libc-0.2.175//:libc", # aarch64-unknown-linux-gnu ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "@vendor_ts__libc-0.2.175//:libc", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # arm-unknown-linux-gnueabi + "@vendor_ts__libc-0.2.175//:libc", # arm-unknown-linux-gnueabi ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # i686-unknown-linux-gnu + "@vendor_ts__libc-0.2.175//:libc", # i686-unknown-linux-gnu ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # powerpc-unknown-linux-gnu + "@vendor_ts__libc-0.2.175//:libc", # powerpc-unknown-linux-gnu ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # s390x-unknown-linux-gnu + "@vendor_ts__libc-0.2.175//:libc", # s390x-unknown-linux-gnu ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # x86_64-apple-darwin + "@vendor_ts__libc-0.2.175//:libc", # x86_64-apple-darwin ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # x86_64-unknown-freebsd + "@vendor_ts__libc-0.2.175//:libc", # x86_64-unknown-freebsd ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # x86_64-unknown-linux-gnu + "@vendor_ts__libc-0.2.175//:libc", # x86_64-unknown-linux-gnu ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "@vendor_ts__libc-0.2.175//:libc", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.3.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.3.bazel index 3c46f710630a..ca5231827c85 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.3.bazel @@ -88,5 +88,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.1", + version = "1.0.3", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel index 43156f3cd950..5f5338398884 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel @@ -90,9 +90,9 @@ rust_proc_macro( }), version = "0.103.0", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", "@vendor_ts__synstructure-0.13.2//:synstructure", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.104.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.104.0.bazel index b37413cd6c08..cd0251c5806b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.104.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.104.0.bazel @@ -90,9 +90,9 @@ rust_proc_macro( }), version = "0.104.0", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", "@vendor_ts__synstructure-0.13.2//:synstructure", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel index 1e3c900ab907..efafd49d342b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel @@ -93,6 +93,6 @@ rust_library( }), version = "0.103.0", deps = [ - "@vendor_ts__bitflags-2.9.1//:bitflags", + "@vendor_ts__bitflags-2.9.4//:bitflags", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.104.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.104.0.bazel index 16b835996d69..60a6ae9176f7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.104.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.104.0.bazel @@ -93,6 +93,6 @@ rust_library( }), version = "0.104.0", deps = [ - "@vendor_ts__bitflags-2.9.1//:bitflags", + "@vendor_ts__bitflags-2.9.4//:bitflags", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel index 4966053d4f36..9f0abb9530a3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel @@ -95,7 +95,7 @@ rust_library( deps = [ "@vendor_ts__chalk-ir-0.103.0//:chalk_ir", "@vendor_ts__ena-0.14.3//:ena", - "@vendor_ts__indexmap-2.10.0//:indexmap", + "@vendor_ts__indexmap-2.11.1//:indexmap", "@vendor_ts__itertools-0.12.1//:itertools", "@vendor_ts__petgraph-0.6.5//:petgraph", "@vendor_ts__rustc-hash-1.1.0//:rustc_hash", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.41.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.42.bazel similarity index 92% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.41.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.42.bazel index c96eee266690..f6c987b4f921 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.41.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.42.bazel @@ -36,7 +36,6 @@ rust_library( ), crate_features = [ "alloc", - "android-tzdata", "clock", "default", "iana-time-zone", @@ -104,7 +103,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.41", + version = "0.4.42", deps = [ "@vendor_ts__num-traits-0.2.19//:num_traits", "@vendor_ts__serde-1.0.219//:serde", @@ -119,11 +118,10 @@ rust_library( "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # aarch64-apple-ios-sim ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__android-tzdata-0.1.1//:android_tzdata", # aarch64-linux-android "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # aarch64-linux-android ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows-link-0.1.3//:windows_link", # aarch64-pc-windows-msvc + "@vendor_ts__windows-link-0.2.0//:windows_link", # aarch64-pc-windows-msvc ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # aarch64-unknown-fuchsia @@ -141,7 +139,6 @@ rust_library( "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # arm-unknown-linux-gnueabi ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__android-tzdata-0.1.1//:android_tzdata", # armv7-linux-androideabi "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # armv7-linux-androideabi ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ @@ -151,11 +148,10 @@ rust_library( "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # i686-apple-darwin ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__android-tzdata-0.1.1//:android_tzdata", # i686-linux-android "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # i686-linux-android ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__windows-link-0.1.3//:windows_link", # i686-pc-windows-msvc + "@vendor_ts__windows-link-0.2.0//:windows_link", # i686-pc-windows-msvc ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # i686-unknown-freebsd @@ -170,8 +166,8 @@ rust_library( "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # s390x-unknown-linux-gnu ], "@rules_rust//rust/platform:wasm32-unknown-unknown": [ - "@vendor_ts__js-sys-0.3.77//:js_sys", # wasm32-unknown-unknown - "@vendor_ts__wasm-bindgen-0.2.100//:wasm_bindgen", # wasm32-unknown-unknown + "@vendor_ts__js-sys-0.3.78//:js_sys", # wasm32-unknown-unknown + "@vendor_ts__wasm-bindgen-0.2.101//:wasm_bindgen", # wasm32-unknown-unknown ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # x86_64-apple-darwin @@ -180,11 +176,10 @@ rust_library( "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # x86_64-apple-ios ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__android-tzdata-0.1.1//:android_tzdata", # x86_64-linux-android "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # x86_64-linux-android ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__windows-link-0.1.3//:windows_link", # x86_64-pc-windows-msvc + "@vendor_ts__windows-link-0.2.0//:windows_link", # x86_64-pc-windows-msvc ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # x86_64-unknown-freebsd diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.44.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.47.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.44.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.47.bazel index df9619c99eaf..6156a05c6ff3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.44.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.47.bazel @@ -47,7 +47,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__clap_derive-4.5.41//:clap_derive", + "@vendor_ts__clap_derive-4.5.47//:clap_derive", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -101,8 +101,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "4.5.44", + version = "4.5.47", deps = [ - "@vendor_ts__clap_builder-4.5.44//:clap_builder", + "@vendor_ts__clap_builder-4.5.47//:clap_builder", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.44.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.47.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.44.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.47.bazel index 639d48d46379..70d567834783 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.44.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.47.bazel @@ -96,9 +96,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "4.5.44", + version = "4.5.47", deps = [ - "@vendor_ts__anstream-0.6.19//:anstream", + "@vendor_ts__anstream-0.6.20//:anstream", "@vendor_ts__anstyle-1.0.11//:anstyle", "@vendor_ts__clap_lex-0.7.5//:clap_lex", "@vendor_ts__strsim-0.11.1//:strsim", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.41.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.47.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.41.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.47.bazel index 177f948947f5..1f2d042d69d8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.41.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.47.bazel @@ -91,11 +91,11 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "4.5.41", + version = "4.5.47", deps = [ "@vendor_ts__heck-0.5.0//:heck", - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.1.0.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.0.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.1.0.bazel index 3c562e624d0e..a63921c3b4a8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.1.0.bazel @@ -92,5 +92,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.0", + version = "2.1.0", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.4.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.4.2.bazel deleted file mode 100644 index 24f106b3eda0..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.4.2.bazel +++ /dev/null @@ -1,99 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "crc32fast", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - edition = "2015", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=crc32fast", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "1.4.2", - deps = [ - "@vendor_ts__cfg-if-1.0.1//:cfg_if", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.5.0.bazel new file mode 100644 index 000000000000..b3a40b976a8f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.5.0.bazel @@ -0,0 +1,166 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load( + "@rules_rust//cargo:defs.bzl", + "cargo_build_script", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "crc32fast", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "std", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=crc32fast", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.5.0", + deps = [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", + "@vendor_ts__crc32fast-1.5.0//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "std", + ], + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "crc32fast", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=crc32fast", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.5.0", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.20.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.20.11.bazel index 3f33e24ebe29..8fe1dfc0606f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.20.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.20.11.bazel @@ -96,9 +96,9 @@ rust_library( deps = [ "@vendor_ts__fnv-1.0.7//:fnv", "@vendor_ts__ident_case-1.0.1//:ident_case", - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", "@vendor_ts__strsim-0.11.1//:strsim", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.20.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.20.11.bazel index f4d01d9198e9..c32d23d3c48a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.20.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.20.11.bazel @@ -92,6 +92,6 @@ rust_proc_macro( deps = [ "@vendor_ts__darling_core-0.20.11//:darling_core", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel index e4f933a3d510..6a7ea4215532 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel @@ -94,7 +94,7 @@ rust_library( }), version = "6.1.0", deps = [ - "@vendor_ts__cfg-if-1.0.1//:cfg_if", + "@vendor_ts__cfg-if-1.0.3//:cfg_if", "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", "@vendor_ts__hashbrown-0.14.5//:hashbrown", "@vendor_ts__lock_api-0.4.13//:lock_api", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.4.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.4.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel index c25fab4a1ad3..262c356a1ba4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.4.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel @@ -88,5 +88,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.0", + version = "0.5.3", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel index 7c6b8f96bbf6..a486cb7c1285 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel @@ -90,8 +90,8 @@ rust_proc_macro( }), version = "0.2.5", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.20.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.19.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.20.bazel index 448bf06fc096..0510a6239027 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.19.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.20.bazel @@ -88,5 +88,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.19", + version = "1.0.20", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel index d006d25618c3..50d4b33db9a6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel @@ -90,6 +90,6 @@ rust_library( }), version = "0.14.3", deps = [ - "@vendor_ts__log-0.4.27//:log", + "@vendor_ts__log-0.4.28//:log", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel index 9569df15a02f..8b6d7b8c56c6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel @@ -108,46 +108,46 @@ rust_library( "@vendor_ts__uncased-0.9.10//:uncased", ] + select({ "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__atomic-0.6.0//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__atomic-0.6.0//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__atomic-0.6.0//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__atomic-0.6.0//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__atomic-0.6.0//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__atomic-0.6.0//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__atomic-0.6.0//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__atomic-0.6.0//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__atomic-0.6.0//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [ - "@vendor_ts__atomic-0.6.0//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "@rules_rust//rust/platform:thumbv7em-none-eabi": [ - "@vendor_ts__atomic-0.6.0//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [ - "@vendor_ts__atomic-0.6.0//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "@rules_rust//rust/platform:wasm32-unknown-unknown": [ - "@vendor_ts__atomic-0.6.0//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "@rules_rust//rust/platform:wasm32-wasip1": [ - "@vendor_ts__atomic-0.6.0//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.overload-0.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.1.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.overload-0.1.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.1.bazel index 047ca4a24895..d956f0084449 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.overload-0.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.1.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "overload", + name = "find_msvc_tools", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -44,7 +44,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=overload", + "crate-name=find-msvc-tools", "manual", "noclippy", "norustfmt", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.2.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.2.bazel index 47ffe2a16c77..b06683055f36 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.2.bazel @@ -94,9 +94,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.1.0", + version = "1.1.2", deps = [ - "@vendor_ts__crc32fast-1.4.2//:crc32fast", - "@vendor_ts__miniz_oxide-0.8.5//:miniz_oxide", + "@vendor_ts__crc32fast-1.5.0//:crc32fast", + "@vendor_ts__miniz_oxide-0.8.9//:miniz_oxide", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel index be5dbcf148d9..e0bb0c5b348a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel @@ -92,8 +92,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.2.1", + version = "1.2.2", deps = [ - "@vendor_ts__percent-encoding-2.3.1//:percent_encoding", + "@vendor_ts__percent-encoding-2.3.2//:percent_encoding", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel index f6e6c4fad543..ae27e0cf00e7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel @@ -90,6 +90,6 @@ rust_library( }), version = "4.1.0", deps = [ - "@vendor_ts__libc-0.2.174//:libc", + "@vendor_ts__libc-0.2.175//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.3.bazel index 54516ab2d7a6..49103f0d3037 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.3.bazel @@ -97,74 +97,74 @@ rust_library( }), version = "0.3.3", deps = [ - "@vendor_ts__cfg-if-1.0.1//:cfg_if", + "@vendor_ts__cfg-if-1.0.3//:cfg_if", "@vendor_ts__getrandom-0.3.3//:build_script_build", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "haiku", target_os = "redox", target_os = "nto", target_os = "aix")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(any(target_os = "haiku", target_os = "redox", target_os = "nto", target_os = "aix")) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", target_os = "cygwin", all(target_os = "horizon", target_arch = "arm"))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", target_os = "cygwin", all(target_os = "horizon", target_arch = "arm"))) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", target_os = "cygwin", all(target_os = "horizon", target_arch = "arm"))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", target_os = "cygwin", all(target_os = "horizon", target_arch = "arm"))) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.15.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel index 23ffeea84c3b..6c5f8cd7929a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.15.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel @@ -92,12 +92,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.15", + version = "0.4.16", deps = [ "@vendor_ts__aho-corasick-1.1.3//:aho_corasick", - "@vendor_ts__bstr-1.11.3//:bstr", - "@vendor_ts__log-0.4.27//:log", - "@vendor_ts__regex-automata-0.4.9//:regex_automata", - "@vendor_ts__regex-syntax-0.8.5//:regex_syntax", + "@vendor_ts__bstr-1.12.0//:bstr", + "@vendor_ts__log-0.4.28//:log", + "@vendor_ts__regex-automata-0.4.10//:regex_automata", + "@vendor_ts__regex-syntax-0.8.6//:regex_syntax", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.5.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.4.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.5.bazel index e787c0b73f36..4f57dca3c972 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.5.bazel @@ -96,7 +96,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.15.4", + version = "0.15.5", deps = [ "@vendor_ts__allocator-api2-0.2.21//:allocator_api2", "@vendor_ts__equivalent-1.0.2//:equivalent", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel index cede17426a82..785d16ee2930 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel @@ -90,6 +90,6 @@ rust_library( }), version = "0.10.0", deps = [ - "@vendor_ts__hashbrown-0.15.4//:hashbrown", + "@vendor_ts__hashbrown-0.15.5//:hashbrown", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.63.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.63.bazel index 19f174690010..b3e809c20906 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.63.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.63.bazel @@ -121,9 +121,9 @@ rust_library( "@vendor_ts__windows-core-0.61.2//:windows_core", # cfg(target_os = "windows") ], "@rules_rust//rust/platform:wasm32-unknown-unknown": [ - "@vendor_ts__js-sys-0.3.77//:js_sys", # cfg(all(target_arch = "wasm32", target_os = "unknown")) - "@vendor_ts__log-0.4.27//:log", # cfg(all(target_arch = "wasm32", target_os = "unknown")) - "@vendor_ts__wasm-bindgen-0.2.100//:wasm_bindgen", # cfg(all(target_arch = "wasm32", target_os = "unknown")) + "@vendor_ts__js-sys-0.3.78//:js_sys", # cfg(all(target_arch = "wasm32", target_os = "unknown")) + "@vendor_ts__log-0.4.28//:log", # cfg(all(target_arch = "wasm32", target_os = "unknown")) + "@vendor_ts__wasm-bindgen-0.2.101//:wasm_bindgen", # cfg(all(target_arch = "wasm32", target_os = "unknown")) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ "@vendor_ts__core-foundation-sys-0.8.7//:core_foundation_sys", # cfg(target_vendor = "apple") diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-haiku-0.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-haiku-0.1.2.bazel index ac8feaf79a27..7de07c3e66d1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-haiku-0.1.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-haiku-0.1.2.bazel @@ -149,7 +149,7 @@ cargo_build_script( version = "0.1.2", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.29//:cc", + "@vendor_ts__cc-1.2.37//:cc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel index 73ee415f9a1a..c15de7a0de7f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel @@ -93,9 +93,9 @@ rust_library( }), version = "2.0.0", deps = [ - "@vendor_ts__potential_utf-0.1.2//:potential_utf", + "@vendor_ts__potential_utf-0.1.3//:potential_utf", "@vendor_ts__yoke-0.8.0//:yoke", "@vendor_ts__zerofrom-0.1.6//:zerofrom", - "@vendor_ts__zerovec-0.11.2//:zerovec", + "@vendor_ts__zerovec-0.11.4//:zerovec", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel index 91cf4cab2963..fe541bdd5d91 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel @@ -99,6 +99,6 @@ rust_library( "@vendor_ts__litemap-0.8.0//:litemap", "@vendor_ts__tinystr-0.8.1//:tinystr", "@vendor_ts__writeable-0.6.1//:writeable", - "@vendor_ts__zerovec-0.11.2//:zerovec", + "@vendor_ts__zerovec-0.11.4//:zerovec", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel index f604cf034a98..0d7fa879c944 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel @@ -100,6 +100,6 @@ rust_library( "@vendor_ts__icu_normalizer_data-2.0.0//:icu_normalizer_data", "@vendor_ts__icu_provider-2.0.0//:icu_provider", "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__zerovec-0.11.2//:zerovec", + "@vendor_ts__zerovec-0.11.4//:zerovec", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel index cee332f06e1b..0775afcb043c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel @@ -100,8 +100,8 @@ rust_library( "@vendor_ts__icu_locale_core-2.0.0//:icu_locale_core", "@vendor_ts__icu_properties_data-2.0.1//:icu_properties_data", "@vendor_ts__icu_provider-2.0.0//:icu_provider", - "@vendor_ts__potential_utf-0.1.2//:potential_utf", + "@vendor_ts__potential_utf-0.1.3//:potential_utf", "@vendor_ts__zerotrie-0.2.2//:zerotrie", - "@vendor_ts__zerovec-0.11.2//:zerovec", + "@vendor_ts__zerovec-0.11.4//:zerovec", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel index 0a9c998ee12d..42dc4eb7c341 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel @@ -104,6 +104,6 @@ rust_library( "@vendor_ts__yoke-0.8.0//:yoke", "@vendor_ts__zerofrom-0.1.6//:zerofrom", "@vendor_ts__zerotrie-0.2.2//:zerotrie", - "@vendor_ts__zerovec-0.11.2//:zerovec", + "@vendor_ts__zerovec-0.11.4//:zerovec", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.0.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel index ca624309664d..1e4fe273978b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel @@ -93,7 +93,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.3", + version = "1.1.0", deps = [ "@vendor_ts__idna_adapter-1.2.1//:idna_adapter", "@vendor_ts__smallvec-1.15.1//:smallvec", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.10.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.11.1.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.10.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.11.1.bazel index 110e79e3f128..c3763099eb85 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.10.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.11.1.bazel @@ -93,10 +93,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.10.0", + version = "2.11.1", deps = [ "@vendor_ts__equivalent-1.0.2//:equivalent", - "@vendor_ts__hashbrown-0.15.4//:hashbrown", + "@vendor_ts__hashbrown-0.15.5//:hashbrown", "@vendor_ts__serde-1.0.219//:serde", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel index 455b1ada88bf..31a69e5e7609 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel @@ -90,8 +90,8 @@ rust_library( }), version = "0.11.0", deps = [ - "@vendor_ts__bitflags-2.9.1//:bitflags", + "@vendor_ts__bitflags-2.9.4//:bitflags", "@vendor_ts__inotify-sys-0.1.5//:inotify_sys", - "@vendor_ts__libc-0.2.174//:libc", + "@vendor_ts__libc-0.2.175//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel index 64a360cc60b3..757c2e30a5b1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel @@ -90,6 +90,6 @@ rust_library( }), version = "0.1.5", deps = [ - "@vendor_ts__libc-0.2.174//:libc", + "@vendor_ts__libc-0.2.175//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.32.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.32.bazel deleted file mode 100644 index 5e1bfd6978ce..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.32.bazel +++ /dev/null @@ -1,167 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "jobserver", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=jobserver", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.1.32", - deps = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.filetime-0.2.25.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel similarity index 75% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.filetime-0.2.25.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel index 35820d594a5f..c92c87746bf9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.filetime-0.2.25.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "filetime", + name = "jobserver", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -35,7 +35,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2018", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -44,7 +44,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=filetime", + "crate-name=jobserver", "manual", "noclippy", "norustfmt", @@ -88,90 +88,88 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.25", - deps = [ - "@vendor_ts__cfg-if-1.0.1//:cfg_if", - ] + select({ + version = "0.1.34", + deps = select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__getrandom-0.3.3//:getrandom", # cfg(windows) ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__getrandom-0.3.3//:getrandom", # cfg(windows) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__getrandom-0.3.3//:getrandom", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.77.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.77.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel index c7cad35aed57..e7d05a34f21a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.77.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel @@ -92,9 +92,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.3.77", + version = "0.3.78", deps = [ "@vendor_ts__once_cell-1.21.3//:once_cell", - "@vendor_ts__wasm-bindgen-0.2.100//:wasm_bindgen", + "@vendor_ts__wasm-bindgen-0.2.101//:wasm_bindgen", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.1.1.bazel index d2fcbb68bae6..81d5b18a81bb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.1.1.bazel @@ -91,6 +91,6 @@ rust_library( version = "1.1.1", deps = [ "@vendor_ts__kqueue-sys-1.0.4//:kqueue_sys", - "@vendor_ts__libc-0.2.174//:libc", + "@vendor_ts__libc-0.2.175//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel index ad1e457dfe6d..46c5f37608fb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel @@ -91,6 +91,6 @@ rust_library( version = "1.0.4", deps = [ "@vendor_ts__bitflags-1.3.2//:bitflags", - "@vendor_ts__libc-0.2.174//:libc", + "@vendor_ts__libc-0.2.175//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.174.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.175.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.174.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.175.bazel index 55fe8a8115be..4aad3afd224a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.174.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.175.bazel @@ -96,9 +96,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.174", + version = "0.2.175", deps = [ - "@vendor_ts__libc-0.2.174//:build_script_build", + "@vendor_ts__libc-0.2.175//:build_script_build", ], ) @@ -154,7 +154,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "0.2.174", + version = "0.2.175", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libredox-0.1.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libredox-0.1.4.bazel deleted file mode 100644 index 606bd2a25950..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libredox-0.1.4.bazel +++ /dev/null @@ -1,97 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "libredox", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=libredox", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.1.4", - deps = [ - "@vendor_ts__bitflags-2.9.1//:bitflags", - "@vendor_ts__libc-0.2.174//:libc", - "@vendor_ts__redox_syscall-0.5.13//:syscall", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel index cc061b625ca6..961aa4b6dabb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel @@ -94,6 +94,6 @@ rust_library( }), version = "0.3.9", deps = [ - "@vendor_ts__log-0.4.27//:log", + "@vendor_ts__log-0.4.28//:log", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.27.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.28.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.27.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.28.bazel index 8e1f88973356..8d88e063c67d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.27.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.28.bazel @@ -91,5 +91,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.27", + version = "0.4.28", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.1.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel index 9a3778fcabce..4ba339428228 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel @@ -88,8 +88,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.0", + version = "0.2.0", deps = [ - "@vendor_ts__regex-automata-0.1.10//:regex_automata", + "@vendor_ts__regex-automata-0.4.10//:regex_automata", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miniz_oxide-0.8.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miniz_oxide-0.8.9.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miniz_oxide-0.8.5.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miniz_oxide-0.8.9.bazel index bc02579b4eac..80d0e6c3fc06 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miniz_oxide-0.8.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miniz_oxide-0.8.9.bazel @@ -91,8 +91,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.8.5", + version = "0.8.9", deps = [ - "@vendor_ts__adler2-2.0.0//:adler2", + "@vendor_ts__adler2-2.0.1//:adler2", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.4.bazel index 098fbb7173c2..28e096bc418e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.4.bazel @@ -96,92 +96,92 @@ rust_library( }), version = "1.0.4", deps = [ - "@vendor_ts__log-0.4.27//:log", + "@vendor_ts__log-0.4.28//:log", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:wasm32-wasip1": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(target_os = "wasi") + "@vendor_ts__libc-0.2.175//:libc", # cfg(target_os = "wasi") "@vendor_ts__wasi-0.11.1-wasi-snapshot-preview1//:wasi", # cfg(target_os = "wasi") ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miow-0.6.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miow-0.6.1.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miow-0.6.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miow-0.6.1.bazel index 6f99dee0d2da..af5955087e3f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miow-0.6.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miow-0.6.1.bazel @@ -88,8 +88,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.6.0", + version = "0.6.1", deps = [ - "@vendor_ts__windows-sys-0.48.0//:windows_sys", + "@vendor_ts__windows-sys-0.61.0//:windows_sys", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.0.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel index 70889e441f02..ffba79680267 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel @@ -93,16 +93,15 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "8.0.0", + version = "8.2.0", deps = [ - "@vendor_ts__filetime-0.2.25//:filetime", - "@vendor_ts__libc-0.2.174//:libc", - "@vendor_ts__log-0.4.27//:log", + "@vendor_ts__libc-0.2.175//:libc", + "@vendor_ts__log-0.4.28//:log", "@vendor_ts__notify-types-2.0.0//:notify_types", "@vendor_ts__walkdir-2.5.0//:walkdir", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__bitflags-2.9.1//:bitflags", # cfg(target_os = "macos") + "@vendor_ts__bitflags-2.9.4//:bitflags", # cfg(target_os = "macos") "@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # aarch64-apple-darwin ], "@rules_rust//rust/platform:aarch64-apple-ios": [ @@ -118,7 +117,7 @@ rust_library( "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) @@ -141,7 +140,7 @@ rust_library( "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__bitflags-2.9.1//:bitflags", # cfg(target_os = "macos") + "@vendor_ts__bitflags-2.9.4//:bitflags", # cfg(target_os = "macos") "@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # i686-apple-darwin ], "@rules_rust//rust/platform:i686-linux-android": [ @@ -149,7 +148,7 @@ rust_library( "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ "@vendor_ts__kqueue-1.1.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) @@ -168,7 +167,7 @@ rust_library( "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__bitflags-2.9.1//:bitflags", # cfg(target_os = "macos") + "@vendor_ts__bitflags-2.9.4//:bitflags", # cfg(target_os = "macos") "@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # x86_64-apple-darwin ], "@rules_rust//rust/platform:x86_64-apple-ios": [ @@ -180,7 +179,7 @@ rust_library( "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ "@vendor_ts__kqueue-1.1.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.46.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.1.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.46.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.1.bazel index b436335be0c9..1e9f6c7d54a3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.46.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.1.bazel @@ -22,6 +22,18 @@ rust_library( include = ["**/*.rs"], allow_empty = True, ), + aliases = select({ + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": { + "@vendor_ts__windows-sys-0.52.0//:windows_sys": "windows", # cfg(windows) + }, + "@rules_rust//rust/platform:i686-pc-windows-msvc": { + "@vendor_ts__windows-sys-0.52.0//:windows_sys": "windows", # cfg(windows) + }, + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": { + "@vendor_ts__windows-sys-0.52.0//:windows_sys": "windows", # cfg(windows) + }, + "//conditions:default": {}, + }), compile_data = glob( include = ["**"], allow_empty = True, @@ -35,7 +47,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2018", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -88,18 +100,16 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.46.0", - deps = [ - "@vendor_ts__overload-0.1.1//:overload", - ] + select({ + version = "0.50.1", + deps = select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__winapi-0.3.9//:winapi", # cfg(target_os = "windows") + "@vendor_ts__windows-sys-0.52.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__winapi-0.3.9//:winapi", # cfg(target_os = "windows") + "@vendor_ts__windows-sys-0.52.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__winapi-0.3.9//:winapi", # cfg(target_os = "windows") + "@vendor_ts__windows-sys-0.52.0//:windows_sys", # cfg(windows) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.17.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.17.0.bazel index 65ccdc7fd1af..84ac7e536d76 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.17.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.17.0.bazel @@ -91,103 +91,103 @@ rust_library( version = "1.17.0", deps = select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-uefi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:thumbv7em-none-eabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:wasm32-unknown-unknown": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:wasm32-wasip1": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-none": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-uefi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.0.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel index 5f68898f2b48..96010fb2e467 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel @@ -93,7 +93,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "7.0.0", + version = "7.1.1", deps = [ "@vendor_ts__memchr-2.7.5//:memchr", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.11.bazel index dd30b9a5bc13..ffcde4b57f26 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.11.bazel @@ -94,90 +94,90 @@ rust_library( }), version = "0.9.11", deps = [ - "@vendor_ts__cfg-if-1.0.1//:cfg_if", + "@vendor_ts__cfg-if-1.0.3//:cfg_if", "@vendor_ts__parking_lot_core-0.9.11//:build_script_build", "@vendor_ts__smallvec-1.15.1//:smallvec", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ "@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(windows) ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ "@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(windows) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ "@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel index 44f538367d37..ce5597c6f7ef 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel @@ -90,9 +90,9 @@ rust_proc_macro( }), version = "0.2.9", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__proc-macro2-diagnostics-0.10.1//:proc_macro2_diagnostics", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.2.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.2.bazel index dae967123fc6..06f5a6f9f7e9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.2.bazel @@ -92,5 +92,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.3.1", + version = "2.3.2", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel index c6512969320d..bd473ae5a3f9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel @@ -90,7 +90,7 @@ rust_library( }), version = "0.4.7", deps = [ - "@vendor_ts__libc-0.2.174//:libc", + "@vendor_ts__libc-0.2.175//:libc", "@vendor_ts__perf-event-open-sys-1.0.1//:perf_event_open_sys", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel index 2f975dbab226..3f12c00274f0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel @@ -90,6 +90,6 @@ rust_library( }), version = "1.0.1", deps = [ - "@vendor_ts__libc-0.2.174//:libc", + "@vendor_ts__libc-0.2.175//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel index aec5d8e678db..c643aefe2c7b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel @@ -97,6 +97,6 @@ rust_library( version = "0.6.5", deps = [ "@vendor_ts__fixedbitset-0.4.2//:fixedbitset", - "@vendor_ts__indexmap-2.10.0//:indexmap", + "@vendor_ts__indexmap-2.11.1//:indexmap", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.bazel index 2c1aa625c77f..f4fc2d5dee04 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.bazel @@ -91,8 +91,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.2", + version = "0.1.3", deps = [ - "@vendor_ts__zerovec-0.11.2//:zerovec", + "@vendor_ts__zerovec-0.11.4//:zerovec", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ppv-lite86-0.2.21.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ppv-lite86-0.2.21.bazel index 1027543b5e7f..68d235c36842 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ppv-lite86-0.2.21.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ppv-lite86-0.2.21.bazel @@ -94,6 +94,6 @@ rust_library( }), version = "0.2.21", deps = [ - "@vendor_ts__zerocopy-0.8.26//:zerocopy", + "@vendor_ts__zerocopy-0.8.27//:zerocopy", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.97.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.101.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.97.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.101.bazel index 393ebc5392bf..e09b5045cc33 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.97.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.101.bazel @@ -96,10 +96,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.97", + version = "1.0.101", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:build_script_build", - "@vendor_ts__unicode-ident-1.0.18//:unicode_ident", + "@vendor_ts__proc-macro2-1.0.101//:build_script_build", + "@vendor_ts__unicode-ident-1.0.19//:unicode_ident", ], ) @@ -155,7 +155,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.97", + version = "1.0.101", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel index 7e1cf59384c8..120c4d6c2654 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel @@ -99,10 +99,10 @@ rust_library( }), version = "0.10.1", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__proc-macro2-diagnostics-0.10.1//:build_script_build", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", "@vendor_ts__yansi-1.0.1//:yansi", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.40.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.40.bazel index aa96a49c642e..66b79239e47b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.40.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.40.bazel @@ -94,6 +94,6 @@ rust_library( }), version = "1.0.40", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.123.0.bazel index df3ed9bebacd..0d136750f61b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.123.0.bazel @@ -94,7 +94,7 @@ rust_library( }), version = "0.123.0", deps = [ - "@vendor_ts__bitflags-2.9.1//:bitflags", + "@vendor_ts__bitflags-2.9.4//:bitflags", "@vendor_ts__ra-ap-rustc_hashes-0.123.0//:ra_ap_rustc_hashes", "@vendor_ts__ra-ap-rustc_index-0.123.0//:ra_ap_rustc_index", "@vendor_ts__tracing-0.1.41//:tracing", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.123.0.bazel index 6bb6017e68d6..b45b48ce2b9b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.123.0.bazel @@ -90,8 +90,8 @@ rust_proc_macro( }), version = "0.123.0", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.301.bazel similarity index 84% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.301.bazel index de5ec1e085de..3931158e4a14 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.301.bazel @@ -23,12 +23,12 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_cfg-0.0.300//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_query-group-macro-0.0.300//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span": "span", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_vfs-0.0.300//:ra_ap_vfs": "vfs", + "@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span": "span", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -45,7 +45,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ - "@vendor_ts__ra_ap_query-group-macro-0.0.300//:ra_ap_query_group_macro", + "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro", "@vendor_ts__salsa-macros-0.23.0//:salsa_macros", ], rustc_env_files = [ @@ -100,16 +100,16 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__dashmap-6.1.0//:dashmap", - "@vendor_ts__indexmap-2.10.0//:indexmap", + "@vendor_ts__indexmap-2.11.1//:indexmap", "@vendor_ts__la-arena-0.3.1//:la_arena", - "@vendor_ts__ra_ap_cfg-0.0.300//:ra_ap_cfg", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax", - "@vendor_ts__ra_ap_vfs-0.0.300//:ra_ap_vfs", + "@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__salsa-0.23.0//:salsa", "@vendor_ts__semver-1.0.26//:semver", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.301.bazel similarity index 93% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.301.bazel index 164407b7d4e3..f36d971d226b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.301.bazel @@ -23,8 +23,8 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -95,10 +95,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__tracing-0.1.41//:tracing", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.301.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.301.bazel index 43ed08a0c63a..900a93657940 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.301.bazel @@ -88,5 +88,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel similarity index 76% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel index 8ddcf402e834..3134859b4d20 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel @@ -23,16 +23,16 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.300//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_hir_def-0.0.300//:ra_ap_hir_def": "hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.300//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_hir_ty-0.0.300//:ra_ap_hir_ty": "hir_ty", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_def-0.0.301//:ra_ap_hir_def": "hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.301//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_hir_ty-0.0.301//:ra_ap_hir_ty": "hir_ty", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -100,22 +100,22 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", "@vendor_ts__either-1.15.0//:either", - "@vendor_ts__indexmap-2.10.0//:indexmap", + "@vendor_ts__indexmap-2.11.1//:indexmap", "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.300//:ra_ap_cfg", - "@vendor_ts__ra_ap_hir_def-0.0.300//:ra_ap_hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.300//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_hir_ty-0.0.300//:ra_ap_hir_ty", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt", + "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_def-0.0.301//:ra_ap_hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.301//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_hir_ty-0.0.301//:ra_ap_hir_ty", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__smallvec-1.15.1//:smallvec", "@vendor_ts__tracing-0.1.41//:tracing", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.301.bazel similarity index 77% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.301.bazel index c44207c333df..e97671e1b1be 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.301.bazel @@ -23,16 +23,16 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.300//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_hir_expand-0.0.300//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_mbe-0.0.300//:ra_ap_mbe": "mbe", - "@vendor_ts__ra_ap_query-group-macro-0.0.300//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.301//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_mbe-0.0.301//:ra_ap_mbe": "mbe", + "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -49,7 +49,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ - "@vendor_ts__ra_ap_query-group-macro-0.0.300//:ra_ap_query_group_macro", + "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro", "@vendor_ts__salsa-macros-0.23.0//:salsa_macros", ], rustc_env_files = [ @@ -104,28 +104,28 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.9.1//:bitflags", - "@vendor_ts__cov-mark-2.0.0//:cov_mark", + "@vendor_ts__bitflags-2.9.4//:bitflags", + "@vendor_ts__cov-mark-2.1.0//:cov_mark", "@vendor_ts__drop_bomb-0.1.5//:drop_bomb", "@vendor_ts__either-1.15.0//:either", "@vendor_ts__fst-0.4.7//:fst", - "@vendor_ts__indexmap-2.10.0//:indexmap", + "@vendor_ts__indexmap-2.11.1//:indexmap", "@vendor_ts__itertools-0.14.0//:itertools", "@vendor_ts__la-arena-0.3.1//:la_arena", "@vendor_ts__ra-ap-rustc_abi-0.123.0//:ra_ap_rustc_abi", "@vendor_ts__ra-ap-rustc_parse_format-0.121.0//:ra_ap_rustc_parse_format", - "@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.300//:ra_ap_cfg", - "@vendor_ts__ra_ap_hir_expand-0.0.300//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern", - "@vendor_ts__ra_ap_mbe-0.0.300//:ra_ap_mbe", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt", + "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.301//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", + "@vendor_ts__ra_ap_mbe-0.0.301//:ra_ap_mbe", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:rustc_apfloat", "@vendor_ts__salsa-0.23.0//:salsa", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.301.bazel similarity index 75% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.301.bazel index af75f70ce67d..f5ad3aa61e0c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.301.bazel @@ -23,17 +23,17 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.300//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_mbe-0.0.300//:ra_ap_mbe": "mbe", - "@vendor_ts__ra_ap_parser-0.0.300//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_query-group-macro-0.0.300//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_syntax-bridge-0.0.300//:ra_ap_syntax_bridge": "syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_mbe-0.0.301//:ra_ap_mbe": "mbe", + "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.301//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -50,7 +50,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ - "@vendor_ts__ra_ap_query-group-macro-0.0.300//:ra_ap_query_group_macro", + "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro", "@vendor_ts__salsa-macros-0.23.0//:salsa_macros", ], rustc_env_files = [ @@ -105,21 +105,21 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ - "@vendor_ts__cov-mark-2.0.0//:cov_mark", + "@vendor_ts__cov-mark-2.1.0//:cov_mark", "@vendor_ts__either-1.15.0//:either", "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.300//:ra_ap_cfg", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern", - "@vendor_ts__ra_ap_mbe-0.0.300//:ra_ap_mbe", - "@vendor_ts__ra_ap_parser-0.0.300//:ra_ap_parser", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax", - "@vendor_ts__ra_ap_syntax-bridge-0.0.300//:ra_ap_syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt", + "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", + "@vendor_ts__ra_ap_mbe-0.0.301//:ra_ap_mbe", + "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.301//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__salsa-0.23.0//:salsa", "@vendor_ts__smallvec-1.15.1//:smallvec", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.301.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.301.bazel index 689b518ccf38..7190559d3d8a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.301.bazel @@ -23,14 +23,14 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_hir_def-0.0.300//:ra_ap_hir_def": "hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.300//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_query-group-macro-0.0.300//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_hir_def-0.0.301//:ra_ap_hir_def": "hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.301//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax": "syntax", }, compile_data = glob( include = ["**"], @@ -48,7 +48,7 @@ rust_library( edition = "2024", proc_macro_deps = [ "@vendor_ts__chalk-derive-0.103.0//:chalk_derive", - "@vendor_ts__ra_ap_query-group-macro-0.0.300//:ra_ap_query_group_macro", + "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro", "@vendor_ts__salsa-macros-0.23.0//:salsa_macros", ], rustc_env_files = [ @@ -103,30 +103,30 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.9.1//:bitflags", + "@vendor_ts__bitflags-2.9.4//:bitflags", "@vendor_ts__chalk-ir-0.103.0//:chalk_ir", "@vendor_ts__chalk-recursive-0.103.0//:chalk_recursive", "@vendor_ts__chalk-solve-0.103.0//:chalk_solve", - "@vendor_ts__cov-mark-2.0.0//:cov_mark", + "@vendor_ts__cov-mark-2.1.0//:cov_mark", "@vendor_ts__either-1.15.0//:either", "@vendor_ts__ena-0.14.3//:ena", - "@vendor_ts__indexmap-2.10.0//:indexmap", + "@vendor_ts__indexmap-2.11.1//:indexmap", "@vendor_ts__itertools-0.14.0//:itertools", "@vendor_ts__la-arena-0.3.1//:la_arena", "@vendor_ts__oorandom-11.1.5//:oorandom", "@vendor_ts__ra-ap-rustc_abi-0.123.0//:ra_ap_rustc_abi", "@vendor_ts__ra-ap-rustc_index-0.123.0//:ra_ap_rustc_index", "@vendor_ts__ra-ap-rustc_pattern_analysis-0.123.0//:ra_ap_rustc_pattern_analysis", - "@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db", - "@vendor_ts__ra_ap_hir_def-0.0.300//:ra_ap_hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.300//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax", + "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db", + "@vendor_ts__ra_ap_hir_def-0.0.301//:ra_ap_hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.301//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:rustc_apfloat", "@vendor_ts__salsa-0.23.0//:salsa", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.301.bazel similarity index 77% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.301.bazel index af1e936dc0ca..9df94ba41656 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.301.bazel @@ -23,15 +23,15 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_hir-0.0.300//:ra_ap_hir": "hir", - "@vendor_ts__ra_ap_parser-0.0.300//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_profile-0.0.300//:ra_ap_profile": "profile", - "@vendor_ts__ra_ap_query-group-macro-0.0.300//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_vfs-0.0.300//:ra_ap_vfs": "vfs", + "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_hir-0.0.301//:ra_ap_hir": "hir", + "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_profile-0.0.301//:ra_ap_profile": "profile", + "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -48,7 +48,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ - "@vendor_ts__ra_ap_query-group-macro-0.0.300//:ra_ap_query_group_macro", + "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro", "@vendor_ts__salsa-macros-0.23.0//:salsa_macros", ], rustc_env_files = [ @@ -103,28 +103,28 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.9.1//:bitflags", - "@vendor_ts__cov-mark-2.0.0//:cov_mark", + "@vendor_ts__bitflags-2.9.4//:bitflags", + "@vendor_ts__cov-mark-2.1.0//:cov_mark", "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", "@vendor_ts__either-1.15.0//:either", "@vendor_ts__fst-0.4.7//:fst", - "@vendor_ts__indexmap-2.10.0//:indexmap", + "@vendor_ts__indexmap-2.11.1//:indexmap", "@vendor_ts__itertools-0.14.0//:itertools", "@vendor_ts__line-index-0.1.2//:line_index", "@vendor_ts__memchr-2.7.5//:memchr", "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", - "@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db", - "@vendor_ts__ra_ap_hir-0.0.300//:ra_ap_hir", - "@vendor_ts__ra_ap_parser-0.0.300//:ra_ap_parser", - "@vendor_ts__ra_ap_profile-0.0.300//:ra_ap_profile", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax", - "@vendor_ts__ra_ap_vfs-0.0.300//:ra_ap_vfs", - "@vendor_ts__rayon-1.10.0//:rayon", + "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db", + "@vendor_ts__ra_ap_hir-0.0.301//:ra_ap_hir", + "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser", + "@vendor_ts__ra_ap_profile-0.0.301//:ra_ap_profile", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs", + "@vendor_ts__rayon-1.11.0//:rayon", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__salsa-0.23.0//:salsa", "@vendor_ts__tracing-0.1.41//:tracing", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.301.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.301.bazel index 27f7bab382c9..556a788d138b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.301.bazel @@ -88,7 +88,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__dashmap-6.1.0//:dashmap", "@vendor_ts__hashbrown-0.14.5//:hashbrown", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.301.bazel similarity index 78% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.301.bazel index 946a2dc743ff..81cbfdd3eaf4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.301.bazel @@ -23,15 +23,15 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_hir_expand-0.0.300//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_ide_db-0.0.300//:ra_ap_ide_db": "ide_db", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_proc_macro_api-0.0.300//:ra_ap_proc_macro_api": "proc_macro_api", - "@vendor_ts__ra_ap_project_model-0.0.300//:ra_ap_project_model": "project_model", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span": "span", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt": "tt", - "@vendor_ts__ra_ap_vfs-0.0.300//:ra_ap_vfs": "vfs", - "@vendor_ts__ra_ap_vfs-notify-0.0.300//:ra_ap_vfs_notify": "vfs_notify", + "@vendor_ts__ra_ap_hir_expand-0.0.301//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_ide_db-0.0.301//:ra_ap_ide_db": "ide_db", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_proc_macro_api-0.0.301//:ra_ap_proc_macro_api": "proc_macro_api", + "@vendor_ts__ra_ap_project_model-0.0.301//:ra_ap_project_model": "project_model", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span": "span", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs": "vfs", + "@vendor_ts__ra_ap_vfs-notify-0.0.301//:ra_ap_vfs_notify": "vfs_notify", }, compile_data = glob( include = ["**"], @@ -99,20 +99,20 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__anyhow-1.0.99//:anyhow", "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__ra_ap_hir_expand-0.0.300//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_ide_db-0.0.300//:ra_ap_ide_db", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern", - "@vendor_ts__ra_ap_proc_macro_api-0.0.300//:ra_ap_proc_macro_api", - "@vendor_ts__ra_ap_project_model-0.0.300//:ra_ap_project_model", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt", - "@vendor_ts__ra_ap_vfs-0.0.300//:ra_ap_vfs", - "@vendor_ts__ra_ap_vfs-notify-0.0.300//:ra_ap_vfs_notify", + "@vendor_ts__ra_ap_hir_expand-0.0.301//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_ide_db-0.0.301//:ra_ap_ide_db", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", + "@vendor_ts__ra_ap_proc_macro_api-0.0.301//:ra_ap_proc_macro_api", + "@vendor_ts__ra_ap_project_model-0.0.301//:ra_ap_project_model", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt", + "@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs", + "@vendor_ts__ra_ap_vfs-notify-0.0.301//:ra_ap_vfs_notify", "@vendor_ts__tracing-0.1.41//:tracing", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.301.bazel similarity index 83% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.301.bazel index 5417da2031a7..58d0a9a3d87b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.301.bazel @@ -23,12 +23,12 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_parser-0.0.300//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-bridge-0.0.300//:ra_ap_syntax_bridge": "syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-bridge-0.0.301//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -96,17 +96,17 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__cov-mark-2.0.0//:cov_mark", + "@vendor_ts__cov-mark-2.1.0//:cov_mark", "@vendor_ts__ra-ap-rustc_lexer-0.123.0//:ra_ap_rustc_lexer", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern", - "@vendor_ts__ra_ap_parser-0.0.300//:ra_ap_parser", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-bridge-0.0.300//:ra_ap_syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", + "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-bridge-0.0.301//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__smallvec-1.15.1//:smallvec", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.301.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.301.bazel index 8ed11d914952..f27215feb49d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.301.bazel @@ -23,7 +23,7 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_edition-0.0.300//:ra_ap_edition": "edition", + "@vendor_ts__ra_ap_edition-0.0.301//:ra_ap_edition": "edition", }, compile_data = glob( include = ["**"], @@ -95,11 +95,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__drop_bomb-0.1.5//:drop_bomb", "@vendor_ts__ra-ap-rustc_lexer-0.123.0//:ra_ap_rustc_lexer", - "@vendor_ts__ra_ap_edition-0.0.300//:ra_ap_edition", + "@vendor_ts__ra_ap_edition-0.0.301//:ra_ap_edition", "@vendor_ts__rustc-literal-escaper-0.0.4//:rustc_literal_escaper", "@vendor_ts__tracing-0.1.41//:tracing", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.301.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.301.bazel index ecaa639c662e..68cfd57af753 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.301.bazel @@ -91,8 +91,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ - "@vendor_ts__camino-1.1.10//:camino", + "@vendor_ts__camino-1.1.12//:camino", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.301.bazel similarity index 84% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.301.bazel index 332966ee7491..b23675474150 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.301.bazel @@ -23,11 +23,11 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_paths-0.0.300//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.301//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -98,17 +98,17 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ - "@vendor_ts__indexmap-2.10.0//:indexmap", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern", - "@vendor_ts__ra_ap_paths-0.0.300//:ra_ap_paths", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt", + "@vendor_ts__indexmap-2.11.1//:indexmap", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.301//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__serde-1.0.219//:serde", - "@vendor_ts__serde_json-1.0.142//:serde_json", + "@vendor_ts__serde_json-1.0.143//:serde_json", "@vendor_ts__tracing-0.1.41//:tracing", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.301.bazel similarity index 90% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.301.bazel index c897e7748da6..89463b1ab354 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.301.bazel @@ -88,53 +88,53 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ - "@vendor_ts__cfg-if-1.0.1//:cfg_if", + "@vendor_ts__cfg-if-1.0.3//:cfg_if", ] + select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "//conditions:default": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.301.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.301.bazel index fb930fafd0ab..4332ecda1a72 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.301.bazel @@ -23,13 +23,13 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.300//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_paths-0.0.300//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_toolchain-0.0.300//:ra_ap_toolchain": "toolchain", + "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.301//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_toolchain-0.0.301//:ra_ap_toolchain": "toolchain", }, compile_data = glob( include = ["**"], @@ -100,23 +100,23 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__anyhow-1.0.99//:anyhow", "@vendor_ts__cargo_metadata-0.21.0//:cargo_metadata", "@vendor_ts__itertools-0.14.0//:itertools", "@vendor_ts__la-arena-0.3.1//:la_arena", - "@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.300//:ra_ap_cfg", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern", - "@vendor_ts__ra_ap_paths-0.0.300//:ra_ap_paths", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", - "@vendor_ts__ra_ap_toolchain-0.0.300//:ra_ap_toolchain", + "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.301//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + "@vendor_ts__ra_ap_toolchain-0.0.301//:ra_ap_toolchain", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__semver-1.0.26//:semver", "@vendor_ts__serde-1.0.219//:serde", - "@vendor_ts__serde_json-1.0.142//:serde_json", + "@vendor_ts__serde_json-1.0.143//:serde_json", "@vendor_ts__temp-dir-0.1.16//:temp_dir", "@vendor_ts__tracing-0.1.41//:tracing", "@vendor_ts__triomphe-0.1.14//:triomphe", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.301.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.301.bazel index a5444525a4aa..a4099d462eef 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.301.bazel @@ -88,10 +88,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.301.bazel similarity index 91% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.301.bazel index 888665c53d4e..e9e64e5fa085 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.301.bazel @@ -23,9 +23,9 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_vfs-0.0.300//:ra_ap_vfs": "vfs", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -97,13 +97,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__hashbrown-0.14.5//:hashbrown", "@vendor_ts__la-arena-0.3.1//:la_arena", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax", - "@vendor_ts__ra_ap_vfs-0.0.300//:ra_ap_vfs", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__salsa-0.23.0//:salsa", "@vendor_ts__text-size-1.1.1//:text_size", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.301.bazel similarity index 79% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.301.bazel index 0ec1196ed3f6..71c7a91ccf40 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.301.bazel @@ -88,7 +88,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", @@ -97,88 +97,88 @@ rust_library( "@vendor_ts__tracing-0.1.41//:tracing", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__miow-0.6.0//:miow", # cfg(windows) + "@vendor_ts__miow-0.6.1//:miow", # cfg(windows) "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__miow-0.6.0//:miow", # cfg(windows) + "@vendor_ts__miow-0.6.1//:miow", # cfg(windows) "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__miow-0.6.0//:miow", # cfg(windows) + "@vendor_ts__miow-0.6.1//:miow", # cfg(windows) "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.301.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.301.bazel index 77c147097a4b..277ab6b967c0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.301.bazel @@ -23,8 +23,8 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_parser-0.0.300//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", }, compile_data = glob( include = ["**"], @@ -92,12 +92,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__either-1.15.0//:either", "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__ra_ap_parser-0.0.300//:ra_ap_parser", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", + "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", "@vendor_ts__rowan-0.15.15//:rowan", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__rustc-literal-escaper-0.0.4//:rustc_literal_escaper", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.301.bazel similarity index 84% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.301.bazel index b9741a866e05..9894d99260ca 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.301.bazel @@ -23,12 +23,12 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_parser-0.0.300//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -96,14 +96,14 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern", - "@vendor_ts__ra_ap_parser-0.0.300//:ra_ap_parser", - "@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax", - "@vendor_ts__ra_ap_tt-0.0.300//:ra_ap_tt", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", + "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.301.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.301.bazel index b077ab9b1ef8..dd6e2e7de24d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.301.bazel @@ -88,9 +88,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ - "@vendor_ts__camino-1.1.10//:camino", + "@vendor_ts__camino-1.1.12//:camino", "@vendor_ts__home-0.5.11//:home", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.301.bazel similarity index 93% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.301.bazel index a9dc4cbb42f3..3eb42ebd0196 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.301.bazel @@ -23,8 +23,8 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", }, compile_data = glob( include = ["**"], @@ -92,12 +92,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", "@vendor_ts__ra-ap-rustc_lexer-0.123.0//:ra_ap_rustc_lexer", - "@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", + "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", "@vendor_ts__text-size-1.1.1//:text_size", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.301.bazel similarity index 92% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.301.bazel index 1ddf26373e25..33b4db4d3562 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.301.bazel @@ -23,8 +23,8 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_paths-0.0.300//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_paths-0.0.301//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", }, compile_data = glob( include = ["**"], @@ -92,14 +92,14 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", "@vendor_ts__fst-0.4.7//:fst", - "@vendor_ts__indexmap-2.10.0//:indexmap", + "@vendor_ts__indexmap-2.11.1//:indexmap", "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", - "@vendor_ts__ra_ap_paths-0.0.300//:ra_ap_paths", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", + "@vendor_ts__ra_ap_paths-0.0.301//:ra_ap_paths", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__tracing-0.1.41//:tracing", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.300.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.301.bazel similarity index 89% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.300.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.301.bazel index 1c9c87f94bfc..1e93e6aa96d9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.300.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.301.bazel @@ -23,9 +23,9 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_paths-0.0.300//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_vfs-0.0.300//:ra_ap_vfs": "vfs", + "@vendor_ts__ra_ap_paths-0.0.301//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -93,14 +93,14 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.300", + version = "0.0.301", deps = [ "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", - "@vendor_ts__notify-8.0.0//:notify", - "@vendor_ts__ra_ap_paths-0.0.300//:ra_ap_paths", - "@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx", - "@vendor_ts__ra_ap_vfs-0.0.300//:ra_ap_vfs", - "@vendor_ts__rayon-1.10.0//:rayon", + "@vendor_ts__notify-8.2.0//:notify", + "@vendor_ts__ra_ap_paths-0.0.301//:ra_ap_paths", + "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + "@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs", + "@vendor_ts__rayon-1.11.0//:rayon", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__tracing-0.1.41//:tracing", "@vendor_ts__walkdir-2.5.0//:walkdir", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.10.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.11.0.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.10.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.11.0.bazel index 54b0313af6f7..25d4bda52c87 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.10.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.11.0.bazel @@ -88,9 +88,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.10.0", + version = "1.11.0", deps = [ "@vendor_ts__either-1.15.0//:either", - "@vendor_ts__rayon-core-1.12.1//:rayon_core", + "@vendor_ts__rayon-core-1.13.0//:rayon_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-core-1.12.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-core-1.13.0.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-core-1.12.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-core-1.13.0.bazel index 32592b58e8a1..9925b0366bda 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-core-1.12.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-core-1.13.0.bazel @@ -92,11 +92,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.12.1", + version = "1.13.0", deps = [ "@vendor_ts__crossbeam-deque-0.8.6//:crossbeam_deque", "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", - "@vendor_ts__rayon-core-1.12.1//:build_script_build", + "@vendor_ts__rayon-core-1.13.0//:build_script_build", ], ) @@ -149,7 +149,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.12.1", + version = "1.13.0", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.13.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.13.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel index 2c22ff5a4c54..f9aa145a63c8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.13.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel @@ -88,8 +88,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.5.13", + version = "0.5.17", deps = [ - "@vendor_ts__bitflags-2.9.1//:bitflags", + "@vendor_ts__bitflags-2.9.4//:bitflags", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel index 38fec2277f01..ba548e9113ae 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel @@ -90,8 +90,8 @@ rust_proc_macro( }), version = "1.0.24", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.2.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.2.bazel index 92e631bc9578..1c4f925a111f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.2.bazel @@ -107,11 +107,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.11.1", + version = "1.11.2", deps = [ "@vendor_ts__aho-corasick-1.1.3//:aho_corasick", "@vendor_ts__memchr-2.7.5//:memchr", - "@vendor_ts__regex-automata-0.4.9//:regex_automata", - "@vendor_ts__regex-syntax-0.8.5//:regex_syntax", + "@vendor_ts__regex-automata-0.4.10//:regex_automata", + "@vendor_ts__regex-syntax-0.8.6//:regex_syntax", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.1.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.1.10.bazel deleted file mode 100644 index 9b58dc740066..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.1.10.bazel +++ /dev/null @@ -1,100 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "regex_automata", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "regex-syntax", - "std", - ], - crate_root = "src/lib.rs", - edition = "2015", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=regex-automata", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.1.10", - deps = [ - "@vendor_ts__regex-syntax-0.6.29//:regex_syntax", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.10.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.9.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.10.bazel index bdfd5c10b877..4b17c645f346 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.10.bazel @@ -36,7 +36,9 @@ rust_library( ), crate_features = [ "alloc", + "dfa-build", "dfa-onepass", + "dfa-search", "hybrid", "meta", "nfa", @@ -114,10 +116,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.9", + version = "0.4.10", deps = [ "@vendor_ts__aho-corasick-1.1.3//:aho_corasick", "@vendor_ts__memchr-2.7.5//:memchr", - "@vendor_ts__regex-syntax-0.8.5//:regex_syntax", + "@vendor_ts__regex-syntax-0.8.6//:regex_syntax", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.6.29.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.6.29.bazel deleted file mode 100644 index dbfafb2e61fe..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.6.29.bazel +++ /dev/null @@ -1,103 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "regex_syntax", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "unicode", - "unicode-age", - "unicode-bool", - "unicode-case", - "unicode-gencat", - "unicode-perl", - "unicode-script", - "unicode-segment", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=regex-syntax", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.6.29", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.6.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.5.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.6.bazel index 78a2a7ef6bc3..678ff923f0b4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.6.bazel @@ -100,5 +100,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.8.5", + version = "0.8.6", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel index c63cc2939bae..7947e6e3b806 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel @@ -94,7 +94,7 @@ rust_library( }), version = "0.2.3+llvm-462a31f5a5ab", deps = [ - "@vendor_ts__bitflags-2.9.1//:bitflags", + "@vendor_ts__bitflags-2.9.4//:bitflags", "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:build_script_build", "@vendor_ts__smallvec-1.15.1//:smallvec", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.21.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.22.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.21.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.22.bazel index 53d7609768aa..20ead5c4d95d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.21.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.22.bazel @@ -92,9 +92,9 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.21", + version = "1.0.22", deps = [ - "@vendor_ts__rustversion-1.0.21//:build_script_build", + "@vendor_ts__rustversion-1.0.22//:build_script_build", ], ) @@ -146,7 +146,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.21", + version = "1.0.22", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel index 949a19b9b1bd..a7a2366514f8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel @@ -99,17 +99,17 @@ rust_library( }), version = "0.23.0", deps = [ - "@vendor_ts__boxcar-0.2.13//:boxcar", + "@vendor_ts__boxcar-0.2.14//:boxcar", "@vendor_ts__crossbeam-queue-0.3.12//:crossbeam_queue", "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", - "@vendor_ts__hashbrown-0.15.4//:hashbrown", + "@vendor_ts__hashbrown-0.15.5//:hashbrown", "@vendor_ts__hashlink-0.10.0//:hashlink", - "@vendor_ts__indexmap-2.10.0//:indexmap", + "@vendor_ts__indexmap-2.11.1//:indexmap", "@vendor_ts__intrusive-collections-0.9.7//:intrusive_collections", "@vendor_ts__papaya-0.2.3//:papaya", "@vendor_ts__parking_lot-0.12.4//:parking_lot", "@vendor_ts__portable-atomic-1.11.1//:portable_atomic", - "@vendor_ts__rayon-1.10.0//:rayon", + "@vendor_ts__rayon-1.11.0//:rayon", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__salsa-macro-rules-0.23.0//:salsa_macro_rules", "@vendor_ts__smallvec-1.15.1//:smallvec", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.23.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.23.0.bazel index 72f1a5b649aa..03a3ef58912a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.23.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.23.0.bazel @@ -90,9 +90,9 @@ rust_proc_macro( }), version = "0.23.0", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", "@vendor_ts__synstructure-0.13.2//:synstructure", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.same-file-1.0.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.same-file-1.0.6.bazel index 12659c8d66c0..fd655a0ce783 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.same-file-1.0.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.same-file-1.0.6.bazel @@ -91,13 +91,13 @@ rust_library( version = "1.0.6", deps = select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__winapi-util-0.1.9//:winapi_util", # cfg(windows) + "@vendor_ts__winapi-util-0.1.11//:winapi_util", # cfg(windows) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__winapi-util-0.1.9//:winapi_util", # cfg(windows) + "@vendor_ts__winapi-util-0.1.11//:winapi_util", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__winapi-util-0.1.9//:winapi_util", # cfg(windows) + "@vendor_ts__winapi-util-0.1.11//:winapi_util", # cfg(windows) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-0.9.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-0.9.0.bazel index 3f8b85b24489..639b6c71a0d3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-0.9.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-0.9.0.bazel @@ -90,9 +90,9 @@ rust_library( }), version = "0.9.0", deps = [ - "@vendor_ts__dyn-clone-1.0.19//:dyn_clone", + "@vendor_ts__dyn-clone-1.0.20//:dyn_clone", "@vendor_ts__ref-cast-1.0.24//:ref_cast", "@vendor_ts__serde-1.0.219//:serde", - "@vendor_ts__serde_json-1.0.142//:serde_json", + "@vendor_ts__serde_json-1.0.143//:serde_json", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.0.4.bazel index 1197212d2bcb..dce895551c83 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.0.4.bazel @@ -90,9 +90,9 @@ rust_library( }), version = "1.0.4", deps = [ - "@vendor_ts__dyn-clone-1.0.19//:dyn_clone", + "@vendor_ts__dyn-clone-1.0.20//:dyn_clone", "@vendor_ts__ref-cast-1.0.24//:ref_cast", "@vendor_ts__serde-1.0.219//:serde", - "@vendor_ts__serde_json-1.0.142//:serde_json", + "@vendor_ts__serde_json-1.0.143//:serde_json", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.seize-0.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.seize-0.5.0.bazel index f7104958ace5..b54e1b89da30 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.seize-0.5.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.seize-0.5.0.bazel @@ -96,7 +96,7 @@ rust_library( }), version = "0.5.0", deps = [ - "@vendor_ts__libc-0.2.174//:libc", + "@vendor_ts__libc-0.2.175//:libc", ] + select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.52.0//:windows_sys", # aarch64-pc-windows-msvc diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.7.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel index 8336f37c318a..0191982b73aa 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel @@ -88,7 +88,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.7", + version = "0.1.8", deps = [ "@vendor_ts__erased-serde-0.4.6//:erased_serde", "@vendor_ts__serde-1.0.219//:serde", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.219.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.219.bazel index 54f67711a1ef..f11ee965dbac 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.219.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.219.bazel @@ -93,8 +93,8 @@ rust_proc_macro( }), version = "1.0.219", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.142.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.142.bazel deleted file mode 100644 index 2da5ba551f16..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.142.bazel +++ /dev/null @@ -1,171 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load( - "@rules_rust//cargo:defs.bzl", - "cargo_build_script", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "serde_json", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "std", - "unbounded_depth", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=serde_json", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "1.0.142", - deps = [ - "@vendor_ts__itoa-1.0.15//:itoa", - "@vendor_ts__memchr-2.7.5//:memchr", - "@vendor_ts__ryu-1.0.20//:ryu", - "@vendor_ts__serde-1.0.219//:serde", - "@vendor_ts__serde_json-1.0.142//:build_script_build", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "std", - "unbounded_depth", - ], - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2021", - pkg_name = "serde_json", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=serde_json", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.0.142", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.143.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.143.bazel new file mode 100644 index 000000000000..1a4cca70a4fb --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.143.bazel @@ -0,0 +1,331 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load( + "@rules_rust//cargo:defs.bzl", + "cargo_build_script", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "serde_json", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "std", + "unbounded_depth", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "indexmap", # aarch64-apple-darwin + "preserve_order", # aarch64-apple-darwin + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "indexmap", # aarch64-pc-windows-msvc + "preserve_order", # aarch64-pc-windows-msvc + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "indexmap", # aarch64-unknown-linux-gnu + "preserve_order", # aarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "indexmap", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "preserve_order", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "indexmap", # arm-unknown-linux-gnueabi + "preserve_order", # arm-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "indexmap", # i686-pc-windows-msvc + "preserve_order", # i686-pc-windows-msvc + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "indexmap", # i686-unknown-linux-gnu + "preserve_order", # i686-unknown-linux-gnu + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "indexmap", # powerpc-unknown-linux-gnu + "preserve_order", # powerpc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "indexmap", # s390x-unknown-linux-gnu + "preserve_order", # s390x-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "indexmap", # x86_64-apple-darwin + "preserve_order", # x86_64-apple-darwin + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "indexmap", # x86_64-pc-windows-msvc + "preserve_order", # x86_64-pc-windows-msvc + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "indexmap", # x86_64-unknown-freebsd + "preserve_order", # x86_64-unknown-freebsd + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "indexmap", # x86_64-unknown-linux-gnu + "preserve_order", # x86_64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "indexmap", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "preserve_order", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + ], + "//conditions:default": [], + }), + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=serde_json", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.143", + deps = [ + "@vendor_ts__itoa-1.0.15//:itoa", + "@vendor_ts__memchr-2.7.5//:memchr", + "@vendor_ts__ryu-1.0.20//:ryu", + "@vendor_ts__serde-1.0.219//:serde", + "@vendor_ts__serde_json-1.0.143//:build_script_build", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__indexmap-2.11.1//:indexmap", # aarch64-apple-darwin + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "@vendor_ts__indexmap-2.11.1//:indexmap", # aarch64-pc-windows-msvc + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__indexmap-2.11.1//:indexmap", # aarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__indexmap-2.11.1//:indexmap", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__indexmap-2.11.1//:indexmap", # arm-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__indexmap-2.11.1//:indexmap", # i686-pc-windows-msvc + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__indexmap-2.11.1//:indexmap", # i686-unknown-linux-gnu + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__indexmap-2.11.1//:indexmap", # powerpc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__indexmap-2.11.1//:indexmap", # s390x-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__indexmap-2.11.1//:indexmap", # x86_64-apple-darwin + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__indexmap-2.11.1//:indexmap", # x86_64-pc-windows-msvc + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__indexmap-2.11.1//:indexmap", # x86_64-unknown-freebsd + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__indexmap-2.11.1//:indexmap", # x86_64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__indexmap-2.11.1//:indexmap", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + ], + "//conditions:default": [], + }), +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "std", + "unbounded_depth", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "indexmap", # aarch64-apple-darwin + "preserve_order", # aarch64-apple-darwin + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "indexmap", # aarch64-pc-windows-msvc + "preserve_order", # aarch64-pc-windows-msvc + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "indexmap", # aarch64-unknown-linux-gnu + "preserve_order", # aarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "indexmap", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "preserve_order", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "indexmap", # arm-unknown-linux-gnueabi + "preserve_order", # arm-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "indexmap", # i686-pc-windows-msvc + "preserve_order", # i686-pc-windows-msvc + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "indexmap", # i686-unknown-linux-gnu + "preserve_order", # i686-unknown-linux-gnu + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "indexmap", # powerpc-unknown-linux-gnu + "preserve_order", # powerpc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "indexmap", # s390x-unknown-linux-gnu + "preserve_order", # s390x-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "indexmap", # x86_64-apple-darwin + "preserve_order", # x86_64-apple-darwin + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "indexmap", # x86_64-pc-windows-msvc + "preserve_order", # x86_64-pc-windows-msvc + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "indexmap", # x86_64-unknown-freebsd + "preserve_order", # x86_64-unknown-freebsd + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "indexmap", # x86_64-unknown-linux-gnu + "preserve_order", # x86_64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "indexmap", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "preserve_order", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + ], + "//conditions:default": [], + }), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "serde_json", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=serde_json", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.143", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.0.bazel index e36f146513e7..5ce2041aa7f0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.0.bazel @@ -91,8 +91,8 @@ rust_proc_macro( version = "3.14.0", deps = [ "@vendor_ts__darling-0.20.11//:darling", - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel index 9a4e6a300877..46287f3ed281 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel @@ -90,7 +90,7 @@ rust_library( }), version = "0.9.34+deprecated", deps = [ - "@vendor_ts__indexmap-2.10.0//:indexmap", + "@vendor_ts__indexmap-2.11.1//:indexmap", "@vendor_ts__itoa-1.0.15//:itoa", "@vendor_ts__ryu-1.0.20//:ryu", "@vendor_ts__serde-1.0.219//:serde", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.104.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.106.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.104.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.106.bazel index d33a680bd2ee..a4bd833e8e59 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.104.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.106.bazel @@ -101,10 +101,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.104", + version = "2.0.106", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__unicode-ident-1.0.18//:unicode_ident", + "@vendor_ts__unicode-ident-1.0.19//:unicode_ident", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.2.bazel index 5b31bf98d6f1..ed7ebbca4014 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.2.bazel @@ -94,8 +94,8 @@ rust_library( }), version = "0.13.2", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.12.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.16.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.12.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.16.bazel index 22a50f358c84..e50ec05152d5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.12.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.16.bazel @@ -45,7 +45,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__thiserror-impl-2.0.12//:thiserror_impl", + "@vendor_ts__thiserror-impl-2.0.16//:thiserror_impl", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -99,9 +99,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.12", + version = "2.0.16", deps = [ - "@vendor_ts__thiserror-2.0.12//:build_script_build", + "@vendor_ts__thiserror-2.0.16//:build_script_build", ], ) @@ -157,7 +157,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "2.0.12", + version = "2.0.16", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.12.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.16.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.12.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.16.bazel index ff86a30bb1c6..4f363e2e5ca5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.12.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.16.bazel @@ -88,10 +88,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.12", + version = "2.0.16", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.8.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel index fdb1e3df88ca..649948406e7a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.8.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel @@ -88,9 +88,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.1.8", + version = "1.1.9", deps = [ - "@vendor_ts__cfg-if-1.0.1//:cfg_if", - "@vendor_ts__once_cell-1.21.3//:once_cell", + "@vendor_ts__cfg-if-1.0.3//:cfg_if", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.41.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.41.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.bazel index 1b720393766f..9df78d1b4b6d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.41.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.bazel @@ -88,11 +88,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.3.41", + version = "0.3.43", deps = [ - "@vendor_ts__deranged-0.4.0//:deranged", + "@vendor_ts__deranged-0.5.3//:deranged", "@vendor_ts__num-conv-0.1.0//:num_conv", "@vendor_ts__powerfmt-0.2.0//:powerfmt", - "@vendor_ts__time-core-0.1.4//:time_core", + "@vendor_ts__time-core-0.1.6//:time_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.6.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.4.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.6.bazel index ba20cfd5d040..31940c3f306c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.6.bazel @@ -88,5 +88,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.4", + version = "0.1.6", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.22.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.24.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.22.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.24.bazel index 97ace68543e7..3e3c5b921ab2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.22.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.24.bazel @@ -88,9 +88,9 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.22", + version = "0.2.24", deps = [ "@vendor_ts__num-conv-0.1.0//:num_conv", - "@vendor_ts__time-core-0.1.4//:time_core", + "@vendor_ts__time-core-0.1.6//:time_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel index e59752c07878..c499cc1b6804 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel @@ -97,6 +97,6 @@ rust_library( }), version = "0.8.1", deps = [ - "@vendor_ts__zerovec-0.11.2//:zerovec", + "@vendor_ts__zerovec-0.11.4//:zerovec", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.5.bazel index 196f0c87a31e..50e11857e38f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.5.bazel @@ -102,6 +102,6 @@ rust_library( "@vendor_ts__toml_datetime-0.7.0//:toml_datetime", "@vendor_ts__toml_parser-1.0.2//:toml_parser", "@vendor_ts__toml_writer-1.0.2//:toml_writer", - "@vendor_ts__winnow-0.7.11//:winnow", + "@vendor_ts__winnow-0.7.13//:winnow", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel index 73e49a5bec17..dad3750bcfec 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel @@ -95,11 +95,11 @@ rust_library( }), version = "0.22.27", deps = [ - "@vendor_ts__indexmap-2.10.0//:indexmap", + "@vendor_ts__indexmap-2.11.1//:indexmap", "@vendor_ts__serde-1.0.219//:serde", "@vendor_ts__serde_spanned-0.6.9//:serde_spanned", "@vendor_ts__toml_datetime-0.6.11//:toml_datetime", "@vendor_ts__toml_write-0.1.2//:toml_write", - "@vendor_ts__winnow-0.7.11//:winnow", + "@vendor_ts__winnow-0.7.13//:winnow", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.2.bazel index d5c30a262907..424946c20a6a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.2.bazel @@ -94,6 +94,6 @@ rust_library( }), version = "1.0.2", deps = [ - "@vendor_ts__winnow-0.7.11//:winnow", + "@vendor_ts__winnow-0.7.13//:winnow", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.30.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.30.bazel index fa6532ba1fdf..f426539a31c0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.30.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.30.bazel @@ -90,8 +90,8 @@ rust_proc_macro( }), version = "0.1.30", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-flame-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-flame-0.2.0.bazel index 7bc42503a2b3..49318221b2f9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-flame-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-flame-0.2.0.bazel @@ -96,6 +96,6 @@ rust_library( deps = [ "@vendor_ts__lazy_static-1.5.0//:lazy_static", "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__tracing-subscriber-0.3.19//:tracing_subscriber", + "@vendor_ts__tracing-subscriber-0.3.20//:tracing_subscriber", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel index afde86be9452..884615bcabe0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel @@ -94,7 +94,7 @@ rust_library( }), version = "0.2.0", deps = [ - "@vendor_ts__log-0.4.27//:log", + "@vendor_ts__log-0.4.28//:log", "@vendor_ts__once_cell-1.21.3//:once_cell", "@vendor_ts__tracing-core-0.1.34//:tracing_core", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.20.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.19.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.20.bazel index b66d0003b2a4..13b54631970b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.19.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.20.bazel @@ -43,7 +43,6 @@ rust_library( "matchers", "nu-ansi-term", "once_cell", - "regex", "registry", "sharded-slab", "smallvec", @@ -106,15 +105,15 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.3.19", + version = "0.3.20", deps = [ - "@vendor_ts__matchers-0.1.0//:matchers", - "@vendor_ts__nu-ansi-term-0.46.0//:nu_ansi_term", + "@vendor_ts__matchers-0.2.0//:matchers", + "@vendor_ts__nu-ansi-term-0.50.1//:nu_ansi_term", "@vendor_ts__once_cell-1.21.3//:once_cell", - "@vendor_ts__regex-1.11.1//:regex", + "@vendor_ts__regex-automata-0.4.10//:regex_automata", "@vendor_ts__sharded-slab-0.1.7//:sharded_slab", "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__thread_local-1.1.8//:thread_local", + "@vendor_ts__thread_local-1.1.9//:thread_local", "@vendor_ts__tracing-0.1.41//:tracing", "@vendor_ts__tracing-core-0.1.34//:tracing_core", "@vendor_ts__tracing-log-0.2.0//:tracing_log", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.24.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel similarity index 93% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.24.6.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel index cfa7b65f2055..0cb981e47550 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.24.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel @@ -96,13 +96,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.24.6", + version = "0.25.9", deps = [ - "@vendor_ts__regex-1.11.1//:regex", - "@vendor_ts__regex-syntax-0.8.5//:regex_syntax", + "@vendor_ts__regex-1.11.2//:regex", + "@vendor_ts__regex-syntax-0.8.6//:regex_syntax", "@vendor_ts__streaming-iterator-0.1.9//:streaming_iterator", - "@vendor_ts__tree-sitter-0.24.6//:build_script_build", - "@vendor_ts__tree-sitter-language-0.1.3//:tree_sitter_language", + "@vendor_ts__tree-sitter-0.25.9//:build_script_build", + "@vendor_ts__tree-sitter-language-0.1.5//:tree_sitter_language", ], ) @@ -159,10 +159,11 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "0.24.6", + version = "0.25.9", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.29//:cc", + "@vendor_ts__cc-1.2.37//:cc", + "@vendor_ts__serde_json-1.0.143//:serde_json", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.23.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.23.2.bazel index 47d76515ad12..a2cac2bd450c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.23.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.23.2.bazel @@ -95,7 +95,7 @@ rust_library( version = "0.23.2", deps = [ "@vendor_ts__tree-sitter-embedded-template-0.23.2//:build_script_build", - "@vendor_ts__tree-sitter-language-0.1.3//:tree_sitter_language", + "@vendor_ts__tree-sitter-language-0.1.5//:tree_sitter_language", ], ) @@ -150,7 +150,7 @@ cargo_build_script( version = "0.23.2", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.29//:cc", + "@vendor_ts__cc-1.2.37//:cc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-json-0.24.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-json-0.24.8.bazel index daedbc6cdb56..ae6d02ae4eb5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-json-0.24.8.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-json-0.24.8.bazel @@ -95,7 +95,7 @@ rust_library( version = "0.24.8", deps = [ "@vendor_ts__tree-sitter-json-0.24.8//:build_script_build", - "@vendor_ts__tree-sitter-language-0.1.3//:tree_sitter_language", + "@vendor_ts__tree-sitter-language-0.1.5//:tree_sitter_language", ], ) @@ -150,7 +150,7 @@ cargo_build_script( version = "0.24.8", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.29//:cc", + "@vendor_ts__cc-1.2.37//:cc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.5.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.5.bazel index c714fc492e31..8bc56f476d98 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.5.bazel @@ -88,5 +88,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.3", + version = "0.1.5", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ql-0.23.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ql-0.23.1.bazel index d08108c5cc86..4377d9f8cb9c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ql-0.23.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ql-0.23.1.bazel @@ -94,7 +94,7 @@ rust_library( }), version = "0.23.1", deps = [ - "@vendor_ts__tree-sitter-language-0.1.3//:tree_sitter_language", + "@vendor_ts__tree-sitter-language-0.1.5//:tree_sitter_language", "@vendor_ts__tree-sitter-ql-0.23.1//:build_script_build", ], ) @@ -150,7 +150,7 @@ cargo_build_script( version = "0.23.1", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.29//:cc", + "@vendor_ts__cc-1.2.37//:cc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ruby-0.23.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ruby-0.23.1.bazel index 6fb0fab3b2bd..86f87e700227 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ruby-0.23.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ruby-0.23.1.bazel @@ -94,7 +94,7 @@ rust_library( }), version = "0.23.1", deps = [ - "@vendor_ts__tree-sitter-language-0.1.3//:tree_sitter_language", + "@vendor_ts__tree-sitter-language-0.1.5//:tree_sitter_language", "@vendor_ts__tree-sitter-ruby-0.23.1//:build_script_build", ], ) @@ -150,7 +150,7 @@ cargo_build_script( version = "0.23.1", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.29//:cc", + "@vendor_ts__cc-1.2.37//:cc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.18.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.19.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.18.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.19.bazel index 39820863a2ce..f0f3da9a94c4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.18.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.19.bazel @@ -88,5 +88,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.18", + version = "1.0.19", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel similarity index 93% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.4.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel index 58f034d5353d..4ac8b9941e57 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel @@ -36,6 +36,7 @@ rust_library( ), crate_features = [ "default", + "serde", "std", ], crate_root = "src/lib.rs", @@ -92,10 +93,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.5.4", + version = "2.5.7", deps = [ - "@vendor_ts__form_urlencoded-1.2.1//:form_urlencoded", - "@vendor_ts__idna-1.0.3//:idna", - "@vendor_ts__percent-encoding-2.3.1//:percent_encoding", + "@vendor_ts__form_urlencoded-1.2.2//:form_urlencoded", + "@vendor_ts__idna-1.1.0//:idna", + "@vendor_ts__percent-encoding-2.3.2//:percent_encoding", + "@vendor_ts__serde-1.0.219//:serde", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.walkdir-2.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.walkdir-2.5.0.bazel index 3ee13a3e6f72..14ba229e7fc2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.walkdir-2.5.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.walkdir-2.5.0.bazel @@ -93,13 +93,13 @@ rust_library( "@vendor_ts__same-file-1.0.6//:same_file", ] + select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__winapi-util-0.1.9//:winapi_util", # cfg(windows) + "@vendor_ts__winapi-util-0.1.11//:winapi_util", # cfg(windows) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__winapi-util-0.1.9//:winapi_util", # cfg(windows) + "@vendor_ts__winapi-util-0.1.11//:winapi_util", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__winapi-util-0.1.9//:winapi_util", # cfg(windows) + "@vendor_ts__winapi-util-0.1.11//:winapi_util", # cfg(windows) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.2+wasi-0.2.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.5+wasi-0.2.4.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.2+wasi-0.2.4.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.5+wasi-0.2.4.bazel index 9fc7384facd7..81a3a287a544 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.2+wasi-0.2.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.5+wasi-0.2.4.bazel @@ -88,8 +88,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.14.2+wasi-0.2.4", + version = "0.14.5+wasi-0.2.4", deps = [ - "@vendor_ts__wit-bindgen-rt-0.39.0//:wit_bindgen_rt", + "@vendor_ts__wasip2-1.0.0-wasi-0.2.4//:wasip2", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip2-1.0.0+wasi-0.2.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip2-1.0.0+wasi-0.2.4.bazel new file mode 100644 index 000000000000..ce61edb001dc --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip2-1.0.0+wasi-0.2.4.bazel @@ -0,0 +1,95 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "wasip2", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=wasip2", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.0+wasi-0.2.4", + deps = [ + "@vendor_ts__wit-bindgen-0.45.1//:wit_bindgen", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.100.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel similarity index 92% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.100.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel index c707d350e7ae..3debce4ea85a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.100.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel @@ -47,8 +47,8 @@ rust_library( crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__rustversion-1.0.21//:rustversion", - "@vendor_ts__wasm-bindgen-macro-0.2.100//:wasm_bindgen_macro", + "@vendor_ts__rustversion-1.0.22//:rustversion", + "@vendor_ts__wasm-bindgen-macro-0.2.101//:wasm_bindgen_macro", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -102,11 +102,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.100", + version = "0.2.101", deps = [ - "@vendor_ts__cfg-if-1.0.1//:cfg_if", + "@vendor_ts__cfg-if-1.0.3//:cfg_if", "@vendor_ts__once_cell-1.21.3//:once_cell", - "@vendor_ts__wasm-bindgen-0.2.100//:build_script_build", + "@vendor_ts__wasm-bindgen-0.2.101//:build_script_build", + "@vendor_ts__wasm-bindgen-shared-0.2.101//:wasm_bindgen_shared", ], ) @@ -150,6 +151,9 @@ cargo_build_script( ], ), edition = "2021", + link_deps = [ + "@vendor_ts__wasm-bindgen-shared-0.2.101//:wasm_bindgen_shared", + ], pkg_name = "wasm-bindgen", rustc_env_files = [ ":cargo_toml_env_vars", @@ -164,7 +168,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "0.2.100", + version = "0.2.101", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.100.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.100.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel index 5459cb634465..5a85b0e104d2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.100.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel @@ -88,13 +88,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.100", + version = "0.2.101", deps = [ "@vendor_ts__bumpalo-3.19.0//:bumpalo", - "@vendor_ts__log-0.4.27//:log", - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__log-0.4.28//:log", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", - "@vendor_ts__wasm-bindgen-shared-0.2.100//:wasm_bindgen_shared", + "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__wasm-bindgen-shared-0.2.101//:wasm_bindgen_shared", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.100.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.101.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.100.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.101.bazel index f6fb33e15f0a..4b1549c57ddf 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.100.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.101.bazel @@ -88,9 +88,9 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.100", + version = "0.2.101", deps = [ "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__wasm-bindgen-macro-support-0.2.100//:wasm_bindgen_macro_support", + "@vendor_ts__wasm-bindgen-macro-support-0.2.101//:wasm_bindgen_macro_support", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.100.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.101.bazel similarity index 93% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.100.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.101.bazel index 026a0784f832..c42233e4e244 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.100.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.101.bazel @@ -88,12 +88,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.100", + version = "0.2.101", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", - "@vendor_ts__wasm-bindgen-backend-0.2.100//:wasm_bindgen_backend", - "@vendor_ts__wasm-bindgen-shared-0.2.100//:wasm_bindgen_shared", + "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__wasm-bindgen-backend-0.2.101//:wasm_bindgen_backend", + "@vendor_ts__wasm-bindgen-shared-0.2.101//:wasm_bindgen_shared", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.100.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.101.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.100.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.101.bazel index 0be6d5b0e337..2c087bf3c823 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.100.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.101.bazel @@ -92,10 +92,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.100", + version = "0.2.101", deps = [ - "@vendor_ts__unicode-ident-1.0.18//:unicode_ident", - "@vendor_ts__wasm-bindgen-shared-0.2.100//:build_script_build", + "@vendor_ts__unicode-ident-1.0.19//:unicode_ident", + "@vendor_ts__wasm-bindgen-shared-0.2.101//:build_script_build", ], ) @@ -148,7 +148,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "0.2.100", + version = "0.2.101", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-0.3.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-0.3.9.bazel deleted file mode 100644 index bdfcc0a93472..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-0.3.9.bazel +++ /dev/null @@ -1,171 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load( - "@rules_rust//cargo:defs.bzl", - "cargo_build_script", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "winapi", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "consoleapi", - "errhandlingapi", - "fileapi", - "handleapi", - "processenv", - ], - crate_root = "src/lib.rs", - edition = "2015", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=winapi", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.3.9", - deps = [ - "@vendor_ts__winapi-0.3.9//:build_script_build", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "consoleapi", - "errhandlingapi", - "fileapi", - "handleapi", - "processenv", - ], - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2015", - pkg_name = "winapi", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=winapi", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.3.9", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel deleted file mode 100644 index 45130211eb69..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel +++ /dev/null @@ -1,157 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load( - "@rules_rust//cargo:defs.bzl", - "cargo_build_script", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "winapi_i686_pc_windows_gnu", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2015", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=winapi-i686-pc-windows-gnu", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.4.0", - deps = [ - "@vendor_ts__winapi-i686-pc-windows-gnu-0.4.0//:build_script_build", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2015", - pkg_name = "winapi-i686-pc-windows-gnu", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=winapi-i686-pc-windows-gnu", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.4.0", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-util-0.1.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-util-0.1.11.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-util-0.1.9.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-util-0.1.11.bazel index 4699f73a72eb..d31853499e8a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-util-0.1.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-util-0.1.11.bazel @@ -88,16 +88,16 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.9", + version = "0.1.11", deps = select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__windows-sys-0.61.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__windows-sys-0.61.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) + "@vendor_ts__windows-sys-0.61.0//:windows_sys", # cfg(windows) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel deleted file mode 100644 index 200e251f5bd0..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel +++ /dev/null @@ -1,157 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load( - "@rules_rust//cargo:defs.bzl", - "cargo_build_script", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "winapi_x86_64_pc_windows_gnu", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2015", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=winapi-x86_64-pc-windows-gnu", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.4.0", - deps = [ - "@vendor_ts__winapi-x86_64-pc-windows-gnu-0.4.0//:build_script_build", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2015", - pkg_name = "winapi-x86_64-pc-windows-gnu", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=winapi-x86_64-pc-windows-gnu", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.4.0", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.0.bazel index 4c5780af7b77..b851ac187258 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.0.bazel @@ -90,8 +90,8 @@ rust_proc_macro( }), version = "0.60.0", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.1.bazel index ad3593fff25f..0d2150974e06 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.1.bazel @@ -90,8 +90,8 @@ rust_proc_macro( }), version = "0.59.1", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.0.bazel new file mode 100644 index 000000000000..dc214f6dacb7 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.0.bazel @@ -0,0 +1,92 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "windows_link", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows-link", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.2.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.52.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.52.0.bazel index 98dc28b5fcf4..8e8b30891c17 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.52.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.52.0.bazel @@ -36,7 +36,12 @@ rust_library( ), crate_features = [ "Win32", + "Win32_Foundation", + "Win32_Security", + "Win32_Storage", + "Win32_Storage_FileSystem", "Win32_System", + "Win32_System_Console", "Win32_System_Threading", "default", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel index 3c282e594c9d..429981ce0402 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel @@ -37,16 +37,8 @@ rust_library( crate_features = [ "Win32", "Win32_Foundation", - "Win32_Security", - "Win32_Storage", - "Win32_Storage_FileSystem", "Win32_System", "Win32_System_Com", - "Win32_System_Console", - "Win32_System_IO", - "Win32_System_SystemInformation", - "Win32_System_Threading", - "Win32_System_WindowsProgramming", "Win32_UI", "Win32_UI_Shell", "default", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.60.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.60.2.bazel index 02aff274771b..6904a3890972 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.60.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.60.2.bazel @@ -37,9 +37,15 @@ rust_library( crate_features = [ "Win32", "Win32_Foundation", + "Win32_Security", + "Win32_Storage", + "Win32_Storage_FileSystem", "Win32_System", + "Win32_System_Console", + "Win32_System_IO", "Win32_System_ProcessStatus", "Win32_System_Threading", + "Win32_System_WindowsProgramming", "default", ], crate_root = "src/lib.rs", @@ -98,6 +104,6 @@ rust_library( }), version = "0.60.2", deps = [ - "@vendor_ts__windows-targets-0.53.2//:windows_targets", + "@vendor_ts__windows-targets-0.53.3//:windows_targets", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.48.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.48.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel index 5517c53feda6..0e9f1f723ed3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.48.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel @@ -43,13 +43,15 @@ rust_library( "Win32_Storage", "Win32_Storage_FileSystem", "Win32_System", + "Win32_System_Console", "Win32_System_IO", "Win32_System_Pipes", + "Win32_System_SystemInformation", "Win32_System_Threading", "default", ], crate_root = "src/lib.rs", - edition = "2018", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -102,8 +104,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.48.0", + version = "0.61.0", deps = [ - "@vendor_ts__windows-targets-0.48.5//:windows_targets", + "@vendor_ts__windows-link-0.2.0//:windows_link", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.48.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.48.5.bazel deleted file mode 100644 index ebe18b13d6e5..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.48.5.bazel +++ /dev/null @@ -1,113 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "windows_targets", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows-targets", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.48.5", - deps = select({ - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows_aarch64_msvc-0.48.5//:windows_aarch64_msvc", # cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib))) - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__windows_i686_msvc-0.48.5//:windows_i686_msvc", # cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib))) - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__windows_i686_gnu-0.48.5//:windows_i686_gnu", # cfg(all(target_arch = "x86", target_env = "gnu", not(windows_raw_dylib))) - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__windows_x86_64_msvc-0.48.5//:windows_x86_64_msvc", # cfg(all(target_arch = "x86_64", target_env = "msvc", not(windows_raw_dylib))) - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__windows_x86_64_gnu-0.48.5//:windows_x86_64_gnu", # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__windows_x86_64_gnu-0.48.5//:windows_x86_64_gnu", # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.3.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.3.bazel index 6f9255ba423e..74f5aa79ab0d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.3.bazel @@ -88,7 +88,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.53.2", + version = "0.53.3", deps = select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ "@vendor_ts__windows_aarch64_msvc-0.53.0//:windows_aarch64_msvc", # cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib))) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.48.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.48.5.bazel deleted file mode 100644 index 76ee4c4ac63f..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.48.5.bazel +++ /dev/null @@ -1,157 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load( - "@rules_rust//cargo:defs.bzl", - "cargo_build_script", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "windows_aarch64_gnullvm", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows_aarch64_gnullvm", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.48.5", - deps = [ - "@vendor_ts__windows_aarch64_gnullvm-0.48.5//:build_script_build", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2018", - pkg_name = "windows_aarch64_gnullvm", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows_aarch64_gnullvm", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.48.5", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.48.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.48.5.bazel deleted file mode 100644 index 5d16d71c77e4..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.48.5.bazel +++ /dev/null @@ -1,157 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load( - "@rules_rust//cargo:defs.bzl", - "cargo_build_script", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "windows_aarch64_msvc", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows_aarch64_msvc", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.48.5", - deps = [ - "@vendor_ts__windows_aarch64_msvc-0.48.5//:build_script_build", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2018", - pkg_name = "windows_aarch64_msvc", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows_aarch64_msvc", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.48.5", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.48.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.48.5.bazel deleted file mode 100644 index 4e9c211e2f8e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.48.5.bazel +++ /dev/null @@ -1,157 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load( - "@rules_rust//cargo:defs.bzl", - "cargo_build_script", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "windows_i686_gnu", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows_i686_gnu", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.48.5", - deps = [ - "@vendor_ts__windows_i686_gnu-0.48.5//:build_script_build", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2018", - pkg_name = "windows_i686_gnu", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows_i686_gnu", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.48.5", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.48.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.48.5.bazel deleted file mode 100644 index 8057157574e2..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.48.5.bazel +++ /dev/null @@ -1,157 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load( - "@rules_rust//cargo:defs.bzl", - "cargo_build_script", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "windows_i686_msvc", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows_i686_msvc", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.48.5", - deps = [ - "@vendor_ts__windows_i686_msvc-0.48.5//:build_script_build", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2018", - pkg_name = "windows_i686_msvc", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows_i686_msvc", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.48.5", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.48.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.48.5.bazel deleted file mode 100644 index 79ebf6c9ad76..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.48.5.bazel +++ /dev/null @@ -1,157 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load( - "@rules_rust//cargo:defs.bzl", - "cargo_build_script", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "windows_x86_64_gnu", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows_x86_64_gnu", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.48.5", - deps = [ - "@vendor_ts__windows_x86_64_gnu-0.48.5//:build_script_build", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2018", - pkg_name = "windows_x86_64_gnu", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows_x86_64_gnu", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.48.5", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.48.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.48.5.bazel deleted file mode 100644 index 4a8f3a921230..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.48.5.bazel +++ /dev/null @@ -1,157 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load( - "@rules_rust//cargo:defs.bzl", - "cargo_build_script", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "windows_x86_64_gnullvm", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows_x86_64_gnullvm", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.48.5", - deps = [ - "@vendor_ts__windows_x86_64_gnullvm-0.48.5//:build_script_build", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2018", - pkg_name = "windows_x86_64_gnullvm", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows_x86_64_gnullvm", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.48.5", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.48.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.48.5.bazel deleted file mode 100644 index 47c0fc5917b3..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.48.5.bazel +++ /dev/null @@ -1,157 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load( - "@rules_rust//cargo:defs.bzl", - "cargo_build_script", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "windows_x86_64_msvc", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows_x86_64_msvc", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.48.5", - deps = [ - "@vendor_ts__windows_x86_64_msvc-0.48.5//:build_script_build", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2018", - pkg_name = "windows_x86_64_msvc", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows_x86_64_msvc", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.48.5", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.11.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel index ad39ba9d1212..8ac650c5d96c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel @@ -93,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.7.11", + version = "0.7.13", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rt-0.39.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.45.1.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rt-0.39.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.45.1.bazel index 44b325ec96c4..a34a3e6b17dc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rt-0.39.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.45.1.bazel @@ -21,7 +21,7 @@ cargo_toml_env_vars( ) rust_library( - name = "wit_bindgen_rt", + name = "wit_bindgen", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -48,7 +48,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=wit-bindgen-rt", + "crate-name=wit-bindgen", "manual", "noclippy", "norustfmt", @@ -92,9 +92,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.39.0", + version = "0.45.1", deps = [ - "@vendor_ts__wit-bindgen-rt-0.39.0//:build_script_build", + "@vendor_ts__wit-bindgen-0.45.1//:build_script_build", ], ) @@ -132,7 +132,7 @@ cargo_build_script( ], ), edition = "2021", - pkg_name = "wit-bindgen-rt", + pkg_name = "wit-bindgen", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -141,12 +141,12 @@ cargo_build_script( ], tags = [ "cargo-bazel", - "crate-name=wit-bindgen-rt", + "crate-name=wit-bindgen", "manual", "noclippy", "norustfmt", ], - version = "0.39.0", + version = "0.45.1", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel index 507697272f25..88b72641dcb8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel @@ -90,9 +90,9 @@ rust_proc_macro( }), version = "0.8.0", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", "@vendor_ts__synstructure-0.13.2//:synstructure", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.26.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.27.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.26.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.27.bazel index 32d5cf2d5a39..a35e65a1f4d0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.26.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.27.bazel @@ -95,9 +95,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.8.26", + version = "0.8.27", deps = [ - "@vendor_ts__zerocopy-0.8.26//:build_script_build", + "@vendor_ts__zerocopy-0.8.27//:build_script_build", ], ) @@ -152,7 +152,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "0.8.26", + version = "0.8.27", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.26.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.26.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel index 136da86dc00a..b3cddbaed905 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.26.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel @@ -88,10 +88,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.8.26", + version = "0.8.27", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel index 516b57bbff02..facba68b2c70 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel @@ -90,9 +90,9 @@ rust_proc_macro( }), version = "0.1.6", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", "@vendor_ts__synstructure-0.13.2//:synstructure", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.4.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.4.bazel index 5a3209f87c0d..5b82e659f327 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.4.bazel @@ -96,7 +96,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.11.2", + version = "0.11.4", deps = [ "@vendor_ts__yoke-0.8.0//:yoke", "@vendor_ts__zerofrom-0.1.6//:zerofrom", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel index 2d416230e0c1..06b27ed643f5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel @@ -90,8 +90,8 @@ rust_proc_macro( }), version = "0.11.1", deps = [ - "@vendor_ts__proc-macro2-1.0.97//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.104//:syn", + "@vendor_ts__syn-2.0.106//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-7.2.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-7.2.4.bazel index 449d88c74f22..4ac45c9e1ba9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-7.2.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-7.2.4.bazel @@ -101,7 +101,7 @@ rust_library( version = "7.2.4", deps = [ "@vendor_ts__zstd-safe-7.2.4//:build_script_build", - "@vendor_ts__zstd-sys-2.0.15-zstd.1.5.7//:zstd_sys", + "@vendor_ts__zstd-sys-2.0.16-zstd.1.5.7//:zstd_sys", ], ) @@ -146,7 +146,7 @@ cargo_build_script( ), edition = "2018", link_deps = [ - "@vendor_ts__zstd-sys-2.0.15-zstd.1.5.7//:zstd_sys", + "@vendor_ts__zstd-sys-2.0.16-zstd.1.5.7//:zstd_sys", ], pkg_name = "zstd-safe", rustc_env_files = [ diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.15+zstd.1.5.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.15+zstd.1.5.7.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel index 0d8bdc167574..8f03d8a3bf74 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.15+zstd.1.5.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel @@ -97,9 +97,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.15+zstd.1.5.7", + version = "2.0.16+zstd.1.5.7", deps = [ - "@vendor_ts__zstd-sys-2.0.15-zstd.1.5.7//:build_script_build", + "@vendor_ts__zstd-sys-2.0.16-zstd.1.5.7//:build_script_build", ], ) @@ -157,10 +157,10 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "2.0.15+zstd.1.5.7", + version = "2.0.16+zstd.1.5.7", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.29//:cc", + "@vendor_ts__cc-1.2.37//:cc", "@vendor_ts__pkg-config-0.3.32//:pkg_config", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl index 1ac8707748c0..6f5c2f2a7b20 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl @@ -295,15 +295,15 @@ def aliases( _NORMAL_DEPENDENCIES = { "ruby/extractor": { _COMMON_CONDITION: { - "clap": Label("@vendor_ts__clap-4.5.44//:clap"), + "clap": Label("@vendor_ts__clap-4.5.47//:clap"), "encoding": Label("@vendor_ts__encoding-0.2.33//:encoding"), "lazy_static": Label("@vendor_ts__lazy_static-1.5.0//:lazy_static"), - "rayon": Label("@vendor_ts__rayon-1.10.0//:rayon"), - "regex": Label("@vendor_ts__regex-1.11.1//:regex"), - "serde_json": Label("@vendor_ts__serde_json-1.0.142//:serde_json"), + "rayon": Label("@vendor_ts__rayon-1.11.0//:rayon"), + "regex": Label("@vendor_ts__regex-1.11.2//:regex"), + "serde_json": Label("@vendor_ts__serde_json-1.0.143//:serde_json"), "tracing": Label("@vendor_ts__tracing-0.1.41//:tracing"), - "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.19//:tracing_subscriber"), - "tree-sitter": Label("@vendor_ts__tree-sitter-0.24.6//:tree_sitter"), + "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.20//:tracing_subscriber"), + "tree-sitter": Label("@vendor_ts__tree-sitter-0.25.9//:tree_sitter"), "tree-sitter-embedded-template": Label("@vendor_ts__tree-sitter-embedded-template-0.23.2//:tree_sitter_embedded_template"), "tree-sitter-ruby": Label("@vendor_ts__tree-sitter-ruby-0.23.1//:tree_sitter_ruby"), }, @@ -314,10 +314,10 @@ _NORMAL_DEPENDENCIES = { "either": Label("@vendor_ts__either-1.15.0//:either"), "itertools": Label("@vendor_ts__itertools-0.14.0//:itertools"), "mustache": Label("@vendor_ts__mustache-0.9.0//:mustache"), - "proc-macro2": Label("@vendor_ts__proc-macro2-1.0.97//:proc_macro2"), + "proc-macro2": Label("@vendor_ts__proc-macro2-1.0.101//:proc_macro2"), "quote": Label("@vendor_ts__quote-1.0.40//:quote"), "serde": Label("@vendor_ts__serde-1.0.219//:serde"), - "stdx": Label("@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx"), + "stdx": Label("@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx"), "ungrammar": Label("@vendor_ts__ungrammar-1.16.1//:ungrammar"), }, }, @@ -328,60 +328,60 @@ _NORMAL_DEPENDENCIES = { "anyhow": Label("@vendor_ts__anyhow-1.0.99//:anyhow"), "argfile": Label("@vendor_ts__argfile-0.2.1//:argfile"), "chalk-ir": Label("@vendor_ts__chalk-ir-0.104.0//:chalk_ir"), - "chrono": Label("@vendor_ts__chrono-0.4.41//:chrono"), - "clap": Label("@vendor_ts__clap-4.5.44//:clap"), + "chrono": Label("@vendor_ts__chrono-0.4.42//:chrono"), + "clap": Label("@vendor_ts__clap-4.5.47//:clap"), "dunce": Label("@vendor_ts__dunce-1.0.5//:dunce"), "figment": Label("@vendor_ts__figment-0.10.19//:figment"), "glob": Label("@vendor_ts__glob-0.3.3//:glob"), "itertools": Label("@vendor_ts__itertools-0.14.0//:itertools"), "mustache": Label("@vendor_ts__mustache-0.9.0//:mustache"), "num-traits": Label("@vendor_ts__num-traits-0.2.19//:num_traits"), - "ra_ap_base_db": Label("@vendor_ts__ra_ap_base_db-0.0.300//:ra_ap_base_db"), - "ra_ap_cfg": Label("@vendor_ts__ra_ap_cfg-0.0.300//:ra_ap_cfg"), - "ra_ap_hir": Label("@vendor_ts__ra_ap_hir-0.0.300//:ra_ap_hir"), - "ra_ap_hir_def": Label("@vendor_ts__ra_ap_hir_def-0.0.300//:ra_ap_hir_def"), - "ra_ap_hir_expand": Label("@vendor_ts__ra_ap_hir_expand-0.0.300//:ra_ap_hir_expand"), - "ra_ap_hir_ty": Label("@vendor_ts__ra_ap_hir_ty-0.0.300//:ra_ap_hir_ty"), - "ra_ap_ide_db": Label("@vendor_ts__ra_ap_ide_db-0.0.300//:ra_ap_ide_db"), - "ra_ap_intern": Label("@vendor_ts__ra_ap_intern-0.0.300//:ra_ap_intern"), - "ra_ap_load-cargo": Label("@vendor_ts__ra_ap_load-cargo-0.0.300//:ra_ap_load_cargo"), - "ra_ap_parser": Label("@vendor_ts__ra_ap_parser-0.0.300//:ra_ap_parser"), - "ra_ap_paths": Label("@vendor_ts__ra_ap_paths-0.0.300//:ra_ap_paths"), - "ra_ap_project_model": Label("@vendor_ts__ra_ap_project_model-0.0.300//:ra_ap_project_model"), - "ra_ap_span": Label("@vendor_ts__ra_ap_span-0.0.300//:ra_ap_span"), - "ra_ap_syntax": Label("@vendor_ts__ra_ap_syntax-0.0.300//:ra_ap_syntax"), - "ra_ap_vfs": Label("@vendor_ts__ra_ap_vfs-0.0.300//:ra_ap_vfs"), + "ra_ap_base_db": Label("@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db"), + "ra_ap_cfg": Label("@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg"), + "ra_ap_hir": Label("@vendor_ts__ra_ap_hir-0.0.301//:ra_ap_hir"), + "ra_ap_hir_def": Label("@vendor_ts__ra_ap_hir_def-0.0.301//:ra_ap_hir_def"), + "ra_ap_hir_expand": Label("@vendor_ts__ra_ap_hir_expand-0.0.301//:ra_ap_hir_expand"), + "ra_ap_hir_ty": Label("@vendor_ts__ra_ap_hir_ty-0.0.301//:ra_ap_hir_ty"), + "ra_ap_ide_db": Label("@vendor_ts__ra_ap_ide_db-0.0.301//:ra_ap_ide_db"), + "ra_ap_intern": Label("@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern"), + "ra_ap_load-cargo": Label("@vendor_ts__ra_ap_load-cargo-0.0.301//:ra_ap_load_cargo"), + "ra_ap_parser": Label("@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser"), + "ra_ap_paths": Label("@vendor_ts__ra_ap_paths-0.0.301//:ra_ap_paths"), + "ra_ap_project_model": Label("@vendor_ts__ra_ap_project_model-0.0.301//:ra_ap_project_model"), + "ra_ap_span": Label("@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span"), + "ra_ap_syntax": Label("@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax"), + "ra_ap_vfs": Label("@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs"), "serde": Label("@vendor_ts__serde-1.0.219//:serde"), - "serde_json": Label("@vendor_ts__serde_json-1.0.142//:serde_json"), + "serde_json": Label("@vendor_ts__serde_json-1.0.143//:serde_json"), "serde_with": Label("@vendor_ts__serde_with-3.14.0//:serde_with"), "toml": Label("@vendor_ts__toml-0.9.5//:toml"), "tracing": Label("@vendor_ts__tracing-0.1.41//:tracing"), "tracing-flame": Label("@vendor_ts__tracing-flame-0.2.0//:tracing_flame"), - "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.19//:tracing_subscriber"), + "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.20//:tracing_subscriber"), "triomphe": Label("@vendor_ts__triomphe-0.1.14//:triomphe"), }, }, "rust/extractor/macros": { _COMMON_CONDITION: { "quote": Label("@vendor_ts__quote-1.0.40//:quote"), - "syn": Label("@vendor_ts__syn-2.0.104//:syn"), + "syn": Label("@vendor_ts__syn-2.0.106//:syn"), }, }, "shared/tree-sitter-extractor": { _COMMON_CONDITION: { - "chrono": Label("@vendor_ts__chrono-0.4.41//:chrono"), + "chrono": Label("@vendor_ts__chrono-0.4.42//:chrono"), "encoding": Label("@vendor_ts__encoding-0.2.33//:encoding"), - "flate2": Label("@vendor_ts__flate2-1.1.0//:flate2"), - "globset": Label("@vendor_ts__globset-0.4.15//:globset"), + "flate2": Label("@vendor_ts__flate2-1.1.2//:flate2"), + "globset": Label("@vendor_ts__globset-0.4.16//:globset"), "lazy_static": Label("@vendor_ts__lazy_static-1.5.0//:lazy_static"), "num_cpus": Label("@vendor_ts__num_cpus-1.17.0//:num_cpus"), - "rayon": Label("@vendor_ts__rayon-1.10.0//:rayon"), - "regex": Label("@vendor_ts__regex-1.11.1//:regex"), + "rayon": Label("@vendor_ts__rayon-1.11.0//:rayon"), + "regex": Label("@vendor_ts__regex-1.11.2//:regex"), "serde": Label("@vendor_ts__serde-1.0.219//:serde"), - "serde_json": Label("@vendor_ts__serde_json-1.0.142//:serde_json"), + "serde_json": Label("@vendor_ts__serde_json-1.0.143//:serde_json"), "tracing": Label("@vendor_ts__tracing-0.1.41//:tracing"), - "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.19//:tracing_subscriber"), - "tree-sitter": Label("@vendor_ts__tree-sitter-0.24.6//:tree_sitter"), + "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.20//:tracing_subscriber"), + "tree-sitter": Label("@vendor_ts__tree-sitter-0.25.9//:tree_sitter"), "zstd": Label("@vendor_ts__zstd-0.13.3//:zstd"), }, }, @@ -394,7 +394,7 @@ _NORMAL_ALIASES = { }, "rust/ast-generator": { _COMMON_CONDITION: { - Label("@vendor_ts__ra_ap_stdx-0.0.300//:ra_ap_stdx"): "stdx", + Label("@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx"): "stdx", }, }, "rust/autobuild": { @@ -593,10 +593,8 @@ _CONDITIONS = { "cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))": ["@rules_rust//rust/platform:wasm32-unknown-unknown"], "cfg(all(target_arch = \"wasm32\", target_os = \"wasi\", target_env = \"p2\"))": [], "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"], - "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"], "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-pc-windows-msvc"], "cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], - "cfg(all(target_arch = \"x86_64\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"], "cfg(all(target_os = \"linux\", not(target_env = \"ohos\")))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], "cfg(all(target_os = \"linux\", target_env = \"gnu\"))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], "cfg(all(target_os = \"uefi\", getrandom_backend = \"efi_rng\"))": [], @@ -622,9 +620,9 @@ _CONDITIONS = { "cfg(target_vendor = \"apple\")": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios"], "cfg(unix)": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-fuchsia", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-freebsd", "@rules_rust//rust/platform:x86_64-unknown-fuchsia", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], "cfg(windows)": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:x86_64-pc-windows-msvc"], + "cfg(windows_raw_dylib)": [], "i686-apple-darwin": ["@rules_rust//rust/platform:i686-apple-darwin"], "i686-linux-android": ["@rules_rust//rust/platform:i686-linux-android"], - "i686-pc-windows-gnu": [], "i686-pc-windows-gnullvm": [], "i686-pc-windows-msvc": ["@rules_rust//rust/platform:i686-pc-windows-msvc"], "i686-unknown-freebsd": ["@rules_rust//rust/platform:i686-unknown-freebsd"], @@ -640,7 +638,6 @@ _CONDITIONS = { "x86_64-apple-darwin": ["@rules_rust//rust/platform:x86_64-apple-darwin"], "x86_64-apple-ios": ["@rules_rust//rust/platform:x86_64-apple-ios"], "x86_64-linux-android": ["@rules_rust//rust/platform:x86_64-linux-android"], - "x86_64-pc-windows-gnu": [], "x86_64-pc-windows-gnullvm": [], "x86_64-pc-windows-msvc": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"], "x86_64-unknown-freebsd": ["@rules_rust//rust/platform:x86_64-unknown-freebsd"], @@ -661,12 +658,12 @@ def crate_repositories(): """ maybe( http_archive, - name = "vendor_ts__adler2-2.0.0", - sha256 = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627", + name = "vendor_ts__adler2-2.0.1", + sha256 = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa", type = "tar.gz", - urls = ["https://static.crates.io/crates/adler2/2.0.0/download"], - strip_prefix = "adler2-2.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.adler2-2.0.0.bazel"), + urls = ["https://static.crates.io/crates/adler2/2.0.1/download"], + strip_prefix = "adler2-2.0.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.adler2-2.0.1.bazel"), ) maybe( @@ -689,16 +686,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.allocator-api2-0.2.21.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__android-tzdata-0.1.1", - sha256 = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0", - type = "tar.gz", - urls = ["https://static.crates.io/crates/android-tzdata/0.1.1/download"], - strip_prefix = "android-tzdata-0.1.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.android-tzdata-0.1.1.bazel"), - ) - maybe( http_archive, name = "vendor_ts__android_system_properties-0.1.5", @@ -711,12 +698,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__anstream-0.6.19", - sha256 = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933", + name = "vendor_ts__anstream-0.6.20", + sha256 = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192", type = "tar.gz", - urls = ["https://static.crates.io/crates/anstream/0.6.19/download"], - strip_prefix = "anstream-0.6.19", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstream-0.6.19.bazel"), + urls = ["https://static.crates.io/crates/anstream/0.6.20/download"], + strip_prefix = "anstream-0.6.20", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstream-0.6.20.bazel"), ) maybe( @@ -741,22 +728,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__anstyle-query-1.1.3", - sha256 = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9", + name = "vendor_ts__anstyle-query-1.1.4", + sha256 = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2", type = "tar.gz", - urls = ["https://static.crates.io/crates/anstyle-query/1.1.3/download"], - strip_prefix = "anstyle-query-1.1.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-query-1.1.3.bazel"), + urls = ["https://static.crates.io/crates/anstyle-query/1.1.4/download"], + strip_prefix = "anstyle-query-1.1.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-query-1.1.4.bazel"), ) maybe( http_archive, - name = "vendor_ts__anstyle-wincon-3.0.9", - sha256 = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882", + name = "vendor_ts__anstyle-wincon-3.0.10", + sha256 = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a", type = "tar.gz", - urls = ["https://static.crates.io/crates/anstyle-wincon/3.0.9/download"], - strip_prefix = "anstyle-wincon-3.0.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-wincon-3.0.9.bazel"), + urls = ["https://static.crates.io/crates/anstyle-wincon/3.0.10/download"], + strip_prefix = "anstyle-wincon-3.0.10", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-wincon-3.0.10.bazel"), ) maybe( @@ -791,12 +778,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__atomic-0.6.0", - sha256 = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994", + name = "vendor_ts__atomic-0.6.1", + sha256 = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340", type = "tar.gz", - urls = ["https://static.crates.io/crates/atomic/0.6.0/download"], - strip_prefix = "atomic-0.6.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.atomic-0.6.0.bazel"), + urls = ["https://static.crates.io/crates/atomic/0.6.1/download"], + strip_prefix = "atomic-0.6.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.atomic-0.6.1.bazel"), ) maybe( @@ -831,12 +818,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__bitflags-2.9.1", - sha256 = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967", + name = "vendor_ts__bitflags-2.9.4", + sha256 = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394", type = "tar.gz", - urls = ["https://static.crates.io/crates/bitflags/2.9.1/download"], - strip_prefix = "bitflags-2.9.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bitflags-2.9.1.bazel"), + urls = ["https://static.crates.io/crates/bitflags/2.9.4/download"], + strip_prefix = "bitflags-2.9.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bitflags-2.9.4.bazel"), ) maybe( @@ -851,22 +838,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__boxcar-0.2.13", - sha256 = "26c4925bc979b677330a8c7fe7a8c94af2dbb4a2d37b4a20a80d884400f46baa", + name = "vendor_ts__boxcar-0.2.14", + sha256 = "36f64beae40a84da1b4b26ff2761a5b895c12adc41dc25aaee1c4f2bbfe97a6e", type = "tar.gz", - urls = ["https://static.crates.io/crates/boxcar/0.2.13/download"], - strip_prefix = "boxcar-0.2.13", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.boxcar-0.2.13.bazel"), + urls = ["https://static.crates.io/crates/boxcar/0.2.14/download"], + strip_prefix = "boxcar-0.2.14", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.boxcar-0.2.14.bazel"), ) maybe( http_archive, - name = "vendor_ts__bstr-1.11.3", - sha256 = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0", + name = "vendor_ts__bstr-1.12.0", + sha256 = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4", type = "tar.gz", - urls = ["https://static.crates.io/crates/bstr/1.11.3/download"], - strip_prefix = "bstr-1.11.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bstr-1.11.3.bazel"), + urls = ["https://static.crates.io/crates/bstr/1.12.0/download"], + strip_prefix = "bstr-1.12.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bstr-1.12.0.bazel"), ) maybe( @@ -881,22 +868,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__bytemuck-1.21.0", - sha256 = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3", + name = "vendor_ts__bytemuck-1.23.2", + sha256 = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677", type = "tar.gz", - urls = ["https://static.crates.io/crates/bytemuck/1.21.0/download"], - strip_prefix = "bytemuck-1.21.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bytemuck-1.21.0.bazel"), + urls = ["https://static.crates.io/crates/bytemuck/1.23.2/download"], + strip_prefix = "bytemuck-1.23.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bytemuck-1.23.2.bazel"), ) maybe( http_archive, - name = "vendor_ts__camino-1.1.10", - sha256 = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab", + name = "vendor_ts__camino-1.1.12", + sha256 = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5", type = "tar.gz", - urls = ["https://static.crates.io/crates/camino/1.1.10/download"], - strip_prefix = "camino-1.1.10", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.camino-1.1.10.bazel"), + urls = ["https://static.crates.io/crates/camino/1.1.12/download"], + strip_prefix = "camino-1.1.12", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.camino-1.1.12.bazel"), ) maybe( @@ -931,22 +918,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__cc-1.2.29", - sha256 = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362", + name = "vendor_ts__cc-1.2.37", + sha256 = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44", type = "tar.gz", - urls = ["https://static.crates.io/crates/cc/1.2.29/download"], - strip_prefix = "cc-1.2.29", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cc-1.2.29.bazel"), + urls = ["https://static.crates.io/crates/cc/1.2.37/download"], + strip_prefix = "cc-1.2.37", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cc-1.2.37.bazel"), ) maybe( http_archive, - name = "vendor_ts__cfg-if-1.0.1", - sha256 = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268", + name = "vendor_ts__cfg-if-1.0.3", + sha256 = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9", type = "tar.gz", - urls = ["https://static.crates.io/crates/cfg-if/1.0.1/download"], - strip_prefix = "cfg-if-1.0.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cfg-if-1.0.1.bazel"), + urls = ["https://static.crates.io/crates/cfg-if/1.0.3/download"], + strip_prefix = "cfg-if-1.0.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cfg-if-1.0.3.bazel"), ) maybe( @@ -1021,42 +1008,42 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__chrono-0.4.41", - sha256 = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d", + name = "vendor_ts__chrono-0.4.42", + sha256 = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2", type = "tar.gz", - urls = ["https://static.crates.io/crates/chrono/0.4.41/download"], - strip_prefix = "chrono-0.4.41", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chrono-0.4.41.bazel"), + urls = ["https://static.crates.io/crates/chrono/0.4.42/download"], + strip_prefix = "chrono-0.4.42", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chrono-0.4.42.bazel"), ) maybe( http_archive, - name = "vendor_ts__clap-4.5.44", - sha256 = "1c1f056bae57e3e54c3375c41ff79619ddd13460a17d7438712bd0d83fda4ff8", + name = "vendor_ts__clap-4.5.47", + sha256 = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931", type = "tar.gz", - urls = ["https://static.crates.io/crates/clap/4.5.44/download"], - strip_prefix = "clap-4.5.44", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap-4.5.44.bazel"), + urls = ["https://static.crates.io/crates/clap/4.5.47/download"], + strip_prefix = "clap-4.5.47", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap-4.5.47.bazel"), ) maybe( http_archive, - name = "vendor_ts__clap_builder-4.5.44", - sha256 = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8", + name = "vendor_ts__clap_builder-4.5.47", + sha256 = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6", type = "tar.gz", - urls = ["https://static.crates.io/crates/clap_builder/4.5.44/download"], - strip_prefix = "clap_builder-4.5.44", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_builder-4.5.44.bazel"), + urls = ["https://static.crates.io/crates/clap_builder/4.5.47/download"], + strip_prefix = "clap_builder-4.5.47", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_builder-4.5.47.bazel"), ) maybe( http_archive, - name = "vendor_ts__clap_derive-4.5.41", - sha256 = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491", + name = "vendor_ts__clap_derive-4.5.47", + sha256 = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c", type = "tar.gz", - urls = ["https://static.crates.io/crates/clap_derive/4.5.41/download"], - strip_prefix = "clap_derive-4.5.41", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_derive-4.5.41.bazel"), + urls = ["https://static.crates.io/crates/clap_derive/4.5.47/download"], + strip_prefix = "clap_derive-4.5.47", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_derive-4.5.47.bazel"), ) maybe( @@ -1101,22 +1088,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__cov-mark-2.0.0", - sha256 = "0570650661aa447e7335f1d5e4f499d8e58796e617bedc9267d971e51c8b49d4", + name = "vendor_ts__cov-mark-2.1.0", + sha256 = "3f1d92727879fb4f24cec33a35e3bff74035541326cbc12ad44ba8886d1927b0", type = "tar.gz", - urls = ["https://static.crates.io/crates/cov-mark/2.0.0/download"], - strip_prefix = "cov-mark-2.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cov-mark-2.0.0.bazel"), + urls = ["https://static.crates.io/crates/cov-mark/2.1.0/download"], + strip_prefix = "cov-mark-2.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cov-mark-2.1.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__crc32fast-1.4.2", - sha256 = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3", + name = "vendor_ts__crc32fast-1.5.0", + sha256 = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511", type = "tar.gz", - urls = ["https://static.crates.io/crates/crc32fast/1.4.2/download"], - strip_prefix = "crc32fast-1.4.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crc32fast-1.4.2.bazel"), + urls = ["https://static.crates.io/crates/crc32fast/1.5.0/download"], + strip_prefix = "crc32fast-1.5.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crc32fast-1.5.0.bazel"), ) maybe( @@ -1211,12 +1198,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__deranged-0.4.0", - sha256 = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e", + name = "vendor_ts__deranged-0.5.3", + sha256 = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc", type = "tar.gz", - urls = ["https://static.crates.io/crates/deranged/0.4.0/download"], - strip_prefix = "deranged-0.4.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.deranged-0.4.0.bazel"), + urls = ["https://static.crates.io/crates/deranged/0.5.3/download"], + strip_prefix = "deranged-0.5.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.deranged-0.5.3.bazel"), ) maybe( @@ -1251,12 +1238,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__dyn-clone-1.0.19", - sha256 = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005", + name = "vendor_ts__dyn-clone-1.0.20", + sha256 = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555", type = "tar.gz", - urls = ["https://static.crates.io/crates/dyn-clone/1.0.19/download"], - strip_prefix = "dyn-clone-1.0.19", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.dyn-clone-1.0.19.bazel"), + urls = ["https://static.crates.io/crates/dyn-clone/1.0.20/download"], + strip_prefix = "dyn-clone-1.0.20", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.dyn-clone-1.0.20.bazel"), ) maybe( @@ -1381,12 +1368,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__filetime-0.2.25", - sha256 = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586", + name = "vendor_ts__find-msvc-tools-0.1.1", + sha256 = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d", type = "tar.gz", - urls = ["https://static.crates.io/crates/filetime/0.2.25/download"], - strip_prefix = "filetime-0.2.25", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.filetime-0.2.25.bazel"), + urls = ["https://static.crates.io/crates/find-msvc-tools/0.1.1/download"], + strip_prefix = "find-msvc-tools-0.1.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.find-msvc-tools-0.1.1.bazel"), ) maybe( @@ -1401,12 +1388,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__flate2-1.1.0", - sha256 = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc", + name = "vendor_ts__flate2-1.1.2", + sha256 = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d", type = "tar.gz", - urls = ["https://static.crates.io/crates/flate2/1.1.0/download"], - strip_prefix = "flate2-1.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.flate2-1.1.0.bazel"), + urls = ["https://static.crates.io/crates/flate2/1.1.2/download"], + strip_prefix = "flate2-1.1.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.flate2-1.1.2.bazel"), ) maybe( @@ -1431,12 +1418,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__form_urlencoded-1.2.1", - sha256 = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456", + name = "vendor_ts__form_urlencoded-1.2.2", + sha256 = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf", type = "tar.gz", - urls = ["https://static.crates.io/crates/form_urlencoded/1.2.1/download"], - strip_prefix = "form_urlencoded-1.2.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.form_urlencoded-1.2.1.bazel"), + urls = ["https://static.crates.io/crates/form_urlencoded/1.2.2/download"], + strip_prefix = "form_urlencoded-1.2.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.form_urlencoded-1.2.2.bazel"), ) maybe( @@ -1491,12 +1478,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__globset-0.4.15", - sha256 = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19", + name = "vendor_ts__globset-0.4.16", + sha256 = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5", type = "tar.gz", - urls = ["https://static.crates.io/crates/globset/0.4.15/download"], - strip_prefix = "globset-0.4.15", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.globset-0.4.15.bazel"), + urls = ["https://static.crates.io/crates/globset/0.4.16/download"], + strip_prefix = "globset-0.4.16", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.globset-0.4.16.bazel"), ) maybe( @@ -1521,12 +1508,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__hashbrown-0.15.4", - sha256 = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5", + name = "vendor_ts__hashbrown-0.15.5", + sha256 = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1", type = "tar.gz", - urls = ["https://static.crates.io/crates/hashbrown/0.15.4/download"], - strip_prefix = "hashbrown-0.15.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashbrown-0.15.4.bazel"), + urls = ["https://static.crates.io/crates/hashbrown/0.15.5/download"], + strip_prefix = "hashbrown-0.15.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashbrown-0.15.5.bazel"), ) maybe( @@ -1681,12 +1668,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__idna-1.0.3", - sha256 = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e", + name = "vendor_ts__idna-1.1.0", + sha256 = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de", type = "tar.gz", - urls = ["https://static.crates.io/crates/idna/1.0.3/download"], - strip_prefix = "idna-1.0.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.idna-1.0.3.bazel"), + urls = ["https://static.crates.io/crates/idna/1.1.0/download"], + strip_prefix = "idna-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.idna-1.1.0.bazel"), ) maybe( @@ -1711,12 +1698,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__indexmap-2.10.0", - sha256 = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661", + name = "vendor_ts__indexmap-2.11.1", + sha256 = "206a8042aec68fa4a62e8d3f7aa4ceb508177d9324faf261e1959e495b7a1921", type = "tar.gz", - urls = ["https://static.crates.io/crates/indexmap/2.10.0/download"], - strip_prefix = "indexmap-2.10.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.indexmap-2.10.0.bazel"), + urls = ["https://static.crates.io/crates/indexmap/2.11.1/download"], + strip_prefix = "indexmap-2.11.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.indexmap-2.11.1.bazel"), ) maybe( @@ -1801,12 +1788,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__jobserver-0.1.32", - sha256 = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0", + name = "vendor_ts__jobserver-0.1.34", + sha256 = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33", type = "tar.gz", - urls = ["https://static.crates.io/crates/jobserver/0.1.32/download"], - strip_prefix = "jobserver-0.1.32", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.jobserver-0.1.32.bazel"), + urls = ["https://static.crates.io/crates/jobserver/0.1.34/download"], + strip_prefix = "jobserver-0.1.34", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.jobserver-0.1.34.bazel"), ) maybe( @@ -1821,12 +1808,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__js-sys-0.3.77", - sha256 = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f", + name = "vendor_ts__js-sys-0.3.78", + sha256 = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738", type = "tar.gz", - urls = ["https://static.crates.io/crates/js-sys/0.3.77/download"], - strip_prefix = "js-sys-0.3.77", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.js-sys-0.3.77.bazel"), + urls = ["https://static.crates.io/crates/js-sys/0.3.78/download"], + strip_prefix = "js-sys-0.3.78", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.js-sys-0.3.78.bazel"), ) maybe( @@ -1871,22 +1858,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__libc-0.2.174", - sha256 = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776", - type = "tar.gz", - urls = ["https://static.crates.io/crates/libc/0.2.174/download"], - strip_prefix = "libc-0.2.174", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.libc-0.2.174.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__libredox-0.1.4", - sha256 = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638", + name = "vendor_ts__libc-0.2.175", + sha256 = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543", type = "tar.gz", - urls = ["https://static.crates.io/crates/libredox/0.1.4/download"], - strip_prefix = "libredox-0.1.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.libredox-0.1.4.bazel"), + urls = ["https://static.crates.io/crates/libc/0.2.175/download"], + strip_prefix = "libc-0.2.175", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.libc-0.2.175.bazel"), ) maybe( @@ -1931,22 +1908,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__log-0.4.27", - sha256 = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94", + name = "vendor_ts__log-0.4.28", + sha256 = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432", type = "tar.gz", - urls = ["https://static.crates.io/crates/log/0.4.27/download"], - strip_prefix = "log-0.4.27", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.log-0.4.27.bazel"), + urls = ["https://static.crates.io/crates/log/0.4.28/download"], + strip_prefix = "log-0.4.28", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.log-0.4.28.bazel"), ) maybe( http_archive, - name = "vendor_ts__matchers-0.1.0", - sha256 = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558", + name = "vendor_ts__matchers-0.2.0", + sha256 = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9", type = "tar.gz", - urls = ["https://static.crates.io/crates/matchers/0.1.0/download"], - strip_prefix = "matchers-0.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.matchers-0.1.0.bazel"), + urls = ["https://static.crates.io/crates/matchers/0.2.0/download"], + strip_prefix = "matchers-0.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.matchers-0.2.0.bazel"), ) maybe( @@ -1971,12 +1948,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__miniz_oxide-0.8.5", - sha256 = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5", + name = "vendor_ts__miniz_oxide-0.8.9", + sha256 = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316", type = "tar.gz", - urls = ["https://static.crates.io/crates/miniz_oxide/0.8.5/download"], - strip_prefix = "miniz_oxide-0.8.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.miniz_oxide-0.8.5.bazel"), + urls = ["https://static.crates.io/crates/miniz_oxide/0.8.9/download"], + strip_prefix = "miniz_oxide-0.8.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.miniz_oxide-0.8.9.bazel"), ) maybe( @@ -1991,12 +1968,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__miow-0.6.0", - sha256 = "359f76430b20a79f9e20e115b3428614e654f04fab314482fc0fda0ebd3c6044", + name = "vendor_ts__miow-0.6.1", + sha256 = "536bfad37a309d62069485248eeaba1e8d9853aaf951caaeaed0585a95346f08", type = "tar.gz", - urls = ["https://static.crates.io/crates/miow/0.6.0/download"], - strip_prefix = "miow-0.6.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.miow-0.6.0.bazel"), + urls = ["https://static.crates.io/crates/miow/0.6.1/download"], + strip_prefix = "miow-0.6.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.miow-0.6.1.bazel"), ) maybe( @@ -2021,12 +1998,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__notify-8.0.0", - sha256 = "2fee8403b3d66ac7b26aee6e40a897d85dc5ce26f44da36b8b73e987cc52e943", + name = "vendor_ts__notify-8.2.0", + sha256 = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3", type = "tar.gz", - urls = ["https://static.crates.io/crates/notify/8.0.0/download"], - strip_prefix = "notify-8.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.notify-8.0.0.bazel"), + urls = ["https://static.crates.io/crates/notify/8.2.0/download"], + strip_prefix = "notify-8.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.notify-8.2.0.bazel"), ) maybe( @@ -2041,12 +2018,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__nu-ansi-term-0.46.0", - sha256 = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84", + name = "vendor_ts__nu-ansi-term-0.50.1", + sha256 = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399", type = "tar.gz", - urls = ["https://static.crates.io/crates/nu-ansi-term/0.46.0/download"], - strip_prefix = "nu-ansi-term-0.46.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.nu-ansi-term-0.46.0.bazel"), + urls = ["https://static.crates.io/crates/nu-ansi-term/0.50.1/download"], + strip_prefix = "nu-ansi-term-0.50.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.nu-ansi-term-0.50.1.bazel"), ) maybe( @@ -2121,22 +2098,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__os_str_bytes-7.0.0", - sha256 = "7ac44c994af577c799b1b4bd80dc214701e349873ad894d6cdf96f4f7526e0b9", + name = "vendor_ts__os_str_bytes-7.1.1", + sha256 = "63eceb7b5d757011a87d08eb2123db15d87fb0c281f65d101ce30a1e96c3ad5c", type = "tar.gz", - urls = ["https://static.crates.io/crates/os_str_bytes/7.0.0/download"], - strip_prefix = "os_str_bytes-7.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.os_str_bytes-7.0.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__overload-0.1.1", - sha256 = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39", - type = "tar.gz", - urls = ["https://static.crates.io/crates/overload/0.1.1/download"], - strip_prefix = "overload-0.1.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.overload-0.1.1.bazel"), + urls = ["https://static.crates.io/crates/os_str_bytes/7.1.1/download"], + strip_prefix = "os_str_bytes-7.1.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.os_str_bytes-7.1.1.bazel"), ) maybe( @@ -2191,12 +2158,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__percent-encoding-2.3.1", - sha256 = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e", + name = "vendor_ts__percent-encoding-2.3.2", + sha256 = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220", type = "tar.gz", - urls = ["https://static.crates.io/crates/percent-encoding/2.3.1/download"], - strip_prefix = "percent-encoding-2.3.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.percent-encoding-2.3.1.bazel"), + urls = ["https://static.crates.io/crates/percent-encoding/2.3.2/download"], + strip_prefix = "percent-encoding-2.3.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.percent-encoding-2.3.2.bazel"), ) maybe( @@ -2261,12 +2228,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__potential_utf-0.1.2", - sha256 = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585", + name = "vendor_ts__potential_utf-0.1.3", + sha256 = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a", type = "tar.gz", - urls = ["https://static.crates.io/crates/potential_utf/0.1.2/download"], - strip_prefix = "potential_utf-0.1.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.potential_utf-0.1.2.bazel"), + urls = ["https://static.crates.io/crates/potential_utf/0.1.3/download"], + strip_prefix = "potential_utf-0.1.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.potential_utf-0.1.3.bazel"), ) maybe( @@ -2291,12 +2258,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__proc-macro2-1.0.97", - sha256 = "d61789d7719defeb74ea5fe81f2fdfdbd28a803847077cecce2ff14e1472f6f1", + name = "vendor_ts__proc-macro2-1.0.101", + sha256 = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de", type = "tar.gz", - urls = ["https://static.crates.io/crates/proc-macro2/1.0.97/download"], - strip_prefix = "proc-macro2-1.0.97", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.proc-macro2-1.0.97.bazel"), + urls = ["https://static.crates.io/crates/proc-macro2/1.0.101/download"], + strip_prefix = "proc-macro2-1.0.101", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.proc-macro2-1.0.101.bazel"), ) maybe( @@ -2411,252 +2378,252 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__ra_ap_base_db-0.0.300", - sha256 = "47cac371778785196064f1a347fbbac0aafb1053786f17378bb138be59e57fc2", + name = "vendor_ts__ra_ap_base_db-0.0.301", + sha256 = "e876bb2c3e52a8d4e6684526a2d4e81f9d028b939ee4dc5dc775fe10deb44d59", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_base_db/0.0.300/download"], - strip_prefix = "ra_ap_base_db-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_base_db-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_base_db/0.0.301/download"], + strip_prefix = "ra_ap_base_db-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_base_db-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_cfg-0.0.300", - sha256 = "6789ed14467e6625bef45b29555844d0168d8af1bea9edb0f1d44f0a9b69f398", + name = "vendor_ts__ra_ap_cfg-0.0.301", + sha256 = "3a0b56eb4536ce6d2431932c4d337aeeaf7bb22c9249b38cbe80677b5881228f", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_cfg/0.0.300/download"], - strip_prefix = "ra_ap_cfg-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_cfg-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_cfg/0.0.301/download"], + strip_prefix = "ra_ap_cfg-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_cfg-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_edition-0.0.300", - sha256 = "637b74c692dc9d9b44394f8c0f91c063e1b6223c6e54f4ee89c943db2f2ee26e", + name = "vendor_ts__ra_ap_edition-0.0.301", + sha256 = "1bdc6cbe42c63ca78611bae82bfc8db24864f33dccc813697c5fde43a0907285", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_edition/0.0.300/download"], - strip_prefix = "ra_ap_edition-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_edition-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_edition/0.0.301/download"], + strip_prefix = "ra_ap_edition-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_edition-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir-0.0.300", - sha256 = "a94c69a3830f0b6fbc36c1d098fcc9430f63c8d47ee6f93e3d6810c3bf440296", + name = "vendor_ts__ra_ap_hir-0.0.301", + sha256 = "ebffdc134eccabc17209d7760cfff7fd12ed18ab6e21188c5e084b97aa38504c", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir/0.0.300/download"], - strip_prefix = "ra_ap_hir-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_hir/0.0.301/download"], + strip_prefix = "ra_ap_hir-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir_def-0.0.300", - sha256 = "7d94fcf7743db2f4f7e2c2911563847eb8efe2b7fb9fa430c107f0ac05962254", + name = "vendor_ts__ra_ap_hir_def-0.0.301", + sha256 = "81d2337ef59550392d42aa997aa1105a3d6d1c2b3a583c777786bc4a0a074fd5", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir_def/0.0.300/download"], - strip_prefix = "ra_ap_hir_def-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_def-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_hir_def/0.0.301/download"], + strip_prefix = "ra_ap_hir_def-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_def-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir_expand-0.0.300", - sha256 = "67ea3f6a0ba0c1e8b63f4a41bc596c07aeb2db2f99b67fa077820cfb5fce58bd", + name = "vendor_ts__ra_ap_hir_expand-0.0.301", + sha256 = "97cf8ececb2743a819d8299a408e17f164dd1a1004d65936b3d5493b55330326", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir_expand/0.0.300/download"], - strip_prefix = "ra_ap_hir_expand-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_expand-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_hir_expand/0.0.301/download"], + strip_prefix = "ra_ap_hir_expand-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_expand-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir_ty-0.0.300", - sha256 = "eccf6c291a88892e59e7591e081da8b9158f8c0b1ed9cb9b73d02d29a0d3d6d9", + name = "vendor_ts__ra_ap_hir_ty-0.0.301", + sha256 = "bc004e1099ba766a61500c27d34eb5cd336430d0a89a9620315a90d7a202a73a", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir_ty/0.0.300/download"], - strip_prefix = "ra_ap_hir_ty-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_ty-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_hir_ty/0.0.301/download"], + strip_prefix = "ra_ap_hir_ty-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_ty-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_ide_db-0.0.300", - sha256 = "0bbbc97cc9837f91100711b65fb0d8ce9d7ed8da0dc418e08678d973d53da6a3", + name = "vendor_ts__ra_ap_ide_db-0.0.301", + sha256 = "d2acb572d6dbeb1c96d0339890ba91298b8f5f0ab22648da4ee2b4ab77dbc3fe", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_ide_db/0.0.300/download"], - strip_prefix = "ra_ap_ide_db-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_ide_db-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_ide_db/0.0.301/download"], + strip_prefix = "ra_ap_ide_db-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_ide_db-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_intern-0.0.300", - sha256 = "10f4785a674a41f9f52414fb7f19ab9a1d6886cad572e68721a883b0b85c256b", + name = "vendor_ts__ra_ap_intern-0.0.301", + sha256 = "14586c2c4781b69fdd0c505972d9bff8c162a8740537a3ee506faff686d9a20d", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_intern/0.0.300/download"], - strip_prefix = "ra_ap_intern-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_intern-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_intern/0.0.301/download"], + strip_prefix = "ra_ap_intern-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_intern-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_load-cargo-0.0.300", - sha256 = "f3be9990782fd2c2d90b67e2e0b4a86e7412ec8a0719950d9a68292924e85691", + name = "vendor_ts__ra_ap_load-cargo-0.0.301", + sha256 = "50ce5546b3e3414507ab4d12348d0a28748062e33a1448895c68466d0b015503", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_load-cargo/0.0.300/download"], - strip_prefix = "ra_ap_load-cargo-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_load-cargo-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_load-cargo/0.0.301/download"], + strip_prefix = "ra_ap_load-cargo-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_load-cargo-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_mbe-0.0.300", - sha256 = "5b713f4d927f9d86391f66237019b8e5dbcad4ddbbe37c91c2e21adca258b9aa", + name = "vendor_ts__ra_ap_mbe-0.0.301", + sha256 = "67333c6405797cb64aafb994b9a179157b30beeda2352e203e800be2b184a22d", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_mbe/0.0.300/download"], - strip_prefix = "ra_ap_mbe-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_mbe-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_mbe/0.0.301/download"], + strip_prefix = "ra_ap_mbe-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_mbe-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_parser-0.0.300", - sha256 = "0d3fb8a5891c1c1d6fba5e58caa86b88f831990c878e361c54c1c1ff44ca8401", + name = "vendor_ts__ra_ap_parser-0.0.301", + sha256 = "3a3b92b8b147c0826b83e70ad44e3c98e94201fc93e1f09396c43b4d7958c22a", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_parser/0.0.300/download"], - strip_prefix = "ra_ap_parser-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_parser-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_parser/0.0.301/download"], + strip_prefix = "ra_ap_parser-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_parser-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_paths-0.0.300", - sha256 = "9ccd5cfd0dae89ab2c70c4e5aa646f64bb8b5591622477342863c23a5f32dabc", + name = "vendor_ts__ra_ap_paths-0.0.301", + sha256 = "d4991f3d57fac0def7822bebfeb159c8d7b58c824bf82044b765c54f2c0971e2", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_paths/0.0.300/download"], - strip_prefix = "ra_ap_paths-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_paths-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_paths/0.0.301/download"], + strip_prefix = "ra_ap_paths-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_paths-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_proc_macro_api-0.0.300", - sha256 = "dae43c707bfb78f1b841ffb3731cc7876550463306c3b3986c20abd31033e7a2", + name = "vendor_ts__ra_ap_proc_macro_api-0.0.301", + sha256 = "45db9e2df587d56f0738afa89fb2c100ff7c1e9cbe49e07f6a8b62342832211b", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_proc_macro_api/0.0.300/download"], - strip_prefix = "ra_ap_proc_macro_api-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_proc_macro_api-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_proc_macro_api/0.0.301/download"], + strip_prefix = "ra_ap_proc_macro_api-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_proc_macro_api-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_profile-0.0.300", - sha256 = "95a7b93ca94cf0821e8bcac6bf8464cc94d7b3cbe63ffb74946a58ad03991fae", + name = "vendor_ts__ra_ap_profile-0.0.301", + sha256 = "19981637b8ee4160e228c815a7fef3944b5c0555d6af41a931be92d68978bc6c", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_profile/0.0.300/download"], - strip_prefix = "ra_ap_profile-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_profile-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_profile/0.0.301/download"], + strip_prefix = "ra_ap_profile-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_profile-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_project_model-0.0.300", - sha256 = "0751b9433a0dd49c6ae58c9572faf9557d2b53818370d72112b3adeaae5eabc4", + name = "vendor_ts__ra_ap_project_model-0.0.301", + sha256 = "5bda0769fd6ca949fdd5917acb68ddc2c143745614ddd94ef38b376838611cf8", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_project_model/0.0.300/download"], - strip_prefix = "ra_ap_project_model-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_project_model-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_project_model/0.0.301/download"], + strip_prefix = "ra_ap_project_model-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_project_model-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_query-group-macro-0.0.300", - sha256 = "5a82732eb8f5dc592d1d8d9bee23c1d66532e39293f02e23c7a546b60b35072b", + name = "vendor_ts__ra_ap_query-group-macro-0.0.301", + sha256 = "5f182a4b05f004eabaa83250a5de7ea3a13a92c88f3cbe98bfa1880cd9fbce0a", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_query-group-macro/0.0.300/download"], - strip_prefix = "ra_ap_query-group-macro-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_query-group-macro-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_query-group-macro/0.0.301/download"], + strip_prefix = "ra_ap_query-group-macro-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_query-group-macro-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_span-0.0.300", - sha256 = "c498ddf2d71705dcef9fb142269c0027c959a5eb17c435eea5466af7c3b9c47c", + name = "vendor_ts__ra_ap_span-0.0.301", + sha256 = "ca6f9fa2de07f5cccf431674b90e82c1fe1ea2339db3b3869eec44d135de09a4", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_span/0.0.300/download"], - strip_prefix = "ra_ap_span-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_span-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_span/0.0.301/download"], + strip_prefix = "ra_ap_span-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_span-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_stdx-0.0.300", - sha256 = "26ade567b0d692c7efd4ceb921cdbe182beca0b5af9a5cf05c07cf0e14db512a", + name = "vendor_ts__ra_ap_stdx-0.0.301", + sha256 = "aa770adb32896fcba934b464ac3bd179163ba2b0766e275eed5b4e262e08492b", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_stdx/0.0.300/download"], - strip_prefix = "ra_ap_stdx-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_stdx-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_stdx/0.0.301/download"], + strip_prefix = "ra_ap_stdx-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_stdx-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_syntax-0.0.300", - sha256 = "dba62d25b0296eb095d9db77e56d096417a89db4f4de1956add0d472ebcaf922", + name = "vendor_ts__ra_ap_syntax-0.0.301", + sha256 = "6e9e1393281ad5c635239d353ed3cfbf28c8d0af03d0c61a3b24b31d1143b17f", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_syntax/0.0.300/download"], - strip_prefix = "ra_ap_syntax-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_syntax/0.0.301/download"], + strip_prefix = "ra_ap_syntax-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_syntax-bridge-0.0.300", - sha256 = "664466f2e824e285b671366f81128aa4a91b501fedbf7956a6bfb1f13d8b0b39", + name = "vendor_ts__ra_ap_syntax-bridge-0.0.301", + sha256 = "684e6ff1008ee5340335888f0453d94bb38950f110059a51f1818c7f6a56a807", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_syntax-bridge/0.0.300/download"], - strip_prefix = "ra_ap_syntax-bridge-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-bridge-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_syntax-bridge/0.0.301/download"], + strip_prefix = "ra_ap_syntax-bridge-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-bridge-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_toolchain-0.0.300", - sha256 = "2ef82cfc5eb8f9d4a3be9876ce019b78fbfdb8ff4f7e4dee9e384d65122096ab", + name = "vendor_ts__ra_ap_toolchain-0.0.301", + sha256 = "61969c5f72af03a9837e077c2d939d87a5c863623725c461777c352664a3bb03", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_toolchain/0.0.300/download"], - strip_prefix = "ra_ap_toolchain-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_toolchain-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_toolchain/0.0.301/download"], + strip_prefix = "ra_ap_toolchain-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_toolchain-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_tt-0.0.300", - sha256 = "cbc858f5208f0d00f8638d14ab5ffab5d1bc79ad7fe1db5c5e0d478b9a02155c", + name = "vendor_ts__ra_ap_tt-0.0.301", + sha256 = "fb87c7b35572c18a580ea811e970b94875fad5ac7cfa8644266a59081044f959", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_tt/0.0.300/download"], - strip_prefix = "ra_ap_tt-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_tt-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_tt/0.0.301/download"], + strip_prefix = "ra_ap_tt-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_tt-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_vfs-0.0.300", - sha256 = "e065b27829f5281d2ffc41de72551a0e4c4f49a9989ba7721676f414100c8af2", + name = "vendor_ts__ra_ap_vfs-0.0.301", + sha256 = "6c174d6b9b7a7f54687df7e00c3e75ed6f082a7943a9afb1d54f33c0c12773de", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_vfs/0.0.300/download"], - strip_prefix = "ra_ap_vfs-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_vfs/0.0.301/download"], + strip_prefix = "ra_ap_vfs-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-0.0.301.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_vfs-notify-0.0.300", - sha256 = "5a3c795e86c9b5fcdbb99145e401a0d6348ed471ac96f1b7de151c0abe07a5af", + name = "vendor_ts__ra_ap_vfs-notify-0.0.301", + sha256 = "04f6fce8d47c7ce9b8f2cd0e5a55f8fc4878d6043e61f46cde4391d3a5c6086f", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_vfs-notify/0.0.300/download"], - strip_prefix = "ra_ap_vfs-notify-0.0.300", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-notify-0.0.300.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_vfs-notify/0.0.301/download"], + strip_prefix = "ra_ap_vfs-notify-0.0.301", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-notify-0.0.301.bazel"), ) maybe( @@ -2691,32 +2658,32 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__rayon-1.10.0", - sha256 = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa", + name = "vendor_ts__rayon-1.11.0", + sha256 = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f", type = "tar.gz", - urls = ["https://static.crates.io/crates/rayon/1.10.0/download"], - strip_prefix = "rayon-1.10.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rayon-1.10.0.bazel"), + urls = ["https://static.crates.io/crates/rayon/1.11.0/download"], + strip_prefix = "rayon-1.11.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rayon-1.11.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__rayon-core-1.12.1", - sha256 = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2", + name = "vendor_ts__rayon-core-1.13.0", + sha256 = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91", type = "tar.gz", - urls = ["https://static.crates.io/crates/rayon-core/1.12.1/download"], - strip_prefix = "rayon-core-1.12.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rayon-core-1.12.1.bazel"), + urls = ["https://static.crates.io/crates/rayon-core/1.13.0/download"], + strip_prefix = "rayon-core-1.13.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rayon-core-1.13.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__redox_syscall-0.5.13", - sha256 = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6", + name = "vendor_ts__redox_syscall-0.5.17", + sha256 = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77", type = "tar.gz", - urls = ["https://static.crates.io/crates/redox_syscall/0.5.13/download"], - strip_prefix = "redox_syscall-0.5.13", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.redox_syscall-0.5.13.bazel"), + urls = ["https://static.crates.io/crates/redox_syscall/0.5.17/download"], + strip_prefix = "redox_syscall-0.5.17", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.redox_syscall-0.5.17.bazel"), ) maybe( @@ -2741,52 +2708,32 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__regex-1.11.1", - sha256 = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191", - type = "tar.gz", - urls = ["https://static.crates.io/crates/regex/1.11.1/download"], - strip_prefix = "regex-1.11.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-1.11.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__regex-automata-0.1.10", - sha256 = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132", + name = "vendor_ts__regex-1.11.2", + sha256 = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912", type = "tar.gz", - urls = ["https://static.crates.io/crates/regex-automata/0.1.10/download"], - strip_prefix = "regex-automata-0.1.10", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-automata-0.1.10.bazel"), + urls = ["https://static.crates.io/crates/regex/1.11.2/download"], + strip_prefix = "regex-1.11.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-1.11.2.bazel"), ) maybe( http_archive, - name = "vendor_ts__regex-automata-0.4.9", - sha256 = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908", + name = "vendor_ts__regex-automata-0.4.10", + sha256 = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6", type = "tar.gz", - urls = ["https://static.crates.io/crates/regex-automata/0.4.9/download"], - strip_prefix = "regex-automata-0.4.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-automata-0.4.9.bazel"), + urls = ["https://static.crates.io/crates/regex-automata/0.4.10/download"], + strip_prefix = "regex-automata-0.4.10", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-automata-0.4.10.bazel"), ) maybe( http_archive, - name = "vendor_ts__regex-syntax-0.6.29", - sha256 = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1", + name = "vendor_ts__regex-syntax-0.8.6", + sha256 = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001", type = "tar.gz", - urls = ["https://static.crates.io/crates/regex-syntax/0.6.29/download"], - strip_prefix = "regex-syntax-0.6.29", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-syntax-0.6.29.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__regex-syntax-0.8.5", - sha256 = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/regex-syntax/0.8.5/download"], - strip_prefix = "regex-syntax-0.8.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-syntax-0.8.5.bazel"), + urls = ["https://static.crates.io/crates/regex-syntax/0.8.6/download"], + strip_prefix = "regex-syntax-0.8.6", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-syntax-0.8.6.bazel"), ) maybe( @@ -2851,12 +2798,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__rustversion-1.0.21", - sha256 = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d", + name = "vendor_ts__rustversion-1.0.22", + sha256 = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d", type = "tar.gz", - urls = ["https://static.crates.io/crates/rustversion/1.0.21/download"], - strip_prefix = "rustversion-1.0.21", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustversion-1.0.21.bazel"), + urls = ["https://static.crates.io/crates/rustversion/1.0.22/download"], + strip_prefix = "rustversion-1.0.22", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustversion-1.0.22.bazel"), ) maybe( @@ -2981,12 +2928,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__serde-untagged-0.1.7", - sha256 = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e", + name = "vendor_ts__serde-untagged-0.1.8", + sha256 = "34836a629bcbc6f1afdf0907a744870039b1e14c0561cb26094fa683b158eff3", type = "tar.gz", - urls = ["https://static.crates.io/crates/serde-untagged/0.1.7/download"], - strip_prefix = "serde-untagged-0.1.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde-untagged-0.1.7.bazel"), + urls = ["https://static.crates.io/crates/serde-untagged/0.1.8/download"], + strip_prefix = "serde-untagged-0.1.8", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde-untagged-0.1.8.bazel"), ) maybe( @@ -3011,12 +2958,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__serde_json-1.0.142", - sha256 = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7", + name = "vendor_ts__serde_json-1.0.143", + sha256 = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a", type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_json/1.0.142/download"], - strip_prefix = "serde_json-1.0.142", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_json-1.0.142.bazel"), + urls = ["https://static.crates.io/crates/serde_json/1.0.143/download"], + strip_prefix = "serde_json-1.0.143", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_json-1.0.143.bazel"), ) maybe( @@ -3141,12 +3088,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__syn-2.0.104", - sha256 = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40", + name = "vendor_ts__syn-2.0.106", + sha256 = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6", type = "tar.gz", - urls = ["https://static.crates.io/crates/syn/2.0.104/download"], - strip_prefix = "syn-2.0.104", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.syn-2.0.104.bazel"), + urls = ["https://static.crates.io/crates/syn/2.0.106/download"], + strip_prefix = "syn-2.0.106", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.syn-2.0.106.bazel"), ) maybe( @@ -3191,62 +3138,62 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__thiserror-2.0.12", - sha256 = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708", + name = "vendor_ts__thiserror-2.0.16", + sha256 = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0", type = "tar.gz", - urls = ["https://static.crates.io/crates/thiserror/2.0.12/download"], - strip_prefix = "thiserror-2.0.12", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-2.0.12.bazel"), + urls = ["https://static.crates.io/crates/thiserror/2.0.16/download"], + strip_prefix = "thiserror-2.0.16", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-2.0.16.bazel"), ) maybe( http_archive, - name = "vendor_ts__thiserror-impl-2.0.12", - sha256 = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d", + name = "vendor_ts__thiserror-impl-2.0.16", + sha256 = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960", type = "tar.gz", - urls = ["https://static.crates.io/crates/thiserror-impl/2.0.12/download"], - strip_prefix = "thiserror-impl-2.0.12", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-impl-2.0.12.bazel"), + urls = ["https://static.crates.io/crates/thiserror-impl/2.0.16/download"], + strip_prefix = "thiserror-impl-2.0.16", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-impl-2.0.16.bazel"), ) maybe( http_archive, - name = "vendor_ts__thread_local-1.1.8", - sha256 = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c", + name = "vendor_ts__thread_local-1.1.9", + sha256 = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185", type = "tar.gz", - urls = ["https://static.crates.io/crates/thread_local/1.1.8/download"], - strip_prefix = "thread_local-1.1.8", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thread_local-1.1.8.bazel"), + urls = ["https://static.crates.io/crates/thread_local/1.1.9/download"], + strip_prefix = "thread_local-1.1.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thread_local-1.1.9.bazel"), ) maybe( http_archive, - name = "vendor_ts__time-0.3.41", - sha256 = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40", + name = "vendor_ts__time-0.3.43", + sha256 = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031", type = "tar.gz", - urls = ["https://static.crates.io/crates/time/0.3.41/download"], - strip_prefix = "time-0.3.41", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-0.3.41.bazel"), + urls = ["https://static.crates.io/crates/time/0.3.43/download"], + strip_prefix = "time-0.3.43", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-0.3.43.bazel"), ) maybe( http_archive, - name = "vendor_ts__time-core-0.1.4", - sha256 = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c", + name = "vendor_ts__time-core-0.1.6", + sha256 = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b", type = "tar.gz", - urls = ["https://static.crates.io/crates/time-core/0.1.4/download"], - strip_prefix = "time-core-0.1.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-core-0.1.4.bazel"), + urls = ["https://static.crates.io/crates/time-core/0.1.6/download"], + strip_prefix = "time-core-0.1.6", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-core-0.1.6.bazel"), ) maybe( http_archive, - name = "vendor_ts__time-macros-0.2.22", - sha256 = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49", + name = "vendor_ts__time-macros-0.2.24", + sha256 = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3", type = "tar.gz", - urls = ["https://static.crates.io/crates/time-macros/0.2.22/download"], - strip_prefix = "time-macros-0.2.22", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-macros-0.2.22.bazel"), + urls = ["https://static.crates.io/crates/time-macros/0.2.24/download"], + strip_prefix = "time-macros-0.2.24", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-macros-0.2.24.bazel"), ) maybe( @@ -3391,22 +3338,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__tracing-subscriber-0.3.19", - sha256 = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008", + name = "vendor_ts__tracing-subscriber-0.3.20", + sha256 = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5", type = "tar.gz", - urls = ["https://static.crates.io/crates/tracing-subscriber/0.3.19/download"], - strip_prefix = "tracing-subscriber-0.3.19", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-subscriber-0.3.19.bazel"), + urls = ["https://static.crates.io/crates/tracing-subscriber/0.3.20/download"], + strip_prefix = "tracing-subscriber-0.3.20", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-subscriber-0.3.20.bazel"), ) maybe( http_archive, - name = "vendor_ts__tree-sitter-0.24.6", - sha256 = "5f2434c86ba59ed15af56039cc5bf1acf8ba76ce301e32ef08827388ef285ec5", + name = "vendor_ts__tree-sitter-0.25.9", + sha256 = "ccd2a058a86cfece0bf96f7cce1021efef9c8ed0e892ab74639173e5ed7a34fa", type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter/0.24.6/download"], - strip_prefix = "tree-sitter-0.24.6", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-0.24.6.bazel"), + urls = ["https://static.crates.io/crates/tree-sitter/0.25.9/download"], + strip_prefix = "tree-sitter-0.25.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-0.25.9.bazel"), ) maybe( @@ -3431,12 +3378,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__tree-sitter-language-0.1.3", - sha256 = "c199356c799a8945965bb5f2c55b2ad9d9aa7c4b4f6e587fe9dea0bc715e5f9c", + name = "vendor_ts__tree-sitter-language-0.1.5", + sha256 = "c4013970217383f67b18aef68f6fb2e8d409bc5755227092d32efb0422ba24b8", type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter-language/0.1.3/download"], - strip_prefix = "tree-sitter-language-0.1.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-language-0.1.3.bazel"), + urls = ["https://static.crates.io/crates/tree-sitter-language/0.1.5/download"], + strip_prefix = "tree-sitter-language-0.1.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-language-0.1.5.bazel"), ) maybe( @@ -3511,12 +3458,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__unicode-ident-1.0.18", - sha256 = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512", + name = "vendor_ts__unicode-ident-1.0.19", + sha256 = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d", type = "tar.gz", - urls = ["https://static.crates.io/crates/unicode-ident/1.0.18/download"], - strip_prefix = "unicode-ident-1.0.18", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unicode-ident-1.0.18.bazel"), + urls = ["https://static.crates.io/crates/unicode-ident/1.0.19/download"], + strip_prefix = "unicode-ident-1.0.19", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unicode-ident-1.0.19.bazel"), ) maybe( @@ -3551,12 +3498,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__url-2.5.4", - sha256 = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60", + name = "vendor_ts__url-2.5.7", + sha256 = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b", type = "tar.gz", - urls = ["https://static.crates.io/crates/url/2.5.4/download"], - strip_prefix = "url-2.5.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.url-2.5.4.bazel"), + urls = ["https://static.crates.io/crates/url/2.5.7/download"], + strip_prefix = "url-2.5.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.url-2.5.7.bazel"), ) maybe( @@ -3621,102 +3568,82 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__wasi-0.14.2-wasi-0.2.4", - sha256 = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wasi/0.14.2+wasi-0.2.4/download"], - strip_prefix = "wasi-0.14.2+wasi-0.2.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasi-0.14.2+wasi-0.2.4.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wasm-bindgen-0.2.100", - sha256 = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5", + name = "vendor_ts__wasi-0.14.5-wasi-0.2.4", + sha256 = "a4494f6290a82f5fe584817a676a34b9d6763e8d9d18204009fb31dceca98fd4", type = "tar.gz", - urls = ["https://static.crates.io/crates/wasm-bindgen/0.2.100/download"], - strip_prefix = "wasm-bindgen-0.2.100", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-0.2.100.bazel"), + urls = ["https://static.crates.io/crates/wasi/0.14.5+wasi-0.2.4/download"], + strip_prefix = "wasi-0.14.5+wasi-0.2.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasi-0.14.5+wasi-0.2.4.bazel"), ) maybe( http_archive, - name = "vendor_ts__wasm-bindgen-backend-0.2.100", - sha256 = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6", + name = "vendor_ts__wasip2-1.0.0-wasi-0.2.4", + sha256 = "03fa2761397e5bd52002cd7e73110c71af2109aca4e521a9f40473fe685b0a24", type = "tar.gz", - urls = ["https://static.crates.io/crates/wasm-bindgen-backend/0.2.100/download"], - strip_prefix = "wasm-bindgen-backend-0.2.100", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-backend-0.2.100.bazel"), + urls = ["https://static.crates.io/crates/wasip2/1.0.0+wasi-0.2.4/download"], + strip_prefix = "wasip2-1.0.0+wasi-0.2.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasip2-1.0.0+wasi-0.2.4.bazel"), ) maybe( http_archive, - name = "vendor_ts__wasm-bindgen-macro-0.2.100", - sha256 = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407", + name = "vendor_ts__wasm-bindgen-0.2.101", + sha256 = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b", type = "tar.gz", - urls = ["https://static.crates.io/crates/wasm-bindgen-macro/0.2.100/download"], - strip_prefix = "wasm-bindgen-macro-0.2.100", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-macro-0.2.100.bazel"), + urls = ["https://static.crates.io/crates/wasm-bindgen/0.2.101/download"], + strip_prefix = "wasm-bindgen-0.2.101", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-0.2.101.bazel"), ) maybe( http_archive, - name = "vendor_ts__wasm-bindgen-macro-support-0.2.100", - sha256 = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de", + name = "vendor_ts__wasm-bindgen-backend-0.2.101", + sha256 = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb", type = "tar.gz", - urls = ["https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.100/download"], - strip_prefix = "wasm-bindgen-macro-support-0.2.100", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-macro-support-0.2.100.bazel"), + urls = ["https://static.crates.io/crates/wasm-bindgen-backend/0.2.101/download"], + strip_prefix = "wasm-bindgen-backend-0.2.101", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-backend-0.2.101.bazel"), ) maybe( http_archive, - name = "vendor_ts__wasm-bindgen-shared-0.2.100", - sha256 = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d", + name = "vendor_ts__wasm-bindgen-macro-0.2.101", + sha256 = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d", type = "tar.gz", - urls = ["https://static.crates.io/crates/wasm-bindgen-shared/0.2.100/download"], - strip_prefix = "wasm-bindgen-shared-0.2.100", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-shared-0.2.100.bazel"), + urls = ["https://static.crates.io/crates/wasm-bindgen-macro/0.2.101/download"], + strip_prefix = "wasm-bindgen-macro-0.2.101", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-macro-0.2.101.bazel"), ) maybe( http_archive, - name = "vendor_ts__winapi-0.3.9", - sha256 = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419", + name = "vendor_ts__wasm-bindgen-macro-support-0.2.101", + sha256 = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa", type = "tar.gz", - urls = ["https://static.crates.io/crates/winapi/0.3.9/download"], - strip_prefix = "winapi-0.3.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winapi-0.3.9.bazel"), + urls = ["https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.101/download"], + strip_prefix = "wasm-bindgen-macro-support-0.2.101", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-macro-support-0.2.101.bazel"), ) maybe( http_archive, - name = "vendor_ts__winapi-i686-pc-windows-gnu-0.4.0", - sha256 = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6", + name = "vendor_ts__wasm-bindgen-shared-0.2.101", + sha256 = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1", type = "tar.gz", - urls = ["https://static.crates.io/crates/winapi-i686-pc-windows-gnu/0.4.0/download"], - strip_prefix = "winapi-i686-pc-windows-gnu-0.4.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel"), + urls = ["https://static.crates.io/crates/wasm-bindgen-shared/0.2.101/download"], + strip_prefix = "wasm-bindgen-shared-0.2.101", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-shared-0.2.101.bazel"), ) maybe( http_archive, - name = "vendor_ts__winapi-util-0.1.9", - sha256 = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb", + name = "vendor_ts__winapi-util-0.1.11", + sha256 = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22", type = "tar.gz", - urls = ["https://static.crates.io/crates/winapi-util/0.1.9/download"], - strip_prefix = "winapi-util-0.1.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winapi-util-0.1.9.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__winapi-x86_64-pc-windows-gnu-0.4.0", - sha256 = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download"], - strip_prefix = "winapi-x86_64-pc-windows-gnu-0.4.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel"), + urls = ["https://static.crates.io/crates/winapi-util/0.1.11/download"], + strip_prefix = "winapi-util-0.1.11", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winapi-util-0.1.11.bazel"), ) maybe( @@ -3759,6 +3686,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-link-0.1.3.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__windows-link-0.2.0", + sha256 = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-link/0.2.0/download"], + strip_prefix = "windows-link-0.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-link-0.2.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__windows-result-0.3.4", @@ -3779,16 +3716,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-strings-0.4.2.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__windows-sys-0.48.0", - sha256 = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-sys/0.48.0/download"], - strip_prefix = "windows-sys-0.48.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-sys-0.48.0.bazel"), - ) - maybe( http_archive, name = "vendor_ts__windows-sys-0.52.0", @@ -3821,12 +3748,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__windows-targets-0.48.5", - sha256 = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c", + name = "vendor_ts__windows-sys-0.61.0", + sha256 = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa", type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-targets/0.48.5/download"], - strip_prefix = "windows-targets-0.48.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-targets-0.48.5.bazel"), + urls = ["https://static.crates.io/crates/windows-sys/0.61.0/download"], + strip_prefix = "windows-sys-0.61.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-sys-0.61.0.bazel"), ) maybe( @@ -3841,22 +3768,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__windows-targets-0.53.2", - sha256 = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-targets/0.53.2/download"], - strip_prefix = "windows-targets-0.53.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-targets-0.53.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows_aarch64_gnullvm-0.48.5", - sha256 = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8", + name = "vendor_ts__windows-targets-0.53.3", + sha256 = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91", type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_aarch64_gnullvm/0.48.5/download"], - strip_prefix = "windows_aarch64_gnullvm-0.48.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_aarch64_gnullvm-0.48.5.bazel"), + urls = ["https://static.crates.io/crates/windows-targets/0.53.3/download"], + strip_prefix = "windows-targets-0.53.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-targets-0.53.3.bazel"), ) maybe( @@ -3879,16 +3796,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_aarch64_gnullvm-0.53.0.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__windows_aarch64_msvc-0.48.5", - sha256 = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_aarch64_msvc/0.48.5/download"], - strip_prefix = "windows_aarch64_msvc-0.48.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_aarch64_msvc-0.48.5.bazel"), - ) - maybe( http_archive, name = "vendor_ts__windows_aarch64_msvc-0.52.6", @@ -3909,16 +3816,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_aarch64_msvc-0.53.0.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__windows_i686_gnu-0.48.5", - sha256 = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_i686_gnu/0.48.5/download"], - strip_prefix = "windows_i686_gnu-0.48.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_gnu-0.48.5.bazel"), - ) - maybe( http_archive, name = "vendor_ts__windows_i686_gnu-0.52.6", @@ -3959,16 +3856,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_gnullvm-0.53.0.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__windows_i686_msvc-0.48.5", - sha256 = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_i686_msvc/0.48.5/download"], - strip_prefix = "windows_i686_msvc-0.48.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_msvc-0.48.5.bazel"), - ) - maybe( http_archive, name = "vendor_ts__windows_i686_msvc-0.52.6", @@ -3989,16 +3876,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_msvc-0.53.0.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__windows_x86_64_gnu-0.48.5", - sha256 = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_x86_64_gnu/0.48.5/download"], - strip_prefix = "windows_x86_64_gnu-0.48.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_gnu-0.48.5.bazel"), - ) - maybe( http_archive, name = "vendor_ts__windows_x86_64_gnu-0.52.6", @@ -4019,16 +3896,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_gnu-0.53.0.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__windows_x86_64_gnullvm-0.48.5", - sha256 = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_x86_64_gnullvm/0.48.5/download"], - strip_prefix = "windows_x86_64_gnullvm-0.48.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_gnullvm-0.48.5.bazel"), - ) - maybe( http_archive, name = "vendor_ts__windows_x86_64_gnullvm-0.52.6", @@ -4049,16 +3916,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_gnullvm-0.53.0.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__windows_x86_64_msvc-0.48.5", - sha256 = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_x86_64_msvc/0.48.5/download"], - strip_prefix = "windows_x86_64_msvc-0.48.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_msvc-0.48.5.bazel"), - ) - maybe( http_archive, name = "vendor_ts__windows_x86_64_msvc-0.52.6", @@ -4081,22 +3938,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__winnow-0.7.11", - sha256 = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd", + name = "vendor_ts__winnow-0.7.13", + sha256 = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf", type = "tar.gz", - urls = ["https://static.crates.io/crates/winnow/0.7.11/download"], - strip_prefix = "winnow-0.7.11", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winnow-0.7.11.bazel"), + urls = ["https://static.crates.io/crates/winnow/0.7.13/download"], + strip_prefix = "winnow-0.7.13", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winnow-0.7.13.bazel"), ) maybe( http_archive, - name = "vendor_ts__wit-bindgen-rt-0.39.0", - sha256 = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1", + name = "vendor_ts__wit-bindgen-0.45.1", + sha256 = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36", type = "tar.gz", - urls = ["https://static.crates.io/crates/wit-bindgen-rt/0.39.0/download"], - strip_prefix = "wit-bindgen-rt-0.39.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-bindgen-rt-0.39.0.bazel"), + urls = ["https://static.crates.io/crates/wit-bindgen/0.45.1/download"], + strip_prefix = "wit-bindgen-0.45.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-bindgen-0.45.1.bazel"), ) maybe( @@ -4141,22 +3998,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__zerocopy-0.8.26", - sha256 = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f", + name = "vendor_ts__zerocopy-0.8.27", + sha256 = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c", type = "tar.gz", - urls = ["https://static.crates.io/crates/zerocopy/0.8.26/download"], - strip_prefix = "zerocopy-0.8.26", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerocopy-0.8.26.bazel"), + urls = ["https://static.crates.io/crates/zerocopy/0.8.27/download"], + strip_prefix = "zerocopy-0.8.27", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerocopy-0.8.27.bazel"), ) maybe( http_archive, - name = "vendor_ts__zerocopy-derive-0.8.26", - sha256 = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181", + name = "vendor_ts__zerocopy-derive-0.8.27", + sha256 = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831", type = "tar.gz", - urls = ["https://static.crates.io/crates/zerocopy-derive/0.8.26/download"], - strip_prefix = "zerocopy-derive-0.8.26", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerocopy-derive-0.8.26.bazel"), + urls = ["https://static.crates.io/crates/zerocopy-derive/0.8.27/download"], + strip_prefix = "zerocopy-derive-0.8.27", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerocopy-derive-0.8.27.bazel"), ) maybe( @@ -4191,12 +4048,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__zerovec-0.11.2", - sha256 = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428", + name = "vendor_ts__zerovec-0.11.4", + sha256 = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b", type = "tar.gz", - urls = ["https://static.crates.io/crates/zerovec/0.11.2/download"], - strip_prefix = "zerovec-0.11.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerovec-0.11.2.bazel"), + urls = ["https://static.crates.io/crates/zerovec/0.11.4/download"], + strip_prefix = "zerovec-0.11.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerovec-0.11.4.bazel"), ) maybe( @@ -4231,61 +4088,61 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__zstd-sys-2.0.15-zstd.1.5.7", - sha256 = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237", + name = "vendor_ts__zstd-sys-2.0.16-zstd.1.5.7", + sha256 = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748", type = "tar.gz", - urls = ["https://static.crates.io/crates/zstd-sys/2.0.15+zstd.1.5.7/download"], - strip_prefix = "zstd-sys-2.0.15+zstd.1.5.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zstd-sys-2.0.15+zstd.1.5.7.bazel"), + urls = ["https://static.crates.io/crates/zstd-sys/2.0.16+zstd.1.5.7/download"], + strip_prefix = "zstd-sys-2.0.16+zstd.1.5.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel"), ) return [ struct(repo = "vendor_ts__anyhow-1.0.99", is_dev_dep = False), struct(repo = "vendor_ts__argfile-0.2.1", is_dev_dep = False), struct(repo = "vendor_ts__chalk-ir-0.104.0", is_dev_dep = False), - struct(repo = "vendor_ts__chrono-0.4.41", is_dev_dep = False), - struct(repo = "vendor_ts__clap-4.5.44", is_dev_dep = False), + struct(repo = "vendor_ts__chrono-0.4.42", is_dev_dep = False), + struct(repo = "vendor_ts__clap-4.5.47", is_dev_dep = False), struct(repo = "vendor_ts__dunce-1.0.5", is_dev_dep = False), struct(repo = "vendor_ts__either-1.15.0", is_dev_dep = False), struct(repo = "vendor_ts__encoding-0.2.33", is_dev_dep = False), struct(repo = "vendor_ts__figment-0.10.19", is_dev_dep = False), - struct(repo = "vendor_ts__flate2-1.1.0", is_dev_dep = False), + struct(repo = "vendor_ts__flate2-1.1.2", is_dev_dep = False), struct(repo = "vendor_ts__glob-0.3.3", is_dev_dep = False), - struct(repo = "vendor_ts__globset-0.4.15", is_dev_dep = False), + struct(repo = "vendor_ts__globset-0.4.16", is_dev_dep = False), struct(repo = "vendor_ts__itertools-0.14.0", is_dev_dep = False), struct(repo = "vendor_ts__lazy_static-1.5.0", is_dev_dep = False), struct(repo = "vendor_ts__mustache-0.9.0", is_dev_dep = False), struct(repo = "vendor_ts__num-traits-0.2.19", is_dev_dep = False), struct(repo = "vendor_ts__num_cpus-1.17.0", is_dev_dep = False), - struct(repo = "vendor_ts__proc-macro2-1.0.97", is_dev_dep = False), + struct(repo = "vendor_ts__proc-macro2-1.0.101", is_dev_dep = False), struct(repo = "vendor_ts__quote-1.0.40", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_base_db-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_cfg-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir_def-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir_expand-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir_ty-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_ide_db-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_intern-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_load-cargo-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_parser-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_paths-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_project_model-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_span-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_stdx-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_syntax-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_vfs-0.0.300", is_dev_dep = False), - struct(repo = "vendor_ts__rayon-1.10.0", is_dev_dep = False), - struct(repo = "vendor_ts__regex-1.11.1", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_base_db-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_cfg-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_def-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_expand-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_ty-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_ide_db-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_intern-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_load-cargo-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_parser-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_paths-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_project_model-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_span-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_stdx-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_syntax-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_vfs-0.0.301", is_dev_dep = False), + struct(repo = "vendor_ts__rayon-1.11.0", is_dev_dep = False), + struct(repo = "vendor_ts__regex-1.11.2", is_dev_dep = False), struct(repo = "vendor_ts__serde-1.0.219", is_dev_dep = False), - struct(repo = "vendor_ts__serde_json-1.0.142", is_dev_dep = False), + struct(repo = "vendor_ts__serde_json-1.0.143", is_dev_dep = False), struct(repo = "vendor_ts__serde_with-3.14.0", is_dev_dep = False), - struct(repo = "vendor_ts__syn-2.0.104", is_dev_dep = False), + struct(repo = "vendor_ts__syn-2.0.106", is_dev_dep = False), struct(repo = "vendor_ts__toml-0.9.5", is_dev_dep = False), struct(repo = "vendor_ts__tracing-0.1.41", is_dev_dep = False), struct(repo = "vendor_ts__tracing-flame-0.2.0", is_dev_dep = False), - struct(repo = "vendor_ts__tracing-subscriber-0.3.19", is_dev_dep = False), - struct(repo = "vendor_ts__tree-sitter-0.24.6", is_dev_dep = False), + struct(repo = "vendor_ts__tracing-subscriber-0.3.20", is_dev_dep = False), + struct(repo = "vendor_ts__tree-sitter-0.25.9", is_dev_dep = False), struct(repo = "vendor_ts__tree-sitter-embedded-template-0.23.2", is_dev_dep = False), struct(repo = "vendor_ts__tree-sitter-ruby-0.23.1", is_dev_dep = False), struct(repo = "vendor_ts__triomphe-0.1.14", is_dev_dep = False), diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 6b54042fef32..4cbaa48190df 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.32 + +No user-facing changes. + ## 1.0.31 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.32.md b/misc/suite-helpers/change-notes/released/1.0.32.md new file mode 100644 index 000000000000..05c4073731c4 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.32.md @@ -0,0 +1,3 @@ +## 1.0.32 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index f5bdc98ffc82..7bc5c51ba7bf 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.31 +lastReleaseVersion: 1.0.32 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index a0249432210d..7d71d83613d3 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.31 +version: 1.0.32 groups: shared warnOnImplicitThis: true diff --git a/powershell/ql/lib/semmle/code/powershell/dataflow/internal/FlowSummaryImpl.qll b/powershell/ql/lib/semmle/code/powershell/dataflow/internal/FlowSummaryImpl.qll index 26199158b3b0..3207362a272a 100644 --- a/powershell/ql/lib/semmle/code/powershell/dataflow/internal/FlowSummaryImpl.qll +++ b/powershell/ql/lib/semmle/code/powershell/dataflow/internal/FlowSummaryImpl.qll @@ -128,7 +128,9 @@ private module StepsInput implements Impl::Private::StepsInputSig { result.asCall().getAstNode() = sc.(LibraryCallable).getACallSimple() } - Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponent sc) { none() } + Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack sc) { none() } + + DataFlowCallable getSourceNodeEnclosingCallable(Input::SourceBase source) { none() } Node getSinkNode(Input::SinkBase source, Impl::Private::SummaryComponent sc) { none() } } diff --git a/python/extractor/semmle/util.py b/python/extractor/semmle/util.py index 56f7889ae231..8196f76e4375 100644 --- a/python/extractor/semmle/util.py +++ b/python/extractor/semmle/util.py @@ -10,7 +10,7 @@ #Semantic version of extractor. #Update this if any changes are made -VERSION = "7.1.3" +VERSION = "7.1.4" PY_EXTENSIONS = ".py", ".pyw" diff --git a/python/extractor/tests/parser/types_new.expected b/python/extractor/tests/parser/types_new.expected index a390ed1aae2a..de4f44862800 100644 --- a/python/extractor/tests/parser/types_new.expected +++ b/python/extractor/tests/parser/types_new.expected @@ -308,47 +308,6 @@ Module: [1, 0] - [23, 0] ] ctx: Load ctx: Load - TypeAlias: [20, 0] - [20, 41] - name: - Name: [20, 5] - [20, 9] - variable: Variable('Baz2', None) - ctx: Store - type_parameters: [ - ParamSpec: [20, 10] - [20, 27] - name: - Name: [20, 12] - [20, 14] - variable: Variable('P2', None) - ctx: Store - default: - List: [20, 17] - [20, 27] - elts: [ - Name: [20, 18] - [20, 21] - variable: Variable('int', None) - ctx: Load - Name: [20, 23] - [20, 26] - variable: Variable('str', None) - ctx: Load - ] - ctx: Load - ] - value: - Subscript: [20, 31] - [20, 41] - value: - Name: [20, 31] - [20, 35] - variable: Variable('Spam', None) - ctx: Load - index: - BinOp: [20, 36] - [20, 40] - left: - Name: [20, 36] - [20, 36] - variable: Variable('', None) - ctx: Load - op: Pow - right: - Name: [20, 38] - [20, 40] - variable: Variable('P2', None) - ctx: Load - ctx: Load TypeAlias: [21, 0] - [21, 41] name: Name: [21, 5] - [21, 9] diff --git a/python/extractor/tests/parser/types_new.py b/python/extractor/tests/parser/types_new.py index 12e5eac0556c..9709d0f30449 100644 --- a/python/extractor/tests/parser/types_new.py +++ b/python/extractor/tests/parser/types_new.py @@ -17,6 +17,6 @@ class Qux1[*Ts1 = *tuple[int, bool]]: ... # TypeAliases type Foo2[T15, U1 = str] = Bar1[T15, U1] -type Baz2[**P2 = [int, str]] = Spam[**P2] +# type Baz2[**P2 = [int, str]] = Spam[**P2] # From the PEP, but this is not actually valid syntax! type Qux2[*Ts2 = *tuple[str]] = Ham[*Ts2] type Rab[U2, T15 = str] = Bar2[T15, U2] diff --git a/python/extractor/tsg-python/Cargo.lock b/python/extractor/tsg-python/Cargo.lock index 16849dc7f4d7..f3604d1a3870 100644 --- a/python/extractor/tsg-python/Cargo.lock +++ b/python/extractor/tsg-python/Cargo.lock @@ -1,12 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 - -[[package]] -name = "ahash" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0453232ace82dee0dd0b4c87a59bd90f7b53b314f3e0f61fe2ee7c8a16482289" +version = 4 [[package]] name = "aho-corasick" @@ -82,12 +76,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - [[package]] name = "clap" version = "4.5.30" @@ -121,15 +109,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" -[[package]] -name = "hashbrown" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" -dependencies = [ - "ahash", -] - [[package]] name = "is_terminal_polyfill" version = "1.70.1" @@ -258,14 +237,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" [[package]] -name = "string-interner" -version = "0.12.2" +name = "streaming-iterator" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "383196d1876517ee6f9f0864d1fc1070331b803335d3c6daaa04bbcccd823c08" -dependencies = [ - "cfg-if", - "hashbrown", -] +checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520" [[package]] name = "strsim" @@ -306,30 +281,39 @@ dependencies = [ [[package]] name = "tree-sitter" -version = "0.20.4" +version = "0.24.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e34327f8eac545e3f037382471b2b19367725a242bba7bc45edb9efb49fe39a" +checksum = "a5387dffa7ffc7d2dae12b50c6f7aab8ff79d6210147c6613561fc3d474c6f75" dependencies = [ "cc", "regex", + "regex-syntax", + "streaming-iterator", + "tree-sitter-language", ] [[package]] name = "tree-sitter-graph" -version = "0.7.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "639d21e886f581d293de5f5081f09af003c54607ff3fa85efa159b243ba1f97a" +checksum = "63f86eb73c7d891c4b9b6fe4d4e63dd94c506e4788af7c2296afdcfbeea626cc" dependencies = [ "log", "regex", "serde", "serde_json", "smallvec", - "string-interner", + "streaming-iterator", "thiserror", "tree-sitter", ] +[[package]] +name = "tree-sitter-language" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4013970217383f67b18aef68f6fb2e8d409bc5755227092d32efb0422ba24b8" + [[package]] name = "tsg-python" version = "0.1.0" diff --git a/python/extractor/tsg-python/Cargo.toml b/python/extractor/tsg-python/Cargo.toml index 7ad2c1c949e6..f02fb06931b2 100644 --- a/python/extractor/tsg-python/Cargo.toml +++ b/python/extractor/tsg-python/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" [dependencies] anyhow = "1.0" regex = "1" -tree-sitter = "=0.20.4" -tree-sitter-graph = "0.7.0" +tree-sitter = "=0.24.7" +tree-sitter-graph = "0.12.0" tsp = {path = "tsp"} clap = "4.5" diff --git a/python/extractor/tsg-python/python.tsg b/python/extractor/tsg-python/python.tsg index 00e231ee6d53..50a59d4c27cd 100644 --- a/python/extractor/tsg-python/python.tsg +++ b/python/extractor/tsg-python/python.tsg @@ -6,16 +6,6 @@ (module) @mod { let @mod.node = (ast-node @mod "Module") } -(_) @anynode -{ - scan (node-type @anynode) { - "^(ERROR|MISSING)$" { - let @anynode.node = (ast-node @anynode "SyntaxErrorNode") - attr (@anynode.node) source = (source-text @anynode) - } - } -} - (parenthesized_expression) @nd { let @nd.node = (ast-node @nd "Expr") } @@ -416,13 +406,13 @@ attr (@if.node) _location_end = (location-end @expr) } -(generator_expression . "(" . (comment)* . (expression) @start (for_in_clause) @child [(for_in_clause) (if_clause)] @end . (comment)* . ")" .) @genexpr +(generator_expression . "(" . (comment)* . (expression) @start (for_in_clause) @child [(for_in_clause) (if_clause)] @end . (comment)* . ")" .) @_genexpr { attr (@child.node) _location_start = (location-start @start) attr (@child.node) _location_end = (location-end @end) } -(generator_expression . "(" . (comment)* . (expression) @start (for_in_clause) @end . (comment)* . ")" .) @genexpr +(generator_expression . "(" . (comment)* . (expression) @start (for_in_clause) @end . (comment)* . ")" .) @_genexpr { attr (@end.node) _location_start = (location-start @start) attr (@end.node) _location_end = (location-end @end) @@ -524,7 +514,7 @@ attr (@del.node -> @target.node) targets = (named-child-index @target) } -(delete_statement target: (_) @target) @del +(delete_statement target: (_) @target) @_del { attr (@target.node) ctx = "del" } @@ -798,8 +788,8 @@ (dictionary_comprehension body: (pair - key: (_) @key - value: (_) @value + key: (_) @_key + value: (_) @_value ) ) @genexpr { @@ -1299,7 +1289,7 @@ ; the index of the left-hand side of the current assignment. ; Base case, for the outermost assignment we set the outermost node to this node, and the index to zero. -(expression_statement (assignment !type) @assign) @expr +(expression_statement (assignment !type) @assign) @_expr { let @assign.outermost_assignment = @assign.node let @assign.target_index = 0 @@ -1358,7 +1348,7 @@ } (assignment - left: (_) @target + left: (_) @_target type: (_) right: (_) @value ) @assign @@ -2330,7 +2320,7 @@ attr (@operand.node) ctx = "load" } -(unary_operator "~" @op) @unaryop +(unary_operator "~" @_op) @unaryop { attr (@unaryop.node) op = "~" } @@ -2614,7 +2604,7 @@ ; Async status ; NOTE: We only set the `is_async` field on the _first_ clause of the `with` statement, ; as this is the behaviour of the old parser. -(with_statement "async" "with" @with_keyword (with_clause . (with_item) @with)) +(with_statement "async" "with" @_with_keyword (with_clause . (with_item) @with)) { attr (@with.node) is_async = #true } @@ -2800,7 +2790,7 @@ (identifier) @obj . (identifier) @attr -) @match_value_pattern +) @_match_value_pattern { let attribute = (ast-node @attr "Attribute") attr (@attr.node) _skip_to = attribute @@ -2814,7 +2804,7 @@ (match_value_pattern . (identifier) @id -) @match_value_pattern +) @_match_value_pattern { attr (@id.node) ctx = "load" } @@ -3267,8 +3257,8 @@ (decorated_definition (decorator (expression) @exp1) @dec1 . (comment)* . - (decorator (expression) @exp2) @dec2 -) @decorator + (decorator (expression) @_exp2) @dec2 +) @_decorator { attr (@dec1.node) func = @exp1.node edge @dec1.node -> @dec2.node @@ -3279,7 +3269,7 @@ (decorator (expression) @exp) @last . (comment)* . definition: (function_definition) @funcdef -) @decorator +) @_decorator { attr (@last.node) func = @exp.node edge @last.node -> @funcdef.funcexpr @@ -3291,7 +3281,7 @@ (decorator (expression) @exp) @last . (comment)* . definition: (class_definition) @class -) @decorator +) @_decorator { attr (@last.node) func = @exp.node edge @last.node -> @class.class_expr diff --git a/python/extractor/tsg-python/src/main.rs b/python/extractor/tsg-python/src/main.rs index 6b72efdb6ef6..d71c93d7f2c5 100644 --- a/python/extractor/tsg-python/src/main.rs +++ b/python/extractor/tsg-python/src/main.rs @@ -480,6 +480,102 @@ pub mod extra_functions { } } +struct TreeIterator<'a> { + nodes_to_visit: Vec>, +} + +impl<'a> TreeIterator<'a> { + fn new(root: tree_sitter::Node<'a>) -> Self { + Self { + nodes_to_visit: vec![root], + } + } +} + +impl<'a> Iterator for TreeIterator<'a> { + type Item = tree_sitter::Node<'a>; + + fn next(&mut self) -> Option { + if let Some(node) = self.nodes_to_visit.pop() { + // Add all children to the queue for processing + let children: Vec<_> = (0..node.child_count()) + .rev() + .filter_map(|i| node.child(i)) + .collect(); + self.nodes_to_visit.extend(children); + Some(node) + } else { + None + } + } +} + +#[derive(Debug, Clone)] +struct SyntaxError { + start_pos: tree_sitter::Point, + end_pos: tree_sitter::Point, + source: String, +} + +fn syntax_errors_from_tree<'a>( + root: tree_sitter::Node<'a>, + source: &'a str, +) -> impl Iterator + 'a { + TreeIterator::new(root) + .filter(|&node| node.is_error() || node.is_missing()) + .map(move |node| { + let start_pos = node.start_position(); + let end_pos = node.end_position(); + let text = &source.get(node.byte_range()).unwrap_or(""); + SyntaxError { + start_pos, + end_pos, + source: text.to_string(), + } + }) +} + +fn add_syntax_error_nodes(graph: &mut tree_sitter_graph::graph::Graph, errors: &[SyntaxError]) { + for error in errors { + let error_node = graph.add_graph_node(); + + // Add _kind attribute + graph[error_node] + .attributes + .add( + tree_sitter_graph::Identifier::from("_kind"), + tree_sitter_graph::graph::Value::String("SyntaxErrorNode".to_string()), + ) + .expect("Fresh node should not have duplicate attributes"); + + // Add _location attribute + let location = tree_sitter_graph::graph::Value::List( + vec![ + error.start_pos.row, + error.start_pos.column, + error.end_pos.row, + error.end_pos.column, + ] + .into_iter() + .map(|v| tree_sitter_graph::graph::Value::from(v as u32)) + .collect(), + ); + graph[error_node] + .attributes + .add(tree_sitter_graph::Identifier::from("_location"), location) + .expect("Fresh node should not have duplicate attributes"); + + // Add source attribute + graph[error_node] + .attributes + .add( + tree_sitter_graph::Identifier::from("source"), + tree_sitter_graph::graph::Value::String(error.source.clone()), + ) + .expect("Fresh node should not have duplicate attributes"); + } +} + fn main() -> Result<()> { let matches = Command::new("tsg-python") .version(BUILD_VERSION) @@ -502,7 +598,7 @@ fn main() -> Result<()> { let source_path = Path::new(matches.get_one::("source").unwrap()); let language = tsp::language(); let mut parser = Parser::new(); - parser.set_language(language)?; + parser.set_language(&language)?; // Statically include `python.tsg`: let tsg = if matches.contains_id("tsg") { std::fs::read(&tsg_path).with_context(|| format!("Error reading TSG file {}", tsg_path))? @@ -581,10 +677,18 @@ fn main() -> Result<()> { ); let globals = Variables::new(); - let mut config = ExecutionConfig::new(&mut functions, &globals).lazy(false); - let graph = file - .execute(&tree, &source, &mut config, &NoCancellation) + let config = ExecutionConfig::new(&functions, &globals).lazy(false); + let mut graph = file + .execute(&tree, &source, &config, &NoCancellation) .with_context(|| format!("Could not execute TSG file {}", tsg_path))?; + + // Collect and add syntax error nodes to the graph + if tree.root_node().has_error() { + let syntax_errors: Vec = + syntax_errors_from_tree(tree.root_node(), &source).collect(); + add_syntax_error_nodes(&mut graph, &syntax_errors); + } + print!("{}", graph.pretty_print()); Ok(()) } diff --git a/python/extractor/tsg-python/tsp/Cargo.toml b/python/extractor/tsg-python/tsp/Cargo.toml index e36144566627..3d8587bbe5ab 100644 --- a/python/extractor/tsg-python/tsp/Cargo.toml +++ b/python/extractor/tsg-python/tsp/Cargo.toml @@ -26,7 +26,7 @@ path = "bindings/rust/lib.rs" ## When updating these dependencies, run `misc/bazel/3rdparty/update_cargo_deps.sh` [dependencies] -tree-sitter = ">= 0.20, < 0.21" +tree-sitter = "=0.24.7" [build-dependencies] cc = "1.2" diff --git a/python/ql/integration-tests/query-suite/not_included_in_qls.expected b/python/ql/integration-tests/query-suite/not_included_in_qls.expected index 05108abc2060..8d0e0814d538 100644 --- a/python/ql/integration-tests/query-suite/not_included_in_qls.expected +++ b/python/ql/integration-tests/query-suite/not_included_in_qls.expected @@ -1,11 +1,7 @@ ql/python/ql/src/AlertSuppression.ql ql/python/ql/src/Classes/MaybeUndefinedClassAttribute.ql -ql/python/ql/src/Classes/ShouldBeContextManager.ql ql/python/ql/src/Classes/UndefinedClassAttribute.ql -ql/python/ql/src/Classes/UselessClass.ql -ql/python/ql/src/Expressions/NonPortableComparisonUsingIs.ql ql/python/ql/src/Filters/ClassifyFiles.ql -ql/python/ql/src/Functions/ReturnValueIgnored.ql ql/python/ql/src/Imports/ImportShadowedByLoopVar.ql ql/python/ql/src/Imports/ImportStarUsed.ql ql/python/ql/src/Imports/Imports.ql @@ -59,16 +55,12 @@ ql/python/ql/src/Metrics/TransitiveImports.ql ql/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIsUsedWithUntrustedData.ql ql/python/ql/src/Security/CWE-020-ExternalAPIs/UntrustedDataToExternalAPI.ql ql/python/ql/src/Security/CWE-798/HardcodedCredentials.ql -ql/python/ql/src/Statements/AssertLiteralConstant.ql ql/python/ql/src/Statements/C_StyleParentheses.ql ql/python/ql/src/Statements/DocStrings.ql ql/python/ql/src/Statements/ExecUsed.ql ql/python/ql/src/Statements/StringConcatenationInLoop.ql ql/python/ql/src/Variables/Global.ql -ql/python/ql/src/Variables/ShadowBuiltin.ql -ql/python/ql/src/Variables/ShadowGlobal.ql ql/python/ql/src/Variables/UndefinedGlobal.ql -ql/python/ql/src/Variables/UnusedParameter.ql ql/python/ql/src/analysis/CallGraphEfficiency.ql ql/python/ql/src/analysis/CallGraphMarginalEfficiency.ql ql/python/ql/src/analysis/Consistency.ql diff --git a/python/ql/integration-tests/query-suite/python-code-quality-extended.qls.expected b/python/ql/integration-tests/query-suite/python-code-quality-extended.qls.expected index b0cb45325412..cc8d0fd7f5e8 100644 --- a/python/ql/integration-tests/query-suite/python-code-quality-extended.qls.expected +++ b/python/ql/integration-tests/query-suite/python-code-quality-extended.qls.expected @@ -10,7 +10,10 @@ ql/python/ql/src/Classes/DefineEqualsWhenAddingAttributes.ql ql/python/ql/src/Classes/InconsistentMRO.ql ql/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql ql/python/ql/src/Classes/MutatingDescriptor.ql +ql/python/ql/src/Classes/OverwritingAttributeInSuperClass.ql +ql/python/ql/src/Classes/ShouldBeContextManager.ql ql/python/ql/src/Classes/SubclassShadowing/SubclassShadowing.ql +ql/python/ql/src/Classes/UselessClass.ql ql/python/ql/src/Classes/WrongNameForArgumentInClassInstantiation.ql ql/python/ql/src/Classes/WrongNumberArgumentsInClassInstantiation.ql ql/python/ql/src/Exceptions/CatchingBaseException.ql @@ -37,6 +40,7 @@ ql/python/ql/src/Expressions/Formatting/WrongNumberArgumentsFor3101Format.ql ql/python/ql/src/Expressions/HashedButNoHash.ql ql/python/ql/src/Expressions/IncorrectComparisonUsingIs.ql ql/python/ql/src/Expressions/NonCallableCalled.ql +ql/python/ql/src/Expressions/NonPortableComparisonUsingIs.ql ql/python/ql/src/Expressions/Regex/BackspaceEscape.ql ql/python/ql/src/Expressions/Regex/DuplicateCharacterInSet.ql ql/python/ql/src/Expressions/Regex/MissingPartSpecialGroup.ql @@ -61,10 +65,12 @@ ql/python/ql/src/Functions/NonCls.ql ql/python/ql/src/Functions/NonSelf.ql ql/python/ql/src/Functions/OverlyComplexDelMethod.ql ql/python/ql/src/Functions/ReturnConsistentTupleSizes.ql +ql/python/ql/src/Functions/ReturnValueIgnored.ql ql/python/ql/src/Functions/SignatureOverriddenMethod.ql ql/python/ql/src/Functions/SignatureSpecialMethods.ql ql/python/ql/src/Functions/UseImplicitNoneReturnValue.ql ql/python/ql/src/Imports/EncodingError.ql +ql/python/ql/src/Imports/FromImportOfMutableAttribute.ql ql/python/ql/src/Imports/ImportandImportFrom.ql ql/python/ql/src/Imports/ModuleImportsItself.ql ql/python/ql/src/Imports/MultipleImports.ql @@ -73,7 +79,9 @@ ql/python/ql/src/Imports/UnintentionalImport.ql ql/python/ql/src/Imports/UnusedImport.ql ql/python/ql/src/Lexical/CommentedOutCode.ql ql/python/ql/src/Resources/FileNotAlwaysClosed.ql +ql/python/ql/src/Statements/AssertLiteralConstant.ql ql/python/ql/src/Statements/AssertOnTuple.ql +ql/python/ql/src/Statements/BreakOrReturnInFinally.ql ql/python/ql/src/Statements/ConstantInConditional.ql ql/python/ql/src/Statements/IterableStringOrSequence.ql ql/python/ql/src/Statements/MismatchInMultipleAssignment.ql @@ -82,6 +90,7 @@ ql/python/ql/src/Statements/NestedLoopsSameVariable.ql ql/python/ql/src/Statements/NestedLoopsSameVariableWithReuse.ql ql/python/ql/src/Statements/NonIteratorInForLoop.ql ql/python/ql/src/Statements/RedundantAssignment.ql +ql/python/ql/src/Statements/ReturnOrYieldOutsideFunction.ql ql/python/ql/src/Statements/ShouldUseWithStatement.ql ql/python/ql/src/Statements/SideEffectInAssert.ql ql/python/ql/src/Statements/StatementNoEffect.ql @@ -95,7 +104,12 @@ ql/python/ql/src/Testing/ImpreciseAssert.ql ql/python/ql/src/Variables/GlobalAtModuleLevel.ql ql/python/ql/src/Variables/LoopVariableCapture/LoopVariableCapture.ql ql/python/ql/src/Variables/MultiplyDefined.ql +ql/python/ql/src/Variables/ShadowBuiltin.ql +ql/python/ql/src/Variables/ShadowGlobal.ql ql/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql ql/python/ql/src/Variables/UndefinedExport.ql +ql/python/ql/src/Variables/UndefinedPlaceHolder.ql +ql/python/ql/src/Variables/UninitializedLocal.ql ql/python/ql/src/Variables/UnusedLocalVariable.ql ql/python/ql/src/Variables/UnusedModuleVariable.ql +ql/python/ql/src/Variables/UnusedParameter.ql diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index 6a4fefd44467..070309c08a05 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 4.0.16 + +### Minor Analysis Improvements + +* Data flow tracking through global variables now supports nested field access patterns such as `global_var.obj.field`. This improves the precision of taint tracking analysis when data flows through complex global variable structures. + ## 4.0.15 No user-facing changes. diff --git a/python/ql/lib/change-notes/released/4.0.16.md b/python/ql/lib/change-notes/released/4.0.16.md new file mode 100644 index 000000000000..025815a5c02e --- /dev/null +++ b/python/ql/lib/change-notes/released/4.0.16.md @@ -0,0 +1,5 @@ +## 4.0.16 + +### Minor Analysis Improvements + +* Data flow tracking through global variables now supports nested field access patterns such as `global_var.obj.field`. This improves the precision of taint tracking analysis when data flows through complex global variable structures. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index eef62765883a..916d99df3ad6 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.0.15 +lastReleaseVersion: 4.0.16 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index a3e40c6586e4..5eba946c3cf0 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.0.15 +version: 4.0.16 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/Attributes.qll b/python/ql/lib/semmle/python/dataflow/new/internal/Attributes.qll index 51dccc29312c..42c0c862e89b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/Attributes.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/Attributes.qll @@ -64,6 +64,15 @@ abstract class AttrRef extends Node { abstract class AttrWrite extends AttrRef { /** Gets the data flow node corresponding to the value that is written to the attribute. */ abstract Node getValue(); + + /** + * Holds if this attribute write writes the attribute named `attrName` on object `object` with + * value `value`. + */ + predicate writes(Node object, string attrName, Node value) { + this.accesses(object, attrName) and + this.getValue() = value + } } /** @@ -225,7 +234,10 @@ private class ClassDefinitionAsAttrWrite extends AttrWrite, CfgNode { * - Dynamic attribute reads using `getattr`: `getattr(object, attr)` * - Qualified imports: `from module import attr as name` */ -abstract class AttrRead extends AttrRef, Node, LocalSourceNode { } +abstract class AttrRead extends AttrRef, Node, LocalSourceNode { + /** Holds if this attribute read reads the attribute named `attrName` on the object `object`. */ + predicate reads(Node object, string attrName) { this.accesses(object, attrName) } +} /** A simple attribute read, e.g. `object.attr` */ private class AttributeReadAsAttrRead extends AttrRead, CfgNode { diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index 8ad213de6eb5..5c28fb115d8b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -556,6 +556,75 @@ predicate runtimeJumpStep(Node nodeFrom, Node nodeTo) { nodeFrom.asCfgNode() = param.getDefault() and nodeTo.asCfgNode() = param.getDefiningNode() ) + or + // Enhanced global variable field access tracking + globalVariableNestedFieldJumpStep(nodeFrom, nodeTo) +} + +/** Helper predicate for `globalVariableNestedFieldJumpStep`. */ +pragma[nomagic] +private predicate globalVariableAttrPathRead( + ModuleVariableNode globalVar, string accessPath, AttrRead r, string attrName +) { + globalVariableAttrPathAtDepth(globalVar, accessPath, r.getObject(), _) and + attrName = r.getAttributeName() +} + +/** Helper predicate for `globalVariableNestedFieldJumpStep`. */ +pragma[nomagic] +private predicate globalVariableAttrPathWrite( + ModuleVariableNode globalVar, string accessPath, AttrWrite w, string attrName +) { + globalVariableAttrPathAtDepth(globalVar, accessPath, w.getObject(), _) and + attrName = w.getAttributeName() +} + +/** + * Holds if there is a jump step from `nodeFrom` to `nodeTo` through global variable field access. + * This supports tracking nested object field access through global variables like `app.obj.foo`. + */ +pragma[nomagic] +private predicate globalVariableNestedFieldJumpStep(Node nodeFrom, Node nodeTo) { + exists(ModuleVariableNode globalVar, AttrWrite write, AttrRead read | + // Match writes and reads on the same global variable attribute path + exists(string accessPath, string attrName | + globalVariableAttrPathRead(globalVar, accessPath, read, attrName) and + globalVariableAttrPathWrite(globalVar, accessPath, write, attrName) + ) and + nodeFrom = write.getValue() and + nodeTo = read + ) +} + +/** + * Maximum depth for global variable nested attribute access. + * Depth 1 = globalVar.foo, depth 2 = globalVar.foo.bar, depth 3 = globalVar.foo.bar.baz, etc. + */ +private int getMaxGlobalVariableDepth() { result = 2 } + +/** + * Holds if `node` is an attribute access path starting from global variable `globalVar` at specific `depth`. + */ +private predicate globalVariableAttrPathAtDepth( + ModuleVariableNode globalVar, string accessPath, Node node, int depth +) { + // Base case: Direct global variable access (depth 0) + depth = 0 and + // We use `globalVar` instead of `globalVar.getAWrite()` due to some weirdness with how + // attribute writes are handled in the global scope (see `GlobalAttributeAssignmentAsAttrWrite`). + node in [globalVar.getARead(), globalVar] and + accessPath = "" + or + exists(Node obj, string attrName, string parentAccessPath, int parentDepth | + node.(AttrRead).reads(obj, attrName) + or + any(AttrWrite aw).writes(obj, attrName, node) + | + globalVariableAttrPathAtDepth(globalVar, parentAccessPath, obj, parentDepth) and + accessPath = parentAccessPath + "." + attrName and + depth = parentDepth + 1 and + depth <= getMaxGlobalVariableDepth() + ) } //-------- diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll index f7fdf84549e6..396154c06ee8 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll @@ -105,7 +105,9 @@ private module StepsInput implements Impl::Private::StepsInputSig { ]) } - Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponent sc) { none() } + DataFlowCallable getSourceNodeEnclosingCallable(Input::SourceBase source) { none() } + + Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { none() } Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { none() } } diff --git a/python/ql/lib/semmle/python/frameworks/builtins.model.yml b/python/ql/lib/semmle/python/frameworks/builtins.model.yml new file mode 100644 index 000000000000..da976cb40bb6 --- /dev/null +++ b/python/ql/lib/semmle/python/frameworks/builtins.model.yml @@ -0,0 +1,738 @@ +# process-builtin-exceptions 0.0.1; Python 3.11.0rc2 +extensions: +- addsTo: + extensible: typeModel + pack: codeql/python-all + data: + - - builtins.PendingDeprecationWarning~Subclass + - builtins.PendingDeprecationWarning + - '' + - - builtins.Warning~Subclass + - builtins.PendingDeprecationWarning + - '' + - - builtins.Exception~Subclass + - builtins.PendingDeprecationWarning + - '' + - - builtins.BaseException~Subclass + - builtins.PendingDeprecationWarning + - '' + - - builtins.UnicodeWarning~Subclass + - builtins.UnicodeWarning + - '' + - - builtins.Warning~Subclass + - builtins.UnicodeWarning + - '' + - - builtins.Exception~Subclass + - builtins.UnicodeWarning + - '' + - - builtins.BaseException~Subclass + - builtins.UnicodeWarning + - '' + - - builtins.StopAsyncIteration~Subclass + - builtins.StopAsyncIteration + - '' + - - builtins.Exception~Subclass + - builtins.StopAsyncIteration + - '' + - - builtins.BaseException~Subclass + - builtins.StopAsyncIteration + - '' + - - builtins.KeyboardInterrupt~Subclass + - builtins.KeyboardInterrupt + - '' + - - builtins.BaseException~Subclass + - builtins.KeyboardInterrupt + - '' + - - builtins.ConnectionError~Subclass + - builtins.ConnectionError + - '' + - - builtins.OSError~Subclass + - builtins.ConnectionError + - '' + - - builtins.Exception~Subclass + - builtins.ConnectionError + - '' + - - builtins.BaseException~Subclass + - builtins.ConnectionError + - '' + - - builtins.ConnectionResetError~Subclass + - builtins.ConnectionResetError + - '' + - - builtins.ConnectionError~Subclass + - builtins.ConnectionResetError + - '' + - - builtins.OSError~Subclass + - builtins.ConnectionResetError + - '' + - - builtins.Exception~Subclass + - builtins.ConnectionResetError + - '' + - - builtins.BaseException~Subclass + - builtins.ConnectionResetError + - '' + - - builtins.InterruptedError~Subclass + - builtins.InterruptedError + - '' + - - builtins.OSError~Subclass + - builtins.InterruptedError + - '' + - - builtins.Exception~Subclass + - builtins.InterruptedError + - '' + - - builtins.BaseException~Subclass + - builtins.InterruptedError + - '' + - - builtins.RuntimeError~Subclass + - builtins.RuntimeError + - '' + - - builtins.Exception~Subclass + - builtins.RuntimeError + - '' + - - builtins.BaseException~Subclass + - builtins.RuntimeError + - '' + - - builtins.AttributeError~Subclass + - builtins.AttributeError + - '' + - - builtins.Exception~Subclass + - builtins.AttributeError + - '' + - - builtins.BaseException~Subclass + - builtins.AttributeError + - '' + - - builtins.IndexError~Subclass + - builtins.IndexError + - '' + - - builtins.LookupError~Subclass + - builtins.IndexError + - '' + - - builtins.Exception~Subclass + - builtins.IndexError + - '' + - - builtins.BaseException~Subclass + - builtins.IndexError + - '' + - - builtins.UnicodeDecodeError~Subclass + - builtins.UnicodeDecodeError + - '' + - - builtins.UnicodeError~Subclass + - builtins.UnicodeDecodeError + - '' + - - builtins.ValueError~Subclass + - builtins.UnicodeDecodeError + - '' + - - builtins.Exception~Subclass + - builtins.UnicodeDecodeError + - '' + - - builtins.BaseException~Subclass + - builtins.UnicodeDecodeError + - '' + - - builtins.ExceptionGroup~Subclass + - builtins.ExceptionGroup + - '' + - - builtins.BaseExceptionGroup~Subclass + - builtins.ExceptionGroup + - '' + - - builtins.Exception~Subclass + - builtins.ExceptionGroup + - '' + - - builtins.BaseException~Subclass + - builtins.ExceptionGroup + - '' + - - builtins.OverflowError~Subclass + - builtins.OverflowError + - '' + - - builtins.ArithmeticError~Subclass + - builtins.OverflowError + - '' + - - builtins.Exception~Subclass + - builtins.OverflowError + - '' + - - builtins.BaseException~Subclass + - builtins.OverflowError + - '' + - - builtins.BufferError~Subclass + - builtins.BufferError + - '' + - - builtins.Exception~Subclass + - builtins.BufferError + - '' + - - builtins.BaseException~Subclass + - builtins.BufferError + - '' + - - builtins.SyntaxWarning~Subclass + - builtins.SyntaxWarning + - '' + - - builtins.Warning~Subclass + - builtins.SyntaxWarning + - '' + - - builtins.Exception~Subclass + - builtins.SyntaxWarning + - '' + - - builtins.BaseException~Subclass + - builtins.SyntaxWarning + - '' + - - builtins.BytesWarning~Subclass + - builtins.BytesWarning + - '' + - - builtins.Warning~Subclass + - builtins.BytesWarning + - '' + - - builtins.Exception~Subclass + - builtins.BytesWarning + - '' + - - builtins.BaseException~Subclass + - builtins.BytesWarning + - '' + - - builtins.StopIteration~Subclass + - builtins.StopIteration + - '' + - - builtins.Exception~Subclass + - builtins.StopIteration + - '' + - - builtins.BaseException~Subclass + - builtins.StopIteration + - '' + - - builtins.ImportError~Subclass + - builtins.ImportError + - '' + - - builtins.Exception~Subclass + - builtins.ImportError + - '' + - - builtins.BaseException~Subclass + - builtins.ImportError + - '' + - - builtins.ChildProcessError~Subclass + - builtins.ChildProcessError + - '' + - - builtins.OSError~Subclass + - builtins.ChildProcessError + - '' + - - builtins.Exception~Subclass + - builtins.ChildProcessError + - '' + - - builtins.BaseException~Subclass + - builtins.ChildProcessError + - '' + - - builtins.FileExistsError~Subclass + - builtins.FileExistsError + - '' + - - builtins.OSError~Subclass + - builtins.FileExistsError + - '' + - - builtins.Exception~Subclass + - builtins.FileExistsError + - '' + - - builtins.BaseException~Subclass + - builtins.FileExistsError + - '' + - - builtins.PermissionError~Subclass + - builtins.PermissionError + - '' + - - builtins.OSError~Subclass + - builtins.PermissionError + - '' + - - builtins.Exception~Subclass + - builtins.PermissionError + - '' + - - builtins.BaseException~Subclass + - builtins.PermissionError + - '' + - - builtins.RecursionError~Subclass + - builtins.RecursionError + - '' + - - builtins.RuntimeError~Subclass + - builtins.RecursionError + - '' + - - builtins.Exception~Subclass + - builtins.RecursionError + - '' + - - builtins.BaseException~Subclass + - builtins.RecursionError + - '' + - - builtins.SyntaxError~Subclass + - builtins.SyntaxError + - '' + - - builtins.Exception~Subclass + - builtins.SyntaxError + - '' + - - builtins.BaseException~Subclass + - builtins.SyntaxError + - '' + - - builtins.KeyError~Subclass + - builtins.KeyError + - '' + - - builtins.LookupError~Subclass + - builtins.KeyError + - '' + - - builtins.Exception~Subclass + - builtins.KeyError + - '' + - - builtins.BaseException~Subclass + - builtins.KeyError + - '' + - - builtins.UnicodeTranslateError~Subclass + - builtins.UnicodeTranslateError + - '' + - - builtins.UnicodeError~Subclass + - builtins.UnicodeTranslateError + - '' + - - builtins.ValueError~Subclass + - builtins.UnicodeTranslateError + - '' + - - builtins.Exception~Subclass + - builtins.UnicodeTranslateError + - '' + - - builtins.BaseException~Subclass + - builtins.UnicodeTranslateError + - '' + - - builtins.ZeroDivisionError~Subclass + - builtins.ZeroDivisionError + - '' + - - builtins.ArithmeticError~Subclass + - builtins.ZeroDivisionError + - '' + - - builtins.Exception~Subclass + - builtins.ZeroDivisionError + - '' + - - builtins.BaseException~Subclass + - builtins.ZeroDivisionError + - '' + - - builtins.Warning~Subclass + - builtins.Warning + - '' + - - builtins.Exception~Subclass + - builtins.Warning + - '' + - - builtins.BaseException~Subclass + - builtins.Warning + - '' + - - builtins.RuntimeWarning~Subclass + - builtins.RuntimeWarning + - '' + - - builtins.Warning~Subclass + - builtins.RuntimeWarning + - '' + - - builtins.Exception~Subclass + - builtins.RuntimeWarning + - '' + - - builtins.BaseException~Subclass + - builtins.RuntimeWarning + - '' + - - builtins.EncodingWarning~Subclass + - builtins.EncodingWarning + - '' + - - builtins.Warning~Subclass + - builtins.EncodingWarning + - '' + - - builtins.Exception~Subclass + - builtins.EncodingWarning + - '' + - - builtins.BaseException~Subclass + - builtins.EncodingWarning + - '' + - - builtins.BaseException~Subclass + - builtins.BaseException + - '' + - - builtins.GeneratorExit~Subclass + - builtins.GeneratorExit + - '' + - - builtins.BaseException~Subclass + - builtins.GeneratorExit + - '' + - - builtins.ModuleNotFoundError~Subclass + - builtins.ModuleNotFoundError + - '' + - - builtins.ImportError~Subclass + - builtins.ModuleNotFoundError + - '' + - - builtins.Exception~Subclass + - builtins.ModuleNotFoundError + - '' + - - builtins.BaseException~Subclass + - builtins.ModuleNotFoundError + - '' + - - builtins.BrokenPipeError~Subclass + - builtins.BrokenPipeError + - '' + - - builtins.ConnectionError~Subclass + - builtins.BrokenPipeError + - '' + - - builtins.OSError~Subclass + - builtins.BrokenPipeError + - '' + - - builtins.Exception~Subclass + - builtins.BrokenPipeError + - '' + - - builtins.BaseException~Subclass + - builtins.BrokenPipeError + - '' + - - builtins.FileNotFoundError~Subclass + - builtins.FileNotFoundError + - '' + - - builtins.OSError~Subclass + - builtins.FileNotFoundError + - '' + - - builtins.Exception~Subclass + - builtins.FileNotFoundError + - '' + - - builtins.BaseException~Subclass + - builtins.FileNotFoundError + - '' + - - builtins.ProcessLookupError~Subclass + - builtins.ProcessLookupError + - '' + - - builtins.OSError~Subclass + - builtins.ProcessLookupError + - '' + - - builtins.Exception~Subclass + - builtins.ProcessLookupError + - '' + - - builtins.BaseException~Subclass + - builtins.ProcessLookupError + - '' + - - builtins.NotImplementedError~Subclass + - builtins.NotImplementedError + - '' + - - builtins.RuntimeError~Subclass + - builtins.NotImplementedError + - '' + - - builtins.Exception~Subclass + - builtins.NotImplementedError + - '' + - - builtins.BaseException~Subclass + - builtins.NotImplementedError + - '' + - - builtins.IndentationError~Subclass + - builtins.IndentationError + - '' + - - builtins.SyntaxError~Subclass + - builtins.IndentationError + - '' + - - builtins.Exception~Subclass + - builtins.IndentationError + - '' + - - builtins.BaseException~Subclass + - builtins.IndentationError + - '' + - - builtins.ValueError~Subclass + - builtins.ValueError + - '' + - - builtins.Exception~Subclass + - builtins.ValueError + - '' + - - builtins.BaseException~Subclass + - builtins.ValueError + - '' + - - builtins.AssertionError~Subclass + - builtins.AssertionError + - '' + - - builtins.Exception~Subclass + - builtins.AssertionError + - '' + - - builtins.BaseException~Subclass + - builtins.AssertionError + - '' + - - builtins.SystemError~Subclass + - builtins.SystemError + - '' + - - builtins.Exception~Subclass + - builtins.SystemError + - '' + - - builtins.BaseException~Subclass + - builtins.SystemError + - '' + - - builtins.UserWarning~Subclass + - builtins.UserWarning + - '' + - - builtins.Warning~Subclass + - builtins.UserWarning + - '' + - - builtins.Exception~Subclass + - builtins.UserWarning + - '' + - - builtins.BaseException~Subclass + - builtins.UserWarning + - '' + - - builtins.FutureWarning~Subclass + - builtins.FutureWarning + - '' + - - builtins.Warning~Subclass + - builtins.FutureWarning + - '' + - - builtins.Exception~Subclass + - builtins.FutureWarning + - '' + - - builtins.BaseException~Subclass + - builtins.FutureWarning + - '' + - - builtins.Exception~Subclass + - builtins.Exception + - '' + - - builtins.BaseException~Subclass + - builtins.Exception + - '' + - - builtins.ResourceWarning~Subclass + - builtins.ResourceWarning + - '' + - - builtins.Warning~Subclass + - builtins.ResourceWarning + - '' + - - builtins.Exception~Subclass + - builtins.ResourceWarning + - '' + - - builtins.BaseException~Subclass + - builtins.ResourceWarning + - '' + - - builtins.SystemExit~Subclass + - builtins.SystemExit + - '' + - - builtins.BaseException~Subclass + - builtins.SystemExit + - '' + - - builtins.OSError~Subclass + - builtins.OSError + - '' + - - builtins.Exception~Subclass + - builtins.OSError + - '' + - - builtins.BaseException~Subclass + - builtins.OSError + - '' + - - builtins.ConnectionAbortedError~Subclass + - builtins.ConnectionAbortedError + - '' + - - builtins.ConnectionError~Subclass + - builtins.ConnectionAbortedError + - '' + - - builtins.OSError~Subclass + - builtins.ConnectionAbortedError + - '' + - - builtins.Exception~Subclass + - builtins.ConnectionAbortedError + - '' + - - builtins.BaseException~Subclass + - builtins.ConnectionAbortedError + - '' + - - builtins.IsADirectoryError~Subclass + - builtins.IsADirectoryError + - '' + - - builtins.OSError~Subclass + - builtins.IsADirectoryError + - '' + - - builtins.Exception~Subclass + - builtins.IsADirectoryError + - '' + - - builtins.BaseException~Subclass + - builtins.IsADirectoryError + - '' + - - builtins.TimeoutError~Subclass + - builtins.TimeoutError + - '' + - - builtins.OSError~Subclass + - builtins.TimeoutError + - '' + - - builtins.Exception~Subclass + - builtins.TimeoutError + - '' + - - builtins.BaseException~Subclass + - builtins.TimeoutError + - '' + - - builtins.NameError~Subclass + - builtins.NameError + - '' + - - builtins.Exception~Subclass + - builtins.NameError + - '' + - - builtins.BaseException~Subclass + - builtins.NameError + - '' + - - builtins.TabError~Subclass + - builtins.TabError + - '' + - - builtins.IndentationError~Subclass + - builtins.TabError + - '' + - - builtins.SyntaxError~Subclass + - builtins.TabError + - '' + - - builtins.Exception~Subclass + - builtins.TabError + - '' + - - builtins.BaseException~Subclass + - builtins.TabError + - '' + - - builtins.UnicodeError~Subclass + - builtins.UnicodeError + - '' + - - builtins.ValueError~Subclass + - builtins.UnicodeError + - '' + - - builtins.Exception~Subclass + - builtins.UnicodeError + - '' + - - builtins.BaseException~Subclass + - builtins.UnicodeError + - '' + - - builtins.ArithmeticError~Subclass + - builtins.ArithmeticError + - '' + - - builtins.Exception~Subclass + - builtins.ArithmeticError + - '' + - - builtins.BaseException~Subclass + - builtins.ArithmeticError + - '' + - - builtins.ReferenceError~Subclass + - builtins.ReferenceError + - '' + - - builtins.Exception~Subclass + - builtins.ReferenceError + - '' + - - builtins.BaseException~Subclass + - builtins.ReferenceError + - '' + - - builtins.DeprecationWarning~Subclass + - builtins.DeprecationWarning + - '' + - - builtins.Warning~Subclass + - builtins.DeprecationWarning + - '' + - - builtins.Exception~Subclass + - builtins.DeprecationWarning + - '' + - - builtins.BaseException~Subclass + - builtins.DeprecationWarning + - '' + - - builtins.ImportWarning~Subclass + - builtins.ImportWarning + - '' + - - builtins.Warning~Subclass + - builtins.ImportWarning + - '' + - - builtins.Exception~Subclass + - builtins.ImportWarning + - '' + - - builtins.BaseException~Subclass + - builtins.ImportWarning + - '' + - - builtins.TypeError~Subclass + - builtins.TypeError + - '' + - - builtins.Exception~Subclass + - builtins.TypeError + - '' + - - builtins.BaseException~Subclass + - builtins.TypeError + - '' + - - builtins.BaseExceptionGroup~Subclass + - builtins.BaseExceptionGroup + - '' + - - builtins.BaseException~Subclass + - builtins.BaseExceptionGroup + - '' + - - builtins.BlockingIOError~Subclass + - builtins.BlockingIOError + - '' + - - builtins.OSError~Subclass + - builtins.BlockingIOError + - '' + - - builtins.Exception~Subclass + - builtins.BlockingIOError + - '' + - - builtins.BaseException~Subclass + - builtins.BlockingIOError + - '' + - - builtins.ConnectionRefusedError~Subclass + - builtins.ConnectionRefusedError + - '' + - - builtins.ConnectionError~Subclass + - builtins.ConnectionRefusedError + - '' + - - builtins.OSError~Subclass + - builtins.ConnectionRefusedError + - '' + - - builtins.Exception~Subclass + - builtins.ConnectionRefusedError + - '' + - - builtins.BaseException~Subclass + - builtins.ConnectionRefusedError + - '' + - - builtins.NotADirectoryError~Subclass + - builtins.NotADirectoryError + - '' + - - builtins.OSError~Subclass + - builtins.NotADirectoryError + - '' + - - builtins.Exception~Subclass + - builtins.NotADirectoryError + - '' + - - builtins.BaseException~Subclass + - builtins.NotADirectoryError + - '' + - - builtins.EOFError~Subclass + - builtins.EOFError + - '' + - - builtins.Exception~Subclass + - builtins.EOFError + - '' + - - builtins.BaseException~Subclass + - builtins.EOFError + - '' + - - builtins.UnboundLocalError~Subclass + - builtins.UnboundLocalError + - '' + - - builtins.NameError~Subclass + - builtins.UnboundLocalError + - '' + - - builtins.Exception~Subclass + - builtins.UnboundLocalError + - '' + - - builtins.BaseException~Subclass + - builtins.UnboundLocalError + - '' + - - builtins.LookupError~Subclass + - builtins.LookupError + - '' + - - builtins.Exception~Subclass + - builtins.LookupError + - '' + - - builtins.BaseException~Subclass + - builtins.LookupError + - '' + - - builtins.UnicodeEncodeError~Subclass + - builtins.UnicodeEncodeError + - '' + - - builtins.UnicodeError~Subclass + - builtins.UnicodeEncodeError + - '' + - - builtins.ValueError~Subclass + - builtins.UnicodeEncodeError + - '' + - - builtins.Exception~Subclass + - builtins.UnicodeEncodeError + - '' + - - builtins.BaseException~Subclass + - builtins.UnicodeEncodeError + - '' + - - builtins.FloatingPointError~Subclass + - builtins.FloatingPointError + - '' + - - builtins.ArithmeticError~Subclass + - builtins.FloatingPointError + - '' + - - builtins.Exception~Subclass + - builtins.FloatingPointError + - '' + - - builtins.BaseException~Subclass + - builtins.FloatingPointError + - '' + - - builtins.MemoryError~Subclass + - builtins.MemoryError + - '' + - - builtins.Exception~Subclass + - builtins.MemoryError + - '' + - - builtins.BaseException~Subclass + - builtins.MemoryError + - '' diff --git a/python/ql/lib/semmle/python/regexp/RegexTreeView.qll b/python/ql/lib/semmle/python/regexp/RegexTreeView.qll index a2952a5680bc..897c97bb7831 100644 --- a/python/ql/lib/semmle/python/regexp/RegexTreeView.qll +++ b/python/ql/lib/semmle/python/regexp/RegexTreeView.qll @@ -964,7 +964,7 @@ module Impl implements RegexTreeViewSig { * ``` */ class RegExpPositiveLookahead extends RegExpLookahead { - RegExpPositiveLookahead() { re.positiveLookaheadAssertionGroup(start, end) } + RegExpPositiveLookahead() { re.positiveLookaheadAssertionGroup(start, end, _, _) } override string getPrimaryQLClass() { result = "RegExpPositiveLookahead" } } @@ -979,7 +979,7 @@ module Impl implements RegexTreeViewSig { * ``` */ additional class RegExpNegativeLookahead extends RegExpLookahead { - RegExpNegativeLookahead() { re.negativeLookaheadAssertionGroup(start, end) } + RegExpNegativeLookahead() { re.negativeLookaheadAssertionGroup(start, end, _, _) } override string getPrimaryQLClass() { result = "RegExpNegativeLookahead" } } @@ -1006,7 +1006,7 @@ module Impl implements RegexTreeViewSig { * ``` */ class RegExpPositiveLookbehind extends RegExpLookbehind { - RegExpPositiveLookbehind() { re.positiveLookbehindAssertionGroup(start, end) } + RegExpPositiveLookbehind() { re.positiveLookbehindAssertionGroup(start, end, _, _) } override string getPrimaryQLClass() { result = "RegExpPositiveLookbehind" } } @@ -1021,7 +1021,7 @@ module Impl implements RegexTreeViewSig { * ``` */ additional class RegExpNegativeLookbehind extends RegExpLookbehind { - RegExpNegativeLookbehind() { re.negativeLookbehindAssertionGroup(start, end) } + RegExpNegativeLookbehind() { re.negativeLookbehindAssertionGroup(start, end, _, _) } override string getPrimaryQLClass() { result = "RegExpNegativeLookbehind" } } diff --git a/python/ql/lib/semmle/python/regexp/internal/ParseRegExp.qll b/python/ql/lib/semmle/python/regexp/internal/ParseRegExp.qll index 7e23554e0589..d91c4bbd78c0 100644 --- a/python/ql/lib/semmle/python/regexp/internal/ParseRegExp.qll +++ b/python/ql/lib/semmle/python/regexp/internal/ParseRegExp.qll @@ -554,9 +554,9 @@ class RegExp extends Expr instanceof StringLiteral { or this.negativeAssertionGroup(start, end) or - this.positiveLookaheadAssertionGroup(start, end) + this.positiveLookaheadAssertionGroup(start, end, _, _) or - this.positiveLookbehindAssertionGroup(start, end) + this.positiveLookbehindAssertionGroup(start, end, _, _) } /** Holds if an empty group is found between `start` and `end`. */ @@ -572,7 +572,7 @@ class RegExp extends Expr instanceof StringLiteral { or this.negativeAssertionGroup(start, end) or - this.positiveLookaheadAssertionGroup(start, end) + this.positiveLookaheadAssertionGroup(start, end, _, _) } private predicate emptyMatchAtEndGroup(int start, int end) { @@ -580,7 +580,7 @@ class RegExp extends Expr instanceof StringLiteral { or this.negativeAssertionGroup(start, end) or - this.positiveLookbehindAssertionGroup(start, end) + this.positiveLookbehindAssertionGroup(start, end, _, _) } private predicate negativeAssertionGroup(int start, int end) { @@ -593,32 +593,40 @@ class RegExp extends Expr instanceof StringLiteral { ) } - /** Holds if a negative lookahead is found between `start` and `end` */ - predicate negativeLookaheadAssertionGroup(int start, int end) { - exists(int in_start | this.negative_lookahead_assertion_start(start, in_start) | - this.groupContents(start, end, in_start, _) - ) + /** + * Holds if a negative lookahead is found between `start` and `end`, with contents + * between `in_start` and `in_end`. + */ + predicate negativeLookaheadAssertionGroup(int start, int end, int in_start, int in_end) { + this.negative_lookahead_assertion_start(start, in_start) and + this.groupContents(start, end, in_start, in_end) } - /** Holds if a negative lookbehind is found between `start` and `end` */ - predicate negativeLookbehindAssertionGroup(int start, int end) { - exists(int in_start | this.negative_lookbehind_assertion_start(start, in_start) | - this.groupContents(start, end, in_start, _) - ) + /** + * Holds if a negative lookbehind is found between `start` and `end`, with contents + * between `in_start` and `in_end`. + */ + predicate negativeLookbehindAssertionGroup(int start, int end, int in_start, int in_end) { + this.negative_lookbehind_assertion_start(start, in_start) and + this.groupContents(start, end, in_start, in_end) } - /** Holds if a positive lookahead is found between `start` and `end` */ - predicate positiveLookaheadAssertionGroup(int start, int end) { - exists(int in_start | this.lookahead_assertion_start(start, in_start) | - this.groupContents(start, end, in_start, _) - ) + /** + * Holds if a positive lookahead is found between `start` and `end`, with contents + * between `in_start` and `in_end`. + */ + predicate positiveLookaheadAssertionGroup(int start, int end, int in_start, int in_end) { + this.lookahead_assertion_start(start, in_start) and + this.groupContents(start, end, in_start, in_end) } - /** Holds if a positive lookbehind is found between `start` and `end` */ - predicate positiveLookbehindAssertionGroup(int start, int end) { - exists(int in_start | this.lookbehind_assertion_start(start, in_start) | - this.groupContents(start, end, in_start, _) - ) + /** + * Holds if a positive lookbehind is found between `start` and `end`, with contents + * between `in_start` and `in_end`. + */ + predicate positiveLookbehindAssertionGroup(int start, int end, int in_start, int in_end) { + this.lookbehind_assertion_start(start, in_start) and + this.groupContents(start, end, in_start, in_end) } private predicate group_start(int start, int end) { @@ -1049,6 +1057,13 @@ class RegExp extends Expr instanceof StringLiteral { or this.alternationOption(x, y, start, end) ) + or + // Lookbehind assertions can potentially match the start of the string + ( + this.positiveLookbehindAssertionGroup(_, _, start, _) or + this.negativeLookbehindAssertionGroup(_, _, start, _) + ) and + this.item(start, end) } /** A part of the regex that may match the end of the string. */ @@ -1074,6 +1089,13 @@ class RegExp extends Expr instanceof StringLiteral { or this.alternationOption(x, y, start, end) ) + or + // Lookahead assertions can potentially match the end of the string + ( + this.positiveLookaheadAssertionGroup(_, _, _, end) or + this.negativeLookaheadAssertionGroup(_, _, _, end) + ) and + this.item(start, end) } /** diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index de3fc1ddf2b5..e620dee4fca9 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.6.6 + +### Minor Analysis Improvements + +- The queries that check for unmatchable `$` and `^` in regular expressions did not account correctly for occurrences inside lookahead and lookbehind assertions. These occurrences are now handled correctly, eliminating this source of false positives. +* The `py/inheritance/signature-mismatch` query has been modernized. It produces more precise results and more descriptive alert messages. +* The `py/inheritance/incorrect-overriding-signature` query has been deprecated. Its results have been consolidated into the `py/inheritance/signature-mismatch` query. + ## 1.6.5 ### Minor Analysis Improvements diff --git a/python/ql/src/Classes/OverwritingAttributeInSuperClass.ql b/python/ql/src/Classes/OverwritingAttributeInSuperClass.ql index 248872211410..699e4387a144 100644 --- a/python/ql/src/Classes/OverwritingAttributeInSuperClass.ql +++ b/python/ql/src/Classes/OverwritingAttributeInSuperClass.ql @@ -2,9 +2,9 @@ * @name Overwriting attribute in super-class or sub-class * @description Assignment to self attribute overwrites attribute previously defined in subclass or superclass `__init__` method. * @kind problem - * @tags reliability - * maintainability - * modularity + * @tags quality + * reliability + * correctness * @problem.severity warning * @sub-severity low * @precision medium diff --git a/python/ql/src/Classes/ShouldBeContextManager.ql b/python/ql/src/Classes/ShouldBeContextManager.ql index bdcc6dc28634..2423206e3cfc 100644 --- a/python/ql/src/Classes/ShouldBeContextManager.ql +++ b/python/ql/src/Classes/ShouldBeContextManager.ql @@ -3,9 +3,10 @@ * @description Making a class a context manager allows instances to be used in a 'with' statement. * This improves resource handling and code readability. * @kind problem - * @tags maintainability + * @tags quality + * maintainability * readability - * convention + * performance * @problem.severity recommendation * @sub-severity high * @precision medium diff --git a/python/ql/src/Classes/UselessClass.ql b/python/ql/src/Classes/UselessClass.ql index 19d21c7e7caa..7e33660dafc4 100644 --- a/python/ql/src/Classes/UselessClass.ql +++ b/python/ql/src/Classes/UselessClass.ql @@ -2,8 +2,10 @@ * @name Useless class * @description Class only defines one public method (apart from `__init__` or `__new__`) and should be replaced by a function * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code + * complexity * @problem.severity recommendation * @sub-severity low * @precision medium diff --git a/python/ql/src/Exceptions/IncorrectExceptOrder.qhelp b/python/ql/src/Exceptions/IncorrectExceptOrder.qhelp index d2854af6ca60..9d78350bcd2c 100644 --- a/python/ql/src/Exceptions/IncorrectExceptOrder.qhelp +++ b/python/ql/src/Exceptions/IncorrectExceptOrder.qhelp @@ -25,11 +25,11 @@ is a super class of Error.

Reorganize the except blocks so that the more specific except is defined first. Alternatively, if the more specific except block is -no longer required then it should be deleted.

+no longer required, then it should be deleted.

-

In this example the except Exception: will handle AttributeError preventing the +

In the following example, the except Exception: will handle AttributeError preventing the subsequent handler from ever executing.

@@ -37,8 +37,8 @@ subsequent handler from ever executing.

-
  • Python Language Reference: The try statement, -Exceptions.
  • +
  • Python Language Reference: The try statement, +Exceptions.
  • diff --git a/python/ql/src/Exceptions/IncorrectExceptOrder.ql b/python/ql/src/Exceptions/IncorrectExceptOrder.ql index 3c0c90b36d35..6eb1b39b0e64 100644 --- a/python/ql/src/Exceptions/IncorrectExceptOrder.ql +++ b/python/ql/src/Exceptions/IncorrectExceptOrder.ql @@ -1,5 +1,5 @@ /** - * @name Unreachable 'except' block + * @name Unreachable `except` block * @description Handling general exceptions before specific exceptions means that the specific * handlers are never executed. * @kind problem @@ -14,22 +14,95 @@ */ import python +import semmle.python.dataflow.new.internal.DataFlowDispatch +import semmle.python.ApiGraphs +import semmle.python.frameworks.data.internal.ApiGraphModels -predicate incorrect_except_order(ExceptStmt ex1, ClassValue cls1, ExceptStmt ex2, ClassValue cls2) { +predicate builtinException(string name) { + typeModel("builtins.BaseException~Subclass", "builtins." + name, "") +} + +predicate builtinExceptionSubclass(string base, string sub) { + typeModel("builtins." + base + "~Subclass", "builtins." + sub, "") +} + +newtype TExceptType = + TClass(Class c) or + TBuiltin(string name) { builtinException(name) } + +class ExceptType extends TExceptType { + Class asClass() { this = TClass(result) } + + string asBuiltinName() { this = TBuiltin(result) } + + predicate isBuiltin() { this = TBuiltin(_) } + + string getName() { + result = this.asClass().getName() + or + result = this.asBuiltinName() + } + + string toString() { result = this.getName() } + + DataFlow::Node getAUse() { + result = classTracker(this.asClass()) + or + API::builtin(this.asBuiltinName()).asSource().flowsTo(result) + } + + ExceptType getADirectSuperclass() { + result.asClass() = getADirectSuperclass(this.asClass()) + or + result.isBuiltin() and + result.getAUse().asExpr() = this.asClass().getABase() + or + builtinExceptionSubclass(result.asBuiltinName(), this.asBuiltinName()) and + this != result + } + + /** + * Holds if this element is at the specified location. + * The location spans column `startColumn` of line `startLine` to + * column `endColumn` of line `endLine` in file `filepath`. + * For more information, see + * [Providing locations in CodeQL queries](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filePath, int startLine, int startColumn, int endLine, int endColumn + ) { + this.asClass() + .getLocation() + .hasLocationInfo(filePath, startLine, startColumn, endLine, endColumn) + or + this.isBuiltin() and + filePath = "" and + startLine = 0 and + startColumn = 0 and + endLine = 0 and + endColumn = 0 + } +} + +predicate incorrectExceptOrder(ExceptStmt ex1, ExceptType cls1, ExceptStmt ex2, ExceptType cls2) { exists(int i, int j, Try t | ex1 = t.getHandler(i) and ex2 = t.getHandler(j) and i < j and - cls1 = except_class(ex1) and - cls2 = except_class(ex2) and - cls1 = cls2.getASuperType() + cls1 = exceptClass(ex1) and + cls2 = exceptClass(ex2) and + cls1 = cls2.getADirectSuperclass*() ) } -ClassValue except_class(ExceptStmt ex) { ex.getType().pointsTo(result) } +ExceptType exceptClass(ExceptStmt ex) { ex.getType() = result.getAUse().asExpr() } -from ExceptStmt ex1, ClassValue cls1, ExceptStmt ex2, ClassValue cls2 -where incorrect_except_order(ex1, cls1, ex2, cls2) -select ex2, - "Except block for $@ is unreachable; the more general $@ for $@ will always be executed in preference.", - cls2, cls2.getName(), ex1, "except block", cls1, cls1.getName() +from ExceptStmt ex1, ExceptType cls1, ExceptStmt ex2, ExceptType cls2, string msg +where + incorrectExceptOrder(ex1, cls1, ex2, cls2) and + if cls1 = cls2 + then msg = "This except block handling $@ is unreachable; as $@ also handles $@." + else + msg = + "This except block handling $@ is unreachable; as $@ for the more general $@ always subsumes it." +select ex2, msg, cls2, cls2.getName(), ex1, "this except block", cls1, cls1.getName() diff --git a/python/ql/src/Expressions/NonPortableComparisonUsingIs.ql b/python/ql/src/Expressions/NonPortableComparisonUsingIs.ql index d9a0f7016351..894cc78c8f44 100644 --- a/python/ql/src/Expressions/NonPortableComparisonUsingIs.ql +++ b/python/ql/src/Expressions/NonPortableComparisonUsingIs.ql @@ -2,8 +2,9 @@ * @name Non-portable comparison using is when operands support `__eq__` * @description Comparison using 'is' when equivalence is not the same as identity and may not be portable. * @kind problem - * @tags portability - * maintainability + * @tags quality + * reliability + * correctness * @problem.severity recommendation * @sub-severity low * @precision medium diff --git a/python/ql/src/Functions/IncorrectlyOverriddenMethod.ql b/python/ql/src/Functions/IncorrectlyOverriddenMethod.ql index a46a2370c0ee..a4e3bd6e0ce4 100644 --- a/python/ql/src/Functions/IncorrectlyOverriddenMethod.ql +++ b/python/ql/src/Functions/IncorrectlyOverriddenMethod.ql @@ -1,4 +1,5 @@ /** + * @deprecated * @name Mismatch between signature and use of an overriding method * @description Method has a different signature from the overridden method and, if it were called, would be likely to cause an error. * @kind problem diff --git a/python/ql/src/Functions/ReturnValueIgnored.ql b/python/ql/src/Functions/ReturnValueIgnored.ql index b7f272dcc2df..d8f81534b8ad 100644 --- a/python/ql/src/Functions/ReturnValueIgnored.ql +++ b/python/ql/src/Functions/ReturnValueIgnored.ql @@ -2,11 +2,10 @@ * @name Ignored return value * @description Ignoring return values may result in discarding errors or loss of information. * @kind problem - * @tags reliability + * @tags quality + * reliability + * correctness * readability - * convention - * statistical - * non-attributable * external/cwe/cwe-252 * @problem.severity recommendation * @sub-severity high diff --git a/python/ql/src/Functions/SignatureOverriddenMethod.py b/python/ql/src/Functions/SignatureOverriddenMethod.py index 7beddcb9e958..e3522351fc01 100644 --- a/python/ql/src/Functions/SignatureOverriddenMethod.py +++ b/python/ql/src/Functions/SignatureOverriddenMethod.py @@ -1,9 +1,12 @@ -# Base class method -def runsource(self, source, filename="", symbol="single"): - ... # Definition +class Base: + def runsource(self, source, filename=""): + ... -# Extend base class method -def runsource(self, source): - ... # Definition \ No newline at end of file +class Sub(Base): + def runsource(self, source): # BAD: Does not match the signature of overridden method. + ... + +def run(obj: Base): + obj.runsource("source", filename="foo.txt") \ No newline at end of file diff --git a/python/ql/src/Functions/SignatureOverriddenMethod.qhelp b/python/ql/src/Functions/SignatureOverriddenMethod.qhelp index b7da2678e3d8..0575d967d3e7 100644 --- a/python/ql/src/Functions/SignatureOverriddenMethod.qhelp +++ b/python/ql/src/Functions/SignatureOverriddenMethod.qhelp @@ -5,32 +5,25 @@ -

    There are one (or more) legal parameters for an overridden method that are -not legal for an overriding method. This will cause an error when the overriding -method is called with a number of parameters that is legal for the overridden method. -This violates the Liskov substitution principle. +

    When the signature of a method of a base class and a method of a subclass that overrides it don't match, a call to the base class method +may not be a valid call to the subclass method, and thus raise an exception if an instance of the subclass is passed instead. +If following the Liskov Substitution Principle, in which an instance of a subclass should be usable in every context as though it were an +instance of the base class, this behavior breaks the principle.

    -

    Ensure that the overriding method accepts all the parameters that are legal for -overridden method.

    +

    Ensure that the overriding method in the subclass accepts the same parameters as the base method.

    -

    In this example there is a mismatch between the legal parameters for the base -class method (self, source, filename, symbol) and the extension method -(self, source). The extension method can be used to override the base -method as long as values are not specified for the filename and -symbol parameters. If the extension method was passed the additional -parameters accepted by the base method then an error would occur.

    +

    In the following example, Base.runsource takes an optional filename argument. However, the overriding method +Sub.runsource does not. This means the run function will fail if passed an instance of Sub. +

    -

    The extension method should be updated to support the filename and -symbol parameters supported by the overridden method.

    -
    diff --git a/python/ql/src/Functions/SignatureOverriddenMethod.ql b/python/ql/src/Functions/SignatureOverriddenMethod.ql index 3e3877bc1393..15b3fa706401 100644 --- a/python/ql/src/Functions/SignatureOverriddenMethod.ql +++ b/python/ql/src/Functions/SignatureOverriddenMethod.ql @@ -13,23 +13,254 @@ */ import python -import Expressions.CallArgs +import semmle.python.dataflow.new.DataFlow +import semmle.python.dataflow.new.internal.DataFlowDispatch +import codeql.util.Option -from FunctionValue base, PythonFunctionValue derived -where - not exists(base.getACall()) and - not exists(FunctionValue a_derived | - a_derived.overrides(base) and - exists(a_derived.getACall()) +/** Holds if `base` is overridden by `sub` */ +predicate overrides(Function base, Function sub) { + base.getName() = sub.getName() and + base.getScope() = getADirectSuperclass+(sub.getScope()) +} + +/** Constructs a string to pluralize `str` depending on `num`. */ +bindingset[num, str] +string plural(int num, string str) { + num = 1 and result = "1 " + str + or + num != 1 and result = num.toString() + " " + str + "s" +} + +/** Describes the minimum number of arguments `func` can accept, using "at least" if it may accept more. */ +string describeMin(Function func) { + exists(string descr | descr = plural(func.getMinPositionalArguments(), "positional argument") | + if func.getMinPositionalArguments() = func.getMaxPositionalArguments() + then result = descr + else result = "at least " + descr + ) +} + +/** Described the maximum number of arguments `func` can accept, using "at most" if it may accept fewer, and "arbitrarily many" if it has a vararg. */ +string describeMax(Function func) { + if func.hasVarArg() + then result = "arbitrarily many positional arguments" + else + exists(string descr | descr = plural(func.getMaxPositionalArguments(), "positional argument") | + if func.getMinPositionalArguments() = func.getMaxPositionalArguments() + then result = descr + else result = "at most " + descr + ) +} + +/** Describes the minimum number of arguments `func` can accept, without repeating "positional arguments". */ +string describeMinShort(Function func) { + exists(string descr | descr = func.getMinPositionalArguments().toString() | + if func.getMinPositionalArguments() = func.getMaxPositionalArguments() + then result = descr + else result = "at least " + descr + ) +} + +/** Describes the maximum number of arguments `func` can accept, without repeating "positional arguments". */ +string describeMaxShort(Function func) { + if func.hasVarArg() + then result = "arbitrarily many" + else + exists(string descr | descr = func.getMaxPositionalArguments().toString() | + if func.getMinPositionalArguments() = func.getMaxPositionalArguments() + then result = descr + else result = "at most " + descr + ) +} + +/** Describe an upper bound on the number of arguments `func` may accept, without specifying "at most". */ +string describeMaxBound(Function func) { + if func.hasVarArg() + then result = "arbitrarily many" + else result = func.getMaxPositionalArguments().toString() +} + +/** Holds if no way to call `base` would be valid for `sub`. The `msg` applies to the `sub method. */ +predicate strongSignatureMismatch(Function base, Function sub, string msg) { + overrides(base, sub) and + ( + sub.getMinPositionalArguments() > base.getMaxPositionalArguments() and + msg = + "requires " + describeMin(sub) + ", whereas overridden $@ requires " + describeMaxShort(base) + + "." + or + sub.getMaxPositionalArguments() < base.getMinPositionalArguments() and + msg = + "requires " + describeMax(sub) + ", whereas overridden $@ requires " + describeMinShort(base) + + "." + ) +} + +/** Holds if there may be some ways to call `base` that would not be valid for `sub`. The `msg` applies to the `sub` method. */ +predicate weakSignatureMismatch(Function base, Function sub, string msg) { + overrides(base, sub) and + ( + sub.getMinPositionalArguments() > base.getMinPositionalArguments() and + msg = + "requires " + describeMin(sub) + ", whereas overridden $@ may be called with " + + base.getMinPositionalArguments().toString() + "." + or + sub.getMaxPositionalArguments() < base.getMaxPositionalArguments() and + msg = + "requires " + describeMax(sub) + ", whereas overridden $@ may be called with " + + describeMaxBound(base) + "." + or + sub.getMinPositionalArguments() <= base.getMinPositionalArguments() and + sub.getMaxPositionalArguments() >= base.getMaxPositionalArguments() and + exists(string arg | + // TODO: positional-only args not considered + // e.g. `def foo(x, y, /, z):` has x,y as positional only args, should not be considered as possible kw args + // However, this likely does not create FPs, as we require a 'witness' call to generate an alert. + arg = base.getAnArg().getName() and + not arg = sub.getAnArg().getName() and + not exists(sub.getKwarg()) and + msg = "does not accept keyword argument `" + arg + "`, which overridden $@ does." + ) + or + exists(base.getKwarg()) and + not exists(sub.getKwarg()) and + msg = "does not accept arbitrary keyword arguments, which overridden $@ does." + ) +} + +/** Holds if `f` should be ignored for considering signature mismatches. */ +predicate ignore(Function f) { + isClassmethod(f) + or + exists( + Function g // other functions with the same name, e.g. @property getters/setters. + | + g.getScope() = f.getScope() and + g.getName() = f.getName() and + g != f + ) +} + +/** Gets a function that `call` may resolve to. */ +Function resolveCall(Call call) { + exists(DataFlowCall dfc | call = dfc.getNode().(CallNode).getNode() | + result = viableCallable(dfc).(DataFlowFunction).getScope() + ) +} + +/** Holds if `call` may resolve to either `base` or `sub`, and `base` is overridden by `sub`. */ +predicate callViableForEitherOverride(Function base, Function sub, Call call) { + overrides(base, sub) and + base = resolveCall(call) and + sub = resolveCall(call) +} + +/** Holds if either both `base` and `sub` are static methods, or both are not static methods, and `base` is overridden by `sub`. */ +predicate matchingStatic(Function base, Function sub) { + overrides(base, sub) and + ( + isStaticmethod(base) and + isStaticmethod(sub) + or + not isStaticmethod(base) and + not isStaticmethod(sub) + ) +} + +int extraSelfArg(Function func) { if isStaticmethod(func) then result = 0 else result = 1 } + +/** Holds if the call `call` matches the signature for `func`. */ +predicate callMatchesSignature(Function func, Call call) { + func = resolveCall(call) and + ( + // Each parameter of the function is accounted for in the call + forall(Parameter param, int i | param = func.getArg(i) | + // self arg + i = 0 and not isStaticmethod(func) + or + // positional arg + i - extraSelfArg(func) < call.getPositionalArgumentCount() + or + // has default + exists(param.getDefault()) + or + // keyword arg + call.getANamedArgumentName() = param.getName() + ) + or + // arbitrary varargs or kwargs + exists(call.getStarArg()) + or + exists(call.getKwargs()) ) and - not derived.getScope().isSpecialMethod() and - derived.getName() != "__init__" and - derived.isNormalMethod() and - // call to overrides distributed for efficiency + // No excess parameters + call.getPositionalArgumentCount() + extraSelfArg(func) <= func.getMaxPositionalArguments() and + ( + exists(func.getKwarg()) + or + forall(string name | name = call.getANamedArgumentName() | exists(func.getArgByName(name))) + ) +} + +pragma[nomagic] +private File getFunctionFile(Function f) { result = f.getLocation().getFile() } + +/** Gets a call which matches the signature of `base`, but not of overridden `sub`. */ +Call getASignatureMismatchWitness(Function base, Function sub) { + callViableForEitherOverride(base, sub, result) and + callMatchesSignature(base, result) and + not callMatchesSignature(sub, result) +} + +pragma[inline] +string preferredFile(File callFile, Function base, Function sub) { + if callFile = getFunctionFile(base) + then result = " A" + else + if callFile = getFunctionFile(sub) + then result = " B" + else result = callFile.getAbsolutePath() +} + +/** Choose a 'witnessing' call that matches the signature of `base` but not of overridden `sub`. */ +Call chooseASignatureMismatchWitness(Function base, Function sub) { + exists(getASignatureMismatchWitness(base, sub)) and + result = + min(Call c | + c = getASignatureMismatchWitness(base, sub) + | + c + order by + preferredFile(c.getLocation().getFile(), base, sub), c.getLocation().getStartLine(), + c.getLocation().getStartColumn() + ) +} + +module CallOption = LocatableOption; + +from Function base, Function sub, string msg, string extraMsg, CallOption::Option call +where + not sub.isSpecialMethod() and + sub.getName() != "__init__" and + not ignore(sub) and + not ignore(base) and + matchingStatic(base, sub) and ( - derived.overrides(base) and derived.minParameters() > base.maxParameters() + // If we have a witness, alert for a 'weak' mismatch, but prefer the message for a 'strong' mismatch if that holds. + call.asSome() = chooseASignatureMismatchWitness(base, sub) and + extraMsg = + " $@ correctly calls the base method, but does not match the signature of the overriding method." and + ( + strongSignatureMismatch(base, sub, msg) + or + not strongSignatureMismatch(base, sub, _) and + weakSignatureMismatch(base, sub, msg) + ) or - derived.overrides(base) and derived.maxParameters() < base.minParameters() + // With no witness, only alert for 'strong' mismatches. + not exists(getASignatureMismatchWitness(base, sub)) and + call.isNone() and + strongSignatureMismatch(base, sub, msg) and + extraMsg = "" ) -select derived, "Overriding method '" + derived.getName() + "' has signature mismatch with $@.", - base, "overridden method" +select sub, "This method " + msg + extraMsg, base, base.getQualifiedName(), call, "This call" diff --git a/python/ql/src/Imports/FromImportOfMutableAttribute.ql b/python/ql/src/Imports/FromImportOfMutableAttribute.ql index cbb74977a032..c66a7578de61 100644 --- a/python/ql/src/Imports/FromImportOfMutableAttribute.ql +++ b/python/ql/src/Imports/FromImportOfMutableAttribute.ql @@ -2,9 +2,9 @@ * @name Importing value of mutable attribute * @description Importing the value of a mutable attribute directly means that changes in global state will not be observed locally. * @kind problem - * @tags reliability - * maintainability - * modularity + * @tags quality + * reliability + * correctness * @problem.severity warning * @sub-severity high * @precision medium diff --git a/python/ql/src/Resources/FileNotAlwaysClosed.ql b/python/ql/src/Resources/FileNotAlwaysClosed.ql index f639bc4aa912..4e0b897c9bb3 100644 --- a/python/ql/src/Resources/FileNotAlwaysClosed.ql +++ b/python/ql/src/Resources/FileNotAlwaysClosed.ql @@ -15,12 +15,14 @@ import python import FileNotAlwaysClosedQuery +import codeql.util.Option -from FileOpen fo, string msg +from FileOpen fo, string msg, LocatableOption::Option exec where fileNotClosed(fo) and - msg = "File is opened but is not closed." + msg = "File is opened but is not closed." and + exec.isNone() or - fileMayNotBeClosedOnException(fo, _) and - msg = "File may not be closed if an exception is raised." -select fo, msg + fileMayNotBeClosedOnException(fo, exec.asSome()) and + msg = "File may not be closed if $@ raises an exception." +select fo, msg, exec, "this operation" diff --git a/python/ql/src/Resources/FileNotAlwaysClosedQuery.qll b/python/ql/src/Resources/FileNotAlwaysClosedQuery.qll index 0122344d370e..9d91e4f523c2 100644 --- a/python/ql/src/Resources/FileNotAlwaysClosedQuery.qll +++ b/python/ql/src/Resources/FileNotAlwaysClosedQuery.qll @@ -34,6 +34,8 @@ class FileWrapperCall extends DataFlow::CallCfgNode { DataFlow::Node wrapped; FileWrapperCall() { + // Approximation: Treat any passing of a file object to a class constructor as potentially a wrapper + // This could be made more precise by checking that the constructor writes the file to a field. wrapped = this.getArg(_).getALocalSource() and this.getFunction() = classTracker(_) or @@ -50,22 +52,15 @@ class FileWrapperCall extends DataFlow::CallCfgNode { /** A node where a file is closed. */ abstract class FileClose extends DataFlow::CfgNode { - /** Holds if this file close will occur if an exception is raised at `raises`. */ - predicate guardsExceptions(DataFlow::CfgNode raises) { + /** Holds if this file close will occur if an exception is raised at `fileRaises`. */ + predicate guardsExceptions(DataFlow::CfgNode fileRaises) { // The close call occurs after an exception edge in the cfg (a catch or finally) - bbReachableRefl(raises.asCfgNode().getBasicBlock().getAnExceptionalSuccessor(), + bbReachableRefl(fileRaises.asCfgNode().getBasicBlock().getAnExceptionalSuccessor(), this.asCfgNode().getBasicBlock()) or // The exception is after the close call. - // A full cfg reachability check is not in general feasible for performance, so we approximate it with: - // - A basic block reachability check (here) that works if the expression and close call are in different basic blocks - // - A check (in the `WithStatement` override of `guardsExceptions`) for the case where the exception call - // is lexically contained in the body of a `with` statement that closes the file. - // This may cause FPs in a case such as: - // f.close() - // f.write("...") - // We presume this to not be very common. - bbReachableStrict(this.asCfgNode().getBasicBlock(), raises.asCfgNode().getBasicBlock()) + // A full cfg reachability check is not feasible for performance, instead we use local dataflow + fileLocalFlow(this, fileRaises) } } @@ -94,11 +89,10 @@ class WithStatement extends FileClose { WithStatement() { this.asExpr() = w.getContextExpr() } - override predicate guardsExceptions(DataFlow::CfgNode raises) { - super.guardsExceptions(raises) + override predicate guardsExceptions(DataFlow::CfgNode fileRaises) { + super.guardsExceptions(fileRaises) or - // Check whether the exception is raised in the body of the with statement. - raises.asExpr().getParent*() = w.getBody().getAnItem() + w.getBody().contains(fileRaises.asExpr()) } } @@ -131,7 +125,7 @@ private predicate fileLocalFlowHelper1( /** Holds if data flows from `source` to `sink`, including file wrapper classes. */ pragma[inline] -private predicate fileLocalFlow(FileOpen source, DataFlow::Node sink) { +private predicate fileLocalFlow(DataFlow::Node source, DataFlow::Node sink) { exists(DataFlow::LocalSourceNode mid | fileLocalFlowHelper1(source, mid) and mid.flowsTo(sink)) } @@ -171,7 +165,7 @@ predicate fileMayNotBeClosedOnException(FileOpen fo, DataFlow::Node raises) { fileLocalFlow(fo, fileRaised) and not exists(FileClose fc | fileLocalFlow(fo, fc) and - fc.guardsExceptions(raises) + fc.guardsExceptions(fileRaised) ) ) } diff --git a/python/ql/src/Statements/AssertLiteralConstant.ql b/python/ql/src/Statements/AssertLiteralConstant.ql index 73bd16458589..60c09951c069 100644 --- a/python/ql/src/Statements/AssertLiteralConstant.ql +++ b/python/ql/src/Statements/AssertLiteralConstant.ql @@ -3,7 +3,8 @@ * @description An assert statement testing a literal constant value may exhibit * different behavior when optimizations are enabled. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity recommendation * @sub-severity low diff --git a/python/ql/src/Statements/BreakOrReturnInFinally.ql b/python/ql/src/Statements/BreakOrReturnInFinally.ql index 02f501e0bfd5..dc9800eba8a6 100644 --- a/python/ql/src/Statements/BreakOrReturnInFinally.ql +++ b/python/ql/src/Statements/BreakOrReturnInFinally.ql @@ -3,8 +3,10 @@ * @description Using a Break or Return statement in a finally block causes the * Try-finally block to exit, discarding the exception. * @kind problem - * @tags reliability - * maintainability + * @tags quality + * reliability + * error-handling + * correctness * external/cwe/cwe-584 * @problem.severity warning * @sub-severity low diff --git a/python/ql/src/Statements/DocStrings.ql b/python/ql/src/Statements/DocStrings.ql index 355aff93f17f..903207f7ccb7 100644 --- a/python/ql/src/Statements/DocStrings.ql +++ b/python/ql/src/Statements/DocStrings.ql @@ -4,6 +4,7 @@ * makes it more difficult for other developers to maintain the code. * @kind problem * @tags maintainability + * readability * @problem.severity recommendation * @sub-severity low * @precision medium diff --git a/python/ql/src/Statements/ReturnOrYieldOutsideFunction.ql b/python/ql/src/Statements/ReturnOrYieldOutsideFunction.ql index a940dc601232..7bb0161f1309 100644 --- a/python/ql/src/Statements/ReturnOrYieldOutsideFunction.ql +++ b/python/ql/src/Statements/ReturnOrYieldOutsideFunction.ql @@ -2,7 +2,8 @@ * @name Use of 'return' or 'yield' outside a function * @description Using 'return' or 'yield' outside a function causes a 'SyntaxError' at runtime. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Variables/ShadowBuiltin.ql b/python/ql/src/Variables/ShadowBuiltin.ql index 7e4a8580a93f..51b74b7109cf 100644 --- a/python/ql/src/Variables/ShadowBuiltin.ql +++ b/python/ql/src/Variables/ShadowBuiltin.ql @@ -4,8 +4,10 @@ * makes the built-in object unusable within the current scope and makes the code * more difficult to read. * @kind problem - * @tags maintainability + * @tags quality + * maintainability * readability + * correctness * @problem.severity recommendation * @sub-severity low * @precision medium diff --git a/python/ql/src/Variables/ShadowGlobal.ql b/python/ql/src/Variables/ShadowGlobal.ql index 79d74d272aeb..2f06e4fe57d7 100644 --- a/python/ql/src/Variables/ShadowGlobal.ql +++ b/python/ql/src/Variables/ShadowGlobal.ql @@ -4,8 +4,10 @@ * makes the global variable unusable within the current scope and makes the code * more difficult to read. * @kind problem - * @tags maintainability + * @tags quality + * maintainability * readability + * correctness * @problem.severity recommendation * @sub-severity low * @precision medium diff --git a/python/ql/src/Variables/UndefinedPlaceHolder.ql b/python/ql/src/Variables/UndefinedPlaceHolder.ql index 7f7794e60a12..b0eeeda871ac 100644 --- a/python/ql/src/Variables/UndefinedPlaceHolder.ql +++ b/python/ql/src/Variables/UndefinedPlaceHolder.ql @@ -2,7 +2,8 @@ * @name Use of an undefined placeholder variable * @description Using a variable before it is initialized causes an exception. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Variables/UninitializedLocal.ql b/python/ql/src/Variables/UninitializedLocal.ql index 3a2461ee3e72..a6ac7d490ce6 100644 --- a/python/ql/src/Variables/UninitializedLocal.ql +++ b/python/ql/src/Variables/UninitializedLocal.ql @@ -2,7 +2,8 @@ * @name Potentially uninitialized local variable * @description Using a local variable before it is initialized causes an UnboundLocalError. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Variables/UnusedParameter.ql b/python/ql/src/Variables/UnusedParameter.ql index 74e1c2ac5368..7228974b7c73 100644 --- a/python/ql/src/Variables/UnusedParameter.ql +++ b/python/ql/src/Variables/UnusedParameter.ql @@ -2,7 +2,10 @@ * @name Unused parameter * @description Parameter is defined but not used * @kind problem - * @tags maintainability + * @tags quality + * reliability + * correctness + * readability * @problem.severity recommendation * @sub-severity high * @precision medium diff --git a/python/ql/src/change-notes/released/1.6.6.md b/python/ql/src/change-notes/released/1.6.6.md new file mode 100644 index 000000000000..e1b0e3c4955b --- /dev/null +++ b/python/ql/src/change-notes/released/1.6.6.md @@ -0,0 +1,7 @@ +## 1.6.6 + +### Minor Analysis Improvements + +- The queries that check for unmatchable `$` and `^` in regular expressions did not account correctly for occurrences inside lookahead and lookbehind assertions. These occurrences are now handled correctly, eliminating this source of false positives. +* The `py/inheritance/signature-mismatch` query has been modernized. It produces more precise results and more descriptive alert messages. +* The `py/inheritance/incorrect-overriding-signature` query has been deprecated. Its results have been consolidated into the `py/inheritance/signature-mismatch` query. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 031532705578..f8e54f30a672 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.5 +lastReleaseVersion: 1.6.6 diff --git a/python/ql/src/meta/ClassHierarchy/process-builtin-exceptions.py b/python/ql/src/meta/ClassHierarchy/process-builtin-exceptions.py new file mode 100644 index 000000000000..fc0266a5b993 --- /dev/null +++ b/python/ql/src/meta/ClassHierarchy/process-builtin-exceptions.py @@ -0,0 +1,31 @@ +from shared_subclass_functions import wrap_in_template +import sys +import yaml +from pathlib import Path + +py_version = sys.version.split()[0] +VERSION = f"process-builtin-exceptions 0.0.1; Python {py_version}" + +builtins_model_path = Path(__file__).parent.parent.parent.parent / "lib/semmle/python/frameworks/builtins.model.yml" + +def write_data(data, path: Path): + f = path.open("w+") + f.write(f"# {VERSION}\n") + yaml.dump(data, indent=2, stream=f, Dumper=yaml.CDumper) + +builtin_names = dir(__builtins__) +builtin_dict = {x: getattr(__builtins__,x) for x in builtin_names} + + +builtin_exceptions = {v for v in builtin_dict.values() if type(v) is type and issubclass(v, BaseException)} + +data = [] +for sub in builtin_exceptions: + for base in sub.__mro__: + if issubclass(base, BaseException): + basename = base.__name__ + subname = sub.__name__ + row = [f"builtins.{basename}~Subclass", f"builtins.{subname}", ""] + data.append(row) + +write_data(wrap_in_template(data), builtins_model_path) diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index ec238b337987..b42e054bdadc 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.6.5 +version: 1.6.6 groups: - python - queries diff --git a/python/ql/test/library-tests/dataflow/fieldflow/test.py b/python/ql/test/library-tests/dataflow/fieldflow/test.py index 1ce049917f01..f0152ad38a84 100644 --- a/python/ql/test/library-tests/dataflow/fieldflow/test.py +++ b/python/ql/test/library-tests/dataflow/fieldflow/test.py @@ -301,12 +301,12 @@ def set_to_source(): @expects(4) # $ unresolved_call=expects(..) unresolved_call=expects(..)(..) def test_global_flow_to_class_attribute(): inst = WithTuple2() - SINK_F(WithTuple2.my_tuple[0]) + SINK_F(WithTuple2.my_tuple[0]) # $ SPURIOUS: flow="SOURCE, l:-5 -> WithTuple2.my_tuple[0]" SINK_F(inst.my_tuple[0]) set_to_source() - SINK(WithTuple2.my_tuple[0]) # $ MISSING: flow="SOURCE, l:-10 -> WithTuple2.my_tuple[0]" + SINK(WithTuple2.my_tuple[0]) # $ flow="SOURCE, l:-10 -> WithTuple2.my_tuple[0]" SINK(inst.my_tuple[0]) # $ MISSING: flow="SOURCE, l:-11 -> inst.my_tuple[0]" diff --git a/python/ql/test/library-tests/dataflow/fieldflow/test_global.py b/python/ql/test/library-tests/dataflow/fieldflow/test_global.py index 0e96b37dc33c..9970c47c962f 100644 --- a/python/ql/test/library-tests/dataflow/fieldflow/test_global.py +++ b/python/ql/test/library-tests/dataflow/fieldflow/test_global.py @@ -146,6 +146,7 @@ def fields_with_local_flow(x): class NestedObj(object): def __init__(self): self.obj = MyObj("OK") + self.obj.foo = "default" def getObj(self): return self.obj @@ -163,17 +164,31 @@ def getObj(self): a2 = NestedObj() a2.getObj().foo = x2 SINK(a2.obj.foo) # $ flow="SOURCE, l:-3 -> a2.obj.foo" + +# Global variable +app = NestedObj() + +def init_global(): + app.obj.foo = SOURCE + +def read_global(): + return app.obj.foo + +def test_global_nested_attributes(): + init_global() + result = read_global() + SINK(result) # $ flow="SOURCE, l:-8 -> result" # ------------------------------------------------------------------------------ # Global scope interaction # ------------------------------------------------------------------------------ def func_defined_before(): - SINK(global_obj.foo) # $ MISSING: flow="SOURCE, l:+3 -> global_obj.foo" + SINK(global_obj.foo) # $ flow="SOURCE, l:+3 -> global_obj.foo" global_obj = MyObj(NONSOURCE) global_obj.foo = SOURCE SINK(global_obj.foo) # $ flow="SOURCE, l:-1 -> global_obj.foo" def func_defined_after(): - SINK(global_obj.foo) # $ MISSING: flow="SOURCE, l:-4 -> global_obj.foo" + SINK(global_obj.foo) # $ flow="SOURCE, l:-4 -> global_obj.foo" diff --git a/python/ql/test/library-tests/regex/FirstLast.expected b/python/ql/test/library-tests/regex/FirstLast.expected index b187033ee22d..0abf9c790c24 100644 --- a/python/ql/test/library-tests/regex/FirstLast.expected +++ b/python/ql/test/library-tests/regex/FirstLast.expected @@ -4,6 +4,7 @@ | (?!not-this)^[A-Z_]+$ | first | 12 | 13 | | (?!not-this)^[A-Z_]+$ | first | 13 | 19 | | (?!not-this)^[A-Z_]+$ | first | 13 | 20 | +| (?!not-this)^[A-Z_]+$ | last | 3 | 11 | | (?!not-this)^[A-Z_]+$ | last | 13 | 19 | | (?!not-this)^[A-Z_]+$ | last | 13 | 20 | | (?!not-this)^[A-Z_]+$ | last | 20 | 21 | @@ -101,6 +102,7 @@ | ^[A-Z_]+$(? base max (strong mismatch) + + def meth5(self, x, y=1): pass # $Alert[py/inheritance/signature-mismatch] + + def meth6(self, x): pass # $Alert[py/inheritance/signature-mismatch] # weak mismatch (base may be called with 3+ args) + + def meth7(self, x, *ys): pass # $Alert[py/inheritance/signature-mismatch] # weak mismatch (base may be called with 1 arg only) + + def meth8(self, x, z): pass # $Alert[py/inheritance/signature-mismatch] # weak mismatch (base may be called with arg named y) + + def meth9(self, x, z): pass # No alert (never called with wrong keyword arg) + + def meth10(self, x, **kwargs): pass # No alert (y is kw-only arg in base, calls that use it are valid for sub) + + def meth11(self, x, z, **kwargs): pass # $MISSING:Alert[py/inheritance/signature-mismatch] # call using y kw-arg is invalid due to not specifying z, but this is not detected. Likely a fairly niche situation. + + def meth12(self): pass # $Alert[py/inheritance/signature-mismatch] # call including extra kwarg invalid + + def meth13(self, /, y): pass # $Alert[py/inheritance/signature-mismatch] # weak mismatch (base may be called with arg named x), however meth13 is incorrectly detected as having 2 minimum positional arguments, whereas x is kw-only; resulting in the witness call not being detected as a valid call to Base2.meth13. diff --git a/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/FileNotAlwaysClosed.expected b/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/FileNotAlwaysClosed.expected new file mode 100644 index 000000000000..7f48feb72eb9 --- /dev/null +++ b/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/FileNotAlwaysClosed.expected @@ -0,0 +1,9 @@ +| resources_test.py:4:10:4:25 | ControlFlowNode for open() | File may not be closed if $@ raises an exception. | resources_test.py:5:5:5:33 | ControlFlowNode for Attribute() | this operation | +| resources_test.py:9:10:9:25 | ControlFlowNode for open() | File is opened but is not closed. | file://:0:0:0:0 | (none) | this operation | +| resources_test.py:108:11:108:20 | ControlFlowNode for open() | File is opened but is not closed. | file://:0:0:0:0 | (none) | this operation | +| resources_test.py:112:11:112:28 | ControlFlowNode for opener_func2() | File may not be closed if $@ raises an exception. | resources_test.py:113:5:113:22 | ControlFlowNode for Attribute() | this operation | +| resources_test.py:123:11:123:24 | ControlFlowNode for opener_func2() | File is opened but is not closed. | file://:0:0:0:0 | (none) | this operation | +| resources_test.py:129:15:129:24 | ControlFlowNode for open() | File may not be closed if $@ raises an exception. | resources_test.py:130:9:130:26 | ControlFlowNode for Attribute() | this operation | +| resources_test.py:248:11:248:25 | ControlFlowNode for open() | File is opened but is not closed. | file://:0:0:0:0 | (none) | this operation | +| resources_test.py:269:10:269:27 | ControlFlowNode for Attribute() | File may not be closed if $@ raises an exception. | resources_test.py:271:5:271:19 | ControlFlowNode for Attribute() | this operation | +| resources_test.py:285:11:285:20 | ControlFlowNode for open() | File may not be closed if $@ raises an exception. | resources_test.py:287:5:287:31 | ControlFlowNode for Attribute() | this operation | diff --git a/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/FileNotAlwaysClosed.qlref b/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/FileNotAlwaysClosed.qlref new file mode 100644 index 000000000000..57ffce32b8bc --- /dev/null +++ b/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/FileNotAlwaysClosed.qlref @@ -0,0 +1,2 @@ +query: Resources/FileNotAlwaysClosed.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/resources_test.py b/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/resources_test.py index 244c6f73c133..15ba9393715a 100644 --- a/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/resources_test.py +++ b/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/resources_test.py @@ -1,12 +1,12 @@ #File not always closed def not_close1(): - f1 = open("filename") # $ notClosedOnException + f1 = open("filename") # $ Alert # not closed on exception f1.write("Error could occur") f1.close() def not_close2(): - f2 = open("filename") # $ notClosed + f2 = open("filename") # $ Alert def closed3(): f3 = open("filename") @@ -46,7 +46,7 @@ def closed7(): def not_closed8(): f8 = None try: - f8 = open("filename") # $ MISSING:notClosedOnException + f8 = open("filename") # $ MISSING:Alert # not closed on exception f8.write("Error could occur") finally: if f8 is None: # We don't precisely consider this condition, so this result is MISSING. However, this seems uncommon. @@ -105,11 +105,11 @@ def opener_func2(name): return t1 def not_closed13(name): - f13 = open(name) # $ notClosed + f13 = open(name) # $ Alert f13.write("Hello") def may_not_be_closed14(name): - f14 = opener_func2(name) # $ notClosedOnException + f14 = opener_func2(name) # $ Alert # not closed on exception f14.write("Hello") f14.close() @@ -120,13 +120,13 @@ def closer2(t3): closer1(t3) def closed15(): - f15 = opener_func2() # $ SPURIOUS:notClosed + f15 = opener_func2() # $ SPURIOUS:Alert closer2(f15) # We don't detect that this call closes the file, so this result is SPURIOUS. def may_not_be_closed16(name): try: - f16 = open(name) # $ notClosedOnException + f16 = open(name) # $ Alert # not closed on exception f16.write("Hello") f16.close() except IOError: @@ -138,7 +138,7 @@ def may_raise(): #Not handling all exceptions, but we'll tolerate the false negative def not_closed17(): - f17 = open("filename") # $ MISSING:notClosedOnException + f17 = open("filename") # $ MISSING:Alert # not closed on exception try: f17.write("IOError could occur") f17.write("IOError could occur") @@ -151,11 +151,11 @@ def not_closed17(): #With statement will close the fp def closed18(path): try: - f18 = open(path) + f18 = open(path) except IOError as ex: print(ex) raise ex - with f18: + with f18: f18.read() class Closed19(object): @@ -234,7 +234,7 @@ def closed21(path): def not_closed22(path): - f22 = open(path, "wb") # $ MISSING:notClosedOnException + f22 = open(path, "wb") # $ MISSING:Alert # not closed on exception try: f22.write(b"foo") may_raise() @@ -245,7 +245,7 @@ def not_closed22(path): f22.close() def not_closed23(path): - f23 = open(path, "w") # $ notClosed + f23 = open(path, "w") # $ Alert wr = FileWrapper(f23) def closed24(path): @@ -266,7 +266,7 @@ def closed26(path): os.close(fd) def not_closed27(path): - fd = os.open(path, "w") # $notClosedOnException + fd = os.open(path, "w") # $Alert # not closed on exception f27 = os.fdopen(fd, "w") f27.write("hi") f27.close() @@ -282,6 +282,53 @@ def closed28(path): def closed29(path): # Due to an approximation in CFG reachability for performance, it is not detected that the `write` call that may raise occurs after the file has already been closed. # We presume this case to be uncommon. - f28 = open(path) # $SPURIOUS:notClosedOnException + f28 = open(path) # $SPURIOUS:Alert # not closed on exception f28.close() - f28.write("already closed") \ No newline at end of file + f28.write("already closed") + +# False positive in a previous implementation: + +class NotWrapper: + def __init__(self, fp): + self.data = fp.read() + fp.close() + + def do_something(self): + pass + +def closed30(path): + # Combination of approximations resulted in this FP: + # - NotWrapper is treated as a wrapper class as a file handle is passed to it + # - thing.do_something() is treated as a call that can raise an exception while a file is open + # - this call is treated as occurring after the open but not as being guarded by the with statement, as it is in the same basic block + # - - this behavior has been changed fixing the FP + + with open(path) as fp: # No longer spurious alert here. + thing = NotWrapper(fp) + + thing.do_something() + + +def closed31(path): + with open(path) as fp: + data = fp.readline() + data2 = fp.readline() + + +class Wrapper(): + def __init__(self, f): + self.f = f + def read(self): + return self.f.read() + def __enter__(self): + pass + def __exit__(self,exc_type, exc_value,traceback): + self.f.close() + +def closed32(path): + with open(path, "rb") as f: # No longer spurious alert here. + wrap = Wrapper(f) + # This resulted in an FP in a previous implementation, + # due to a check that an operation is lexically contained within a `with` block (with `expr.getParent*()`) + # not detecting this case. + return list(wrap.read()) \ No newline at end of file diff --git a/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/test.expected b/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/test.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/test.ql b/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/test.ql deleted file mode 100644 index f176172d0782..000000000000 --- a/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/test.ql +++ /dev/null @@ -1,25 +0,0 @@ -import python -import Resources.FileNotAlwaysClosedQuery -import utils.test.InlineExpectationsTest - -module MethodArgTest implements TestSig { - string getARelevantTag() { result = ["notClosed", "notClosedOnException"] } - - predicate hasActualResult(Location location, string element, string tag, string value) { - exists(DataFlow::CfgNode el, FileOpen fo | - el = fo and - element = el.toString() and - location = el.getLocation() and - value = "" and - ( - fileNotClosed(fo) and - tag = "notClosed" - or - fileMayNotBeClosedOnException(fo, _) and - tag = "notClosedOnException" - ) - ) - } -} - -import MakeTest diff --git a/python/ql/test/query-tests/Security/CWE-022-PathInjection/DataflowQueryTest.expected b/python/ql/test/query-tests/Security/CWE-022-PathInjection/DataflowQueryTest.expected deleted file mode 100644 index 2fad7bb9a843..000000000000 --- a/python/ql/test/query-tests/Security/CWE-022-PathInjection/DataflowQueryTest.expected +++ /dev/null @@ -1,2 +0,0 @@ -missingAnnotationOnSink -testFailures diff --git a/python/ql/test/query-tests/Security/CWE-022-PathInjection/DataflowQueryTest.ql b/python/ql/test/query-tests/Security/CWE-022-PathInjection/DataflowQueryTest.ql deleted file mode 100644 index e4720596a37c..000000000000 --- a/python/ql/test/query-tests/Security/CWE-022-PathInjection/DataflowQueryTest.ql +++ /dev/null @@ -1,4 +0,0 @@ -import python -import utils.test.dataflow.DataflowQueryTest -import semmle.python.security.dataflow.PathInjectionQuery -import FromTaintTrackingStateConfig diff --git a/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.expected b/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.expected index 37e4dd927d89..79b36070c017 100644 --- a/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.expected @@ -1,4 +1,38 @@ +#select +| fastapi_path_injection.py:7:19:7:26 | ControlFlowNode for filepath | fastapi_path_injection.py:17:21:17:24 | ControlFlowNode for path | fastapi_path_injection.py:7:19:7:26 | ControlFlowNode for filepath | This path depends on a $@. | fastapi_path_injection.py:17:21:17:24 | ControlFlowNode for path | user-provided value | +| fastapi_path_injection.py:7:19:7:26 | ControlFlowNode for filepath | fastapi_path_injection.py:26:21:26:24 | ControlFlowNode for path | fastapi_path_injection.py:7:19:7:26 | ControlFlowNode for filepath | This path depends on a $@. | fastapi_path_injection.py:26:21:26:24 | ControlFlowNode for path | user-provided value | +| fastapi_path_injection.py:7:19:7:26 | ControlFlowNode for filepath | fastapi_path_injection.py:31:21:31:24 | ControlFlowNode for path | fastapi_path_injection.py:7:19:7:26 | ControlFlowNode for filepath | This path depends on a $@. | fastapi_path_injection.py:31:21:31:24 | ControlFlowNode for path | user-provided value | +| fastapi_path_injection.py:7:19:7:26 | ControlFlowNode for filepath | fastapi_path_injection.py:48:21:48:24 | ControlFlowNode for path | fastapi_path_injection.py:7:19:7:26 | ControlFlowNode for filepath | This path depends on a $@. | fastapi_path_injection.py:48:21:48:24 | ControlFlowNode for path | user-provided value | +| flask_path_injection.py:21:32:21:38 | ControlFlowNode for dirname | flask_path_injection.py:1:26:1:32 | ControlFlowNode for ImportMember | flask_path_injection.py:21:32:21:38 | ControlFlowNode for dirname | This path depends on a $@. | flask_path_injection.py:1:26:1:32 | ControlFlowNode for ImportMember | user-provided value | +| path_injection.py:13:14:13:47 | ControlFlowNode for Attribute() | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:13:14:13:47 | ControlFlowNode for Attribute() | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| path_injection.py:21:14:21:18 | ControlFlowNode for npath | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:21:14:21:18 | ControlFlowNode for npath | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| path_injection.py:31:14:31:18 | ControlFlowNode for npath | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:31:14:31:18 | ControlFlowNode for npath | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| path_injection.py:48:14:48:18 | ControlFlowNode for npath | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:48:14:48:18 | ControlFlowNode for npath | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| path_injection.py:65:14:65:18 | ControlFlowNode for npath | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:65:14:65:18 | ControlFlowNode for npath | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| path_injection.py:87:18:87:37 | ControlFlowNode for possibly_unsafe_path | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:87:18:87:37 | ControlFlowNode for possibly_unsafe_path | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| path_injection.py:94:14:94:17 | ControlFlowNode for path | path_injection.py:91:20:91:25 | ControlFlowNode for foo_id | path_injection.py:94:14:94:17 | ControlFlowNode for path | This path depends on a $@. | path_injection.py:91:20:91:25 | ControlFlowNode for foo_id | user-provided value | +| path_injection.py:102:14:102:17 | ControlFlowNode for path | path_injection.py:98:20:98:22 | ControlFlowNode for foo | path_injection.py:102:14:102:17 | ControlFlowNode for path | This path depends on a $@. | path_injection.py:98:20:98:22 | ControlFlowNode for foo | user-provided value | +| path_injection.py:113:14:113:17 | ControlFlowNode for path | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:113:14:113:17 | ControlFlowNode for path | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| path_injection.py:124:14:124:17 | ControlFlowNode for path | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:124:14:124:17 | ControlFlowNode for path | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| path_injection.py:132:14:132:22 | ControlFlowNode for sanitized | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:132:14:132:22 | ControlFlowNode for sanitized | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| path_injection.py:142:14:142:17 | ControlFlowNode for path | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:142:14:142:17 | ControlFlowNode for path | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| path_injection.py:152:18:152:21 | ControlFlowNode for path | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:152:18:152:21 | ControlFlowNode for path | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| pathlib_use.py:14:5:14:5 | ControlFlowNode for p | pathlib_use.py:3:26:3:32 | ControlFlowNode for ImportMember | pathlib_use.py:14:5:14:5 | ControlFlowNode for p | This path depends on a $@. | pathlib_use.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| pathlib_use.py:17:5:17:6 | ControlFlowNode for p2 | pathlib_use.py:3:26:3:32 | ControlFlowNode for ImportMember | pathlib_use.py:17:5:17:6 | ControlFlowNode for p2 | This path depends on a $@. | pathlib_use.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| test.py:19:10:19:10 | ControlFlowNode for x | test.py:3:26:3:32 | ControlFlowNode for ImportMember | test.py:19:10:19:10 | ControlFlowNode for x | This path depends on a $@. | test.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| test.py:26:10:26:10 | ControlFlowNode for y | test.py:3:26:3:32 | ControlFlowNode for ImportMember | test.py:26:10:26:10 | ControlFlowNode for y | This path depends on a $@. | test.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| test.py:33:14:33:14 | ControlFlowNode for x | test.py:3:26:3:32 | ControlFlowNode for ImportMember | test.py:33:14:33:14 | ControlFlowNode for x | This path depends on a $@. | test.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | +| test.py:49:14:49:14 | ControlFlowNode for y | test.py:3:26:3:32 | ControlFlowNode for ImportMember | test.py:49:14:49:14 | ControlFlowNode for y | This path depends on a $@. | test.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | edges +| fastapi_path_injection.py:6:24:6:31 | ControlFlowNode for filepath | fastapi_path_injection.py:7:19:7:26 | ControlFlowNode for filepath | provenance | | +| fastapi_path_injection.py:17:21:17:24 | ControlFlowNode for path | fastapi_path_injection.py:20:34:20:37 | ControlFlowNode for path | provenance | | +| fastapi_path_injection.py:20:34:20:37 | ControlFlowNode for path | fastapi_path_injection.py:6:24:6:31 | ControlFlowNode for filepath | provenance | | +| fastapi_path_injection.py:26:21:26:24 | ControlFlowNode for path | fastapi_path_injection.py:27:34:27:37 | ControlFlowNode for path | provenance | | +| fastapi_path_injection.py:27:34:27:37 | ControlFlowNode for path | fastapi_path_injection.py:6:24:6:31 | ControlFlowNode for filepath | provenance | | +| fastapi_path_injection.py:31:21:31:24 | ControlFlowNode for path | fastapi_path_injection.py:32:34:32:37 | ControlFlowNode for path | provenance | | +| fastapi_path_injection.py:32:34:32:37 | ControlFlowNode for path | fastapi_path_injection.py:6:24:6:31 | ControlFlowNode for filepath | provenance | | +| fastapi_path_injection.py:48:21:48:24 | ControlFlowNode for path | fastapi_path_injection.py:49:45:49:48 | ControlFlowNode for path | provenance | | +| fastapi_path_injection.py:49:45:49:48 | ControlFlowNode for path | fastapi_path_injection.py:6:24:6:31 | ControlFlowNode for filepath | provenance | | | flask_path_injection.py:1:26:1:32 | ControlFlowNode for ImportMember | flask_path_injection.py:1:26:1:32 | ControlFlowNode for request | provenance | | | flask_path_injection.py:1:26:1:32 | ControlFlowNode for request | flask_path_injection.py:19:15:19:21 | ControlFlowNode for request | provenance | | | flask_path_injection.py:19:5:19:11 | ControlFlowNode for dirname | flask_path_injection.py:21:32:21:38 | ControlFlowNode for dirname | provenance | | @@ -122,6 +156,16 @@ edges | test.py:48:23:48:23 | ControlFlowNode for x | test.py:12:15:12:15 | ControlFlowNode for x | provenance | | | test.py:48:23:48:23 | ControlFlowNode for x | test.py:48:13:48:24 | ControlFlowNode for normalize() | provenance | Config | nodes +| fastapi_path_injection.py:6:24:6:31 | ControlFlowNode for filepath | semmle.label | ControlFlowNode for filepath | +| fastapi_path_injection.py:7:19:7:26 | ControlFlowNode for filepath | semmle.label | ControlFlowNode for filepath | +| fastapi_path_injection.py:17:21:17:24 | ControlFlowNode for path | semmle.label | ControlFlowNode for path | +| fastapi_path_injection.py:20:34:20:37 | ControlFlowNode for path | semmle.label | ControlFlowNode for path | +| fastapi_path_injection.py:26:21:26:24 | ControlFlowNode for path | semmle.label | ControlFlowNode for path | +| fastapi_path_injection.py:27:34:27:37 | ControlFlowNode for path | semmle.label | ControlFlowNode for path | +| fastapi_path_injection.py:31:21:31:24 | ControlFlowNode for path | semmle.label | ControlFlowNode for path | +| fastapi_path_injection.py:32:34:32:37 | ControlFlowNode for path | semmle.label | ControlFlowNode for path | +| fastapi_path_injection.py:48:21:48:24 | ControlFlowNode for path | semmle.label | ControlFlowNode for path | +| fastapi_path_injection.py:49:45:49:48 | ControlFlowNode for path | semmle.label | ControlFlowNode for path | | flask_path_injection.py:1:26:1:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | flask_path_injection.py:1:26:1:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | | flask_path_injection.py:19:5:19:11 | ControlFlowNode for dirname | semmle.label | ControlFlowNode for dirname | @@ -252,24 +296,3 @@ nodes subpaths | test.py:25:19:25:19 | ControlFlowNode for x | test.py:12:15:12:15 | ControlFlowNode for x | test.py:13:12:13:30 | ControlFlowNode for Attribute() | test.py:25:9:25:20 | ControlFlowNode for normalize() | | test.py:48:23:48:23 | ControlFlowNode for x | test.py:12:15:12:15 | ControlFlowNode for x | test.py:13:12:13:30 | ControlFlowNode for Attribute() | test.py:48:13:48:24 | ControlFlowNode for normalize() | -#select -| flask_path_injection.py:21:32:21:38 | ControlFlowNode for dirname | flask_path_injection.py:1:26:1:32 | ControlFlowNode for ImportMember | flask_path_injection.py:21:32:21:38 | ControlFlowNode for dirname | This path depends on a $@. | flask_path_injection.py:1:26:1:32 | ControlFlowNode for ImportMember | user-provided value | -| path_injection.py:13:14:13:47 | ControlFlowNode for Attribute() | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:13:14:13:47 | ControlFlowNode for Attribute() | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| path_injection.py:21:14:21:18 | ControlFlowNode for npath | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:21:14:21:18 | ControlFlowNode for npath | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| path_injection.py:31:14:31:18 | ControlFlowNode for npath | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:31:14:31:18 | ControlFlowNode for npath | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| path_injection.py:48:14:48:18 | ControlFlowNode for npath | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:48:14:48:18 | ControlFlowNode for npath | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| path_injection.py:65:14:65:18 | ControlFlowNode for npath | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:65:14:65:18 | ControlFlowNode for npath | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| path_injection.py:87:18:87:37 | ControlFlowNode for possibly_unsafe_path | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:87:18:87:37 | ControlFlowNode for possibly_unsafe_path | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| path_injection.py:94:14:94:17 | ControlFlowNode for path | path_injection.py:91:20:91:25 | ControlFlowNode for foo_id | path_injection.py:94:14:94:17 | ControlFlowNode for path | This path depends on a $@. | path_injection.py:91:20:91:25 | ControlFlowNode for foo_id | user-provided value | -| path_injection.py:102:14:102:17 | ControlFlowNode for path | path_injection.py:98:20:98:22 | ControlFlowNode for foo | path_injection.py:102:14:102:17 | ControlFlowNode for path | This path depends on a $@. | path_injection.py:98:20:98:22 | ControlFlowNode for foo | user-provided value | -| path_injection.py:113:14:113:17 | ControlFlowNode for path | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:113:14:113:17 | ControlFlowNode for path | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| path_injection.py:124:14:124:17 | ControlFlowNode for path | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:124:14:124:17 | ControlFlowNode for path | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| path_injection.py:132:14:132:22 | ControlFlowNode for sanitized | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:132:14:132:22 | ControlFlowNode for sanitized | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| path_injection.py:142:14:142:17 | ControlFlowNode for path | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:142:14:142:17 | ControlFlowNode for path | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| path_injection.py:152:18:152:21 | ControlFlowNode for path | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:152:18:152:21 | ControlFlowNode for path | This path depends on a $@. | path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| pathlib_use.py:14:5:14:5 | ControlFlowNode for p | pathlib_use.py:3:26:3:32 | ControlFlowNode for ImportMember | pathlib_use.py:14:5:14:5 | ControlFlowNode for p | This path depends on a $@. | pathlib_use.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| pathlib_use.py:17:5:17:6 | ControlFlowNode for p2 | pathlib_use.py:3:26:3:32 | ControlFlowNode for ImportMember | pathlib_use.py:17:5:17:6 | ControlFlowNode for p2 | This path depends on a $@. | pathlib_use.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| test.py:19:10:19:10 | ControlFlowNode for x | test.py:3:26:3:32 | ControlFlowNode for ImportMember | test.py:19:10:19:10 | ControlFlowNode for x | This path depends on a $@. | test.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| test.py:26:10:26:10 | ControlFlowNode for y | test.py:3:26:3:32 | ControlFlowNode for ImportMember | test.py:26:10:26:10 | ControlFlowNode for y | This path depends on a $@. | test.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| test.py:33:14:33:14 | ControlFlowNode for x | test.py:3:26:3:32 | ControlFlowNode for ImportMember | test.py:33:14:33:14 | ControlFlowNode for x | This path depends on a $@. | test.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | -| test.py:49:14:49:14 | ControlFlowNode for y | test.py:3:26:3:32 | ControlFlowNode for ImportMember | test.py:49:14:49:14 | ControlFlowNode for y | This path depends on a $@. | test.py:3:26:3:32 | ControlFlowNode for ImportMember | user-provided value | diff --git a/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.qlref b/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.qlref index d43482cc509e..6a680f6d5ff5 100644 --- a/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.qlref +++ b/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.qlref @@ -1 +1,2 @@ -Security/CWE-022/PathInjection.ql +query: Security/CWE-022/PathInjection.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/python/ql/test/query-tests/Security/CWE-022-PathInjection/fastapi_path_injection.py b/python/ql/test/query-tests/Security/CWE-022-PathInjection/fastapi_path_injection.py new file mode 100644 index 000000000000..e5d7cae762cb --- /dev/null +++ b/python/ql/test/query-tests/Security/CWE-022-PathInjection/fastapi_path_injection.py @@ -0,0 +1,49 @@ +from fastapi import FastAPI, Depends + +app = FastAPI() + +class FileHandler: + def get_data(self, filepath: str): + with open(filepath, "r") as f: # $ Alert + return f.readline() + +file_handler = None + +def init_file_handler(): + global file_handler + file_handler = FileHandler() + +@app.get("/file/") +async def read_item(path: str): # $ Source + if file_handler is None: + init_file_handler() + return file_handler.get_data(path) + +def init_file_handler(): + return FileHandler() + +@app.get("/file2/", dependencies=[Depends(init_file_handler)]) +async def read_item(path: str, file_handler: FileHandler = Depends()): # $ Source + return file_handler.get_data(path) + + +@app.get("/file3/", dependencies=[Depends(init_file_handler)]) +async def read_item(path: str): # $ Source + return file_handler.get_data(path) + + +@app.on_event("startup") +def init_file_handler(): + app.state.file_handler1 = FileHandler() + app.state.file_handler2 = FileHandler() + +def get_data_source(): + return app.state.file_handler1 + +@app.get("/file4/") +async def read_item(path: str, data_source=Depends(get_data_source)): # $ MISSING: Source + return data_source.get_data(path) + +@app.get("/file5/", dependencies=[Depends(init_file_handler)]) +async def read_item(path: str): # $ Source + return app.state.file_handler2.get_data(path) diff --git a/python/ql/test/query-tests/Security/CWE-022-PathInjection/flask_path_injection.py b/python/ql/test/query-tests/Security/CWE-022-PathInjection/flask_path_injection.py index f64d76a3b4da..f289bcc94ec9 100644 --- a/python/ql/test/query-tests/Security/CWE-022-PathInjection/flask_path_injection.py +++ b/python/ql/test/query-tests/Security/CWE-022-PathInjection/flask_path_injection.py @@ -1,4 +1,4 @@ -from flask import Flask, request, send_from_directory +from flask import Flask, request, send_from_directory # $Source app = Flask(__name__) @@ -18,4 +18,4 @@ def download_file(): def download_file(): dirname = request.args.get('dirname', '') filename = request.args.get('filename', '') - return send_from_directory(dirname, filename) # $result=BAD result=OK(filename) + return send_from_directory(dirname, filename) # $ Alert diff --git a/python/ql/test/query-tests/Security/CWE-022-PathInjection/path_injection.py b/python/ql/test/query-tests/Security/CWE-022-PathInjection/path_injection.py index 39c170374802..37ff20b7de13 100644 --- a/python/ql/test/query-tests/Security/CWE-022-PathInjection/path_injection.py +++ b/python/ql/test/query-tests/Security/CWE-022-PathInjection/path_injection.py @@ -1,6 +1,6 @@ import os -from flask import Flask, request +from flask import Flask, request # $ Source app = Flask(__name__) @@ -10,7 +10,7 @@ @app.route("/path1") def path_injection(): filename = request.args.get('filename', '') - f = open(os.path.join(STATIC_DIR, filename)) # $result=BAD + f = open(os.path.join(STATIC_DIR, filename)) # $ Alert @app.route("/path2") @@ -18,7 +18,7 @@ def path_injection(): # Normalized, but not checked filename = request.args.get('filename', '') npath = os.path.normpath(os.path.join(STATIC_DIR, filename)) - f = open(npath) # $result=BAD + f = open(npath) # $ Alert @app.route("/path3") @@ -28,7 +28,7 @@ def unsafe_path_normpath(): npath = os.path.normpath(os.path.join(STATIC_DIR, filename)) if npath.startswith(STATIC_DIR): pass - f = open(npath) # $result=BAD + f = open(npath) # $ Alert @app.route("/path4") @@ -45,7 +45,7 @@ def unsafe_path_realpath(): # Normalized (by `realpath` that also follows symlinks), but not checked properly filename = request.args.get('filename', '') npath = os.path.realpath(os.path.join(STATIC_DIR, filename)) - f = open(npath) # $result=BAD + f = open(npath) # $ Alert @app.route("/path6") @@ -62,7 +62,7 @@ def unsafe_path_abspath(): # Normalized (by `abspath`), but not checked properly filename = request.args.get('filename', '') npath = os.path.abspath(os.path.join(STATIC_DIR, filename)) - f = open(npath) # $result=BAD + f = open(npath) # $ Alert @app.route("/path7") @@ -84,22 +84,22 @@ def safe_path_abspath_tricky(): filename = request.args.get('filename', '') possibly_unsafe_path = os.path.join(STATIC_DIR, filename) if os.path.abspath(possibly_unsafe_path).startswith(STATIC_DIR): - f = open(possibly_unsafe_path) # $SPURIOUS: result=BAD + f = open(possibly_unsafe_path) # $ SPURIOUS: Alert @app.route("/int-only/") -def flask_int_only(foo_id): +def flask_int_only(foo_id): # $ SPURIOUS: Source # This is OK, since the flask routing ensures that `foo_id` MUST be an integer. path = os.path.join(STATIC_DIR, foo_id) - f = open(path) # $spurious: result=BAD + f = open(path) # $ SPURIOUS: Alert @app.route("/not-path/") -def flask_not_path(foo): +def flask_not_path(foo): # $ Source # On UNIX systems, this is OK, since without being marked as ``, flask # routing ensures that `foo` cannot contain forward slashes (not by using %2F either). path = os.path.join(STATIC_DIR, foo) - f = open(path) # $result=BAD // OK if only running on UNIX systems, NOT OK if could be running on windows + f = open(path) # $ Alert // OK if only running on UNIX systems, NOT OK if could be running on windows @app.route("/no-dot-dot") @@ -110,7 +110,7 @@ def no_dot_dot(): # handle if `filename` is an absolute path if '../' in path: return "not this time" - f = open(path) # $result=BAD + f = open(path) # $ Alert @app.route("/no-dot-dot-with-prefix") @@ -121,7 +121,7 @@ def no_dot_dot_with_prefix(): # Therefore, for UNIX-only programs, the `../` check is enough to stop path injections. if '../' in path: return "not this time" - f = open(path) # $result=BAD // OK if only running on UNIX systems, NOT OK if could be running on windows + f = open(path) # $ Alert // OK if only running on UNIX systems, NOT OK if could be running on windows @app.route("/replace-slash") @@ -129,7 +129,7 @@ def replace_slash(): filename = request.args.get('filename', '') path = os.path.join(STATIC_DIR, filename) sanitized = path.replace("/", "_") - f = open(sanitized) # $result=BAD // OK if only running on UNIX systems, NOT OK if could be running on windows + f = open(sanitized) # $ Alert // OK if only running on UNIX systems, NOT OK if could be running on windows @app.route("/stackoverflow-solution") @@ -139,7 +139,7 @@ def stackoverflow_solution(): path = os.path.join(STATIC_DIR, filename) if os.path.commonprefix((os.path.realpath(path), STATIC_DIR)) != STATIC_DIR: return "not this time" - f = open(path) # $SPURIOUS: result=BAD + f = open(path) # $ SPURIOUS: Alert SAFE_FILES = ['foo', 'bar', 'baz'] @@ -149,4 +149,4 @@ def safe_set_of_files(): filename = request.args.get('filename', '') if filename in SAFE_FILES: path = os.path.join(STATIC_DIR, filename) - f = open(path) # $SPURIOUS: result=BAD + f = open(path) # $ SPURIOUS: Alert diff --git a/python/ql/test/query-tests/Security/CWE-022-PathInjection/pathlib_use.py b/python/ql/test/query-tests/Security/CWE-022-PathInjection/pathlib_use.py index 6f703f903dc5..76ce1d1cc99d 100644 --- a/python/ql/test/query-tests/Security/CWE-022-PathInjection/pathlib_use.py +++ b/python/ql/test/query-tests/Security/CWE-022-PathInjection/pathlib_use.py @@ -1,6 +1,6 @@ import pathlib -from flask import Flask, request +from flask import Flask, request # $ Source app = Flask(__name__) @@ -11,7 +11,7 @@ def path_injection(): filename = request.args.get('filename', '') p = STATIC_DIR / filename - p.open() # $ result=BAD + p.open() # $ Alert p2 = pathlib.Path(STATIC_DIR, filename) - p2.open() # $ result=BAD + p2.open() # $ Alert diff --git a/python/ql/test/query-tests/Security/CWE-022-PathInjection/test.py b/python/ql/test/query-tests/Security/CWE-022-PathInjection/test.py index 7200cd78f454..c10c257dae53 100644 --- a/python/ql/test/query-tests/Security/CWE-022-PathInjection/test.py +++ b/python/ql/test/query-tests/Security/CWE-022-PathInjection/test.py @@ -1,6 +1,6 @@ import os.path -from flask import Flask, request +from flask import Flask, request # $ Source app = Flask(__name__) @@ -16,21 +16,21 @@ def normalize(x): @app.route("/path") def simple(): x = source() - open(x) # $result=BAD + open(x) # $ Alert @app.route("/path") def normalization(): x = source() y = normalize(x) - open(y) # $result=BAD + open(y) # $ Alert @app.route("/path") def check(): x = source() if x.startswith("subfolder/"): - open(x) # $result=BAD + open(x) # $ Alert @app.route("/path") @@ -46,4 +46,4 @@ def check_then_normalize(): x = source() if x.startswith("subfolder/"): y = normalize(x) - open(y) # $result=BAD + open(y) # $ Alert diff --git a/ruby/extractor/Cargo.toml b/ruby/extractor/Cargo.toml index 63c6d16d53ca..f4de37e85126 100644 --- a/ruby/extractor/Cargo.toml +++ b/ruby/extractor/Cargo.toml @@ -12,11 +12,11 @@ tree-sitter-embedded-template = "0.23.2" tree-sitter-ruby = "0.23.1" clap = { version = "4.5", features = ["derive"] } tracing = "0.1" -tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } -rayon = "1.10.0" -regex = "1.11.1" +tracing-subscriber = { version = "0.3.20", features = ["env-filter"] } +rayon = "1.11.0" +regex = "1.11.2" encoding = "0.2" lazy_static = "1.5.0" -serde_json = "1.0.142" +serde_json = "1.0.143" codeql-extractor = { path = "../../shared/tree-sitter-extractor" } diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index b9333de9c5dd..a62232991b81 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 5.1.0 + +### New Features + +* Initial modeling for the Ruby Grape framework in `Grape.qll` has been added to detect API endpoints, parameters, and headers within Grape API classes. + ## 5.0.4 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/5.1.0.md b/ruby/ql/lib/change-notes/released/5.1.0.md new file mode 100644 index 000000000000..4958aaac95f5 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/5.1.0.md @@ -0,0 +1,5 @@ +## 5.1.0 + +### New Features + +* Initial modeling for the Ruby Grape framework in `Grape.qll` has been added to detect API endpoints, parameters, and headers within Grape API classes. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 8cb0167caf0c..dd8d287d0103 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.0.4 +lastReleaseVersion: 5.1.0 diff --git a/ruby/ql/lib/codeql/ruby/Frameworks.qll b/ruby/ql/lib/codeql/ruby/Frameworks.qll index 9bc01874710d..e8009c91b7d1 100644 --- a/ruby/ql/lib/codeql/ruby/Frameworks.qll +++ b/ruby/ql/lib/codeql/ruby/Frameworks.qll @@ -21,6 +21,7 @@ private import codeql.ruby.frameworks.Rails private import codeql.ruby.frameworks.Railties private import codeql.ruby.frameworks.Stdlib private import codeql.ruby.frameworks.Files +private import codeql.ruby.frameworks.Grape private import codeql.ruby.frameworks.HttpClients private import codeql.ruby.frameworks.XmlParsing private import codeql.ruby.frameworks.ActionDispatch diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll index c85d2230b23d..f8e3894a8331 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll @@ -161,7 +161,9 @@ private module StepsInput implements Impl::Private::StepsInputSig { result.asCall().getAstNode() = sc.(LibraryCallable).getACallSimple() } - Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponent sc) { none() } + DataFlowCallable getSourceNodeEnclosingCallable(Input::SourceBase source) { none() } + + Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { none() } Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { none() } } diff --git a/ruby/ql/lib/codeql/ruby/frameworks/Grape.qll b/ruby/ql/lib/codeql/ruby/frameworks/Grape.qll new file mode 100644 index 000000000000..9b7ae6185cdb --- /dev/null +++ b/ruby/ql/lib/codeql/ruby/frameworks/Grape.qll @@ -0,0 +1,300 @@ +/** + * Provides modeling for the `Grape` API framework. + */ + +private import codeql.ruby.AST +private import codeql.ruby.CFG +private import codeql.ruby.Concepts +private import codeql.ruby.controlflow.CfgNodes +private import codeql.ruby.DataFlow +private import codeql.ruby.dataflow.RemoteFlowSources +private import codeql.ruby.ApiGraphs +private import codeql.ruby.typetracking.TypeTracking +private import codeql.ruby.frameworks.Rails +private import codeql.ruby.frameworks.internal.Rails +private import codeql.ruby.dataflow.internal.DataFlowDispatch +private import codeql.ruby.dataflow.FlowSteps + +/** + * Provides modeling for Grape, a REST-like API framework for Ruby. + * Grape allows you to build RESTful APIs in Ruby with minimal effort. + */ +module Grape { + /** + * A Grape API class which sits at the top of the class hierarchy. + * In other words, it does not subclass any other Grape API class in source code. + */ + class RootApi extends GrapeApiClass { + RootApi() { not this = any(GrapeApiClass parent).getAnImmediateDescendent() } + } + + /** + * A class that extends `Grape::API`. + * For example, + * + * ```rb + * class FooAPI < Grape::API + * get '/users' do + * name = params[:name] + * User.where("name = #{name}") + * end + * end + * ``` + */ + class GrapeApiClass extends DataFlow::ClassNode { + GrapeApiClass() { this = grapeApiBaseClass().getADescendentModule() } + + /** + * Gets a `GrapeEndpoint` defined in this class. + */ + GrapeEndpoint getAnEndpoint() { result.getApiClass() = this } + + /** + * Gets a `self` that possibly refers to an instance of this class. + */ + DataFlow::LocalSourceNode getSelf() { + result = this.getAnInstanceSelf() + or + // Include the module-level `self` to recover some cases where a block at the module level + // is invoked with an instance as the `self`. + result = this.getModuleLevelSelf() + } + + /** + * Gets the `self` parameter belonging to a method defined within a + * `helpers` block in this API class. + * + * These methods become available in endpoint contexts through Grape's DSL. + */ + DataFlow::SelfParameterNode getHelperSelf() { + exists(DataFlow::CallNode helpersCall | + helpersCall = this.getAModuleLevelCall("helpers") and + result.getSelfVariable().getDeclaringScope().getOuterScope+() = + helpersCall.getBlock().asExpr().getExpr() + ) + } + } + + private DataFlow::ConstRef grapeApiBaseClass() { + result = DataFlow::getConstant("Grape").getConstant("API") + } + + private API::Node grapeApiInstance() { result = any(GrapeApiClass cls).getSelf().track() } + + /** + * A Grape API endpoint (get, post, put, delete, etc.) call within a `Grape::API` class. + */ + class GrapeEndpoint extends DataFlow::CallNode { + private GrapeApiClass apiClass; + + GrapeEndpoint() { + this = + apiClass.getAModuleLevelCall(["get", "post", "put", "delete", "patch", "head", "options"]) + } + + /** + * Gets the HTTP method for this endpoint (e.g., "GET", "POST", etc.) + */ + string getHttpMethod() { result = this.getMethodName().toUpperCase() } + + /** + * Gets the API class containing this endpoint. + */ + GrapeApiClass getApiClass() { result = apiClass } + + /** + * Gets the block containing the endpoint logic. + */ + DataFlow::BlockNode getBody() { result = this.getBlock() } + + /** + * Gets the path pattern for this endpoint, if specified. + */ + string getPath() { result = this.getArgument(0).getConstantValue().getString() } + } + + /** + * A `RemoteFlowSource::Range` to represent accessing the + * Grape parameters available via the `params` method within an endpoint. + */ + class GrapeParamsSource extends Http::Server::RequestInputAccess::Range { + GrapeParamsSource() { this.asExpr().getExpr() instanceof GrapeParamsCall } + + override string getSourceType() { result = "Grape::API#params" } + + override Http::Server::RequestInputKind getKind() { + result = Http::Server::parameterInputKind() + } + } + + /** + * A call to `params` from within a Grape API endpoint or helper method. + */ + private class GrapeParamsCall extends ParamsCallImpl { + GrapeParamsCall() { + exists(API::Node n | this = n.getAMethodCall("params").asExpr().getExpr() | + // Params calls within endpoint blocks + n = grapeApiInstance() + or + // Params calls within helper methods (defined in helpers blocks) + n = any(GrapeApiClass c).getHelperSelf().track() + ) + } + } + + /** + * A call to `headers` from within a Grape API endpoint or headers block. + * Headers can also be a source of user input. + */ + class GrapeHeadersSource extends Http::Server::RequestInputAccess::Range { + GrapeHeadersSource() { + this.asExpr().getExpr() instanceof GrapeHeadersCall + or + this.asExpr().getExpr() instanceof GrapeHeadersBlockCall + } + + override string getSourceType() { result = "Grape::API#headers" } + + override Http::Server::RequestInputKind getKind() { result = Http::Server::headerInputKind() } + } + + /** + * A call to `headers` from within a Grape API endpoint. + */ + private class GrapeHeadersCall extends MethodCall { + GrapeHeadersCall() { + // Handle cases where headers is called on an instance of a Grape API class + this = grapeApiInstance().getAMethodCall("headers").asExpr().getExpr() + } + } + + /** + * A call to `request` from within a Grape API endpoint. + * The request object can contain user input. + */ + class GrapeRequestSource extends Http::Server::RequestInputAccess::Range { + GrapeRequestSource() { this.asExpr().getExpr() instanceof GrapeRequestCall } + + override string getSourceType() { result = "Grape::API#request" } + + override Http::Server::RequestInputKind getKind() { + result = Http::Server::parameterInputKind() + } + } + + /** + * A call to `route_param` from within a Grape API endpoint. + * Route parameters are extracted from the URL path and can be a source of user input. + */ + class GrapeRouteParamSource extends Http::Server::RequestInputAccess::Range { + GrapeRouteParamSource() { this.asExpr().getExpr() instanceof GrapeRouteParamCall } + + override string getSourceType() { result = "Grape::API#route_param" } + + override Http::Server::RequestInputKind getKind() { + result = Http::Server::parameterInputKind() + } + } + + /** + * A call to `request` from within a Grape API endpoint. + */ + private class GrapeRequestCall extends MethodCall { + GrapeRequestCall() { + // Handle cases where request is called on an instance of a Grape API class + this = grapeApiInstance().getAMethodCall("request").asExpr().getExpr() + } + } + + /** + * A call to `route_param` from within a Grape API endpoint. + */ + private class GrapeRouteParamCall extends MethodCall { + GrapeRouteParamCall() { + // Handle cases where route_param is called on an instance of a Grape API class + this = grapeApiInstance().getAMethodCall("route_param").asExpr().getExpr() + } + } + + /** + * A call to `headers` block within a Grape API class. + * This is different from the headers() method call - this is the DSL block for defining header requirements. + */ + private class GrapeHeadersBlockCall extends MethodCall { + GrapeHeadersBlockCall() { + this = grapeApiInstance().getAMethodCall("headers").asExpr().getExpr() and + exists(this.getBlock()) + } + } + + /** + * A call to `cookies` block within a Grape API class. + * This DSL block defines cookie requirements and those cookies are user-controlled. + */ + private class GrapeCookiesBlockCall extends MethodCall { + GrapeCookiesBlockCall() { + this = grapeApiInstance().getAMethodCall("cookies").asExpr().getExpr() and + exists(this.getBlock()) + } + } + + /** + * A call to `cookies` method from within a Grape API endpoint or cookies block. + * Similar to headers, cookies can be accessed as a method and are user-controlled input. + */ + class GrapeCookiesSource extends Http::Server::RequestInputAccess::Range { + GrapeCookiesSource() { + this.asExpr().getExpr() instanceof GrapeCookiesCall + or + this.asExpr().getExpr() instanceof GrapeCookiesBlockCall + } + + override string getSourceType() { result = "Grape::API#cookies" } + + override Http::Server::RequestInputKind getKind() { result = Http::Server::cookieInputKind() } + } + + /** + * A call to `cookies` method from within a Grape API endpoint. + */ + private class GrapeCookiesCall extends MethodCall { + GrapeCookiesCall() { + // Handle cases where cookies is called on an instance of a Grape API class + this = grapeApiInstance().getAMethodCall("cookies").asExpr().getExpr() + } + } + + /** + * A method defined within a `helpers` block in a Grape API class. + * These methods become available in endpoint contexts through Grape's DSL. + */ + private class GrapeHelperMethod extends Method { + private GrapeApiClass apiClass; + + GrapeHelperMethod() { this = apiClass.getHelperSelf().getSelfVariable().getDeclaringScope() } + + /** + * Gets the API class that contains this helper method. + */ + GrapeApiClass getApiClass() { result = apiClass } + } + + /** + * Additional call-target to resolve helper method calls defined in `helpers` blocks. + * + * This class is responsible for resolving calls to helper methods defined in + * `helpers` blocks, allowing the dataflow framework to accurately track + * the flow of information between these methods and their call sites. + */ + private class GrapeHelperMethodTarget extends AdditionalCallTarget { + override DataFlowCallable viableTarget(CfgNodes::ExprNodes::CallCfgNode call) { + // Find calls to helper methods from within Grape endpoints or other helper methods + exists(GrapeHelperMethod helperMethod, MethodCall mc | + result.asCfgScope() = helperMethod and + mc = call.getAstNode() and + mc.getMethodName() = helperMethod.getName() and + mc.getParent+() = helperMethod.getApiClass().getADeclaration() + ) + } + } +} diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index a76c7d0b90af..6dd0db034c30 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.0.4 +version: 5.1.0 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 40209ec84bde..7811ea73f864 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.4.6 + +No user-facing changes. + ## 1.4.5 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.4.6.md b/ruby/ql/src/change-notes/released/1.4.6.md new file mode 100644 index 000000000000..5146f9e1cbfa --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.4.6.md @@ -0,0 +1,3 @@ +## 1.4.6 + +No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index a74b6b08d860..3b00bbce928c 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.5 +lastReleaseVersion: 1.4.6 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index cea6e01dce68..ce46bf8c37a3 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.4.5 +version: 1.4.6 groups: - ruby - queries diff --git a/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.expected b/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.expected index 35b18b7132b0..720ee26e679e 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 | diff --git a/ruby/ql/test/library-tests/frameworks/grape/CONSISTENCY/VariablesConsistency.expected b/ruby/ql/test/library-tests/frameworks/grape/CONSISTENCY/VariablesConsistency.expected new file mode 100644 index 000000000000..edcc754b792e --- /dev/null +++ b/ruby/ql/test/library-tests/frameworks/grape/CONSISTENCY/VariablesConsistency.expected @@ -0,0 +1,4 @@ +variableIsCaptured +| app.rb:126:9:130:11 | self | CapturedVariable is not captured | +consistencyOverview +| CapturedVariable is not captured | 1 | diff --git a/ruby/ql/test/library-tests/frameworks/grape/Flow.expected b/ruby/ql/test/library-tests/frameworks/grape/Flow.expected new file mode 100644 index 000000000000..f04bd930ea97 --- /dev/null +++ b/ruby/ql/test/library-tests/frameworks/grape/Flow.expected @@ -0,0 +1,201 @@ +models +edges +| app.rb:103:13:103:18 | call to params | app.rb:103:13:103:70 | call to select | provenance | | +| app.rb:103:13:103:18 | call to params | app.rb:103:13:103:70 | call to select : [collection] [element] | provenance | | +| app.rb:103:13:103:70 | call to select | app.rb:189:21:189:31 | call to user_params | provenance | | +| app.rb:103:13:103:70 | call to select | app.rb:205:21:205:31 | call to user_params | provenance | | +| app.rb:103:13:103:70 | call to select : [collection] [element] | app.rb:189:21:189:31 | call to user_params : [collection] [element] | provenance | | +| app.rb:103:13:103:70 | call to select : [collection] [element] | app.rb:205:21:205:31 | call to user_params : [collection] [element] | provenance | | +| app.rb:107:13:107:32 | call to source | app.rb:183:18:183:43 | call to vulnerable_helper | provenance | | +| app.rb:107:13:107:32 | call to source | app.rb:183:18:183:43 | call to vulnerable_helper | provenance | | +| app.rb:111:13:111:33 | call to source | app.rb:190:25:190:37 | call to simple_helper | provenance | | +| app.rb:111:13:111:33 | call to source | app.rb:190:25:190:37 | call to simple_helper | provenance | | +| app.rb:118:17:118:43 | call to source | app.rb:212:23:212:39 | call to authenticate_user | provenance | | +| app.rb:118:17:118:43 | call to source | app.rb:212:23:212:39 | call to authenticate_user | provenance | | +| app.rb:122:17:122:47 | call to source | app.rb:216:23:216:48 | call to check_permissions | provenance | | +| app.rb:122:17:122:47 | call to source | app.rb:216:23:216:48 | call to check_permissions | provenance | | +| app.rb:128:17:128:42 | call to source | app.rb:220:29:220:80 | call to validate_email | provenance | | +| app.rb:128:17:128:42 | call to source | app.rb:220:29:220:80 | call to validate_email | provenance | | +| app.rb:134:17:134:42 | call to source | app.rb:225:28:225:39 | call to debug_helper | provenance | | +| app.rb:134:17:134:42 | call to source | app.rb:225:28:225:39 | call to debug_helper | provenance | | +| app.rb:140:17:140:37 | call to source | app.rb:230:25:230:37 | call to rescue_helper | provenance | | +| app.rb:140:17:140:37 | call to source | app.rb:230:25:230:37 | call to rescue_helper | provenance | | +| app.rb:150:17:150:35 | call to source | app.rb:235:27:235:37 | call to test_helper | provenance | | +| app.rb:150:17:150:35 | call to source | app.rb:235:27:235:37 | call to test_helper | provenance | | +| app.rb:166:9:166:15 | user_id | app.rb:173:14:173:20 | user_id | provenance | | +| app.rb:166:19:166:24 | call to params | app.rb:166:19:166:34 | ...[...] | provenance | | +| app.rb:166:19:166:34 | ...[...] | app.rb:166:9:166:15 | user_id | provenance | | +| app.rb:167:9:167:16 | route_id | app.rb:174:14:174:21 | route_id | provenance | | +| app.rb:167:20:167:40 | call to route_param | app.rb:167:9:167:16 | route_id | provenance | | +| app.rb:168:9:168:12 | auth | app.rb:175:14:175:17 | auth | provenance | | +| app.rb:168:16:168:22 | call to headers | app.rb:168:16:168:38 | ...[...] | provenance | | +| app.rb:168:16:168:38 | ...[...] | app.rb:168:9:168:12 | auth | provenance | | +| app.rb:169:9:169:15 | session | app.rb:176:14:176:20 | session | provenance | | +| app.rb:169:19:169:25 | call to cookies | app.rb:169:19:169:38 | ...[...] | provenance | | +| app.rb:169:19:169:38 | ...[...] | app.rb:169:9:169:15 | session | provenance | | +| app.rb:183:9:183:14 | result | app.rb:184:14:184:19 | result | provenance | | +| app.rb:183:9:183:14 | result | app.rb:184:14:184:19 | result | provenance | | +| app.rb:183:18:183:43 | call to vulnerable_helper | app.rb:183:9:183:14 | result | provenance | | +| app.rb:183:18:183:43 | call to vulnerable_helper | app.rb:183:9:183:14 | result | provenance | | +| app.rb:189:9:189:17 | user_data | app.rb:191:14:191:22 | user_data | provenance | | +| app.rb:189:9:189:17 | user_data : [collection] [element] | app.rb:191:14:191:22 | user_data | provenance | | +| app.rb:189:21:189:31 | call to user_params | app.rb:189:9:189:17 | user_data | provenance | | +| app.rb:189:21:189:31 | call to user_params : [collection] [element] | app.rb:189:9:189:17 | user_data : [collection] [element] | provenance | | +| app.rb:190:9:190:21 | simple_result | app.rb:192:14:192:26 | simple_result | provenance | | +| app.rb:190:9:190:21 | simple_result | app.rb:192:14:192:26 | simple_result | provenance | | +| app.rb:190:25:190:37 | call to simple_helper | app.rb:190:9:190:21 | simple_result | provenance | | +| app.rb:190:25:190:37 | call to simple_helper | app.rb:190:9:190:21 | simple_result | provenance | | +| app.rb:199:13:199:19 | user_id | app.rb:200:18:200:24 | user_id | provenance | | +| app.rb:199:23:199:28 | call to params | app.rb:199:23:199:33 | ...[...] | provenance | | +| app.rb:199:23:199:33 | ...[...] | app.rb:199:13:199:19 | user_id | provenance | | +| app.rb:205:9:205:17 | user_data | app.rb:206:14:206:22 | user_data | provenance | | +| app.rb:205:9:205:17 | user_data : [collection] [element] | app.rb:206:14:206:22 | user_data | provenance | | +| app.rb:205:21:205:31 | call to user_params | app.rb:205:9:205:17 | user_data | provenance | | +| app.rb:205:21:205:31 | call to user_params : [collection] [element] | app.rb:205:9:205:17 | user_data : [collection] [element] | provenance | | +| app.rb:212:9:212:19 | auth_result | app.rb:213:14:213:24 | auth_result | provenance | | +| app.rb:212:9:212:19 | auth_result | app.rb:213:14:213:24 | auth_result | provenance | | +| app.rb:212:23:212:39 | call to authenticate_user | app.rb:212:9:212:19 | auth_result | provenance | | +| app.rb:212:23:212:39 | call to authenticate_user | app.rb:212:9:212:19 | auth_result | provenance | | +| app.rb:216:9:216:19 | perm_result | app.rb:217:14:217:24 | perm_result | provenance | | +| app.rb:216:9:216:19 | perm_result | app.rb:217:14:217:24 | perm_result | provenance | | +| app.rb:216:23:216:48 | call to check_permissions | app.rb:216:9:216:19 | perm_result | provenance | | +| app.rb:216:23:216:48 | call to check_permissions | app.rb:216:9:216:19 | perm_result | provenance | | +| app.rb:220:9:220:25 | validation_result | app.rb:221:14:221:30 | validation_result | provenance | | +| app.rb:220:9:220:25 | validation_result | app.rb:221:14:221:30 | validation_result | provenance | | +| app.rb:220:29:220:80 | call to validate_email | app.rb:220:9:220:25 | validation_result | provenance | | +| app.rb:220:29:220:80 | call to validate_email | app.rb:220:9:220:25 | validation_result | provenance | | +| app.rb:225:13:225:24 | debug_result | app.rb:226:18:226:29 | debug_result | provenance | | +| app.rb:225:13:225:24 | debug_result | app.rb:226:18:226:29 | debug_result | provenance | | +| app.rb:225:28:225:39 | call to debug_helper | app.rb:225:13:225:24 | debug_result | provenance | | +| app.rb:225:28:225:39 | call to debug_helper | app.rb:225:13:225:24 | debug_result | provenance | | +| app.rb:230:9:230:21 | rescue_result | app.rb:231:14:231:26 | rescue_result | provenance | | +| app.rb:230:9:230:21 | rescue_result | app.rb:231:14:231:26 | rescue_result | provenance | | +| app.rb:230:25:230:37 | call to rescue_helper | app.rb:230:9:230:21 | rescue_result | provenance | | +| app.rb:230:25:230:37 | call to rescue_helper | app.rb:230:9:230:21 | rescue_result | provenance | | +| app.rb:235:13:235:23 | case_result | app.rb:236:18:236:28 | case_result | provenance | | +| app.rb:235:13:235:23 | case_result | app.rb:236:18:236:28 | case_result | provenance | | +| app.rb:235:27:235:37 | call to test_helper | app.rb:235:13:235:23 | case_result | provenance | | +| app.rb:235:27:235:37 | call to test_helper | app.rb:235:13:235:23 | case_result | provenance | | +nodes +| app.rb:103:13:103:18 | call to params | semmle.label | call to params | +| app.rb:103:13:103:70 | call to select | semmle.label | call to select | +| app.rb:103:13:103:70 | call to select : [collection] [element] | semmle.label | call to select : [collection] [element] | +| app.rb:107:13:107:32 | call to source | semmle.label | call to source | +| app.rb:107:13:107:32 | call to source | semmle.label | call to source | +| app.rb:111:13:111:33 | call to source | semmle.label | call to source | +| app.rb:111:13:111:33 | call to source | semmle.label | call to source | +| app.rb:118:17:118:43 | call to source | semmle.label | call to source | +| app.rb:118:17:118:43 | call to source | semmle.label | call to source | +| app.rb:122:17:122:47 | call to source | semmle.label | call to source | +| app.rb:122:17:122:47 | call to source | semmle.label | call to source | +| app.rb:128:17:128:42 | call to source | semmle.label | call to source | +| app.rb:128:17:128:42 | call to source | semmle.label | call to source | +| app.rb:134:17:134:42 | call to source | semmle.label | call to source | +| app.rb:134:17:134:42 | call to source | semmle.label | call to source | +| app.rb:140:17:140:37 | call to source | semmle.label | call to source | +| app.rb:140:17:140:37 | call to source | semmle.label | call to source | +| app.rb:150:17:150:35 | call to source | semmle.label | call to source | +| app.rb:150:17:150:35 | call to source | semmle.label | call to source | +| app.rb:166:9:166:15 | user_id | semmle.label | user_id | +| app.rb:166:19:166:24 | call to params | semmle.label | call to params | +| app.rb:166:19:166:34 | ...[...] | semmle.label | ...[...] | +| app.rb:167:9:167:16 | route_id | semmle.label | route_id | +| app.rb:167:20:167:40 | call to route_param | semmle.label | call to route_param | +| app.rb:168:9:168:12 | auth | semmle.label | auth | +| app.rb:168:16:168:22 | call to headers | semmle.label | call to headers | +| app.rb:168:16:168:38 | ...[...] | semmle.label | ...[...] | +| app.rb:169:9:169:15 | session | semmle.label | session | +| app.rb:169:19:169:25 | call to cookies | semmle.label | call to cookies | +| app.rb:169:19:169:38 | ...[...] | semmle.label | ...[...] | +| app.rb:173:14:173:20 | user_id | semmle.label | user_id | +| app.rb:174:14:174:21 | route_id | semmle.label | route_id | +| app.rb:175:14:175:17 | auth | semmle.label | auth | +| app.rb:176:14:176:20 | session | semmle.label | session | +| app.rb:183:9:183:14 | result | semmle.label | result | +| app.rb:183:9:183:14 | result | semmle.label | result | +| app.rb:183:18:183:43 | call to vulnerable_helper | semmle.label | call to vulnerable_helper | +| app.rb:183:18:183:43 | call to vulnerable_helper | semmle.label | call to vulnerable_helper | +| app.rb:184:14:184:19 | result | semmle.label | result | +| app.rb:184:14:184:19 | result | semmle.label | result | +| app.rb:189:9:189:17 | user_data | semmle.label | user_data | +| app.rb:189:9:189:17 | user_data : [collection] [element] | semmle.label | user_data : [collection] [element] | +| app.rb:189:21:189:31 | call to user_params | semmle.label | call to user_params | +| app.rb:189:21:189:31 | call to user_params : [collection] [element] | semmle.label | call to user_params : [collection] [element] | +| app.rb:190:9:190:21 | simple_result | semmle.label | simple_result | +| app.rb:190:9:190:21 | simple_result | semmle.label | simple_result | +| app.rb:190:25:190:37 | call to simple_helper | semmle.label | call to simple_helper | +| app.rb:190:25:190:37 | call to simple_helper | semmle.label | call to simple_helper | +| app.rb:191:14:191:22 | user_data | semmle.label | user_data | +| app.rb:192:14:192:26 | simple_result | semmle.label | simple_result | +| app.rb:192:14:192:26 | simple_result | semmle.label | simple_result | +| app.rb:199:13:199:19 | user_id | semmle.label | user_id | +| app.rb:199:23:199:28 | call to params | semmle.label | call to params | +| app.rb:199:23:199:33 | ...[...] | semmle.label | ...[...] | +| app.rb:200:18:200:24 | user_id | semmle.label | user_id | +| app.rb:205:9:205:17 | user_data | semmle.label | user_data | +| app.rb:205:9:205:17 | user_data : [collection] [element] | semmle.label | user_data : [collection] [element] | +| app.rb:205:21:205:31 | call to user_params | semmle.label | call to user_params | +| app.rb:205:21:205:31 | call to user_params : [collection] [element] | semmle.label | call to user_params : [collection] [element] | +| app.rb:206:14:206:22 | user_data | semmle.label | user_data | +| app.rb:212:9:212:19 | auth_result | semmle.label | auth_result | +| app.rb:212:9:212:19 | auth_result | semmle.label | auth_result | +| app.rb:212:23:212:39 | call to authenticate_user | semmle.label | call to authenticate_user | +| app.rb:212:23:212:39 | call to authenticate_user | semmle.label | call to authenticate_user | +| app.rb:213:14:213:24 | auth_result | semmle.label | auth_result | +| app.rb:213:14:213:24 | auth_result | semmle.label | auth_result | +| app.rb:216:9:216:19 | perm_result | semmle.label | perm_result | +| app.rb:216:9:216:19 | perm_result | semmle.label | perm_result | +| app.rb:216:23:216:48 | call to check_permissions | semmle.label | call to check_permissions | +| app.rb:216:23:216:48 | call to check_permissions | semmle.label | call to check_permissions | +| app.rb:217:14:217:24 | perm_result | semmle.label | perm_result | +| app.rb:217:14:217:24 | perm_result | semmle.label | perm_result | +| app.rb:220:9:220:25 | validation_result | semmle.label | validation_result | +| app.rb:220:9:220:25 | validation_result | semmle.label | validation_result | +| app.rb:220:29:220:80 | call to validate_email | semmle.label | call to validate_email | +| app.rb:220:29:220:80 | call to validate_email | semmle.label | call to validate_email | +| app.rb:221:14:221:30 | validation_result | semmle.label | validation_result | +| app.rb:221:14:221:30 | validation_result | semmle.label | validation_result | +| app.rb:225:13:225:24 | debug_result | semmle.label | debug_result | +| app.rb:225:13:225:24 | debug_result | semmle.label | debug_result | +| app.rb:225:28:225:39 | call to debug_helper | semmle.label | call to debug_helper | +| app.rb:225:28:225:39 | call to debug_helper | semmle.label | call to debug_helper | +| app.rb:226:18:226:29 | debug_result | semmle.label | debug_result | +| app.rb:226:18:226:29 | debug_result | semmle.label | debug_result | +| app.rb:230:9:230:21 | rescue_result | semmle.label | rescue_result | +| app.rb:230:9:230:21 | rescue_result | semmle.label | rescue_result | +| app.rb:230:25:230:37 | call to rescue_helper | semmle.label | call to rescue_helper | +| app.rb:230:25:230:37 | call to rescue_helper | semmle.label | call to rescue_helper | +| app.rb:231:14:231:26 | rescue_result | semmle.label | rescue_result | +| app.rb:231:14:231:26 | rescue_result | semmle.label | rescue_result | +| app.rb:235:13:235:23 | case_result | semmle.label | case_result | +| app.rb:235:13:235:23 | case_result | semmle.label | case_result | +| app.rb:235:27:235:37 | call to test_helper | semmle.label | call to test_helper | +| app.rb:235:27:235:37 | call to test_helper | semmle.label | call to test_helper | +| app.rb:236:18:236:28 | case_result | semmle.label | case_result | +| app.rb:236:18:236:28 | case_result | semmle.label | case_result | +subpaths +testFailures +#select +| app.rb:173:14:173:20 | user_id | app.rb:166:19:166:24 | call to params | app.rb:173:14:173:20 | user_id | $@ | app.rb:166:19:166:24 | call to params | call to params | +| app.rb:174:14:174:21 | route_id | app.rb:167:20:167:40 | call to route_param | app.rb:174:14:174:21 | route_id | $@ | app.rb:167:20:167:40 | call to route_param | call to route_param | +| app.rb:175:14:175:17 | auth | app.rb:168:16:168:22 | call to headers | app.rb:175:14:175:17 | auth | $@ | app.rb:168:16:168:22 | call to headers | call to headers | +| app.rb:176:14:176:20 | session | app.rb:169:19:169:25 | call to cookies | app.rb:176:14:176:20 | session | $@ | app.rb:169:19:169:25 | call to cookies | call to cookies | +| app.rb:184:14:184:19 | result | app.rb:107:13:107:32 | call to source | app.rb:184:14:184:19 | result | $@ | app.rb:107:13:107:32 | call to source | call to source | +| app.rb:184:14:184:19 | result | app.rb:107:13:107:32 | call to source | app.rb:184:14:184:19 | result | $@ | app.rb:107:13:107:32 | call to source | call to source | +| app.rb:191:14:191:22 | user_data | app.rb:103:13:103:18 | call to params | app.rb:191:14:191:22 | user_data | $@ | app.rb:103:13:103:18 | call to params | call to params | +| app.rb:192:14:192:26 | simple_result | app.rb:111:13:111:33 | call to source | app.rb:192:14:192:26 | simple_result | $@ | app.rb:111:13:111:33 | call to source | call to source | +| app.rb:192:14:192:26 | simple_result | app.rb:111:13:111:33 | call to source | app.rb:192:14:192:26 | simple_result | $@ | app.rb:111:13:111:33 | call to source | call to source | +| app.rb:200:18:200:24 | user_id | app.rb:199:23:199:28 | call to params | app.rb:200:18:200:24 | user_id | $@ | app.rb:199:23:199:28 | call to params | call to params | +| app.rb:206:14:206:22 | user_data | app.rb:103:13:103:18 | call to params | app.rb:206:14:206:22 | user_data | $@ | app.rb:103:13:103:18 | call to params | call to params | +| app.rb:213:14:213:24 | auth_result | app.rb:118:17:118:43 | call to source | app.rb:213:14:213:24 | auth_result | $@ | app.rb:118:17:118:43 | call to source | call to source | +| app.rb:213:14:213:24 | auth_result | app.rb:118:17:118:43 | call to source | app.rb:213:14:213:24 | auth_result | $@ | app.rb:118:17:118:43 | call to source | call to source | +| app.rb:217:14:217:24 | perm_result | app.rb:122:17:122:47 | call to source | app.rb:217:14:217:24 | perm_result | $@ | app.rb:122:17:122:47 | call to source | call to source | +| app.rb:217:14:217:24 | perm_result | app.rb:122:17:122:47 | call to source | app.rb:217:14:217:24 | perm_result | $@ | app.rb:122:17:122:47 | call to source | call to source | +| app.rb:221:14:221:30 | validation_result | app.rb:128:17:128:42 | call to source | app.rb:221:14:221:30 | validation_result | $@ | app.rb:128:17:128:42 | call to source | call to source | +| app.rb:221:14:221:30 | validation_result | app.rb:128:17:128:42 | call to source | app.rb:221:14:221:30 | validation_result | $@ | app.rb:128:17:128:42 | call to source | call to source | +| app.rb:226:18:226:29 | debug_result | app.rb:134:17:134:42 | call to source | app.rb:226:18:226:29 | debug_result | $@ | app.rb:134:17:134:42 | call to source | call to source | +| app.rb:226:18:226:29 | debug_result | app.rb:134:17:134:42 | call to source | app.rb:226:18:226:29 | debug_result | $@ | app.rb:134:17:134:42 | call to source | call to source | +| app.rb:231:14:231:26 | rescue_result | app.rb:140:17:140:37 | call to source | app.rb:231:14:231:26 | rescue_result | $@ | app.rb:140:17:140:37 | call to source | call to source | +| app.rb:231:14:231:26 | rescue_result | app.rb:140:17:140:37 | call to source | app.rb:231:14:231:26 | rescue_result | $@ | app.rb:140:17:140:37 | call to source | call to source | +| app.rb:236:18:236:28 | case_result | app.rb:150:17:150:35 | call to source | app.rb:236:18:236:28 | case_result | $@ | app.rb:150:17:150:35 | call to source | call to source | +| app.rb:236:18:236:28 | case_result | app.rb:150:17:150:35 | call to source | app.rb:236:18:236:28 | case_result | $@ | app.rb:150:17:150:35 | call to source | call to source | diff --git a/ruby/ql/test/library-tests/frameworks/grape/Flow.ql b/ruby/ql/test/library-tests/frameworks/grape/Flow.ql new file mode 100644 index 000000000000..baa3fa4307fb --- /dev/null +++ b/ruby/ql/test/library-tests/frameworks/grape/Flow.ql @@ -0,0 +1,25 @@ +/** + * @kind path-problem + */ + +import ruby +import utils.test.InlineFlowTest +import PathGraph +import codeql.ruby.frameworks.Grape +import codeql.ruby.Concepts + +module GrapeConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source instanceof Http::Server::RequestInputAccess::Range + or + DefaultFlowConfig::isSource(source) + } + + predicate isSink(DataFlow::Node sink) { DefaultFlowConfig::isSink(sink) } +} + +import FlowTest + +from PathNode source, PathNode sink +where flowPath(source, sink) +select sink, source, sink, "$@", source, source.toString() diff --git a/ruby/ql/test/library-tests/frameworks/grape/Grape.expected b/ruby/ql/test/library-tests/frameworks/grape/Grape.expected new file mode 100644 index 000000000000..7088eeb9018a --- /dev/null +++ b/ruby/ql/test/library-tests/frameworks/grape/Grape.expected @@ -0,0 +1,58 @@ +grapeApiClasses +| app.rb:1:1:90:3 | MyAPI | +| app.rb:92:1:96:3 | AdminAPI | +| app.rb:98:1:239:3 | UserAPI | +grapeEndpoints +| app.rb:1:1:90:3 | MyAPI | app.rb:7:3:11:5 | call to get | GET | /hello/:name | +| app.rb:1:1:90:3 | MyAPI | app.rb:17:3:20:5 | call to post | POST | /messages | +| app.rb:1:1:90:3 | MyAPI | app.rb:23:3:27:5 | call to put | PUT | /update/:id | +| app.rb:1:1:90:3 | MyAPI | app.rb:30:3:32:5 | call to delete | DELETE | /items/:id | +| app.rb:1:1:90:3 | MyAPI | app.rb:35:3:37:5 | call to patch | PATCH | /items/:id | +| app.rb:1:1:90:3 | MyAPI | app.rb:40:3:42:5 | call to head | HEAD | /status | +| app.rb:1:1:90:3 | MyAPI | app.rb:45:3:47:5 | call to options | OPTIONS | /info | +| app.rb:1:1:90:3 | MyAPI | app.rb:50:3:54:5 | call to get | GET | /users/:user_id/posts/:post_id | +| app.rb:1:1:90:3 | MyAPI | app.rb:78:3:82:5 | call to get | GET | /cookie_test | +| app.rb:1:1:90:3 | MyAPI | app.rb:85:3:89:5 | call to get | GET | /header_test | +| app.rb:92:1:96:3 | AdminAPI | app.rb:93:3:95:5 | call to get | GET | /admin | +| app.rb:98:1:239:3 | UserAPI | app.rb:164:5:178:7 | call to get | GET | /comprehensive_test/:user_id | +| app.rb:98:1:239:3 | UserAPI | app.rb:180:5:185:7 | call to get | GET | /helper_test/:user_id | +| app.rb:98:1:239:3 | UserAPI | app.rb:187:5:193:7 | call to post | POST | /users | +| app.rb:98:1:239:3 | UserAPI | app.rb:204:5:207:7 | call to post | POST | /users | +| app.rb:98:1:239:3 | UserAPI | app.rb:210:5:238:7 | call to get | GET | /nested_test/:token | +grapeParams +| app.rb:8:12:8:17 | call to params | +| app.rb:14:3:16:5 | call to params | +| app.rb:18:11:18:16 | call to params | +| app.rb:24:10:24:15 | call to params | +| app.rb:31:5:31:10 | call to params | +| app.rb:36:5:36:10 | call to params | +| app.rb:60:12:60:17 | call to params | +| app.rb:94:5:94:10 | call to params | +| app.rb:103:13:103:18 | call to params | +| app.rb:117:25:117:30 | call to params | +| app.rb:166:19:166:24 | call to params | +| app.rb:182:19:182:24 | call to params | +| app.rb:199:23:199:28 | call to params | +grapeHeaders +| app.rb:9:18:9:24 | call to headers | +| app.rb:46:5:46:11 | call to headers | +| app.rb:66:3:69:5 | call to headers | +| app.rb:86:12:86:18 | call to headers | +| app.rb:87:14:87:20 | call to headers | +| app.rb:156:5:158:7 | call to headers | +| app.rb:168:16:168:22 | call to headers | +grapeRequest +| app.rb:25:12:25:18 | call to request | +| app.rb:170:21:170:27 | call to request | +grapeRouteParam +| app.rb:51:15:51:35 | call to route_param | +| app.rb:52:15:52:36 | call to route_param | +| app.rb:57:3:63:5 | call to route_param | +| app.rb:167:20:167:40 | call to route_param | +| app.rb:196:5:202:7 | call to route_param | +grapeCookies +| app.rb:72:3:75:5 | call to cookies | +| app.rb:79:15:79:21 | call to cookies | +| app.rb:80:16:80:22 | call to cookies | +| app.rb:160:5:162:7 | call to cookies | +| app.rb:169:19:169:25 | call to cookies | diff --git a/ruby/ql/test/library-tests/frameworks/grape/Grape.ql b/ruby/ql/test/library-tests/frameworks/grape/Grape.ql new file mode 100644 index 000000000000..63cd15a547e1 --- /dev/null +++ b/ruby/ql/test/library-tests/frameworks/grape/Grape.ql @@ -0,0 +1,24 @@ +import ruby +import codeql.ruby.frameworks.Grape +import codeql.ruby.Concepts +import codeql.ruby.AST + +query predicate grapeApiClasses(Grape::GrapeApiClass api) { any() } + +query predicate grapeEndpoints( + Grape::GrapeApiClass api, Grape::GrapeEndpoint endpoint, string method, string path +) { + endpoint = api.getAnEndpoint() and + method = endpoint.getHttpMethod() and + path = endpoint.getPath() +} + +query predicate grapeParams(Grape::GrapeParamsSource params) { any() } + +query predicate grapeHeaders(Grape::GrapeHeadersSource headers) { any() } + +query predicate grapeRequest(Grape::GrapeRequestSource request) { any() } + +query predicate grapeRouteParam(Grape::GrapeRouteParamSource routeParam) { any() } + +query predicate grapeCookies(Grape::GrapeCookiesSource cookies) { any() } diff --git a/ruby/ql/test/library-tests/frameworks/grape/app.rb b/ruby/ql/test/library-tests/frameworks/grape/app.rb new file mode 100644 index 000000000000..1b1fd15d5d8c --- /dev/null +++ b/ruby/ql/test/library-tests/frameworks/grape/app.rb @@ -0,0 +1,239 @@ +class MyAPI < Grape::API + version 'v1', using: :header, vendor: 'myapi' + format :json + prefix :api + + desc 'Simple get endpoint' + get '/hello/:name' do + name = params[:name] + user_agent = headers['User-Agent'] + "Hello #{name}!" + end + + desc 'Post endpoint with params' + params do + requires :message, type: String + end + post '/messages' do + msg = params[:message] + { status: 'received', message: msg } + end + + desc 'Put endpoint accessing request' + put '/update/:id' do + id = params[:id] + body = request.body.read + { id: id, body: body } + end + + desc 'Delete endpoint' + delete '/items/:id' do + params[:id] + end + + desc 'Patch endpoint' + patch '/items/:id' do + params[:id] + end + + desc 'Head endpoint' + head '/status' do + # Just return status + end + + desc 'Options endpoint' + options '/info' do + headers['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS' + end + + desc 'Route param endpoint' + get '/users/:user_id/posts/:post_id' do + user_id = route_param(:user_id) + post_id = route_param('post_id') + { user_id: user_id, post_id: post_id } + end + + desc 'Route param block pattern' + route_param :id do + get do + # params[:id] is user input from the path parameter + id = params[:id] + { id: id } + end + end + + # Headers block for defining expected headers + headers do + requires :Authorization, type: String + optional 'X-Custom-Header', type: String + end + + # Cookies block for defining expected cookies + cookies do + requires :session_id, type: String + optional :tracking_id, type: String + end + + desc 'Endpoint that uses cookies method' + get '/cookie_test' do + session = cookies[:session_id] + tracking = cookies['tracking_id'] + { session: session, tracking: tracking } + end + + desc 'Endpoint that uses headers method' + get '/header_test' do + auth = headers[:Authorization] + custom = headers['X-Custom-Header'] + { auth: auth, custom: custom } + end +end + +class AdminAPI < Grape::API + get '/admin' do + params[:token] + end +end + +class UserAPI < Grape::API + VALID_PARAMS = %w(name email password password_confirmation) + + helpers do + def user_params + params.select{|key,value| VALID_PARAMS.include?(key.to_s)} # Real helper implementation + end + + def vulnerable_helper(user_id) + source "paramHelper" # Test parameter passing to helper + end + + def simple_helper + source "simpleHelper" # Test simple helper return + end + + # Nested helper scenarios that require getParent+() + module AuthHelpers + def authenticate_user + token = params[:token] + source "nestedModuleHelper" # Test nested module helper + end + + def check_permissions(resource) + source "nestedPermissionHelper" # Test nested module helper with params + end + end + + class ValidationHelpers + def self.validate_email(email) + source "nestedClassHelper" # Test nested class helper + end + end + + if Rails.env.development? + def debug_helper + source "conditionalHelper" # Test helper inside conditional block + end + end + + begin + def rescue_helper + source "rescueHelper" # Test helper inside begin block + end + rescue + # error handling + end + + # Helper inside a case statement + case ENV['RACK_ENV'] + when 'test' + def test_helper + source "caseHelper" # Test helper inside case block + end + end + end + + # Headers and cookies blocks for DSL testing + headers do + requires :Authorization, type: String + end + + cookies do + requires :session_id, type: String + end + + get '/comprehensive_test/:user_id' do + # Test all Grape input sources + user_id = params[:user_id] # params taint source + route_id = route_param(:user_id) # route_param taint source + auth = headers[:Authorization] # headers taint source + session = cookies[:session_id] # cookies taint source + body_data = request.body.read # request taint source + + # Test sinks for all sources + sink user_id # $ hasTaintFlow + sink route_id # $ hasTaintFlow + sink auth # $ hasTaintFlow + sink session # $ hasTaintFlow + # Note: request.body.read may not be detected by this flow test config + end + + get '/helper_test/:user_id' do + # Test helper method parameter passing dataflow + user_id = params[:user_id] + result = vulnerable_helper(user_id) + sink result # $ hasValueFlow=paramHelper + end + + post '/users' do + # Test helper method return dataflow + user_data = user_params + simple_result = simple_helper + sink user_data # $ hasTaintFlow + sink simple_result # $ hasValueFlow=simpleHelper + end + + # Test route_param block pattern + route_param :id do + get do + # params[:id] should be user input from the path + user_id = params[:id] + sink user_id # $ hasTaintFlow + end + end + + post '/users' do + user_data = user_params + sink user_data # $ hasTaintFlow + end + + # Test nested helper methods + get '/nested_test/:token' do + # Test nested module helper + auth_result = authenticate_user + sink auth_result # $ hasValueFlow=nestedModuleHelper + + # Test nested module helper with parameters + perm_result = check_permissions("admin") + sink perm_result # $ hasValueFlow=nestedPermissionHelper + + # Test nested class helper + validation_result = ValidationHelpers.validate_email("test@example.com") + sink validation_result # $ hasValueFlow=nestedClassHelper + + # Test conditional helper (if it exists) + if respond_to?(:debug_helper) + debug_result = debug_helper + sink debug_result # $ hasValueFlow=conditionalHelper + end + + # Test rescue helper + rescue_result = rescue_helper + sink rescue_result # $ hasValueFlow=rescueHelper + + # Test case helper (if it exists) + if respond_to?(:test_helper) + case_result = test_helper + sink case_result # $ hasValueFlow=caseHelper + end + end +end diff --git a/rust/ast-generator/Cargo.toml b/rust/ast-generator/Cargo.toml index 1c079952f71f..a5270923722c 100644 --- a/rust/ast-generator/Cargo.toml +++ b/rust/ast-generator/Cargo.toml @@ -7,10 +7,10 @@ license = "MIT" # When updating these dependencies, run `rust/update_cargo_deps.sh` [dependencies] ungrammar = "1.16.1" -proc-macro2 = "1.0.97" +proc-macro2 = "1.0.101" quote = "1.0.40" either = "1.15.0" -stdx = {package = "ra_ap_stdx", version = "0.0.300"} +stdx = {package = "ra_ap_stdx", version = "0.0.301"} itertools = "0.14.0" mustache = "0.9.0" serde = { version = "1.0.219", features = ["derive"] } diff --git a/rust/extractor/Cargo.toml b/rust/extractor/Cargo.toml index ed9915b2877d..0f87bc22f9e1 100644 --- a/rust/extractor/Cargo.toml +++ b/rust/extractor/Cargo.toml @@ -7,24 +7,24 @@ license = "MIT" # When updating these dependencies, run `rust/update_cargo_deps.sh` [dependencies] anyhow = "1.0.99" -clap = { version = "4.5.44", features = ["derive"] } +clap = { version = "4.5.47", features = ["derive"] } figment = { version = "0.10.19", features = ["env", "yaml"] } num-traits = "0.2.19" -ra_ap_base_db = "0.0.300" -ra_ap_hir = "0.0.300" -ra_ap_hir_def = "0.0.300" -ra_ap_ide_db = "0.0.300" -ra_ap_hir_ty = "0.0.300" -ra_ap_hir_expand = "0.0.300" -ra_ap_load-cargo = "0.0.300" -ra_ap_paths = "0.0.300" -ra_ap_project_model = "0.0.300" -ra_ap_syntax = "0.0.300" -ra_ap_vfs = "0.0.300" -ra_ap_parser = "0.0.300" -ra_ap_span = "0.0.300" -ra_ap_cfg = "0.0.300" -ra_ap_intern = "0.0.300" +ra_ap_base_db = "0.0.301" +ra_ap_hir = "0.0.301" +ra_ap_hir_def = "0.0.301" +ra_ap_ide_db = "0.0.301" +ra_ap_hir_ty = "0.0.301" +ra_ap_hir_expand = "0.0.301" +ra_ap_load-cargo = "0.0.301" +ra_ap_paths = "0.0.301" +ra_ap_project_model = "0.0.301" +ra_ap_syntax = "0.0.301" +ra_ap_vfs = "0.0.301" +ra_ap_parser = "0.0.301" +ra_ap_span = "0.0.301" +ra_ap_cfg = "0.0.301" +ra_ap_intern = "0.0.301" serde = "1.0.219" serde_with = "3.14.0" triomphe = "0.1.14" @@ -33,12 +33,12 @@ codeql-extractor = { path = "../../shared/tree-sitter-extractor" } rust-extractor-macros = { path = "macros" } itertools = "0.14.0" glob = "0.3.3" -chrono = { version = "0.4.41", features = ["serde"] } -serde_json = "1.0.142" +chrono = { version = "0.4.42", features = ["serde"] } +serde_json = "1.0.143" dunce = "1.0.5" toml = "0.9.5" tracing = "0.1.41" tracing-flame = "0.2.0" -tracing-subscriber = "0.3.19" +tracing-subscriber = "0.3.20" chalk-ir = "0.104.0" mustache = "0.9.0" diff --git a/rust/extractor/macros/Cargo.toml b/rust/extractor/macros/Cargo.toml index e666bf755105..013ebd986b41 100644 --- a/rust/extractor/macros/Cargo.toml +++ b/rust/extractor/macros/Cargo.toml @@ -10,4 +10,4 @@ proc-macro = true # When updating these dependencies, run `rust/update_cargo_deps.sh` [dependencies] quote = "1.0.40" -syn = { version = "2.0.104", features = ["full"] } +syn = { version = "2.0.106", features = ["full"] } diff --git a/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected b/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected index b601905e6a30..1b8e1015a1ff 100644 --- a/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected @@ -14,6 +14,7 @@ ql/rust/ql/src/queries/security/CWE-089/SqlInjection.ql ql/rust/ql/src/queries/security/CWE-311/CleartextTransmission.ql ql/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql ql/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql +ql/rust/ql/src/queries/security/CWE-319/UseOfHttp.ql ql/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.ql ql/rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashing.ql ql/rust/ql/src/queries/security/CWE-770/UncontrolledAllocationSize.ql diff --git a/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected b/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected index 074cb2ec8888..a2d2e2b820c5 100644 --- a/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected @@ -15,6 +15,7 @@ ql/rust/ql/src/queries/security/CWE-117/LogInjection.ql ql/rust/ql/src/queries/security/CWE-311/CleartextTransmission.ql ql/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql ql/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql +ql/rust/ql/src/queries/security/CWE-319/UseOfHttp.ql ql/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.ql ql/rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashing.ql ql/rust/ql/src/queries/security/CWE-696/BadCtorInitialization.ql diff --git a/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected b/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected index 38846e281eb8..9000990ad841 100644 --- a/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected @@ -15,6 +15,7 @@ ql/rust/ql/src/queries/security/CWE-117/LogInjection.ql ql/rust/ql/src/queries/security/CWE-311/CleartextTransmission.ql ql/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql ql/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql +ql/rust/ql/src/queries/security/CWE-319/UseOfHttp.ql ql/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.ql ql/rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashing.ql ql/rust/ql/src/queries/security/CWE-770/UncontrolledAllocationSize.ql diff --git a/rust/ql/lib/CHANGELOG.md b/rust/ql/lib/CHANGELOG.md index 809479e5fec4..ec04cd624a76 100644 --- a/rust/ql/lib/CHANGELOG.md +++ b/rust/ql/lib/CHANGELOG.md @@ -1,3 +1,12 @@ +## 0.1.17 + +### New Features + +* The models-as-data format for sources now supports access paths of the form + `Argument[i].Parameter[j]`. This denotes that the source passes tainted data to + the `j`th parameter of its `i`th argument (which must be a function or a + closure). + ## 0.1.16 ### Minor Analysis Improvements diff --git a/rust/ql/lib/change-notes/released/0.1.17.md b/rust/ql/lib/change-notes/released/0.1.17.md new file mode 100644 index 000000000000..a2707c04150e --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.1.17.md @@ -0,0 +1,8 @@ +## 0.1.17 + +### New Features + +* The models-as-data format for sources now supports access paths of the form + `Argument[i].Parameter[j]`. This denotes that the source passes tainted data to + the `j`th parameter of its `i`th argument (which must be a function or a + closure). diff --git a/rust/ql/lib/codeql-pack.release.yml b/rust/ql/lib/codeql-pack.release.yml index a01dca921616..eddeebba7bfe 100644 --- a/rust/ql/lib/codeql-pack.release.yml +++ b/rust/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.16 +lastReleaseVersion: 0.1.17 diff --git a/rust/ql/lib/codeql/rust/controlflow/CfgNodes.qll b/rust/ql/lib/codeql/rust/controlflow/CfgNodes.qll index 1aed1cfa0265..96ae6f8fdbce 100644 --- a/rust/ql/lib/codeql/rust/controlflow/CfgNodes.qll +++ b/rust/ql/lib/codeql/rust/controlflow/CfgNodes.qll @@ -16,6 +16,36 @@ class ExitCfgNode = CfgImpl::ExitNode; class AnnotatedExitCfgNode = CfgImpl::AnnotatedExitNode; +/** A variable access. */ +final class VariableAccessCfgNode extends PathExprBaseCfgNode { + private VariableAccess a; + + VariableAccessCfgNode() { a = this.getAstNode() } + + /** Gets the underlying `VariableAccess`. */ + VariableAccess getAccess() { result = a } +} + +/** A variable write. */ +final class VariableWriteAccessCfgNode extends VariableAccessCfgNode { + private VariableWriteAccess a; + + VariableWriteAccessCfgNode() { a = this.getAstNode() } + + /** Gets the underlying `VariableWriteAccess`. */ + VariableWriteAccess getAccess() { result = a } +} + +/** A variable read. */ +final class VariableReadAccessCfgNode extends VariableAccessCfgNode { + private VariableReadAccess a; + + VariableReadAccessCfgNode() { a = this.getAstNode() } + + /** Gets the underlying `VariableReadAccess`. */ + VariableReadAccess getAccess() { result = a } +} + /** * An assignment expression, for example * @@ -24,12 +54,42 @@ class AnnotatedExitCfgNode = CfgImpl::AnnotatedExitNode; * ``` */ final class AssignmentExprCfgNode extends BinaryExprCfgNode { - AssignmentExpr a; + AssignmentExprChildMapping a; AssignmentExprCfgNode() { a = this.getBinaryExpr() } /** Gets the underlying `AssignmentExpr`. */ AssignmentExpr getAssignmentExpr() { result = a } + + /** + * Gets a write access that occurs in the left-hand side of this assignment expression. + */ + VariableWriteAccessCfgNode getAWriteAccess() { + a = result.getAccess().getAssignmentExpr() and + any(ChildMapping mapping).hasCfgChild(a, result.getAccess(), this, result) + } +} + +/** + * A compound assignment expression, for example: + * ```rust + * x += y; + * ``` + * + * Note that compound assignment expressions are syntatic sugar for + * trait invocations, i.e., the above actually means + * + * ```rust + * (&mut x).add_assign(y); + * ``` + */ +final class CompoundAssignmentExprCfgNode extends BinaryExprCfgNode { + CompoundAssignmentExpr a; + + CompoundAssignmentExprCfgNode() { a = this.getBinaryExpr() } + + /** Gets the underlying `CompoundAssignmentExpr`. */ + CompoundAssignmentExpr getCompoundAssignmentExpr() { result = a } } /** diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll b/rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll index bb29047cb92a..eb4d665436e2 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll @@ -81,6 +81,12 @@ class FormatArgsExprChildMapping extends ParentAstNode, CfgImpl::ExprTrees::Form override predicate relevantChild(AstNode child) { child = this.getChildNode(_) } } +class AssignmentExprChildMapping extends ParentAstNode, AssignmentExpr { + override predicate relevantChild(AstNode child) { + child.(VariableWriteAccess).getAssignmentExpr() = this + } +} + private class ChildMappingImpl extends ChildMapping { /** Gets a CFG node for `child`, where `child` is a relevant child node of `parent`. */ private CfgNode getRelevantChildCfgNode(AstNode parent, AstNode child) { diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll b/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll index ddc4dae9b958..f87daaaf51a3 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll @@ -77,7 +77,7 @@ class CallableScopeTree extends StandardTree, PreOrderTree, PostOrderTree, Scope override AstNode getChildNode(int i) { i = 0 and - result = this.getParamList().getSelfParam() + result = this.getSelfParam() or result = this.getParam(i - 1) or diff --git a/rust/ql/lib/codeql/rust/dataflow/Ssa.qll b/rust/ql/lib/codeql/rust/dataflow/Ssa.qll index d2b97d7c2e7f..badbef9e4207 100644 --- a/rust/ql/lib/codeql/rust/dataflow/Ssa.qll +++ b/rust/ql/lib/codeql/rust/dataflow/Ssa.qll @@ -171,9 +171,20 @@ module Ssa { private CfgNode write; WriteDefinition() { - exists(BasicBlock bb, int i, Variable v | + exists(BasicBlock bb, int i, Variable v, CfgNode n | this.definesAt(v, bb, i) and - SsaImpl::variableWriteActual(bb, i, v, write) + SsaImpl::variableWriteActual(bb, i, v, n) + | + write.(VariableAccessCfgNode).getAccess().getVariable() = v and + ( + write = n.(AssignmentExprCfgNode).getAWriteAccess() + or + write = n.(CompoundAssignmentExprCfgNode).getLhs() + ) + or + not n instanceof AssignmentExprCfgNode and + not n instanceof CompoundAssignmentExprCfgNode and + write = n ) } diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index eca3a473c06f..0313e09da5e6 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -263,7 +263,7 @@ module LocalFlow { or // An edge from a pattern/expression to its corresponding SSA definition. nodeFrom.(AstCfgFlowNode).getCfgNode() = - nodeTo.(SsaNode).asDefinition().(Ssa::WriteDefinition).getControlFlowNode() + nodeTo.(SsaNode).asDefinition().(Ssa::WriteDefinition).getWriteAccess() or nodeFrom.(SourceParameterNode).getParameter().(ParamCfgNode).getPat() = nodeTo.asPat() or @@ -508,7 +508,8 @@ module RustDataFlow implements InputSig { */ predicate jumpStep(Node node1, Node node2) { FlowSummaryImpl::Private::Steps::summaryJumpStep(node1.(FlowSummaryNode).getSummaryNode(), - node2.(FlowSummaryNode).getSummaryNode()) + node2.(FlowSummaryNode).getSummaryNode()) or + FlowSummaryImpl::Private::Steps::sourceJumpStep(node1.(FlowSummaryNode).getSummaryNode(), node2) } pragma[nomagic] diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll index 997f27e51e18..2763908ae02e 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll @@ -6,7 +6,10 @@ private import rust private import codeql.dataflow.internal.FlowSummaryImpl private import codeql.dataflow.internal.AccessPathSyntax as AccessPath private import codeql.rust.dataflow.internal.DataFlowImpl +private import codeql.rust.internal.PathResolution private import codeql.rust.dataflow.FlowSummary +private import codeql.rust.dataflow.Ssa +private import codeql.rust.controlflow.CfgNodes private import Content module Input implements InputSig { @@ -133,16 +136,44 @@ private module StepsInput implements Impl::Private::StepsInputSig { result.asCallCfgNode().getCall().getStaticTarget() = sc } - RustDataFlow::Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponent sc) { - sc = Impl::Private::SummaryComponent::return(_) and + /** Gets the argument of `source` described by `sc`, if any. */ + private Expr getSourceNodeArgument(Input::SourceBase source, Impl::Private::SummaryComponent sc) { + exists(ArgumentPosition pos | + sc = Impl::Private::SummaryComponent::argument(pos) and + result = pos.getArgument(source.getCall()) + ) + } + + /** Get the callable that `expr` refers to. */ + private Callable getCallable(Expr expr) { + result = resolvePath(expr.(PathExpr).getPath()).(Function) + or + result = expr.(ClosureExpr) + or + // The expression is an SSA read of an assignment of a closure + exists(Ssa::Definition def, ExprCfgNode value | + def.getARead().getAstNode() = expr and + def.getAnUltimateDefinition().(Ssa::WriteDefinition).assigns(value) and + result = value.getExpr().(ClosureExpr) + ) + } + + RustDataFlow::DataFlowCallable getSourceNodeEnclosingCallable(Input::SourceBase source) { + result.asCfgScope() = source.getEnclosingCfgScope() + } + + RustDataFlow::Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { + s.head() = Impl::Private::SummaryComponent::return(_) and result.asExpr().getExpr() = source.getCall() or - exists(CallExprBase call, Expr arg, ArgumentPosition pos | - result.(RustDataFlow::PostUpdateNode).getPreUpdateNode().asExpr().getExpr() = arg and - sc = Impl::Private::SummaryComponent::argument(pos) and - call = source.getCall() and - arg = pos.getArgument(call) + exists(ArgumentPosition pos, Expr arg | + s.head() = Impl::Private::SummaryComponent::parameter(pos) and + arg = getSourceNodeArgument(source, s.tail().headOfSingleton()) and + result.asParameter() = getCallable(arg).getParam(pos.getPosition()) ) + or + result.(RustDataFlow::PostUpdateNode).getPreUpdateNode().asExpr().getExpr() = + getSourceNodeArgument(source, s.headOfSingleton()) } RustDataFlow::Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll index df0824fcdfc2..49b40474c987 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll @@ -18,23 +18,22 @@ private predicate isInUninitializedLet(Name name) { ) } -/** Holds if `write` writes to variable `v`. */ -predicate variableWrite(AstNode write, Variable v) { +/** Holds if `write` writes to variable `v` via `access`. */ +predicate variableWrite(AstNode write, AstNode access, Variable v) { exists(Name name | name = write and + access = write and name = v.getName() and not isInUninitializedLet(name) ) or - exists(VariableAccess access | - access = write and - access.getVariable() = v - | - access instanceof VariableWriteAccess + v = access.(VariableAccess).getVariable() and + ( + write = access.(VariableWriteAccess).getAssignmentExpr() or // Although compound assignments, like `x += y`, may in fact not update `x`, // it makes sense to treat them as such - access = any(CompoundAssignmentExpr cae).getLhs() + access = write.(CompoundAssignmentExpr).getLhs() ) } @@ -226,7 +225,7 @@ private module Cached { cached predicate variableWriteActual(BasicBlock bb, int i, Variable v, CfgNode write) { bb.getNode(i) = write and - variableWrite(write.getAstNode(), v) + variableWrite(write.getAstNode(), _, v) } cached diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll index 020b50594a6d..210820fd1053 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll @@ -102,7 +102,7 @@ module Impl { f = resolvePath(path) and path.getSegment().getIdentifier().getText() = methodName and exists(SelfParam self | - self = f.getParamList().getSelfParam() and + self = f.getSelfParam() and if self.isRef() then selfIsRef = true else selfIsRef = false ) ) diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallableImpl.qll index 37e24a9150ce..9448de795d3a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CallableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CallableImpl.qll @@ -17,5 +17,25 @@ module Impl { */ class Callable extends Generated::Callable { override Param getParam(int index) { result = this.getParamList().getParam(index) } + + /** + * Gets the self parameter of this callable, if it exists. + */ + SelfParam getSelfParam() { result = this.getParamList().getSelfParam() } + + /** + * Holds if `getSelfParam()` exists. + */ + predicate hasSelfParam() { exists(this.getSelfParam()) } + + /** + * Gets the number of parameters of this callable, including `self` if it exists. + */ + int getNumberOfParamsInclSelf() { + exists(int arr | + arr = this.getNumberOfParams() and + if this.hasSelfParam() then result = arr + 1 else result = arr + ) + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/UnionImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/UnionImpl.qll index 17551c4834ed..40680f3edc90 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/UnionImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/UnionImpl.qll @@ -21,6 +21,13 @@ module Impl { * ``` */ class Union extends Generated::Union { + /** Gets the struct field named `name`, if any. */ + pragma[nomagic] + StructField getStructField(string name) { + result = this.getStructFieldList().getAField() and + result.getName().getText() = name + } + override string toStringImpl() { result = "union " + this.getName().getText() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll index 02fe1f2ad7fa..805692817213 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll @@ -109,7 +109,7 @@ module Impl { text = name.getText() and // exclude self parameters from functions without a body as these are // trait method declarations without implementations - not exists(Function f | not f.hasBody() and f.getParamList().getSelfParam() = sp) + not exists(Function f | not f.hasBody() and f.getSelfParam() = sp) ) or exists(IdentPat pat | @@ -679,11 +679,11 @@ module Impl { } /** Holds if `e` occurs in the LHS of an assignment or compound assignment. */ - private predicate assignmentExprDescendant(Expr e) { - e = any(AssignmentExpr ae).getLhs() + private predicate assignmentExprDescendant(AssignmentExpr ae, Expr e) { + e = ae.getLhs() or exists(Expr mid | - assignmentExprDescendant(mid) and + assignmentExprDescendant(ae, mid) and getImmediateParentAdj(e) = mid and not mid instanceof DerefExpr and not mid instanceof FieldExpr and @@ -693,11 +693,16 @@ module Impl { /** A variable write. */ class VariableWriteAccess extends VariableAccess { + private AssignmentExpr ae; + cached VariableWriteAccess() { Cached::ref() and - assignmentExprDescendant(this) + assignmentExprDescendant(ae, this) } + + /** Gets the assignment expression that has this write access in the left-hand side. */ + AssignmentExpr getAssignmentExpr() { result = ae } } /** A variable read. */ 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 9e65ba1b1964..706170d44b89 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 diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml index a92ed8fc2356..b0b63fa02010 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml @@ -12,7 +12,7 @@ extensions: - ["::into", "Argument[self].Element", "ReturnValue.Element", "taint", "manual"] - ["::into", "Argument[self].Reference.Element", "ReturnValue.Element", "taint", "manual"] # From - - ["<_ as core::convert::From>::from", "Argument[0]", "ReturnValue", "value", "manual"] + - ["<_ as core::convert::From>::from", "Argument[0]", "ReturnValue", "taint", "manual"] # Iterator - ["::iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["::iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/warp.model.yml b/rust/ql/lib/codeql/rust/frameworks/warp.model.yml new file mode 100644 index 000000000000..5071b4dea868 --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/warp.model.yml @@ -0,0 +1,8 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["<_ as warp::filter::Filter>::then", "Argument[0].Parameter[0..7]", "remote", "manual"] + - ["<_ as warp::filter::Filter>::map", "Argument[0].Parameter[0..7]", "remote", "manual"] + - ["<_ as warp::filter::Filter>::and_then", "Argument[0].Parameter[0..7]", "remote", "manual"] \ No newline at end of file diff --git a/rust/ql/lib/codeql/rust/internal/CachedStages.qll b/rust/ql/lib/codeql/rust/internal/CachedStages.qll index cfd3d6905220..132b9ec8f7e8 100644 --- a/rust/ql/lib/codeql/rust/internal/CachedStages.qll +++ b/rust/ql/lib/codeql/rust/internal/CachedStages.qll @@ -117,7 +117,7 @@ module Stages { or exists(resolvePath(_)) or - exists(any(ItemNode i).getASuccessor(_, _)) + exists(any(ItemNode i).getASuccessor(_, _, _)) or exists(any(ImplOrTraitItemNode i).getASelfPath()) or diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 4b718fc43998..f1574ff38f3a 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -4,8 +4,10 @@ private import rust private import codeql.rust.elements.internal.generated.ParentChild +private import codeql.rust.elements.internal.CallExprImpl::Impl as CallExprImpl private import codeql.rust.internal.CachedStages private import codeql.rust.frameworks.stdlib.Builtins as Builtins +private import codeql.util.Option private newtype TNamespace = TTypeNamespace() or @@ -72,9 +74,31 @@ 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() + ) +} + +private module UseOption = Option; + +private class UseOption = UseOption::Option; + +/** + * Holds if `n` is superseded by an attribute macro expansion. That is, `n` is + * an item or a transitive child of an item with an attribute macro expansion. + */ +predicate supersededByAttributeMacroExpansion(AstNode n) { + n.(Item).hasAttributeMacroExpansion() + or + exists(AstNode parent | + n.getParentNode() = parent and + supersededByAttributeMacroExpansion(parent) and + // Don't exclude expansions themselves as they supercede other nodes. + not n = parent.(Item).getAttributeMacroExpansion() and + // Don't consider attributes themselves to be superseded. E.g., in `#[a] fn + // f() {}` the macro expansion supercedes `fn f() {}` but not `#[a]`. + not n instanceof Attr ) } @@ -156,6 +180,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 superseded by the expansion of an attribute macro. + not supersededByAttributeMacroExpansion(this) + } + /** Gets the (original) name of this item. */ abstract string getName(); @@ -165,6 +194,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); @@ -192,40 +235,51 @@ abstract class ItemNode extends Locatable { result = this.(SourceFileItemNode).getSuper() } - /** Gets a successor named `name` of the given `kind`, if any. */ + /** + * Gets a successor named `name` of the given `kind`, if any. + * + * `useOpt` represents the `use` statement that brought the item into scope, + * if any. + */ cached - ItemNode getASuccessor(string name, SuccessorKind kind) { + ItemNode getASuccessor(string name, SuccessorKind kind, UseOption useOpt) { Stages::PathResolutionStage::ref() and sourceFileEdge(this, name, result) and - kind.isBoth() + kind.isBoth() and + useOpt.isNone() or - result = getAChildSuccessor(this, name, kind) + result = getAChildSuccessor(this, name, kind) and + useOpt.isNone() or - fileImportEdge(this, name, result, kind) + fileImportEdge(this, name, result, kind, useOpt) or - useImportEdge(this, name, result, kind) + useImportEdge(this, name, result, kind) and + useOpt.isNone() or - crateDefEdge(this, name, result, kind) + crateDefEdge(this, name, result, kind, useOpt) or crateDependencyEdge(this, name, result) and - kind.isInternal() + kind.isInternal() and + useOpt.isNone() or externCrateEdge(this, name, result) and - kind.isInternal() + kind.isInternal() and + useOpt.isNone() or // items made available through `use` are available to nodes that contain the `use` - exists(UseItemNode use | - use = this.getASuccessor(_, _) and - result = use.getASuccessor(name, kind) - ) + useOpt.asSome() = + any(UseItemNode use_ | + use_ = this.getASuccessor(_, _, _) and + result = use_.getASuccessor(name, kind, _) + ) or - exists(ExternCrateItemNode ec | result = ec.(ItemNode).getASuccessor(name, kind) | - ec = this.getASuccessor(_, _) + exists(ExternCrateItemNode ec | result = ec.(ItemNode).getASuccessor(name, kind, useOpt) | + ec = this.getASuccessor(_, _, _) or // if the extern crate appears in the crate root, then the crate name is also added // to the 'extern prelude', see https://doc.rust-lang.org/reference/items/extern-crates.html exists(Crate c | - ec = c.getSourceFile().(ItemNode).getASuccessor(_, _) and + ec = c.getSourceFile().(ItemNode).getASuccessor(_, _, _) and this = c.getASourceFile() ) ) @@ -233,20 +287,20 @@ abstract class ItemNode extends Locatable { // a trait has access to the associated items of its supertraits this = any(TraitItemNodeImpl trait | - result = trait.resolveABoundCand().getASuccessor(name, kind) and + result = trait.resolveABoundCand().getASuccessor(name, kind, useOpt) and kind.isExternalOrBoth() and result instanceof AssocItemNode and not trait.hasAssocItem(name) ) or // items made available by an implementation where `this` is the implementing type - typeImplEdge(this, _, name, kind, result) + typeImplEdge(this, _, name, kind, result, useOpt) or // trait items with default implementations made available in an implementation exists(ImplItemNodeImpl impl, ItemNode trait | this = impl and trait = impl.resolveTraitTyCand() and - result = trait.getASuccessor(name, kind) and + result = trait.getASuccessor(name, kind, useOpt) and result.(AssocItemNode).hasImplementation() and kind.isExternalOrBoth() and not impl.hasAssocItem(name) @@ -254,42 +308,52 @@ abstract class ItemNode extends Locatable { or // type parameters have access to the associated items of its bounds result = - this.(TypeParamItemNodeImpl).resolveABoundCand().getASuccessor(name, kind).(AssocItemNode) and + this.(TypeParamItemNodeImpl) + .resolveABoundCand() + .getASuccessor(name, kind, useOpt) + .(AssocItemNode) and kind.isExternalOrBoth() or result = this.(ImplTraitTypeReprItemNodeImpl) .resolveABoundCand() - .getASuccessor(name, kind) + .getASuccessor(name, kind, useOpt) .(AssocItemNode) and kind.isExternalOrBoth() or - result = this.(TypeAliasItemNodeImpl).resolveAliasCand().getASuccessor(name, kind) and + result = this.(TypeAliasItemNodeImpl).resolveAliasCand().getASuccessor(name, kind, useOpt) and kind.isExternalOrBoth() or name = "super" and - if this instanceof Module or this instanceof SourceFile - then ( - kind.isBoth() and result = this.getImmediateParentModule() - ) else ( - kind.isInternal() and result = this.getImmediateParentModule().getImmediateParentModule() + useOpt.isNone() and + ( + if this instanceof Module or this instanceof SourceFile + then ( + kind.isBoth() and result = this.getImmediateParentModule() + ) else ( + kind.isInternal() and result = this.getImmediateParentModule().getImmediateParentModule() + ) ) or name = "self" and - if - this instanceof Module or - this instanceof Enum or - this instanceof Struct or - this instanceof Crate - then ( - kind.isBoth() and - result = this - ) else ( - kind.isInternal() and - result = this.getImmediateParentModule() + useOpt.isNone() and + ( + if + this instanceof Module or + this instanceof Enum or + this instanceof Struct or + this instanceof Crate + then ( + kind.isBoth() and + result = this + ) else ( + kind.isInternal() and + result = this.getImmediateParentModule() + ) ) or kind.isInternal() and + useOpt.isNone() and ( preludeEdge(this, name, result) or @@ -313,7 +377,7 @@ abstract class ItemNode extends Locatable { pragma[nomagic] ItemNode getASuccessor(string name) { exists(SuccessorKind kind | - result = this.getASuccessor(name, kind) and + result = this.getASuccessor(name, kind, _) and kind.isExternalOrBoth() ) } @@ -380,9 +444,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)" } @@ -543,7 +605,13 @@ private class EnumItemNode extends TypeItemNode instanceof Enum { } } -private class VariantItemNode extends ItemNode instanceof Variant { +/** An item that can be referenced with arguments. */ +abstract class ParameterizableItemNode extends ItemNode { + /** Gets the arity this item. */ + abstract int getArity(); +} + +private class VariantItemNode extends ParameterizableItemNode instanceof Variant { override string getName() { result = Variant.super.getName().getText() } override Namespace getNamespace() { @@ -556,6 +624,8 @@ private class VariantItemNode extends ItemNode instanceof Variant { override Visibility getVisibility() { result = super.getEnum().getVisibility() } + override int getArity() { result = super.getFieldList().(TupleFieldList).getNumberOfFields() } + override predicate hasCanonicalPath(Crate c) { this.hasCanonicalPathPrefix(c) } bindingset[c] @@ -577,7 +647,7 @@ private class VariantItemNode extends ItemNode instanceof Variant { } } -class FunctionItemNode extends AssocItemNode instanceof Function { +class FunctionItemNode extends AssocItemNode, ParameterizableItemNode instanceof Function { override string getName() { result = Function.super.getName().getText() } override predicate hasImplementation() { Function.super.hasImplementation() } @@ -587,6 +657,8 @@ class FunctionItemNode extends AssocItemNode instanceof Function { override TypeParam getTypeParam(int i) { result = super.getGenericParamList().getTypeParam(i) } override Visibility getVisibility() { result = Function.super.getVisibility() } + + override int getArity() { result = super.getNumberOfParamsInclSelf() } } abstract class ImplOrTraitItemNode extends ItemNode { @@ -648,15 +720,13 @@ 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 + * Holds if this impl block is a [blanket implementation][1]. That is, the * implementation targets a generic parameter of the impl block. + * + * [1]: https://doc.rust-lang.org/book/ch10-02-traits.html#using-trait-bounds-to-conditionally-implement-methods */ predicate isBlanketImplementation() { exists(this.getBlanketImplementationTypeParam()) } @@ -808,7 +878,7 @@ private class ImplItemNodeImpl extends ImplItemNode { TraitItemNode resolveTraitTyCand() { result = resolvePathCand(this.getTraitPath()) } } -private class StructItemNode extends TypeItemNode instanceof Struct { +private class StructItemNode extends TypeItemNode, ParameterizableItemNode instanceof Struct { override string getName() { result = Struct.super.getName().getText() } override Namespace getNamespace() { @@ -820,6 +890,8 @@ private class StructItemNode extends TypeItemNode instanceof Struct { override Visibility getVisibility() { result = Struct.super.getVisibility() } + override int getArity() { result = super.getFieldList().(TupleFieldList).getNumberOfFields() } + override TypeParam getTypeParam(int i) { result = super.getGenericParamList().getTypeParam(i) } override predicate hasCanonicalPath(Crate c) { this.hasCanonicalPathPrefix(c) } @@ -1235,10 +1307,12 @@ predicate fileImport(Module m, SourceFile f) { * in scope under the name `name`. */ pragma[nomagic] -private predicate fileImportEdge(Module mod, string name, ItemNode item, SuccessorKind kind) { +private predicate fileImportEdge( + Module mod, string name, ItemNode item, SuccessorKind kind, UseOption useOpt +) { exists(SourceFileItemNode f | fileImport(mod, f) and - item = f.getASuccessor(name, kind) + item = f.getASuccessor(name, kind, useOpt) ) } @@ -1246,8 +1320,10 @@ private predicate fileImportEdge(Module mod, string name, ItemNode item, Success * Holds if crate `c` defines the item `i` named `name`. */ pragma[nomagic] -private predicate crateDefEdge(CrateItemNode c, string name, ItemNode i, SuccessorKind kind) { - i = c.getSourceFile().getASuccessor(name, kind) and +private predicate crateDefEdge( + CrateItemNode c, string name, ItemNode i, SuccessorKind kind, UseOption useOpt +) { + i = c.getSourceFile().getASuccessor(name, kind, useOpt) and kind.isExternalOrBoth() } @@ -1260,6 +1336,12 @@ private predicate crateDependency(SourceFileItemNode file, string name, CrateIte exists(CrateItemNode c | dep = c.(Crate).getDependency(name) | file = c.getASourceFile()) } +pragma[nomagic] +private predicate hasDeclOrDep(SourceFileItemNode file, string name) { + declaresDirectly(file, TTypeNamespace(), name) or + crateDependency(file, name, _) +} + /** * Holds if `file` depends on crate `dep` named `name`. */ @@ -1273,8 +1355,7 @@ private predicate crateDependencyEdge(SourceFileItemNode file, string name, Crat // a given file to its crate (for example, if the file is `mod` imported inside a macro that the // extractor is unable to expand). name = dep.getName() and - not declaresDirectly(file, TTypeNamespace(), name) and - not crateDependency(file, name, _) + not hasDeclOrDep(file, name) } private predicate useTreeDeclares(UseTree tree, string name) { @@ -1300,7 +1381,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() ) @@ -1334,13 +1416,22 @@ class RelevantPath extends Path { name = this.getText() } + /** + * Holds if this is an unqualified path with the textual value `name` and + * enclosing item `encl`. + */ pragma[nomagic] - predicate isCratePath(string name, ItemNode encl) { - name = ["crate", "$crate"] and + predicate isUnqualified(string name, ItemNode encl) { this.isUnqualified(name) and encl.getADescendant() = this } + pragma[nomagic] + predicate isCratePath(string name, ItemNode encl) { + name = ["crate", "$crate"] and + this.isUnqualified(name, encl) + } + pragma[nomagic] predicate isDollarCrateQualifiedPath(string name) { this.getQualifier().(RelevantPath).isCratePath("$crate", _) and @@ -1365,32 +1456,34 @@ private ItemNode getOuterScope(ItemNode i) { } /** - * Holds if the unqualified path `p` references an item named `name`, and `name` - * may be looked up in the `ns` namespace inside enclosing item `encl`. + * Holds if _some_ unqualified path in `encl` references an item named `name`, + * and `name` may be looked up in the `ns` namespace inside `ancestor`. */ pragma[nomagic] -private predicate unqualifiedPathLookup(ItemNode encl, string name, Namespace ns, RelevantPath p) { +private predicate unqualifiedPathLookup(ItemNode ancestor, string name, Namespace ns, ItemNode encl) { // lookup in the immediately enclosing item - p.isUnqualified(name) and - encl.getADescendant() = p and + any(RelevantPath p).isUnqualified(name, encl) and + ancestor = encl and exists(ns) and not name = ["crate", "$crate", "super", "self"] or // lookup in an outer scope, but only if the item is not declared in inner scope exists(ItemNode mid | - unqualifiedPathLookup(mid, name, ns, p) and + unqualifiedPathLookup(mid, name, ns, encl) and not declares(mid, ns, name) and not ( name = "Self" and mid = any(ImplOrTraitItemNode i).getAnItemInSelfScope() ) and - encl = getOuterScope(mid) + ancestor = getOuterScope(mid) ) } pragma[nomagic] -private ItemNode getASuccessor(ItemNode pred, string name, Namespace ns, SuccessorKind kind) { - result = pred.getASuccessor(name, kind) and +private ItemNode getASuccessor( + ItemNode pred, string name, Namespace ns, SuccessorKind kind, UseOption useOpt +) { + result = pred.getASuccessor(name, kind, useOpt) and ns = result.getNamespace() } @@ -1405,32 +1498,34 @@ private predicate sourceFileHasCratePathTc(ItemNode i1, ItemNode i2) = /** * Holds if the unqualified path `p` references a keyword item named `name`, and - * `name` may be looked up inside enclosing item `encl`. + * `name` may be looked up inside `ancestor`. */ pragma[nomagic] -private predicate keywordLookup(ItemNode encl, string name, RelevantPath p) { +private predicate keywordLookup(ItemNode ancestor, string name, RelevantPath p) { // For `($)crate`, jump directly to the root module exists(ItemNode i | p.isCratePath(name, i) | - encl instanceof SourceFile and - encl = i + ancestor instanceof SourceFile and + ancestor = i or - sourceFileHasCratePathTc(encl, i) + sourceFileHasCratePathTc(ancestor, i) ) or name = ["super", "self"] and - p.isUnqualified(name) and - encl.getADescendant() = p + p.isUnqualified(name, ancestor) } pragma[nomagic] private ItemNode unqualifiedPathLookup(RelevantPath p, Namespace ns, SuccessorKind kind) { - exists(ItemNode encl, string name | - result = getASuccessor(encl, name, ns, kind) and + exists(ItemNode ancestor, string name | + result = getASuccessor(ancestor, pragma[only_bind_into](name), ns, kind, _) and kind.isInternalOrBoth() | - unqualifiedPathLookup(encl, name, ns, p) + exists(ItemNode encl | + unqualifiedPathLookup(ancestor, name, ns, encl) and + p.isUnqualified(pragma[only_bind_into](name), encl) + ) or - keywordLookup(encl, name, p) and exists(ns) + keywordLookup(ancestor, name, p) and exists(ns) ) } @@ -1454,7 +1549,7 @@ module TraitIsVisible { // lookup in an outer scope, but only if the trait is not declared in inner scope exists(ItemNode mid | traitLookup(mid, element, trait) and - not trait = mid.getASuccessor(_, _) and + not trait = mid.getASuccessor(_, _, _) and encl = getOuterScope(mid) ) } @@ -1462,7 +1557,9 @@ module TraitIsVisible { /** Holds if the trait `trait` is visible at `element`. */ pragma[nomagic] predicate traitIsVisible(Element element, Trait trait) { - exists(ItemNode encl | traitLookup(encl, element, trait) and trait = encl.getASuccessor(_, _)) + exists(ItemNode encl | + traitLookup(encl, element, trait) and trait = encl.getASuccessor(_, _, _) + ) } } @@ -1491,6 +1588,43 @@ private ItemNode resolvePathCandQualifier(RelevantPath qualifier, RelevantPath p name = path.getText() } +bindingset[l] +pragma[inline_late] +private ModuleLikeNode getAnAncestorModule(Locatable l) { + exists(ItemNode encl | + encl.getADescendant() = l and + result = encl.getImmediateParentModule*() + ) +} + +bindingset[i] +pragma[inline_late] +private ModuleLikeNode getParent(ItemNode i) { result = i.getImmediateParent() } + +/** + * Holds if resolving a qualified path at `l` to the item `i` with successor kind + * `kind` respects visibility. + * + * This is the case when either `i` is externally visible (e.g. a `pub` function), + * or when `i` (or the `use` statement, `useOpt`, that brought `i` into scope) is + * in an ancestor module of `l`. + */ +bindingset[l, i, kind, useOpt] +pragma[inline_late] +private predicate checkQualifiedVisibility( + Locatable l, ItemNode i, SuccessorKind kind, UseOption useOpt +) { + kind.isExternalOrBoth() + or + exists(AstNode n | getAnAncestorModule(l) = getParent(n) | + n = useOpt.asSome() + or + useOpt.isNone() and + n = i + ) and + not i instanceof TypeParam +} + /** * Gets the item that `path` resolves to in `ns` when `qualifier` is the * qualifier of `path` and `qualifier` resolves to `q`, if any. @@ -1499,10 +1633,10 @@ pragma[nomagic] private ItemNode resolvePathCandQualified( RelevantPath qualifier, ItemNode q, RelevantPath path, Namespace ns ) { - exists(string name, SuccessorKind kind | + exists(string name, SuccessorKind kind, UseOption useOpt | q = resolvePathCandQualifier(qualifier, path, name) and - result = getASuccessor(q, name, ns, kind) and - kind.isExternalOrBoth() + result = getASuccessor(q, name, ns, kind, useOpt) and + checkQualifiedVisibility(path, result, kind, useOpt) ) } @@ -1513,6 +1647,8 @@ private predicate pathUsesNamespace(Path p, Namespace n) { p = any(PathExpr pe).getPath() or p = any(TupleStructPat tsp).getPath() + or + p = any(Meta m).getPath() ) or n.isType() and @@ -1566,6 +1702,14 @@ private ItemNode resolvePathCand(RelevantPath path) { or not pathUsesNamespace(path, _) and not path = any(MacroCall mc).getPath() + ) and + ( + not path = CallExprImpl::getFunctionPath(_) + or + exists(CallExpr ce | + path = CallExprImpl::getFunctionPath(ce) and + result.(ParameterizableItemNode).getArity() = ce.getNumberOfArgs() + ) ) } @@ -1573,7 +1717,7 @@ private ItemNode resolvePathCand(RelevantPath path) { private Trait getResolvePathTraitUsed(RelevantPath path, AssocItemNode node) { exists(TypeItemNode type, ImplItemNodeImpl impl | node = resolvePathCandQualified(_, type, path, _) and - typeImplEdge(type, impl, _, _, node) and + typeImplEdge(type, impl, _, _, node, _) and result = impl.resolveTraitTyCand() ) } @@ -1620,18 +1764,17 @@ private predicate isUseTreeSubPathUnqualified(UseTree tree, RelevantPath path, s pragma[nomagic] private ItemNode resolveUseTreeListItem(Use use, UseTree tree, RelevantPath path, SuccessorKind kind) { - kind.isExternalOrBoth() and - ( + exists(UseOption useOpt | checkQualifiedVisibility(use, result, kind, useOpt) | exists(UseTree midTree, ItemNode mid, string name | mid = resolveUseTreeListItem(use, midTree) and tree = midTree.getUseTreeList().getAUseTree() and isUseTreeSubPathUnqualified(tree, path, pragma[only_bind_into](name)) and - result = mid.getASuccessor(pragma[only_bind_into](name), kind) + result = mid.getASuccessor(pragma[only_bind_into](name), kind, useOpt) ) or exists(ItemNode q, string name | q = resolveUseTreeListItemQualifier(use, tree, path, name) and - result = q.getASuccessor(name, kind) + result = q.getASuccessor(name, kind, useOpt) ) ) } @@ -1646,10 +1789,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`. */ @@ -1661,10 +1806,10 @@ private predicate useImportEdge(Use use, string name, ItemNode item, SuccessorKi not tree.hasUseTreeList() and if tree.isGlob() then - exists(ItemNode encl, Namespace ns, SuccessorKind kind1 | + exists(ItemNode encl, Namespace ns, SuccessorKind kind1, UseOption useOpt | encl.getADescendant() = use and - item = getASuccessor(used, name, ns, kind1) and - kind1.isExternalOrBoth() and + item = getASuccessor(used, name, ns, kind1, useOpt) and + checkQualifiedVisibility(use, item, kind1, useOpt) and // glob imports can be shadowed not declares(encl, ns, name) and not name = ["super", "self"] @@ -1673,7 +1818,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() @@ -1711,10 +1859,11 @@ private predicate externCrateEdge(ExternCrateItemNode ec, string name, CrateItem * makes `assoc` available as `name` at `kind`. */ private predicate typeImplEdge( - TypeItemNode typeItem, ImplItemNodeImpl impl, string name, SuccessorKind kind, AssocItemNode assoc + TypeItemNode typeItem, ImplItemNodeImpl impl, string name, SuccessorKind kind, + AssocItemNode assoc, UseOption useOpt ) { typeItem = impl.resolveSelfTyCand() and - assoc = impl.getASuccessor(name, kind) and + assoc = impl.getASuccessor(name, kind, useOpt) and kind.isExternalOrBoth() } @@ -1765,13 +1914,18 @@ private module Debug { } predicate debugUnqualifiedPathLookup( - RelevantPath p, string name, Namespace ns, ItemNode encl, string path + RelevantPath p, string name, Namespace ns, ItemNode ancestor, string path ) { p = getRelevantLocatable() and - unqualifiedPathLookup(encl, name, ns, p) and + exists(ItemNode encl | + unqualifiedPathLookup(encl, name, ns, ancestor) and + p.isUnqualified(name, encl) + ) and path = p.toStringDebug() } + predicate debugItemNode(ItemNode item) { item = getRelevantLocatable() } + ItemNode debugResolvePath(RelevantPath path) { path = getRelevantLocatable() and result = resolvePath(path) @@ -1784,12 +1938,12 @@ private module Debug { ItemNode debugGetASuccessor(ItemNode i, string name, SuccessorKind kind) { i = getRelevantLocatable() and - result = i.getASuccessor(name, kind) + result = i.getASuccessor(name, kind, _) } predicate debugFileImportEdge(Module mod, string name, ItemNode item, SuccessorKind kind) { mod = getRelevantLocatable() and - fileImportEdge(mod, name, item, kind) + fileImportEdge(mod, name, item, kind, _) } predicate debugFileImport(Module m, SourceFile f) { diff --git a/rust/ql/lib/codeql/rust/internal/Type.qll b/rust/ql/lib/codeql/rust/internal/Type.qll index eaa7e83fc6da..29e6ed283bc6 100644 --- a/rust/ql/lib/codeql/rust/internal/Type.qll +++ b/rust/ql/lib/codeql/rust/internal/Type.qll @@ -42,11 +42,14 @@ newtype TType = TStruct(Struct s) or TEnum(Enum e) or TTrait(Trait t) or + TUnion(Union u) or TArrayType() or // todo: add size? TRefType() or // todo: add mut? TImplTraitType(ImplTraitTypeRepr impl) or TDynTraitType(Trait t) { t = any(DynTraitTypeRepr dt).getTrait() } or TSliceType() or + TNeverType() or + TPtrType() or TTupleTypeParameter(int arity, int i) { exists(TTuple(arity)) and i in [0 .. arity - 1] } or TTypeParamTypeParameter(TypeParam t) or TAssociatedTypeTypeParameter(TypeAlias t) { any(TraitItemNode trait).getAnAssocItem() = t } or @@ -57,7 +60,8 @@ newtype TType = } or TRefTypeParameter() or TSelfTypeParameter(Trait t) or - TSliceTypeParameter() + TSliceTypeParameter() or + TPtrTypeParameter() private predicate implTraitTypeParam(ImplTraitTypeRepr implTrait, int i, TypeParam tp) { implTrait.isInReturnPos() and @@ -224,6 +228,31 @@ class TraitType extends Type, TTrait { override Location getLocation() { result = trait.getLocation() } } +/** A union type. */ +class UnionType extends StructOrEnumType, TUnion { + private Union union; + + UnionType() { this = TUnion(union) } + + override ItemNode asItemNode() { result = union } + + override StructField getStructField(string name) { result = union.getStructField(name) } + + override TupleField getTupleField(int i) { none() } + + override TypeParameter getPositionalTypeParameter(int i) { + result = TTypeParamTypeParameter(union.getGenericParamList().getTypeParam(i)) + } + + override TypeMention getTypeParameterDefault(int i) { + result = union.getGenericParamList().getTypeParam(i).getDefaultType() + } + + override string toString() { result = union.getName().getText() } + + override Location getLocation() { result = union.getLocation() } +} + /** * An array type. * @@ -374,6 +403,33 @@ class SliceType extends Type, TSliceType { override Location getLocation() { result instanceof EmptyLocation } } +class NeverType extends Type, TNeverType { + override StructField getStructField(string name) { none() } + + override TupleField getTupleField(int i) { none() } + + override TypeParameter getPositionalTypeParameter(int i) { none() } + + override string toString() { result = "!" } + + override Location getLocation() { result instanceof EmptyLocation } +} + +class PtrType extends Type, TPtrType { + override StructField getStructField(string name) { none() } + + override TupleField getTupleField(int i) { none() } + + override TypeParameter getPositionalTypeParameter(int i) { + i = 0 and + result = TPtrTypeParameter() + } + + override string toString() { result = "*" } + + override Location getLocation() { result instanceof EmptyLocation } +} + /** A type parameter. */ abstract class TypeParameter extends Type { override StructField getStructField(string name) { none() } @@ -529,6 +585,12 @@ class SliceTypeParameter extends TypeParameter, TSliceTypeParameter { override Location getLocation() { result instanceof EmptyLocation } } +class PtrTypeParameter extends TypeParameter, TPtrTypeParameter { + override string toString() { result = "*T" } + + override Location getLocation() { result instanceof EmptyLocation } +} + /** * The implicit `Self` type parameter of a trait, that refers to the * implementing type of the trait. diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 16c0b30332ef..1f987d6572ea 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -99,6 +99,11 @@ private module Input1 implements InputSig1 { id1 = 0 and id2 = 2 or + tp0 instanceof PtrTypeParameter and + kind = 0 and + id1 = 0 and + id2 = 3 + or kind = 1 and id1 = 0 and id2 = @@ -230,7 +235,7 @@ module Consistency { // Suppress the inconsistency if `n` is a self parameter and the type // mention for the self type has multiple types for a path. not exists(ImplItemNode impl, TypePath selfTypePath | - n = impl.getAnAssocItem().(Function).getParamList().getSelfParam() and + n = impl.getAnAssocItem().(Function).getSelfParam() and strictcount(impl.(Impl).getSelfTy().(TypeMention).resolveTypeAt(selfTypePath)) > 1 ) } @@ -948,7 +953,7 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { ) or exists(SelfParam self | - self = pragma[only_bind_into](this.getParamList().getSelfParam()) and + self = pragma[only_bind_into](this.getSelfParam()) and dpos.isSelf() and result = inferAnnotatedType(self, path) // `self` parameter with type annotation ) @@ -972,7 +977,7 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { exists(ImplOrTraitItemNode i | this = i.getAnAssocItem() and dpos.isSelf() and - not this.getParamList().hasSelfParam() + not this.hasSelfParam() | result = TSelfTypeParameter(i) and path.isEmpty() @@ -1900,7 +1905,7 @@ private predicate methodCandidate(Type type, string name, int arity, Impl impl) type = impl.getSelfTy().(TypeMention).resolveType() and exists(Function f | f = impl.(ImplItemNode).getASuccessor(name) and - f.getParamList().hasSelfParam() and + f.hasSelfParam() and arity = f.getParamList().getNumberOfParams() ) } @@ -2222,7 +2227,7 @@ private module BlanketImplementation { ) { isCanonicalImpl(impl) and blanketImplementationTraitBound(impl, traitBound) and - f.getParamList().hasSelfParam() and + f.hasSelfParam() and arity = f.getParamList().getNumberOfParams() and ( f = impl.getAssocItem(name) @@ -2332,7 +2337,7 @@ private Function resolveMethodCallTarget(MethodCall mc) { pragma[nomagic] private predicate assocFuncResolutionDependsOnArgument(Function f, Impl impl, int pos) { functionResolutionDependsOnArgument(impl, _, f, pos, _, _) and - not f.getParamList().hasSelfParam() + not f.hasSelfParam() } private class FunctionCallExpr extends CallImpl::CallExprCall { diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index c36e19842377..ba7f4b4659d4 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -241,6 +241,8 @@ class NonAliasPathTypeMention extends PathTypeMention { else result = TTrait(trait) ) or + result = TUnion(resolved) + or result = TTypeParamTypeParameter(resolved) or result = TAssociatedTypeTypeParameter(resolved) @@ -387,3 +389,19 @@ class DynTypeBoundListMention extends TypeMention instanceof TypeBoundList { ) } } + +class NeverTypeReprMention extends TypeMention, NeverTypeRepr { + override Type resolveTypeAt(TypePath path) { result = TNeverType() and path.isEmpty() } +} + +class PtrTypeReprMention extends TypeMention instanceof PtrTypeRepr { + override Type resolveTypeAt(TypePath path) { + path.isEmpty() and + result = TPtrType() + or + exists(TypePath suffix | + result = super.getTypeRepr().(TypeMention).resolveTypeAt(suffix) and + path = TypePath::cons(TPtrTypeParameter(), suffix) + ) + } +} diff --git a/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll b/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll index 785a7f815bcd..bc487e42ef0a 100644 --- a/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll @@ -69,11 +69,15 @@ module HardcodedCryptographicValue { /** * An array initialized from a list of literals, considered as a single flow source. For example: * ``` - * `[0, 0, 0, 0]` + * [0, 0, 0, 0] + * [0; 10] * ``` */ private class ArrayListSource extends Source { - ArrayListSource() { this.asExpr().getExpr().(ArrayListExpr).getExpr(_) instanceof LiteralExpr } + ArrayListSource() { + this.asExpr().getExpr().(ArrayListExpr).getExpr(_) instanceof LiteralExpr or + this.asExpr().getExpr().(ArrayRepeatExpr).getRepeatOperand() instanceof LiteralExpr + } } /** diff --git a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll new file mode 100644 index 000000000000..bd91cde238f3 --- /dev/null +++ b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll @@ -0,0 +1,62 @@ +/** + * Provides classes and predicates for reasoning about the use of + * non-HTTPS URLs in Rust code. + */ + +import rust +private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowSink +private import codeql.rust.Concepts + +/** + * Provides default sources, sinks and barriers for detecting use of + * non-HTTPS URLs, as well as extension points for adding your own. + */ +module UseOfHttp { + /** + * A data flow source for use of non-HTTPS URLs. + */ + abstract class Source extends DataFlow::Node { } + + /** + * A data flow sink for use of non-HTTPS URLs. + */ + abstract class Sink extends QuerySink::Range { + override string getSinkType() { result = "UseOfHttp" } + } + + /** + * A barrier for use of non-HTTPS URLs. + */ + abstract class Barrier extends DataFlow::Node { } + + /** + * A string containing an HTTP URL. + */ + class HttpStringLiteral extends StringLiteralExpr { + HttpStringLiteral() { + exists(string s | this.getTextValue() = s | + // match HTTP URLs + s.regexpMatch("(?i)\"http://.*\"") and + // 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}:.*\\]).*\"") + ) + } + } + + /** + * An HTTP string literal as a source. + */ + private class HttpStringLiteralAsSource extends Source { + HttpStringLiteralAsSource() { this.asExpr().getExpr() instanceof HttpStringLiteral } + } + + /** + * A sink for use of HTTP URLs from model data. + */ + private class ModelsAsDataSink extends Sink { + ModelsAsDataSink() { sinkNode(this, "request-url") } + } +} diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index d0e9a11ec16f..3c3ba893b14a 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.16 +version: 0.1.17 groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/lib/utils/test/InlineFlowTest.qll b/rust/ql/lib/utils/test/InlineFlowTest.qll index 80abf21e1f5f..9ba92f7757be 100644 --- a/rust/ql/lib/utils/test/InlineFlowTest.qll +++ b/rust/ql/lib/utils/test/InlineFlowTest.qll @@ -34,10 +34,9 @@ private module FlowTestImpl implements InputSig { result = src.asExpr().(CallExprCfgNode).getArgument(0).toString() or sourceNode(src, _) and - exists(CallExprBase call | - call = src.(Node::FlowSummaryNode).getSourceElement().getCall() and - result = call.getArgList().getArg(0).toString() - ) + result = src.(Node::FlowSummaryNode).getSourceElement().getCall().getArg(0).toString() and + // Don't use the result if it contains spaces + not result.matches("% %") } bindingset[src, sink] diff --git a/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll b/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll index c5a95ac90389..df668194c075 100644 --- a/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll +++ b/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll @@ -25,10 +25,14 @@ 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 - or - not (commmentAt(_, filepath, line) and inMacro = false) and - value = i.getName() + if i instanceof SourceFile + then value = i.getFile().getBaseName() + else ( + commmentAt(value, filepath, line) + or + not commmentAt(_, filepath, line) and + value = i.getName() + ) ) } diff --git a/rust/ql/src/CHANGELOG.md b/rust/ql/src/CHANGELOG.md index 48f64efbcdb7..29117e66d4cb 100644 --- a/rust/ql/src/CHANGELOG.md +++ b/rust/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.1.17 + +### New Queries + +* Added a new query, `rust/non-https-url`, for detecting the use of non-HTTPS URLs that can be intercepted by third parties. + ## 0.1.16 ### New Queries diff --git a/rust/ql/src/change-notes/released/0.1.17.md b/rust/ql/src/change-notes/released/0.1.17.md new file mode 100644 index 000000000000..13cfb719c3cf --- /dev/null +++ b/rust/ql/src/change-notes/released/0.1.17.md @@ -0,0 +1,5 @@ +## 0.1.17 + +### New Queries + +* Added a new query, `rust/non-https-url`, for detecting the use of non-HTTPS URLs that can be intercepted by third parties. diff --git a/rust/ql/src/codeql-pack.release.yml b/rust/ql/src/codeql-pack.release.yml index a01dca921616..eddeebba7bfe 100644 --- a/rust/ql/src/codeql-pack.release.yml +++ b/rust/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.16 +lastReleaseVersion: 0.1.17 diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index 8debbae1f51a..09d251a5cb1b 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.16 +version: 0.1.17 groups: - rust - queries diff --git a/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp b/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp new file mode 100644 index 000000000000..088f202965a9 --- /dev/null +++ b/rust/ql/src/queries/security/CWE-319/UseOfHttp.qhelp @@ -0,0 +1,49 @@ + + + + +

    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, +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 TLS connections.

    + +
    + + +

    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:

    + + + +

    A better approach is to use HTTPS. When the request is made using an HTTPS URL, the connection +is a secure TLS connection:

    + + + +
    + + +
  • +OWASP: +Transport Layer Security Cheat Sheet. +
  • +
  • +OWASP Top 10: +A08:2021 - Software and Data Integrity Failures. +
  • +
  • Rust reqwest documentation: +reqwest crate. +
  • + +
    +
    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 000000000000..4a464d90bbe4 --- /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 000000000000..ada466cae5c0 --- /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 000000000000..22b94235fa17 --- /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 7a1de4f13144..d49e1fdde5d3 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/src/queries/unusedentities/UnusedValue.ql b/rust/ql/src/queries/unusedentities/UnusedValue.ql index 11e29d475e49..14204a2273b7 100644 --- a/rust/ql/src/queries/unusedentities/UnusedValue.ql +++ b/rust/ql/src/queries/unusedentities/UnusedValue.ql @@ -16,7 +16,7 @@ import UnusedVariable from AstNode write, Ssa::Variable v where - variableWrite(write, v) and + variableWrite(_, write, v) and not v instanceof DiscardVariable and not write.isInMacroExpansion() and not isAllowableUnused(v) and diff --git a/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/TypeInferenceConsistency.expected b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/TypeInferenceConsistency.expected deleted file mode 100644 index 416404c2bd19..000000000000 --- a/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/TypeInferenceConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -illFormedTypeMention -| macro_expansion.rs:99:7:99:19 | MyDeriveUnion | 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 f5f63c61593a..cbf6523d21c1 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() | diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index f4fb726ad37c..b2fc845081cd 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -97,1037 +97,1057 @@ 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: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: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: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:467:24:467:33 | [post] receiver for source(...) | file://:0:0:0:0 | &ref | main.rs:467:24:467:33 | [post] source(...) | -| 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 | [post] receiver for default_name | file://:0:0:0:0 | &ref | main.rs:470:44:470:55 | [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:494:13:494:13 | [post] receiver for a | file://:0:0:0:0 | &ref | main.rs:494:13:494:13 | [post] a | -| 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:479:24:479:33 | [post] receiver for source(...) | file://:0:0:0:0 | &ref | main.rs:479:24:479:33 | [post] source(...) | +| 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 | [post] receiver for default_name | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | [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:506:13:506:13 | [post] receiver for a | file://:0:0:0:0 | &ref | main.rs:506:13:506:13 | [post] a | +| 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:467:24:467:33 | source(...) | file://:0:0:0:0 | &ref | main.rs:467:24:467:33 | receiver for source(...) | -| 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:470:44:470:55 | default_name | file://:0:0:0:0 | &ref | main.rs:470:44:470:55 | receiver for default_name | -| main.rs:471:18:471:18 | n | file://:0:0:0:0 | &ref | main.rs:471:18:471:18 | receiver for n | -| main.rs:494:13:494:13 | a | file://:0:0:0:0 | &ref | main.rs:494:13:494:13 | receiver for a | -| 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:479:24:479:33 | source(...) | file://:0:0:0:0 | &ref | main.rs:479:24:479:33 | receiver for source(...) | +| 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:482:44:482:55 | default_name | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | receiver for default_name | +| main.rs:483:18:483:18 | n | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | receiver for n | +| main.rs:506:13:506:13 | a | file://:0:0:0:0 | &ref | main.rs:506:13:506:13 | receiver for a | +| 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 707a63342ba4..00640ed9aa47 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,232 @@ 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: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 | +| 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 +277,275 @@ 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: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(...) | +| 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 +558,57 @@ 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: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(...) | +| 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 598aed6777fb..7cab42da52b4 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); // $ hasValueFlow=8 } fn block_expression1() -> i64 { diff --git a/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected index ebe4e66e6e2a..7db157837813 100644 --- a/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected @@ -1,2 +1,2 @@ multipleCallTargets -| main.rs:362:14:362:30 | ... .lt(...) | +| main.rs:389:14:389:30 | ... .lt(...) | diff --git a/rust/ql/test/library-tests/dataflow/models/main.rs b/rust/ql/test/library-tests/dataflow/models/main.rs index 0430b6f8dff1..7daa883996f2 100644 --- a/rust/ql/test/library-tests/dataflow/models/main.rs +++ b/rust/ql/test/library-tests/dataflow/models/main.rs @@ -249,6 +249,33 @@ fn test_enum_method_source() { } } +mod source_into_function { + use super::sink; + + // has a source model + fn pass_source(_i: i64, f: impl FnOnce(i64) -> A) -> A { + f(42) + } + + fn test_source_into_function() { + let a = |a| sink(a); // $ hasValueFlow=1 + pass_source(1, a); + + pass_source(2, |a| { + sink(a); // $ hasValueFlow=2 + }); + + fn f(a: i64) { + sink(a) // $ hasValueFlow=3 + } + pass_source(3, f); + + pass_source(4, async move |a| { + sink(a); // $ hasValueFlow=4 + }); + } +} + // has a sink model fn enum_sink(e: MyFieldEnum) {} diff --git a/rust/ql/test/library-tests/dataflow/models/models.expected b/rust/ql/test/library-tests/dataflow/models/models.expected index db7489809b85..955b0b81b443 100644 --- a/rust/ql/test/library-tests/dataflow/models/models.expected +++ b/rust/ql/test/library-tests/dataflow/models/models.expected @@ -6,22 +6,23 @@ models | 5 | Source: main::arg_source; Argument[0]; test-source | | 6 | Source: main::enum_source; ReturnValue.Field[main::MyFieldEnum::D::field_d]; test-source | | 7 | Source: main::simple_source; ReturnValue; test-source | -| 8 | Summary: <_ as core::cmp::Ord>::max; Argument[self]; ReturnValue; value | -| 9 | Summary: <_ as core::cmp::PartialOrd>::lt; Argument[self].Reference; ReturnValue; taint | -| 10 | Summary: main::apply; Argument[0]; Argument[1].Parameter[0]; value | -| 11 | Summary: main::apply; Argument[1].ReturnValue; ReturnValue; value | -| 12 | Summary: main::coerce; Argument[0]; ReturnValue; taint | -| 13 | Summary: main::get_array_element; Argument[0].Element; ReturnValue; value | -| 14 | Summary: main::get_async_number; Argument[0]; ReturnValue.Future; value | -| 15 | Summary: main::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value | -| 16 | Summary: main::get_tuple_element; Argument[0].Field[0]; ReturnValue; value | -| 17 | Summary: main::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value | -| 18 | Summary: main::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value | -| 19 | Summary: main::set_array_element; Argument[0]; ReturnValue.Element; value | -| 20 | Summary: main::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value | -| 21 | Summary: main::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value | -| 22 | Summary: main::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value | -| 23 | Summary: main::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value | +| 8 | Source: main::source_into_function::pass_source; Argument[1].Parameter[0]; test-source | +| 9 | Summary: <_ as core::cmp::Ord>::max; Argument[self]; ReturnValue; value | +| 10 | Summary: <_ as core::cmp::PartialOrd>::lt; Argument[self].Reference; ReturnValue; taint | +| 11 | Summary: main::apply; Argument[0]; Argument[1].Parameter[0]; value | +| 12 | Summary: main::apply; Argument[1].ReturnValue; ReturnValue; value | +| 13 | Summary: main::coerce; Argument[0]; ReturnValue; taint | +| 14 | Summary: main::get_array_element; Argument[0].Element; ReturnValue; value | +| 15 | Summary: main::get_async_number; Argument[0]; ReturnValue.Future; value | +| 16 | Summary: main::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value | +| 17 | Summary: main::get_tuple_element; Argument[0].Field[0]; ReturnValue; value | +| 18 | Summary: main::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value | +| 19 | Summary: main::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value | +| 20 | Summary: main::set_array_element; Argument[0]; ReturnValue.Element; value | +| 21 | Summary: main::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value | +| 22 | Summary: main::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value | +| 23 | Summary: main::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value | +| 24 | Summary: main::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value | edges | main.rs:15:9:15:9 | s | main.rs:16:19:16:19 | s | provenance | | | main.rs:15:9:15:9 | s | main.rs:16:19:16:19 | s | provenance | | @@ -31,7 +32,7 @@ edges | main.rs:16:19:16:19 | s | main.rs:16:10:16:20 | identity(...) | provenance | QL | | main.rs:25:9:25:9 | s | main.rs:26:17:26:17 | s | provenance | | | main.rs:25:13:25:22 | source(...) | main.rs:25:9:25:9 | s | provenance | | -| main.rs:26:17:26:17 | s | main.rs:26:10:26:18 | coerce(...) | provenance | MaD:12 | +| main.rs:26:17:26:17 | s | main.rs:26:10:26:18 | coerce(...) | provenance | MaD:13 | | main.rs:40:9:40:9 | s | main.rs:41:27:41:27 | s | provenance | | | main.rs:40:9:40:9 | s | main.rs:41:27:41:27 | s | provenance | | | main.rs:40:13:40:21 | source(...) | main.rs:40:9:40:9 | s | provenance | | @@ -42,8 +43,8 @@ edges | main.rs:41:14:41:28 | ...::A(...) [A] | main.rs:41:9:41:10 | e1 [A] | provenance | | | main.rs:41:27:41:27 | s | main.rs:41:14:41:28 | ...::A(...) [A] | provenance | | | main.rs:41:27:41:27 | s | main.rs:41:14:41:28 | ...::A(...) [A] | provenance | | -| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:18 | -| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:18 | +| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:19 | +| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:19 | | main.rs:53:9:53:9 | s | main.rs:54:26:54:26 | s | provenance | | | main.rs:53:9:53:9 | s | main.rs:54:26:54:26 | s | provenance | | | main.rs:53:13:53:21 | source(...) | main.rs:53:9:53:9 | s | provenance | | @@ -52,8 +53,8 @@ edges | main.rs:54:9:54:10 | e1 [B] | main.rs:55:11:55:12 | e1 [B] | provenance | | | main.rs:54:14:54:27 | set_var_pos(...) [B] | main.rs:54:9:54:10 | e1 [B] | provenance | | | main.rs:54:14:54:27 | set_var_pos(...) [B] | main.rs:54:9:54:10 | e1 [B] | provenance | | -| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:23 | -| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:23 | +| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:24 | +| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:24 | | main.rs:55:11:55:12 | e1 [B] | main.rs:57:9:57:23 | ...::B(...) [B] | provenance | | | main.rs:55:11:55:12 | e1 [B] | main.rs:57:9:57:23 | ...::B(...) [B] | provenance | | | main.rs:57:9:57:23 | ...::B(...) [B] | main.rs:57:22:57:22 | i | provenance | | @@ -70,8 +71,8 @@ edges | main.rs:73:14:73:42 | ...::C {...} [C] | main.rs:73:9:73:10 | e1 [C] | provenance | | | main.rs:73:40:73:40 | s | main.rs:73:14:73:42 | ...::C {...} [C] | provenance | | | main.rs:73:40:73:40 | s | main.rs:73:14:73:42 | ...::C {...} [C] | provenance | | -| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:17 | -| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:17 | +| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:18 | +| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:18 | | main.rs:85:9:85:9 | s | main.rs:86:28:86:28 | s | provenance | | | main.rs:85:9:85:9 | s | main.rs:86:28:86:28 | s | provenance | | | main.rs:85:13:85:21 | source(...) | main.rs:85:9:85:9 | s | provenance | | @@ -80,8 +81,8 @@ edges | main.rs:86:9:86:10 | e1 [D] | main.rs:87:11:87:12 | e1 [D] | provenance | | | main.rs:86:14:86:29 | set_var_field(...) [D] | main.rs:86:9:86:10 | e1 [D] | provenance | | | main.rs:86:14:86:29 | set_var_field(...) [D] | main.rs:86:9:86:10 | e1 [D] | provenance | | -| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:22 | -| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:22 | +| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:23 | +| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:23 | | main.rs:87:11:87:12 | e1 [D] | main.rs:89:9:89:37 | ...::D {...} [D] | provenance | | | main.rs:87:11:87:12 | e1 [D] | main.rs:89:9:89:37 | ...::D {...} [D] | provenance | | | main.rs:89:9:89:37 | ...::D {...} [D] | main.rs:89:35:89:35 | i | provenance | | @@ -98,8 +99,8 @@ edges | main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | main.rs:105:9:105:17 | my_struct [MyStruct.field1] | provenance | | | main.rs:106:17:106:17 | s | main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | provenance | | | main.rs:106:17:106:17 | s | main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | provenance | | -| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:15 | -| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:15 | +| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:16 | +| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:16 | | main.rs:126:9:126:9 | s | main.rs:127:38:127:38 | s | provenance | | | main.rs:126:9:126:9 | s | main.rs:127:38:127:38 | s | provenance | | | main.rs:126:13:126:21 | source(...) | main.rs:126:9:126:9 | s | provenance | | @@ -108,16 +109,16 @@ edges | main.rs:127:9:127:17 | my_struct [MyStruct.field2] | main.rs:129:10:129:18 | my_struct [MyStruct.field2] | provenance | | | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | main.rs:127:9:127:17 | my_struct [MyStruct.field2] | provenance | | | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | main.rs:127:9:127:17 | my_struct [MyStruct.field2] | provenance | | -| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:20 | -| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:20 | +| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:21 | +| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:21 | | main.rs:129:10:129:18 | my_struct [MyStruct.field2] | main.rs:129:10:129:25 | my_struct.field2 | provenance | | | main.rs:129:10:129:18 | my_struct [MyStruct.field2] | main.rs:129:10:129:25 | my_struct.field2 | provenance | | | main.rs:138:9:138:9 | s | main.rs:139:29:139:29 | s | provenance | | | main.rs:138:9:138:9 | s | main.rs:139:29:139:29 | s | provenance | | | main.rs:138:13:138:21 | source(...) | main.rs:138:9:138:9 | s | provenance | | | main.rs:138:13:138:21 | source(...) | main.rs:138:9:138:9 | s | provenance | | -| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:13 | -| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:13 | +| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:14 | +| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:14 | | main.rs:139:29:139:29 | s | main.rs:139:28:139:30 | [...] [element] | provenance | | | main.rs:139:29:139:29 | s | main.rs:139:28:139:30 | [...] [element] | provenance | | | main.rs:148:9:148:9 | s | main.rs:149:33:149:33 | s | provenance | | @@ -128,8 +129,8 @@ edges | main.rs:149:9:149:11 | arr [element] | main.rs:150:10:150:12 | arr [element] | provenance | | | main.rs:149:15:149:34 | set_array_element(...) [element] | main.rs:149:9:149:11 | arr [element] | provenance | | | main.rs:149:15:149:34 | set_array_element(...) [element] | main.rs:149:9:149:11 | arr [element] | provenance | | -| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:19 | -| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:19 | +| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:20 | +| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:20 | | main.rs:150:10:150:12 | arr [element] | main.rs:150:10:150:15 | arr[0] | provenance | | | main.rs:150:10:150:12 | arr [element] | main.rs:150:10:150:15 | arr[0] | provenance | | | main.rs:159:9:159:9 | s | main.rs:160:14:160:14 | s | provenance | | @@ -142,8 +143,8 @@ edges | main.rs:160:13:160:18 | TupleExpr [tuple.0] | main.rs:160:9:160:9 | t [tuple.0] | provenance | | | main.rs:160:14:160:14 | s | main.rs:160:13:160:18 | TupleExpr [tuple.0] | provenance | | | main.rs:160:14:160:14 | s | main.rs:160:13:160:18 | TupleExpr [tuple.0] | provenance | | -| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:16 | -| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:16 | +| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:17 | +| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:17 | | main.rs:172:9:172:9 | s | main.rs:173:31:173:31 | s | provenance | | | main.rs:172:9:172:9 | s | main.rs:173:31:173:31 | s | provenance | | | main.rs:172:13:172:22 | source(...) | main.rs:172:9:172:9 | s | provenance | | @@ -152,8 +153,8 @@ edges | main.rs:173:9:173:9 | t [tuple.1] | main.rs:175:10:175:10 | t [tuple.1] | provenance | | | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | main.rs:173:9:173:9 | t [tuple.1] | provenance | | | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | main.rs:173:9:173:9 | t [tuple.1] | provenance | | -| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:21 | -| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:21 | +| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:22 | +| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:22 | | main.rs:175:10:175:10 | t [tuple.1] | main.rs:175:10:175:12 | t.1 | provenance | | | main.rs:175:10:175:10 | t [tuple.1] | main.rs:175:10:175:12 | t.1 | provenance | | | main.rs:187:9:187:9 | s | main.rs:192:11:192:11 | s | provenance | | @@ -162,8 +163,8 @@ edges | main.rs:187:13:187:22 | source(...) | main.rs:187:9:187:9 | s | provenance | | | main.rs:188:14:188:14 | ... | main.rs:189:14:189:14 | n | provenance | | | main.rs:188:14:188:14 | ... | main.rs:189:14:189:14 | n | provenance | | -| main.rs:192:11:192:11 | s | main.rs:188:14:188:14 | ... | provenance | MaD:10 | -| main.rs:192:11:192:11 | s | main.rs:188:14:188:14 | ... | provenance | MaD:10 | +| main.rs:192:11:192:11 | s | main.rs:188:14:188:14 | ... | provenance | MaD:11 | +| main.rs:192:11:192:11 | s | main.rs:188:14:188:14 | ... | provenance | MaD:11 | | main.rs:196:13:196:22 | source(...) | main.rs:198:23:198:23 | f [captured s] | provenance | | | main.rs:196:13:196:22 | source(...) | main.rs:198:23:198:23 | f [captured s] | provenance | | | main.rs:197:40:197:40 | s | main.rs:197:17:197:42 | if ... {...} else {...} | provenance | | @@ -172,14 +173,14 @@ edges | main.rs:198:9:198:9 | t | main.rs:199:10:199:10 | t | provenance | | | main.rs:198:13:198:24 | apply(...) | main.rs:198:9:198:9 | t | provenance | | | main.rs:198:13:198:24 | apply(...) | main.rs:198:9:198:9 | t | provenance | | -| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:10 | -| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:10 | | main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:11 | | main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:11 | -| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:10 | -| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:10 | +| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:12 | +| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:12 | | main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:11 | | main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:11 | +| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:12 | +| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:12 | | main.rs:203:9:203:9 | s | main.rs:205:19:205:19 | s | provenance | | | main.rs:203:9:203:9 | s | main.rs:205:19:205:19 | s | provenance | | | main.rs:203:13:203:22 | source(...) | main.rs:203:9:203:9 | s | provenance | | @@ -190,10 +191,10 @@ edges | main.rs:205:9:205:9 | t | main.rs:206:10:206:10 | t | provenance | | | main.rs:205:13:205:23 | apply(...) | main.rs:205:9:205:9 | t | provenance | | | main.rs:205:13:205:23 | apply(...) | main.rs:205:9:205:9 | t | provenance | | -| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | provenance | MaD:10 | -| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | provenance | MaD:10 | -| main.rs:205:19:205:19 | s | main.rs:205:13:205:23 | apply(...) | provenance | MaD:10 | -| main.rs:205:19:205:19 | s | main.rs:205:13:205:23 | apply(...) | provenance | MaD:10 | +| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | provenance | MaD:11 | +| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | provenance | MaD:11 | +| main.rs:205:19:205:19 | s | main.rs:205:13:205:23 | apply(...) | provenance | MaD:11 | +| main.rs:205:19:205:19 | s | main.rs:205:13:205:23 | apply(...) | provenance | MaD:11 | | main.rs:215:9:215:9 | s | main.rs:216:30:216:30 | s | provenance | | | main.rs:215:9:215:9 | s | main.rs:216:30:216:30 | s | provenance | | | main.rs:215:13:215:22 | source(...) | main.rs:215:9:215:9 | s | provenance | | @@ -204,8 +205,8 @@ edges | main.rs:216:13:216:31 | get_async_number(...) [future] | main.rs:216:13:216:37 | await ... | provenance | | | main.rs:216:13:216:37 | await ... | main.rs:216:9:216:9 | t | provenance | | | main.rs:216:13:216:37 | await ... | main.rs:216:9:216:9 | t | provenance | | -| main.rs:216:30:216:30 | s | main.rs:216:13:216:31 | get_async_number(...) [future] | provenance | MaD:14 | -| main.rs:216:30:216:30 | s | main.rs:216:13:216:31 | get_async_number(...) [future] | provenance | MaD:14 | +| main.rs:216:30:216:30 | s | main.rs:216:13:216:31 | get_async_number(...) [future] | provenance | MaD:15 | +| main.rs:216:30:216:30 | s | main.rs:216:13:216:31 | get_async_number(...) [future] | provenance | MaD:15 | | main.rs:236:9:236:9 | s [D] | main.rs:237:11:237:11 | s [D] | provenance | | | main.rs:236:9:236:9 | s [D] | main.rs:237:11:237:11 | s [D] | provenance | | | main.rs:236:13:236:23 | enum_source | main.rs:236:13:236:27 | enum_source(...) [D] | provenance | Src:MaD:6 | @@ -230,70 +231,86 @@ edges | main.rs:247:9:247:37 | ...::C {...} [C] | main.rs:247:35:247:35 | i | provenance | | | main.rs:247:35:247:35 | i | main.rs:247:47:247:47 | i | provenance | | | main.rs:247:35:247:35 | i | main.rs:247:47:247:47 | i | provenance | | -| main.rs:256:9:256:9 | s | main.rs:257:41:257:41 | s | provenance | | -| main.rs:256:9:256:9 | s | main.rs:257:41:257:41 | s | provenance | | -| main.rs:256:13:256:22 | source(...) | main.rs:256:9:256:9 | s | provenance | | -| main.rs:256:13:256:22 | source(...) | main.rs:256:9:256:9 | s | provenance | | -| main.rs:257:15:257:43 | ...::C {...} [C] | main.rs:257:5:257:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 | -| main.rs:257:15:257:43 | ...::C {...} [C] | main.rs:257:5:257:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 | -| main.rs:257:41:257:41 | s | main.rs:257:15:257:43 | ...::C {...} [C] | provenance | | -| main.rs:257:41:257:41 | s | main.rs:257:15:257:43 | ...::C {...} [C] | provenance | | -| main.rs:262:9:262:9 | s | main.rs:263:39:263:39 | s | provenance | | -| main.rs:262:9:262:9 | s | main.rs:263:39:263:39 | s | provenance | | -| main.rs:262:13:262:22 | source(...) | main.rs:262:9:262:9 | s | provenance | | -| main.rs:262:13:262:22 | source(...) | main.rs:262:9:262:9 | s | provenance | | -| main.rs:263:9:263:9 | e [D] | main.rs:264:5:264:5 | e [D] | provenance | | -| main.rs:263:9:263:9 | e [D] | main.rs:264:5:264:5 | e [D] | provenance | | -| main.rs:263:13:263:41 | ...::D {...} [D] | main.rs:263:9:263:9 | e [D] | provenance | | -| main.rs:263:13:263:41 | ...::D {...} [D] | main.rs:263:9:263:9 | e [D] | provenance | | -| main.rs:263:39:263:39 | s | main.rs:263:13:263:41 | ...::D {...} [D] | provenance | | -| main.rs:263:39:263:39 | s | main.rs:263:13:263:41 | ...::D {...} [D] | provenance | | -| main.rs:264:5:264:5 | e [D] | main.rs:264:7:264:10 | sink | provenance | MaD:1 Sink:MaD:1 | -| main.rs:264:5:264:5 | e [D] | main.rs:264:7:264:10 | sink | provenance | MaD:1 Sink:MaD:1 | -| main.rs:273:9:273:9 | s | main.rs:274:10:274:10 | s | provenance | | -| main.rs:273:9:273:9 | s | main.rs:274:10:274:10 | s | provenance | | -| main.rs:273:13:273:25 | simple_source | main.rs:273:13:273:29 | simple_source(...) | provenance | Src:MaD:7 MaD:7 | -| main.rs:273:13:273:25 | simple_source | main.rs:273:13:273:29 | simple_source(...) | provenance | Src:MaD:7 MaD:7 | -| main.rs:273:13:273:29 | simple_source(...) | main.rs:273:9:273:9 | s | provenance | | -| main.rs:273:13:273:29 | simple_source(...) | main.rs:273:9:273:9 | s | provenance | | -| main.rs:281:9:281:9 | s | main.rs:282:17:282:17 | s | provenance | | -| main.rs:281:9:281:9 | s | main.rs:282:17:282:17 | s | provenance | | -| main.rs:281:13:281:22 | source(...) | main.rs:281:9:281:9 | s | provenance | | -| main.rs:281:13:281:22 | source(...) | main.rs:281:9:281:9 | s | provenance | | -| main.rs:282:17:282:17 | s | main.rs:282:5:282:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 | -| main.rs:282:17:282:17 | s | main.rs:282:5:282:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 | -| main.rs:290:5:290:14 | arg_source | main.rs:290:16:290:16 | [post] i | provenance | Src:MaD:5 MaD:5 | -| main.rs:290:5:290:14 | arg_source | main.rs:290:16:290:16 | [post] i | provenance | Src:MaD:5 MaD:5 | -| main.rs:290:16:290:16 | [post] i | main.rs:291:10:291:10 | i | provenance | | -| main.rs:290:16:290:16 | [post] i | main.rs:291:10:291:10 | i | provenance | | -| main.rs:343:9:343:10 | x1 | main.rs:344:10:344:11 | x1 | provenance | | -| main.rs:343:9:343:10 | x1 | main.rs:344:10:344:11 | x1 | provenance | | -| main.rs:343:14:343:23 | source(...) | main.rs:343:14:343:30 | ... .max(...) | provenance | MaD:8 | -| main.rs:343:14:343:23 | source(...) | main.rs:343:14:343:30 | ... .max(...) | provenance | MaD:8 | -| main.rs:343:14:343:30 | ... .max(...) | main.rs:343:9:343:10 | x1 | provenance | | -| main.rs:343:14:343:30 | ... .max(...) | main.rs:343:9:343:10 | x1 | provenance | | -| main.rs:346:9:346:10 | x2 [MyStruct.field1] | main.rs:354:10:354:11 | x2 [MyStruct.field1] | provenance | | -| main.rs:346:9:346:10 | x2 [MyStruct.field1] | main.rs:354:10:354:11 | x2 [MyStruct.field1] | provenance | | -| main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | main.rs:346:9:346:10 | x2 [MyStruct.field1] | provenance | | -| main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | main.rs:346:9:346:10 | x2 [MyStruct.field1] | provenance | | -| main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:8 | -| main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:8 | -| main.rs:347:17:347:26 | source(...) | main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | provenance | | -| main.rs:347:17:347:26 | source(...) | main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | provenance | | -| main.rs:354:10:354:11 | x2 [MyStruct.field1] | main.rs:354:10:354:18 | x2.field1 | provenance | | -| main.rs:354:10:354:11 | x2 [MyStruct.field1] | main.rs:354:10:354:18 | x2.field1 | provenance | | -| main.rs:359:9:359:10 | x4 | main.rs:360:10:360:11 | x4 | provenance | | -| main.rs:359:9:359:10 | x4 | main.rs:360:10:360:11 | x4 | provenance | | -| main.rs:359:14:359:23 | source(...) | main.rs:359:14:359:30 | ... .max(...) | provenance | MaD:8 | -| main.rs:359:14:359:23 | source(...) | main.rs:359:14:359:30 | ... .max(...) | provenance | MaD:8 | -| main.rs:359:14:359:30 | ... .max(...) | main.rs:359:9:359:10 | x4 | provenance | | -| main.rs:359:14:359:30 | ... .max(...) | main.rs:359:9:359:10 | x4 | provenance | | -| main.rs:362:9:362:10 | x5 | main.rs:363:10:363:11 | x5 | provenance | | -| main.rs:362:14:362:23 | source(...) | main.rs:362:14:362:30 | ... .lt(...) | provenance | MaD:9 | -| main.rs:362:14:362:30 | ... .lt(...) | main.rs:362:9:362:10 | x5 | provenance | | -| main.rs:365:9:365:10 | x6 | main.rs:366:10:366:11 | x6 | provenance | | -| main.rs:365:14:365:23 | source(...) | main.rs:365:14:365:27 | ... < ... | provenance | MaD:9 | -| main.rs:365:14:365:27 | ... < ... | main.rs:365:9:365:10 | x6 | provenance | | +| main.rs:261:18:261:18 | ... | main.rs:261:26:261:26 | a | provenance | | +| main.rs:261:18:261:18 | ... | main.rs:261:26:261:26 | a | provenance | | +| main.rs:262:9:262:19 | pass_source | main.rs:261:18:261:18 | ... | provenance | Src:MaD:8 | +| main.rs:262:9:262:19 | pass_source | main.rs:261:18:261:18 | ... | provenance | Src:MaD:8 | +| main.rs:264:9:264:19 | pass_source | main.rs:264:25:264:25 | ... | provenance | Src:MaD:8 | +| main.rs:264:9:264:19 | pass_source | main.rs:264:25:264:25 | ... | provenance | Src:MaD:8 | +| main.rs:264:25:264:25 | ... | main.rs:265:18:265:18 | a | provenance | | +| main.rs:264:25:264:25 | ... | main.rs:265:18:265:18 | a | provenance | | +| main.rs:268:14:268:19 | ...: i64 | main.rs:269:18:269:18 | a | provenance | | +| main.rs:268:14:268:19 | ...: i64 | main.rs:269:18:269:18 | a | provenance | | +| main.rs:271:9:271:19 | pass_source | main.rs:268:14:268:19 | ...: i64 | provenance | Src:MaD:8 | +| main.rs:271:9:271:19 | pass_source | main.rs:268:14:268:19 | ...: i64 | provenance | Src:MaD:8 | +| main.rs:273:9:273:19 | pass_source | main.rs:273:36:273:36 | ... | provenance | Src:MaD:8 | +| main.rs:273:9:273:19 | pass_source | main.rs:273:36:273:36 | ... | provenance | Src:MaD:8 | +| main.rs:273:36:273:36 | ... | main.rs:274:18:274:18 | a | provenance | | +| main.rs:273:36:273:36 | ... | main.rs:274:18:274:18 | a | provenance | | +| main.rs:283:9:283:9 | s | main.rs:284:41:284:41 | s | provenance | | +| main.rs:283:9:283:9 | s | main.rs:284:41:284:41 | s | provenance | | +| main.rs:283:13:283:22 | source(...) | main.rs:283:9:283:9 | s | provenance | | +| main.rs:283:13:283:22 | source(...) | main.rs:283:9:283:9 | s | provenance | | +| main.rs:284:15:284:43 | ...::C {...} [C] | main.rs:284:5:284:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 | +| main.rs:284:15:284:43 | ...::C {...} [C] | main.rs:284:5:284:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 | +| main.rs:284:41:284:41 | s | main.rs:284:15:284:43 | ...::C {...} [C] | provenance | | +| main.rs:284:41:284:41 | s | main.rs:284:15:284:43 | ...::C {...} [C] | provenance | | +| main.rs:289:9:289:9 | s | main.rs:290:39:290:39 | s | provenance | | +| main.rs:289:9:289:9 | s | main.rs:290:39:290:39 | s | provenance | | +| main.rs:289:13:289:22 | source(...) | main.rs:289:9:289:9 | s | provenance | | +| main.rs:289:13:289:22 | source(...) | main.rs:289:9:289:9 | s | provenance | | +| main.rs:290:9:290:9 | e [D] | main.rs:291:5:291:5 | e [D] | provenance | | +| main.rs:290:9:290:9 | e [D] | main.rs:291:5:291:5 | e [D] | provenance | | +| main.rs:290:13:290:41 | ...::D {...} [D] | main.rs:290:9:290:9 | e [D] | provenance | | +| main.rs:290:13:290:41 | ...::D {...} [D] | main.rs:290:9:290:9 | e [D] | provenance | | +| main.rs:290:39:290:39 | s | main.rs:290:13:290:41 | ...::D {...} [D] | provenance | | +| main.rs:290:39:290:39 | s | main.rs:290:13:290:41 | ...::D {...} [D] | provenance | | +| main.rs:291:5:291:5 | e [D] | main.rs:291:7:291:10 | sink | provenance | MaD:1 Sink:MaD:1 | +| main.rs:291:5:291:5 | e [D] | main.rs:291:7:291:10 | sink | provenance | MaD:1 Sink:MaD:1 | +| main.rs:300:9:300:9 | s | main.rs:301:10:301:10 | s | provenance | | +| main.rs:300:9:300:9 | s | main.rs:301:10:301:10 | s | provenance | | +| main.rs:300:13:300:25 | simple_source | main.rs:300:13:300:29 | simple_source(...) | provenance | Src:MaD:7 MaD:7 | +| main.rs:300:13:300:25 | simple_source | main.rs:300:13:300:29 | simple_source(...) | provenance | Src:MaD:7 MaD:7 | +| main.rs:300:13:300:29 | simple_source(...) | main.rs:300:9:300:9 | s | provenance | | +| main.rs:300:13:300:29 | simple_source(...) | main.rs:300:9:300:9 | s | provenance | | +| main.rs:308:9:308:9 | s | main.rs:309:17:309:17 | s | provenance | | +| main.rs:308:9:308:9 | s | main.rs:309:17:309:17 | s | provenance | | +| main.rs:308:13:308:22 | source(...) | main.rs:308:9:308:9 | s | provenance | | +| main.rs:308:13:308:22 | source(...) | main.rs:308:9:308:9 | s | provenance | | +| main.rs:309:17:309:17 | s | main.rs:309:5:309:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 | +| main.rs:309:17:309:17 | s | main.rs:309:5:309:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 | +| main.rs:317:5:317:14 | arg_source | main.rs:317:16:317:16 | [post] i | provenance | Src:MaD:5 MaD:5 | +| main.rs:317:5:317:14 | arg_source | main.rs:317:16:317:16 | [post] i | provenance | Src:MaD:5 MaD:5 | +| main.rs:317:16:317:16 | [post] i | main.rs:318:10:318:10 | i | provenance | | +| main.rs:317:16:317:16 | [post] i | main.rs:318:10:318:10 | i | provenance | | +| main.rs:370:9:370:10 | x1 | main.rs:371:10:371:11 | x1 | provenance | | +| main.rs:370:9:370:10 | x1 | main.rs:371:10:371:11 | x1 | provenance | | +| main.rs:370:14:370:23 | source(...) | main.rs:370:14:370:30 | ... .max(...) | provenance | MaD:9 | +| main.rs:370:14:370:23 | source(...) | main.rs:370:14:370:30 | ... .max(...) | provenance | MaD:9 | +| main.rs:370:14:370:30 | ... .max(...) | main.rs:370:9:370:10 | x1 | provenance | | +| main.rs:370:14:370:30 | ... .max(...) | main.rs:370:9:370:10 | x1 | provenance | | +| main.rs:373:9:373:10 | x2 [MyStruct.field1] | main.rs:381:10:381:11 | x2 [MyStruct.field1] | provenance | | +| main.rs:373:9:373:10 | x2 [MyStruct.field1] | main.rs:381:10:381:11 | x2 [MyStruct.field1] | provenance | | +| main.rs:373:14:380:6 | ... .max(...) [MyStruct.field1] | main.rs:373:9:373:10 | x2 [MyStruct.field1] | provenance | | +| main.rs:373:14:380:6 | ... .max(...) [MyStruct.field1] | main.rs:373:9:373:10 | x2 [MyStruct.field1] | provenance | | +| main.rs:373:15:376:5 | MyStruct {...} [MyStruct.field1] | main.rs:373:14:380:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:9 | +| main.rs:373:15:376:5 | MyStruct {...} [MyStruct.field1] | main.rs:373:14:380:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:9 | +| main.rs:374:17:374:26 | source(...) | main.rs:373:15:376:5 | MyStruct {...} [MyStruct.field1] | provenance | | +| main.rs:374:17:374:26 | source(...) | main.rs:373:15:376:5 | MyStruct {...} [MyStruct.field1] | provenance | | +| main.rs:381:10:381:11 | x2 [MyStruct.field1] | main.rs:381:10:381:18 | x2.field1 | provenance | | +| main.rs:381:10:381:11 | x2 [MyStruct.field1] | main.rs:381:10:381:18 | x2.field1 | provenance | | +| main.rs:386:9:386:10 | x4 | main.rs:387:10:387:11 | x4 | provenance | | +| main.rs:386:9:386:10 | x4 | main.rs:387:10:387:11 | x4 | provenance | | +| main.rs:386:14:386:23 | source(...) | main.rs:386:14:386:30 | ... .max(...) | provenance | MaD:9 | +| main.rs:386:14:386:23 | source(...) | main.rs:386:14:386:30 | ... .max(...) | provenance | MaD:9 | +| main.rs:386:14:386:30 | ... .max(...) | main.rs:386:9:386:10 | x4 | provenance | | +| main.rs:386:14:386:30 | ... .max(...) | main.rs:386:9:386:10 | x4 | provenance | | +| main.rs:389:9:389:10 | x5 | main.rs:390:10:390:11 | x5 | provenance | | +| main.rs:389:14:389:23 | source(...) | main.rs:389:14:389:30 | ... .lt(...) | provenance | MaD:10 | +| main.rs:389:14:389:30 | ... .lt(...) | main.rs:389:9:389:10 | x5 | provenance | | +| main.rs:392:9:392:10 | x6 | main.rs:393:10:393:11 | x6 | provenance | | +| main.rs:392:14:392:23 | source(...) | main.rs:392:14:392:27 | ... < ... | provenance | MaD:10 | +| main.rs:392:14:392:27 | ... < ... | main.rs:392:9:392:10 | x6 | provenance | | nodes | main.rs:15:9:15:9 | s | semmle.label | s | | main.rs:15:9:15:9 | s | semmle.label | s | @@ -533,88 +550,112 @@ nodes | main.rs:247:35:247:35 | i | semmle.label | i | | main.rs:247:47:247:47 | i | semmle.label | i | | main.rs:247:47:247:47 | i | semmle.label | i | -| main.rs:256:9:256:9 | s | semmle.label | s | -| main.rs:256:9:256:9 | s | semmle.label | s | -| main.rs:256:13:256:22 | source(...) | semmle.label | source(...) | -| main.rs:256:13:256:22 | source(...) | semmle.label | source(...) | -| main.rs:257:5:257:13 | enum_sink | semmle.label | enum_sink | -| main.rs:257:5:257:13 | enum_sink | semmle.label | enum_sink | -| main.rs:257:15:257:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | -| main.rs:257:15:257:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | -| main.rs:257:41:257:41 | s | semmle.label | s | -| main.rs:257:41:257:41 | s | semmle.label | s | -| main.rs:262:9:262:9 | s | semmle.label | s | -| main.rs:262:9:262:9 | s | semmle.label | s | -| main.rs:262:13:262:22 | source(...) | semmle.label | source(...) | -| main.rs:262:13:262:22 | source(...) | semmle.label | source(...) | -| main.rs:263:9:263:9 | e [D] | semmle.label | e [D] | -| main.rs:263:9:263:9 | e [D] | semmle.label | e [D] | -| main.rs:263:13:263:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | -| main.rs:263:13:263:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | -| main.rs:263:39:263:39 | s | semmle.label | s | -| main.rs:263:39:263:39 | s | semmle.label | s | -| main.rs:264:5:264:5 | e [D] | semmle.label | e [D] | -| main.rs:264:5:264:5 | e [D] | semmle.label | e [D] | -| main.rs:264:7:264:10 | sink | semmle.label | sink | -| main.rs:264:7:264:10 | sink | semmle.label | sink | -| main.rs:273:9:273:9 | s | semmle.label | s | -| main.rs:273:9:273:9 | s | semmle.label | s | -| main.rs:273:13:273:25 | simple_source | semmle.label | simple_source | -| main.rs:273:13:273:25 | simple_source | semmle.label | simple_source | -| main.rs:273:13:273:29 | simple_source(...) | semmle.label | simple_source(...) | -| main.rs:273:13:273:29 | simple_source(...) | semmle.label | simple_source(...) | -| main.rs:274:10:274:10 | s | semmle.label | s | -| main.rs:274:10:274:10 | s | semmle.label | s | -| main.rs:281:9:281:9 | s | semmle.label | s | -| main.rs:281:9:281:9 | s | semmle.label | s | -| main.rs:281:13:281:22 | source(...) | semmle.label | source(...) | -| main.rs:281:13:281:22 | source(...) | semmle.label | source(...) | -| main.rs:282:5:282:15 | simple_sink | semmle.label | simple_sink | -| main.rs:282:5:282:15 | simple_sink | semmle.label | simple_sink | -| main.rs:282:17:282:17 | s | semmle.label | s | -| main.rs:282:17:282:17 | s | semmle.label | s | -| main.rs:290:5:290:14 | arg_source | semmle.label | arg_source | -| main.rs:290:5:290:14 | arg_source | semmle.label | arg_source | -| main.rs:290:16:290:16 | [post] i | semmle.label | [post] i | -| main.rs:290:16:290:16 | [post] i | semmle.label | [post] i | -| main.rs:291:10:291:10 | i | semmle.label | i | -| main.rs:291:10:291:10 | i | semmle.label | i | -| main.rs:343:9:343:10 | x1 | semmle.label | x1 | -| main.rs:343:9:343:10 | x1 | semmle.label | x1 | -| main.rs:343:14:343:23 | source(...) | semmle.label | source(...) | -| main.rs:343:14:343:23 | source(...) | semmle.label | source(...) | -| main.rs:343:14:343:30 | ... .max(...) | semmle.label | ... .max(...) | -| main.rs:343:14:343:30 | ... .max(...) | semmle.label | ... .max(...) | -| main.rs:344:10:344:11 | x1 | semmle.label | x1 | -| main.rs:344:10:344:11 | x1 | semmle.label | x1 | -| main.rs:346:9:346:10 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | -| main.rs:346:9:346:10 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | -| main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | semmle.label | ... .max(...) [MyStruct.field1] | -| main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | semmle.label | ... .max(...) [MyStruct.field1] | -| main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] | -| main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] | -| main.rs:347:17:347:26 | source(...) | semmle.label | source(...) | -| main.rs:347:17:347:26 | source(...) | semmle.label | source(...) | -| main.rs:354:10:354:11 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | -| main.rs:354:10:354:11 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | -| main.rs:354:10:354:18 | x2.field1 | semmle.label | x2.field1 | -| main.rs:354:10:354:18 | x2.field1 | semmle.label | x2.field1 | -| main.rs:359:9:359:10 | x4 | semmle.label | x4 | -| main.rs:359:9:359:10 | x4 | semmle.label | x4 | -| main.rs:359:14:359:23 | source(...) | semmle.label | source(...) | -| main.rs:359:14:359:23 | source(...) | semmle.label | source(...) | -| main.rs:359:14:359:30 | ... .max(...) | semmle.label | ... .max(...) | -| main.rs:359:14:359:30 | ... .max(...) | semmle.label | ... .max(...) | -| main.rs:360:10:360:11 | x4 | semmle.label | x4 | -| main.rs:360:10:360:11 | x4 | semmle.label | x4 | -| main.rs:362:9:362:10 | x5 | semmle.label | x5 | -| main.rs:362:14:362:23 | source(...) | semmle.label | source(...) | -| main.rs:362:14:362:30 | ... .lt(...) | semmle.label | ... .lt(...) | -| main.rs:363:10:363:11 | x5 | semmle.label | x5 | -| main.rs:365:9:365:10 | x6 | semmle.label | x6 | -| main.rs:365:14:365:23 | source(...) | semmle.label | source(...) | -| main.rs:365:14:365:27 | ... < ... | semmle.label | ... < ... | -| main.rs:366:10:366:11 | x6 | semmle.label | x6 | +| main.rs:261:18:261:18 | ... | semmle.label | ... | +| main.rs:261:18:261:18 | ... | semmle.label | ... | +| main.rs:261:26:261:26 | a | semmle.label | a | +| main.rs:261:26:261:26 | a | semmle.label | a | +| main.rs:262:9:262:19 | pass_source | semmle.label | pass_source | +| main.rs:262:9:262:19 | pass_source | semmle.label | pass_source | +| main.rs:264:9:264:19 | pass_source | semmle.label | pass_source | +| main.rs:264:9:264:19 | pass_source | semmle.label | pass_source | +| main.rs:264:25:264:25 | ... | semmle.label | ... | +| main.rs:264:25:264:25 | ... | semmle.label | ... | +| main.rs:265:18:265:18 | a | semmle.label | a | +| main.rs:265:18:265:18 | a | semmle.label | a | +| main.rs:268:14:268:19 | ...: i64 | semmle.label | ...: i64 | +| main.rs:268:14:268:19 | ...: i64 | semmle.label | ...: i64 | +| main.rs:269:18:269:18 | a | semmle.label | a | +| main.rs:269:18:269:18 | a | semmle.label | a | +| main.rs:271:9:271:19 | pass_source | semmle.label | pass_source | +| main.rs:271:9:271:19 | pass_source | semmle.label | pass_source | +| main.rs:273:9:273:19 | pass_source | semmle.label | pass_source | +| main.rs:273:9:273:19 | pass_source | semmle.label | pass_source | +| main.rs:273:36:273:36 | ... | semmle.label | ... | +| main.rs:273:36:273:36 | ... | semmle.label | ... | +| main.rs:274:18:274:18 | a | semmle.label | a | +| main.rs:274:18:274:18 | a | semmle.label | a | +| main.rs:283:9:283:9 | s | semmle.label | s | +| main.rs:283:9:283:9 | s | semmle.label | s | +| main.rs:283:13:283:22 | source(...) | semmle.label | source(...) | +| main.rs:283:13:283:22 | source(...) | semmle.label | source(...) | +| main.rs:284:5:284:13 | enum_sink | semmle.label | enum_sink | +| main.rs:284:5:284:13 | enum_sink | semmle.label | enum_sink | +| main.rs:284:15:284:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | +| main.rs:284:15:284:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | +| main.rs:284:41:284:41 | s | semmle.label | s | +| main.rs:284:41:284:41 | s | semmle.label | s | +| main.rs:289:9:289:9 | s | semmle.label | s | +| main.rs:289:9:289:9 | s | semmle.label | s | +| main.rs:289:13:289:22 | source(...) | semmle.label | source(...) | +| main.rs:289:13:289:22 | source(...) | semmle.label | source(...) | +| main.rs:290:9:290:9 | e [D] | semmle.label | e [D] | +| main.rs:290:9:290:9 | e [D] | semmle.label | e [D] | +| main.rs:290:13:290:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | +| main.rs:290:13:290:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | +| main.rs:290:39:290:39 | s | semmle.label | s | +| main.rs:290:39:290:39 | s | semmle.label | s | +| main.rs:291:5:291:5 | e [D] | semmle.label | e [D] | +| main.rs:291:5:291:5 | e [D] | semmle.label | e [D] | +| main.rs:291:7:291:10 | sink | semmle.label | sink | +| main.rs:291:7:291:10 | sink | semmle.label | sink | +| main.rs:300:9:300:9 | s | semmle.label | s | +| main.rs:300:9:300:9 | s | semmle.label | s | +| main.rs:300:13:300:25 | simple_source | semmle.label | simple_source | +| main.rs:300:13:300:25 | simple_source | semmle.label | simple_source | +| main.rs:300:13:300:29 | simple_source(...) | semmle.label | simple_source(...) | +| main.rs:300:13:300:29 | simple_source(...) | semmle.label | simple_source(...) | +| main.rs:301:10:301:10 | s | semmle.label | s | +| main.rs:301:10:301:10 | s | semmle.label | s | +| main.rs:308:9:308:9 | s | semmle.label | s | +| main.rs:308:9:308:9 | s | semmle.label | s | +| main.rs:308:13:308:22 | source(...) | semmle.label | source(...) | +| main.rs:308:13:308:22 | source(...) | semmle.label | source(...) | +| main.rs:309:5:309:15 | simple_sink | semmle.label | simple_sink | +| main.rs:309:5:309:15 | simple_sink | semmle.label | simple_sink | +| main.rs:309:17:309:17 | s | semmle.label | s | +| main.rs:309:17:309:17 | s | semmle.label | s | +| main.rs:317:5:317:14 | arg_source | semmle.label | arg_source | +| main.rs:317:5:317:14 | arg_source | semmle.label | arg_source | +| main.rs:317:16:317:16 | [post] i | semmle.label | [post] i | +| main.rs:317:16:317:16 | [post] i | semmle.label | [post] i | +| main.rs:318:10:318:10 | i | semmle.label | i | +| main.rs:318:10:318:10 | i | semmle.label | i | +| main.rs:370:9:370:10 | x1 | semmle.label | x1 | +| main.rs:370:9:370:10 | x1 | semmle.label | x1 | +| main.rs:370:14:370:23 | source(...) | semmle.label | source(...) | +| main.rs:370:14:370:23 | source(...) | semmle.label | source(...) | +| main.rs:370:14:370:30 | ... .max(...) | semmle.label | ... .max(...) | +| main.rs:370:14:370:30 | ... .max(...) | semmle.label | ... .max(...) | +| main.rs:371:10:371:11 | x1 | semmle.label | x1 | +| main.rs:371:10:371:11 | x1 | semmle.label | x1 | +| main.rs:373:9:373:10 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | +| main.rs:373:9:373:10 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | +| main.rs:373:14:380:6 | ... .max(...) [MyStruct.field1] | semmle.label | ... .max(...) [MyStruct.field1] | +| main.rs:373:14:380:6 | ... .max(...) [MyStruct.field1] | semmle.label | ... .max(...) [MyStruct.field1] | +| main.rs:373:15:376:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] | +| main.rs:373:15:376:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] | +| main.rs:374:17:374:26 | source(...) | semmle.label | source(...) | +| main.rs:374:17:374:26 | source(...) | semmle.label | source(...) | +| main.rs:381:10:381:11 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | +| main.rs:381:10:381:11 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | +| main.rs:381:10:381:18 | x2.field1 | semmle.label | x2.field1 | +| main.rs:381:10:381:18 | x2.field1 | semmle.label | x2.field1 | +| main.rs:386:9:386:10 | x4 | semmle.label | x4 | +| main.rs:386:9:386:10 | x4 | semmle.label | x4 | +| main.rs:386:14:386:23 | source(...) | semmle.label | source(...) | +| main.rs:386:14:386:23 | source(...) | semmle.label | source(...) | +| main.rs:386:14:386:30 | ... .max(...) | semmle.label | ... .max(...) | +| main.rs:386:14:386:30 | ... .max(...) | semmle.label | ... .max(...) | +| main.rs:387:10:387:11 | x4 | semmle.label | x4 | +| main.rs:387:10:387:11 | x4 | semmle.label | x4 | +| main.rs:389:9:389:10 | x5 | semmle.label | x5 | +| main.rs:389:14:389:23 | source(...) | semmle.label | source(...) | +| main.rs:389:14:389:30 | ... .lt(...) | semmle.label | ... .lt(...) | +| main.rs:390:10:390:11 | x5 | semmle.label | x5 | +| main.rs:392:9:392:10 | x6 | semmle.label | x6 | +| main.rs:392:14:392:23 | source(...) | semmle.label | source(...) | +| main.rs:392:14:392:27 | ... < ... | semmle.label | ... < ... | +| main.rs:393:10:393:11 | x6 | semmle.label | x6 | subpaths | main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | main.rs:197:17:197:42 | if ... {...} else {...} | main.rs:198:13:198:24 | apply(...) | | main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | main.rs:197:17:197:42 | if ... {...} else {...} | main.rs:198:13:198:24 | apply(...) | @@ -658,21 +699,29 @@ invalidSpecComponent | main.rs:239:47:239:47 | i | main.rs:236:13:236:23 | enum_source | main.rs:239:47:239:47 | i | $@ | main.rs:236:13:236:23 | enum_source | enum_source | | main.rs:247:47:247:47 | i | main.rs:245:15:245:20 | source | main.rs:247:47:247:47 | i | $@ | main.rs:245:15:245:20 | source | source | | main.rs:247:47:247:47 | i | main.rs:245:15:245:20 | source | main.rs:247:47:247:47 | i | $@ | main.rs:245:15:245:20 | source | source | -| main.rs:257:5:257:13 | enum_sink | main.rs:256:13:256:22 | source(...) | main.rs:257:5:257:13 | enum_sink | $@ | main.rs:256:13:256:22 | source(...) | source(...) | -| main.rs:257:5:257:13 | enum_sink | main.rs:256:13:256:22 | source(...) | main.rs:257:5:257:13 | enum_sink | $@ | main.rs:256:13:256:22 | source(...) | source(...) | -| main.rs:264:7:264:10 | sink | main.rs:262:13:262:22 | source(...) | main.rs:264:7:264:10 | sink | $@ | main.rs:262:13:262:22 | source(...) | source(...) | -| main.rs:264:7:264:10 | sink | main.rs:262:13:262:22 | source(...) | main.rs:264:7:264:10 | sink | $@ | main.rs:262:13:262:22 | source(...) | source(...) | -| main.rs:274:10:274:10 | s | main.rs:273:13:273:25 | simple_source | main.rs:274:10:274:10 | s | $@ | main.rs:273:13:273:25 | simple_source | simple_source | -| main.rs:274:10:274:10 | s | main.rs:273:13:273:25 | simple_source | main.rs:274:10:274:10 | s | $@ | main.rs:273:13:273:25 | simple_source | simple_source | -| main.rs:282:5:282:15 | simple_sink | main.rs:281:13:281:22 | source(...) | main.rs:282:5:282:15 | simple_sink | $@ | main.rs:281:13:281:22 | source(...) | source(...) | -| main.rs:282:5:282:15 | simple_sink | main.rs:281:13:281:22 | source(...) | main.rs:282:5:282:15 | simple_sink | $@ | main.rs:281:13:281:22 | source(...) | source(...) | -| main.rs:291:10:291:10 | i | main.rs:290:5:290:14 | arg_source | main.rs:291:10:291:10 | i | $@ | main.rs:290:5:290:14 | arg_source | arg_source | -| main.rs:291:10:291:10 | i | main.rs:290:5:290:14 | arg_source | main.rs:291:10:291:10 | i | $@ | main.rs:290:5:290:14 | arg_source | arg_source | -| main.rs:344:10:344:11 | x1 | main.rs:343:14:343:23 | source(...) | main.rs:344:10:344:11 | x1 | $@ | main.rs:343:14:343:23 | source(...) | source(...) | -| main.rs:344:10:344:11 | x1 | main.rs:343:14:343:23 | source(...) | main.rs:344:10:344:11 | x1 | $@ | main.rs:343:14:343:23 | source(...) | source(...) | -| main.rs:354:10:354:18 | x2.field1 | main.rs:347:17:347:26 | source(...) | main.rs:354:10:354:18 | x2.field1 | $@ | main.rs:347:17:347:26 | source(...) | source(...) | -| main.rs:354:10:354:18 | x2.field1 | main.rs:347:17:347:26 | source(...) | main.rs:354:10:354:18 | x2.field1 | $@ | main.rs:347:17:347:26 | source(...) | source(...) | -| main.rs:360:10:360:11 | x4 | main.rs:359:14:359:23 | source(...) | main.rs:360:10:360:11 | x4 | $@ | main.rs:359:14:359:23 | source(...) | source(...) | -| main.rs:360:10:360:11 | x4 | main.rs:359:14:359:23 | source(...) | main.rs:360:10:360:11 | x4 | $@ | main.rs:359:14:359:23 | source(...) | source(...) | -| main.rs:363:10:363:11 | x5 | main.rs:362:14:362:23 | source(...) | main.rs:363:10:363:11 | x5 | $@ | main.rs:362:14:362:23 | source(...) | source(...) | -| main.rs:366:10:366:11 | x6 | main.rs:365:14:365:23 | source(...) | main.rs:366:10:366:11 | x6 | $@ | main.rs:365:14:365:23 | source(...) | source(...) | +| main.rs:261:26:261:26 | a | main.rs:262:9:262:19 | pass_source | main.rs:261:26:261:26 | a | $@ | main.rs:262:9:262:19 | pass_source | pass_source | +| main.rs:261:26:261:26 | a | main.rs:262:9:262:19 | pass_source | main.rs:261:26:261:26 | a | $@ | main.rs:262:9:262:19 | pass_source | pass_source | +| main.rs:265:18:265:18 | a | main.rs:264:9:264:19 | pass_source | main.rs:265:18:265:18 | a | $@ | main.rs:264:9:264:19 | pass_source | pass_source | +| main.rs:265:18:265:18 | a | main.rs:264:9:264:19 | pass_source | main.rs:265:18:265:18 | a | $@ | main.rs:264:9:264:19 | pass_source | pass_source | +| main.rs:269:18:269:18 | a | main.rs:271:9:271:19 | pass_source | main.rs:269:18:269:18 | a | $@ | main.rs:271:9:271:19 | pass_source | pass_source | +| main.rs:269:18:269:18 | a | main.rs:271:9:271:19 | pass_source | main.rs:269:18:269:18 | a | $@ | main.rs:271:9:271:19 | pass_source | pass_source | +| main.rs:274:18:274:18 | a | main.rs:273:9:273:19 | pass_source | main.rs:274:18:274:18 | a | $@ | main.rs:273:9:273:19 | pass_source | pass_source | +| main.rs:274:18:274:18 | a | main.rs:273:9:273:19 | pass_source | main.rs:274:18:274:18 | a | $@ | main.rs:273:9:273:19 | pass_source | pass_source | +| main.rs:284:5:284:13 | enum_sink | main.rs:283:13:283:22 | source(...) | main.rs:284:5:284:13 | enum_sink | $@ | main.rs:283:13:283:22 | source(...) | source(...) | +| main.rs:284:5:284:13 | enum_sink | main.rs:283:13:283:22 | source(...) | main.rs:284:5:284:13 | enum_sink | $@ | main.rs:283:13:283:22 | source(...) | source(...) | +| main.rs:291:7:291:10 | sink | main.rs:289:13:289:22 | source(...) | main.rs:291:7:291:10 | sink | $@ | main.rs:289:13:289:22 | source(...) | source(...) | +| main.rs:291:7:291:10 | sink | main.rs:289:13:289:22 | source(...) | main.rs:291:7:291:10 | sink | $@ | main.rs:289:13:289:22 | source(...) | source(...) | +| main.rs:301:10:301:10 | s | main.rs:300:13:300:25 | simple_source | main.rs:301:10:301:10 | s | $@ | main.rs:300:13:300:25 | simple_source | simple_source | +| main.rs:301:10:301:10 | s | main.rs:300:13:300:25 | simple_source | main.rs:301:10:301:10 | s | $@ | main.rs:300:13:300:25 | simple_source | simple_source | +| main.rs:309:5:309:15 | simple_sink | main.rs:308:13:308:22 | source(...) | main.rs:309:5:309:15 | simple_sink | $@ | main.rs:308:13:308:22 | source(...) | source(...) | +| main.rs:309:5:309:15 | simple_sink | main.rs:308:13:308:22 | source(...) | main.rs:309:5:309:15 | simple_sink | $@ | main.rs:308:13:308:22 | source(...) | source(...) | +| main.rs:318:10:318:10 | i | main.rs:317:5:317:14 | arg_source | main.rs:318:10:318:10 | i | $@ | main.rs:317:5:317:14 | arg_source | arg_source | +| main.rs:318:10:318:10 | i | main.rs:317:5:317:14 | arg_source | main.rs:318:10:318:10 | i | $@ | main.rs:317:5:317:14 | arg_source | arg_source | +| main.rs:371:10:371:11 | x1 | main.rs:370:14:370:23 | source(...) | main.rs:371:10:371:11 | x1 | $@ | main.rs:370:14:370:23 | source(...) | source(...) | +| main.rs:371:10:371:11 | x1 | main.rs:370:14:370:23 | source(...) | main.rs:371:10:371:11 | x1 | $@ | main.rs:370:14:370:23 | source(...) | source(...) | +| main.rs:381:10:381:18 | x2.field1 | main.rs:374:17:374:26 | source(...) | main.rs:381:10:381:18 | x2.field1 | $@ | main.rs:374:17:374:26 | source(...) | source(...) | +| main.rs:381:10:381:18 | x2.field1 | main.rs:374:17:374:26 | source(...) | main.rs:381:10:381:18 | x2.field1 | $@ | main.rs:374:17:374:26 | source(...) | source(...) | +| main.rs:387:10:387:11 | x4 | main.rs:386:14:386:23 | source(...) | main.rs:387:10:387:11 | x4 | $@ | main.rs:386:14:386:23 | source(...) | source(...) | +| main.rs:387:10:387:11 | x4 | main.rs:386:14:386:23 | source(...) | main.rs:387:10:387:11 | x4 | $@ | main.rs:386:14:386:23 | source(...) | source(...) | +| main.rs:390:10:390:11 | x5 | main.rs:389:14:389:23 | source(...) | main.rs:390:10:390:11 | x5 | $@ | main.rs:389:14:389:23 | source(...) | source(...) | +| main.rs:393:10:393:11 | x6 | main.rs:392:14:392:23 | source(...) | main.rs:393:10:393:11 | x6 | $@ | main.rs:392:14:392:23 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/models/models.ext.yml b/rust/ql/test/library-tests/dataflow/models/models.ext.yml index eb51ac64f50f..52342e880224 100644 --- a/rust/ql/test/library-tests/dataflow/models/models.ext.yml +++ b/rust/ql/test/library-tests/dataflow/models/models.ext.yml @@ -7,6 +7,7 @@ extensions: - ["main::enum_source", "ReturnValue.Field[main::MyFieldEnum::D::field_d]", "test-source", "manual"] - ["::source", "ReturnValue.Field[main::MyFieldEnum::C::field_c]", "test-source", "manual"] - ["main::arg_source", "Argument[0]", "test-source", "manual"] + - ["main::source_into_function::pass_source", "Argument[1].Parameter[0]", "test-source", "manual"] - addsTo: pack: codeql/rust-all extensible: sinkModel diff --git a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected index 5ba71c14933d..0fb7a59f6f47 100644 --- a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected @@ -11,6 +11,8 @@ multipleCallTargets | test.rs:179:30:179:68 | ...::_print(...) | | test.rs:188:26:188:105 | ...::_print(...) | | test.rs:229:22:229:72 | ... .read_to_string(...) | +| test.rs:664:22:664:43 | file.read(...) | +| test.rs:673:22:673:41 | f1.read(...) | | test.rs:697:18:697:38 | ...::_print(...) | | test.rs:702:18:702:45 | ...::_print(...) | | test.rs:720:38:720:42 | ...::_print(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/Cargo.lock b/rust/ql/test/library-tests/dataflow/sources/Cargo.lock index 5bdbe2c0ebbf..887f9016bc7d 100644 --- a/rust/ql/test/library-tests/dataflow/sources/Cargo.lock +++ b/rust/ql/test/library-tests/dataflow/sources/Cargo.lock @@ -1514,6 +1514,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -1680,6 +1690,26 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "pin-project-lite" version = "0.2.16" @@ -2069,6 +2099,12 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.2.0" @@ -2297,6 +2333,7 @@ dependencies = [ "serde", "serde_json", "tokio", + "warp", ] [[package]] @@ -2538,6 +2575,12 @@ dependencies = [ "version_check", ] +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + [[package]] name = "unicode-ident" version = "1.0.18" @@ -2600,6 +2643,35 @@ dependencies = [ "try-lock", ] +[[package]] +name = "warp" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d06d9202adc1f15d709c4f4a2069be5428aa912cc025d6f268ac441ab066b0" +dependencies = [ + "bytes", + "futures-util", + "headers", + "http 1.3.1", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "log", + "mime", + "mime_guess", + "percent-encoding", + "pin-project", + "scoped-tls", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-util", + "tower-service", + "tracing", +] + [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected index e69de29bb2d1..e0855a5d8548 100644 --- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected @@ -0,0 +1,1892 @@ +models +| 1 | Source: <_ as warp::filter::Filter>::and_then; Argument[0].Parameter[0..7]; remote | +| 2 | Source: <_ as warp::filter::Filter>::map; Argument[0].Parameter[0..7]; remote | +| 3 | Source: <_ as warp::filter::Filter>::then; Argument[0].Parameter[0..7]; remote | +| 4 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 5 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 6 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 7 | Source: ::send_request; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 8 | Source: ::file_name; ReturnValue; file | +| 9 | Source: ::path; ReturnValue; file | +| 10 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 11 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 12 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 13 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 14 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 15 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 16 | Source: ::file_name; ReturnValue; file | +| 17 | Source: ::path; ReturnValue; file | +| 18 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 19 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 20 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 21 | Source: std::env::args; ReturnValue.Element; commandargs | +| 22 | Source: std::env::args_os; ReturnValue.Element; commandargs | +| 23 | Source: std::env::current_dir; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | +| 24 | Source: std::env::current_exe; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | +| 25 | Source: std::env::home_dir; ReturnValue.Field[core::option::Option::Some(0)]; commandargs | +| 26 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | +| 27 | Source: std::env::var_os; ReturnValue.Field[core::option::Option::Some(0)]; environment | +| 28 | Source: std::fs::read; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 29 | Source: std::fs::read; ReturnValue; file | +| 30 | Source: std::fs::read_link; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 31 | Source: std::fs::read_to_string; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 32 | Source: std::fs::read_to_string; ReturnValue; file | +| 33 | Source: std::io::stdio::stdin; ReturnValue; stdin | +| 34 | Source: tokio::fs::read::read; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 35 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 36 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 37 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | +| 38 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 39 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 40 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | +| 41 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | +| 42 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 43 | 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 | +| 44 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 45 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 46 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 47 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 48 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 49 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 50 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 51 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 52 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 53 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | +| 54 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | +| 55 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | +| 56 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | +| 57 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | +| 58 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | +| 59 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | +| 60 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 61 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 62 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 63 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 64 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 65 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 66 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | +| 67 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 68 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 69 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | +| 70 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 71 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | +| 72 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 73 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 74 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 75 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 76 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 77 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 78 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 79 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 80 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 81 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 82 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 83 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 84 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::__pointer]; value | +| 85 | Summary: ::new; Argument[0]; ReturnValue; value | +| 86 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 87 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 88 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 89 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 90 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 91 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 92 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 93 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 94 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 95 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 96 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 97 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 98 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 99 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 100 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 101 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 102 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | +| 103 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 104 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 105 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | +| 106 | Summary: ::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 107 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 108 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 109 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 110 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 111 | Summary: ::read_exact; Argument[self]; Argument[0].Reference; taint | +| 112 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | +| 113 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 114 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 115 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 116 | Summary: ::lock; Argument[self]; ReturnValue; taint | +| 117 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 118 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 119 | Summary: ::as_path; Argument[self]; ReturnValue; value | +| 120 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 121 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 122 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 123 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 124 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | +| 125 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | +| 126 | 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:26 | +| test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:27 | +| 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:26 | +| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:86 | +| 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:27 | +| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:82 | +| 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:21 | +| test.rs:29:29:29:44 | ...::args(...) [element] | test.rs:29:29:29:54 | ... .collect() [element] | provenance | MaD:41 | +| 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:21 | +| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:42 | +| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:82 | +| 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:22 | +| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:42 | +| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:82 | +| 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:21 | +| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:42 | +| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:82 | +| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:90 | +| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:87 | +| 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:21 | +| 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:22 | +| 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:23 | +| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:86 | +| 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:24 | +| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:86 | +| 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:25 | +| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:81 | +| 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:19 | +| 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:97 | +| 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:19 | +| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:87 | +| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:97 | +| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:87 | +| 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:19 | +| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:87 | +| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:98 | +| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:87 | +| 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:19 | +| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:87 | +| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:96 | +| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:87 | +| 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:20 | +| 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:95 | +| 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:20 | +| 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:93 | +| 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:94 | +| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:94 | +| test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:20 | +| 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:82 | +| 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:7 | +| 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:7 | +| 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:33 MaD:33 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:110 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:60 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:109 | +| 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:33 MaD:33 | +| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:62 | +| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:113 | +| 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:33 MaD:33 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:115 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:63 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:114 | +| 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:33 MaD:33 | +| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:116 | +| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:63 | +| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:117 | +| 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:33 MaD:33 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:112 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:61 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:111 | +| 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:33 MaD:33 | +| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:57 | +| 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:106 | +| 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:33 MaD:33 | +| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:108 | +| 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:107 | +| 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:33 MaD:33 | +| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:108 | +| 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:54 | +| 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:33 MaD:33 | +| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:108 | +| 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:55 | +| 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:33 MaD:33 | +| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:108 | +| 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:105 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:105 | +| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:56 | +| 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:33 MaD:33 | +| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:108 | +| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:82 | +| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:87 | +| 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:87 | +| 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:53 | +| 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:33 MaD:33 | +| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:108 | +| 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:70 | +| test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | +| 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:76 | +| test.rs:316:25:316:40 | ...::stdin | test.rs:316:25:316:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | +| 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:77 | +| test.rs:323:25:323:40 | ...::stdin | test.rs:323:25:323:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | +| 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:72 | +| test.rs:330:25:330:40 | ...::stdin | test.rs:330:25:330:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | +| 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:78 | +| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:74 | +| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:73 | +| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:75 | +| test.rs:337:25:337:40 | ...::stdin | test.rs:337:25:337:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | +| 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:71 | +| test.rs:349:25:349:40 | ...::stdin | test.rs:349:25:349:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | +| 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:65 | +| 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:37 MaD:37 | +| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:121 | +| 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:120 | +| 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:37 MaD:37 | +| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:121 | +| 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:67 | +| 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:37 MaD:37 | +| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:121 | +| 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:68 | +| 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:37 MaD:37 | +| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:121 | +| 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:123 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:123 | +| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:69 | +| 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:37 MaD:37 | +| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:121 | +| 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:82 | +| 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:66 | +| 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:37 MaD:37 | +| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:121 | +| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:122 | +| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:122 | +| 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:82 | +| 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:28 | +| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | Src:MaD:28 | +| test.rs:408:31:408:43 | ...::read [Ok] | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | MaD:29 | +| 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:28 | +| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | Src:MaD:28 | +| test.rs:413:31:413:38 | ...::read [Ok] | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | MaD:29 | +| 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:31 | +| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:31 | +| test.rs:418:22:418:39 | ...::read_to_string [Ok] | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | MaD:32 | +| 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:40 | +| 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:40 | +| 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:9 MaD:9 | +| test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:40 | +| test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:40 | +| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:119 | +| 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:40 | +| 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:8 MaD:8 | +| test.rs:440:14:440:22 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:40 | +| 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:30 | +| 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:34 | +| 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:34 | +| 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:36 | +| 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:17 MaD:17 | +| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:17 MaD:17 | +| 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:16 MaD:16 | +| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:16 MaD:16 | +| 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:35 | +| 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:100 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:60 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:99 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:102 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:62 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:101 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:104 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:63 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:103 | +| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:61 | +| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:57 | +| test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:10 | +| 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:100 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:60 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:99 | +| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:87 | +| 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:11 | +| 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:100 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:60 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:99 | +| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:87 | +| 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:11 | +| 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:100 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:60 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:99 | +| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:87 | +| 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:11 | +| 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:59 | +| test.rs:560:21:560:39 | ...::open | test.rs:560:21:560:51 | ...::open(...) [Ok] | provenance | Src:MaD:10 | +| 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:10 | +| 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:63 | +| 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:58 | +| 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:64 | +| test.rs:569:21:569:39 | ...::open | test.rs:569:21:569:51 | ...::open(...) [Ok] | provenance | Src:MaD:10 | +| 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:63 | +| 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:70 | +| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:76 | +| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:77 | +| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:72 | +| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:78 | +| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:74 | +| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:73 | +| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:75 | +| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:71 | +| test.rs:581:20:581:40 | ...::open | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:14 | +| 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:70 | +| 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:15 | +| 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: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:38 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:39 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:49 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:50 | +| test.rs:660:20:660:44 | ...::open | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:4 | +| 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:38 | +| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:49 | +| 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:38 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:39 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:49 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:50 | +| 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:5 | +| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:38 | +| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:49 | +| 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:60 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:118 | +| test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:12 | +| 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:13 | +| 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:54 | +| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:64 | +| 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:108 | +| 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:124 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:70 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:125 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:126 | +| test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:18 | +| 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:6 | +| 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:38 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:39 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:49 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | +| 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:91 | +| 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:83 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:85 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [Pin, &ref] | provenance | MaD:84 | +| 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:38 | +| 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:49 | +| 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:38 | +| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:49 | +| 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:44 | +| 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:38 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:39 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:49 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | +| 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:44 | +| 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:47 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:48 | +| 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:45 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:46 | +| 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:51 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:52 | +| 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:92 | +| 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:43 | +| 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:43 | +| 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:83 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:85 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [Pin, &ref] | provenance | MaD:84 | +| 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:43 | +| 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:43 | +| 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:83 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:85 | +| 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:83 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:85 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [Pin, &ref] | provenance | MaD:84 | +| 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:38 | +| 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:49 | +| 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:38 | +| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:49 | +| 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:43 | +| 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:43 | +| 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:83 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:85 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [Pin, &ref] | provenance | MaD:84 | +| 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:47 | +| 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:45 | +| 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:51 | +| 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:80 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:89 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:80 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:89 | +| 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:79 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:88 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:79 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:88 | +| 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:80 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:89 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:80 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:89 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:79 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:88 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:79 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:88 | +| 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 | | +| web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | +| web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | +| web_frameworks.rs:242:38:242:46 | ...: String | web_frameworks.rs:244:18:244:18 | a | provenance | | +| web_frameworks.rs:242:38:242:46 | ...: String | web_frameworks.rs:244:18:244:18 | a | provenance | | +| web_frameworks.rs:250:46:250:49 | then | web_frameworks.rs:251:25:251:33 | ...: String | provenance | Src:MaD:3 | +| web_frameworks.rs:250:46:250:49 | then | web_frameworks.rs:251:25:251:33 | ...: String | provenance | Src:MaD:3 | +| web_frameworks.rs:251:25:251:33 | ...: String | web_frameworks.rs:252:22:252:22 | a | provenance | | +| web_frameworks.rs:251:25:251:33 | ...: String | web_frameworks.rs:252:22:252:22 | a | provenance | | +| web_frameworks.rs:259:50:259:57 | and_then | web_frameworks.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:1 | +| web_frameworks.rs:259:50:259:57 | and_then | web_frameworks.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:1 | +| web_frameworks.rs:260:26:260:32 | ...: u64 | web_frameworks.rs:263:22:263:23 | id | provenance | | +| web_frameworks.rs:260:26:260:32 | ...: u64 | web_frameworks.rs:263:22:263:23 | id | provenance | | +| web_frameworks.rs:272:75:272:77 | map | web_frameworks.rs:273:15:273:23 | ...: String | provenance | Src:MaD:2 | +| web_frameworks.rs:272:75:272:77 | map | web_frameworks.rs:273:15:273:23 | ...: String | provenance | Src:MaD:2 | +| web_frameworks.rs:273:15:273:23 | ...: String | web_frameworks.rs:275:22:275:22 | a | provenance | | +| web_frameworks.rs:273:15:273:23 | ...: String | web_frameworks.rs:275:22:275:22 | 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: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] | +| 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 | +| web_frameworks.rs:242:33:242:35 | map | semmle.label | map | +| web_frameworks.rs:242:33:242:35 | map | semmle.label | map | +| web_frameworks.rs:242:38:242:46 | ...: String | semmle.label | ...: String | +| web_frameworks.rs:242:38:242:46 | ...: String | semmle.label | ...: String | +| web_frameworks.rs:244:18:244:18 | a | semmle.label | a | +| web_frameworks.rs:244:18:244:18 | a | semmle.label | a | +| web_frameworks.rs:250:46:250:49 | then | semmle.label | then | +| web_frameworks.rs:250:46:250:49 | then | semmle.label | then | +| web_frameworks.rs:251:25:251:33 | ...: String | semmle.label | ...: String | +| web_frameworks.rs:251:25:251:33 | ...: String | semmle.label | ...: String | +| web_frameworks.rs:252:22:252:22 | a | semmle.label | a | +| web_frameworks.rs:252:22:252:22 | a | semmle.label | a | +| web_frameworks.rs:259:50:259:57 | and_then | semmle.label | and_then | +| web_frameworks.rs:259:50:259:57 | and_then | semmle.label | and_then | +| web_frameworks.rs:260:26:260:32 | ...: u64 | semmle.label | ...: u64 | +| web_frameworks.rs:260:26:260:32 | ...: u64 | semmle.label | ...: u64 | +| web_frameworks.rs:263:22:263:23 | id | semmle.label | id | +| web_frameworks.rs:263:22:263:23 | id | semmle.label | id | +| web_frameworks.rs:272:75:272:77 | map | semmle.label | map | +| web_frameworks.rs:272:75:272:77 | map | semmle.label | map | +| web_frameworks.rs:273:15:273:23 | ...: String | semmle.label | ...: String | +| web_frameworks.rs:273:15:273:23 | ...: String | semmle.label | ...: String | +| web_frameworks.rs:275:22:275:22 | a | semmle.label | a | +| web_frameworks.rs:275:22:275:22 | 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: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 | +| 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 | +| web_frameworks.rs:244:18:244:18 | a | web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:244:18:244:18 | a | $@ | web_frameworks.rs:242:33:242:35 | map | map | +| web_frameworks.rs:244:18:244:18 | a | web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:244:18:244:18 | a | $@ | web_frameworks.rs:242:33:242:35 | map | map | +| web_frameworks.rs:252:22:252:22 | a | web_frameworks.rs:250:46:250:49 | then | web_frameworks.rs:252:22:252:22 | a | $@ | web_frameworks.rs:250:46:250:49 | then | then | +| web_frameworks.rs:252:22:252:22 | a | web_frameworks.rs:250:46:250:49 | then | web_frameworks.rs:252:22:252:22 | a | $@ | web_frameworks.rs:250:46:250:49 | then | then | +| web_frameworks.rs:263:22:263:23 | id | web_frameworks.rs:259:50:259:57 | and_then | web_frameworks.rs:263:22:263:23 | id | $@ | web_frameworks.rs:259:50:259:57 | and_then | and_then | +| web_frameworks.rs:263:22:263:23 | id | web_frameworks.rs:259:50:259:57 | and_then | web_frameworks.rs:263:22:263:23 | id | $@ | web_frameworks.rs:259:50:259:57 | and_then | and_then | +| web_frameworks.rs:275:22:275:22 | a | web_frameworks.rs:272:75:272:77 | map | web_frameworks.rs:275:22:275:22 | a | $@ | web_frameworks.rs:272:75:272:77 | map | map | +| web_frameworks.rs:275:22:275:22 | a | web_frameworks.rs:272:75:272:77 | map | web_frameworks.rs:275:22:275:22 | a | $@ | web_frameworks.rs:272:75:272:77 | map | map | diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql index d13ca71f16e0..09b4ab5bf908 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() diff --git a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected index 59f1e9b4e0c4..96b6426baf41 100644 --- a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected @@ -100,3 +100,67 @@ | web_frameworks.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | | web_frameworks.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | | web_frameworks.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/options.yml b/rust/ql/test/library-tests/dataflow/sources/options.yml index a05a970f7b87..1fc6475170a3 100644 --- a/rust/ql/test/library-tests/dataflow/sources/options.yml +++ b/rust/ql/test/library-tests/dataflow/sources/options.yml @@ -16,3 +16,4 @@ qltest_dependencies: - rustls = { version = "0.23.27" } - futures-rustls = { version = "0.26.0" } - async-std = { version = "1.13.1" } + - warp = { version = "0.4.2", features = ["server"] } diff --git a/rust/ql/test/library-tests/dataflow/sources/test.rs b/rust/ql/test/library-tests/dataflow/sources/test.rs index 6e30159ea1a3..895a789cfaf4 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test.rs @@ -662,7 +662,7 @@ async fn test_async_std_file() -> std::io::Result<()> { { let mut buffer = [0u8; 100]; let _bytes = file.read(&mut buffer).await?; - sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" + sink(&buffer); // $ hasTaintFlow="file.txt" } // --- OpenOptions --- @@ -671,7 +671,7 @@ async fn test_async_std_file() -> std::io::Result<()> { let mut f1 = async_std::fs::OpenOptions::new().open("f1.txt").await?; // $ Alert[rust/summary/taint-sources] let mut buffer = [0u8; 1024]; let _bytes = f1.read(&mut buffer).await?; - sink(&buffer); // $ MISSING: hasTaintFlow="f1.txt" + sink(&buffer); // $ hasTaintFlow="f1.txt" } Ok(()) diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs b/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs index 32cae626593b..3b901bd823f9 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs @@ -229,3 +229,61 @@ mod axum_test { // ... } } + +mod warp_test { + use super::sink; + use warp::Filter; + + #[tokio::main] + #[rustfmt::skip] + async fn test_warp() { + // A route with parameter and `map` + let map_route = + warp::path::param().map(|a: String| // $ Alert[rust/summary/taint-sources] + { + sink(a); // $ hasTaintFlow + + "".to_string() + }); + + // A route with parameter and `then` + let then_route = warp::path::param().then( // $ Alert[rust/summary/taint-sources] + async move |a: String| { + sink(a); // $ hasTaintFlow + + "".to_string() + }, + ); + + // A route with parameter and `and_then` + let and_then_route = warp::path::param().and_then( // $ Alert[rust/summary/taint-sources] + async move | id: u64 | + { + if id != 0 { + sink(id); // $ hasTaintFlow + Ok("".to_string()) + } else { + Err(warp::reject::not_found()) + } + }, + ); + + // A route with path, parameter, and `and_then` + let path_and_map_route = warp::path("1").and(warp::path::param()).map( // $ Alert[rust/summary/taint-sources] + | a: String | + { + sink(a); // $ hasTaintFlow + + "".to_string() + }, + ); + + let routes = warp::get().and( + map_route + .or(then_route) + .or(and_then_route) + .or(path_and_map_route), + ); + warp::serve(routes).run(([127, 0, 0, 1], 3030)).await; + } +} diff --git a/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected b/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected index ea6e06ef616c..e6241590137f 100644 --- a/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected +++ b/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected @@ -1,5 +1,5 @@ models -| 1 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; value | +| 1 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint | | 2 | Summary: ::from; Argument[0].Reference; ReturnValue; value | | 3 | Summary: ::add; Argument[self]; ReturnValue; value | | 4 | Summary: ::as_str; Argument[self]; ReturnValue; value | diff --git a/rust/ql/test/library-tests/dataflow/strings/main.rs b/rust/ql/test/library-tests/dataflow/strings/main.rs index 772a45f19932..ca9db9a90265 100644 --- a/rust/ql/test/library-tests/dataflow/strings/main.rs +++ b/rust/ql/test/library-tests/dataflow/strings/main.rs @@ -50,7 +50,7 @@ fn string_add_reference() { fn string_from() { let s1 = source_slice(36); let s2 = String::from(s1); - sink(s2); // $ hasValueFlow=36 + sink(s2); // $ hasTaintFlow=36 } fn string_to_string() { diff --git a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected index 9d1761069feb..7a3fd01dbc7d 100644 --- a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,3 @@ multipleCallTargets -| main.rs:118:9:118:11 | f(...) | +| main.rs:124:9:124:11 | f(...) | | proc_macro.rs:9:5:9:10 | ...::new(...) | diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs index 1de91a60fe44..9051f7f8412e 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() { @@ -761,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 + } // impl_with_attribute_macro::test +} + fn main() { my::nested::nested1::nested2::f(); // $ item=I4 my::f(); // $ item=I38 @@ -792,8 +819,8 @@ 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 + impl_with_attribute_macro::test(); // $ item=impl_with_attribute_macro::test } diff --git a/rust/ql/test/library-tests/path-resolution/my2/mod.rs b/rust/ql/test/library-tests/path-resolution/my2/mod.rs index 43c1a05e91fe..6b86c78237c9 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,19 @@ 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 + +use std::ops::Deref; // $ item=Deref pub mod my3; #[path = "renamed.rs"] mod mymod; -use mymod::f; // $ item=I1001 +pub use mymod::f; // $ item=I1001 diff --git a/rust/ql/test/library-tests/path-resolution/my2/my3/mod.rs b/rust/ql/test/library-tests/path-resolution/my2/my3/mod.rs index 6b54377728bb..169aeed6b288 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,9 @@ pub fn f() { use super::super::h; // $ item=I25 use super::g; // $ item=I9 + +use super::nested6_f; // $ item=I116 + +use super::*; // $ item=mod.rs + +trait MyTrait: Deref {} // $ item=Deref diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected index a51816a52282..9315016fe6a0 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,39 @@ 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 | +| main.rs:770:1:789:1 | mod impl_with_attribute_macro | | 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:20:1:20:12 | mod my3 | +| my2/mod.rs:22:1:23: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 +53,409 @@ 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: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 | +| 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: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 | +| 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: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 | +| 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: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: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: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 | +| 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: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: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:20:1:20: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 | | 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:18:5:18:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| my2/mod.rs:18:5:18:12 | ...::ops | {EXTERNAL LOCATION} | mod ops | +| my2/mod.rs:18:5:18:19 | ...::Deref | {EXTERNAL LOCATION} | trait Deref | +| my2/mod.rs:25:9:25:13 | mymod | my2/mod.rs:22:1:23:10 | mod mymod | +| my2/mod.rs:25:9:25: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:25:34 | 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:25:34 | SourceFile | | my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g | +| my2/my3/mod.rs:10:5:10:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | +| my2/my3/mod.rs:10:5:10:20 | ...::nested6_f | my2/nested2.rs:15:9:17:9 | fn f | +| my2/my3/mod.rs:12:5:12:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | +| my2/my3/mod.rs:14:16:14:20 | Deref | {EXTERNAL LOCATION} | trait Deref | | 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 | @@ -471,4 +496,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 c95fc6fe6401..11e3a7024ae6 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 } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 1a9a6456ce8d..09fbdf17a8b9 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -2250,6 +2250,7 @@ inferType | main.rs:1127:43:1127:82 | MacroExpr | | main.rs:1124:15:1124:17 | Snd | | main.rs:1127:50:1127:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | | main.rs:1127:50:1127:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | +| main.rs:1127:50:1127:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | | main.rs:1127:50:1127:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1127:50:1127:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1127:50:1127:81 | MacroExpr | | main.rs:1124:15:1124:17 | Snd | @@ -2261,6 +2262,7 @@ inferType | main.rs:1128:43:1128:81 | MacroExpr | | main.rs:1124:15:1124:17 | Snd | | main.rs:1128:50:1128:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | | main.rs:1128:50:1128:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | +| main.rs:1128:50:1128:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | | main.rs:1128:50:1128:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1128:50:1128:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1128:50:1128:80 | MacroExpr | | main.rs:1124:15:1124:17 | Snd | diff --git a/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected index ec1a29e40c87..6b4022b86e57 100644 --- a/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,3 @@ multipleCallTargets -| main.rs:89:19:89:40 | ...::from(...) | -| main.rs:111:19:111:40 | ...::from(...) | +| main.rs:91:19:91:40 | ...::from(...) | +| main.rs:113:19:113:40 | ...::from(...) | diff --git a/rust/ql/test/library-tests/variables/Cfg.expected b/rust/ql/test/library-tests/variables/Cfg.expected index 0097a12e398d..6b3f0e0e93df 100644 --- a/rust/ql/test/library-tests/variables/Cfg.expected +++ b/rust/ql/test/library-tests/variables/Cfg.expected @@ -58,9 +58,9 @@ edges | main.rs:21:5:21:17 | print_str(...) | main.rs:19:25:22:1 | { ... } | | | main.rs:21:5:21:18 | ExprStmt | main.rs:21:5:21:13 | print_str | | | main.rs:21:15:21:16 | x1 | main.rs:21:5:21:17 | print_str(...) | | -| main.rs:24:1:29:1 | enter fn mutable_variable | main.rs:25:5:25:19 | let ... = 4 | | -| main.rs:24:1:29:1 | exit fn mutable_variable (normal) | main.rs:24:1:29:1 | exit fn mutable_variable | | -| main.rs:24:23:29:1 | { ... } | main.rs:24:1:29:1 | exit fn mutable_variable (normal) | | +| main.rs:24:1:31:1 | enter fn mutable_variable | main.rs:25:5:25:19 | let ... = 4 | | +| main.rs:24:1:31:1 | exit fn mutable_variable (normal) | main.rs:24:1:31:1 | exit fn mutable_variable | | +| main.rs:24:23:31:1 | { ... } | main.rs:24:1:31:1 | exit fn mutable_variable (normal) | | | main.rs:25:5:25:19 | let ... = 4 | main.rs:25:18:25:18 | 4 | | | main.rs:25:9:25:14 | mut x2 | main.rs:26:5:26:18 | ExprStmt | match | | main.rs:25:13:25:14 | x2 | main.rs:25:9:25:14 | mut x2 | | @@ -74,1807 +74,1815 @@ edges | main.rs:27:5:27:11 | ExprStmt | main.rs:27:5:27:6 | x2 | | | main.rs:27:10:27:10 | 5 | main.rs:27:5:27:10 | ... = ... | | | main.rs:28:5:28:13 | print_i64 | main.rs:28:15:28:16 | x2 | | -| main.rs:28:5:28:17 | print_i64(...) | main.rs:24:23:29:1 | { ... } | | +| main.rs:28:5:28:17 | print_i64(...) | main.rs:29:5:29:12 | ExprStmt | | | main.rs:28:5:28:18 | ExprStmt | main.rs:28:5:28:13 | print_i64 | | | main.rs:28:15:28:16 | x2 | main.rs:28:5:28:17 | print_i64(...) | | -| main.rs:31:1:36:1 | enter fn mutable_variable_immutable_borrow | main.rs:32:5:32:18 | let ... = 1 | | -| main.rs:31:1:36:1 | exit fn mutable_variable_immutable_borrow (normal) | main.rs:31:1:36:1 | exit fn mutable_variable_immutable_borrow | | -| main.rs:31:40:36:1 | { ... } | main.rs:31:1:36:1 | exit fn mutable_variable_immutable_borrow (normal) | | -| main.rs:32:5:32:18 | let ... = 1 | main.rs:32:17:32:17 | 1 | | -| main.rs:32:9:32:13 | mut x | main.rs:33:5:33:22 | ExprStmt | match | -| main.rs:32:13:32:13 | x | main.rs:32:9:32:13 | mut x | | -| main.rs:32:17:32:17 | 1 | main.rs:32:13:32:13 | x | | -| main.rs:33:5:33:17 | print_i64_ref | main.rs:33:20:33:20 | x | | -| main.rs:33:5:33:21 | print_i64_ref(...) | main.rs:34:5:34:10 | ExprStmt | | -| main.rs:33:5:33:22 | ExprStmt | main.rs:33:5:33:17 | print_i64_ref | | -| main.rs:33:19:33:20 | &x | main.rs:33:5:33:21 | print_i64_ref(...) | | -| main.rs:33:20:33:20 | x | main.rs:33:19:33:20 | &x | | -| main.rs:34:5:34:5 | x | main.rs:34:9:34:9 | 2 | | -| main.rs:34:5:34:9 | ... = ... | main.rs:35:5:35:22 | ExprStmt | | -| main.rs:34:5:34:10 | ExprStmt | main.rs:34:5:34:5 | x | | -| main.rs:34:9:34:9 | 2 | main.rs:34:5:34:9 | ... = ... | | +| main.rs:29:5:29:6 | x2 | main.rs:29:10:29:11 | x2 | | +| main.rs:29:5:29:11 | ... = ... | main.rs:30:5:30:18 | ExprStmt | | +| main.rs:29:5:29:12 | ExprStmt | main.rs:29:5:29:6 | x2 | | +| main.rs:29:10:29:11 | x2 | main.rs:29:5:29:11 | ... = ... | | +| main.rs:30:5:30:13 | print_i64 | main.rs:30:15:30:16 | x2 | | +| main.rs:30:5:30:17 | print_i64(...) | main.rs:24:23:31:1 | { ... } | | +| main.rs:30:5:30:18 | ExprStmt | main.rs:30:5:30:13 | print_i64 | | +| main.rs:30:15:30:16 | x2 | main.rs:30:5:30:17 | print_i64(...) | | +| main.rs:33:1:38:1 | enter fn mutable_variable_immutable_borrow | main.rs:34:5:34:18 | let ... = 1 | | +| main.rs:33:1:38:1 | exit fn mutable_variable_immutable_borrow (normal) | main.rs:33:1:38:1 | exit fn mutable_variable_immutable_borrow | | +| main.rs:33:40:38:1 | { ... } | main.rs:33:1:38:1 | exit fn mutable_variable_immutable_borrow (normal) | | +| main.rs:34:5:34:18 | let ... = 1 | main.rs:34:17:34:17 | 1 | | +| main.rs:34:9:34:13 | mut x | main.rs:35:5:35:22 | ExprStmt | match | +| main.rs:34:13:34:13 | x | main.rs:34:9:34:13 | mut x | | +| main.rs:34:17:34:17 | 1 | main.rs:34:13:34:13 | x | | | main.rs:35:5:35:17 | print_i64_ref | main.rs:35:20:35:20 | x | | -| main.rs:35:5:35:21 | print_i64_ref(...) | main.rs:31:40:36:1 | { ... } | | +| main.rs:35:5:35:21 | print_i64_ref(...) | main.rs:36:5:36:10 | ExprStmt | | | main.rs:35:5:35:22 | ExprStmt | main.rs:35:5:35:17 | print_i64_ref | | | main.rs:35:19:35:20 | &x | main.rs:35:5:35:21 | print_i64_ref(...) | | | main.rs:35:20:35:20 | x | main.rs:35:19:35:20 | &x | | -| main.rs:38:1:44:1 | enter fn variable_shadow1 | main.rs:39:5:39:15 | let ... = 1 | | -| main.rs:38:1:44:1 | exit fn variable_shadow1 (normal) | main.rs:38:1:44:1 | exit fn variable_shadow1 | | -| main.rs:38:23:44:1 | { ... } | main.rs:38:1:44:1 | exit fn variable_shadow1 (normal) | | -| main.rs:39:5:39:15 | let ... = 1 | main.rs:39:14:39:14 | 1 | | -| main.rs:39:9:39:10 | x3 | main.rs:39:9:39:10 | x3 | | -| main.rs:39:9:39:10 | x3 | main.rs:40:5:40:18 | ExprStmt | match | -| main.rs:39:14:39:14 | 1 | main.rs:39:9:39:10 | x3 | | -| main.rs:40:5:40:13 | print_i64 | main.rs:40:15:40:16 | x3 | | -| main.rs:40:5:40:17 | print_i64(...) | main.rs:41:5:42:15 | let ... = ... | | -| main.rs:40:5:40:18 | ExprStmt | main.rs:40:5:40:13 | print_i64 | | -| main.rs:40:15:40:16 | x3 | main.rs:40:5:40:17 | print_i64(...) | | -| main.rs:41:5:42:15 | let ... = ... | main.rs:42:9:42:10 | x3 | | +| main.rs:36:5:36:5 | x | main.rs:36:9:36:9 | 2 | | +| main.rs:36:5:36:9 | ... = ... | main.rs:37:5:37:22 | ExprStmt | | +| main.rs:36:5:36:10 | ExprStmt | main.rs:36:5:36:5 | x | | +| main.rs:36:9:36:9 | 2 | main.rs:36:5:36:9 | ... = ... | | +| main.rs:37:5:37:17 | print_i64_ref | main.rs:37:20:37:20 | x | | +| main.rs:37:5:37:21 | print_i64_ref(...) | main.rs:33:40:38:1 | { ... } | | +| main.rs:37:5:37:22 | ExprStmt | main.rs:37:5:37:17 | print_i64_ref | | +| main.rs:37:19:37:20 | &x | main.rs:37:5:37:21 | print_i64_ref(...) | | +| main.rs:37:20:37:20 | x | main.rs:37:19:37:20 | &x | | +| main.rs:40:1:46:1 | enter fn variable_shadow1 | main.rs:41:5:41:15 | let ... = 1 | | +| main.rs:40:1:46:1 | exit fn variable_shadow1 (normal) | main.rs:40:1:46:1 | exit fn variable_shadow1 | | +| main.rs:40:23:46:1 | { ... } | main.rs:40:1:46:1 | exit fn variable_shadow1 (normal) | | +| main.rs:41:5:41:15 | let ... = 1 | main.rs:41:14:41:14 | 1 | | | main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | | -| main.rs:41:9:41:10 | x3 | main.rs:43:5:43:18 | ExprStmt | match | -| main.rs:42:9:42:10 | x3 | main.rs:42:14:42:14 | 1 | | -| main.rs:42:9:42:14 | ... + ... | main.rs:41:9:41:10 | x3 | | -| main.rs:42:14:42:14 | 1 | main.rs:42:9:42:14 | ... + ... | | -| main.rs:43:5:43:13 | print_i64 | main.rs:43:15:43:16 | x3 | | -| main.rs:43:5:43:17 | print_i64(...) | main.rs:38:23:44:1 | { ... } | | -| main.rs:43:5:43:18 | ExprStmt | main.rs:43:5:43:13 | print_i64 | | -| main.rs:43:15:43:16 | x3 | main.rs:43:5:43:17 | print_i64(...) | | -| main.rs:46:1:54:1 | enter fn variable_shadow2 | main.rs:47:5:47:17 | let ... = "a" | | -| main.rs:46:1:54:1 | exit fn variable_shadow2 (normal) | main.rs:46:1:54:1 | exit fn variable_shadow2 | | -| main.rs:46:23:54:1 | { ... } | main.rs:46:1:54:1 | exit fn variable_shadow2 (normal) | | -| main.rs:47:5:47:17 | let ... = "a" | main.rs:47:14:47:16 | "a" | | -| main.rs:47:9:47:10 | x4 | main.rs:47:9:47:10 | x4 | | -| main.rs:47:9:47:10 | x4 | main.rs:48:5:48:18 | ExprStmt | match | -| main.rs:47:14:47:16 | "a" | main.rs:47:9:47:10 | x4 | | -| main.rs:48:5:48:13 | print_str | main.rs:48:15:48:16 | x4 | | -| main.rs:48:5:48:17 | print_str(...) | main.rs:49:5:52:5 | ExprStmt | | -| main.rs:48:5:48:18 | ExprStmt | main.rs:48:5:48:13 | print_str | | -| main.rs:48:15:48:16 | x4 | main.rs:48:5:48:17 | print_str(...) | | -| main.rs:49:5:52:5 | ExprStmt | main.rs:50:9:50:21 | let ... = "b" | | -| main.rs:49:5:52:5 | { ... } | main.rs:53:5:53:18 | ExprStmt | | -| main.rs:50:9:50:21 | let ... = "b" | main.rs:50:18:50:20 | "b" | | -| main.rs:50:13:50:14 | x4 | main.rs:50:13:50:14 | x4 | | -| main.rs:50:13:50:14 | x4 | main.rs:51:9:51:22 | ExprStmt | match | -| main.rs:50:18:50:20 | "b" | main.rs:50:13:50:14 | x4 | | -| main.rs:51:9:51:17 | print_str | main.rs:51:19:51:20 | x4 | | -| main.rs:51:9:51:21 | print_str(...) | main.rs:49:5:52:5 | { ... } | | -| main.rs:51:9:51:22 | ExprStmt | main.rs:51:9:51:17 | print_str | | -| main.rs:51:19:51:20 | x4 | main.rs:51:9:51:21 | print_str(...) | | -| main.rs:53:5:53:13 | print_str | main.rs:53:15:53:16 | x4 | | -| main.rs:53:5:53:17 | print_str(...) | main.rs:46:23:54:1 | { ... } | | -| main.rs:53:5:53:18 | ExprStmt | main.rs:53:5:53:13 | print_str | | -| main.rs:53:15:53:16 | x4 | main.rs:53:5:53:17 | print_str(...) | | -| main.rs:61:1:76:1 | enter fn let_pattern1 | main.rs:62:5:71:47 | let ... = ... | | -| main.rs:61:1:76:1 | exit fn let_pattern1 (normal) | main.rs:61:1:76:1 | exit fn let_pattern1 | | -| main.rs:61:19:76:1 | { ... } | main.rs:61:1:76:1 | exit fn let_pattern1 (normal) | | -| main.rs:62:5:71:47 | let ... = ... | main.rs:71:11:71:13 | "a" | | -| main.rs:62:9:71:5 | TuplePat | main.rs:63:9:66:9 | TuplePat | match | -| main.rs:63:9:66:9 | TuplePat | main.rs:64:13:64:14 | a1 | match | -| main.rs:64:13:64:14 | a1 | main.rs:64:13:64:14 | a1 | | -| main.rs:64:13:64:14 | a1 | main.rs:65:13:65:14 | b1 | match | -| main.rs:65:13:65:14 | b1 | main.rs:65:13:65:14 | b1 | | -| main.rs:65:13:65:14 | b1 | main.rs:67:9:70:9 | Point {...} | match | -| main.rs:67:9:70:9 | Point {...} | main.rs:68:13:68:13 | x | match | -| main.rs:68:13:68:13 | x | main.rs:68:13:68:13 | x | | -| main.rs:68:13:68:13 | x | main.rs:69:13:69:13 | y | match | -| main.rs:69:13:69:13 | y | main.rs:69:13:69:13 | y | | -| main.rs:69:13:69:13 | y | main.rs:72:5:72:18 | ExprStmt | match | -| main.rs:71:9:71:46 | TupleExpr | main.rs:62:9:71:5 | TuplePat | | -| main.rs:71:10:71:19 | TupleExpr | main.rs:71:33:71:35 | "x" | | -| main.rs:71:11:71:13 | "a" | main.rs:71:16:71:18 | "b" | | -| main.rs:71:16:71:18 | "b" | main.rs:71:10:71:19 | TupleExpr | | -| main.rs:71:22:71:45 | Point {...} | main.rs:71:9:71:46 | TupleExpr | | -| main.rs:71:33:71:35 | "x" | main.rs:71:41:71:43 | "y" | | -| main.rs:71:41:71:43 | "y" | main.rs:71:22:71:45 | Point {...} | | -| main.rs:72:5:72:13 | print_str | main.rs:72:15:72:16 | a1 | | -| main.rs:72:5:72:17 | print_str(...) | main.rs:73:5:73:18 | ExprStmt | | -| main.rs:72:5:72:18 | ExprStmt | main.rs:72:5:72:13 | print_str | | -| main.rs:72:15:72:16 | a1 | main.rs:72:5:72:17 | print_str(...) | | -| main.rs:73:5:73:13 | print_str | main.rs:73:15:73:16 | b1 | | -| main.rs:73:5:73:17 | print_str(...) | main.rs:74:5:74:17 | ExprStmt | | -| main.rs:73:5:73:18 | ExprStmt | main.rs:73:5:73:13 | print_str | | -| main.rs:73:15:73:16 | b1 | main.rs:73:5:73:17 | print_str(...) | | -| main.rs:74:5:74:13 | print_str | main.rs:74:15:74:15 | x | | -| main.rs:74:5:74:16 | print_str(...) | main.rs:75:5:75:17 | ExprStmt | | -| main.rs:74:5:74:17 | ExprStmt | main.rs:74:5:74:13 | print_str | | -| main.rs:74:15:74:15 | x | main.rs:74:5:74:16 | print_str(...) | | -| main.rs:75:5:75:13 | print_str | main.rs:75:15:75:15 | y | | -| main.rs:75:5:75:16 | print_str(...) | main.rs:61:19:76:1 | { ... } | | -| main.rs:75:5:75:17 | ExprStmt | main.rs:75:5:75:13 | print_str | | -| main.rs:75:15:75:15 | y | main.rs:75:5:75:16 | print_str(...) | | -| main.rs:78:1:86:1 | enter fn let_pattern2 | main.rs:79:5:79:38 | let ... = ... | | -| main.rs:78:1:86:1 | exit fn let_pattern2 (normal) | main.rs:78:1:86:1 | exit fn let_pattern2 | | -| main.rs:78:19:86:1 | { ... } | main.rs:78:1:86:1 | exit fn let_pattern2 (normal) | | -| main.rs:79:5:79:38 | let ... = ... | main.rs:79:25:79:27 | "a" | | -| main.rs:79:9:79:10 | p1 | main.rs:79:9:79:10 | p1 | | -| main.rs:79:9:79:10 | p1 | main.rs:80:5:83:11 | let ... = p1 | match | -| main.rs:79:14:79:37 | Point {...} | main.rs:79:9:79:10 | p1 | | -| main.rs:79:25:79:27 | "a" | main.rs:79:33:79:35 | "b" | | -| main.rs:79:33:79:35 | "b" | main.rs:79:14:79:37 | Point {...} | | -| main.rs:80:5:83:11 | let ... = p1 | main.rs:83:9:83:10 | p1 | | -| main.rs:80:9:83:5 | Point {...} | main.rs:81:12:81:13 | a2 | match | -| main.rs:81:12:81:13 | a2 | main.rs:81:12:81:13 | a2 | | -| main.rs:81:12:81:13 | a2 | main.rs:82:12:82:13 | b2 | match | -| main.rs:82:12:82:13 | b2 | main.rs:82:12:82:13 | b2 | | -| main.rs:82:12:82:13 | b2 | main.rs:84:5:84:18 | ExprStmt | match | -| main.rs:83:9:83:10 | p1 | main.rs:80:9:83:5 | Point {...} | | -| main.rs:84:5:84:13 | print_str | main.rs:84:15:84:16 | a2 | | -| main.rs:84:5:84:17 | print_str(...) | main.rs:85:5:85:18 | ExprStmt | | -| main.rs:84:5:84:18 | ExprStmt | main.rs:84:5:84:13 | print_str | | -| main.rs:84:15:84:16 | a2 | main.rs:84:5:84:17 | print_str(...) | | -| main.rs:85:5:85:13 | print_str | main.rs:85:15:85:16 | b2 | | -| main.rs:85:5:85:17 | print_str(...) | main.rs:78:19:86:1 | { ... } | | -| main.rs:85:5:85:18 | ExprStmt | main.rs:85:5:85:13 | print_str | | -| main.rs:85:15:85:16 | b2 | main.rs:85:5:85:17 | print_str(...) | | -| main.rs:88:1:95:1 | enter fn let_pattern3 | main.rs:89:5:89:42 | let ... = ... | | -| main.rs:88:1:95:1 | exit fn let_pattern3 (normal) | main.rs:88:1:95:1 | exit fn let_pattern3 | | -| main.rs:88:19:95:1 | { ... } | main.rs:88:1:95:1 | exit fn let_pattern3 (normal) | | -| main.rs:89:5:89:42 | let ... = ... | main.rs:89:14:89:17 | Some | | -| main.rs:89:9:89:10 | s1 | main.rs:89:9:89:10 | s1 | | -| main.rs:89:9:89:10 | s1 | main.rs:92:11:92:12 | s1 | match | -| main.rs:89:14:89:17 | Some | main.rs:89:19:89:30 | ...::from | | -| main.rs:89:14:89:41 | Some(...) | main.rs:89:9:89:10 | s1 | | -| main.rs:89:19:89:30 | ...::from | main.rs:89:32:89:39 | "Hello!" | | -| main.rs:89:19:89:40 | ...::from(...) | main.rs:89:14:89:41 | Some(...) | | -| main.rs:89:32:89:39 | "Hello!" | main.rs:89:19:89:40 | ...::from(...) | | -| main.rs:91:5:94:5 | if ... {...} | main.rs:88:19:95:1 | { ... } | | -| main.rs:91:8:92:12 | [boolean(false)] let ... = s1 | main.rs:91:5:94:5 | if ... {...} | false | -| main.rs:91:8:92:12 | [boolean(true)] let ... = s1 | main.rs:93:9:93:22 | ExprStmt | true | -| main.rs:91:12:91:23 | Some(...) | main.rs:91:8:92:12 | [boolean(false)] let ... = s1 | no-match | -| main.rs:91:12:91:23 | Some(...) | main.rs:91:21:91:22 | s2 | match | -| main.rs:91:17:91:22 | ref s2 | main.rs:91:8:92:12 | [boolean(true)] let ... = s1 | match | -| main.rs:91:21:91:22 | s2 | main.rs:91:17:91:22 | ref s2 | | -| main.rs:92:11:92:12 | s1 | main.rs:91:12:91:23 | Some(...) | | -| main.rs:92:14:94:5 | { ... } | main.rs:91:5:94:5 | if ... {...} | | -| main.rs:93:9:93:17 | print_str | main.rs:93:19:93:20 | s2 | | -| main.rs:93:9:93:21 | print_str(...) | main.rs:92:14:94:5 | { ... } | | -| main.rs:93:9:93:22 | ExprStmt | main.rs:93:9:93:17 | print_str | | -| main.rs:93:19:93:20 | s2 | main.rs:93:9:93:21 | print_str(...) | | -| main.rs:97:1:108:1 | enter fn let_pattern4 | main.rs:98:5:98:23 | let ... = ... | | -| main.rs:97:1:108:1 | exit fn let_pattern4 (normal) | main.rs:97:1:108:1 | exit fn let_pattern4 | | -| main.rs:97:19:108:1 | { ... } | main.rs:97:1:108:1 | exit fn let_pattern4 (normal) | | -| main.rs:98:5:98:23 | let ... = ... | main.rs:98:13:98:16 | Some | | -| main.rs:98:9:98:9 | x | main.rs:98:9:98:9 | x | | -| main.rs:98:9:98:9 | x | main.rs:99:5:106:6 | let ... = x else {...} | match | -| main.rs:98:13:98:16 | Some | main.rs:98:18:98:21 | "x5" | | -| main.rs:98:13:98:22 | Some(...) | main.rs:98:9:98:9 | x | | -| main.rs:98:18:98:21 | "x5" | main.rs:98:13:98:22 | Some(...) | | -| main.rs:99:5:106:6 | let ... = x else {...} | main.rs:100:7:100:7 | x | | -| main.rs:99:9:99:15 | Some(...) | main.rs:99:14:99:14 | x | match | -| main.rs:99:9:99:15 | Some(...) | main.rs:102:9:103:14 | let ... = x | no-match | -| main.rs:99:14:99:14 | x | main.rs:99:14:99:14 | x | | -| main.rs:99:14:99:14 | x | main.rs:107:5:107:17 | ExprStmt | match | -| main.rs:100:7:100:7 | x | main.rs:99:9:99:15 | Some(...) | | -| main.rs:102:9:103:14 | let ... = x | main.rs:103:13:103:13 | x | | -| main.rs:102:13:102:13 | x | main.rs:102:13:102:13 | x | | -| main.rs:102:13:102:13 | x | main.rs:104:9:104:30 | ExprStmt | match | -| main.rs:103:13:103:13 | x | main.rs:102:13:102:13 | x | | -| main.rs:104:9:104:17 | print_str | main.rs:104:19:104:19 | x | | -| main.rs:104:9:104:29 | print_str(...) | main.rs:105:9:105:13 | ...::panic | | -| main.rs:104:9:104:30 | ExprStmt | main.rs:104:9:104:17 | print_str | | -| main.rs:104:19:104:19 | x | main.rs:104:19:104:28 | x.unwrap() | | -| main.rs:104:19:104:28 | x.unwrap() | main.rs:104:9:104:29 | print_str(...) | | -| main.rs:105:9:105:13 | "not yet implemented" | main.rs:105:9:105:13 | ...::panic(...) | | -| main.rs:105:9:105:13 | ...::panic | main.rs:105:9:105:13 | "not yet implemented" | | -| main.rs:105:9:105:13 | ...::panic(...) | main.rs:105:9:105:13 | MacroBlockExpr | | -| main.rs:105:9:105:13 | MacroBlockExpr | main.rs:105:9:105:15 | todo!... | | -| main.rs:105:9:105:15 | MacroExpr | main.rs:101:10:106:5 | { ... } | | -| main.rs:105:9:105:15 | todo!... | main.rs:105:9:105:15 | MacroExpr | | -| main.rs:107:5:107:13 | print_str | main.rs:107:15:107:15 | x | | -| main.rs:107:5:107:16 | print_str(...) | main.rs:97:19:108:1 | { ... } | | -| main.rs:107:5:107:17 | ExprStmt | main.rs:107:5:107:13 | print_str | | -| main.rs:107:15:107:15 | x | main.rs:107:5:107:16 | print_str(...) | | -| main.rs:110:1:117:1 | enter fn let_pattern5 | main.rs:111:5:111:42 | let ... = ... | | -| main.rs:110:1:117:1 | exit fn let_pattern5 (normal) | main.rs:110:1:117:1 | exit fn let_pattern5 | | -| main.rs:110:19:117:1 | { ... } | main.rs:110:1:117:1 | exit fn let_pattern5 (normal) | | -| main.rs:111:5:111:42 | let ... = ... | main.rs:111:14:111:17 | Some | | -| main.rs:111:9:111:10 | s1 | main.rs:111:9:111:10 | s1 | | -| main.rs:111:9:111:10 | s1 | main.rs:114:11:114:12 | s1 | match | -| main.rs:111:14:111:17 | Some | main.rs:111:19:111:30 | ...::from | | -| main.rs:111:14:111:41 | Some(...) | main.rs:111:9:111:10 | s1 | | -| main.rs:111:19:111:30 | ...::from | main.rs:111:32:111:39 | "Hello!" | | -| main.rs:111:19:111:40 | ...::from(...) | main.rs:111:14:111:41 | Some(...) | | -| main.rs:111:32:111:39 | "Hello!" | main.rs:111:19:111:40 | ...::from(...) | | -| main.rs:113:5:116:5 | while ... { ... } | main.rs:110:19:117:1 | { ... } | | -| main.rs:113:11:114:12 | [boolean(false)] let ... = s1 | main.rs:113:5:116:5 | while ... { ... } | false | -| main.rs:113:11:114:12 | [boolean(true)] let ... = s1 | main.rs:115:9:115:22 | ExprStmt | true | -| main.rs:113:15:113:26 | Some(...) | main.rs:113:11:114:12 | [boolean(false)] let ... = s1 | no-match | -| main.rs:113:15:113:26 | Some(...) | main.rs:113:24:113:25 | s2 | match | -| main.rs:113:20:113:25 | ref s2 | main.rs:113:11:114:12 | [boolean(true)] let ... = s1 | match | -| main.rs:113:24:113:25 | s2 | main.rs:113:20:113:25 | ref s2 | | -| main.rs:114:11:114:12 | s1 | main.rs:113:15:113:26 | Some(...) | | -| main.rs:114:14:116:5 | { ... } | main.rs:114:11:114:12 | s1 | | -| main.rs:115:9:115:17 | print_str | main.rs:115:19:115:20 | s2 | | -| main.rs:115:9:115:21 | print_str(...) | main.rs:114:14:116:5 | { ... } | | -| main.rs:115:9:115:22 | ExprStmt | main.rs:115:9:115:17 | print_str | | -| main.rs:115:19:115:20 | s2 | main.rs:115:9:115:21 | print_str(...) | | -| main.rs:119:1:134:1 | enter fn match_pattern1 | main.rs:120:5:120:21 | let ... = ... | | -| main.rs:119:1:134:1 | exit fn match_pattern1 (normal) | main.rs:119:1:134:1 | exit fn match_pattern1 | | -| main.rs:119:21:134:1 | { ... } | main.rs:119:1:134:1 | exit fn match_pattern1 (normal) | | -| main.rs:120:5:120:21 | let ... = ... | main.rs:120:14:120:17 | Some | | -| main.rs:120:9:120:10 | x6 | main.rs:120:9:120:10 | x6 | | -| main.rs:120:9:120:10 | x6 | main.rs:121:5:121:16 | let ... = 10 | match | -| main.rs:120:14:120:17 | Some | main.rs:120:19:120:19 | 5 | | -| main.rs:120:14:120:20 | Some(...) | main.rs:120:9:120:10 | x6 | | -| main.rs:120:19:120:19 | 5 | main.rs:120:14:120:20 | Some(...) | | -| main.rs:121:5:121:16 | let ... = 10 | main.rs:121:14:121:15 | 10 | | -| main.rs:121:9:121:10 | y1 | main.rs:121:9:121:10 | y1 | | -| main.rs:121:9:121:10 | y1 | main.rs:123:5:131:5 | ExprStmt | match | -| main.rs:121:14:121:15 | 10 | main.rs:121:9:121:10 | y1 | | -| main.rs:123:5:131:5 | ExprStmt | main.rs:123:11:123:12 | x6 | | -| main.rs:123:5:131:5 | match x6 { ... } | main.rs:133:5:133:18 | ExprStmt | | -| main.rs:123:11:123:12 | x6 | main.rs:124:9:124:16 | Some(...) | | -| main.rs:124:9:124:16 | Some(...) | main.rs:124:14:124:15 | 50 | match | -| main.rs:124:9:124:16 | Some(...) | main.rs:125:9:125:16 | Some(...) | no-match | -| main.rs:124:14:124:15 | 50 | main.rs:124:14:124:15 | 50 | | -| main.rs:124:14:124:15 | 50 | main.rs:124:21:124:29 | print_str | match | -| main.rs:124:14:124:15 | 50 | main.rs:125:9:125:16 | Some(...) | no-match | -| main.rs:124:21:124:29 | print_str | main.rs:124:31:124:38 | "Got 50" | | -| main.rs:124:21:124:39 | print_str(...) | main.rs:123:5:131:5 | match x6 { ... } | | -| main.rs:124:31:124:38 | "Got 50" | main.rs:124:21:124:39 | print_str(...) | | -| main.rs:125:9:125:16 | Some(...) | main.rs:125:14:125:15 | y1 | match | -| main.rs:125:9:125:16 | Some(...) | main.rs:130:9:130:12 | None | no-match | -| main.rs:125:14:125:15 | y1 | main.rs:125:14:125:15 | y1 | | -| main.rs:125:14:125:15 | y1 | main.rs:128:13:128:21 | print_i64 | match | -| main.rs:127:9:129:9 | { ... } | main.rs:123:5:131:5 | match x6 { ... } | | -| main.rs:128:13:128:21 | print_i64 | main.rs:128:23:128:24 | y1 | | -| main.rs:128:13:128:25 | print_i64(...) | main.rs:127:9:129:9 | { ... } | | -| main.rs:128:23:128:24 | y1 | main.rs:128:13:128:25 | print_i64(...) | | -| main.rs:130:9:130:12 | None | main.rs:130:9:130:12 | None | | -| main.rs:130:9:130:12 | None | main.rs:130:17:130:25 | print_str | match | -| main.rs:130:17:130:25 | print_str | main.rs:130:27:130:32 | "NONE" | | -| main.rs:130:17:130:33 | print_str(...) | main.rs:123:5:131:5 | match x6 { ... } | | -| main.rs:130:27:130:32 | "NONE" | main.rs:130:17:130:33 | print_str(...) | | -| main.rs:133:5:133:13 | print_i64 | main.rs:133:15:133:16 | y1 | | -| main.rs:133:5:133:17 | print_i64(...) | main.rs:119:21:134:1 | { ... } | | -| main.rs:133:5:133:18 | ExprStmt | main.rs:133:5:133:13 | print_i64 | | -| main.rs:133:15:133:16 | y1 | main.rs:133:5:133:17 | print_i64(...) | | -| main.rs:136:1:165:1 | enter fn match_pattern2 | main.rs:137:5:137:36 | let ... = ... | | -| main.rs:136:1:165:1 | exit fn match_pattern2 (normal) | main.rs:136:1:165:1 | exit fn match_pattern2 | | -| main.rs:136:21:165:1 | { ... } | main.rs:136:1:165:1 | exit fn match_pattern2 (normal) | | -| main.rs:137:5:137:36 | let ... = ... | main.rs:137:20:137:20 | 2 | | -| main.rs:137:9:137:15 | numbers | main.rs:137:9:137:15 | numbers | | -| main.rs:137:9:137:15 | numbers | main.rs:139:5:152:5 | ExprStmt | match | -| main.rs:137:19:137:35 | TupleExpr | main.rs:137:9:137:15 | numbers | | -| main.rs:137:20:137:20 | 2 | main.rs:137:23:137:23 | 4 | | -| main.rs:137:23:137:23 | 4 | main.rs:137:26:137:26 | 8 | | -| main.rs:137:26:137:26 | 8 | main.rs:137:29:137:30 | 16 | | -| main.rs:137:29:137:30 | 16 | main.rs:137:33:137:34 | 32 | | -| main.rs:137:33:137:34 | 32 | main.rs:137:19:137:35 | TupleExpr | | -| main.rs:139:5:152:5 | ExprStmt | main.rs:139:11:139:17 | numbers | | -| main.rs:139:5:152:5 | match numbers { ... } | main.rs:154:11:154:17 | numbers | | -| main.rs:139:11:139:17 | numbers | main.rs:141:9:147:9 | TuplePat | | -| main.rs:141:9:147:9 | TuplePat | main.rs:142:13:142:17 | first | match | -| main.rs:142:13:142:17 | first | main.rs:142:13:142:17 | first | | -| main.rs:142:13:142:17 | first | main.rs:143:13:143:13 | _ | match | -| main.rs:143:13:143:13 | _ | main.rs:144:13:144:17 | third | match | -| main.rs:144:13:144:17 | third | main.rs:144:13:144:17 | third | | -| main.rs:144:13:144:17 | third | main.rs:145:13:145:13 | _ | match | -| main.rs:145:13:145:13 | _ | main.rs:146:13:146:17 | fifth | match | -| main.rs:146:13:146:17 | fifth | main.rs:146:13:146:17 | fifth | | -| main.rs:146:13:146:17 | fifth | main.rs:148:13:148:29 | ExprStmt | match | -| main.rs:147:14:151:9 | { ... } | main.rs:139:5:152:5 | match numbers { ... } | | -| main.rs:148:13:148:21 | print_i64 | main.rs:148:23:148:27 | first | | -| main.rs:148:13:148:28 | print_i64(...) | main.rs:149:13:149:29 | ExprStmt | | -| main.rs:148:13:148:29 | ExprStmt | main.rs:148:13:148:21 | print_i64 | | -| main.rs:148:23:148:27 | first | main.rs:148:13:148:28 | print_i64(...) | | -| main.rs:149:13:149:21 | print_i64 | main.rs:149:23:149:27 | third | | -| main.rs:149:13:149:28 | print_i64(...) | main.rs:150:13:150:29 | ExprStmt | | -| main.rs:149:13:149:29 | ExprStmt | main.rs:149:13:149:21 | print_i64 | | -| main.rs:149:23:149:27 | third | main.rs:149:13:149:28 | print_i64(...) | | -| main.rs:150:13:150:21 | print_i64 | main.rs:150:23:150:27 | fifth | | -| main.rs:150:13:150:28 | print_i64(...) | main.rs:147:14:151:9 | { ... } | | +| main.rs:41:9:41:10 | x3 | main.rs:42:5:42:18 | ExprStmt | match | +| main.rs:41:14:41:14 | 1 | main.rs:41:9:41:10 | x3 | | +| main.rs:42:5:42:13 | print_i64 | main.rs:42:15:42:16 | x3 | | +| main.rs:42:5:42:17 | print_i64(...) | main.rs:43:5:44:15 | let ... = ... | | +| main.rs:42:5:42:18 | ExprStmt | main.rs:42:5:42:13 | print_i64 | | +| main.rs:42:15:42:16 | x3 | main.rs:42:5:42:17 | print_i64(...) | | +| main.rs:43:5:44:15 | let ... = ... | main.rs:44:9:44:10 | x3 | | +| main.rs:43:9:43:10 | x3 | main.rs:43:9:43:10 | x3 | | +| main.rs:43:9:43:10 | x3 | main.rs:45:5:45:18 | ExprStmt | match | +| main.rs:44:9:44:10 | x3 | main.rs:44:14:44:14 | 1 | | +| main.rs:44:9:44:14 | ... + ... | main.rs:43:9:43:10 | x3 | | +| main.rs:44:14:44:14 | 1 | main.rs:44:9:44:14 | ... + ... | | +| main.rs:45:5:45:13 | print_i64 | main.rs:45:15:45:16 | x3 | | +| main.rs:45:5:45:17 | print_i64(...) | main.rs:40:23:46:1 | { ... } | | +| main.rs:45:5:45:18 | ExprStmt | main.rs:45:5:45:13 | print_i64 | | +| main.rs:45:15:45:16 | x3 | main.rs:45:5:45:17 | print_i64(...) | | +| main.rs:48:1:56:1 | enter fn variable_shadow2 | main.rs:49:5:49:17 | let ... = "a" | | +| main.rs:48:1:56:1 | exit fn variable_shadow2 (normal) | main.rs:48:1:56:1 | exit fn variable_shadow2 | | +| main.rs:48:23:56:1 | { ... } | main.rs:48:1:56:1 | exit fn variable_shadow2 (normal) | | +| main.rs:49:5:49:17 | let ... = "a" | main.rs:49:14:49:16 | "a" | | +| main.rs:49:9:49:10 | x4 | main.rs:49:9:49:10 | x4 | | +| main.rs:49:9:49:10 | x4 | main.rs:50:5:50:18 | ExprStmt | match | +| main.rs:49:14:49:16 | "a" | main.rs:49:9:49:10 | x4 | | +| main.rs:50:5:50:13 | print_str | main.rs:50:15:50:16 | x4 | | +| main.rs:50:5:50:17 | print_str(...) | main.rs:51:5:54:5 | ExprStmt | | +| main.rs:50:5:50:18 | ExprStmt | main.rs:50:5:50:13 | print_str | | +| main.rs:50:15:50:16 | x4 | main.rs:50:5:50:17 | print_str(...) | | +| main.rs:51:5:54:5 | ExprStmt | main.rs:52:9:52:21 | let ... = "b" | | +| main.rs:51:5:54:5 | { ... } | main.rs:55:5:55:18 | ExprStmt | | +| main.rs:52:9:52:21 | let ... = "b" | main.rs:52:18:52:20 | "b" | | +| main.rs:52:13:52:14 | x4 | main.rs:52:13:52:14 | x4 | | +| main.rs:52:13:52:14 | x4 | main.rs:53:9:53:22 | ExprStmt | match | +| main.rs:52:18:52:20 | "b" | main.rs:52:13:52:14 | x4 | | +| main.rs:53:9:53:17 | print_str | main.rs:53:19:53:20 | x4 | | +| main.rs:53:9:53:21 | print_str(...) | main.rs:51:5:54:5 | { ... } | | +| main.rs:53:9:53:22 | ExprStmt | main.rs:53:9:53:17 | print_str | | +| main.rs:53:19:53:20 | x4 | main.rs:53:9:53:21 | print_str(...) | | +| main.rs:55:5:55:13 | print_str | main.rs:55:15:55:16 | x4 | | +| main.rs:55:5:55:17 | print_str(...) | main.rs:48:23:56:1 | { ... } | | +| main.rs:55:5:55:18 | ExprStmt | main.rs:55:5:55:13 | print_str | | +| main.rs:55:15:55:16 | x4 | main.rs:55:5:55:17 | print_str(...) | | +| main.rs:63:1:78:1 | enter fn let_pattern1 | main.rs:64:5:73:47 | let ... = ... | | +| main.rs:63:1:78:1 | exit fn let_pattern1 (normal) | main.rs:63:1:78:1 | exit fn let_pattern1 | | +| main.rs:63:19:78:1 | { ... } | main.rs:63:1:78:1 | exit fn let_pattern1 (normal) | | +| main.rs:64:5:73:47 | let ... = ... | main.rs:73:11:73:13 | "a" | | +| main.rs:64:9:73:5 | TuplePat | main.rs:65:9:68:9 | TuplePat | match | +| main.rs:65:9:68:9 | TuplePat | main.rs:66:13:66:14 | a1 | match | +| main.rs:66:13:66:14 | a1 | main.rs:66:13:66:14 | a1 | | +| main.rs:66:13:66:14 | a1 | main.rs:67:13:67:14 | b1 | match | +| main.rs:67:13:67:14 | b1 | main.rs:67:13:67:14 | b1 | | +| main.rs:67:13:67:14 | b1 | main.rs:69:9:72:9 | Point {...} | match | +| main.rs:69:9:72:9 | Point {...} | main.rs:70:13:70:13 | x | match | +| main.rs:70:13:70:13 | x | main.rs:70:13:70:13 | x | | +| main.rs:70:13:70:13 | x | main.rs:71:13:71:13 | y | match | +| main.rs:71:13:71:13 | y | main.rs:71:13:71:13 | y | | +| main.rs:71:13:71:13 | y | main.rs:74:5:74:18 | ExprStmt | match | +| main.rs:73:9:73:46 | TupleExpr | main.rs:64:9:73:5 | TuplePat | | +| main.rs:73:10:73:19 | TupleExpr | main.rs:73:33:73:35 | "x" | | +| main.rs:73:11:73:13 | "a" | main.rs:73:16:73:18 | "b" | | +| main.rs:73:16:73:18 | "b" | main.rs:73:10:73:19 | TupleExpr | | +| main.rs:73:22:73:45 | Point {...} | main.rs:73:9:73:46 | TupleExpr | | +| main.rs:73:33:73:35 | "x" | main.rs:73:41:73:43 | "y" | | +| main.rs:73:41:73:43 | "y" | main.rs:73:22:73:45 | Point {...} | | +| main.rs:74:5:74:13 | print_str | main.rs:74:15:74:16 | a1 | | +| main.rs:74:5:74:17 | print_str(...) | main.rs:75:5:75:18 | ExprStmt | | +| main.rs:74:5:74:18 | ExprStmt | main.rs:74:5:74:13 | print_str | | +| main.rs:74:15:74:16 | a1 | main.rs:74:5:74:17 | print_str(...) | | +| main.rs:75:5:75:13 | print_str | main.rs:75:15:75:16 | b1 | | +| main.rs:75:5:75:17 | print_str(...) | main.rs:76:5:76:17 | ExprStmt | | +| main.rs:75:5:75:18 | ExprStmt | main.rs:75:5:75:13 | print_str | | +| main.rs:75:15:75:16 | b1 | main.rs:75:5:75:17 | print_str(...) | | +| main.rs:76:5:76:13 | print_str | main.rs:76:15:76:15 | x | | +| main.rs:76:5:76:16 | print_str(...) | main.rs:77:5:77:17 | ExprStmt | | +| main.rs:76:5:76:17 | ExprStmt | main.rs:76:5:76:13 | print_str | | +| main.rs:76:15:76:15 | x | main.rs:76:5:76:16 | print_str(...) | | +| main.rs:77:5:77:13 | print_str | main.rs:77:15:77:15 | y | | +| main.rs:77:5:77:16 | print_str(...) | main.rs:63:19:78:1 | { ... } | | +| main.rs:77:5:77:17 | ExprStmt | main.rs:77:5:77:13 | print_str | | +| main.rs:77:15:77:15 | y | main.rs:77:5:77:16 | print_str(...) | | +| main.rs:80:1:88:1 | enter fn let_pattern2 | main.rs:81:5:81:38 | let ... = ... | | +| main.rs:80:1:88:1 | exit fn let_pattern2 (normal) | main.rs:80:1:88:1 | exit fn let_pattern2 | | +| main.rs:80:19:88:1 | { ... } | main.rs:80:1:88:1 | exit fn let_pattern2 (normal) | | +| main.rs:81:5:81:38 | let ... = ... | main.rs:81:25:81:27 | "a" | | +| main.rs:81:9:81:10 | p1 | main.rs:81:9:81:10 | p1 | | +| main.rs:81:9:81:10 | p1 | main.rs:82:5:85:11 | let ... = p1 | match | +| main.rs:81:14:81:37 | Point {...} | main.rs:81:9:81:10 | p1 | | +| main.rs:81:25:81:27 | "a" | main.rs:81:33:81:35 | "b" | | +| main.rs:81:33:81:35 | "b" | main.rs:81:14:81:37 | Point {...} | | +| main.rs:82:5:85:11 | let ... = p1 | main.rs:85:9:85:10 | p1 | | +| main.rs:82:9:85:5 | Point {...} | main.rs:83:12:83:13 | a2 | match | +| main.rs:83:12:83:13 | a2 | main.rs:83:12:83:13 | a2 | | +| main.rs:83:12:83:13 | a2 | main.rs:84:12:84:13 | b2 | match | +| main.rs:84:12:84:13 | b2 | main.rs:84:12:84:13 | b2 | | +| main.rs:84:12:84:13 | b2 | main.rs:86:5:86:18 | ExprStmt | match | +| main.rs:85:9:85:10 | p1 | main.rs:82:9:85:5 | Point {...} | | +| main.rs:86:5:86:13 | print_str | main.rs:86:15:86:16 | a2 | | +| main.rs:86:5:86:17 | print_str(...) | main.rs:87:5:87:18 | ExprStmt | | +| main.rs:86:5:86:18 | ExprStmt | main.rs:86:5:86:13 | print_str | | +| main.rs:86:15:86:16 | a2 | main.rs:86:5:86:17 | print_str(...) | | +| main.rs:87:5:87:13 | print_str | main.rs:87:15:87:16 | b2 | | +| main.rs:87:5:87:17 | print_str(...) | main.rs:80:19:88:1 | { ... } | | +| main.rs:87:5:87:18 | ExprStmt | main.rs:87:5:87:13 | print_str | | +| main.rs:87:15:87:16 | b2 | main.rs:87:5:87:17 | print_str(...) | | +| main.rs:90:1:97:1 | enter fn let_pattern3 | main.rs:91:5:91:42 | let ... = ... | | +| main.rs:90:1:97:1 | exit fn let_pattern3 (normal) | main.rs:90:1:97:1 | exit fn let_pattern3 | | +| main.rs:90:19:97:1 | { ... } | main.rs:90:1:97:1 | exit fn let_pattern3 (normal) | | +| main.rs:91:5:91:42 | let ... = ... | main.rs:91:14:91:17 | Some | | +| main.rs:91:9:91:10 | s1 | main.rs:91:9:91:10 | s1 | | +| main.rs:91:9:91:10 | s1 | main.rs:94:11:94:12 | s1 | match | +| main.rs:91:14:91:17 | Some | main.rs:91:19:91:30 | ...::from | | +| main.rs:91:14:91:41 | Some(...) | main.rs:91:9:91:10 | s1 | | +| main.rs:91:19:91:30 | ...::from | main.rs:91:32:91:39 | "Hello!" | | +| main.rs:91:19:91:40 | ...::from(...) | main.rs:91:14:91:41 | Some(...) | | +| main.rs:91:32:91:39 | "Hello!" | main.rs:91:19:91:40 | ...::from(...) | | +| main.rs:93:5:96:5 | if ... {...} | main.rs:90:19:97:1 | { ... } | | +| main.rs:93:8:94:12 | [boolean(false)] let ... = s1 | main.rs:93:5:96:5 | if ... {...} | false | +| main.rs:93:8:94:12 | [boolean(true)] let ... = s1 | main.rs:95:9:95:22 | ExprStmt | true | +| main.rs:93:12:93:23 | Some(...) | main.rs:93:8:94:12 | [boolean(false)] let ... = s1 | no-match | +| main.rs:93:12:93:23 | Some(...) | main.rs:93:21:93:22 | s2 | match | +| main.rs:93:17:93:22 | ref s2 | main.rs:93:8:94:12 | [boolean(true)] let ... = s1 | match | +| main.rs:93:21:93:22 | s2 | main.rs:93:17:93:22 | ref s2 | | +| main.rs:94:11:94:12 | s1 | main.rs:93:12:93:23 | Some(...) | | +| main.rs:94:14:96:5 | { ... } | main.rs:93:5:96:5 | if ... {...} | | +| main.rs:95:9:95:17 | print_str | main.rs:95:19:95:20 | s2 | | +| main.rs:95:9:95:21 | print_str(...) | main.rs:94:14:96:5 | { ... } | | +| main.rs:95:9:95:22 | ExprStmt | main.rs:95:9:95:17 | print_str | | +| main.rs:95:19:95:20 | s2 | main.rs:95:9:95:21 | print_str(...) | | +| main.rs:99:1:110:1 | enter fn let_pattern4 | main.rs:100:5:100:23 | let ... = ... | | +| main.rs:99:1:110:1 | exit fn let_pattern4 (normal) | main.rs:99:1:110:1 | exit fn let_pattern4 | | +| main.rs:99:19:110:1 | { ... } | main.rs:99:1:110:1 | exit fn let_pattern4 (normal) | | +| main.rs:100:5:100:23 | let ... = ... | main.rs:100:13:100:16 | Some | | +| main.rs:100:9:100:9 | x | main.rs:100:9:100:9 | x | | +| main.rs:100:9:100:9 | x | main.rs:101:5:108:6 | let ... = x else {...} | match | +| main.rs:100:13:100:16 | Some | main.rs:100:18:100:21 | "x5" | | +| main.rs:100:13:100:22 | Some(...) | main.rs:100:9:100:9 | x | | +| main.rs:100:18:100:21 | "x5" | main.rs:100:13:100:22 | Some(...) | | +| main.rs:101:5:108:6 | let ... = x else {...} | main.rs:102:7:102:7 | x | | +| main.rs:101:9:101:15 | Some(...) | main.rs:101:14:101:14 | x | match | +| main.rs:101:9:101:15 | Some(...) | main.rs:104:9:105:14 | let ... = x | no-match | +| main.rs:101:14:101:14 | x | main.rs:101:14:101:14 | x | | +| main.rs:101:14:101:14 | x | main.rs:109:5:109:17 | ExprStmt | match | +| main.rs:102:7:102:7 | x | main.rs:101:9:101:15 | Some(...) | | +| main.rs:104:9:105:14 | let ... = x | main.rs:105:13:105:13 | x | | +| main.rs:104:13:104:13 | x | main.rs:104:13:104:13 | x | | +| main.rs:104:13:104:13 | x | main.rs:106:9:106:30 | ExprStmt | match | +| main.rs:105:13:105:13 | x | main.rs:104:13:104:13 | x | | +| main.rs:106:9:106:17 | print_str | main.rs:106:19:106:19 | x | | +| main.rs:106:9:106:29 | print_str(...) | main.rs:107:9:107:13 | ...::panic | | +| main.rs:106:9:106:30 | ExprStmt | main.rs:106:9:106:17 | print_str | | +| main.rs:106:19:106:19 | x | main.rs:106:19:106:28 | x.unwrap() | | +| main.rs:106:19:106:28 | x.unwrap() | main.rs:106:9:106:29 | print_str(...) | | +| main.rs:107:9:107:13 | "not yet implemented" | main.rs:107:9:107:13 | ...::panic(...) | | +| main.rs:107:9:107:13 | ...::panic | main.rs:107:9:107:13 | "not yet implemented" | | +| main.rs:107:9:107:13 | ...::panic(...) | main.rs:107:9:107:13 | MacroBlockExpr | | +| main.rs:107:9:107:13 | MacroBlockExpr | main.rs:107:9:107:15 | todo!... | | +| main.rs:107:9:107:15 | MacroExpr | main.rs:103:10:108:5 | { ... } | | +| main.rs:107:9:107:15 | todo!... | main.rs:107:9:107:15 | MacroExpr | | +| main.rs:109:5:109:13 | print_str | main.rs:109:15:109:15 | x | | +| main.rs:109:5:109:16 | print_str(...) | main.rs:99:19:110:1 | { ... } | | +| main.rs:109:5:109:17 | ExprStmt | main.rs:109:5:109:13 | print_str | | +| main.rs:109:15:109:15 | x | main.rs:109:5:109:16 | print_str(...) | | +| main.rs:112:1:119:1 | enter fn let_pattern5 | main.rs:113:5:113:42 | let ... = ... | | +| main.rs:112:1:119:1 | exit fn let_pattern5 (normal) | main.rs:112:1:119:1 | exit fn let_pattern5 | | +| main.rs:112:19:119:1 | { ... } | main.rs:112:1:119:1 | exit fn let_pattern5 (normal) | | +| main.rs:113:5:113:42 | let ... = ... | main.rs:113:14:113:17 | Some | | +| main.rs:113:9:113:10 | s1 | main.rs:113:9:113:10 | s1 | | +| main.rs:113:9:113:10 | s1 | main.rs:116:11:116:12 | s1 | match | +| main.rs:113:14:113:17 | Some | main.rs:113:19:113:30 | ...::from | | +| main.rs:113:14:113:41 | Some(...) | main.rs:113:9:113:10 | s1 | | +| main.rs:113:19:113:30 | ...::from | main.rs:113:32:113:39 | "Hello!" | | +| main.rs:113:19:113:40 | ...::from(...) | main.rs:113:14:113:41 | Some(...) | | +| main.rs:113:32:113:39 | "Hello!" | main.rs:113:19:113:40 | ...::from(...) | | +| main.rs:115:5:118:5 | while ... { ... } | main.rs:112:19:119:1 | { ... } | | +| main.rs:115:11:116:12 | [boolean(false)] let ... = s1 | main.rs:115:5:118:5 | while ... { ... } | false | +| main.rs:115:11:116:12 | [boolean(true)] let ... = s1 | main.rs:117:9:117:22 | ExprStmt | true | +| main.rs:115:15:115:26 | Some(...) | main.rs:115:11:116:12 | [boolean(false)] let ... = s1 | no-match | +| main.rs:115:15:115:26 | Some(...) | main.rs:115:24:115:25 | s2 | match | +| main.rs:115:20:115:25 | ref s2 | main.rs:115:11:116:12 | [boolean(true)] let ... = s1 | match | +| main.rs:115:24:115:25 | s2 | main.rs:115:20:115:25 | ref s2 | | +| main.rs:116:11:116:12 | s1 | main.rs:115:15:115:26 | Some(...) | | +| main.rs:116:14:118:5 | { ... } | main.rs:116:11:116:12 | s1 | | +| main.rs:117:9:117:17 | print_str | main.rs:117:19:117:20 | s2 | | +| main.rs:117:9:117:21 | print_str(...) | main.rs:116:14:118:5 | { ... } | | +| main.rs:117:9:117:22 | ExprStmt | main.rs:117:9:117:17 | print_str | | +| main.rs:117:19:117:20 | s2 | main.rs:117:9:117:21 | print_str(...) | | +| main.rs:121:1:136:1 | enter fn match_pattern1 | main.rs:122:5:122:21 | let ... = ... | | +| main.rs:121:1:136:1 | exit fn match_pattern1 (normal) | main.rs:121:1:136:1 | exit fn match_pattern1 | | +| main.rs:121:21:136:1 | { ... } | main.rs:121:1:136:1 | exit fn match_pattern1 (normal) | | +| main.rs:122:5:122:21 | let ... = ... | main.rs:122:14:122:17 | Some | | +| main.rs:122:9:122:10 | x6 | main.rs:122:9:122:10 | x6 | | +| main.rs:122:9:122:10 | x6 | main.rs:123:5:123:16 | let ... = 10 | match | +| main.rs:122:14:122:17 | Some | main.rs:122:19:122:19 | 5 | | +| main.rs:122:14:122:20 | Some(...) | main.rs:122:9:122:10 | x6 | | +| main.rs:122:19:122:19 | 5 | main.rs:122:14:122:20 | Some(...) | | +| main.rs:123:5:123:16 | let ... = 10 | main.rs:123:14:123:15 | 10 | | +| main.rs:123:9:123:10 | y1 | main.rs:123:9:123:10 | y1 | | +| main.rs:123:9:123:10 | y1 | main.rs:125:5:133:5 | ExprStmt | match | +| main.rs:123:14:123:15 | 10 | main.rs:123:9:123:10 | y1 | | +| main.rs:125:5:133:5 | ExprStmt | main.rs:125:11:125:12 | x6 | | +| main.rs:125:5:133:5 | match x6 { ... } | main.rs:135:5:135:18 | ExprStmt | | +| main.rs:125:11:125:12 | x6 | main.rs:126:9:126:16 | Some(...) | | +| main.rs:126:9:126:16 | Some(...) | main.rs:126:14:126:15 | 50 | match | +| main.rs:126:9:126:16 | Some(...) | main.rs:127:9:127:16 | Some(...) | no-match | +| main.rs:126:14:126:15 | 50 | main.rs:126:14:126:15 | 50 | | +| main.rs:126:14:126:15 | 50 | main.rs:126:21:126:29 | print_str | match | +| main.rs:126:14:126:15 | 50 | main.rs:127:9:127:16 | Some(...) | no-match | +| main.rs:126:21:126:29 | print_str | main.rs:126:31:126:38 | "Got 50" | | +| main.rs:126:21:126:39 | print_str(...) | main.rs:125:5:133:5 | match x6 { ... } | | +| main.rs:126:31:126:38 | "Got 50" | main.rs:126:21:126:39 | print_str(...) | | +| main.rs:127:9:127:16 | Some(...) | main.rs:127:14:127:15 | y1 | match | +| main.rs:127:9:127:16 | Some(...) | main.rs:132:9:132:12 | None | no-match | +| main.rs:127:14:127:15 | y1 | main.rs:127:14:127:15 | y1 | | +| main.rs:127:14:127:15 | y1 | main.rs:130:13:130:21 | print_i64 | match | +| main.rs:129:9:131:9 | { ... } | main.rs:125:5:133:5 | match x6 { ... } | | +| main.rs:130:13:130:21 | print_i64 | main.rs:130:23:130:24 | y1 | | +| main.rs:130:13:130:25 | print_i64(...) | main.rs:129:9:131:9 | { ... } | | +| main.rs:130:23:130:24 | y1 | main.rs:130:13:130:25 | print_i64(...) | | +| main.rs:132:9:132:12 | None | main.rs:132:9:132:12 | None | | +| main.rs:132:9:132:12 | None | main.rs:132:17:132:25 | print_str | match | +| main.rs:132:17:132:25 | print_str | main.rs:132:27:132:32 | "NONE" | | +| main.rs:132:17:132:33 | print_str(...) | main.rs:125:5:133:5 | match x6 { ... } | | +| main.rs:132:27:132:32 | "NONE" | main.rs:132:17:132:33 | print_str(...) | | +| main.rs:135:5:135:13 | print_i64 | main.rs:135:15:135:16 | y1 | | +| main.rs:135:5:135:17 | print_i64(...) | main.rs:121:21:136:1 | { ... } | | +| main.rs:135:5:135:18 | ExprStmt | main.rs:135:5:135:13 | print_i64 | | +| main.rs:135:15:135:16 | y1 | main.rs:135:5:135:17 | print_i64(...) | | +| main.rs:138:1:167:1 | enter fn match_pattern2 | main.rs:139:5:139:36 | let ... = ... | | +| main.rs:138:1:167:1 | exit fn match_pattern2 (normal) | main.rs:138:1:167:1 | exit fn match_pattern2 | | +| main.rs:138:21:167:1 | { ... } | main.rs:138:1:167:1 | exit fn match_pattern2 (normal) | | +| main.rs:139:5:139:36 | let ... = ... | main.rs:139:20:139:20 | 2 | | +| main.rs:139:9:139:15 | numbers | main.rs:139:9:139:15 | numbers | | +| main.rs:139:9:139:15 | numbers | main.rs:141:5:154:5 | ExprStmt | match | +| main.rs:139:19:139:35 | TupleExpr | main.rs:139:9:139:15 | numbers | | +| main.rs:139:20:139:20 | 2 | main.rs:139:23:139:23 | 4 | | +| main.rs:139:23:139:23 | 4 | main.rs:139:26:139:26 | 8 | | +| main.rs:139:26:139:26 | 8 | main.rs:139:29:139:30 | 16 | | +| main.rs:139:29:139:30 | 16 | main.rs:139:33:139:34 | 32 | | +| main.rs:139:33:139:34 | 32 | main.rs:139:19:139:35 | TupleExpr | | +| main.rs:141:5:154:5 | ExprStmt | main.rs:141:11:141:17 | numbers | | +| main.rs:141:5:154:5 | match numbers { ... } | main.rs:156:11:156:17 | numbers | | +| main.rs:141:11:141:17 | numbers | main.rs:143:9:149:9 | TuplePat | | +| main.rs:143:9:149:9 | TuplePat | main.rs:144:13:144:17 | first | match | +| main.rs:144:13:144:17 | first | main.rs:144:13:144:17 | first | | +| main.rs:144:13:144:17 | first | main.rs:145:13:145:13 | _ | match | +| main.rs:145:13:145:13 | _ | main.rs:146:13:146:17 | third | match | +| main.rs:146:13:146:17 | third | main.rs:146:13:146:17 | third | | +| main.rs:146:13:146:17 | third | main.rs:147:13:147:13 | _ | match | +| main.rs:147:13:147:13 | _ | main.rs:148:13:148:17 | fifth | match | +| main.rs:148:13:148:17 | fifth | main.rs:148:13:148:17 | fifth | | +| main.rs:148:13:148:17 | fifth | main.rs:150:13:150:29 | ExprStmt | match | +| main.rs:149:14:153:9 | { ... } | main.rs:141:5:154:5 | match numbers { ... } | | +| main.rs:150:13:150:21 | print_i64 | main.rs:150:23:150:27 | first | | +| main.rs:150:13:150:28 | print_i64(...) | main.rs:151:13:151:29 | ExprStmt | | | main.rs:150:13:150:29 | ExprStmt | main.rs:150:13:150:21 | print_i64 | | -| main.rs:150:23:150:27 | fifth | main.rs:150:13:150:28 | print_i64(...) | | -| main.rs:154:5:164:5 | match numbers { ... } | main.rs:136:21:165:1 | { ... } | | -| main.rs:154:11:154:17 | numbers | main.rs:156:9:160:9 | TuplePat | | -| main.rs:156:9:160:9 | TuplePat | main.rs:157:13:157:17 | first | match | -| main.rs:157:13:157:17 | first | main.rs:157:13:157:17 | first | | -| main.rs:157:13:157:17 | first | main.rs:158:13:158:14 | .. | match | -| main.rs:158:13:158:14 | .. | main.rs:159:13:159:16 | last | match | -| main.rs:159:13:159:16 | last | main.rs:159:13:159:16 | last | | -| main.rs:159:13:159:16 | last | main.rs:161:13:161:29 | ExprStmt | match | -| main.rs:160:14:163:9 | { ... } | main.rs:154:5:164:5 | match numbers { ... } | | -| main.rs:161:13:161:21 | print_i64 | main.rs:161:23:161:27 | first | | -| main.rs:161:13:161:28 | print_i64(...) | main.rs:162:13:162:28 | ExprStmt | | -| main.rs:161:13:161:29 | ExprStmt | main.rs:161:13:161:21 | print_i64 | | -| main.rs:161:23:161:27 | first | main.rs:161:13:161:28 | print_i64(...) | | -| main.rs:162:13:162:21 | print_i64 | main.rs:162:23:162:26 | last | | -| main.rs:162:13:162:27 | print_i64(...) | main.rs:160:14:163:9 | { ... } | | -| main.rs:162:13:162:28 | ExprStmt | main.rs:162:13:162:21 | print_i64 | | -| main.rs:162:23:162:26 | last | main.rs:162:13:162:27 | print_i64(...) | | -| main.rs:167:1:175:1 | enter fn match_pattern3 | main.rs:168:5:168:38 | let ... = ... | | -| main.rs:167:1:175:1 | exit fn match_pattern3 (normal) | main.rs:167:1:175:1 | exit fn match_pattern3 | | -| main.rs:167:21:175:1 | { ... } | main.rs:167:1:175:1 | exit fn match_pattern3 (normal) | | -| main.rs:168:5:168:38 | let ... = ... | main.rs:168:25:168:27 | "x" | | -| main.rs:168:9:168:10 | p2 | main.rs:168:9:168:10 | p2 | | -| main.rs:168:9:168:10 | p2 | main.rs:170:11:170:12 | p2 | match | -| main.rs:168:14:168:37 | Point {...} | main.rs:168:9:168:10 | p2 | | -| main.rs:168:25:168:27 | "x" | main.rs:168:33:168:35 | "y" | | -| main.rs:168:33:168:35 | "y" | main.rs:168:14:168:37 | Point {...} | | -| main.rs:170:5:174:5 | match p2 { ... } | main.rs:167:21:175:1 | { ... } | | -| main.rs:170:11:170:12 | p2 | main.rs:171:9:173:9 | Point {...} | | -| main.rs:171:9:173:9 | Point {...} | main.rs:172:16:172:17 | x7 | match | -| main.rs:172:16:172:17 | x7 | main.rs:172:16:172:17 | x7 | | -| main.rs:172:16:172:17 | x7 | main.rs:172:20:172:21 | .. | match | -| main.rs:172:20:172:21 | .. | main.rs:173:14:173:22 | print_str | match | -| main.rs:173:14:173:22 | print_str | main.rs:173:24:173:25 | x7 | | -| main.rs:173:14:173:26 | print_str(...) | main.rs:170:5:174:5 | match p2 { ... } | | -| main.rs:173:24:173:25 | x7 | main.rs:173:14:173:26 | print_str(...) | | -| main.rs:181:1:198:1 | enter fn match_pattern4 | main.rs:182:5:182:39 | let ... = ... | | -| main.rs:181:1:198:1 | exit fn match_pattern4 (normal) | main.rs:181:1:198:1 | exit fn match_pattern4 | | -| main.rs:181:21:198:1 | { ... } | main.rs:181:1:198:1 | exit fn match_pattern4 (normal) | | -| main.rs:182:5:182:39 | let ... = ... | main.rs:182:36:182:36 | 0 | | -| main.rs:182:9:182:11 | msg | main.rs:182:9:182:11 | msg | | -| main.rs:182:9:182:11 | msg | main.rs:184:11:184:13 | msg | match | -| main.rs:182:15:182:38 | ...::Hello {...} | main.rs:182:9:182:11 | msg | | -| main.rs:182:36:182:36 | 0 | main.rs:182:15:182:38 | ...::Hello {...} | | -| main.rs:184:5:197:5 | match msg { ... } | main.rs:181:21:198:1 | { ... } | | -| main.rs:184:11:184:13 | msg | main.rs:186:9:188:9 | ...::Hello {...} | | -| main.rs:186:9:188:9 | ...::Hello {...} | main.rs:187:31:187:35 | RangePat | match | -| main.rs:186:9:188:9 | ...::Hello {...} | main.rs:189:9:189:38 | ...::Hello {...} | no-match | -| main.rs:187:17:187:27 | id_variable | main.rs:187:17:187:35 | id_variable @ ... | | -| main.rs:187:17:187:35 | id_variable @ ... | main.rs:188:14:188:22 | print_i64 | match | -| main.rs:187:31:187:31 | 3 | main.rs:187:31:187:31 | 3 | | -| main.rs:187:31:187:31 | 3 | main.rs:187:35:187:35 | 7 | match | -| main.rs:187:31:187:31 | 3 | main.rs:189:9:189:38 | ...::Hello {...} | no-match | -| main.rs:187:31:187:35 | RangePat | main.rs:187:31:187:31 | 3 | match | -| main.rs:187:35:187:35 | 7 | main.rs:187:17:187:27 | id_variable | match | -| main.rs:187:35:187:35 | 7 | main.rs:187:35:187:35 | 7 | | -| main.rs:187:35:187:35 | 7 | main.rs:189:9:189:38 | ...::Hello {...} | no-match | -| main.rs:188:14:188:22 | print_i64 | main.rs:188:24:188:34 | id_variable | | -| main.rs:188:14:188:35 | print_i64(...) | main.rs:184:5:197:5 | match msg { ... } | | -| main.rs:188:24:188:34 | id_variable | main.rs:188:14:188:35 | print_i64(...) | | -| main.rs:189:9:189:38 | ...::Hello {...} | main.rs:189:30:189:36 | RangePat | match | -| main.rs:189:9:189:38 | ...::Hello {...} | main.rs:192:9:192:29 | ...::Hello {...} | no-match | -| main.rs:189:30:189:31 | 10 | main.rs:189:30:189:31 | 10 | | -| main.rs:189:30:189:31 | 10 | main.rs:189:35:189:36 | 12 | match | -| main.rs:189:30:189:31 | 10 | main.rs:192:9:192:29 | ...::Hello {...} | no-match | -| main.rs:189:30:189:36 | RangePat | main.rs:189:30:189:31 | 10 | match | -| main.rs:189:35:189:36 | 12 | main.rs:189:35:189:36 | 12 | | -| main.rs:189:35:189:36 | 12 | main.rs:190:22:190:51 | ExprStmt | match | -| main.rs:189:35:189:36 | 12 | main.rs:192:9:192:29 | ...::Hello {...} | no-match | -| main.rs:189:43:191:9 | { ... } | main.rs:184:5:197:5 | match msg { ... } | | -| main.rs:190:13:190:20 | ...::_print | main.rs:190:22:190:51 | "Found an id in another range\\... | | -| main.rs:190:13:190:52 | MacroExpr | main.rs:189:43:191:9 | { ... } | | -| main.rs:190:13:190:52 | println!... | main.rs:190:13:190:52 | MacroExpr | | -| main.rs:190:22:190:51 | "Found an id in another range\\... | main.rs:190:22:190:51 | FormatArgsExpr | | -| main.rs:190:22:190:51 | ...::_print(...) | main.rs:190:22:190:51 | { ... } | | -| main.rs:190:22:190:51 | ...::format_args_nl!... | main.rs:190:22:190:51 | MacroExpr | | -| main.rs:190:22:190:51 | ExprStmt | main.rs:190:13:190:20 | ...::_print | | -| main.rs:190:22:190:51 | FormatArgsExpr | main.rs:190:22:190:51 | ...::format_args_nl!... | | -| main.rs:190:22:190:51 | MacroBlockExpr | main.rs:190:13:190:52 | println!... | | -| main.rs:190:22:190:51 | MacroExpr | main.rs:190:22:190:51 | ...::_print(...) | | -| main.rs:190:22:190:51 | { ... } | main.rs:190:22:190:51 | MacroBlockExpr | | -| main.rs:192:9:192:29 | ...::Hello {...} | main.rs:192:26:192:27 | id | match | -| main.rs:192:26:192:27 | id | main.rs:192:26:192:27 | id | | -| main.rs:192:26:192:27 | id | main.rs:195:13:195:21 | print_i64 | match | -| main.rs:194:9:196:9 | { ... } | main.rs:184:5:197:5 | match msg { ... } | | -| main.rs:195:13:195:21 | print_i64 | main.rs:195:23:195:24 | id | | -| main.rs:195:13:195:25 | print_i64(...) | main.rs:194:9:196:9 | { ... } | | -| main.rs:195:23:195:24 | id | main.rs:195:13:195:25 | print_i64(...) | | -| main.rs:205:1:211:1 | enter fn match_pattern5 | main.rs:206:5:206:34 | let ... = ... | | -| main.rs:205:1:211:1 | exit fn match_pattern5 (normal) | main.rs:205:1:211:1 | exit fn match_pattern5 | | -| main.rs:205:21:211:1 | { ... } | main.rs:205:1:211:1 | exit fn match_pattern5 (normal) | | -| main.rs:206:5:206:34 | let ... = ... | main.rs:206:18:206:29 | ...::Left | | -| main.rs:206:9:206:14 | either | main.rs:206:9:206:14 | either | | -| main.rs:206:9:206:14 | either | main.rs:207:11:207:16 | either | match | -| main.rs:206:18:206:29 | ...::Left | main.rs:206:31:206:32 | 32 | | -| main.rs:206:18:206:33 | ...::Left(...) | main.rs:206:9:206:14 | either | | -| main.rs:206:31:206:32 | 32 | main.rs:206:18:206:33 | ...::Left(...) | | -| main.rs:207:5:210:5 | match either { ... } | main.rs:205:21:211:1 | { ... } | | -| main.rs:207:11:207:16 | either | main.rs:208:9:208:24 | ...::Left(...) | | -| main.rs:208:9:208:24 | ...::Left(...) | main.rs:208:22:208:23 | a3 | match | -| main.rs:208:9:208:24 | ...::Left(...) | main.rs:208:28:208:44 | ...::Right(...) | no-match | -| main.rs:208:9:208:44 | ... \| ... | main.rs:209:16:209:24 | print_i64 | match | -| main.rs:208:22:208:23 | a3 | main.rs:208:9:208:44 | ... \| ... | match | -| main.rs:208:22:208:23 | a3 | main.rs:208:22:208:23 | a3 | | -| main.rs:208:28:208:44 | ...::Right(...) | main.rs:208:42:208:43 | a3 | match | -| main.rs:208:42:208:43 | a3 | main.rs:208:9:208:44 | ... \| ... | match | -| main.rs:208:42:208:43 | a3 | main.rs:208:42:208:43 | a3 | | -| main.rs:209:16:209:24 | print_i64 | main.rs:209:26:209:27 | a3 | | -| main.rs:209:16:209:28 | print_i64(...) | main.rs:207:5:210:5 | match either { ... } | | -| main.rs:209:26:209:27 | a3 | main.rs:209:16:209:28 | print_i64(...) | | -| main.rs:219:1:233:1 | enter fn match_pattern6 | main.rs:220:5:220:37 | let ... = ... | | -| main.rs:219:1:233:1 | exit fn match_pattern6 (normal) | main.rs:219:1:233:1 | exit fn match_pattern6 | | -| main.rs:219:21:233:1 | { ... } | main.rs:219:1:233:1 | exit fn match_pattern6 (normal) | | -| main.rs:220:5:220:37 | let ... = ... | main.rs:220:14:220:32 | ...::Second | | -| main.rs:220:9:220:10 | tv | main.rs:220:9:220:10 | tv | | -| main.rs:220:9:220:10 | tv | main.rs:221:5:224:5 | ExprStmt | match | -| main.rs:220:14:220:32 | ...::Second | main.rs:220:34:220:35 | 62 | | -| main.rs:220:14:220:36 | ...::Second(...) | main.rs:220:9:220:10 | tv | | -| main.rs:220:34:220:35 | 62 | main.rs:220:14:220:36 | ...::Second(...) | | -| main.rs:221:5:224:5 | ExprStmt | main.rs:221:11:221:12 | tv | | -| main.rs:221:5:224:5 | match tv { ... } | main.rs:225:5:228:5 | ExprStmt | | -| main.rs:221:11:221:12 | tv | main.rs:222:9:222:30 | ...::First(...) | | -| main.rs:222:9:222:30 | ...::First(...) | main.rs:222:28:222:29 | a4 | match | -| main.rs:222:9:222:30 | ...::First(...) | main.rs:222:34:222:56 | ...::Second(...) | no-match | -| main.rs:222:9:222:81 | ... \| ... \| ... | main.rs:223:16:223:24 | print_i64 | match | -| main.rs:222:28:222:29 | a4 | main.rs:222:9:222:81 | ... \| ... \| ... | match | -| main.rs:222:28:222:29 | a4 | main.rs:222:28:222:29 | a4 | | -| main.rs:222:34:222:56 | ...::Second(...) | main.rs:222:54:222:55 | a4 | match | -| main.rs:222:34:222:56 | ...::Second(...) | main.rs:222:60:222:81 | ...::Third(...) | no-match | -| main.rs:222:54:222:55 | a4 | main.rs:222:9:222:81 | ... \| ... \| ... | match | -| main.rs:222:54:222:55 | a4 | main.rs:222:54:222:55 | a4 | | -| main.rs:222:60:222:81 | ...::Third(...) | main.rs:222:79:222:80 | a4 | match | -| main.rs:222:79:222:80 | a4 | main.rs:222:9:222:81 | ... \| ... \| ... | match | -| main.rs:222:79:222:80 | a4 | main.rs:222:79:222:80 | a4 | | -| main.rs:223:16:223:24 | print_i64 | main.rs:223:26:223:27 | a4 | | -| main.rs:223:16:223:28 | print_i64(...) | main.rs:221:5:224:5 | match tv { ... } | | -| main.rs:223:26:223:27 | a4 | main.rs:223:16:223:28 | print_i64(...) | | -| main.rs:225:5:228:5 | ExprStmt | main.rs:225:11:225:12 | tv | | -| main.rs:225:5:228:5 | match tv { ... } | main.rs:229:11:229:12 | tv | | -| main.rs:225:11:225:12 | tv | main.rs:226:10:226:31 | ...::First(...) | | -| main.rs:226:9:226:83 | ... \| ... | main.rs:227:16:227:24 | print_i64 | match | -| main.rs:226:10:226:31 | ...::First(...) | main.rs:226:29:226:30 | a5 | match | -| main.rs:226:10:226:31 | ...::First(...) | main.rs:226:35:226:57 | ...::Second(...) | no-match | -| main.rs:226:10:226:57 | [match(false)] ... \| ... | main.rs:226:62:226:83 | ...::Third(...) | no-match | -| main.rs:226:10:226:57 | [match(true)] ... \| ... | main.rs:226:9:226:83 | ... \| ... | match | -| main.rs:226:29:226:30 | a5 | main.rs:226:10:226:57 | [match(true)] ... \| ... | match | -| main.rs:226:29:226:30 | a5 | main.rs:226:29:226:30 | a5 | | -| main.rs:226:35:226:57 | ...::Second(...) | main.rs:226:10:226:57 | [match(false)] ... \| ... | no-match | -| main.rs:226:35:226:57 | ...::Second(...) | main.rs:226:55:226:56 | a5 | match | -| main.rs:226:55:226:56 | a5 | main.rs:226:10:226:57 | [match(true)] ... \| ... | match | -| main.rs:226:55:226:56 | a5 | main.rs:226:55:226:56 | a5 | | -| main.rs:226:62:226:83 | ...::Third(...) | main.rs:226:81:226:82 | a5 | match | -| main.rs:226:81:226:82 | a5 | main.rs:226:9:226:83 | ... \| ... | match | -| main.rs:226:81:226:82 | a5 | main.rs:226:81:226:82 | a5 | | -| main.rs:227:16:227:24 | print_i64 | main.rs:227:26:227:27 | a5 | | -| main.rs:227:16:227:28 | print_i64(...) | main.rs:225:5:228:5 | match tv { ... } | | -| main.rs:227:26:227:27 | a5 | main.rs:227:16:227:28 | print_i64(...) | | -| main.rs:229:5:232:5 | match tv { ... } | main.rs:219:21:233:1 | { ... } | | -| main.rs:229:11:229:12 | tv | main.rs:230:9:230:30 | ...::First(...) | | -| main.rs:230:9:230:30 | ...::First(...) | main.rs:230:28:230:29 | a6 | match | -| main.rs:230:9:230:30 | ...::First(...) | main.rs:230:35:230:57 | ...::Second(...) | no-match | -| main.rs:230:9:230:83 | ... \| ... | main.rs:231:16:231:24 | print_i64 | match | -| main.rs:230:28:230:29 | a6 | main.rs:230:9:230:83 | ... \| ... | match | -| main.rs:230:28:230:29 | a6 | main.rs:230:28:230:29 | a6 | | -| main.rs:230:35:230:57 | ...::Second(...) | main.rs:230:55:230:56 | a6 | match | -| main.rs:230:35:230:57 | ...::Second(...) | main.rs:230:61:230:82 | ...::Third(...) | no-match | -| main.rs:230:35:230:82 | ... \| ... | main.rs:230:9:230:83 | ... \| ... | match | -| main.rs:230:55:230:56 | a6 | main.rs:230:35:230:82 | ... \| ... | match | -| main.rs:230:55:230:56 | a6 | main.rs:230:55:230:56 | a6 | | -| main.rs:230:61:230:82 | ...::Third(...) | main.rs:230:80:230:81 | a6 | match | -| main.rs:230:80:230:81 | a6 | main.rs:230:35:230:82 | ... \| ... | match | -| main.rs:230:80:230:81 | a6 | main.rs:230:80:230:81 | a6 | | -| main.rs:231:16:231:24 | print_i64 | main.rs:231:26:231:27 | a6 | | -| main.rs:231:16:231:28 | print_i64(...) | main.rs:229:5:232:5 | match tv { ... } | | -| main.rs:231:26:231:27 | a6 | main.rs:231:16:231:28 | print_i64(...) | | -| main.rs:235:1:243:1 | enter fn match_pattern7 | main.rs:236:5:236:34 | let ... = ... | | -| main.rs:235:1:243:1 | exit fn match_pattern7 (normal) | main.rs:235:1:243:1 | exit fn match_pattern7 | | -| main.rs:235:21:243:1 | { ... } | main.rs:235:1:243:1 | exit fn match_pattern7 (normal) | | -| main.rs:236:5:236:34 | let ... = ... | main.rs:236:18:236:29 | ...::Left | | -| main.rs:236:9:236:14 | either | main.rs:236:9:236:14 | either | | -| main.rs:236:9:236:14 | either | main.rs:237:11:237:16 | either | match | -| main.rs:236:18:236:29 | ...::Left | main.rs:236:31:236:32 | 32 | | -| main.rs:236:18:236:33 | ...::Left(...) | main.rs:236:9:236:14 | either | | -| main.rs:236:31:236:32 | 32 | main.rs:236:18:236:33 | ...::Left(...) | | -| main.rs:237:5:242:5 | match either { ... } | main.rs:235:21:243:1 | { ... } | | -| main.rs:237:11:237:16 | either | main.rs:238:9:238:24 | ...::Left(...) | | -| main.rs:238:9:238:24 | ...::Left(...) | main.rs:238:22:238:23 | a7 | match | -| main.rs:238:9:238:24 | ...::Left(...) | main.rs:238:28:238:44 | ...::Right(...) | no-match | -| main.rs:238:9:238:44 | [match(false)] ... \| ... | main.rs:241:9:241:9 | _ | no-match | -| main.rs:238:9:238:44 | [match(true)] ... \| ... | main.rs:239:16:239:17 | a7 | match | -| main.rs:238:22:238:23 | a7 | main.rs:238:9:238:44 | [match(true)] ... \| ... | match | -| main.rs:238:22:238:23 | a7 | main.rs:238:22:238:23 | a7 | | -| main.rs:238:28:238:44 | ...::Right(...) | main.rs:238:9:238:44 | [match(false)] ... \| ... | no-match | -| main.rs:238:28:238:44 | ...::Right(...) | main.rs:238:42:238:43 | a7 | match | -| main.rs:238:42:238:43 | a7 | main.rs:238:9:238:44 | [match(true)] ... \| ... | match | -| main.rs:238:42:238:43 | a7 | main.rs:238:42:238:43 | a7 | | -| main.rs:239:16:239:17 | a7 | main.rs:239:21:239:21 | 0 | | -| main.rs:239:16:239:21 | ... > ... | main.rs:240:16:240:24 | print_i64 | true | -| main.rs:239:16:239:21 | ... > ... | main.rs:241:9:241:9 | _ | false | -| main.rs:239:21:239:21 | 0 | main.rs:239:16:239:21 | ... > ... | | -| main.rs:240:16:240:24 | print_i64 | main.rs:240:26:240:27 | a7 | | -| main.rs:240:16:240:28 | print_i64(...) | main.rs:237:5:242:5 | match either { ... } | | -| main.rs:240:26:240:27 | a7 | main.rs:240:16:240:28 | print_i64(...) | | -| main.rs:241:9:241:9 | _ | main.rs:241:14:241:15 | TupleExpr | match | -| main.rs:241:14:241:15 | TupleExpr | main.rs:237:5:242:5 | match either { ... } | | -| main.rs:245:1:260:1 | enter fn match_pattern8 | main.rs:246:5:246:34 | let ... = ... | | -| main.rs:245:1:260:1 | exit fn match_pattern8 (normal) | main.rs:245:1:260:1 | exit fn match_pattern8 | | -| main.rs:245:21:260:1 | { ... } | main.rs:245:1:260:1 | exit fn match_pattern8 (normal) | | -| main.rs:246:5:246:34 | let ... = ... | main.rs:246:18:246:29 | ...::Left | | -| main.rs:246:9:246:14 | either | main.rs:246:9:246:14 | either | | -| main.rs:246:9:246:14 | either | main.rs:248:11:248:16 | either | match | -| main.rs:246:18:246:29 | ...::Left | main.rs:246:31:246:32 | 32 | | -| main.rs:246:18:246:33 | ...::Left(...) | main.rs:246:9:246:14 | either | | -| main.rs:246:31:246:32 | 32 | main.rs:246:18:246:33 | ...::Left(...) | | -| main.rs:248:5:259:5 | match either { ... } | main.rs:245:21:260:1 | { ... } | | -| main.rs:248:11:248:16 | either | main.rs:250:14:250:30 | ...::Left(...) | | -| main.rs:249:9:250:52 | ref e @ ... | main.rs:252:13:252:27 | ExprStmt | match | -| main.rs:249:13:249:13 | e | main.rs:249:9:250:52 | ref e @ ... | | -| main.rs:250:14:250:30 | ...::Left(...) | main.rs:250:27:250:29 | a11 | match | -| main.rs:250:14:250:30 | ...::Left(...) | main.rs:250:34:250:51 | ...::Right(...) | no-match | -| main.rs:250:14:250:51 | [match(false)] ... \| ... | main.rs:258:9:258:9 | _ | no-match | -| main.rs:250:14:250:51 | [match(true)] ... \| ... | main.rs:249:13:249:13 | e | match | -| main.rs:250:27:250:29 | a11 | main.rs:250:14:250:51 | [match(true)] ... \| ... | match | -| main.rs:250:27:250:29 | a11 | main.rs:250:27:250:29 | a11 | | -| main.rs:250:34:250:51 | ...::Right(...) | main.rs:250:14:250:51 | [match(false)] ... \| ... | no-match | -| main.rs:250:34:250:51 | ...::Right(...) | main.rs:250:48:250:50 | a11 | match | -| main.rs:250:48:250:50 | a11 | main.rs:250:14:250:51 | [match(true)] ... \| ... | match | -| main.rs:250:48:250:50 | a11 | main.rs:250:48:250:50 | a11 | | -| main.rs:251:12:257:9 | { ... } | main.rs:248:5:259:5 | match either { ... } | | -| main.rs:252:13:252:21 | print_i64 | main.rs:252:23:252:25 | a11 | | -| main.rs:252:13:252:26 | print_i64(...) | main.rs:254:15:254:15 | e | | -| main.rs:252:13:252:27 | ExprStmt | main.rs:252:13:252:21 | print_i64 | | -| main.rs:252:23:252:25 | a11 | main.rs:252:13:252:26 | print_i64(...) | | -| main.rs:253:13:256:13 | if ... {...} | main.rs:251:12:257:9 | { ... } | | -| main.rs:253:16:254:15 | [boolean(false)] let ... = e | main.rs:253:13:256:13 | if ... {...} | false | -| main.rs:253:16:254:15 | [boolean(true)] let ... = e | main.rs:255:17:255:32 | ExprStmt | true | -| main.rs:253:20:253:36 | ...::Left(...) | main.rs:253:16:254:15 | [boolean(false)] let ... = e | no-match | -| main.rs:253:20:253:36 | ...::Left(...) | main.rs:253:33:253:35 | a12 | match | -| main.rs:253:33:253:35 | a12 | main.rs:253:16:254:15 | [boolean(true)] let ... = e | match | -| main.rs:253:33:253:35 | a12 | main.rs:253:33:253:35 | a12 | | -| main.rs:254:15:254:15 | e | main.rs:253:20:253:36 | ...::Left(...) | | -| main.rs:254:17:256:13 | { ... } | main.rs:253:13:256:13 | if ... {...} | | -| main.rs:255:17:255:25 | print_i64 | main.rs:255:28:255:30 | a12 | | -| main.rs:255:17:255:31 | print_i64(...) | main.rs:254:17:256:13 | { ... } | | -| main.rs:255:17:255:32 | ExprStmt | main.rs:255:17:255:25 | print_i64 | | -| main.rs:255:27:255:30 | * ... | main.rs:255:17:255:31 | print_i64(...) | | -| main.rs:255:28:255:30 | a12 | main.rs:255:27:255:30 | * ... | | -| main.rs:258:9:258:9 | _ | main.rs:258:14:258:15 | TupleExpr | match | -| main.rs:258:14:258:15 | TupleExpr | main.rs:248:5:259:5 | match either { ... } | | -| main.rs:269:1:275:1 | enter fn match_pattern9 | main.rs:270:5:270:36 | let ... = ... | | -| main.rs:269:1:275:1 | exit fn match_pattern9 (normal) | main.rs:269:1:275:1 | exit fn match_pattern9 | | -| main.rs:269:21:275:1 | { ... } | main.rs:269:1:275:1 | exit fn match_pattern9 (normal) | | -| main.rs:270:5:270:36 | let ... = ... | main.rs:270:14:270:31 | ...::Second | | -| main.rs:270:9:270:10 | fv | main.rs:270:9:270:10 | fv | | -| main.rs:270:9:270:10 | fv | main.rs:271:11:271:12 | fv | match | -| main.rs:270:14:270:31 | ...::Second | main.rs:270:33:270:34 | 62 | | -| main.rs:270:14:270:35 | ...::Second(...) | main.rs:270:9:270:10 | fv | | -| main.rs:270:33:270:34 | 62 | main.rs:270:14:270:35 | ...::Second(...) | | -| main.rs:271:5:274:5 | match fv { ... } | main.rs:269:21:275:1 | { ... } | | -| main.rs:271:11:271:12 | fv | main.rs:272:9:272:30 | ...::First(...) | | -| main.rs:272:9:272:30 | ...::First(...) | main.rs:272:27:272:29 | a13 | match | -| main.rs:272:9:272:30 | ...::First(...) | main.rs:272:35:272:57 | ...::Second(...) | no-match | -| main.rs:272:9:272:109 | ... \| ... \| ... | main.rs:273:16:273:24 | print_i64 | match | -| main.rs:272:27:272:29 | a13 | main.rs:272:9:272:109 | ... \| ... \| ... | match | -| main.rs:272:27:272:29 | a13 | main.rs:272:27:272:29 | a13 | | -| main.rs:272:35:272:57 | ...::Second(...) | main.rs:272:54:272:56 | a13 | match | -| main.rs:272:35:272:57 | ...::Second(...) | main.rs:272:61:272:82 | ...::Third(...) | no-match | -| main.rs:272:35:272:82 | [match(false)] ... \| ... | main.rs:272:87:272:109 | ...::Fourth(...) | no-match | -| main.rs:272:35:272:82 | [match(true)] ... \| ... | main.rs:272:9:272:109 | ... \| ... \| ... | match | -| main.rs:272:54:272:56 | a13 | main.rs:272:35:272:82 | [match(true)] ... \| ... | match | -| main.rs:272:54:272:56 | a13 | main.rs:272:54:272:56 | a13 | | -| main.rs:272:61:272:82 | ...::Third(...) | main.rs:272:35:272:82 | [match(false)] ... \| ... | no-match | -| main.rs:272:61:272:82 | ...::Third(...) | main.rs:272:79:272:81 | a13 | match | -| main.rs:272:79:272:81 | a13 | main.rs:272:35:272:82 | [match(true)] ... \| ... | match | -| main.rs:272:79:272:81 | a13 | main.rs:272:79:272:81 | a13 | | -| main.rs:272:87:272:109 | ...::Fourth(...) | main.rs:272:106:272:108 | a13 | match | -| main.rs:272:106:272:108 | a13 | main.rs:272:9:272:109 | ... \| ... \| ... | match | -| main.rs:272:106:272:108 | a13 | main.rs:272:106:272:108 | a13 | | -| main.rs:273:16:273:24 | print_i64 | main.rs:273:26:273:28 | a13 | | -| main.rs:273:16:273:29 | print_i64(...) | main.rs:271:5:274:5 | match fv { ... } | | -| main.rs:273:26:273:28 | a13 | main.rs:273:16:273:29 | print_i64(...) | | -| main.rs:277:1:291:1 | enter fn match_pattern10 | main.rs:279:5:279:20 | let ... = ... | | -| main.rs:277:1:291:1 | exit fn match_pattern10 (normal) | main.rs:277:1:291:1 | exit fn match_pattern10 | | -| main.rs:278:22:291:1 | { ... } | main.rs:277:1:291:1 | exit fn match_pattern10 (normal) | | -| main.rs:279:5:279:20 | let ... = ... | main.rs:279:12:279:15 | Some | | -| main.rs:279:9:279:9 | x | main.rs:279:9:279:9 | x | | -| main.rs:279:9:279:9 | x | main.rs:281:7:281:7 | x | match | -| main.rs:279:12:279:15 | Some | main.rs:279:17:279:18 | 42 | | -| main.rs:279:12:279:19 | Some(...) | main.rs:279:9:279:9 | x | | -| main.rs:279:17:279:18 | 42 | main.rs:279:12:279:19 | Some(...) | | -| main.rs:280:5:290:5 | if ... {...} else {...} | main.rs:278:22:291:1 | { ... } | | -| main.rs:280:8:281:7 | [boolean(false)] let ... = x | main.rs:280:8:283:9 | [boolean(false)] ... && ... | false | -| main.rs:280:8:281:7 | [boolean(true)] let ... = x | main.rs:283:5:283:5 | x | true | -| main.rs:280:8:283:9 | [boolean(false)] ... && ... | main.rs:287:9:288:14 | let ... = x | false | -| main.rs:280:8:283:9 | [boolean(true)] ... && ... | main.rs:285:9:285:21 | ExprStmt | true | -| main.rs:280:12:280:18 | Some(...) | main.rs:280:8:281:7 | [boolean(false)] let ... = x | no-match | -| main.rs:280:12:280:18 | Some(...) | main.rs:280:17:280:17 | x | match | -| main.rs:280:17:280:17 | x | main.rs:280:8:281:7 | [boolean(true)] let ... = x | match | -| main.rs:280:17:280:17 | x | main.rs:280:17:280:17 | x | | -| main.rs:281:7:281:7 | x | main.rs:280:12:280:18 | Some(...) | | -| main.rs:283:5:283:5 | x | main.rs:283:9:283:9 | 0 | | -| main.rs:283:5:283:9 | ... > ... | main.rs:280:8:283:9 | [boolean(false)] ... && ... | false | -| main.rs:283:5:283:9 | ... > ... | main.rs:280:8:283:9 | [boolean(true)] ... && ... | true | -| main.rs:283:9:283:9 | 0 | main.rs:283:5:283:9 | ... > ... | | -| main.rs:284:5:286:5 | { ... } | main.rs:280:5:290:5 | if ... {...} else {...} | | -| main.rs:285:9:285:17 | print_i64 | main.rs:285:19:285:19 | x | | -| main.rs:285:9:285:20 | print_i64(...) | main.rs:284:5:286:5 | { ... } | | -| main.rs:285:9:285:21 | ExprStmt | main.rs:285:9:285:17 | print_i64 | | -| main.rs:285:19:285:19 | x | main.rs:285:9:285:20 | print_i64(...) | | -| main.rs:286:12:290:5 | { ... } | main.rs:280:5:290:5 | if ... {...} else {...} | | -| main.rs:287:9:288:14 | let ... = x | main.rs:288:13:288:13 | x | | -| main.rs:287:13:287:13 | x | main.rs:287:13:287:13 | x | | -| main.rs:287:13:287:13 | x | main.rs:289:9:289:30 | ExprStmt | match | -| main.rs:288:13:288:13 | x | main.rs:287:13:287:13 | x | | -| main.rs:289:9:289:17 | print_i64 | main.rs:289:19:289:19 | x | | -| main.rs:289:9:289:29 | print_i64(...) | main.rs:286:12:290:5 | { ... } | | -| main.rs:289:9:289:30 | ExprStmt | main.rs:289:9:289:17 | print_i64 | | -| main.rs:289:19:289:19 | x | main.rs:289:19:289:28 | x.unwrap() | | -| main.rs:289:19:289:28 | x.unwrap() | main.rs:289:9:289:29 | print_i64(...) | | -| main.rs:293:1:310:1 | enter fn match_pattern11 | main.rs:295:5:295:21 | let ... = ... | | -| main.rs:293:1:310:1 | exit fn match_pattern11 (normal) | main.rs:293:1:310:1 | exit fn match_pattern11 | | -| main.rs:294:22:310:1 | { ... } | main.rs:293:1:310:1 | exit fn match_pattern11 (normal) | | -| main.rs:295:5:295:21 | let ... = ... | main.rs:295:13:295:16 | Some | | -| main.rs:295:9:295:9 | x | main.rs:295:9:295:9 | x | | -| main.rs:295:9:295:9 | x | main.rs:297:7:297:7 | x | match | -| main.rs:295:13:295:16 | Some | main.rs:295:18:295:19 | 42 | | -| main.rs:295:13:295:20 | Some(...) | main.rs:295:9:295:9 | x | | -| main.rs:295:18:295:19 | 42 | main.rs:295:13:295:20 | Some(...) | | -| main.rs:296:5:309:5 | if ... {...} else {...} | main.rs:294:22:310:1 | { ... } | | -| main.rs:296:8:297:7 | [boolean(false)] let ... = x | main.rs:296:8:300:13 | [boolean(false)] ... && ... | false | -| main.rs:296:8:297:7 | [boolean(true)] let ... = x | main.rs:300:7:300:10 | Some | true | -| main.rs:296:8:300:13 | [boolean(false)] ... && ... | main.rs:296:8:302:9 | [boolean(false)] ... && ... | false | -| main.rs:296:8:300:13 | [boolean(true)] ... && ... | main.rs:302:5:302:5 | x | true | -| main.rs:296:8:302:9 | [boolean(false)] ... && ... | main.rs:306:9:307:14 | let ... = x | false | -| main.rs:296:8:302:9 | [boolean(true)] ... && ... | main.rs:304:9:304:21 | ExprStmt | true | -| main.rs:296:12:296:18 | Some(...) | main.rs:296:8:297:7 | [boolean(false)] let ... = x | no-match | -| main.rs:296:12:296:18 | Some(...) | main.rs:296:17:296:17 | x | match | -| main.rs:296:17:296:17 | x | main.rs:296:8:297:7 | [boolean(true)] let ... = x | match | -| main.rs:296:17:296:17 | x | main.rs:296:17:296:17 | x | | -| main.rs:297:7:297:7 | x | main.rs:296:12:296:18 | Some(...) | | -| main.rs:299:5:300:13 | [boolean(false)] let ... = ... | main.rs:296:8:300:13 | [boolean(false)] ... && ... | false | -| main.rs:299:5:300:13 | [boolean(true)] let ... = ... | main.rs:296:8:300:13 | [boolean(true)] ... && ... | true | -| main.rs:299:9:299:15 | Some(...) | main.rs:299:5:300:13 | [boolean(false)] let ... = ... | no-match | -| main.rs:299:9:299:15 | Some(...) | main.rs:299:14:299:14 | x | match | -| main.rs:299:14:299:14 | x | main.rs:299:5:300:13 | [boolean(true)] let ... = ... | match | -| main.rs:299:14:299:14 | x | main.rs:299:14:299:14 | x | | -| main.rs:300:7:300:10 | Some | main.rs:300:12:300:12 | x | | -| main.rs:300:7:300:13 | Some(...) | main.rs:299:9:299:15 | Some(...) | | -| main.rs:300:12:300:12 | x | main.rs:300:7:300:13 | Some(...) | | -| main.rs:302:5:302:5 | x | main.rs:302:9:302:9 | 0 | | -| main.rs:302:5:302:9 | ... > ... | main.rs:296:8:302:9 | [boolean(false)] ... && ... | false | -| main.rs:302:5:302:9 | ... > ... | main.rs:296:8:302:9 | [boolean(true)] ... && ... | true | -| main.rs:302:9:302:9 | 0 | main.rs:302:5:302:9 | ... > ... | | -| main.rs:303:5:305:5 | { ... } | main.rs:296:5:309:5 | if ... {...} else {...} | | -| main.rs:304:9:304:17 | print_i64 | main.rs:304:19:304:19 | x | | -| main.rs:304:9:304:20 | print_i64(...) | main.rs:303:5:305:5 | { ... } | | -| main.rs:304:9:304:21 | ExprStmt | main.rs:304:9:304:17 | print_i64 | | -| main.rs:304:19:304:19 | x | main.rs:304:9:304:20 | print_i64(...) | | -| main.rs:305:12:309:5 | { ... } | main.rs:296:5:309:5 | if ... {...} else {...} | | -| main.rs:306:9:307:14 | let ... = x | main.rs:307:13:307:13 | x | | -| main.rs:306:13:306:13 | x | main.rs:306:13:306:13 | x | | -| main.rs:306:13:306:13 | x | main.rs:308:9:308:30 | ExprStmt | match | -| main.rs:307:13:307:13 | x | main.rs:306:13:306:13 | x | | -| main.rs:308:9:308:17 | print_i64 | main.rs:308:19:308:19 | x | | -| main.rs:308:9:308:29 | print_i64(...) | main.rs:305:12:309:5 | { ... } | | -| main.rs:308:9:308:30 | ExprStmt | main.rs:308:9:308:17 | print_i64 | | -| main.rs:308:19:308:19 | x | main.rs:308:19:308:28 | x.unwrap() | | -| main.rs:308:19:308:28 | x.unwrap() | main.rs:308:9:308:29 | print_i64(...) | | -| main.rs:312:1:328:1 | enter fn match_pattern12 | main.rs:314:5:314:21 | let ... = ... | | -| main.rs:312:1:328:1 | exit fn match_pattern12 (normal) | main.rs:312:1:328:1 | exit fn match_pattern12 | | -| main.rs:313:22:328:1 | { ... } | main.rs:312:1:328:1 | exit fn match_pattern12 (normal) | | -| main.rs:314:5:314:21 | let ... = ... | main.rs:314:13:314:16 | Some | | -| main.rs:314:9:314:9 | x | main.rs:314:9:314:9 | x | | -| main.rs:314:9:314:9 | x | main.rs:315:5:325:5 | ExprStmt | match | -| main.rs:314:13:314:16 | Some | main.rs:314:18:314:19 | 42 | | -| main.rs:314:13:314:20 | Some(...) | main.rs:314:9:314:9 | x | | -| main.rs:314:18:314:19 | 42 | main.rs:314:13:314:20 | Some(...) | | -| main.rs:315:5:325:5 | ExprStmt | main.rs:316:7:316:7 | x | | -| main.rs:315:5:325:5 | while ... { ... } | main.rs:327:5:327:26 | ExprStmt | | -| main.rs:315:11:316:7 | [boolean(false)] let ... = x | main.rs:315:11:319:13 | [boolean(false)] ... && ... | false | -| main.rs:315:11:316:7 | [boolean(true)] let ... = x | main.rs:319:7:319:10 | Some | true | -| main.rs:315:11:319:13 | [boolean(false)] ... && ... | main.rs:315:11:321:9 | [boolean(false)] ... && ... | false | -| main.rs:315:11:319:13 | [boolean(true)] ... && ... | main.rs:321:5:321:5 | x | true | -| main.rs:315:11:321:9 | [boolean(false)] ... && ... | main.rs:315:5:325:5 | while ... { ... } | false | -| main.rs:315:11:321:9 | [boolean(true)] ... && ... | main.rs:323:9:323:21 | ExprStmt | true | -| main.rs:315:15:315:21 | Some(...) | main.rs:315:11:316:7 | [boolean(false)] let ... = x | no-match | -| main.rs:315:15:315:21 | Some(...) | main.rs:315:20:315:20 | x | match | -| main.rs:315:20:315:20 | x | main.rs:315:11:316:7 | [boolean(true)] let ... = x | match | -| main.rs:315:20:315:20 | x | main.rs:315:20:315:20 | x | | -| main.rs:316:7:316:7 | x | main.rs:315:15:315:21 | Some(...) | | -| main.rs:318:5:319:13 | [boolean(false)] let ... = ... | main.rs:315:11:319:13 | [boolean(false)] ... && ... | false | -| main.rs:318:5:319:13 | [boolean(true)] let ... = ... | main.rs:315:11:319:13 | [boolean(true)] ... && ... | true | -| main.rs:318:9:318:15 | Some(...) | main.rs:318:5:319:13 | [boolean(false)] let ... = ... | no-match | -| main.rs:318:9:318:15 | Some(...) | main.rs:318:14:318:14 | x | match | -| main.rs:318:14:318:14 | x | main.rs:318:5:319:13 | [boolean(true)] let ... = ... | match | -| main.rs:318:14:318:14 | x | main.rs:318:14:318:14 | x | | -| main.rs:319:7:319:10 | Some | main.rs:319:12:319:12 | x | | -| main.rs:319:7:319:13 | Some(...) | main.rs:318:9:318:15 | Some(...) | | -| main.rs:319:12:319:12 | x | main.rs:319:7:319:13 | Some(...) | | -| main.rs:321:5:321:5 | x | main.rs:321:9:321:9 | 0 | | -| main.rs:321:5:321:9 | ... > ... | main.rs:315:11:321:9 | [boolean(false)] ... && ... | false | -| main.rs:321:5:321:9 | ... > ... | main.rs:315:11:321:9 | [boolean(true)] ... && ... | true | -| main.rs:321:9:321:9 | 0 | main.rs:321:5:321:9 | ... > ... | | -| main.rs:323:9:323:17 | print_i64 | main.rs:323:19:323:19 | x | | -| main.rs:323:9:323:20 | print_i64(...) | main.rs:324:9:324:14 | ExprStmt | | -| main.rs:323:9:323:21 | ExprStmt | main.rs:323:9:323:17 | print_i64 | | -| main.rs:323:19:323:19 | x | main.rs:323:9:323:20 | print_i64(...) | | -| main.rs:324:9:324:13 | break | main.rs:315:5:325:5 | while ... { ... } | break | -| main.rs:324:9:324:14 | ExprStmt | main.rs:324:9:324:13 | break | | -| main.rs:327:5:327:13 | print_i64 | main.rs:327:15:327:15 | x | | -| main.rs:327:5:327:25 | print_i64(...) | main.rs:313:22:328:1 | { ... } | | -| main.rs:327:5:327:26 | ExprStmt | main.rs:327:5:327:13 | print_i64 | | -| main.rs:327:15:327:15 | x | main.rs:327:15:327:24 | x.unwrap() | | -| main.rs:327:15:327:24 | x.unwrap() | main.rs:327:5:327:25 | print_i64(...) | | -| main.rs:330:1:342:1 | enter fn match_pattern13 | main.rs:332:5:332:21 | let ... = ... | | -| main.rs:330:1:342:1 | exit fn match_pattern13 (normal) | main.rs:330:1:342:1 | exit fn match_pattern13 | | -| main.rs:331:22:342:1 | { ... } | main.rs:330:1:342:1 | exit fn match_pattern13 (normal) | | -| main.rs:332:5:332:21 | let ... = ... | main.rs:332:13:332:16 | Some | | -| main.rs:332:9:332:9 | x | main.rs:332:9:332:9 | x | | -| main.rs:332:9:332:9 | x | main.rs:333:5:339:5 | ExprStmt | match | -| main.rs:332:13:332:16 | Some | main.rs:332:18:332:19 | 42 | | -| main.rs:332:13:332:20 | Some(...) | main.rs:332:9:332:9 | x | | -| main.rs:332:18:332:19 | 42 | main.rs:332:13:332:20 | Some(...) | | -| main.rs:333:5:339:5 | ExprStmt | main.rs:333:11:333:11 | x | | -| main.rs:333:5:339:5 | match x { ... } | main.rs:341:5:341:26 | ExprStmt | | -| main.rs:333:11:333:11 | x | main.rs:334:9:334:15 | Some(...) | | -| main.rs:334:9:334:15 | Some(...) | main.rs:334:14:334:14 | x | match | -| main.rs:334:9:334:15 | Some(...) | main.rs:338:9:338:9 | _ | no-match | -| main.rs:334:14:334:14 | x | main.rs:334:14:334:14 | x | | -| main.rs:334:14:334:14 | x | main.rs:336:18:336:18 | x | match | -| main.rs:335:16:336:18 | [boolean(true)] let ... = x | main.rs:337:19:337:19 | x | true | -| main.rs:335:16:337:23 | [boolean(false)] ... && ... | main.rs:338:9:338:9 | _ | false | -| main.rs:335:16:337:23 | [boolean(true)] ... && ... | main.rs:337:28:337:29 | TupleExpr | true | -| main.rs:335:20:335:20 | x | main.rs:335:16:336:18 | [boolean(true)] let ... = x | match | -| main.rs:335:20:335:20 | x | main.rs:335:20:335:20 | x | | -| main.rs:336:18:336:18 | x | main.rs:335:20:335:20 | x | | -| main.rs:337:19:337:19 | x | main.rs:337:23:337:23 | 0 | | -| main.rs:337:19:337:23 | ... > ... | main.rs:335:16:337:23 | [boolean(false)] ... && ... | false | -| main.rs:337:19:337:23 | ... > ... | main.rs:335:16:337:23 | [boolean(true)] ... && ... | true | -| main.rs:337:23:337:23 | 0 | main.rs:337:19:337:23 | ... > ... | | -| main.rs:337:28:337:29 | TupleExpr | main.rs:333:5:339:5 | match x { ... } | | -| main.rs:338:9:338:9 | _ | main.rs:338:14:338:15 | TupleExpr | match | -| main.rs:338:14:338:15 | TupleExpr | main.rs:333:5:339:5 | match x { ... } | | -| main.rs:341:5:341:13 | print_i64 | main.rs:341:15:341:15 | x | | -| main.rs:341:5:341:25 | print_i64(...) | main.rs:331:22:342:1 | { ... } | | -| main.rs:341:5:341:26 | ExprStmt | main.rs:341:5:341:13 | print_i64 | | -| main.rs:341:15:341:15 | x | main.rs:341:15:341:24 | x.unwrap() | | -| main.rs:341:15:341:24 | x.unwrap() | main.rs:341:5:341:25 | print_i64(...) | | -| main.rs:344:1:359:1 | enter fn match_pattern14 | main.rs:346:5:346:19 | let ... = ... | | -| main.rs:344:1:359:1 | exit fn match_pattern14 (normal) | main.rs:344:1:359:1 | exit fn match_pattern14 | | -| main.rs:345:22:359:1 | { ... } | main.rs:344:1:359:1 | exit fn match_pattern14 (normal) | | -| main.rs:346:5:346:19 | let ... = ... | main.rs:346:13:346:14 | Ok | | -| main.rs:346:9:346:9 | x | main.rs:346:9:346:9 | x | | -| main.rs:346:9:346:9 | x | main.rs:348:7:348:7 | x | match | -| main.rs:346:13:346:14 | Ok | main.rs:346:16:346:17 | 42 | | -| main.rs:346:13:346:18 | Ok(...) | main.rs:346:9:346:9 | x | | -| main.rs:346:16:346:17 | 42 | main.rs:346:13:346:18 | Ok(...) | | -| main.rs:347:5:358:5 | if ... {...} else {...} | main.rs:345:22:359:1 | { ... } | | -| main.rs:347:8:348:7 | [boolean(false)] let ... = x | main.rs:353:7:353:7 | x | false | -| main.rs:347:8:348:7 | [boolean(true)] let ... = x | main.rs:350:9:350:21 | ExprStmt | true | -| main.rs:347:12:347:17 | Err(...) | main.rs:347:8:348:7 | [boolean(false)] let ... = x | no-match | -| main.rs:347:12:347:17 | Err(...) | main.rs:347:16:347:16 | x | match | -| main.rs:347:16:347:16 | x | main.rs:347:8:348:7 | [boolean(true)] let ... = x | match | -| main.rs:347:16:347:16 | x | main.rs:347:16:347:16 | x | | -| main.rs:348:7:348:7 | x | main.rs:347:12:347:17 | Err(...) | | -| main.rs:349:5:351:5 | { ... } | main.rs:347:5:358:5 | if ... {...} else {...} | | -| main.rs:350:9:350:17 | print_i64 | main.rs:350:19:350:19 | x | | -| main.rs:350:9:350:20 | print_i64(...) | main.rs:349:5:351:5 | { ... } | | -| main.rs:350:9:350:21 | ExprStmt | main.rs:350:9:350:17 | print_i64 | | -| main.rs:350:19:350:19 | x | main.rs:350:9:350:20 | print_i64(...) | | -| main.rs:352:10:358:5 | if ... {...} else {...} | main.rs:347:5:358:5 | if ... {...} else {...} | | -| main.rs:352:13:353:7 | [boolean(false)] let ... = x | main.rs:357:9:357:30 | ExprStmt | false | -| main.rs:352:13:353:7 | [boolean(true)] let ... = x | main.rs:355:9:355:21 | ExprStmt | true | -| main.rs:352:17:352:21 | Ok(...) | main.rs:352:13:353:7 | [boolean(false)] let ... = x | no-match | -| main.rs:352:17:352:21 | Ok(...) | main.rs:352:20:352:20 | x | match | -| main.rs:352:20:352:20 | x | main.rs:352:13:353:7 | [boolean(true)] let ... = x | match | -| main.rs:352:20:352:20 | x | main.rs:352:20:352:20 | x | | -| main.rs:353:7:353:7 | x | main.rs:352:17:352:21 | Ok(...) | | -| main.rs:354:5:356:5 | { ... } | main.rs:352:10:358:5 | if ... {...} else {...} | | -| main.rs:355:9:355:17 | print_i64 | main.rs:355:19:355:19 | x | | -| main.rs:355:9:355:20 | print_i64(...) | main.rs:354:5:356:5 | { ... } | | -| main.rs:355:9:355:21 | ExprStmt | main.rs:355:9:355:17 | print_i64 | | -| main.rs:355:19:355:19 | x | main.rs:355:9:355:20 | print_i64(...) | | -| main.rs:356:12:358:5 | { ... } | main.rs:352:10:358:5 | if ... {...} else {...} | | +| main.rs:150:23:150:27 | first | main.rs:150:13:150:28 | print_i64(...) | | +| main.rs:151:13:151:21 | print_i64 | main.rs:151:23:151:27 | third | | +| main.rs:151:13:151:28 | print_i64(...) | main.rs:152:13:152:29 | ExprStmt | | +| main.rs:151:13:151:29 | ExprStmt | main.rs:151:13:151:21 | print_i64 | | +| main.rs:151:23:151:27 | third | main.rs:151:13:151:28 | print_i64(...) | | +| main.rs:152:13:152:21 | print_i64 | main.rs:152:23:152:27 | fifth | | +| main.rs:152:13:152:28 | print_i64(...) | main.rs:149:14:153:9 | { ... } | | +| main.rs:152:13:152:29 | ExprStmt | main.rs:152:13:152:21 | print_i64 | | +| main.rs:152:23:152:27 | fifth | main.rs:152:13:152:28 | print_i64(...) | | +| main.rs:156:5:166:5 | match numbers { ... } | main.rs:138:21:167:1 | { ... } | | +| main.rs:156:11:156:17 | numbers | main.rs:158:9:162:9 | TuplePat | | +| main.rs:158:9:162:9 | TuplePat | main.rs:159:13:159:17 | first | match | +| main.rs:159:13:159:17 | first | main.rs:159:13:159:17 | first | | +| main.rs:159:13:159:17 | first | main.rs:160:13:160:14 | .. | match | +| main.rs:160:13:160:14 | .. | main.rs:161:13:161:16 | last | match | +| main.rs:161:13:161:16 | last | main.rs:161:13:161:16 | last | | +| main.rs:161:13:161:16 | last | main.rs:163:13:163:29 | ExprStmt | match | +| main.rs:162:14:165:9 | { ... } | main.rs:156:5:166:5 | match numbers { ... } | | +| main.rs:163:13:163:21 | print_i64 | main.rs:163:23:163:27 | first | | +| main.rs:163:13:163:28 | print_i64(...) | main.rs:164:13:164:28 | ExprStmt | | +| main.rs:163:13:163:29 | ExprStmt | main.rs:163:13:163:21 | print_i64 | | +| main.rs:163:23:163:27 | first | main.rs:163:13:163:28 | print_i64(...) | | +| main.rs:164:13:164:21 | print_i64 | main.rs:164:23:164:26 | last | | +| main.rs:164:13:164:27 | print_i64(...) | main.rs:162:14:165:9 | { ... } | | +| main.rs:164:13:164:28 | ExprStmt | main.rs:164:13:164:21 | print_i64 | | +| main.rs:164:23:164:26 | last | main.rs:164:13:164:27 | print_i64(...) | | +| main.rs:169:1:177:1 | enter fn match_pattern3 | main.rs:170:5:170:38 | let ... = ... | | +| main.rs:169:1:177:1 | exit fn match_pattern3 (normal) | main.rs:169:1:177:1 | exit fn match_pattern3 | | +| main.rs:169:21:177:1 | { ... } | main.rs:169:1:177:1 | exit fn match_pattern3 (normal) | | +| main.rs:170:5:170:38 | let ... = ... | main.rs:170:25:170:27 | "x" | | +| main.rs:170:9:170:10 | p2 | main.rs:170:9:170:10 | p2 | | +| main.rs:170:9:170:10 | p2 | main.rs:172:11:172:12 | p2 | match | +| main.rs:170:14:170:37 | Point {...} | main.rs:170:9:170:10 | p2 | | +| main.rs:170:25:170:27 | "x" | main.rs:170:33:170:35 | "y" | | +| main.rs:170:33:170:35 | "y" | main.rs:170:14:170:37 | Point {...} | | +| main.rs:172:5:176:5 | match p2 { ... } | main.rs:169:21:177:1 | { ... } | | +| main.rs:172:11:172:12 | p2 | main.rs:173:9:175:9 | Point {...} | | +| main.rs:173:9:175:9 | Point {...} | main.rs:174:16:174:17 | x7 | match | +| main.rs:174:16:174:17 | x7 | main.rs:174:16:174:17 | x7 | | +| main.rs:174:16:174:17 | x7 | main.rs:174:20:174:21 | .. | match | +| main.rs:174:20:174:21 | .. | main.rs:175:14:175:22 | print_str | match | +| main.rs:175:14:175:22 | print_str | main.rs:175:24:175:25 | x7 | | +| main.rs:175:14:175:26 | print_str(...) | main.rs:172:5:176:5 | match p2 { ... } | | +| main.rs:175:24:175:25 | x7 | main.rs:175:14:175:26 | print_str(...) | | +| main.rs:183:1:200:1 | enter fn match_pattern4 | main.rs:184:5:184:39 | let ... = ... | | +| main.rs:183:1:200:1 | exit fn match_pattern4 (normal) | main.rs:183:1:200:1 | exit fn match_pattern4 | | +| main.rs:183:21:200:1 | { ... } | main.rs:183:1:200:1 | exit fn match_pattern4 (normal) | | +| main.rs:184:5:184:39 | let ... = ... | main.rs:184:36:184:36 | 0 | | +| main.rs:184:9:184:11 | msg | main.rs:184:9:184:11 | msg | | +| main.rs:184:9:184:11 | msg | main.rs:186:11:186:13 | msg | match | +| main.rs:184:15:184:38 | ...::Hello {...} | main.rs:184:9:184:11 | msg | | +| main.rs:184:36:184:36 | 0 | main.rs:184:15:184:38 | ...::Hello {...} | | +| main.rs:186:5:199:5 | match msg { ... } | main.rs:183:21:200:1 | { ... } | | +| main.rs:186:11:186:13 | msg | main.rs:188:9:190:9 | ...::Hello {...} | | +| main.rs:188:9:190:9 | ...::Hello {...} | main.rs:189:31:189:35 | RangePat | match | +| main.rs:188:9:190:9 | ...::Hello {...} | main.rs:191:9:191:38 | ...::Hello {...} | no-match | +| main.rs:189:17:189:27 | id_variable | main.rs:189:17:189:35 | id_variable @ ... | | +| main.rs:189:17:189:35 | id_variable @ ... | main.rs:190:14:190:22 | print_i64 | match | +| main.rs:189:31:189:31 | 3 | main.rs:189:31:189:31 | 3 | | +| main.rs:189:31:189:31 | 3 | main.rs:189:35:189:35 | 7 | match | +| main.rs:189:31:189:31 | 3 | main.rs:191:9:191:38 | ...::Hello {...} | no-match | +| main.rs:189:31:189:35 | RangePat | main.rs:189:31:189:31 | 3 | match | +| main.rs:189:35:189:35 | 7 | main.rs:189:17:189:27 | id_variable | match | +| main.rs:189:35:189:35 | 7 | main.rs:189:35:189:35 | 7 | | +| main.rs:189:35:189:35 | 7 | main.rs:191:9:191:38 | ...::Hello {...} | no-match | +| main.rs:190:14:190:22 | print_i64 | main.rs:190:24:190:34 | id_variable | | +| main.rs:190:14:190:35 | print_i64(...) | main.rs:186:5:199:5 | match msg { ... } | | +| main.rs:190:24:190:34 | id_variable | main.rs:190:14:190:35 | print_i64(...) | | +| main.rs:191:9:191:38 | ...::Hello {...} | main.rs:191:30:191:36 | RangePat | match | +| main.rs:191:9:191:38 | ...::Hello {...} | main.rs:194:9:194:29 | ...::Hello {...} | no-match | +| main.rs:191:30:191:31 | 10 | main.rs:191:30:191:31 | 10 | | +| main.rs:191:30:191:31 | 10 | main.rs:191:35:191:36 | 12 | match | +| main.rs:191:30:191:31 | 10 | main.rs:194:9:194:29 | ...::Hello {...} | no-match | +| main.rs:191:30:191:36 | RangePat | main.rs:191:30:191:31 | 10 | match | +| main.rs:191:35:191:36 | 12 | main.rs:191:35:191:36 | 12 | | +| main.rs:191:35:191:36 | 12 | main.rs:192:22:192:51 | ExprStmt | match | +| main.rs:191:35:191:36 | 12 | main.rs:194:9:194:29 | ...::Hello {...} | no-match | +| main.rs:191:43:193:9 | { ... } | main.rs:186:5:199:5 | match msg { ... } | | +| main.rs:192:13:192:20 | ...::_print | main.rs:192:22:192:51 | "Found an id in another range\\... | | +| main.rs:192:13:192:52 | MacroExpr | main.rs:191:43:193:9 | { ... } | | +| main.rs:192:13:192:52 | println!... | main.rs:192:13:192:52 | MacroExpr | | +| main.rs:192:22:192:51 | "Found an id in another range\\... | main.rs:192:22:192:51 | FormatArgsExpr | | +| main.rs:192:22:192:51 | ...::_print(...) | main.rs:192:22:192:51 | { ... } | | +| main.rs:192:22:192:51 | ...::format_args_nl!... | main.rs:192:22:192:51 | MacroExpr | | +| main.rs:192:22:192:51 | ExprStmt | main.rs:192:13:192:20 | ...::_print | | +| main.rs:192:22:192:51 | FormatArgsExpr | main.rs:192:22:192:51 | ...::format_args_nl!... | | +| main.rs:192:22:192:51 | MacroBlockExpr | main.rs:192:13:192:52 | println!... | | +| main.rs:192:22:192:51 | MacroExpr | main.rs:192:22:192:51 | ...::_print(...) | | +| main.rs:192:22:192:51 | { ... } | main.rs:192:22:192:51 | MacroBlockExpr | | +| main.rs:194:9:194:29 | ...::Hello {...} | main.rs:194:26:194:27 | id | match | +| main.rs:194:26:194:27 | id | main.rs:194:26:194:27 | id | | +| main.rs:194:26:194:27 | id | main.rs:197:13:197:21 | print_i64 | match | +| main.rs:196:9:198:9 | { ... } | main.rs:186:5:199:5 | match msg { ... } | | +| main.rs:197:13:197:21 | print_i64 | main.rs:197:23:197:24 | id | | +| main.rs:197:13:197:25 | print_i64(...) | main.rs:196:9:198:9 | { ... } | | +| main.rs:197:23:197:24 | id | main.rs:197:13:197:25 | print_i64(...) | | +| main.rs:207:1:213:1 | enter fn match_pattern5 | main.rs:208:5:208:34 | let ... = ... | | +| main.rs:207:1:213:1 | exit fn match_pattern5 (normal) | main.rs:207:1:213:1 | exit fn match_pattern5 | | +| main.rs:207:21:213:1 | { ... } | main.rs:207:1:213:1 | exit fn match_pattern5 (normal) | | +| main.rs:208:5:208:34 | let ... = ... | main.rs:208:18:208:29 | ...::Left | | +| main.rs:208:9:208:14 | either | main.rs:208:9:208:14 | either | | +| main.rs:208:9:208:14 | either | main.rs:209:11:209:16 | either | match | +| main.rs:208:18:208:29 | ...::Left | main.rs:208:31:208:32 | 32 | | +| main.rs:208:18:208:33 | ...::Left(...) | main.rs:208:9:208:14 | either | | +| main.rs:208:31:208:32 | 32 | main.rs:208:18:208:33 | ...::Left(...) | | +| main.rs:209:5:212:5 | match either { ... } | main.rs:207:21:213:1 | { ... } | | +| main.rs:209:11:209:16 | either | main.rs:210:9:210:24 | ...::Left(...) | | +| main.rs:210:9:210:24 | ...::Left(...) | main.rs:210:22:210:23 | a3 | match | +| main.rs:210:9:210:24 | ...::Left(...) | main.rs:210:28:210:44 | ...::Right(...) | no-match | +| main.rs:210:9:210:44 | ... \| ... | main.rs:211:16:211:24 | print_i64 | match | +| main.rs:210:22:210:23 | a3 | main.rs:210:9:210:44 | ... \| ... | match | +| main.rs:210:22:210:23 | a3 | main.rs:210:22:210:23 | a3 | | +| main.rs:210:28:210:44 | ...::Right(...) | main.rs:210:42:210:43 | a3 | match | +| main.rs:210:42:210:43 | a3 | main.rs:210:9:210:44 | ... \| ... | match | +| main.rs:210:42:210:43 | a3 | main.rs:210:42:210:43 | a3 | | +| main.rs:211:16:211:24 | print_i64 | main.rs:211:26:211:27 | a3 | | +| main.rs:211:16:211:28 | print_i64(...) | main.rs:209:5:212:5 | match either { ... } | | +| main.rs:211:26:211:27 | a3 | main.rs:211:16:211:28 | print_i64(...) | | +| main.rs:221:1:235:1 | enter fn match_pattern6 | main.rs:222:5:222:37 | let ... = ... | | +| main.rs:221:1:235:1 | exit fn match_pattern6 (normal) | main.rs:221:1:235:1 | exit fn match_pattern6 | | +| main.rs:221:21:235:1 | { ... } | main.rs:221:1:235:1 | exit fn match_pattern6 (normal) | | +| main.rs:222:5:222:37 | let ... = ... | main.rs:222:14:222:32 | ...::Second | | +| main.rs:222:9:222:10 | tv | main.rs:222:9:222:10 | tv | | +| main.rs:222:9:222:10 | tv | main.rs:223:5:226:5 | ExprStmt | match | +| main.rs:222:14:222:32 | ...::Second | main.rs:222:34:222:35 | 62 | | +| main.rs:222:14:222:36 | ...::Second(...) | main.rs:222:9:222:10 | tv | | +| main.rs:222:34:222:35 | 62 | main.rs:222:14:222:36 | ...::Second(...) | | +| main.rs:223:5:226:5 | ExprStmt | main.rs:223:11:223:12 | tv | | +| main.rs:223:5:226:5 | match tv { ... } | main.rs:227:5:230:5 | ExprStmt | | +| main.rs:223:11:223:12 | tv | main.rs:224:9:224:30 | ...::First(...) | | +| main.rs:224:9:224:30 | ...::First(...) | main.rs:224:28:224:29 | a4 | match | +| main.rs:224:9:224:30 | ...::First(...) | main.rs:224:34:224:56 | ...::Second(...) | no-match | +| main.rs:224:9:224:81 | ... \| ... \| ... | main.rs:225:16:225:24 | print_i64 | match | +| main.rs:224:28:224:29 | a4 | main.rs:224:9:224:81 | ... \| ... \| ... | match | +| main.rs:224:28:224:29 | a4 | main.rs:224:28:224:29 | a4 | | +| main.rs:224:34:224:56 | ...::Second(...) | main.rs:224:54:224:55 | a4 | match | +| main.rs:224:34:224:56 | ...::Second(...) | main.rs:224:60:224:81 | ...::Third(...) | no-match | +| main.rs:224:54:224:55 | a4 | main.rs:224:9:224:81 | ... \| ... \| ... | match | +| main.rs:224:54:224:55 | a4 | main.rs:224:54:224:55 | a4 | | +| main.rs:224:60:224:81 | ...::Third(...) | main.rs:224:79:224:80 | a4 | match | +| main.rs:224:79:224:80 | a4 | main.rs:224:9:224:81 | ... \| ... \| ... | match | +| main.rs:224:79:224:80 | a4 | main.rs:224:79:224:80 | a4 | | +| main.rs:225:16:225:24 | print_i64 | main.rs:225:26:225:27 | a4 | | +| main.rs:225:16:225:28 | print_i64(...) | main.rs:223:5:226:5 | match tv { ... } | | +| main.rs:225:26:225:27 | a4 | main.rs:225:16:225:28 | print_i64(...) | | +| main.rs:227:5:230:5 | ExprStmt | main.rs:227:11:227:12 | tv | | +| main.rs:227:5:230:5 | match tv { ... } | main.rs:231:11:231:12 | tv | | +| main.rs:227:11:227:12 | tv | main.rs:228:10:228:31 | ...::First(...) | | +| main.rs:228:9:228:83 | ... \| ... | main.rs:229:16:229:24 | print_i64 | match | +| main.rs:228:10:228:31 | ...::First(...) | main.rs:228:29:228:30 | a5 | match | +| main.rs:228:10:228:31 | ...::First(...) | main.rs:228:35:228:57 | ...::Second(...) | no-match | +| main.rs:228:10:228:57 | [match(false)] ... \| ... | main.rs:228:62:228:83 | ...::Third(...) | no-match | +| main.rs:228:10:228:57 | [match(true)] ... \| ... | main.rs:228:9:228:83 | ... \| ... | match | +| main.rs:228:29:228:30 | a5 | main.rs:228:10:228:57 | [match(true)] ... \| ... | match | +| main.rs:228:29:228:30 | a5 | main.rs:228:29:228:30 | a5 | | +| main.rs:228:35:228:57 | ...::Second(...) | main.rs:228:10:228:57 | [match(false)] ... \| ... | no-match | +| main.rs:228:35:228:57 | ...::Second(...) | main.rs:228:55:228:56 | a5 | match | +| main.rs:228:55:228:56 | a5 | main.rs:228:10:228:57 | [match(true)] ... \| ... | match | +| main.rs:228:55:228:56 | a5 | main.rs:228:55:228:56 | a5 | | +| main.rs:228:62:228:83 | ...::Third(...) | main.rs:228:81:228:82 | a5 | match | +| main.rs:228:81:228:82 | a5 | main.rs:228:9:228:83 | ... \| ... | match | +| main.rs:228:81:228:82 | a5 | main.rs:228:81:228:82 | a5 | | +| main.rs:229:16:229:24 | print_i64 | main.rs:229:26:229:27 | a5 | | +| main.rs:229:16:229:28 | print_i64(...) | main.rs:227:5:230:5 | match tv { ... } | | +| main.rs:229:26:229:27 | a5 | main.rs:229:16:229:28 | print_i64(...) | | +| main.rs:231:5:234:5 | match tv { ... } | main.rs:221:21:235:1 | { ... } | | +| main.rs:231:11:231:12 | tv | main.rs:232:9:232:30 | ...::First(...) | | +| main.rs:232:9:232:30 | ...::First(...) | main.rs:232:28:232:29 | a6 | match | +| main.rs:232:9:232:30 | ...::First(...) | main.rs:232:35:232:57 | ...::Second(...) | no-match | +| main.rs:232:9:232:83 | ... \| ... | main.rs:233:16:233:24 | print_i64 | match | +| main.rs:232:28:232:29 | a6 | main.rs:232:9:232:83 | ... \| ... | match | +| main.rs:232:28:232:29 | a6 | main.rs:232:28:232:29 | a6 | | +| main.rs:232:35:232:57 | ...::Second(...) | main.rs:232:55:232:56 | a6 | match | +| main.rs:232:35:232:57 | ...::Second(...) | main.rs:232:61:232:82 | ...::Third(...) | no-match | +| main.rs:232:35:232:82 | ... \| ... | main.rs:232:9:232:83 | ... \| ... | match | +| main.rs:232:55:232:56 | a6 | main.rs:232:35:232:82 | ... \| ... | match | +| main.rs:232:55:232:56 | a6 | main.rs:232:55:232:56 | a6 | | +| main.rs:232:61:232:82 | ...::Third(...) | main.rs:232:80:232:81 | a6 | match | +| main.rs:232:80:232:81 | a6 | main.rs:232:35:232:82 | ... \| ... | match | +| main.rs:232:80:232:81 | a6 | main.rs:232:80:232:81 | a6 | | +| main.rs:233:16:233:24 | print_i64 | main.rs:233:26:233:27 | a6 | | +| main.rs:233:16:233:28 | print_i64(...) | main.rs:231:5:234:5 | match tv { ... } | | +| main.rs:233:26:233:27 | a6 | main.rs:233:16:233:28 | print_i64(...) | | +| main.rs:237:1:245:1 | enter fn match_pattern7 | main.rs:238:5:238:34 | let ... = ... | | +| main.rs:237:1:245:1 | exit fn match_pattern7 (normal) | main.rs:237:1:245:1 | exit fn match_pattern7 | | +| main.rs:237:21:245:1 | { ... } | main.rs:237:1:245:1 | exit fn match_pattern7 (normal) | | +| main.rs:238:5:238:34 | let ... = ... | main.rs:238:18:238:29 | ...::Left | | +| main.rs:238:9:238:14 | either | main.rs:238:9:238:14 | either | | +| main.rs:238:9:238:14 | either | main.rs:239:11:239:16 | either | match | +| main.rs:238:18:238:29 | ...::Left | main.rs:238:31:238:32 | 32 | | +| main.rs:238:18:238:33 | ...::Left(...) | main.rs:238:9:238:14 | either | | +| main.rs:238:31:238:32 | 32 | main.rs:238:18:238:33 | ...::Left(...) | | +| main.rs:239:5:244:5 | match either { ... } | main.rs:237:21:245:1 | { ... } | | +| main.rs:239:11:239:16 | either | main.rs:240:9:240:24 | ...::Left(...) | | +| main.rs:240:9:240:24 | ...::Left(...) | main.rs:240:22:240:23 | a7 | match | +| main.rs:240:9:240:24 | ...::Left(...) | main.rs:240:28:240:44 | ...::Right(...) | no-match | +| main.rs:240:9:240:44 | [match(false)] ... \| ... | main.rs:243:9:243:9 | _ | no-match | +| main.rs:240:9:240:44 | [match(true)] ... \| ... | main.rs:241:16:241:17 | a7 | match | +| main.rs:240:22:240:23 | a7 | main.rs:240:9:240:44 | [match(true)] ... \| ... | match | +| main.rs:240:22:240:23 | a7 | main.rs:240:22:240:23 | a7 | | +| main.rs:240:28:240:44 | ...::Right(...) | main.rs:240:9:240:44 | [match(false)] ... \| ... | no-match | +| main.rs:240:28:240:44 | ...::Right(...) | main.rs:240:42:240:43 | a7 | match | +| main.rs:240:42:240:43 | a7 | main.rs:240:9:240:44 | [match(true)] ... \| ... | match | +| main.rs:240:42:240:43 | a7 | main.rs:240:42:240:43 | a7 | | +| main.rs:241:16:241:17 | a7 | main.rs:241:21:241:21 | 0 | | +| main.rs:241:16:241:21 | ... > ... | main.rs:242:16:242:24 | print_i64 | true | +| main.rs:241:16:241:21 | ... > ... | main.rs:243:9:243:9 | _ | false | +| main.rs:241:21:241:21 | 0 | main.rs:241:16:241:21 | ... > ... | | +| main.rs:242:16:242:24 | print_i64 | main.rs:242:26:242:27 | a7 | | +| main.rs:242:16:242:28 | print_i64(...) | main.rs:239:5:244:5 | match either { ... } | | +| main.rs:242:26:242:27 | a7 | main.rs:242:16:242:28 | print_i64(...) | | +| main.rs:243:9:243:9 | _ | main.rs:243:14:243:15 | TupleExpr | match | +| main.rs:243:14:243:15 | TupleExpr | main.rs:239:5:244:5 | match either { ... } | | +| main.rs:247:1:262:1 | enter fn match_pattern8 | main.rs:248:5:248:34 | let ... = ... | | +| main.rs:247:1:262:1 | exit fn match_pattern8 (normal) | main.rs:247:1:262:1 | exit fn match_pattern8 | | +| main.rs:247:21:262:1 | { ... } | main.rs:247:1:262:1 | exit fn match_pattern8 (normal) | | +| main.rs:248:5:248:34 | let ... = ... | main.rs:248:18:248:29 | ...::Left | | +| main.rs:248:9:248:14 | either | main.rs:248:9:248:14 | either | | +| main.rs:248:9:248:14 | either | main.rs:250:11:250:16 | either | match | +| main.rs:248:18:248:29 | ...::Left | main.rs:248:31:248:32 | 32 | | +| main.rs:248:18:248:33 | ...::Left(...) | main.rs:248:9:248:14 | either | | +| main.rs:248:31:248:32 | 32 | main.rs:248:18:248:33 | ...::Left(...) | | +| main.rs:250:5:261:5 | match either { ... } | main.rs:247:21:262:1 | { ... } | | +| main.rs:250:11:250:16 | either | main.rs:252:14:252:30 | ...::Left(...) | | +| main.rs:251:9:252:52 | ref e @ ... | main.rs:254:13:254:27 | ExprStmt | match | +| main.rs:251:13:251:13 | e | main.rs:251:9:252:52 | ref e @ ... | | +| main.rs:252:14:252:30 | ...::Left(...) | main.rs:252:27:252:29 | a11 | match | +| main.rs:252:14:252:30 | ...::Left(...) | main.rs:252:34:252:51 | ...::Right(...) | no-match | +| main.rs:252:14:252:51 | [match(false)] ... \| ... | main.rs:260:9:260:9 | _ | no-match | +| main.rs:252:14:252:51 | [match(true)] ... \| ... | main.rs:251:13:251:13 | e | match | +| main.rs:252:27:252:29 | a11 | main.rs:252:14:252:51 | [match(true)] ... \| ... | match | +| main.rs:252:27:252:29 | a11 | main.rs:252:27:252:29 | a11 | | +| main.rs:252:34:252:51 | ...::Right(...) | main.rs:252:14:252:51 | [match(false)] ... \| ... | no-match | +| main.rs:252:34:252:51 | ...::Right(...) | main.rs:252:48:252:50 | a11 | match | +| main.rs:252:48:252:50 | a11 | main.rs:252:14:252:51 | [match(true)] ... \| ... | match | +| main.rs:252:48:252:50 | a11 | main.rs:252:48:252:50 | a11 | | +| main.rs:253:12:259:9 | { ... } | main.rs:250:5:261:5 | match either { ... } | | +| main.rs:254:13:254:21 | print_i64 | main.rs:254:23:254:25 | a11 | | +| main.rs:254:13:254:26 | print_i64(...) | main.rs:256:15:256:15 | e | | +| main.rs:254:13:254:27 | ExprStmt | main.rs:254:13:254:21 | print_i64 | | +| main.rs:254:23:254:25 | a11 | main.rs:254:13:254:26 | print_i64(...) | | +| main.rs:255:13:258:13 | if ... {...} | main.rs:253:12:259:9 | { ... } | | +| main.rs:255:16:256:15 | [boolean(false)] let ... = e | main.rs:255:13:258:13 | if ... {...} | false | +| main.rs:255:16:256:15 | [boolean(true)] let ... = e | main.rs:257:17:257:32 | ExprStmt | true | +| main.rs:255:20:255:36 | ...::Left(...) | main.rs:255:16:256:15 | [boolean(false)] let ... = e | no-match | +| main.rs:255:20:255:36 | ...::Left(...) | main.rs:255:33:255:35 | a12 | match | +| main.rs:255:33:255:35 | a12 | main.rs:255:16:256:15 | [boolean(true)] let ... = e | match | +| main.rs:255:33:255:35 | a12 | main.rs:255:33:255:35 | a12 | | +| main.rs:256:15:256:15 | e | main.rs:255:20:255:36 | ...::Left(...) | | +| main.rs:256:17:258:13 | { ... } | main.rs:255:13:258:13 | if ... {...} | | +| main.rs:257:17:257:25 | print_i64 | main.rs:257:28:257:30 | a12 | | +| main.rs:257:17:257:31 | print_i64(...) | main.rs:256:17:258:13 | { ... } | | +| main.rs:257:17:257:32 | ExprStmt | main.rs:257:17:257:25 | print_i64 | | +| main.rs:257:27:257:30 | * ... | main.rs:257:17:257:31 | print_i64(...) | | +| main.rs:257:28:257:30 | a12 | main.rs:257:27:257:30 | * ... | | +| main.rs:260:9:260:9 | _ | main.rs:260:14:260:15 | TupleExpr | match | +| main.rs:260:14:260:15 | TupleExpr | main.rs:250:5:261:5 | match either { ... } | | +| main.rs:271:1:277:1 | enter fn match_pattern9 | main.rs:272:5:272:36 | let ... = ... | | +| main.rs:271:1:277:1 | exit fn match_pattern9 (normal) | main.rs:271:1:277:1 | exit fn match_pattern9 | | +| main.rs:271:21:277:1 | { ... } | main.rs:271:1:277:1 | exit fn match_pattern9 (normal) | | +| main.rs:272:5:272:36 | let ... = ... | main.rs:272:14:272:31 | ...::Second | | +| main.rs:272:9:272:10 | fv | main.rs:272:9:272:10 | fv | | +| main.rs:272:9:272:10 | fv | main.rs:273:11:273:12 | fv | match | +| main.rs:272:14:272:31 | ...::Second | main.rs:272:33:272:34 | 62 | | +| main.rs:272:14:272:35 | ...::Second(...) | main.rs:272:9:272:10 | fv | | +| main.rs:272:33:272:34 | 62 | main.rs:272:14:272:35 | ...::Second(...) | | +| main.rs:273:5:276:5 | match fv { ... } | main.rs:271:21:277:1 | { ... } | | +| main.rs:273:11:273:12 | fv | main.rs:274:9:274:30 | ...::First(...) | | +| main.rs:274:9:274:30 | ...::First(...) | main.rs:274:27:274:29 | a13 | match | +| main.rs:274:9:274:30 | ...::First(...) | main.rs:274:35:274:57 | ...::Second(...) | no-match | +| main.rs:274:9:274:109 | ... \| ... \| ... | main.rs:275:16:275:24 | print_i64 | match | +| main.rs:274:27:274:29 | a13 | main.rs:274:9:274:109 | ... \| ... \| ... | match | +| main.rs:274:27:274:29 | a13 | main.rs:274:27:274:29 | a13 | | +| main.rs:274:35:274:57 | ...::Second(...) | main.rs:274:54:274:56 | a13 | match | +| main.rs:274:35:274:57 | ...::Second(...) | main.rs:274:61:274:82 | ...::Third(...) | no-match | +| main.rs:274:35:274:82 | [match(false)] ... \| ... | main.rs:274:87:274:109 | ...::Fourth(...) | no-match | +| main.rs:274:35:274:82 | [match(true)] ... \| ... | main.rs:274:9:274:109 | ... \| ... \| ... | match | +| main.rs:274:54:274:56 | a13 | main.rs:274:35:274:82 | [match(true)] ... \| ... | match | +| main.rs:274:54:274:56 | a13 | main.rs:274:54:274:56 | a13 | | +| main.rs:274:61:274:82 | ...::Third(...) | main.rs:274:35:274:82 | [match(false)] ... \| ... | no-match | +| main.rs:274:61:274:82 | ...::Third(...) | main.rs:274:79:274:81 | a13 | match | +| main.rs:274:79:274:81 | a13 | main.rs:274:35:274:82 | [match(true)] ... \| ... | match | +| main.rs:274:79:274:81 | a13 | main.rs:274:79:274:81 | a13 | | +| main.rs:274:87:274:109 | ...::Fourth(...) | main.rs:274:106:274:108 | a13 | match | +| main.rs:274:106:274:108 | a13 | main.rs:274:9:274:109 | ... \| ... \| ... | match | +| main.rs:274:106:274:108 | a13 | main.rs:274:106:274:108 | a13 | | +| main.rs:275:16:275:24 | print_i64 | main.rs:275:26:275:28 | a13 | | +| main.rs:275:16:275:29 | print_i64(...) | main.rs:273:5:276:5 | match fv { ... } | | +| main.rs:275:26:275:28 | a13 | main.rs:275:16:275:29 | print_i64(...) | | +| main.rs:279:1:293:1 | enter fn match_pattern10 | main.rs:281:5:281:20 | let ... = ... | | +| main.rs:279:1:293:1 | exit fn match_pattern10 (normal) | main.rs:279:1:293:1 | exit fn match_pattern10 | | +| main.rs:280:22:293:1 | { ... } | main.rs:279:1:293:1 | exit fn match_pattern10 (normal) | | +| main.rs:281:5:281:20 | let ... = ... | main.rs:281:12:281:15 | Some | | +| main.rs:281:9:281:9 | x | main.rs:281:9:281:9 | x | | +| main.rs:281:9:281:9 | x | main.rs:283:7:283:7 | x | match | +| main.rs:281:12:281:15 | Some | main.rs:281:17:281:18 | 42 | | +| main.rs:281:12:281:19 | Some(...) | main.rs:281:9:281:9 | x | | +| main.rs:281:17:281:18 | 42 | main.rs:281:12:281:19 | Some(...) | | +| main.rs:282:5:292:5 | if ... {...} else {...} | main.rs:280:22:293:1 | { ... } | | +| main.rs:282:8:283:7 | [boolean(false)] let ... = x | main.rs:282:8:285:9 | [boolean(false)] ... && ... | false | +| main.rs:282:8:283:7 | [boolean(true)] let ... = x | main.rs:285:5:285:5 | x | true | +| main.rs:282:8:285:9 | [boolean(false)] ... && ... | main.rs:289:9:290:14 | let ... = x | false | +| main.rs:282:8:285:9 | [boolean(true)] ... && ... | main.rs:287:9:287:21 | ExprStmt | true | +| main.rs:282:12:282:18 | Some(...) | main.rs:282:8:283:7 | [boolean(false)] let ... = x | no-match | +| main.rs:282:12:282:18 | Some(...) | main.rs:282:17:282:17 | x | match | +| main.rs:282:17:282:17 | x | main.rs:282:8:283:7 | [boolean(true)] let ... = x | match | +| main.rs:282:17:282:17 | x | main.rs:282:17:282:17 | x | | +| main.rs:283:7:283:7 | x | main.rs:282:12:282:18 | Some(...) | | +| main.rs:285:5:285:5 | x | main.rs:285:9:285:9 | 0 | | +| main.rs:285:5:285:9 | ... > ... | main.rs:282:8:285:9 | [boolean(false)] ... && ... | false | +| main.rs:285:5:285:9 | ... > ... | main.rs:282:8:285:9 | [boolean(true)] ... && ... | true | +| main.rs:285:9:285:9 | 0 | main.rs:285:5:285:9 | ... > ... | | +| main.rs:286:5:288:5 | { ... } | main.rs:282:5:292:5 | if ... {...} else {...} | | +| main.rs:287:9:287:17 | print_i64 | main.rs:287:19:287:19 | x | | +| main.rs:287:9:287:20 | print_i64(...) | main.rs:286:5:288:5 | { ... } | | +| main.rs:287:9:287:21 | ExprStmt | main.rs:287:9:287:17 | print_i64 | | +| main.rs:287:19:287:19 | x | main.rs:287:9:287:20 | print_i64(...) | | +| main.rs:288:12:292:5 | { ... } | main.rs:282:5:292:5 | if ... {...} else {...} | | +| main.rs:289:9:290:14 | let ... = x | main.rs:290:13:290:13 | x | | +| main.rs:289:13:289:13 | x | main.rs:289:13:289:13 | x | | +| main.rs:289:13:289:13 | x | main.rs:291:9:291:30 | ExprStmt | match | +| main.rs:290:13:290:13 | x | main.rs:289:13:289:13 | x | | +| main.rs:291:9:291:17 | print_i64 | main.rs:291:19:291:19 | x | | +| main.rs:291:9:291:29 | print_i64(...) | main.rs:288:12:292:5 | { ... } | | +| main.rs:291:9:291:30 | ExprStmt | main.rs:291:9:291:17 | print_i64 | | +| main.rs:291:19:291:19 | x | main.rs:291:19:291:28 | x.unwrap() | | +| main.rs:291:19:291:28 | x.unwrap() | main.rs:291:9:291:29 | print_i64(...) | | +| main.rs:295:1:312:1 | enter fn match_pattern11 | main.rs:297:5:297:21 | let ... = ... | | +| main.rs:295:1:312:1 | exit fn match_pattern11 (normal) | main.rs:295:1:312:1 | exit fn match_pattern11 | | +| main.rs:296:22:312:1 | { ... } | main.rs:295:1:312:1 | exit fn match_pattern11 (normal) | | +| main.rs:297:5:297:21 | let ... = ... | main.rs:297:13:297:16 | Some | | +| main.rs:297:9:297:9 | x | main.rs:297:9:297:9 | x | | +| main.rs:297:9:297:9 | x | main.rs:299:7:299:7 | x | match | +| main.rs:297:13:297:16 | Some | main.rs:297:18:297:19 | 42 | | +| main.rs:297:13:297:20 | Some(...) | main.rs:297:9:297:9 | x | | +| main.rs:297:18:297:19 | 42 | main.rs:297:13:297:20 | Some(...) | | +| main.rs:298:5:311:5 | if ... {...} else {...} | main.rs:296:22:312:1 | { ... } | | +| main.rs:298:8:299:7 | [boolean(false)] let ... = x | main.rs:298:8:302:13 | [boolean(false)] ... && ... | false | +| main.rs:298:8:299:7 | [boolean(true)] let ... = x | main.rs:302:7:302:10 | Some | true | +| main.rs:298:8:302:13 | [boolean(false)] ... && ... | main.rs:298:8:304:9 | [boolean(false)] ... && ... | false | +| main.rs:298:8:302:13 | [boolean(true)] ... && ... | main.rs:304:5:304:5 | x | true | +| main.rs:298:8:304:9 | [boolean(false)] ... && ... | main.rs:308:9:309:14 | let ... = x | false | +| main.rs:298:8:304:9 | [boolean(true)] ... && ... | main.rs:306:9:306:21 | ExprStmt | true | +| main.rs:298:12:298:18 | Some(...) | main.rs:298:8:299:7 | [boolean(false)] let ... = x | no-match | +| main.rs:298:12:298:18 | Some(...) | main.rs:298:17:298:17 | x | match | +| main.rs:298:17:298:17 | x | main.rs:298:8:299:7 | [boolean(true)] let ... = x | match | +| main.rs:298:17:298:17 | x | main.rs:298:17:298:17 | x | | +| main.rs:299:7:299:7 | x | main.rs:298:12:298:18 | Some(...) | | +| main.rs:301:5:302:13 | [boolean(false)] let ... = ... | main.rs:298:8:302:13 | [boolean(false)] ... && ... | false | +| main.rs:301:5:302:13 | [boolean(true)] let ... = ... | main.rs:298:8:302:13 | [boolean(true)] ... && ... | true | +| main.rs:301:9:301:15 | Some(...) | main.rs:301:5:302:13 | [boolean(false)] let ... = ... | no-match | +| main.rs:301:9:301:15 | Some(...) | main.rs:301:14:301:14 | x | match | +| main.rs:301:14:301:14 | x | main.rs:301:5:302:13 | [boolean(true)] let ... = ... | match | +| main.rs:301:14:301:14 | x | main.rs:301:14:301:14 | x | | +| main.rs:302:7:302:10 | Some | main.rs:302:12:302:12 | x | | +| main.rs:302:7:302:13 | Some(...) | main.rs:301:9:301:15 | Some(...) | | +| main.rs:302:12:302:12 | x | main.rs:302:7:302:13 | Some(...) | | +| main.rs:304:5:304:5 | x | main.rs:304:9:304:9 | 0 | | +| main.rs:304:5:304:9 | ... > ... | main.rs:298:8:304:9 | [boolean(false)] ... && ... | false | +| main.rs:304:5:304:9 | ... > ... | main.rs:298:8:304:9 | [boolean(true)] ... && ... | true | +| main.rs:304:9:304:9 | 0 | main.rs:304:5:304:9 | ... > ... | | +| main.rs:305:5:307:5 | { ... } | main.rs:298:5:311:5 | if ... {...} else {...} | | +| main.rs:306:9:306:17 | print_i64 | main.rs:306:19:306:19 | x | | +| main.rs:306:9:306:20 | print_i64(...) | main.rs:305:5:307:5 | { ... } | | +| main.rs:306:9:306:21 | ExprStmt | main.rs:306:9:306:17 | print_i64 | | +| main.rs:306:19:306:19 | x | main.rs:306:9:306:20 | print_i64(...) | | +| main.rs:307:12:311:5 | { ... } | main.rs:298:5:311:5 | if ... {...} else {...} | | +| main.rs:308:9:309:14 | let ... = x | main.rs:309:13:309:13 | x | | +| main.rs:308:13:308:13 | x | main.rs:308:13:308:13 | x | | +| main.rs:308:13:308:13 | x | main.rs:310:9:310:30 | ExprStmt | match | +| main.rs:309:13:309:13 | x | main.rs:308:13:308:13 | x | | +| main.rs:310:9:310:17 | print_i64 | main.rs:310:19:310:19 | x | | +| main.rs:310:9:310:29 | print_i64(...) | main.rs:307:12:311:5 | { ... } | | +| main.rs:310:9:310:30 | ExprStmt | main.rs:310:9:310:17 | print_i64 | | +| main.rs:310:19:310:19 | x | main.rs:310:19:310:28 | x.unwrap() | | +| main.rs:310:19:310:28 | x.unwrap() | main.rs:310:9:310:29 | print_i64(...) | | +| main.rs:314:1:330:1 | enter fn match_pattern12 | main.rs:316:5:316:21 | let ... = ... | | +| main.rs:314:1:330:1 | exit fn match_pattern12 (normal) | main.rs:314:1:330:1 | exit fn match_pattern12 | | +| main.rs:315:22:330:1 | { ... } | main.rs:314:1:330:1 | exit fn match_pattern12 (normal) | | +| main.rs:316:5:316:21 | let ... = ... | main.rs:316:13:316:16 | Some | | +| main.rs:316:9:316:9 | x | main.rs:316:9:316:9 | x | | +| main.rs:316:9:316:9 | x | main.rs:317:5:327:5 | ExprStmt | match | +| main.rs:316:13:316:16 | Some | main.rs:316:18:316:19 | 42 | | +| main.rs:316:13:316:20 | Some(...) | main.rs:316:9:316:9 | x | | +| main.rs:316:18:316:19 | 42 | main.rs:316:13:316:20 | Some(...) | | +| main.rs:317:5:327:5 | ExprStmt | main.rs:318:7:318:7 | x | | +| main.rs:317:5:327:5 | while ... { ... } | main.rs:329:5:329:26 | ExprStmt | | +| main.rs:317:11:318:7 | [boolean(false)] let ... = x | main.rs:317:11:321:13 | [boolean(false)] ... && ... | false | +| main.rs:317:11:318:7 | [boolean(true)] let ... = x | main.rs:321:7:321:10 | Some | true | +| main.rs:317:11:321:13 | [boolean(false)] ... && ... | main.rs:317:11:323:9 | [boolean(false)] ... && ... | false | +| main.rs:317:11:321:13 | [boolean(true)] ... && ... | main.rs:323:5:323:5 | x | true | +| main.rs:317:11:323:9 | [boolean(false)] ... && ... | main.rs:317:5:327:5 | while ... { ... } | false | +| main.rs:317:11:323:9 | [boolean(true)] ... && ... | main.rs:325:9:325:21 | ExprStmt | true | +| main.rs:317:15:317:21 | Some(...) | main.rs:317:11:318:7 | [boolean(false)] let ... = x | no-match | +| main.rs:317:15:317:21 | Some(...) | main.rs:317:20:317:20 | x | match | +| main.rs:317:20:317:20 | x | main.rs:317:11:318:7 | [boolean(true)] let ... = x | match | +| main.rs:317:20:317:20 | x | main.rs:317:20:317:20 | x | | +| main.rs:318:7:318:7 | x | main.rs:317:15:317:21 | Some(...) | | +| main.rs:320:5:321:13 | [boolean(false)] let ... = ... | main.rs:317:11:321:13 | [boolean(false)] ... && ... | false | +| main.rs:320:5:321:13 | [boolean(true)] let ... = ... | main.rs:317:11:321:13 | [boolean(true)] ... && ... | true | +| main.rs:320:9:320:15 | Some(...) | main.rs:320:5:321:13 | [boolean(false)] let ... = ... | no-match | +| main.rs:320:9:320:15 | Some(...) | main.rs:320:14:320:14 | x | match | +| main.rs:320:14:320:14 | x | main.rs:320:5:321:13 | [boolean(true)] let ... = ... | match | +| main.rs:320:14:320:14 | x | main.rs:320:14:320:14 | x | | +| main.rs:321:7:321:10 | Some | main.rs:321:12:321:12 | x | | +| main.rs:321:7:321:13 | Some(...) | main.rs:320:9:320:15 | Some(...) | | +| main.rs:321:12:321:12 | x | main.rs:321:7:321:13 | Some(...) | | +| main.rs:323:5:323:5 | x | main.rs:323:9:323:9 | 0 | | +| main.rs:323:5:323:9 | ... > ... | main.rs:317:11:323:9 | [boolean(false)] ... && ... | false | +| main.rs:323:5:323:9 | ... > ... | main.rs:317:11:323:9 | [boolean(true)] ... && ... | true | +| main.rs:323:9:323:9 | 0 | main.rs:323:5:323:9 | ... > ... | | +| main.rs:325:9:325:17 | print_i64 | main.rs:325:19:325:19 | x | | +| main.rs:325:9:325:20 | print_i64(...) | main.rs:326:9:326:14 | ExprStmt | | +| main.rs:325:9:325:21 | ExprStmt | main.rs:325:9:325:17 | print_i64 | | +| main.rs:325:19:325:19 | x | main.rs:325:9:325:20 | print_i64(...) | | +| main.rs:326:9:326:13 | break | main.rs:317:5:327:5 | while ... { ... } | break | +| main.rs:326:9:326:14 | ExprStmt | main.rs:326:9:326:13 | break | | +| main.rs:329:5:329:13 | print_i64 | main.rs:329:15:329:15 | x | | +| main.rs:329:5:329:25 | print_i64(...) | main.rs:315:22:330:1 | { ... } | | +| main.rs:329:5:329:26 | ExprStmt | main.rs:329:5:329:13 | print_i64 | | +| main.rs:329:15:329:15 | x | main.rs:329:15:329:24 | x.unwrap() | | +| main.rs:329:15:329:24 | x.unwrap() | main.rs:329:5:329:25 | print_i64(...) | | +| main.rs:332:1:344:1 | enter fn match_pattern13 | main.rs:334:5:334:21 | let ... = ... | | +| main.rs:332:1:344:1 | exit fn match_pattern13 (normal) | main.rs:332:1:344:1 | exit fn match_pattern13 | | +| main.rs:333:22:344:1 | { ... } | main.rs:332:1:344:1 | exit fn match_pattern13 (normal) | | +| main.rs:334:5:334:21 | let ... = ... | main.rs:334:13:334:16 | Some | | +| main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | | +| main.rs:334:9:334:9 | x | main.rs:335:5:341:5 | ExprStmt | match | +| main.rs:334:13:334:16 | Some | main.rs:334:18:334:19 | 42 | | +| main.rs:334:13:334:20 | Some(...) | main.rs:334:9:334:9 | x | | +| main.rs:334:18:334:19 | 42 | main.rs:334:13:334:20 | Some(...) | | +| main.rs:335:5:341:5 | ExprStmt | main.rs:335:11:335:11 | x | | +| main.rs:335:5:341:5 | match x { ... } | main.rs:343:5:343:26 | ExprStmt | | +| main.rs:335:11:335:11 | x | main.rs:336:9:336:15 | Some(...) | | +| main.rs:336:9:336:15 | Some(...) | main.rs:336:14:336:14 | x | match | +| main.rs:336:9:336:15 | Some(...) | main.rs:340:9:340:9 | _ | no-match | +| main.rs:336:14:336:14 | x | main.rs:336:14:336:14 | x | | +| main.rs:336:14:336:14 | x | main.rs:338:18:338:18 | x | match | +| main.rs:337:16:338:18 | [boolean(true)] let ... = x | main.rs:339:19:339:19 | x | true | +| main.rs:337:16:339:23 | [boolean(false)] ... && ... | main.rs:340:9:340:9 | _ | false | +| main.rs:337:16:339:23 | [boolean(true)] ... && ... | main.rs:339:28:339:29 | TupleExpr | true | +| main.rs:337:20:337:20 | x | main.rs:337:16:338:18 | [boolean(true)] let ... = x | match | +| main.rs:337:20:337:20 | x | main.rs:337:20:337:20 | x | | +| main.rs:338:18:338:18 | x | main.rs:337:20:337:20 | x | | +| main.rs:339:19:339:19 | x | main.rs:339:23:339:23 | 0 | | +| main.rs:339:19:339:23 | ... > ... | main.rs:337:16:339:23 | [boolean(false)] ... && ... | false | +| main.rs:339:19:339:23 | ... > ... | main.rs:337:16:339:23 | [boolean(true)] ... && ... | true | +| main.rs:339:23:339:23 | 0 | main.rs:339:19:339:23 | ... > ... | | +| main.rs:339:28:339:29 | TupleExpr | main.rs:335:5:341:5 | match x { ... } | | +| main.rs:340:9:340:9 | _ | main.rs:340:14:340:15 | TupleExpr | match | +| main.rs:340:14:340:15 | TupleExpr | main.rs:335:5:341:5 | match x { ... } | | +| main.rs:343:5:343:13 | print_i64 | main.rs:343:15:343:15 | x | | +| main.rs:343:5:343:25 | print_i64(...) | main.rs:333:22:344:1 | { ... } | | +| main.rs:343:5:343:26 | ExprStmt | main.rs:343:5:343:13 | print_i64 | | +| main.rs:343:15:343:15 | x | main.rs:343:15:343:24 | x.unwrap() | | +| main.rs:343:15:343:24 | x.unwrap() | main.rs:343:5:343:25 | print_i64(...) | | +| main.rs:346:1:361:1 | enter fn match_pattern14 | main.rs:348:5:348:19 | let ... = ... | | +| main.rs:346:1:361:1 | exit fn match_pattern14 (normal) | main.rs:346:1:361:1 | exit fn match_pattern14 | | +| main.rs:347:22:361:1 | { ... } | main.rs:346:1:361:1 | exit fn match_pattern14 (normal) | | +| main.rs:348:5:348:19 | let ... = ... | main.rs:348:13:348:14 | Ok | | +| main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | | +| main.rs:348:9:348:9 | x | main.rs:350:7:350:7 | x | match | +| main.rs:348:13:348:14 | Ok | main.rs:348:16:348:17 | 42 | | +| main.rs:348:13:348:18 | Ok(...) | main.rs:348:9:348:9 | x | | +| main.rs:348:16:348:17 | 42 | main.rs:348:13:348:18 | Ok(...) | | +| main.rs:349:5:360:5 | if ... {...} else {...} | main.rs:347:22:361:1 | { ... } | | +| main.rs:349:8:350:7 | [boolean(false)] let ... = x | main.rs:355:7:355:7 | x | false | +| main.rs:349:8:350:7 | [boolean(true)] let ... = x | main.rs:352:9:352:21 | ExprStmt | true | +| main.rs:349:12:349:17 | Err(...) | main.rs:349:8:350:7 | [boolean(false)] let ... = x | no-match | +| main.rs:349:12:349:17 | Err(...) | main.rs:349:16:349:16 | x | match | +| main.rs:349:16:349:16 | x | main.rs:349:8:350:7 | [boolean(true)] let ... = x | match | +| main.rs:349:16:349:16 | x | main.rs:349:16:349:16 | x | | +| main.rs:350:7:350:7 | x | main.rs:349:12:349:17 | Err(...) | | +| main.rs:351:5:353:5 | { ... } | main.rs:349:5:360:5 | if ... {...} else {...} | | +| main.rs:352:9:352:17 | print_i64 | main.rs:352:19:352:19 | x | | +| main.rs:352:9:352:20 | print_i64(...) | main.rs:351:5:353:5 | { ... } | | +| main.rs:352:9:352:21 | ExprStmt | main.rs:352:9:352:17 | print_i64 | | +| main.rs:352:19:352:19 | x | main.rs:352:9:352:20 | print_i64(...) | | +| main.rs:354:10:360:5 | if ... {...} else {...} | main.rs:349:5:360:5 | if ... {...} else {...} | | +| main.rs:354:13:355:7 | [boolean(false)] let ... = x | main.rs:359:9:359:30 | ExprStmt | false | +| main.rs:354:13:355:7 | [boolean(true)] let ... = x | main.rs:357:9:357:21 | ExprStmt | true | +| main.rs:354:17:354:21 | Ok(...) | main.rs:354:13:355:7 | [boolean(false)] let ... = x | no-match | +| main.rs:354:17:354:21 | Ok(...) | main.rs:354:20:354:20 | x | match | +| main.rs:354:20:354:20 | x | main.rs:354:13:355:7 | [boolean(true)] let ... = x | match | +| main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | | +| main.rs:355:7:355:7 | x | main.rs:354:17:354:21 | Ok(...) | | +| main.rs:356:5:358:5 | { ... } | main.rs:354:10:360:5 | if ... {...} else {...} | | | main.rs:357:9:357:17 | print_i64 | main.rs:357:19:357:19 | x | | -| main.rs:357:9:357:29 | print_i64(...) | main.rs:356:12:358:5 | { ... } | | -| main.rs:357:9:357:30 | ExprStmt | main.rs:357:9:357:17 | print_i64 | | -| main.rs:357:19:357:19 | x | main.rs:357:19:357:28 | x.unwrap() | | -| main.rs:357:19:357:28 | x.unwrap() | main.rs:357:9:357:29 | print_i64(...) | | -| main.rs:361:1:371:1 | enter fn param_pattern1 | main.rs:362:5:362:6 | a8 | | -| main.rs:361:1:371:1 | exit fn param_pattern1 (normal) | main.rs:361:1:371:1 | exit fn param_pattern1 | | -| main.rs:362:5:362:6 | a8 | main.rs:362:5:362:6 | a8 | | -| main.rs:362:5:362:6 | a8 | main.rs:362:5:362:12 | ...: ... | match | -| main.rs:362:5:362:12 | ...: ... | main.rs:363:5:366:5 | TuplePat | | -| main.rs:363:5:366:5 | TuplePat | main.rs:364:9:364:10 | b3 | match | -| main.rs:363:5:366:19 | ...: ... | main.rs:368:5:368:18 | ExprStmt | | -| main.rs:364:9:364:10 | b3 | main.rs:364:9:364:10 | b3 | | -| main.rs:364:9:364:10 | b3 | main.rs:365:9:365:10 | c1 | match | -| main.rs:365:9:365:10 | c1 | main.rs:363:5:366:19 | ...: ... | match | -| main.rs:365:9:365:10 | c1 | main.rs:365:9:365:10 | c1 | | -| main.rs:367:9:371:1 | { ... } | main.rs:361:1:371:1 | exit fn param_pattern1 (normal) | | -| main.rs:368:5:368:13 | print_str | main.rs:368:15:368:16 | a8 | | -| main.rs:368:5:368:17 | print_str(...) | main.rs:369:5:369:18 | ExprStmt | | -| main.rs:368:5:368:18 | ExprStmt | main.rs:368:5:368:13 | print_str | | -| main.rs:368:15:368:16 | a8 | main.rs:368:5:368:17 | print_str(...) | | -| main.rs:369:5:369:13 | print_str | main.rs:369:15:369:16 | b3 | | -| main.rs:369:5:369:17 | print_str(...) | main.rs:370:5:370:18 | ExprStmt | | -| main.rs:369:5:369:18 | ExprStmt | main.rs:369:5:369:13 | print_str | | -| main.rs:369:15:369:16 | b3 | main.rs:369:5:369:17 | print_str(...) | | -| main.rs:370:5:370:13 | print_str | main.rs:370:15:370:16 | c1 | | -| main.rs:370:5:370:17 | print_str(...) | main.rs:367:9:371:1 | { ... } | | +| main.rs:357:9:357:20 | print_i64(...) | main.rs:356:5:358:5 | { ... } | | +| main.rs:357:9:357:21 | ExprStmt | main.rs:357:9:357:17 | print_i64 | | +| main.rs:357:19:357:19 | x | main.rs:357:9:357:20 | print_i64(...) | | +| main.rs:358:12:360:5 | { ... } | main.rs:354:10:360:5 | if ... {...} else {...} | | +| main.rs:359:9:359:17 | print_i64 | main.rs:359:19:359:19 | x | | +| main.rs:359:9:359:29 | print_i64(...) | main.rs:358:12:360:5 | { ... } | | +| main.rs:359:9:359:30 | ExprStmt | main.rs:359:9:359:17 | print_i64 | | +| main.rs:359:19:359:19 | x | main.rs:359:19:359:28 | x.unwrap() | | +| main.rs:359:19:359:28 | x.unwrap() | main.rs:359:9:359:29 | print_i64(...) | | +| main.rs:363:1:373:1 | enter fn param_pattern1 | main.rs:364:5:364:6 | a8 | | +| main.rs:363:1:373:1 | exit fn param_pattern1 (normal) | main.rs:363:1:373:1 | exit fn param_pattern1 | | +| main.rs:364:5:364:6 | a8 | main.rs:364:5:364:6 | a8 | | +| main.rs:364:5:364:6 | a8 | main.rs:364:5:364:12 | ...: ... | match | +| main.rs:364:5:364:12 | ...: ... | main.rs:365:5:368:5 | TuplePat | | +| main.rs:365:5:368:5 | TuplePat | main.rs:366:9:366:10 | b3 | match | +| main.rs:365:5:368:19 | ...: ... | main.rs:370:5:370:18 | ExprStmt | | +| main.rs:366:9:366:10 | b3 | main.rs:366:9:366:10 | b3 | | +| main.rs:366:9:366:10 | b3 | main.rs:367:9:367:10 | c1 | match | +| main.rs:367:9:367:10 | c1 | main.rs:365:5:368:19 | ...: ... | match | +| main.rs:367:9:367:10 | c1 | main.rs:367:9:367:10 | c1 | | +| main.rs:369:9:373:1 | { ... } | main.rs:363:1:373:1 | exit fn param_pattern1 (normal) | | +| main.rs:370:5:370:13 | print_str | main.rs:370:15:370:16 | a8 | | +| main.rs:370:5:370:17 | print_str(...) | main.rs:371:5:371:18 | ExprStmt | | | main.rs:370:5:370:18 | ExprStmt | main.rs:370:5:370:13 | print_str | | -| main.rs:370:15:370:16 | c1 | main.rs:370:5:370:17 | print_str(...) | | -| main.rs:373:1:376:1 | enter fn param_pattern2 | main.rs:373:20:373:35 | ...::Left(...) | | -| main.rs:373:1:376:1 | exit fn param_pattern2 (normal) | main.rs:373:1:376:1 | exit fn param_pattern2 | | -| main.rs:373:19:373:64 | ...: Either | main.rs:375:5:375:18 | ExprStmt | | -| main.rs:373:20:373:35 | ...::Left(...) | main.rs:373:33:373:34 | a9 | match | -| main.rs:373:20:373:35 | ...::Left(...) | main.rs:373:39:373:55 | ...::Right(...) | no-match | -| main.rs:373:20:373:55 | ... \| ... | main.rs:373:19:373:64 | ...: Either | match | -| main.rs:373:33:373:34 | a9 | main.rs:373:20:373:55 | ... \| ... | match | -| main.rs:373:33:373:34 | a9 | main.rs:373:33:373:34 | a9 | | -| main.rs:373:39:373:55 | ...::Right(...) | main.rs:373:53:373:54 | a9 | match | -| main.rs:373:53:373:54 | a9 | main.rs:373:20:373:55 | ... \| ... | match | -| main.rs:373:53:373:54 | a9 | main.rs:373:53:373:54 | a9 | | -| main.rs:374:9:376:1 | { ... } | main.rs:373:1:376:1 | exit fn param_pattern2 (normal) | | -| main.rs:375:5:375:13 | print_i64 | main.rs:375:15:375:16 | a9 | | -| main.rs:375:5:375:17 | print_i64(...) | main.rs:374:9:376:1 | { ... } | | -| main.rs:375:5:375:18 | ExprStmt | main.rs:375:5:375:13 | print_i64 | | -| main.rs:375:15:375:16 | a9 | main.rs:375:5:375:17 | print_i64(...) | | -| main.rs:378:1:413:1 | enter fn destruct_assignment | main.rs:379:5:383:18 | let ... = ... | | -| main.rs:378:1:413:1 | exit fn destruct_assignment (normal) | main.rs:378:1:413:1 | exit fn destruct_assignment | | -| main.rs:378:26:413:1 | { ... } | main.rs:378:1:413:1 | exit fn destruct_assignment (normal) | | -| main.rs:379:5:383:18 | let ... = ... | main.rs:383:10:383:10 | 1 | | -| main.rs:379:9:383:5 | TuplePat | main.rs:380:13:380:15 | a10 | match | -| main.rs:380:9:380:15 | mut a10 | main.rs:381:13:381:14 | b4 | match | -| main.rs:380:13:380:15 | a10 | main.rs:380:9:380:15 | mut a10 | | -| main.rs:381:9:381:14 | mut b4 | main.rs:382:13:382:14 | c2 | match | -| main.rs:381:13:381:14 | b4 | main.rs:381:9:381:14 | mut b4 | | -| main.rs:382:9:382:14 | mut c2 | main.rs:384:5:384:19 | ExprStmt | match | -| main.rs:382:13:382:14 | c2 | main.rs:382:9:382:14 | mut c2 | | -| main.rs:383:9:383:17 | TupleExpr | main.rs:379:9:383:5 | TuplePat | | -| main.rs:383:10:383:10 | 1 | main.rs:383:13:383:13 | 2 | | -| main.rs:383:13:383:13 | 2 | main.rs:383:16:383:16 | 3 | | -| main.rs:383:16:383:16 | 3 | main.rs:383:9:383:17 | TupleExpr | | -| main.rs:384:5:384:13 | print_i64 | main.rs:384:15:384:17 | a10 | | -| main.rs:384:5:384:18 | print_i64(...) | main.rs:385:5:385:18 | ExprStmt | | -| main.rs:384:5:384:19 | ExprStmt | main.rs:384:5:384:13 | print_i64 | | -| main.rs:384:15:384:17 | a10 | main.rs:384:5:384:18 | print_i64(...) | | -| main.rs:385:5:385:13 | print_i64 | main.rs:385:15:385:16 | b4 | | -| main.rs:385:5:385:17 | print_i64(...) | main.rs:386:5:386:18 | ExprStmt | | -| main.rs:385:5:385:18 | ExprStmt | main.rs:385:5:385:13 | print_i64 | | -| main.rs:385:15:385:16 | b4 | main.rs:385:5:385:17 | print_i64(...) | | -| main.rs:386:5:386:13 | print_i64 | main.rs:386:15:386:16 | c2 | | -| main.rs:386:5:386:17 | print_i64(...) | main.rs:388:5:396:6 | ExprStmt | | -| main.rs:386:5:386:18 | ExprStmt | main.rs:386:5:386:13 | print_i64 | | -| main.rs:386:15:386:16 | c2 | main.rs:386:5:386:17 | print_i64(...) | | -| main.rs:388:5:392:5 | TupleExpr | main.rs:393:9:393:11 | a10 | | -| main.rs:388:5:396:5 | ... = ... | main.rs:397:5:397:19 | ExprStmt | | -| main.rs:388:5:396:6 | ExprStmt | main.rs:389:9:389:10 | c2 | | -| main.rs:389:9:389:10 | c2 | main.rs:390:9:390:10 | b4 | | -| main.rs:390:9:390:10 | b4 | main.rs:391:9:391:11 | a10 | | -| main.rs:391:9:391:11 | a10 | main.rs:388:5:392:5 | TupleExpr | | -| main.rs:392:9:396:5 | TupleExpr | main.rs:388:5:396:5 | ... = ... | | -| main.rs:393:9:393:11 | a10 | main.rs:394:9:394:10 | b4 | | -| main.rs:394:9:394:10 | b4 | main.rs:395:9:395:10 | c2 | | -| main.rs:395:9:395:10 | c2 | main.rs:392:9:396:5 | TupleExpr | | -| main.rs:397:5:397:13 | print_i64 | main.rs:397:15:397:17 | a10 | | -| main.rs:397:5:397:18 | print_i64(...) | main.rs:398:5:398:18 | ExprStmt | | -| main.rs:397:5:397:19 | ExprStmt | main.rs:397:5:397:13 | print_i64 | | -| main.rs:397:15:397:17 | a10 | main.rs:397:5:397:18 | print_i64(...) | | -| main.rs:398:5:398:13 | print_i64 | main.rs:398:15:398:16 | b4 | | -| main.rs:398:5:398:17 | print_i64(...) | main.rs:399:5:399:18 | ExprStmt | | -| main.rs:398:5:398:18 | ExprStmt | main.rs:398:5:398:13 | print_i64 | | -| main.rs:398:15:398:16 | b4 | main.rs:398:5:398:17 | print_i64(...) | | -| main.rs:399:5:399:13 | print_i64 | main.rs:399:15:399:16 | c2 | | -| main.rs:399:5:399:17 | print_i64(...) | main.rs:401:5:409:5 | ExprStmt | | -| main.rs:399:5:399:18 | ExprStmt | main.rs:399:5:399:13 | print_i64 | | -| main.rs:399:15:399:16 | c2 | main.rs:399:5:399:17 | print_i64(...) | | -| main.rs:401:5:409:5 | ExprStmt | main.rs:401:12:401:12 | 4 | | -| main.rs:401:5:409:5 | match ... { ... } | main.rs:411:5:411:19 | ExprStmt | | -| main.rs:401:11:401:16 | TupleExpr | main.rs:402:9:405:9 | TuplePat | | -| main.rs:401:12:401:12 | 4 | main.rs:401:15:401:15 | 5 | | -| main.rs:401:15:401:15 | 5 | main.rs:401:11:401:16 | TupleExpr | | -| main.rs:402:9:405:9 | TuplePat | main.rs:403:13:403:15 | a10 | match | -| main.rs:403:13:403:15 | a10 | main.rs:403:13:403:15 | a10 | | -| main.rs:403:13:403:15 | a10 | main.rs:404:13:404:14 | b4 | match | -| main.rs:404:13:404:14 | b4 | main.rs:404:13:404:14 | b4 | | -| main.rs:404:13:404:14 | b4 | main.rs:406:13:406:27 | ExprStmt | match | -| main.rs:405:14:408:9 | { ... } | main.rs:401:5:409:5 | match ... { ... } | | -| main.rs:406:13:406:21 | print_i64 | main.rs:406:23:406:25 | a10 | | -| main.rs:406:13:406:26 | print_i64(...) | main.rs:407:13:407:26 | ExprStmt | | -| main.rs:406:13:406:27 | ExprStmt | main.rs:406:13:406:21 | print_i64 | | -| main.rs:406:23:406:25 | a10 | main.rs:406:13:406:26 | print_i64(...) | | -| main.rs:407:13:407:21 | print_i64 | main.rs:407:23:407:24 | b4 | | -| main.rs:407:13:407:25 | print_i64(...) | main.rs:405:14:408:9 | { ... } | | -| main.rs:407:13:407:26 | ExprStmt | main.rs:407:13:407:21 | print_i64 | | -| main.rs:407:23:407:24 | b4 | main.rs:407:13:407:25 | print_i64(...) | | -| main.rs:411:5:411:13 | print_i64 | main.rs:411:15:411:17 | a10 | | -| main.rs:411:5:411:18 | print_i64(...) | main.rs:412:5:412:18 | ExprStmt | | -| main.rs:411:5:411:19 | ExprStmt | main.rs:411:5:411:13 | print_i64 | | -| main.rs:411:15:411:17 | a10 | main.rs:411:5:411:18 | print_i64(...) | | -| main.rs:412:5:412:13 | print_i64 | main.rs:412:15:412:16 | b4 | | -| main.rs:412:5:412:17 | print_i64(...) | main.rs:378:26:413:1 | { ... } | | -| main.rs:412:5:412:18 | ExprStmt | main.rs:412:5:412:13 | print_i64 | | -| main.rs:412:15:412:16 | b4 | main.rs:412:5:412:17 | print_i64(...) | | -| main.rs:415:1:430:1 | enter fn closure_variable | main.rs:416:5:418:10 | let ... = ... | | -| main.rs:415:1:430:1 | exit fn closure_variable (normal) | main.rs:415:1:430:1 | exit fn closure_variable | | -| main.rs:415:23:430:1 | { ... } | main.rs:415:1:430:1 | exit fn closure_variable (normal) | | -| main.rs:416:5:418:10 | let ... = ... | main.rs:417:9:418:9 | \|...\| x | | -| main.rs:416:9:416:23 | example_closure | main.rs:416:9:416:23 | example_closure | | -| main.rs:416:9:416:23 | example_closure | main.rs:419:5:420:27 | let ... = ... | match | -| main.rs:417:9:418:9 | \|...\| x | main.rs:416:9:416:23 | example_closure | | -| main.rs:417:9:418:9 | enter \|...\| x | main.rs:417:10:417:10 | x | | -| main.rs:417:9:418:9 | exit \|...\| x (normal) | main.rs:417:9:418:9 | exit \|...\| x | | -| main.rs:417:10:417:10 | x | main.rs:417:10:417:10 | x | | -| main.rs:417:10:417:10 | x | main.rs:417:10:417:15 | ...: i64 | match | -| main.rs:417:10:417:15 | ...: i64 | main.rs:418:9:418:9 | x | | -| main.rs:418:9:418:9 | x | main.rs:417:9:418:9 | exit \|...\| x (normal) | | -| main.rs:419:5:420:27 | let ... = ... | main.rs:420:9:420:23 | example_closure | | -| main.rs:419:9:419:10 | n1 | main.rs:419:9:419:10 | n1 | | -| main.rs:419:9:419:10 | n1 | main.rs:421:5:421:18 | ExprStmt | match | -| main.rs:420:9:420:23 | example_closure | main.rs:420:25:420:25 | 5 | | -| main.rs:420:9:420:26 | example_closure(...) | main.rs:419:9:419:10 | n1 | | -| main.rs:420:25:420:25 | 5 | main.rs:420:9:420:26 | example_closure(...) | | -| main.rs:421:5:421:13 | print_i64 | main.rs:421:15:421:16 | n1 | | -| main.rs:421:5:421:17 | print_i64(...) | main.rs:423:5:423:25 | ExprStmt | | -| main.rs:421:5:421:18 | ExprStmt | main.rs:421:5:421:13 | print_i64 | | -| main.rs:421:15:421:16 | n1 | main.rs:421:5:421:17 | print_i64(...) | | -| main.rs:423:5:423:22 | immutable_variable | main.rs:423:5:423:24 | immutable_variable(...) | | -| main.rs:423:5:423:24 | immutable_variable(...) | main.rs:424:5:426:10 | let ... = ... | | -| main.rs:423:5:423:25 | ExprStmt | main.rs:423:5:423:22 | immutable_variable | | -| main.rs:424:5:426:10 | let ... = ... | main.rs:425:5:426:9 | \|...\| x | | -| main.rs:424:9:424:26 | immutable_variable | main.rs:424:9:424:26 | immutable_variable | | -| main.rs:424:9:424:26 | immutable_variable | main.rs:427:5:428:30 | let ... = ... | match | -| main.rs:425:5:426:9 | \|...\| x | main.rs:424:9:424:26 | immutable_variable | | -| main.rs:425:5:426:9 | enter \|...\| x | main.rs:425:6:425:6 | x | | -| main.rs:425:5:426:9 | exit \|...\| x (normal) | main.rs:425:5:426:9 | exit \|...\| x | | -| main.rs:425:6:425:6 | x | main.rs:425:6:425:6 | x | | -| main.rs:425:6:425:6 | x | main.rs:425:6:425:11 | ...: i64 | match | -| main.rs:425:6:425:11 | ...: i64 | main.rs:426:9:426:9 | x | | -| main.rs:426:9:426:9 | x | main.rs:425:5:426:9 | exit \|...\| x (normal) | | -| main.rs:427:5:428:30 | let ... = ... | main.rs:428:9:428:26 | immutable_variable | | -| main.rs:427:9:427:10 | n2 | main.rs:427:9:427:10 | n2 | | -| main.rs:427:9:427:10 | n2 | main.rs:429:5:429:18 | ExprStmt | match | -| main.rs:428:9:428:26 | immutable_variable | main.rs:428:28:428:28 | 6 | | -| main.rs:428:9:428:29 | immutable_variable(...) | main.rs:427:9:427:10 | n2 | | -| main.rs:428:28:428:28 | 6 | main.rs:428:9:428:29 | immutable_variable(...) | | -| main.rs:429:5:429:13 | print_i64 | main.rs:429:15:429:16 | n2 | | -| main.rs:429:5:429:17 | print_i64(...) | main.rs:415:23:430:1 | { ... } | | -| main.rs:429:5:429:18 | ExprStmt | main.rs:429:5:429:13 | print_i64 | | -| main.rs:429:15:429:16 | n2 | main.rs:429:5:429:17 | print_i64(...) | | -| main.rs:432:1:462:1 | enter fn nested_function | main.rs:434:5:436:10 | let ... = ... | | -| main.rs:432:1:462:1 | exit fn nested_function (normal) | main.rs:432:1:462:1 | exit fn nested_function | | -| main.rs:432:22:462:1 | { ... } | main.rs:432:1:462:1 | exit fn nested_function (normal) | | -| main.rs:434:5:436:10 | let ... = ... | main.rs:435:9:436:9 | \|...\| x | | -| main.rs:434:9:434:9 | f | main.rs:434:9:434:9 | f | | -| main.rs:434:9:434:9 | f | main.rs:437:5:437:20 | ExprStmt | match | -| main.rs:435:9:436:9 | \|...\| x | main.rs:434:9:434:9 | f | | -| main.rs:435:9:436:9 | enter \|...\| x | main.rs:435:10:435:10 | x | | -| main.rs:435:9:436:9 | exit \|...\| x (normal) | main.rs:435:9:436:9 | exit \|...\| x | | -| main.rs:435:10:435:10 | x | main.rs:435:10:435:10 | x | | -| main.rs:435:10:435:10 | x | main.rs:435:10:435:15 | ...: i64 | match | -| main.rs:435:10:435:15 | ...: i64 | main.rs:436:9:436:9 | x | | -| main.rs:436:9:436:9 | x | main.rs:435:9:436:9 | exit \|...\| x (normal) | | -| main.rs:437:5:437:13 | print_i64 | main.rs:437:15:437:15 | f | | -| main.rs:437:5:437:19 | print_i64(...) | main.rs:439:5:442:5 | fn f | | -| main.rs:437:5:437:20 | ExprStmt | main.rs:437:5:437:13 | print_i64 | | -| main.rs:437:15:437:15 | f | main.rs:437:17:437:17 | 1 | | -| main.rs:437:15:437:18 | f(...) | main.rs:437:5:437:19 | print_i64(...) | | -| main.rs:437:17:437:17 | 1 | main.rs:437:15:437:18 | f(...) | | -| main.rs:439:5:442:5 | enter fn f | main.rs:439:10:439:10 | x | | -| main.rs:439:5:442:5 | exit fn f (normal) | main.rs:439:5:442:5 | exit fn f | | -| main.rs:439:5:442:5 | fn f | main.rs:444:5:444:20 | ExprStmt | | -| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | | -| main.rs:439:10:439:10 | x | main.rs:439:10:439:15 | ...: i64 | match | -| main.rs:439:10:439:15 | ...: i64 | main.rs:441:9:441:9 | x | | -| main.rs:440:5:442:5 | { ... } | main.rs:439:5:442:5 | exit fn f (normal) | | -| main.rs:441:9:441:9 | x | main.rs:441:13:441:13 | 1 | | -| main.rs:441:9:441:13 | ... + ... | main.rs:440:5:442:5 | { ... } | | -| main.rs:441:13:441:13 | 1 | main.rs:441:9:441:13 | ... + ... | | -| main.rs:444:5:444:13 | print_i64 | main.rs:444:15:444:15 | f | | -| main.rs:444:5:444:19 | print_i64(...) | main.rs:447:9:447:24 | ExprStmt | | -| main.rs:444:5:444:20 | ExprStmt | main.rs:444:5:444:13 | print_i64 | | -| main.rs:444:15:444:15 | f | main.rs:444:17:444:17 | 2 | | -| main.rs:444:15:444:18 | f(...) | main.rs:444:5:444:19 | print_i64(...) | | -| main.rs:444:17:444:17 | 2 | main.rs:444:15:444:18 | f(...) | | -| main.rs:446:5:461:5 | { ... } | main.rs:432:22:462:1 | { ... } | | -| main.rs:447:9:447:17 | print_i64 | main.rs:447:19:447:19 | f | | -| main.rs:447:9:447:23 | print_i64(...) | main.rs:448:9:451:9 | fn f | | -| main.rs:447:9:447:24 | ExprStmt | main.rs:447:9:447:17 | print_i64 | | -| main.rs:447:19:447:19 | f | main.rs:447:21:447:21 | 3 | | -| main.rs:447:19:447:22 | f(...) | main.rs:447:9:447:23 | print_i64(...) | | -| main.rs:447:21:447:21 | 3 | main.rs:447:19:447:22 | f(...) | | -| main.rs:448:9:451:9 | enter fn f | main.rs:448:14:448:14 | x | | -| main.rs:448:9:451:9 | exit fn f (normal) | main.rs:448:9:451:9 | exit fn f | | -| main.rs:448:9:451:9 | fn f | main.rs:453:9:455:9 | ExprStmt | | -| main.rs:448:14:448:14 | x | main.rs:448:14:448:14 | x | | -| main.rs:448:14:448:14 | x | main.rs:448:14:448:19 | ...: i64 | match | -| main.rs:448:14:448:19 | ...: i64 | main.rs:450:13:450:13 | 2 | | -| main.rs:449:9:451:9 | { ... } | main.rs:448:9:451:9 | exit fn f (normal) | | -| main.rs:450:13:450:13 | 2 | main.rs:450:17:450:17 | x | | -| main.rs:450:13:450:17 | ... * ... | main.rs:449:9:451:9 | { ... } | | -| main.rs:450:17:450:17 | x | main.rs:450:13:450:17 | ... * ... | | -| main.rs:453:9:455:9 | ExprStmt | main.rs:454:13:454:28 | ExprStmt | | -| main.rs:453:9:455:9 | { ... } | main.rs:457:9:459:14 | let ... = ... | | -| main.rs:454:13:454:21 | print_i64 | main.rs:454:23:454:23 | f | | -| main.rs:454:13:454:27 | print_i64(...) | main.rs:453:9:455:9 | { ... } | | -| main.rs:454:13:454:28 | ExprStmt | main.rs:454:13:454:21 | print_i64 | | -| main.rs:454:23:454:23 | f | main.rs:454:25:454:25 | 4 | | -| main.rs:454:23:454:26 | f(...) | main.rs:454:13:454:27 | print_i64(...) | | -| main.rs:454:25:454:25 | 4 | main.rs:454:23:454:26 | f(...) | | -| main.rs:457:9:459:14 | let ... = ... | main.rs:458:13:459:13 | \|...\| x | | -| main.rs:457:13:457:13 | f | main.rs:457:13:457:13 | f | | -| main.rs:457:13:457:13 | f | main.rs:460:9:460:24 | ExprStmt | match | -| main.rs:458:13:459:13 | \|...\| x | main.rs:457:13:457:13 | f | | -| main.rs:458:13:459:13 | enter \|...\| x | main.rs:458:14:458:14 | x | | -| main.rs:458:13:459:13 | exit \|...\| x (normal) | main.rs:458:13:459:13 | exit \|...\| x | | -| main.rs:458:14:458:14 | x | main.rs:458:14:458:14 | x | | -| main.rs:458:14:458:14 | x | main.rs:458:14:458:19 | ...: i64 | match | -| main.rs:458:14:458:19 | ...: i64 | main.rs:459:13:459:13 | x | | -| main.rs:459:13:459:13 | x | main.rs:458:13:459:13 | exit \|...\| x (normal) | | -| main.rs:460:9:460:17 | print_i64 | main.rs:460:19:460:19 | f | | -| main.rs:460:9:460:23 | print_i64(...) | main.rs:446:5:461:5 | { ... } | | -| main.rs:460:9:460:24 | ExprStmt | main.rs:460:9:460:17 | print_i64 | | -| main.rs:460:19:460:19 | f | main.rs:460:21:460:21 | 5 | | -| main.rs:460:19:460:22 | f(...) | main.rs:460:9:460:23 | print_i64(...) | | -| main.rs:460:21:460:21 | 5 | main.rs:460:19:460:22 | f(...) | | -| main.rs:464:1:471:1 | enter fn for_variable | main.rs:465:5:465:42 | let ... = ... | | -| main.rs:464:1:471:1 | exit fn for_variable (normal) | main.rs:464:1:471:1 | exit fn for_variable | | -| main.rs:464:19:471:1 | { ... } | main.rs:464:1:471:1 | exit fn for_variable (normal) | | -| main.rs:465:5:465:42 | let ... = ... | main.rs:465:15:465:22 | "apples" | | -| main.rs:465:9:465:9 | v | main.rs:465:9:465:9 | v | | -| main.rs:465:9:465:9 | v | main.rs:468:12:468:12 | v | match | -| main.rs:465:13:465:41 | &... | main.rs:465:9:465:9 | v | | -| main.rs:465:14:465:41 | [...] | main.rs:465:13:465:41 | &... | | -| main.rs:465:15:465:22 | "apples" | main.rs:465:25:465:30 | "cake" | | -| main.rs:465:25:465:30 | "cake" | main.rs:465:33:465:40 | "coffee" | | -| main.rs:465:33:465:40 | "coffee" | main.rs:465:14:465:41 | [...] | | -| main.rs:467:5:470:5 | for ... in ... { ... } | main.rs:464:19:471:1 | { ... } | | -| main.rs:467:9:467:12 | text | main.rs:467:5:470:5 | for ... in ... { ... } | no-match | -| main.rs:467:9:467:12 | text | main.rs:467:9:467:12 | text | | -| main.rs:467:9:467:12 | text | main.rs:469:9:469:24 | ExprStmt | match | -| main.rs:468:12:468:12 | v | main.rs:467:9:467:12 | text | | -| main.rs:468:14:470:5 | { ... } | main.rs:467:9:467:12 | text | | -| main.rs:469:9:469:17 | print_str | main.rs:469:19:469:22 | text | | -| main.rs:469:9:469:23 | print_str(...) | main.rs:468:14:470:5 | { ... } | | -| main.rs:469:9:469:24 | ExprStmt | main.rs:469:9:469:17 | print_str | | -| main.rs:469:19:469:22 | text | main.rs:469:9:469:23 | print_str(...) | | -| main.rs:473:1:479:1 | enter fn add_assign | main.rs:474:5:474:18 | let ... = 0 | | -| main.rs:473:1:479:1 | exit fn add_assign (normal) | main.rs:473:1:479:1 | exit fn add_assign | | -| main.rs:473:17:479:1 | { ... } | main.rs:473:1:479:1 | exit fn add_assign (normal) | | -| main.rs:474:5:474:18 | let ... = 0 | main.rs:474:17:474:17 | 0 | | -| main.rs:474:9:474:13 | mut a | main.rs:475:5:475:11 | ExprStmt | match | -| main.rs:474:13:474:13 | a | main.rs:474:9:474:13 | mut a | | -| main.rs:474:17:474:17 | 0 | main.rs:474:13:474:13 | a | | -| main.rs:475:5:475:5 | a | main.rs:475:10:475:10 | 1 | | -| main.rs:475:5:475:10 | ... += ... | main.rs:476:5:476:17 | ExprStmt | | -| main.rs:475:5:475:11 | ExprStmt | main.rs:475:5:475:5 | a | | -| main.rs:475:10:475:10 | 1 | main.rs:475:5:475:10 | ... += ... | | -| main.rs:476:5:476:13 | print_i64 | main.rs:476:15:476:15 | a | | -| main.rs:476:5:476:16 | print_i64(...) | main.rs:477:5:477:28 | ExprStmt | | -| main.rs:476:5:476:17 | ExprStmt | main.rs:476:5:476:13 | print_i64 | | -| main.rs:476:15:476:15 | a | main.rs:476:5:476:16 | print_i64(...) | | -| main.rs:477:5:477:27 | ... .add_assign(...) | main.rs:478:5:478:17 | ExprStmt | | -| main.rs:477:5:477:28 | ExprStmt | main.rs:477:11:477:11 | a | | -| main.rs:477:6:477:11 | &mut a | main.rs:477:25:477:26 | 10 | | -| main.rs:477:11:477:11 | a | main.rs:477:6:477:11 | &mut a | | -| main.rs:477:25:477:26 | 10 | main.rs:477:5:477:27 | ... .add_assign(...) | | +| main.rs:370:15:370:16 | a8 | main.rs:370:5:370:17 | print_str(...) | | +| main.rs:371:5:371:13 | print_str | main.rs:371:15:371:16 | b3 | | +| main.rs:371:5:371:17 | print_str(...) | main.rs:372:5:372:18 | ExprStmt | | +| main.rs:371:5:371:18 | ExprStmt | main.rs:371:5:371:13 | print_str | | +| main.rs:371:15:371:16 | b3 | main.rs:371:5:371:17 | print_str(...) | | +| main.rs:372:5:372:13 | print_str | main.rs:372:15:372:16 | c1 | | +| main.rs:372:5:372:17 | print_str(...) | main.rs:369:9:373:1 | { ... } | | +| main.rs:372:5:372:18 | ExprStmt | main.rs:372:5:372:13 | print_str | | +| main.rs:372:15:372:16 | c1 | main.rs:372:5:372:17 | print_str(...) | | +| main.rs:375:1:378:1 | enter fn param_pattern2 | main.rs:375:20:375:35 | ...::Left(...) | | +| main.rs:375:1:378:1 | exit fn param_pattern2 (normal) | main.rs:375:1:378:1 | exit fn param_pattern2 | | +| main.rs:375:19:375:64 | ...: Either | main.rs:377:5:377:18 | ExprStmt | | +| main.rs:375:20:375:35 | ...::Left(...) | main.rs:375:33:375:34 | a9 | match | +| main.rs:375:20:375:35 | ...::Left(...) | main.rs:375:39:375:55 | ...::Right(...) | no-match | +| main.rs:375:20:375:55 | ... \| ... | main.rs:375:19:375:64 | ...: Either | match | +| main.rs:375:33:375:34 | a9 | main.rs:375:20:375:55 | ... \| ... | match | +| main.rs:375:33:375:34 | a9 | main.rs:375:33:375:34 | a9 | | +| main.rs:375:39:375:55 | ...::Right(...) | main.rs:375:53:375:54 | a9 | match | +| main.rs:375:53:375:54 | a9 | main.rs:375:20:375:55 | ... \| ... | match | +| main.rs:375:53:375:54 | a9 | main.rs:375:53:375:54 | a9 | | +| main.rs:376:9:378:1 | { ... } | main.rs:375:1:378:1 | exit fn param_pattern2 (normal) | | +| main.rs:377:5:377:13 | print_i64 | main.rs:377:15:377:16 | a9 | | +| main.rs:377:5:377:17 | print_i64(...) | main.rs:376:9:378:1 | { ... } | | +| main.rs:377:5:377:18 | ExprStmt | main.rs:377:5:377:13 | print_i64 | | +| main.rs:377:15:377:16 | a9 | main.rs:377:5:377:17 | print_i64(...) | | +| main.rs:380:1:415:1 | enter fn destruct_assignment | main.rs:381:5:385:18 | let ... = ... | | +| main.rs:380:1:415:1 | exit fn destruct_assignment (normal) | main.rs:380:1:415:1 | exit fn destruct_assignment | | +| main.rs:380:26:415:1 | { ... } | main.rs:380:1:415:1 | exit fn destruct_assignment (normal) | | +| main.rs:381:5:385:18 | let ... = ... | main.rs:385:10:385:10 | 1 | | +| main.rs:381:9:385:5 | TuplePat | main.rs:382:13:382:15 | a10 | match | +| main.rs:382:9:382:15 | mut a10 | main.rs:383:13:383:14 | b4 | match | +| main.rs:382:13:382:15 | a10 | main.rs:382:9:382:15 | mut a10 | | +| main.rs:383:9:383:14 | mut b4 | main.rs:384:13:384:14 | c2 | match | +| main.rs:383:13:383:14 | b4 | main.rs:383:9:383:14 | mut b4 | | +| main.rs:384:9:384:14 | mut c2 | main.rs:386:5:386:19 | ExprStmt | match | +| main.rs:384:13:384:14 | c2 | main.rs:384:9:384:14 | mut c2 | | +| main.rs:385:9:385:17 | TupleExpr | main.rs:381:9:385:5 | TuplePat | | +| main.rs:385:10:385:10 | 1 | main.rs:385:13:385:13 | 2 | | +| main.rs:385:13:385:13 | 2 | main.rs:385:16:385:16 | 3 | | +| main.rs:385:16:385:16 | 3 | main.rs:385:9:385:17 | TupleExpr | | +| main.rs:386:5:386:13 | print_i64 | main.rs:386:15:386:17 | a10 | | +| main.rs:386:5:386:18 | print_i64(...) | main.rs:387:5:387:18 | ExprStmt | | +| main.rs:386:5:386:19 | ExprStmt | main.rs:386:5:386:13 | print_i64 | | +| main.rs:386:15:386:17 | a10 | main.rs:386:5:386:18 | print_i64(...) | | +| main.rs:387:5:387:13 | print_i64 | main.rs:387:15:387:16 | b4 | | +| main.rs:387:5:387:17 | print_i64(...) | main.rs:388:5:388:18 | ExprStmt | | +| main.rs:387:5:387:18 | ExprStmt | main.rs:387:5:387:13 | print_i64 | | +| main.rs:387:15:387:16 | b4 | main.rs:387:5:387:17 | print_i64(...) | | +| main.rs:388:5:388:13 | print_i64 | main.rs:388:15:388:16 | c2 | | +| main.rs:388:5:388:17 | print_i64(...) | main.rs:390:5:398:6 | ExprStmt | | +| main.rs:388:5:388:18 | ExprStmt | main.rs:388:5:388:13 | print_i64 | | +| main.rs:388:15:388:16 | c2 | main.rs:388:5:388:17 | print_i64(...) | | +| main.rs:390:5:394:5 | TupleExpr | main.rs:395:9:395:11 | a10 | | +| main.rs:390:5:398:5 | ... = ... | main.rs:399:5:399:19 | ExprStmt | | +| main.rs:390:5:398:6 | ExprStmt | main.rs:391:9:391:10 | c2 | | +| main.rs:391:9:391:10 | c2 | main.rs:392:9:392:10 | b4 | | +| main.rs:392:9:392:10 | b4 | main.rs:393:9:393:11 | a10 | | +| main.rs:393:9:393:11 | a10 | main.rs:390:5:394:5 | TupleExpr | | +| main.rs:394:9:398:5 | TupleExpr | main.rs:390:5:398:5 | ... = ... | | +| main.rs:395:9:395:11 | a10 | main.rs:396:9:396:10 | b4 | | +| main.rs:396:9:396:10 | b4 | main.rs:397:9:397:10 | c2 | | +| main.rs:397:9:397:10 | c2 | main.rs:394:9:398:5 | TupleExpr | | +| main.rs:399:5:399:13 | print_i64 | main.rs:399:15:399:17 | a10 | | +| main.rs:399:5:399:18 | print_i64(...) | main.rs:400:5:400:18 | ExprStmt | | +| main.rs:399:5:399:19 | ExprStmt | main.rs:399:5:399:13 | print_i64 | | +| main.rs:399:15:399:17 | a10 | main.rs:399:5:399:18 | print_i64(...) | | +| main.rs:400:5:400:13 | print_i64 | main.rs:400:15:400:16 | b4 | | +| main.rs:400:5:400:17 | print_i64(...) | main.rs:401:5:401:18 | ExprStmt | | +| main.rs:400:5:400:18 | ExprStmt | main.rs:400:5:400:13 | print_i64 | | +| main.rs:400:15:400:16 | b4 | main.rs:400:5:400:17 | print_i64(...) | | +| main.rs:401:5:401:13 | print_i64 | main.rs:401:15:401:16 | c2 | | +| main.rs:401:5:401:17 | print_i64(...) | main.rs:403:5:411:5 | ExprStmt | | +| main.rs:401:5:401:18 | ExprStmt | main.rs:401:5:401:13 | print_i64 | | +| main.rs:401:15:401:16 | c2 | main.rs:401:5:401:17 | print_i64(...) | | +| main.rs:403:5:411:5 | ExprStmt | main.rs:403:12:403:12 | 4 | | +| main.rs:403:5:411:5 | match ... { ... } | main.rs:413:5:413:19 | ExprStmt | | +| main.rs:403:11:403:16 | TupleExpr | main.rs:404:9:407:9 | TuplePat | | +| main.rs:403:12:403:12 | 4 | main.rs:403:15:403:15 | 5 | | +| main.rs:403:15:403:15 | 5 | main.rs:403:11:403:16 | TupleExpr | | +| main.rs:404:9:407:9 | TuplePat | main.rs:405:13:405:15 | a10 | match | +| main.rs:405:13:405:15 | a10 | main.rs:405:13:405:15 | a10 | | +| main.rs:405:13:405:15 | a10 | main.rs:406:13:406:14 | b4 | match | +| main.rs:406:13:406:14 | b4 | main.rs:406:13:406:14 | b4 | | +| main.rs:406:13:406:14 | b4 | main.rs:408:13:408:27 | ExprStmt | match | +| main.rs:407:14:410:9 | { ... } | main.rs:403:5:411:5 | match ... { ... } | | +| main.rs:408:13:408:21 | print_i64 | main.rs:408:23:408:25 | a10 | | +| main.rs:408:13:408:26 | print_i64(...) | main.rs:409:13:409:26 | ExprStmt | | +| main.rs:408:13:408:27 | ExprStmt | main.rs:408:13:408:21 | print_i64 | | +| main.rs:408:23:408:25 | a10 | main.rs:408:13:408:26 | print_i64(...) | | +| main.rs:409:13:409:21 | print_i64 | main.rs:409:23:409:24 | b4 | | +| main.rs:409:13:409:25 | print_i64(...) | main.rs:407:14:410:9 | { ... } | | +| main.rs:409:13:409:26 | ExprStmt | main.rs:409:13:409:21 | print_i64 | | +| main.rs:409:23:409:24 | b4 | main.rs:409:13:409:25 | print_i64(...) | | +| main.rs:413:5:413:13 | print_i64 | main.rs:413:15:413:17 | a10 | | +| main.rs:413:5:413:18 | print_i64(...) | main.rs:414:5:414:18 | ExprStmt | | +| main.rs:413:5:413:19 | ExprStmt | main.rs:413:5:413:13 | print_i64 | | +| main.rs:413:15:413:17 | a10 | main.rs:413:5:413:18 | print_i64(...) | | +| main.rs:414:5:414:13 | print_i64 | main.rs:414:15:414:16 | b4 | | +| main.rs:414:5:414:17 | print_i64(...) | main.rs:380:26:415:1 | { ... } | | +| main.rs:414:5:414:18 | ExprStmt | main.rs:414:5:414:13 | print_i64 | | +| main.rs:414:15:414:16 | b4 | main.rs:414:5:414:17 | print_i64(...) | | +| main.rs:417:1:432:1 | enter fn closure_variable | main.rs:418:5:420:10 | let ... = ... | | +| main.rs:417:1:432:1 | exit fn closure_variable (normal) | main.rs:417:1:432:1 | exit fn closure_variable | | +| main.rs:417:23:432:1 | { ... } | main.rs:417:1:432:1 | exit fn closure_variable (normal) | | +| main.rs:418:5:420:10 | let ... = ... | main.rs:419:9:420:9 | \|...\| x | | +| main.rs:418:9:418:23 | example_closure | main.rs:418:9:418:23 | example_closure | | +| main.rs:418:9:418:23 | example_closure | main.rs:421:5:422:27 | let ... = ... | match | +| main.rs:419:9:420:9 | \|...\| x | main.rs:418:9:418:23 | example_closure | | +| main.rs:419:9:420:9 | enter \|...\| x | main.rs:419:10:419:10 | x | | +| main.rs:419:9:420:9 | exit \|...\| x (normal) | main.rs:419:9:420:9 | exit \|...\| x | | +| main.rs:419:10:419:10 | x | main.rs:419:10:419:10 | x | | +| main.rs:419:10:419:10 | x | main.rs:419:10:419:15 | ...: i64 | match | +| main.rs:419:10:419:15 | ...: i64 | main.rs:420:9:420:9 | x | | +| main.rs:420:9:420:9 | x | main.rs:419:9:420:9 | exit \|...\| x (normal) | | +| main.rs:421:5:422:27 | let ... = ... | main.rs:422:9:422:23 | example_closure | | +| main.rs:421:9:421:10 | n1 | main.rs:421:9:421:10 | n1 | | +| main.rs:421:9:421:10 | n1 | main.rs:423:5:423:18 | ExprStmt | match | +| main.rs:422:9:422:23 | example_closure | main.rs:422:25:422:25 | 5 | | +| main.rs:422:9:422:26 | example_closure(...) | main.rs:421:9:421:10 | n1 | | +| main.rs:422:25:422:25 | 5 | main.rs:422:9:422:26 | example_closure(...) | | +| main.rs:423:5:423:13 | print_i64 | main.rs:423:15:423:16 | n1 | | +| main.rs:423:5:423:17 | print_i64(...) | main.rs:425:5:425:25 | ExprStmt | | +| main.rs:423:5:423:18 | ExprStmt | main.rs:423:5:423:13 | print_i64 | | +| main.rs:423:15:423:16 | n1 | main.rs:423:5:423:17 | print_i64(...) | | +| main.rs:425:5:425:22 | immutable_variable | main.rs:425:5:425:24 | immutable_variable(...) | | +| main.rs:425:5:425:24 | immutable_variable(...) | main.rs:426:5:428:10 | let ... = ... | | +| main.rs:425:5:425:25 | ExprStmt | main.rs:425:5:425:22 | immutable_variable | | +| main.rs:426:5:428:10 | let ... = ... | main.rs:427:5:428:9 | \|...\| x | | +| main.rs:426:9:426:26 | immutable_variable | main.rs:426:9:426:26 | immutable_variable | | +| main.rs:426:9:426:26 | immutable_variable | main.rs:429:5:430:30 | let ... = ... | match | +| main.rs:427:5:428:9 | \|...\| x | main.rs:426:9:426:26 | immutable_variable | | +| main.rs:427:5:428:9 | enter \|...\| x | main.rs:427:6:427:6 | x | | +| main.rs:427:5:428:9 | exit \|...\| x (normal) | main.rs:427:5:428:9 | exit \|...\| x | | +| main.rs:427:6:427:6 | x | main.rs:427:6:427:6 | x | | +| main.rs:427:6:427:6 | x | main.rs:427:6:427:11 | ...: i64 | match | +| main.rs:427:6:427:11 | ...: i64 | main.rs:428:9:428:9 | x | | +| main.rs:428:9:428:9 | x | main.rs:427:5:428:9 | exit \|...\| x (normal) | | +| main.rs:429:5:430:30 | let ... = ... | main.rs:430:9:430:26 | immutable_variable | | +| main.rs:429:9:429:10 | n2 | main.rs:429:9:429:10 | n2 | | +| main.rs:429:9:429:10 | n2 | main.rs:431:5:431:18 | ExprStmt | match | +| main.rs:430:9:430:26 | immutable_variable | main.rs:430:28:430:28 | 6 | | +| main.rs:430:9:430:29 | immutable_variable(...) | main.rs:429:9:429:10 | n2 | | +| main.rs:430:28:430:28 | 6 | main.rs:430:9:430:29 | immutable_variable(...) | | +| main.rs:431:5:431:13 | print_i64 | main.rs:431:15:431:16 | n2 | | +| main.rs:431:5:431:17 | print_i64(...) | main.rs:417:23:432:1 | { ... } | | +| main.rs:431:5:431:18 | ExprStmt | main.rs:431:5:431:13 | print_i64 | | +| main.rs:431:15:431:16 | n2 | main.rs:431:5:431:17 | print_i64(...) | | +| main.rs:434:1:464:1 | enter fn nested_function | main.rs:436:5:438:10 | let ... = ... | | +| main.rs:434:1:464:1 | exit fn nested_function (normal) | main.rs:434:1:464:1 | exit fn nested_function | | +| main.rs:434:22:464:1 | { ... } | main.rs:434:1:464:1 | exit fn nested_function (normal) | | +| main.rs:436:5:438:10 | let ... = ... | main.rs:437:9:438:9 | \|...\| x | | +| main.rs:436:9:436:9 | f | main.rs:436:9:436:9 | f | | +| main.rs:436:9:436:9 | f | main.rs:439:5:439:20 | ExprStmt | match | +| main.rs:437:9:438:9 | \|...\| x | main.rs:436:9:436:9 | f | | +| main.rs:437:9:438:9 | enter \|...\| x | main.rs:437:10:437:10 | x | | +| main.rs:437:9:438:9 | exit \|...\| x (normal) | main.rs:437:9:438:9 | exit \|...\| x | | +| main.rs:437:10:437:10 | x | main.rs:437:10:437:10 | x | | +| main.rs:437:10:437:10 | x | main.rs:437:10:437:15 | ...: i64 | match | +| main.rs:437:10:437:15 | ...: i64 | main.rs:438:9:438:9 | x | | +| main.rs:438:9:438:9 | x | main.rs:437:9:438:9 | exit \|...\| x (normal) | | +| main.rs:439:5:439:13 | print_i64 | main.rs:439:15:439:15 | f | | +| main.rs:439:5:439:19 | print_i64(...) | main.rs:441:5:444:5 | fn f | | +| main.rs:439:5:439:20 | ExprStmt | main.rs:439:5:439:13 | print_i64 | | +| main.rs:439:15:439:15 | f | main.rs:439:17:439:17 | 1 | | +| main.rs:439:15:439:18 | f(...) | main.rs:439:5:439:19 | print_i64(...) | | +| main.rs:439:17:439:17 | 1 | main.rs:439:15:439:18 | f(...) | | +| main.rs:441:5:444:5 | enter fn f | main.rs:441:10:441:10 | x | | +| main.rs:441:5:444:5 | exit fn f (normal) | main.rs:441:5:444:5 | exit fn f | | +| main.rs:441:5:444:5 | fn f | main.rs:446:5:446:20 | ExprStmt | | +| main.rs:441:10:441:10 | x | main.rs:441:10:441:10 | x | | +| main.rs:441:10:441:10 | x | main.rs:441:10:441:15 | ...: i64 | match | +| main.rs:441:10:441:15 | ...: i64 | main.rs:443:9:443:9 | x | | +| main.rs:442:5:444:5 | { ... } | main.rs:441:5:444:5 | exit fn f (normal) | | +| main.rs:443:9:443:9 | x | main.rs:443:13:443:13 | 1 | | +| main.rs:443:9:443:13 | ... + ... | main.rs:442:5:444:5 | { ... } | | +| main.rs:443:13:443:13 | 1 | main.rs:443:9:443:13 | ... + ... | | +| main.rs:446:5:446:13 | print_i64 | main.rs:446:15:446:15 | f | | +| main.rs:446:5:446:19 | print_i64(...) | main.rs:449:9:449:24 | ExprStmt | | +| main.rs:446:5:446:20 | ExprStmt | main.rs:446:5:446:13 | print_i64 | | +| main.rs:446:15:446:15 | f | main.rs:446:17:446:17 | 2 | | +| main.rs:446:15:446:18 | f(...) | main.rs:446:5:446:19 | print_i64(...) | | +| main.rs:446:17:446:17 | 2 | main.rs:446:15:446:18 | f(...) | | +| main.rs:448:5:463:5 | { ... } | main.rs:434:22:464:1 | { ... } | | +| main.rs:449:9:449:17 | print_i64 | main.rs:449:19:449:19 | f | | +| main.rs:449:9:449:23 | print_i64(...) | main.rs:450:9:453:9 | fn f | | +| main.rs:449:9:449:24 | ExprStmt | main.rs:449:9:449:17 | print_i64 | | +| main.rs:449:19:449:19 | f | main.rs:449:21:449:21 | 3 | | +| main.rs:449:19:449:22 | f(...) | main.rs:449:9:449:23 | print_i64(...) | | +| main.rs:449:21:449:21 | 3 | main.rs:449:19:449:22 | f(...) | | +| main.rs:450:9:453:9 | enter fn f | main.rs:450:14:450:14 | x | | +| main.rs:450:9:453:9 | exit fn f (normal) | main.rs:450:9:453:9 | exit fn f | | +| main.rs:450:9:453:9 | fn f | main.rs:455:9:457:9 | ExprStmt | | +| main.rs:450:14:450:14 | x | main.rs:450:14:450:14 | x | | +| main.rs:450:14:450:14 | x | main.rs:450:14:450:19 | ...: i64 | match | +| main.rs:450:14:450:19 | ...: i64 | main.rs:452:13:452:13 | 2 | | +| main.rs:451:9:453:9 | { ... } | main.rs:450:9:453:9 | exit fn f (normal) | | +| main.rs:452:13:452:13 | 2 | main.rs:452:17:452:17 | x | | +| main.rs:452:13:452:17 | ... * ... | main.rs:451:9:453:9 | { ... } | | +| main.rs:452:17:452:17 | x | main.rs:452:13:452:17 | ... * ... | | +| main.rs:455:9:457:9 | ExprStmt | main.rs:456:13:456:28 | ExprStmt | | +| main.rs:455:9:457:9 | { ... } | main.rs:459:9:461:14 | let ... = ... | | +| main.rs:456:13:456:21 | print_i64 | main.rs:456:23:456:23 | f | | +| main.rs:456:13:456:27 | print_i64(...) | main.rs:455:9:457:9 | { ... } | | +| main.rs:456:13:456:28 | ExprStmt | main.rs:456:13:456:21 | print_i64 | | +| main.rs:456:23:456:23 | f | main.rs:456:25:456:25 | 4 | | +| main.rs:456:23:456:26 | f(...) | main.rs:456:13:456:27 | print_i64(...) | | +| main.rs:456:25:456:25 | 4 | main.rs:456:23:456:26 | f(...) | | +| main.rs:459:9:461:14 | let ... = ... | main.rs:460:13:461:13 | \|...\| x | | +| main.rs:459:13:459:13 | f | main.rs:459:13:459:13 | f | | +| main.rs:459:13:459:13 | f | main.rs:462:9:462:24 | ExprStmt | match | +| main.rs:460:13:461:13 | \|...\| x | main.rs:459:13:459:13 | f | | +| main.rs:460:13:461:13 | enter \|...\| x | main.rs:460:14:460:14 | x | | +| main.rs:460:13:461:13 | exit \|...\| x (normal) | main.rs:460:13:461:13 | exit \|...\| x | | +| main.rs:460:14:460:14 | x | main.rs:460:14:460:14 | x | | +| main.rs:460:14:460:14 | x | main.rs:460:14:460:19 | ...: i64 | match | +| main.rs:460:14:460:19 | ...: i64 | main.rs:461:13:461:13 | x | | +| main.rs:461:13:461:13 | x | main.rs:460:13:461:13 | exit \|...\| x (normal) | | +| main.rs:462:9:462:17 | print_i64 | main.rs:462:19:462:19 | f | | +| main.rs:462:9:462:23 | print_i64(...) | main.rs:448:5:463:5 | { ... } | | +| main.rs:462:9:462:24 | ExprStmt | main.rs:462:9:462:17 | print_i64 | | +| main.rs:462:19:462:19 | f | main.rs:462:21:462:21 | 5 | | +| main.rs:462:19:462:22 | f(...) | main.rs:462:9:462:23 | print_i64(...) | | +| main.rs:462:21:462:21 | 5 | main.rs:462:19:462:22 | f(...) | | +| main.rs:466:1:473:1 | enter fn for_variable | main.rs:467:5:467:42 | let ... = ... | | +| main.rs:466:1:473:1 | exit fn for_variable (normal) | main.rs:466:1:473:1 | exit fn for_variable | | +| main.rs:466:19:473:1 | { ... } | main.rs:466:1:473:1 | exit fn for_variable (normal) | | +| main.rs:467:5:467:42 | let ... = ... | main.rs:467:15:467:22 | "apples" | | +| main.rs:467:9:467:9 | v | main.rs:467:9:467:9 | v | | +| main.rs:467:9:467:9 | v | main.rs:470:12:470:12 | v | match | +| main.rs:467:13:467:41 | &... | main.rs:467:9:467:9 | v | | +| main.rs:467:14:467:41 | [...] | main.rs:467:13:467:41 | &... | | +| main.rs:467:15:467:22 | "apples" | main.rs:467:25:467:30 | "cake" | | +| main.rs:467:25:467:30 | "cake" | main.rs:467:33:467:40 | "coffee" | | +| main.rs:467:33:467:40 | "coffee" | main.rs:467:14:467:41 | [...] | | +| main.rs:469:5:472:5 | for ... in ... { ... } | main.rs:466:19:473:1 | { ... } | | +| main.rs:469:9:469:12 | text | main.rs:469:5:472:5 | for ... in ... { ... } | no-match | +| main.rs:469:9:469:12 | text | main.rs:469:9:469:12 | text | | +| main.rs:469:9:469:12 | text | main.rs:471:9:471:24 | ExprStmt | match | +| main.rs:470:12:470:12 | v | main.rs:469:9:469:12 | text | | +| main.rs:470:14:472:5 | { ... } | main.rs:469:9:469:12 | text | | +| main.rs:471:9:471:17 | print_str | main.rs:471:19:471:22 | text | | +| main.rs:471:9:471:23 | print_str(...) | main.rs:470:14:472:5 | { ... } | | +| main.rs:471:9:471:24 | ExprStmt | main.rs:471:9:471:17 | print_str | | +| main.rs:471:19:471:22 | text | main.rs:471:9:471:23 | print_str(...) | | +| main.rs:475:1:481:1 | enter fn add_assign | main.rs:476:5:476:18 | let ... = 0 | | +| main.rs:475:1:481:1 | exit fn add_assign (normal) | main.rs:475:1:481:1 | exit fn add_assign | | +| main.rs:475:17:481:1 | { ... } | main.rs:475:1:481:1 | exit fn add_assign (normal) | | +| main.rs:476:5:476:18 | let ... = 0 | main.rs:476:17:476:17 | 0 | | +| main.rs:476:9:476:13 | mut a | main.rs:477:5:477:11 | ExprStmt | match | +| main.rs:476:13:476:13 | a | main.rs:476:9:476:13 | mut a | | +| main.rs:476:17:476:17 | 0 | main.rs:476:13:476:13 | a | | +| main.rs:477:5:477:5 | a | main.rs:477:10:477:10 | 1 | | +| main.rs:477:5:477:10 | ... += ... | main.rs:478:5:478:17 | ExprStmt | | +| main.rs:477:5:477:11 | ExprStmt | main.rs:477:5:477:5 | a | | +| main.rs:477:10:477:10 | 1 | main.rs:477:5:477:10 | ... += ... | | | main.rs:478:5:478:13 | print_i64 | main.rs:478:15:478:15 | a | | -| main.rs:478:5:478:16 | print_i64(...) | main.rs:473:17:479:1 | { ... } | | +| main.rs:478:5:478:16 | print_i64(...) | main.rs:479:5:479:28 | ExprStmt | | | main.rs:478:5:478:17 | ExprStmt | main.rs:478:5:478:13 | print_i64 | | | main.rs:478:15:478:15 | a | main.rs:478:5:478:16 | print_i64(...) | | -| main.rs:481:1:487:1 | enter fn mutate | main.rs:482:5:482:18 | let ... = 1 | | -| main.rs:481:1:487:1 | exit fn mutate (normal) | main.rs:481:1:487:1 | exit fn mutate | | -| main.rs:481:13:487:1 | { ... } | main.rs:481:1:487:1 | exit fn mutate (normal) | | -| main.rs:482:5:482:18 | let ... = 1 | main.rs:482:17:482:17 | 1 | | -| main.rs:482:9:482:13 | mut i | main.rs:483:5:484:15 | let ... = ... | match | -| main.rs:482:13:482:13 | i | main.rs:482:9:482:13 | mut i | | -| main.rs:482:17:482:17 | 1 | main.rs:482:13:482:13 | i | | -| main.rs:483:5:484:15 | let ... = ... | main.rs:484:14:484:14 | i | | -| main.rs:483:9:483:13 | ref_i | main.rs:483:9:483:13 | ref_i | | -| main.rs:483:9:483:13 | ref_i | main.rs:485:5:485:15 | ExprStmt | match | -| main.rs:484:9:484:14 | &mut i | main.rs:483:9:483:13 | ref_i | | -| main.rs:484:14:484:14 | i | main.rs:484:9:484:14 | &mut i | | -| main.rs:485:5:485:10 | * ... | main.rs:485:14:485:14 | 2 | | -| main.rs:485:5:485:14 | ... = ... | main.rs:486:5:486:17 | ExprStmt | | -| main.rs:485:5:485:15 | ExprStmt | main.rs:485:6:485:10 | ref_i | | -| main.rs:485:6:485:10 | ref_i | main.rs:485:5:485:10 | * ... | | -| main.rs:485:14:485:14 | 2 | main.rs:485:5:485:14 | ... = ... | | -| main.rs:486:5:486:13 | print_i64 | main.rs:486:15:486:15 | i | | -| main.rs:486:5:486:16 | print_i64(...) | main.rs:481:13:487:1 | { ... } | | -| main.rs:486:5:486:17 | ExprStmt | main.rs:486:5:486:13 | print_i64 | | -| main.rs:486:15:486:15 | i | main.rs:486:5:486:16 | print_i64(...) | | -| main.rs:489:1:494:1 | enter fn mutate_param | main.rs:489:17:489:17 | x | | -| main.rs:489:1:494:1 | exit fn mutate_param (normal) | main.rs:489:1:494:1 | exit fn mutate_param | | -| main.rs:489:17:489:17 | x | main.rs:489:17:489:17 | x | | -| main.rs:489:17:489:17 | x | main.rs:489:17:489:27 | ...: ... | match | -| main.rs:489:17:489:27 | ...: ... | main.rs:490:5:492:11 | ExprStmt | | -| main.rs:490:5:490:6 | * ... | main.rs:491:10:491:10 | x | | -| main.rs:490:5:492:10 | ... = ... | main.rs:493:5:493:13 | ExprStmt | | -| main.rs:490:5:492:11 | ExprStmt | main.rs:490:6:490:6 | x | | -| main.rs:490:6:490:6 | x | main.rs:490:5:490:6 | * ... | | -| main.rs:491:9:491:10 | * ... | main.rs:492:10:492:10 | x | | -| main.rs:491:9:492:10 | ... + ... | main.rs:490:5:492:10 | ... = ... | | -| main.rs:491:10:491:10 | x | main.rs:491:9:491:10 | * ... | | -| main.rs:492:9:492:10 | * ... | main.rs:491:9:492:10 | ... + ... | | -| main.rs:492:10:492:10 | x | main.rs:492:9:492:10 | * ... | | -| main.rs:493:5:493:12 | return x | main.rs:489:1:494:1 | exit fn mutate_param (normal) | return | -| main.rs:493:5:493:13 | ExprStmt | main.rs:493:12:493:12 | x | | -| main.rs:493:12:493:12 | x | main.rs:493:5:493:12 | return x | | -| main.rs:496:1:502:1 | enter fn mutate_param2 | main.rs:496:22:496:22 | x | | -| main.rs:496:1:502:1 | exit fn mutate_param2 (normal) | main.rs:496:1:502:1 | exit fn mutate_param2 | | -| main.rs:496:22:496:22 | x | main.rs:496:22:496:22 | x | | -| main.rs:496:22:496:22 | x | main.rs:496:22:496:35 | ...: ... | match | -| main.rs:496:22:496:35 | ...: ... | main.rs:496:38:496:38 | y | | -| main.rs:496:38:496:38 | y | main.rs:496:38:496:38 | y | | -| main.rs:496:38:496:38 | y | main.rs:496:38:496:56 | ...: ... | match | -| main.rs:496:38:496:56 | ...: ... | main.rs:497:5:499:11 | ExprStmt | | -| main.rs:496:59:502:1 | { ... } | main.rs:496:1:502:1 | exit fn mutate_param2 (normal) | | -| main.rs:497:5:497:6 | * ... | main.rs:498:10:498:10 | x | | -| main.rs:497:5:499:10 | ... = ... | main.rs:500:5:501:10 | ExprStmt | | -| main.rs:497:5:499:11 | ExprStmt | main.rs:497:6:497:6 | x | | -| main.rs:497:6:497:6 | x | main.rs:497:5:497:6 | * ... | | -| main.rs:498:9:498:10 | * ... | main.rs:499:10:499:10 | x | | -| main.rs:498:9:499:10 | ... + ... | main.rs:497:5:499:10 | ... = ... | | -| main.rs:498:10:498:10 | x | main.rs:498:9:498:10 | * ... | | -| main.rs:499:9:499:10 | * ... | main.rs:498:9:499:10 | ... + ... | | -| main.rs:499:10:499:10 | x | main.rs:499:9:499:10 | * ... | | -| main.rs:500:5:500:6 | * ... | main.rs:501:9:501:9 | x | | -| main.rs:500:5:501:9 | ... = ... | main.rs:496:59:502:1 | { ... } | | -| main.rs:500:5:501:10 | ExprStmt | main.rs:500:6:500:6 | y | | -| main.rs:500:6:500:6 | y | main.rs:500:5:500:6 | * ... | | -| main.rs:501:9:501:9 | x | main.rs:500:5:501:9 | ... = ... | | -| main.rs:504:1:524:1 | enter fn mutate_arg | main.rs:505:5:505:18 | let ... = 2 | | -| main.rs:504:1:524:1 | exit fn mutate_arg (normal) | main.rs:504:1:524:1 | exit fn mutate_arg | | -| main.rs:504:17:524:1 | { ... } | main.rs:504:1:524:1 | exit fn mutate_arg (normal) | | -| main.rs:505:5:505:18 | let ... = 2 | main.rs:505:17:505:17 | 2 | | -| main.rs:505:9:505:13 | mut x | main.rs:506:5:507:29 | let ... = ... | match | -| main.rs:505:13:505:13 | x | main.rs:505:9:505:13 | mut x | | -| main.rs:505:17:505:17 | 2 | main.rs:505:13:505:13 | x | | -| main.rs:506:5:507:29 | let ... = ... | main.rs:507:9:507:20 | mutate_param | | -| main.rs:506:9:506:9 | y | main.rs:506:9:506:9 | y | | -| main.rs:506:9:506:9 | y | main.rs:508:5:508:12 | ExprStmt | match | -| main.rs:507:9:507:20 | mutate_param | main.rs:507:27:507:27 | x | | -| main.rs:507:9:507:28 | mutate_param(...) | main.rs:506:9:506:9 | y | | -| main.rs:507:22:507:27 | &mut x | main.rs:507:9:507:28 | mutate_param(...) | | -| main.rs:507:27:507:27 | x | main.rs:507:22:507:27 | &mut x | | -| main.rs:508:5:508:6 | * ... | main.rs:508:10:508:11 | 10 | | -| main.rs:508:5:508:11 | ... = ... | main.rs:511:5:511:17 | ExprStmt | | -| main.rs:508:5:508:12 | ExprStmt | main.rs:508:6:508:6 | y | | -| main.rs:508:6:508:6 | y | main.rs:508:5:508:6 | * ... | | -| main.rs:508:10:508:11 | 10 | main.rs:508:5:508:11 | ... = ... | | -| main.rs:511:5:511:13 | print_i64 | main.rs:511:15:511:15 | x | | -| main.rs:511:5:511:16 | print_i64(...) | main.rs:513:5:513:18 | let ... = 4 | | -| main.rs:511:5:511:17 | ExprStmt | main.rs:511:5:511:13 | print_i64 | | -| main.rs:511:15:511:15 | x | main.rs:511:5:511:16 | print_i64(...) | | -| main.rs:513:5:513:18 | let ... = 4 | main.rs:513:17:513:17 | 4 | | -| main.rs:513:9:513:13 | mut z | main.rs:514:5:515:20 | let ... = ... | match | -| main.rs:513:13:513:13 | z | main.rs:513:9:513:13 | mut z | | -| main.rs:513:17:513:17 | 4 | main.rs:513:13:513:13 | z | | -| main.rs:514:5:515:20 | let ... = ... | main.rs:515:19:515:19 | x | | -| main.rs:514:9:514:9 | w | main.rs:514:9:514:9 | w | | -| main.rs:514:9:514:9 | w | main.rs:516:5:519:6 | ExprStmt | match | -| main.rs:515:9:515:19 | &mut ... | main.rs:514:9:514:9 | w | | -| main.rs:515:14:515:19 | &mut x | main.rs:515:9:515:19 | &mut ... | | -| main.rs:515:19:515:19 | x | main.rs:515:14:515:19 | &mut x | | -| main.rs:516:5:516:17 | mutate_param2 | main.rs:517:14:517:14 | z | | -| main.rs:516:5:519:5 | mutate_param2(...) | main.rs:520:5:520:13 | ExprStmt | | -| main.rs:516:5:519:6 | ExprStmt | main.rs:516:5:516:17 | mutate_param2 | | -| main.rs:517:9:517:14 | &mut z | main.rs:518:9:518:9 | w | | -| main.rs:517:14:517:14 | z | main.rs:517:9:517:14 | &mut z | | -| main.rs:518:9:518:9 | w | main.rs:516:5:519:5 | mutate_param2(...) | | -| main.rs:520:5:520:7 | * ... | main.rs:520:11:520:12 | 11 | | -| main.rs:520:5:520:12 | ... = ... | main.rs:523:5:523:17 | ExprStmt | | -| main.rs:520:5:520:13 | ExprStmt | main.rs:520:7:520:7 | w | | -| main.rs:520:6:520:7 | * ... | main.rs:520:5:520:7 | * ... | | -| main.rs:520:7:520:7 | w | main.rs:520:6:520:7 | * ... | | -| main.rs:520:11:520:12 | 11 | main.rs:520:5:520:12 | ... = ... | | -| main.rs:523:5:523:13 | print_i64 | main.rs:523:15:523:15 | z | | -| main.rs:523:5:523:16 | print_i64(...) | main.rs:504:17:524:1 | { ... } | | -| main.rs:523:5:523:17 | ExprStmt | main.rs:523:5:523:13 | print_i64 | | -| main.rs:523:15:523:15 | z | main.rs:523:5:523:16 | print_i64(...) | | -| main.rs:526:1:532:1 | enter fn alias | main.rs:527:5:527:18 | let ... = 1 | | -| main.rs:526:1:532:1 | exit fn alias (normal) | main.rs:526:1:532:1 | exit fn alias | | -| main.rs:526:12:532:1 | { ... } | main.rs:526:1:532:1 | exit fn alias (normal) | | -| main.rs:527:5:527:18 | let ... = 1 | main.rs:527:17:527:17 | 1 | | -| main.rs:527:9:527:13 | mut x | main.rs:528:5:529:15 | let ... = ... | match | -| main.rs:527:13:527:13 | x | main.rs:527:9:527:13 | mut x | | -| main.rs:527:17:527:17 | 1 | main.rs:527:13:527:13 | x | | -| main.rs:528:5:529:15 | let ... = ... | main.rs:529:14:529:14 | x | | -| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | | -| main.rs:528:9:528:9 | y | main.rs:530:5:530:11 | ExprStmt | match | -| main.rs:529:9:529:14 | &mut x | main.rs:528:9:528:9 | y | | -| main.rs:529:14:529:14 | x | main.rs:529:9:529:14 | &mut x | | -| main.rs:530:5:530:6 | * ... | main.rs:530:10:530:10 | 2 | | -| main.rs:530:5:530:10 | ... = ... | main.rs:531:5:531:17 | ExprStmt | | -| main.rs:530:5:530:11 | ExprStmt | main.rs:530:6:530:6 | y | | -| main.rs:530:6:530:6 | y | main.rs:530:5:530:6 | * ... | | -| main.rs:530:10:530:10 | 2 | main.rs:530:5:530:10 | ... = ... | | -| main.rs:531:5:531:13 | print_i64 | main.rs:531:15:531:15 | x | | -| main.rs:531:5:531:16 | print_i64(...) | main.rs:526:12:532:1 | { ... } | | -| main.rs:531:5:531:17 | ExprStmt | main.rs:531:5:531:13 | print_i64 | | -| main.rs:531:15:531:15 | x | main.rs:531:5:531:16 | print_i64(...) | | -| main.rs:534:1:543:1 | enter fn capture_immut | main.rs:535:5:535:16 | let ... = 100 | | -| main.rs:534:1:543:1 | exit fn capture_immut (normal) | main.rs:534:1:543:1 | exit fn capture_immut | | -| main.rs:534:20:543:1 | { ... } | main.rs:534:1:543:1 | exit fn capture_immut (normal) | | -| main.rs:535:5:535:16 | let ... = 100 | main.rs:535:13:535:15 | 100 | | -| main.rs:535:9:535:9 | x | main.rs:535:9:535:9 | x | | -| main.rs:535:9:535:9 | x | main.rs:538:5:540:6 | let ... = ... | match | -| main.rs:535:13:535:15 | 100 | main.rs:535:9:535:9 | x | | -| main.rs:538:5:540:6 | let ... = ... | main.rs:538:15:540:5 | \|...\| ... | | -| main.rs:538:9:538:11 | cap | main.rs:538:9:538:11 | cap | | -| main.rs:538:9:538:11 | cap | main.rs:541:5:541:10 | ExprStmt | match | -| main.rs:538:15:540:5 | \|...\| ... | main.rs:538:9:538:11 | cap | | -| main.rs:538:15:540:5 | enter \|...\| ... | main.rs:539:9:539:21 | ExprStmt | | -| main.rs:538:15:540:5 | exit \|...\| ... (normal) | main.rs:538:15:540:5 | exit \|...\| ... | | -| main.rs:538:18:540:5 | { ... } | main.rs:538:15:540:5 | exit \|...\| ... (normal) | | -| main.rs:539:9:539:17 | print_i64 | main.rs:539:19:539:19 | x | | -| main.rs:539:9:539:20 | print_i64(...) | main.rs:538:18:540:5 | { ... } | | -| main.rs:539:9:539:21 | ExprStmt | main.rs:539:9:539:17 | print_i64 | | -| main.rs:539:19:539:19 | x | main.rs:539:9:539:20 | print_i64(...) | | -| main.rs:541:5:541:7 | cap | main.rs:541:5:541:9 | cap(...) | | -| main.rs:541:5:541:9 | cap(...) | main.rs:542:5:542:17 | ExprStmt | | -| main.rs:541:5:541:10 | ExprStmt | main.rs:541:5:541:7 | cap | | -| main.rs:542:5:542:13 | print_i64 | main.rs:542:15:542:15 | x | | -| main.rs:542:5:542:16 | print_i64(...) | main.rs:534:20:543:1 | { ... } | | -| main.rs:542:5:542:17 | ExprStmt | main.rs:542:5:542:13 | print_i64 | | -| main.rs:542:15:542:15 | x | main.rs:542:5:542:16 | print_i64(...) | | -| main.rs:545:1:572:1 | enter fn capture_mut | main.rs:546:5:546:18 | let ... = 1 | | -| main.rs:545:1:572:1 | exit fn capture_mut (normal) | main.rs:545:1:572:1 | exit fn capture_mut | | -| main.rs:545:18:572:1 | { ... } | main.rs:545:1:572:1 | exit fn capture_mut (normal) | | -| main.rs:546:5:546:18 | let ... = 1 | main.rs:546:17:546:17 | 1 | | -| main.rs:546:9:546:13 | mut x | main.rs:549:5:551:6 | let ... = ... | match | -| main.rs:546:13:546:13 | x | main.rs:546:9:546:13 | mut x | | -| main.rs:546:17:546:17 | 1 | main.rs:546:13:546:13 | x | | -| main.rs:549:5:551:6 | let ... = ... | main.rs:549:20:551:5 | \|...\| ... | | -| main.rs:549:9:549:16 | closure1 | main.rs:549:9:549:16 | closure1 | | -| main.rs:549:9:549:16 | closure1 | main.rs:552:5:552:15 | ExprStmt | match | -| main.rs:549:20:551:5 | \|...\| ... | main.rs:549:9:549:16 | closure1 | | -| main.rs:549:20:551:5 | enter \|...\| ... | main.rs:550:9:550:21 | ExprStmt | | -| main.rs:549:20:551:5 | exit \|...\| ... (normal) | main.rs:549:20:551:5 | exit \|...\| ... | | -| main.rs:549:23:551:5 | { ... } | main.rs:549:20:551:5 | exit \|...\| ... (normal) | | -| main.rs:550:9:550:17 | print_i64 | main.rs:550:19:550:19 | x | | -| main.rs:550:9:550:20 | print_i64(...) | main.rs:549:23:551:5 | { ... } | | -| main.rs:550:9:550:21 | ExprStmt | main.rs:550:9:550:17 | print_i64 | | -| main.rs:550:19:550:19 | x | main.rs:550:9:550:20 | print_i64(...) | | -| main.rs:552:5:552:12 | closure1 | main.rs:552:5:552:14 | closure1(...) | | -| main.rs:552:5:552:14 | closure1(...) | main.rs:553:5:553:17 | ExprStmt | | -| main.rs:552:5:552:15 | ExprStmt | main.rs:552:5:552:12 | closure1 | | -| main.rs:553:5:553:13 | print_i64 | main.rs:553:15:553:15 | x | | -| main.rs:553:5:553:16 | print_i64(...) | main.rs:555:5:555:18 | let ... = 2 | | -| main.rs:553:5:553:17 | ExprStmt | main.rs:553:5:553:13 | print_i64 | | -| main.rs:553:15:553:15 | x | main.rs:553:5:553:16 | print_i64(...) | | -| main.rs:555:5:555:18 | let ... = 2 | main.rs:555:17:555:17 | 2 | | -| main.rs:555:9:555:13 | mut y | main.rs:558:5:560:6 | let ... = ... | match | -| main.rs:555:13:555:13 | y | main.rs:555:9:555:13 | mut y | | -| main.rs:555:17:555:17 | 2 | main.rs:555:13:555:13 | y | | -| main.rs:558:5:560:6 | let ... = ... | main.rs:558:24:560:5 | \|...\| ... | | -| main.rs:558:9:558:20 | mut closure2 | main.rs:561:5:561:15 | ExprStmt | match | -| main.rs:558:13:558:20 | closure2 | main.rs:558:9:558:20 | mut closure2 | | -| main.rs:558:24:560:5 | \|...\| ... | main.rs:558:13:558:20 | closure2 | | -| main.rs:558:24:560:5 | enter \|...\| ... | main.rs:559:9:559:14 | ExprStmt | | -| main.rs:558:24:560:5 | exit \|...\| ... (normal) | main.rs:558:24:560:5 | exit \|...\| ... | | -| main.rs:558:27:560:5 | { ... } | main.rs:558:24:560:5 | exit \|...\| ... (normal) | | -| main.rs:559:9:559:9 | y | main.rs:559:13:559:13 | 3 | | -| main.rs:559:9:559:13 | ... = ... | main.rs:558:27:560:5 | { ... } | | -| main.rs:559:9:559:14 | ExprStmt | main.rs:559:9:559:9 | y | | -| main.rs:559:13:559:13 | 3 | main.rs:559:9:559:13 | ... = ... | | -| main.rs:561:5:561:12 | closure2 | main.rs:561:5:561:14 | closure2(...) | | -| main.rs:561:5:561:14 | closure2(...) | main.rs:562:5:562:17 | ExprStmt | | -| main.rs:561:5:561:15 | ExprStmt | main.rs:561:5:561:12 | closure2 | | -| main.rs:562:5:562:13 | print_i64 | main.rs:562:15:562:15 | y | | -| main.rs:562:5:562:16 | print_i64(...) | main.rs:564:5:564:18 | let ... = 2 | | -| main.rs:562:5:562:17 | ExprStmt | main.rs:562:5:562:13 | print_i64 | | -| main.rs:562:15:562:15 | y | main.rs:562:5:562:16 | print_i64(...) | | -| main.rs:564:5:564:18 | let ... = 2 | main.rs:564:17:564:17 | 2 | | -| main.rs:564:9:564:13 | mut z | main.rs:567:5:569:6 | let ... = ... | match | -| main.rs:564:13:564:13 | z | main.rs:564:9:564:13 | mut z | | -| main.rs:564:17:564:17 | 2 | main.rs:564:13:564:13 | z | | -| main.rs:567:5:569:6 | let ... = ... | main.rs:567:24:569:5 | \|...\| ... | | -| main.rs:567:9:567:20 | mut closure3 | main.rs:570:5:570:15 | ExprStmt | match | -| main.rs:567:13:567:20 | closure3 | main.rs:567:9:567:20 | mut closure3 | | -| main.rs:567:24:569:5 | \|...\| ... | main.rs:567:13:567:20 | closure3 | | -| main.rs:567:24:569:5 | enter \|...\| ... | main.rs:568:9:568:24 | ExprStmt | | -| main.rs:567:24:569:5 | exit \|...\| ... (normal) | main.rs:567:24:569:5 | exit \|...\| ... | | -| main.rs:567:27:569:5 | { ... } | main.rs:567:24:569:5 | exit \|...\| ... (normal) | | -| main.rs:568:9:568:9 | z | main.rs:568:22:568:22 | 1 | | -| main.rs:568:9:568:23 | z.add_assign(...) | main.rs:567:27:569:5 | { ... } | | -| main.rs:568:9:568:24 | ExprStmt | main.rs:568:9:568:9 | z | | -| main.rs:568:22:568:22 | 1 | main.rs:568:9:568:23 | z.add_assign(...) | | -| main.rs:570:5:570:12 | closure3 | main.rs:570:5:570:14 | closure3(...) | | -| main.rs:570:5:570:14 | closure3(...) | main.rs:571:5:571:17 | ExprStmt | | -| main.rs:570:5:570:15 | ExprStmt | main.rs:570:5:570:12 | closure3 | | -| main.rs:571:5:571:13 | print_i64 | main.rs:571:15:571:15 | z | | -| main.rs:571:5:571:16 | print_i64(...) | main.rs:545:18:572:1 | { ... } | | -| main.rs:571:5:571:17 | ExprStmt | main.rs:571:5:571:13 | print_i64 | | -| main.rs:571:15:571:15 | z | main.rs:571:5:571:16 | print_i64(...) | | -| main.rs:574:1:582:1 | enter fn async_block_capture | main.rs:575:5:575:23 | let ... = 0 | | -| main.rs:574:1:582:1 | exit fn async_block_capture (normal) | main.rs:574:1:582:1 | exit fn async_block_capture | | -| main.rs:574:32:582:1 | { ... } | main.rs:574:1:582:1 | exit fn async_block_capture (normal) | | -| main.rs:575:5:575:23 | let ... = 0 | main.rs:575:22:575:22 | 0 | | -| main.rs:575:9:575:13 | mut i | main.rs:576:5:578:6 | let ... = ... | match | -| main.rs:575:13:575:13 | i | main.rs:575:9:575:13 | mut i | | -| main.rs:575:22:575:22 | 0 | main.rs:575:13:575:13 | i | | -| main.rs:576:5:578:6 | let ... = ... | main.rs:576:17:578:5 | { ... } | | -| main.rs:576:9:576:13 | block | main.rs:576:9:576:13 | block | | -| main.rs:576:9:576:13 | block | main.rs:580:5:580:16 | ExprStmt | match | -| main.rs:576:17:578:5 | enter { ... } | main.rs:577:9:577:14 | ExprStmt | | -| main.rs:576:17:578:5 | exit { ... } (normal) | main.rs:576:17:578:5 | exit { ... } | | -| main.rs:576:17:578:5 | { ... } | main.rs:576:9:576:13 | block | | -| main.rs:577:9:577:9 | i | main.rs:577:13:577:13 | 1 | | -| main.rs:577:9:577:13 | ... = ... | main.rs:576:17:578:5 | exit { ... } (normal) | | -| main.rs:577:9:577:14 | ExprStmt | main.rs:577:9:577:9 | i | | -| main.rs:577:13:577:13 | 1 | main.rs:577:9:577:13 | ... = ... | | -| main.rs:580:5:580:9 | block | main.rs:580:5:580:15 | await block | | -| main.rs:580:5:580:15 | await block | main.rs:581:5:581:17 | ExprStmt | | -| main.rs:580:5:580:16 | ExprStmt | main.rs:580:5:580:9 | block | | -| main.rs:581:5:581:13 | print_i64 | main.rs:581:15:581:15 | i | | -| main.rs:581:5:581:16 | print_i64(...) | main.rs:574:32:582:1 | { ... } | | -| main.rs:581:5:581:17 | ExprStmt | main.rs:581:5:581:13 | print_i64 | | -| main.rs:581:15:581:15 | i | main.rs:581:5:581:16 | print_i64(...) | | -| main.rs:584:1:600:1 | enter fn phi | main.rs:584:8:584:8 | b | | -| main.rs:584:1:600:1 | exit fn phi (normal) | main.rs:584:1:600:1 | exit fn phi | | -| main.rs:584:8:584:8 | b | main.rs:584:8:584:8 | b | | -| main.rs:584:8:584:8 | b | main.rs:584:8:584:14 | ...: bool | match | -| main.rs:584:8:584:14 | ...: bool | main.rs:585:5:585:18 | let ... = 1 | | -| main.rs:584:17:600:1 | { ... } | main.rs:584:1:600:1 | exit fn phi (normal) | | -| main.rs:585:5:585:18 | let ... = 1 | main.rs:585:17:585:17 | 1 | | -| main.rs:585:9:585:13 | mut x | main.rs:586:5:586:17 | ExprStmt | match | -| main.rs:585:13:585:13 | x | main.rs:585:9:585:13 | mut x | | -| main.rs:585:17:585:17 | 1 | main.rs:585:13:585:13 | x | | -| main.rs:586:5:586:13 | print_i64 | main.rs:586:15:586:15 | x | | -| main.rs:586:5:586:16 | print_i64(...) | main.rs:587:5:587:21 | ExprStmt | | -| main.rs:586:5:586:17 | ExprStmt | main.rs:586:5:586:13 | print_i64 | | -| main.rs:586:15:586:15 | x | main.rs:586:5:586:16 | print_i64(...) | | -| main.rs:587:5:587:13 | print_i64 | main.rs:587:15:587:15 | x | | -| main.rs:587:5:587:20 | print_i64(...) | main.rs:588:5:598:6 | let _ = ... | | -| main.rs:587:5:587:21 | ExprStmt | main.rs:587:5:587:13 | print_i64 | | -| main.rs:587:15:587:15 | x | main.rs:587:19:587:19 | 1 | | -| main.rs:587:15:587:19 | ... + ... | main.rs:587:5:587:20 | print_i64(...) | | -| main.rs:587:19:587:19 | 1 | main.rs:587:15:587:19 | ... + ... | | -| main.rs:588:5:598:6 | let _ = ... | main.rs:589:16:589:16 | b | | -| main.rs:589:9:589:9 | _ | main.rs:599:5:599:17 | ExprStmt | match | -| main.rs:589:13:598:5 | if b {...} else {...} | main.rs:589:9:589:9 | _ | | -| main.rs:589:16:589:16 | b | main.rs:591:9:591:14 | ExprStmt | true | -| main.rs:589:16:589:16 | b | main.rs:595:9:595:14 | ExprStmt | false | -| main.rs:590:5:594:5 | { ... } | main.rs:589:13:598:5 | if b {...} else {...} | | -| main.rs:591:9:591:9 | x | main.rs:591:13:591:13 | 2 | | -| main.rs:591:9:591:13 | ... = ... | main.rs:592:9:592:21 | ExprStmt | | -| main.rs:591:9:591:14 | ExprStmt | main.rs:591:9:591:9 | x | | -| main.rs:591:13:591:13 | 2 | main.rs:591:9:591:13 | ... = ... | | -| main.rs:592:9:592:17 | print_i64 | main.rs:592:19:592:19 | x | | -| main.rs:592:9:592:20 | print_i64(...) | main.rs:593:9:593:25 | ExprStmt | | -| main.rs:592:9:592:21 | ExprStmt | main.rs:592:9:592:17 | print_i64 | | -| main.rs:592:19:592:19 | x | main.rs:592:9:592:20 | print_i64(...) | | -| main.rs:593:9:593:17 | print_i64 | main.rs:593:19:593:19 | x | | -| main.rs:593:9:593:24 | print_i64(...) | main.rs:590:5:594:5 | { ... } | | -| main.rs:593:9:593:25 | ExprStmt | main.rs:593:9:593:17 | print_i64 | | -| main.rs:593:19:593:19 | x | main.rs:593:23:593:23 | 1 | | -| main.rs:593:19:593:23 | ... + ... | main.rs:593:9:593:24 | print_i64(...) | | -| main.rs:593:23:593:23 | 1 | main.rs:593:19:593:23 | ... + ... | | -| main.rs:594:12:598:5 | { ... } | main.rs:589:13:598:5 | if b {...} else {...} | | -| main.rs:595:9:595:9 | x | main.rs:595:13:595:13 | 3 | | -| main.rs:595:9:595:13 | ... = ... | main.rs:596:9:596:21 | ExprStmt | | -| main.rs:595:9:595:14 | ExprStmt | main.rs:595:9:595:9 | x | | -| main.rs:595:13:595:13 | 3 | main.rs:595:9:595:13 | ... = ... | | -| main.rs:596:9:596:17 | print_i64 | main.rs:596:19:596:19 | x | | -| main.rs:596:9:596:20 | print_i64(...) | main.rs:597:9:597:25 | ExprStmt | | -| main.rs:596:9:596:21 | ExprStmt | main.rs:596:9:596:17 | print_i64 | | -| main.rs:596:19:596:19 | x | main.rs:596:9:596:20 | print_i64(...) | | -| main.rs:597:9:597:17 | print_i64 | main.rs:597:19:597:19 | x | | -| main.rs:597:9:597:24 | print_i64(...) | main.rs:594:12:598:5 | { ... } | | -| main.rs:597:9:597:25 | ExprStmt | main.rs:597:9:597:17 | print_i64 | | -| main.rs:597:19:597:19 | x | main.rs:597:23:597:23 | 1 | | -| main.rs:597:19:597:23 | ... + ... | main.rs:597:9:597:24 | print_i64(...) | | -| main.rs:597:23:597:23 | 1 | main.rs:597:19:597:23 | ... + ... | | -| main.rs:599:5:599:13 | print_i64 | main.rs:599:15:599:15 | x | | -| main.rs:599:5:599:16 | print_i64(...) | main.rs:584:17:600:1 | { ... } | | -| main.rs:599:5:599:17 | ExprStmt | main.rs:599:5:599:13 | print_i64 | | -| main.rs:599:15:599:15 | x | main.rs:599:5:599:16 | print_i64(...) | | -| main.rs:602:1:619:1 | enter fn phi_read | main.rs:602:13:602:14 | b1 | | -| main.rs:602:1:619:1 | exit fn phi_read (normal) | main.rs:602:1:619:1 | exit fn phi_read | | -| main.rs:602:13:602:14 | b1 | main.rs:602:13:602:14 | b1 | | -| main.rs:602:13:602:14 | b1 | main.rs:602:13:602:20 | ...: bool | match | -| main.rs:602:13:602:20 | ...: bool | main.rs:602:23:602:24 | b2 | | -| main.rs:602:23:602:24 | b2 | main.rs:602:23:602:24 | b2 | | -| main.rs:602:23:602:24 | b2 | main.rs:602:23:602:30 | ...: bool | match | -| main.rs:602:23:602:30 | ...: bool | main.rs:603:5:603:14 | let ... = 1 | | -| main.rs:602:33:619:1 | { ... } | main.rs:602:1:619:1 | exit fn phi_read (normal) | | -| main.rs:603:5:603:14 | let ... = 1 | main.rs:603:13:603:13 | 1 | | -| main.rs:603:9:603:9 | x | main.rs:603:9:603:9 | x | | -| main.rs:603:9:603:9 | x | main.rs:604:5:610:6 | let _ = ... | match | -| main.rs:603:13:603:13 | 1 | main.rs:603:9:603:9 | x | | -| main.rs:604:5:610:6 | let _ = ... | main.rs:605:16:605:17 | b1 | | -| main.rs:605:9:605:9 | _ | main.rs:612:5:618:6 | let _ = ... | match | -| main.rs:605:13:610:5 | if b1 {...} else {...} | main.rs:605:9:605:9 | _ | | -| main.rs:605:16:605:17 | b1 | main.rs:607:9:607:21 | ExprStmt | true | -| main.rs:605:16:605:17 | b1 | main.rs:609:9:609:21 | ExprStmt | false | -| main.rs:606:5:608:5 | { ... } | main.rs:605:13:610:5 | if b1 {...} else {...} | | -| main.rs:607:9:607:17 | print_i64 | main.rs:607:19:607:19 | x | | -| main.rs:607:9:607:20 | print_i64(...) | main.rs:606:5:608:5 | { ... } | | -| main.rs:607:9:607:21 | ExprStmt | main.rs:607:9:607:17 | print_i64 | | -| main.rs:607:19:607:19 | x | main.rs:607:9:607:20 | print_i64(...) | | -| main.rs:608:12:610:5 | { ... } | main.rs:605:13:610:5 | if b1 {...} else {...} | | +| main.rs:479:5:479:27 | ... .add_assign(...) | main.rs:480:5:480:17 | ExprStmt | | +| main.rs:479:5:479:28 | ExprStmt | main.rs:479:11:479:11 | a | | +| main.rs:479:6:479:11 | &mut a | main.rs:479:25:479:26 | 10 | | +| main.rs:479:11:479:11 | a | main.rs:479:6:479:11 | &mut a | | +| main.rs:479:25:479:26 | 10 | main.rs:479:5:479:27 | ... .add_assign(...) | | +| main.rs:480:5:480:13 | print_i64 | main.rs:480:15:480:15 | a | | +| main.rs:480:5:480:16 | print_i64(...) | main.rs:475:17:481:1 | { ... } | | +| main.rs:480:5:480:17 | ExprStmt | main.rs:480:5:480:13 | print_i64 | | +| main.rs:480:15:480:15 | a | main.rs:480:5:480:16 | print_i64(...) | | +| main.rs:483:1:489:1 | enter fn mutate | main.rs:484:5:484:18 | let ... = 1 | | +| main.rs:483:1:489:1 | exit fn mutate (normal) | main.rs:483:1:489:1 | exit fn mutate | | +| main.rs:483:13:489:1 | { ... } | main.rs:483:1:489:1 | exit fn mutate (normal) | | +| main.rs:484:5:484:18 | let ... = 1 | main.rs:484:17:484:17 | 1 | | +| main.rs:484:9:484:13 | mut i | main.rs:485:5:486:15 | let ... = ... | match | +| main.rs:484:13:484:13 | i | main.rs:484:9:484:13 | mut i | | +| main.rs:484:17:484:17 | 1 | main.rs:484:13:484:13 | i | | +| main.rs:485:5:486:15 | let ... = ... | main.rs:486:14:486:14 | i | | +| main.rs:485:9:485:13 | ref_i | main.rs:485:9:485:13 | ref_i | | +| main.rs:485:9:485:13 | ref_i | main.rs:487:5:487:15 | ExprStmt | match | +| main.rs:486:9:486:14 | &mut i | main.rs:485:9:485:13 | ref_i | | +| main.rs:486:14:486:14 | i | main.rs:486:9:486:14 | &mut i | | +| main.rs:487:5:487:10 | * ... | main.rs:487:14:487:14 | 2 | | +| main.rs:487:5:487:14 | ... = ... | main.rs:488:5:488:17 | ExprStmt | | +| main.rs:487:5:487:15 | ExprStmt | main.rs:487:6:487:10 | ref_i | | +| main.rs:487:6:487:10 | ref_i | main.rs:487:5:487:10 | * ... | | +| main.rs:487:14:487:14 | 2 | main.rs:487:5:487:14 | ... = ... | | +| main.rs:488:5:488:13 | print_i64 | main.rs:488:15:488:15 | i | | +| main.rs:488:5:488:16 | print_i64(...) | main.rs:483:13:489:1 | { ... } | | +| main.rs:488:5:488:17 | ExprStmt | main.rs:488:5:488:13 | print_i64 | | +| main.rs:488:15:488:15 | i | main.rs:488:5:488:16 | print_i64(...) | | +| main.rs:491:1:496:1 | enter fn mutate_param | main.rs:491:17:491:17 | x | | +| main.rs:491:1:496:1 | exit fn mutate_param (normal) | main.rs:491:1:496:1 | exit fn mutate_param | | +| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | | +| main.rs:491:17:491:17 | x | main.rs:491:17:491:27 | ...: ... | match | +| main.rs:491:17:491:27 | ...: ... | main.rs:492:5:494:11 | ExprStmt | | +| main.rs:492:5:492:6 | * ... | main.rs:493:10:493:10 | x | | +| main.rs:492:5:494:10 | ... = ... | main.rs:495:5:495:13 | ExprStmt | | +| main.rs:492:5:494:11 | ExprStmt | main.rs:492:6:492:6 | x | | +| main.rs:492:6:492:6 | x | main.rs:492:5:492:6 | * ... | | +| main.rs:493:9:493:10 | * ... | main.rs:494:10:494:10 | x | | +| main.rs:493:9:494:10 | ... + ... | main.rs:492:5:494:10 | ... = ... | | +| main.rs:493:10:493:10 | x | main.rs:493:9:493:10 | * ... | | +| main.rs:494:9:494:10 | * ... | main.rs:493:9:494:10 | ... + ... | | +| main.rs:494:10:494:10 | x | main.rs:494:9:494:10 | * ... | | +| main.rs:495:5:495:12 | return x | main.rs:491:1:496:1 | exit fn mutate_param (normal) | return | +| main.rs:495:5:495:13 | ExprStmt | main.rs:495:12:495:12 | x | | +| main.rs:495:12:495:12 | x | main.rs:495:5:495:12 | return x | | +| main.rs:498:1:504:1 | enter fn mutate_param2 | main.rs:498:22:498:22 | x | | +| main.rs:498:1:504:1 | exit fn mutate_param2 (normal) | main.rs:498:1:504:1 | exit fn mutate_param2 | | +| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | | +| main.rs:498:22:498:22 | x | main.rs:498:22:498:35 | ...: ... | match | +| main.rs:498:22:498:35 | ...: ... | main.rs:498:38:498:38 | y | | +| main.rs:498:38:498:38 | y | main.rs:498:38:498:38 | y | | +| main.rs:498:38:498:38 | y | main.rs:498:38:498:56 | ...: ... | match | +| main.rs:498:38:498:56 | ...: ... | main.rs:499:5:501:11 | ExprStmt | | +| main.rs:498:59:504:1 | { ... } | main.rs:498:1:504:1 | exit fn mutate_param2 (normal) | | +| main.rs:499:5:499:6 | * ... | main.rs:500:10:500:10 | x | | +| main.rs:499:5:501:10 | ... = ... | main.rs:502:5:503:10 | ExprStmt | | +| main.rs:499:5:501:11 | ExprStmt | main.rs:499:6:499:6 | x | | +| main.rs:499:6:499:6 | x | main.rs:499:5:499:6 | * ... | | +| main.rs:500:9:500:10 | * ... | main.rs:501:10:501:10 | x | | +| main.rs:500:9:501:10 | ... + ... | main.rs:499:5:501:10 | ... = ... | | +| main.rs:500:10:500:10 | x | main.rs:500:9:500:10 | * ... | | +| main.rs:501:9:501:10 | * ... | main.rs:500:9:501:10 | ... + ... | | +| main.rs:501:10:501:10 | x | main.rs:501:9:501:10 | * ... | | +| main.rs:502:5:502:6 | * ... | main.rs:503:9:503:9 | x | | +| main.rs:502:5:503:9 | ... = ... | main.rs:498:59:504:1 | { ... } | | +| main.rs:502:5:503:10 | ExprStmt | main.rs:502:6:502:6 | y | | +| main.rs:502:6:502:6 | y | main.rs:502:5:502:6 | * ... | | +| main.rs:503:9:503:9 | x | main.rs:502:5:503:9 | ... = ... | | +| main.rs:506:1:526:1 | enter fn mutate_arg | main.rs:507:5:507:18 | let ... = 2 | | +| main.rs:506:1:526:1 | exit fn mutate_arg (normal) | main.rs:506:1:526:1 | exit fn mutate_arg | | +| main.rs:506:17:526:1 | { ... } | main.rs:506:1:526:1 | exit fn mutate_arg (normal) | | +| main.rs:507:5:507:18 | let ... = 2 | main.rs:507:17:507:17 | 2 | | +| main.rs:507:9:507:13 | mut x | main.rs:508:5:509:29 | let ... = ... | match | +| main.rs:507:13:507:13 | x | main.rs:507:9:507:13 | mut x | | +| main.rs:507:17:507:17 | 2 | main.rs:507:13:507:13 | x | | +| main.rs:508:5:509:29 | let ... = ... | main.rs:509:9:509:20 | mutate_param | | +| main.rs:508:9:508:9 | y | main.rs:508:9:508:9 | y | | +| main.rs:508:9:508:9 | y | main.rs:510:5:510:12 | ExprStmt | match | +| main.rs:509:9:509:20 | mutate_param | main.rs:509:27:509:27 | x | | +| main.rs:509:9:509:28 | mutate_param(...) | main.rs:508:9:508:9 | y | | +| main.rs:509:22:509:27 | &mut x | main.rs:509:9:509:28 | mutate_param(...) | | +| main.rs:509:27:509:27 | x | main.rs:509:22:509:27 | &mut x | | +| main.rs:510:5:510:6 | * ... | main.rs:510:10:510:11 | 10 | | +| main.rs:510:5:510:11 | ... = ... | main.rs:513:5:513:17 | ExprStmt | | +| main.rs:510:5:510:12 | ExprStmt | main.rs:510:6:510:6 | y | | +| main.rs:510:6:510:6 | y | main.rs:510:5:510:6 | * ... | | +| main.rs:510:10:510:11 | 10 | main.rs:510:5:510:11 | ... = ... | | +| main.rs:513:5:513:13 | print_i64 | main.rs:513:15:513:15 | x | | +| main.rs:513:5:513:16 | print_i64(...) | main.rs:515:5:515:18 | let ... = 4 | | +| main.rs:513:5:513:17 | ExprStmt | main.rs:513:5:513:13 | print_i64 | | +| main.rs:513:15:513:15 | x | main.rs:513:5:513:16 | print_i64(...) | | +| main.rs:515:5:515:18 | let ... = 4 | main.rs:515:17:515:17 | 4 | | +| main.rs:515:9:515:13 | mut z | main.rs:516:5:517:20 | let ... = ... | match | +| main.rs:515:13:515:13 | z | main.rs:515:9:515:13 | mut z | | +| main.rs:515:17:515:17 | 4 | main.rs:515:13:515:13 | z | | +| main.rs:516:5:517:20 | let ... = ... | main.rs:517:19:517:19 | x | | +| main.rs:516:9:516:9 | w | main.rs:516:9:516:9 | w | | +| main.rs:516:9:516:9 | w | main.rs:518:5:521:6 | ExprStmt | match | +| main.rs:517:9:517:19 | &mut ... | main.rs:516:9:516:9 | w | | +| main.rs:517:14:517:19 | &mut x | main.rs:517:9:517:19 | &mut ... | | +| main.rs:517:19:517:19 | x | main.rs:517:14:517:19 | &mut x | | +| main.rs:518:5:518:17 | mutate_param2 | main.rs:519:14:519:14 | z | | +| main.rs:518:5:521:5 | mutate_param2(...) | main.rs:522:5:522:13 | ExprStmt | | +| main.rs:518:5:521:6 | ExprStmt | main.rs:518:5:518:17 | mutate_param2 | | +| main.rs:519:9:519:14 | &mut z | main.rs:520:9:520:9 | w | | +| main.rs:519:14:519:14 | z | main.rs:519:9:519:14 | &mut z | | +| main.rs:520:9:520:9 | w | main.rs:518:5:521:5 | mutate_param2(...) | | +| main.rs:522:5:522:7 | * ... | main.rs:522:11:522:12 | 11 | | +| main.rs:522:5:522:12 | ... = ... | main.rs:525:5:525:17 | ExprStmt | | +| main.rs:522:5:522:13 | ExprStmt | main.rs:522:7:522:7 | w | | +| main.rs:522:6:522:7 | * ... | main.rs:522:5:522:7 | * ... | | +| main.rs:522:7:522:7 | w | main.rs:522:6:522:7 | * ... | | +| main.rs:522:11:522:12 | 11 | main.rs:522:5:522:12 | ... = ... | | +| main.rs:525:5:525:13 | print_i64 | main.rs:525:15:525:15 | z | | +| main.rs:525:5:525:16 | print_i64(...) | main.rs:506:17:526:1 | { ... } | | +| main.rs:525:5:525:17 | ExprStmt | main.rs:525:5:525:13 | print_i64 | | +| main.rs:525:15:525:15 | z | main.rs:525:5:525:16 | print_i64(...) | | +| main.rs:528:1:534:1 | enter fn alias | main.rs:529:5:529:18 | let ... = 1 | | +| main.rs:528:1:534:1 | exit fn alias (normal) | main.rs:528:1:534:1 | exit fn alias | | +| main.rs:528:12:534:1 | { ... } | main.rs:528:1:534:1 | exit fn alias (normal) | | +| main.rs:529:5:529:18 | let ... = 1 | main.rs:529:17:529:17 | 1 | | +| main.rs:529:9:529:13 | mut x | main.rs:530:5:531:15 | let ... = ... | match | +| main.rs:529:13:529:13 | x | main.rs:529:9:529:13 | mut x | | +| main.rs:529:17:529:17 | 1 | main.rs:529:13:529:13 | x | | +| main.rs:530:5:531:15 | let ... = ... | main.rs:531:14:531:14 | x | | +| main.rs:530:9:530:9 | y | main.rs:530:9:530:9 | y | | +| main.rs:530:9:530:9 | y | main.rs:532:5:532:11 | ExprStmt | match | +| main.rs:531:9:531:14 | &mut x | main.rs:530:9:530:9 | y | | +| main.rs:531:14:531:14 | x | main.rs:531:9:531:14 | &mut x | | +| main.rs:532:5:532:6 | * ... | main.rs:532:10:532:10 | 2 | | +| main.rs:532:5:532:10 | ... = ... | main.rs:533:5:533:17 | ExprStmt | | +| main.rs:532:5:532:11 | ExprStmt | main.rs:532:6:532:6 | y | | +| main.rs:532:6:532:6 | y | main.rs:532:5:532:6 | * ... | | +| main.rs:532:10:532:10 | 2 | main.rs:532:5:532:10 | ... = ... | | +| main.rs:533:5:533:13 | print_i64 | main.rs:533:15:533:15 | x | | +| main.rs:533:5:533:16 | print_i64(...) | main.rs:528:12:534:1 | { ... } | | +| main.rs:533:5:533:17 | ExprStmt | main.rs:533:5:533:13 | print_i64 | | +| main.rs:533:15:533:15 | x | main.rs:533:5:533:16 | print_i64(...) | | +| main.rs:536:1:545:1 | enter fn capture_immut | main.rs:537:5:537:16 | let ... = 100 | | +| main.rs:536:1:545:1 | exit fn capture_immut (normal) | main.rs:536:1:545:1 | exit fn capture_immut | | +| main.rs:536:20:545:1 | { ... } | main.rs:536:1:545:1 | exit fn capture_immut (normal) | | +| main.rs:537:5:537:16 | let ... = 100 | main.rs:537:13:537:15 | 100 | | +| main.rs:537:9:537:9 | x | main.rs:537:9:537:9 | x | | +| main.rs:537:9:537:9 | x | main.rs:540:5:542:6 | let ... = ... | match | +| main.rs:537:13:537:15 | 100 | main.rs:537:9:537:9 | x | | +| main.rs:540:5:542:6 | let ... = ... | main.rs:540:15:542:5 | \|...\| ... | | +| main.rs:540:9:540:11 | cap | main.rs:540:9:540:11 | cap | | +| main.rs:540:9:540:11 | cap | main.rs:543:5:543:10 | ExprStmt | match | +| main.rs:540:15:542:5 | \|...\| ... | main.rs:540:9:540:11 | cap | | +| main.rs:540:15:542:5 | enter \|...\| ... | main.rs:541:9:541:21 | ExprStmt | | +| main.rs:540:15:542:5 | exit \|...\| ... (normal) | main.rs:540:15:542:5 | exit \|...\| ... | | +| main.rs:540:18:542:5 | { ... } | main.rs:540:15:542:5 | exit \|...\| ... (normal) | | +| main.rs:541:9:541:17 | print_i64 | main.rs:541:19:541:19 | x | | +| main.rs:541:9:541:20 | print_i64(...) | main.rs:540:18:542:5 | { ... } | | +| main.rs:541:9:541:21 | ExprStmt | main.rs:541:9:541:17 | print_i64 | | +| main.rs:541:19:541:19 | x | main.rs:541:9:541:20 | print_i64(...) | | +| main.rs:543:5:543:7 | cap | main.rs:543:5:543:9 | cap(...) | | +| main.rs:543:5:543:9 | cap(...) | main.rs:544:5:544:17 | ExprStmt | | +| main.rs:543:5:543:10 | ExprStmt | main.rs:543:5:543:7 | cap | | +| main.rs:544:5:544:13 | print_i64 | main.rs:544:15:544:15 | x | | +| main.rs:544:5:544:16 | print_i64(...) | main.rs:536:20:545:1 | { ... } | | +| main.rs:544:5:544:17 | ExprStmt | main.rs:544:5:544:13 | print_i64 | | +| main.rs:544:15:544:15 | x | main.rs:544:5:544:16 | print_i64(...) | | +| main.rs:547:1:574:1 | enter fn capture_mut | main.rs:548:5:548:18 | let ... = 1 | | +| main.rs:547:1:574:1 | exit fn capture_mut (normal) | main.rs:547:1:574:1 | exit fn capture_mut | | +| main.rs:547:18:574:1 | { ... } | main.rs:547:1:574:1 | exit fn capture_mut (normal) | | +| main.rs:548:5:548:18 | let ... = 1 | main.rs:548:17:548:17 | 1 | | +| main.rs:548:9:548:13 | mut x | main.rs:551:5:553:6 | let ... = ... | match | +| main.rs:548:13:548:13 | x | main.rs:548:9:548:13 | mut x | | +| main.rs:548:17:548:17 | 1 | main.rs:548:13:548:13 | x | | +| main.rs:551:5:553:6 | let ... = ... | main.rs:551:20:553:5 | \|...\| ... | | +| main.rs:551:9:551:16 | closure1 | main.rs:551:9:551:16 | closure1 | | +| main.rs:551:9:551:16 | closure1 | main.rs:554:5:554:15 | ExprStmt | match | +| main.rs:551:20:553:5 | \|...\| ... | main.rs:551:9:551:16 | closure1 | | +| main.rs:551:20:553:5 | enter \|...\| ... | main.rs:552:9:552:21 | ExprStmt | | +| main.rs:551:20:553:5 | exit \|...\| ... (normal) | main.rs:551:20:553:5 | exit \|...\| ... | | +| main.rs:551:23:553:5 | { ... } | main.rs:551:20:553:5 | exit \|...\| ... (normal) | | +| main.rs:552:9:552:17 | print_i64 | main.rs:552:19:552:19 | x | | +| main.rs:552:9:552:20 | print_i64(...) | main.rs:551:23:553:5 | { ... } | | +| main.rs:552:9:552:21 | ExprStmt | main.rs:552:9:552:17 | print_i64 | | +| main.rs:552:19:552:19 | x | main.rs:552:9:552:20 | print_i64(...) | | +| main.rs:554:5:554:12 | closure1 | main.rs:554:5:554:14 | closure1(...) | | +| main.rs:554:5:554:14 | closure1(...) | main.rs:555:5:555:17 | ExprStmt | | +| main.rs:554:5:554:15 | ExprStmt | main.rs:554:5:554:12 | closure1 | | +| main.rs:555:5:555:13 | print_i64 | main.rs:555:15:555:15 | x | | +| main.rs:555:5:555:16 | print_i64(...) | main.rs:557:5:557:18 | let ... = 2 | | +| main.rs:555:5:555:17 | ExprStmt | main.rs:555:5:555:13 | print_i64 | | +| main.rs:555:15:555:15 | x | main.rs:555:5:555:16 | print_i64(...) | | +| main.rs:557:5:557:18 | let ... = 2 | main.rs:557:17:557:17 | 2 | | +| main.rs:557:9:557:13 | mut y | main.rs:560:5:562:6 | let ... = ... | match | +| main.rs:557:13:557:13 | y | main.rs:557:9:557:13 | mut y | | +| main.rs:557:17:557:17 | 2 | main.rs:557:13:557:13 | y | | +| main.rs:560:5:562:6 | let ... = ... | main.rs:560:24:562:5 | \|...\| ... | | +| main.rs:560:9:560:20 | mut closure2 | main.rs:563:5:563:15 | ExprStmt | match | +| main.rs:560:13:560:20 | closure2 | main.rs:560:9:560:20 | mut closure2 | | +| main.rs:560:24:562:5 | \|...\| ... | main.rs:560:13:560:20 | closure2 | | +| main.rs:560:24:562:5 | enter \|...\| ... | main.rs:561:9:561:14 | ExprStmt | | +| main.rs:560:24:562:5 | exit \|...\| ... (normal) | main.rs:560:24:562:5 | exit \|...\| ... | | +| main.rs:560:27:562:5 | { ... } | main.rs:560:24:562:5 | exit \|...\| ... (normal) | | +| main.rs:561:9:561:9 | y | main.rs:561:13:561:13 | 3 | | +| main.rs:561:9:561:13 | ... = ... | main.rs:560:27:562:5 | { ... } | | +| main.rs:561:9:561:14 | ExprStmt | main.rs:561:9:561:9 | y | | +| main.rs:561:13:561:13 | 3 | main.rs:561:9:561:13 | ... = ... | | +| main.rs:563:5:563:12 | closure2 | main.rs:563:5:563:14 | closure2(...) | | +| main.rs:563:5:563:14 | closure2(...) | main.rs:564:5:564:17 | ExprStmt | | +| main.rs:563:5:563:15 | ExprStmt | main.rs:563:5:563:12 | closure2 | | +| main.rs:564:5:564:13 | print_i64 | main.rs:564:15:564:15 | y | | +| main.rs:564:5:564:16 | print_i64(...) | main.rs:566:5:566:18 | let ... = 2 | | +| main.rs:564:5:564:17 | ExprStmt | main.rs:564:5:564:13 | print_i64 | | +| main.rs:564:15:564:15 | y | main.rs:564:5:564:16 | print_i64(...) | | +| main.rs:566:5:566:18 | let ... = 2 | main.rs:566:17:566:17 | 2 | | +| main.rs:566:9:566:13 | mut z | main.rs:569:5:571:6 | let ... = ... | match | +| main.rs:566:13:566:13 | z | main.rs:566:9:566:13 | mut z | | +| main.rs:566:17:566:17 | 2 | main.rs:566:13:566:13 | z | | +| main.rs:569:5:571:6 | let ... = ... | main.rs:569:24:571:5 | \|...\| ... | | +| main.rs:569:9:569:20 | mut closure3 | main.rs:572:5:572:15 | ExprStmt | match | +| main.rs:569:13:569:20 | closure3 | main.rs:569:9:569:20 | mut closure3 | | +| main.rs:569:24:571:5 | \|...\| ... | main.rs:569:13:569:20 | closure3 | | +| main.rs:569:24:571:5 | enter \|...\| ... | main.rs:570:9:570:24 | ExprStmt | | +| main.rs:569:24:571:5 | exit \|...\| ... (normal) | main.rs:569:24:571:5 | exit \|...\| ... | | +| main.rs:569:27:571:5 | { ... } | main.rs:569:24:571:5 | exit \|...\| ... (normal) | | +| main.rs:570:9:570:9 | z | main.rs:570:22:570:22 | 1 | | +| main.rs:570:9:570:23 | z.add_assign(...) | main.rs:569:27:571:5 | { ... } | | +| main.rs:570:9:570:24 | ExprStmt | main.rs:570:9:570:9 | z | | +| main.rs:570:22:570:22 | 1 | main.rs:570:9:570:23 | z.add_assign(...) | | +| main.rs:572:5:572:12 | closure3 | main.rs:572:5:572:14 | closure3(...) | | +| main.rs:572:5:572:14 | closure3(...) | main.rs:573:5:573:17 | ExprStmt | | +| main.rs:572:5:572:15 | ExprStmt | main.rs:572:5:572:12 | closure3 | | +| main.rs:573:5:573:13 | print_i64 | main.rs:573:15:573:15 | z | | +| main.rs:573:5:573:16 | print_i64(...) | main.rs:547:18:574:1 | { ... } | | +| main.rs:573:5:573:17 | ExprStmt | main.rs:573:5:573:13 | print_i64 | | +| main.rs:573:15:573:15 | z | main.rs:573:5:573:16 | print_i64(...) | | +| main.rs:576:1:584:1 | enter fn async_block_capture | main.rs:577:5:577:23 | let ... = 0 | | +| main.rs:576:1:584:1 | exit fn async_block_capture (normal) | main.rs:576:1:584:1 | exit fn async_block_capture | | +| main.rs:576:32:584:1 | { ... } | main.rs:576:1:584:1 | exit fn async_block_capture (normal) | | +| main.rs:577:5:577:23 | let ... = 0 | main.rs:577:22:577:22 | 0 | | +| main.rs:577:9:577:13 | mut i | main.rs:578:5:580:6 | let ... = ... | match | +| main.rs:577:13:577:13 | i | main.rs:577:9:577:13 | mut i | | +| main.rs:577:22:577:22 | 0 | main.rs:577:13:577:13 | i | | +| main.rs:578:5:580:6 | let ... = ... | main.rs:578:17:580:5 | { ... } | | +| main.rs:578:9:578:13 | block | main.rs:578:9:578:13 | block | | +| main.rs:578:9:578:13 | block | main.rs:582:5:582:16 | ExprStmt | match | +| main.rs:578:17:580:5 | enter { ... } | main.rs:579:9:579:14 | ExprStmt | | +| main.rs:578:17:580:5 | exit { ... } (normal) | main.rs:578:17:580:5 | exit { ... } | | +| main.rs:578:17:580:5 | { ... } | main.rs:578:9:578:13 | block | | +| main.rs:579:9:579:9 | i | main.rs:579:13:579:13 | 1 | | +| main.rs:579:9:579:13 | ... = ... | main.rs:578:17:580:5 | exit { ... } (normal) | | +| main.rs:579:9:579:14 | ExprStmt | main.rs:579:9:579:9 | i | | +| main.rs:579:13:579:13 | 1 | main.rs:579:9:579:13 | ... = ... | | +| main.rs:582:5:582:9 | block | main.rs:582:5:582:15 | await block | | +| main.rs:582:5:582:15 | await block | main.rs:583:5:583:17 | ExprStmt | | +| main.rs:582:5:582:16 | ExprStmt | main.rs:582:5:582:9 | block | | +| main.rs:583:5:583:13 | print_i64 | main.rs:583:15:583:15 | i | | +| main.rs:583:5:583:16 | print_i64(...) | main.rs:576:32:584:1 | { ... } | | +| main.rs:583:5:583:17 | ExprStmt | main.rs:583:5:583:13 | print_i64 | | +| main.rs:583:15:583:15 | i | main.rs:583:5:583:16 | print_i64(...) | | +| main.rs:586:1:602:1 | enter fn phi | main.rs:586:8:586:8 | b | | +| main.rs:586:1:602:1 | exit fn phi (normal) | main.rs:586:1:602:1 | exit fn phi | | +| main.rs:586:8:586:8 | b | main.rs:586:8:586:8 | b | | +| main.rs:586:8:586:8 | b | main.rs:586:8:586:14 | ...: bool | match | +| main.rs:586:8:586:14 | ...: bool | main.rs:587:5:587:18 | let ... = 1 | | +| main.rs:586:17:602:1 | { ... } | main.rs:586:1:602:1 | exit fn phi (normal) | | +| main.rs:587:5:587:18 | let ... = 1 | main.rs:587:17:587:17 | 1 | | +| main.rs:587:9:587:13 | mut x | main.rs:588:5:588:17 | ExprStmt | match | +| main.rs:587:13:587:13 | x | main.rs:587:9:587:13 | mut x | | +| main.rs:587:17:587:17 | 1 | main.rs:587:13:587:13 | x | | +| main.rs:588:5:588:13 | print_i64 | main.rs:588:15:588:15 | x | | +| main.rs:588:5:588:16 | print_i64(...) | main.rs:589:5:589:21 | ExprStmt | | +| main.rs:588:5:588:17 | ExprStmt | main.rs:588:5:588:13 | print_i64 | | +| main.rs:588:15:588:15 | x | main.rs:588:5:588:16 | print_i64(...) | | +| main.rs:589:5:589:13 | print_i64 | main.rs:589:15:589:15 | x | | +| main.rs:589:5:589:20 | print_i64(...) | main.rs:590:5:600:6 | let _ = ... | | +| main.rs:589:5:589:21 | ExprStmt | main.rs:589:5:589:13 | print_i64 | | +| main.rs:589:15:589:15 | x | main.rs:589:19:589:19 | 1 | | +| main.rs:589:15:589:19 | ... + ... | main.rs:589:5:589:20 | print_i64(...) | | +| main.rs:589:19:589:19 | 1 | main.rs:589:15:589:19 | ... + ... | | +| main.rs:590:5:600:6 | let _ = ... | main.rs:591:16:591:16 | b | | +| main.rs:591:9:591:9 | _ | main.rs:601:5:601:17 | ExprStmt | match | +| main.rs:591:13:600:5 | if b {...} else {...} | main.rs:591:9:591:9 | _ | | +| main.rs:591:16:591:16 | b | main.rs:593:9:593:14 | ExprStmt | true | +| main.rs:591:16:591:16 | b | main.rs:597:9:597:14 | ExprStmt | false | +| main.rs:592:5:596:5 | { ... } | main.rs:591:13:600:5 | if b {...} else {...} | | +| main.rs:593:9:593:9 | x | main.rs:593:13:593:13 | 2 | | +| main.rs:593:9:593:13 | ... = ... | main.rs:594:9:594:21 | ExprStmt | | +| main.rs:593:9:593:14 | ExprStmt | main.rs:593:9:593:9 | x | | +| main.rs:593:13:593:13 | 2 | main.rs:593:9:593:13 | ... = ... | | +| main.rs:594:9:594:17 | print_i64 | main.rs:594:19:594:19 | x | | +| main.rs:594:9:594:20 | print_i64(...) | main.rs:595:9:595:25 | ExprStmt | | +| main.rs:594:9:594:21 | ExprStmt | main.rs:594:9:594:17 | print_i64 | | +| main.rs:594:19:594:19 | x | main.rs:594:9:594:20 | print_i64(...) | | +| main.rs:595:9:595:17 | print_i64 | main.rs:595:19:595:19 | x | | +| main.rs:595:9:595:24 | print_i64(...) | main.rs:592:5:596:5 | { ... } | | +| main.rs:595:9:595:25 | ExprStmt | main.rs:595:9:595:17 | print_i64 | | +| main.rs:595:19:595:19 | x | main.rs:595:23:595:23 | 1 | | +| main.rs:595:19:595:23 | ... + ... | main.rs:595:9:595:24 | print_i64(...) | | +| main.rs:595:23:595:23 | 1 | main.rs:595:19:595:23 | ... + ... | | +| main.rs:596:12:600:5 | { ... } | main.rs:591:13:600:5 | if b {...} else {...} | | +| main.rs:597:9:597:9 | x | main.rs:597:13:597:13 | 3 | | +| main.rs:597:9:597:13 | ... = ... | main.rs:598:9:598:21 | ExprStmt | | +| main.rs:597:9:597:14 | ExprStmt | main.rs:597:9:597:9 | x | | +| main.rs:597:13:597:13 | 3 | main.rs:597:9:597:13 | ... = ... | | +| main.rs:598:9:598:17 | print_i64 | main.rs:598:19:598:19 | x | | +| main.rs:598:9:598:20 | print_i64(...) | main.rs:599:9:599:25 | ExprStmt | | +| main.rs:598:9:598:21 | ExprStmt | main.rs:598:9:598:17 | print_i64 | | +| main.rs:598:19:598:19 | x | main.rs:598:9:598:20 | print_i64(...) | | +| main.rs:599:9:599:17 | print_i64 | main.rs:599:19:599:19 | x | | +| main.rs:599:9:599:24 | print_i64(...) | main.rs:596:12:600:5 | { ... } | | +| main.rs:599:9:599:25 | ExprStmt | main.rs:599:9:599:17 | print_i64 | | +| main.rs:599:19:599:19 | x | main.rs:599:23:599:23 | 1 | | +| main.rs:599:19:599:23 | ... + ... | main.rs:599:9:599:24 | print_i64(...) | | +| main.rs:599:23:599:23 | 1 | main.rs:599:19:599:23 | ... + ... | | +| main.rs:601:5:601:13 | print_i64 | main.rs:601:15:601:15 | x | | +| main.rs:601:5:601:16 | print_i64(...) | main.rs:586:17:602:1 | { ... } | | +| main.rs:601:5:601:17 | ExprStmt | main.rs:601:5:601:13 | print_i64 | | +| main.rs:601:15:601:15 | x | main.rs:601:5:601:16 | print_i64(...) | | +| main.rs:604:1:621:1 | enter fn phi_read | main.rs:604:13:604:14 | b1 | | +| main.rs:604:1:621:1 | exit fn phi_read (normal) | main.rs:604:1:621:1 | exit fn phi_read | | +| main.rs:604:13:604:14 | b1 | main.rs:604:13:604:14 | b1 | | +| main.rs:604:13:604:14 | b1 | main.rs:604:13:604:20 | ...: bool | match | +| main.rs:604:13:604:20 | ...: bool | main.rs:604:23:604:24 | b2 | | +| main.rs:604:23:604:24 | b2 | main.rs:604:23:604:24 | b2 | | +| main.rs:604:23:604:24 | b2 | main.rs:604:23:604:30 | ...: bool | match | +| main.rs:604:23:604:30 | ...: bool | main.rs:605:5:605:14 | let ... = 1 | | +| main.rs:604:33:621:1 | { ... } | main.rs:604:1:621:1 | exit fn phi_read (normal) | | +| main.rs:605:5:605:14 | let ... = 1 | main.rs:605:13:605:13 | 1 | | +| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | | +| main.rs:605:9:605:9 | x | main.rs:606:5:612:6 | let _ = ... | match | +| main.rs:605:13:605:13 | 1 | main.rs:605:9:605:9 | x | | +| main.rs:606:5:612:6 | let _ = ... | main.rs:607:16:607:17 | b1 | | +| main.rs:607:9:607:9 | _ | main.rs:614:5:620:6 | let _ = ... | match | +| main.rs:607:13:612:5 | if b1 {...} else {...} | main.rs:607:9:607:9 | _ | | +| main.rs:607:16:607:17 | b1 | main.rs:609:9:609:21 | ExprStmt | true | +| main.rs:607:16:607:17 | b1 | main.rs:611:9:611:21 | ExprStmt | false | +| main.rs:608:5:610:5 | { ... } | main.rs:607:13:612:5 | if b1 {...} else {...} | | | main.rs:609:9:609:17 | print_i64 | main.rs:609:19:609:19 | x | | -| main.rs:609:9:609:20 | print_i64(...) | main.rs:608:12:610:5 | { ... } | | +| main.rs:609:9:609:20 | print_i64(...) | main.rs:608:5:610:5 | { ... } | | | main.rs:609:9:609:21 | ExprStmt | main.rs:609:9:609:17 | print_i64 | | | main.rs:609:19:609:19 | x | main.rs:609:9:609:20 | print_i64(...) | | -| main.rs:612:5:618:6 | let _ = ... | main.rs:613:16:613:17 | b2 | | -| main.rs:613:9:613:9 | _ | main.rs:602:33:619:1 | { ... } | match | -| main.rs:613:13:618:5 | if b2 {...} else {...} | main.rs:613:9:613:9 | _ | | -| main.rs:613:16:613:17 | b2 | main.rs:615:9:615:21 | ExprStmt | true | -| main.rs:613:16:613:17 | b2 | main.rs:617:9:617:21 | ExprStmt | false | -| main.rs:614:5:616:5 | { ... } | main.rs:613:13:618:5 | if b2 {...} else {...} | | -| main.rs:615:9:615:17 | print_i64 | main.rs:615:19:615:19 | x | | -| main.rs:615:9:615:20 | print_i64(...) | main.rs:614:5:616:5 | { ... } | | -| main.rs:615:9:615:21 | ExprStmt | main.rs:615:9:615:17 | print_i64 | | -| main.rs:615:19:615:19 | x | main.rs:615:9:615:20 | print_i64(...) | | -| main.rs:616:12:618:5 | { ... } | main.rs:613:13:618:5 | if b2 {...} else {...} | | +| main.rs:610:12:612:5 | { ... } | main.rs:607:13:612:5 | if b1 {...} else {...} | | +| main.rs:611:9:611:17 | print_i64 | main.rs:611:19:611:19 | x | | +| main.rs:611:9:611:20 | print_i64(...) | main.rs:610:12:612:5 | { ... } | | +| main.rs:611:9:611:21 | ExprStmt | main.rs:611:9:611:17 | print_i64 | | +| main.rs:611:19:611:19 | x | main.rs:611:9:611:20 | print_i64(...) | | +| main.rs:614:5:620:6 | let _ = ... | main.rs:615:16:615:17 | b2 | | +| main.rs:615:9:615:9 | _ | main.rs:604:33:621:1 | { ... } | match | +| main.rs:615:13:620:5 | if b2 {...} else {...} | main.rs:615:9:615:9 | _ | | +| main.rs:615:16:615:17 | b2 | main.rs:617:9:617:21 | ExprStmt | true | +| main.rs:615:16:615:17 | b2 | main.rs:619:9:619:21 | ExprStmt | false | +| main.rs:616:5:618:5 | { ... } | main.rs:615:13:620:5 | if b2 {...} else {...} | | | main.rs:617:9:617:17 | print_i64 | main.rs:617:19:617:19 | x | | -| main.rs:617:9:617:20 | print_i64(...) | main.rs:616:12:618:5 | { ... } | | +| main.rs:617:9:617:20 | print_i64(...) | main.rs:616:5:618:5 | { ... } | | | main.rs:617:9:617:21 | ExprStmt | main.rs:617:9:617:17 | print_i64 | | | main.rs:617:19:617:19 | x | main.rs:617:9:617:20 | print_i64(...) | | -| main.rs:626:5:628:5 | enter fn my_get | main.rs:626:20:626:23 | self | | -| main.rs:626:5:628:5 | exit fn my_get (normal) | main.rs:626:5:628:5 | exit fn my_get | | -| main.rs:626:15:626:23 | SelfParam | main.rs:627:9:627:24 | ExprStmt | | -| main.rs:626:20:626:23 | self | main.rs:626:15:626:23 | SelfParam | | -| main.rs:627:9:627:23 | return ... | main.rs:626:5:628:5 | exit fn my_get (normal) | return | -| main.rs:627:9:627:24 | ExprStmt | main.rs:627:16:627:19 | self | | -| main.rs:627:16:627:19 | self | main.rs:627:16:627:23 | self.val | | -| main.rs:627:16:627:23 | self.val | main.rs:627:9:627:23 | return ... | | -| main.rs:630:5:632:5 | enter fn id | main.rs:630:11:630:14 | self | | -| main.rs:630:5:632:5 | exit fn id (normal) | main.rs:630:5:632:5 | exit fn id | | -| main.rs:630:11:630:14 | SelfParam | main.rs:631:9:631:12 | self | | -| main.rs:630:11:630:14 | self | main.rs:630:11:630:14 | SelfParam | | -| main.rs:630:25:632:5 | { ... } | main.rs:630:5:632:5 | exit fn id (normal) | | -| main.rs:631:9:631:12 | self | main.rs:630:25:632:5 | { ... } | | -| main.rs:634:5:641:5 | enter fn my_method | main.rs:634:23:634:26 | self | | -| main.rs:634:5:641:5 | exit fn my_method (normal) | main.rs:634:5:641:5 | exit fn my_method | | -| main.rs:634:18:634:26 | SelfParam | main.rs:635:9:638:10 | let ... = ... | | -| main.rs:634:23:634:26 | self | main.rs:634:18:634:26 | SelfParam | | -| main.rs:634:29:641:5 | { ... } | main.rs:634:5:641:5 | exit fn my_method (normal) | | -| main.rs:635:9:638:10 | let ... = ... | main.rs:635:21:638:9 | \|...\| ... | | -| main.rs:635:13:635:17 | mut f | main.rs:639:9:639:13 | ExprStmt | match | -| main.rs:635:17:635:17 | f | main.rs:635:13:635:17 | mut f | | -| main.rs:635:21:638:9 | \|...\| ... | main.rs:635:17:635:17 | f | | -| main.rs:635:21:638:9 | enter \|...\| ... | main.rs:635:22:635:22 | n | | -| main.rs:635:21:638:9 | exit \|...\| ... (normal) | main.rs:635:21:638:9 | exit \|...\| ... | | -| main.rs:635:22:635:22 | ... | main.rs:637:13:637:26 | ExprStmt | | -| main.rs:635:22:635:22 | n | main.rs:635:22:635:22 | ... | match | -| main.rs:635:22:635:22 | n | main.rs:635:22:635:22 | n | | -| main.rs:635:25:638:9 | { ... } | main.rs:635:21:638:9 | exit \|...\| ... (normal) | | -| main.rs:637:13:637:16 | self | main.rs:637:13:637:20 | self.val | | -| main.rs:637:13:637:20 | self.val | main.rs:637:25:637:25 | n | | -| main.rs:637:13:637:25 | ... += ... | main.rs:635:25:638:9 | { ... } | | -| main.rs:637:13:637:26 | ExprStmt | main.rs:637:13:637:16 | self | | -| main.rs:637:25:637:25 | n | main.rs:637:13:637:25 | ... += ... | | -| main.rs:639:9:639:9 | f | main.rs:639:11:639:11 | 3 | | -| main.rs:639:9:639:12 | f(...) | main.rs:640:9:640:13 | ExprStmt | | -| main.rs:639:9:639:13 | ExprStmt | main.rs:639:9:639:9 | f | | -| main.rs:639:11:639:11 | 3 | main.rs:639:9:639:12 | f(...) | | -| main.rs:640:9:640:9 | f | main.rs:640:11:640:11 | 4 | | -| main.rs:640:9:640:12 | f(...) | main.rs:634:29:641:5 | { ... } | | -| main.rs:640:9:640:13 | ExprStmt | main.rs:640:9:640:9 | f | | -| main.rs:640:11:640:11 | 4 | main.rs:640:9:640:12 | f(...) | | -| main.rs:644:1:651:1 | enter fn structs | main.rs:645:5:645:36 | let ... = ... | | -| main.rs:644:1:651:1 | exit fn structs (normal) | main.rs:644:1:651:1 | exit fn structs | | -| main.rs:644:14:651:1 | { ... } | main.rs:644:1:651:1 | exit fn structs (normal) | | -| main.rs:645:5:645:36 | let ... = ... | main.rs:645:33:645:33 | 1 | | -| main.rs:645:9:645:13 | mut a | main.rs:646:5:646:26 | ExprStmt | match | -| main.rs:645:13:645:13 | a | main.rs:645:9:645:13 | mut a | | -| main.rs:645:17:645:35 | MyStruct {...} | main.rs:645:13:645:13 | a | | -| main.rs:645:33:645:33 | 1 | main.rs:645:17:645:35 | MyStruct {...} | | -| main.rs:646:5:646:13 | print_i64 | main.rs:646:15:646:15 | a | | -| main.rs:646:5:646:25 | print_i64(...) | main.rs:647:5:647:14 | ExprStmt | | -| main.rs:646:5:646:26 | ExprStmt | main.rs:646:5:646:13 | print_i64 | | -| main.rs:646:15:646:15 | a | main.rs:646:15:646:24 | a.my_get() | | -| main.rs:646:15:646:24 | a.my_get() | main.rs:646:5:646:25 | print_i64(...) | | -| main.rs:647:5:647:5 | a | main.rs:647:5:647:9 | a.val | | -| main.rs:647:5:647:9 | a.val | main.rs:647:13:647:13 | 5 | | -| main.rs:647:5:647:13 | ... = ... | main.rs:648:5:648:26 | ExprStmt | | -| main.rs:647:5:647:14 | ExprStmt | main.rs:647:5:647:5 | a | | -| main.rs:647:13:647:13 | 5 | main.rs:647:5:647:13 | ... = ... | | +| main.rs:618:12:620:5 | { ... } | main.rs:615:13:620:5 | if b2 {...} else {...} | | +| main.rs:619:9:619:17 | print_i64 | main.rs:619:19:619:19 | x | | +| main.rs:619:9:619:20 | print_i64(...) | main.rs:618:12:620:5 | { ... } | | +| main.rs:619:9:619:21 | ExprStmt | main.rs:619:9:619:17 | print_i64 | | +| main.rs:619:19:619:19 | x | main.rs:619:9:619:20 | print_i64(...) | | +| main.rs:628:5:630:5 | enter fn my_get | main.rs:628:20:628:23 | self | | +| main.rs:628:5:630:5 | exit fn my_get (normal) | main.rs:628:5:630:5 | exit fn my_get | | +| main.rs:628:15:628:23 | SelfParam | main.rs:629:9:629:24 | ExprStmt | | +| main.rs:628:20:628:23 | self | main.rs:628:15:628:23 | SelfParam | | +| main.rs:629:9:629:23 | return ... | main.rs:628:5:630:5 | exit fn my_get (normal) | return | +| main.rs:629:9:629:24 | ExprStmt | main.rs:629:16:629:19 | self | | +| main.rs:629:16:629:19 | self | main.rs:629:16:629:23 | self.val | | +| main.rs:629:16:629:23 | self.val | main.rs:629:9:629:23 | return ... | | +| main.rs:632:5:634:5 | enter fn id | main.rs:632:11:632:14 | self | | +| main.rs:632:5:634:5 | exit fn id (normal) | main.rs:632:5:634:5 | exit fn id | | +| main.rs:632:11:632:14 | SelfParam | main.rs:633:9:633:12 | self | | +| main.rs:632:11:632:14 | self | main.rs:632:11:632:14 | SelfParam | | +| main.rs:632:25:634:5 | { ... } | main.rs:632:5:634:5 | exit fn id (normal) | | +| main.rs:633:9:633:12 | self | main.rs:632:25:634:5 | { ... } | | +| main.rs:636:5:643:5 | enter fn my_method | main.rs:636:23:636:26 | self | | +| main.rs:636:5:643:5 | exit fn my_method (normal) | main.rs:636:5:643:5 | exit fn my_method | | +| main.rs:636:18:636:26 | SelfParam | main.rs:637:9:640:10 | let ... = ... | | +| main.rs:636:23:636:26 | self | main.rs:636:18:636:26 | SelfParam | | +| main.rs:636:29:643:5 | { ... } | main.rs:636:5:643:5 | exit fn my_method (normal) | | +| main.rs:637:9:640:10 | let ... = ... | main.rs:637:21:640:9 | \|...\| ... | | +| main.rs:637:13:637:17 | mut f | main.rs:641:9:641:13 | ExprStmt | match | +| main.rs:637:17:637:17 | f | main.rs:637:13:637:17 | mut f | | +| main.rs:637:21:640:9 | \|...\| ... | main.rs:637:17:637:17 | f | | +| main.rs:637:21:640:9 | enter \|...\| ... | main.rs:637:22:637:22 | n | | +| main.rs:637:21:640:9 | exit \|...\| ... (normal) | main.rs:637:21:640:9 | exit \|...\| ... | | +| main.rs:637:22:637:22 | ... | main.rs:639:13:639:26 | ExprStmt | | +| main.rs:637:22:637:22 | n | main.rs:637:22:637:22 | ... | match | +| main.rs:637:22:637:22 | n | main.rs:637:22:637:22 | n | | +| main.rs:637:25:640:9 | { ... } | main.rs:637:21:640:9 | exit \|...\| ... (normal) | | +| main.rs:639:13:639:16 | self | main.rs:639:13:639:20 | self.val | | +| main.rs:639:13:639:20 | self.val | main.rs:639:25:639:25 | n | | +| main.rs:639:13:639:25 | ... += ... | main.rs:637:25:640:9 | { ... } | | +| main.rs:639:13:639:26 | ExprStmt | main.rs:639:13:639:16 | self | | +| main.rs:639:25:639:25 | n | main.rs:639:13:639:25 | ... += ... | | +| main.rs:641:9:641:9 | f | main.rs:641:11:641:11 | 3 | | +| main.rs:641:9:641:12 | f(...) | main.rs:642:9:642:13 | ExprStmt | | +| main.rs:641:9:641:13 | ExprStmt | main.rs:641:9:641:9 | f | | +| main.rs:641:11:641:11 | 3 | main.rs:641:9:641:12 | f(...) | | +| main.rs:642:9:642:9 | f | main.rs:642:11:642:11 | 4 | | +| main.rs:642:9:642:12 | f(...) | main.rs:636:29:643:5 | { ... } | | +| main.rs:642:9:642:13 | ExprStmt | main.rs:642:9:642:9 | f | | +| main.rs:642:11:642:11 | 4 | main.rs:642:9:642:12 | f(...) | | +| main.rs:646:1:653:1 | enter fn structs | main.rs:647:5:647:36 | let ... = ... | | +| main.rs:646:1:653:1 | exit fn structs (normal) | main.rs:646:1:653:1 | exit fn structs | | +| main.rs:646:14:653:1 | { ... } | main.rs:646:1:653:1 | exit fn structs (normal) | | +| main.rs:647:5:647:36 | let ... = ... | main.rs:647:33:647:33 | 1 | | +| main.rs:647:9:647:13 | mut a | main.rs:648:5:648:26 | ExprStmt | match | +| main.rs:647:13:647:13 | a | main.rs:647:9:647:13 | mut a | | +| main.rs:647:17:647:35 | MyStruct {...} | main.rs:647:13:647:13 | a | | +| main.rs:647:33:647:33 | 1 | main.rs:647:17:647:35 | MyStruct {...} | | | main.rs:648:5:648:13 | print_i64 | main.rs:648:15:648:15 | a | | -| main.rs:648:5:648:25 | print_i64(...) | main.rs:649:5:649:28 | ExprStmt | | +| main.rs:648:5:648:25 | print_i64(...) | main.rs:649:5:649:14 | ExprStmt | | | main.rs:648:5:648:26 | ExprStmt | main.rs:648:5:648:13 | print_i64 | | | main.rs:648:15:648:15 | a | main.rs:648:15:648:24 | a.my_get() | | | main.rs:648:15:648:24 | a.my_get() | main.rs:648:5:648:25 | print_i64(...) | | -| main.rs:649:5:649:5 | a | main.rs:649:25:649:25 | 2 | | -| main.rs:649:5:649:27 | ... = ... | main.rs:650:5:650:26 | ExprStmt | | -| main.rs:649:5:649:28 | ExprStmt | main.rs:649:5:649:5 | a | | -| main.rs:649:9:649:27 | MyStruct {...} | main.rs:649:5:649:27 | ... = ... | | -| main.rs:649:25:649:25 | 2 | main.rs:649:9:649:27 | MyStruct {...} | | +| main.rs:649:5:649:5 | a | main.rs:649:5:649:9 | a.val | | +| main.rs:649:5:649:9 | a.val | main.rs:649:13:649:13 | 5 | | +| main.rs:649:5:649:13 | ... = ... | main.rs:650:5:650:26 | ExprStmt | | +| main.rs:649:5:649:14 | ExprStmt | main.rs:649:5:649:5 | a | | +| main.rs:649:13:649:13 | 5 | main.rs:649:5:649:13 | ... = ... | | | main.rs:650:5:650:13 | print_i64 | main.rs:650:15:650:15 | a | | -| main.rs:650:5:650:25 | print_i64(...) | main.rs:644:14:651:1 | { ... } | | +| main.rs:650:5:650:25 | print_i64(...) | main.rs:651:5:651:28 | ExprStmt | | | main.rs:650:5:650:26 | ExprStmt | main.rs:650:5:650:13 | print_i64 | | | main.rs:650:15:650:15 | a | main.rs:650:15:650:24 | a.my_get() | | | main.rs:650:15:650:24 | a.my_get() | main.rs:650:5:650:25 | print_i64(...) | | -| main.rs:653:1:660:1 | enter fn arrays | main.rs:654:5:654:26 | let ... = ... | | -| main.rs:653:1:660:1 | exit fn arrays (normal) | main.rs:653:1:660:1 | exit fn arrays | | -| main.rs:653:13:660:1 | { ... } | main.rs:653:1:660:1 | exit fn arrays (normal) | | -| main.rs:654:5:654:26 | let ... = ... | main.rs:654:18:654:18 | 1 | | -| main.rs:654:9:654:13 | mut a | main.rs:655:5:655:20 | ExprStmt | match | -| main.rs:654:13:654:13 | a | main.rs:654:9:654:13 | mut a | | -| main.rs:654:17:654:25 | [...] | main.rs:654:13:654:13 | a | | -| main.rs:654:18:654:18 | 1 | main.rs:654:21:654:21 | 2 | | -| main.rs:654:21:654:21 | 2 | main.rs:654:24:654:24 | 3 | | -| main.rs:654:24:654:24 | 3 | main.rs:654:17:654:25 | [...] | | -| main.rs:655:5:655:13 | print_i64 | main.rs:655:15:655:15 | a | | -| main.rs:655:5:655:19 | print_i64(...) | main.rs:656:5:656:13 | ExprStmt | | -| main.rs:655:5:655:20 | ExprStmt | main.rs:655:5:655:13 | print_i64 | | -| main.rs:655:15:655:15 | a | main.rs:655:17:655:17 | 0 | | -| main.rs:655:15:655:18 | a[0] | main.rs:655:5:655:19 | print_i64(...) | | -| main.rs:655:17:655:17 | 0 | main.rs:655:15:655:18 | a[0] | | -| main.rs:656:5:656:5 | a | main.rs:656:7:656:7 | 1 | | -| main.rs:656:5:656:8 | a[1] | main.rs:656:12:656:12 | 5 | | -| main.rs:656:5:656:12 | ... = ... | main.rs:657:5:657:20 | ExprStmt | | -| main.rs:656:5:656:13 | ExprStmt | main.rs:656:5:656:5 | a | | -| main.rs:656:7:656:7 | 1 | main.rs:656:5:656:8 | a[1] | | -| main.rs:656:12:656:12 | 5 | main.rs:656:5:656:12 | ... = ... | | +| main.rs:651:5:651:5 | a | main.rs:651:25:651:25 | 2 | | +| main.rs:651:5:651:27 | ... = ... | main.rs:652:5:652:26 | ExprStmt | | +| main.rs:651:5:651:28 | ExprStmt | main.rs:651:5:651:5 | a | | +| main.rs:651:9:651:27 | MyStruct {...} | main.rs:651:5:651:27 | ... = ... | | +| main.rs:651:25:651:25 | 2 | main.rs:651:9:651:27 | MyStruct {...} | | +| main.rs:652:5:652:13 | print_i64 | main.rs:652:15:652:15 | a | | +| main.rs:652:5:652:25 | print_i64(...) | main.rs:646:14:653:1 | { ... } | | +| main.rs:652:5:652:26 | ExprStmt | main.rs:652:5:652:13 | print_i64 | | +| main.rs:652:15:652:15 | a | main.rs:652:15:652:24 | a.my_get() | | +| main.rs:652:15:652:24 | a.my_get() | main.rs:652:5:652:25 | print_i64(...) | | +| main.rs:655:1:662:1 | enter fn arrays | main.rs:656:5:656:26 | let ... = ... | | +| main.rs:655:1:662:1 | exit fn arrays (normal) | main.rs:655:1:662:1 | exit fn arrays | | +| main.rs:655:13:662:1 | { ... } | main.rs:655:1:662:1 | exit fn arrays (normal) | | +| main.rs:656:5:656:26 | let ... = ... | main.rs:656:18:656:18 | 1 | | +| main.rs:656:9:656:13 | mut a | main.rs:657:5:657:20 | ExprStmt | match | +| main.rs:656:13:656:13 | a | main.rs:656:9:656:13 | mut a | | +| main.rs:656:17:656:25 | [...] | main.rs:656:13:656:13 | a | | +| main.rs:656:18:656:18 | 1 | main.rs:656:21:656:21 | 2 | | +| main.rs:656:21:656:21 | 2 | main.rs:656:24:656:24 | 3 | | +| main.rs:656:24:656:24 | 3 | main.rs:656:17:656:25 | [...] | | | main.rs:657:5:657:13 | print_i64 | main.rs:657:15:657:15 | a | | -| main.rs:657:5:657:19 | print_i64(...) | main.rs:658:5:658:18 | ExprStmt | | +| main.rs:657:5:657:19 | print_i64(...) | main.rs:658:5:658:13 | ExprStmt | | | main.rs:657:5:657:20 | ExprStmt | main.rs:657:5:657:13 | print_i64 | | -| main.rs:657:15:657:15 | a | main.rs:657:17:657:17 | 1 | | -| main.rs:657:15:657:18 | a[1] | main.rs:657:5:657:19 | print_i64(...) | | -| main.rs:657:17:657:17 | 1 | main.rs:657:15:657:18 | a[1] | | -| main.rs:658:5:658:5 | a | main.rs:658:10:658:10 | 4 | | -| main.rs:658:5:658:17 | ... = ... | main.rs:659:5:659:20 | ExprStmt | | -| main.rs:658:5:658:18 | ExprStmt | main.rs:658:5:658:5 | a | | -| main.rs:658:9:658:17 | [...] | main.rs:658:5:658:17 | ... = ... | | -| main.rs:658:10:658:10 | 4 | main.rs:658:13:658:13 | 5 | | -| main.rs:658:13:658:13 | 5 | main.rs:658:16:658:16 | 6 | | -| main.rs:658:16:658:16 | 6 | main.rs:658:9:658:17 | [...] | | +| main.rs:657:15:657:15 | a | main.rs:657:17:657:17 | 0 | | +| main.rs:657:15:657:18 | a[0] | main.rs:657:5:657:19 | print_i64(...) | | +| main.rs:657:17:657:17 | 0 | main.rs:657:15:657:18 | a[0] | | +| main.rs:658:5:658:5 | a | main.rs:658:7:658:7 | 1 | | +| main.rs:658:5:658:8 | a[1] | main.rs:658:12:658:12 | 5 | | +| main.rs:658:5:658:12 | ... = ... | main.rs:659:5:659:20 | ExprStmt | | +| main.rs:658:5:658:13 | ExprStmt | main.rs:658:5:658:5 | a | | +| main.rs:658:7:658:7 | 1 | main.rs:658:5:658:8 | a[1] | | +| main.rs:658:12:658:12 | 5 | main.rs:658:5:658:12 | ... = ... | | | main.rs:659:5:659:13 | print_i64 | main.rs:659:15:659:15 | a | | -| main.rs:659:5:659:19 | print_i64(...) | main.rs:653:13:660:1 | { ... } | | +| main.rs:659:5:659:19 | print_i64(...) | main.rs:660:5:660:18 | ExprStmt | | | main.rs:659:5:659:20 | ExprStmt | main.rs:659:5:659:13 | print_i64 | | -| main.rs:659:15:659:15 | a | main.rs:659:17:659:17 | 2 | | -| main.rs:659:15:659:18 | a[2] | main.rs:659:5:659:19 | print_i64(...) | | -| main.rs:659:17:659:17 | 2 | main.rs:659:15:659:18 | a[2] | | -| main.rs:662:1:669:1 | enter fn ref_arg | main.rs:663:5:663:15 | let ... = 16 | | -| main.rs:662:1:669:1 | exit fn ref_arg (normal) | main.rs:662:1:669:1 | exit fn ref_arg | | -| main.rs:662:14:669:1 | { ... } | main.rs:662:1:669:1 | exit fn ref_arg (normal) | | -| main.rs:663:5:663:15 | let ... = 16 | main.rs:663:13:663:14 | 16 | | -| main.rs:663:9:663:9 | x | main.rs:663:9:663:9 | x | | -| main.rs:663:9:663:9 | x | main.rs:664:5:664:22 | ExprStmt | match | -| main.rs:663:13:663:14 | 16 | main.rs:663:9:663:9 | x | | -| main.rs:664:5:664:17 | print_i64_ref | main.rs:664:20:664:20 | x | | -| main.rs:664:5:664:21 | print_i64_ref(...) | main.rs:665:5:665:17 | ExprStmt | | -| main.rs:664:5:664:22 | ExprStmt | main.rs:664:5:664:17 | print_i64_ref | | -| main.rs:664:19:664:20 | &x | main.rs:664:5:664:21 | print_i64_ref(...) | | -| main.rs:664:20:664:20 | x | main.rs:664:19:664:20 | &x | | -| main.rs:665:5:665:13 | print_i64 | main.rs:665:15:665:15 | x | | -| main.rs:665:5:665:16 | print_i64(...) | main.rs:667:5:667:15 | let ... = 17 | | -| main.rs:665:5:665:17 | ExprStmt | main.rs:665:5:665:13 | print_i64 | | -| main.rs:665:15:665:15 | x | main.rs:665:5:665:16 | print_i64(...) | | -| main.rs:667:5:667:15 | let ... = 17 | main.rs:667:13:667:14 | 17 | | -| main.rs:667:9:667:9 | z | main.rs:667:9:667:9 | z | | -| main.rs:667:9:667:9 | z | main.rs:668:5:668:22 | ExprStmt | match | -| main.rs:667:13:667:14 | 17 | main.rs:667:9:667:9 | z | | -| main.rs:668:5:668:17 | print_i64_ref | main.rs:668:20:668:20 | z | | -| main.rs:668:5:668:21 | print_i64_ref(...) | main.rs:662:14:669:1 | { ... } | | -| main.rs:668:5:668:22 | ExprStmt | main.rs:668:5:668:17 | print_i64_ref | | -| main.rs:668:19:668:20 | &z | main.rs:668:5:668:21 | print_i64_ref(...) | | -| main.rs:668:20:668:20 | z | main.rs:668:19:668:20 | &z | | -| main.rs:676:5:678:5 | enter fn bar | main.rs:676:17:676:20 | self | | -| main.rs:676:5:678:5 | exit fn bar (normal) | main.rs:676:5:678:5 | exit fn bar | | -| main.rs:676:12:676:20 | SelfParam | main.rs:677:9:677:36 | ExprStmt | | -| main.rs:676:17:676:20 | self | main.rs:676:12:676:20 | SelfParam | | -| main.rs:676:23:678:5 | { ... } | main.rs:676:5:678:5 | exit fn bar (normal) | | -| main.rs:677:9:677:13 | * ... | main.rs:677:33:677:33 | 3 | | -| main.rs:677:9:677:35 | ... = ... | main.rs:676:23:678:5 | { ... } | | -| main.rs:677:9:677:36 | ExprStmt | main.rs:677:10:677:13 | self | | -| main.rs:677:10:677:13 | self | main.rs:677:9:677:13 | * ... | | -| main.rs:677:17:677:35 | MyStruct {...} | main.rs:677:9:677:35 | ... = ... | | -| main.rs:677:33:677:33 | 3 | main.rs:677:17:677:35 | MyStruct {...} | | -| main.rs:681:1:687:1 | enter fn ref_methodcall_receiver | main.rs:682:5:682:36 | let ... = ... | | -| main.rs:681:1:687:1 | exit fn ref_methodcall_receiver (normal) | main.rs:681:1:687:1 | exit fn ref_methodcall_receiver | | -| main.rs:681:30:687:1 | { ... } | main.rs:681:1:687:1 | exit fn ref_methodcall_receiver (normal) | | -| main.rs:682:5:682:36 | let ... = ... | main.rs:682:33:682:33 | 1 | | -| main.rs:682:9:682:13 | mut a | main.rs:683:5:683:12 | ExprStmt | match | -| main.rs:682:13:682:13 | a | main.rs:682:9:682:13 | mut a | | -| main.rs:682:17:682:35 | MyStruct {...} | main.rs:682:13:682:13 | a | | -| main.rs:682:33:682:33 | 1 | main.rs:682:17:682:35 | MyStruct {...} | | -| main.rs:683:5:683:5 | a | main.rs:683:5:683:11 | a.bar() | | -| main.rs:683:5:683:11 | a.bar() | main.rs:686:5:686:21 | ExprStmt | | -| main.rs:683:5:683:12 | ExprStmt | main.rs:683:5:683:5 | a | | -| main.rs:686:5:686:13 | print_i64 | main.rs:686:15:686:15 | a | | -| main.rs:686:5:686:20 | print_i64(...) | main.rs:681:30:687:1 | { ... } | | -| main.rs:686:5:686:21 | ExprStmt | main.rs:686:5:686:13 | print_i64 | | -| main.rs:686:15:686:15 | a | main.rs:686:15:686:19 | a.val | | -| main.rs:686:15:686:19 | a.val | main.rs:686:5:686:20 | print_i64(...) | | -| main.rs:703:1:714:1 | enter fn macro_invocation | main.rs:704:5:705:26 | let ... = ... | | -| main.rs:703:1:714:1 | exit fn macro_invocation (normal) | main.rs:703:1:714:1 | exit fn macro_invocation | | -| main.rs:703:23:714:1 | { ... } | main.rs:703:1:714:1 | exit fn macro_invocation (normal) | | -| main.rs:704:5:705:26 | let ... = ... | main.rs:705:23:705:24 | let ... = 37 | | -| main.rs:704:9:704:22 | var_from_macro | main.rs:704:9:704:22 | var_from_macro | | -| main.rs:704:9:704:22 | var_from_macro | main.rs:706:5:706:30 | ExprStmt | match | -| main.rs:705:9:705:21 | var_in_macro | main.rs:705:9:705:21 | var_in_macro | | -| main.rs:705:9:705:21 | var_in_macro | main.rs:705:9:705:21 | var_in_macro | match | -| main.rs:705:9:705:21 | var_in_macro | main.rs:705:23:705:24 | { ... } | | -| main.rs:705:9:705:25 | MacroExpr | main.rs:704:9:704:22 | var_from_macro | | -| main.rs:705:9:705:25 | let_in_macro!... | main.rs:705:9:705:25 | MacroExpr | | -| main.rs:705:23:705:24 | 37 | main.rs:705:9:705:21 | var_in_macro | | -| main.rs:705:23:705:24 | let ... = 37 | main.rs:705:23:705:24 | 37 | | -| main.rs:705:23:705:24 | { ... } | main.rs:705:9:705:25 | let_in_macro!... | | -| main.rs:706:5:706:13 | print_i64 | main.rs:706:15:706:28 | var_from_macro | | -| main.rs:706:5:706:29 | print_i64(...) | main.rs:707:5:707:26 | let ... = 33 | | -| main.rs:706:5:706:30 | ExprStmt | main.rs:706:5:706:13 | print_i64 | | -| main.rs:706:15:706:28 | var_from_macro | main.rs:706:5:706:29 | print_i64(...) | | -| main.rs:707:5:707:26 | let ... = 33 | main.rs:707:24:707:25 | 33 | | -| main.rs:707:9:707:20 | var_in_macro | main.rs:707:9:707:20 | var_in_macro | | -| main.rs:707:9:707:20 | var_in_macro | main.rs:712:5:712:44 | ExprStmt | match | -| main.rs:707:24:707:25 | 33 | main.rs:707:9:707:20 | var_in_macro | | -| main.rs:712:5:712:13 | print_i64 | main.rs:712:15:712:28 | let ... = 0 | | -| main.rs:712:5:712:43 | print_i64(...) | main.rs:713:5:713:28 | ExprStmt | | -| main.rs:712:5:712:44 | ExprStmt | main.rs:712:5:712:13 | print_i64 | | -| main.rs:712:15:712:28 | 0 | main.rs:712:15:712:28 | var_in_macro | | -| main.rs:712:15:712:28 | let ... = 0 | main.rs:712:15:712:28 | 0 | | -| main.rs:712:15:712:28 | var_in_macro | main.rs:712:15:712:28 | var_in_macro | | -| main.rs:712:15:712:28 | var_in_macro | main.rs:712:30:712:41 | var_in_macro | match | -| main.rs:712:15:712:42 | MacroExpr | main.rs:712:5:712:43 | print_i64(...) | | -| main.rs:712:15:712:42 | let_in_macro2!... | main.rs:712:15:712:42 | MacroExpr | | -| main.rs:712:30:712:41 | var_in_macro | main.rs:712:30:712:41 | { ... } | | -| main.rs:712:30:712:41 | { ... } | main.rs:712:15:712:42 | let_in_macro2!... | | -| main.rs:713:5:713:13 | print_i64 | main.rs:713:15:713:26 | var_in_macro | | -| main.rs:713:5:713:27 | print_i64(...) | main.rs:703:23:714:1 | { ... } | | -| main.rs:713:5:713:28 | ExprStmt | main.rs:713:5:713:13 | print_i64 | | -| main.rs:713:15:713:26 | var_in_macro | main.rs:713:5:713:27 | print_i64(...) | | -| main.rs:716:1:720:1 | enter fn let_without_initializer | main.rs:717:5:717:10 | let ... | | -| main.rs:716:1:720:1 | exit fn let_without_initializer (normal) | main.rs:716:1:720:1 | exit fn let_without_initializer | | -| main.rs:716:30:720:1 | { ... } | main.rs:716:1:720:1 | exit fn let_without_initializer (normal) | | -| main.rs:717:5:717:10 | let ... | main.rs:717:9:717:9 | x | | -| main.rs:717:9:717:9 | x | main.rs:717:9:717:9 | x | | -| main.rs:717:9:717:9 | x | main.rs:718:5:718:10 | ExprStmt | match | -| main.rs:718:5:718:5 | x | main.rs:718:9:718:9 | 1 | | -| main.rs:718:5:718:9 | ... = ... | main.rs:719:5:719:17 | ExprStmt | | -| main.rs:718:5:718:10 | ExprStmt | main.rs:718:5:718:5 | x | | -| main.rs:718:9:718:9 | 1 | main.rs:718:5:718:9 | ... = ... | | -| main.rs:719:5:719:13 | print_i64 | main.rs:719:15:719:15 | x | | -| main.rs:719:5:719:16 | print_i64(...) | main.rs:716:30:720:1 | { ... } | | -| main.rs:719:5:719:17 | ExprStmt | main.rs:719:5:719:13 | print_i64 | | -| main.rs:719:15:719:15 | x | main.rs:719:5:719:16 | print_i64(...) | | -| main.rs:722:1:732:1 | enter fn capture_phi | main.rs:723:5:723:20 | let ... = 100 | | -| main.rs:722:1:732:1 | exit fn capture_phi (normal) | main.rs:722:1:732:1 | exit fn capture_phi | | -| main.rs:722:18:732:1 | { ... } | main.rs:722:1:732:1 | exit fn capture_phi (normal) | | -| main.rs:723:5:723:20 | let ... = 100 | main.rs:723:17:723:19 | 100 | | -| main.rs:723:9:723:13 | mut x | main.rs:724:5:729:6 | let ... = ... | match | -| main.rs:723:13:723:13 | x | main.rs:723:9:723:13 | mut x | | -| main.rs:723:17:723:19 | 100 | main.rs:723:13:723:13 | x | | -| main.rs:724:5:729:6 | let ... = ... | main.rs:724:19:729:5 | \|...\| ... | | -| main.rs:724:9:724:15 | mut cap | main.rs:730:5:730:14 | ExprStmt | match | -| main.rs:724:13:724:15 | cap | main.rs:724:9:724:15 | mut cap | | -| main.rs:724:19:729:5 | \|...\| ... | main.rs:724:13:724:15 | cap | | -| main.rs:724:19:729:5 | enter \|...\| ... | main.rs:724:20:724:20 | b | | -| main.rs:724:19:729:5 | exit \|...\| ... (normal) | main.rs:724:19:729:5 | exit \|...\| ... | | -| main.rs:724:20:724:20 | b | main.rs:724:20:724:20 | b | | -| main.rs:724:20:724:20 | b | main.rs:724:20:724:26 | ...: bool | match | -| main.rs:724:20:724:26 | ...: bool | main.rs:725:9:728:10 | let _ = ... | | -| main.rs:724:29:729:5 | { ... } | main.rs:724:19:729:5 | exit \|...\| ... (normal) | | -| main.rs:725:9:728:10 | let _ = ... | main.rs:726:20:726:20 | b | | -| main.rs:726:13:726:13 | _ | main.rs:724:29:729:5 | { ... } | match | -| main.rs:726:17:728:9 | if b {...} | main.rs:726:13:726:13 | _ | | -| main.rs:726:20:726:20 | b | main.rs:726:17:728:9 | if b {...} | false | -| main.rs:726:20:726:20 | b | main.rs:727:13:727:20 | ExprStmt | true | -| main.rs:726:22:728:9 | { ... } | main.rs:726:17:728:9 | if b {...} | | -| main.rs:727:13:727:13 | x | main.rs:727:17:727:19 | 200 | | -| main.rs:727:13:727:19 | ... = ... | main.rs:726:22:728:9 | { ... } | | -| main.rs:727:13:727:20 | ExprStmt | main.rs:727:13:727:13 | x | | -| main.rs:727:17:727:19 | 200 | main.rs:727:13:727:19 | ... = ... | | -| main.rs:730:5:730:7 | cap | main.rs:730:9:730:12 | true | | -| main.rs:730:5:730:13 | cap(...) | main.rs:731:5:731:17 | ExprStmt | | -| main.rs:730:5:730:14 | ExprStmt | main.rs:730:5:730:7 | cap | | -| main.rs:730:9:730:12 | true | main.rs:730:5:730:13 | cap(...) | | -| main.rs:731:5:731:13 | print_i64 | main.rs:731:15:731:15 | x | | -| main.rs:731:5:731:16 | print_i64(...) | main.rs:722:18:732:1 | { ... } | | -| main.rs:731:5:731:17 | ExprStmt | main.rs:731:5:731:13 | print_i64 | | -| main.rs:731:15:731:15 | x | main.rs:731:5:731:16 | print_i64(...) | | -| main.rs:734:1:776:1 | enter fn main | main.rs:735:5:735:25 | ExprStmt | | -| main.rs:734:1:776:1 | exit fn main (normal) | main.rs:734:1:776:1 | exit fn main | | -| main.rs:734:11:776:1 | { ... } | main.rs:734:1:776:1 | exit fn main (normal) | | -| main.rs:735:5:735:22 | immutable_variable | main.rs:735:5:735:24 | immutable_variable(...) | | -| main.rs:735:5:735:24 | immutable_variable(...) | main.rs:736:5:736:23 | ExprStmt | | -| main.rs:735:5:735:25 | ExprStmt | main.rs:735:5:735:22 | immutable_variable | | -| main.rs:736:5:736:20 | mutable_variable | main.rs:736:5:736:22 | mutable_variable(...) | | -| main.rs:736:5:736:22 | mutable_variable(...) | main.rs:737:5:737:40 | ExprStmt | | -| main.rs:736:5:736:23 | ExprStmt | main.rs:736:5:736:20 | mutable_variable | | -| main.rs:737:5:737:37 | mutable_variable_immutable_borrow | main.rs:737:5:737:39 | mutable_variable_immutable_borrow(...) | | -| main.rs:737:5:737:39 | mutable_variable_immutable_borrow(...) | main.rs:738:5:738:23 | ExprStmt | | -| main.rs:737:5:737:40 | ExprStmt | main.rs:737:5:737:37 | mutable_variable_immutable_borrow | | -| main.rs:738:5:738:20 | variable_shadow1 | main.rs:738:5:738:22 | variable_shadow1(...) | | -| main.rs:738:5:738:22 | variable_shadow1(...) | main.rs:739:5:739:23 | ExprStmt | | -| main.rs:738:5:738:23 | ExprStmt | main.rs:738:5:738:20 | variable_shadow1 | | -| main.rs:739:5:739:20 | variable_shadow2 | main.rs:739:5:739:22 | variable_shadow2(...) | | -| main.rs:739:5:739:22 | variable_shadow2(...) | main.rs:740:5:740:19 | ExprStmt | | -| main.rs:739:5:739:23 | ExprStmt | main.rs:739:5:739:20 | variable_shadow2 | | -| main.rs:740:5:740:16 | let_pattern1 | main.rs:740:5:740:18 | let_pattern1(...) | | -| main.rs:740:5:740:18 | let_pattern1(...) | main.rs:741:5:741:19 | ExprStmt | | -| main.rs:740:5:740:19 | ExprStmt | main.rs:740:5:740:16 | let_pattern1 | | -| main.rs:741:5:741:16 | let_pattern2 | main.rs:741:5:741:18 | let_pattern2(...) | | -| main.rs:741:5:741:18 | let_pattern2(...) | main.rs:742:5:742:19 | ExprStmt | | -| main.rs:741:5:741:19 | ExprStmt | main.rs:741:5:741:16 | let_pattern2 | | -| main.rs:742:5:742:16 | let_pattern3 | main.rs:742:5:742:18 | let_pattern3(...) | | -| main.rs:742:5:742:18 | let_pattern3(...) | main.rs:743:5:743:19 | ExprStmt | | -| main.rs:742:5:742:19 | ExprStmt | main.rs:742:5:742:16 | let_pattern3 | | -| main.rs:743:5:743:16 | let_pattern4 | main.rs:743:5:743:18 | let_pattern4(...) | | -| main.rs:743:5:743:18 | let_pattern4(...) | main.rs:744:5:744:21 | ExprStmt | | -| main.rs:743:5:743:19 | ExprStmt | main.rs:743:5:743:16 | let_pattern4 | | -| main.rs:744:5:744:18 | match_pattern1 | main.rs:744:5:744:20 | match_pattern1(...) | | -| main.rs:744:5:744:20 | match_pattern1(...) | main.rs:745:5:745:21 | ExprStmt | | -| main.rs:744:5:744:21 | ExprStmt | main.rs:744:5:744:18 | match_pattern1 | | -| main.rs:745:5:745:18 | match_pattern2 | main.rs:745:5:745:20 | match_pattern2(...) | | -| main.rs:745:5:745:20 | match_pattern2(...) | main.rs:746:5:746:21 | ExprStmt | | -| main.rs:745:5:745:21 | ExprStmt | main.rs:745:5:745:18 | match_pattern2 | | -| main.rs:746:5:746:18 | match_pattern3 | main.rs:746:5:746:20 | match_pattern3(...) | | -| main.rs:746:5:746:20 | match_pattern3(...) | main.rs:747:5:747:21 | ExprStmt | | -| main.rs:746:5:746:21 | ExprStmt | main.rs:746:5:746:18 | match_pattern3 | | -| main.rs:747:5:747:18 | match_pattern4 | main.rs:747:5:747:20 | match_pattern4(...) | | -| main.rs:747:5:747:20 | match_pattern4(...) | main.rs:748:5:748:21 | ExprStmt | | -| main.rs:747:5:747:21 | ExprStmt | main.rs:747:5:747:18 | match_pattern4 | | -| main.rs:748:5:748:18 | match_pattern5 | main.rs:748:5:748:20 | match_pattern5(...) | | -| main.rs:748:5:748:20 | match_pattern5(...) | main.rs:749:5:749:21 | ExprStmt | | -| main.rs:748:5:748:21 | ExprStmt | main.rs:748:5:748:18 | match_pattern5 | | -| main.rs:749:5:749:18 | match_pattern6 | main.rs:749:5:749:20 | match_pattern6(...) | | -| main.rs:749:5:749:20 | match_pattern6(...) | main.rs:750:5:750:21 | ExprStmt | | -| main.rs:749:5:749:21 | ExprStmt | main.rs:749:5:749:18 | match_pattern6 | | -| main.rs:750:5:750:18 | match_pattern7 | main.rs:750:5:750:20 | match_pattern7(...) | | -| main.rs:750:5:750:20 | match_pattern7(...) | main.rs:751:5:751:21 | ExprStmt | | -| main.rs:750:5:750:21 | ExprStmt | main.rs:750:5:750:18 | match_pattern7 | | -| main.rs:751:5:751:18 | match_pattern8 | main.rs:751:5:751:20 | match_pattern8(...) | | -| main.rs:751:5:751:20 | match_pattern8(...) | main.rs:752:5:752:21 | ExprStmt | | -| main.rs:751:5:751:21 | ExprStmt | main.rs:751:5:751:18 | match_pattern8 | | -| main.rs:752:5:752:18 | match_pattern9 | main.rs:752:5:752:20 | match_pattern9(...) | | -| main.rs:752:5:752:20 | match_pattern9(...) | main.rs:753:5:753:22 | ExprStmt | | -| main.rs:752:5:752:21 | ExprStmt | main.rs:752:5:752:18 | match_pattern9 | | -| main.rs:753:5:753:19 | match_pattern10 | main.rs:753:5:753:21 | match_pattern10(...) | | -| main.rs:753:5:753:21 | match_pattern10(...) | main.rs:754:5:754:22 | ExprStmt | | -| main.rs:753:5:753:22 | ExprStmt | main.rs:753:5:753:19 | match_pattern10 | | -| main.rs:754:5:754:19 | match_pattern11 | main.rs:754:5:754:21 | match_pattern11(...) | | -| main.rs:754:5:754:21 | match_pattern11(...) | main.rs:755:5:755:22 | ExprStmt | | -| main.rs:754:5:754:22 | ExprStmt | main.rs:754:5:754:19 | match_pattern11 | | -| main.rs:755:5:755:19 | match_pattern12 | main.rs:755:5:755:21 | match_pattern12(...) | | -| main.rs:755:5:755:21 | match_pattern12(...) | main.rs:756:5:756:22 | ExprStmt | | -| main.rs:755:5:755:22 | ExprStmt | main.rs:755:5:755:19 | match_pattern12 | | -| main.rs:756:5:756:19 | match_pattern13 | main.rs:756:5:756:21 | match_pattern13(...) | | -| main.rs:756:5:756:21 | match_pattern13(...) | main.rs:757:5:757:22 | ExprStmt | | -| main.rs:756:5:756:22 | ExprStmt | main.rs:756:5:756:19 | match_pattern13 | | -| main.rs:757:5:757:19 | match_pattern14 | main.rs:757:5:757:21 | match_pattern14(...) | | -| main.rs:757:5:757:21 | match_pattern14(...) | main.rs:758:5:758:36 | ExprStmt | | -| main.rs:757:5:757:22 | ExprStmt | main.rs:757:5:757:19 | match_pattern14 | | -| main.rs:758:5:758:18 | param_pattern1 | main.rs:758:20:758:22 | "a" | | -| main.rs:758:5:758:35 | param_pattern1(...) | main.rs:759:5:759:37 | ExprStmt | | -| main.rs:758:5:758:36 | ExprStmt | main.rs:758:5:758:18 | param_pattern1 | | -| main.rs:758:20:758:22 | "a" | main.rs:758:26:758:28 | "b" | | -| main.rs:758:25:758:34 | TupleExpr | main.rs:758:5:758:35 | param_pattern1(...) | | -| main.rs:758:26:758:28 | "b" | main.rs:758:31:758:33 | "c" | | -| main.rs:758:31:758:33 | "c" | main.rs:758:25:758:34 | TupleExpr | | -| main.rs:759:5:759:18 | param_pattern2 | main.rs:759:20:759:31 | ...::Left | | -| main.rs:759:5:759:36 | param_pattern2(...) | main.rs:760:5:760:26 | ExprStmt | | -| main.rs:759:5:759:37 | ExprStmt | main.rs:759:5:759:18 | param_pattern2 | | -| main.rs:759:20:759:31 | ...::Left | main.rs:759:33:759:34 | 45 | | -| main.rs:759:20:759:35 | ...::Left(...) | main.rs:759:5:759:36 | param_pattern2(...) | | -| main.rs:759:33:759:34 | 45 | main.rs:759:20:759:35 | ...::Left(...) | | -| main.rs:760:5:760:23 | destruct_assignment | main.rs:760:5:760:25 | destruct_assignment(...) | | -| main.rs:760:5:760:25 | destruct_assignment(...) | main.rs:761:5:761:23 | ExprStmt | | -| main.rs:760:5:760:26 | ExprStmt | main.rs:760:5:760:23 | destruct_assignment | | -| main.rs:761:5:761:20 | closure_variable | main.rs:761:5:761:22 | closure_variable(...) | | -| main.rs:761:5:761:22 | closure_variable(...) | main.rs:762:5:762:22 | ExprStmt | | -| main.rs:761:5:761:23 | ExprStmt | main.rs:761:5:761:20 | closure_variable | | -| main.rs:762:5:762:19 | nested_function | main.rs:762:5:762:21 | nested_function(...) | | -| main.rs:762:5:762:21 | nested_function(...) | main.rs:763:5:763:19 | ExprStmt | | -| main.rs:762:5:762:22 | ExprStmt | main.rs:762:5:762:19 | nested_function | | -| main.rs:763:5:763:16 | for_variable | main.rs:763:5:763:18 | for_variable(...) | | -| main.rs:763:5:763:18 | for_variable(...) | main.rs:764:5:764:17 | ExprStmt | | -| main.rs:763:5:763:19 | ExprStmt | main.rs:763:5:763:16 | for_variable | | -| main.rs:764:5:764:14 | add_assign | main.rs:764:5:764:16 | add_assign(...) | | -| main.rs:764:5:764:16 | add_assign(...) | main.rs:765:5:765:13 | ExprStmt | | -| main.rs:764:5:764:17 | ExprStmt | main.rs:764:5:764:14 | add_assign | | -| main.rs:765:5:765:10 | mutate | main.rs:765:5:765:12 | mutate(...) | | -| main.rs:765:5:765:12 | mutate(...) | main.rs:766:5:766:17 | ExprStmt | | -| main.rs:765:5:765:13 | ExprStmt | main.rs:765:5:765:10 | mutate | | -| main.rs:766:5:766:14 | mutate_arg | main.rs:766:5:766:16 | mutate_arg(...) | | -| main.rs:766:5:766:16 | mutate_arg(...) | main.rs:767:5:767:12 | ExprStmt | | -| main.rs:766:5:766:17 | ExprStmt | main.rs:766:5:766:14 | mutate_arg | | -| main.rs:767:5:767:9 | alias | main.rs:767:5:767:11 | alias(...) | | -| main.rs:767:5:767:11 | alias(...) | main.rs:768:5:768:18 | ExprStmt | | -| main.rs:767:5:767:12 | ExprStmt | main.rs:767:5:767:9 | alias | | -| main.rs:768:5:768:15 | capture_mut | main.rs:768:5:768:17 | capture_mut(...) | | -| main.rs:768:5:768:17 | capture_mut(...) | main.rs:769:5:769:20 | ExprStmt | | -| main.rs:768:5:768:18 | ExprStmt | main.rs:768:5:768:15 | capture_mut | | -| main.rs:769:5:769:17 | capture_immut | main.rs:769:5:769:19 | capture_immut(...) | | -| main.rs:769:5:769:19 | capture_immut(...) | main.rs:770:5:770:26 | ExprStmt | | -| main.rs:769:5:769:20 | ExprStmt | main.rs:769:5:769:17 | capture_immut | | -| main.rs:770:5:770:23 | async_block_capture | main.rs:770:5:770:25 | async_block_capture(...) | | -| main.rs:770:5:770:25 | async_block_capture(...) | main.rs:771:5:771:14 | ExprStmt | | -| main.rs:770:5:770:26 | ExprStmt | main.rs:770:5:770:23 | async_block_capture | | -| main.rs:771:5:771:11 | structs | main.rs:771:5:771:13 | structs(...) | | -| main.rs:771:5:771:13 | structs(...) | main.rs:772:5:772:14 | ExprStmt | | -| main.rs:771:5:771:14 | ExprStmt | main.rs:771:5:771:11 | structs | | -| main.rs:772:5:772:11 | ref_arg | main.rs:772:5:772:13 | ref_arg(...) | | -| main.rs:772:5:772:13 | ref_arg(...) | main.rs:773:5:773:30 | ExprStmt | | -| main.rs:772:5:772:14 | ExprStmt | main.rs:772:5:772:11 | ref_arg | | -| main.rs:773:5:773:27 | ref_methodcall_receiver | main.rs:773:5:773:29 | ref_methodcall_receiver(...) | | -| main.rs:773:5:773:29 | ref_methodcall_receiver(...) | main.rs:774:5:774:23 | ExprStmt | | -| main.rs:773:5:773:30 | ExprStmt | main.rs:773:5:773:27 | ref_methodcall_receiver | | -| main.rs:774:5:774:20 | macro_invocation | main.rs:774:5:774:22 | macro_invocation(...) | | -| main.rs:774:5:774:22 | macro_invocation(...) | main.rs:775:5:775:18 | ExprStmt | | -| main.rs:774:5:774:23 | ExprStmt | main.rs:774:5:774:20 | macro_invocation | | -| main.rs:775:5:775:15 | capture_phi | main.rs:775:5:775:17 | capture_phi(...) | | -| main.rs:775:5:775:17 | capture_phi(...) | main.rs:734:11:776:1 | { ... } | | -| main.rs:775:5:775:18 | ExprStmt | main.rs:775:5:775:15 | capture_phi | | +| main.rs:659:15:659:15 | a | main.rs:659:17:659:17 | 1 | | +| main.rs:659:15:659:18 | a[1] | main.rs:659:5:659:19 | print_i64(...) | | +| main.rs:659:17:659:17 | 1 | main.rs:659:15:659:18 | a[1] | | +| main.rs:660:5:660:5 | a | main.rs:660:10:660:10 | 4 | | +| main.rs:660:5:660:17 | ... = ... | main.rs:661:5:661:20 | ExprStmt | | +| main.rs:660:5:660:18 | ExprStmt | main.rs:660:5:660:5 | a | | +| main.rs:660:9:660:17 | [...] | main.rs:660:5:660:17 | ... = ... | | +| main.rs:660:10:660:10 | 4 | main.rs:660:13:660:13 | 5 | | +| main.rs:660:13:660:13 | 5 | main.rs:660:16:660:16 | 6 | | +| main.rs:660:16:660:16 | 6 | main.rs:660:9:660:17 | [...] | | +| main.rs:661:5:661:13 | print_i64 | main.rs:661:15:661:15 | a | | +| main.rs:661:5:661:19 | print_i64(...) | main.rs:655:13:662:1 | { ... } | | +| main.rs:661:5:661:20 | ExprStmt | main.rs:661:5:661:13 | print_i64 | | +| main.rs:661:15:661:15 | a | main.rs:661:17:661:17 | 2 | | +| main.rs:661:15:661:18 | a[2] | main.rs:661:5:661:19 | print_i64(...) | | +| main.rs:661:17:661:17 | 2 | main.rs:661:15:661:18 | a[2] | | +| main.rs:664:1:671:1 | enter fn ref_arg | main.rs:665:5:665:15 | let ... = 16 | | +| main.rs:664:1:671:1 | exit fn ref_arg (normal) | main.rs:664:1:671:1 | exit fn ref_arg | | +| main.rs:664:14:671:1 | { ... } | main.rs:664:1:671:1 | exit fn ref_arg (normal) | | +| main.rs:665:5:665:15 | let ... = 16 | main.rs:665:13:665:14 | 16 | | +| main.rs:665:9:665:9 | x | main.rs:665:9:665:9 | x | | +| main.rs:665:9:665:9 | x | main.rs:666:5:666:22 | ExprStmt | match | +| main.rs:665:13:665:14 | 16 | main.rs:665:9:665:9 | x | | +| main.rs:666:5:666:17 | print_i64_ref | main.rs:666:20:666:20 | x | | +| main.rs:666:5:666:21 | print_i64_ref(...) | main.rs:667:5:667:17 | ExprStmt | | +| main.rs:666:5:666:22 | ExprStmt | main.rs:666:5:666:17 | print_i64_ref | | +| main.rs:666:19:666:20 | &x | main.rs:666:5:666:21 | print_i64_ref(...) | | +| main.rs:666:20:666:20 | x | main.rs:666:19:666:20 | &x | | +| main.rs:667:5:667:13 | print_i64 | main.rs:667:15:667:15 | x | | +| main.rs:667:5:667:16 | print_i64(...) | main.rs:669:5:669:15 | let ... = 17 | | +| main.rs:667:5:667:17 | ExprStmt | main.rs:667:5:667:13 | print_i64 | | +| main.rs:667:15:667:15 | x | main.rs:667:5:667:16 | print_i64(...) | | +| main.rs:669:5:669:15 | let ... = 17 | main.rs:669:13:669:14 | 17 | | +| main.rs:669:9:669:9 | z | main.rs:669:9:669:9 | z | | +| main.rs:669:9:669:9 | z | main.rs:670:5:670:22 | ExprStmt | match | +| main.rs:669:13:669:14 | 17 | main.rs:669:9:669:9 | z | | +| main.rs:670:5:670:17 | print_i64_ref | main.rs:670:20:670:20 | z | | +| main.rs:670:5:670:21 | print_i64_ref(...) | main.rs:664:14:671:1 | { ... } | | +| main.rs:670:5:670:22 | ExprStmt | main.rs:670:5:670:17 | print_i64_ref | | +| main.rs:670:19:670:20 | &z | main.rs:670:5:670:21 | print_i64_ref(...) | | +| main.rs:670:20:670:20 | z | main.rs:670:19:670:20 | &z | | +| main.rs:678:5:680:5 | enter fn bar | main.rs:678:17:678:20 | self | | +| main.rs:678:5:680:5 | exit fn bar (normal) | main.rs:678:5:680:5 | exit fn bar | | +| main.rs:678:12:678:20 | SelfParam | main.rs:679:9:679:36 | ExprStmt | | +| main.rs:678:17:678:20 | self | main.rs:678:12:678:20 | SelfParam | | +| main.rs:678:23:680:5 | { ... } | main.rs:678:5:680:5 | exit fn bar (normal) | | +| main.rs:679:9:679:13 | * ... | main.rs:679:33:679:33 | 3 | | +| main.rs:679:9:679:35 | ... = ... | main.rs:678:23:680:5 | { ... } | | +| main.rs:679:9:679:36 | ExprStmt | main.rs:679:10:679:13 | self | | +| main.rs:679:10:679:13 | self | main.rs:679:9:679:13 | * ... | | +| main.rs:679:17:679:35 | MyStruct {...} | main.rs:679:9:679:35 | ... = ... | | +| main.rs:679:33:679:33 | 3 | main.rs:679:17:679:35 | MyStruct {...} | | +| main.rs:683:1:689:1 | enter fn ref_methodcall_receiver | main.rs:684:5:684:36 | let ... = ... | | +| main.rs:683:1:689:1 | exit fn ref_methodcall_receiver (normal) | main.rs:683:1:689:1 | exit fn ref_methodcall_receiver | | +| main.rs:683:30:689:1 | { ... } | main.rs:683:1:689:1 | exit fn ref_methodcall_receiver (normal) | | +| main.rs:684:5:684:36 | let ... = ... | main.rs:684:33:684:33 | 1 | | +| main.rs:684:9:684:13 | mut a | main.rs:685:5:685:12 | ExprStmt | match | +| main.rs:684:13:684:13 | a | main.rs:684:9:684:13 | mut a | | +| main.rs:684:17:684:35 | MyStruct {...} | main.rs:684:13:684:13 | a | | +| main.rs:684:33:684:33 | 1 | main.rs:684:17:684:35 | MyStruct {...} | | +| main.rs:685:5:685:5 | a | main.rs:685:5:685:11 | a.bar() | | +| main.rs:685:5:685:11 | a.bar() | main.rs:688:5:688:21 | ExprStmt | | +| main.rs:685:5:685:12 | ExprStmt | main.rs:685:5:685:5 | a | | +| main.rs:688:5:688:13 | print_i64 | main.rs:688:15:688:15 | a | | +| main.rs:688:5:688:20 | print_i64(...) | main.rs:683:30:689:1 | { ... } | | +| main.rs:688:5:688:21 | ExprStmt | main.rs:688:5:688:13 | print_i64 | | +| main.rs:688:15:688:15 | a | main.rs:688:15:688:19 | a.val | | +| main.rs:688:15:688:19 | a.val | main.rs:688:5:688:20 | print_i64(...) | | +| main.rs:705:1:716:1 | enter fn macro_invocation | main.rs:706:5:707:26 | let ... = ... | | +| main.rs:705:1:716:1 | exit fn macro_invocation (normal) | main.rs:705:1:716:1 | exit fn macro_invocation | | +| main.rs:705:23:716:1 | { ... } | main.rs:705:1:716:1 | exit fn macro_invocation (normal) | | +| main.rs:706:5:707:26 | let ... = ... | main.rs:707:23:707:24 | let ... = 37 | | +| main.rs:706:9:706:22 | var_from_macro | main.rs:706:9:706:22 | var_from_macro | | +| main.rs:706:9:706:22 | var_from_macro | main.rs:708:5:708:30 | ExprStmt | match | +| main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | | +| main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | match | +| main.rs:707:9:707:21 | var_in_macro | main.rs:707:23:707:24 | { ... } | | +| main.rs:707:9:707:25 | MacroExpr | main.rs:706:9:706:22 | var_from_macro | | +| main.rs:707:9:707:25 | let_in_macro!... | main.rs:707:9:707:25 | MacroExpr | | +| main.rs:707:23:707:24 | 37 | main.rs:707:9:707:21 | var_in_macro | | +| main.rs:707:23:707:24 | let ... = 37 | main.rs:707:23:707:24 | 37 | | +| main.rs:707:23:707:24 | { ... } | main.rs:707:9:707:25 | let_in_macro!... | | +| main.rs:708:5:708:13 | print_i64 | main.rs:708:15:708:28 | var_from_macro | | +| main.rs:708:5:708:29 | print_i64(...) | main.rs:709:5:709:26 | let ... = 33 | | +| main.rs:708:5:708:30 | ExprStmt | main.rs:708:5:708:13 | print_i64 | | +| main.rs:708:15:708:28 | var_from_macro | main.rs:708:5:708:29 | print_i64(...) | | +| main.rs:709:5:709:26 | let ... = 33 | main.rs:709:24:709:25 | 33 | | +| main.rs:709:9:709:20 | var_in_macro | main.rs:709:9:709:20 | var_in_macro | | +| main.rs:709:9:709:20 | var_in_macro | main.rs:714:5:714:44 | ExprStmt | match | +| main.rs:709:24:709:25 | 33 | main.rs:709:9:709:20 | var_in_macro | | +| main.rs:714:5:714:13 | print_i64 | main.rs:714:15:714:28 | let ... = 0 | | +| main.rs:714:5:714:43 | print_i64(...) | main.rs:715:5:715:28 | ExprStmt | | +| main.rs:714:5:714:44 | ExprStmt | main.rs:714:5:714:13 | print_i64 | | +| main.rs:714:15:714:28 | 0 | main.rs:714:15:714:28 | var_in_macro | | +| main.rs:714:15:714:28 | let ... = 0 | main.rs:714:15:714:28 | 0 | | +| main.rs:714:15:714:28 | var_in_macro | main.rs:714:15:714:28 | var_in_macro | | +| main.rs:714:15:714:28 | var_in_macro | main.rs:714:30:714:41 | var_in_macro | match | +| main.rs:714:15:714:42 | MacroExpr | main.rs:714:5:714:43 | print_i64(...) | | +| main.rs:714:15:714:42 | let_in_macro2!... | main.rs:714:15:714:42 | MacroExpr | | +| main.rs:714:30:714:41 | var_in_macro | main.rs:714:30:714:41 | { ... } | | +| main.rs:714:30:714:41 | { ... } | main.rs:714:15:714:42 | let_in_macro2!... | | +| main.rs:715:5:715:13 | print_i64 | main.rs:715:15:715:26 | var_in_macro | | +| main.rs:715:5:715:27 | print_i64(...) | main.rs:705:23:716:1 | { ... } | | +| main.rs:715:5:715:28 | ExprStmt | main.rs:715:5:715:13 | print_i64 | | +| main.rs:715:15:715:26 | var_in_macro | main.rs:715:5:715:27 | print_i64(...) | | +| main.rs:718:1:722:1 | enter fn let_without_initializer | main.rs:719:5:719:10 | let ... | | +| main.rs:718:1:722:1 | exit fn let_without_initializer (normal) | main.rs:718:1:722:1 | exit fn let_without_initializer | | +| main.rs:718:30:722:1 | { ... } | main.rs:718:1:722:1 | exit fn let_without_initializer (normal) | | +| main.rs:719:5:719:10 | let ... | main.rs:719:9:719:9 | x | | +| main.rs:719:9:719:9 | x | main.rs:719:9:719:9 | x | | +| main.rs:719:9:719:9 | x | main.rs:720:5:720:10 | ExprStmt | match | +| main.rs:720:5:720:5 | x | main.rs:720:9:720:9 | 1 | | +| main.rs:720:5:720:9 | ... = ... | main.rs:721:5:721:17 | ExprStmt | | +| main.rs:720:5:720:10 | ExprStmt | main.rs:720:5:720:5 | x | | +| main.rs:720:9:720:9 | 1 | main.rs:720:5:720:9 | ... = ... | | +| main.rs:721:5:721:13 | print_i64 | main.rs:721:15:721:15 | x | | +| main.rs:721:5:721:16 | print_i64(...) | main.rs:718:30:722:1 | { ... } | | +| main.rs:721:5:721:17 | ExprStmt | main.rs:721:5:721:13 | print_i64 | | +| main.rs:721:15:721:15 | x | main.rs:721:5:721:16 | print_i64(...) | | +| main.rs:724:1:734:1 | enter fn capture_phi | main.rs:725:5:725:20 | let ... = 100 | | +| main.rs:724:1:734:1 | exit fn capture_phi (normal) | main.rs:724:1:734:1 | exit fn capture_phi | | +| main.rs:724:18:734:1 | { ... } | main.rs:724:1:734:1 | exit fn capture_phi (normal) | | +| main.rs:725:5:725:20 | let ... = 100 | main.rs:725:17:725:19 | 100 | | +| main.rs:725:9:725:13 | mut x | main.rs:726:5:731:6 | let ... = ... | match | +| main.rs:725:13:725:13 | x | main.rs:725:9:725:13 | mut x | | +| main.rs:725:17:725:19 | 100 | main.rs:725:13:725:13 | x | | +| main.rs:726:5:731:6 | let ... = ... | main.rs:726:19:731:5 | \|...\| ... | | +| main.rs:726:9:726:15 | mut cap | main.rs:732:5:732:14 | ExprStmt | match | +| main.rs:726:13:726:15 | cap | main.rs:726:9:726:15 | mut cap | | +| main.rs:726:19:731:5 | \|...\| ... | main.rs:726:13:726:15 | cap | | +| main.rs:726:19:731:5 | enter \|...\| ... | main.rs:726:20:726:20 | b | | +| main.rs:726:19:731:5 | exit \|...\| ... (normal) | main.rs:726:19:731:5 | exit \|...\| ... | | +| main.rs:726:20:726:20 | b | main.rs:726:20:726:20 | b | | +| main.rs:726:20:726:20 | b | main.rs:726:20:726:26 | ...: bool | match | +| main.rs:726:20:726:26 | ...: bool | main.rs:727:9:730:10 | let _ = ... | | +| main.rs:726:29:731:5 | { ... } | main.rs:726:19:731:5 | exit \|...\| ... (normal) | | +| main.rs:727:9:730:10 | let _ = ... | main.rs:728:20:728:20 | b | | +| main.rs:728:13:728:13 | _ | main.rs:726:29:731:5 | { ... } | match | +| main.rs:728:17:730:9 | if b {...} | main.rs:728:13:728:13 | _ | | +| main.rs:728:20:728:20 | b | main.rs:728:17:730:9 | if b {...} | false | +| main.rs:728:20:728:20 | b | main.rs:729:13:729:20 | ExprStmt | true | +| main.rs:728:22:730:9 | { ... } | main.rs:728:17:730:9 | if b {...} | | +| main.rs:729:13:729:13 | x | main.rs:729:17:729:19 | 200 | | +| main.rs:729:13:729:19 | ... = ... | main.rs:728:22:730:9 | { ... } | | +| main.rs:729:13:729:20 | ExprStmt | main.rs:729:13:729:13 | x | | +| main.rs:729:17:729:19 | 200 | main.rs:729:13:729:19 | ... = ... | | +| main.rs:732:5:732:7 | cap | main.rs:732:9:732:12 | true | | +| main.rs:732:5:732:13 | cap(...) | main.rs:733:5:733:17 | ExprStmt | | +| main.rs:732:5:732:14 | ExprStmt | main.rs:732:5:732:7 | cap | | +| main.rs:732:9:732:12 | true | main.rs:732:5:732:13 | cap(...) | | +| main.rs:733:5:733:13 | print_i64 | main.rs:733:15:733:15 | x | | +| main.rs:733:5:733:16 | print_i64(...) | main.rs:724:18:734:1 | { ... } | | +| main.rs:733:5:733:17 | ExprStmt | main.rs:733:5:733:13 | print_i64 | | +| main.rs:733:15:733:15 | x | main.rs:733:5:733:16 | print_i64(...) | | +| main.rs:736:1:778:1 | enter fn main | main.rs:737:5:737:25 | ExprStmt | | +| main.rs:736:1:778:1 | exit fn main (normal) | main.rs:736:1:778:1 | exit fn main | | +| main.rs:736:11:778:1 | { ... } | main.rs:736:1:778:1 | exit fn main (normal) | | +| main.rs:737:5:737:22 | immutable_variable | main.rs:737:5:737:24 | immutable_variable(...) | | +| main.rs:737:5:737:24 | immutable_variable(...) | main.rs:738:5:738:23 | ExprStmt | | +| main.rs:737:5:737:25 | ExprStmt | main.rs:737:5:737:22 | immutable_variable | | +| main.rs:738:5:738:20 | mutable_variable | main.rs:738:5:738:22 | mutable_variable(...) | | +| main.rs:738:5:738:22 | mutable_variable(...) | main.rs:739:5:739:40 | ExprStmt | | +| main.rs:738:5:738:23 | ExprStmt | main.rs:738:5:738:20 | mutable_variable | | +| main.rs:739:5:739:37 | mutable_variable_immutable_borrow | main.rs:739:5:739:39 | mutable_variable_immutable_borrow(...) | | +| main.rs:739:5:739:39 | mutable_variable_immutable_borrow(...) | main.rs:740:5:740:23 | ExprStmt | | +| main.rs:739:5:739:40 | ExprStmt | main.rs:739:5:739:37 | mutable_variable_immutable_borrow | | +| main.rs:740:5:740:20 | variable_shadow1 | main.rs:740:5:740:22 | variable_shadow1(...) | | +| main.rs:740:5:740:22 | variable_shadow1(...) | main.rs:741:5:741:23 | ExprStmt | | +| main.rs:740:5:740:23 | ExprStmt | main.rs:740:5:740:20 | variable_shadow1 | | +| main.rs:741:5:741:20 | variable_shadow2 | main.rs:741:5:741:22 | variable_shadow2(...) | | +| main.rs:741:5:741:22 | variable_shadow2(...) | main.rs:742:5:742:19 | ExprStmt | | +| main.rs:741:5:741:23 | ExprStmt | main.rs:741:5:741:20 | variable_shadow2 | | +| main.rs:742:5:742:16 | let_pattern1 | main.rs:742:5:742:18 | let_pattern1(...) | | +| main.rs:742:5:742:18 | let_pattern1(...) | main.rs:743:5:743:19 | ExprStmt | | +| main.rs:742:5:742:19 | ExprStmt | main.rs:742:5:742:16 | let_pattern1 | | +| main.rs:743:5:743:16 | let_pattern2 | main.rs:743:5:743:18 | let_pattern2(...) | | +| main.rs:743:5:743:18 | let_pattern2(...) | main.rs:744:5:744:19 | ExprStmt | | +| main.rs:743:5:743:19 | ExprStmt | main.rs:743:5:743:16 | let_pattern2 | | +| main.rs:744:5:744:16 | let_pattern3 | main.rs:744:5:744:18 | let_pattern3(...) | | +| main.rs:744:5:744:18 | let_pattern3(...) | main.rs:745:5:745:19 | ExprStmt | | +| main.rs:744:5:744:19 | ExprStmt | main.rs:744:5:744:16 | let_pattern3 | | +| main.rs:745:5:745:16 | let_pattern4 | main.rs:745:5:745:18 | let_pattern4(...) | | +| main.rs:745:5:745:18 | let_pattern4(...) | main.rs:746:5:746:21 | ExprStmt | | +| main.rs:745:5:745:19 | ExprStmt | main.rs:745:5:745:16 | let_pattern4 | | +| main.rs:746:5:746:18 | match_pattern1 | main.rs:746:5:746:20 | match_pattern1(...) | | +| main.rs:746:5:746:20 | match_pattern1(...) | main.rs:747:5:747:21 | ExprStmt | | +| main.rs:746:5:746:21 | ExprStmt | main.rs:746:5:746:18 | match_pattern1 | | +| main.rs:747:5:747:18 | match_pattern2 | main.rs:747:5:747:20 | match_pattern2(...) | | +| main.rs:747:5:747:20 | match_pattern2(...) | main.rs:748:5:748:21 | ExprStmt | | +| main.rs:747:5:747:21 | ExprStmt | main.rs:747:5:747:18 | match_pattern2 | | +| main.rs:748:5:748:18 | match_pattern3 | main.rs:748:5:748:20 | match_pattern3(...) | | +| main.rs:748:5:748:20 | match_pattern3(...) | main.rs:749:5:749:21 | ExprStmt | | +| main.rs:748:5:748:21 | ExprStmt | main.rs:748:5:748:18 | match_pattern3 | | +| main.rs:749:5:749:18 | match_pattern4 | main.rs:749:5:749:20 | match_pattern4(...) | | +| main.rs:749:5:749:20 | match_pattern4(...) | main.rs:750:5:750:21 | ExprStmt | | +| main.rs:749:5:749:21 | ExprStmt | main.rs:749:5:749:18 | match_pattern4 | | +| main.rs:750:5:750:18 | match_pattern5 | main.rs:750:5:750:20 | match_pattern5(...) | | +| main.rs:750:5:750:20 | match_pattern5(...) | main.rs:751:5:751:21 | ExprStmt | | +| main.rs:750:5:750:21 | ExprStmt | main.rs:750:5:750:18 | match_pattern5 | | +| main.rs:751:5:751:18 | match_pattern6 | main.rs:751:5:751:20 | match_pattern6(...) | | +| main.rs:751:5:751:20 | match_pattern6(...) | main.rs:752:5:752:21 | ExprStmt | | +| main.rs:751:5:751:21 | ExprStmt | main.rs:751:5:751:18 | match_pattern6 | | +| main.rs:752:5:752:18 | match_pattern7 | main.rs:752:5:752:20 | match_pattern7(...) | | +| main.rs:752:5:752:20 | match_pattern7(...) | main.rs:753:5:753:21 | ExprStmt | | +| main.rs:752:5:752:21 | ExprStmt | main.rs:752:5:752:18 | match_pattern7 | | +| main.rs:753:5:753:18 | match_pattern8 | main.rs:753:5:753:20 | match_pattern8(...) | | +| main.rs:753:5:753:20 | match_pattern8(...) | main.rs:754:5:754:21 | ExprStmt | | +| main.rs:753:5:753:21 | ExprStmt | main.rs:753:5:753:18 | match_pattern8 | | +| main.rs:754:5:754:18 | match_pattern9 | main.rs:754:5:754:20 | match_pattern9(...) | | +| main.rs:754:5:754:20 | match_pattern9(...) | main.rs:755:5:755:22 | ExprStmt | | +| main.rs:754:5:754:21 | ExprStmt | main.rs:754:5:754:18 | match_pattern9 | | +| main.rs:755:5:755:19 | match_pattern10 | main.rs:755:5:755:21 | match_pattern10(...) | | +| main.rs:755:5:755:21 | match_pattern10(...) | main.rs:756:5:756:22 | ExprStmt | | +| main.rs:755:5:755:22 | ExprStmt | main.rs:755:5:755:19 | match_pattern10 | | +| main.rs:756:5:756:19 | match_pattern11 | main.rs:756:5:756:21 | match_pattern11(...) | | +| main.rs:756:5:756:21 | match_pattern11(...) | main.rs:757:5:757:22 | ExprStmt | | +| main.rs:756:5:756:22 | ExprStmt | main.rs:756:5:756:19 | match_pattern11 | | +| main.rs:757:5:757:19 | match_pattern12 | main.rs:757:5:757:21 | match_pattern12(...) | | +| main.rs:757:5:757:21 | match_pattern12(...) | main.rs:758:5:758:22 | ExprStmt | | +| main.rs:757:5:757:22 | ExprStmt | main.rs:757:5:757:19 | match_pattern12 | | +| main.rs:758:5:758:19 | match_pattern13 | main.rs:758:5:758:21 | match_pattern13(...) | | +| main.rs:758:5:758:21 | match_pattern13(...) | main.rs:759:5:759:22 | ExprStmt | | +| main.rs:758:5:758:22 | ExprStmt | main.rs:758:5:758:19 | match_pattern13 | | +| main.rs:759:5:759:19 | match_pattern14 | main.rs:759:5:759:21 | match_pattern14(...) | | +| main.rs:759:5:759:21 | match_pattern14(...) | main.rs:760:5:760:36 | ExprStmt | | +| main.rs:759:5:759:22 | ExprStmt | main.rs:759:5:759:19 | match_pattern14 | | +| main.rs:760:5:760:18 | param_pattern1 | main.rs:760:20:760:22 | "a" | | +| main.rs:760:5:760:35 | param_pattern1(...) | main.rs:761:5:761:37 | ExprStmt | | +| main.rs:760:5:760:36 | ExprStmt | main.rs:760:5:760:18 | param_pattern1 | | +| main.rs:760:20:760:22 | "a" | main.rs:760:26:760:28 | "b" | | +| main.rs:760:25:760:34 | TupleExpr | main.rs:760:5:760:35 | param_pattern1(...) | | +| main.rs:760:26:760:28 | "b" | main.rs:760:31:760:33 | "c" | | +| main.rs:760:31:760:33 | "c" | main.rs:760:25:760:34 | TupleExpr | | +| main.rs:761:5:761:18 | param_pattern2 | main.rs:761:20:761:31 | ...::Left | | +| main.rs:761:5:761:36 | param_pattern2(...) | main.rs:762:5:762:26 | ExprStmt | | +| main.rs:761:5:761:37 | ExprStmt | main.rs:761:5:761:18 | param_pattern2 | | +| main.rs:761:20:761:31 | ...::Left | main.rs:761:33:761:34 | 45 | | +| main.rs:761:20:761:35 | ...::Left(...) | main.rs:761:5:761:36 | param_pattern2(...) | | +| main.rs:761:33:761:34 | 45 | main.rs:761:20:761:35 | ...::Left(...) | | +| main.rs:762:5:762:23 | destruct_assignment | main.rs:762:5:762:25 | destruct_assignment(...) | | +| main.rs:762:5:762:25 | destruct_assignment(...) | main.rs:763:5:763:23 | ExprStmt | | +| main.rs:762:5:762:26 | ExprStmt | main.rs:762:5:762:23 | destruct_assignment | | +| main.rs:763:5:763:20 | closure_variable | main.rs:763:5:763:22 | closure_variable(...) | | +| main.rs:763:5:763:22 | closure_variable(...) | main.rs:764:5:764:22 | ExprStmt | | +| main.rs:763:5:763:23 | ExprStmt | main.rs:763:5:763:20 | closure_variable | | +| main.rs:764:5:764:19 | nested_function | main.rs:764:5:764:21 | nested_function(...) | | +| main.rs:764:5:764:21 | nested_function(...) | main.rs:765:5:765:19 | ExprStmt | | +| main.rs:764:5:764:22 | ExprStmt | main.rs:764:5:764:19 | nested_function | | +| main.rs:765:5:765:16 | for_variable | main.rs:765:5:765:18 | for_variable(...) | | +| main.rs:765:5:765:18 | for_variable(...) | main.rs:766:5:766:17 | ExprStmt | | +| main.rs:765:5:765:19 | ExprStmt | main.rs:765:5:765:16 | for_variable | | +| main.rs:766:5:766:14 | add_assign | main.rs:766:5:766:16 | add_assign(...) | | +| main.rs:766:5:766:16 | add_assign(...) | main.rs:767:5:767:13 | ExprStmt | | +| main.rs:766:5:766:17 | ExprStmt | main.rs:766:5:766:14 | add_assign | | +| main.rs:767:5:767:10 | mutate | main.rs:767:5:767:12 | mutate(...) | | +| main.rs:767:5:767:12 | mutate(...) | main.rs:768:5:768:17 | ExprStmt | | +| main.rs:767:5:767:13 | ExprStmt | main.rs:767:5:767:10 | mutate | | +| main.rs:768:5:768:14 | mutate_arg | main.rs:768:5:768:16 | mutate_arg(...) | | +| main.rs:768:5:768:16 | mutate_arg(...) | main.rs:769:5:769:12 | ExprStmt | | +| main.rs:768:5:768:17 | ExprStmt | main.rs:768:5:768:14 | mutate_arg | | +| main.rs:769:5:769:9 | alias | main.rs:769:5:769:11 | alias(...) | | +| main.rs:769:5:769:11 | alias(...) | main.rs:770:5:770:18 | ExprStmt | | +| main.rs:769:5:769:12 | ExprStmt | main.rs:769:5:769:9 | alias | | +| main.rs:770:5:770:15 | capture_mut | main.rs:770:5:770:17 | capture_mut(...) | | +| main.rs:770:5:770:17 | capture_mut(...) | main.rs:771:5:771:20 | ExprStmt | | +| main.rs:770:5:770:18 | ExprStmt | main.rs:770:5:770:15 | capture_mut | | +| main.rs:771:5:771:17 | capture_immut | main.rs:771:5:771:19 | capture_immut(...) | | +| main.rs:771:5:771:19 | capture_immut(...) | main.rs:772:5:772:26 | ExprStmt | | +| main.rs:771:5:771:20 | ExprStmt | main.rs:771:5:771:17 | capture_immut | | +| main.rs:772:5:772:23 | async_block_capture | main.rs:772:5:772:25 | async_block_capture(...) | | +| main.rs:772:5:772:25 | async_block_capture(...) | main.rs:773:5:773:14 | ExprStmt | | +| main.rs:772:5:772:26 | ExprStmt | main.rs:772:5:772:23 | async_block_capture | | +| main.rs:773:5:773:11 | structs | main.rs:773:5:773:13 | structs(...) | | +| main.rs:773:5:773:13 | structs(...) | main.rs:774:5:774:14 | ExprStmt | | +| main.rs:773:5:773:14 | ExprStmt | main.rs:773:5:773:11 | structs | | +| main.rs:774:5:774:11 | ref_arg | main.rs:774:5:774:13 | ref_arg(...) | | +| main.rs:774:5:774:13 | ref_arg(...) | main.rs:775:5:775:30 | ExprStmt | | +| main.rs:774:5:774:14 | ExprStmt | main.rs:774:5:774:11 | ref_arg | | +| main.rs:775:5:775:27 | ref_methodcall_receiver | main.rs:775:5:775:29 | ref_methodcall_receiver(...) | | +| main.rs:775:5:775:29 | ref_methodcall_receiver(...) | main.rs:776:5:776:23 | ExprStmt | | +| main.rs:775:5:775:30 | ExprStmt | main.rs:775:5:775:27 | ref_methodcall_receiver | | +| main.rs:776:5:776:20 | macro_invocation | main.rs:776:5:776:22 | macro_invocation(...) | | +| main.rs:776:5:776:22 | macro_invocation(...) | main.rs:777:5:777:18 | ExprStmt | | +| main.rs:776:5:776:23 | ExprStmt | main.rs:776:5:776:20 | macro_invocation | | +| main.rs:777:5:777:15 | capture_phi | main.rs:777:5:777:17 | capture_phi(...) | | +| main.rs:777:5:777:17 | capture_phi(...) | main.rs:736:11:778:1 | { ... } | | +| main.rs:777:5:777:18 | ExprStmt | main.rs:777:5:777:15 | capture_phi | | breakTarget -| main.rs:324:9:324:13 | break | main.rs:315:5:325:5 | while ... { ... } | +| main.rs:326:9:326:13 | break | main.rs:317:5:327:5 | while ... { ... } | continueTarget diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index da0a2b272e8b..342fd0df20b9 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -5,191 +5,192 @@ definition | main.rs:20:9:20:10 | x1 | main.rs:20:9:20:10 | x1 | | main.rs:25:13:25:14 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | -| main.rs:32:13:32:13 | x | main.rs:32:13:32:13 | x | -| main.rs:34:5:34:5 | x | main.rs:32:13:32:13 | x | -| main.rs:39:9:39:10 | x3 | main.rs:39:9:39:10 | x3 | +| main.rs:29:5:29:6 | x2 | main.rs:25:13:25:14 | x2 | +| main.rs:34:13:34:13 | x | main.rs:34:13:34:13 | x | +| main.rs:36:5:36:5 | x | main.rs:34:13:34:13 | x | | main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | -| main.rs:47:9:47:10 | x4 | main.rs:47:9:47:10 | x4 | -| main.rs:50:13:50:14 | x4 | main.rs:50:13:50:14 | x4 | -| main.rs:64:13:64:14 | a1 | main.rs:64:13:64:14 | a1 | -| main.rs:65:13:65:14 | b1 | main.rs:65:13:65:14 | b1 | -| main.rs:68:13:68:13 | x | main.rs:68:13:68:13 | x | -| main.rs:69:13:69:13 | y | main.rs:69:13:69:13 | y | -| main.rs:79:9:79:10 | p1 | main.rs:79:9:79:10 | p1 | -| main.rs:81:12:81:13 | a2 | main.rs:81:12:81:13 | a2 | -| main.rs:82:12:82:13 | b2 | main.rs:82:12:82:13 | b2 | -| main.rs:89:9:89:10 | s1 | main.rs:89:9:89:10 | s1 | -| main.rs:91:21:91:22 | s2 | main.rs:91:21:91:22 | s2 | -| main.rs:98:9:98:9 | x | main.rs:98:9:98:9 | x | -| main.rs:99:14:99:14 | x | main.rs:99:14:99:14 | x | -| main.rs:102:13:102:13 | x | main.rs:102:13:102:13 | x | -| main.rs:111:9:111:10 | s1 | main.rs:111:9:111:10 | s1 | -| main.rs:113:24:113:25 | s2 | main.rs:113:24:113:25 | s2 | -| main.rs:120:9:120:10 | x6 | main.rs:120:9:120:10 | x6 | -| main.rs:121:9:121:10 | y1 | main.rs:121:9:121:10 | y1 | -| main.rs:125:14:125:15 | y1 | main.rs:125:14:125:15 | y1 | -| main.rs:137:9:137:15 | numbers | main.rs:137:9:137:15 | numbers | -| main.rs:142:13:142:17 | first | main.rs:142:13:142:17 | first | -| main.rs:144:13:144:17 | third | main.rs:144:13:144:17 | third | -| main.rs:146:13:146:17 | fifth | main.rs:146:13:146:17 | fifth | -| main.rs:157:13:157:17 | first | main.rs:157:13:157:17 | first | -| main.rs:159:13:159:16 | last | main.rs:159:13:159:16 | last | -| main.rs:168:9:168:10 | p2 | main.rs:168:9:168:10 | p2 | -| main.rs:172:16:172:17 | x7 | main.rs:172:16:172:17 | x7 | -| main.rs:182:9:182:11 | msg | main.rs:182:9:182:11 | msg | -| main.rs:187:17:187:27 | id_variable | main.rs:187:17:187:27 | id_variable | -| main.rs:192:26:192:27 | id | main.rs:192:26:192:27 | id | -| main.rs:206:9:206:14 | either | main.rs:206:9:206:14 | either | -| main.rs:208:9:208:44 | SSA phi(a3) | main.rs:208:9:208:44 | a3 | -| main.rs:208:22:208:23 | a3 | main.rs:208:9:208:44 | a3 | -| main.rs:208:42:208:43 | a3 | main.rs:208:9:208:44 | a3 | -| main.rs:220:9:220:10 | tv | main.rs:220:9:220:10 | tv | -| main.rs:222:9:222:81 | SSA phi(a4) | main.rs:222:9:222:81 | a4 | -| main.rs:222:28:222:29 | a4 | main.rs:222:9:222:81 | a4 | -| main.rs:222:54:222:55 | a4 | main.rs:222:9:222:81 | a4 | -| main.rs:222:79:222:80 | a4 | main.rs:222:9:222:81 | a4 | -| main.rs:226:9:226:83 | SSA phi(a5) | main.rs:226:9:226:83 | a5 | -| main.rs:226:10:226:57 | [match(true)] SSA phi(a5) | main.rs:226:9:226:83 | a5 | -| main.rs:226:29:226:30 | a5 | main.rs:226:9:226:83 | a5 | -| main.rs:226:55:226:56 | a5 | main.rs:226:9:226:83 | a5 | -| main.rs:226:81:226:82 | a5 | main.rs:226:9:226:83 | a5 | -| main.rs:230:9:230:83 | SSA phi(a6) | main.rs:230:9:230:83 | a6 | -| main.rs:230:28:230:29 | a6 | main.rs:230:9:230:83 | a6 | -| main.rs:230:35:230:82 | SSA phi(a6) | main.rs:230:9:230:83 | a6 | -| main.rs:230:55:230:56 | a6 | main.rs:230:9:230:83 | a6 | -| main.rs:230:80:230:81 | a6 | main.rs:230:9:230:83 | a6 | -| main.rs:236:9:236:14 | either | main.rs:236:9:236:14 | either | -| main.rs:238:9:238:44 | [match(true)] SSA phi(a7) | main.rs:238:9:238:44 | a7 | -| main.rs:238:22:238:23 | a7 | main.rs:238:9:238:44 | a7 | -| main.rs:238:42:238:43 | a7 | main.rs:238:9:238:44 | a7 | -| main.rs:246:9:246:14 | either | main.rs:246:9:246:14 | either | -| main.rs:249:13:249:13 | e | main.rs:249:13:249:13 | e | -| main.rs:250:14:250:51 | [match(true)] SSA phi(a11) | main.rs:250:14:250:51 | a11 | -| main.rs:250:27:250:29 | a11 | main.rs:250:14:250:51 | a11 | -| main.rs:250:48:250:50 | a11 | main.rs:250:14:250:51 | a11 | -| main.rs:253:33:253:35 | a12 | main.rs:253:33:253:35 | a12 | -| main.rs:270:9:270:10 | fv | main.rs:270:9:270:10 | fv | -| main.rs:272:9:272:109 | SSA phi(a13) | main.rs:272:9:272:109 | a13 | -| main.rs:272:27:272:29 | a13 | main.rs:272:9:272:109 | a13 | -| main.rs:272:35:272:82 | [match(true)] SSA phi(a13) | main.rs:272:9:272:109 | a13 | -| main.rs:272:54:272:56 | a13 | main.rs:272:9:272:109 | a13 | -| main.rs:272:79:272:81 | a13 | main.rs:272:9:272:109 | a13 | -| main.rs:272:106:272:108 | a13 | main.rs:272:9:272:109 | a13 | -| main.rs:279:9:279:9 | x | main.rs:279:9:279:9 | x | -| main.rs:280:17:280:17 | x | main.rs:280:17:280:17 | x | -| main.rs:287:13:287:13 | x | main.rs:287:13:287:13 | x | -| main.rs:295:9:295:9 | x | main.rs:295:9:295:9 | x | -| main.rs:296:17:296:17 | x | main.rs:296:17:296:17 | x | -| main.rs:299:14:299:14 | x | main.rs:299:14:299:14 | x | -| main.rs:306:13:306:13 | x | main.rs:306:13:306:13 | x | -| main.rs:314:9:314:9 | x | main.rs:314:9:314:9 | x | -| main.rs:315:20:315:20 | x | main.rs:315:20:315:20 | x | -| main.rs:318:14:318:14 | x | main.rs:318:14:318:14 | x | -| main.rs:332:9:332:9 | x | main.rs:332:9:332:9 | x | -| main.rs:334:14:334:14 | x | main.rs:334:14:334:14 | x | -| main.rs:335:20:335:20 | x | main.rs:335:20:335:20 | x | -| main.rs:346:9:346:9 | x | main.rs:346:9:346:9 | x | -| main.rs:347:16:347:16 | x | main.rs:347:16:347:16 | x | -| main.rs:352:20:352:20 | x | main.rs:352:20:352:20 | x | -| main.rs:362:5:362:6 | a8 | main.rs:362:5:362:6 | a8 | -| main.rs:364:9:364:10 | b3 | main.rs:364:9:364:10 | b3 | -| main.rs:365:9:365:10 | c1 | main.rs:365:9:365:10 | c1 | -| main.rs:373:20:373:55 | SSA phi(a9) | main.rs:373:20:373:55 | a9 | -| main.rs:373:33:373:34 | a9 | main.rs:373:20:373:55 | a9 | -| main.rs:373:53:373:54 | a9 | main.rs:373:20:373:55 | a9 | -| main.rs:380:13:380:15 | a10 | main.rs:380:13:380:15 | a10 | -| main.rs:381:13:381:14 | b4 | main.rs:381:13:381:14 | b4 | -| main.rs:382:13:382:14 | c2 | main.rs:382:13:382:14 | c2 | -| main.rs:389:9:389:10 | c2 | main.rs:382:13:382:14 | c2 | -| main.rs:390:9:390:10 | b4 | main.rs:381:13:381:14 | b4 | -| main.rs:391:9:391:11 | a10 | main.rs:380:13:380:15 | a10 | -| main.rs:403:13:403:15 | a10 | main.rs:403:13:403:15 | a10 | -| main.rs:404:13:404:14 | b4 | main.rs:404:13:404:14 | b4 | -| main.rs:416:9:416:23 | example_closure | main.rs:416:9:416:23 | example_closure | -| main.rs:417:10:417:10 | x | main.rs:417:10:417:10 | x | -| main.rs:419:9:419:10 | n1 | main.rs:419:9:419:10 | n1 | -| main.rs:424:9:424:26 | immutable_variable | main.rs:424:9:424:26 | immutable_variable | -| main.rs:425:6:425:6 | x | main.rs:425:6:425:6 | x | -| main.rs:427:9:427:10 | n2 | main.rs:427:9:427:10 | n2 | -| main.rs:434:9:434:9 | f | main.rs:434:9:434:9 | f | -| main.rs:435:10:435:10 | x | main.rs:435:10:435:10 | x | -| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | -| main.rs:448:14:448:14 | x | main.rs:448:14:448:14 | x | -| main.rs:457:13:457:13 | f | main.rs:457:13:457:13 | f | -| main.rs:458:14:458:14 | x | main.rs:458:14:458:14 | x | -| main.rs:465:9:465:9 | v | main.rs:465:9:465:9 | v | -| main.rs:467:9:467:12 | text | main.rs:467:9:467:12 | text | -| main.rs:474:13:474:13 | a | main.rs:474:13:474:13 | a | -| main.rs:475:5:475:5 | a | main.rs:474:13:474:13 | a | -| main.rs:477:6:477:11 | &mut a | main.rs:474:13:474:13 | a | -| main.rs:482:13:482:13 | i | main.rs:482:13:482:13 | i | -| main.rs:483:9:483:13 | ref_i | main.rs:483:9:483:13 | ref_i | -| main.rs:484:9:484:14 | &mut i | main.rs:482:13:482:13 | i | -| main.rs:489:17:489:17 | x | main.rs:489:17:489:17 | x | -| main.rs:496:22:496:22 | x | main.rs:496:22:496:22 | x | -| main.rs:496:38:496:38 | y | main.rs:496:38:496:38 | y | -| main.rs:505:13:505:13 | x | main.rs:505:13:505:13 | x | -| main.rs:506:9:506:9 | y | main.rs:506:9:506:9 | y | -| main.rs:507:22:507:27 | &mut x | main.rs:505:13:505:13 | x | -| main.rs:513:13:513:13 | z | main.rs:513:13:513:13 | z | -| main.rs:514:9:514:9 | w | main.rs:514:9:514:9 | w | -| main.rs:517:9:517:14 | &mut z | main.rs:513:13:513:13 | z | -| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | -| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | -| main.rs:529:9:529:14 | &mut x | main.rs:527:13:527:13 | x | -| main.rs:535:9:535:9 | x | main.rs:535:9:535:9 | x | -| main.rs:538:9:538:11 | cap | main.rs:538:9:538:11 | cap | -| main.rs:538:15:540:5 | x | main.rs:535:9:535:9 | x | -| main.rs:546:13:546:13 | x | main.rs:546:13:546:13 | x | -| main.rs:549:9:549:16 | closure1 | main.rs:549:9:549:16 | closure1 | -| main.rs:549:20:551:5 | x | main.rs:546:13:546:13 | x | -| main.rs:555:13:555:13 | y | main.rs:555:13:555:13 | y | -| main.rs:558:13:558:20 | closure2 | main.rs:558:13:558:20 | closure2 | -| main.rs:559:9:559:9 | y | main.rs:555:13:555:13 | y | -| main.rs:561:5:561:14 | y | main.rs:555:13:555:13 | y | -| main.rs:564:13:564:13 | z | main.rs:564:13:564:13 | z | -| main.rs:567:13:567:20 | closure3 | main.rs:567:13:567:20 | closure3 | -| main.rs:567:24:569:5 | z | main.rs:564:13:564:13 | z | -| main.rs:575:13:575:13 | i | main.rs:575:13:575:13 | i | -| main.rs:576:9:576:13 | block | main.rs:576:9:576:13 | block | -| main.rs:577:9:577:9 | i | main.rs:575:13:575:13 | i | -| main.rs:580:5:580:15 | i | main.rs:575:13:575:13 | i | -| main.rs:584:8:584:8 | b | main.rs:584:8:584:8 | b | -| main.rs:585:13:585:13 | x | main.rs:585:13:585:13 | x | -| main.rs:589:13:598:5 | SSA phi(x) | main.rs:585:13:585:13 | x | -| main.rs:591:9:591:9 | x | main.rs:585:13:585:13 | x | -| main.rs:595:9:595:9 | x | main.rs:585:13:585:13 | x | -| main.rs:602:13:602:14 | b1 | main.rs:602:13:602:14 | b1 | -| main.rs:602:23:602:24 | b2 | main.rs:602:23:602:24 | b2 | -| main.rs:603:9:603:9 | x | main.rs:603:9:603:9 | x | -| main.rs:626:20:626:23 | self | main.rs:626:20:626:23 | self | -| main.rs:630:11:630:14 | self | main.rs:630:11:630:14 | self | -| main.rs:634:23:634:26 | self | main.rs:634:23:634:26 | self | -| main.rs:635:17:635:17 | f | main.rs:635:17:635:17 | f | -| main.rs:635:21:638:9 | self | main.rs:634:23:634:26 | self | -| main.rs:635:22:635:22 | n | main.rs:635:22:635:22 | n | -| main.rs:645:13:645:13 | a | main.rs:645:13:645:13 | a | -| main.rs:646:15:646:15 | a | main.rs:645:13:645:13 | a | -| main.rs:649:5:649:5 | a | main.rs:645:13:645:13 | a | -| main.rs:654:13:654:13 | a | main.rs:654:13:654:13 | a | -| main.rs:658:5:658:5 | a | main.rs:654:13:654:13 | a | -| main.rs:663:9:663:9 | x | main.rs:663:9:663:9 | x | -| main.rs:667:9:667:9 | z | main.rs:667:9:667:9 | z | -| main.rs:676:17:676:20 | self | main.rs:676:17:676:20 | self | -| main.rs:682:13:682:13 | a | main.rs:682:13:682:13 | a | -| main.rs:683:5:683:5 | a | main.rs:682:13:682:13 | a | -| main.rs:704:9:704:22 | var_from_macro | main.rs:704:9:704:22 | var_from_macro | -| main.rs:705:9:705:21 | var_in_macro | main.rs:705:9:705:21 | var_in_macro | -| main.rs:707:9:707:20 | var_in_macro | main.rs:707:9:707:20 | var_in_macro | -| main.rs:712:15:712:28 | var_in_macro | main.rs:712:15:712:28 | var_in_macro | -| main.rs:718:5:718:5 | x | main.rs:717:9:717:9 | x | -| main.rs:723:13:723:13 | x | main.rs:723:13:723:13 | x | -| main.rs:724:13:724:15 | cap | main.rs:724:13:724:15 | cap | -| main.rs:724:19:729:5 | x | main.rs:723:13:723:13 | x | -| main.rs:724:20:724:20 | b | main.rs:724:20:724:20 | b | -| main.rs:726:17:728:9 | SSA phi(x) | main.rs:723:13:723:13 | x | -| main.rs:727:13:727:13 | x | main.rs:723:13:723:13 | x | -| main.rs:730:5:730:13 | x | main.rs:723:13:723:13 | x | +| main.rs:43:9:43:10 | x3 | main.rs:43:9:43:10 | x3 | +| main.rs:49:9:49:10 | x4 | main.rs:49:9:49:10 | x4 | +| main.rs:52:13:52:14 | x4 | main.rs:52:13:52:14 | x4 | +| main.rs:66:13:66:14 | a1 | main.rs:66:13:66:14 | a1 | +| main.rs:67:13:67:14 | b1 | main.rs:67:13:67:14 | b1 | +| main.rs:70:13:70:13 | x | main.rs:70:13:70:13 | x | +| main.rs:71:13:71:13 | y | main.rs:71:13:71:13 | y | +| main.rs:81:9:81:10 | p1 | main.rs:81:9:81:10 | p1 | +| main.rs:83:12:83:13 | a2 | main.rs:83:12:83:13 | a2 | +| main.rs:84:12:84:13 | b2 | main.rs:84:12:84:13 | b2 | +| main.rs:91:9:91:10 | s1 | main.rs:91:9:91:10 | s1 | +| main.rs:93:21:93:22 | s2 | main.rs:93:21:93:22 | s2 | +| main.rs:100:9:100:9 | x | main.rs:100:9:100:9 | x | +| main.rs:101:14:101:14 | x | main.rs:101:14:101:14 | x | +| main.rs:104:13:104:13 | x | main.rs:104:13:104:13 | x | +| main.rs:113:9:113:10 | s1 | main.rs:113:9:113:10 | s1 | +| main.rs:115:24:115:25 | s2 | main.rs:115:24:115:25 | s2 | +| main.rs:122:9:122:10 | x6 | main.rs:122:9:122:10 | x6 | +| main.rs:123:9:123:10 | y1 | main.rs:123:9:123:10 | y1 | +| main.rs:127:14:127:15 | y1 | main.rs:127:14:127:15 | y1 | +| main.rs:139:9:139:15 | numbers | main.rs:139:9:139:15 | numbers | +| main.rs:144:13:144:17 | first | main.rs:144:13:144:17 | first | +| main.rs:146:13:146:17 | third | main.rs:146:13:146:17 | third | +| main.rs:148:13:148:17 | fifth | main.rs:148:13:148:17 | fifth | +| main.rs:159:13:159:17 | first | main.rs:159:13:159:17 | first | +| main.rs:161:13:161:16 | last | main.rs:161:13:161:16 | last | +| main.rs:170:9:170:10 | p2 | main.rs:170:9:170:10 | p2 | +| main.rs:174:16:174:17 | x7 | main.rs:174:16:174:17 | x7 | +| main.rs:184:9:184:11 | msg | main.rs:184:9:184:11 | msg | +| main.rs:189:17:189:27 | id_variable | main.rs:189:17:189:27 | id_variable | +| main.rs:194:26:194:27 | id | main.rs:194:26:194:27 | id | +| main.rs:208:9:208:14 | either | main.rs:208:9:208:14 | either | +| main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | +| main.rs:210:22:210:23 | a3 | main.rs:210:9:210:44 | a3 | +| main.rs:210:42:210:43 | a3 | main.rs:210:9:210:44 | a3 | +| main.rs:222:9:222:10 | tv | main.rs:222:9:222:10 | tv | +| main.rs:224:9:224:81 | SSA phi(a4) | main.rs:224:9:224:81 | a4 | +| main.rs:224:28:224:29 | a4 | main.rs:224:9:224:81 | a4 | +| main.rs:224:54:224:55 | a4 | main.rs:224:9:224:81 | a4 | +| main.rs:224:79:224:80 | a4 | main.rs:224:9:224:81 | a4 | +| main.rs:228:9:228:83 | SSA phi(a5) | main.rs:228:9:228:83 | a5 | +| main.rs:228:10:228:57 | [match(true)] SSA phi(a5) | main.rs:228:9:228:83 | a5 | +| main.rs:228:29:228:30 | a5 | main.rs:228:9:228:83 | a5 | +| main.rs:228:55:228:56 | a5 | main.rs:228:9:228:83 | a5 | +| main.rs:228:81:228:82 | a5 | main.rs:228:9:228:83 | a5 | +| main.rs:232:9:232:83 | SSA phi(a6) | main.rs:232:9:232:83 | a6 | +| main.rs:232:28:232:29 | a6 | main.rs:232:9:232:83 | a6 | +| main.rs:232:35:232:82 | SSA phi(a6) | main.rs:232:9:232:83 | a6 | +| main.rs:232:55:232:56 | a6 | main.rs:232:9:232:83 | a6 | +| main.rs:232:80:232:81 | a6 | main.rs:232:9:232:83 | a6 | +| main.rs:238:9:238:14 | either | main.rs:238:9:238:14 | either | +| main.rs:240:9:240:44 | [match(true)] SSA phi(a7) | main.rs:240:9:240:44 | a7 | +| main.rs:240:22:240:23 | a7 | main.rs:240:9:240:44 | a7 | +| main.rs:240:42:240:43 | a7 | main.rs:240:9:240:44 | a7 | +| main.rs:248:9:248:14 | either | main.rs:248:9:248:14 | either | +| main.rs:251:13:251:13 | e | main.rs:251:13:251:13 | e | +| main.rs:252:14:252:51 | [match(true)] SSA phi(a11) | main.rs:252:14:252:51 | a11 | +| main.rs:252:27:252:29 | a11 | main.rs:252:14:252:51 | a11 | +| main.rs:252:48:252:50 | a11 | main.rs:252:14:252:51 | a11 | +| main.rs:255:33:255:35 | a12 | main.rs:255:33:255:35 | a12 | +| main.rs:272:9:272:10 | fv | main.rs:272:9:272:10 | fv | +| main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:9:274:109 | a13 | +| main.rs:274:27:274:29 | a13 | main.rs:274:9:274:109 | a13 | +| main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:9:274:109 | a13 | +| main.rs:274:54:274:56 | a13 | main.rs:274:9:274:109 | a13 | +| main.rs:274:79:274:81 | a13 | main.rs:274:9:274:109 | a13 | +| main.rs:274:106:274:108 | a13 | main.rs:274:9:274:109 | a13 | +| main.rs:281:9:281:9 | x | main.rs:281:9:281:9 | x | +| main.rs:282:17:282:17 | x | main.rs:282:17:282:17 | x | +| main.rs:289:13:289:13 | x | main.rs:289:13:289:13 | x | +| main.rs:297:9:297:9 | x | main.rs:297:9:297:9 | x | +| main.rs:298:17:298:17 | x | main.rs:298:17:298:17 | x | +| main.rs:301:14:301:14 | x | main.rs:301:14:301:14 | x | +| main.rs:308:13:308:13 | x | main.rs:308:13:308:13 | x | +| main.rs:316:9:316:9 | x | main.rs:316:9:316:9 | x | +| main.rs:317:20:317:20 | x | main.rs:317:20:317:20 | x | +| main.rs:320:14:320:14 | x | main.rs:320:14:320:14 | x | +| main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | +| main.rs:336:14:336:14 | x | main.rs:336:14:336:14 | x | +| main.rs:337:20:337:20 | x | main.rs:337:20:337:20 | x | +| main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | +| main.rs:349:16:349:16 | x | main.rs:349:16:349:16 | x | +| main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | +| main.rs:364:5:364:6 | a8 | main.rs:364:5:364:6 | a8 | +| main.rs:366:9:366:10 | b3 | main.rs:366:9:366:10 | b3 | +| main.rs:367:9:367:10 | c1 | main.rs:367:9:367:10 | c1 | +| main.rs:375:20:375:55 | SSA phi(a9) | main.rs:375:20:375:55 | a9 | +| main.rs:375:33:375:34 | a9 | main.rs:375:20:375:55 | a9 | +| main.rs:375:53:375:54 | a9 | main.rs:375:20:375:55 | a9 | +| main.rs:382:13:382:15 | a10 | main.rs:382:13:382:15 | a10 | +| main.rs:383:13:383:14 | b4 | main.rs:383:13:383:14 | b4 | +| main.rs:384:13:384:14 | c2 | main.rs:384:13:384:14 | c2 | +| main.rs:391:9:391:10 | c2 | main.rs:384:13:384:14 | c2 | +| main.rs:392:9:392:10 | b4 | main.rs:383:13:383:14 | b4 | +| main.rs:393:9:393:11 | a10 | main.rs:382:13:382:15 | a10 | +| main.rs:405:13:405:15 | a10 | main.rs:405:13:405:15 | a10 | +| main.rs:406:13:406:14 | b4 | main.rs:406:13:406:14 | b4 | +| main.rs:418:9:418:23 | example_closure | main.rs:418:9:418:23 | example_closure | +| main.rs:419:10:419:10 | x | main.rs:419:10:419:10 | x | +| main.rs:421:9:421:10 | n1 | main.rs:421:9:421:10 | n1 | +| main.rs:426:9:426:26 | immutable_variable | main.rs:426:9:426:26 | immutable_variable | +| main.rs:427:6:427:6 | x | main.rs:427:6:427:6 | x | +| main.rs:429:9:429:10 | n2 | main.rs:429:9:429:10 | n2 | +| main.rs:436:9:436:9 | f | main.rs:436:9:436:9 | f | +| main.rs:437:10:437:10 | x | main.rs:437:10:437:10 | x | +| main.rs:441:10:441:10 | x | main.rs:441:10:441:10 | x | +| main.rs:450:14:450:14 | x | main.rs:450:14:450:14 | x | +| main.rs:459:13:459:13 | f | main.rs:459:13:459:13 | f | +| main.rs:460:14:460:14 | x | main.rs:460:14:460:14 | x | +| main.rs:467:9:467:9 | v | main.rs:467:9:467:9 | v | +| main.rs:469:9:469:12 | text | main.rs:469:9:469:12 | text | +| main.rs:476:13:476:13 | a | main.rs:476:13:476:13 | a | +| main.rs:477:5:477:5 | a | main.rs:476:13:476:13 | a | +| main.rs:479:6:479:11 | &mut a | main.rs:476:13:476:13 | a | +| main.rs:484:13:484:13 | i | main.rs:484:13:484:13 | i | +| main.rs:485:9:485:13 | ref_i | main.rs:485:9:485:13 | ref_i | +| main.rs:486:9:486:14 | &mut i | main.rs:484:13:484:13 | i | +| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | +| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | +| main.rs:498:38:498:38 | y | main.rs:498:38:498:38 | y | +| main.rs:507:13:507:13 | x | main.rs:507:13:507:13 | x | +| main.rs:508:9:508:9 | y | main.rs:508:9:508:9 | y | +| main.rs:509:22:509:27 | &mut x | main.rs:507:13:507:13 | x | +| main.rs:515:13:515:13 | z | main.rs:515:13:515:13 | z | +| main.rs:516:9:516:9 | w | main.rs:516:9:516:9 | w | +| main.rs:519:9:519:14 | &mut z | main.rs:515:13:515:13 | z | +| main.rs:529:13:529:13 | x | main.rs:529:13:529:13 | x | +| main.rs:530:9:530:9 | y | main.rs:530:9:530:9 | y | +| main.rs:531:9:531:14 | &mut x | main.rs:529:13:529:13 | x | +| main.rs:537:9:537:9 | x | main.rs:537:9:537:9 | x | +| main.rs:540:9:540:11 | cap | main.rs:540:9:540:11 | cap | +| main.rs:540:15:542:5 | x | main.rs:537:9:537:9 | x | +| main.rs:548:13:548:13 | x | main.rs:548:13:548:13 | x | +| main.rs:551:9:551:16 | closure1 | main.rs:551:9:551:16 | closure1 | +| main.rs:551:20:553:5 | x | main.rs:548:13:548:13 | x | +| main.rs:557:13:557:13 | y | main.rs:557:13:557:13 | y | +| main.rs:560:13:560:20 | closure2 | main.rs:560:13:560:20 | closure2 | +| main.rs:561:9:561:9 | y | main.rs:557:13:557:13 | y | +| main.rs:563:5:563:14 | y | main.rs:557:13:557:13 | y | +| main.rs:566:13:566:13 | z | main.rs:566:13:566:13 | z | +| main.rs:569:13:569:20 | closure3 | main.rs:569:13:569:20 | closure3 | +| main.rs:569:24:571:5 | z | main.rs:566:13:566:13 | z | +| main.rs:577:13:577:13 | i | main.rs:577:13:577:13 | i | +| main.rs:578:9:578:13 | block | main.rs:578:9:578:13 | block | +| main.rs:579:9:579:9 | i | main.rs:577:13:577:13 | i | +| main.rs:582:5:582:15 | i | main.rs:577:13:577:13 | i | +| main.rs:586:8:586:8 | b | main.rs:586:8:586:8 | b | +| main.rs:587:13:587:13 | x | main.rs:587:13:587:13 | x | +| main.rs:591:13:600:5 | SSA phi(x) | main.rs:587:13:587:13 | x | +| main.rs:593:9:593:9 | x | main.rs:587:13:587:13 | x | +| main.rs:597:9:597:9 | x | main.rs:587:13:587:13 | x | +| main.rs:604:13:604:14 | b1 | main.rs:604:13:604:14 | b1 | +| main.rs:604:23:604:24 | b2 | main.rs:604:23:604:24 | b2 | +| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | +| main.rs:628:20:628:23 | self | main.rs:628:20:628:23 | self | +| main.rs:632:11:632:14 | self | main.rs:632:11:632:14 | self | +| main.rs:636:23:636:26 | self | main.rs:636:23:636:26 | self | +| main.rs:637:17:637:17 | f | main.rs:637:17:637:17 | f | +| main.rs:637:21:640:9 | self | main.rs:636:23:636:26 | self | +| main.rs:637:22:637:22 | n | main.rs:637:22:637:22 | n | +| main.rs:647:13:647:13 | a | main.rs:647:13:647:13 | a | +| main.rs:648:15:648:15 | a | main.rs:647:13:647:13 | a | +| main.rs:651:5:651:5 | a | main.rs:647:13:647:13 | a | +| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | +| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | +| main.rs:665:9:665:9 | x | main.rs:665:9:665:9 | x | +| main.rs:669:9:669:9 | z | main.rs:669:9:669:9 | z | +| main.rs:678:17:678:20 | self | main.rs:678:17:678:20 | self | +| main.rs:684:13:684:13 | a | main.rs:684:13:684:13 | a | +| main.rs:685:5:685:5 | a | main.rs:684:13:684:13 | a | +| main.rs:706:9:706:22 | var_from_macro | main.rs:706:9:706:22 | var_from_macro | +| main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | +| main.rs:709:9:709:20 | var_in_macro | main.rs:709:9:709:20 | var_in_macro | +| main.rs:714:15:714:28 | var_in_macro | main.rs:714:15:714:28 | var_in_macro | +| main.rs:720:5:720:5 | x | main.rs:719:9:719:9 | x | +| main.rs:725:13:725:13 | x | main.rs:725:13:725:13 | x | +| main.rs:726:13:726:15 | cap | main.rs:726:13:726:15 | cap | +| main.rs:726:19:731:5 | x | main.rs:725:13:725:13 | x | +| main.rs:726:20:726:20 | b | main.rs:726:20:726:20 | b | +| main.rs:728:17:730:9 | SSA phi(x) | main.rs:725:13:725:13 | x | +| main.rs:729:13:729:13 | x | main.rs:725:13:725:13 | x | +| main.rs:732:5:732:13 | x | main.rs:725:13:725:13 | x | read | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -197,200 +198,202 @@ read | main.rs:20:9:20:10 | x1 | main.rs:20:9:20:10 | x1 | main.rs:21:15:21:16 | x1 | | main.rs:25:13:25:14 | x2 | main.rs:25:13:25:14 | x2 | main.rs:26:15:26:16 | x2 | | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | main.rs:28:15:28:16 | x2 | -| main.rs:32:13:32:13 | x | main.rs:32:13:32:13 | x | main.rs:33:20:33:20 | x | -| main.rs:34:5:34:5 | x | main.rs:32:13:32:13 | x | main.rs:35:20:35:20 | x | -| main.rs:39:9:39:10 | x3 | main.rs:39:9:39:10 | x3 | main.rs:40:15:40:16 | x3 | -| main.rs:39:9:39:10 | x3 | main.rs:39:9:39:10 | x3 | main.rs:42:9:42:10 | x3 | -| main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | main.rs:43:15:43:16 | x3 | -| main.rs:47:9:47:10 | x4 | main.rs:47:9:47:10 | x4 | main.rs:48:15:48:16 | x4 | -| main.rs:47:9:47:10 | x4 | main.rs:47:9:47:10 | x4 | main.rs:53:15:53:16 | x4 | -| main.rs:50:13:50:14 | x4 | main.rs:50:13:50:14 | x4 | main.rs:51:19:51:20 | x4 | -| main.rs:64:13:64:14 | a1 | main.rs:64:13:64:14 | a1 | main.rs:72:15:72:16 | a1 | -| main.rs:65:13:65:14 | b1 | main.rs:65:13:65:14 | b1 | main.rs:73:15:73:16 | b1 | -| main.rs:68:13:68:13 | x | main.rs:68:13:68:13 | x | main.rs:74:15:74:15 | x | -| main.rs:69:13:69:13 | y | main.rs:69:13:69:13 | y | main.rs:75:15:75:15 | y | -| main.rs:79:9:79:10 | p1 | main.rs:79:9:79:10 | p1 | main.rs:83:9:83:10 | p1 | -| main.rs:81:12:81:13 | a2 | main.rs:81:12:81:13 | a2 | main.rs:84:15:84:16 | a2 | -| main.rs:82:12:82:13 | b2 | main.rs:82:12:82:13 | b2 | main.rs:85:15:85:16 | b2 | -| main.rs:89:9:89:10 | s1 | main.rs:89:9:89:10 | s1 | main.rs:92:11:92:12 | s1 | -| main.rs:91:21:91:22 | s2 | main.rs:91:21:91:22 | s2 | main.rs:93:19:93:20 | s2 | -| main.rs:98:9:98:9 | x | main.rs:98:9:98:9 | x | main.rs:100:7:100:7 | x | -| main.rs:98:9:98:9 | x | main.rs:98:9:98:9 | x | main.rs:103:13:103:13 | x | -| main.rs:99:14:99:14 | x | main.rs:99:14:99:14 | x | main.rs:107:15:107:15 | x | -| main.rs:102:13:102:13 | x | main.rs:102:13:102:13 | x | main.rs:104:19:104:19 | x | -| main.rs:111:9:111:10 | s1 | main.rs:111:9:111:10 | s1 | main.rs:114:11:114:12 | s1 | -| main.rs:113:24:113:25 | s2 | main.rs:113:24:113:25 | s2 | main.rs:115:19:115:20 | s2 | -| main.rs:120:9:120:10 | x6 | main.rs:120:9:120:10 | x6 | main.rs:123:11:123:12 | x6 | -| main.rs:121:9:121:10 | y1 | main.rs:121:9:121:10 | y1 | main.rs:133:15:133:16 | y1 | -| main.rs:125:14:125:15 | y1 | main.rs:125:14:125:15 | y1 | main.rs:128:23:128:24 | y1 | -| main.rs:137:9:137:15 | numbers | main.rs:137:9:137:15 | numbers | main.rs:139:11:139:17 | numbers | -| main.rs:137:9:137:15 | numbers | main.rs:137:9:137:15 | numbers | main.rs:154:11:154:17 | numbers | -| main.rs:142:13:142:17 | first | main.rs:142:13:142:17 | first | main.rs:148:23:148:27 | first | -| main.rs:144:13:144:17 | third | main.rs:144:13:144:17 | third | main.rs:149:23:149:27 | third | -| main.rs:146:13:146:17 | fifth | main.rs:146:13:146:17 | fifth | main.rs:150:23:150:27 | fifth | -| main.rs:157:13:157:17 | first | main.rs:157:13:157:17 | first | main.rs:161:23:161:27 | first | -| main.rs:159:13:159:16 | last | main.rs:159:13:159:16 | last | main.rs:162:23:162:26 | last | -| main.rs:168:9:168:10 | p2 | main.rs:168:9:168:10 | p2 | main.rs:170:11:170:12 | p2 | -| main.rs:172:16:172:17 | x7 | main.rs:172:16:172:17 | x7 | main.rs:173:24:173:25 | x7 | -| main.rs:182:9:182:11 | msg | main.rs:182:9:182:11 | msg | main.rs:184:11:184:13 | msg | -| main.rs:187:17:187:27 | id_variable | main.rs:187:17:187:27 | id_variable | main.rs:188:24:188:34 | id_variable | -| main.rs:192:26:192:27 | id | main.rs:192:26:192:27 | id | main.rs:195:23:195:24 | id | -| main.rs:206:9:206:14 | either | main.rs:206:9:206:14 | either | main.rs:207:11:207:16 | either | -| main.rs:208:9:208:44 | SSA phi(a3) | main.rs:208:9:208:44 | a3 | main.rs:209:26:209:27 | a3 | -| main.rs:220:9:220:10 | tv | main.rs:220:9:220:10 | tv | main.rs:221:11:221:12 | tv | -| main.rs:220:9:220:10 | tv | main.rs:220:9:220:10 | tv | main.rs:225:11:225:12 | tv | -| main.rs:220:9:220:10 | tv | main.rs:220:9:220:10 | tv | main.rs:229:11:229:12 | tv | -| main.rs:222:9:222:81 | SSA phi(a4) | main.rs:222:9:222:81 | a4 | main.rs:223:26:223:27 | a4 | -| main.rs:226:9:226:83 | SSA phi(a5) | main.rs:226:9:226:83 | a5 | main.rs:227:26:227:27 | a5 | -| main.rs:230:9:230:83 | SSA phi(a6) | main.rs:230:9:230:83 | a6 | main.rs:231:26:231:27 | a6 | -| main.rs:236:9:236:14 | either | main.rs:236:9:236:14 | either | main.rs:237:11:237:16 | either | -| main.rs:238:9:238:44 | [match(true)] SSA phi(a7) | main.rs:238:9:238:44 | a7 | main.rs:239:16:239:17 | a7 | -| main.rs:238:9:238:44 | [match(true)] SSA phi(a7) | main.rs:238:9:238:44 | a7 | main.rs:240:26:240:27 | a7 | -| main.rs:246:9:246:14 | either | main.rs:246:9:246:14 | either | main.rs:248:11:248:16 | either | -| main.rs:249:13:249:13 | e | main.rs:249:13:249:13 | e | main.rs:254:15:254:15 | e | -| main.rs:250:14:250:51 | [match(true)] SSA phi(a11) | main.rs:250:14:250:51 | a11 | main.rs:252:23:252:25 | a11 | -| main.rs:253:33:253:35 | a12 | main.rs:253:33:253:35 | a12 | main.rs:255:28:255:30 | a12 | -| main.rs:270:9:270:10 | fv | main.rs:270:9:270:10 | fv | main.rs:271:11:271:12 | fv | -| main.rs:272:9:272:109 | SSA phi(a13) | main.rs:272:9:272:109 | a13 | main.rs:273:26:273:28 | a13 | -| main.rs:279:9:279:9 | x | main.rs:279:9:279:9 | x | main.rs:281:7:281:7 | x | -| main.rs:279:9:279:9 | x | main.rs:279:9:279:9 | x | main.rs:288:13:288:13 | x | -| main.rs:280:17:280:17 | x | main.rs:280:17:280:17 | x | main.rs:283:5:283:5 | x | -| main.rs:280:17:280:17 | x | main.rs:280:17:280:17 | x | main.rs:285:19:285:19 | x | -| main.rs:287:13:287:13 | x | main.rs:287:13:287:13 | x | main.rs:289:19:289:19 | x | -| main.rs:295:9:295:9 | x | main.rs:295:9:295:9 | x | main.rs:297:7:297:7 | x | -| main.rs:295:9:295:9 | x | main.rs:295:9:295:9 | x | main.rs:307:13:307:13 | x | -| main.rs:296:17:296:17 | x | main.rs:296:17:296:17 | x | main.rs:300:12:300:12 | x | -| main.rs:299:14:299:14 | x | main.rs:299:14:299:14 | x | main.rs:302:5:302:5 | x | -| main.rs:299:14:299:14 | x | main.rs:299:14:299:14 | x | main.rs:304:19:304:19 | x | -| main.rs:306:13:306:13 | x | main.rs:306:13:306:13 | x | main.rs:308:19:308:19 | x | -| main.rs:314:9:314:9 | x | main.rs:314:9:314:9 | x | main.rs:316:7:316:7 | x | -| main.rs:314:9:314:9 | x | main.rs:314:9:314:9 | x | main.rs:327:15:327:15 | x | -| main.rs:315:20:315:20 | x | main.rs:315:20:315:20 | x | main.rs:319:12:319:12 | x | -| main.rs:318:14:318:14 | x | main.rs:318:14:318:14 | x | main.rs:321:5:321:5 | x | -| main.rs:318:14:318:14 | x | main.rs:318:14:318:14 | x | main.rs:323:19:323:19 | x | -| main.rs:332:9:332:9 | x | main.rs:332:9:332:9 | x | main.rs:333:11:333:11 | x | -| main.rs:332:9:332:9 | x | main.rs:332:9:332:9 | x | main.rs:341:15:341:15 | x | -| main.rs:334:14:334:14 | x | main.rs:334:14:334:14 | x | main.rs:336:18:336:18 | x | -| main.rs:335:20:335:20 | x | main.rs:335:20:335:20 | x | main.rs:337:19:337:19 | x | -| main.rs:346:9:346:9 | x | main.rs:346:9:346:9 | x | main.rs:348:7:348:7 | x | -| main.rs:346:9:346:9 | x | main.rs:346:9:346:9 | x | main.rs:353:7:353:7 | x | -| main.rs:346:9:346:9 | x | main.rs:346:9:346:9 | x | main.rs:357:19:357:19 | x | -| main.rs:347:16:347:16 | x | main.rs:347:16:347:16 | x | main.rs:350:19:350:19 | x | -| main.rs:352:20:352:20 | x | main.rs:352:20:352:20 | x | main.rs:355:19:355:19 | x | -| main.rs:362:5:362:6 | a8 | main.rs:362:5:362:6 | a8 | main.rs:368:15:368:16 | a8 | -| main.rs:364:9:364:10 | b3 | main.rs:364:9:364:10 | b3 | main.rs:369:15:369:16 | b3 | -| main.rs:365:9:365:10 | c1 | main.rs:365:9:365:10 | c1 | main.rs:370:15:370:16 | c1 | -| main.rs:373:20:373:55 | SSA phi(a9) | main.rs:373:20:373:55 | a9 | main.rs:375:15:375:16 | a9 | -| main.rs:380:13:380:15 | a10 | main.rs:380:13:380:15 | a10 | main.rs:384:15:384:17 | a10 | -| main.rs:381:13:381:14 | b4 | main.rs:381:13:381:14 | b4 | main.rs:385:15:385:16 | b4 | -| main.rs:382:13:382:14 | c2 | main.rs:382:13:382:14 | c2 | main.rs:386:15:386:16 | c2 | -| main.rs:389:9:389:10 | c2 | main.rs:382:13:382:14 | c2 | main.rs:395:9:395:10 | c2 | -| main.rs:389:9:389:10 | c2 | main.rs:382:13:382:14 | c2 | main.rs:399:15:399:16 | c2 | -| main.rs:390:9:390:10 | b4 | main.rs:381:13:381:14 | b4 | main.rs:394:9:394:10 | b4 | -| main.rs:390:9:390:10 | b4 | main.rs:381:13:381:14 | b4 | main.rs:398:15:398:16 | b4 | -| main.rs:390:9:390:10 | b4 | main.rs:381:13:381:14 | b4 | main.rs:412:15:412:16 | b4 | -| main.rs:391:9:391:11 | a10 | main.rs:380:13:380:15 | a10 | main.rs:393:9:393:11 | a10 | -| main.rs:391:9:391:11 | a10 | main.rs:380:13:380:15 | a10 | main.rs:397:15:397:17 | a10 | -| main.rs:391:9:391:11 | a10 | main.rs:380:13:380:15 | a10 | main.rs:411:15:411:17 | a10 | -| main.rs:403:13:403:15 | a10 | main.rs:403:13:403:15 | a10 | main.rs:406:23:406:25 | a10 | -| main.rs:404:13:404:14 | b4 | main.rs:404:13:404:14 | b4 | main.rs:407:23:407:24 | b4 | -| main.rs:416:9:416:23 | example_closure | main.rs:416:9:416:23 | example_closure | main.rs:420:9:420:23 | example_closure | -| main.rs:417:10:417:10 | x | main.rs:417:10:417:10 | x | main.rs:418:9:418:9 | x | -| main.rs:419:9:419:10 | n1 | main.rs:419:9:419:10 | n1 | main.rs:421:15:421:16 | n1 | -| main.rs:424:9:424:26 | immutable_variable | main.rs:424:9:424:26 | immutable_variable | main.rs:428:9:428:26 | immutable_variable | -| main.rs:425:6:425:6 | x | main.rs:425:6:425:6 | x | main.rs:426:9:426:9 | x | -| main.rs:427:9:427:10 | n2 | main.rs:427:9:427:10 | n2 | main.rs:429:15:429:16 | n2 | -| main.rs:434:9:434:9 | f | main.rs:434:9:434:9 | f | main.rs:437:15:437:15 | f | -| main.rs:434:9:434:9 | f | main.rs:434:9:434:9 | f | main.rs:444:15:444:15 | f | -| main.rs:435:10:435:10 | x | main.rs:435:10:435:10 | x | main.rs:436:9:436:9 | x | -| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | main.rs:441:9:441:9 | x | -| main.rs:448:14:448:14 | x | main.rs:448:14:448:14 | x | main.rs:450:17:450:17 | x | -| main.rs:457:13:457:13 | f | main.rs:457:13:457:13 | f | main.rs:460:19:460:19 | f | -| main.rs:458:14:458:14 | x | main.rs:458:14:458:14 | x | main.rs:459:13:459:13 | x | -| main.rs:465:9:465:9 | v | main.rs:465:9:465:9 | v | main.rs:468:12:468:12 | v | -| main.rs:467:9:467:12 | text | main.rs:467:9:467:12 | text | main.rs:469:19:469:22 | text | -| main.rs:474:13:474:13 | a | main.rs:474:13:474:13 | a | main.rs:475:5:475:5 | a | -| main.rs:475:5:475:5 | a | main.rs:474:13:474:13 | a | main.rs:476:15:476:15 | a | -| main.rs:475:5:475:5 | a | main.rs:474:13:474:13 | a | main.rs:477:11:477:11 | a | -| main.rs:477:6:477:11 | &mut a | main.rs:474:13:474:13 | a | main.rs:478:15:478:15 | a | -| main.rs:482:13:482:13 | i | main.rs:482:13:482:13 | i | main.rs:484:14:484:14 | i | -| main.rs:483:9:483:13 | ref_i | main.rs:483:9:483:13 | ref_i | main.rs:485:6:485:10 | ref_i | -| main.rs:484:9:484:14 | &mut i | main.rs:482:13:482:13 | i | main.rs:486:15:486:15 | i | -| main.rs:489:17:489:17 | x | main.rs:489:17:489:17 | x | main.rs:490:6:490:6 | x | -| main.rs:489:17:489:17 | x | main.rs:489:17:489:17 | x | main.rs:491:10:491:10 | x | -| main.rs:489:17:489:17 | x | main.rs:489:17:489:17 | x | main.rs:492:10:492:10 | x | -| main.rs:489:17:489:17 | x | main.rs:489:17:489:17 | x | main.rs:493:12:493:12 | x | -| main.rs:496:22:496:22 | x | main.rs:496:22:496:22 | x | main.rs:497:6:497:6 | x | -| main.rs:496:22:496:22 | x | main.rs:496:22:496:22 | x | main.rs:498:10:498:10 | x | -| main.rs:496:22:496:22 | x | main.rs:496:22:496:22 | x | main.rs:499:10:499:10 | x | -| main.rs:496:22:496:22 | x | main.rs:496:22:496:22 | x | main.rs:501:9:501:9 | x | -| main.rs:496:38:496:38 | y | main.rs:496:38:496:38 | y | main.rs:500:6:500:6 | y | -| main.rs:505:13:505:13 | x | main.rs:505:13:505:13 | x | main.rs:507:27:507:27 | x | -| main.rs:506:9:506:9 | y | main.rs:506:9:506:9 | y | main.rs:508:6:508:6 | y | -| main.rs:507:22:507:27 | &mut x | main.rs:505:13:505:13 | x | main.rs:511:15:511:15 | x | -| main.rs:507:22:507:27 | &mut x | main.rs:505:13:505:13 | x | main.rs:515:19:515:19 | x | -| main.rs:513:13:513:13 | z | main.rs:513:13:513:13 | z | main.rs:517:14:517:14 | z | -| main.rs:514:9:514:9 | w | main.rs:514:9:514:9 | w | main.rs:518:9:518:9 | w | -| main.rs:514:9:514:9 | w | main.rs:514:9:514:9 | w | main.rs:520:7:520:7 | w | -| main.rs:517:9:517:14 | &mut z | main.rs:513:13:513:13 | z | main.rs:523:15:523:15 | z | -| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | main.rs:529:14:529:14 | x | -| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | main.rs:530:6:530:6 | y | -| main.rs:529:9:529:14 | &mut x | main.rs:527:13:527:13 | x | main.rs:531:15:531:15 | x | -| main.rs:535:9:535:9 | x | main.rs:535:9:535:9 | x | main.rs:542:15:542:15 | x | -| main.rs:538:9:538:11 | cap | main.rs:538:9:538:11 | cap | main.rs:541:5:541:7 | cap | -| main.rs:538:15:540:5 | x | main.rs:535:9:535:9 | x | main.rs:539:19:539:19 | x | -| main.rs:546:13:546:13 | x | main.rs:546:13:546:13 | x | main.rs:553:15:553:15 | x | -| main.rs:549:9:549:16 | closure1 | main.rs:549:9:549:16 | closure1 | main.rs:552:5:552:12 | closure1 | -| main.rs:549:20:551:5 | x | main.rs:546:13:546:13 | x | main.rs:550:19:550:19 | x | -| main.rs:558:13:558:20 | closure2 | main.rs:558:13:558:20 | closure2 | main.rs:561:5:561:12 | closure2 | -| main.rs:561:5:561:14 | y | main.rs:555:13:555:13 | y | main.rs:562:15:562:15 | y | -| main.rs:564:13:564:13 | z | main.rs:564:13:564:13 | z | main.rs:571:15:571:15 | z | -| main.rs:567:13:567:20 | closure3 | main.rs:567:13:567:20 | closure3 | main.rs:570:5:570:12 | closure3 | -| main.rs:567:24:569:5 | z | main.rs:564:13:564:13 | z | main.rs:568:9:568:9 | z | -| main.rs:576:9:576:13 | block | main.rs:576:9:576:13 | block | main.rs:580:5:580:9 | block | -| main.rs:580:5:580:15 | i | main.rs:575:13:575:13 | i | main.rs:581:15:581:15 | i | -| main.rs:584:8:584:8 | b | main.rs:584:8:584:8 | b | main.rs:589:16:589:16 | b | -| main.rs:585:13:585:13 | x | main.rs:585:13:585:13 | x | main.rs:586:15:586:15 | x | -| main.rs:585:13:585:13 | x | main.rs:585:13:585:13 | x | main.rs:587:15:587:15 | x | -| main.rs:589:13:598:5 | SSA phi(x) | main.rs:585:13:585:13 | x | main.rs:599:15:599:15 | x | -| main.rs:591:9:591:9 | x | main.rs:585:13:585:13 | x | main.rs:592:19:592:19 | x | -| main.rs:591:9:591:9 | x | main.rs:585:13:585:13 | x | main.rs:593:19:593:19 | x | -| main.rs:595:9:595:9 | x | main.rs:585:13:585:13 | x | main.rs:596:19:596:19 | x | -| main.rs:595:9:595:9 | x | main.rs:585:13:585:13 | x | main.rs:597:19:597:19 | x | -| main.rs:602:13:602:14 | b1 | main.rs:602:13:602:14 | b1 | main.rs:605:16:605:17 | b1 | -| main.rs:602:23:602:24 | b2 | main.rs:602:23:602:24 | b2 | main.rs:613:16:613:17 | b2 | -| main.rs:603:9:603:9 | x | main.rs:603:9:603:9 | x | main.rs:607:19:607:19 | x | -| main.rs:603:9:603:9 | x | main.rs:603:9:603:9 | x | main.rs:609:19:609:19 | x | -| main.rs:603:9:603:9 | x | main.rs:603:9:603:9 | x | main.rs:615:19:615:19 | x | -| main.rs:603:9:603:9 | x | main.rs:603:9:603:9 | x | main.rs:617:19:617:19 | x | -| main.rs:626:20:626:23 | self | main.rs:626:20:626:23 | self | main.rs:627:16:627:19 | self | -| main.rs:630:11:630:14 | self | main.rs:630:11:630:14 | self | main.rs:631:9:631:12 | self | -| main.rs:635:17:635:17 | f | main.rs:635:17:635:17 | f | main.rs:639:9:639:9 | f | -| main.rs:635:17:635:17 | f | main.rs:635:17:635:17 | f | main.rs:640:9:640:9 | f | -| main.rs:635:21:638:9 | self | main.rs:634:23:634:26 | self | main.rs:637:13:637:16 | self | -| main.rs:635:22:635:22 | n | main.rs:635:22:635:22 | n | main.rs:637:25:637:25 | n | -| main.rs:645:13:645:13 | a | main.rs:645:13:645:13 | a | main.rs:646:15:646:15 | a | -| main.rs:646:15:646:15 | a | main.rs:645:13:645:13 | a | main.rs:647:5:647:5 | a | -| main.rs:646:15:646:15 | a | main.rs:645:13:645:13 | a | main.rs:648:15:648:15 | a | -| main.rs:649:5:649:5 | a | main.rs:645:13:645:13 | a | main.rs:650:15:650:15 | a | -| main.rs:654:13:654:13 | a | main.rs:654:13:654:13 | a | main.rs:655:15:655:15 | a | -| main.rs:654:13:654:13 | a | main.rs:654:13:654:13 | a | main.rs:656:5:656:5 | a | -| main.rs:654:13:654:13 | a | main.rs:654:13:654:13 | a | main.rs:657:15:657:15 | a | -| main.rs:658:5:658:5 | a | main.rs:654:13:654:13 | a | main.rs:659:15:659:15 | a | -| main.rs:663:9:663:9 | x | main.rs:663:9:663:9 | x | main.rs:664:20:664:20 | x | -| main.rs:663:9:663:9 | x | main.rs:663:9:663:9 | x | main.rs:665:15:665:15 | x | -| main.rs:667:9:667:9 | z | main.rs:667:9:667:9 | z | main.rs:668:20:668:20 | z | -| main.rs:676:17:676:20 | self | main.rs:676:17:676:20 | self | main.rs:677:10:677:13 | self | -| main.rs:682:13:682:13 | a | main.rs:682:13:682:13 | a | main.rs:683:5:683:5 | a | -| main.rs:683:5:683:5 | a | main.rs:682:13:682:13 | a | main.rs:686:15:686:15 | a | -| main.rs:704:9:704:22 | var_from_macro | main.rs:704:9:704:22 | var_from_macro | main.rs:706:15:706:28 | var_from_macro | -| main.rs:705:9:705:21 | var_in_macro | main.rs:705:9:705:21 | var_in_macro | main.rs:705:9:705:21 | var_in_macro | -| main.rs:707:9:707:20 | var_in_macro | main.rs:707:9:707:20 | var_in_macro | main.rs:713:15:713:26 | var_in_macro | -| main.rs:712:15:712:28 | var_in_macro | main.rs:712:15:712:28 | var_in_macro | main.rs:712:30:712:41 | var_in_macro | -| main.rs:718:5:718:5 | x | main.rs:717:9:717:9 | x | main.rs:719:15:719:15 | x | -| main.rs:724:13:724:15 | cap | main.rs:724:13:724:15 | cap | main.rs:730:5:730:7 | cap | -| main.rs:724:20:724:20 | b | main.rs:724:20:724:20 | b | main.rs:726:20:726:20 | b | -| main.rs:730:5:730:13 | x | main.rs:723:13:723:13 | x | main.rs:731:15:731:15 | x | +| main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | main.rs:29:10:29:11 | x2 | +| main.rs:29:5:29:6 | x2 | main.rs:25:13:25:14 | x2 | main.rs:30:15:30:16 | x2 | +| main.rs:34:13:34:13 | x | main.rs:34:13:34:13 | x | main.rs:35:20:35:20 | x | +| main.rs:36:5:36:5 | x | main.rs:34:13:34:13 | x | main.rs:37:20:37:20 | x | +| main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | main.rs:42:15:42:16 | x3 | +| main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | main.rs:44:9:44:10 | x3 | +| main.rs:43:9:43:10 | x3 | main.rs:43:9:43:10 | x3 | main.rs:45:15:45:16 | x3 | +| main.rs:49:9:49:10 | x4 | main.rs:49:9:49:10 | x4 | main.rs:50:15:50:16 | x4 | +| main.rs:49:9:49:10 | x4 | main.rs:49:9:49:10 | x4 | main.rs:55:15:55:16 | x4 | +| main.rs:52:13:52:14 | x4 | main.rs:52:13:52:14 | x4 | main.rs:53:19:53:20 | x4 | +| main.rs:66:13:66:14 | a1 | main.rs:66:13:66:14 | a1 | main.rs:74:15:74:16 | a1 | +| main.rs:67:13:67:14 | b1 | main.rs:67:13:67:14 | b1 | main.rs:75:15:75:16 | b1 | +| main.rs:70:13:70:13 | x | main.rs:70:13:70:13 | x | main.rs:76:15:76:15 | x | +| main.rs:71:13:71:13 | y | main.rs:71:13:71:13 | y | main.rs:77:15:77:15 | y | +| main.rs:81:9:81:10 | p1 | main.rs:81:9:81:10 | p1 | main.rs:85:9:85:10 | p1 | +| main.rs:83:12:83:13 | a2 | main.rs:83:12:83:13 | a2 | main.rs:86:15:86:16 | a2 | +| main.rs:84:12:84:13 | b2 | main.rs:84:12:84:13 | b2 | main.rs:87:15:87:16 | b2 | +| main.rs:91:9:91:10 | s1 | main.rs:91:9:91:10 | s1 | main.rs:94:11:94:12 | s1 | +| main.rs:93:21:93:22 | s2 | main.rs:93:21:93:22 | s2 | main.rs:95:19:95:20 | s2 | +| main.rs:100:9:100:9 | x | main.rs:100:9:100:9 | x | main.rs:102:7:102:7 | x | +| main.rs:100:9:100:9 | x | main.rs:100:9:100:9 | x | main.rs:105:13:105:13 | x | +| main.rs:101:14:101:14 | x | main.rs:101:14:101:14 | x | main.rs:109:15:109:15 | x | +| main.rs:104:13:104:13 | x | main.rs:104:13:104:13 | x | main.rs:106:19:106:19 | x | +| main.rs:113:9:113:10 | s1 | main.rs:113:9:113:10 | s1 | main.rs:116:11:116:12 | s1 | +| main.rs:115:24:115:25 | s2 | main.rs:115:24:115:25 | s2 | main.rs:117:19:117:20 | s2 | +| main.rs:122:9:122:10 | x6 | main.rs:122:9:122:10 | x6 | main.rs:125:11:125:12 | x6 | +| main.rs:123:9:123:10 | y1 | main.rs:123:9:123:10 | y1 | main.rs:135:15:135:16 | y1 | +| main.rs:127:14:127:15 | y1 | main.rs:127:14:127:15 | y1 | main.rs:130:23:130:24 | y1 | +| main.rs:139:9:139:15 | numbers | main.rs:139:9:139:15 | numbers | main.rs:141:11:141:17 | numbers | +| main.rs:139:9:139:15 | numbers | main.rs:139:9:139:15 | numbers | main.rs:156:11:156:17 | numbers | +| main.rs:144:13:144:17 | first | main.rs:144:13:144:17 | first | main.rs:150:23:150:27 | first | +| main.rs:146:13:146:17 | third | main.rs:146:13:146:17 | third | main.rs:151:23:151:27 | third | +| main.rs:148:13:148:17 | fifth | main.rs:148:13:148:17 | fifth | main.rs:152:23:152:27 | fifth | +| main.rs:159:13:159:17 | first | main.rs:159:13:159:17 | first | main.rs:163:23:163:27 | first | +| main.rs:161:13:161:16 | last | main.rs:161:13:161:16 | last | main.rs:164:23:164:26 | last | +| main.rs:170:9:170:10 | p2 | main.rs:170:9:170:10 | p2 | main.rs:172:11:172:12 | p2 | +| main.rs:174:16:174:17 | x7 | main.rs:174:16:174:17 | x7 | main.rs:175:24:175:25 | x7 | +| main.rs:184:9:184:11 | msg | main.rs:184:9:184:11 | msg | main.rs:186:11:186:13 | msg | +| main.rs:189:17:189:27 | id_variable | main.rs:189:17:189:27 | id_variable | main.rs:190:24:190:34 | id_variable | +| main.rs:194:26:194:27 | id | main.rs:194:26:194:27 | id | main.rs:197:23:197:24 | id | +| main.rs:208:9:208:14 | either | main.rs:208:9:208:14 | either | main.rs:209:11:209:16 | either | +| main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:211:26:211:27 | a3 | +| main.rs:222:9:222:10 | tv | main.rs:222:9:222:10 | tv | main.rs:223:11:223:12 | tv | +| main.rs:222:9:222:10 | tv | main.rs:222:9:222:10 | tv | main.rs:227:11:227:12 | tv | +| main.rs:222:9:222:10 | tv | main.rs:222:9:222:10 | tv | main.rs:231:11:231:12 | tv | +| main.rs:224:9:224:81 | SSA phi(a4) | main.rs:224:9:224:81 | a4 | main.rs:225:26:225:27 | a4 | +| main.rs:228:9:228:83 | SSA phi(a5) | main.rs:228:9:228:83 | a5 | main.rs:229:26:229:27 | a5 | +| main.rs:232:9:232:83 | SSA phi(a6) | main.rs:232:9:232:83 | a6 | main.rs:233:26:233:27 | a6 | +| main.rs:238:9:238:14 | either | main.rs:238:9:238:14 | either | main.rs:239:11:239:16 | either | +| main.rs:240:9:240:44 | [match(true)] SSA phi(a7) | main.rs:240:9:240:44 | a7 | main.rs:241:16:241:17 | a7 | +| main.rs:240:9:240:44 | [match(true)] SSA phi(a7) | main.rs:240:9:240:44 | a7 | main.rs:242:26:242:27 | a7 | +| main.rs:248:9:248:14 | either | main.rs:248:9:248:14 | either | main.rs:250:11:250:16 | either | +| main.rs:251:13:251:13 | e | main.rs:251:13:251:13 | e | main.rs:256:15:256:15 | e | +| main.rs:252:14:252:51 | [match(true)] SSA phi(a11) | main.rs:252:14:252:51 | a11 | main.rs:254:23:254:25 | a11 | +| main.rs:255:33:255:35 | a12 | main.rs:255:33:255:35 | a12 | main.rs:257:28:257:30 | a12 | +| main.rs:272:9:272:10 | fv | main.rs:272:9:272:10 | fv | main.rs:273:11:273:12 | fv | +| main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:275:26:275:28 | a13 | +| main.rs:281:9:281:9 | x | main.rs:281:9:281:9 | x | main.rs:283:7:283:7 | x | +| main.rs:281:9:281:9 | x | main.rs:281:9:281:9 | x | main.rs:290:13:290:13 | x | +| main.rs:282:17:282:17 | x | main.rs:282:17:282:17 | x | main.rs:285:5:285:5 | x | +| main.rs:282:17:282:17 | x | main.rs:282:17:282:17 | x | main.rs:287:19:287:19 | x | +| main.rs:289:13:289:13 | x | main.rs:289:13:289:13 | x | main.rs:291:19:291:19 | x | +| main.rs:297:9:297:9 | x | main.rs:297:9:297:9 | x | main.rs:299:7:299:7 | x | +| main.rs:297:9:297:9 | x | main.rs:297:9:297:9 | x | main.rs:309:13:309:13 | x | +| main.rs:298:17:298:17 | x | main.rs:298:17:298:17 | x | main.rs:302:12:302:12 | x | +| main.rs:301:14:301:14 | x | main.rs:301:14:301:14 | x | main.rs:304:5:304:5 | x | +| main.rs:301:14:301:14 | x | main.rs:301:14:301:14 | x | main.rs:306:19:306:19 | x | +| main.rs:308:13:308:13 | x | main.rs:308:13:308:13 | x | main.rs:310:19:310:19 | x | +| main.rs:316:9:316:9 | x | main.rs:316:9:316:9 | x | main.rs:318:7:318:7 | x | +| main.rs:316:9:316:9 | x | main.rs:316:9:316:9 | x | main.rs:329:15:329:15 | x | +| main.rs:317:20:317:20 | x | main.rs:317:20:317:20 | x | main.rs:321:12:321:12 | x | +| main.rs:320:14:320:14 | x | main.rs:320:14:320:14 | x | main.rs:323:5:323:5 | x | +| main.rs:320:14:320:14 | x | main.rs:320:14:320:14 | x | main.rs:325:19:325:19 | x | +| main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | main.rs:335:11:335:11 | x | +| main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | main.rs:343:15:343:15 | x | +| main.rs:336:14:336:14 | x | main.rs:336:14:336:14 | x | main.rs:338:18:338:18 | x | +| main.rs:337:20:337:20 | x | main.rs:337:20:337:20 | x | main.rs:339:19:339:19 | x | +| main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:350:7:350:7 | x | +| main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:355:7:355:7 | x | +| main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:359:19:359:19 | x | +| main.rs:349:16:349:16 | x | main.rs:349:16:349:16 | x | main.rs:352:19:352:19 | x | +| main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | main.rs:357:19:357:19 | x | +| main.rs:364:5:364:6 | a8 | main.rs:364:5:364:6 | a8 | main.rs:370:15:370:16 | a8 | +| main.rs:366:9:366:10 | b3 | main.rs:366:9:366:10 | b3 | main.rs:371:15:371:16 | b3 | +| main.rs:367:9:367:10 | c1 | main.rs:367:9:367:10 | c1 | main.rs:372:15:372:16 | c1 | +| main.rs:375:20:375:55 | SSA phi(a9) | main.rs:375:20:375:55 | a9 | main.rs:377:15:377:16 | a9 | +| main.rs:382:13:382:15 | a10 | main.rs:382:13:382:15 | a10 | main.rs:386:15:386:17 | a10 | +| main.rs:382:13:382:15 | a10 | main.rs:382:13:382:15 | a10 | main.rs:395:9:395:11 | a10 | +| main.rs:383:13:383:14 | b4 | main.rs:383:13:383:14 | b4 | main.rs:387:15:387:16 | b4 | +| main.rs:383:13:383:14 | b4 | main.rs:383:13:383:14 | b4 | main.rs:396:9:396:10 | b4 | +| main.rs:384:13:384:14 | c2 | main.rs:384:13:384:14 | c2 | main.rs:388:15:388:16 | c2 | +| main.rs:384:13:384:14 | c2 | main.rs:384:13:384:14 | c2 | main.rs:397:9:397:10 | c2 | +| main.rs:391:9:391:10 | c2 | main.rs:384:13:384:14 | c2 | main.rs:401:15:401:16 | c2 | +| main.rs:392:9:392:10 | b4 | main.rs:383:13:383:14 | b4 | main.rs:400:15:400:16 | b4 | +| main.rs:392:9:392:10 | b4 | main.rs:383:13:383:14 | b4 | main.rs:414:15:414:16 | b4 | +| main.rs:393:9:393:11 | a10 | main.rs:382:13:382:15 | a10 | main.rs:399:15:399:17 | a10 | +| main.rs:393:9:393:11 | a10 | main.rs:382:13:382:15 | a10 | main.rs:413:15:413:17 | a10 | +| main.rs:405:13:405:15 | a10 | main.rs:405:13:405:15 | a10 | main.rs:408:23:408:25 | a10 | +| main.rs:406:13:406:14 | b4 | main.rs:406:13:406:14 | b4 | main.rs:409:23:409:24 | b4 | +| main.rs:418:9:418:23 | example_closure | main.rs:418:9:418:23 | example_closure | main.rs:422:9:422:23 | example_closure | +| main.rs:419:10:419:10 | x | main.rs:419:10:419:10 | x | main.rs:420:9:420:9 | x | +| main.rs:421:9:421:10 | n1 | main.rs:421:9:421:10 | n1 | main.rs:423:15:423:16 | n1 | +| main.rs:426:9:426:26 | immutable_variable | main.rs:426:9:426:26 | immutable_variable | main.rs:430:9:430:26 | immutable_variable | +| main.rs:427:6:427:6 | x | main.rs:427:6:427:6 | x | main.rs:428:9:428:9 | x | +| main.rs:429:9:429:10 | n2 | main.rs:429:9:429:10 | n2 | main.rs:431:15:431:16 | n2 | +| main.rs:436:9:436:9 | f | main.rs:436:9:436:9 | f | main.rs:439:15:439:15 | f | +| main.rs:436:9:436:9 | f | main.rs:436:9:436:9 | f | main.rs:446:15:446:15 | f | +| main.rs:437:10:437:10 | x | main.rs:437:10:437:10 | x | main.rs:438:9:438:9 | x | +| main.rs:441:10:441:10 | x | main.rs:441:10:441:10 | x | main.rs:443:9:443:9 | x | +| main.rs:450:14:450:14 | x | main.rs:450:14:450:14 | x | main.rs:452:17:452:17 | x | +| main.rs:459:13:459:13 | f | main.rs:459:13:459:13 | f | main.rs:462:19:462:19 | f | +| main.rs:460:14:460:14 | x | main.rs:460:14:460:14 | x | main.rs:461:13:461:13 | x | +| main.rs:467:9:467:9 | v | main.rs:467:9:467:9 | v | main.rs:470:12:470:12 | v | +| main.rs:469:9:469:12 | text | main.rs:469:9:469:12 | text | main.rs:471:19:471:22 | text | +| main.rs:476:13:476:13 | a | main.rs:476:13:476:13 | a | main.rs:477:5:477:5 | a | +| main.rs:477:5:477:5 | a | main.rs:476:13:476:13 | a | main.rs:478:15:478:15 | a | +| main.rs:477:5:477:5 | a | main.rs:476:13:476:13 | a | main.rs:479:11:479:11 | a | +| main.rs:479:6:479:11 | &mut a | main.rs:476:13:476:13 | a | main.rs:480:15:480:15 | a | +| main.rs:484:13:484:13 | i | main.rs:484:13:484:13 | i | main.rs:486:14:486:14 | i | +| main.rs:485:9:485:13 | ref_i | main.rs:485:9:485:13 | ref_i | main.rs:487:6:487:10 | ref_i | +| main.rs:486:9:486:14 | &mut i | main.rs:484:13:484:13 | i | main.rs:488:15:488:15 | i | +| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:492:6:492:6 | x | +| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:493:10:493:10 | x | +| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:494:10:494:10 | x | +| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:495:12:495:12 | x | +| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:499:6:499:6 | x | +| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:500:10:500:10 | x | +| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:501:10:501:10 | x | +| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:503:9:503:9 | x | +| main.rs:498:38:498:38 | y | main.rs:498:38:498:38 | y | main.rs:502:6:502:6 | y | +| main.rs:507:13:507:13 | x | main.rs:507:13:507:13 | x | main.rs:509:27:509:27 | x | +| main.rs:508:9:508:9 | y | main.rs:508:9:508:9 | y | main.rs:510:6:510:6 | y | +| main.rs:509:22:509:27 | &mut x | main.rs:507:13:507:13 | x | main.rs:513:15:513:15 | x | +| main.rs:509:22:509:27 | &mut x | main.rs:507:13:507:13 | x | main.rs:517:19:517:19 | x | +| main.rs:515:13:515:13 | z | main.rs:515:13:515:13 | z | main.rs:519:14:519:14 | z | +| main.rs:516:9:516:9 | w | main.rs:516:9:516:9 | w | main.rs:520:9:520:9 | w | +| main.rs:516:9:516:9 | w | main.rs:516:9:516:9 | w | main.rs:522:7:522:7 | w | +| main.rs:519:9:519:14 | &mut z | main.rs:515:13:515:13 | z | main.rs:525:15:525:15 | z | +| main.rs:529:13:529:13 | x | main.rs:529:13:529:13 | x | main.rs:531:14:531:14 | x | +| main.rs:530:9:530:9 | y | main.rs:530:9:530:9 | y | main.rs:532:6:532:6 | y | +| main.rs:531:9:531:14 | &mut x | main.rs:529:13:529:13 | x | main.rs:533:15:533:15 | x | +| main.rs:537:9:537:9 | x | main.rs:537:9:537:9 | x | main.rs:544:15:544:15 | x | +| main.rs:540:9:540:11 | cap | main.rs:540:9:540:11 | cap | main.rs:543:5:543:7 | cap | +| main.rs:540:15:542:5 | x | main.rs:537:9:537:9 | x | main.rs:541:19:541:19 | x | +| main.rs:548:13:548:13 | x | main.rs:548:13:548:13 | x | main.rs:555:15:555:15 | x | +| main.rs:551:9:551:16 | closure1 | main.rs:551:9:551:16 | closure1 | main.rs:554:5:554:12 | closure1 | +| main.rs:551:20:553:5 | x | main.rs:548:13:548:13 | x | main.rs:552:19:552:19 | x | +| main.rs:560:13:560:20 | closure2 | main.rs:560:13:560:20 | closure2 | main.rs:563:5:563:12 | closure2 | +| main.rs:563:5:563:14 | y | main.rs:557:13:557:13 | y | main.rs:564:15:564:15 | y | +| main.rs:566:13:566:13 | z | main.rs:566:13:566:13 | z | main.rs:573:15:573:15 | z | +| main.rs:569:13:569:20 | closure3 | main.rs:569:13:569:20 | closure3 | main.rs:572:5:572:12 | closure3 | +| main.rs:569:24:571:5 | z | main.rs:566:13:566:13 | z | main.rs:570:9:570:9 | z | +| main.rs:578:9:578:13 | block | main.rs:578:9:578:13 | block | main.rs:582:5:582:9 | block | +| main.rs:582:5:582:15 | i | main.rs:577:13:577:13 | i | main.rs:583:15:583:15 | i | +| main.rs:586:8:586:8 | b | main.rs:586:8:586:8 | b | main.rs:591:16:591:16 | b | +| main.rs:587:13:587:13 | x | main.rs:587:13:587:13 | x | main.rs:588:15:588:15 | x | +| main.rs:587:13:587:13 | x | main.rs:587:13:587:13 | x | main.rs:589:15:589:15 | x | +| main.rs:591:13:600:5 | SSA phi(x) | main.rs:587:13:587:13 | x | main.rs:601:15:601:15 | x | +| main.rs:593:9:593:9 | x | main.rs:587:13:587:13 | x | main.rs:594:19:594:19 | x | +| main.rs:593:9:593:9 | x | main.rs:587:13:587:13 | x | main.rs:595:19:595:19 | x | +| main.rs:597:9:597:9 | x | main.rs:587:13:587:13 | x | main.rs:598:19:598:19 | x | +| main.rs:597:9:597:9 | x | main.rs:587:13:587:13 | x | main.rs:599:19:599:19 | x | +| main.rs:604:13:604:14 | b1 | main.rs:604:13:604:14 | b1 | main.rs:607:16:607:17 | b1 | +| main.rs:604:23:604:24 | b2 | main.rs:604:23:604:24 | b2 | main.rs:615:16:615:17 | b2 | +| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:609:19:609:19 | x | +| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:611:19:611:19 | x | +| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:617:19:617:19 | x | +| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:619:19:619:19 | x | +| main.rs:628:20:628:23 | self | main.rs:628:20:628:23 | self | main.rs:629:16:629:19 | self | +| main.rs:632:11:632:14 | self | main.rs:632:11:632:14 | self | main.rs:633:9:633:12 | self | +| main.rs:637:17:637:17 | f | main.rs:637:17:637:17 | f | main.rs:641:9:641:9 | f | +| main.rs:637:17:637:17 | f | main.rs:637:17:637:17 | f | main.rs:642:9:642:9 | f | +| main.rs:637:21:640:9 | self | main.rs:636:23:636:26 | self | main.rs:639:13:639:16 | self | +| main.rs:637:22:637:22 | n | main.rs:637:22:637:22 | n | main.rs:639:25:639:25 | n | +| main.rs:647:13:647:13 | a | main.rs:647:13:647:13 | a | main.rs:648:15:648:15 | a | +| main.rs:648:15:648:15 | a | main.rs:647:13:647:13 | a | main.rs:649:5:649:5 | a | +| main.rs:648:15:648:15 | a | main.rs:647:13:647:13 | a | main.rs:650:15:650:15 | a | +| main.rs:651:5:651:5 | a | main.rs:647:13:647:13 | a | main.rs:652:15:652:15 | a | +| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:657:15:657:15 | a | +| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | +| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:659:15:659:15 | a | +| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | main.rs:661:15:661:15 | a | +| main.rs:665:9:665:9 | x | main.rs:665:9:665:9 | x | main.rs:666:20:666:20 | x | +| main.rs:665:9:665:9 | x | main.rs:665:9:665:9 | x | main.rs:667:15:667:15 | x | +| main.rs:669:9:669:9 | z | main.rs:669:9:669:9 | z | main.rs:670:20:670:20 | z | +| main.rs:678:17:678:20 | self | main.rs:678:17:678:20 | self | main.rs:679:10:679:13 | self | +| main.rs:684:13:684:13 | a | main.rs:684:13:684:13 | a | main.rs:685:5:685:5 | a | +| main.rs:685:5:685:5 | a | main.rs:684:13:684:13 | a | main.rs:688:15:688:15 | a | +| main.rs:706:9:706:22 | var_from_macro | main.rs:706:9:706:22 | var_from_macro | main.rs:708:15:708:28 | var_from_macro | +| main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | +| main.rs:709:9:709:20 | var_in_macro | main.rs:709:9:709:20 | var_in_macro | main.rs:715:15:715:26 | var_in_macro | +| main.rs:714:15:714:28 | var_in_macro | main.rs:714:15:714:28 | var_in_macro | main.rs:714:30:714:41 | var_in_macro | +| main.rs:720:5:720:5 | x | main.rs:719:9:719:9 | x | main.rs:721:15:721:15 | x | +| main.rs:726:13:726:15 | cap | main.rs:726:13:726:15 | cap | main.rs:732:5:732:7 | cap | +| main.rs:726:20:726:20 | b | main.rs:726:20:726:20 | b | main.rs:728:20:728:20 | b | +| main.rs:732:5:732:13 | x | main.rs:725:13:725:13 | x | main.rs:733:15:733:15 | x | firstRead | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -398,355 +401,358 @@ firstRead | main.rs:20:9:20:10 | x1 | main.rs:20:9:20:10 | x1 | main.rs:21:15:21:16 | x1 | | main.rs:25:13:25:14 | x2 | main.rs:25:13:25:14 | x2 | main.rs:26:15:26:16 | x2 | | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | main.rs:28:15:28:16 | x2 | -| main.rs:32:13:32:13 | x | main.rs:32:13:32:13 | x | main.rs:33:20:33:20 | x | -| main.rs:34:5:34:5 | x | main.rs:32:13:32:13 | x | main.rs:35:20:35:20 | x | -| main.rs:39:9:39:10 | x3 | main.rs:39:9:39:10 | x3 | main.rs:40:15:40:16 | x3 | -| main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | main.rs:43:15:43:16 | x3 | -| main.rs:47:9:47:10 | x4 | main.rs:47:9:47:10 | x4 | main.rs:48:15:48:16 | x4 | -| main.rs:50:13:50:14 | x4 | main.rs:50:13:50:14 | x4 | main.rs:51:19:51:20 | x4 | -| main.rs:64:13:64:14 | a1 | main.rs:64:13:64:14 | a1 | main.rs:72:15:72:16 | a1 | -| main.rs:65:13:65:14 | b1 | main.rs:65:13:65:14 | b1 | main.rs:73:15:73:16 | b1 | -| main.rs:68:13:68:13 | x | main.rs:68:13:68:13 | x | main.rs:74:15:74:15 | x | -| main.rs:69:13:69:13 | y | main.rs:69:13:69:13 | y | main.rs:75:15:75:15 | y | -| main.rs:79:9:79:10 | p1 | main.rs:79:9:79:10 | p1 | main.rs:83:9:83:10 | p1 | -| main.rs:81:12:81:13 | a2 | main.rs:81:12:81:13 | a2 | main.rs:84:15:84:16 | a2 | -| main.rs:82:12:82:13 | b2 | main.rs:82:12:82:13 | b2 | main.rs:85:15:85:16 | b2 | -| main.rs:89:9:89:10 | s1 | main.rs:89:9:89:10 | s1 | main.rs:92:11:92:12 | s1 | -| main.rs:91:21:91:22 | s2 | main.rs:91:21:91:22 | s2 | main.rs:93:19:93:20 | s2 | -| main.rs:98:9:98:9 | x | main.rs:98:9:98:9 | x | main.rs:100:7:100:7 | x | -| main.rs:99:14:99:14 | x | main.rs:99:14:99:14 | x | main.rs:107:15:107:15 | x | -| main.rs:102:13:102:13 | x | main.rs:102:13:102:13 | x | main.rs:104:19:104:19 | x | -| main.rs:111:9:111:10 | s1 | main.rs:111:9:111:10 | s1 | main.rs:114:11:114:12 | s1 | -| main.rs:113:24:113:25 | s2 | main.rs:113:24:113:25 | s2 | main.rs:115:19:115:20 | s2 | -| main.rs:120:9:120:10 | x6 | main.rs:120:9:120:10 | x6 | main.rs:123:11:123:12 | x6 | -| main.rs:121:9:121:10 | y1 | main.rs:121:9:121:10 | y1 | main.rs:133:15:133:16 | y1 | -| main.rs:125:14:125:15 | y1 | main.rs:125:14:125:15 | y1 | main.rs:128:23:128:24 | y1 | -| main.rs:137:9:137:15 | numbers | main.rs:137:9:137:15 | numbers | main.rs:139:11:139:17 | numbers | -| main.rs:142:13:142:17 | first | main.rs:142:13:142:17 | first | main.rs:148:23:148:27 | first | -| main.rs:144:13:144:17 | third | main.rs:144:13:144:17 | third | main.rs:149:23:149:27 | third | -| main.rs:146:13:146:17 | fifth | main.rs:146:13:146:17 | fifth | main.rs:150:23:150:27 | fifth | -| main.rs:157:13:157:17 | first | main.rs:157:13:157:17 | first | main.rs:161:23:161:27 | first | -| main.rs:159:13:159:16 | last | main.rs:159:13:159:16 | last | main.rs:162:23:162:26 | last | -| main.rs:168:9:168:10 | p2 | main.rs:168:9:168:10 | p2 | main.rs:170:11:170:12 | p2 | -| main.rs:172:16:172:17 | x7 | main.rs:172:16:172:17 | x7 | main.rs:173:24:173:25 | x7 | -| main.rs:182:9:182:11 | msg | main.rs:182:9:182:11 | msg | main.rs:184:11:184:13 | msg | -| main.rs:187:17:187:27 | id_variable | main.rs:187:17:187:27 | id_variable | main.rs:188:24:188:34 | id_variable | -| main.rs:192:26:192:27 | id | main.rs:192:26:192:27 | id | main.rs:195:23:195:24 | id | -| main.rs:206:9:206:14 | either | main.rs:206:9:206:14 | either | main.rs:207:11:207:16 | either | -| main.rs:208:9:208:44 | SSA phi(a3) | main.rs:208:9:208:44 | a3 | main.rs:209:26:209:27 | a3 | -| main.rs:220:9:220:10 | tv | main.rs:220:9:220:10 | tv | main.rs:221:11:221:12 | tv | -| main.rs:222:9:222:81 | SSA phi(a4) | main.rs:222:9:222:81 | a4 | main.rs:223:26:223:27 | a4 | -| main.rs:226:9:226:83 | SSA phi(a5) | main.rs:226:9:226:83 | a5 | main.rs:227:26:227:27 | a5 | -| main.rs:230:9:230:83 | SSA phi(a6) | main.rs:230:9:230:83 | a6 | main.rs:231:26:231:27 | a6 | -| main.rs:236:9:236:14 | either | main.rs:236:9:236:14 | either | main.rs:237:11:237:16 | either | -| main.rs:238:9:238:44 | [match(true)] SSA phi(a7) | main.rs:238:9:238:44 | a7 | main.rs:239:16:239:17 | a7 | -| main.rs:246:9:246:14 | either | main.rs:246:9:246:14 | either | main.rs:248:11:248:16 | either | -| main.rs:249:13:249:13 | e | main.rs:249:13:249:13 | e | main.rs:254:15:254:15 | e | -| main.rs:250:14:250:51 | [match(true)] SSA phi(a11) | main.rs:250:14:250:51 | a11 | main.rs:252:23:252:25 | a11 | -| main.rs:253:33:253:35 | a12 | main.rs:253:33:253:35 | a12 | main.rs:255:28:255:30 | a12 | -| main.rs:270:9:270:10 | fv | main.rs:270:9:270:10 | fv | main.rs:271:11:271:12 | fv | -| main.rs:272:9:272:109 | SSA phi(a13) | main.rs:272:9:272:109 | a13 | main.rs:273:26:273:28 | a13 | -| main.rs:279:9:279:9 | x | main.rs:279:9:279:9 | x | main.rs:281:7:281:7 | x | -| main.rs:280:17:280:17 | x | main.rs:280:17:280:17 | x | main.rs:283:5:283:5 | x | -| main.rs:287:13:287:13 | x | main.rs:287:13:287:13 | x | main.rs:289:19:289:19 | x | -| main.rs:295:9:295:9 | x | main.rs:295:9:295:9 | x | main.rs:297:7:297:7 | x | -| main.rs:296:17:296:17 | x | main.rs:296:17:296:17 | x | main.rs:300:12:300:12 | x | -| main.rs:299:14:299:14 | x | main.rs:299:14:299:14 | x | main.rs:302:5:302:5 | x | -| main.rs:306:13:306:13 | x | main.rs:306:13:306:13 | x | main.rs:308:19:308:19 | x | -| main.rs:314:9:314:9 | x | main.rs:314:9:314:9 | x | main.rs:316:7:316:7 | x | -| main.rs:315:20:315:20 | x | main.rs:315:20:315:20 | x | main.rs:319:12:319:12 | x | -| main.rs:318:14:318:14 | x | main.rs:318:14:318:14 | x | main.rs:321:5:321:5 | x | -| main.rs:332:9:332:9 | x | main.rs:332:9:332:9 | x | main.rs:333:11:333:11 | x | -| main.rs:334:14:334:14 | x | main.rs:334:14:334:14 | x | main.rs:336:18:336:18 | x | -| main.rs:335:20:335:20 | x | main.rs:335:20:335:20 | x | main.rs:337:19:337:19 | x | -| main.rs:346:9:346:9 | x | main.rs:346:9:346:9 | x | main.rs:348:7:348:7 | x | -| main.rs:347:16:347:16 | x | main.rs:347:16:347:16 | x | main.rs:350:19:350:19 | x | -| main.rs:352:20:352:20 | x | main.rs:352:20:352:20 | x | main.rs:355:19:355:19 | x | -| main.rs:362:5:362:6 | a8 | main.rs:362:5:362:6 | a8 | main.rs:368:15:368:16 | a8 | -| main.rs:364:9:364:10 | b3 | main.rs:364:9:364:10 | b3 | main.rs:369:15:369:16 | b3 | -| main.rs:365:9:365:10 | c1 | main.rs:365:9:365:10 | c1 | main.rs:370:15:370:16 | c1 | -| main.rs:373:20:373:55 | SSA phi(a9) | main.rs:373:20:373:55 | a9 | main.rs:375:15:375:16 | a9 | -| main.rs:380:13:380:15 | a10 | main.rs:380:13:380:15 | a10 | main.rs:384:15:384:17 | a10 | -| main.rs:381:13:381:14 | b4 | main.rs:381:13:381:14 | b4 | main.rs:385:15:385:16 | b4 | -| main.rs:382:13:382:14 | c2 | main.rs:382:13:382:14 | c2 | main.rs:386:15:386:16 | c2 | -| main.rs:389:9:389:10 | c2 | main.rs:382:13:382:14 | c2 | main.rs:395:9:395:10 | c2 | -| main.rs:390:9:390:10 | b4 | main.rs:381:13:381:14 | b4 | main.rs:394:9:394:10 | b4 | -| main.rs:391:9:391:11 | a10 | main.rs:380:13:380:15 | a10 | main.rs:393:9:393:11 | a10 | -| main.rs:403:13:403:15 | a10 | main.rs:403:13:403:15 | a10 | main.rs:406:23:406:25 | a10 | -| main.rs:404:13:404:14 | b4 | main.rs:404:13:404:14 | b4 | main.rs:407:23:407:24 | b4 | -| main.rs:416:9:416:23 | example_closure | main.rs:416:9:416:23 | example_closure | main.rs:420:9:420:23 | example_closure | -| main.rs:417:10:417:10 | x | main.rs:417:10:417:10 | x | main.rs:418:9:418:9 | x | -| main.rs:419:9:419:10 | n1 | main.rs:419:9:419:10 | n1 | main.rs:421:15:421:16 | n1 | -| main.rs:424:9:424:26 | immutable_variable | main.rs:424:9:424:26 | immutable_variable | main.rs:428:9:428:26 | immutable_variable | -| main.rs:425:6:425:6 | x | main.rs:425:6:425:6 | x | main.rs:426:9:426:9 | x | -| main.rs:427:9:427:10 | n2 | main.rs:427:9:427:10 | n2 | main.rs:429:15:429:16 | n2 | -| main.rs:434:9:434:9 | f | main.rs:434:9:434:9 | f | main.rs:437:15:437:15 | f | -| main.rs:435:10:435:10 | x | main.rs:435:10:435:10 | x | main.rs:436:9:436:9 | x | -| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | main.rs:441:9:441:9 | x | -| main.rs:448:14:448:14 | x | main.rs:448:14:448:14 | x | main.rs:450:17:450:17 | x | -| main.rs:457:13:457:13 | f | main.rs:457:13:457:13 | f | main.rs:460:19:460:19 | f | -| main.rs:458:14:458:14 | x | main.rs:458:14:458:14 | x | main.rs:459:13:459:13 | x | -| main.rs:465:9:465:9 | v | main.rs:465:9:465:9 | v | main.rs:468:12:468:12 | v | -| main.rs:467:9:467:12 | text | main.rs:467:9:467:12 | text | main.rs:469:19:469:22 | text | -| main.rs:474:13:474:13 | a | main.rs:474:13:474:13 | a | main.rs:475:5:475:5 | a | -| main.rs:475:5:475:5 | a | main.rs:474:13:474:13 | a | main.rs:476:15:476:15 | a | -| main.rs:477:6:477:11 | &mut a | main.rs:474:13:474:13 | a | main.rs:478:15:478:15 | a | -| main.rs:482:13:482:13 | i | main.rs:482:13:482:13 | i | main.rs:484:14:484:14 | i | -| main.rs:483:9:483:13 | ref_i | main.rs:483:9:483:13 | ref_i | main.rs:485:6:485:10 | ref_i | -| main.rs:484:9:484:14 | &mut i | main.rs:482:13:482:13 | i | main.rs:486:15:486:15 | i | -| main.rs:489:17:489:17 | x | main.rs:489:17:489:17 | x | main.rs:490:6:490:6 | x | -| main.rs:496:22:496:22 | x | main.rs:496:22:496:22 | x | main.rs:497:6:497:6 | x | -| main.rs:496:38:496:38 | y | main.rs:496:38:496:38 | y | main.rs:500:6:500:6 | y | -| main.rs:505:13:505:13 | x | main.rs:505:13:505:13 | x | main.rs:507:27:507:27 | x | -| main.rs:506:9:506:9 | y | main.rs:506:9:506:9 | y | main.rs:508:6:508:6 | y | -| main.rs:507:22:507:27 | &mut x | main.rs:505:13:505:13 | x | main.rs:511:15:511:15 | x | -| main.rs:513:13:513:13 | z | main.rs:513:13:513:13 | z | main.rs:517:14:517:14 | z | -| main.rs:514:9:514:9 | w | main.rs:514:9:514:9 | w | main.rs:518:9:518:9 | w | -| main.rs:517:9:517:14 | &mut z | main.rs:513:13:513:13 | z | main.rs:523:15:523:15 | z | -| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | main.rs:529:14:529:14 | x | -| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | main.rs:530:6:530:6 | y | -| main.rs:529:9:529:14 | &mut x | main.rs:527:13:527:13 | x | main.rs:531:15:531:15 | x | -| main.rs:535:9:535:9 | x | main.rs:535:9:535:9 | x | main.rs:542:15:542:15 | x | -| main.rs:538:9:538:11 | cap | main.rs:538:9:538:11 | cap | main.rs:541:5:541:7 | cap | -| main.rs:538:15:540:5 | x | main.rs:535:9:535:9 | x | main.rs:539:19:539:19 | x | -| main.rs:546:13:546:13 | x | main.rs:546:13:546:13 | x | main.rs:553:15:553:15 | x | -| main.rs:549:9:549:16 | closure1 | main.rs:549:9:549:16 | closure1 | main.rs:552:5:552:12 | closure1 | -| main.rs:549:20:551:5 | x | main.rs:546:13:546:13 | x | main.rs:550:19:550:19 | x | -| main.rs:558:13:558:20 | closure2 | main.rs:558:13:558:20 | closure2 | main.rs:561:5:561:12 | closure2 | -| main.rs:561:5:561:14 | y | main.rs:555:13:555:13 | y | main.rs:562:15:562:15 | y | -| main.rs:564:13:564:13 | z | main.rs:564:13:564:13 | z | main.rs:571:15:571:15 | z | -| main.rs:567:13:567:20 | closure3 | main.rs:567:13:567:20 | closure3 | main.rs:570:5:570:12 | closure3 | -| main.rs:567:24:569:5 | z | main.rs:564:13:564:13 | z | main.rs:568:9:568:9 | z | -| main.rs:576:9:576:13 | block | main.rs:576:9:576:13 | block | main.rs:580:5:580:9 | block | -| main.rs:580:5:580:15 | i | main.rs:575:13:575:13 | i | main.rs:581:15:581:15 | i | -| main.rs:584:8:584:8 | b | main.rs:584:8:584:8 | b | main.rs:589:16:589:16 | b | -| main.rs:585:13:585:13 | x | main.rs:585:13:585:13 | x | main.rs:586:15:586:15 | x | -| main.rs:589:13:598:5 | SSA phi(x) | main.rs:585:13:585:13 | x | main.rs:599:15:599:15 | x | -| main.rs:591:9:591:9 | x | main.rs:585:13:585:13 | x | main.rs:592:19:592:19 | x | -| main.rs:595:9:595:9 | x | main.rs:585:13:585:13 | x | main.rs:596:19:596:19 | x | -| main.rs:602:13:602:14 | b1 | main.rs:602:13:602:14 | b1 | main.rs:605:16:605:17 | b1 | -| main.rs:602:23:602:24 | b2 | main.rs:602:23:602:24 | b2 | main.rs:613:16:613:17 | b2 | -| main.rs:603:9:603:9 | x | main.rs:603:9:603:9 | x | main.rs:607:19:607:19 | x | -| main.rs:603:9:603:9 | x | main.rs:603:9:603:9 | x | main.rs:609:19:609:19 | x | -| main.rs:626:20:626:23 | self | main.rs:626:20:626:23 | self | main.rs:627:16:627:19 | self | -| main.rs:630:11:630:14 | self | main.rs:630:11:630:14 | self | main.rs:631:9:631:12 | self | -| main.rs:635:17:635:17 | f | main.rs:635:17:635:17 | f | main.rs:639:9:639:9 | f | -| main.rs:635:21:638:9 | self | main.rs:634:23:634:26 | self | main.rs:637:13:637:16 | self | -| main.rs:635:22:635:22 | n | main.rs:635:22:635:22 | n | main.rs:637:25:637:25 | n | -| main.rs:645:13:645:13 | a | main.rs:645:13:645:13 | a | main.rs:646:15:646:15 | a | -| main.rs:646:15:646:15 | a | main.rs:645:13:645:13 | a | main.rs:647:5:647:5 | a | -| main.rs:649:5:649:5 | a | main.rs:645:13:645:13 | a | main.rs:650:15:650:15 | a | -| main.rs:654:13:654:13 | a | main.rs:654:13:654:13 | a | main.rs:655:15:655:15 | a | -| main.rs:658:5:658:5 | a | main.rs:654:13:654:13 | a | main.rs:659:15:659:15 | a | -| main.rs:663:9:663:9 | x | main.rs:663:9:663:9 | x | main.rs:664:20:664:20 | x | -| main.rs:667:9:667:9 | z | main.rs:667:9:667:9 | z | main.rs:668:20:668:20 | z | -| main.rs:676:17:676:20 | self | main.rs:676:17:676:20 | self | main.rs:677:10:677:13 | self | -| main.rs:682:13:682:13 | a | main.rs:682:13:682:13 | a | main.rs:683:5:683:5 | a | -| main.rs:683:5:683:5 | a | main.rs:682:13:682:13 | a | main.rs:686:15:686:15 | a | -| main.rs:704:9:704:22 | var_from_macro | main.rs:704:9:704:22 | var_from_macro | main.rs:706:15:706:28 | var_from_macro | -| main.rs:705:9:705:21 | var_in_macro | main.rs:705:9:705:21 | var_in_macro | main.rs:705:9:705:21 | var_in_macro | -| main.rs:707:9:707:20 | var_in_macro | main.rs:707:9:707:20 | var_in_macro | main.rs:713:15:713:26 | var_in_macro | -| main.rs:712:15:712:28 | var_in_macro | main.rs:712:15:712:28 | var_in_macro | main.rs:712:30:712:41 | var_in_macro | -| main.rs:718:5:718:5 | x | main.rs:717:9:717:9 | x | main.rs:719:15:719:15 | x | -| main.rs:724:13:724:15 | cap | main.rs:724:13:724:15 | cap | main.rs:730:5:730:7 | cap | -| main.rs:724:20:724:20 | b | main.rs:724:20:724:20 | b | main.rs:726:20:726:20 | b | -| main.rs:730:5:730:13 | x | main.rs:723:13:723:13 | x | main.rs:731:15:731:15 | x | +| main.rs:29:5:29:6 | x2 | main.rs:25:13:25:14 | x2 | main.rs:30:15:30:16 | x2 | +| main.rs:34:13:34:13 | x | main.rs:34:13:34:13 | x | main.rs:35:20:35:20 | x | +| main.rs:36:5:36:5 | x | main.rs:34:13:34:13 | x | main.rs:37:20:37:20 | x | +| main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | main.rs:42:15:42:16 | x3 | +| main.rs:43:9:43:10 | x3 | main.rs:43:9:43:10 | x3 | main.rs:45:15:45:16 | x3 | +| main.rs:49:9:49:10 | x4 | main.rs:49:9:49:10 | x4 | main.rs:50:15:50:16 | x4 | +| main.rs:52:13:52:14 | x4 | main.rs:52:13:52:14 | x4 | main.rs:53:19:53:20 | x4 | +| main.rs:66:13:66:14 | a1 | main.rs:66:13:66:14 | a1 | main.rs:74:15:74:16 | a1 | +| main.rs:67:13:67:14 | b1 | main.rs:67:13:67:14 | b1 | main.rs:75:15:75:16 | b1 | +| main.rs:70:13:70:13 | x | main.rs:70:13:70:13 | x | main.rs:76:15:76:15 | x | +| main.rs:71:13:71:13 | y | main.rs:71:13:71:13 | y | main.rs:77:15:77:15 | y | +| main.rs:81:9:81:10 | p1 | main.rs:81:9:81:10 | p1 | main.rs:85:9:85:10 | p1 | +| main.rs:83:12:83:13 | a2 | main.rs:83:12:83:13 | a2 | main.rs:86:15:86:16 | a2 | +| main.rs:84:12:84:13 | b2 | main.rs:84:12:84:13 | b2 | main.rs:87:15:87:16 | b2 | +| main.rs:91:9:91:10 | s1 | main.rs:91:9:91:10 | s1 | main.rs:94:11:94:12 | s1 | +| main.rs:93:21:93:22 | s2 | main.rs:93:21:93:22 | s2 | main.rs:95:19:95:20 | s2 | +| main.rs:100:9:100:9 | x | main.rs:100:9:100:9 | x | main.rs:102:7:102:7 | x | +| main.rs:101:14:101:14 | x | main.rs:101:14:101:14 | x | main.rs:109:15:109:15 | x | +| main.rs:104:13:104:13 | x | main.rs:104:13:104:13 | x | main.rs:106:19:106:19 | x | +| main.rs:113:9:113:10 | s1 | main.rs:113:9:113:10 | s1 | main.rs:116:11:116:12 | s1 | +| main.rs:115:24:115:25 | s2 | main.rs:115:24:115:25 | s2 | main.rs:117:19:117:20 | s2 | +| main.rs:122:9:122:10 | x6 | main.rs:122:9:122:10 | x6 | main.rs:125:11:125:12 | x6 | +| main.rs:123:9:123:10 | y1 | main.rs:123:9:123:10 | y1 | main.rs:135:15:135:16 | y1 | +| main.rs:127:14:127:15 | y1 | main.rs:127:14:127:15 | y1 | main.rs:130:23:130:24 | y1 | +| main.rs:139:9:139:15 | numbers | main.rs:139:9:139:15 | numbers | main.rs:141:11:141:17 | numbers | +| main.rs:144:13:144:17 | first | main.rs:144:13:144:17 | first | main.rs:150:23:150:27 | first | +| main.rs:146:13:146:17 | third | main.rs:146:13:146:17 | third | main.rs:151:23:151:27 | third | +| main.rs:148:13:148:17 | fifth | main.rs:148:13:148:17 | fifth | main.rs:152:23:152:27 | fifth | +| main.rs:159:13:159:17 | first | main.rs:159:13:159:17 | first | main.rs:163:23:163:27 | first | +| main.rs:161:13:161:16 | last | main.rs:161:13:161:16 | last | main.rs:164:23:164:26 | last | +| main.rs:170:9:170:10 | p2 | main.rs:170:9:170:10 | p2 | main.rs:172:11:172:12 | p2 | +| main.rs:174:16:174:17 | x7 | main.rs:174:16:174:17 | x7 | main.rs:175:24:175:25 | x7 | +| main.rs:184:9:184:11 | msg | main.rs:184:9:184:11 | msg | main.rs:186:11:186:13 | msg | +| main.rs:189:17:189:27 | id_variable | main.rs:189:17:189:27 | id_variable | main.rs:190:24:190:34 | id_variable | +| main.rs:194:26:194:27 | id | main.rs:194:26:194:27 | id | main.rs:197:23:197:24 | id | +| main.rs:208:9:208:14 | either | main.rs:208:9:208:14 | either | main.rs:209:11:209:16 | either | +| main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:211:26:211:27 | a3 | +| main.rs:222:9:222:10 | tv | main.rs:222:9:222:10 | tv | main.rs:223:11:223:12 | tv | +| main.rs:224:9:224:81 | SSA phi(a4) | main.rs:224:9:224:81 | a4 | main.rs:225:26:225:27 | a4 | +| main.rs:228:9:228:83 | SSA phi(a5) | main.rs:228:9:228:83 | a5 | main.rs:229:26:229:27 | a5 | +| main.rs:232:9:232:83 | SSA phi(a6) | main.rs:232:9:232:83 | a6 | main.rs:233:26:233:27 | a6 | +| main.rs:238:9:238:14 | either | main.rs:238:9:238:14 | either | main.rs:239:11:239:16 | either | +| main.rs:240:9:240:44 | [match(true)] SSA phi(a7) | main.rs:240:9:240:44 | a7 | main.rs:241:16:241:17 | a7 | +| main.rs:248:9:248:14 | either | main.rs:248:9:248:14 | either | main.rs:250:11:250:16 | either | +| main.rs:251:13:251:13 | e | main.rs:251:13:251:13 | e | main.rs:256:15:256:15 | e | +| main.rs:252:14:252:51 | [match(true)] SSA phi(a11) | main.rs:252:14:252:51 | a11 | main.rs:254:23:254:25 | a11 | +| main.rs:255:33:255:35 | a12 | main.rs:255:33:255:35 | a12 | main.rs:257:28:257:30 | a12 | +| main.rs:272:9:272:10 | fv | main.rs:272:9:272:10 | fv | main.rs:273:11:273:12 | fv | +| main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:275:26:275:28 | a13 | +| main.rs:281:9:281:9 | x | main.rs:281:9:281:9 | x | main.rs:283:7:283:7 | x | +| main.rs:282:17:282:17 | x | main.rs:282:17:282:17 | x | main.rs:285:5:285:5 | x | +| main.rs:289:13:289:13 | x | main.rs:289:13:289:13 | x | main.rs:291:19:291:19 | x | +| main.rs:297:9:297:9 | x | main.rs:297:9:297:9 | x | main.rs:299:7:299:7 | x | +| main.rs:298:17:298:17 | x | main.rs:298:17:298:17 | x | main.rs:302:12:302:12 | x | +| main.rs:301:14:301:14 | x | main.rs:301:14:301:14 | x | main.rs:304:5:304:5 | x | +| main.rs:308:13:308:13 | x | main.rs:308:13:308:13 | x | main.rs:310:19:310:19 | x | +| main.rs:316:9:316:9 | x | main.rs:316:9:316:9 | x | main.rs:318:7:318:7 | x | +| main.rs:317:20:317:20 | x | main.rs:317:20:317:20 | x | main.rs:321:12:321:12 | x | +| main.rs:320:14:320:14 | x | main.rs:320:14:320:14 | x | main.rs:323:5:323:5 | x | +| main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | main.rs:335:11:335:11 | x | +| main.rs:336:14:336:14 | x | main.rs:336:14:336:14 | x | main.rs:338:18:338:18 | x | +| main.rs:337:20:337:20 | x | main.rs:337:20:337:20 | x | main.rs:339:19:339:19 | x | +| main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:350:7:350:7 | x | +| main.rs:349:16:349:16 | x | main.rs:349:16:349:16 | x | main.rs:352:19:352:19 | x | +| main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | main.rs:357:19:357:19 | x | +| main.rs:364:5:364:6 | a8 | main.rs:364:5:364:6 | a8 | main.rs:370:15:370:16 | a8 | +| main.rs:366:9:366:10 | b3 | main.rs:366:9:366:10 | b3 | main.rs:371:15:371:16 | b3 | +| main.rs:367:9:367:10 | c1 | main.rs:367:9:367:10 | c1 | main.rs:372:15:372:16 | c1 | +| main.rs:375:20:375:55 | SSA phi(a9) | main.rs:375:20:375:55 | a9 | main.rs:377:15:377:16 | a9 | +| main.rs:382:13:382:15 | a10 | main.rs:382:13:382:15 | a10 | main.rs:386:15:386:17 | a10 | +| main.rs:383:13:383:14 | b4 | main.rs:383:13:383:14 | b4 | main.rs:387:15:387:16 | b4 | +| main.rs:384:13:384:14 | c2 | main.rs:384:13:384:14 | c2 | main.rs:388:15:388:16 | c2 | +| main.rs:391:9:391:10 | c2 | main.rs:384:13:384:14 | c2 | main.rs:401:15:401:16 | c2 | +| main.rs:392:9:392:10 | b4 | main.rs:383:13:383:14 | b4 | main.rs:400:15:400:16 | b4 | +| main.rs:393:9:393:11 | a10 | main.rs:382:13:382:15 | a10 | main.rs:399:15:399:17 | a10 | +| main.rs:405:13:405:15 | a10 | main.rs:405:13:405:15 | a10 | main.rs:408:23:408:25 | a10 | +| main.rs:406:13:406:14 | b4 | main.rs:406:13:406:14 | b4 | main.rs:409:23:409:24 | b4 | +| main.rs:418:9:418:23 | example_closure | main.rs:418:9:418:23 | example_closure | main.rs:422:9:422:23 | example_closure | +| main.rs:419:10:419:10 | x | main.rs:419:10:419:10 | x | main.rs:420:9:420:9 | x | +| main.rs:421:9:421:10 | n1 | main.rs:421:9:421:10 | n1 | main.rs:423:15:423:16 | n1 | +| main.rs:426:9:426:26 | immutable_variable | main.rs:426:9:426:26 | immutable_variable | main.rs:430:9:430:26 | immutable_variable | +| main.rs:427:6:427:6 | x | main.rs:427:6:427:6 | x | main.rs:428:9:428:9 | x | +| main.rs:429:9:429:10 | n2 | main.rs:429:9:429:10 | n2 | main.rs:431:15:431:16 | n2 | +| main.rs:436:9:436:9 | f | main.rs:436:9:436:9 | f | main.rs:439:15:439:15 | f | +| main.rs:437:10:437:10 | x | main.rs:437:10:437:10 | x | main.rs:438:9:438:9 | x | +| main.rs:441:10:441:10 | x | main.rs:441:10:441:10 | x | main.rs:443:9:443:9 | x | +| main.rs:450:14:450:14 | x | main.rs:450:14:450:14 | x | main.rs:452:17:452:17 | x | +| main.rs:459:13:459:13 | f | main.rs:459:13:459:13 | f | main.rs:462:19:462:19 | f | +| main.rs:460:14:460:14 | x | main.rs:460:14:460:14 | x | main.rs:461:13:461:13 | x | +| main.rs:467:9:467:9 | v | main.rs:467:9:467:9 | v | main.rs:470:12:470:12 | v | +| main.rs:469:9:469:12 | text | main.rs:469:9:469:12 | text | main.rs:471:19:471:22 | text | +| main.rs:476:13:476:13 | a | main.rs:476:13:476:13 | a | main.rs:477:5:477:5 | a | +| main.rs:477:5:477:5 | a | main.rs:476:13:476:13 | a | main.rs:478:15:478:15 | a | +| main.rs:479:6:479:11 | &mut a | main.rs:476:13:476:13 | a | main.rs:480:15:480:15 | a | +| main.rs:484:13:484:13 | i | main.rs:484:13:484:13 | i | main.rs:486:14:486:14 | i | +| main.rs:485:9:485:13 | ref_i | main.rs:485:9:485:13 | ref_i | main.rs:487:6:487:10 | ref_i | +| main.rs:486:9:486:14 | &mut i | main.rs:484:13:484:13 | i | main.rs:488:15:488:15 | i | +| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:492:6:492:6 | x | +| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:499:6:499:6 | x | +| main.rs:498:38:498:38 | y | main.rs:498:38:498:38 | y | main.rs:502:6:502:6 | y | +| main.rs:507:13:507:13 | x | main.rs:507:13:507:13 | x | main.rs:509:27:509:27 | x | +| main.rs:508:9:508:9 | y | main.rs:508:9:508:9 | y | main.rs:510:6:510:6 | y | +| main.rs:509:22:509:27 | &mut x | main.rs:507:13:507:13 | x | main.rs:513:15:513:15 | x | +| main.rs:515:13:515:13 | z | main.rs:515:13:515:13 | z | main.rs:519:14:519:14 | z | +| main.rs:516:9:516:9 | w | main.rs:516:9:516:9 | w | main.rs:520:9:520:9 | w | +| main.rs:519:9:519:14 | &mut z | main.rs:515:13:515:13 | z | main.rs:525:15:525:15 | z | +| main.rs:529:13:529:13 | x | main.rs:529:13:529:13 | x | main.rs:531:14:531:14 | x | +| main.rs:530:9:530:9 | y | main.rs:530:9:530:9 | y | main.rs:532:6:532:6 | y | +| main.rs:531:9:531:14 | &mut x | main.rs:529:13:529:13 | x | main.rs:533:15:533:15 | x | +| main.rs:537:9:537:9 | x | main.rs:537:9:537:9 | x | main.rs:544:15:544:15 | x | +| main.rs:540:9:540:11 | cap | main.rs:540:9:540:11 | cap | main.rs:543:5:543:7 | cap | +| main.rs:540:15:542:5 | x | main.rs:537:9:537:9 | x | main.rs:541:19:541:19 | x | +| main.rs:548:13:548:13 | x | main.rs:548:13:548:13 | x | main.rs:555:15:555:15 | x | +| main.rs:551:9:551:16 | closure1 | main.rs:551:9:551:16 | closure1 | main.rs:554:5:554:12 | closure1 | +| main.rs:551:20:553:5 | x | main.rs:548:13:548:13 | x | main.rs:552:19:552:19 | x | +| main.rs:560:13:560:20 | closure2 | main.rs:560:13:560:20 | closure2 | main.rs:563:5:563:12 | closure2 | +| main.rs:563:5:563:14 | y | main.rs:557:13:557:13 | y | main.rs:564:15:564:15 | y | +| main.rs:566:13:566:13 | z | main.rs:566:13:566:13 | z | main.rs:573:15:573:15 | z | +| main.rs:569:13:569:20 | closure3 | main.rs:569:13:569:20 | closure3 | main.rs:572:5:572:12 | closure3 | +| main.rs:569:24:571:5 | z | main.rs:566:13:566:13 | z | main.rs:570:9:570:9 | z | +| main.rs:578:9:578:13 | block | main.rs:578:9:578:13 | block | main.rs:582:5:582:9 | block | +| main.rs:582:5:582:15 | i | main.rs:577:13:577:13 | i | main.rs:583:15:583:15 | i | +| main.rs:586:8:586:8 | b | main.rs:586:8:586:8 | b | main.rs:591:16:591:16 | b | +| main.rs:587:13:587:13 | x | main.rs:587:13:587:13 | x | main.rs:588:15:588:15 | x | +| main.rs:591:13:600:5 | SSA phi(x) | main.rs:587:13:587:13 | x | main.rs:601:15:601:15 | x | +| main.rs:593:9:593:9 | x | main.rs:587:13:587:13 | x | main.rs:594:19:594:19 | x | +| main.rs:597:9:597:9 | x | main.rs:587:13:587:13 | x | main.rs:598:19:598:19 | x | +| main.rs:604:13:604:14 | b1 | main.rs:604:13:604:14 | b1 | main.rs:607:16:607:17 | b1 | +| main.rs:604:23:604:24 | b2 | main.rs:604:23:604:24 | b2 | main.rs:615:16:615:17 | b2 | +| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:609:19:609:19 | x | +| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:611:19:611:19 | x | +| main.rs:628:20:628:23 | self | main.rs:628:20:628:23 | self | main.rs:629:16:629:19 | self | +| main.rs:632:11:632:14 | self | main.rs:632:11:632:14 | self | main.rs:633:9:633:12 | self | +| main.rs:637:17:637:17 | f | main.rs:637:17:637:17 | f | main.rs:641:9:641:9 | f | +| main.rs:637:21:640:9 | self | main.rs:636:23:636:26 | self | main.rs:639:13:639:16 | self | +| main.rs:637:22:637:22 | n | main.rs:637:22:637:22 | n | main.rs:639:25:639:25 | n | +| main.rs:647:13:647:13 | a | main.rs:647:13:647:13 | a | main.rs:648:15:648:15 | a | +| main.rs:648:15:648:15 | a | main.rs:647:13:647:13 | a | main.rs:649:5:649:5 | a | +| main.rs:651:5:651:5 | a | main.rs:647:13:647:13 | a | main.rs:652:15:652:15 | a | +| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:657:15:657:15 | a | +| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | main.rs:661:15:661:15 | a | +| main.rs:665:9:665:9 | x | main.rs:665:9:665:9 | x | main.rs:666:20:666:20 | x | +| main.rs:669:9:669:9 | z | main.rs:669:9:669:9 | z | main.rs:670:20:670:20 | z | +| main.rs:678:17:678:20 | self | main.rs:678:17:678:20 | self | main.rs:679:10:679:13 | self | +| main.rs:684:13:684:13 | a | main.rs:684:13:684:13 | a | main.rs:685:5:685:5 | a | +| main.rs:685:5:685:5 | a | main.rs:684:13:684:13 | a | main.rs:688:15:688:15 | a | +| main.rs:706:9:706:22 | var_from_macro | main.rs:706:9:706:22 | var_from_macro | main.rs:708:15:708:28 | var_from_macro | +| main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | +| main.rs:709:9:709:20 | var_in_macro | main.rs:709:9:709:20 | var_in_macro | main.rs:715:15:715:26 | var_in_macro | +| main.rs:714:15:714:28 | var_in_macro | main.rs:714:15:714:28 | var_in_macro | main.rs:714:30:714:41 | var_in_macro | +| main.rs:720:5:720:5 | x | main.rs:719:9:719:9 | x | main.rs:721:15:721:15 | x | +| main.rs:726:13:726:15 | cap | main.rs:726:13:726:15 | cap | main.rs:732:5:732:7 | cap | +| main.rs:726:20:726:20 | b | main.rs:726:20:726:20 | b | main.rs:728:20:728:20 | b | +| main.rs:732:5:732:13 | x | main.rs:725:13:725:13 | x | main.rs:733:15:733:15 | x | adjacentReads -| main.rs:39:9:39:10 | x3 | main.rs:39:9:39:10 | x3 | main.rs:40:15:40:16 | x3 | main.rs:42:9:42:10 | x3 | -| main.rs:47:9:47:10 | x4 | main.rs:47:9:47:10 | x4 | main.rs:48:15:48:16 | x4 | main.rs:53:15:53:16 | x4 | -| main.rs:98:9:98:9 | x | main.rs:98:9:98:9 | x | main.rs:100:7:100:7 | x | main.rs:103:13:103:13 | x | -| main.rs:111:9:111:10 | s1 | main.rs:111:9:111:10 | s1 | main.rs:114:11:114:12 | s1 | main.rs:114:11:114:12 | s1 | -| main.rs:137:9:137:15 | numbers | main.rs:137:9:137:15 | numbers | main.rs:139:11:139:17 | numbers | main.rs:154:11:154:17 | numbers | -| main.rs:220:9:220:10 | tv | main.rs:220:9:220:10 | tv | main.rs:221:11:221:12 | tv | main.rs:225:11:225:12 | tv | -| main.rs:220:9:220:10 | tv | main.rs:220:9:220:10 | tv | main.rs:225:11:225:12 | tv | main.rs:229:11:229:12 | tv | -| main.rs:238:9:238:44 | [match(true)] SSA phi(a7) | main.rs:238:9:238:44 | a7 | main.rs:239:16:239:17 | a7 | main.rs:240:26:240:27 | a7 | -| main.rs:279:9:279:9 | x | main.rs:279:9:279:9 | x | main.rs:281:7:281:7 | x | main.rs:288:13:288:13 | x | -| main.rs:280:17:280:17 | x | main.rs:280:17:280:17 | x | main.rs:283:5:283:5 | x | main.rs:285:19:285:19 | x | -| main.rs:295:9:295:9 | x | main.rs:295:9:295:9 | x | main.rs:297:7:297:7 | x | main.rs:307:13:307:13 | x | -| main.rs:299:14:299:14 | x | main.rs:299:14:299:14 | x | main.rs:302:5:302:5 | x | main.rs:304:19:304:19 | x | -| main.rs:314:9:314:9 | x | main.rs:314:9:314:9 | x | main.rs:316:7:316:7 | x | main.rs:327:15:327:15 | x | -| main.rs:318:14:318:14 | x | main.rs:318:14:318:14 | x | main.rs:321:5:321:5 | x | main.rs:323:19:323:19 | x | -| main.rs:332:9:332:9 | x | main.rs:332:9:332:9 | x | main.rs:333:11:333:11 | x | main.rs:341:15:341:15 | x | -| main.rs:346:9:346:9 | x | main.rs:346:9:346:9 | x | main.rs:348:7:348:7 | x | main.rs:353:7:353:7 | x | -| main.rs:346:9:346:9 | x | main.rs:346:9:346:9 | x | main.rs:353:7:353:7 | x | main.rs:357:19:357:19 | x | -| main.rs:389:9:389:10 | c2 | main.rs:382:13:382:14 | c2 | main.rs:395:9:395:10 | c2 | main.rs:399:15:399:16 | c2 | -| main.rs:390:9:390:10 | b4 | main.rs:381:13:381:14 | b4 | main.rs:394:9:394:10 | b4 | main.rs:398:15:398:16 | b4 | -| main.rs:390:9:390:10 | b4 | main.rs:381:13:381:14 | b4 | main.rs:398:15:398:16 | b4 | main.rs:412:15:412:16 | b4 | -| main.rs:391:9:391:11 | a10 | main.rs:380:13:380:15 | a10 | main.rs:393:9:393:11 | a10 | main.rs:397:15:397:17 | a10 | -| main.rs:391:9:391:11 | a10 | main.rs:380:13:380:15 | a10 | main.rs:397:15:397:17 | a10 | main.rs:411:15:411:17 | a10 | -| main.rs:434:9:434:9 | f | main.rs:434:9:434:9 | f | main.rs:437:15:437:15 | f | main.rs:444:15:444:15 | f | -| main.rs:475:5:475:5 | a | main.rs:474:13:474:13 | a | main.rs:476:15:476:15 | a | main.rs:477:11:477:11 | a | -| main.rs:489:17:489:17 | x | main.rs:489:17:489:17 | x | main.rs:490:6:490:6 | x | main.rs:491:10:491:10 | x | -| main.rs:489:17:489:17 | x | main.rs:489:17:489:17 | x | main.rs:491:10:491:10 | x | main.rs:492:10:492:10 | x | -| main.rs:489:17:489:17 | x | main.rs:489:17:489:17 | x | main.rs:492:10:492:10 | x | main.rs:493:12:493:12 | x | -| main.rs:496:22:496:22 | x | main.rs:496:22:496:22 | x | main.rs:497:6:497:6 | x | main.rs:498:10:498:10 | x | -| main.rs:496:22:496:22 | x | main.rs:496:22:496:22 | x | main.rs:498:10:498:10 | x | main.rs:499:10:499:10 | x | -| main.rs:496:22:496:22 | x | main.rs:496:22:496:22 | x | main.rs:499:10:499:10 | x | main.rs:501:9:501:9 | x | -| main.rs:507:22:507:27 | &mut x | main.rs:505:13:505:13 | x | main.rs:511:15:511:15 | x | main.rs:515:19:515:19 | x | -| main.rs:514:9:514:9 | w | main.rs:514:9:514:9 | w | main.rs:518:9:518:9 | w | main.rs:520:7:520:7 | w | -| main.rs:585:13:585:13 | x | main.rs:585:13:585:13 | x | main.rs:586:15:586:15 | x | main.rs:587:15:587:15 | x | -| main.rs:591:9:591:9 | x | main.rs:585:13:585:13 | x | main.rs:592:19:592:19 | x | main.rs:593:19:593:19 | x | -| main.rs:595:9:595:9 | x | main.rs:585:13:585:13 | x | main.rs:596:19:596:19 | x | main.rs:597:19:597:19 | x | -| main.rs:603:9:603:9 | x | main.rs:603:9:603:9 | x | main.rs:607:19:607:19 | x | main.rs:615:19:615:19 | x | -| main.rs:603:9:603:9 | x | main.rs:603:9:603:9 | x | main.rs:607:19:607:19 | x | main.rs:617:19:617:19 | x | -| main.rs:603:9:603:9 | x | main.rs:603:9:603:9 | x | main.rs:609:19:609:19 | x | main.rs:615:19:615:19 | x | -| main.rs:603:9:603:9 | x | main.rs:603:9:603:9 | x | main.rs:609:19:609:19 | x | main.rs:617:19:617:19 | x | -| main.rs:635:17:635:17 | f | main.rs:635:17:635:17 | f | main.rs:639:9:639:9 | f | main.rs:640:9:640:9 | f | -| main.rs:646:15:646:15 | a | main.rs:645:13:645:13 | a | main.rs:647:5:647:5 | a | main.rs:648:15:648:15 | a | -| main.rs:654:13:654:13 | a | main.rs:654:13:654:13 | a | main.rs:655:15:655:15 | a | main.rs:656:5:656:5 | a | -| main.rs:654:13:654:13 | a | main.rs:654:13:654:13 | a | main.rs:656:5:656:5 | a | main.rs:657:15:657:15 | a | -| main.rs:663:9:663:9 | x | main.rs:663:9:663:9 | x | main.rs:664:20:664:20 | x | main.rs:665:15:665:15 | x | +| main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | main.rs:28:15:28:16 | x2 | main.rs:29:10:29:11 | x2 | +| main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | main.rs:42:15:42:16 | x3 | main.rs:44:9:44:10 | x3 | +| main.rs:49:9:49:10 | x4 | main.rs:49:9:49:10 | x4 | main.rs:50:15:50:16 | x4 | main.rs:55:15:55:16 | x4 | +| main.rs:100:9:100:9 | x | main.rs:100:9:100:9 | x | main.rs:102:7:102:7 | x | main.rs:105:13:105:13 | x | +| main.rs:113:9:113:10 | s1 | main.rs:113:9:113:10 | s1 | main.rs:116:11:116:12 | s1 | main.rs:116:11:116:12 | s1 | +| main.rs:139:9:139:15 | numbers | main.rs:139:9:139:15 | numbers | main.rs:141:11:141:17 | numbers | main.rs:156:11:156:17 | numbers | +| main.rs:222:9:222:10 | tv | main.rs:222:9:222:10 | tv | main.rs:223:11:223:12 | tv | main.rs:227:11:227:12 | tv | +| main.rs:222:9:222:10 | tv | main.rs:222:9:222:10 | tv | main.rs:227:11:227:12 | tv | main.rs:231:11:231:12 | tv | +| main.rs:240:9:240:44 | [match(true)] SSA phi(a7) | main.rs:240:9:240:44 | a7 | main.rs:241:16:241:17 | a7 | main.rs:242:26:242:27 | a7 | +| main.rs:281:9:281:9 | x | main.rs:281:9:281:9 | x | main.rs:283:7:283:7 | x | main.rs:290:13:290:13 | x | +| main.rs:282:17:282:17 | x | main.rs:282:17:282:17 | x | main.rs:285:5:285:5 | x | main.rs:287:19:287:19 | x | +| main.rs:297:9:297:9 | x | main.rs:297:9:297:9 | x | main.rs:299:7:299:7 | x | main.rs:309:13:309:13 | x | +| main.rs:301:14:301:14 | x | main.rs:301:14:301:14 | x | main.rs:304:5:304:5 | x | main.rs:306:19:306:19 | x | +| main.rs:316:9:316:9 | x | main.rs:316:9:316:9 | x | main.rs:318:7:318:7 | x | main.rs:329:15:329:15 | x | +| main.rs:320:14:320:14 | x | main.rs:320:14:320:14 | x | main.rs:323:5:323:5 | x | main.rs:325:19:325:19 | x | +| main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | main.rs:335:11:335:11 | x | main.rs:343:15:343:15 | x | +| main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:350:7:350:7 | x | main.rs:355:7:355:7 | x | +| main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:355:7:355:7 | x | main.rs:359:19:359:19 | x | +| main.rs:382:13:382:15 | a10 | main.rs:382:13:382:15 | a10 | main.rs:386:15:386:17 | a10 | main.rs:395:9:395:11 | a10 | +| main.rs:383:13:383:14 | b4 | main.rs:383:13:383:14 | b4 | main.rs:387:15:387:16 | b4 | main.rs:396:9:396:10 | b4 | +| main.rs:384:13:384:14 | c2 | main.rs:384:13:384:14 | c2 | main.rs:388:15:388:16 | c2 | main.rs:397:9:397:10 | c2 | +| main.rs:392:9:392:10 | b4 | main.rs:383:13:383:14 | b4 | main.rs:400:15:400:16 | b4 | main.rs:414:15:414:16 | b4 | +| main.rs:393:9:393:11 | a10 | main.rs:382:13:382:15 | a10 | main.rs:399:15:399:17 | a10 | main.rs:413:15:413:17 | a10 | +| main.rs:436:9:436:9 | f | main.rs:436:9:436:9 | f | main.rs:439:15:439:15 | f | main.rs:446:15:446:15 | f | +| main.rs:477:5:477:5 | a | main.rs:476:13:476:13 | a | main.rs:478:15:478:15 | a | main.rs:479:11:479:11 | a | +| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:492:6:492:6 | x | main.rs:493:10:493:10 | x | +| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:493:10:493:10 | x | main.rs:494:10:494:10 | x | +| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:494:10:494:10 | x | main.rs:495:12:495:12 | x | +| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:499:6:499:6 | x | main.rs:500:10:500:10 | x | +| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:500:10:500:10 | x | main.rs:501:10:501:10 | x | +| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:501:10:501:10 | x | main.rs:503:9:503:9 | x | +| main.rs:509:22:509:27 | &mut x | main.rs:507:13:507:13 | x | main.rs:513:15:513:15 | x | main.rs:517:19:517:19 | x | +| main.rs:516:9:516:9 | w | main.rs:516:9:516:9 | w | main.rs:520:9:520:9 | w | main.rs:522:7:522:7 | w | +| main.rs:587:13:587:13 | x | main.rs:587:13:587:13 | x | main.rs:588:15:588:15 | x | main.rs:589:15:589:15 | x | +| main.rs:593:9:593:9 | x | main.rs:587:13:587:13 | x | main.rs:594:19:594:19 | x | main.rs:595:19:595:19 | x | +| main.rs:597:9:597:9 | x | main.rs:587:13:587:13 | x | main.rs:598:19:598:19 | x | main.rs:599:19:599:19 | x | +| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:609:19:609:19 | x | main.rs:617:19:617:19 | x | +| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:609:19:609:19 | x | main.rs:619:19:619:19 | x | +| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:611:19:611:19 | x | main.rs:617:19:617:19 | x | +| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:611:19:611:19 | x | main.rs:619:19:619:19 | x | +| main.rs:637:17:637:17 | f | main.rs:637:17:637:17 | f | main.rs:641:9:641:9 | f | main.rs:642:9:642:9 | f | +| main.rs:648:15:648:15 | a | main.rs:647:13:647:13 | a | main.rs:649:5:649:5 | a | main.rs:650:15:650:15 | a | +| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:657:15:657:15 | a | main.rs:658:5:658:5 | a | +| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | main.rs:659:15:659:15 | a | +| main.rs:665:9:665:9 | x | main.rs:665:9:665:9 | x | main.rs:666:20:666:20 | x | main.rs:667:15:667:15 | x | phi -| main.rs:208:9:208:44 | SSA phi(a3) | main.rs:208:9:208:44 | a3 | main.rs:208:22:208:23 | a3 | -| main.rs:208:9:208:44 | SSA phi(a3) | main.rs:208:9:208:44 | a3 | main.rs:208:42:208:43 | a3 | -| main.rs:222:9:222:81 | SSA phi(a4) | main.rs:222:9:222:81 | a4 | main.rs:222:28:222:29 | a4 | -| main.rs:222:9:222:81 | SSA phi(a4) | main.rs:222:9:222:81 | a4 | main.rs:222:54:222:55 | a4 | -| main.rs:222:9:222:81 | SSA phi(a4) | main.rs:222:9:222:81 | a4 | main.rs:222:79:222:80 | a4 | -| main.rs:226:9:226:83 | SSA phi(a5) | main.rs:226:9:226:83 | a5 | main.rs:226:10:226:57 | [match(true)] SSA phi(a5) | -| main.rs:226:9:226:83 | SSA phi(a5) | main.rs:226:9:226:83 | a5 | main.rs:226:81:226:82 | a5 | -| main.rs:226:10:226:57 | [match(true)] SSA phi(a5) | main.rs:226:9:226:83 | a5 | main.rs:226:29:226:30 | a5 | -| main.rs:226:10:226:57 | [match(true)] SSA phi(a5) | main.rs:226:9:226:83 | a5 | main.rs:226:55:226:56 | a5 | -| main.rs:230:9:230:83 | SSA phi(a6) | main.rs:230:9:230:83 | a6 | main.rs:230:28:230:29 | a6 | -| main.rs:230:9:230:83 | SSA phi(a6) | main.rs:230:9:230:83 | a6 | main.rs:230:35:230:82 | SSA phi(a6) | -| main.rs:230:35:230:82 | SSA phi(a6) | main.rs:230:9:230:83 | a6 | main.rs:230:55:230:56 | a6 | -| main.rs:230:35:230:82 | SSA phi(a6) | main.rs:230:9:230:83 | a6 | main.rs:230:80:230:81 | a6 | -| main.rs:238:9:238:44 | [match(true)] SSA phi(a7) | main.rs:238:9:238:44 | a7 | main.rs:238:22:238:23 | a7 | -| main.rs:238:9:238:44 | [match(true)] SSA phi(a7) | main.rs:238:9:238:44 | a7 | main.rs:238:42:238:43 | a7 | -| main.rs:250:14:250:51 | [match(true)] SSA phi(a11) | main.rs:250:14:250:51 | a11 | main.rs:250:27:250:29 | a11 | -| main.rs:250:14:250:51 | [match(true)] SSA phi(a11) | main.rs:250:14:250:51 | a11 | main.rs:250:48:250:50 | a11 | -| main.rs:272:9:272:109 | SSA phi(a13) | main.rs:272:9:272:109 | a13 | main.rs:272:27:272:29 | a13 | -| main.rs:272:9:272:109 | SSA phi(a13) | main.rs:272:9:272:109 | a13 | main.rs:272:35:272:82 | [match(true)] SSA phi(a13) | -| main.rs:272:9:272:109 | SSA phi(a13) | main.rs:272:9:272:109 | a13 | main.rs:272:106:272:108 | a13 | -| main.rs:272:35:272:82 | [match(true)] SSA phi(a13) | main.rs:272:9:272:109 | a13 | main.rs:272:54:272:56 | a13 | -| main.rs:272:35:272:82 | [match(true)] SSA phi(a13) | main.rs:272:9:272:109 | a13 | main.rs:272:79:272:81 | a13 | -| main.rs:373:20:373:55 | SSA phi(a9) | main.rs:373:20:373:55 | a9 | main.rs:373:33:373:34 | a9 | -| main.rs:373:20:373:55 | SSA phi(a9) | main.rs:373:20:373:55 | a9 | main.rs:373:53:373:54 | a9 | -| main.rs:589:13:598:5 | SSA phi(x) | main.rs:585:13:585:13 | x | main.rs:591:9:591:9 | x | -| main.rs:589:13:598:5 | SSA phi(x) | main.rs:585:13:585:13 | x | main.rs:595:9:595:9 | x | -| main.rs:726:17:728:9 | SSA phi(x) | main.rs:723:13:723:13 | x | main.rs:724:19:729:5 | x | -| main.rs:726:17:728:9 | SSA phi(x) | main.rs:723:13:723:13 | x | main.rs:727:13:727:13 | x | +| main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:210:22:210:23 | a3 | +| main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:210:42:210:43 | a3 | +| main.rs:224:9:224:81 | SSA phi(a4) | main.rs:224:9:224:81 | a4 | main.rs:224:28:224:29 | a4 | +| main.rs:224:9:224:81 | SSA phi(a4) | main.rs:224:9:224:81 | a4 | main.rs:224:54:224:55 | a4 | +| main.rs:224:9:224:81 | SSA phi(a4) | main.rs:224:9:224:81 | a4 | main.rs:224:79:224:80 | a4 | +| main.rs:228:9:228:83 | SSA phi(a5) | main.rs:228:9:228:83 | a5 | main.rs:228:10:228:57 | [match(true)] SSA phi(a5) | +| main.rs:228:9:228:83 | SSA phi(a5) | main.rs:228:9:228:83 | a5 | main.rs:228:81:228:82 | a5 | +| main.rs:228:10:228:57 | [match(true)] SSA phi(a5) | main.rs:228:9:228:83 | a5 | main.rs:228:29:228:30 | a5 | +| main.rs:228:10:228:57 | [match(true)] SSA phi(a5) | main.rs:228:9:228:83 | a5 | main.rs:228:55:228:56 | a5 | +| main.rs:232:9:232:83 | SSA phi(a6) | main.rs:232:9:232:83 | a6 | main.rs:232:28:232:29 | a6 | +| main.rs:232:9:232:83 | SSA phi(a6) | main.rs:232:9:232:83 | a6 | main.rs:232:35:232:82 | SSA phi(a6) | +| main.rs:232:35:232:82 | SSA phi(a6) | main.rs:232:9:232:83 | a6 | main.rs:232:55:232:56 | a6 | +| main.rs:232:35:232:82 | SSA phi(a6) | main.rs:232:9:232:83 | a6 | main.rs:232:80:232:81 | a6 | +| main.rs:240:9:240:44 | [match(true)] SSA phi(a7) | main.rs:240:9:240:44 | a7 | main.rs:240:22:240:23 | a7 | +| main.rs:240:9:240:44 | [match(true)] SSA phi(a7) | main.rs:240:9:240:44 | a7 | main.rs:240:42:240:43 | a7 | +| main.rs:252:14:252:51 | [match(true)] SSA phi(a11) | main.rs:252:14:252:51 | a11 | main.rs:252:27:252:29 | a11 | +| main.rs:252:14:252:51 | [match(true)] SSA phi(a11) | main.rs:252:14:252:51 | a11 | main.rs:252:48:252:50 | a11 | +| main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:27:274:29 | a13 | +| main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | +| main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:106:274:108 | a13 | +| main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:54:274:56 | a13 | +| main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:79:274:81 | a13 | +| main.rs:375:20:375:55 | SSA phi(a9) | main.rs:375:20:375:55 | a9 | main.rs:375:33:375:34 | a9 | +| main.rs:375:20:375:55 | SSA phi(a9) | main.rs:375:20:375:55 | a9 | main.rs:375:53:375:54 | a9 | +| main.rs:591:13:600:5 | SSA phi(x) | main.rs:587:13:587:13 | x | main.rs:593:9:593:9 | x | +| main.rs:591:13:600:5 | SSA phi(x) | main.rs:587:13:587:13 | x | main.rs:597:9:597:9 | x | +| main.rs:728:17:730:9 | SSA phi(x) | main.rs:725:13:725:13 | x | main.rs:726:19:731:5 | x | +| main.rs:728:17:730:9 | SSA phi(x) | main.rs:725:13:725:13 | x | main.rs:729:13:729:13 | x | phiReadNode -| main.rs:114:11:114:12 | SSA phi read(s1) | main.rs:111:9:111:10 | s1 | -| main.rs:605:13:610:5 | SSA phi read(x) | main.rs:603:9:603:9 | x | +| main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | +| main.rs:607:13:612:5 | SSA phi read(x) | main.rs:605:9:605:9 | x | phiReadNodeFirstRead -| main.rs:114:11:114:12 | SSA phi read(s1) | main.rs:111:9:111:10 | s1 | main.rs:114:11:114:12 | s1 | -| main.rs:605:13:610:5 | SSA phi read(x) | main.rs:603:9:603:9 | x | main.rs:615:19:615:19 | x | -| main.rs:605:13:610:5 | SSA phi read(x) | main.rs:603:9:603:9 | x | main.rs:617:19:617:19 | x | +| main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | main.rs:116:11:116:12 | s1 | +| main.rs:607:13:612:5 | SSA phi read(x) | main.rs:605:9:605:9 | x | main.rs:617:19:617:19 | x | +| main.rs:607:13:612:5 | SSA phi read(x) | main.rs:605:9:605:9 | x | main.rs:619:19:619:19 | x | phiReadInput -| main.rs:114:11:114:12 | SSA phi read(s1) | main.rs:111:9:111:10 | s1 | -| main.rs:114:11:114:12 | SSA phi read(s1) | main.rs:114:11:114:12 | SSA read(s1) | -| main.rs:605:13:610:5 | SSA phi read(x) | main.rs:607:19:607:19 | SSA read(x) | -| main.rs:605:13:610:5 | SSA phi read(x) | main.rs:609:19:609:19 | SSA read(x) | +| main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | +| main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:116:11:116:12 | SSA read(s1) | +| main.rs:607:13:612:5 | SSA phi read(x) | main.rs:609:19:609:19 | SSA read(x) | +| main.rs:607:13:612:5 | SSA phi read(x) | main.rs:611:19:611:19 | SSA read(x) | ultimateDef -| main.rs:208:9:208:44 | SSA phi(a3) | main.rs:208:22:208:23 | a3 | -| main.rs:208:9:208:44 | SSA phi(a3) | main.rs:208:42:208:43 | a3 | -| main.rs:222:9:222:81 | SSA phi(a4) | main.rs:222:28:222:29 | a4 | -| main.rs:222:9:222:81 | SSA phi(a4) | main.rs:222:54:222:55 | a4 | -| main.rs:222:9:222:81 | SSA phi(a4) | main.rs:222:79:222:80 | a4 | -| main.rs:226:9:226:83 | SSA phi(a5) | main.rs:226:29:226:30 | a5 | -| main.rs:226:9:226:83 | SSA phi(a5) | main.rs:226:55:226:56 | a5 | -| main.rs:226:9:226:83 | SSA phi(a5) | main.rs:226:81:226:82 | a5 | -| main.rs:226:10:226:57 | [match(true)] SSA phi(a5) | main.rs:226:29:226:30 | a5 | -| main.rs:226:10:226:57 | [match(true)] SSA phi(a5) | main.rs:226:55:226:56 | a5 | -| main.rs:230:9:230:83 | SSA phi(a6) | main.rs:230:28:230:29 | a6 | -| main.rs:230:9:230:83 | SSA phi(a6) | main.rs:230:55:230:56 | a6 | -| main.rs:230:9:230:83 | SSA phi(a6) | main.rs:230:80:230:81 | a6 | -| main.rs:230:35:230:82 | SSA phi(a6) | main.rs:230:55:230:56 | a6 | -| main.rs:230:35:230:82 | SSA phi(a6) | main.rs:230:80:230:81 | a6 | -| main.rs:238:9:238:44 | [match(true)] SSA phi(a7) | main.rs:238:22:238:23 | a7 | -| main.rs:238:9:238:44 | [match(true)] SSA phi(a7) | main.rs:238:42:238:43 | a7 | -| main.rs:250:14:250:51 | [match(true)] SSA phi(a11) | main.rs:250:27:250:29 | a11 | -| main.rs:250:14:250:51 | [match(true)] SSA phi(a11) | main.rs:250:48:250:50 | a11 | -| main.rs:272:9:272:109 | SSA phi(a13) | main.rs:272:27:272:29 | a13 | -| main.rs:272:9:272:109 | SSA phi(a13) | main.rs:272:54:272:56 | a13 | -| main.rs:272:9:272:109 | SSA phi(a13) | main.rs:272:79:272:81 | a13 | -| main.rs:272:9:272:109 | SSA phi(a13) | main.rs:272:106:272:108 | a13 | -| main.rs:272:35:272:82 | [match(true)] SSA phi(a13) | main.rs:272:54:272:56 | a13 | -| main.rs:272:35:272:82 | [match(true)] SSA phi(a13) | main.rs:272:79:272:81 | a13 | -| main.rs:373:20:373:55 | SSA phi(a9) | main.rs:373:33:373:34 | a9 | -| main.rs:373:20:373:55 | SSA phi(a9) | main.rs:373:53:373:54 | a9 | -| main.rs:589:13:598:5 | SSA phi(x) | main.rs:591:9:591:9 | x | -| main.rs:589:13:598:5 | SSA phi(x) | main.rs:595:9:595:9 | x | -| main.rs:726:17:728:9 | SSA phi(x) | main.rs:724:19:729:5 | x | -| main.rs:726:17:728:9 | SSA phi(x) | main.rs:727:13:727:13 | x | +| main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:22:210:23 | a3 | +| main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:42:210:43 | a3 | +| main.rs:224:9:224:81 | SSA phi(a4) | main.rs:224:28:224:29 | a4 | +| main.rs:224:9:224:81 | SSA phi(a4) | main.rs:224:54:224:55 | a4 | +| main.rs:224:9:224:81 | SSA phi(a4) | main.rs:224:79:224:80 | a4 | +| main.rs:228:9:228:83 | SSA phi(a5) | main.rs:228:29:228:30 | a5 | +| main.rs:228:9:228:83 | SSA phi(a5) | main.rs:228:55:228:56 | a5 | +| main.rs:228:9:228:83 | SSA phi(a5) | main.rs:228:81:228:82 | a5 | +| main.rs:228:10:228:57 | [match(true)] SSA phi(a5) | main.rs:228:29:228:30 | a5 | +| main.rs:228:10:228:57 | [match(true)] SSA phi(a5) | main.rs:228:55:228:56 | a5 | +| main.rs:232:9:232:83 | SSA phi(a6) | main.rs:232:28:232:29 | a6 | +| main.rs:232:9:232:83 | SSA phi(a6) | main.rs:232:55:232:56 | a6 | +| main.rs:232:9:232:83 | SSA phi(a6) | main.rs:232:80:232:81 | a6 | +| main.rs:232:35:232:82 | SSA phi(a6) | main.rs:232:55:232:56 | a6 | +| main.rs:232:35:232:82 | SSA phi(a6) | main.rs:232:80:232:81 | a6 | +| main.rs:240:9:240:44 | [match(true)] SSA phi(a7) | main.rs:240:22:240:23 | a7 | +| main.rs:240:9:240:44 | [match(true)] SSA phi(a7) | main.rs:240:42:240:43 | a7 | +| main.rs:252:14:252:51 | [match(true)] SSA phi(a11) | main.rs:252:27:252:29 | a11 | +| main.rs:252:14:252:51 | [match(true)] SSA phi(a11) | main.rs:252:48:252:50 | a11 | +| main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:27:274:29 | a13 | +| main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:54:274:56 | a13 | +| main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:79:274:81 | a13 | +| main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:106:274:108 | a13 | +| main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:54:274:56 | a13 | +| main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:79:274:81 | a13 | +| main.rs:375:20:375:55 | SSA phi(a9) | main.rs:375:33:375:34 | a9 | +| main.rs:375:20:375:55 | SSA phi(a9) | main.rs:375:53:375:54 | a9 | +| main.rs:591:13:600:5 | SSA phi(x) | main.rs:593:9:593:9 | x | +| main.rs:591:13:600:5 | SSA phi(x) | main.rs:597:9:597:9 | x | +| main.rs:728:17:730:9 | SSA phi(x) | main.rs:726:19:731:5 | x | +| main.rs:728:17:730:9 | SSA phi(x) | main.rs:729:13:729:13 | x | assigns | main.rs:20:9:20:10 | x1 | main.rs:20:14:20:16 | "a" | | main.rs:25:13:25:14 | x2 | main.rs:25:18:25:18 | 4 | | main.rs:27:5:27:6 | x2 | main.rs:27:10:27:10 | 5 | -| main.rs:32:13:32:13 | x | main.rs:32:17:32:17 | 1 | -| main.rs:34:5:34:5 | x | main.rs:34:9:34:9 | 2 | -| main.rs:39:9:39:10 | x3 | main.rs:39:14:39:14 | 1 | -| main.rs:41:9:41:10 | x3 | main.rs:42:9:42:14 | ... + ... | -| main.rs:47:9:47:10 | x4 | main.rs:47:14:47:16 | "a" | -| main.rs:50:13:50:14 | x4 | main.rs:50:18:50:20 | "b" | -| main.rs:79:9:79:10 | p1 | main.rs:79:14:79:37 | Point {...} | -| main.rs:89:9:89:10 | s1 | main.rs:89:14:89:41 | Some(...) | -| main.rs:98:9:98:9 | x | main.rs:98:13:98:22 | Some(...) | -| main.rs:102:13:102:13 | x | main.rs:103:13:103:13 | x | -| main.rs:111:9:111:10 | s1 | main.rs:111:14:111:41 | Some(...) | -| main.rs:120:9:120:10 | x6 | main.rs:120:14:120:20 | Some(...) | -| main.rs:121:9:121:10 | y1 | main.rs:121:14:121:15 | 10 | -| main.rs:137:9:137:15 | numbers | main.rs:137:19:137:35 | TupleExpr | -| main.rs:168:9:168:10 | p2 | main.rs:168:14:168:37 | Point {...} | -| main.rs:182:9:182:11 | msg | main.rs:182:15:182:38 | ...::Hello {...} | -| main.rs:206:9:206:14 | either | main.rs:206:18:206:33 | ...::Left(...) | -| main.rs:220:9:220:10 | tv | main.rs:220:14:220:36 | ...::Second(...) | -| main.rs:236:9:236:14 | either | main.rs:236:18:236:33 | ...::Left(...) | -| main.rs:246:9:246:14 | either | main.rs:246:18:246:33 | ...::Left(...) | -| main.rs:270:9:270:10 | fv | main.rs:270:14:270:35 | ...::Second(...) | -| main.rs:279:9:279:9 | x | main.rs:279:12:279:19 | Some(...) | -| main.rs:287:13:287:13 | x | main.rs:288:13:288:13 | x | -| main.rs:295:9:295:9 | x | main.rs:295:13:295:20 | Some(...) | -| main.rs:306:13:306:13 | x | main.rs:307:13:307:13 | x | -| main.rs:314:9:314:9 | x | main.rs:314:13:314:20 | Some(...) | -| main.rs:332:9:332:9 | x | main.rs:332:13:332:20 | Some(...) | -| main.rs:335:20:335:20 | x | main.rs:336:18:336:18 | x | -| main.rs:346:9:346:9 | x | main.rs:346:13:346:18 | Ok(...) | -| main.rs:416:9:416:23 | example_closure | main.rs:417:9:418:9 | \|...\| x | -| main.rs:419:9:419:10 | n1 | main.rs:420:9:420:26 | example_closure(...) | -| main.rs:424:9:424:26 | immutable_variable | main.rs:425:5:426:9 | \|...\| x | -| main.rs:427:9:427:10 | n2 | main.rs:428:9:428:29 | immutable_variable(...) | -| main.rs:434:9:434:9 | f | main.rs:435:9:436:9 | \|...\| x | -| main.rs:457:13:457:13 | f | main.rs:458:13:459:13 | \|...\| x | -| main.rs:465:9:465:9 | v | main.rs:465:13:465:41 | &... | -| main.rs:474:13:474:13 | a | main.rs:474:17:474:17 | 0 | -| main.rs:482:13:482:13 | i | main.rs:482:17:482:17 | 1 | -| main.rs:483:9:483:13 | ref_i | main.rs:484:9:484:14 | &mut i | -| main.rs:505:13:505:13 | x | main.rs:505:17:505:17 | 2 | -| main.rs:506:9:506:9 | y | main.rs:507:9:507:28 | mutate_param(...) | -| main.rs:513:13:513:13 | z | main.rs:513:17:513:17 | 4 | -| main.rs:514:9:514:9 | w | main.rs:515:9:515:19 | &mut ... | -| main.rs:527:13:527:13 | x | main.rs:527:17:527:17 | 1 | -| main.rs:528:9:528:9 | y | main.rs:529:9:529:14 | &mut x | -| main.rs:535:9:535:9 | x | main.rs:535:13:535:15 | 100 | -| main.rs:538:9:538:11 | cap | main.rs:538:15:540:5 | \|...\| ... | -| main.rs:546:13:546:13 | x | main.rs:546:17:546:17 | 1 | -| main.rs:549:9:549:16 | closure1 | main.rs:549:20:551:5 | \|...\| ... | -| main.rs:555:13:555:13 | y | main.rs:555:17:555:17 | 2 | -| main.rs:558:13:558:20 | closure2 | main.rs:558:24:560:5 | \|...\| ... | -| main.rs:559:9:559:9 | y | main.rs:559:13:559:13 | 3 | -| main.rs:564:13:564:13 | z | main.rs:564:17:564:17 | 2 | -| main.rs:567:13:567:20 | closure3 | main.rs:567:24:569:5 | \|...\| ... | -| main.rs:575:13:575:13 | i | main.rs:575:22:575:22 | 0 | -| main.rs:576:9:576:13 | block | main.rs:576:17:578:5 | { ... } | -| main.rs:577:9:577:9 | i | main.rs:577:13:577:13 | 1 | -| main.rs:585:13:585:13 | x | main.rs:585:17:585:17 | 1 | -| main.rs:591:9:591:9 | x | main.rs:591:13:591:13 | 2 | -| main.rs:595:9:595:9 | x | main.rs:595:13:595:13 | 3 | -| main.rs:603:9:603:9 | x | main.rs:603:13:603:13 | 1 | -| main.rs:635:17:635:17 | f | main.rs:635:21:638:9 | \|...\| ... | -| main.rs:645:13:645:13 | a | main.rs:645:17:645:35 | MyStruct {...} | -| main.rs:649:5:649:5 | a | main.rs:649:9:649:27 | MyStruct {...} | -| main.rs:654:13:654:13 | a | main.rs:654:17:654:25 | [...] | -| main.rs:658:5:658:5 | a | main.rs:658:9:658:17 | [...] | -| main.rs:663:9:663:9 | x | main.rs:663:13:663:14 | 16 | -| main.rs:667:9:667:9 | z | main.rs:667:13:667:14 | 17 | -| main.rs:682:13:682:13 | a | main.rs:682:17:682:35 | MyStruct {...} | -| main.rs:704:9:704:22 | var_from_macro | main.rs:705:9:705:25 | MacroExpr | -| main.rs:705:9:705:21 | var_in_macro | main.rs:705:23:705:24 | 37 | -| main.rs:707:9:707:20 | var_in_macro | main.rs:707:24:707:25 | 33 | -| main.rs:712:15:712:28 | var_in_macro | main.rs:712:15:712:28 | 0 | -| main.rs:718:5:718:5 | x | main.rs:718:9:718:9 | 1 | -| main.rs:723:13:723:13 | x | main.rs:723:17:723:19 | 100 | -| main.rs:724:13:724:15 | cap | main.rs:724:19:729:5 | \|...\| ... | -| main.rs:727:13:727:13 | x | main.rs:727:17:727:19 | 200 | +| main.rs:29:5:29:6 | x2 | main.rs:29:10:29:11 | x2 | +| main.rs:34:13:34:13 | x | main.rs:34:17:34:17 | 1 | +| main.rs:36:5:36:5 | x | main.rs:36:9:36:9 | 2 | +| main.rs:41:9:41:10 | x3 | main.rs:41:14:41:14 | 1 | +| main.rs:43:9:43:10 | x3 | main.rs:44:9:44:14 | ... + ... | +| main.rs:49:9:49:10 | x4 | main.rs:49:14:49:16 | "a" | +| main.rs:52:13:52:14 | x4 | main.rs:52:18:52:20 | "b" | +| main.rs:81:9:81:10 | p1 | main.rs:81:14:81:37 | Point {...} | +| main.rs:91:9:91:10 | s1 | main.rs:91:14:91:41 | Some(...) | +| main.rs:100:9:100:9 | x | main.rs:100:13:100:22 | Some(...) | +| main.rs:104:13:104:13 | x | main.rs:105:13:105:13 | x | +| main.rs:113:9:113:10 | s1 | main.rs:113:14:113:41 | Some(...) | +| main.rs:122:9:122:10 | x6 | main.rs:122:14:122:20 | Some(...) | +| main.rs:123:9:123:10 | y1 | main.rs:123:14:123:15 | 10 | +| main.rs:139:9:139:15 | numbers | main.rs:139:19:139:35 | TupleExpr | +| main.rs:170:9:170:10 | p2 | main.rs:170:14:170:37 | Point {...} | +| main.rs:184:9:184:11 | msg | main.rs:184:15:184:38 | ...::Hello {...} | +| main.rs:208:9:208:14 | either | main.rs:208:18:208:33 | ...::Left(...) | +| main.rs:222:9:222:10 | tv | main.rs:222:14:222:36 | ...::Second(...) | +| main.rs:238:9:238:14 | either | main.rs:238:18:238:33 | ...::Left(...) | +| main.rs:248:9:248:14 | either | main.rs:248:18:248:33 | ...::Left(...) | +| main.rs:272:9:272:10 | fv | main.rs:272:14:272:35 | ...::Second(...) | +| main.rs:281:9:281:9 | x | main.rs:281:12:281:19 | Some(...) | +| main.rs:289:13:289:13 | x | main.rs:290:13:290:13 | x | +| main.rs:297:9:297:9 | x | main.rs:297:13:297:20 | Some(...) | +| main.rs:308:13:308:13 | x | main.rs:309:13:309:13 | x | +| main.rs:316:9:316:9 | x | main.rs:316:13:316:20 | Some(...) | +| main.rs:334:9:334:9 | x | main.rs:334:13:334:20 | Some(...) | +| main.rs:337:20:337:20 | x | main.rs:338:18:338:18 | x | +| main.rs:348:9:348:9 | x | main.rs:348:13:348:18 | Ok(...) | +| main.rs:418:9:418:23 | example_closure | main.rs:419:9:420:9 | \|...\| x | +| main.rs:421:9:421:10 | n1 | main.rs:422:9:422:26 | example_closure(...) | +| main.rs:426:9:426:26 | immutable_variable | main.rs:427:5:428:9 | \|...\| x | +| main.rs:429:9:429:10 | n2 | main.rs:430:9:430:29 | immutable_variable(...) | +| main.rs:436:9:436:9 | f | main.rs:437:9:438:9 | \|...\| x | +| main.rs:459:13:459:13 | f | main.rs:460:13:461:13 | \|...\| x | +| main.rs:467:9:467:9 | v | main.rs:467:13:467:41 | &... | +| main.rs:476:13:476:13 | a | main.rs:476:17:476:17 | 0 | +| main.rs:484:13:484:13 | i | main.rs:484:17:484:17 | 1 | +| main.rs:485:9:485:13 | ref_i | main.rs:486:9:486:14 | &mut i | +| main.rs:507:13:507:13 | x | main.rs:507:17:507:17 | 2 | +| main.rs:508:9:508:9 | y | main.rs:509:9:509:28 | mutate_param(...) | +| main.rs:515:13:515:13 | z | main.rs:515:17:515:17 | 4 | +| main.rs:516:9:516:9 | w | main.rs:517:9:517:19 | &mut ... | +| main.rs:529:13:529:13 | x | main.rs:529:17:529:17 | 1 | +| main.rs:530:9:530:9 | y | main.rs:531:9:531:14 | &mut x | +| main.rs:537:9:537:9 | x | main.rs:537:13:537:15 | 100 | +| main.rs:540:9:540:11 | cap | main.rs:540:15:542:5 | \|...\| ... | +| main.rs:548:13:548:13 | x | main.rs:548:17:548:17 | 1 | +| main.rs:551:9:551:16 | closure1 | main.rs:551:20:553:5 | \|...\| ... | +| main.rs:557:13:557:13 | y | main.rs:557:17:557:17 | 2 | +| main.rs:560:13:560:20 | closure2 | main.rs:560:24:562:5 | \|...\| ... | +| main.rs:561:9:561:9 | y | main.rs:561:13:561:13 | 3 | +| main.rs:566:13:566:13 | z | main.rs:566:17:566:17 | 2 | +| main.rs:569:13:569:20 | closure3 | main.rs:569:24:571:5 | \|...\| ... | +| main.rs:577:13:577:13 | i | main.rs:577:22:577:22 | 0 | +| main.rs:578:9:578:13 | block | main.rs:578:17:580:5 | { ... } | +| main.rs:579:9:579:9 | i | main.rs:579:13:579:13 | 1 | +| main.rs:587:13:587:13 | x | main.rs:587:17:587:17 | 1 | +| main.rs:593:9:593:9 | x | main.rs:593:13:593:13 | 2 | +| main.rs:597:9:597:9 | x | main.rs:597:13:597:13 | 3 | +| main.rs:605:9:605:9 | x | main.rs:605:13:605:13 | 1 | +| main.rs:637:17:637:17 | f | main.rs:637:21:640:9 | \|...\| ... | +| main.rs:647:13:647:13 | a | main.rs:647:17:647:35 | MyStruct {...} | +| main.rs:651:5:651:5 | a | main.rs:651:9:651:27 | MyStruct {...} | +| main.rs:656:13:656:13 | a | main.rs:656:17:656:25 | [...] | +| main.rs:660:5:660:5 | a | main.rs:660:9:660:17 | [...] | +| main.rs:665:9:665:9 | x | main.rs:665:13:665:14 | 16 | +| main.rs:669:9:669:9 | z | main.rs:669:13:669:14 | 17 | +| main.rs:684:13:684:13 | a | main.rs:684:17:684:35 | MyStruct {...} | +| main.rs:706:9:706:22 | var_from_macro | main.rs:707:9:707:25 | MacroExpr | +| main.rs:707:9:707:21 | var_in_macro | main.rs:707:23:707:24 | 37 | +| main.rs:709:9:709:20 | var_in_macro | main.rs:709:24:709:25 | 33 | +| main.rs:714:15:714:28 | var_in_macro | main.rs:714:15:714:28 | 0 | +| main.rs:720:5:720:5 | x | main.rs:720:9:720:9 | 1 | +| main.rs:725:13:725:13 | x | main.rs:725:17:725:19 | 100 | +| main.rs:726:13:726:15 | cap | main.rs:726:19:731:5 | \|...\| ... | +| main.rs:729:13:729:13 | x | main.rs:729:17:729:19 | 200 | diff --git a/rust/ql/test/library-tests/variables/main.rs b/rust/ql/test/library-tests/variables/main.rs index 97ab183099e7..948d9134be3e 100644 --- a/rust/ql/test/library-tests/variables/main.rs +++ b/rust/ql/test/library-tests/variables/main.rs @@ -26,6 +26,8 @@ fn mutable_variable() { print_i64(x2); // $ read_access=x2 x2 = 5; // $ write_access=x2 print_i64(x2); // $ read_access=x2 + x2 = x2; // $ read_access=x2 $ write_access=x2 + print_i64(x2); // $ read_access=x2 } fn mutable_variable_immutable_borrow() { diff --git a/rust/ql/test/library-tests/variables/variables.expected b/rust/ql/test/library-tests/variables/variables.expected index 2a8673172d21..d2194a59cadd 100644 --- a/rust/ql/test/library-tests/variables/variables.expected +++ b/rust/ql/test/library-tests/variables/variables.expected @@ -5,138 +5,138 @@ variable | main.rs:15:18:15:18 | i | | main.rs:20:9:20:10 | x1 | | main.rs:25:13:25:14 | x2 | -| main.rs:32:13:32:13 | x | -| main.rs:39:9:39:10 | x3 | +| main.rs:34:13:34:13 | x | | main.rs:41:9:41:10 | x3 | -| main.rs:47:9:47:10 | x4 | -| main.rs:50:13:50:14 | x4 | -| main.rs:64:13:64:14 | a1 | -| main.rs:65:13:65:14 | b1 | -| main.rs:68:13:68:13 | x | -| main.rs:69:13:69:13 | y | -| main.rs:79:9:79:10 | p1 | -| main.rs:81:12:81:13 | a2 | -| main.rs:82:12:82:13 | b2 | -| main.rs:89:9:89:10 | s1 | -| main.rs:91:21:91:22 | s2 | -| main.rs:98:9:98:9 | x | -| main.rs:99:14:99:14 | x | -| main.rs:102:13:102:13 | x | -| main.rs:111:9:111:10 | s1 | -| main.rs:113:24:113:25 | s2 | -| main.rs:120:9:120:10 | x6 | -| main.rs:121:9:121:10 | y1 | -| main.rs:125:14:125:15 | y1 | -| main.rs:137:9:137:15 | numbers | -| main.rs:142:13:142:17 | first | -| main.rs:144:13:144:17 | third | -| main.rs:146:13:146:17 | fifth | -| main.rs:157:13:157:17 | first | -| main.rs:159:13:159:16 | last | -| main.rs:168:9:168:10 | p2 | -| main.rs:172:16:172:17 | x7 | -| main.rs:182:9:182:11 | msg | -| main.rs:187:17:187:27 | id_variable | -| main.rs:192:26:192:27 | id | -| main.rs:206:9:206:14 | either | -| main.rs:208:9:208:44 | a3 | -| main.rs:220:9:220:10 | tv | -| main.rs:222:9:222:81 | a4 | -| main.rs:226:9:226:83 | a5 | -| main.rs:230:9:230:83 | a6 | -| main.rs:236:9:236:14 | either | -| main.rs:238:9:238:44 | a7 | -| main.rs:246:9:246:14 | either | -| main.rs:249:13:249:13 | e | -| main.rs:250:14:250:51 | a11 | -| main.rs:253:33:253:35 | a12 | -| main.rs:270:9:270:10 | fv | -| main.rs:272:9:272:109 | a13 | -| main.rs:279:9:279:9 | x | -| main.rs:280:17:280:17 | x | -| main.rs:287:13:287:13 | x | -| main.rs:295:9:295:9 | x | -| main.rs:296:17:296:17 | x | -| main.rs:299:14:299:14 | x | -| main.rs:306:13:306:13 | x | -| main.rs:314:9:314:9 | x | -| main.rs:315:20:315:20 | x | -| main.rs:318:14:318:14 | x | -| main.rs:332:9:332:9 | x | -| main.rs:334:14:334:14 | x | -| main.rs:335:20:335:20 | x | -| main.rs:346:9:346:9 | x | -| main.rs:347:16:347:16 | x | -| main.rs:352:20:352:20 | x | -| main.rs:362:5:362:6 | a8 | -| main.rs:364:9:364:10 | b3 | -| main.rs:365:9:365:10 | c1 | -| main.rs:373:20:373:55 | a9 | -| main.rs:380:13:380:15 | a10 | -| main.rs:381:13:381:14 | b4 | -| main.rs:382:13:382:14 | c2 | -| main.rs:403:13:403:15 | a10 | -| main.rs:404:13:404:14 | b4 | -| main.rs:416:9:416:23 | example_closure | -| main.rs:417:10:417:10 | x | -| main.rs:419:9:419:10 | n1 | -| main.rs:424:9:424:26 | immutable_variable | -| main.rs:425:6:425:6 | x | -| main.rs:427:9:427:10 | n2 | -| main.rs:434:9:434:9 | f | -| main.rs:435:10:435:10 | x | -| main.rs:439:10:439:10 | x | -| main.rs:448:14:448:14 | x | -| main.rs:457:13:457:13 | f | -| main.rs:458:14:458:14 | x | -| main.rs:465:9:465:9 | v | -| main.rs:467:9:467:12 | text | -| main.rs:474:13:474:13 | a | -| main.rs:482:13:482:13 | i | -| main.rs:483:9:483:13 | ref_i | -| main.rs:489:17:489:17 | x | -| main.rs:496:22:496:22 | x | -| main.rs:496:38:496:38 | y | -| main.rs:505:13:505:13 | x | -| main.rs:506:9:506:9 | y | -| main.rs:513:13:513:13 | z | -| main.rs:514:9:514:9 | w | -| main.rs:527:13:527:13 | x | -| main.rs:528:9:528:9 | y | -| main.rs:535:9:535:9 | x | -| main.rs:538:9:538:11 | cap | -| main.rs:546:13:546:13 | x | -| main.rs:549:9:549:16 | closure1 | -| main.rs:555:13:555:13 | y | -| main.rs:558:13:558:20 | closure2 | -| main.rs:564:13:564:13 | z | -| main.rs:567:13:567:20 | closure3 | -| main.rs:575:13:575:13 | i | -| main.rs:576:9:576:13 | block | -| main.rs:584:8:584:8 | b | -| main.rs:585:13:585:13 | x | -| main.rs:602:13:602:14 | b1 | -| main.rs:602:23:602:24 | b2 | -| main.rs:603:9:603:9 | x | -| main.rs:626:20:626:23 | self | -| main.rs:630:11:630:14 | self | -| main.rs:634:23:634:26 | self | -| main.rs:635:17:635:17 | f | -| main.rs:635:22:635:22 | n | -| main.rs:645:13:645:13 | a | -| main.rs:654:13:654:13 | a | -| main.rs:663:9:663:9 | x | -| main.rs:667:9:667:9 | z | -| main.rs:676:17:676:20 | self | -| main.rs:682:13:682:13 | a | -| main.rs:704:9:704:22 | var_from_macro | -| main.rs:705:9:705:21 | var_in_macro | -| main.rs:707:9:707:20 | var_in_macro | -| main.rs:712:15:712:28 | var_in_macro | -| main.rs:717:9:717:9 | x | -| main.rs:723:13:723:13 | x | -| main.rs:724:13:724:15 | cap | -| main.rs:724:20:724:20 | b | +| main.rs:43:9:43:10 | x3 | +| main.rs:49:9:49:10 | x4 | +| main.rs:52:13:52:14 | x4 | +| main.rs:66:13:66:14 | a1 | +| main.rs:67:13:67:14 | b1 | +| main.rs:70:13:70:13 | x | +| main.rs:71:13:71:13 | y | +| main.rs:81:9:81:10 | p1 | +| main.rs:83:12:83:13 | a2 | +| main.rs:84:12:84:13 | b2 | +| main.rs:91:9:91:10 | s1 | +| main.rs:93:21:93:22 | s2 | +| main.rs:100:9:100:9 | x | +| main.rs:101:14:101:14 | x | +| main.rs:104:13:104:13 | x | +| main.rs:113:9:113:10 | s1 | +| main.rs:115:24:115:25 | s2 | +| main.rs:122:9:122:10 | x6 | +| main.rs:123:9:123:10 | y1 | +| main.rs:127:14:127:15 | y1 | +| main.rs:139:9:139:15 | numbers | +| main.rs:144:13:144:17 | first | +| main.rs:146:13:146:17 | third | +| main.rs:148:13:148:17 | fifth | +| main.rs:159:13:159:17 | first | +| main.rs:161:13:161:16 | last | +| main.rs:170:9:170:10 | p2 | +| main.rs:174:16:174:17 | x7 | +| main.rs:184:9:184:11 | msg | +| main.rs:189:17:189:27 | id_variable | +| main.rs:194:26:194:27 | id | +| main.rs:208:9:208:14 | either | +| main.rs:210:9:210:44 | a3 | +| main.rs:222:9:222:10 | tv | +| main.rs:224:9:224:81 | a4 | +| main.rs:228:9:228:83 | a5 | +| main.rs:232:9:232:83 | a6 | +| main.rs:238:9:238:14 | either | +| main.rs:240:9:240:44 | a7 | +| main.rs:248:9:248:14 | either | +| main.rs:251:13:251:13 | e | +| main.rs:252:14:252:51 | a11 | +| main.rs:255:33:255:35 | a12 | +| main.rs:272:9:272:10 | fv | +| main.rs:274:9:274:109 | a13 | +| main.rs:281:9:281:9 | x | +| main.rs:282:17:282:17 | x | +| main.rs:289:13:289:13 | x | +| main.rs:297:9:297:9 | x | +| main.rs:298:17:298:17 | x | +| main.rs:301:14:301:14 | x | +| main.rs:308:13:308:13 | x | +| main.rs:316:9:316:9 | x | +| main.rs:317:20:317:20 | x | +| main.rs:320:14:320:14 | x | +| main.rs:334:9:334:9 | x | +| main.rs:336:14:336:14 | x | +| main.rs:337:20:337:20 | x | +| main.rs:348:9:348:9 | x | +| main.rs:349:16:349:16 | x | +| main.rs:354:20:354:20 | x | +| main.rs:364:5:364:6 | a8 | +| main.rs:366:9:366:10 | b3 | +| main.rs:367:9:367:10 | c1 | +| main.rs:375:20:375:55 | a9 | +| main.rs:382:13:382:15 | a10 | +| main.rs:383:13:383:14 | b4 | +| main.rs:384:13:384:14 | c2 | +| main.rs:405:13:405:15 | a10 | +| main.rs:406:13:406:14 | b4 | +| main.rs:418:9:418:23 | example_closure | +| main.rs:419:10:419:10 | x | +| main.rs:421:9:421:10 | n1 | +| main.rs:426:9:426:26 | immutable_variable | +| main.rs:427:6:427:6 | x | +| main.rs:429:9:429:10 | n2 | +| main.rs:436:9:436:9 | f | +| main.rs:437:10:437:10 | x | +| main.rs:441:10:441:10 | x | +| main.rs:450:14:450:14 | x | +| main.rs:459:13:459:13 | f | +| main.rs:460:14:460:14 | x | +| main.rs:467:9:467:9 | v | +| main.rs:469:9:469:12 | text | +| main.rs:476:13:476:13 | a | +| main.rs:484:13:484:13 | i | +| main.rs:485:9:485:13 | ref_i | +| main.rs:491:17:491:17 | x | +| main.rs:498:22:498:22 | x | +| main.rs:498:38:498:38 | y | +| main.rs:507:13:507:13 | x | +| main.rs:508:9:508:9 | y | +| main.rs:515:13:515:13 | z | +| main.rs:516:9:516:9 | w | +| main.rs:529:13:529:13 | x | +| main.rs:530:9:530:9 | y | +| main.rs:537:9:537:9 | x | +| main.rs:540:9:540:11 | cap | +| main.rs:548:13:548:13 | x | +| main.rs:551:9:551:16 | closure1 | +| main.rs:557:13:557:13 | y | +| main.rs:560:13:560:20 | closure2 | +| main.rs:566:13:566:13 | z | +| main.rs:569:13:569:20 | closure3 | +| main.rs:577:13:577:13 | i | +| main.rs:578:9:578:13 | block | +| main.rs:586:8:586:8 | b | +| main.rs:587:13:587:13 | x | +| main.rs:604:13:604:14 | b1 | +| main.rs:604:23:604:24 | b2 | +| main.rs:605:9:605:9 | x | +| main.rs:628:20:628:23 | self | +| main.rs:632:11:632:14 | self | +| main.rs:636:23:636:26 | self | +| main.rs:637:17:637:17 | f | +| main.rs:637:22:637:22 | n | +| main.rs:647:13:647:13 | a | +| main.rs:656:13:656:13 | a | +| main.rs:665:9:665:9 | x | +| main.rs:669:9:669:9 | z | +| main.rs:678:17:678:20 | self | +| main.rs:684:13:684:13 | a | +| main.rs:706:9:706:22 | var_from_macro | +| main.rs:707:9:707:21 | var_in_macro | +| main.rs:709:9:709:20 | var_in_macro | +| main.rs:714:15:714:28 | var_in_macro | +| main.rs:719:9:719:9 | x | +| main.rs:725:13:725:13 | x | +| main.rs:726:13:726:15 | cap | +| main.rs:726:20:726:20 | b | variableAccess | main.rs:7:20:7:20 | s | main.rs:5:14:5:14 | s | | main.rs:12:20:12:20 | i | main.rs:10:14:10:14 | i | @@ -145,226 +145,230 @@ variableAccess | main.rs:26:15:26:16 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:28:15:28:16 | x2 | main.rs:25:13:25:14 | x2 | -| main.rs:33:20:33:20 | x | main.rs:32:13:32:13 | x | -| main.rs:34:5:34:5 | x | main.rs:32:13:32:13 | x | -| main.rs:35:20:35:20 | x | main.rs:32:13:32:13 | x | -| main.rs:40:15:40:16 | x3 | main.rs:39:9:39:10 | x3 | -| main.rs:42:9:42:10 | x3 | main.rs:39:9:39:10 | x3 | -| main.rs:43:15:43:16 | x3 | main.rs:41:9:41:10 | x3 | -| main.rs:48:15:48:16 | x4 | main.rs:47:9:47:10 | x4 | -| main.rs:51:19:51:20 | x4 | main.rs:50:13:50:14 | x4 | -| main.rs:53:15:53:16 | x4 | main.rs:47:9:47:10 | x4 | -| main.rs:72:15:72:16 | a1 | main.rs:64:13:64:14 | a1 | -| main.rs:73:15:73:16 | b1 | main.rs:65:13:65:14 | b1 | -| main.rs:74:15:74:15 | x | main.rs:68:13:68:13 | x | -| main.rs:75:15:75:15 | y | main.rs:69:13:69:13 | y | -| main.rs:83:9:83:10 | p1 | main.rs:79:9:79:10 | p1 | -| main.rs:84:15:84:16 | a2 | main.rs:81:12:81:13 | a2 | -| main.rs:85:15:85:16 | b2 | main.rs:82:12:82:13 | b2 | -| main.rs:92:11:92:12 | s1 | main.rs:89:9:89:10 | s1 | -| main.rs:93:19:93:20 | s2 | main.rs:91:21:91:22 | s2 | -| main.rs:100:7:100:7 | x | main.rs:98:9:98:9 | x | -| main.rs:103:13:103:13 | x | main.rs:98:9:98:9 | x | -| main.rs:104:19:104:19 | x | main.rs:102:13:102:13 | x | -| main.rs:107:15:107:15 | x | main.rs:99:14:99:14 | x | -| main.rs:114:11:114:12 | s1 | main.rs:111:9:111:10 | s1 | -| main.rs:115:19:115:20 | s2 | main.rs:113:24:113:25 | s2 | -| main.rs:123:11:123:12 | x6 | main.rs:120:9:120:10 | x6 | -| main.rs:128:23:128:24 | y1 | main.rs:125:14:125:15 | y1 | -| main.rs:133:15:133:16 | y1 | main.rs:121:9:121:10 | y1 | -| main.rs:139:11:139:17 | numbers | main.rs:137:9:137:15 | numbers | -| main.rs:148:23:148:27 | first | main.rs:142:13:142:17 | first | -| main.rs:149:23:149:27 | third | main.rs:144:13:144:17 | third | -| main.rs:150:23:150:27 | fifth | main.rs:146:13:146:17 | fifth | -| main.rs:154:11:154:17 | numbers | main.rs:137:9:137:15 | numbers | -| main.rs:161:23:161:27 | first | main.rs:157:13:157:17 | first | -| main.rs:162:23:162:26 | last | main.rs:159:13:159:16 | last | -| main.rs:170:11:170:12 | p2 | main.rs:168:9:168:10 | p2 | -| main.rs:173:24:173:25 | x7 | main.rs:172:16:172:17 | x7 | -| main.rs:184:11:184:13 | msg | main.rs:182:9:182:11 | msg | -| main.rs:188:24:188:34 | id_variable | main.rs:187:17:187:27 | id_variable | -| main.rs:195:23:195:24 | id | main.rs:192:26:192:27 | id | -| main.rs:207:11:207:16 | either | main.rs:206:9:206:14 | either | -| main.rs:209:26:209:27 | a3 | main.rs:208:9:208:44 | a3 | -| main.rs:221:11:221:12 | tv | main.rs:220:9:220:10 | tv | -| main.rs:223:26:223:27 | a4 | main.rs:222:9:222:81 | a4 | -| main.rs:225:11:225:12 | tv | main.rs:220:9:220:10 | tv | -| main.rs:227:26:227:27 | a5 | main.rs:226:9:226:83 | a5 | -| main.rs:229:11:229:12 | tv | main.rs:220:9:220:10 | tv | -| main.rs:231:26:231:27 | a6 | main.rs:230:9:230:83 | a6 | -| main.rs:237:11:237:16 | either | main.rs:236:9:236:14 | either | -| main.rs:239:16:239:17 | a7 | main.rs:238:9:238:44 | a7 | -| main.rs:240:26:240:27 | a7 | main.rs:238:9:238:44 | a7 | -| main.rs:248:11:248:16 | either | main.rs:246:9:246:14 | either | -| main.rs:252:23:252:25 | a11 | main.rs:250:14:250:51 | a11 | -| main.rs:254:15:254:15 | e | main.rs:249:13:249:13 | e | -| main.rs:255:28:255:30 | a12 | main.rs:253:33:253:35 | a12 | -| main.rs:271:11:271:12 | fv | main.rs:270:9:270:10 | fv | -| main.rs:273:26:273:28 | a13 | main.rs:272:9:272:109 | a13 | -| main.rs:281:7:281:7 | x | main.rs:279:9:279:9 | x | -| main.rs:283:5:283:5 | x | main.rs:280:17:280:17 | x | -| main.rs:285:19:285:19 | x | main.rs:280:17:280:17 | x | -| main.rs:288:13:288:13 | x | main.rs:279:9:279:9 | x | -| main.rs:289:19:289:19 | x | main.rs:287:13:287:13 | x | -| main.rs:297:7:297:7 | x | main.rs:295:9:295:9 | x | -| main.rs:300:12:300:12 | x | main.rs:296:17:296:17 | x | -| main.rs:302:5:302:5 | x | main.rs:299:14:299:14 | x | -| main.rs:304:19:304:19 | x | main.rs:299:14:299:14 | x | -| main.rs:307:13:307:13 | x | main.rs:295:9:295:9 | x | -| main.rs:308:19:308:19 | x | main.rs:306:13:306:13 | x | -| main.rs:316:7:316:7 | x | main.rs:314:9:314:9 | x | -| main.rs:319:12:319:12 | x | main.rs:315:20:315:20 | x | -| main.rs:321:5:321:5 | x | main.rs:318:14:318:14 | x | -| main.rs:323:19:323:19 | x | main.rs:318:14:318:14 | x | -| main.rs:327:15:327:15 | x | main.rs:314:9:314:9 | x | -| main.rs:333:11:333:11 | x | main.rs:332:9:332:9 | x | -| main.rs:336:18:336:18 | x | main.rs:334:14:334:14 | x | -| main.rs:337:19:337:19 | x | main.rs:335:20:335:20 | x | -| main.rs:341:15:341:15 | x | main.rs:332:9:332:9 | x | -| main.rs:348:7:348:7 | x | main.rs:346:9:346:9 | x | -| main.rs:350:19:350:19 | x | main.rs:347:16:347:16 | x | -| main.rs:353:7:353:7 | x | main.rs:346:9:346:9 | x | -| main.rs:355:19:355:19 | x | main.rs:352:20:352:20 | x | -| main.rs:357:19:357:19 | x | main.rs:346:9:346:9 | x | -| main.rs:368:15:368:16 | a8 | main.rs:362:5:362:6 | a8 | -| main.rs:369:15:369:16 | b3 | main.rs:364:9:364:10 | b3 | -| main.rs:370:15:370:16 | c1 | main.rs:365:9:365:10 | c1 | -| main.rs:375:15:375:16 | a9 | main.rs:373:20:373:55 | a9 | -| main.rs:384:15:384:17 | a10 | main.rs:380:13:380:15 | a10 | -| main.rs:385:15:385:16 | b4 | main.rs:381:13:381:14 | b4 | -| main.rs:386:15:386:16 | c2 | main.rs:382:13:382:14 | c2 | -| main.rs:389:9:389:10 | c2 | main.rs:382:13:382:14 | c2 | -| main.rs:390:9:390:10 | b4 | main.rs:381:13:381:14 | b4 | -| main.rs:391:9:391:11 | a10 | main.rs:380:13:380:15 | a10 | -| main.rs:393:9:393:11 | a10 | main.rs:380:13:380:15 | a10 | -| main.rs:394:9:394:10 | b4 | main.rs:381:13:381:14 | b4 | -| main.rs:395:9:395:10 | c2 | main.rs:382:13:382:14 | c2 | -| main.rs:397:15:397:17 | a10 | main.rs:380:13:380:15 | a10 | -| main.rs:398:15:398:16 | b4 | main.rs:381:13:381:14 | b4 | -| main.rs:399:15:399:16 | c2 | main.rs:382:13:382:14 | c2 | -| main.rs:406:23:406:25 | a10 | main.rs:403:13:403:15 | a10 | -| main.rs:407:23:407:24 | b4 | main.rs:404:13:404:14 | b4 | -| main.rs:411:15:411:17 | a10 | main.rs:380:13:380:15 | a10 | -| main.rs:412:15:412:16 | b4 | main.rs:381:13:381:14 | b4 | -| main.rs:418:9:418:9 | x | main.rs:417:10:417:10 | x | -| main.rs:420:9:420:23 | example_closure | main.rs:416:9:416:23 | example_closure | -| main.rs:421:15:421:16 | n1 | main.rs:419:9:419:10 | n1 | -| main.rs:426:9:426:9 | x | main.rs:425:6:425:6 | x | -| main.rs:428:9:428:26 | immutable_variable | main.rs:424:9:424:26 | immutable_variable | -| main.rs:429:15:429:16 | n2 | main.rs:427:9:427:10 | n2 | -| main.rs:436:9:436:9 | x | main.rs:435:10:435:10 | x | -| main.rs:437:15:437:15 | f | main.rs:434:9:434:9 | f | -| main.rs:441:9:441:9 | x | main.rs:439:10:439:10 | x | -| main.rs:444:15:444:15 | f | main.rs:434:9:434:9 | f | -| main.rs:450:17:450:17 | x | main.rs:448:14:448:14 | x | -| main.rs:459:13:459:13 | x | main.rs:458:14:458:14 | x | -| main.rs:460:19:460:19 | f | main.rs:457:13:457:13 | f | -| main.rs:468:12:468:12 | v | main.rs:465:9:465:9 | v | -| main.rs:469:19:469:22 | text | main.rs:467:9:467:12 | text | -| main.rs:475:5:475:5 | a | main.rs:474:13:474:13 | a | -| main.rs:476:15:476:15 | a | main.rs:474:13:474:13 | a | -| main.rs:477:11:477:11 | a | main.rs:474:13:474:13 | a | -| main.rs:478:15:478:15 | a | main.rs:474:13:474:13 | a | -| main.rs:484:14:484:14 | i | main.rs:482:13:482:13 | i | -| main.rs:485:6:485:10 | ref_i | main.rs:483:9:483:13 | ref_i | -| main.rs:486:15:486:15 | i | main.rs:482:13:482:13 | i | -| main.rs:490:6:490:6 | x | main.rs:489:17:489:17 | x | -| main.rs:491:10:491:10 | x | main.rs:489:17:489:17 | x | -| main.rs:492:10:492:10 | x | main.rs:489:17:489:17 | x | -| main.rs:493:12:493:12 | x | main.rs:489:17:489:17 | x | -| main.rs:497:6:497:6 | x | main.rs:496:22:496:22 | x | -| main.rs:498:10:498:10 | x | main.rs:496:22:496:22 | x | -| main.rs:499:10:499:10 | x | main.rs:496:22:496:22 | x | -| main.rs:500:6:500:6 | y | main.rs:496:38:496:38 | y | -| main.rs:501:9:501:9 | x | main.rs:496:22:496:22 | x | -| main.rs:507:27:507:27 | x | main.rs:505:13:505:13 | x | -| main.rs:508:6:508:6 | y | main.rs:506:9:506:9 | y | -| main.rs:511:15:511:15 | x | main.rs:505:13:505:13 | x | -| main.rs:515:19:515:19 | x | main.rs:505:13:505:13 | x | -| main.rs:517:14:517:14 | z | main.rs:513:13:513:13 | z | -| main.rs:518:9:518:9 | w | main.rs:514:9:514:9 | w | -| main.rs:520:7:520:7 | w | main.rs:514:9:514:9 | w | -| main.rs:523:15:523:15 | z | main.rs:513:13:513:13 | z | -| main.rs:529:14:529:14 | x | main.rs:527:13:527:13 | x | -| main.rs:530:6:530:6 | y | main.rs:528:9:528:9 | y | -| main.rs:531:15:531:15 | x | main.rs:527:13:527:13 | x | -| main.rs:539:19:539:19 | x | main.rs:535:9:535:9 | x | -| main.rs:541:5:541:7 | cap | main.rs:538:9:538:11 | cap | -| main.rs:542:15:542:15 | x | main.rs:535:9:535:9 | x | -| main.rs:550:19:550:19 | x | main.rs:546:13:546:13 | x | -| main.rs:552:5:552:12 | closure1 | main.rs:549:9:549:16 | closure1 | -| main.rs:553:15:553:15 | x | main.rs:546:13:546:13 | x | -| main.rs:559:9:559:9 | y | main.rs:555:13:555:13 | y | -| main.rs:561:5:561:12 | closure2 | main.rs:558:13:558:20 | closure2 | -| main.rs:562:15:562:15 | y | main.rs:555:13:555:13 | y | -| main.rs:568:9:568:9 | z | main.rs:564:13:564:13 | z | -| main.rs:570:5:570:12 | closure3 | main.rs:567:13:567:20 | closure3 | -| main.rs:571:15:571:15 | z | main.rs:564:13:564:13 | z | -| main.rs:577:9:577:9 | i | main.rs:575:13:575:13 | i | -| main.rs:580:5:580:9 | block | main.rs:576:9:576:13 | block | -| main.rs:581:15:581:15 | i | main.rs:575:13:575:13 | i | -| main.rs:586:15:586:15 | x | main.rs:585:13:585:13 | x | -| main.rs:587:15:587:15 | x | main.rs:585:13:585:13 | x | -| main.rs:589:16:589:16 | b | main.rs:584:8:584:8 | b | -| main.rs:591:9:591:9 | x | main.rs:585:13:585:13 | x | -| main.rs:592:19:592:19 | x | main.rs:585:13:585:13 | x | -| main.rs:593:19:593:19 | x | main.rs:585:13:585:13 | x | -| main.rs:595:9:595:9 | x | main.rs:585:13:585:13 | x | -| main.rs:596:19:596:19 | x | main.rs:585:13:585:13 | x | -| main.rs:597:19:597:19 | x | main.rs:585:13:585:13 | x | -| main.rs:599:15:599:15 | x | main.rs:585:13:585:13 | x | -| main.rs:605:16:605:17 | b1 | main.rs:602:13:602:14 | b1 | -| main.rs:607:19:607:19 | x | main.rs:603:9:603:9 | x | -| main.rs:609:19:609:19 | x | main.rs:603:9:603:9 | x | -| main.rs:613:16:613:17 | b2 | main.rs:602:23:602:24 | b2 | -| main.rs:615:19:615:19 | x | main.rs:603:9:603:9 | x | -| main.rs:617:19:617:19 | x | main.rs:603:9:603:9 | x | -| main.rs:627:16:627:19 | self | main.rs:626:20:626:23 | self | -| main.rs:631:9:631:12 | self | main.rs:630:11:630:14 | self | -| main.rs:637:13:637:16 | self | main.rs:634:23:634:26 | self | -| main.rs:637:25:637:25 | n | main.rs:635:22:635:22 | n | -| main.rs:639:9:639:9 | f | main.rs:635:17:635:17 | f | -| main.rs:640:9:640:9 | f | main.rs:635:17:635:17 | f | -| main.rs:646:15:646:15 | a | main.rs:645:13:645:13 | a | -| main.rs:647:5:647:5 | a | main.rs:645:13:645:13 | a | -| main.rs:648:15:648:15 | a | main.rs:645:13:645:13 | a | -| main.rs:649:5:649:5 | a | main.rs:645:13:645:13 | a | -| main.rs:650:15:650:15 | a | main.rs:645:13:645:13 | a | -| main.rs:655:15:655:15 | a | main.rs:654:13:654:13 | a | -| main.rs:656:5:656:5 | a | main.rs:654:13:654:13 | a | -| main.rs:657:15:657:15 | a | main.rs:654:13:654:13 | a | -| main.rs:658:5:658:5 | a | main.rs:654:13:654:13 | a | -| main.rs:659:15:659:15 | a | main.rs:654:13:654:13 | a | -| main.rs:664:20:664:20 | x | main.rs:663:9:663:9 | x | -| main.rs:665:15:665:15 | x | main.rs:663:9:663:9 | x | -| main.rs:668:20:668:20 | z | main.rs:667:9:667:9 | z | -| main.rs:677:10:677:13 | self | main.rs:676:17:676:20 | self | -| main.rs:683:5:683:5 | a | main.rs:682:13:682:13 | a | -| main.rs:686:15:686:15 | a | main.rs:682:13:682:13 | a | -| main.rs:705:9:705:21 | var_in_macro | main.rs:705:9:705:21 | var_in_macro | -| main.rs:706:15:706:28 | var_from_macro | main.rs:704:9:704:22 | var_from_macro | -| main.rs:712:30:712:41 | var_in_macro | main.rs:712:15:712:28 | var_in_macro | -| main.rs:713:15:713:26 | var_in_macro | main.rs:707:9:707:20 | var_in_macro | -| main.rs:718:5:718:5 | x | main.rs:717:9:717:9 | x | -| main.rs:719:15:719:15 | x | main.rs:717:9:717:9 | x | -| main.rs:726:20:726:20 | b | main.rs:724:20:724:20 | b | -| main.rs:727:13:727:13 | x | main.rs:723:13:723:13 | x | -| main.rs:730:5:730:7 | cap | main.rs:724:13:724:15 | cap | -| main.rs:731:15:731:15 | x | main.rs:723:13:723:13 | x | +| main.rs:29:5:29:6 | x2 | main.rs:25:13:25:14 | x2 | +| main.rs:29:10:29:11 | x2 | main.rs:25:13:25:14 | x2 | +| main.rs:30:15:30:16 | x2 | main.rs:25:13:25:14 | x2 | +| main.rs:35:20:35:20 | x | main.rs:34:13:34:13 | x | +| main.rs:36:5:36:5 | x | main.rs:34:13:34:13 | x | +| main.rs:37:20:37:20 | x | main.rs:34:13:34:13 | x | +| main.rs:42:15:42:16 | x3 | main.rs:41:9:41:10 | x3 | +| main.rs:44:9:44:10 | x3 | main.rs:41:9:41:10 | x3 | +| main.rs:45:15:45:16 | x3 | main.rs:43:9:43:10 | x3 | +| main.rs:50:15:50:16 | x4 | main.rs:49:9:49:10 | x4 | +| main.rs:53:19:53:20 | x4 | main.rs:52:13:52:14 | x4 | +| main.rs:55:15:55:16 | x4 | main.rs:49:9:49:10 | x4 | +| main.rs:74:15:74:16 | a1 | main.rs:66:13:66:14 | a1 | +| main.rs:75:15:75:16 | b1 | main.rs:67:13:67:14 | b1 | +| main.rs:76:15:76:15 | x | main.rs:70:13:70:13 | x | +| main.rs:77:15:77:15 | y | main.rs:71:13:71:13 | y | +| main.rs:85:9:85:10 | p1 | main.rs:81:9:81:10 | p1 | +| main.rs:86:15:86:16 | a2 | main.rs:83:12:83:13 | a2 | +| main.rs:87:15:87:16 | b2 | main.rs:84:12:84:13 | b2 | +| main.rs:94:11:94:12 | s1 | main.rs:91:9:91:10 | s1 | +| main.rs:95:19:95:20 | s2 | main.rs:93:21:93:22 | s2 | +| main.rs:102:7:102:7 | x | main.rs:100:9:100:9 | x | +| main.rs:105:13:105:13 | x | main.rs:100:9:100:9 | x | +| main.rs:106:19:106:19 | x | main.rs:104:13:104:13 | x | +| main.rs:109:15:109:15 | x | main.rs:101:14:101:14 | x | +| main.rs:116:11:116:12 | s1 | main.rs:113:9:113:10 | s1 | +| main.rs:117:19:117:20 | s2 | main.rs:115:24:115:25 | s2 | +| main.rs:125:11:125:12 | x6 | main.rs:122:9:122:10 | x6 | +| main.rs:130:23:130:24 | y1 | main.rs:127:14:127:15 | y1 | +| main.rs:135:15:135:16 | y1 | main.rs:123:9:123:10 | y1 | +| main.rs:141:11:141:17 | numbers | main.rs:139:9:139:15 | numbers | +| main.rs:150:23:150:27 | first | main.rs:144:13:144:17 | first | +| main.rs:151:23:151:27 | third | main.rs:146:13:146:17 | third | +| main.rs:152:23:152:27 | fifth | main.rs:148:13:148:17 | fifth | +| main.rs:156:11:156:17 | numbers | main.rs:139:9:139:15 | numbers | +| main.rs:163:23:163:27 | first | main.rs:159:13:159:17 | first | +| main.rs:164:23:164:26 | last | main.rs:161:13:161:16 | last | +| main.rs:172:11:172:12 | p2 | main.rs:170:9:170:10 | p2 | +| main.rs:175:24:175:25 | x7 | main.rs:174:16:174:17 | x7 | +| main.rs:186:11:186:13 | msg | main.rs:184:9:184:11 | msg | +| main.rs:190:24:190:34 | id_variable | main.rs:189:17:189:27 | id_variable | +| main.rs:197:23:197:24 | id | main.rs:194:26:194:27 | id | +| main.rs:209:11:209:16 | either | main.rs:208:9:208:14 | either | +| main.rs:211:26:211:27 | a3 | main.rs:210:9:210:44 | a3 | +| main.rs:223:11:223:12 | tv | main.rs:222:9:222:10 | tv | +| main.rs:225:26:225:27 | a4 | main.rs:224:9:224:81 | a4 | +| main.rs:227:11:227:12 | tv | main.rs:222:9:222:10 | tv | +| main.rs:229:26:229:27 | a5 | main.rs:228:9:228:83 | a5 | +| main.rs:231:11:231:12 | tv | main.rs:222:9:222:10 | tv | +| main.rs:233:26:233:27 | a6 | main.rs:232:9:232:83 | a6 | +| main.rs:239:11:239:16 | either | main.rs:238:9:238:14 | either | +| main.rs:241:16:241:17 | a7 | main.rs:240:9:240:44 | a7 | +| main.rs:242:26:242:27 | a7 | main.rs:240:9:240:44 | a7 | +| main.rs:250:11:250:16 | either | main.rs:248:9:248:14 | either | +| main.rs:254:23:254:25 | a11 | main.rs:252:14:252:51 | a11 | +| main.rs:256:15:256:15 | e | main.rs:251:13:251:13 | e | +| main.rs:257:28:257:30 | a12 | main.rs:255:33:255:35 | a12 | +| main.rs:273:11:273:12 | fv | main.rs:272:9:272:10 | fv | +| main.rs:275:26:275:28 | a13 | main.rs:274:9:274:109 | a13 | +| main.rs:283:7:283:7 | x | main.rs:281:9:281:9 | x | +| main.rs:285:5:285:5 | x | main.rs:282:17:282:17 | x | +| main.rs:287:19:287:19 | x | main.rs:282:17:282:17 | x | +| main.rs:290:13:290:13 | x | main.rs:281:9:281:9 | x | +| main.rs:291:19:291:19 | x | main.rs:289:13:289:13 | x | +| main.rs:299:7:299:7 | x | main.rs:297:9:297:9 | x | +| main.rs:302:12:302:12 | x | main.rs:298:17:298:17 | x | +| main.rs:304:5:304:5 | x | main.rs:301:14:301:14 | x | +| main.rs:306:19:306:19 | x | main.rs:301:14:301:14 | x | +| main.rs:309:13:309:13 | x | main.rs:297:9:297:9 | x | +| main.rs:310:19:310:19 | x | main.rs:308:13:308:13 | x | +| main.rs:318:7:318:7 | x | main.rs:316:9:316:9 | x | +| main.rs:321:12:321:12 | x | main.rs:317:20:317:20 | x | +| main.rs:323:5:323:5 | x | main.rs:320:14:320:14 | x | +| main.rs:325:19:325:19 | x | main.rs:320:14:320:14 | x | +| main.rs:329:15:329:15 | x | main.rs:316:9:316:9 | x | +| main.rs:335:11:335:11 | x | main.rs:334:9:334:9 | x | +| main.rs:338:18:338:18 | x | main.rs:336:14:336:14 | x | +| main.rs:339:19:339:19 | x | main.rs:337:20:337:20 | x | +| main.rs:343:15:343:15 | x | main.rs:334:9:334:9 | x | +| main.rs:350:7:350:7 | x | main.rs:348:9:348:9 | x | +| main.rs:352:19:352:19 | x | main.rs:349:16:349:16 | x | +| main.rs:355:7:355:7 | x | main.rs:348:9:348:9 | x | +| main.rs:357:19:357:19 | x | main.rs:354:20:354:20 | x | +| main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x | +| main.rs:370:15:370:16 | a8 | main.rs:364:5:364:6 | a8 | +| main.rs:371:15:371:16 | b3 | main.rs:366:9:366:10 | b3 | +| main.rs:372:15:372:16 | c1 | main.rs:367:9:367:10 | c1 | +| main.rs:377:15:377:16 | a9 | main.rs:375:20:375:55 | a9 | +| main.rs:386:15:386:17 | a10 | main.rs:382:13:382:15 | a10 | +| main.rs:387:15:387:16 | b4 | main.rs:383:13:383:14 | b4 | +| main.rs:388:15:388:16 | c2 | main.rs:384:13:384:14 | c2 | +| main.rs:391:9:391:10 | c2 | main.rs:384:13:384:14 | c2 | +| main.rs:392:9:392:10 | b4 | main.rs:383:13:383:14 | b4 | +| main.rs:393:9:393:11 | a10 | main.rs:382:13:382:15 | a10 | +| main.rs:395:9:395:11 | a10 | main.rs:382:13:382:15 | a10 | +| main.rs:396:9:396:10 | b4 | main.rs:383:13:383:14 | b4 | +| main.rs:397:9:397:10 | c2 | main.rs:384:13:384:14 | c2 | +| main.rs:399:15:399:17 | a10 | main.rs:382:13:382:15 | a10 | +| main.rs:400:15:400:16 | b4 | main.rs:383:13:383:14 | b4 | +| main.rs:401:15:401:16 | c2 | main.rs:384:13:384:14 | c2 | +| main.rs:408:23:408:25 | a10 | main.rs:405:13:405:15 | a10 | +| main.rs:409:23:409:24 | b4 | main.rs:406:13:406:14 | b4 | +| main.rs:413:15:413:17 | a10 | main.rs:382:13:382:15 | a10 | +| main.rs:414:15:414:16 | b4 | main.rs:383:13:383:14 | b4 | +| main.rs:420:9:420:9 | x | main.rs:419:10:419:10 | x | +| main.rs:422:9:422:23 | example_closure | main.rs:418:9:418:23 | example_closure | +| main.rs:423:15:423:16 | n1 | main.rs:421:9:421:10 | n1 | +| main.rs:428:9:428:9 | x | main.rs:427:6:427:6 | x | +| main.rs:430:9:430:26 | immutable_variable | main.rs:426:9:426:26 | immutable_variable | +| main.rs:431:15:431:16 | n2 | main.rs:429:9:429:10 | n2 | +| main.rs:438:9:438:9 | x | main.rs:437:10:437:10 | x | +| main.rs:439:15:439:15 | f | main.rs:436:9:436:9 | f | +| main.rs:443:9:443:9 | x | main.rs:441:10:441:10 | x | +| main.rs:446:15:446:15 | f | main.rs:436:9:436:9 | f | +| main.rs:452:17:452:17 | x | main.rs:450:14:450:14 | x | +| main.rs:461:13:461:13 | x | main.rs:460:14:460:14 | x | +| main.rs:462:19:462:19 | f | main.rs:459:13:459:13 | f | +| main.rs:470:12:470:12 | v | main.rs:467:9:467:9 | v | +| main.rs:471:19:471:22 | text | main.rs:469:9:469:12 | text | +| main.rs:477:5:477:5 | a | main.rs:476:13:476:13 | a | +| main.rs:478:15:478:15 | a | main.rs:476:13:476:13 | a | +| main.rs:479:11:479:11 | a | main.rs:476:13:476:13 | a | +| main.rs:480:15:480:15 | a | main.rs:476:13:476:13 | a | +| main.rs:486:14:486:14 | i | main.rs:484:13:484:13 | i | +| main.rs:487:6:487:10 | ref_i | main.rs:485:9:485:13 | ref_i | +| main.rs:488:15:488:15 | i | main.rs:484:13:484:13 | i | +| main.rs:492:6:492:6 | x | main.rs:491:17:491:17 | x | +| main.rs:493:10:493:10 | x | main.rs:491:17:491:17 | x | +| main.rs:494:10:494:10 | x | main.rs:491:17:491:17 | x | +| main.rs:495:12:495:12 | x | main.rs:491:17:491:17 | x | +| main.rs:499:6:499:6 | x | main.rs:498:22:498:22 | x | +| main.rs:500:10:500:10 | x | main.rs:498:22:498:22 | x | +| main.rs:501:10:501:10 | x | main.rs:498:22:498:22 | x | +| main.rs:502:6:502:6 | y | main.rs:498:38:498:38 | y | +| main.rs:503:9:503:9 | x | main.rs:498:22:498:22 | x | +| main.rs:509:27:509:27 | x | main.rs:507:13:507:13 | x | +| main.rs:510:6:510:6 | y | main.rs:508:9:508:9 | y | +| main.rs:513:15:513:15 | x | main.rs:507:13:507:13 | x | +| main.rs:517:19:517:19 | x | main.rs:507:13:507:13 | x | +| main.rs:519:14:519:14 | z | main.rs:515:13:515:13 | z | +| main.rs:520:9:520:9 | w | main.rs:516:9:516:9 | w | +| main.rs:522:7:522:7 | w | main.rs:516:9:516:9 | w | +| main.rs:525:15:525:15 | z | main.rs:515:13:515:13 | z | +| main.rs:531:14:531:14 | x | main.rs:529:13:529:13 | x | +| main.rs:532:6:532:6 | y | main.rs:530:9:530:9 | y | +| main.rs:533:15:533:15 | x | main.rs:529:13:529:13 | x | +| main.rs:541:19:541:19 | x | main.rs:537:9:537:9 | x | +| main.rs:543:5:543:7 | cap | main.rs:540:9:540:11 | cap | +| main.rs:544:15:544:15 | x | main.rs:537:9:537:9 | x | +| main.rs:552:19:552:19 | x | main.rs:548:13:548:13 | x | +| main.rs:554:5:554:12 | closure1 | main.rs:551:9:551:16 | closure1 | +| main.rs:555:15:555:15 | x | main.rs:548:13:548:13 | x | +| main.rs:561:9:561:9 | y | main.rs:557:13:557:13 | y | +| main.rs:563:5:563:12 | closure2 | main.rs:560:13:560:20 | closure2 | +| main.rs:564:15:564:15 | y | main.rs:557:13:557:13 | y | +| main.rs:570:9:570:9 | z | main.rs:566:13:566:13 | z | +| main.rs:572:5:572:12 | closure3 | main.rs:569:13:569:20 | closure3 | +| main.rs:573:15:573:15 | z | main.rs:566:13:566:13 | z | +| main.rs:579:9:579:9 | i | main.rs:577:13:577:13 | i | +| main.rs:582:5:582:9 | block | main.rs:578:9:578:13 | block | +| main.rs:583:15:583:15 | i | main.rs:577:13:577:13 | i | +| main.rs:588:15:588:15 | x | main.rs:587:13:587:13 | x | +| main.rs:589:15:589:15 | x | main.rs:587:13:587:13 | x | +| main.rs:591:16:591:16 | b | main.rs:586:8:586:8 | b | +| main.rs:593:9:593:9 | x | main.rs:587:13:587:13 | x | +| main.rs:594:19:594:19 | x | main.rs:587:13:587:13 | x | +| main.rs:595:19:595:19 | x | main.rs:587:13:587:13 | x | +| main.rs:597:9:597:9 | x | main.rs:587:13:587:13 | x | +| main.rs:598:19:598:19 | x | main.rs:587:13:587:13 | x | +| main.rs:599:19:599:19 | x | main.rs:587:13:587:13 | x | +| main.rs:601:15:601:15 | x | main.rs:587:13:587:13 | x | +| main.rs:607:16:607:17 | b1 | main.rs:604:13:604:14 | b1 | +| main.rs:609:19:609:19 | x | main.rs:605:9:605:9 | x | +| main.rs:611:19:611:19 | x | main.rs:605:9:605:9 | x | +| main.rs:615:16:615:17 | b2 | main.rs:604:23:604:24 | b2 | +| main.rs:617:19:617:19 | x | main.rs:605:9:605:9 | x | +| main.rs:619:19:619:19 | x | main.rs:605:9:605:9 | x | +| main.rs:629:16:629:19 | self | main.rs:628:20:628:23 | self | +| main.rs:633:9:633:12 | self | main.rs:632:11:632:14 | self | +| main.rs:639:13:639:16 | self | main.rs:636:23:636:26 | self | +| main.rs:639:25:639:25 | n | main.rs:637:22:637:22 | n | +| main.rs:641:9:641:9 | f | main.rs:637:17:637:17 | f | +| main.rs:642:9:642:9 | f | main.rs:637:17:637:17 | f | +| main.rs:648:15:648:15 | a | main.rs:647:13:647:13 | a | +| main.rs:649:5:649:5 | a | main.rs:647:13:647:13 | a | +| main.rs:650:15:650:15 | a | main.rs:647:13:647:13 | a | +| main.rs:651:5:651:5 | a | main.rs:647:13:647:13 | a | +| main.rs:652:15:652:15 | a | main.rs:647:13:647:13 | a | +| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | +| main.rs:658:5:658:5 | a | main.rs:656:13:656:13 | a | +| main.rs:659:15:659:15 | a | main.rs:656:13:656:13 | a | +| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | +| main.rs:661:15:661:15 | a | main.rs:656:13:656:13 | a | +| main.rs:666:20:666:20 | x | main.rs:665:9:665:9 | x | +| main.rs:667:15:667:15 | x | main.rs:665:9:665:9 | x | +| main.rs:670:20:670:20 | z | main.rs:669:9:669:9 | z | +| main.rs:679:10:679:13 | self | main.rs:678:17:678:20 | self | +| main.rs:685:5:685:5 | a | main.rs:684:13:684:13 | a | +| main.rs:688:15:688:15 | a | main.rs:684:13:684:13 | a | +| main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | +| main.rs:708:15:708:28 | var_from_macro | main.rs:706:9:706:22 | var_from_macro | +| main.rs:714:30:714:41 | var_in_macro | main.rs:714:15:714:28 | var_in_macro | +| main.rs:715:15:715:26 | var_in_macro | main.rs:709:9:709:20 | var_in_macro | +| main.rs:720:5:720:5 | x | main.rs:719:9:719:9 | x | +| main.rs:721:15:721:15 | x | main.rs:719:9:719:9 | x | +| main.rs:728:20:728:20 | b | main.rs:726:20:726:20 | b | +| main.rs:729:13:729:13 | x | main.rs:725:13:725:13 | x | +| main.rs:732:5:732:7 | cap | main.rs:726:13:726:15 | cap | +| main.rs:733:15:733:15 | x | main.rs:725:13:725:13 | x | variableWriteAccess | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | -| main.rs:34:5:34:5 | x | main.rs:32:13:32:13 | x | -| main.rs:389:9:389:10 | c2 | main.rs:382:13:382:14 | c2 | -| main.rs:390:9:390:10 | b4 | main.rs:381:13:381:14 | b4 | -| main.rs:391:9:391:11 | a10 | main.rs:380:13:380:15 | a10 | -| main.rs:559:9:559:9 | y | main.rs:555:13:555:13 | y | -| main.rs:577:9:577:9 | i | main.rs:575:13:575:13 | i | -| main.rs:591:9:591:9 | x | main.rs:585:13:585:13 | x | -| main.rs:595:9:595:9 | x | main.rs:585:13:585:13 | x | -| main.rs:649:5:649:5 | a | main.rs:645:13:645:13 | a | -| main.rs:658:5:658:5 | a | main.rs:654:13:654:13 | a | -| main.rs:718:5:718:5 | x | main.rs:717:9:717:9 | x | -| main.rs:727:13:727:13 | x | main.rs:723:13:723:13 | x | +| main.rs:29:5:29:6 | x2 | main.rs:25:13:25:14 | x2 | +| main.rs:36:5:36:5 | x | main.rs:34:13:34:13 | x | +| main.rs:391:9:391:10 | c2 | main.rs:384:13:384:14 | c2 | +| main.rs:392:9:392:10 | b4 | main.rs:383:13:383:14 | b4 | +| main.rs:393:9:393:11 | a10 | main.rs:382:13:382:15 | a10 | +| main.rs:561:9:561:9 | y | main.rs:557:13:557:13 | y | +| main.rs:579:9:579:9 | i | main.rs:577:13:577:13 | i | +| main.rs:593:9:593:9 | x | main.rs:587:13:587:13 | x | +| main.rs:597:9:597:9 | x | main.rs:587:13:587:13 | x | +| main.rs:651:5:651:5 | a | main.rs:647:13:647:13 | a | +| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | +| main.rs:720:5:720:5 | x | main.rs:719:9:719:9 | x | +| main.rs:729:13:729:13 | x | main.rs:725:13:725:13 | x | variableReadAccess | main.rs:7:20:7:20 | s | main.rs:5:14:5:14 | s | | main.rs:12:20:12:20 | i | main.rs:10:14:10:14 | i | @@ -372,276 +376,278 @@ variableReadAccess | main.rs:21:15:21:16 | x1 | main.rs:20:9:20:10 | x1 | | main.rs:26:15:26:16 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:28:15:28:16 | x2 | main.rs:25:13:25:14 | x2 | -| main.rs:40:15:40:16 | x3 | main.rs:39:9:39:10 | x3 | -| main.rs:42:9:42:10 | x3 | main.rs:39:9:39:10 | x3 | -| main.rs:43:15:43:16 | x3 | main.rs:41:9:41:10 | x3 | -| main.rs:48:15:48:16 | x4 | main.rs:47:9:47:10 | x4 | -| main.rs:51:19:51:20 | x4 | main.rs:50:13:50:14 | x4 | -| main.rs:53:15:53:16 | x4 | main.rs:47:9:47:10 | x4 | -| main.rs:72:15:72:16 | a1 | main.rs:64:13:64:14 | a1 | -| main.rs:73:15:73:16 | b1 | main.rs:65:13:65:14 | b1 | -| main.rs:74:15:74:15 | x | main.rs:68:13:68:13 | x | -| main.rs:75:15:75:15 | y | main.rs:69:13:69:13 | y | -| main.rs:83:9:83:10 | p1 | main.rs:79:9:79:10 | p1 | -| main.rs:84:15:84:16 | a2 | main.rs:81:12:81:13 | a2 | -| main.rs:85:15:85:16 | b2 | main.rs:82:12:82:13 | b2 | -| main.rs:92:11:92:12 | s1 | main.rs:89:9:89:10 | s1 | -| main.rs:93:19:93:20 | s2 | main.rs:91:21:91:22 | s2 | -| main.rs:100:7:100:7 | x | main.rs:98:9:98:9 | x | -| main.rs:103:13:103:13 | x | main.rs:98:9:98:9 | x | -| main.rs:104:19:104:19 | x | main.rs:102:13:102:13 | x | -| main.rs:107:15:107:15 | x | main.rs:99:14:99:14 | x | -| main.rs:114:11:114:12 | s1 | main.rs:111:9:111:10 | s1 | -| main.rs:115:19:115:20 | s2 | main.rs:113:24:113:25 | s2 | -| main.rs:123:11:123:12 | x6 | main.rs:120:9:120:10 | x6 | -| main.rs:128:23:128:24 | y1 | main.rs:125:14:125:15 | y1 | -| main.rs:133:15:133:16 | y1 | main.rs:121:9:121:10 | y1 | -| main.rs:139:11:139:17 | numbers | main.rs:137:9:137:15 | numbers | -| main.rs:148:23:148:27 | first | main.rs:142:13:142:17 | first | -| main.rs:149:23:149:27 | third | main.rs:144:13:144:17 | third | -| main.rs:150:23:150:27 | fifth | main.rs:146:13:146:17 | fifth | -| main.rs:154:11:154:17 | numbers | main.rs:137:9:137:15 | numbers | -| main.rs:161:23:161:27 | first | main.rs:157:13:157:17 | first | -| main.rs:162:23:162:26 | last | main.rs:159:13:159:16 | last | -| main.rs:170:11:170:12 | p2 | main.rs:168:9:168:10 | p2 | -| main.rs:173:24:173:25 | x7 | main.rs:172:16:172:17 | x7 | -| main.rs:184:11:184:13 | msg | main.rs:182:9:182:11 | msg | -| main.rs:188:24:188:34 | id_variable | main.rs:187:17:187:27 | id_variable | -| main.rs:195:23:195:24 | id | main.rs:192:26:192:27 | id | -| main.rs:207:11:207:16 | either | main.rs:206:9:206:14 | either | -| main.rs:209:26:209:27 | a3 | main.rs:208:9:208:44 | a3 | -| main.rs:221:11:221:12 | tv | main.rs:220:9:220:10 | tv | -| main.rs:223:26:223:27 | a4 | main.rs:222:9:222:81 | a4 | -| main.rs:225:11:225:12 | tv | main.rs:220:9:220:10 | tv | -| main.rs:227:26:227:27 | a5 | main.rs:226:9:226:83 | a5 | -| main.rs:229:11:229:12 | tv | main.rs:220:9:220:10 | tv | -| main.rs:231:26:231:27 | a6 | main.rs:230:9:230:83 | a6 | -| main.rs:237:11:237:16 | either | main.rs:236:9:236:14 | either | -| main.rs:239:16:239:17 | a7 | main.rs:238:9:238:44 | a7 | -| main.rs:240:26:240:27 | a7 | main.rs:238:9:238:44 | a7 | -| main.rs:248:11:248:16 | either | main.rs:246:9:246:14 | either | -| main.rs:252:23:252:25 | a11 | main.rs:250:14:250:51 | a11 | -| main.rs:254:15:254:15 | e | main.rs:249:13:249:13 | e | -| main.rs:255:28:255:30 | a12 | main.rs:253:33:253:35 | a12 | -| main.rs:271:11:271:12 | fv | main.rs:270:9:270:10 | fv | -| main.rs:273:26:273:28 | a13 | main.rs:272:9:272:109 | a13 | -| main.rs:281:7:281:7 | x | main.rs:279:9:279:9 | x | -| main.rs:283:5:283:5 | x | main.rs:280:17:280:17 | x | -| main.rs:285:19:285:19 | x | main.rs:280:17:280:17 | x | -| main.rs:288:13:288:13 | x | main.rs:279:9:279:9 | x | -| main.rs:289:19:289:19 | x | main.rs:287:13:287:13 | x | -| main.rs:297:7:297:7 | x | main.rs:295:9:295:9 | x | -| main.rs:300:12:300:12 | x | main.rs:296:17:296:17 | x | -| main.rs:302:5:302:5 | x | main.rs:299:14:299:14 | x | -| main.rs:304:19:304:19 | x | main.rs:299:14:299:14 | x | -| main.rs:307:13:307:13 | x | main.rs:295:9:295:9 | x | -| main.rs:308:19:308:19 | x | main.rs:306:13:306:13 | x | -| main.rs:316:7:316:7 | x | main.rs:314:9:314:9 | x | -| main.rs:319:12:319:12 | x | main.rs:315:20:315:20 | x | -| main.rs:321:5:321:5 | x | main.rs:318:14:318:14 | x | -| main.rs:323:19:323:19 | x | main.rs:318:14:318:14 | x | -| main.rs:327:15:327:15 | x | main.rs:314:9:314:9 | x | -| main.rs:333:11:333:11 | x | main.rs:332:9:332:9 | x | -| main.rs:336:18:336:18 | x | main.rs:334:14:334:14 | x | -| main.rs:337:19:337:19 | x | main.rs:335:20:335:20 | x | -| main.rs:341:15:341:15 | x | main.rs:332:9:332:9 | x | -| main.rs:348:7:348:7 | x | main.rs:346:9:346:9 | x | -| main.rs:350:19:350:19 | x | main.rs:347:16:347:16 | x | -| main.rs:353:7:353:7 | x | main.rs:346:9:346:9 | x | -| main.rs:355:19:355:19 | x | main.rs:352:20:352:20 | x | -| main.rs:357:19:357:19 | x | main.rs:346:9:346:9 | x | -| main.rs:368:15:368:16 | a8 | main.rs:362:5:362:6 | a8 | -| main.rs:369:15:369:16 | b3 | main.rs:364:9:364:10 | b3 | -| main.rs:370:15:370:16 | c1 | main.rs:365:9:365:10 | c1 | -| main.rs:375:15:375:16 | a9 | main.rs:373:20:373:55 | a9 | -| main.rs:384:15:384:17 | a10 | main.rs:380:13:380:15 | a10 | -| main.rs:385:15:385:16 | b4 | main.rs:381:13:381:14 | b4 | -| main.rs:386:15:386:16 | c2 | main.rs:382:13:382:14 | c2 | -| main.rs:393:9:393:11 | a10 | main.rs:380:13:380:15 | a10 | -| main.rs:394:9:394:10 | b4 | main.rs:381:13:381:14 | b4 | -| main.rs:395:9:395:10 | c2 | main.rs:382:13:382:14 | c2 | -| main.rs:397:15:397:17 | a10 | main.rs:380:13:380:15 | a10 | -| main.rs:398:15:398:16 | b4 | main.rs:381:13:381:14 | b4 | -| main.rs:399:15:399:16 | c2 | main.rs:382:13:382:14 | c2 | -| main.rs:406:23:406:25 | a10 | main.rs:403:13:403:15 | a10 | -| main.rs:407:23:407:24 | b4 | main.rs:404:13:404:14 | b4 | -| main.rs:411:15:411:17 | a10 | main.rs:380:13:380:15 | a10 | -| main.rs:412:15:412:16 | b4 | main.rs:381:13:381:14 | b4 | -| main.rs:418:9:418:9 | x | main.rs:417:10:417:10 | x | -| main.rs:420:9:420:23 | example_closure | main.rs:416:9:416:23 | example_closure | -| main.rs:421:15:421:16 | n1 | main.rs:419:9:419:10 | n1 | -| main.rs:426:9:426:9 | x | main.rs:425:6:425:6 | x | -| main.rs:428:9:428:26 | immutable_variable | main.rs:424:9:424:26 | immutable_variable | -| main.rs:429:15:429:16 | n2 | main.rs:427:9:427:10 | n2 | -| main.rs:436:9:436:9 | x | main.rs:435:10:435:10 | x | -| main.rs:437:15:437:15 | f | main.rs:434:9:434:9 | f | -| main.rs:441:9:441:9 | x | main.rs:439:10:439:10 | x | -| main.rs:444:15:444:15 | f | main.rs:434:9:434:9 | f | -| main.rs:450:17:450:17 | x | main.rs:448:14:448:14 | x | -| main.rs:459:13:459:13 | x | main.rs:458:14:458:14 | x | -| main.rs:460:19:460:19 | f | main.rs:457:13:457:13 | f | -| main.rs:468:12:468:12 | v | main.rs:465:9:465:9 | v | -| main.rs:469:19:469:22 | text | main.rs:467:9:467:12 | text | -| main.rs:476:15:476:15 | a | main.rs:474:13:474:13 | a | -| main.rs:478:15:478:15 | a | main.rs:474:13:474:13 | a | -| main.rs:485:6:485:10 | ref_i | main.rs:483:9:483:13 | ref_i | -| main.rs:486:15:486:15 | i | main.rs:482:13:482:13 | i | -| main.rs:490:6:490:6 | x | main.rs:489:17:489:17 | x | -| main.rs:491:10:491:10 | x | main.rs:489:17:489:17 | x | -| main.rs:492:10:492:10 | x | main.rs:489:17:489:17 | x | -| main.rs:493:12:493:12 | x | main.rs:489:17:489:17 | x | -| main.rs:497:6:497:6 | x | main.rs:496:22:496:22 | x | -| main.rs:498:10:498:10 | x | main.rs:496:22:496:22 | x | -| main.rs:499:10:499:10 | x | main.rs:496:22:496:22 | x | -| main.rs:500:6:500:6 | y | main.rs:496:38:496:38 | y | -| main.rs:501:9:501:9 | x | main.rs:496:22:496:22 | x | -| main.rs:508:6:508:6 | y | main.rs:506:9:506:9 | y | -| main.rs:511:15:511:15 | x | main.rs:505:13:505:13 | x | -| main.rs:518:9:518:9 | w | main.rs:514:9:514:9 | w | -| main.rs:520:7:520:7 | w | main.rs:514:9:514:9 | w | -| main.rs:523:15:523:15 | z | main.rs:513:13:513:13 | z | -| main.rs:530:6:530:6 | y | main.rs:528:9:528:9 | y | -| main.rs:531:15:531:15 | x | main.rs:527:13:527:13 | x | -| main.rs:539:19:539:19 | x | main.rs:535:9:535:9 | x | -| main.rs:541:5:541:7 | cap | main.rs:538:9:538:11 | cap | -| main.rs:542:15:542:15 | x | main.rs:535:9:535:9 | x | -| main.rs:550:19:550:19 | x | main.rs:546:13:546:13 | x | -| main.rs:552:5:552:12 | closure1 | main.rs:549:9:549:16 | closure1 | -| main.rs:553:15:553:15 | x | main.rs:546:13:546:13 | x | -| main.rs:561:5:561:12 | closure2 | main.rs:558:13:558:20 | closure2 | -| main.rs:562:15:562:15 | y | main.rs:555:13:555:13 | y | -| main.rs:568:9:568:9 | z | main.rs:564:13:564:13 | z | -| main.rs:570:5:570:12 | closure3 | main.rs:567:13:567:20 | closure3 | -| main.rs:571:15:571:15 | z | main.rs:564:13:564:13 | z | -| main.rs:580:5:580:9 | block | main.rs:576:9:576:13 | block | -| main.rs:581:15:581:15 | i | main.rs:575:13:575:13 | i | -| main.rs:586:15:586:15 | x | main.rs:585:13:585:13 | x | -| main.rs:587:15:587:15 | x | main.rs:585:13:585:13 | x | -| main.rs:589:16:589:16 | b | main.rs:584:8:584:8 | b | -| main.rs:592:19:592:19 | x | main.rs:585:13:585:13 | x | -| main.rs:593:19:593:19 | x | main.rs:585:13:585:13 | x | -| main.rs:596:19:596:19 | x | main.rs:585:13:585:13 | x | -| main.rs:597:19:597:19 | x | main.rs:585:13:585:13 | x | -| main.rs:599:15:599:15 | x | main.rs:585:13:585:13 | x | -| main.rs:605:16:605:17 | b1 | main.rs:602:13:602:14 | b1 | -| main.rs:607:19:607:19 | x | main.rs:603:9:603:9 | x | -| main.rs:609:19:609:19 | x | main.rs:603:9:603:9 | x | -| main.rs:613:16:613:17 | b2 | main.rs:602:23:602:24 | b2 | -| main.rs:615:19:615:19 | x | main.rs:603:9:603:9 | x | -| main.rs:617:19:617:19 | x | main.rs:603:9:603:9 | x | -| main.rs:627:16:627:19 | self | main.rs:626:20:626:23 | self | -| main.rs:631:9:631:12 | self | main.rs:630:11:630:14 | self | -| main.rs:637:13:637:16 | self | main.rs:634:23:634:26 | self | -| main.rs:637:25:637:25 | n | main.rs:635:22:635:22 | n | -| main.rs:639:9:639:9 | f | main.rs:635:17:635:17 | f | -| main.rs:640:9:640:9 | f | main.rs:635:17:635:17 | f | -| main.rs:646:15:646:15 | a | main.rs:645:13:645:13 | a | -| main.rs:647:5:647:5 | a | main.rs:645:13:645:13 | a | -| main.rs:648:15:648:15 | a | main.rs:645:13:645:13 | a | -| main.rs:650:15:650:15 | a | main.rs:645:13:645:13 | a | -| main.rs:655:15:655:15 | a | main.rs:654:13:654:13 | a | -| main.rs:656:5:656:5 | a | main.rs:654:13:654:13 | a | -| main.rs:657:15:657:15 | a | main.rs:654:13:654:13 | a | -| main.rs:659:15:659:15 | a | main.rs:654:13:654:13 | a | -| main.rs:665:15:665:15 | x | main.rs:663:9:663:9 | x | -| main.rs:677:10:677:13 | self | main.rs:676:17:676:20 | self | -| main.rs:683:5:683:5 | a | main.rs:682:13:682:13 | a | -| main.rs:686:15:686:15 | a | main.rs:682:13:682:13 | a | -| main.rs:705:9:705:21 | var_in_macro | main.rs:705:9:705:21 | var_in_macro | -| main.rs:706:15:706:28 | var_from_macro | main.rs:704:9:704:22 | var_from_macro | -| main.rs:712:30:712:41 | var_in_macro | main.rs:712:15:712:28 | var_in_macro | -| main.rs:713:15:713:26 | var_in_macro | main.rs:707:9:707:20 | var_in_macro | -| main.rs:719:15:719:15 | x | main.rs:717:9:717:9 | x | -| main.rs:726:20:726:20 | b | main.rs:724:20:724:20 | b | -| main.rs:730:5:730:7 | cap | main.rs:724:13:724:15 | cap | -| main.rs:731:15:731:15 | x | main.rs:723:13:723:13 | x | +| main.rs:29:10:29:11 | x2 | main.rs:25:13:25:14 | x2 | +| main.rs:30:15:30:16 | x2 | main.rs:25:13:25:14 | x2 | +| main.rs:42:15:42:16 | x3 | main.rs:41:9:41:10 | x3 | +| main.rs:44:9:44:10 | x3 | main.rs:41:9:41:10 | x3 | +| main.rs:45:15:45:16 | x3 | main.rs:43:9:43:10 | x3 | +| main.rs:50:15:50:16 | x4 | main.rs:49:9:49:10 | x4 | +| main.rs:53:19:53:20 | x4 | main.rs:52:13:52:14 | x4 | +| main.rs:55:15:55:16 | x4 | main.rs:49:9:49:10 | x4 | +| main.rs:74:15:74:16 | a1 | main.rs:66:13:66:14 | a1 | +| main.rs:75:15:75:16 | b1 | main.rs:67:13:67:14 | b1 | +| main.rs:76:15:76:15 | x | main.rs:70:13:70:13 | x | +| main.rs:77:15:77:15 | y | main.rs:71:13:71:13 | y | +| main.rs:85:9:85:10 | p1 | main.rs:81:9:81:10 | p1 | +| main.rs:86:15:86:16 | a2 | main.rs:83:12:83:13 | a2 | +| main.rs:87:15:87:16 | b2 | main.rs:84:12:84:13 | b2 | +| main.rs:94:11:94:12 | s1 | main.rs:91:9:91:10 | s1 | +| main.rs:95:19:95:20 | s2 | main.rs:93:21:93:22 | s2 | +| main.rs:102:7:102:7 | x | main.rs:100:9:100:9 | x | +| main.rs:105:13:105:13 | x | main.rs:100:9:100:9 | x | +| main.rs:106:19:106:19 | x | main.rs:104:13:104:13 | x | +| main.rs:109:15:109:15 | x | main.rs:101:14:101:14 | x | +| main.rs:116:11:116:12 | s1 | main.rs:113:9:113:10 | s1 | +| main.rs:117:19:117:20 | s2 | main.rs:115:24:115:25 | s2 | +| main.rs:125:11:125:12 | x6 | main.rs:122:9:122:10 | x6 | +| main.rs:130:23:130:24 | y1 | main.rs:127:14:127:15 | y1 | +| main.rs:135:15:135:16 | y1 | main.rs:123:9:123:10 | y1 | +| main.rs:141:11:141:17 | numbers | main.rs:139:9:139:15 | numbers | +| main.rs:150:23:150:27 | first | main.rs:144:13:144:17 | first | +| main.rs:151:23:151:27 | third | main.rs:146:13:146:17 | third | +| main.rs:152:23:152:27 | fifth | main.rs:148:13:148:17 | fifth | +| main.rs:156:11:156:17 | numbers | main.rs:139:9:139:15 | numbers | +| main.rs:163:23:163:27 | first | main.rs:159:13:159:17 | first | +| main.rs:164:23:164:26 | last | main.rs:161:13:161:16 | last | +| main.rs:172:11:172:12 | p2 | main.rs:170:9:170:10 | p2 | +| main.rs:175:24:175:25 | x7 | main.rs:174:16:174:17 | x7 | +| main.rs:186:11:186:13 | msg | main.rs:184:9:184:11 | msg | +| main.rs:190:24:190:34 | id_variable | main.rs:189:17:189:27 | id_variable | +| main.rs:197:23:197:24 | id | main.rs:194:26:194:27 | id | +| main.rs:209:11:209:16 | either | main.rs:208:9:208:14 | either | +| main.rs:211:26:211:27 | a3 | main.rs:210:9:210:44 | a3 | +| main.rs:223:11:223:12 | tv | main.rs:222:9:222:10 | tv | +| main.rs:225:26:225:27 | a4 | main.rs:224:9:224:81 | a4 | +| main.rs:227:11:227:12 | tv | main.rs:222:9:222:10 | tv | +| main.rs:229:26:229:27 | a5 | main.rs:228:9:228:83 | a5 | +| main.rs:231:11:231:12 | tv | main.rs:222:9:222:10 | tv | +| main.rs:233:26:233:27 | a6 | main.rs:232:9:232:83 | a6 | +| main.rs:239:11:239:16 | either | main.rs:238:9:238:14 | either | +| main.rs:241:16:241:17 | a7 | main.rs:240:9:240:44 | a7 | +| main.rs:242:26:242:27 | a7 | main.rs:240:9:240:44 | a7 | +| main.rs:250:11:250:16 | either | main.rs:248:9:248:14 | either | +| main.rs:254:23:254:25 | a11 | main.rs:252:14:252:51 | a11 | +| main.rs:256:15:256:15 | e | main.rs:251:13:251:13 | e | +| main.rs:257:28:257:30 | a12 | main.rs:255:33:255:35 | a12 | +| main.rs:273:11:273:12 | fv | main.rs:272:9:272:10 | fv | +| main.rs:275:26:275:28 | a13 | main.rs:274:9:274:109 | a13 | +| main.rs:283:7:283:7 | x | main.rs:281:9:281:9 | x | +| main.rs:285:5:285:5 | x | main.rs:282:17:282:17 | x | +| main.rs:287:19:287:19 | x | main.rs:282:17:282:17 | x | +| main.rs:290:13:290:13 | x | main.rs:281:9:281:9 | x | +| main.rs:291:19:291:19 | x | main.rs:289:13:289:13 | x | +| main.rs:299:7:299:7 | x | main.rs:297:9:297:9 | x | +| main.rs:302:12:302:12 | x | main.rs:298:17:298:17 | x | +| main.rs:304:5:304:5 | x | main.rs:301:14:301:14 | x | +| main.rs:306:19:306:19 | x | main.rs:301:14:301:14 | x | +| main.rs:309:13:309:13 | x | main.rs:297:9:297:9 | x | +| main.rs:310:19:310:19 | x | main.rs:308:13:308:13 | x | +| main.rs:318:7:318:7 | x | main.rs:316:9:316:9 | x | +| main.rs:321:12:321:12 | x | main.rs:317:20:317:20 | x | +| main.rs:323:5:323:5 | x | main.rs:320:14:320:14 | x | +| main.rs:325:19:325:19 | x | main.rs:320:14:320:14 | x | +| main.rs:329:15:329:15 | x | main.rs:316:9:316:9 | x | +| main.rs:335:11:335:11 | x | main.rs:334:9:334:9 | x | +| main.rs:338:18:338:18 | x | main.rs:336:14:336:14 | x | +| main.rs:339:19:339:19 | x | main.rs:337:20:337:20 | x | +| main.rs:343:15:343:15 | x | main.rs:334:9:334:9 | x | +| main.rs:350:7:350:7 | x | main.rs:348:9:348:9 | x | +| main.rs:352:19:352:19 | x | main.rs:349:16:349:16 | x | +| main.rs:355:7:355:7 | x | main.rs:348:9:348:9 | x | +| main.rs:357:19:357:19 | x | main.rs:354:20:354:20 | x | +| main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x | +| main.rs:370:15:370:16 | a8 | main.rs:364:5:364:6 | a8 | +| main.rs:371:15:371:16 | b3 | main.rs:366:9:366:10 | b3 | +| main.rs:372:15:372:16 | c1 | main.rs:367:9:367:10 | c1 | +| main.rs:377:15:377:16 | a9 | main.rs:375:20:375:55 | a9 | +| main.rs:386:15:386:17 | a10 | main.rs:382:13:382:15 | a10 | +| main.rs:387:15:387:16 | b4 | main.rs:383:13:383:14 | b4 | +| main.rs:388:15:388:16 | c2 | main.rs:384:13:384:14 | c2 | +| main.rs:395:9:395:11 | a10 | main.rs:382:13:382:15 | a10 | +| main.rs:396:9:396:10 | b4 | main.rs:383:13:383:14 | b4 | +| main.rs:397:9:397:10 | c2 | main.rs:384:13:384:14 | c2 | +| main.rs:399:15:399:17 | a10 | main.rs:382:13:382:15 | a10 | +| main.rs:400:15:400:16 | b4 | main.rs:383:13:383:14 | b4 | +| main.rs:401:15:401:16 | c2 | main.rs:384:13:384:14 | c2 | +| main.rs:408:23:408:25 | a10 | main.rs:405:13:405:15 | a10 | +| main.rs:409:23:409:24 | b4 | main.rs:406:13:406:14 | b4 | +| main.rs:413:15:413:17 | a10 | main.rs:382:13:382:15 | a10 | +| main.rs:414:15:414:16 | b4 | main.rs:383:13:383:14 | b4 | +| main.rs:420:9:420:9 | x | main.rs:419:10:419:10 | x | +| main.rs:422:9:422:23 | example_closure | main.rs:418:9:418:23 | example_closure | +| main.rs:423:15:423:16 | n1 | main.rs:421:9:421:10 | n1 | +| main.rs:428:9:428:9 | x | main.rs:427:6:427:6 | x | +| main.rs:430:9:430:26 | immutable_variable | main.rs:426:9:426:26 | immutable_variable | +| main.rs:431:15:431:16 | n2 | main.rs:429:9:429:10 | n2 | +| main.rs:438:9:438:9 | x | main.rs:437:10:437:10 | x | +| main.rs:439:15:439:15 | f | main.rs:436:9:436:9 | f | +| main.rs:443:9:443:9 | x | main.rs:441:10:441:10 | x | +| main.rs:446:15:446:15 | f | main.rs:436:9:436:9 | f | +| main.rs:452:17:452:17 | x | main.rs:450:14:450:14 | x | +| main.rs:461:13:461:13 | x | main.rs:460:14:460:14 | x | +| main.rs:462:19:462:19 | f | main.rs:459:13:459:13 | f | +| main.rs:470:12:470:12 | v | main.rs:467:9:467:9 | v | +| main.rs:471:19:471:22 | text | main.rs:469:9:469:12 | text | +| main.rs:478:15:478:15 | a | main.rs:476:13:476:13 | a | +| main.rs:480:15:480:15 | a | main.rs:476:13:476:13 | a | +| main.rs:487:6:487:10 | ref_i | main.rs:485:9:485:13 | ref_i | +| main.rs:488:15:488:15 | i | main.rs:484:13:484:13 | i | +| main.rs:492:6:492:6 | x | main.rs:491:17:491:17 | x | +| main.rs:493:10:493:10 | x | main.rs:491:17:491:17 | x | +| main.rs:494:10:494:10 | x | main.rs:491:17:491:17 | x | +| main.rs:495:12:495:12 | x | main.rs:491:17:491:17 | x | +| main.rs:499:6:499:6 | x | main.rs:498:22:498:22 | x | +| main.rs:500:10:500:10 | x | main.rs:498:22:498:22 | x | +| main.rs:501:10:501:10 | x | main.rs:498:22:498:22 | x | +| main.rs:502:6:502:6 | y | main.rs:498:38:498:38 | y | +| main.rs:503:9:503:9 | x | main.rs:498:22:498:22 | x | +| main.rs:510:6:510:6 | y | main.rs:508:9:508:9 | y | +| main.rs:513:15:513:15 | x | main.rs:507:13:507:13 | x | +| main.rs:520:9:520:9 | w | main.rs:516:9:516:9 | w | +| main.rs:522:7:522:7 | w | main.rs:516:9:516:9 | w | +| main.rs:525:15:525:15 | z | main.rs:515:13:515:13 | z | +| main.rs:532:6:532:6 | y | main.rs:530:9:530:9 | y | +| main.rs:533:15:533:15 | x | main.rs:529:13:529:13 | x | +| main.rs:541:19:541:19 | x | main.rs:537:9:537:9 | x | +| main.rs:543:5:543:7 | cap | main.rs:540:9:540:11 | cap | +| main.rs:544:15:544:15 | x | main.rs:537:9:537:9 | x | +| main.rs:552:19:552:19 | x | main.rs:548:13:548:13 | x | +| main.rs:554:5:554:12 | closure1 | main.rs:551:9:551:16 | closure1 | +| main.rs:555:15:555:15 | x | main.rs:548:13:548:13 | x | +| main.rs:563:5:563:12 | closure2 | main.rs:560:13:560:20 | closure2 | +| main.rs:564:15:564:15 | y | main.rs:557:13:557:13 | y | +| main.rs:570:9:570:9 | z | main.rs:566:13:566:13 | z | +| main.rs:572:5:572:12 | closure3 | main.rs:569:13:569:20 | closure3 | +| main.rs:573:15:573:15 | z | main.rs:566:13:566:13 | z | +| main.rs:582:5:582:9 | block | main.rs:578:9:578:13 | block | +| main.rs:583:15:583:15 | i | main.rs:577:13:577:13 | i | +| main.rs:588:15:588:15 | x | main.rs:587:13:587:13 | x | +| main.rs:589:15:589:15 | x | main.rs:587:13:587:13 | x | +| main.rs:591:16:591:16 | b | main.rs:586:8:586:8 | b | +| main.rs:594:19:594:19 | x | main.rs:587:13:587:13 | x | +| main.rs:595:19:595:19 | x | main.rs:587:13:587:13 | x | +| main.rs:598:19:598:19 | x | main.rs:587:13:587:13 | x | +| main.rs:599:19:599:19 | x | main.rs:587:13:587:13 | x | +| main.rs:601:15:601:15 | x | main.rs:587:13:587:13 | x | +| main.rs:607:16:607:17 | b1 | main.rs:604:13:604:14 | b1 | +| main.rs:609:19:609:19 | x | main.rs:605:9:605:9 | x | +| main.rs:611:19:611:19 | x | main.rs:605:9:605:9 | x | +| main.rs:615:16:615:17 | b2 | main.rs:604:23:604:24 | b2 | +| main.rs:617:19:617:19 | x | main.rs:605:9:605:9 | x | +| main.rs:619:19:619:19 | x | main.rs:605:9:605:9 | x | +| main.rs:629:16:629:19 | self | main.rs:628:20:628:23 | self | +| main.rs:633:9:633:12 | self | main.rs:632:11:632:14 | self | +| main.rs:639:13:639:16 | self | main.rs:636:23:636:26 | self | +| main.rs:639:25:639:25 | n | main.rs:637:22:637:22 | n | +| main.rs:641:9:641:9 | f | main.rs:637:17:637:17 | f | +| main.rs:642:9:642:9 | f | main.rs:637:17:637:17 | f | +| main.rs:648:15:648:15 | a | main.rs:647:13:647:13 | a | +| main.rs:649:5:649:5 | a | main.rs:647:13:647:13 | a | +| main.rs:650:15:650:15 | a | main.rs:647:13:647:13 | a | +| main.rs:652:15:652:15 | a | main.rs:647:13:647:13 | a | +| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | +| main.rs:658:5:658:5 | a | main.rs:656:13:656:13 | a | +| main.rs:659:15:659:15 | a | main.rs:656:13:656:13 | a | +| main.rs:661:15:661:15 | a | main.rs:656:13:656:13 | a | +| main.rs:667:15:667:15 | x | main.rs:665:9:665:9 | x | +| main.rs:679:10:679:13 | self | main.rs:678:17:678:20 | self | +| main.rs:685:5:685:5 | a | main.rs:684:13:684:13 | a | +| main.rs:688:15:688:15 | a | main.rs:684:13:684:13 | a | +| main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | +| main.rs:708:15:708:28 | var_from_macro | main.rs:706:9:706:22 | var_from_macro | +| main.rs:714:30:714:41 | var_in_macro | main.rs:714:15:714:28 | var_in_macro | +| main.rs:715:15:715:26 | var_in_macro | main.rs:709:9:709:20 | var_in_macro | +| main.rs:721:15:721:15 | x | main.rs:719:9:719:9 | x | +| main.rs:728:20:728:20 | b | main.rs:726:20:726:20 | b | +| main.rs:732:5:732:7 | cap | main.rs:726:13:726:15 | cap | +| main.rs:733:15:733:15 | x | main.rs:725:13:725:13 | x | variableInitializer | main.rs:20:9:20:10 | x1 | main.rs:20:14:20:16 | "a" | | main.rs:25:13:25:14 | x2 | main.rs:25:18:25:18 | 4 | -| main.rs:32:13:32:13 | x | main.rs:32:17:32:17 | 1 | -| main.rs:39:9:39:10 | x3 | main.rs:39:14:39:14 | 1 | -| main.rs:41:9:41:10 | x3 | main.rs:42:9:42:14 | ... + ... | -| main.rs:47:9:47:10 | x4 | main.rs:47:14:47:16 | "a" | -| main.rs:50:13:50:14 | x4 | main.rs:50:18:50:20 | "b" | -| main.rs:79:9:79:10 | p1 | main.rs:79:14:79:37 | Point {...} | -| main.rs:89:9:89:10 | s1 | main.rs:89:14:89:41 | Some(...) | -| main.rs:98:9:98:9 | x | main.rs:98:13:98:22 | Some(...) | -| main.rs:102:13:102:13 | x | main.rs:103:13:103:13 | x | -| main.rs:111:9:111:10 | s1 | main.rs:111:14:111:41 | Some(...) | -| main.rs:120:9:120:10 | x6 | main.rs:120:14:120:20 | Some(...) | -| main.rs:121:9:121:10 | y1 | main.rs:121:14:121:15 | 10 | -| main.rs:137:9:137:15 | numbers | main.rs:137:19:137:35 | TupleExpr | -| main.rs:168:9:168:10 | p2 | main.rs:168:14:168:37 | Point {...} | -| main.rs:182:9:182:11 | msg | main.rs:182:15:182:38 | ...::Hello {...} | -| main.rs:206:9:206:14 | either | main.rs:206:18:206:33 | ...::Left(...) | -| main.rs:220:9:220:10 | tv | main.rs:220:14:220:36 | ...::Second(...) | -| main.rs:236:9:236:14 | either | main.rs:236:18:236:33 | ...::Left(...) | -| main.rs:246:9:246:14 | either | main.rs:246:18:246:33 | ...::Left(...) | -| main.rs:270:9:270:10 | fv | main.rs:270:14:270:35 | ...::Second(...) | -| main.rs:279:9:279:9 | x | main.rs:279:12:279:19 | Some(...) | -| main.rs:287:13:287:13 | x | main.rs:288:13:288:13 | x | -| main.rs:295:9:295:9 | x | main.rs:295:13:295:20 | Some(...) | -| main.rs:306:13:306:13 | x | main.rs:307:13:307:13 | x | -| main.rs:314:9:314:9 | x | main.rs:314:13:314:20 | Some(...) | -| main.rs:332:9:332:9 | x | main.rs:332:13:332:20 | Some(...) | -| main.rs:335:20:335:20 | x | main.rs:336:18:336:18 | x | -| main.rs:346:9:346:9 | x | main.rs:346:13:346:18 | Ok(...) | -| main.rs:416:9:416:23 | example_closure | main.rs:417:9:418:9 | \|...\| x | -| main.rs:419:9:419:10 | n1 | main.rs:420:9:420:26 | example_closure(...) | -| main.rs:424:9:424:26 | immutable_variable | main.rs:425:5:426:9 | \|...\| x | -| main.rs:427:9:427:10 | n2 | main.rs:428:9:428:29 | immutable_variable(...) | -| main.rs:434:9:434:9 | f | main.rs:435:9:436:9 | \|...\| x | -| main.rs:457:13:457:13 | f | main.rs:458:13:459:13 | \|...\| x | -| main.rs:465:9:465:9 | v | main.rs:465:13:465:41 | &... | -| main.rs:474:13:474:13 | a | main.rs:474:17:474:17 | 0 | -| main.rs:482:13:482:13 | i | main.rs:482:17:482:17 | 1 | -| main.rs:483:9:483:13 | ref_i | main.rs:484:9:484:14 | &mut i | -| main.rs:505:13:505:13 | x | main.rs:505:17:505:17 | 2 | -| main.rs:506:9:506:9 | y | main.rs:507:9:507:28 | mutate_param(...) | -| main.rs:513:13:513:13 | z | main.rs:513:17:513:17 | 4 | -| main.rs:514:9:514:9 | w | main.rs:515:9:515:19 | &mut ... | -| main.rs:527:13:527:13 | x | main.rs:527:17:527:17 | 1 | -| main.rs:528:9:528:9 | y | main.rs:529:9:529:14 | &mut x | -| main.rs:535:9:535:9 | x | main.rs:535:13:535:15 | 100 | -| main.rs:538:9:538:11 | cap | main.rs:538:15:540:5 | \|...\| ... | -| main.rs:546:13:546:13 | x | main.rs:546:17:546:17 | 1 | -| main.rs:549:9:549:16 | closure1 | main.rs:549:20:551:5 | \|...\| ... | -| main.rs:555:13:555:13 | y | main.rs:555:17:555:17 | 2 | -| main.rs:558:13:558:20 | closure2 | main.rs:558:24:560:5 | \|...\| ... | -| main.rs:564:13:564:13 | z | main.rs:564:17:564:17 | 2 | -| main.rs:567:13:567:20 | closure3 | main.rs:567:24:569:5 | \|...\| ... | -| main.rs:575:13:575:13 | i | main.rs:575:22:575:22 | 0 | -| main.rs:576:9:576:13 | block | main.rs:576:17:578:5 | { ... } | -| main.rs:585:13:585:13 | x | main.rs:585:17:585:17 | 1 | -| main.rs:603:9:603:9 | x | main.rs:603:13:603:13 | 1 | -| main.rs:635:17:635:17 | f | main.rs:635:21:638:9 | \|...\| ... | -| main.rs:645:13:645:13 | a | main.rs:645:17:645:35 | MyStruct {...} | -| main.rs:654:13:654:13 | a | main.rs:654:17:654:25 | [...] | -| main.rs:663:9:663:9 | x | main.rs:663:13:663:14 | 16 | -| main.rs:667:9:667:9 | z | main.rs:667:13:667:14 | 17 | -| main.rs:682:13:682:13 | a | main.rs:682:17:682:35 | MyStruct {...} | -| main.rs:704:9:704:22 | var_from_macro | main.rs:705:9:705:25 | MacroExpr | -| main.rs:705:9:705:21 | var_in_macro | main.rs:705:23:705:24 | 37 | -| main.rs:707:9:707:20 | var_in_macro | main.rs:707:24:707:25 | 33 | -| main.rs:712:15:712:28 | var_in_macro | main.rs:712:15:712:28 | 0 | -| main.rs:723:13:723:13 | x | main.rs:723:17:723:19 | 100 | -| main.rs:724:13:724:15 | cap | main.rs:724:19:729:5 | \|...\| ... | +| main.rs:34:13:34:13 | x | main.rs:34:17:34:17 | 1 | +| main.rs:41:9:41:10 | x3 | main.rs:41:14:41:14 | 1 | +| main.rs:43:9:43:10 | x3 | main.rs:44:9:44:14 | ... + ... | +| main.rs:49:9:49:10 | x4 | main.rs:49:14:49:16 | "a" | +| main.rs:52:13:52:14 | x4 | main.rs:52:18:52:20 | "b" | +| main.rs:81:9:81:10 | p1 | main.rs:81:14:81:37 | Point {...} | +| main.rs:91:9:91:10 | s1 | main.rs:91:14:91:41 | Some(...) | +| main.rs:100:9:100:9 | x | main.rs:100:13:100:22 | Some(...) | +| main.rs:104:13:104:13 | x | main.rs:105:13:105:13 | x | +| main.rs:113:9:113:10 | s1 | main.rs:113:14:113:41 | Some(...) | +| main.rs:122:9:122:10 | x6 | main.rs:122:14:122:20 | Some(...) | +| main.rs:123:9:123:10 | y1 | main.rs:123:14:123:15 | 10 | +| main.rs:139:9:139:15 | numbers | main.rs:139:19:139:35 | TupleExpr | +| main.rs:170:9:170:10 | p2 | main.rs:170:14:170:37 | Point {...} | +| main.rs:184:9:184:11 | msg | main.rs:184:15:184:38 | ...::Hello {...} | +| main.rs:208:9:208:14 | either | main.rs:208:18:208:33 | ...::Left(...) | +| main.rs:222:9:222:10 | tv | main.rs:222:14:222:36 | ...::Second(...) | +| main.rs:238:9:238:14 | either | main.rs:238:18:238:33 | ...::Left(...) | +| main.rs:248:9:248:14 | either | main.rs:248:18:248:33 | ...::Left(...) | +| main.rs:272:9:272:10 | fv | main.rs:272:14:272:35 | ...::Second(...) | +| main.rs:281:9:281:9 | x | main.rs:281:12:281:19 | Some(...) | +| main.rs:289:13:289:13 | x | main.rs:290:13:290:13 | x | +| main.rs:297:9:297:9 | x | main.rs:297:13:297:20 | Some(...) | +| main.rs:308:13:308:13 | x | main.rs:309:13:309:13 | x | +| main.rs:316:9:316:9 | x | main.rs:316:13:316:20 | Some(...) | +| main.rs:334:9:334:9 | x | main.rs:334:13:334:20 | Some(...) | +| main.rs:337:20:337:20 | x | main.rs:338:18:338:18 | x | +| main.rs:348:9:348:9 | x | main.rs:348:13:348:18 | Ok(...) | +| main.rs:418:9:418:23 | example_closure | main.rs:419:9:420:9 | \|...\| x | +| main.rs:421:9:421:10 | n1 | main.rs:422:9:422:26 | example_closure(...) | +| main.rs:426:9:426:26 | immutable_variable | main.rs:427:5:428:9 | \|...\| x | +| main.rs:429:9:429:10 | n2 | main.rs:430:9:430:29 | immutable_variable(...) | +| main.rs:436:9:436:9 | f | main.rs:437:9:438:9 | \|...\| x | +| main.rs:459:13:459:13 | f | main.rs:460:13:461:13 | \|...\| x | +| main.rs:467:9:467:9 | v | main.rs:467:13:467:41 | &... | +| main.rs:476:13:476:13 | a | main.rs:476:17:476:17 | 0 | +| main.rs:484:13:484:13 | i | main.rs:484:17:484:17 | 1 | +| main.rs:485:9:485:13 | ref_i | main.rs:486:9:486:14 | &mut i | +| main.rs:507:13:507:13 | x | main.rs:507:17:507:17 | 2 | +| main.rs:508:9:508:9 | y | main.rs:509:9:509:28 | mutate_param(...) | +| main.rs:515:13:515:13 | z | main.rs:515:17:515:17 | 4 | +| main.rs:516:9:516:9 | w | main.rs:517:9:517:19 | &mut ... | +| main.rs:529:13:529:13 | x | main.rs:529:17:529:17 | 1 | +| main.rs:530:9:530:9 | y | main.rs:531:9:531:14 | &mut x | +| main.rs:537:9:537:9 | x | main.rs:537:13:537:15 | 100 | +| main.rs:540:9:540:11 | cap | main.rs:540:15:542:5 | \|...\| ... | +| main.rs:548:13:548:13 | x | main.rs:548:17:548:17 | 1 | +| main.rs:551:9:551:16 | closure1 | main.rs:551:20:553:5 | \|...\| ... | +| main.rs:557:13:557:13 | y | main.rs:557:17:557:17 | 2 | +| main.rs:560:13:560:20 | closure2 | main.rs:560:24:562:5 | \|...\| ... | +| main.rs:566:13:566:13 | z | main.rs:566:17:566:17 | 2 | +| main.rs:569:13:569:20 | closure3 | main.rs:569:24:571:5 | \|...\| ... | +| main.rs:577:13:577:13 | i | main.rs:577:22:577:22 | 0 | +| main.rs:578:9:578:13 | block | main.rs:578:17:580:5 | { ... } | +| main.rs:587:13:587:13 | x | main.rs:587:17:587:17 | 1 | +| main.rs:605:9:605:9 | x | main.rs:605:13:605:13 | 1 | +| main.rs:637:17:637:17 | f | main.rs:637:21:640:9 | \|...\| ... | +| main.rs:647:13:647:13 | a | main.rs:647:17:647:35 | MyStruct {...} | +| main.rs:656:13:656:13 | a | main.rs:656:17:656:25 | [...] | +| main.rs:665:9:665:9 | x | main.rs:665:13:665:14 | 16 | +| main.rs:669:9:669:9 | z | main.rs:669:13:669:14 | 17 | +| main.rs:684:13:684:13 | a | main.rs:684:17:684:35 | MyStruct {...} | +| main.rs:706:9:706:22 | var_from_macro | main.rs:707:9:707:25 | MacroExpr | +| main.rs:707:9:707:21 | var_in_macro | main.rs:707:23:707:24 | 37 | +| main.rs:709:9:709:20 | var_in_macro | main.rs:709:24:709:25 | 33 | +| main.rs:714:15:714:28 | var_in_macro | main.rs:714:15:714:28 | 0 | +| main.rs:725:13:725:13 | x | main.rs:725:17:725:19 | 100 | +| main.rs:726:13:726:15 | cap | main.rs:726:19:731:5 | \|...\| ... | capturedVariable -| main.rs:535:9:535:9 | x | -| main.rs:546:13:546:13 | x | -| main.rs:555:13:555:13 | y | -| main.rs:564:13:564:13 | z | -| main.rs:575:13:575:13 | i | -| main.rs:634:23:634:26 | self | -| main.rs:723:13:723:13 | x | +| main.rs:537:9:537:9 | x | +| main.rs:548:13:548:13 | x | +| main.rs:557:13:557:13 | y | +| main.rs:566:13:566:13 | z | +| main.rs:577:13:577:13 | i | +| main.rs:636:23:636:26 | self | +| main.rs:725:13:725:13 | x | capturedAccess -| main.rs:539:19:539:19 | x | -| main.rs:550:19:550:19 | x | -| main.rs:559:9:559:9 | y | -| main.rs:568:9:568:9 | z | -| main.rs:577:9:577:9 | i | -| main.rs:637:13:637:16 | self | -| main.rs:727:13:727:13 | x | +| main.rs:541:19:541:19 | x | +| main.rs:552:19:552:19 | x | +| main.rs:561:9:561:9 | y | +| main.rs:570:9:570:9 | z | +| main.rs:579:9:579:9 | i | +| main.rs:639:13:639:16 | self | +| main.rs:729:13:729:13 | x | nestedFunctionAccess -| main.rs:447:19:447:19 | f | main.rs:448:9:451:9 | fn f | -| main.rs:454:23:454:23 | f | main.rs:448:9:451:9 | fn f | +| main.rs:449:19:449:19 | f | main.rs:450:9:453:9 | fn f | +| main.rs:456:23:456:23 | f | main.rs:450:9:453:9 | fn f | diff --git a/rust/ql/test/query-tests/diagnostics/Cargo.lock b/rust/ql/test/query-tests/diagnostics/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/query-tests/diagnostics/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected index 8e2a7d13ddad..a1f9b448ac75 100644 --- a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected +++ b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected @@ -123,7 +123,7 @@ models | 6 | Sink: std::fs::read_to_string; Argument[0]; path-injection | | 7 | Source: std::env::args; ReturnValue.Element; commandargs | | 8 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 9 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; value | +| 9 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint | | 10 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | | 11 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | | 12 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | 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 000000000000..ad4b5cebd226 --- /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 000000000000..952bd741d1c7 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected @@ -0,0 +1,76 @@ +#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 | +| 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: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 | | +| 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: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 | +| 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: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 | +| 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: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/UseOfHttp.qlref b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.qlref new file mode 100644 index 000000000000..90b533300191 --- /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 000000000000..0a3539923da6 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-319/main.rs @@ -0,0 +1,83 @@ +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://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 + 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"; // $ Source + let endpoint = "/api/users"; + let full_url = format!("{}{}", base_url, endpoint); + 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://"; // $ Source + let host = "api.example.com"; + let insecure_url = format!("{}{}", protocol, host); + 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); + 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://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(); + + // 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] + +} + +// 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 + + // 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 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()); + } +} 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 000000000000..aa57719603d6 --- /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 diff --git a/rust/ql/test/query-tests/security/CWE-327/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-327/CONSISTENCY/PathResolutionConsistency.expected index 50dd9e9f0ed2..b9925a323cc8 100644 --- a/rust/ql/test/query-tests/security/CWE-327/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-327/CONSISTENCY/PathResolutionConsistency.expected @@ -1,7 +1,2 @@ multipleCallTargets -| test_cipher.rs:20:27:20:48 | ...::new(...) | -| test_cipher.rs:26:27:26:48 | ...::new(...) | -| test_cipher.rs:29:27:29:48 | ...::new(...) | -| test_cipher.rs:36:30:36:59 | ...::new(...) | -| test_cipher.rs:39:30:39:63 | ...::new(...) | | test_cipher.rs:114:23:114:50 | ...::new(...) | 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 3ac74a3cb13b..ed95a8d448ad 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(...) | diff --git a/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..16bbea0aba3b --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,3 @@ +multipleCallTargets +| test.rs:117:9:117:20 | ptr.is_null() | +| test.rs:117:9:117:21 | ptr.is_null() | diff --git a/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..1abeb1aeb874 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,7 @@ +multipleCallTargets +| main.rs:242:44:242:78 | ... .cast() | +| main.rs:245:44:245:78 | ... .cast() | +| main.rs:248:44:248:78 | ... .cast() | +| main.rs:251:14:251:48 | ... .cast() | +| main.rs:254:14:254:48 | ... .cast() | +| main.rs:257:14:257:48 | ... .cast() | diff --git a/rust/ql/test/query-tests/security/CWE-798/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-798/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index b0ca63000651..000000000000 --- a/rust/ql/test/query-tests/security/CWE-798/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,10 +0,0 @@ -multipleCallTargets -| test_cipher.rs:15:30:15:77 | ...::new(...) | -| test_cipher.rs:19:30:19:80 | ...::new(...) | -| test_cipher.rs:22:30:22:98 | ...::new(...) | -| test_cipher.rs:26:30:26:101 | ...::new(...) | -| test_cipher.rs:30:30:30:102 | ...::new(...) | -| test_cipher.rs:38:30:38:81 | ...::new(...) | -| test_cipher.rs:42:30:42:80 | ...::new(...) | -| test_cipher.rs:47:30:47:85 | ...::new(...) | -| test_cipher.rs:51:31:51:83 | ...::new(...) | diff --git a/rust/ql/test/query-tests/security/CWE-798/Cargo.lock b/rust/ql/test/query-tests/security/CWE-798/Cargo.lock new file mode 100644 index 000000000000..6d0fce1423e5 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-798/Cargo.lock @@ -0,0 +1,726 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + +[[package]] +name = "aes-gcm-siv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae0784134ba9375416d469ec31e7c5f9fa94405049cf08c5ce5b4698be673e0d" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "polyval", + "subtle", + "zeroize", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "biscotti" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddb6f28a3d15d18cace7a8010282a4d9cee1452dcd33f5861c173b4a31095b79" +dependencies = [ + "aes-gcm-siv", + "anyhow", + "base64", + "hkdf", + "hmac", + "jiff", + "percent-encoding", + "rand 0.9.2", + "serde", + "sha2", + "subtle", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cfb-mode" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "738b8d467867f80a71351933f70461f5b56f24d5c93e0cf216e59229c968d330" +dependencies = [ + "cipher", +] + +[[package]] +name = "cfg-if" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "aes-gcm", + "base64", + "hmac", + "rand 0.8.5", + "sha2", + "subtle", + "time", + "version_check", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "deranged" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[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.7+wasi-0.2.4", +] + +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jiff" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +dependencies = [ + "jiff-static", + "jiff-tzdb-platform", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", + "windows-sys", +] + +[[package]] +name = "jiff-static" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1283705eb0a21404d2bfd6eef2a7593d240bc42a0bdb39db0ad6fa2ec026524" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +dependencies = [ + "jiff-tzdb", +] + +[[package]] +name = "libc" +version = "0.2.176" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[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 = "rabbit" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "931a21d28d73d260f6743712e0f04292413fc6d004bb278bb9022302221a05d5" +dependencies = [ + "cipher", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", +] + +[[package]] +name = "serde" +version = "1.0.226" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dca6411025b24b60bfa7ec1fe1f8e710ac09782dca409ee8237ba74b51295fd" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.226" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba2ba63999edb9dac981fb34b3e5c0d111a69b0924e253ed29d83f7c99e966a4" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.226" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8db53ae22f34573731bafa1db20f04027b2d25e02d8205921b569171699cdb33" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[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 = "test" +version = "0.0.1" +dependencies = [ + "aes", + "aes-gcm", + "base64", + "biscotti", + "cfb-mode", + "cipher", + "cookie", + "getrandom 0.2.16", + "getrandom 0.3.3", + "rabbit", +] + +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unicode-ident" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[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.7+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" +dependencies = [ + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[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-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.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/rust/ql/test/query-tests/security/CWE-798/HardcodedCryptographicValue.expected b/rust/ql/test/query-tests/security/CWE-798/HardcodedCryptographicValue.expected index d16be723b8f2..e4657a426ea5 100644 --- a/rust/ql/test/query-tests/security/CWE-798/HardcodedCryptographicValue.expected +++ b/rust/ql/test/query-tests/security/CWE-798/HardcodedCryptographicValue.expected @@ -1,127 +1,100 @@ #select -| test_cipher.rs:18:30:18:32 | 0u8 | test_cipher.rs:18:30:18:32 | 0u8 | test_cipher.rs:19:30:19:47 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:19:30:19:47 | ...::new | a key | -| test_cipher.rs:18:30:18:32 | 0u8 | test_cipher.rs:18:30:18:32 | 0u8 | test_cipher.rs:19:30:19:47 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:19:30:19:47 | ...::new | a key | -| test_cipher.rs:25:30:25:32 | 0u8 | test_cipher.rs:25:30:25:32 | 0u8 | test_cipher.rs:26:30:26:40 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:26:30:26:40 | ...::new | a key | -| test_cipher.rs:25:30:25:32 | 0u8 | test_cipher.rs:25:30:25:32 | 0u8 | test_cipher.rs:26:30:26:40 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:26:30:26:40 | ...::new | a key | -| test_cipher.rs:29:30:29:32 | 0u8 | test_cipher.rs:29:30:29:32 | 0u8 | test_cipher.rs:30:30:30:40 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:30:30:30:40 | ...::new | an initialization vector | -| test_cipher.rs:29:30:29:32 | 0u8 | test_cipher.rs:29:30:29:32 | 0u8 | test_cipher.rs:30:30:30:40 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:30:30:30:40 | ...::new | an initialization vector | +| test_cipher.rs:18:29:18:36 | [0u8; 16] | test_cipher.rs:18:29:18:36 | [0u8; 16] | test_cipher.rs:19:30:19:47 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:19:30:19:47 | ...::new | a key | +| test_cipher.rs:25:29:25:36 | [0u8; 16] | test_cipher.rs:25:29:25:36 | [0u8; 16] | test_cipher.rs:26:30:26:40 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:26:30:26:40 | ...::new | a key | +| test_cipher.rs:29:29:29:36 | [0u8; 16] | test_cipher.rs:29:29:29:36 | [0u8; 16] | test_cipher.rs:30:30:30:40 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:30:30:30:40 | ...::new | an initialization vector | | test_cipher.rs:37:27:37:74 | [...] | test_cipher.rs:37:27:37:74 | [...] | test_cipher.rs:38:30:38:47 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:38:30:38:47 | ...::new | a key | -| test_cipher.rs:37:27:37:74 | [...] | test_cipher.rs:37:27:37:74 | [...] | test_cipher.rs:38:30:38:47 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:38:30:38:47 | ...::new | a key | -| test_cipher.rs:41:29:41:76 | [...] | test_cipher.rs:41:29:41:76 | [...] | test_cipher.rs:42:30:42:47 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:42:30:42:47 | ...::new | a key | | test_cipher.rs:41:29:41:76 | [...] | test_cipher.rs:41:29:41:76 | [...] | test_cipher.rs:42:30:42:47 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:42:30:42:47 | ...::new | a key | | test_cipher.rs:50:37:50:52 | ...::zeroed | test_cipher.rs:50:37:50:52 | ...::zeroed | test_cipher.rs:51:31:51:48 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:51:31:51:48 | ...::new | a key | -| test_cipher.rs:50:37:50:52 | ...::zeroed | test_cipher.rs:50:37:50:52 | ...::zeroed | test_cipher.rs:51:31:51:48 | ...::new | This hard-coded value is used as $@. | test_cipher.rs:51:31:51:48 | ...::new | a key | -| test_cipher.rs:73:20:73:22 | 0u8 | test_cipher.rs:73:20:73:22 | 0u8 | test_cipher.rs:74:23:74:44 | ...::new_from_slice | This hard-coded value is used as $@. | test_cipher.rs:74:23:74:44 | ...::new_from_slice | a key | -| test_cookie.rs:17:29:17:29 | 0 | test_cookie.rs:17:29:17:29 | 0 | test_cookie.rs:18:16:18:24 | ...::from | This hard-coded value is used as $@. | test_cookie.rs:18:16:18:24 | ...::from | a key | -| test_cookie.rs:21:29:21:29 | 0 | test_cookie.rs:21:29:21:29 | 0 | test_cookie.rs:22:16:22:24 | ...::from | This hard-coded value is used as $@. | test_cookie.rs:22:16:22:24 | ...::from | a key | -| test_cookie.rs:38:29:38:31 | 0u8 | test_cookie.rs:38:29:38:31 | 0u8 | test_cookie.rs:42:14:42:32 | ...::from | This hard-coded value is used as $@. | test_cookie.rs:42:14:42:32 | ...::from | a key | +| test_cipher.rs:73:19:73:26 | [0u8; 32] | test_cipher.rs:73:19:73:26 | [0u8; 32] | test_cipher.rs:74:23:74:44 | ...::new_from_slice | This hard-coded value is used as $@. | test_cipher.rs:74:23:74:44 | ...::new_from_slice | a key | +| test_cookie.rs:17:28:17:34 | [0; 64] | test_cookie.rs:17:28:17:34 | [0; 64] | test_cookie.rs:18:16:18:24 | ...::from | This hard-coded value is used as $@. | test_cookie.rs:18:16:18:24 | ...::from | a key | +| test_cookie.rs:21:28:21:34 | [0; 64] | test_cookie.rs:21:28:21:34 | [0; 64] | test_cookie.rs:22:16:22:24 | ...::from | This hard-coded value is used as $@. | test_cookie.rs:22:16:22:24 | ...::from | a key | +| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:42:14:42:32 | ...::from | This hard-coded value is used as $@. | test_cookie.rs:42:14:42:32 | ...::from | a key | | test_cookie.rs:49:23:49:25 | 0u8 | test_cookie.rs:49:23:49:25 | 0u8 | test_cookie.rs:53:14:53:32 | ...::from | This hard-coded value is used as $@. | test_cookie.rs:53:14:53:32 | ...::from | a key | edges -| test_cipher.rs:18:9:18:14 | const1 [&ref, element] | test_cipher.rs:19:73:19:78 | const1 [&ref, element] | provenance | | -| test_cipher.rs:18:28:18:36 | &... [&ref, element] | test_cipher.rs:18:9:18:14 | const1 [&ref, element] | provenance | | -| test_cipher.rs:18:29:18:36 | [0u8; 16] [element] | test_cipher.rs:18:28:18:36 | &... [&ref, element] | provenance | | -| test_cipher.rs:18:30:18:32 | 0u8 | test_cipher.rs:18:29:18:36 | [0u8; 16] [element] | provenance | | -| test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref, element] | test_cipher.rs:19:30:19:47 | ...::new | provenance | MaD:3 Sink:MaD:3 Sink:MaD:3 | -| test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref, element] | test_cipher.rs:19:30:19:47 | ...::new | provenance | MaD:5 Sink:MaD:5 Sink:MaD:5 | -| test_cipher.rs:19:73:19:78 | const1 [&ref, element] | test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref, element] | provenance | MaD:10 | -| test_cipher.rs:25:9:25:14 | const4 [&ref, element] | test_cipher.rs:26:66:26:71 | const4 [&ref, element] | provenance | | -| test_cipher.rs:25:28:25:36 | &... [&ref, element] | test_cipher.rs:25:9:25:14 | const4 [&ref, element] | provenance | | -| test_cipher.rs:25:29:25:36 | [0u8; 16] [element] | test_cipher.rs:25:28:25:36 | &... [&ref, element] | provenance | | -| test_cipher.rs:25:30:25:32 | 0u8 | test_cipher.rs:25:29:25:36 | [0u8; 16] [element] | provenance | | -| test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref, element] | test_cipher.rs:26:30:26:40 | ...::new | provenance | MaD:3 Sink:MaD:3 Sink:MaD:3 | -| test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref, element] | test_cipher.rs:26:30:26:40 | ...::new | provenance | MaD:5 Sink:MaD:5 Sink:MaD:5 | -| test_cipher.rs:26:66:26:71 | const4 [&ref, element] | test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref, element] | provenance | MaD:10 | -| test_cipher.rs:29:9:29:14 | const5 [&ref, element] | test_cipher.rs:30:95:30:100 | const5 [&ref, element] | provenance | | -| test_cipher.rs:29:28:29:36 | &... [&ref, element] | test_cipher.rs:29:9:29:14 | const5 [&ref, element] | provenance | | -| test_cipher.rs:29:29:29:36 | [0u8; 16] [element] | test_cipher.rs:29:28:29:36 | &... [&ref, element] | provenance | | -| test_cipher.rs:29:30:29:32 | 0u8 | test_cipher.rs:29:29:29:36 | [0u8; 16] [element] | provenance | | -| test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref, element] | test_cipher.rs:30:30:30:40 | ...::new | provenance | MaD:4 Sink:MaD:4 Sink:MaD:4 | -| test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref, element] | test_cipher.rs:30:30:30:40 | ...::new | provenance | MaD:6 Sink:MaD:6 Sink:MaD:6 | -| test_cipher.rs:30:95:30:100 | const5 [&ref, element] | test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref, element] | provenance | MaD:10 | +| test_cipher.rs:18:9:18:14 | const1 [&ref] | test_cipher.rs:19:73:19:78 | const1 [&ref] | provenance | | +| test_cipher.rs:18:28:18:36 | &... [&ref] | test_cipher.rs:18:9:18:14 | const1 [&ref] | provenance | | +| test_cipher.rs:18:29:18:36 | [0u8; 16] | test_cipher.rs:18:28:18:36 | &... [&ref] | provenance | | +| test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref] | test_cipher.rs:19:30:19:47 | ...::new | provenance | MaD:3 Sink:MaD:3 | +| test_cipher.rs:19:73:19:78 | const1 [&ref] | test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref] | provenance | MaD:9 | +| test_cipher.rs:25:9:25:14 | const4 [&ref] | test_cipher.rs:26:66:26:71 | const4 [&ref] | provenance | | +| test_cipher.rs:25:28:25:36 | &... [&ref] | test_cipher.rs:25:9:25:14 | const4 [&ref] | provenance | | +| test_cipher.rs:25:29:25:36 | [0u8; 16] | test_cipher.rs:25:28:25:36 | &... [&ref] | provenance | | +| test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref] | test_cipher.rs:26:30:26:40 | ...::new | provenance | MaD:4 Sink:MaD:4 | +| test_cipher.rs:26:66:26:71 | const4 [&ref] | test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref] | provenance | MaD:9 | +| test_cipher.rs:29:9:29:14 | const5 [&ref] | test_cipher.rs:30:95:30:100 | const5 [&ref] | provenance | | +| test_cipher.rs:29:28:29:36 | &... [&ref] | test_cipher.rs:29:9:29:14 | const5 [&ref] | provenance | | +| test_cipher.rs:29:29:29:36 | [0u8; 16] | test_cipher.rs:29:28:29:36 | &... [&ref] | provenance | | +| test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref] | test_cipher.rs:30:30:30:40 | ...::new | provenance | MaD:5 Sink:MaD:5 | +| test_cipher.rs:30:95:30:100 | const5 [&ref] | test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref] | provenance | MaD:9 | | test_cipher.rs:37:9:37:14 | const7 | test_cipher.rs:38:74:38:79 | const7 | provenance | | | test_cipher.rs:37:27:37:74 | [...] | test_cipher.rs:37:9:37:14 | const7 | provenance | | | test_cipher.rs:38:49:38:80 | ...::from_slice(...) [&ref] | test_cipher.rs:38:30:38:47 | ...::new | provenance | MaD:3 Sink:MaD:3 | -| test_cipher.rs:38:49:38:80 | ...::from_slice(...) [&ref] | test_cipher.rs:38:30:38:47 | ...::new | provenance | MaD:5 Sink:MaD:5 | -| test_cipher.rs:38:73:38:79 | &const7 [&ref] | test_cipher.rs:38:49:38:80 | ...::from_slice(...) [&ref] | provenance | MaD:10 | +| test_cipher.rs:38:73:38:79 | &const7 [&ref] | test_cipher.rs:38:49:38:80 | ...::from_slice(...) [&ref] | provenance | MaD:9 | | test_cipher.rs:38:74:38:79 | const7 | test_cipher.rs:38:73:38:79 | &const7 [&ref] | provenance | | | test_cipher.rs:41:9:41:14 | const8 [&ref] | test_cipher.rs:42:73:42:78 | const8 [&ref] | provenance | | | test_cipher.rs:41:28:41:76 | &... [&ref] | test_cipher.rs:41:9:41:14 | const8 [&ref] | provenance | | | test_cipher.rs:41:29:41:76 | [...] | test_cipher.rs:41:28:41:76 | &... [&ref] | provenance | | | test_cipher.rs:42:49:42:79 | ...::from_slice(...) [&ref] | test_cipher.rs:42:30:42:47 | ...::new | provenance | MaD:3 Sink:MaD:3 | -| test_cipher.rs:42:49:42:79 | ...::from_slice(...) [&ref] | test_cipher.rs:42:30:42:47 | ...::new | provenance | MaD:5 Sink:MaD:5 | -| test_cipher.rs:42:73:42:78 | const8 [&ref] | test_cipher.rs:42:49:42:79 | ...::from_slice(...) [&ref] | provenance | MaD:10 | +| test_cipher.rs:42:73:42:78 | const8 [&ref] | test_cipher.rs:42:49:42:79 | ...::from_slice(...) [&ref] | provenance | MaD:9 | | test_cipher.rs:50:9:50:15 | const10 [element] | test_cipher.rs:51:75:51:81 | const10 [element] | provenance | | -| test_cipher.rs:50:37:50:52 | ...::zeroed | test_cipher.rs:50:37:50:54 | ...::zeroed(...) [element] | provenance | Src:MaD:8 | +| test_cipher.rs:50:37:50:52 | ...::zeroed | test_cipher.rs:50:37:50:54 | ...::zeroed(...) [element] | provenance | Src:MaD:7 | | test_cipher.rs:50:37:50:54 | ...::zeroed(...) [element] | test_cipher.rs:50:9:50:15 | const10 [element] | provenance | | | test_cipher.rs:51:50:51:82 | ...::from_slice(...) [&ref, element] | test_cipher.rs:51:31:51:48 | ...::new | provenance | MaD:3 Sink:MaD:3 Sink:MaD:3 | -| test_cipher.rs:51:50:51:82 | ...::from_slice(...) [&ref, element] | test_cipher.rs:51:31:51:48 | ...::new | provenance | MaD:5 Sink:MaD:5 Sink:MaD:5 | -| test_cipher.rs:51:74:51:81 | &const10 [&ref, element] | test_cipher.rs:51:50:51:82 | ...::from_slice(...) [&ref, element] | provenance | MaD:10 | +| test_cipher.rs:51:74:51:81 | &const10 [&ref, element] | test_cipher.rs:51:50:51:82 | ...::from_slice(...) [&ref, element] | provenance | MaD:9 | | test_cipher.rs:51:75:51:81 | const10 [element] | test_cipher.rs:51:74:51:81 | &const10 [&ref, element] | provenance | | -| test_cipher.rs:73:9:73:14 | const2 [&ref, element] | test_cipher.rs:74:46:74:51 | const2 [&ref, element] | provenance | | -| test_cipher.rs:73:18:73:26 | &... [&ref, element] | test_cipher.rs:73:9:73:14 | const2 [&ref, element] | provenance | | -| test_cipher.rs:73:19:73:26 | [0u8; 32] [element] | test_cipher.rs:73:18:73:26 | &... [&ref, element] | provenance | | -| test_cipher.rs:73:20:73:22 | 0u8 | test_cipher.rs:73:19:73:26 | [0u8; 32] [element] | provenance | | -| test_cipher.rs:74:46:74:51 | const2 [&ref, element] | test_cipher.rs:74:23:74:44 | ...::new_from_slice | provenance | MaD:1 Sink:MaD:1 Sink:MaD:1 | -| test_cookie.rs:17:9:17:14 | array1 [element] | test_cookie.rs:18:27:18:32 | array1 [element] | provenance | | -| test_cookie.rs:17:28:17:34 | [0; 64] [element] | test_cookie.rs:17:9:17:14 | array1 [element] | provenance | | -| test_cookie.rs:17:29:17:29 | 0 | test_cookie.rs:17:28:17:34 | [0; 64] [element] | provenance | | -| test_cookie.rs:18:26:18:32 | &array1 [&ref, element] | test_cookie.rs:18:16:18:24 | ...::from | provenance | MaD:7 Sink:MaD:7 | -| test_cookie.rs:18:27:18:32 | array1 [element] | test_cookie.rs:18:26:18:32 | &array1 [&ref, element] | provenance | | -| test_cookie.rs:21:9:21:14 | array2 [element] | test_cookie.rs:22:27:22:32 | array2 [element] | provenance | | -| test_cookie.rs:21:28:21:34 | [0; 64] [element] | test_cookie.rs:21:9:21:14 | array2 [element] | provenance | | -| test_cookie.rs:21:29:21:29 | 0 | test_cookie.rs:21:28:21:34 | [0; 64] [element] | provenance | | -| test_cookie.rs:22:26:22:32 | &array2 [&ref, element] | test_cookie.rs:22:16:22:24 | ...::from | provenance | MaD:7 Sink:MaD:7 | -| test_cookie.rs:22:27:22:32 | array2 [element] | test_cookie.rs:22:26:22:32 | &array2 [&ref, element] | provenance | | -| test_cookie.rs:38:9:38:14 | array2 [element] | test_cookie.rs:42:34:42:39 | array2 [element] | provenance | | -| test_cookie.rs:38:18:38:37 | ...::from(...) [element] | test_cookie.rs:38:9:38:14 | array2 [element] | provenance | | -| test_cookie.rs:38:28:38:36 | [0u8; 64] [element] | test_cookie.rs:38:18:38:37 | ...::from(...) [element] | provenance | MaD:9 | -| test_cookie.rs:38:29:38:31 | 0u8 | test_cookie.rs:38:28:38:36 | [0u8; 64] [element] | provenance | | -| test_cookie.rs:42:34:42:39 | array2 [element] | test_cookie.rs:42:14:42:32 | ...::from | provenance | MaD:2 Sink:MaD:2 | +| test_cipher.rs:73:9:73:14 | const2 [&ref] | test_cipher.rs:74:46:74:51 | const2 [&ref] | provenance | | +| test_cipher.rs:73:18:73:26 | &... [&ref] | test_cipher.rs:73:9:73:14 | const2 [&ref] | provenance | | +| test_cipher.rs:73:19:73:26 | [0u8; 32] | test_cipher.rs:73:18:73:26 | &... [&ref] | provenance | | +| test_cipher.rs:74:46:74:51 | const2 [&ref] | test_cipher.rs:74:23:74:44 | ...::new_from_slice | provenance | MaD:1 Sink:MaD:1 | +| test_cookie.rs:17:9:17:14 | array1 | test_cookie.rs:18:27:18:32 | array1 | provenance | | +| test_cookie.rs:17:28:17:34 | [0; 64] | test_cookie.rs:17:9:17:14 | array1 | provenance | | +| test_cookie.rs:18:26:18:32 | &array1 [&ref] | test_cookie.rs:18:16:18:24 | ...::from | provenance | MaD:6 Sink:MaD:6 | +| test_cookie.rs:18:27:18:32 | array1 | test_cookie.rs:18:26:18:32 | &array1 [&ref] | provenance | | +| test_cookie.rs:21:9:21:14 | array2 | test_cookie.rs:22:27:22:32 | array2 | provenance | | +| test_cookie.rs:21:28:21:34 | [0; 64] | test_cookie.rs:21:9:21:14 | array2 | provenance | | +| test_cookie.rs:22:26:22:32 | &array2 [&ref] | test_cookie.rs:22:16:22:24 | ...::from | provenance | MaD:6 Sink:MaD:6 | +| test_cookie.rs:22:27:22:32 | array2 | test_cookie.rs:22:26:22:32 | &array2 [&ref] | provenance | | +| test_cookie.rs:38:9:38:14 | array2 | test_cookie.rs:42:34:42:39 | array2 | provenance | | +| test_cookie.rs:38:18:38:37 | ...::from(...) | test_cookie.rs:38:9:38:14 | array2 | provenance | | +| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:8 | +| test_cookie.rs:42:34:42:39 | array2 | test_cookie.rs:42:14:42:32 | ...::from | provenance | MaD:2 Sink:MaD:2 | | test_cookie.rs:49:9:49:14 | array3 [element] | test_cookie.rs:53:34:53:39 | array3 [element] | provenance | | -| test_cookie.rs:49:23:49:25 | 0u8 | test_cookie.rs:49:23:49:29 | ...::from_elem(...) [element] | provenance | MaD:11 | +| test_cookie.rs:49:23:49:25 | 0u8 | test_cookie.rs:49:23:49:29 | ...::from_elem(...) [element] | provenance | MaD:10 | | test_cookie.rs:49:23:49:29 | ...::from_elem(...) [element] | test_cookie.rs:49:9:49:14 | array3 [element] | provenance | | | test_cookie.rs:53:34:53:39 | array3 [element] | test_cookie.rs:53:14:53:32 | ...::from | provenance | MaD:2 Sink:MaD:2 | models | 1 | Sink: <_ as crypto_common::KeyInit>::new_from_slice; Argument[0]; credentials-key | | 2 | Sink: ::from; Argument[0]; credentials-key | | 3 | Sink: ::new; Argument[0]; credentials-key | -| 4 | Sink: ::new; Argument[1]; credentials-iv | -| 5 | Sink: ::new; Argument[0]; credentials-key | -| 6 | Sink: ::new; Argument[1]; credentials-iv | -| 7 | Sink: ::from; Argument[0].Reference; credentials-key | -| 8 | Source: core::mem::zeroed; ReturnValue.Element; constant-source | -| 9 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; value | -| 10 | Summary: ::from_slice; Argument[0].Reference; ReturnValue.Reference; value | -| 11 | Summary: alloc::vec::from_elem; Argument[0]; ReturnValue.Element; value | +| 4 | Sink: ::new; Argument[0]; credentials-key | +| 5 | Sink: ::new; Argument[1]; credentials-iv | +| 6 | Sink: ::from; Argument[0].Reference; credentials-key | +| 7 | Source: core::mem::zeroed; ReturnValue.Element; constant-source | +| 8 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint | +| 9 | Summary: ::from_slice; Argument[0].Reference; ReturnValue.Reference; value | +| 10 | Summary: alloc::vec::from_elem; Argument[0]; ReturnValue.Element; value | nodes -| test_cipher.rs:18:9:18:14 | const1 [&ref, element] | semmle.label | const1 [&ref, element] | -| test_cipher.rs:18:28:18:36 | &... [&ref, element] | semmle.label | &... [&ref, element] | -| test_cipher.rs:18:29:18:36 | [0u8; 16] [element] | semmle.label | [0u8; 16] [element] | -| test_cipher.rs:18:30:18:32 | 0u8 | semmle.label | 0u8 | +| test_cipher.rs:18:9:18:14 | const1 [&ref] | semmle.label | const1 [&ref] | +| test_cipher.rs:18:28:18:36 | &... [&ref] | semmle.label | &... [&ref] | +| test_cipher.rs:18:29:18:36 | [0u8; 16] | semmle.label | [0u8; 16] | | test_cipher.rs:19:30:19:47 | ...::new | semmle.label | ...::new | -| test_cipher.rs:19:30:19:47 | ...::new | semmle.label | ...::new | -| test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref, element] | semmle.label | ...::from_slice(...) [&ref, element] | -| test_cipher.rs:19:73:19:78 | const1 [&ref, element] | semmle.label | const1 [&ref, element] | -| test_cipher.rs:25:9:25:14 | const4 [&ref, element] | semmle.label | const4 [&ref, element] | -| test_cipher.rs:25:28:25:36 | &... [&ref, element] | semmle.label | &... [&ref, element] | -| test_cipher.rs:25:29:25:36 | [0u8; 16] [element] | semmle.label | [0u8; 16] [element] | -| test_cipher.rs:25:30:25:32 | 0u8 | semmle.label | 0u8 | -| test_cipher.rs:26:30:26:40 | ...::new | semmle.label | ...::new | +| test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref] | semmle.label | ...::from_slice(...) [&ref] | +| test_cipher.rs:19:73:19:78 | const1 [&ref] | semmle.label | const1 [&ref] | +| test_cipher.rs:25:9:25:14 | const4 [&ref] | semmle.label | const4 [&ref] | +| test_cipher.rs:25:28:25:36 | &... [&ref] | semmle.label | &... [&ref] | +| test_cipher.rs:25:29:25:36 | [0u8; 16] | semmle.label | [0u8; 16] | | test_cipher.rs:26:30:26:40 | ...::new | semmle.label | ...::new | -| test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref, element] | semmle.label | ...::from_slice(...) [&ref, element] | -| test_cipher.rs:26:66:26:71 | const4 [&ref, element] | semmle.label | const4 [&ref, element] | -| test_cipher.rs:29:9:29:14 | const5 [&ref, element] | semmle.label | const5 [&ref, element] | -| test_cipher.rs:29:28:29:36 | &... [&ref, element] | semmle.label | &... [&ref, element] | -| test_cipher.rs:29:29:29:36 | [0u8; 16] [element] | semmle.label | [0u8; 16] [element] | -| test_cipher.rs:29:30:29:32 | 0u8 | semmle.label | 0u8 | +| test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref] | semmle.label | ...::from_slice(...) [&ref] | +| test_cipher.rs:26:66:26:71 | const4 [&ref] | semmle.label | const4 [&ref] | +| test_cipher.rs:29:9:29:14 | const5 [&ref] | semmle.label | const5 [&ref] | +| test_cipher.rs:29:28:29:36 | &... [&ref] | semmle.label | &... [&ref] | +| test_cipher.rs:29:29:29:36 | [0u8; 16] | semmle.label | [0u8; 16] | | test_cipher.rs:30:30:30:40 | ...::new | semmle.label | ...::new | -| test_cipher.rs:30:30:30:40 | ...::new | semmle.label | ...::new | -| test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref, element] | semmle.label | ...::from_slice(...) [&ref, element] | -| test_cipher.rs:30:95:30:100 | const5 [&ref, element] | semmle.label | const5 [&ref, element] | +| test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref] | semmle.label | ...::from_slice(...) [&ref] | +| test_cipher.rs:30:95:30:100 | const5 [&ref] | semmle.label | const5 [&ref] | | test_cipher.rs:37:9:37:14 | const7 | semmle.label | const7 | | test_cipher.rs:37:27:37:74 | [...] | semmle.label | [...] | | test_cipher.rs:38:30:38:47 | ...::new | semmle.label | ...::new | -| test_cipher.rs:38:30:38:47 | ...::new | semmle.label | ...::new | | test_cipher.rs:38:49:38:80 | ...::from_slice(...) [&ref] | semmle.label | ...::from_slice(...) [&ref] | | test_cipher.rs:38:73:38:79 | &const7 [&ref] | semmle.label | &const7 [&ref] | | test_cipher.rs:38:74:38:79 | const7 | semmle.label | const7 | @@ -129,41 +102,35 @@ nodes | test_cipher.rs:41:28:41:76 | &... [&ref] | semmle.label | &... [&ref] | | test_cipher.rs:41:29:41:76 | [...] | semmle.label | [...] | | test_cipher.rs:42:30:42:47 | ...::new | semmle.label | ...::new | -| test_cipher.rs:42:30:42:47 | ...::new | semmle.label | ...::new | | test_cipher.rs:42:49:42:79 | ...::from_slice(...) [&ref] | semmle.label | ...::from_slice(...) [&ref] | | test_cipher.rs:42:73:42:78 | const8 [&ref] | semmle.label | const8 [&ref] | | test_cipher.rs:50:9:50:15 | const10 [element] | semmle.label | const10 [element] | | test_cipher.rs:50:37:50:52 | ...::zeroed | semmle.label | ...::zeroed | | test_cipher.rs:50:37:50:54 | ...::zeroed(...) [element] | semmle.label | ...::zeroed(...) [element] | | test_cipher.rs:51:31:51:48 | ...::new | semmle.label | ...::new | -| test_cipher.rs:51:31:51:48 | ...::new | semmle.label | ...::new | | test_cipher.rs:51:50:51:82 | ...::from_slice(...) [&ref, element] | semmle.label | ...::from_slice(...) [&ref, element] | | test_cipher.rs:51:74:51:81 | &const10 [&ref, element] | semmle.label | &const10 [&ref, element] | | test_cipher.rs:51:75:51:81 | const10 [element] | semmle.label | const10 [element] | -| test_cipher.rs:73:9:73:14 | const2 [&ref, element] | semmle.label | const2 [&ref, element] | -| test_cipher.rs:73:18:73:26 | &... [&ref, element] | semmle.label | &... [&ref, element] | -| test_cipher.rs:73:19:73:26 | [0u8; 32] [element] | semmle.label | [0u8; 32] [element] | -| test_cipher.rs:73:20:73:22 | 0u8 | semmle.label | 0u8 | +| test_cipher.rs:73:9:73:14 | const2 [&ref] | semmle.label | const2 [&ref] | +| test_cipher.rs:73:18:73:26 | &... [&ref] | semmle.label | &... [&ref] | +| test_cipher.rs:73:19:73:26 | [0u8; 32] | semmle.label | [0u8; 32] | | test_cipher.rs:74:23:74:44 | ...::new_from_slice | semmle.label | ...::new_from_slice | -| test_cipher.rs:74:46:74:51 | const2 [&ref, element] | semmle.label | const2 [&ref, element] | -| test_cookie.rs:17:9:17:14 | array1 [element] | semmle.label | array1 [element] | -| test_cookie.rs:17:28:17:34 | [0; 64] [element] | semmle.label | [0; 64] [element] | -| test_cookie.rs:17:29:17:29 | 0 | semmle.label | 0 | +| test_cipher.rs:74:46:74:51 | const2 [&ref] | semmle.label | const2 [&ref] | +| test_cookie.rs:17:9:17:14 | array1 | semmle.label | array1 | +| test_cookie.rs:17:28:17:34 | [0; 64] | semmle.label | [0; 64] | | test_cookie.rs:18:16:18:24 | ...::from | semmle.label | ...::from | -| test_cookie.rs:18:26:18:32 | &array1 [&ref, element] | semmle.label | &array1 [&ref, element] | -| test_cookie.rs:18:27:18:32 | array1 [element] | semmle.label | array1 [element] | -| test_cookie.rs:21:9:21:14 | array2 [element] | semmle.label | array2 [element] | -| test_cookie.rs:21:28:21:34 | [0; 64] [element] | semmle.label | [0; 64] [element] | -| test_cookie.rs:21:29:21:29 | 0 | semmle.label | 0 | +| test_cookie.rs:18:26:18:32 | &array1 [&ref] | semmle.label | &array1 [&ref] | +| test_cookie.rs:18:27:18:32 | array1 | semmle.label | array1 | +| test_cookie.rs:21:9:21:14 | array2 | semmle.label | array2 | +| test_cookie.rs:21:28:21:34 | [0; 64] | semmle.label | [0; 64] | | test_cookie.rs:22:16:22:24 | ...::from | semmle.label | ...::from | -| test_cookie.rs:22:26:22:32 | &array2 [&ref, element] | semmle.label | &array2 [&ref, element] | -| test_cookie.rs:22:27:22:32 | array2 [element] | semmle.label | array2 [element] | -| test_cookie.rs:38:9:38:14 | array2 [element] | semmle.label | array2 [element] | -| test_cookie.rs:38:18:38:37 | ...::from(...) [element] | semmle.label | ...::from(...) [element] | -| test_cookie.rs:38:28:38:36 | [0u8; 64] [element] | semmle.label | [0u8; 64] [element] | -| test_cookie.rs:38:29:38:31 | 0u8 | semmle.label | 0u8 | +| test_cookie.rs:22:26:22:32 | &array2 [&ref] | semmle.label | &array2 [&ref] | +| test_cookie.rs:22:27:22:32 | array2 | semmle.label | array2 | +| test_cookie.rs:38:9:38:14 | array2 | semmle.label | array2 | +| test_cookie.rs:38:18:38:37 | ...::from(...) | semmle.label | ...::from(...) | +| test_cookie.rs:38:28:38:36 | [0u8; 64] | semmle.label | [0u8; 64] | | test_cookie.rs:42:14:42:32 | ...::from | semmle.label | ...::from | -| test_cookie.rs:42:34:42:39 | array2 [element] | semmle.label | array2 [element] | +| test_cookie.rs:42:34:42:39 | array2 | semmle.label | array2 | | test_cookie.rs:49:9:49:14 | array3 [element] | semmle.label | array3 [element] | | test_cookie.rs:49:23:49:25 | 0u8 | semmle.label | 0u8 | | test_cookie.rs:49:23:49:29 | ...::from_elem(...) [element] | semmle.label | ...::from_elem(...) [element] | diff --git a/rust/ql/test/query-tests/security/CWE-918/Cargo.lock b/rust/ql/test/query-tests/security/CWE-918/Cargo.lock index 83c077741bc7..d00e99a29095 100644 --- a/rust/ql/test/query-tests/security/CWE-918/Cargo.lock +++ b/rust/ql/test/query-tests/security/CWE-918/Cargo.lock @@ -714,6 +714,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -851,6 +861,26 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "pin-project-lite" version = "0.2.16" @@ -1132,6 +1162,12 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.2.0" @@ -1337,6 +1373,7 @@ dependencies = [ "poem", "reqwest", "tokio", + "warp", ] [[package]] @@ -1501,6 +1538,7 @@ version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -1547,6 +1585,12 @@ dependencies = [ "version_check", ] +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + [[package]] name = "unicode-ident" version = "1.0.18" @@ -1598,6 +1642,35 @@ dependencies = [ "try-lock", ] +[[package]] +name = "warp" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d06d9202adc1f15d709c4f4a2069be5428aa912cc025d6f268ac441ab066b0" +dependencies = [ + "bytes", + "futures-util", + "headers", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "log", + "mime", + "mime_guess", + "percent-encoding", + "pin-project", + "scoped-tls", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-util", + "tower-service", + "tracing", +] + [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" diff --git a/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected b/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected index 4d44df7349f7..a33742a7c4b3 100644 --- a/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected +++ b/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected @@ -8,6 +8,8 @@ | request_forgery_tests.rs:31:29:31:40 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:29:31:40 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:37:37:37:48 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:37:37:48 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:37:37:37:48 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:37:37:48 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | +| request_forgery_tests.rs:68:28:68:39 | ...::get | request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:68:28:68:39 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:65:33:65:40 | and_then | user-provided value | +| request_forgery_tests.rs:68:28:68:39 | ...::get | request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:68:28:68:39 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:65:33:65:40 | and_then | user-provided value | edges | request_forgery_tests.rs:4:5:4:14 | res | request_forgery_tests.rs:16:27:16:49 | { ... } | provenance | | | request_forgery_tests.rs:4:5:4:14 | res | request_forgery_tests.rs:20:27:20:57 | { ... } | provenance | | @@ -28,22 +30,22 @@ edges | request_forgery_tests.rs:16:13:16:15 | url | request_forgery_tests.rs:17:39:17:41 | url | provenance | | | request_forgery_tests.rs:16:27:16:49 | ...::format(...) | request_forgery_tests.rs:4:5:4:14 | res | provenance | | | request_forgery_tests.rs:16:27:16:49 | ...::must_use(...) | request_forgery_tests.rs:16:13:16:15 | url | provenance | | -| request_forgery_tests.rs:16:27:16:49 | MacroExpr | request_forgery_tests.rs:16:27:16:49 | ...::format(...) | provenance | MaD:2 | -| request_forgery_tests.rs:16:27:16:49 | { ... } | request_forgery_tests.rs:16:27:16:49 | ...::must_use(...) | provenance | MaD:3 | +| request_forgery_tests.rs:16:27:16:49 | MacroExpr | request_forgery_tests.rs:16:27:16:49 | ...::format(...) | provenance | MaD:3 | +| request_forgery_tests.rs:16:27:16:49 | { ... } | request_forgery_tests.rs:16:27:16:49 | ...::must_use(...) | provenance | MaD:4 | | request_forgery_tests.rs:17:38:17:41 | &url [&ref] | request_forgery_tests.rs:17:25:17:36 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:17:39:17:41 | url | request_forgery_tests.rs:17:38:17:41 | &url [&ref] | provenance | | | request_forgery_tests.rs:20:13:20:15 | url | request_forgery_tests.rs:21:39:21:41 | url | provenance | | | request_forgery_tests.rs:20:27:20:57 | ...::format(...) | request_forgery_tests.rs:4:5:4:14 | res | provenance | | | request_forgery_tests.rs:20:27:20:57 | ...::must_use(...) | request_forgery_tests.rs:20:13:20:15 | url | provenance | | -| request_forgery_tests.rs:20:27:20:57 | MacroExpr | request_forgery_tests.rs:20:27:20:57 | ...::format(...) | provenance | MaD:2 | -| request_forgery_tests.rs:20:27:20:57 | { ... } | request_forgery_tests.rs:20:27:20:57 | ...::must_use(...) | provenance | MaD:3 | +| request_forgery_tests.rs:20:27:20:57 | MacroExpr | request_forgery_tests.rs:20:27:20:57 | ...::format(...) | provenance | MaD:3 | +| request_forgery_tests.rs:20:27:20:57 | { ... } | request_forgery_tests.rs:20:27:20:57 | ...::must_use(...) | provenance | MaD:4 | | request_forgery_tests.rs:21:38:21:41 | &url [&ref] | request_forgery_tests.rs:21:25:21:36 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:21:39:21:41 | url | request_forgery_tests.rs:21:38:21:41 | &url [&ref] | provenance | | | request_forgery_tests.rs:24:13:24:15 | url | request_forgery_tests.rs:25:39:25:41 | url | provenance | | | request_forgery_tests.rs:24:27:24:70 | ...::format(...) | request_forgery_tests.rs:4:5:4:14 | res | provenance | | | request_forgery_tests.rs:24:27:24:70 | ...::must_use(...) | request_forgery_tests.rs:24:13:24:15 | url | provenance | | -| request_forgery_tests.rs:24:27:24:70 | MacroExpr | request_forgery_tests.rs:24:27:24:70 | ...::format(...) | provenance | MaD:2 | -| request_forgery_tests.rs:24:27:24:70 | { ... } | request_forgery_tests.rs:24:27:24:70 | ...::must_use(...) | provenance | MaD:3 | +| request_forgery_tests.rs:24:27:24:70 | MacroExpr | request_forgery_tests.rs:24:27:24:70 | ...::format(...) | provenance | MaD:3 | +| request_forgery_tests.rs:24:27:24:70 | { ... } | request_forgery_tests.rs:24:27:24:70 | ...::must_use(...) | provenance | MaD:4 | | request_forgery_tests.rs:25:38:25:41 | &url [&ref] | request_forgery_tests.rs:25:25:25:36 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:25:39:25:41 | url | request_forgery_tests.rs:25:38:25:41 | &url [&ref] | provenance | | | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | request_forgery_tests.rs:31:29:31:40 | ...::get | provenance | MaD:1 Sink:MaD:1 | @@ -54,10 +56,19 @@ edges | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | request_forgery_tests.rs:37:37:37:48 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:37:51:37:58 | user_url | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | provenance | | | request_forgery_tests.rs:37:51:37:58 | user_url | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | provenance | | +| request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:65:49:65:57 | ...: String | provenance | Src:MaD:2 | +| request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:65:49:65:57 | ...: String | provenance | Src:MaD:2 | +| request_forgery_tests.rs:65:49:65:57 | ...: String | request_forgery_tests.rs:68:42:68:42 | a | provenance | | +| request_forgery_tests.rs:65:49:65:57 | ...: String | request_forgery_tests.rs:68:42:68:42 | a | provenance | | +| request_forgery_tests.rs:68:41:68:42 | &a [&ref] | request_forgery_tests.rs:68:28:68:39 | ...::get | provenance | MaD:1 Sink:MaD:1 | +| request_forgery_tests.rs:68:41:68:42 | &a [&ref] | request_forgery_tests.rs:68:28:68:39 | ...::get | provenance | MaD:1 Sink:MaD:1 | +| request_forgery_tests.rs:68:42:68:42 | a | request_forgery_tests.rs:68:41:68:42 | &a [&ref] | provenance | | +| request_forgery_tests.rs:68:42:68:42 | a | request_forgery_tests.rs:68:41:68:42 | &a [&ref] | provenance | | models | 1 | Sink: reqwest::get; Argument[0]; request-url | -| 2 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 3 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 2 | Source: <_ as warp::filter::Filter>::and_then; Argument[0].Parameter[0..7]; remote | +| 3 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 4 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | request_forgery_tests.rs:4:5:4:14 | res | semmle.label | res | | request_forgery_tests.rs:4:5:4:14 | res | semmle.label | res | @@ -106,4 +117,14 @@ nodes | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | semmle.label | &user_url [&ref] | | request_forgery_tests.rs:37:51:37:58 | user_url | semmle.label | user_url | | request_forgery_tests.rs:37:51:37:58 | user_url | semmle.label | user_url | +| request_forgery_tests.rs:65:33:65:40 | and_then | semmle.label | and_then | +| request_forgery_tests.rs:65:33:65:40 | and_then | semmle.label | and_then | +| request_forgery_tests.rs:65:49:65:57 | ...: String | semmle.label | ...: String | +| request_forgery_tests.rs:65:49:65:57 | ...: String | semmle.label | ...: String | +| request_forgery_tests.rs:68:28:68:39 | ...::get | semmle.label | ...::get | +| request_forgery_tests.rs:68:28:68:39 | ...::get | semmle.label | ...::get | +| request_forgery_tests.rs:68:41:68:42 | &a [&ref] | semmle.label | &a [&ref] | +| request_forgery_tests.rs:68:41:68:42 | &a [&ref] | semmle.label | &a [&ref] | +| request_forgery_tests.rs:68:42:68:42 | a | semmle.label | a | +| request_forgery_tests.rs:68:42:68:42 | a | semmle.label | a | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-918/options.yml b/rust/ql/test/query-tests/security/CWE-918/options.yml index 078784053e14..6c6a1517497f 100644 --- a/rust/ql/test/query-tests/security/CWE-918/options.yml +++ b/rust/ql/test/query-tests/security/CWE-918/options.yml @@ -3,3 +3,4 @@ qltest_dependencies: - reqwest = { version = "0.12.23", features = ["blocking", "json"] } - tokio = { version = "1.0", features = ["full"] } - poem = { version = "3.1.12", features = ["server"] } + - warp = { version = "0.4.2", features = ["server"] } diff --git a/rust/ql/test/query-tests/security/CWE-918/request_forgery_tests.rs b/rust/ql/test/query-tests/security/CWE-918/request_forgery_tests.rs index d9f2e1ae5c4f..f9abf14de4fc 100644 --- a/rust/ql/test/query-tests/security/CWE-918/request_forgery_tests.rs +++ b/rust/ql/test/query-tests/security/CWE-918/request_forgery_tests.rs @@ -54,6 +54,26 @@ mod poem_server { } } +mod warp_test { + use warp::Filter; + + #[tokio::main] + #[rustfmt::skip] + async fn test_warp() { + // A route with parameter and `and_then` + let map_route = + warp::path::param().and_then(async |a: String| // $ Source=a + { + + let response = reqwest::get(&a).await; // $ Alert[rust/request-forgery]=a + match response { + Ok(resp) => Ok(resp.text().await.unwrap_or_default()), + Err(_err) => Err(warp::reject::not_found()), + } + }); + } +} + /// Start the Poem web application pub fn start() { tokio::runtime::Runtime::new() diff --git a/shared/concepts/CHANGELOG.md b/shared/concepts/CHANGELOG.md index bac19b9b77f2..cfaa89c5ac2a 100644 --- a/shared/concepts/CHANGELOG.md +++ b/shared/concepts/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.6 + +No user-facing changes. + ## 0.0.5 No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.6.md b/shared/concepts/change-notes/released/0.0.6.md new file mode 100644 index 000000000000..ccbce856079d --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.6.md @@ -0,0 +1,3 @@ +## 0.0.6 + +No user-facing changes. diff --git a/shared/concepts/codeql-pack.release.yml b/shared/concepts/codeql-pack.release.yml index bb45a1ab0182..cf398ce02aa4 100644 --- a/shared/concepts/codeql-pack.release.yml +++ b/shared/concepts/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.5 +lastReleaseVersion: 0.0.6 diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index 5bd473ce43bc..3924d67029dc 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.5 +version: 0.0.6 groups: shared library: true dependencies: diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index 9b9c04fd8d8d..df7e781268e2 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.16 + +No user-facing changes. + ## 2.0.15 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.16.md b/shared/controlflow/change-notes/released/2.0.16.md new file mode 100644 index 000000000000..221400d393f2 --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.16.md @@ -0,0 +1,3 @@ +## 2.0.16 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 0377ae283a31..c10461a785cf 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.15 +lastReleaseVersion: 2.0.16 diff --git a/shared/controlflow/codeql/controlflow/Cfg.qll b/shared/controlflow/codeql/controlflow/Cfg.qll index 4945c8da9cfa..9e0943854057 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) { diff --git a/shared/controlflow/codeql/controlflow/ControlFlow.qll b/shared/controlflow/codeql/controlflow/ControlFlow.qll index bfb878e67568..7fd6ec70bfcb 100644 --- a/shared/controlflow/codeql/controlflow/ControlFlow.qll +++ b/shared/controlflow/codeql/controlflow/ControlFlow.qll @@ -80,6 +80,9 @@ signature module InputSig; - private class GuardValueOrAny extends GuardValueExt, TGuardValueOrAny { } - - private GuardValueExt mkRange(int low, int high) { - result = IntRange(low, high) - or - low = high and - result.asBase().asIntValue() = low - } - - private GuardValueExt intersectBase1(GuardValue gv1, GuardValue gv2) { - exists(SourceVariable var | - possibleValue(var, gv1) and - possibleValue(var, gv2) - | - smaller(gv1, gv2) and result.asBase() = gv1 - or - exists(int low, int high | - gv1.isIntRange(low, false) and - gv2.isIntRange(high, true) and - result = mkRange(low, high) - ) - or - exists(int bound, boolean upper, int d | - gv1.isIntRange(bound, upper) and - gv2.getDualValue().asIntValue() = bound and - result.asBase().isIntRange(bound + d, upper) - | - upper = true and d = -1 - or - upper = false and d = 1 - ) - ) - } - - private GuardValueExt intersectBase2(GuardValueExt v1, GuardValue v2) { - result = intersectBase1(v1.asBase(), v2) - or - result = intersectBase1(v2, v1.asBase()) - } - - bindingset[v1, v2] - pragma[inline_late] - private GuardValueExt intersectRange(GuardValueExt v1, GuardValue v2) { - exists(int low, int high | v1 = IntRange(low, high) | - exists(int bound, boolean upper | v2.isIntRange(bound, upper) | - upper = true and result = mkRange(low, high.minimum(bound)) - or - upper = false and result = mkRange(low.maximum(bound), high) - ) - or - exists(int k | - v2.asIntValue() = k and - result.asBase() = v2 and - low <= k and - k <= high - ) - or - not v2.isIntRange(_, _) and not exists(v2.asIntValue()) and result = v1 - ) - } + private class GuardValueOption = GuardValueOption::Option; + /** + * Gets the best constraint of `v1` and `v2`. If both are non-singletons, + * then we arbitrarily choose `v1`. This operation approximates intersection. + */ bindingset[v1, v2] pragma[inline_late] - private GuardValueExt intersect(GuardValueExt v1, GuardValue v2) { - v1 = AnyValue() and result.asBase() = v2 - or - result = intersectBase2(v1, v2) - or - result = v1 and - v1 instanceof BaseValue and - not exists(intersectBase2(v1, v2)) - or - result = intersectRange(v1, v2) - } - - bindingset[v1, gv2] - private predicate disjointValuesExt(GuardValueExt v1, GuardValue gv2) { - disjointValues(v1.asBase(), gv2) - or - exists(int low, int high | v1 = IntRange(low, high) | - gv2.asIntValue() < low - or - high < gv2.asIntValue() - or - exists(int bound, boolean upper | gv2.isIntRange(bound, upper) | - upper = true and bound < low - or - upper = false and high < bound - ) - ) + private GuardValueOption intersect(GuardValueOption v1, GuardValue v2) { + if v2.isSingleton() + then result.asSome() = v2 + else + if v1.isNone() + then result.asSome() = v2 + else result = v1 } /** An input configuration for control flow reachability. */ @@ -558,6 +449,7 @@ module Make< * Holds if the edge from `bb1` to `bb2` implies that `def` has a value * that is considered a barrier. */ + pragma[nomagic] private predicate ssaValueBarrierEdge(SsaDefinition def, BasicBlock bb1, BasicBlock bb2) { exists(GuardValue v | ssaControlsBranchEdge(def, bb1, bb2, v) and @@ -565,6 +457,11 @@ module Make< ) } + pragma[nomagic] + private predicate phiBlock(BasicBlock bb, SourceVariable v) { + exists(SsaPhiNode phi | phi.getBasicBlock() = bb and phi.getSourceVariable() = v) + } + /** Holds if `def1` in `bb1` may step to `def2` in `bb2`. */ private predicate step(SsaDefinition def1, BasicBlock bb1, SsaDefinition def2, BasicBlock bb2) { not sinkBlock(def1, bb1, _) and @@ -577,7 +474,7 @@ module Make< ssaRelevantAtEndOfBlock(def1, bb1) and bb1.getASuccessor() = bb2 and v = def1.getSourceVariable() and - not exists(SsaPhiNode phi | phi.getBasicBlock() = bb2 and phi.getSourceVariable() = v) and + not phiBlock(bb2, v) and def1 = def2 ) or @@ -687,8 +584,8 @@ module Make< * Holds if the edge from `bb1` to `bb2` implies that `def` has the value * `gv` and that the edge is relevant for computing reachability of `src`. * - * If multiple values may be implied by this edge, then we only include the - * most precise ones. + * If multiple values may be implied by this edge, including a singleton, + * then we only include the singleton. * * The underlying variable of `t` is `var`. */ @@ -697,7 +594,11 @@ module Make< BasicBlock bb2 ) { ssaControlsBranchEdge(t, bb1, bb2, gv) and - not exists(GuardValue gv0 | ssaControlsBranchEdge(t, bb1, bb2, gv0) and smaller(gv0, gv)) and + ( + any(GuardValue gv0 | ssaControlsBranchEdge(t, bb1, bb2, gv0)).isSingleton() + implies + gv.isSingleton() + ) and pathEdge(src, bb1, bb2) and t.getSourceVariable() = var } @@ -711,18 +612,36 @@ module Make< exists(BasicBlock pred | pathEdge(src, pred, entry) and entry.strictlyDominates(pred)) } + /** + * Gets either `gv` or its dual value. This is intended as a mostly unique + * representation of the set of values `gv` and `gv.getDualValue()`. + */ + private GuardValue getPrimary(GuardValue gv) { + exists(GuardValue dual | dual = gv.getDualValue() | + if dual.isSingleton() then result = dual else result = gv + ) + } + /** * Holds if precision may be improved by splitting control flow on the * value of `var` during the reachability computation of `src`. + * + * The `condgv`/`condgv.getDualValue()` separation of the values of `var` + * determines whether a possibly relevant edge may be taken or not. */ - private predicate relevantSplit(SourceVariable src, SourceVariable var) { + private predicate relevantSplit(SourceVariable src, SourceVariable var, GuardValue condgv) { // `var` may be a relevant split if we encounter 2+ conditional edges // that imply information about `var`. - 2 <= strictcount(BasicBlock bb1 | ssaControlsPathEdge(src, _, var, _, bb1, _)) + exists(GuardValue gv | + ssaControlsPathEdge(src, _, var, gv, _, _) and + condgv = getPrimary(gv) and + 2 <= strictcount(BasicBlock bb1 | ssaControlsPathEdge(src, _, var, _, bb1, _)) + ) or // Or if we encounter a conditional edge that imply a value that's // incompatible with an initial or later assigned value. exists(GuardValue gv1, GuardValue gv2, BasicBlock bb | + condgv = getPrimary(gv1) and ssaControlsPathEdge(src, _, var, gv1, _, _) and initSsaValue(var, bb, _, gv2) and disjointValues(gv1, gv2) and @@ -731,8 +650,11 @@ module Make< or // Or if we encounter a conditional edge in a loop that imply a value for // `var` that may be unchanged from one iteration to the next. - exists(SsaDefinition def, BasicBlock bb1, BasicBlock bb2, BasicBlock loopEntry | - ssaControlsPathEdge(src, def, var, _, bb1, bb2) and + exists( + SsaDefinition def, BasicBlock bb1, BasicBlock bb2, BasicBlock loopEntry, GuardValue gv + | + ssaControlsPathEdge(src, def, var, gv, bb1, bb2) and + condgv = getPrimary(gv) and loopEntryBlock(src, loopEntry) and loopEntry.strictlyDominates(bb1) and bb2.getASuccessor*() = loopEntry @@ -755,25 +677,40 @@ module Make< def = max(SsaDefinition d, int i | d.definesAt(var, bb, i) | d order by i) } + /** + * Holds if `gv` is relatable to the `condgv`/`condgv.getDualValue()` pair + * in the sense that a conditional branch based on `condgv` may be + * determined by `gv`. + */ + bindingset[gv, condgv] + pragma[inline_late] + private predicate relatable(GuardValue gv, GuardValue condgv) { + disjointValues(gv, condgv) or + disjointValues(gv, condgv.getDualValue()) + } + /** * Holds if `bb1` to `bb2` is a relevant edge for computing reachability of * `src`, and `var` is a relevant splitting variable that gets (re-)defined * in `bb2` by `t`, which is not a phi node. * - * `val` is the best known value for `t` in `bb2`. + * `val` is the best known value that is relatable to `condgv` for `t` in `bb2`. */ private predicate stepSsaValueRedef( - SourceVariable src, BasicBlock bb1, BasicBlock bb2, SourceVariable var, SsaDefinition t, - GuardValueOrAny val + SourceVariable src, BasicBlock bb1, BasicBlock bb2, SourceVariable var, GuardValue condgv, + SsaDefinition t, GuardValueOption val ) { pathEdge(src, bb1, bb2) and - relevantSplit(src, var) and + relevantSplit(src, var, condgv) and lastDefInBlock(var, t, bb2) and not t instanceof SsaPhiNode and ( - ssaHasValue(t, val.asBase()) + exists(GuardValue gv | + ssaHasValue(t, gv) and + if relatable(gv, condgv) then val.asSome() = gv else val.isNone() + ) or - not ssaHasValue(t, _) and val = AnyValue() + not ssaHasValue(t, _) and val.isNone() ) } @@ -783,21 +720,25 @@ module Make< * `t2`, in `bb2` taking input from `t1` along this edge. Furthermore, * there is no further redefinition of `var` in `bb2`. * - * `val` is the best value for `t1`/`t2` implied by taking this edge. + * `val` is the best value that is relatable to `condgv` for `t1`/`t2` + * implied by taking this edge. */ private predicate stepSsaValuePhi( - SourceVariable src, BasicBlock bb1, BasicBlock bb2, SourceVariable var, SsaDefinition t1, - SsaDefinition t2, GuardValueOrAny val + SourceVariable src, BasicBlock bb1, BasicBlock bb2, SourceVariable var, GuardValue condgv, + SsaDefinition t1, SsaDefinition t2, GuardValueOption val ) { pathEdge(src, bb1, bb2) and - relevantSplit(src, var) and + relevantSplit(src, var, condgv) and lastDefInBlock(var, t2, bb2) and t2.(SsaPhiNode).hasInputFromBlock(t1, bb1) and ( - ssaControlsPathEdge(src, t1, _, val.asBase(), bb1, bb2) + exists(GuardValue gv | + ssaControlsPathEdge(src, t1, _, gv, bb1, bb2) and + if relatable(gv, condgv) then val.asSome() = gv else val.isNone() + ) or not ssaControlsPathEdge(src, t1, _, _, bb1, bb2) and - val = AnyValue() + val.isNone() ) } @@ -807,84 +748,94 @@ module Make< * redefinition along this edge nor in `bb2`. * * Additionally, this edge implies that the SSA definition `t` of `var` has - * value `val`. + * value `val` and that `val` is relatable to `condgv`. */ private predicate stepSsaValueNoRedef( - SourceVariable src, BasicBlock bb1, BasicBlock bb2, SourceVariable var, SsaDefinition t, - GuardValue val + SourceVariable src, BasicBlock bb1, BasicBlock bb2, SourceVariable var, GuardValue condgv, + SsaDefinition t, GuardValue val ) { pathEdge(src, bb1, bb2) and - relevantSplit(src, var) and + relevantSplit(src, var, condgv) and not lastDefInBlock(var, _, bb2) and - ssaControlsPathEdge(src, t, var, val, bb1, bb2) + ssaControlsPathEdge(src, t, var, val, bb1, bb2) and + relatable(val, condgv) } /** * Holds if the source `srcDef` in `srcBb` may reach `def` in `bb`. The * taken path takes splitting based on the value of `var` into account. + * + * When multiple `GuardValue`s can be chosen for `var`, we prioritize those + * that are relatable to `condgv`, as that will help determine whether a + * particular edge may be taken or not. Singleton values are prioritized + * highly as they are in principle relatable to every other `GuardValue`. + * * The pair `(tracked, val)` is the current SSA definition and known value * for `var` in `bb`. */ private predicate sourceReachesBlockWithTrackedVar( SsaDefinition srcDef, BasicBlock srcBb, SsaDefinition def, BasicBlock bb, FinallyStack fs, - SsaDefOption tracked, GuardValueExt val, SourceVariable var + SsaDefOption tracked, GuardValueOption val, SourceVariable var, GuardValue condgv ) { sourceBlock(srcDef, srcBb, _) and def = srcDef and bb = srcBb and fs = TNil() and - relevantSplit(def.getSourceVariable(), var) and + relevantSplit(def.getSourceVariable(), var, condgv) and ( // tracking variable is not yet live not ssaLiveAtEndOfBlock(var, _, bb) and tracked.isNone() and - val = AnyValue() + val.isNone() or // tracking variable is live but without known value ssaLiveAtEndOfBlock(var, tracked.asSome(), bb) and not initSsaValue(var, bb, _, _) and - val = AnyValue() + val.isNone() or - // tracking variable has known value - initSsaValue(var, bb, tracked.asSome(), val.asBase()) + // tracking variable has known value, track it if it is relatable to condgv + exists(GuardValue gv | initSsaValue(var, bb, tracked.asSome(), gv) | + if relatable(gv, condgv) then val.asSome() = gv else val.isNone() + ) ) or exists( SourceVariable src, SsaDefinition middef, BasicBlock midbb, FinallyStack midfs, - SsaDefOption tracked0, GuardValueExt val0 + SsaDefOption tracked0, GuardValueOption val0 | - sourceReachesBlockWithTrackedVar(srcDef, srcBb, middef, midbb, midfs, tracked0, val0, var) and + sourceReachesBlockWithTrackedVar(srcDef, srcBb, middef, midbb, midfs, tracked0, val0, var, + condgv) and src = srcDef.getSourceVariable() and step(middef, midbb, def, bb) and stepFinallyStack(midbb, bb, midfs, fs) and - pathBlock(src, bb) and + pathBlock(pragma[only_bind_into](src), bb) and not exists(GuardValue gv | ssaControlsPathEdge(src, tracked0.asSome(), _, gv, midbb, bb) and - disjointValuesExt(val0, gv) + disjointValues(val0.asSome(), gv) ) | // tracking variable is redefined - stepSsaValueRedef(src, midbb, bb, var, tracked.asSome(), val) + stepSsaValueRedef(src, midbb, bb, var, condgv, tracked.asSome(), val) or - exists(GuardValueOrAny val1 | + exists(GuardValueOption val1 | // tracking variable has a phi node, and maybe value information from the edge - stepSsaValuePhi(src, midbb, bb, var, tracked0.asSome(), tracked.asSome(), val1) + stepSsaValuePhi(src, midbb, bb, var, condgv, tracked0.asSome(), tracked.asSome(), val1) | - val = val0 and val1 = AnyValue() + val = val0 and val1.isNone() or - val = intersect(val0, val1.asBase()) + val = intersect(val0, val1.asSome()) ) or exists(GuardValue val1 | // tracking variable is unchanged, and has value information from the edge - stepSsaValueNoRedef(src, midbb, bb, var, tracked0.asSome(), val1) and + stepSsaValueNoRedef(src, midbb, bb, var, condgv, tracked0.asSome(), val1) and tracked = tracked0 and val = intersect(val0, val1) ) or // tracking variable is unchanged, and has no value information from the edge not lastDefInBlock(var, _, bb) and - not stepSsaValueNoRedef(src, midbb, bb, var, tracked0.asSome(), _) and + not stepSsaValueNoRedef(src, midbb, bb, var, condgv, tracked0.asSome(), _) and tracked = tracked0 and val = val0 ) @@ -903,8 +854,8 @@ module Make< sourceReachesBlock(srcDef, srcBb, sinkDef, sinkBb, _) and sinkBlock(sinkDef, sinkBb, sink) and srcVar = srcDef.getSourceVariable() and - forall(SourceVariable t | relevantSplit(srcVar, t) | - sourceReachesBlockWithTrackedVar(srcDef, srcBb, sinkDef, sinkBb, _, _, _, t) + forall(SourceVariable t, GuardValue condgv | relevantSplit(srcVar, t, condgv) | + sourceReachesBlockWithTrackedVar(srcDef, srcBb, sinkDef, sinkBb, _, _, _, t, condgv) ) ) } @@ -920,8 +871,8 @@ module Make< sourceBlock(srcDef, srcBb, src) and sourceEscapesSink(srcDef, srcBb, escDef, escBb) and srcVar = srcDef.getSourceVariable() and - forall(SourceVariable t | relevantSplit(srcVar, t) | - sourceReachesBlockWithTrackedVar(srcDef, srcBb, escDef, escBb, _, _, _, t) + forall(SourceVariable t, GuardValue condgv | relevantSplit(srcVar, t, condgv) | + sourceReachesBlockWithTrackedVar(srcDef, srcBb, escDef, escBb, _, _, _, t, condgv) ) ) } diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index 0bbfb29e4e64..668fb60655c9 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -259,6 +259,9 @@ module Make< ) } + /** Holds if this value represents a single concrete value. */ + predicate isSingleton() { this = TValue(_, true) } + /** Holds if this value represents `null`. */ predicate isNullValue() { this.isNullness(true) } diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index ab574bfdbac6..a0158fea04f4 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.15 +version: 2.0.16 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index 1a867888e89d..13be0b19eb2e 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.16 + +No user-facing changes. + ## 2.0.15 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.0.16.md b/shared/dataflow/change-notes/released/2.0.16.md new file mode 100644 index 000000000000..221400d393f2 --- /dev/null +++ b/shared/dataflow/change-notes/released/2.0.16.md @@ -0,0 +1,3 @@ +## 2.0.16 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 0377ae283a31..c10461a785cf 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.15 +lastReleaseVersion: 2.0.16 diff --git a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll index 3eda6709517c..6cc9d6f88a45 100644 --- a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll @@ -709,6 +709,9 @@ module Make< this = TConsSummaryComponentStack(result, _) } + /** Gets the head of this stack if it is a singleton. */ + SummaryComponent headOfSingleton() { this = TSingletonSummaryComponentStack(result) } + /** Gets the tail of this stack, if any. */ SummaryComponentStack tail() { this = TConsSummaryComponentStack(_, result) } @@ -1206,12 +1209,12 @@ module Make< * Holds if this node is an exit node, i.e. after all stores have been performed. * * A local flow step should be added from this node to a data flow node representing - * `sc` inside `source`. + * `s` inside `source`. */ - predicate isExit(SourceElement source, SummaryComponent sc, string model) { + predicate isExit(SourceElement source, SummaryComponentStack s, string model) { source = source_ and model = model_ and - state_.isSourceOutputState(source, TSingletonSummaryComponentStack(sc), _, model) + state_.isSourceOutputState(source, s, _, model) } override predicate isHidden() { not this.isEntry(_, _) } @@ -1460,7 +1463,7 @@ module Make< DataFlowType getSyntheticGlobalType(SyntheticGlobal sg); - DataFlowType getSourceType(SourceBase source, SummaryComponent sc); + DataFlowType getSourceType(SourceBase source, SummaryComponentStack sc); DataFlowType getSinkType(SinkBase sink, SummaryComponent sc); } @@ -1543,9 +1546,9 @@ module Make< ) or exists(SourceElement source | - exists(SummaryComponent sc | - n.(SourceOutputNode).isExit(source, sc, _) and - result = getSourceType(source, sc) + exists(SummaryComponentStack s | + n.(SourceOutputNode).isExit(source, s, _) and + result = getSourceType(source, s) ) or exists(SummaryComponentStack s, ContentSet cont | @@ -1574,13 +1577,16 @@ module Make< /** Gets a call that targets summarized callable `sc`. */ DataFlowCall getACall(SummarizedCallable sc); + /** Gets the enclosing callable of `source`. */ + DataFlowCallable getSourceNodeEnclosingCallable(SourceBase source); + /** - * Gets a data flow node corresponding to the `sc` part of `source`. + * Gets a data flow node corresponding to the `s` part of `source`. * - * `sc` is typically `ReturnValue` and the result is the node that + * `s` is typically `ReturnValue` and the result is the node that * represents the return value of `source`. */ - Node getSourceNode(SourceBase source, SummaryComponent sc); + Node getSourceNode(SourceBase source, SummaryComponentStack s); /** * Gets a data flow node corresponding to the `sc` part of `sink`. @@ -1622,13 +1628,20 @@ module Make< ) } - predicate sourceLocalStep(SourceOutputNode nodeFrom, Node nodeTo, string model) { - exists(SummaryComponent sc, SourceElement source | + predicate sourceStep(SourceOutputNode nodeFrom, Node nodeTo, string model, boolean local) { + exists(SummaryComponentStack sc, SourceElement source | nodeFrom.isExit(source, sc, model) and - nodeTo = StepsInput::getSourceNode(source, sc) + nodeTo = StepsInput::getSourceNode(source, sc) and + if StepsInput::getSourceNodeEnclosingCallable(source) = getNodeEnclosingCallable(nodeTo) + then local = true + else local = false ) } + predicate sourceLocalStep(SourceOutputNode nodeFrom, Node nodeTo, string model) { + sourceStep(nodeFrom, nodeTo, model, true) + } + predicate sinkLocalStep(Node nodeFrom, SinkInputNode nodeTo, string model) { exists(SummaryComponent sc, SinkElement sink | nodeFrom = StepsInput::getSinkNode(sink, sc) and @@ -1689,6 +1702,10 @@ module Make< ) } + predicate sourceJumpStep(SourceOutputNode nodeFrom, Node nodeTo) { + sourceStep(nodeFrom, nodeTo, _, false) + } + /** * Holds if values stored inside content `c` are cleared at `n`. `n` is a * synthesized summary node, so in order for values to be cleared at calls diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 9799550c8361..3e46004181ff 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.15 +version: 2.0.16 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index e6cf183a1d4d..9979556a4214 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.32 + +No user-facing changes. + ## 1.0.31 No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.32.md b/shared/mad/change-notes/released/1.0.32.md new file mode 100644 index 000000000000..05c4073731c4 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.32.md @@ -0,0 +1,3 @@ +## 1.0.32 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index f5bdc98ffc82..7bc5c51ba7bf 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.31 +lastReleaseVersion: 1.0.32 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index e974c131a88b..1aaa401b7505 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.31 +version: 1.0.32 groups: shared library: true dependencies: diff --git a/shared/quantum/CHANGELOG.md b/shared/quantum/CHANGELOG.md index a59e560c4155..1857b399fe88 100644 --- a/shared/quantum/CHANGELOG.md +++ b/shared/quantum/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.10 + +No user-facing changes. + ## 0.0.9 No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.10.md b/shared/quantum/change-notes/released/0.0.10.md new file mode 100644 index 000000000000..22391080fd45 --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.10.md @@ -0,0 +1,3 @@ +## 0.0.10 + +No user-facing changes. diff --git a/shared/quantum/codeql-pack.release.yml b/shared/quantum/codeql-pack.release.yml index ecdd64fbab86..b740014e5aed 100644 --- a/shared/quantum/codeql-pack.release.yml +++ b/shared/quantum/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.9 +lastReleaseVersion: 0.0.10 diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 8f5a9260f27a..bf877f51d5fa 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.9 +version: 0.0.10 groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 104664809001..50ea4c310f68 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.32 + +No user-facing changes. + ## 1.0.31 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.32.md b/shared/rangeanalysis/change-notes/released/1.0.32.md new file mode 100644 index 000000000000..05c4073731c4 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.32.md @@ -0,0 +1,3 @@ +## 1.0.32 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index f5bdc98ffc82..7bc5c51ba7bf 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.31 +lastReleaseVersion: 1.0.32 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index bea42fd1b619..5e9de8ad5131 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.31 +version: 1.0.32 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 3b3fcb5a55f7..830e0da6f287 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.32 + +No user-facing changes. + ## 1.0.31 No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.32.md b/shared/regex/change-notes/released/1.0.32.md new file mode 100644 index 000000000000..05c4073731c4 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.32.md @@ -0,0 +1,3 @@ +## 1.0.32 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index f5bdc98ffc82..7bc5c51ba7bf 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.31 +lastReleaseVersion: 1.0.32 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 28cdc4285882..f69602228c9a 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.31 +version: 1.0.32 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index e7e17bf044b2..8e4b1482e78b 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.8 + +No user-facing changes. + ## 2.0.7 No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.8.md b/shared/ssa/change-notes/released/2.0.8.md new file mode 100644 index 000000000000..4d6867c721bf --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.8.md @@ -0,0 +1,3 @@ +## 2.0.8 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index 08d5e9594498..7ffb2d9f65be 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.7 +lastReleaseVersion: 2.0.8 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index a944c9d7ab4c..bbccd5e094c6 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.7 +version: 2.0.8 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index d50406235570..331bb4c220e0 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.32 + +No user-facing changes. + ## 1.0.31 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.32.md b/shared/threat-models/change-notes/released/1.0.32.md new file mode 100644 index 000000000000..05c4073731c4 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.32.md @@ -0,0 +1,3 @@ +## 1.0.32 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index f5bdc98ffc82..7bc5c51ba7bf 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.31 +lastReleaseVersion: 1.0.32 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 005cbadd38b1..10ca1546f9f7 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.31 +version: 1.0.32 library: true groups: shared dataExtensions: diff --git a/shared/tree-sitter-extractor/Cargo.toml b/shared/tree-sitter-extractor/Cargo.toml index e47ef3577e24..8e60be7274f9 100644 --- a/shared/tree-sitter-extractor/Cargo.toml +++ b/shared/tree-sitter-extractor/Cargo.toml @@ -10,14 +10,14 @@ flate2 = "1.1" globset = "0.4" tree-sitter = ">= 0.23.0" tracing = "0.1" -tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } -rayon = "1.10.0" -regex = "1.11.1" +tracing-subscriber = { version = "0.3.20", features = ["env-filter"] } +rayon = "1.11.0" +regex = "1.11.2" encoding = "0.2" lazy_static = "1.5.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -chrono = { version = "0.4.41", features = ["serde"] } +chrono = { version = "0.4.42", features = ["serde"] } num_cpus = "1.17.0" zstd = "0.13.3" diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index f4a80412ca8c..6f6d29c25040 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.32 + +No user-facing changes. + ## 1.0.31 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.32.md b/shared/tutorial/change-notes/released/1.0.32.md new file mode 100644 index 000000000000..05c4073731c4 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.32.md @@ -0,0 +1,3 @@ +## 1.0.32 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index f5bdc98ffc82..7bc5c51ba7bf 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.31 +lastReleaseVersion: 1.0.32 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 09f9013ac103..ce733dcd8b26 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 1.0.31 +version: 1.0.32 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/CHANGELOG.md b/shared/typeflow/CHANGELOG.md index bf4296980228..592596c37d21 100644 --- a/shared/typeflow/CHANGELOG.md +++ b/shared/typeflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.32 + +No user-facing changes. + ## 1.0.31 No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.32.md b/shared/typeflow/change-notes/released/1.0.32.md new file mode 100644 index 000000000000..05c4073731c4 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.32.md @@ -0,0 +1,3 @@ +## 1.0.32 + +No user-facing changes. diff --git a/shared/typeflow/codeql-pack.release.yml b/shared/typeflow/codeql-pack.release.yml index f5bdc98ffc82..7bc5c51ba7bf 100644 --- a/shared/typeflow/codeql-pack.release.yml +++ b/shared/typeflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.31 +lastReleaseVersion: 1.0.32 diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index b777138b0008..d665055f1253 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.31 +version: 1.0.32 groups: shared library: true dependencies: diff --git a/shared/typeinference/CHANGELOG.md b/shared/typeinference/CHANGELOG.md index 83a42fb05515..29ece641a7e3 100644 --- a/shared/typeinference/CHANGELOG.md +++ b/shared/typeinference/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.13 + +No user-facing changes. + ## 0.0.12 No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.13.md b/shared/typeinference/change-notes/released/0.0.13.md new file mode 100644 index 000000000000..f679eaf0313a --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.13.md @@ -0,0 +1,3 @@ +## 0.0.13 + +No user-facing changes. diff --git a/shared/typeinference/codeql-pack.release.yml b/shared/typeinference/codeql-pack.release.yml index 997fb8da83cd..044e54e4f7e5 100644 --- a/shared/typeinference/codeql-pack.release.yml +++ b/shared/typeinference/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.12 +lastReleaseVersion: 0.0.13 diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index 5fd940634b31..8a7bfdca9756 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.12 +version: 0.0.13 groups: shared library: true dependencies: diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 1372c8c89ea1..6b132f75a558 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.16 + +No user-facing changes. + ## 2.0.15 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.16.md b/shared/typetracking/change-notes/released/2.0.16.md new file mode 100644 index 000000000000..221400d393f2 --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.16.md @@ -0,0 +1,3 @@ +## 2.0.16 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index 0377ae283a31..c10461a785cf 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.15 +lastReleaseVersion: 2.0.16 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index f982bade08da..4e24584b50e9 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.15 +version: 2.0.16 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index c44b941f9e33..2661fcc93085 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.32 + +No user-facing changes. + ## 1.0.31 No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.32.md b/shared/typos/change-notes/released/1.0.32.md new file mode 100644 index 000000000000..05c4073731c4 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.32.md @@ -0,0 +1,3 @@ +## 1.0.32 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index f5bdc98ffc82..7bc5c51ba7bf 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.31 +lastReleaseVersion: 1.0.32 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 8885de0dbd06..b13ab265b257 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.31 +version: 1.0.32 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index d9169a8d5d87..3ded7f7af706 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.19 + +No user-facing changes. + ## 2.0.18 No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.19.md b/shared/util/change-notes/released/2.0.19.md new file mode 100644 index 000000000000..b37b6798b125 --- /dev/null +++ b/shared/util/change-notes/released/2.0.19.md @@ -0,0 +1,3 @@ +## 2.0.19 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index 16342205c738..4aecf1e1f86f 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.18 +lastReleaseVersion: 2.0.19 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 703dee01cba4..2352753b4724 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.18 +version: 2.0.19 groups: shared library: true dependencies: null diff --git a/shared/xml/CHANGELOG.md b/shared/xml/CHANGELOG.md index 59ae3e2581a1..2c1d2132c7e1 100644 --- a/shared/xml/CHANGELOG.md +++ b/shared/xml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.32 + +No user-facing changes. + ## 1.0.31 No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.32.md b/shared/xml/change-notes/released/1.0.32.md new file mode 100644 index 000000000000..05c4073731c4 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.32.md @@ -0,0 +1,3 @@ +## 1.0.32 + +No user-facing changes. diff --git a/shared/xml/codeql-pack.release.yml b/shared/xml/codeql-pack.release.yml index f5bdc98ffc82..7bc5c51ba7bf 100644 --- a/shared/xml/codeql-pack.release.yml +++ b/shared/xml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.31 +lastReleaseVersion: 1.0.32 diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 6b8d051c622a..680cc4751ef5 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.31 +version: 1.0.32 groups: shared library: true dependencies: diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 2254f38fb9ff..31243ec36be5 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.32 + +No user-facing changes. + ## 1.0.31 No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.32.md b/shared/yaml/change-notes/released/1.0.32.md new file mode 100644 index 000000000000..05c4073731c4 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.32.md @@ -0,0 +1,3 @@ +## 1.0.32 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index f5bdc98ffc82..7bc5c51ba7bf 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.31 +lastReleaseVersion: 1.0.32 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index b443b23dac2d..1c625bfdf4ae 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.31 +version: 1.0.32 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index 7138ed02a2b1..eb3b3da96897 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.0.8 + +No user-facing changes. + ## 5.0.7 ### Minor Analysis Improvements diff --git a/swift/ql/lib/change-notes/released/5.0.8.md b/swift/ql/lib/change-notes/released/5.0.8.md new file mode 100644 index 000000000000..9c73f4b13411 --- /dev/null +++ b/swift/ql/lib/change-notes/released/5.0.8.md @@ -0,0 +1,3 @@ +## 5.0.8 + +No user-facing changes. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index accf4086d8ac..c608aca69694 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.0.7 +lastReleaseVersion: 5.0.8 diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll b/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll index cb889baaebc2..46e2e63f2cab 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll @@ -113,7 +113,9 @@ private import Make as Imp private module StepsInput implements Impl::Private::StepsInputSig { DataFlowCall getACall(Public::SummarizedCallable sc) { result.asCall().getStaticTarget() = sc } - Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponent sc) { none() } + DataFlowCallable getSourceNodeEnclosingCallable(Input::SourceBase source) { none() } + + Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { none() } Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { none() } } diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 6069c9b7ab1a..a05b05e1eea9 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 5.0.7 +version: 5.0.8 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index eac658646174..be2f79710a9c 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.2.6 + +No user-facing changes. + ## 1.2.5 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.2.6.md b/swift/ql/src/change-notes/released/1.2.6.md new file mode 100644 index 000000000000..0832850ff8c2 --- /dev/null +++ b/swift/ql/src/change-notes/released/1.2.6.md @@ -0,0 +1,3 @@ +## 1.2.6 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 40355f0807f9..24962f7ba24b 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.2.5 +lastReleaseVersion: 1.2.6 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 61d22677b832..3dbc93c16d32 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.5 +version: 1.2.6 groups: - swift - queries