From ab75d9950c6d06c921d9741182cc3de278fec276 Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 15 Apr 2026 12:54:41 +0000 Subject: [PATCH 001/167] Cargo: upgrade dependencies --- Cargo.lock | 1527 +++++++++++------------ ruby/extractor/Cargo.toml | 10 +- rust/ast-generator/Cargo.toml | 8 +- rust/extractor/Cargo.toml | 50 +- rust/extractor/macros/Cargo.toml | 4 +- shared/tree-sitter-extractor/Cargo.toml | 10 +- 6 files changed, 791 insertions(+), 818 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b6456c841063..71a3dd0eabdd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,9 +10,9 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -34,9 +34,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.20" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -49,26 +49,26 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -84,15 +84,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.100" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "argfile" -version = "0.2.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a1cc0ba69de57db40674c66f7cf2caee3981ddef084388482c95c0e2133e5e8" +checksum = "99489a733dea0d2930bfa59c243146a8513ce7b0991b9d006647687cc61f53e7" dependencies = [ "fs-err", "os_str_bytes", @@ -110,7 +110,7 @@ version = "0.1.0" dependencies = [ "anyhow", "either", - "itertools 0.14.0", + "itertools", "mustache", "proc-macro2", "quote", @@ -128,6 +128,15 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + [[package]] name = "autocfg" version = "1.5.0" @@ -148,16 +157,17 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" [[package]] name = "borsh" -version = "1.5.7" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" +checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" dependencies = [ + "bytes", "cfg_aliases", ] @@ -190,48 +200,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" [[package]] -name = "camino" -version = "1.1.12" +name = "byteorder" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5" -dependencies = [ - "serde", -] +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] -name = "cargo-platform" -version = "0.2.0" +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" + +[[package]] +name = "camino" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84982c6c0ae343635a3a4ee6dedef965513735c8b183caa7289fa6e27399ebd4" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" dependencies = [ - "serde", + "serde_core", ] [[package]] -name = "cargo-util-schemas" -version = "0.8.2" +name = "cargo-platform" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dc1a6f7b5651af85774ae5a34b4e8be397d9cf4bc063b7e6dbd99a841837830" +checksum = "87a0c0e6148f11f01f32650a2ea02d532b2ad4e81d8bd41e6e565b5adc5e6082" dependencies = [ - "semver", "serde", - "serde-untagged", - "serde-value", - "thiserror", - "toml 0.8.23", - "unicode-xid", - "url", + "serde_core", ] [[package]] name = "cargo_metadata" -version = "0.21.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cfca2aaa699835ba88faf58a06342a314a950d2b9686165e038286c30316868" +checksum = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9" dependencies = [ "camino", "cargo-platform", - "cargo-util-schemas", "semver", "serde", "serde_json", @@ -240,9 +246,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.37" +version = "1.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" +checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20" dependencies = [ "find-msvc-tools", "jobserver", @@ -252,9 +258,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -263,15 +269,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] -name = "chalk-derive" -version = "0.103.0" +name = "chacha20" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb4899682de915ca7c0b025bdd0a3d34c75fe12184122fda6805a7baddaa293c" +checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", + "cfg-if", + "cpufeatures", + "rand_core", ] [[package]] @@ -286,60 +291,21 @@ dependencies = [ "synstructure", ] -[[package]] -name = "chalk-ir" -version = "0.103.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90a37d2ab99352b4caca135061e7b4ac67024b648c28ed0b787feec4bea4caed" -dependencies = [ - "bitflags 2.9.4", - "chalk-derive 0.103.0", -] - [[package]] name = "chalk-ir" version = "0.104.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7047a516de16226cd17344d41a319d0ea1064bf9e60bd612ab341ab4a34bbfa8" dependencies = [ - "bitflags 2.9.4", - "chalk-derive 0.104.0", -] - -[[package]] -name = "chalk-recursive" -version = "0.103.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c855be60e646664bc37c2496d3dc81ca5ef60520930e5e0f0057a0575aff6c19" -dependencies = [ - "chalk-derive 0.103.0", - "chalk-ir 0.103.0", - "chalk-solve", - "rustc-hash 1.1.0", - "tracing", -] - -[[package]] -name = "chalk-solve" -version = "0.103.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "477ac6cdfd2013e9f93b09b036c2b607a67b2e728f4777b8422d55a79e9e3a34" -dependencies = [ - "chalk-derive 0.103.0", - "chalk-ir 0.103.0", - "ena", - "indexmap 2.11.4", - "itertools 0.12.1", - "petgraph", - "rustc-hash 1.1.0", - "tracing", + "bitflags 2.11.1", + "chalk-derive", ] [[package]] name = "chrono" -version = "0.4.42" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ "iana-time-zone", "js-sys", @@ -351,9 +317,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.48" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" +checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" dependencies = [ "clap_builder", "clap_derive", @@ -361,9 +327,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.48" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", @@ -373,9 +339,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.47" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" dependencies = [ "heck", "proc-macro2", @@ -385,9 +351,18 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.5" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" + +[[package]] +name = "cobs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror", +] [[package]] name = "codeql-autobuilder-rust" @@ -443,14 +418,14 @@ version = "0.1.0" dependencies = [ "anyhow", "argfile", - "chalk-ir 0.104.0", + "chalk-ir", "chrono", "clap", "codeql-extractor", "dunce", "figment", "glob", - "itertools 0.14.0", + "itertools", "mustache", "num-traits", "ra_ap_base_db", @@ -472,7 +447,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "toml 0.9.7", + "toml 1.1.2+spec-1.1.0", "tracing", "tracing-flame", "tracing-subscriber", @@ -481,9 +456,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "core-foundation-sys" @@ -503,6 +478,15 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f1d92727879fb4f24cec33a35e3bff74035541326cbc12ad44ba8886d1927b0" +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.5.0" @@ -512,6 +496,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crossbeam-channel" version = "0.5.15" @@ -557,9 +547,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "darling" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ "darling_core", "darling_macro", @@ -567,11 +557,10 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ - "fnv", "ident_case", "proc-macro2", "quote", @@ -581,9 +570,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core", "quote", @@ -615,16 +604,22 @@ dependencies = [ ] [[package]] -name = "displaydoc" -version = "0.2.5" +name = "derive-where" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "d08b3a0bcc0d079199cd476b2cae8435016ec11d1c0986c6901c5ac223041534" dependencies = [ "proc-macro2", "quote", "syn", ] +[[package]] +name = "dissimilar" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" + [[package]] name = "drop_bomb" version = "0.1.5" @@ -649,13 +644,25 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + [[package]] name = "ena" version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" dependencies = [ - "log 0.4.28", + "log 0.4.29", ] [[package]] @@ -728,16 +735,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" -[[package]] -name = "erased-serde" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" -dependencies = [ - "serde", - "typeid", -] - [[package]] name = "figment" version = "0.10.19" @@ -754,15 +751,15 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.1" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixedbitset" -version = "0.4.2" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" @@ -774,32 +771,17 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - [[package]] name = "foldhash" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" -[[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 = "fs-err" -version = "2.11.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +checksum = "73fde052dbfc920003cfd2c8e2c6e6d4cc7c1091538c3a24226cec0665ab08c0" dependencies = [ "autocfg", ] @@ -821,14 +803,28 @@ checksum = "7ab85b9b05e3978cc9a9cf8fea7f01b494e1a09ed3037e16ba39edc7a29eb61a" [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi 5.3.0", + "wasip2", +] + +[[package]] +name = "getrandom" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", "libc", - "r-efi", - "wasi 0.14.5+wasi-0.2.4", + "r-efi 6.0.0", + "rand_core", + "wasip2", + "wasip3", ] [[package]] @@ -845,11 +841,20 @@ checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" dependencies = [ "aho-corasick", "bstr", - "log 0.4.28", + "log 0.4.29", "regex-automata", "regex-syntax", ] +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -873,6 +878,12 @@ dependencies = [ "foldhash", ] +[[package]] +name = "hashbrown" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" + [[package]] name = "hashlink" version = "0.10.0" @@ -882,6 +893,20 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "heapless" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32", + "rustc_version", + "serde", + "spin", + "stable_deref_trait", +] + [[package]] name = "heck" version = "0.5.0" @@ -902,11 +927,11 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "home" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.0", ] [[package]] @@ -919,7 +944,7 @@ dependencies = [ "core-foundation-sys", "iana-time-zone-haiku", "js-sys", - "log 0.4.28", + "log 0.4.29", "wasm-bindgen", "windows-core", ] @@ -934,90 +959,10 @@ dependencies = [ ] [[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" +name = "id-arena" +version = "2.3.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", -] +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" [[package]] name = "ident_case" @@ -1025,27 +970,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -[[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 = "1.9.3" @@ -1059,12 +983,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.4" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.17.0", "serde", "serde_core", ] @@ -1081,7 +1005,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.11.1", "inotify-sys", "libc", ] @@ -1105,19 +1029,19 @@ dependencies = [ ] [[package]] -name = "is_terminal_polyfill" -version = "1.70.1" +name = "inventory" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" +dependencies = [ + "rustversion", +] [[package]] -name = "itertools" -version = "0.12.1" +name = "is_terminal_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -1130,9 +1054,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jobserver" @@ -1140,7 +1064,7 @@ version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom", + "getrandom 0.3.4", "libc", ] @@ -1192,11 +1116,17 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" -version = "0.2.175" +version = "0.2.185" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f" [[package]] name = "line-index" @@ -1208,12 +1138,6 @@ dependencies = [ "text-size", ] -[[package]] -name = "litemap" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" - [[package]] name = "lock_api" version = "0.4.13" @@ -1230,14 +1154,14 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.28", + "log 0.4.29", ] [[package]] name = "log" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "matchers" @@ -1250,9 +1174,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "memoffset" @@ -1274,14 +1198,14 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.4" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" dependencies = [ "libc", - "log 0.4.28", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "log 0.4.29", + "wasi", + "windows-sys 0.61.0", ] [[package]] @@ -1315,12 +1239,12 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.11.1", "fsevent-sys", "inotify", "kqueue", "libc", - "log 0.4.28", + "log 0.4.29", "mio", "notify-types", "walkdir", @@ -1344,9 +1268,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] name = "num-traits" @@ -1367,11 +1291,20 @@ dependencies = [ "libc", ] +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "once_cell_polyfill" @@ -1385,15 +1318,6 @@ version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" -[[package]] -name = "ordered-float" -version = "2.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" -dependencies = [ - "num-traits", -] - [[package]] name = "os_str_bytes" version = "7.1.1" @@ -1403,16 +1327,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "papaya" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92dd0b07c53a0a0c764db2ace8c541dc47320dad97c2200c2a637ab9dd2328f" -dependencies = [ - "equivalent", - "seize", -] - [[package]] name = "parking_lot" version = "0.12.4" @@ -1459,17 +1373,11 @@ dependencies = [ "syn", ] -[[package]] -name = "percent-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - [[package]] name = "perf-event" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5396562cd2eaa828445d6d34258ae21ee1eb9d40fe626ca7f51c8dccb4af9d66" +checksum = "b4d6393d9238342159080d79b78cb59c67399a8e7ecfa5d410bd614169e4e823" dependencies = [ "libc", "perf-event-open-sys", @@ -1477,28 +1385,29 @@ dependencies = [ [[package]] name = "perf-event-open-sys" -version = "1.0.1" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce9bedf5da2c234fdf2391ede2b90fabf585355f33100689bc364a3ea558561a" +checksum = "7c44fb1c7651a45a3652c4afc6e754e40b3d6e6556f1487e2b230bfc4f33c2a8" dependencies = [ "libc", ] [[package]] name = "petgraph" -version = "0.6.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset", - "indexmap 2.11.4", + "hashbrown 0.15.5", + "indexmap 2.14.0", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" @@ -1513,12 +1422,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] -name = "potential_utf" -version = "0.1.3" +name = "postcard" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ - "zerovec", + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "heapless", + "serde", ] [[package]] @@ -1528,19 +1441,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] -name = "ppv-lite86" -version = "0.2.21" +name = "prettyplease" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ - "zerocopy", + "proc-macro2", + "syn", ] [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] @@ -1560,9 +1474,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.41" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -1573,42 +1487,53 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "ra-ap-rustc_abi" -version = "0.123.0" +version = "0.143.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f18c877575c259d127072e9bfc41d985202262fb4d6bfdae3d1252147c2562c2" +checksum = "1d49dbe5d570793b3c3227972a6ac85fc3e830f09b32c3cb3b68cfceebad3b0a" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.11.1", "ra-ap-rustc_hashes", "ra-ap-rustc_index", "tracing", ] +[[package]] +name = "ra-ap-rustc_ast_ir" +version = "0.143.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0956db62c264a899d15667993cbbd2e8f0b02108712217e2579c61ac30b94b" + [[package]] name = "ra-ap-rustc_hashes" -version = "0.123.0" +version = "0.143.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2439ed1df3472443133b66949f81080dff88089b42f825761455463709ee1cad" +checksum = "7df512084c24f4c96c8cc9a59cbd264301efbc8913d3759b065398024af316c9" dependencies = [ "rustc-stable-hash", ] [[package]] name = "ra-ap-rustc_index" -version = "0.123.0" +version = "0.143.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a24fe0be21be1f8ebc21dcb40129214fb4cefb0f2753f3d46b6dbe656a1a45" +checksum = "bca3a49a928d38ba7927605e5909b6abe77d09ff359e4695c070c3f91d69cc8a" dependencies = [ "ra-ap-rustc_index_macros", - "smallvec", ] [[package]] name = "ra-ap-rustc_index_macros" -version = "0.123.0" +version = "0.143.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "844a27ddcad0116facae2df8e741fd788662cf93dc13029cd864f2b8013b81f9" +checksum = "4463e908a62c64c2a65c1966c2f4995d0e1f8b7dfc85a8b8de2562edf3d89070" dependencies = [ "proc-macro2", "quote", @@ -1617,9 +1542,9 @@ dependencies = [ [[package]] name = "ra-ap-rustc_lexer" -version = "0.121.0" +version = "0.143.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22944e31fb91e9b3e75bcbc91e37d958b8c0825a6160927f2856831d2ce83b36" +checksum = "228e01e1b237adb4bd8793487e1c37019c1e526a8f93716d99602301be267056" dependencies = [ "memchr", "unicode-properties", @@ -1627,47 +1552,81 @@ dependencies = [ ] [[package]] -name = "ra-ap-rustc_lexer" -version = "0.123.0" +name = "ra-ap-rustc_next_trait_solver" +version = "0.143.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b734cfcb577d09877799a22742f1bd398be6c00bc428d9de56d48d11ece5771" +checksum = "10d6f91143011d474bb844d268b0784c6a4c6db57743558b83f5ad34511627f1" dependencies = [ - "memchr", - "unicode-properties", - "unicode-xid", + "derive-where", + "ra-ap-rustc_index", + "ra-ap-rustc_type_ir", + "ra-ap-rustc_type_ir_macros", + "tracing", ] [[package]] name = "ra-ap-rustc_parse_format" -version = "0.121.0" +version = "0.143.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81057891bc2063ad9e353f29462fbc47a0f5072560af34428ae9313aaa5e9d97" +checksum = "37fa8effbc436c0ddd9d7b1421aa3cccf8b94566c841c4e4aa3e09063b8f423f" dependencies = [ - "ra-ap-rustc_lexer 0.121.0", - "rustc-literal-escaper", + "ra-ap-rustc_lexer", + "rustc-literal-escaper 0.0.5", ] [[package]] name = "ra-ap-rustc_pattern_analysis" -version = "0.123.0" +version = "0.143.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b0ee1f059b9dea0818c6c7267478926eee95ba4c7dcf89c8db32fa165d3904" +checksum = "883c843fc27847ad03b8e772dd4a2d2728af4333a6d6821a22dfcfe7136dff3e" dependencies = [ "ra-ap-rustc_index", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "rustc_apfloat", "smallvec", "tracing", ] +[[package]] +name = "ra-ap-rustc_type_ir" +version = "0.143.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a86e33c46b2b261a173b23f207461a514812a8b2d2d7935bbc685f733eacce10" +dependencies = [ + "arrayvec", + "bitflags 2.11.1", + "derive-where", + "ena", + "indexmap 2.14.0", + "ra-ap-rustc_ast_ir", + "ra-ap-rustc_index", + "ra-ap-rustc_type_ir_macros", + "rustc-hash 2.1.2", + "smallvec", + "thin-vec", + "tracing", +] + +[[package]] +name = "ra-ap-rustc_type_ir_macros" +version = "0.143.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15034c2fcaa5cf302aea6db20eda0f71fffeb0b372d6073cc50f940e974a2a47" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "ra_ap_base_db" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e876bb2c3e52a8d4e6684526a2d4e81f9d028b939ee4dc5dc775fe10deb44d59" +checksum = "b1567168e7c7b50acf2ffb87bde8937986d4f41c777a2c308298ede9d555c96c" dependencies = [ "dashmap", - "indexmap 2.11.4", + "indexmap 2.14.0", "la-arena", "ra_ap_cfg", "ra_ap_intern", @@ -1675,7 +1634,7 @@ dependencies = [ "ra_ap_span", "ra_ap_syntax", "ra_ap_vfs", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "salsa", "salsa-macros", "semver", @@ -1685,32 +1644,33 @@ dependencies = [ [[package]] name = "ra_ap_cfg" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a0b56eb4536ce6d2431932c4d337aeeaf7bb22c9249b38cbe80677b5881228f" +checksum = "1e1fc8d53014b0ec4c06c9dbf0a810ccd67b3a96de4ef06bd1a248c2295b6a37" dependencies = [ "ra_ap_intern", + "ra_ap_syntax", "ra_ap_tt", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "tracing", ] [[package]] name = "ra_ap_edition" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bdc6cbe42c63ca78611bae82bfc8db24864f33dccc813697c5fde43a0907285" +checksum = "627a8ce8e870632395b7bf053c93039a3d91dda744ccae166ac83650572cfaa2" [[package]] name = "ra_ap_hir" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebffdc134eccabc17209d7760cfff7fd12ed18ab6e21188c5e084b97aa38504c" +checksum = "b77616ef81f690a3eba4befd32112780b99f052676b0e7686a22bf79f3fbe2a8" dependencies = [ "arrayvec", "either", - "indexmap 2.11.4", - "itertools 0.14.0", + "itertools", + "ra-ap-rustc_type_ir", "ra_ap_base_db", "ra_ap_cfg", "ra_ap_hir_def", @@ -1721,7 +1681,8 @@ dependencies = [ "ra_ap_stdx", "ra_ap_syntax", "ra_ap_tt", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", + "serde_json", "smallvec", "tracing", "triomphe", @@ -1729,18 +1690,18 @@ dependencies = [ [[package]] name = "ra_ap_hir_def" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81d2337ef59550392d42aa997aa1105a3d6d1c2b3a583c777786bc4a0a074fd5" +checksum = "81504dd727efbaf48704a9c0e18e6491cb9848428376ad37146f37f63571ab3c" dependencies = [ "arrayvec", - "bitflags 2.9.4", + "bitflags 2.11.1", "cov-mark", "drop_bomb", "either", "fst", - "indexmap 2.11.4", - "itertools 0.14.0", + "indexmap 2.14.0", + "itertools", "la-arena", "ra-ap-rustc_abi", "ra-ap-rustc_parse_format", @@ -1748,18 +1709,17 @@ dependencies = [ "ra_ap_cfg", "ra_ap_hir_expand", "ra_ap_intern", - "ra_ap_mbe", "ra_ap_query-group-macro", "ra_ap_span", "ra_ap_stdx", "ra_ap_syntax", + "ra_ap_syntax-bridge", "ra_ap_tt", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "rustc_apfloat", "salsa", "salsa-macros", "smallvec", - "text-size", "thin-vec", "tracing", "triomphe", @@ -1767,13 +1727,13 @@ dependencies = [ [[package]] name = "ra_ap_hir_expand" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97cf8ececb2743a819d8299a408e17f164dd1a1004d65936b3d5493b55330326" +checksum = "9980623345a88d4431ce80331e640c494e2e59303e82a2cb1290b4684efdc6e5" dependencies = [ "cov-mark", "either", - "itertools 0.14.0", + "itertools", "ra_ap_base_db", "ra_ap_cfg", "ra_ap_intern", @@ -1785,110 +1745,119 @@ dependencies = [ "ra_ap_syntax", "ra_ap_syntax-bridge", "ra_ap_tt", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "salsa", "salsa-macros", "smallvec", + "thin-vec", "tracing", "triomphe", ] [[package]] name = "ra_ap_hir_ty" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc004e1099ba766a61500c27d34eb5cd336430d0a89a9620315a90d7a202a73a" +checksum = "b822d1b9f0168281bbba34e0c5abada891fa9fc5e0b54e86493e8b075a877973" dependencies = [ "arrayvec", - "bitflags 2.9.4", - "chalk-derive 0.103.0", - "chalk-ir 0.103.0", - "chalk-recursive", - "chalk-solve", "cov-mark", "either", "ena", - "indexmap 2.11.4", - "itertools 0.14.0", + "indexmap 2.14.0", + "itertools", "la-arena", "oorandom", + "petgraph", "ra-ap-rustc_abi", + "ra-ap-rustc_ast_ir", "ra-ap-rustc_index", + "ra-ap-rustc_next_trait_solver", "ra-ap-rustc_pattern_analysis", + "ra-ap-rustc_type_ir", "ra_ap_base_db", "ra_ap_hir_def", "ra_ap_hir_expand", "ra_ap_intern", + "ra_ap_macros", "ra_ap_query-group-macro", "ra_ap_span", "ra_ap_stdx", "ra_ap_syntax", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "rustc_apfloat", "salsa", "salsa-macros", - "scoped-tls", + "serde", + "serde_derive", "smallvec", + "thin-vec", "tracing", + "tracing-subscriber", + "tracing-tree", "triomphe", "typed-arena", ] [[package]] name = "ra_ap_ide_db" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2acb572d6dbeb1c96d0339890ba91298b8f5f0ab22648da4ee2b4ab77dbc3fe" +checksum = "0e250964a32be6c74f1f72e0fd8aea08aaed0535d85a7fd315fe442942185da0" dependencies = [ "arrayvec", - "bitflags 2.9.4", + "bitflags 2.11.1", "cov-mark", "crossbeam-channel", "either", "fst", - "indexmap 2.11.4", - "itertools 0.14.0", + "itertools", "line-index", "memchr", "nohash-hasher", "ra_ap_base_db", "ra_ap_hir", + "ra_ap_macros", "ra_ap_parser", "ra_ap_profile", "ra_ap_query-group-macro", "ra_ap_span", "ra_ap_stdx", "ra_ap_syntax", + "ra_ap_test_fixture", + "ra_ap_test_utils", "ra_ap_vfs", "rayon", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "salsa", "salsa-macros", + "smallvec", "tracing", "triomphe", ] [[package]] name = "ra_ap_intern" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14586c2c4781b69fdd0c505972d9bff8c162a8740537a3ee506faff686d9a20d" +checksum = "df7edf9d14d093b4314b43ed75eaf56d47d870a09b8d0e0e67d17919c30bfb0f" dependencies = [ "dashmap", "hashbrown 0.14.5", - "rustc-hash 2.1.1", + "rayon", + "rustc-hash 2.1.2", "triomphe", ] [[package]] name = "ra_ap_load-cargo" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50ce5546b3e3414507ab4d12348d0a28748062e33a1448895c68466d0b015503" +checksum = "184cdaabfb66948938aa4b73ee24f7fa57c1292292c1d87bcad2c616cbd254ea" dependencies = [ "anyhow", "crossbeam-channel", - "itertools 0.14.0", + "itertools", "ra_ap_hir_expand", "ra_ap_ide_db", "ra_ap_intern", @@ -1901,60 +1870,78 @@ dependencies = [ "tracing", ] +[[package]] +name = "ra_ap_macros" +version = "0.0.328" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd338f982b2f7438ee89ca2429ad7181f2f0751fa6b98d8275905c97e2fb8361" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "ra_ap_mbe" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67333c6405797cb64aafb994b9a179157b30beeda2352e203e800be2b184a22d" +checksum = "81d4c7114f2363c05b6dc7f5f6cdd6c9d6a1ba63410b0cdc80c81d1414da7c72" dependencies = [ "arrayvec", + "bitflags 2.11.1", "cov-mark", - "ra-ap-rustc_lexer 0.123.0", + "ra-ap-rustc_lexer", "ra_ap_intern", "ra_ap_parser", "ra_ap_span", "ra_ap_stdx", "ra_ap_syntax-bridge", "ra_ap_tt", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", + "salsa", "smallvec", ] [[package]] name = "ra_ap_parser" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a3b92b8b147c0826b83e70ad44e3c98e94201fc93e1f09396c43b4d7958c22a" +checksum = "c9851f3b6e93971e6c3957966a07154bc35e0f91c0a6980ad71965620df6f737" dependencies = [ "drop_bomb", - "ra-ap-rustc_lexer 0.123.0", + "ra-ap-rustc_lexer", "ra_ap_edition", - "rustc-literal-escaper", + "rustc-literal-escaper 0.0.4", "tracing", + "winnow 0.7.15", ] [[package]] name = "ra_ap_paths" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4991f3d57fac0def7822bebfeb159c8d7b58c824bf82044b765c54f2c0971e2" +checksum = "506bbef9963ca9275dd50f5876d68e32a58d47a369ea10bce2be1c758b081c42" dependencies = [ "camino", ] [[package]] name = "ra_ap_proc_macro_api" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45db9e2df587d56f0738afa89fb2c100ff7c1e9cbe49e07f6a8b62342832211b" +checksum = "18e0229d5c7daa016a8f4f735194e68baf34ca18b73982ae036a8217874f32e9" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.0", + "postcard", "ra_ap_intern", "ra_ap_paths", "ra_ap_span", "ra_ap_stdx", "ra_ap_tt", - "rustc-hash 2.1.1", + "rayon", + "rustc-hash 2.1.2", + "semver", "serde", "serde_derive", "serde_json", @@ -1963,9 +1950,9 @@ dependencies = [ [[package]] name = "ra_ap_profile" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19981637b8ee4160e228c815a7fef3944b5c0555d6af41a931be92d68978bc6c" +checksum = "b251c30d8e4df3902a92d10c4899e43403921f72aef12afa2f027a77e4898950" dependencies = [ "cfg-if", "libc", @@ -1975,13 +1962,13 @@ dependencies = [ [[package]] name = "ra_ap_project_model" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bda0769fd6ca949fdd5917acb68ddc2c143745614ddd94ef38b376838611cf8" +checksum = "2b04624412e45c7b0f792859be553182ea2360d8a24bf7162ca212840e683a24" dependencies = [ "anyhow", "cargo_metadata", - "itertools 0.14.0", + "itertools", "la-arena", "ra_ap_base_db", "ra_ap_cfg", @@ -1990,21 +1977,22 @@ dependencies = [ "ra_ap_span", "ra_ap_stdx", "ra_ap_toolchain", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "semver", "serde", "serde_derive", "serde_json", "temp-dir", + "toml 0.9.12+spec-1.1.0", "tracing", "triomphe", ] [[package]] name = "ra_ap_query-group-macro" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f182a4b05f004eabaa83250a5de7ea3a13a92c88f3cbe98bfa1880cd9fbce0a" +checksum = "770079ca5addde33d31b7f3fa8d399f0dc29c26f69642a9d5c2a5e623d8af64d" dependencies = [ "proc-macro2", "quote", @@ -2013,29 +2001,29 @@ dependencies = [ [[package]] name = "ra_ap_span" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6f9fa2de07f5cccf431674b90e82c1fe1ea2339db3b3869eec44d135de09a4" +checksum = "80a523bc8c85155ccd1db35b6855d37729d339c572b7fc0801c459bb8218976b" dependencies = [ "hashbrown 0.14.5", "la-arena", "ra_ap_stdx", "ra_ap_syntax", "ra_ap_vfs", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "salsa", "text-size", ] [[package]] name = "ra_ap_stdx" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa770adb32896fcba934b464ac3bd179163ba2b0766e275eed5b4e262e08492b" +checksum = "eb22b95e21d08060860056c86af1b47b2cecbac5422baa112d9d138e97c3671a" dependencies = [ "crossbeam-channel", "crossbeam-utils", - "itertools 0.14.0", + "itertools", "jod-thread", "libc", "miow", @@ -2045,17 +2033,18 @@ dependencies = [ [[package]] name = "ra_ap_syntax" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9e1393281ad5c635239d353ed3cfbf28c8d0af03d0c61a3b24b31d1143b17f" +checksum = "ba3d9c469b5635401647b69e01a9930746f08a3cac51d04ad5ae99e66bdd643f" dependencies = [ "either", - "itertools 0.14.0", + "itertools", "ra_ap_parser", "ra_ap_stdx", "rowan", - "rustc-hash 2.1.1", - "rustc-literal-escaper", + "rustc-hash 2.1.2", + "rustc-literal-escaper 0.0.4", + "smallvec", "smol_str", "tracing", "triomphe", @@ -2063,9 +2052,9 @@ dependencies = [ [[package]] name = "ra_ap_syntax-bridge" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684e6ff1008ee5340335888f0453d94bb38950f110059a51f1818c7f6a56a807" +checksum = "b4d3f2e2a1836eeedc2ed2810ece4cdf7ea42284f71b7031eac8448c1cb95b09" dependencies = [ "ra_ap_intern", "ra_ap_parser", @@ -2073,14 +2062,46 @@ dependencies = [ "ra_ap_stdx", "ra_ap_syntax", "ra_ap_tt", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", +] + +[[package]] +name = "ra_ap_test_fixture" +version = "0.0.328" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21d6d353373b4f28f2236ed7843bcee0e4dd0e6a12b339da874460bbefd070ab" +dependencies = [ + "ra_ap_base_db", + "ra_ap_cfg", + "ra_ap_hir_expand", + "ra_ap_intern", + "ra_ap_paths", + "ra_ap_span", + "ra_ap_stdx", + "ra_ap_test_utils", + "ra_ap_tt", + "triomphe", +] + +[[package]] +name = "ra_ap_test_utils" +version = "0.0.328" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d10cbb0402abee7034de5d90ddf7e380d1e21ad0e1dcd2db92c3c87df78723" +dependencies = [ + "dissimilar", + "ra_ap_paths", + "ra_ap_profile", + "ra_ap_stdx", + "rustc-hash 2.1.2", + "text-size", ] [[package]] name = "ra_ap_toolchain" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61969c5f72af03a9837e077c2d939d87a5c863623725c461777c352664a3bb03" +checksum = "2fed946c88a9dfa93de7a376a06493c5377a1052ac666ab9e1155f4ea57271c9" dependencies = [ "camino", "home", @@ -2088,38 +2109,41 @@ dependencies = [ [[package]] name = "ra_ap_tt" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb87c7b35572c18a580ea811e970b94875fad5ac7cfa8644266a59081044f959" +checksum = "96dfc20add2675d38240a7815755b54f514d91b9dc0336cb3d024901af4faeef" dependencies = [ "arrayvec", - "ra-ap-rustc_lexer 0.123.0", + "indexmap 2.14.0", + "ra-ap-rustc_lexer", "ra_ap_intern", + "ra_ap_span", "ra_ap_stdx", + "rustc-hash 2.1.2", "text-size", ] [[package]] name = "ra_ap_vfs" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c174d6b9b7a7f54687df7e00c3e75ed6f082a7943a9afb1d54f33c0c12773de" +checksum = "d69bc10b59435e4d989d10bc0b602a5bd70e1dcc2c5d8513b10585d9e778b440" dependencies = [ "crossbeam-channel", "fst", - "indexmap 2.11.4", + "indexmap 2.14.0", "nohash-hasher", "ra_ap_paths", "ra_ap_stdx", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "tracing", ] [[package]] name = "ra_ap_vfs-notify" -version = "0.0.301" +version = "0.0.328" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f6fce8d47c7ce9b8f2cd0e5a55f8fc4878d6043e61f46cde4391d3a5c6086f" +checksum = "07f7f31bb0c5744ba1fe1b1460eeb62274110dfb94e4b6719cf2e7df9410032d" dependencies = [ "crossbeam-channel", "notify", @@ -2127,45 +2151,33 @@ dependencies = [ "ra_ap_stdx", "ra_ap_vfs", "rayon", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "tracing", "walkdir", ] [[package]] name = "rand" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" -dependencies = [ - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" dependencies = [ - "ppv-lite86", + "chacha20", + "getrandom 0.4.2", "rand_core", ] [[package]] name = "rand_core" -version = "0.9.3" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" -dependencies = [ - "getrandom", -] +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "rayon" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" dependencies = [ "either", "rayon-core", @@ -2187,7 +2199,7 @@ version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.11.1", ] [[package]] @@ -2212,9 +2224,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.3" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", @@ -2224,9 +2236,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.11" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", @@ -2235,15 +2247,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.6" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "rowan" -version = "0.15.15" +version = "0.15.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a58fa8a7ccff2aec4f39cc45bf5f985cec7125ab271cf681c279fd00192b49" +checksum = "62f509095fc8cc0c8c8564016771d458079c11a8d857e65861f045145c0d3208" dependencies = [ "countme", "hashbrown 0.14.5", @@ -2268,9 +2280,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" [[package]] name = "rustc-literal-escaper" @@ -2278,6 +2290,12 @@ version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab03008eb631b703dd16978282ae36c73282e7922fe101a4bd072a40ecea7b8b" +[[package]] +name = "rustc-literal-escaper" +version = "0.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ee29da77c5a54f42697493cd4c9b9f31b74df666a6c04dfc4fde77abe0438b" + [[package]] name = "rustc-stable-hash" version = "0.1.2" @@ -2290,10 +2308,19 @@ version = "0.2.3+llvm-462a31f5a5ab" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "486c2179b4796f65bfe2ee33679acf0927ac83ecf583ad6c91c3b4570911b9ad" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.11.1", "smallvec", ] +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + [[package]] name = "rustversion" version = "1.0.22" @@ -2308,22 +2335,22 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "salsa" -version = "0.23.0" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e235afdb8e510f38a07138fbe5a0b64691894358a9c0cbd813b1aade110efc9" +checksum = "e2e2aa2fca57727371eeafc975acc8e6f4c52f8166a78035543f6ee1c74c2dcc" dependencies = [ "boxcar", "crossbeam-queue", "crossbeam-utils", "hashbrown 0.15.5", "hashlink", - "indexmap 2.11.4", + "indexmap 2.14.0", "intrusive-collections", - "papaya", + "inventory", "parking_lot", "portable-atomic", "rayon", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "salsa-macro-rules", "salsa-macros", "smallvec", @@ -2333,15 +2360,15 @@ dependencies = [ [[package]] name = "salsa-macro-rules" -version = "0.23.0" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2edb86a7e9c91f6d30c9ce054312721dbe773a162db27bbfae834d16177b30ce" +checksum = "1bfc2a1e7bf06964105515451d728f2422dedc3a112383324a00b191a5c397a3" [[package]] name = "salsa-macros" -version = "0.23.0" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0778d6e209051bc4e75acfe83bcd7848601ec3dbe9c3dbb982829020e9128af" +checksum = "3d844c1aa34946da46af683b5c27ec1088a3d9d84a2b837a108223fd830220e1" dependencies = [ "proc-macro2", "quote", @@ -2382,35 +2409,20 @@ dependencies = [ "serde_json", ] -[[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" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "seize" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4b8d813387d566f627f3ea1b914c068aac94c40ae27ec43f5f33bde65abefe7" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - [[package]] name = "semver" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -2423,27 +2435,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-untagged" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34836a629bcbc6f1afdf0907a744870039b1e14c0561cb26094fa683b158eff3" -dependencies = [ - "erased-serde", - "serde", - "typeid", -] - -[[package]] -name = "serde-value" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" -dependencies = [ - "ordered-float", - "serde", -] - [[package]] name = "serde_core" version = "1.0.228" @@ -2466,51 +2457,41 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.0", "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_spanned" -version = "1.0.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5417783452c2be558477e104686f7de5dae53dba813c28435e0e70f82d9b04ee" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] [[package]] name = "serde_with" -version = "3.14.1" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c522100790450cf78eeac1507263d0a350d4d5b30df0c8e1fe051a10c22b376e" +checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f" dependencies = [ "base64", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.4", + "indexmap 2.14.0", "schemars 0.9.0", "schemars 1.0.4", - "serde", - "serde_derive", + "serde_core", "serde_json", "serde_with_macros", "time", @@ -2518,9 +2499,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.14.1" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327ada00f7d64abaac1e55a6911e90cf665aa051b9a561c7006c157f4633135e" +checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" dependencies = [ "darling", "proc-macro2", @@ -2534,7 +2515,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.0", "itoa", "ryu", "serde", @@ -2564,19 +2545,28 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "smol_str" -version = "0.3.2" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9676b89cd56310a87b93dec47b11af744f34d5fc9f367b829474eec0a891350d" +checksum = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523" dependencies = [ "borsh", - "serde", + "serde_core", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", ] [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "streaming-iterator" @@ -2592,9 +2582,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.106" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -2632,18 +2622,18 @@ checksum = "144f754d318415ac792f9d69fc87abbbfc043ce2ef041c60f16ad828f638717d" [[package]] name = "thiserror" -version = "2.0.16" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.16" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", @@ -2661,129 +2651,105 @@ dependencies = [ [[package]] name = "time" -version = "0.3.43" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", + "itoa", + "libc", "num-conv", + "num_threads", "powerfmt", - "serde", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.24" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ "num-conv", "time-core", ] -[[package]] -name = "tinystr" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" -dependencies = [ - "displaydoc", - "zerovec", -] - [[package]] name = "toml" -version = "0.8.23" +version = "0.9.12+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" dependencies = [ - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_edit", + "indexmap 2.14.0", + "serde_core", + "serde_spanned", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 0.7.15", ] [[package]] name = "toml" -version = "0.9.7" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e5e5d9bf2475ac9d4f0d9edab68cc573dc2fd644b0dba36b0c30a92dd9eaa0" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.0", "serde_core", - "serde_spanned 1.0.2", - "toml_datetime 0.7.2", + "serde_spanned", + "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", "toml_writer", - "winnow", + "winnow 1.0.1", ] [[package]] name = "toml_datetime" -version = "0.6.11" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "toml_datetime" -version = "0.7.2" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap 2.11.4", - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_write", - "winnow", -] - [[package]] name = "toml_parser" -version = "1.0.3" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow", + "winnow 1.0.1", ] -[[package]] -name = "toml_write" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" - [[package]] name = "toml_writer" -version = "1.0.3" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d163a63c116ce562a22cda521fcc4d79152e7aba014456fb5eb442f6d6a10109" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -2792,9 +2758,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", @@ -2803,9 +2769,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -2828,16 +2794,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "log 0.4.28", + "log 0.4.29", "once_cell", "tracing-core", ] [[package]] name = "tracing-subscriber" -version = "0.3.20" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -2846,11 +2812,24 @@ dependencies = [ "sharded-slab", "smallvec", "thread_local", + "time", "tracing", "tracing-core", "tracing-log", ] +[[package]] +name = "tracing-tree" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac87aa03b6a4d5a7e4810d1a80c19601dbe0f8a837e9177f23af721c7ba7beec" +dependencies = [ + "nu-ansi-term", + "tracing-core", + "tracing-log", + "tracing-subscriber", +] + [[package]] name = "tree-sitter" version = "0.25.9" @@ -2913,9 +2892,9 @@ dependencies = [ [[package]] name = "triomphe" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8f7726da4807b58ea5c96fdc122f80702030edc33b35aff9190a51148ccc85" +checksum = "dd69c5aa8f924c7519d6372789a74eac5b94fb0f8fcf0d4a97eb0bfc3e785f39" dependencies = [ "serde", "stable_deref_trait", @@ -2927,12 +2906,6 @@ version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" -[[package]] -name = "typeid" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" - [[package]] name = "uncased" version = "0.9.10" @@ -2950,9 +2923,9 @@ checksum = "a3e5df347f0bf3ec1d670aad6ca5c6a1859cd9ea61d2113125794654ccced68f" [[package]] name = "unicode-ident" -version = "1.0.19" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-properties" @@ -2972,24 +2945,6 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" -[[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 = "utf8parse" version = "0.2.2" @@ -3025,21 +2980,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.14.5+wasi-0.2.4" +name = "wasip2" +version = "1.0.0+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4494f6290a82f5fe584817a676a34b9d6763e8d9d18204009fb31dceca98fd4" +checksum = "03fa2761397e5bd52002cd7e73110c71af2109aca4e521a9f40473fe685b0a24" dependencies = [ - "wasip2", + "wit-bindgen 0.45.1", ] [[package]] -name = "wasip2" -version = "1.0.0+wasi-0.2.4" +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa2761397e5bd52002cd7e73110c71af2109aca4e521a9f40473fe685b0a24" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "wit-bindgen", + "wit-bindgen 0.51.0", ] [[package]] @@ -3062,7 +3017,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb" dependencies = [ "bumpalo", - "log 0.4.28", + "log 0.4.29", "proc-macro2", "quote", "syn", @@ -3101,6 +3056,40 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap 2.14.0", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.1", + "hashbrown 0.15.5", + "indexmap 2.14.0", + "semver", +] + [[package]] name = "winapi-util" version = "0.1.11" @@ -3184,15 +3173,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-sys" version = "0.60.2" @@ -3342,128 +3322,121 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" -dependencies = [ - "memchr", -] - -[[package]] -name = "wit-bindgen" -version = "0.45.1" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" [[package]] -name = "writeable" -version = "0.6.1" +name = "winnow" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" [[package]] -name = "yansi" -version = "1.0.1" +name = "wit-bindgen" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36" [[package]] -name = "yoke" -version = "0.8.0" +name = "wit-bindgen" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", + "wit-bindgen-rust-macro", ] [[package]] -name = "yoke-derive" -version = "0.8.0" +name = "wit-bindgen-core" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", + "anyhow", + "heck", + "wit-parser", ] [[package]] -name = "zerocopy" -version = "0.8.27" +name = "wit-bindgen-rust" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ - "zerocopy-derive", + "anyhow", + "heck", + "indexmap 2.14.0", + "prettyplease", + "syn", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", ] [[package]] -name = "zerocopy-derive" -version = "0.8.27" +name = "wit-bindgen-rust-macro" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" dependencies = [ + "anyhow", + "prettyplease", "proc-macro2", "quote", "syn", + "wit-bindgen-core", + "wit-bindgen-rust", ] [[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" +name = "wit-component" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", + "anyhow", + "bitflags 2.11.1", + "indexmap 2.14.0", + "log 0.4.29", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", ] [[package]] -name = "zerotrie" -version = "0.2.2" +name = "wit-parser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" dependencies = [ - "displaydoc", - "yoke", - "zerofrom", + "anyhow", + "id-arena", + "indexmap 2.14.0", + "log 0.4.29", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", ] [[package]] -name = "zerovec" -version = "0.11.4" +name = "yansi" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] -name = "zerovec-derive" -version = "0.11.1" +name = "zmij" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" [[package]] name = "zstd" diff --git a/ruby/extractor/Cargo.toml b/ruby/extractor/Cargo.toml index b6e1ae901198..09c67fd42f8d 100644 --- a/ruby/extractor/Cargo.toml +++ b/ruby/extractor/Cargo.toml @@ -10,13 +10,13 @@ edition = "2024" tree-sitter = ">= 0.23.0" tree-sitter-embedded-template = "0.25.0" tree-sitter-ruby = "0.23.1" -clap = { version = "4.5", features = ["derive"] } +clap = { version = "4.6", features = ["derive"] } tracing = "0.1" -tracing-subscriber = { version = "0.3.20", features = ["env-filter"] } -rayon = "1.11.0" -regex = "1.11.3" +tracing-subscriber = { version = "0.3.23", features = ["env-filter"] } +rayon = "1.12.0" +regex = "1.12.3" encoding = "0.2" lazy_static = "1.5.0" -serde_json = "1.0.145" +serde_json = "1.0.149" codeql-extractor = { path = "../../shared/tree-sitter-extractor" } diff --git a/rust/ast-generator/Cargo.toml b/rust/ast-generator/Cargo.toml index fcba71b696c1..af12188d240a 100644 --- a/rust/ast-generator/Cargo.toml +++ b/rust/ast-generator/Cargo.toml @@ -7,11 +7,11 @@ license = "MIT" # When updating these dependencies, run `rust/update_cargo_deps.sh` [dependencies] ungrammar = "1.16.1" -proc-macro2 = "1.0.101" -quote = "1.0.41" +proc-macro2 = "1.0.106" +quote = "1.0.45" either = "1.15.0" -stdx = {package = "ra_ap_stdx", version = "0.0.301"} +stdx = {package = "ra_ap_stdx", version = "0.0.328"} itertools = "0.14.0" mustache = "0.9.0" serde = { version = "1.0.228", features = ["derive"] } -anyhow = "1.0.100" +anyhow = "1.0.102" diff --git a/rust/extractor/Cargo.toml b/rust/extractor/Cargo.toml index 223d9dfc68c2..41199b7c8f98 100644 --- a/rust/extractor/Cargo.toml +++ b/rust/extractor/Cargo.toml @@ -6,39 +6,39 @@ license = "MIT" # When updating these dependencies, run `rust/update_cargo_deps.sh` [dependencies] -anyhow = "1.0.100" -clap = { version = "4.5.48", features = ["derive"] } +anyhow = "1.0.102" +clap = { version = "4.6.0", features = ["derive"] } figment = { version = "0.10.19", features = ["env", "yaml"] } num-traits = "0.2.19" -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" +ra_ap_base_db = "0.0.328" +ra_ap_hir = "0.0.328" +ra_ap_hir_def = "0.0.328" +ra_ap_ide_db = "0.0.328" +ra_ap_hir_ty = "0.0.328" +ra_ap_hir_expand = "0.0.328" +ra_ap_load-cargo = "0.0.328" +ra_ap_paths = "0.0.328" +ra_ap_project_model = "0.0.328" +ra_ap_syntax = "0.0.328" +ra_ap_vfs = "0.0.328" +ra_ap_parser = "0.0.328" +ra_ap_span = "0.0.328" +ra_ap_cfg = "0.0.328" +ra_ap_intern = "0.0.328" serde = "1.0.228" -serde_with = "3.14.1" -triomphe = "0.1.14" -argfile = "0.2.1" +serde_with = "3.18.0" +triomphe = "0.1.15" +argfile = "1.0.0" codeql-extractor = { path = "../../shared/tree-sitter-extractor" } rust-extractor-macros = { path = "macros" } itertools = "0.14.0" glob = "0.3.3" -chrono = { version = "0.4.42", features = ["serde"] } -serde_json = "1.0.145" +chrono = { version = "0.4.44", features = ["serde"] } +serde_json = "1.0.149" dunce = "1.0.5" -toml = "0.9.7" -tracing = "0.1.41" +toml = "1.1.2" +tracing = "0.1.44" tracing-flame = "0.2.0" -tracing-subscriber = "0.3.20" +tracing-subscriber = "0.3.23" chalk-ir = "0.104.0" mustache = "0.9.0" diff --git a/rust/extractor/macros/Cargo.toml b/rust/extractor/macros/Cargo.toml index e2e51876ee7d..7d370713d5d6 100644 --- a/rust/extractor/macros/Cargo.toml +++ b/rust/extractor/macros/Cargo.toml @@ -9,5 +9,5 @@ proc-macro = true # When updating these dependencies, run `rust/update_cargo_deps.sh` [dependencies] -quote = "1.0.41" -syn = { version = "2.0.106", features = ["full"] } +quote = "1.0.45" +syn = { version = "2.0.117", features = ["full"] } diff --git a/shared/tree-sitter-extractor/Cargo.toml b/shared/tree-sitter-extractor/Cargo.toml index d02f02fd5888..a84266b4f87c 100644 --- a/shared/tree-sitter-extractor/Cargo.toml +++ b/shared/tree-sitter-extractor/Cargo.toml @@ -10,18 +10,18 @@ flate2 = "1.1" globset = "0.4" tree-sitter = ">= 0.23.0" tracing = "0.1" -tracing-subscriber = { version = "0.3.20", features = ["env-filter"] } -rayon = "1.11.0" -regex = "1.11.3" +tracing-subscriber = { version = "0.3.23", features = ["env-filter"] } +rayon = "1.12.0" +regex = "1.12.3" encoding = "0.2" lazy_static = "1.5.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -chrono = { version = "0.4.42", features = ["serde"] } +chrono = { version = "0.4.44", features = ["serde"] } num_cpus = "1.17.0" zstd = "0.13.3" [dev-dependencies] tree-sitter-ql = "0.23.1" tree-sitter-json = "0.24.8" -rand = "0.9.2" +rand = "0.10.1" From 12344713cb7dc5bbac5508891e0025423723586a Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 15 Apr 2026 13:01:10 +0000 Subject: [PATCH 002/167] Bazel: regenerate vendored cargo dependencies --- MODULE.bazel | 64 +- ...3.bazel => BUILD.aho-corasick-1.1.4.bazel} | 4 +- ...UILD.android_system_properties-0.1.5.bazel | 2 +- ....6.20.bazel => BUILD.anstream-1.0.0.bazel} | 12 +- ....0.11.bazel => BUILD.anstyle-1.0.14.bazel} | 2 +- ....bazel => BUILD.anstyle-parse-1.0.0.bazel} | 2 +- ....bazel => BUILD.anstyle-query-1.1.5.bazel} | 8 +- .../BUILD.anstyle-wincon-3.0.10.bazel | 2 +- ...0.100.bazel => BUILD.anyhow-1.0.102.bazel} | 10 +- ...-0.2.1.bazel => BUILD.argfile-1.0.0.bazel} | 4 +- ...azel => BUILD.atomic-polyfill-1.0.3.bazel} | 21 +- .../tree_sitter_extractors_deps/BUILD.bazel | 196 +- ....9.4.bazel => BUILD.bitflags-2.11.1.bazel} | 2 +- ...sh-1.5.7.bazel => BUILD.borsh-1.6.1.bazel} | 6 +- .../BUILD.bstr-1.12.0.bazel | 2 +- .../BUILD.byteorder-1.5.0.bazel | 97 + .../BUILD.bytes-1.11.1.bazel | 97 + ...-1.1.12.bazel => BUILD.camino-1.2.2.bazel} | 14 +- ...bazel => BUILD.cargo-platform-0.3.2.bazel} | 6 +- ...azel => BUILD.cargo_metadata-0.23.1.bazel} | 13 +- ....cc-1.2.37.bazel => BUILD.cc-1.2.60.bazel} | 28 +- ...f-1.0.3.bazel => BUILD.cfg-if-1.0.4.bazel} | 2 +- .../BUILD.chacha20-0.10.0.bazel | 151 ++ .../BUILD.chalk-derive-0.104.0.bazel | 6 +- .../BUILD.chalk-ir-0.103.0.bazel | 103 - .../BUILD.chalk-ir-0.104.0.bazel | 2 +- .../BUILD.chalk-recursive-0.103.0.bazel | 106 - .../BUILD.chalk-solve-0.103.0.bazel | 109 - ...0.4.42.bazel => BUILD.chrono-0.4.44.bazel} | 2 +- ...ap-4.5.48.bazel => BUILD.clap-4.6.0.bazel} | 8 +- ...8.bazel => BUILD.clap_builder-4.6.0.bazel} | 10 +- ...47.bazel => BUILD.clap_derive-4.6.0.bazel} | 10 +- ...0.7.5.bazel => BUILD.clap_lex-1.1.0.bazel} | 4 +- ...map-0.8.0.bazel => BUILD.cobs-0.3.0.bazel} | 12 +- ....4.bazel => BUILD.colorchoice-1.0.5.bazel} | 2 +- .../BUILD.cpufeatures-0.3.0.bazel | 118 + .../BUILD.crc32fast-1.5.0.bazel | 2 +- .../BUILD.critical-section-1.2.0.bazel | 97 + ....21.3.bazel => BUILD.darling-0.23.0.bazel} | 6 +- ....bazel => BUILD.darling_core-0.23.0.bazel} | 9 +- ...bazel => BUILD.darling_macro-0.23.0.bazel} | 8 +- .../BUILD.dashmap-6.1.0.bazel | 4 +- .../BUILD.deranged-0.5.3.bazel | 7 + ...5.bazel => BUILD.derive-where-1.6.1.bazel} | 12 +- .../BUILD.dissimilar-1.0.11.bazel | 97 + .../BUILD.embedded-io-0.4.0.bazel | 97 + ....1.bazel => BUILD.embedded-io-0.6.1.bazel} | 4 +- .../BUILD.ena-0.14.3.bazel | 2 +- ...azel => BUILD.find-msvc-tools-0.1.9.bazel} | 2 +- ....2.bazel => BUILD.fixedbitset-0.5.7.bazel} | 4 +- .../BUILD.fnv-1.0.7.bazel | 101 - .../BUILD.form_urlencoded-1.2.2.bazel | 104 - ...-2.11.0.bazel => BUILD.fs-err-3.3.0.bazel} | 6 +- .../BUILD.fsevent-sys-4.1.0.bazel | 2 +- ....3.3.bazel => BUILD.getrandom-0.3.4.bazel} | 60 +- .../BUILD.getrandom-0.4.2.bazel | 252 ++ .../BUILD.globset-0.4.16.bazel | 8 +- ...s-1.0.1.bazel => BUILD.hash32-0.2.1.bazel} | 9 +- .../BUILD.hashbrown-0.17.0.bazel | 97 + ...0.26.bazel => BUILD.heapless-0.7.17.bazel} | 64 +- ...e-0.5.11.bazel => BUILD.home-0.5.12.bazel} | 10 +- .../BUILD.iana-time-zone-0.1.63.bazel | 2 +- .../BUILD.iana-time-zone-haiku-0.1.2.bazel | 2 +- .../BUILD.icu_collections-2.0.0.bazel | 106 - .../BUILD.icu_locale_core-2.0.0.bazel | 109 - .../BUILD.icu_normalizer-2.0.0.bazel | 110 - .../BUILD.icu_properties-2.0.1.bazel | 112 - .../BUILD.icu_provider-2.0.0.bazel | 114 - .../BUILD.id-arena-2.3.0.bazel | 101 + .../BUILD.idna-1.1.0.bazel | 107 - .../BUILD.idna_adapter-1.2.1.bazel | 104 - ...11.4.bazel => BUILD.indexmap-2.14.0.bazel} | 6 +- .../BUILD.inotify-0.11.0.bazel | 4 +- .../BUILD.inotify-sys-0.1.5.bazel | 2 +- ...5.0.bazel => BUILD.inventory-0.3.24.bazel} | 44 +- ...> BUILD.is_terminal_polyfill-1.70.2.bazel} | 2 +- .../BUILD.itertools-0.12.1.bazel | 105 - ...a-1.0.15.bazel => BUILD.itoa-1.0.18.bazel} | 4 +- .../BUILD.jobserver-0.1.34.bazel | 60 +- .../BUILD.js-sys-0.3.78.bazel | 2 +- .../BUILD.kqueue-1.1.1.bazel | 2 +- .../BUILD.kqueue-sys-1.0.4.bazel | 2 +- .../BUILD.leb128fmt-0.1.0.bazel | 97 + ...0.2.175.bazel => BUILD.libc-0.2.185.bazel} | 6 +- .../BUILD.log-0.3.9.bazel | 2 +- ...og-0.4.28.bazel => BUILD.log-0.4.29.bazel} | 2 +- .../BUILD.matchers-0.2.0.bazel | 2 +- ...r-2.7.5.bazel => BUILD.memchr-2.8.0.bazel} | 2 +- ....mio-1.0.4.bazel => BUILD.mio-1.2.0.bazel} | 70 +- .../BUILD.notify-8.2.0.bazel | 50 +- ...0.1.0.bazel => BUILD.num-conv-0.2.1.bazel} | 2 +- .../BUILD.num_cpus-1.17.0.bazel | 76 +- .../BUILD.num_threads-0.1.7.bazel | 124 + ...1.3.bazel => BUILD.once_cell-1.21.4.bazel} | 2 +- .../BUILD.ordered-float-2.10.1.bazel | 104 - .../BUILD.os_str_bytes-7.1.1.bazel | 2 +- .../BUILD.papaya-0.2.3.bazel | 104 - .../BUILD.parking_lot_core-0.9.11.bazel | 56 +- .../BUILD.pear_codegen-0.2.9.bazel | 6 +- ...4.7.bazel => BUILD.perf-event-0.4.8.bazel} | 10 +- ... => BUILD.perf-event-open-sys-4.0.0.bazel} | 4 +- .../BUILD.petgraph-0.8.3.bazel | 102 + ...el => BUILD.pin-project-lite-0.2.17.bazel} | 2 +- ...0.4.6.bazel => BUILD.postcard-1.1.3.bazel} | 12 +- .../BUILD.potential_utf-0.1.3.bazel | 103 - ....bazel => BUILD.prettyplease-0.2.37.bazel} | 17 +- ....bazel => BUILD.proc-macro2-1.0.106.bazel} | 8 +- ...BUILD.proc-macro2-diagnostics-0.10.1.bazel | 6 +- ...-1.0.41.bazel => BUILD.quote-1.0.45.bazel} | 12 +- .../BUILD.r-efi-6.0.0.bazel | 97 + ...el => BUILD.ra-ap-rustc_abi-0.143.0.bazel} | 14 +- .../BUILD.ra-ap-rustc_ast_ir-0.143.0.bazel | 97 + ...=> BUILD.ra-ap-rustc_hashes-0.143.0.bazel} | 2 +- ... => BUILD.ra-ap-rustc_index-0.143.0.bazel} | 9 +- ...LD.ra-ap-rustc_index_macros-0.143.0.bazel} | 8 +- .../BUILD.ra-ap-rustc_lexer-0.123.0.bazel | 102 - ... => BUILD.ra-ap-rustc_lexer-0.143.0.bazel} | 4 +- ...a-ap-rustc_next_trait_solver-0.143.0.bazel | 111 + ...LD.ra-ap-rustc_parse_format-0.143.0.bazel} | 8 +- ...a-ap-rustc_pattern_analysis-0.143.0.bazel} | 10 +- .../BUILD.ra-ap-rustc_type_ir-0.143.0.bazel | 118 + ....ra-ap-rustc_type_ir_macros-0.143.0.bazel} | 14 +- ...azel => BUILD.ra_ap_base_db-0.0.328.bazel} | 43 +- ...01.bazel => BUILD.ra_ap_cfg-0.0.328.bazel} | 18 +- ...azel => BUILD.ra_ap_edition-0.0.328.bazel} | 2 +- ...01.bazel => BUILD.ra_ap_hir-0.0.328.bazel} | 51 +- ...azel => BUILD.ra_ap_hir_def-0.0.328.bazel} | 61 +- ...l => BUILD.ra_ap_hir_expand-0.0.328.bazel} | 57 +- ...bazel => BUILD.ra_ap_hir_ty-0.0.328.bazel} | 69 +- ...bazel => BUILD.ra_ap_ide_db-0.0.328.bazel} | 65 +- ...bazel => BUILD.ra_ap_intern-0.0.328.bazel} | 7 +- ...l => BUILD.ra_ap_load-cargo-0.0.328.bazel} | 42 +- ...bazel => BUILD.ra_ap_macros-0.0.328.bazel} | 14 +- ...01.bazel => BUILD.ra_ap_mbe-0.0.328.bazel} | 32 +- ...bazel => BUILD.ra_ap_parser-0.0.328.bazel} | 12 +- ....bazel => BUILD.ra_ap_paths-0.0.328.bazel} | 4 +- ... BUILD.ra_ap_proc_macro_api-0.0.328.bazel} | 36 +- ...azel => BUILD.ra_ap_profile-0.0.328.bazel} | 42 +- ...> BUILD.ra_ap_project_model-0.0.328.bazel} | 48 +- ...ILD.ra_ap_query-group-macro-0.0.328.bazel} | 8 +- ...1.bazel => BUILD.ra_ap_span-0.0.328.bazel} | 18 +- ...1.bazel => BUILD.ra_ap_stdx-0.0.328.bazel} | 58 +- ...bazel => BUILD.ra_ap_syntax-0.0.328.bazel} | 24 +- ...> BUILD.ra_ap_syntax-bridge-0.0.328.bazel} | 28 +- .../BUILD.ra_ap_test_fixture-0.0.328.bazel | 123 + ...l => BUILD.ra_ap_test_utils-0.0.328.bazel} | 20 +- ...el => BUILD.ra_ap_toolchain-0.0.328.bazel} | 6 +- .../BUILD.ra_ap_tt-0.0.328.bazel | 115 + ...01.bazel => BUILD.ra_ap_vfs-0.0.328.bazel} | 16 +- ...l => BUILD.ra_ap_vfs-notify-0.0.328.bazel} | 20 +- ...nd-0.9.2.bazel => BUILD.rand-0.10.1.bazel} | 12 +- .../BUILD.rand_chacha-0.9.0.bazel | 104 - .../BUILD.rand_core-0.10.1.bazel | 97 + .../BUILD.rand_core-0.9.3.bazel | 104 - ...-1.11.0.bazel => BUILD.rayon-1.12.0.bazel} | 2 +- .../BUILD.redox_syscall-0.5.17.bazel | 2 +- .../BUILD.ref-cast-impl-1.0.24.bazel | 6 +- ...-1.11.3.bazel => BUILD.regex-1.12.3.bazel} | 10 +- ...azel => BUILD.regex-automata-0.4.14.bazel} | 8 +- ....bazel => BUILD.regex-syntax-0.8.10.bazel} | 2 +- ....15.15.bazel => BUILD.rowan-0.15.18.bazel} | 2 +- ...1.1.bazel => BUILD.rustc-hash-2.1.2.bazel} | 2 +- .../BUILD.rustc-literal-escaper-0.0.5.bazel | 97 + ...ustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel | 2 +- ....bazel => BUILD.rustc_version-0.4.1.bazel} | 13 +- ...-0.23.0.bazel => BUILD.salsa-0.25.2.bazel} | 18 +- ...l => BUILD.salsa-macro-rules-0.25.2.bazel} | 2 +- ....bazel => BUILD.salsa-macros-0.25.2.bazel} | 11 +- .../BUILD.schemars-0.9.0.bazel | 2 +- .../BUILD.schemars-1.0.4.bazel | 2 +- .../BUILD.semver-1.0.28.bazel | 108 + .../BUILD.serde-untagged-0.1.8.bazel | 102 - .../BUILD.serde-value-0.7.0.bazel | 101 - .../BUILD.serde_core-1.0.228.bazel | 2 + .../BUILD.serde_derive-1.0.228.bazel | 6 +- ...5.bazel => BUILD.serde_json-1.0.149.bazel} | 42 +- ....bazel => BUILD.serde_spanned-1.1.1.bazel} | 4 +- ....1.bazel => BUILD.serde_with-3.18.0.bazel} | 7 +- ...l => BUILD.serde_with_macros-3.18.0.bazel} | 10 +- .../BUILD.serde_yaml-0.9.34+deprecated.bazel | 4 +- ...0.3.2.bazel => BUILD.smol_str-0.3.6.bazel} | 4 +- .../BUILD.spin-0.9.8.bazel | 114 + ...l => BUILD.stable_deref_trait-1.2.1.bazel} | 5 +- ...-2.0.106.bazel => BUILD.syn-2.0.117.bazel} | 9 +- .../BUILD.synstructure-0.13.2.bazel | 6 +- ....16.bazel => BUILD.thiserror-2.0.18.bazel} | 8 +- ...azel => BUILD.thiserror-impl-2.0.18.bazel} | 8 +- .../BUILD.thread_local-1.1.9.bazel | 2 +- .../BUILD.time-0.3.43.bazel | 103 - .../BUILD.time-0.3.47.bazel | 221 ++ ....1.6.bazel => BUILD.time-core-0.1.8.bazel} | 4 +- ...4.bazel => BUILD.time-macros-0.2.27.bazel} | 8 +- .../BUILD.tinystr-0.8.1.bazel | 107 - ...zel => BUILD.toml-0.9.12+spec-1.1.0.bazel} | 12 +- ...azel => BUILD.toml-1.1.2+spec-1.1.0.bazel} | 16 +- ...UILD.toml_datetime-0.7.5+spec-1.1.0.bazel} | 2 +- ...UILD.toml_datetime-1.1.1+spec-1.1.0.bazel} | 8 +- .../BUILD.toml_edit-0.22.27.bazel | 110 - ... BUILD.toml_parser-1.1.2+spec-1.1.0.bazel} | 6 +- .../BUILD.toml_write-0.1.2.bazel | 102 - ... BUILD.toml_writer-1.1.1+spec-1.1.0.bazel} | 4 +- ....1.41.bazel => BUILD.tracing-0.1.44.bazel} | 8 +- ... => BUILD.tracing-attributes-0.1.31.bazel} | 8 +- ....bazel => BUILD.tracing-core-0.1.36.bazel} | 4 +- .../BUILD.tracing-flame-0.2.0.bazel | 4 +- .../BUILD.tracing-log-0.2.0.bazel | 6 +- ... => BUILD.tracing-subscriber-0.3.23.bazel} | 13 +- ...5.bazel => BUILD.tracing-tree-0.4.1.bazel} | 16 +- .../BUILD.tree-sitter-0.25.9.bazel | 8 +- ...tree-sitter-embedded-template-0.25.0.bazel | 2 +- .../BUILD.tree-sitter-json-0.24.8.bazel | 2 +- .../BUILD.tree-sitter-ql-0.23.1.bazel | 2 +- .../BUILD.tree-sitter-ruby-0.23.1.bazel | 2 +- ...1.14.bazel => BUILD.triomphe-0.1.15.bazel} | 6 +- ...bazel => BUILD.unicode-ident-1.0.24.bazel} | 4 +- .../BUILD.url-2.5.7.bazel | 108 - .../BUILD.utf8_iter-1.0.4.bazel | 97 - ...sip3-0.4.0+wasi-0.3.0-rc-2026-01-06.bazel} | 8 +- .../BUILD.wasm-bindgen-0.2.101.bazel | 4 +- .../BUILD.wasm-bindgen-backend-0.2.101.bazel | 8 +- .../BUILD.wasm-bindgen-macro-0.2.101.bazel | 2 +- ...D.wasm-bindgen-macro-support-0.2.101.bazel | 6 +- .../BUILD.wasm-bindgen-shared-0.2.101.bazel | 2 +- ...bazel => BUILD.wasm-encoder-0.244.0.bazel} | 12 +- .../BUILD.wasm-metadata-0.244.0.bazel | 103 + .../BUILD.wasmparser-0.244.0.bazel | 111 + .../BUILD.windows-implement-0.60.0.bazel | 6 +- .../BUILD.windows-interface-0.59.1.bazel | 6 +- .../BUILD.windows-sys-0.52.0.bazel | 1 - .../BUILD.windows-sys-0.59.0.bazel | 109 - .../BUILD.windows-sys-0.61.0.bazel | 3 + .../BUILD.winnow-0.7.13.bazel | 102 - .../BUILD.winnow-0.7.15.bazel | 97 + .../BUILD.winnow-1.0.1.bazel | 97 + ...1.bazel => BUILD.wit-bindgen-0.51.0.bazel} | 18 +- .../BUILD.wit-bindgen-core-0.51.0.bazel | 102 + .../BUILD.wit-bindgen-rust-0.51.0.bazel | 173 ++ .../BUILD.wit-bindgen-rust-macro-0.51.0.bazel | 172 ++ ...azel => BUILD.wit-component-0.244.0.bazel} | 21 +- ...2.bazel => BUILD.wit-parser-0.244.0.bazel} | 28 +- .../BUILD.yoke-0.8.0.bazel | 109 - .../BUILD.zerocopy-derive-0.8.27.bazel | 102 - .../BUILD.zerofrom-0.1.6.bazel | 104 - .../BUILD.zerofrom-derive-0.1.6.bazel | 103 - .../BUILD.zerotrie-0.2.2.bazel | 108 - .../BUILD.zerovec-0.11.4.bazel | 109 - .../BUILD.zerovec-derive-0.11.1.bazel | 102 - ...id-1.0.3.bazel => BUILD.zmij-1.0.21.bazel} | 18 +- .../BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel | 2 +- .../tree_sitter_extractors_deps/defs.bzl | 2078 ++++++++--------- 250 files changed, 6020 insertions(+), 6056 deletions(-) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.aho-corasick-1.1.3.bazel => BUILD.aho-corasick-1.1.4.bazel} (98%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.anstream-0.6.20.bazel => BUILD.anstream-1.0.0.bazel} (93%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.anstyle-1.0.11.bazel => BUILD.anstyle-1.0.14.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.anstyle-parse-0.2.7.bazel => BUILD.anstyle-parse-1.0.0.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.anstyle-query-1.1.4.bazel => BUILD.anstyle-query-1.1.5.bazel} (95%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.anyhow-1.0.100.bazel => BUILD.anyhow-1.0.102.bazel} (97%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.argfile-0.2.1.bazel => BUILD.argfile-1.0.0.bazel} (98%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.zerocopy-0.8.27.bazel => BUILD.atomic-polyfill-1.0.3.bazel} (94%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.bitflags-2.9.4.bazel => BUILD.bitflags-2.11.1.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.borsh-1.5.7.bazel => BUILD.borsh-1.6.1.bazel} (98%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.byteorder-1.5.0.bazel create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytes-1.11.1.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.camino-1.1.12.bazel => BUILD.camino-1.2.2.bazel} (95%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.cargo-platform-0.2.0.bazel => BUILD.cargo-platform-0.3.2.bazel} (97%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.cargo_metadata-0.21.0.bazel => BUILD.cargo_metadata-0.23.1.bazel} (92%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.cc-1.2.37.bazel => BUILD.cc-1.2.60.bazel} (86%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.cfg-if-1.0.3.bazel => BUILD.cfg-if-1.0.4.bazel} (99%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chacha20-0.10.0.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.chrono-0.4.42.bazel => BUILD.chrono-0.4.44.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.clap-4.5.48.bazel => BUILD.clap-4.6.0.bazel} (96%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.clap_builder-4.5.48.bazel => BUILD.clap_builder-4.6.0.bazel} (95%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.clap_derive-4.5.47.bazel => BUILD.clap_derive-4.6.0.bazel} (95%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.clap_lex-0.7.5.bazel => BUILD.clap_lex-1.1.0.bazel} (98%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.litemap-0.8.0.bazel => BUILD.cobs-0.3.0.bazel} (96%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.colorchoice-1.0.4.bazel => BUILD.colorchoice-1.0.5.bazel} (99%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cpufeatures-0.3.0.bazel create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.critical-section-1.2.0.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.darling-0.21.3.bazel => BUILD.darling-0.23.0.bazel} (96%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.darling_core-0.21.3.bazel => BUILD.darling_core-0.23.0.bazel} (95%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.darling_macro-0.21.3.bazel => BUILD.darling_macro-0.23.0.bazel} (96%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.displaydoc-0.2.5.bazel => BUILD.derive-where-1.6.1.bazel} (94%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dissimilar-1.0.11.bazel create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.4.0.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.writeable-0.6.1.bazel => BUILD.embedded-io-0.6.1.bazel} (98%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.find-msvc-tools-0.1.1.bazel => BUILD.find-msvc-tools-0.1.9.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.fixedbitset-0.4.2.bazel => BUILD.fixedbitset-0.5.7.bazel} (98%) delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fnv-1.0.7.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.fs-err-2.11.0.bazel => BUILD.fs-err-3.3.0.bazel} (98%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.getrandom-0.3.3.bazel => BUILD.getrandom-0.3.4.bazel} (86%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.4.2.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.scoped-tls-1.0.1.bazel => BUILD.hash32-0.2.1.bazel} (96%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.17.0.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.semver-1.0.26.bazel => BUILD.heapless-0.7.17.bazel} (70%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.home-0.5.11.bazel => BUILD.home-0.5.12.bazel} (94%) delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.id-arena-2.3.0.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.indexmap-2.11.4.bazel => BUILD.indexmap-2.14.0.bazel} (97%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.seize-0.5.0.bazel => BUILD.inventory-0.3.24.bazel} (82%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.is_terminal_polyfill-1.70.1.bazel => BUILD.is_terminal_polyfill-1.70.2.bazel} (99%) delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.itoa-1.0.15.bazel => BUILD.itoa-1.0.18.bazel} (98%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.leb128fmt-0.1.0.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.libc-0.2.175.bazel => BUILD.libc-0.2.185.bazel} (98%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.log-0.4.28.bazel => BUILD.log-0.4.29.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.memchr-2.7.5.bazel => BUILD.memchr-2.8.0.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.mio-1.0.4.bazel => BUILD.mio-1.2.0.bazel} (66%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.num-conv-0.1.0.bazel => BUILD.num-conv-0.2.1.bazel} (99%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_threads-0.1.7.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.once_cell-1.21.3.bazel => BUILD.once_cell-1.21.4.bazel} (99%) delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.papaya-0.2.3.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.perf-event-0.4.7.bazel => BUILD.perf-event-0.4.8.bazel} (95%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.perf-event-open-sys-1.0.1.bazel => BUILD.perf-event-open-sys-4.0.0.bazel} (98%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.8.3.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.pin-project-lite-0.2.16.bazel => BUILD.pin-project-lite-0.2.17.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.erased-serde-0.4.6.bazel => BUILD.postcard-1.1.3.bazel} (94%) delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.icu_normalizer_data-2.0.0.bazel => BUILD.prettyplease-0.2.37.bazel} (93%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.proc-macro2-1.0.101.bazel => BUILD.proc-macro2-1.0.106.bazel} (96%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.quote-1.0.41.bazel => BUILD.quote-1.0.45.bazel} (96%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-6.0.0.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra-ap-rustc_abi-0.123.0.bazel => BUILD.ra-ap-rustc_abi-0.143.0.bazel} (91%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_ast_ir-0.143.0.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra-ap-rustc_hashes-0.123.0.bazel => BUILD.ra-ap-rustc_hashes-0.143.0.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra-ap-rustc_index-0.123.0.bazel => BUILD.ra-ap-rustc_index-0.143.0.bazel} (94%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra-ap-rustc_index_macros-0.123.0.bazel => BUILD.ra-ap-rustc_index_macros-0.143.0.bazel} (96%) delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.123.0.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra-ap-rustc_lexer-0.121.0.bazel => BUILD.ra-ap-rustc_lexer-0.143.0.bazel} (98%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_next_trait_solver-0.143.0.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra-ap-rustc_parse_format-0.121.0.bazel => BUILD.ra-ap-rustc_parse_format-0.143.0.bazel} (95%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra-ap-rustc_pattern_analysis-0.123.0.bazel => BUILD.ra-ap-rustc_pattern_analysis-0.143.0.bazel} (94%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir-0.143.0.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.yoke-derive-0.8.0.bazel => BUILD.ra-ap-rustc_type_ir_macros-0.143.0.bazel} (93%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_base_db-0.0.301.bazel => BUILD.ra_ap_base_db-0.0.328.bazel} (79%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_cfg-0.0.301.bazel => BUILD.ra_ap_cfg-0.0.328.bazel} (88%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_edition-0.0.301.bazel => BUILD.ra_ap_edition-0.0.328.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_hir-0.0.301.bazel => BUILD.ra_ap_hir-0.0.328.bazel} (74%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_hir_def-0.0.301.bazel => BUILD.ra_ap_hir_def-0.0.328.bazel} (73%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_hir_expand-0.0.301.bazel => BUILD.ra_ap_hir_expand-0.0.328.bazel} (73%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_hir_ty-0.0.301.bazel => BUILD.ra_ap_hir_ty-0.0.328.bazel} (68%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_ide_db-0.0.301.bazel => BUILD.ra_ap_ide_db-0.0.328.bazel} (69%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_intern-0.0.301.bazel => BUILD.ra_ap_intern-0.0.328.bazel} (96%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_load-cargo-0.0.301.bazel => BUILD.ra_ap_load-cargo-0.0.328.bazel} (78%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.chalk-derive-0.103.0.bazel => BUILD.ra_ap_macros-0.0.328.bazel} (94%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_mbe-0.0.301.bazel => BUILD.ra_ap_mbe-0.0.328.bazel} (81%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_parser-0.0.301.bazel => BUILD.ra_ap_parser-0.0.328.bazel} (93%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_paths-0.0.301.bazel => BUILD.ra_ap_paths-0.0.328.bazel} (98%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_proc_macro_api-0.0.301.bazel => BUILD.ra_ap_proc_macro_api-0.0.328.bazel} (80%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_profile-0.0.301.bazel => BUILD.ra_ap_profile-0.0.328.bazel} (73%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_project_model-0.0.301.bazel => BUILD.ra_ap_project_model-0.0.328.bazel} (76%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_query-group-macro-0.0.301.bazel => BUILD.ra_ap_query-group-macro-0.0.328.bazel} (96%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_span-0.0.301.bazel => BUILD.ra_ap_span-0.0.328.bazel} (90%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_stdx-0.0.301.bazel => BUILD.ra_ap_stdx-0.0.328.bazel} (80%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_syntax-0.0.301.bazel => BUILD.ra_ap_syntax-0.0.328.bazel} (87%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_syntax-bridge-0.0.301.bazel => BUILD.ra_ap_syntax-bridge-0.0.328.bazel} (84%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_fixture-0.0.328.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_tt-0.0.301.bazel => BUILD.ra_ap_test_utils-0.0.328.bazel} (87%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_toolchain-0.0.301.bazel => BUILD.ra_ap_toolchain-0.0.328.bazel} (97%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.328.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_vfs-0.0.301.bazel => BUILD.ra_ap_vfs-0.0.328.bazel} (91%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ra_ap_vfs-notify-0.0.301.bazel => BUILD.ra_ap_vfs-notify-0.0.328.bazel} (89%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.rand-0.9.2.bazel => BUILD.rand-0.10.1.bazel} (95%) delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_chacha-0.9.0.bazel create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.10.1.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.9.3.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.rayon-1.11.0.bazel => BUILD.rayon-1.12.0.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.regex-1.11.3.bazel => BUILD.regex-1.12.3.bazel} (94%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.regex-automata-0.4.11.bazel => BUILD.regex-automata-0.4.14.bazel} (96%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.regex-syntax-0.8.6.bazel => BUILD.regex-syntax-0.8.10.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.rowan-0.15.15.bazel => BUILD.rowan-0.15.18.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.rustc-hash-2.1.1.bazel => BUILD.rustc-hash-2.1.2.bazel} (99%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.5.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.percent-encoding-2.3.2.bazel => BUILD.rustc_version-0.4.1.bazel} (96%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.salsa-0.23.0.bazel => BUILD.salsa-0.25.2.bazel} (92%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.salsa-macro-rules-0.23.0.bazel => BUILD.salsa-macro-rules-0.25.2.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.salsa-macros-0.23.0.bazel => BUILD.salsa-macros-0.25.2.bazel} (95%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.28.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.serde_json-1.0.145.bazel => BUILD.serde_json-1.0.149.bazel} (91%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.serde_spanned-1.0.2.bazel => BUILD.serde_spanned-1.1.1.bazel} (98%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.serde_with-3.14.1.bazel => BUILD.serde_with-3.18.0.bazel} (95%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.serde_with_macros-3.14.1.bazel => BUILD.serde_with_macros-3.18.0.bazel} (95%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.smol_str-0.3.2.bazel => BUILD.smol_str-0.3.6.bazel} (98%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.spin-0.9.8.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.stable_deref_trait-1.2.0.bazel => BUILD.stable_deref_trait-1.2.1.bazel} (98%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.syn-2.0.106.bazel => BUILD.syn-2.0.117.bazel} (95%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.thiserror-2.0.16.bazel => BUILD.thiserror-2.0.18.bazel} (96%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.thiserror-impl-2.0.16.bazel => BUILD.thiserror-impl-2.0.18.bazel} (96%) delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.bazel create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.47.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.time-core-0.1.6.bazel => BUILD.time-core-0.1.8.bazel} (98%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.time-macros-0.2.24.bazel => BUILD.time-macros-0.2.27.bazel} (96%) delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.toml-0.9.7.bazel => BUILD.toml-0.9.12+spec-1.1.0.bazel} (92%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.toml-0.8.23.bazel => BUILD.toml-1.1.2+spec-1.1.0.bazel} (90%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.toml_datetime-0.7.2.bazel => BUILD.toml_datetime-0.7.5+spec-1.1.0.bazel} (99%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.toml_datetime-0.6.11.bazel => BUILD.toml_datetime-1.1.1+spec-1.1.0.bazel} (96%) delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.toml_parser-1.0.3.bazel => BUILD.toml_parser-1.1.2+spec-1.1.0.bazel} (97%) delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.toml_writer-1.0.3.bazel => BUILD.toml_writer-1.1.1+spec-1.1.0.bazel} (98%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.tracing-0.1.41.bazel => BUILD.tracing-0.1.44.bazel} (95%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.tracing-attributes-0.1.30.bazel => BUILD.tracing-attributes-0.1.31.bazel} (96%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.tracing-core-0.1.34.bazel => BUILD.tracing-core-0.1.36.bazel} (98%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.tracing-subscriber-0.3.20.bazel => BUILD.tracing-subscriber-0.3.23.bazel} (93%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.petgraph-0.6.5.bazel => BUILD.tracing-tree-0.4.1.bazel} (92%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.triomphe-0.1.14.bazel => BUILD.triomphe-0.1.15.bazel} (97%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.unicode-ident-1.0.19.bazel => BUILD.unicode-ident-1.0.24.bazel} (98%) delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.4.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.wasi-0.14.5+wasi-0.2.4.bazel => BUILD.wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.bazel} (96%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.ppv-lite86-0.2.21.bazel => BUILD.wasm-encoder-0.244.0.bazel} (94%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-metadata-0.244.0.bazel create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasmparser-0.244.0.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.15.bazel create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.1.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.icu_properties_data-2.0.1.bazel => BUILD.wit-bindgen-0.51.0.bazel} (94%) create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-core-0.51.0.bazel create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-0.51.0.bazel create mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-macro-0.51.0.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.serde_spanned-0.6.9.bazel => BUILD.wit-component-0.244.0.bazel} (86%) rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.cargo-util-schemas-0.8.2.bazel => BUILD.wit-parser-0.244.0.bazel} (86%) delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerotrie-0.2.2.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.4.bazel delete mode 100644 misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel rename misc/bazel/3rdparty/tree_sitter_extractors_deps/{BUILD.typeid-1.0.3.bazel => BUILD.zmij-1.0.21.bazel} (95%) diff --git a/MODULE.bazel b/MODULE.bazel index 16b4a4691f8a..dfc9a0c9144a 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -100,11 +100,11 @@ use_repo( tree_sitter_extractors_deps = use_extension("//misc/bazel/3rdparty:tree_sitter_extractors_extension.bzl", "r") use_repo( tree_sitter_extractors_deps, - "vendor_ts__anyhow-1.0.100", - "vendor_ts__argfile-0.2.1", + "vendor_ts__anyhow-1.0.102", + "vendor_ts__argfile-1.0.0", "vendor_ts__chalk-ir-0.104.0", - "vendor_ts__chrono-0.4.42", - "vendor_ts__clap-4.5.48", + "vendor_ts__chrono-0.4.44", + "vendor_ts__clap-4.6.0", "vendor_ts__dunce-1.0.5", "vendor_ts__either-1.15.0", "vendor_ts__encoding-0.2.33", @@ -117,41 +117,41 @@ use_repo( "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.101", - "vendor_ts__quote-1.0.41", - "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.11.0", - "vendor_ts__regex-1.11.3", + "vendor_ts__proc-macro2-1.0.106", + "vendor_ts__quote-1.0.45", + "vendor_ts__ra_ap_base_db-0.0.328", + "vendor_ts__ra_ap_cfg-0.0.328", + "vendor_ts__ra_ap_hir-0.0.328", + "vendor_ts__ra_ap_hir_def-0.0.328", + "vendor_ts__ra_ap_hir_expand-0.0.328", + "vendor_ts__ra_ap_hir_ty-0.0.328", + "vendor_ts__ra_ap_ide_db-0.0.328", + "vendor_ts__ra_ap_intern-0.0.328", + "vendor_ts__ra_ap_load-cargo-0.0.328", + "vendor_ts__ra_ap_parser-0.0.328", + "vendor_ts__ra_ap_paths-0.0.328", + "vendor_ts__ra_ap_project_model-0.0.328", + "vendor_ts__ra_ap_span-0.0.328", + "vendor_ts__ra_ap_stdx-0.0.328", + "vendor_ts__ra_ap_syntax-0.0.328", + "vendor_ts__ra_ap_vfs-0.0.328", + "vendor_ts__rand-0.10.1", + "vendor_ts__rayon-1.12.0", + "vendor_ts__regex-1.12.3", "vendor_ts__serde-1.0.228", - "vendor_ts__serde_json-1.0.145", - "vendor_ts__serde_with-3.14.1", - "vendor_ts__syn-2.0.106", - "vendor_ts__toml-0.9.7", - "vendor_ts__tracing-0.1.41", + "vendor_ts__serde_json-1.0.149", + "vendor_ts__serde_with-3.18.0", + "vendor_ts__syn-2.0.117", + "vendor_ts__toml-1.1.2-spec-1.1.0", + "vendor_ts__tracing-0.1.44", "vendor_ts__tracing-flame-0.2.0", - "vendor_ts__tracing-subscriber-0.3.20", + "vendor_ts__tracing-subscriber-0.3.23", "vendor_ts__tree-sitter-0.25.9", "vendor_ts__tree-sitter-embedded-template-0.25.0", "vendor_ts__tree-sitter-json-0.24.8", "vendor_ts__tree-sitter-ql-0.23.1", "vendor_ts__tree-sitter-ruby-0.23.1", - "vendor_ts__triomphe-0.1.14", + "vendor_ts__triomphe-0.1.15", "vendor_ts__ungrammar-1.16.1", "vendor_ts__zstd-0.13.3", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.4.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.4.bazel index 29ac012c7637..5f173cfeddb3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.4.bazel @@ -98,8 +98,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.1.3", + version = "1.1.4", deps = [ - "@vendor_ts__memchr-2.7.5//:memchr", + "@vendor_ts__memchr-2.8.0//:memchr", ], ) 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 165cf9da2fdb..ad16f969e7fb 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 @@ -95,6 +95,6 @@ rust_library( }), version = "0.1.5", deps = [ - "@vendor_ts__libc-0.2.175//:libc", + "@vendor_ts__libc-0.2.185//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-1.0.0.bazel similarity index 93% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.20.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-1.0.0.bazel index bd6489b11e33..e1d853566436 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.20.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-1.0.0.bazel @@ -98,13 +98,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.6.20", + version = "1.0.0", deps = [ - "@vendor_ts__anstyle-1.0.11//:anstyle", - "@vendor_ts__anstyle-parse-0.2.7//:anstyle_parse", - "@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__anstyle-1.0.14//:anstyle", + "@vendor_ts__anstyle-parse-1.0.0//:anstyle_parse", + "@vendor_ts__anstyle-query-1.1.5//:anstyle_query", + "@vendor_ts__colorchoice-1.0.5//:colorchoice", + "@vendor_ts__is_terminal_polyfill-1.70.2//:is_terminal_polyfill", "@vendor_ts__utf8parse-0.2.2//:utf8parse", ] + select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.14.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.11.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.14.bazel index 1739823d66f4..31423b2f54ce 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.14.bazel @@ -97,5 +97,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.11", + version = "1.0.14", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-0.2.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-1.0.0.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-0.2.7.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-1.0.0.bazel index d2c9594f554a..e953847f8c00 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-0.2.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-1.0.0.bazel @@ -97,7 +97,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.7", + version = "1.0.0", deps = [ "@vendor_ts__utf8parse-0.2.2//:utf8parse", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.5.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.4.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.5.bazel index fe3361ea4119..4b43c9a2e48e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.5.bazel @@ -93,16 +93,16 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.1.4", + version = "1.1.5", deps = select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.60.2//: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.60.2//: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.60.2//: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.anstyle-wincon-3.0.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.10.bazel index 822d2d90ec43..820fcd42ddee 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.10.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.10.bazel @@ -95,7 +95,7 @@ rust_library( }), version = "3.0.10", deps = [ - "@vendor_ts__anstyle-1.0.11//:anstyle", + "@vendor_ts__anstyle-1.0.14//:anstyle", ] + select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ "@vendor_ts__once_cell_polyfill-1.70.1//:once_cell_polyfill", # cfg(windows) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.100.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.102.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.100.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.102.bazel index 48f6fcce1426..99de10c1ab76 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.100.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.102.bazel @@ -43,7 +43,7 @@ rust_library( "std", ], crate_root = "src/lib.rs", - edition = "2018", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -101,9 +101,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.100", + version = "1.0.102", deps = [ - "@vendor_ts__anyhow-1.0.100//:build_script_build", + "@vendor_ts__anyhow-1.0.102//:build_script_build", ], ) @@ -144,7 +144,7 @@ cargo_build_script( "WORKSPACE.bazel", ], ), - edition = "2018", + edition = "2021", pkg_name = "anyhow", rustc_env_files = [ ":cargo_toml_env_vars", @@ -159,7 +159,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.100", + version = "1.0.102", visibility = ["//visibility:private"], ) 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-1.0.0.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-0.2.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-1.0.0.bazel index 4a1e9ba79158..e8a8c7fd6262 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-1.0.0.bazel @@ -96,9 +96,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.1", + version = "1.0.0", deps = [ - "@vendor_ts__fs-err-2.11.0//:fs_err", + "@vendor_ts__fs-err-3.3.0//:fs_err", "@vendor_ts__os_str_bytes-7.1.1//:os_str_bytes", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.27.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-polyfill-1.0.3.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.27.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-polyfill-1.0.3.bazel index e0fee3f0f2ec..f20f39c53dca 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.27.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-polyfill-1.0.3.bazel @@ -21,7 +21,7 @@ cargo_toml_env_vars( ) rust_library( - name = "zerocopy", + name = "atomic_polyfill", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -38,9 +38,6 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_features = [ - "simd", - ], crate_root = "src/lib.rs", edition = "2021", rustc_env_files = [ @@ -51,7 +48,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=zerocopy", + "crate-name=atomic-polyfill", "manual", "noclippy", "norustfmt", @@ -100,9 +97,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.8.27", + version = "1.0.3", deps = [ - "@vendor_ts__zerocopy-0.8.27//:build_script_build", + "@vendor_ts__atomic-polyfill-1.0.3//:build_script_build", + "@vendor_ts__critical-section-1.2.0//:critical_section", ], ) @@ -125,9 +123,6 @@ cargo_build_script( "WORKSPACE.bazel", ], ), - crate_features = [ - "simd", - ], crate_name = "build_script_build", crate_root = "build.rs", data = glob( @@ -143,7 +138,7 @@ cargo_build_script( ], ), edition = "2021", - pkg_name = "zerocopy", + pkg_name = "atomic-polyfill", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -152,12 +147,12 @@ cargo_build_script( ], tags = [ "cargo-bazel", - "crate-name=zerocopy", + "crate-name=atomic-polyfill", "manual", "noclippy", "norustfmt", ], - version = "0.8.27", + version = "1.0.3", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel index a5cfeccdcea8..b4965e15d280 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel @@ -32,26 +32,26 @@ filegroup( # Workspace Member Dependencies alias( - name = "anyhow-1.0.100", - actual = "@vendor_ts__anyhow-1.0.100//:anyhow", + name = "anyhow-1.0.102", + actual = "@vendor_ts__anyhow-1.0.102//:anyhow", tags = ["manual"], ) alias( name = "anyhow", - actual = "@vendor_ts__anyhow-1.0.100//:anyhow", + actual = "@vendor_ts__anyhow-1.0.102//:anyhow", tags = ["manual"], ) alias( - name = "argfile-0.2.1", - actual = "@vendor_ts__argfile-0.2.1//:argfile", + name = "argfile-1.0.0", + actual = "@vendor_ts__argfile-1.0.0//:argfile", tags = ["manual"], ) alias( name = "argfile", - actual = "@vendor_ts__argfile-0.2.1//:argfile", + actual = "@vendor_ts__argfile-1.0.0//:argfile", tags = ["manual"], ) @@ -68,26 +68,26 @@ alias( ) alias( - name = "chrono-0.4.42", - actual = "@vendor_ts__chrono-0.4.42//:chrono", + name = "chrono-0.4.44", + actual = "@vendor_ts__chrono-0.4.44//:chrono", tags = ["manual"], ) alias( name = "chrono", - actual = "@vendor_ts__chrono-0.4.42//:chrono", + actual = "@vendor_ts__chrono-0.4.44//:chrono", tags = ["manual"], ) alias( - name = "clap-4.5.48", - actual = "@vendor_ts__clap-4.5.48//:clap", + name = "clap-4.6.0", + actual = "@vendor_ts__clap-4.6.0//:clap", tags = ["manual"], ) alias( name = "clap", - actual = "@vendor_ts__clap-4.5.48//:clap", + actual = "@vendor_ts__clap-4.6.0//:clap", tags = ["manual"], ) @@ -236,260 +236,260 @@ alias( ) alias( - name = "proc-macro2-1.0.101", - actual = "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", + name = "proc-macro2-1.0.106", + actual = "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", tags = ["manual"], ) alias( name = "proc-macro2", - actual = "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", + actual = "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", tags = ["manual"], ) alias( - name = "quote-1.0.41", - actual = "@vendor_ts__quote-1.0.41//:quote", + name = "quote-1.0.45", + actual = "@vendor_ts__quote-1.0.45//:quote", tags = ["manual"], ) alias( name = "quote", - actual = "@vendor_ts__quote-1.0.41//:quote", + actual = "@vendor_ts__quote-1.0.45//:quote", tags = ["manual"], ) alias( - name = "ra_ap_base_db-0.0.301", - actual = "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db", + name = "ra_ap_base_db-0.0.328", + actual = "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", tags = ["manual"], ) alias( name = "ra_ap_base_db", - actual = "@vendor_ts__ra_ap_base_db-0.0.301//:ra_ap_base_db", + actual = "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", tags = ["manual"], ) alias( - name = "ra_ap_cfg-0.0.301", - actual = "@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg", + name = "ra_ap_cfg-0.0.328", + actual = "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", tags = ["manual"], ) alias( name = "ra_ap_cfg", - actual = "@vendor_ts__ra_ap_cfg-0.0.301//:ra_ap_cfg", + actual = "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", tags = ["manual"], ) alias( - name = "ra_ap_hir-0.0.301", - actual = "@vendor_ts__ra_ap_hir-0.0.301//:ra_ap_hir", + name = "ra_ap_hir-0.0.328", + actual = "@vendor_ts__ra_ap_hir-0.0.328//:ra_ap_hir", tags = ["manual"], ) alias( name = "ra_ap_hir", - actual = "@vendor_ts__ra_ap_hir-0.0.301//:ra_ap_hir", + actual = "@vendor_ts__ra_ap_hir-0.0.328//:ra_ap_hir", tags = ["manual"], ) alias( - name = "ra_ap_hir_def-0.0.301", - actual = "@vendor_ts__ra_ap_hir_def-0.0.301//:ra_ap_hir_def", + name = "ra_ap_hir_def-0.0.328", + actual = "@vendor_ts__ra_ap_hir_def-0.0.328//:ra_ap_hir_def", tags = ["manual"], ) alias( name = "ra_ap_hir_def", - actual = "@vendor_ts__ra_ap_hir_def-0.0.301//:ra_ap_hir_def", + actual = "@vendor_ts__ra_ap_hir_def-0.0.328//:ra_ap_hir_def", tags = ["manual"], ) alias( - name = "ra_ap_hir_expand-0.0.301", - actual = "@vendor_ts__ra_ap_hir_expand-0.0.301//:ra_ap_hir_expand", + name = "ra_ap_hir_expand-0.0.328", + actual = "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand", tags = ["manual"], ) alias( name = "ra_ap_hir_expand", - actual = "@vendor_ts__ra_ap_hir_expand-0.0.301//:ra_ap_hir_expand", + actual = "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand", tags = ["manual"], ) alias( - name = "ra_ap_hir_ty-0.0.301", - actual = "@vendor_ts__ra_ap_hir_ty-0.0.301//:ra_ap_hir_ty", + name = "ra_ap_hir_ty-0.0.328", + actual = "@vendor_ts__ra_ap_hir_ty-0.0.328//:ra_ap_hir_ty", tags = ["manual"], ) alias( name = "ra_ap_hir_ty", - actual = "@vendor_ts__ra_ap_hir_ty-0.0.301//:ra_ap_hir_ty", + actual = "@vendor_ts__ra_ap_hir_ty-0.0.328//:ra_ap_hir_ty", tags = ["manual"], ) alias( - name = "ra_ap_ide_db-0.0.301", - actual = "@vendor_ts__ra_ap_ide_db-0.0.301//:ra_ap_ide_db", + name = "ra_ap_ide_db-0.0.328", + actual = "@vendor_ts__ra_ap_ide_db-0.0.328//:ra_ap_ide_db", tags = ["manual"], ) alias( name = "ra_ap_ide_db", - actual = "@vendor_ts__ra_ap_ide_db-0.0.301//:ra_ap_ide_db", + actual = "@vendor_ts__ra_ap_ide_db-0.0.328//:ra_ap_ide_db", tags = ["manual"], ) alias( - name = "ra_ap_intern-0.0.301", - actual = "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", + name = "ra_ap_intern-0.0.328", + actual = "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", tags = ["manual"], ) alias( name = "ra_ap_intern", - actual = "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern", + actual = "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", tags = ["manual"], ) alias( - name = "ra_ap_load-cargo-0.0.301", - actual = "@vendor_ts__ra_ap_load-cargo-0.0.301//:ra_ap_load_cargo", + name = "ra_ap_load-cargo-0.0.328", + actual = "@vendor_ts__ra_ap_load-cargo-0.0.328//:ra_ap_load_cargo", tags = ["manual"], ) alias( name = "ra_ap_load-cargo", - actual = "@vendor_ts__ra_ap_load-cargo-0.0.301//:ra_ap_load_cargo", + actual = "@vendor_ts__ra_ap_load-cargo-0.0.328//:ra_ap_load_cargo", tags = ["manual"], ) alias( - name = "ra_ap_parser-0.0.301", - actual = "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser", + name = "ra_ap_parser-0.0.328", + actual = "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser", tags = ["manual"], ) alias( name = "ra_ap_parser", - actual = "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser", + actual = "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser", tags = ["manual"], ) alias( - name = "ra_ap_paths-0.0.301", - actual = "@vendor_ts__ra_ap_paths-0.0.301//:ra_ap_paths", + name = "ra_ap_paths-0.0.328", + actual = "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", tags = ["manual"], ) alias( name = "ra_ap_paths", - actual = "@vendor_ts__ra_ap_paths-0.0.301//:ra_ap_paths", + actual = "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", tags = ["manual"], ) alias( - name = "ra_ap_project_model-0.0.301", - actual = "@vendor_ts__ra_ap_project_model-0.0.301//:ra_ap_project_model", + name = "ra_ap_project_model-0.0.328", + actual = "@vendor_ts__ra_ap_project_model-0.0.328//:ra_ap_project_model", tags = ["manual"], ) alias( name = "ra_ap_project_model", - actual = "@vendor_ts__ra_ap_project_model-0.0.301//:ra_ap_project_model", + actual = "@vendor_ts__ra_ap_project_model-0.0.328//:ra_ap_project_model", tags = ["manual"], ) alias( - name = "ra_ap_span-0.0.301", - actual = "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", + name = "ra_ap_span-0.0.328", + actual = "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", tags = ["manual"], ) alias( name = "ra_ap_span", - actual = "@vendor_ts__ra_ap_span-0.0.301//:ra_ap_span", + actual = "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", tags = ["manual"], ) alias( - name = "ra_ap_stdx-0.0.301", - actual = "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + name = "ra_ap_stdx-0.0.328", + actual = "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", tags = ["manual"], ) alias( - name = "stdx-0.0.301", - actual = "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + name = "stdx-0.0.328", + actual = "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", tags = ["manual"], ) alias( name = "stdx", - actual = "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + actual = "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", tags = ["manual"], ) alias( - name = "ra_ap_syntax-0.0.301", - actual = "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax", + name = "ra_ap_syntax-0.0.328", + actual = "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", tags = ["manual"], ) alias( name = "ra_ap_syntax", - actual = "@vendor_ts__ra_ap_syntax-0.0.301//:ra_ap_syntax", + actual = "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", tags = ["manual"], ) alias( - name = "ra_ap_vfs-0.0.301", - actual = "@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs", + name = "ra_ap_vfs-0.0.328", + actual = "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", tags = ["manual"], ) alias( name = "ra_ap_vfs", - actual = "@vendor_ts__ra_ap_vfs-0.0.301//:ra_ap_vfs", + actual = "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", tags = ["manual"], ) alias( - name = "rand-0.9.2", - actual = "@vendor_ts__rand-0.9.2//:rand", + name = "rand-0.10.1", + actual = "@vendor_ts__rand-0.10.1//:rand", tags = ["manual"], ) alias( name = "rand", - actual = "@vendor_ts__rand-0.9.2//:rand", + actual = "@vendor_ts__rand-0.10.1//:rand", tags = ["manual"], ) alias( - name = "rayon-1.11.0", - actual = "@vendor_ts__rayon-1.11.0//:rayon", + name = "rayon-1.12.0", + actual = "@vendor_ts__rayon-1.12.0//:rayon", tags = ["manual"], ) alias( name = "rayon", - actual = "@vendor_ts__rayon-1.11.0//:rayon", + actual = "@vendor_ts__rayon-1.12.0//:rayon", tags = ["manual"], ) alias( - name = "regex-1.11.3", - actual = "@vendor_ts__regex-1.11.3//:regex", + name = "regex-1.12.3", + actual = "@vendor_ts__regex-1.12.3//:regex", tags = ["manual"], ) alias( name = "regex", - actual = "@vendor_ts__regex-1.11.3//:regex", + actual = "@vendor_ts__regex-1.12.3//:regex", tags = ["manual"], ) @@ -506,62 +506,62 @@ alias( ) alias( - name = "serde_json-1.0.145", - actual = "@vendor_ts__serde_json-1.0.145//:serde_json", + name = "serde_json-1.0.149", + actual = "@vendor_ts__serde_json-1.0.149//:serde_json", tags = ["manual"], ) alias( name = "serde_json", - actual = "@vendor_ts__serde_json-1.0.145//:serde_json", + actual = "@vendor_ts__serde_json-1.0.149//:serde_json", tags = ["manual"], ) alias( - name = "serde_with-3.14.1", - actual = "@vendor_ts__serde_with-3.14.1//:serde_with", + name = "serde_with-3.18.0", + actual = "@vendor_ts__serde_with-3.18.0//:serde_with", tags = ["manual"], ) alias( name = "serde_with", - actual = "@vendor_ts__serde_with-3.14.1//:serde_with", + actual = "@vendor_ts__serde_with-3.18.0//:serde_with", tags = ["manual"], ) alias( - name = "syn-2.0.106", - actual = "@vendor_ts__syn-2.0.106//:syn", + name = "syn-2.0.117", + actual = "@vendor_ts__syn-2.0.117//:syn", tags = ["manual"], ) alias( name = "syn", - actual = "@vendor_ts__syn-2.0.106//:syn", + actual = "@vendor_ts__syn-2.0.117//:syn", tags = ["manual"], ) alias( - name = "toml-0.9.7", - actual = "@vendor_ts__toml-0.9.7//:toml", + name = "toml-1.1.2+spec-1.1.0", + actual = "@vendor_ts__toml-1.1.2-spec-1.1.0//:toml", tags = ["manual"], ) alias( name = "toml", - actual = "@vendor_ts__toml-0.9.7//:toml", + actual = "@vendor_ts__toml-1.1.2-spec-1.1.0//:toml", tags = ["manual"], ) alias( - name = "tracing-0.1.41", - actual = "@vendor_ts__tracing-0.1.41//:tracing", + name = "tracing-0.1.44", + actual = "@vendor_ts__tracing-0.1.44//:tracing", tags = ["manual"], ) alias( name = "tracing", - actual = "@vendor_ts__tracing-0.1.41//:tracing", + actual = "@vendor_ts__tracing-0.1.44//:tracing", tags = ["manual"], ) @@ -578,14 +578,14 @@ alias( ) alias( - name = "tracing-subscriber-0.3.20", - actual = "@vendor_ts__tracing-subscriber-0.3.20//:tracing_subscriber", + name = "tracing-subscriber-0.3.23", + actual = "@vendor_ts__tracing-subscriber-0.3.23//:tracing_subscriber", tags = ["manual"], ) alias( name = "tracing-subscriber", - actual = "@vendor_ts__tracing-subscriber-0.3.20//:tracing_subscriber", + actual = "@vendor_ts__tracing-subscriber-0.3.23//:tracing_subscriber", tags = ["manual"], ) @@ -650,14 +650,14 @@ alias( ) alias( - name = "triomphe-0.1.14", - actual = "@vendor_ts__triomphe-0.1.14//:triomphe", + name = "triomphe-0.1.15", + actual = "@vendor_ts__triomphe-0.1.15//:triomphe", tags = ["manual"], ) alias( name = "triomphe", - actual = "@vendor_ts__triomphe-0.1.14//:triomphe", + actual = "@vendor_ts__triomphe-0.1.15//:triomphe", tags = ["manual"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.11.1.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.4.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.11.1.bazel index 1e9bde485ea4..02bd7814aa45 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.11.1.bazel @@ -93,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.9.4", + version = "2.11.1", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.6.1.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.7.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.6.1.bazel index cdf0bd3bcde6..76af71ed47f7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.6.1.bazel @@ -97,9 +97,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.5.7", + version = "1.6.1", deps = [ - "@vendor_ts__borsh-1.5.7//:build_script_build", + "@vendor_ts__borsh-1.6.1//:build_script_build", ], ) @@ -151,7 +151,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.5.7", + version = "1.6.1", visibility = ["//visibility:private"], deps = [ "@vendor_ts__cfg_aliases-0.2.1//:cfg_aliases", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel index efe6232bbf79..0e4d1c63f1ba 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel @@ -99,6 +99,6 @@ rust_library( }), version = "1.12.0", deps = [ - "@vendor_ts__memchr-2.7.5//:memchr", + "@vendor_ts__memchr-2.8.0//:memchr", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.byteorder-1.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.byteorder-1.5.0.bazel new file mode 100644 index 000000000000..a4c26e134094 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.byteorder-1.5.0.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @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 = "byteorder", + 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=byteorder", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytes-1.11.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytes-1.11.1.bazel new file mode 100644 index 000000000000..d16c296c5adc --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytes-1.11.1.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @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 = "bytes", + 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=bytes", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.11.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.12.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.2.2.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.12.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.2.2.bazel index 250bb124b510..92a6e66df847 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.12.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.2.2.bazel @@ -39,11 +39,10 @@ rust_library( ], ), crate_features = [ - "serde", "serde1", ], crate_root = "src/lib.rs", - edition = "2018", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -101,10 +100,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.1.12", + version = "1.2.2", deps = [ - "@vendor_ts__camino-1.1.12//:build_script_build", - "@vendor_ts__serde-1.0.228//:serde", + "@vendor_ts__camino-1.2.2//:build_script_build", + "@vendor_ts__serde_core-1.0.228//:serde_core", ], ) @@ -128,7 +127,6 @@ cargo_build_script( ], ), crate_features = [ - "serde", "serde1", ], crate_name = "build_script_build", @@ -145,7 +143,7 @@ cargo_build_script( "WORKSPACE.bazel", ], ), - edition = "2018", + edition = "2021", pkg_name = "camino", rustc_env_files = [ ":cargo_toml_env_vars", @@ -160,7 +158,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.1.12", + version = "1.2.2", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.3.2.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.2.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.3.2.bazel index 1a1a383b6390..6571dd77bf9e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.3.2.bazel @@ -35,7 +35,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -93,8 +93,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.0", + version = "0.3.2", deps = [ - "@vendor_ts__serde-1.0.228//:serde", + "@vendor_ts__serde_core-1.0.228//:serde_core", ], ) 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.23.1.bazel similarity index 92% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.23.1.bazel index aefea796d4c3..d5fc84ec87a1 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.23.1.bazel @@ -96,14 +96,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.21.0", + version = "0.23.1", deps = [ - "@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__camino-1.2.2//:camino", + "@vendor_ts__cargo-platform-0.3.2//:cargo_platform", + "@vendor_ts__semver-1.0.28//:semver", "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__serde_json-1.0.145//:serde_json", - "@vendor_ts__thiserror-2.0.16//:thiserror", + "@vendor_ts__serde_json-1.0.149//:serde_json", + "@vendor_ts__thiserror-2.0.18//:thiserror", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.37.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.60.bazel similarity index 86% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.37.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.60.bazel index c747c1c3c4fc..daf0f93aca41 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.37.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.60.bazel @@ -96,47 +96,47 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.2.37", + version = "1.2.60", deps = [ - "@vendor_ts__find-msvc-tools-0.1.1//:find_msvc_tools", + "@vendor_ts__find-msvc-tools-0.1.9//: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.175//:libc", # aarch64-apple-darwin + "@vendor_ts__libc-0.2.185//:libc", # aarch64-apple-darwin ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # aarch64-unknown-linux-gnu + "@vendor_ts__libc-0.2.185//:libc", # aarch64-unknown-linux-gnu ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "@vendor_ts__libc-0.2.185//:libc", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.175//:libc", # arm-unknown-linux-gnueabi + "@vendor_ts__libc-0.2.185//:libc", # arm-unknown-linux-gnueabi ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # i686-unknown-linux-gnu + "@vendor_ts__libc-0.2.185//:libc", # i686-unknown-linux-gnu ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # powerpc-unknown-linux-gnu + "@vendor_ts__libc-0.2.185//:libc", # powerpc-unknown-linux-gnu ], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # riscv64gc-unknown-linux-gnu + "@vendor_ts__libc-0.2.185//:libc", # riscv64gc-unknown-linux-gnu ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # s390x-unknown-linux-gnu + "@vendor_ts__libc-0.2.185//:libc", # s390x-unknown-linux-gnu ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # x86_64-apple-darwin + "@vendor_ts__libc-0.2.185//:libc", # x86_64-apple-darwin ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.175//:libc", # x86_64-unknown-freebsd + "@vendor_ts__libc-0.2.185//:libc", # x86_64-unknown-freebsd ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # x86_64-unknown-linux-gnu + "@vendor_ts__libc-0.2.185//:libc", # x86_64-unknown-linux-gnu ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "@vendor_ts__libc-0.2.185//: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.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.4.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.4.bazel index 66d5b40eb232..415a85fe18cc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.4.bazel @@ -93,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.3", + version = "1.0.4", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chacha20-0.10.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chacha20-0.10.0.bazel new file mode 100644 index 000000000000..7109de2bbe4a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chacha20-0.10.0.bazel @@ -0,0 +1,151 @@ +############################################################################### +# @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 = "chacha20", + 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 = [ + "rng", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=chacha20", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.10.0", + deps = [ + "@vendor_ts__cfg-if-1.0.4//:cfg_if", + "@vendor_ts__rand_core-0.10.1//:rand_core", + ] + select({ + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:i686-linux-android": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-linux-android": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-unknown-none": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [ + "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "//conditions:default": [], + }), +) 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 c7b526db2fb6..b66be433fe88 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 @@ -95,9 +95,9 @@ rust_proc_macro( }), version = "0.104.0", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//: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 deleted file mode 100644 index 7f20b012de96..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.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 = "chalk_ir", - 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", - proc_macro_deps = [ - "@vendor_ts__chalk-derive-0.103.0//:chalk_derive", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=chalk-ir", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.103.0", - deps = [ - "@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 2d796bef0b65..66edc978c74f 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 @@ -98,6 +98,6 @@ rust_library( }), version = "0.104.0", deps = [ - "@vendor_ts__bitflags-2.9.4//:bitflags", + "@vendor_ts__bitflags-2.11.1//:bitflags", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel deleted file mode 100644 index b5bb39ea428c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel +++ /dev/null @@ -1,106 +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 = "chalk_recursive", - 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", - proc_macro_deps = [ - "@vendor_ts__chalk-derive-0.103.0//:chalk_derive", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=chalk-recursive", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.103.0", - deps = [ - "@vendor_ts__chalk-ir-0.103.0//:chalk_ir", - "@vendor_ts__chalk-solve-0.103.0//:chalk_solve", - "@vendor_ts__rustc-hash-1.1.0//:rustc_hash", - "@vendor_ts__tracing-0.1.41//:tracing", - ], -) 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 deleted file mode 100644 index f1124f1108fa..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel +++ /dev/null @@ -1,109 +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 = "chalk_solve", - 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", - proc_macro_deps = [ - "@vendor_ts__chalk-derive-0.103.0//:chalk_derive", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=chalk-solve", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.103.0", - deps = [ - "@vendor_ts__chalk-ir-0.103.0//:chalk_ir", - "@vendor_ts__ena-0.14.3//:ena", - "@vendor_ts__indexmap-2.11.4//:indexmap", - "@vendor_ts__itertools-0.12.1//:itertools", - "@vendor_ts__petgraph-0.6.5//:petgraph", - "@vendor_ts__rustc-hash-1.1.0//:rustc_hash", - "@vendor_ts__tracing-0.1.41//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.42.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.44.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.42.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.44.bazel index 41e2b0285ecc..b672118110f3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.42.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.44.bazel @@ -108,7 +108,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.42", + version = "0.4.44", deps = [ "@vendor_ts__num-traits-0.2.19//:num_traits", "@vendor_ts__serde-1.0.228//:serde", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.48.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.6.0.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.48.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.6.0.bazel index 1ef4252fc093..a32bb36907aa 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.48.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.6.0.bazel @@ -45,9 +45,9 @@ rust_library( "usage", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", proc_macro_deps = [ - "@vendor_ts__clap_derive-4.5.47//:clap_derive", + "@vendor_ts__clap_derive-4.6.0//:clap_derive", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -106,8 +106,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "4.5.48", + version = "4.6.0", deps = [ - "@vendor_ts__clap_builder-4.5.48//:clap_builder", + "@vendor_ts__clap_builder-4.6.0//:clap_builder", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.48.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.6.0.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.48.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.6.0.bazel index f15804a69287..e80eda78e4eb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.48.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.6.0.bazel @@ -43,7 +43,7 @@ rust_library( "usage", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -101,11 +101,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "4.5.48", + version = "4.6.0", deps = [ - "@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__anstream-1.0.0//:anstream", + "@vendor_ts__anstyle-1.0.14//:anstyle", + "@vendor_ts__clap_lex-1.1.0//:clap_lex", "@vendor_ts__strsim-0.11.1//:strsim", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.47.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.6.0.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.47.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.6.0.bazel index d203b2121e87..efcbd52b0381 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.47.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.6.0.bazel @@ -38,7 +38,7 @@ rust_proc_macro( "default", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -96,11 +96,11 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "4.5.47", + version = "4.6.0", deps = [ "@vendor_ts__heck-0.5.0//:heck", - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-0.7.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-1.1.0.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-0.7.5.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-1.1.0.bazel index a5a6cca1fe85..701c96d00d9e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-0.7.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-1.1.0.bazel @@ -35,7 +35,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -93,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.7.5", + version = "1.1.0", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.litemap-0.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cobs-0.3.0.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.litemap-0.8.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cobs-0.3.0.bazel index 47c9e11a8b9f..658009e8af70 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.litemap-0.8.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cobs-0.3.0.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "litemap", + name = "cobs", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -34,9 +34,6 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_features = [ - "alloc", - ], crate_root = "src/lib.rs", edition = "2021", rustc_env_files = [ @@ -47,7 +44,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=litemap", + "crate-name=cobs", "manual", "noclippy", "norustfmt", @@ -96,5 +93,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.8.0", + version = "0.3.0", + deps = [ + "@vendor_ts__thiserror-2.0.18//:thiserror", + ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.5.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.4.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.5.bazel index 5956c5ff8f7f..59b50356c647 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.5.bazel @@ -93,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.4", + version = "1.0.5", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cpufeatures-0.3.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cpufeatures-0.3.0.bazel new file mode 100644 index 000000000000..57d9f28db4a8 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cpufeatures-0.3.0.bazel @@ -0,0 +1,118 @@ +############################################################################### +# @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 = "cpufeatures", + 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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=cpufeatures", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.0", + deps = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_arch = "aarch64", target_vendor = "apple")) + ], + "@rules_rust//rust/platform:aarch64-apple-ios": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_arch = "aarch64", target_vendor = "apple")) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_arch = "aarch64", target_vendor = "apple")) + ], + "@rules_rust//rust/platform:aarch64-linux-android": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_arch = "aarch64", target_os = "android")) + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_arch = "aarch64", target_os = "linux")) + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_arch = "aarch64", target_os = "linux")) + ], + "//conditions:default": [], + }), +) 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 index 46c3fb30a597..ee8ffed758d6 100644 --- 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 @@ -103,7 +103,7 @@ rust_library( }), version = "1.5.0", deps = [ - "@vendor_ts__cfg-if-1.0.3//:cfg_if", + "@vendor_ts__cfg-if-1.0.4//:cfg_if", "@vendor_ts__crc32fast-1.5.0//:build_script_build", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.critical-section-1.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.critical-section-1.2.0.bazel new file mode 100644 index 000000000000..0e3cf2f62f41 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.critical-section-1.2.0.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @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 = "critical_section", + 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=critical-section", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.2.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.21.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.23.0.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.21.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.23.0.bazel index a9572a79a814..84da5eac9d94 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.21.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.23.0.bazel @@ -41,7 +41,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__darling_macro-0.21.3//:darling_macro", + "@vendor_ts__darling_macro-0.23.0//:darling_macro", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -100,8 +100,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.21.3", + version = "0.23.0", deps = [ - "@vendor_ts__darling_core-0.21.3//:darling_core", + "@vendor_ts__darling_core-0.23.0//:darling_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.21.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.23.0.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.21.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.23.0.bazel index 22e3ea592f61..a9da47fd6acd 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.21.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.23.0.bazel @@ -97,13 +97,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.21.3", + version = "0.23.0", deps = [ - "@vendor_ts__fnv-1.0.7//:fnv", "@vendor_ts__ident_case-1.0.1//:ident_case", - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", "@vendor_ts__strsim-0.11.1//:strsim", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__syn-2.0.117//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.21.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.23.0.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.21.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.23.0.bazel index 99c3af7e2e4f..aa8c9c33128a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.21.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.23.0.bazel @@ -93,10 +93,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.21.3", + version = "0.23.0", deps = [ - "@vendor_ts__darling_core-0.21.3//:darling_core", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__darling_core-0.23.0//:darling_core", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//: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 c9a20e45392f..d7ee0436f948 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 @@ -99,11 +99,11 @@ rust_library( }), version = "6.1.0", deps = [ - "@vendor_ts__cfg-if-1.0.3//:cfg_if", + "@vendor_ts__cfg-if-1.0.4//: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", - "@vendor_ts__once_cell-1.21.3//:once_cell", + "@vendor_ts__once_cell-1.21.4//:once_cell", "@vendor_ts__parking_lot_core-0.9.11//:parking_lot_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel index 850713a2e455..bfd0ba3fc282 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel @@ -34,6 +34,10 @@ rust_library( "WORKSPACE.bazel", ], ), + crate_features = [ + "default", + "powerfmt", + ], crate_root = "src/lib.rs", edition = "2021", rustc_env_files = [ @@ -94,4 +98,7 @@ rust_library( "//conditions:default": ["@platforms//:incompatible"], }), version = "0.5.3", + deps = [ + "@vendor_ts__powerfmt-0.2.0//:powerfmt", + ], ) 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.derive-where-1.6.1.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.derive-where-1.6.1.bazel index 41aae8ab1ecc..16396514eeb5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.derive-where-1.6.1.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_proc_macro( - name = "displaydoc", + name = "derive_where", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -44,7 +44,7 @@ rust_proc_macro( ], tags = [ "cargo-bazel", - "crate-name=displaydoc", + "crate-name=derive-where", "manual", "noclippy", "norustfmt", @@ -93,10 +93,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.5", + version = "1.6.1", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dissimilar-1.0.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dissimilar-1.0.11.bazel new file mode 100644 index 000000000000..79ee7c7ee72a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dissimilar-1.0.11.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @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 = "dissimilar", + 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=dissimilar", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.11", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.4.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.4.0.bazel new file mode 100644 index 000000000000..1aedeaf25f78 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.4.0.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @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 = "embedded_io", + 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=embedded-io", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.writeable-0.6.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.6.1.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.writeable-0.6.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.6.1.bazel index 28b6f63ce6fe..cf929d38e539 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.writeable-0.6.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.6.1.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "writeable", + name = "embedded_io", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -44,7 +44,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=writeable", + "crate-name=embedded-io", "manual", "noclippy", "norustfmt", 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 c59d0a9a3162..ecacffd0328f 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 @@ -95,6 +95,6 @@ rust_library( }), version = "0.14.3", deps = [ - "@vendor_ts__log-0.4.28//:log", + "@vendor_ts__log-0.4.29//:log", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.9.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.9.bazel index 8fc8c9a81e26..12cd2ecbe0cc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.9.bazel @@ -93,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.1", + version = "0.1.9", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.4.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.5.7.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.4.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.5.7.bazel index b41f13ec6e51..01336178f130 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.4.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.5.7.bazel @@ -35,7 +35,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2015", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -93,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.2", + version = "0.5.7", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fnv-1.0.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fnv-1.0.7.bazel deleted file mode 100644 index 80252992a212..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fnv-1.0.7.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_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 = "fnv", - 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 = "lib.rs", - edition = "2015", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=fnv", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.7", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel deleted file mode 100644 index 7d4cbdcdecb7..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel +++ /dev/null @@ -1,104 +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 = "form_urlencoded", - 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 = [ - "alloc", - "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=form_urlencoded", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.2.2", - deps = [ - "@vendor_ts__percent-encoding-2.3.2//:percent_encoding", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-2.11.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-3.3.0.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-2.11.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-3.3.0.bazel index 657e1cd8a4aa..41907be4dc07 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-2.11.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-3.3.0.bazel @@ -97,9 +97,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.11.0", + version = "3.3.0", deps = [ - "@vendor_ts__fs-err-2.11.0//:build_script_build", + "@vendor_ts__fs-err-3.3.0//:build_script_build", ], ) @@ -151,7 +151,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "2.11.0", + version = "3.3.0", visibility = ["//visibility:private"], deps = [ "@vendor_ts__autocfg-1.5.0//:autocfg", 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 cb938292839d..31a03fc15cdd 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 @@ -95,6 +95,6 @@ rust_library( }), version = "4.1.0", deps = [ - "@vendor_ts__libc-0.2.175//:libc", + "@vendor_ts__libc-0.2.185//: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.4.bazel similarity index 86% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.4.bazel index d09e3ce7a4a5..6b4d1acde83a 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.4.bazel @@ -100,88 +100,88 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.3.3", + version = "0.3.4", deps = [ - "@vendor_ts__cfg-if-1.0.3//:cfg_if", - "@vendor_ts__getrandom-0.3.3//:build_script_build", + "@vendor_ts__cfg-if-1.0.4//:cfg_if", + "@vendor_ts__getrandom-0.3.4//:build_script_build", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) + "@vendor_ts__libc-0.2.185//: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.175//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) + "@vendor_ts__libc-0.2.185//: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.175//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) + "@vendor_ts__libc-0.2.185//: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.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")))) + "@vendor_ts__libc-0.2.185//: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.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")))) + "@vendor_ts__libc-0.2.185//: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.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")))) + "@vendor_ts__libc-0.2.185//: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.175//:libc", # cfg(any(target_os = "haiku", target_os = "redox", target_os = "nto", target_os = "aix")) + "@vendor_ts__libc-0.2.185//: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.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")))) + "@vendor_ts__libc-0.2.185//: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:arm-unknown-linux-musleabi": [ - "@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")))) + "@vendor_ts__libc-0.2.185//: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.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")))) + "@vendor_ts__libc-0.2.185//: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.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")))) + "@vendor_ts__libc-0.2.185//: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.175//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) + "@vendor_ts__libc-0.2.185//: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.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")))) + "@vendor_ts__libc-0.2.185//: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.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"))) + "@vendor_ts__libc-0.2.185//: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.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")))) + "@vendor_ts__libc-0.2.185//: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.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")))) + "@vendor_ts__libc-0.2.185//: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:riscv64gc-unknown-linux-gnu": [ - "@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")))) + "@vendor_ts__libc-0.2.185//: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.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")))) + "@vendor_ts__libc-0.2.185//: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:wasm32-unknown-emscripten": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) ], "@rules_rust//rust/platform:wasm32-wasip2": [ - "@vendor_ts__wasi-0.14.5-wasi-0.2.4//:wasi", # cfg(all(target_arch = "wasm32", target_os = "wasi", target_env = "p2")) + "@vendor_ts__wasip2-1.0.0-wasi-0.2.4//:wasip2", # cfg(all(target_arch = "wasm32", target_os = "wasi", target_env = "p2")) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) + "@vendor_ts__libc-0.2.185//: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.175//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) + "@vendor_ts__libc-0.2.185//: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.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")))) + "@vendor_ts__libc-0.2.185//: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.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"))) + "@vendor_ts__libc-0.2.185//: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.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")))) + "@vendor_ts__libc-0.2.185//: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.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")))) + "@vendor_ts__libc-0.2.185//: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": [], }), @@ -238,7 +238,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "0.3.3", + version = "0.3.4", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.4.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.4.2.bazel new file mode 100644 index 000000000000..74aa24668f2a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.4.2.bazel @@ -0,0 +1,252 @@ +############################################################################### +# @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 = "getrandom", + 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 = [ + "std", + "sys_rng", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=getrandom", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.2", + deps = [ + "@vendor_ts__cfg-if-1.0.4//:cfg_if", + "@vendor_ts__getrandom-0.4.2//:build_script_build", + "@vendor_ts__rand_core-0.10.1//:rand_core", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__libc-0.2.185//: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.185//: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.185//: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.185//: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.185//: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.185//: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.185//: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.185//: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:arm-unknown-linux-musleabi": [ + "@vendor_ts__libc-0.2.185//: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.185//: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.185//: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.185//: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.185//: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.185//: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.185//: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.185//: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:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.185//: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.185//: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:wasm32-unknown-emscripten": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) + ], + "@rules_rust//rust/platform:wasm32-wasip2": [ + "@vendor_ts__wasip2-1.0.0-wasi-0.2.4//:wasip2", # cfg(all(target_arch = "wasm32", target_os = "wasi", target_env = "p2")) + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__libc-0.2.185//: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.185//: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.185//: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.185//: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.185//: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.185//: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": [], + }), +) + +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 = [ + "std", + "sys_rng", + ], + 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 = "2024", + pkg_name = "getrandom", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=getrandom", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.4.2", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel index 0f83adee8e78..eadca051b955 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel @@ -99,10 +99,10 @@ rust_library( }), version = "0.4.16", deps = [ - "@vendor_ts__aho-corasick-1.1.3//:aho_corasick", + "@vendor_ts__aho-corasick-1.1.4//:aho_corasick", "@vendor_ts__bstr-1.12.0//:bstr", - "@vendor_ts__log-0.4.28//:log", - "@vendor_ts__regex-automata-0.4.11//:regex_automata", - "@vendor_ts__regex-syntax-0.8.6//:regex_syntax", + "@vendor_ts__log-0.4.29//:log", + "@vendor_ts__regex-automata-0.4.14//:regex_automata", + "@vendor_ts__regex-syntax-0.8.10//:regex_syntax", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scoped-tls-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hash32-0.2.1.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scoped-tls-1.0.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hash32-0.2.1.bazel index 83ffd8145e73..182c9c89fd4e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scoped-tls-1.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hash32-0.2.1.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "scoped_tls", + name = "hash32", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -44,7 +44,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=scoped-tls", + "crate-name=hash32", "manual", "noclippy", "norustfmt", @@ -93,5 +93,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.1", + version = "0.2.1", + deps = [ + "@vendor_ts__byteorder-1.5.0//:byteorder", + ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.17.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.17.0.bazel new file mode 100644 index 000000000000..3dddca9e54da --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.17.0.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @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 = "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_root = "src/lib.rs", + edition = "2024", + 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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.17.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heapless-0.7.17.bazel similarity index 70% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heapless-0.7.17.bazel index a495f639d420..75b7d25c4df4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heapless-0.7.17.bazel @@ -21,7 +21,7 @@ cargo_toml_env_vars( ) rust_library( - name = "semver", + name = "heapless", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -39,9 +39,9 @@ rust_library( ], ), crate_features = [ - "default", + "atomic-polyfill", + "cas", "serde", - "std", ], crate_root = "src/lib.rs", edition = "2018", @@ -53,7 +53,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=semver", + "crate-name=heapless", "manual", "noclippy", "norustfmt", @@ -102,11 +102,48 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.26", + version = "0.7.17", deps = [ - "@vendor_ts__semver-1.0.26//:build_script_build", + "@vendor_ts__hash32-0.2.1//:hash32", + "@vendor_ts__heapless-0.7.17//:build_script_build", "@vendor_ts__serde-1.0.228//:serde", - ], + "@vendor_ts__stable_deref_trait-1.2.1//:stable_deref_trait", + ] + select({ + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [ + "@vendor_ts__atomic-polyfill-1.0.3//:atomic_polyfill", # riscv32imc-unknown-none-elf + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") + ], + "@rules_rust//rust/platform:x86_64-linux-android": [ + "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") + ], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ + "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") + ], + "@rules_rust//rust/platform:x86_64-unknown-none": [ + "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") + ], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [ + "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") + ], + "//conditions:default": [], + }), ) cargo_build_script( @@ -129,9 +166,9 @@ cargo_build_script( ], ), crate_features = [ - "default", + "atomic-polyfill", + "cas", "serde", - "std", ], crate_name = "build_script_build", crate_root = "build.rs", @@ -148,7 +185,7 @@ cargo_build_script( ], ), edition = "2018", - pkg_name = "semver", + pkg_name = "heapless", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -157,13 +194,16 @@ cargo_build_script( ], tags = [ "cargo-bazel", - "crate-name=semver", + "crate-name=heapless", "manual", "noclippy", "norustfmt", ], - version = "1.0.26", + version = "0.7.17", visibility = ["//visibility:private"], + deps = [ + "@vendor_ts__rustc_version-0.4.1//:rustc_version", + ], ) alias( diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.12.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.11.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.12.bazel index 97b2f5a5b94b..8eaa49950537 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.12.bazel @@ -35,7 +35,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -93,16 +93,16 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.5.11", + version = "0.5.12", 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.iana-time-zone-0.1.63.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.63.bazel index d66d4803a463..0f0237cf6b4c 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 @@ -127,7 +127,7 @@ rust_library( ], "@rules_rust//rust/platform:wasm32-unknown-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__log-0.4.29//: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": [ 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 fe120c046896..4b3b49a6cace 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 @@ -154,7 +154,7 @@ cargo_build_script( version = "0.1.2", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.37//:cc", + "@vendor_ts__cc-1.2.60//: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 deleted file mode 100644 index 4d6d31338250..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel +++ /dev/null @@ -1,106 +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 = "icu_collections", - 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", - proc_macro_deps = [ - "@vendor_ts__displaydoc-0.2.5//:displaydoc", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=icu_collections", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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 = "2.0.0", - deps = [ - "@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.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 deleted file mode 100644 index b0cb71a32999..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel +++ /dev/null @@ -1,109 +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 = "icu_locale_core", - 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 = [ - "zerovec", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__displaydoc-0.2.5//:displaydoc", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=icu_locale_core", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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 = "2.0.0", - deps = [ - "@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.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 deleted file mode 100644 index 460c5de79a2a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel +++ /dev/null @@ -1,110 +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 = "icu_normalizer", - 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 = [ - "compiled_data", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__displaydoc-0.2.5//:displaydoc", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=icu_normalizer", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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 = "2.0.0", - deps = [ - "@vendor_ts__icu_collections-2.0.0//:icu_collections", - "@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.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 deleted file mode 100644 index 4416b8253053..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel +++ /dev/null @@ -1,112 +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 = "icu_properties", - 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 = [ - "compiled_data", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__displaydoc-0.2.5//:displaydoc", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=icu_properties", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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 = "2.0.1", - deps = [ - "@vendor_ts__icu_collections-2.0.0//:icu_collections", - "@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.3//:potential_utf", - "@vendor_ts__zerotrie-0.2.2//:zerotrie", - "@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 deleted file mode 100644 index 08e96e830c79..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel +++ /dev/null @@ -1,114 +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 = "icu_provider", - 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 = [ - "baked", - "zerotrie", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__displaydoc-0.2.5//:displaydoc", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=icu_provider", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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 = "2.0.0", - deps = [ - "@vendor_ts__icu_locale_core-2.0.0//:icu_locale_core", - "@vendor_ts__stable_deref_trait-1.2.0//:stable_deref_trait", - "@vendor_ts__tinystr-0.8.1//:tinystr", - "@vendor_ts__writeable-0.6.1//:writeable", - "@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.4//:zerovec", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.id-arena-2.3.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.id-arena-2.3.0.bazel new file mode 100644 index 000000000000..7561bcf77875 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.id-arena-2.3.0.bazel @@ -0,0 +1,101 @@ +############################################################################### +# @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 = "id_arena", + 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=id-arena", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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 = "2.3.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel deleted file mode 100644 index afb404176fd2..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel +++ /dev/null @@ -1,107 +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 = "idna", - 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 = [ - "alloc", - "compiled_data", - "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=idna", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.1.0", - deps = [ - "@vendor_ts__idna_adapter-1.2.1//:idna_adapter", - "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__utf8_iter-1.0.4//:utf8_iter", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel deleted file mode 100644 index 7f44f43eac20..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel +++ /dev/null @@ -1,104 +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 = "idna_adapter", - 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 = [ - "compiled_data", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=idna_adapter", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.2.1", - deps = [ - "@vendor_ts__icu_normalizer-2.0.0//:icu_normalizer", - "@vendor_ts__icu_properties-2.0.1//:icu_properties", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.11.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.14.0.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.11.4.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.14.0.bazel index 53cca2f56778..2728cd8cff29 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.11.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.14.0.bazel @@ -40,7 +40,7 @@ rust_library( "std", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -98,10 +98,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.11.4", + version = "2.14.0", deps = [ "@vendor_ts__equivalent-1.0.2//:equivalent", - "@vendor_ts__hashbrown-0.15.5//:hashbrown", + "@vendor_ts__hashbrown-0.17.0//:hashbrown", "@vendor_ts__serde_core-1.0.228//:serde_core", ], ) 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 6be5e3be9d96..44ae44447530 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 @@ -95,8 +95,8 @@ rust_library( }), version = "0.11.0", deps = [ - "@vendor_ts__bitflags-2.9.4//:bitflags", + "@vendor_ts__bitflags-2.11.1//:bitflags", "@vendor_ts__inotify-sys-0.1.5//:inotify_sys", - "@vendor_ts__libc-0.2.175//:libc", + "@vendor_ts__libc-0.2.185//: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 9316b8d907c5..3d7224c6334c 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 @@ -95,6 +95,6 @@ rust_library( }), version = "0.1.5", deps = [ - "@vendor_ts__libc-0.2.175//:libc", + "@vendor_ts__libc-0.2.185//:libc", ], ) 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.inventory-0.3.24.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.seize-0.5.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inventory-0.3.24.bazel index 192a60880283..f80d0c4f3e86 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.seize-0.5.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inventory-0.3.24.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "seize", + name = "inventory", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -34,14 +34,26 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_features = [ - "default", - "fast-barrier", - "libc", - "windows-sys", - ], crate_root = "src/lib.rs", edition = "2021", + proc_macro_deps = select({ + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__rustversion-1.0.22//:rustversion", # cfg(target_family = "wasm") + ], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [ + "@vendor_ts__rustversion-1.0.22//:rustversion", # cfg(target_family = "wasm") + ], + "@rules_rust//rust/platform:wasm32-wasip1": [ + "@vendor_ts__rustversion-1.0.22//:rustversion", # cfg(target_family = "wasm") + ], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [ + "@vendor_ts__rustversion-1.0.22//:rustversion", # cfg(target_family = "wasm") + ], + "@rules_rust//rust/platform:wasm32-wasip2": [ + "@vendor_ts__rustversion-1.0.22//:rustversion", # cfg(target_family = "wasm") + ], + "//conditions:default": [], + }), rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -50,7 +62,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=seize", + "crate-name=inventory", "manual", "noclippy", "norustfmt", @@ -99,19 +111,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.5.0", - deps = [ - "@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 - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.52.0//:windows_sys", # i686-pc-windows-msvc - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.52.0//:windows_sys", # x86_64-pc-windows-msvc - ], - "//conditions:default": [], - }), + version = "0.3.24", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.2.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.2.bazel index 637041b51c3c..d42782128b45 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.2.bazel @@ -96,5 +96,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.70.1", + version = "1.70.2", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel deleted file mode 100644 index ff3ee2442f86..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel +++ /dev/null @@ -1,105 +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 = "itertools", - 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", - "use_alloc", - "use_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=itertools", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.1", - deps = [ - "@vendor_ts__either-1.15.0//:either", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.18.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.15.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.18.bazel index 57e6f406e902..034a159fcebd 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.15.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.18.bazel @@ -35,7 +35,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2018", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -93,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.15", + version = "1.0.18", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel index 2546f6c8a77f..7516079777f6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel @@ -96,94 +96,94 @@ rust_library( version = "0.1.34", deps = select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__getrandom-0.3.3//:getrandom", # cfg(windows) + "@vendor_ts__getrandom-0.3.4//:getrandom", # cfg(windows) ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__getrandom-0.3.3//:getrandom", # cfg(windows) + "@vendor_ts__getrandom-0.3.4//:getrandom", # cfg(windows) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__getrandom-0.3.3//:getrandom", # cfg(windows) + "@vendor_ts__getrandom-0.3.4//:getrandom", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel index 91569ee35263..43035d74ef9e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel @@ -99,7 +99,7 @@ rust_library( }), version = "0.3.78", deps = [ - "@vendor_ts__once_cell-1.21.3//:once_cell", + "@vendor_ts__once_cell-1.21.4//:once_cell", "@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 3943bd7e1b94..4bc4116a82af 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 @@ -96,6 +96,6 @@ rust_library( version = "1.1.1", deps = [ "@vendor_ts__kqueue-sys-1.0.4//:kqueue_sys", - "@vendor_ts__libc-0.2.175//:libc", + "@vendor_ts__libc-0.2.185//: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 dadf3b16e818..4257e12f1f1b 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 @@ -96,6 +96,6 @@ rust_library( version = "1.0.4", deps = [ "@vendor_ts__bitflags-1.3.2//:bitflags", - "@vendor_ts__libc-0.2.175//:libc", + "@vendor_ts__libc-0.2.185//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.leb128fmt-0.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.leb128fmt-0.1.0.bazel new file mode 100644 index 000000000000..a047cb9ea54a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.leb128fmt-0.1.0.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @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 = "leb128fmt", + 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=leb128fmt", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.175.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.185.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.175.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.185.bazel index b63baa0019d2..f2770b505b77 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.175.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.185.bazel @@ -101,9 +101,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.175", + version = "0.2.185", deps = [ - "@vendor_ts__libc-0.2.175//:build_script_build", + "@vendor_ts__libc-0.2.185//:build_script_build", ], ) @@ -159,7 +159,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "0.2.175", + version = "0.2.185", visibility = ["//visibility:private"], ) 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 45798b37ab70..42e47567b286 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 @@ -99,6 +99,6 @@ rust_library( }), version = "0.3.9", deps = [ - "@vendor_ts__log-0.4.28//:log", + "@vendor_ts__log-0.4.29//:log", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.28.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.29.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.28.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.29.bazel index 26a8978cb1bf..ddb30f59c320 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.28.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.29.bazel @@ -96,5 +96,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.28", + version = "0.4.29", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel index 3e43dd562abe..33d700108c78 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel @@ -95,6 +95,6 @@ rust_library( }), version = "0.2.0", deps = [ - "@vendor_ts__regex-automata-0.4.11//:regex_automata", + "@vendor_ts__regex-automata-0.4.14//:regex_automata", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.8.0.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.5.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.8.0.bazel index 2338b0077dad..98e6008f7669 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.8.0.bazel @@ -98,5 +98,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.7.5", + version = "2.8.0", ) 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.2.0.bazel similarity index 66% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.4.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.2.0.bazel index 4b6fcc8c864e..41f1dc8f9f15 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.2.0.bazel @@ -99,111 +99,111 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.4", + version = "1.2.0", deps = [ - "@vendor_ts__log-0.4.28//:log", + "@vendor_ts__log-0.4.29//:log", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@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:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@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:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:wasm32-wasip1": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(target_os = "wasi") + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) "@vendor_ts__wasi-0.11.1-wasi-snapshot-preview1//:wasi", # cfg(target_os = "wasi") ], "@rules_rust//rust/platform:wasm32-wasip1-threads": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(target_os = "wasi") + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) "@vendor_ts__wasi-0.11.1-wasi-snapshot-preview1//:wasi", # cfg(target_os = "wasi") ], "@rules_rust//rust/platform:wasm32-wasip2": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(target_os = "wasi") + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", 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.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@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) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel index 0c838f2c6c31..15f478f30bb5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel @@ -100,111 +100,111 @@ rust_library( }), version = "8.2.0", deps = [ - "@vendor_ts__libc-0.2.175//:libc", - "@vendor_ts__log-0.4.28//:log", + "@vendor_ts__libc-0.2.185//:libc", + "@vendor_ts__log-0.4.29//: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.4//:bitflags", # cfg(target_os = "macos") + "@vendor_ts__bitflags-2.11.1//:bitflags", # cfg(target_os = "macos") "@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # aarch64-apple-darwin ], "@rules_rust//rust/platform:aarch64-apple-ios": [ "@vendor_ts__kqueue-1.1.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ "@vendor_ts__kqueue-1.1.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) ], "@rules_rust//rust/platform:aarch64-linux-android": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@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__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__bitflags-2.9.4//:bitflags", # cfg(target_os = "macos") + "@vendor_ts__bitflags-2.11.1//:bitflags", # cfg(target_os = "macos") "@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # i686-apple-darwin ], "@rules_rust//rust/platform:i686-linux-android": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@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-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")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__bitflags-2.9.4//:bitflags", # cfg(target_os = "macos") + "@vendor_ts__bitflags-2.11.1//: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": [ "@vendor_ts__kqueue-1.1.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) ], "@rules_rust//rust/platform:x86_64-linux-android": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@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-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")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.2.1.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.1.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.2.1.bazel index 587cbdf418fa..b63f4d82b41c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.2.1.bazel @@ -93,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.0", + version = "0.2.1", ) 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 00293e65e2da..8686950c32d9 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 @@ -96,118 +96,118 @@ rust_library( version = "1.17.0", deps = select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-uefi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:thumbv7em-none-eabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:wasm32-unknown-unknown": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:wasm32-wasip1": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:wasm32-wasip1-threads": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:wasm32-wasip2": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-none": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-uefi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.185//:libc", # cfg(not(windows)) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_threads-0.1.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_threads-0.1.7.bazel new file mode 100644 index 000000000000..a27523c51bcf --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_threads-0.1.7.bazel @@ -0,0 +1,124 @@ +############################################################################### +# @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 = "num_threads", + 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=num_threads", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.7", + deps = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + ], + "@rules_rust//rust/platform:aarch64-apple-ios": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + ], + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__libc-0.2.185//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.4.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.4.bazel index d10ec0a4bceb..e556134028f4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.4.bazel @@ -99,5 +99,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.21.3", + version = "1.21.4", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel deleted file mode 100644 index 58f67759d31e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel +++ /dev/null @@ -1,104 +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 = "ordered_float", - 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 = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ordered-float", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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 = "2.10.1", - deps = [ - "@vendor_ts__num-traits-0.2.19//:num_traits", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel index 05f864c1758a..605d319f7fef 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel @@ -100,6 +100,6 @@ rust_library( }), version = "7.1.1", deps = [ - "@vendor_ts__memchr-2.7.5//:memchr", + "@vendor_ts__memchr-2.8.0//:memchr", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.papaya-0.2.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.papaya-0.2.3.bazel deleted file mode 100644 index 27bb71298a83..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.papaya-0.2.3.bazel +++ /dev/null @@ -1,104 +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 = "papaya", - 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", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=papaya", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.3", - deps = [ - "@vendor_ts__equivalent-1.0.2//:equivalent", - "@vendor_ts__seize-0.5.0//:seize", - ], -) 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 f2199e602c2b..f3a551c78f0c 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 @@ -99,99 +99,99 @@ rust_library( }), version = "0.9.11", deps = [ - "@vendor_ts__cfg-if-1.0.3//:cfg_if", + "@vendor_ts__cfg-if-1.0.4//: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.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//: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.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//: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.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//: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.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//: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 2b0175999d4a..6badf66e2aef 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 @@ -95,9 +95,9 @@ rust_proc_macro( }), version = "0.2.9", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", "@vendor_ts__proc-macro2-diagnostics-0.10.1//:proc_macro2_diagnostics", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", ], ) 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.8.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.8.bazel index 8ba85de58daa..21a10d903c5d 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.8.bazel @@ -34,6 +34,10 @@ rust_library( "WORKSPACE.bazel", ], ), + crate_features = [ + "default", + "hooks", + ], crate_root = "src/lib.rs", edition = "2018", rustc_env_files = [ @@ -93,9 +97,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.7", + version = "0.4.8", deps = [ - "@vendor_ts__libc-0.2.175//:libc", - "@vendor_ts__perf-event-open-sys-1.0.1//:perf_event_open_sys", + "@vendor_ts__libc-0.2.185//:libc", + "@vendor_ts__perf-event-open-sys-4.0.0//: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-4.0.0.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-4.0.0.bazel index 120842ef4fbb..016be83654e3 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-4.0.0.bazel @@ -93,8 +93,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.1", + version = "4.0.0", deps = [ - "@vendor_ts__libc-0.2.175//:libc", + "@vendor_ts__libc-0.2.185//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.8.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.8.3.bazel new file mode 100644 index 000000000000..054c06f6350a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.8.3.bazel @@ -0,0 +1,102 @@ +############################################################################### +# @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 = "petgraph", + 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=petgraph", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.8.3", + deps = [ + "@vendor_ts__fixedbitset-0.5.7//:fixedbitset", + "@vendor_ts__hashbrown-0.15.5//:hashbrown", + "@vendor_ts__indexmap-2.14.0//:indexmap", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.17.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.16.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.17.bazel index 9234efd2e0e2..c0fad00dd23e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.16.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.17.bazel @@ -93,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.16", + version = "0.2.17", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.erased-serde-0.4.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.postcard-1.1.3.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.erased-serde-0.4.6.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.postcard-1.1.3.bazel index 7c25af547746..8a9c9489923b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.erased-serde-0.4.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.postcard-1.1.3.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "erased_serde", + name = "postcard", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -36,6 +36,9 @@ rust_library( ), crate_features = [ "alloc", + "default", + "heapless", + "heapless-cas", ], crate_root = "src/lib.rs", edition = "2021", @@ -47,7 +50,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=erased-serde", + "crate-name=postcard", "manual", "noclippy", "norustfmt", @@ -96,9 +99,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.6", + version = "1.1.3", deps = [ + "@vendor_ts__cobs-0.3.0//:cobs", + "@vendor_ts__heapless-0.7.17//:heapless", "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__typeid-1.0.3//:typeid", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.bazel deleted file mode 100644 index 4a5d00884b13..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.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 = "potential_utf", - 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 = [ - "zerovec", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=potential_utf", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.3", - deps = [ - "@vendor_ts__zerovec-0.11.4//:zerovec", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer_data-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.prettyplease-0.2.37.bazel similarity index 93% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer_data-2.0.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.prettyplease-0.2.37.bazel index f5367ece66c1..ed6e293e5d6b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer_data-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.prettyplease-0.2.37.bazel @@ -21,7 +21,7 @@ cargo_toml_env_vars( ) rust_library( - name = "icu_normalizer_data", + name = "prettyplease", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -48,7 +48,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=icu_normalizer_data", + "crate-name=prettyplease", "manual", "noclippy", "norustfmt", @@ -97,9 +97,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.0", + version = "0.2.37", deps = [ - "@vendor_ts__icu_normalizer_data-2.0.0//:build_script_build", + "@vendor_ts__prettyplease-0.2.37//:build_script_build", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__syn-2.0.117//:syn", ], ) @@ -137,7 +139,8 @@ cargo_build_script( ], ), edition = "2021", - pkg_name = "icu_normalizer_data", + links = "prettyplease02", + pkg_name = "prettyplease", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -146,12 +149,12 @@ cargo_build_script( ], tags = [ "cargo-bazel", - "crate-name=icu_normalizer_data", + "crate-name=prettyplease", "manual", "noclippy", "norustfmt", ], - version = "2.0.0", + version = "0.2.37", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.106.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.101.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.106.bazel index bb23160f9b8f..dec96ff20b92 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.106.bazel @@ -101,10 +101,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.101", + version = "1.0.106", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:build_script_build", - "@vendor_ts__unicode-ident-1.0.19//:unicode_ident", + "@vendor_ts__proc-macro2-1.0.106//:build_script_build", + "@vendor_ts__unicode-ident-1.0.24//:unicode_ident", ], ) @@ -160,7 +160,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.101", + version = "1.0.106", 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 9a309e0d43a0..334933c92a6a 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 @@ -104,10 +104,10 @@ rust_library( }), version = "0.10.1", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", "@vendor_ts__proc-macro2-diagnostics-0.10.1//:build_script_build", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", "@vendor_ts__yansi-1.0.1//:yansi", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.41.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.45.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.41.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.45.bazel index 621cfb33ab4e..8ffcb2477317 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.41.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.45.bazel @@ -43,7 +43,7 @@ rust_library( "proc-macro", ], crate_root = "src/lib.rs", - edition = "2018", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -101,10 +101,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.41", + version = "1.0.45", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:build_script_build", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:build_script_build", ], ) @@ -145,7 +145,7 @@ cargo_build_script( "WORKSPACE.bazel", ], ), - edition = "2018", + edition = "2021", pkg_name = "quote", rustc_env_files = [ ":cargo_toml_env_vars", @@ -160,7 +160,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.41", + version = "1.0.45", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-6.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-6.0.0.bazel new file mode 100644 index 000000000000..5ee0d985fe56 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-6.0.0.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @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 = "r_efi", + 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=r-efi", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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 = "6.0.0", +) 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.143.0.bazel similarity index 91% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.123.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.143.0.bazel index 6222aecac162..c26dd82ee19d 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.143.0.bazel @@ -23,8 +23,8 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra-ap-rustc_hashes-0.123.0//:ra_ap_rustc_hashes": "rustc_hashes", - "@vendor_ts__ra-ap-rustc_index-0.123.0//:ra_ap_rustc_index": "rustc_index", + "@vendor_ts__ra-ap-rustc_hashes-0.143.0//:ra_ap_rustc_hashes": "rustc_hashes", + "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index": "rustc_index", }, compile_data = glob( include = ["**"], @@ -97,11 +97,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.123.0", + version = "0.143.0", deps = [ - "@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", + "@vendor_ts__bitflags-2.11.1//:bitflags", + "@vendor_ts__ra-ap-rustc_hashes-0.143.0//:ra_ap_rustc_hashes", + "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index", + "@vendor_ts__tracing-0.1.44//:tracing", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_ast_ir-0.143.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_ast_ir-0.143.0.bazel new file mode 100644 index 000000000000..3dfb4af1d544 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_ast_ir-0.143.0.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @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 = "ra_ap_rustc_ast_ir", + 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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra-ap-rustc_ast_ir", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.143.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.143.0.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.123.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.143.0.bazel index 6d510190f025..6b0e793e07f6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.143.0.bazel @@ -93,7 +93,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.123.0", + version = "0.143.0", deps = [ "@vendor_ts__rustc-stable-hash-0.1.2//:rustc_stable_hash", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.143.0.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.123.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.143.0.bazel index b8d5f8af922f..db5b0ccbd889 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.143.0.bazel @@ -23,7 +23,7 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra-ap-rustc_index_macros-0.123.0//:ra_ap_rustc_index_macros": "rustc_index_macros", + "@vendor_ts__ra-ap-rustc_index_macros-0.143.0//:ra_ap_rustc_index_macros": "rustc_index_macros", }, compile_data = glob( include = ["**"], @@ -40,7 +40,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ - "@vendor_ts__ra-ap-rustc_index_macros-0.123.0//:ra_ap_rustc_index_macros", + "@vendor_ts__ra-ap-rustc_index_macros-0.143.0//:ra_ap_rustc_index_macros", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -99,8 +99,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.123.0", - deps = [ - "@vendor_ts__smallvec-1.15.1//:smallvec", - ], + version = "0.143.0", ) 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.143.0.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.123.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.143.0.bazel index f25a9e197681..13c12f07ce27 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.143.0.bazel @@ -93,10 +93,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.123.0", + version = "0.143.0", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.123.0.bazel deleted file mode 100644 index 5ed4bd3f912f..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.123.0.bazel +++ /dev/null @@ -1,102 +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 = "ra_ap_rustc_lexer", - 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 = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra-ap-rustc_lexer", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.123.0", - deps = [ - "@vendor_ts__memchr-2.7.5//:memchr", - "@vendor_ts__unicode-properties-0.1.3//:unicode_properties", - "@vendor_ts__unicode-xid-0.2.6//:unicode_xid", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.121.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.143.0.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.121.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.143.0.bazel index 1ba187aeb8f2..e02e8e09065c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.121.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.143.0.bazel @@ -93,9 +93,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.121.0", + version = "0.143.0", deps = [ - "@vendor_ts__memchr-2.7.5//:memchr", + "@vendor_ts__memchr-2.8.0//:memchr", "@vendor_ts__unicode-properties-0.1.3//:unicode_properties", "@vendor_ts__unicode-xid-0.2.6//:unicode_xid", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_next_trait_solver-0.143.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_next_trait_solver-0.143.0.bazel new file mode 100644 index 000000000000..8d9cd2fa75a1 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_next_trait_solver-0.143.0.bazel @@ -0,0 +1,111 @@ +############################################################################### +# @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 = "ra_ap_rustc_next_trait_solver", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index": "rustc_index", + "@vendor_ts__ra-ap-rustc_type_ir-0.143.0//:ra_ap_rustc_type_ir": "rustc_type_ir", + "@vendor_ts__ra-ap-rustc_type_ir_macros-0.143.0//:ra_ap_rustc_type_ir_macros": "rustc_type_ir_macros", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__derive-where-1.6.1//:derive_where", + "@vendor_ts__ra-ap-rustc_type_ir_macros-0.143.0//:ra_ap_rustc_type_ir_macros", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra-ap-rustc_next_trait_solver", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.143.0", + deps = [ + "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index", + "@vendor_ts__ra-ap-rustc_type_ir-0.143.0//:ra_ap_rustc_type_ir", + "@vendor_ts__tracing-0.1.44//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.121.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.143.0.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.121.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.143.0.bazel index 987599aa9648..9b4e436a3cad 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.121.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.143.0.bazel @@ -23,7 +23,7 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra-ap-rustc_lexer-0.121.0//:ra_ap_rustc_lexer": "rustc_lexer", + "@vendor_ts__ra-ap-rustc_lexer-0.143.0//:ra_ap_rustc_lexer": "rustc_lexer", }, compile_data = glob( include = ["**"], @@ -96,9 +96,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.121.0", + version = "0.143.0", deps = [ - "@vendor_ts__ra-ap-rustc_lexer-0.121.0//:ra_ap_rustc_lexer", - "@vendor_ts__rustc-literal-escaper-0.0.4//:rustc_literal_escaper", + "@vendor_ts__ra-ap-rustc_lexer-0.143.0//:ra_ap_rustc_lexer", + "@vendor_ts__rustc-literal-escaper-0.0.5//:rustc_literal_escaper", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.143.0.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.123.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.143.0.bazel index e81038a00849..2f8087c18312 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.143.0.bazel @@ -23,7 +23,7 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra-ap-rustc_index-0.123.0//:ra_ap_rustc_index": "rustc_index", + "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index": "rustc_index", }, compile_data = glob( include = ["**"], @@ -96,12 +96,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.123.0", + version = "0.143.0", deps = [ - "@vendor_ts__ra-ap-rustc_index-0.123.0//:ra_ap_rustc_index", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:rustc_apfloat", "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__tracing-0.1.44//:tracing", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir-0.143.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir-0.143.0.bazel new file mode 100644 index 000000000000..a1f54dc10b6d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir-0.143.0.bazel @@ -0,0 +1,118 @@ +############################################################################### +# @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 = "ra_ap_rustc_type_ir", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra-ap-rustc_ast_ir-0.143.0//:ra_ap_rustc_ast_ir": "rustc_ast_ir", + "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index": "rustc_index", + "@vendor_ts__ra-ap-rustc_type_ir_macros-0.143.0//:ra_ap_rustc_type_ir_macros": "rustc_type_ir_macros", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__derive-where-1.6.1//:derive_where", + "@vendor_ts__ra-ap-rustc_type_ir_macros-0.143.0//:ra_ap_rustc_type_ir_macros", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra-ap-rustc_type_ir", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.143.0", + deps = [ + "@vendor_ts__arrayvec-0.7.6//:arrayvec", + "@vendor_ts__bitflags-2.11.1//:bitflags", + "@vendor_ts__ena-0.14.3//:ena", + "@vendor_ts__indexmap-2.14.0//:indexmap", + "@vendor_ts__ra-ap-rustc_ast_ir-0.143.0//:ra_ap_rustc_ast_ir", + "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__smallvec-1.15.1//:smallvec", + "@vendor_ts__thin-vec-0.2.14//:thin_vec", + "@vendor_ts__tracing-0.1.44//:tracing", + ], +) 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.ra-ap-rustc_type_ir_macros-0.143.0.bazel similarity index 93% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir_macros-0.143.0.bazel index 1529534e17b2..899303af5f3f 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.ra-ap-rustc_type_ir_macros-0.143.0.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_proc_macro( - name = "yoke_derive", + name = "ra_ap_rustc_type_ir_macros", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -35,7 +35,7 @@ rust_proc_macro( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -44,7 +44,7 @@ rust_proc_macro( ], tags = [ "cargo-bazel", - "crate-name=yoke-derive", + "crate-name=ra-ap-rustc_type_ir_macros", "manual", "noclippy", "norustfmt", @@ -93,11 +93,11 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.8.0", + version = "0.143.0", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", "@vendor_ts__synstructure-0.13.2//:synstructure", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.328.bazel similarity index 79% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.328.bazel index 60cece39191b..42da0d0298c4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.328.bazel @@ -23,12 +23,12 @@ rust_library( allow_empty = True, ), aliases = { - "@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", + "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -42,11 +42,14 @@ rust_library( "WORKSPACE.bazel", ], ), + crate_features = [ + "default", + ], crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ - "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro", - "@vendor_ts__salsa-macros-0.23.0//:salsa_macros", + "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro", + "@vendor_ts__salsa-macros-0.25.2//:salsa_macros", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -105,20 +108,20 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ "@vendor_ts__dashmap-6.1.0//:dashmap", - "@vendor_ts__indexmap-2.11.4//:indexmap", + "@vendor_ts__indexmap-2.14.0//:indexmap", "@vendor_ts__la-arena-0.3.1//:la_arena", - "@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", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", + "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__salsa-0.25.2//:salsa", + "@vendor_ts__semver-1.0.28//:semver", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.15//:triomphe", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.328.bazel similarity index 88% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.328.bazel index 35af421f0231..e02c90697076 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.328.bazel @@ -23,8 +23,9 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_tt-0.0.301//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -39,6 +40,8 @@ rust_library( ], ), crate_features = [ + "default", + "syntax", "tt", ], crate_root = "src/lib.rs", @@ -100,11 +103,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ - "@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", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__tracing-0.1.44//:tracing", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.328.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.328.bazel index 50b4f2e87d15..1fa96a118d49 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.328.bazel @@ -93,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.328.bazel similarity index 74% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.328.bazel index c1272206d934..ff003137b5de 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.328.bazel @@ -23,16 +23,16 @@ rust_library( allow_empty = True, ), aliases = { - "@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", + "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_def-0.0.328//:ra_ap_hir_def": "hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_hir_ty-0.0.328//:ra_ap_hir_ty": "hir_ty", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -105,25 +105,26 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", "@vendor_ts__either-1.15.0//:either", - "@vendor_ts__indexmap-2.11.4//:indexmap", "@vendor_ts__itertools-0.14.0//:itertools", - "@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__ra-ap-rustc_type_ir-0.143.0//:ra_ap_rustc_type_ir", + "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_def-0.0.328//:ra_ap_hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_hir_ty-0.0.328//:ra_ap_hir_ty", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__serde_json-1.0.149//:serde_json", "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.15//:triomphe", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.328.bazel similarity index 73% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.328.bazel index bd85f440ba5d..ba19f647b52a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.328.bazel @@ -23,16 +23,16 @@ rust_library( allow_empty = True, ), aliases = { - "@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", + "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -49,8 +49,8 @@ rust_library( crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ - "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro", - "@vendor_ts__salsa-macros-0.23.0//:salsa_macros", + "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro", + "@vendor_ts__salsa-macros-0.25.2//:salsa_macros", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -109,35 +109,34 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.9.4//:bitflags", + "@vendor_ts__bitflags-2.11.1//: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.11.4//:indexmap", + "@vendor_ts__indexmap-2.14.0//: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.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__ra-ap-rustc_abi-0.143.0//:ra_ap_rustc_abi", + "@vendor_ts__ra-ap-rustc_parse_format-0.143.0//:ra_ap_rustc_parse_format", + "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:rustc_apfloat", - "@vendor_ts__salsa-0.23.0//:salsa", + "@vendor_ts__salsa-0.25.2//:salsa", "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__text-size-1.1.1//:text_size", "@vendor_ts__thin-vec-0.2.14//:thin_vec", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.15//:triomphe", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.328.bazel similarity index 73% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.328.bazel index 1593a5a8db93..82ed45d9b5ca 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.328.bazel @@ -23,17 +23,17 @@ rust_library( allow_empty = True, ), aliases = { - "@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", + "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_mbe-0.0.328//:ra_ap_mbe": "mbe", + "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -50,8 +50,8 @@ rust_library( crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ - "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro", - "@vendor_ts__salsa-macros-0.23.0//:salsa_macros", + "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro", + "@vendor_ts__salsa-macros-0.25.2//:salsa_macros", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -110,25 +110,26 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ "@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.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__ra_ap_base_db-0.0.328//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + "@vendor_ts__ra_ap_mbe-0.0.328//:ra_ap_mbe", + "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__salsa-0.25.2//:salsa", "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", + "@vendor_ts__thin-vec-0.2.14//:thin_vec", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.15//:triomphe", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.328.bazel similarity index 68% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.328.bazel index 2dbbe4f77179..655284645523 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.328.bazel @@ -23,14 +23,15 @@ rust_library( allow_empty = True, ), aliases = { - "@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", + "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_hir_def-0.0.328//:ra_ap_hir_def": "hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_macros-0.0.328//:ra_ap_macros": "macros", + "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", }, compile_data = glob( include = ["**"], @@ -47,9 +48,10 @@ rust_library( crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ - "@vendor_ts__chalk-derive-0.103.0//:chalk_derive", - "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro", - "@vendor_ts__salsa-macros-0.23.0//:salsa_macros", + "@vendor_ts__ra_ap_macros-0.0.328//:ra_ap_macros", + "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro", + "@vendor_ts__salsa-macros-0.25.2//:salsa_macros", + "@vendor_ts__serde_derive-1.0.228//:serde_derive", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -108,37 +110,40 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@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.1.0//:cov_mark", "@vendor_ts__either-1.15.0//:either", "@vendor_ts__ena-0.14.3//:ena", - "@vendor_ts__indexmap-2.11.4//:indexmap", + "@vendor_ts__indexmap-2.14.0//: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.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__petgraph-0.8.3//:petgraph", + "@vendor_ts__ra-ap-rustc_abi-0.143.0//:ra_ap_rustc_abi", + "@vendor_ts__ra-ap-rustc_ast_ir-0.143.0//:ra_ap_rustc_ast_ir", + "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index", + "@vendor_ts__ra-ap-rustc_next_trait_solver-0.143.0//:ra_ap_rustc_next_trait_solver", + "@vendor_ts__ra-ap-rustc_pattern_analysis-0.143.0//:ra_ap_rustc_pattern_analysis", + "@vendor_ts__ra-ap-rustc_type_ir-0.143.0//:ra_ap_rustc_type_ir", + "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", + "@vendor_ts__ra_ap_hir_def-0.0.328//:ra_ap_hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:rustc_apfloat", - "@vendor_ts__salsa-0.23.0//:salsa", - "@vendor_ts__scoped-tls-1.0.1//:scoped_tls", + "@vendor_ts__salsa-0.25.2//:salsa", + "@vendor_ts__serde-1.0.228//:serde", "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", + "@vendor_ts__thin-vec-0.2.14//:thin_vec", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__tracing-subscriber-0.3.23//:tracing_subscriber", + "@vendor_ts__tracing-tree-0.4.1//:tracing_tree", + "@vendor_ts__triomphe-0.1.15//:triomphe", "@vendor_ts__typed-arena-2.0.2//:typed_arena", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.328.bazel similarity index 69% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.328.bazel index 66d015a2efbf..c9160ac9b0f8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.328.bazel @@ -23,15 +23,18 @@ rust_library( allow_empty = True, ), aliases = { - "@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", + "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_hir-0.0.328//:ra_ap_hir": "hir", + "@vendor_ts__ra_ap_macros-0.0.328//:ra_ap_macros": "macros", + "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_profile-0.0.328//:ra_ap_profile": "profile", + "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_test_fixture-0.0.328//:ra_ap_test_fixture": "test_fixture", + "@vendor_ts__ra_ap_test_utils-0.0.328//:ra_ap_test_utils": "test_utils", + "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -45,11 +48,15 @@ rust_library( "WORKSPACE.bazel", ], ), + crate_features = [ + "default", + ], crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ - "@vendor_ts__ra_ap_query-group-macro-0.0.301//:ra_ap_query_group_macro", - "@vendor_ts__salsa-macros-0.23.0//:salsa_macros", + "@vendor_ts__ra_ap_macros-0.0.328//:ra_ap_macros", + "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro", + "@vendor_ts__salsa-macros-0.25.2//:salsa_macros", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -108,31 +115,33 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.9.4//:bitflags", + "@vendor_ts__bitflags-2.11.1//: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.11.4//: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__memchr-2.8.0//:memchr", "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", - "@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", - "@vendor_ts__triomphe-0.1.14//:triomphe", + "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", + "@vendor_ts__ra_ap_hir-0.0.328//:ra_ap_hir", + "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser", + "@vendor_ts__ra_ap_profile-0.0.328//:ra_ap_profile", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", + "@vendor_ts__ra_ap_test_fixture-0.0.328//:ra_ap_test_fixture", + "@vendor_ts__ra_ap_test_utils-0.0.328//:ra_ap_test_utils", + "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", + "@vendor_ts__rayon-1.12.0//:rayon", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__salsa-0.25.2//:salsa", + "@vendor_ts__smallvec-1.15.1//:smallvec", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.15//:triomphe", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.328.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.328.bazel index 9216daa25b57..e2b1c874bcbc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.328.bazel @@ -93,11 +93,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ "@vendor_ts__dashmap-6.1.0//:dashmap", "@vendor_ts__hashbrown-0.14.5//:hashbrown", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__triomphe-0.1.14//:triomphe", + "@vendor_ts__rayon-1.12.0//:rayon", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__triomphe-0.1.15//:triomphe", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.328.bazel similarity index 78% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.328.bazel index cc43b8dd6306..28c08916e4ef 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.328.bazel @@ -23,15 +23,15 @@ rust_library( allow_empty = True, ), aliases = { - "@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", + "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_ide_db-0.0.328//:ra_ap_ide_db": "ide_db", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_proc_macro_api-0.0.328//:ra_ap_proc_macro_api": "proc_macro_api", + "@vendor_ts__ra_ap_project_model-0.0.328//:ra_ap_project_model": "project_model", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs": "vfs", + "@vendor_ts__ra_ap_vfs-notify-0.0.328//:ra_ap_vfs_notify": "vfs_notify", }, compile_data = glob( include = ["**"], @@ -104,20 +104,20 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ - "@vendor_ts__anyhow-1.0.100//:anyhow", + "@vendor_ts__anyhow-1.0.102//: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.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", + "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_ide_db-0.0.328//:ra_ap_ide_db", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + "@vendor_ts__ra_ap_proc_macro_api-0.0.328//:ra_ap_proc_macro_api", + "@vendor_ts__ra_ap_project_model-0.0.328//:ra_ap_project_model", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", + "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", + "@vendor_ts__ra_ap_vfs-notify-0.0.328//:ra_ap_vfs_notify", + "@vendor_ts__tracing-0.1.44//:tracing", ], ) 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.ra_ap_macros-0.0.328.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_macros-0.0.328.bazel index d43c7b6b893d..6411cde26a3b 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.ra_ap_macros-0.0.328.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_proc_macro( - name = "chalk_derive", + name = "ra_ap_macros", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -35,7 +35,7 @@ rust_proc_macro( ], ), crate_root = "src/lib.rs", - edition = "2018", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -44,7 +44,7 @@ rust_proc_macro( ], tags = [ "cargo-bazel", - "crate-name=chalk-derive", + "crate-name=ra_ap_macros", "manual", "noclippy", "norustfmt", @@ -93,11 +93,11 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.103.0", + version = "0.0.328", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", "@vendor_ts__synstructure-0.13.2//:synstructure", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.328.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.328.bazel index bdf4d2970741..9d7a08379d64 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.328.bazel @@ -23,12 +23,12 @@ rust_library( allow_empty = True, ), aliases = { - "@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", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -101,18 +101,20 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", + "@vendor_ts__bitflags-2.11.1//:bitflags", "@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.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__ra-ap-rustc_lexer-0.143.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__salsa-0.25.2//:salsa", "@vendor_ts__smallvec-1.15.1//:smallvec", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.328.bazel similarity index 93% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.328.bazel index 2134a4d9cbc2..5e1577c1785a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.328.bazel @@ -23,7 +23,7 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_edition-0.0.301//:ra_ap_edition": "edition", + "@vendor_ts__ra_ap_edition-0.0.328//:ra_ap_edition": "edition", }, compile_data = glob( include = ["**"], @@ -39,7 +39,6 @@ rust_library( ), crate_features = [ "default", - "tracing", ], crate_root = "src/lib.rs", edition = "2024", @@ -100,12 +99,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", 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.301//:ra_ap_edition", + "@vendor_ts__ra-ap-rustc_lexer-0.143.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_edition-0.0.328//:ra_ap_edition", "@vendor_ts__rustc-literal-escaper-0.0.4//:rustc_literal_escaper", - "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__winnow-0.7.15//:winnow", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.328.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.328.bazel index 5210ea74ec8e..6d809a8ca8ab 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.328.bazel @@ -96,8 +96,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ - "@vendor_ts__camino-1.1.12//:camino", + "@vendor_ts__camino-1.2.2//:camino", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.328.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.328.bazel index 12961c51aec0..bac8656c7c4d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.328.bazel @@ -23,11 +23,11 @@ rust_library( allow_empty = True, ), aliases = { - "@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", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -41,6 +41,9 @@ rust_library( "WORKSPACE.bazel", ], ), + crate_features = [ + "default", + ], crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ @@ -103,17 +106,20 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ - "@vendor_ts__indexmap-2.11.4//: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__indexmap-2.14.0//:indexmap", + "@vendor_ts__postcard-1.1.3//:postcard", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", + "@vendor_ts__rayon-1.12.0//:rayon", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__semver-1.0.28//:semver", "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__serde_json-1.0.145//:serde_json", - "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__serde_json-1.0.149//:serde_json", + "@vendor_ts__tracing-0.1.44//:tracing", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.328.bazel similarity index 73% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.328.bazel index cb28397b3ab3..bc45d3548e53 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.328.bazel @@ -93,61 +93,53 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ - "@vendor_ts__cfg-if-1.0.3//:cfg_if", + "@vendor_ts__cfg-if-1.0.4//: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.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"))) + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-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"))) + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@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-musleabi": [ - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@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"))) + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) ], "@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.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"))) + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) ], "@rules_rust//rust/platform:powerpc-unknown-linux-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"))) + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) ], "@rules_rust//rust/platform:riscv64gc-unknown-linux-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"))) + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) ], "@rules_rust//rust/platform:s390x-unknown-linux-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"))) + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) ], "@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.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"))) + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-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"))) + "@vendor_ts__libc-0.2.185//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.328.bazel similarity index 76% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.328.bazel index 8f551d7bd0b8..a5f7fdd974db 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.328.bazel @@ -23,13 +23,13 @@ rust_library( allow_empty = True, ), aliases = { - "@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", + "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_toolchain-0.0.328//:ra_ap_toolchain": "toolchain", }, compile_data = glob( include = ["**"], @@ -43,6 +43,9 @@ rust_library( "WORKSPACE.bazel", ], ), + crate_features = [ + "default", + ], crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ @@ -105,25 +108,26 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ - "@vendor_ts__anyhow-1.0.100//:anyhow", - "@vendor_ts__cargo_metadata-0.21.0//:cargo_metadata", + "@vendor_ts__anyhow-1.0.102//:anyhow", + "@vendor_ts__cargo_metadata-0.23.1//: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.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__ra_ap_base_db-0.0.328//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__ra_ap_toolchain-0.0.328//:ra_ap_toolchain", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__semver-1.0.28//:semver", "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__serde_json-1.0.145//:serde_json", + "@vendor_ts__serde_json-1.0.149//: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", + "@vendor_ts__toml-0.9.12-spec-1.1.0//:toml", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.15//:triomphe", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.328.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.328.bazel index ccd6eb8aefa3..0934ecd44f2e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.328.bazel @@ -93,10 +93,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.328.bazel similarity index 90% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.328.bazel index 0b47ce033472..6c6249a49ab9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.328.bazel @@ -23,9 +23,9 @@ rust_library( allow_empty = True, ), aliases = { - "@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", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -102,15 +102,15 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ "@vendor_ts__hashbrown-0.14.5//:hashbrown", "@vendor_ts__la-arena-0.3.1//:la_arena", - "@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__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__salsa-0.25.2//: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.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.328.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.328.bazel index 41c6f4f8cc72..9d4b68cb0e51 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.328.bazel @@ -93,106 +93,106 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", "@vendor_ts__itertools-0.14.0//:itertools", "@vendor_ts__jod-thread-1.0.0//:jod_thread", - "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__tracing-0.1.44//:tracing", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ "@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.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ "@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.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ "@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.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.185//:libc", # cfg(unix) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.328.bazel similarity index 87% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.328.bazel index e5548afe6ab0..d4204f3eadbc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.328.bazel @@ -23,8 +23,8 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_parser-0.0.301//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", }, compile_data = glob( include = ["**"], @@ -38,6 +38,9 @@ rust_library( "WORKSPACE.bazel", ], ), + crate_features = [ + "default", + ], crate_root = "src/lib.rs", edition = "2024", rustc_env_files = [ @@ -97,18 +100,19 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ "@vendor_ts__either-1.15.0//:either", "@vendor_ts__itertools-0.14.0//:itertools", - "@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__ra_ap_parser-0.0.328//:ra_ap_parser", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__rowan-0.15.18//:rowan", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", "@vendor_ts__rustc-literal-escaper-0.0.4//:rustc_literal_escaper", - "@vendor_ts__smol_str-0.3.2//:smol_str", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", + "@vendor_ts__smallvec-1.15.1//:smallvec", + "@vendor_ts__smol_str-0.3.6//:smol_str", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.15//:triomphe", ], ) exports_files(["rust.ungram"]) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.328.bazel similarity index 84% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.328.bazel index 646c0f8c2f45..4ce70110ed1a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.328.bazel @@ -23,12 +23,12 @@ rust_library( allow_empty = True, ), aliases = { - "@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", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -101,14 +101,14 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ - "@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", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_fixture-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_fixture-0.0.328.bazel new file mode 100644 index 000000000000..40941eb64afe --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_fixture-0.0.328.bazel @@ -0,0 +1,123 @@ +############################################################################### +# @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 = "ra_ap_test_fixture", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_test_utils-0.0.328//:ra_ap_test_utils": "test_utils", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt": "tt", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_test_fixture", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.0.328", + deps = [ + "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__ra_ap_test_utils-0.0.328//:ra_ap_test_utils", + "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", + "@vendor_ts__triomphe-0.1.15//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_utils-0.0.328.bazel similarity index 87% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_utils-0.0.328.bazel index e5b2117f769c..276ab3e576d8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_utils-0.0.328.bazel @@ -17,14 +17,15 @@ cargo_toml_env_vars( ) rust_library( - name = "ra_ap_tt", + name = "ra_ap_test_utils", srcs = glob( include = ["**/*.rs"], allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_intern-0.0.301//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_profile-0.0.328//:ra_ap_profile": "profile", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", }, compile_data = glob( include = ["**"], @@ -48,7 +49,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=ra_ap_tt", + "crate-name=ra_ap_test_utils", "manual", "noclippy", "norustfmt", @@ -97,12 +98,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", 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.301//:ra_ap_intern", - "@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx", + "@vendor_ts__dissimilar-1.0.11//:dissimilar", + "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", + "@vendor_ts__ra_ap_profile-0.0.328//:ra_ap_profile", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", "@vendor_ts__text-size-1.1.1//:text_size", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.328.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.328.bazel index 2956a594ec11..9d73283c8059 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.328.bazel @@ -93,9 +93,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ - "@vendor_ts__camino-1.1.12//:camino", - "@vendor_ts__home-0.5.11//:home", + "@vendor_ts__camino-1.2.2//:camino", + "@vendor_ts__home-0.5.12//:home", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.328.bazel new file mode 100644 index 000000000000..b40b0afeeff4 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.328.bazel @@ -0,0 +1,115 @@ +############################################################################### +# @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 = "ra_ap_tt", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_tt", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.0.328", + deps = [ + "@vendor_ts__arrayvec-0.7.6//:arrayvec", + "@vendor_ts__indexmap-2.14.0//:indexmap", + "@vendor_ts__ra-ap-rustc_lexer-0.143.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@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.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.328.bazel similarity index 91% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.328.bazel index 67dd8bdd6104..77cf3adfd1c5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.328.bazel @@ -23,8 +23,8 @@ rust_library( allow_empty = True, ), aliases = { - "@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_paths-0.0.328//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", }, compile_data = glob( include = ["**"], @@ -97,15 +97,15 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", "@vendor_ts__fst-0.4.7//:fst", - "@vendor_ts__indexmap-2.11.4//:indexmap", + "@vendor_ts__indexmap-2.14.0//:indexmap", "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", - "@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", + "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__tracing-0.1.44//:tracing", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.328.bazel similarity index 89% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.301.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.328.bazel index e0c3859bfa37..5ad594ec7e7e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.328.bazel @@ -23,9 +23,9 @@ rust_library( allow_empty = True, ), aliases = { - "@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", + "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -98,16 +98,16 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.301", + version = "0.0.328", deps = [ "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", "@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__ra_ap_paths-0.0.328//:ra_ap_paths", + "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", + "@vendor_ts__rayon-1.12.0//:rayon", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__tracing-0.1.44//:tracing", "@vendor_ts__walkdir-2.5.0//:walkdir", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.10.1.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.10.1.bazel index adf2414f3af0..58e4ecd87bd3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.10.1.bazel @@ -37,14 +37,13 @@ rust_library( crate_features = [ "alloc", "default", - "os_rng", - "small_rng", "std", "std_rng", + "sys_rng", "thread_rng", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -102,9 +101,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.9.2", + version = "0.10.1", deps = [ - "@vendor_ts__rand_chacha-0.9.0//:rand_chacha", - "@vendor_ts__rand_core-0.9.3//:rand_core", + "@vendor_ts__chacha20-0.10.0//:chacha20", + "@vendor_ts__getrandom-0.4.2//:getrandom", + "@vendor_ts__rand_core-0.10.1//:rand_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_chacha-0.9.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_chacha-0.9.0.bazel deleted file mode 100644 index 63fd0014d763..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_chacha-0.9.0.bazel +++ /dev/null @@ -1,104 +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 = "rand_chacha", - 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 = [ - "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=rand_chacha", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.0", - deps = [ - "@vendor_ts__ppv-lite86-0.2.21//:ppv_lite86", - "@vendor_ts__rand_core-0.9.3//:rand_core", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.10.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.10.1.bazel new file mode 100644 index 000000000000..9522ee36ed3e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.10.1.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @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 = "rand_core", + 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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=rand_core", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.10.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.9.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.9.3.bazel deleted file mode 100644 index 0ae8f72c2617..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.9.3.bazel +++ /dev/null @@ -1,104 +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 = "rand_core", - 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 = [ - "os_rng", - "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=rand_core", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.3", - deps = [ - "@vendor_ts__getrandom-0.3.3//:getrandom", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.11.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.12.0.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.11.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.12.0.bazel index c867d354a77c..c51b34ee3989 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.11.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.12.0.bazel @@ -93,7 +93,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.11.0", + version = "1.12.0", deps = [ "@vendor_ts__either-1.15.0//:either", "@vendor_ts__rayon-core-1.13.0//:rayon_core", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel index ec928fcac82c..51d28b0a867c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel @@ -95,6 +95,6 @@ rust_library( }), version = "0.5.17", deps = [ - "@vendor_ts__bitflags-2.9.4//:bitflags", + "@vendor_ts__bitflags-2.11.1//: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 56045a5d8dde..e94704b8c42b 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 @@ -95,8 +95,8 @@ rust_proc_macro( }), version = "1.0.24", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.12.3.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.12.3.bazel index 2dff7cf54448..825fabb29b18 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.12.3.bazel @@ -112,11 +112,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.11.3", + version = "1.12.3", deps = [ - "@vendor_ts__aho-corasick-1.1.3//:aho_corasick", - "@vendor_ts__memchr-2.7.5//:memchr", - "@vendor_ts__regex-automata-0.4.11//:regex_automata", - "@vendor_ts__regex-syntax-0.8.6//:regex_syntax", + "@vendor_ts__aho-corasick-1.1.4//:aho_corasick", + "@vendor_ts__memchr-2.8.0//:memchr", + "@vendor_ts__regex-automata-0.4.14//:regex_automata", + "@vendor_ts__regex-syntax-0.8.10//:regex_syntax", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.14.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.11.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.14.bazel index 77270d5287f7..7d8af771594a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.14.bazel @@ -121,10 +121,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.11", + version = "0.4.14", deps = [ - "@vendor_ts__aho-corasick-1.1.3//:aho_corasick", - "@vendor_ts__memchr-2.7.5//:memchr", - "@vendor_ts__regex-syntax-0.8.6//:regex_syntax", + "@vendor_ts__aho-corasick-1.1.4//:aho_corasick", + "@vendor_ts__memchr-2.8.0//:memchr", + "@vendor_ts__regex-syntax-0.8.10//:regex_syntax", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.10.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.6.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.10.bazel index 20579d899f00..5f3ae8f1cce0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.10.bazel @@ -105,5 +105,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.8.6", + version = "0.8.10", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.18.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.15.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.18.bazel index 45eaa325827e..e9841cd61c3a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.15.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.18.bazel @@ -93,7 +93,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.15.15", + version = "0.15.18", deps = [ "@vendor_ts__countme-3.0.1//:countme", "@vendor_ts__hashbrown-0.14.5//:hashbrown", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.2.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.2.bazel index 233e17d90857..a18bdfd0e16b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.2.bazel @@ -97,5 +97,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.1.1", + version = "2.1.2", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.5.bazel new file mode 100644 index 000000000000..883772a6b126 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.5.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @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 = "rustc_literal_escaper", + 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=rustc-literal-escaper", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.0.5", +) 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 0bf752345746..2e81799fba5e 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 @@ -99,7 +99,7 @@ rust_library( }), version = "0.2.3+llvm-462a31f5a5ab", deps = [ - "@vendor_ts__bitflags-2.9.4//:bitflags", + "@vendor_ts__bitflags-2.11.1//: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.percent-encoding-2.3.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_version-0.4.1.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_version-0.4.1.bazel index 8a8d1e9e3c97..c93a62d6c6a7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_version-0.4.1.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "percent_encoding", + name = "rustc_version", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -34,10 +34,6 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_features = [ - "alloc", - "std", - ], crate_root = "src/lib.rs", edition = "2018", rustc_env_files = [ @@ -48,7 +44,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=percent-encoding", + "crate-name=rustc_version", "manual", "noclippy", "norustfmt", @@ -97,5 +93,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.3.2", + version = "0.4.1", + deps = [ + "@vendor_ts__semver-1.0.28//:semver", + ], ) 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.25.2.bazel similarity index 92% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.25.2.bazel index 25fcd798c654..8514870f47c5 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.25.2.bazel @@ -35,7 +35,7 @@ rust_library( ], ), crate_features = [ - "default", + "inventory", "macros", "rayon", "salsa_unstable", @@ -43,7 +43,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__salsa-macros-0.23.0//:salsa_macros", + "@vendor_ts__salsa-macros-0.25.2//:salsa_macros", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -102,23 +102,23 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.23.0", + version = "0.25.2", deps = [ "@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.5//:hashbrown", "@vendor_ts__hashlink-0.10.0//:hashlink", - "@vendor_ts__indexmap-2.11.4//:indexmap", + "@vendor_ts__indexmap-2.14.0//:indexmap", "@vendor_ts__intrusive-collections-0.9.7//:intrusive_collections", - "@vendor_ts__papaya-0.2.3//:papaya", + "@vendor_ts__inventory-0.3.24//:inventory", "@vendor_ts__parking_lot-0.12.4//:parking_lot", "@vendor_ts__portable-atomic-1.11.1//:portable_atomic", - "@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__rayon-1.12.0//:rayon", + "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__salsa-macro-rules-0.25.2//:salsa_macro_rules", "@vendor_ts__smallvec-1.15.1//:smallvec", "@vendor_ts__thin-vec-0.2.14//:thin_vec", - "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__tracing-0.1.44//:tracing", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.23.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.25.2.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.23.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.25.2.bazel index a3cc0e24a369..01b605f0ed6d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.23.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.25.2.bazel @@ -93,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.23.0", + version = "0.25.2", ) 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.25.2.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.23.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.25.2.bazel index 5d9bd4b09356..8905ee5100ba 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.25.2.bazel @@ -34,6 +34,9 @@ rust_proc_macro( "WORKSPACE.bazel", ], ), + crate_features = [ + "default", + ], crate_root = "src/lib.rs", edition = "2021", rustc_env_files = [ @@ -93,11 +96,11 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.23.0", + version = "0.25.2", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", "@vendor_ts__synstructure-0.13.2//:synstructure", ], ) 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 69546680a9fb..1e08b806651d 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 @@ -98,6 +98,6 @@ rust_library( "@vendor_ts__dyn-clone-1.0.20//:dyn_clone", "@vendor_ts__ref-cast-1.0.24//:ref_cast", "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__serde_json-1.0.145//:serde_json", + "@vendor_ts__serde_json-1.0.149//: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 1fe84d175b39..2d6ccd8f2a05 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 @@ -98,6 +98,6 @@ rust_library( "@vendor_ts__dyn-clone-1.0.20//:dyn_clone", "@vendor_ts__ref-cast-1.0.24//:ref_cast", "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__serde_json-1.0.145//:serde_json", + "@vendor_ts__serde_json-1.0.149//:serde_json", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.28.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.28.bazel new file mode 100644 index 000000000000..5c659d959e2c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.28.bazel @@ -0,0 +1,108 @@ +############################################################################### +# @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 = "semver", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__serde_core-1.0.228//:serde_core": "serde", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "serde", + "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=semver", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.28", + deps = [ + "@vendor_ts__serde_core-1.0.228//:serde_core", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel deleted file mode 100644 index 099925888d56..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel +++ /dev/null @@ -1,102 +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 = "serde_untagged", - 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=serde-untagged", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.8", - deps = [ - "@vendor_ts__erased-serde-0.4.6//:erased_serde", - "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__typeid-1.0.3//:typeid", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.bazel deleted file mode 100644 index 5ccd9ac3b516..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.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_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 = "serde_value", - 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=serde-value", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.7.0", - deps = [ - "@vendor_ts__ordered-float-2.10.1//:ordered_float", - "@vendor_ts__serde-1.0.228//:serde", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.228.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.228.bazel index 4f597ff13aca..c2eff6baca9e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.228.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.228.bazel @@ -40,6 +40,7 @@ rust_library( ), crate_features = [ "alloc", + "default", "result", "std", ], @@ -129,6 +130,7 @@ cargo_build_script( ), crate_features = [ "alloc", + "default", "result", "std", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.228.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.228.bazel index f6d5b8be14a9..1d49666df317 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.228.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.228.bazel @@ -98,8 +98,8 @@ rust_proc_macro( }), version = "1.0.228", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.145.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.149.bazel similarity index 91% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.145.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.149.bazel index eaee1ee4b284..0d8779c67bb8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.145.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.149.bazel @@ -164,58 +164,58 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.145", + version = "1.0.149", deps = [ - "@vendor_ts__itoa-1.0.15//:itoa", - "@vendor_ts__memchr-2.7.5//:memchr", - "@vendor_ts__ryu-1.0.20//:ryu", + "@vendor_ts__itoa-1.0.18//:itoa", + "@vendor_ts__memchr-2.8.0//:memchr", "@vendor_ts__serde_core-1.0.228//:serde_core", - "@vendor_ts__serde_json-1.0.145//:build_script_build", + "@vendor_ts__serde_json-1.0.149//:build_script_build", + "@vendor_ts__zmij-1.0.21//:zmij", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # aarch64-apple-darwin + "@vendor_ts__indexmap-2.14.0//:indexmap", # aarch64-apple-darwin ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # aarch64-pc-windows-msvc + "@vendor_ts__indexmap-2.14.0//:indexmap", # aarch64-pc-windows-msvc ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # aarch64-unknown-linux-gnu + "@vendor_ts__indexmap-2.14.0//:indexmap", # aarch64-unknown-linux-gnu ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "@vendor_ts__indexmap-2.14.0//:indexmap", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # arm-unknown-linux-gnueabi + "@vendor_ts__indexmap-2.14.0//:indexmap", # arm-unknown-linux-gnueabi ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # i686-pc-windows-msvc + "@vendor_ts__indexmap-2.14.0//:indexmap", # i686-pc-windows-msvc ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # i686-unknown-linux-gnu + "@vendor_ts__indexmap-2.14.0//:indexmap", # i686-unknown-linux-gnu ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # powerpc-unknown-linux-gnu + "@vendor_ts__indexmap-2.14.0//:indexmap", # powerpc-unknown-linux-gnu ], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # riscv64gc-unknown-linux-gnu + "@vendor_ts__indexmap-2.14.0//:indexmap", # riscv64gc-unknown-linux-gnu ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # s390x-unknown-linux-gnu + "@vendor_ts__indexmap-2.14.0//:indexmap", # s390x-unknown-linux-gnu ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # x86_64-apple-darwin + "@vendor_ts__indexmap-2.14.0//:indexmap", # x86_64-apple-darwin ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # x86_64-pc-windows-msvc + "@vendor_ts__indexmap-2.14.0//:indexmap", # x86_64-pc-windows-msvc ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # x86_64-unknown-freebsd + "@vendor_ts__indexmap-2.14.0//:indexmap", # x86_64-unknown-freebsd ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # x86_64-unknown-linux-gnu + "@vendor_ts__indexmap-2.14.0//:indexmap", # x86_64-unknown-linux-gnu ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__indexmap-2.11.4//:indexmap", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "@vendor_ts__indexmap-2.14.0//:indexmap", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu ], "//conditions:default": [], }), @@ -336,7 +336,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.145", + version = "1.0.149", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.0.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.1.1.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.0.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.1.1.bazel index ac82ae1e149a..67558f9a3a19 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.0.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.1.1.bazel @@ -40,7 +40,7 @@ rust_library( "std", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -98,7 +98,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.2", + version = "1.1.1", deps = [ "@vendor_ts__serde_core-1.0.228//:serde_core", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.14.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.18.0.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.14.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.18.0.bazel index 2500ec6a49ba..5a97a0e42db7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.14.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.18.0.bazel @@ -43,8 +43,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.228//:serde_derive", - "@vendor_ts__serde_with_macros-3.14.1//:serde_with_macros", + "@vendor_ts__serde_with_macros-3.18.0//:serde_with_macros", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -103,8 +102,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "3.14.1", + version = "3.18.0", deps = [ - "@vendor_ts__serde-1.0.228//:serde", + "@vendor_ts__serde_core-1.0.228//:serde_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.18.0.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.18.0.bazel index fe552ca2a284..8ee42fdf0b04 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.18.0.bazel @@ -93,11 +93,11 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "3.14.1", + version = "3.18.0", deps = [ - "@vendor_ts__darling-0.21.3//:darling", - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__darling-0.23.0//:darling", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//: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 42f05a8553a0..0a445c6ff9a9 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 @@ -95,8 +95,8 @@ rust_library( }), version = "0.9.34+deprecated", deps = [ - "@vendor_ts__indexmap-2.11.4//:indexmap", - "@vendor_ts__itoa-1.0.15//:itoa", + "@vendor_ts__indexmap-2.14.0//:indexmap", + "@vendor_ts__itoa-1.0.18//:itoa", "@vendor_ts__ryu-1.0.20//:ryu", "@vendor_ts__serde-1.0.228//:serde", "@vendor_ts__unsafe-libyaml-0.2.11//:unsafe_libyaml", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.6.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.6.bazel index 954df9a6361e..020a7b78d55b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.6.bazel @@ -39,7 +39,7 @@ rust_library( "std", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -97,5 +97,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.3.2", + version = "0.3.6", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.spin-0.9.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.spin-0.9.8.bazel new file mode 100644 index 000000000000..c200d2c36f80 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.spin-0.9.8.bazel @@ -0,0 +1,114 @@ +############################################################################### +# @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 = "spin", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__lock_api-0.4.13//:lock_api": "lock_api_crate", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "barrier", + "default", + "lazy", + "lock_api", + "lock_api_crate", + "mutex", + "once", + "rwlock", + "spin_mutex", + ], + crate_root = "src/lib.rs", + edition = "2015", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=spin", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.8", + deps = [ + "@vendor_ts__lock_api-0.4.13//:lock_api", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.1.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.1.bazel index a726ed9d70a7..376f789df83a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.1.bazel @@ -34,9 +34,6 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_features = [ - "alloc", - ], crate_root = "src/lib.rs", edition = "2015", rustc_env_files = [ @@ -96,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.2.0", + version = "1.2.1", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.106.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.117.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.106.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.117.bazel index 50cde9ced991..b9ef3361a973 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.106.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.117.bazel @@ -39,7 +39,6 @@ rust_library( "default", "derive", "extra-traits", - "fold", "full", "parsing", "printing", @@ -106,10 +105,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.106", + version = "2.0.117", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__unicode-ident-1.0.19//:unicode_ident", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__unicode-ident-1.0.24//: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 fa9cc6081a5a..7283c85254ce 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 @@ -99,8 +99,8 @@ rust_library( }), version = "0.13.2", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.18.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.16.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.18.bazel index 3e1ae194c3b9..7ba5989625a1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.16.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.18.bazel @@ -45,7 +45,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__thiserror-impl-2.0.16//:thiserror_impl", + "@vendor_ts__thiserror-impl-2.0.18//:thiserror_impl", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -104,9 +104,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.16", + version = "2.0.18", deps = [ - "@vendor_ts__thiserror-2.0.16//:build_script_build", + "@vendor_ts__thiserror-2.0.18//:build_script_build", ], ) @@ -162,7 +162,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "2.0.16", + version = "2.0.18", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.18.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.16.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.18.bazel index 9d87f60d5d14..ef46b223dbb3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.16.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.18.bazel @@ -93,10 +93,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.16", + version = "2.0.18", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel index 01efca587901..e38f9011ecd3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel @@ -95,6 +95,6 @@ rust_library( }), version = "1.1.9", deps = [ - "@vendor_ts__cfg-if-1.0.3//:cfg_if", + "@vendor_ts__cfg-if-1.0.4//:cfg_if", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.bazel deleted file mode 100644 index c3ee5405393c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.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 = "time", - 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=time", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.43", - deps = [ - "@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.6//:time_core", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.47.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.47.bazel new file mode 100644 index 000000000000..9f124d45fb4b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.47.bazel @@ -0,0 +1,221 @@ +############################################################################### +# @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 = "time", + 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 = [ + "alloc", + "default", + "formatting", + "local-offset", + "std", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=time", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.47", + deps = [ + "@vendor_ts__deranged-0.5.3//:deranged", + "@vendor_ts__itoa-1.0.18//:itoa", + "@vendor_ts__num-conv-0.2.1//:num_conv", + "@vendor_ts__powerfmt-0.2.0//:powerfmt", + "@vendor_ts__time-core-0.1.8//:time_core", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__libc-0.2.185//:libc", # aarch64-apple-darwin + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-apple-darwin + ], + "@rules_rust//rust/platform:aarch64-apple-ios": [ + "@vendor_ts__libc-0.2.185//:libc", # aarch64-apple-ios + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-apple-ios + ], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ + "@vendor_ts__libc-0.2.185//:libc", # aarch64-apple-ios-sim + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-apple-ios-sim + ], + "@rules_rust//rust/platform:aarch64-linux-android": [ + "@vendor_ts__libc-0.2.185//:libc", # aarch64-linux-android + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-linux-android + ], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.185//:libc", # aarch64-unknown-fuchsia + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-unknown-fuchsia + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.185//:libc", # aarch64-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.185//:libc", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ + "@vendor_ts__libc-0.2.185//:libc", # aarch64-unknown-nto-qnx710 + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-unknown-nto-qnx710 + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.185//:libc", # arm-unknown-linux-gnueabi + "@vendor_ts__num_threads-0.1.7//:num_threads", # arm-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__libc-0.2.185//:libc", # arm-unknown-linux-musleabi + "@vendor_ts__num_threads-0.1.7//:num_threads", # arm-unknown-linux-musleabi + ], + "@rules_rust//rust/platform:armv7-linux-androideabi": [ + "@vendor_ts__libc-0.2.185//:libc", # armv7-linux-androideabi + "@vendor_ts__num_threads-0.1.7//:num_threads", # armv7-linux-androideabi + ], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.185//:libc", # armv7-unknown-linux-gnueabi + "@vendor_ts__num_threads-0.1.7//:num_threads", # armv7-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__libc-0.2.185//:libc", # i686-apple-darwin + "@vendor_ts__num_threads-0.1.7//:num_threads", # i686-apple-darwin + ], + "@rules_rust//rust/platform:i686-linux-android": [ + "@vendor_ts__libc-0.2.185//:libc", # i686-linux-android + "@vendor_ts__num_threads-0.1.7//:num_threads", # i686-linux-android + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__libc-0.2.185//:libc", # i686-unknown-freebsd + "@vendor_ts__num_threads-0.1.7//:num_threads", # i686-unknown-freebsd + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.185//:libc", # i686-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # i686-unknown-linux-gnu + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.185//:libc", # powerpc-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # powerpc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.185//:libc", # riscv64gc-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # riscv64gc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.185//:libc", # s390x-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # s390x-unknown-linux-gnu + ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__libc-0.2.185//:libc", # wasm32-unknown-emscripten + "@vendor_ts__num_threads-0.1.7//:num_threads", # wasm32-unknown-emscripten + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__libc-0.2.185//:libc", # x86_64-apple-darwin + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-apple-darwin + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__libc-0.2.185//:libc", # x86_64-apple-ios + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-apple-ios + ], + "@rules_rust//rust/platform:x86_64-linux-android": [ + "@vendor_ts__libc-0.2.185//:libc", # x86_64-linux-android + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-linux-android + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__libc-0.2.185//:libc", # x86_64-unknown-freebsd + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-unknown-freebsd + ], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.185//:libc", # x86_64-unknown-fuchsia + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-unknown-fuchsia + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.185//:libc", # x86_64-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.185//:libc", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.8.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.6.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.8.bazel index 57d22c65064b..226d665682fa 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.8.bazel @@ -35,7 +35,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -93,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.6", + version = "0.1.8", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.27.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.24.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.27.bazel index 08d61498717e..f240decc636e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.24.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.27.bazel @@ -35,7 +35,7 @@ rust_proc_macro( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -93,9 +93,9 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.24", + version = "0.2.27", deps = [ - "@vendor_ts__num-conv-0.1.0//:num_conv", - "@vendor_ts__time-core-0.1.6//:time_core", + "@vendor_ts__num-conv-0.2.1//:num_conv", + "@vendor_ts__time-core-0.1.8//: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 deleted file mode 100644 index 896bfb0dd66a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel +++ /dev/null @@ -1,107 +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 = "tinystr", - 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 = [ - "alloc", - "zerovec", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__displaydoc-0.2.5//:displaydoc", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=tinystr", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.8.1", - deps = [ - "@vendor_ts__zerovec-0.11.4//:zerovec", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.12+spec-1.1.0.bazel similarity index 92% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.7.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.12+spec-1.1.0.bazel index 04609ea84f5a..00dda2eead4c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.12+spec-1.1.0.bazel @@ -100,13 +100,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.9.7", + version = "0.9.12+spec-1.1.0", deps = [ "@vendor_ts__serde_core-1.0.228//:serde_core", - "@vendor_ts__serde_spanned-1.0.2//:serde_spanned", - "@vendor_ts__toml_datetime-0.7.2//:toml_datetime", - "@vendor_ts__toml_parser-1.0.3//:toml_parser", - "@vendor_ts__toml_writer-1.0.3//:toml_writer", - "@vendor_ts__winnow-0.7.13//:winnow", + "@vendor_ts__serde_spanned-1.1.1//:serde_spanned", + "@vendor_ts__toml_datetime-0.7.5-spec-1.1.0//:toml_datetime", + "@vendor_ts__toml_parser-1.1.2-spec-1.1.0//:toml_parser", + "@vendor_ts__toml_writer-1.1.1-spec-1.1.0//:toml_writer", + "@vendor_ts__winnow-0.7.15//:winnow", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.23.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-1.1.2+spec-1.1.0.bazel similarity index 90% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.23.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-1.1.2+spec-1.1.0.bazel index 50cb78eec1e8..762beea47a0a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.23.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-1.1.2+spec-1.1.0.bazel @@ -38,9 +38,11 @@ rust_library( "default", "display", "parse", + "serde", + "std", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -98,11 +100,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.8.23", + version = "1.1.2+spec-1.1.0", deps = [ - "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__serde_spanned-0.6.9//:serde_spanned", - "@vendor_ts__toml_datetime-0.6.11//:toml_datetime", - "@vendor_ts__toml_edit-0.22.27//:toml_edit", + "@vendor_ts__serde_core-1.0.228//:serde_core", + "@vendor_ts__serde_spanned-1.1.1//:serde_spanned", + "@vendor_ts__toml_datetime-1.1.1-spec-1.1.0//:toml_datetime", + "@vendor_ts__toml_parser-1.1.2-spec-1.1.0//:toml_parser", + "@vendor_ts__toml_writer-1.1.1-spec-1.1.0//:toml_writer", + "@vendor_ts__winnow-1.0.1//:winnow", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.5+spec-1.1.0.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.5+spec-1.1.0.bazel index f0a1a3502d03..fc176f8a9b8b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.5+spec-1.1.0.bazel @@ -98,7 +98,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.7.2", + version = "0.7.5+spec-1.1.0", deps = [ "@vendor_ts__serde_core-1.0.228//:serde_core", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-1.1.1+spec-1.1.0.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.11.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-1.1.1+spec-1.1.0.bazel index 2673acb9f664..f92fd3be64c6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-1.1.1+spec-1.1.0.bazel @@ -35,10 +35,12 @@ rust_library( ], ), crate_features = [ + "alloc", "serde", + "std", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -96,8 +98,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.6.11", + version = "1.1.1+spec-1.1.0", deps = [ - "@vendor_ts__serde-1.0.228//:serde", + "@vendor_ts__serde_core-1.0.228//:serde_core", ], ) 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 deleted file mode 100644 index b8a2048b67fb..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel +++ /dev/null @@ -1,110 +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 = "toml_edit", - 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 = [ - "display", - "parse", - "serde", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=toml_edit", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.22.27", - deps = [ - "@vendor_ts__indexmap-2.11.4//:indexmap", - "@vendor_ts__serde-1.0.228//: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.13//:winnow", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.1.2+spec-1.1.0.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.1.2+spec-1.1.0.bazel index 3ad30e38760d..90f7f1d57e21 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.1.2+spec-1.1.0.bazel @@ -39,7 +39,7 @@ rust_library( "std", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -97,8 +97,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.3", + version = "1.1.2+spec-1.1.0", deps = [ - "@vendor_ts__winnow-0.7.13//:winnow", + "@vendor_ts__winnow-1.0.1//:winnow", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel deleted file mode 100644 index 61e730c79391..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel +++ /dev/null @@ -1,102 +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 = "toml_write", - 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 = [ - "alloc", - "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=toml_write", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.2", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.1.1+spec-1.1.0.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.0.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.1.1+spec-1.1.0.bazel index 2bed2419242d..c3005bdd0207 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.1.1+spec-1.1.0.bazel @@ -39,7 +39,7 @@ rust_library( "std", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -97,5 +97,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.3", + version = "1.1.1+spec-1.1.0", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.41.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.44.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.41.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.44.bazel index 183d4cdd5865..e38c76a9b2b5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.41.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.44.bazel @@ -43,7 +43,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2018", proc_macro_deps = [ - "@vendor_ts__tracing-attributes-0.1.30//:tracing_attributes", + "@vendor_ts__tracing-attributes-0.1.31//:tracing_attributes", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -102,9 +102,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.41", + version = "0.1.44", deps = [ - "@vendor_ts__pin-project-lite-0.2.16//:pin_project_lite", - "@vendor_ts__tracing-core-0.1.34//:tracing_core", + "@vendor_ts__pin-project-lite-0.2.17//:pin_project_lite", + "@vendor_ts__tracing-core-0.1.36//:tracing_core", ], ) 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.31.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.30.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.31.bazel index 8f607d2a3218..6a87d07d6245 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.31.bazel @@ -93,10 +93,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.30", + version = "0.1.31", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.34.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.36.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.34.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.36.bazel index c30ffdd41dfe..aacfb5924369 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.34.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.36.bazel @@ -98,8 +98,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.34", + version = "0.1.36", deps = [ - "@vendor_ts__once_cell-1.21.3//:once_cell", + "@vendor_ts__once_cell-1.21.4//:once_cell", ], ) 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 23e0eab2f412..dde38953aa25 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 @@ -100,7 +100,7 @@ rust_library( version = "0.2.0", deps = [ "@vendor_ts__lazy_static-1.5.0//:lazy_static", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__tracing-subscriber-0.3.20//:tracing_subscriber", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__tracing-subscriber-0.3.23//: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 9cd5f33c7cd2..e5c9180aca2f 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 @@ -99,8 +99,8 @@ rust_library( }), version = "0.2.0", deps = [ - "@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", + "@vendor_ts__log-0.4.29//:log", + "@vendor_ts__once_cell-1.21.4//:once_cell", + "@vendor_ts__tracing-core-0.1.36//:tracing_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.23.bazel similarity index 93% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.20.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.23.bazel index f0c94ca745b6..5e6f05363a9e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.20.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.23.bazel @@ -40,6 +40,7 @@ rust_library( "default", "env-filter", "fmt", + "local-time", "matchers", "nu-ansi-term", "once_cell", @@ -48,6 +49,7 @@ rust_library( "smallvec", "std", "thread_local", + "time", "tracing", "tracing-log", ], @@ -110,17 +112,18 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.3.20", + version = "0.3.23", deps = [ "@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-automata-0.4.11//:regex_automata", + "@vendor_ts__once_cell-1.21.4//:once_cell", + "@vendor_ts__regex-automata-0.4.14//:regex_automata", "@vendor_ts__sharded-slab-0.1.7//:sharded_slab", "@vendor_ts__smallvec-1.15.1//:smallvec", "@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__time-0.3.47//:time", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__tracing-core-0.1.36//:tracing_core", "@vendor_ts__tracing-log-0.2.0//:tracing_log", ], ) 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.tracing-tree-0.4.1.bazel similarity index 92% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-tree-0.4.1.bazel index 1ad22b9f498f..b2df0920ffe4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-tree-0.4.1.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "petgraph", + name = "tracing_tree", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -36,9 +36,7 @@ rust_library( ), crate_features = [ "default", - "graphmap", - "matrix_graph", - "stable_graph", + "tracing-log", ], crate_root = "src/lib.rs", edition = "2018", @@ -50,7 +48,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=petgraph", + "crate-name=tracing-tree", "manual", "noclippy", "norustfmt", @@ -99,9 +97,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.6.5", + version = "0.4.1", deps = [ - "@vendor_ts__fixedbitset-0.4.2//:fixedbitset", - "@vendor_ts__indexmap-2.11.4//:indexmap", + "@vendor_ts__nu-ansi-term-0.50.1//:nu_ansi_term", + "@vendor_ts__tracing-core-0.1.36//:tracing_core", + "@vendor_ts__tracing-log-0.2.0//:tracing_log", + "@vendor_ts__tracing-subscriber-0.3.23//:tracing_subscriber", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel index fd97779c54c6..90f526621a7b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel @@ -103,8 +103,8 @@ rust_library( }), version = "0.25.9", deps = [ - "@vendor_ts__regex-1.11.3//:regex", - "@vendor_ts__regex-syntax-0.8.6//:regex_syntax", + "@vendor_ts__regex-1.12.3//:regex", + "@vendor_ts__regex-syntax-0.8.10//:regex_syntax", "@vendor_ts__streaming-iterator-0.1.9//:streaming_iterator", "@vendor_ts__tree-sitter-0.25.9//:build_script_build", "@vendor_ts__tree-sitter-language-0.1.5//:tree_sitter_language", @@ -167,8 +167,8 @@ cargo_build_script( version = "0.25.9", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.37//:cc", - "@vendor_ts__serde_json-1.0.145//:serde_json", + "@vendor_ts__cc-1.2.60//:cc", + "@vendor_ts__serde_json-1.0.149//:serde_json", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.25.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.25.0.bazel index c9dd60b03c0e..e3e92da896c7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.25.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.25.0.bazel @@ -155,7 +155,7 @@ cargo_build_script( version = "0.25.0", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.37//:cc", + "@vendor_ts__cc-1.2.60//: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 6b9a7bf0582b..04bbbafb257f 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 @@ -155,7 +155,7 @@ cargo_build_script( version = "0.24.8", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.37//:cc", + "@vendor_ts__cc-1.2.60//:cc", ], ) 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 0b7ce3a9a29c..a2ec97769c24 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 @@ -155,7 +155,7 @@ cargo_build_script( version = "0.23.1", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.37//:cc", + "@vendor_ts__cc-1.2.60//: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 f939b4b9493c..3352db845fa5 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 @@ -155,7 +155,7 @@ cargo_build_script( version = "0.23.1", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.37//:cc", + "@vendor_ts__cc-1.2.60//:cc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.15.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.15.bazel index f1774bfb2f03..74d278eb3bcd 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.15.bazel @@ -41,7 +41,7 @@ rust_library( "std", ], crate_root = "src/lib.rs", - edition = "2015", + edition = "2021", 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 = "0.1.14", + version = "0.1.15", deps = [ "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__stable_deref_trait-1.2.0//:stable_deref_trait", + "@vendor_ts__stable_deref_trait-1.2.1//:stable_deref_trait", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.24.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.19.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.24.bazel index 75aa1ff078af..27918c9b2b4a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.19.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.24.bazel @@ -35,7 +35,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2018", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -93,5 +93,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.19", + version = "1.0.24", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel deleted file mode 100644 index 043bed2ca2c0..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel +++ /dev/null @@ -1,108 +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 = "url", - 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", - "serde", - "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=url", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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 = "2.5.7", - deps = [ - "@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.228//:serde", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.4.bazel deleted file mode 100644 index 9ebd1462558c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.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 = "utf8_iter", - 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=utf8_iter", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.4", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.5+wasi-0.2.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.5+wasi-0.2.4.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.bazel index a5826f5cea2e..580c2cef0aab 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.5+wasi-0.2.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "wasi", + name = "wasip3", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -44,7 +44,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=wasi", + "crate-name=wasip3", "manual", "noclippy", "norustfmt", @@ -93,8 +93,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.14.5+wasi-0.2.4", + version = "0.4.0+wasi-0.3.0-rc-2026-01-06", deps = [ - "@vendor_ts__wasip2-1.0.0-wasi-0.2.4//:wasip2", + "@vendor_ts__wit-bindgen-0.51.0//:wit_bindgen", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel index 91c146904b67..196c576af5aa 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel @@ -109,8 +109,8 @@ rust_library( }), version = "0.2.101", deps = [ - "@vendor_ts__cfg-if-1.0.3//:cfg_if", - "@vendor_ts__once_cell-1.21.3//:once_cell", + "@vendor_ts__cfg-if-1.0.4//:cfg_if", + "@vendor_ts__once_cell-1.21.4//:once_cell", "@vendor_ts__wasm-bindgen-0.2.101//:build_script_build", "@vendor_ts__wasm-bindgen-shared-0.2.101//:wasm_bindgen_shared", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel index 8bd3515bef87..77960d29b6f6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel @@ -96,10 +96,10 @@ rust_library( version = "0.2.101", deps = [ "@vendor_ts__bumpalo-3.19.0//:bumpalo", - "@vendor_ts__log-0.4.28//:log", - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__log-0.4.29//:log", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//: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.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.101.bazel index 3e207f054b06..1da3ebd7a263 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.101.bazel @@ -95,7 +95,7 @@ rust_proc_macro( }), version = "0.2.101", deps = [ - "@vendor_ts__quote-1.0.41//:quote", + "@vendor_ts__quote-1.0.45//:quote", "@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.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.101.bazel index b2276e1a6386..b7bef3511c05 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.101.bazel @@ -95,9 +95,9 @@ rust_library( }), version = "0.2.101", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//: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.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.101.bazel index bb7bc40362a1..d8048e89a97b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.101.bazel @@ -99,7 +99,7 @@ rust_library( }), version = "0.2.101", deps = [ - "@vendor_ts__unicode-ident-1.0.19//:unicode_ident", + "@vendor_ts__unicode-ident-1.0.24//:unicode_ident", "@vendor_ts__wasm-bindgen-shared-0.2.101//:build_script_build", ], ) 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.wasm-encoder-0.244.0.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ppv-lite86-0.2.21.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-encoder-0.244.0.bazel index a4b01dcbc67f..ac2651bb736a 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.wasm-encoder-0.244.0.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "ppv_lite86", + name = "wasm_encoder", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -35,8 +35,9 @@ rust_library( ], ), crate_features = [ - "simd", + "component-model", "std", + "wasmparser", ], crate_root = "src/lib.rs", edition = "2021", @@ -48,7 +49,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=ppv-lite86", + "crate-name=wasm-encoder", "manual", "noclippy", "norustfmt", @@ -97,8 +98,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.21", + version = "0.244.0", deps = [ - "@vendor_ts__zerocopy-0.8.27//:zerocopy", + "@vendor_ts__leb128fmt-0.1.0//:leb128fmt", + "@vendor_ts__wasmparser-0.244.0//:wasmparser", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-metadata-0.244.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-metadata-0.244.0.bazel new file mode 100644 index 000000000000..5a91b52eac5c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-metadata-0.244.0.bazel @@ -0,0 +1,103 @@ +############################################################################### +# @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 = "wasm_metadata", + 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=wasm-metadata", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.244.0", + deps = [ + "@vendor_ts__anyhow-1.0.102//:anyhow", + "@vendor_ts__indexmap-2.14.0//:indexmap", + "@vendor_ts__wasm-encoder-0.244.0//:wasm_encoder", + "@vendor_ts__wasmparser-0.244.0//:wasmparser", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasmparser-0.244.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasmparser-0.244.0.bazel new file mode 100644 index 000000000000..8b1c810b8090 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasmparser-0.244.0.bazel @@ -0,0 +1,111 @@ +############################################################################### +# @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 = "wasmparser", + 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 = [ + "component-model", + "features", + "hash-collections", + "simd", + "std", + "validate", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=wasmparser", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.244.0", + deps = [ + "@vendor_ts__bitflags-2.11.1//:bitflags", + "@vendor_ts__hashbrown-0.15.5//:hashbrown", + "@vendor_ts__indexmap-2.14.0//:indexmap", + "@vendor_ts__semver-1.0.28//:semver", + ], +) 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 4477961b0a8f..4c57669e8c53 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 @@ -95,8 +95,8 @@ rust_proc_macro( }), version = "0.60.0", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//: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 cc4f0390337a..3e3c10462ea9 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 @@ -95,8 +95,8 @@ rust_proc_macro( }), version = "0.59.1", deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", ], ) 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 9aee199dc0a8..5322a02c0786 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 @@ -42,7 +42,6 @@ rust_library( "Win32_Storage_FileSystem", "Win32_System", "Win32_System_Console", - "Win32_System_Threading", "default", ], crate_root = "src/lib.rs", 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 deleted file mode 100644 index b3222f2a6588..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel +++ /dev/null @@ -1,109 +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_sys", - 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 = [ - "Win32", - "Win32_Foundation", - "Win32_System", - "Win32_System_Com", - "Win32_UI", - "Win32_UI_Shell", - "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=windows-sys", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.59.0", - deps = [ - "@vendor_ts__windows-targets-0.52.6//:windows_targets", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel index a6f072e5b2a9..320d971898d4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel @@ -43,11 +43,14 @@ rust_library( "Win32_Storage", "Win32_Storage_FileSystem", "Win32_System", + "Win32_System_Com", "Win32_System_Console", "Win32_System_IO", "Win32_System_Pipes", "Win32_System_SystemInformation", "Win32_System_Threading", + "Win32_UI", + "Win32_UI_Shell", "default", ], crate_root = "src/lib.rs", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel deleted file mode 100644 index 997a4bf65d4d..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel +++ /dev/null @@ -1,102 +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 = "winnow", - 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 = [ - "alloc", - "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=winnow", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.7.13", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.15.bazel new file mode 100644 index 000000000000..156ad002d937 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.15.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @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 = "winnow", + 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=winnow", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.7.15", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.1.bazel new file mode 100644 index 000000000000..e18bf009650b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.1.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @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 = "winnow", + 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=winnow", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties_data-2.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.51.0.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties_data-2.0.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.51.0.bazel index e7aa78908e36..17e24365c6b1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties_data-2.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.51.0.bazel @@ -21,7 +21,7 @@ cargo_toml_env_vars( ) rust_library( - name = "icu_properties_data", + name = "wit_bindgen", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -39,7 +39,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -48,7 +48,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=icu_properties_data", + "crate-name=wit-bindgen", "manual", "noclippy", "norustfmt", @@ -97,9 +97,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.1", + version = "0.51.0", deps = [ - "@vendor_ts__icu_properties_data-2.0.1//:build_script_build", + "@vendor_ts__wit-bindgen-0.51.0//:build_script_build", ], ) @@ -136,8 +136,8 @@ cargo_build_script( "WORKSPACE.bazel", ], ), - edition = "2021", - pkg_name = "icu_properties_data", + edition = "2024", + pkg_name = "wit-bindgen", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -146,12 +146,12 @@ cargo_build_script( ], tags = [ "cargo-bazel", - "crate-name=icu_properties_data", + "crate-name=wit-bindgen", "manual", "noclippy", "norustfmt", ], - version = "2.0.1", + version = "0.51.0", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-core-0.51.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-core-0.51.0.bazel new file mode 100644 index 000000000000..5d5f5e2dfd8e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-core-0.51.0.bazel @@ -0,0 +1,102 @@ +############################################################################### +# @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 = "wit_bindgen_core", + 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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=wit-bindgen-core", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.51.0", + deps = [ + "@vendor_ts__anyhow-1.0.102//:anyhow", + "@vendor_ts__heck-0.5.0//:heck", + "@vendor_ts__wit-parser-0.244.0//:wit_parser", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-0.51.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-0.51.0.bazel new file mode 100644 index 000000000000..b2266ab0a05d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-0.51.0.bazel @@ -0,0 +1,173 @@ +############################################################################### +# @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 = "wit_bindgen_rust", + 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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=wit-bindgen-rust", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.51.0", + deps = [ + "@vendor_ts__anyhow-1.0.102//:anyhow", + "@vendor_ts__heck-0.5.0//:heck", + "@vendor_ts__indexmap-2.14.0//:indexmap", + "@vendor_ts__prettyplease-0.2.37//:prettyplease", + "@vendor_ts__syn-2.0.117//:syn", + "@vendor_ts__wasm-metadata-0.244.0//:wasm_metadata", + "@vendor_ts__wit-bindgen-core-0.51.0//:wit_bindgen_core", + "@vendor_ts__wit-bindgen-rust-0.51.0//:build_script_build", + "@vendor_ts__wit-component-0.244.0//:wit_component", + ], +) + +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 = "2024", + link_deps = [ + "@vendor_ts__prettyplease-0.2.37//:prettyplease", + ], + pkg_name = "wit-bindgen-rust", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=wit-bindgen-rust", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.51.0", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-macro-0.51.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-macro-0.51.0.bazel new file mode 100644 index 000000000000..8372f1162962 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-macro-0.51.0.bazel @@ -0,0 +1,172 @@ +############################################################################### +# @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_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_proc_macro( + name = "wit_bindgen_rust_macro", + 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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=wit-bindgen-rust-macro", + "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:arm-unknown-linux-musleabi": [], + "@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-linux-gnu": [], + "@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-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@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.51.0", + deps = [ + "@vendor_ts__anyhow-1.0.102//:anyhow", + "@vendor_ts__prettyplease-0.2.37//:prettyplease", + "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__quote-1.0.45//:quote", + "@vendor_ts__syn-2.0.117//:syn", + "@vendor_ts__wit-bindgen-core-0.51.0//:wit_bindgen_core", + "@vendor_ts__wit-bindgen-rust-0.51.0//:wit_bindgen_rust", + "@vendor_ts__wit-bindgen-rust-macro-0.51.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 = "2024", + link_deps = [ + "@vendor_ts__prettyplease-0.2.37//:prettyplease", + ], + pkg_name = "wit-bindgen-rust-macro", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=wit-bindgen-rust-macro", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.51.0", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-component-0.244.0.bazel similarity index 86% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.9.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-component-0.244.0.bazel index c5d9c5336e6a..a6a60adbac3d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-component-0.244.0.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "serde_spanned", + name = "wit_component", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -34,11 +34,11 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_features = [ - "serde", - ], crate_root = "src/lib.rs", edition = "2021", + proc_macro_deps = [ + "@vendor_ts__serde_derive-1.0.228//:serde_derive", + ], rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -47,7 +47,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=serde_spanned", + "crate-name=wit-component", "manual", "noclippy", "norustfmt", @@ -96,8 +96,17 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.6.9", + version = "0.244.0", deps = [ + "@vendor_ts__anyhow-1.0.102//:anyhow", + "@vendor_ts__bitflags-2.11.1//:bitflags", + "@vendor_ts__indexmap-2.14.0//:indexmap", + "@vendor_ts__log-0.4.29//:log", "@vendor_ts__serde-1.0.228//:serde", + "@vendor_ts__serde_json-1.0.149//:serde_json", + "@vendor_ts__wasm-encoder-0.244.0//:wasm_encoder", + "@vendor_ts__wasm-metadata-0.244.0//:wasm_metadata", + "@vendor_ts__wasmparser-0.244.0//:wasmparser", + "@vendor_ts__wit-parser-0.244.0//:wit_parser", ], ) 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.wit-parser-0.244.0.bazel similarity index 86% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-parser-0.244.0.bazel index 802e8d678083..a4795bc61642 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.wit-parser-0.244.0.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "cargo_util_schemas", + name = "wit_parser", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -34,8 +34,17 @@ rust_library( "WORKSPACE.bazel", ], ), + crate_features = [ + "decoding", + "default", + "serde", + "serde_json", + ], crate_root = "src/lib.rs", edition = "2021", + proc_macro_deps = [ + "@vendor_ts__serde_derive-1.0.228//:serde_derive", + ], rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -44,7 +53,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=cargo-util-schemas", + "crate-name=wit-parser", "manual", "noclippy", "norustfmt", @@ -93,15 +102,16 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.8.2", + version = "0.244.0", deps = [ - "@vendor_ts__semver-1.0.26//:semver", + "@vendor_ts__anyhow-1.0.102//:anyhow", + "@vendor_ts__id-arena-2.3.0//:id_arena", + "@vendor_ts__indexmap-2.14.0//:indexmap", + "@vendor_ts__log-0.4.29//:log", + "@vendor_ts__semver-1.0.28//:semver", "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__serde-untagged-0.1.8//:serde_untagged", - "@vendor_ts__serde-value-0.7.0//:serde_value", - "@vendor_ts__thiserror-2.0.16//:thiserror", - "@vendor_ts__toml-0.8.23//:toml", + "@vendor_ts__serde_json-1.0.149//:serde_json", "@vendor_ts__unicode-xid-0.2.6//:unicode_xid", - "@vendor_ts__url-2.5.7//:url", + "@vendor_ts__wasmparser-0.244.0//:wasmparser", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel deleted file mode 100644 index ecef8b52a73d..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel +++ /dev/null @@ -1,109 +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 = "yoke", - 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 = [ - "alloc", - "derive", - "zerofrom", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__yoke-derive-0.8.0//:yoke_derive", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=yoke", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.8.0", - deps = [ - "@vendor_ts__stable_deref_trait-1.2.0//:stable_deref_trait", - "@vendor_ts__zerofrom-0.1.6//:zerofrom", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel deleted file mode 100644 index 11df1449c962..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel +++ /dev/null @@ -1,102 +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_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_proc_macro( - name = "zerocopy_derive", - 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=zerocopy-derive", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.8.27", - deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel deleted file mode 100644 index fbb85d748c8f..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel +++ /dev/null @@ -1,104 +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 = "zerofrom", - 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 = [ - "alloc", - "derive", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__zerofrom-derive-0.1.6//:zerofrom_derive", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=zerofrom", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.6", -) 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 deleted file mode 100644 index ff9c1ef21429..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.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_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_proc_macro( - name = "zerofrom_derive", - 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=zerofrom-derive", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.6", - deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@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.zerotrie-0.2.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerotrie-0.2.2.bazel deleted file mode 100644 index 1bcd44131b7e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerotrie-0.2.2.bazel +++ /dev/null @@ -1,108 +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 = "zerotrie", - 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 = [ - "yoke", - "zerofrom", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__displaydoc-0.2.5//:displaydoc", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=zerotrie", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.2", - 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-0.11.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.4.bazel deleted file mode 100644 index a8fe8f8c7e9e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.4.bazel +++ /dev/null @@ -1,109 +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 = "zerovec", - 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 = [ - "alloc", - "derive", - "yoke", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__zerovec-derive-0.11.1//:zerovec_derive", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=zerovec", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.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 deleted file mode 100644 index ace3c224c5df..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel +++ /dev/null @@ -1,102 +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_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_proc_macro( - name = "zerovec_derive", - 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=zerovec-derive", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.11.1", - deps = [ - "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", - "@vendor_ts__quote-1.0.41//:quote", - "@vendor_ts__syn-2.0.106//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zmij-1.0.21.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zmij-1.0.21.bazel index 0e5737ac61b9..be61c1bfb32c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zmij-1.0.21.bazel @@ -21,7 +21,7 @@ cargo_toml_env_vars( ) rust_library( - name = "typeid", + name = "zmij", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -39,7 +39,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2018", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -48,7 +48,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=typeid", + "crate-name=zmij", "manual", "noclippy", "norustfmt", @@ -97,9 +97,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.3", + version = "1.0.21", deps = [ - "@vendor_ts__typeid-1.0.3//:build_script_build", + "@vendor_ts__zmij-1.0.21//:build_script_build", ], ) @@ -136,8 +136,8 @@ cargo_build_script( "WORKSPACE.bazel", ], ), - edition = "2018", - pkg_name = "typeid", + edition = "2021", + pkg_name = "zmij", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -146,12 +146,12 @@ cargo_build_script( ], tags = [ "cargo-bazel", - "crate-name=typeid", + "crate-name=zmij", "manual", "noclippy", "norustfmt", ], - version = "1.0.3", + version = "1.0.21", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel index 32a06f947886..e3d0552cb978 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel @@ -165,7 +165,7 @@ cargo_build_script( version = "2.0.16+zstd.1.5.7", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.37//:cc", + "@vendor_ts__cc-1.2.60//: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 bf11bc6c82fa..2d7841c35661 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl @@ -295,14 +295,14 @@ def aliases( _NORMAL_DEPENDENCIES = { "ruby/extractor": { _COMMON_CONDITION: { - "clap": Label("@vendor_ts__clap-4.5.48//:clap"), + "clap": Label("@vendor_ts__clap-4.6.0//: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.11.0//:rayon"), - "regex": Label("@vendor_ts__regex-1.11.3//:regex"), - "serde_json": Label("@vendor_ts__serde_json-1.0.145//:serde_json"), - "tracing": Label("@vendor_ts__tracing-0.1.41//:tracing"), - "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.20//:tracing_subscriber"), + "rayon": Label("@vendor_ts__rayon-1.12.0//:rayon"), + "regex": Label("@vendor_ts__regex-1.12.3//:regex"), + "serde_json": Label("@vendor_ts__serde_json-1.0.149//:serde_json"), + "tracing": Label("@vendor_ts__tracing-0.1.44//:tracing"), + "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.23//: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.25.0//:tree_sitter_embedded_template"), "tree-sitter-ruby": Label("@vendor_ts__tree-sitter-ruby-0.23.1//:tree_sitter_ruby"), @@ -310,14 +310,14 @@ _NORMAL_DEPENDENCIES = { }, "rust/ast-generator": { _COMMON_CONDITION: { - "anyhow": Label("@vendor_ts__anyhow-1.0.100//:anyhow"), + "anyhow": Label("@vendor_ts__anyhow-1.0.102//:anyhow"), "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.101//:proc_macro2"), - "quote": Label("@vendor_ts__quote-1.0.41//:quote"), + "proc-macro2": Label("@vendor_ts__proc-macro2-1.0.106//:proc_macro2"), + "quote": Label("@vendor_ts__quote-1.0.45//:quote"), "serde": Label("@vendor_ts__serde-1.0.228//:serde"), - "stdx": Label("@vendor_ts__ra_ap_stdx-0.0.301//:ra_ap_stdx"), + "stdx": Label("@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx"), "ungrammar": Label("@vendor_ts__ungrammar-1.16.1//:ungrammar"), }, }, @@ -325,62 +325,62 @@ _NORMAL_DEPENDENCIES = { }, "rust/extractor": { _COMMON_CONDITION: { - "anyhow": Label("@vendor_ts__anyhow-1.0.100//:anyhow"), - "argfile": Label("@vendor_ts__argfile-0.2.1//:argfile"), + "anyhow": Label("@vendor_ts__anyhow-1.0.102//:anyhow"), + "argfile": Label("@vendor_ts__argfile-1.0.0//:argfile"), "chalk-ir": Label("@vendor_ts__chalk-ir-0.104.0//:chalk_ir"), - "chrono": Label("@vendor_ts__chrono-0.4.42//:chrono"), - "clap": Label("@vendor_ts__clap-4.5.48//:clap"), + "chrono": Label("@vendor_ts__chrono-0.4.44//:chrono"), + "clap": Label("@vendor_ts__clap-4.6.0//: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.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"), + "ra_ap_base_db": Label("@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db"), + "ra_ap_cfg": Label("@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg"), + "ra_ap_hir": Label("@vendor_ts__ra_ap_hir-0.0.328//:ra_ap_hir"), + "ra_ap_hir_def": Label("@vendor_ts__ra_ap_hir_def-0.0.328//:ra_ap_hir_def"), + "ra_ap_hir_expand": Label("@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand"), + "ra_ap_hir_ty": Label("@vendor_ts__ra_ap_hir_ty-0.0.328//:ra_ap_hir_ty"), + "ra_ap_ide_db": Label("@vendor_ts__ra_ap_ide_db-0.0.328//:ra_ap_ide_db"), + "ra_ap_intern": Label("@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern"), + "ra_ap_load-cargo": Label("@vendor_ts__ra_ap_load-cargo-0.0.328//:ra_ap_load_cargo"), + "ra_ap_parser": Label("@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser"), + "ra_ap_paths": Label("@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths"), + "ra_ap_project_model": Label("@vendor_ts__ra_ap_project_model-0.0.328//:ra_ap_project_model"), + "ra_ap_span": Label("@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span"), + "ra_ap_syntax": Label("@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax"), + "ra_ap_vfs": Label("@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs"), "serde": Label("@vendor_ts__serde-1.0.228//:serde"), - "serde_json": Label("@vendor_ts__serde_json-1.0.145//:serde_json"), - "serde_with": Label("@vendor_ts__serde_with-3.14.1//:serde_with"), - "toml": Label("@vendor_ts__toml-0.9.7//:toml"), - "tracing": Label("@vendor_ts__tracing-0.1.41//:tracing"), + "serde_json": Label("@vendor_ts__serde_json-1.0.149//:serde_json"), + "serde_with": Label("@vendor_ts__serde_with-3.18.0//:serde_with"), + "toml": Label("@vendor_ts__toml-1.1.2-spec-1.1.0//:toml"), + "tracing": Label("@vendor_ts__tracing-0.1.44//:tracing"), "tracing-flame": Label("@vendor_ts__tracing-flame-0.2.0//:tracing_flame"), - "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.20//:tracing_subscriber"), - "triomphe": Label("@vendor_ts__triomphe-0.1.14//:triomphe"), + "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.23//:tracing_subscriber"), + "triomphe": Label("@vendor_ts__triomphe-0.1.15//:triomphe"), }, }, "rust/extractor/macros": { _COMMON_CONDITION: { - "quote": Label("@vendor_ts__quote-1.0.41//:quote"), - "syn": Label("@vendor_ts__syn-2.0.106//:syn"), + "quote": Label("@vendor_ts__quote-1.0.45//:quote"), + "syn": Label("@vendor_ts__syn-2.0.117//:syn"), }, }, "shared/tree-sitter-extractor": { _COMMON_CONDITION: { - "chrono": Label("@vendor_ts__chrono-0.4.42//:chrono"), + "chrono": Label("@vendor_ts__chrono-0.4.44//:chrono"), "encoding": Label("@vendor_ts__encoding-0.2.33//:encoding"), "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.11.0//:rayon"), - "regex": Label("@vendor_ts__regex-1.11.3//:regex"), + "rayon": Label("@vendor_ts__rayon-1.12.0//:rayon"), + "regex": Label("@vendor_ts__regex-1.12.3//:regex"), "serde": Label("@vendor_ts__serde-1.0.228//:serde"), - "serde_json": Label("@vendor_ts__serde_json-1.0.145//:serde_json"), - "tracing": Label("@vendor_ts__tracing-0.1.41//:tracing"), - "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.20//:tracing_subscriber"), + "serde_json": Label("@vendor_ts__serde_json-1.0.149//:serde_json"), + "tracing": Label("@vendor_ts__tracing-0.1.44//:tracing"), + "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.23//: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.301//:ra_ap_stdx"): "stdx", + Label("@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx"): "stdx", }, }, "rust/autobuild": { @@ -426,7 +426,7 @@ _NORMAL_DEV_DEPENDENCIES = { }, "shared/tree-sitter-extractor": { _COMMON_CONDITION: { - "rand": Label("@vendor_ts__rand-0.9.2//:rand"), + "rand": Label("@vendor_ts__rand-0.10.1//:rand"), "tree-sitter-json": Label("@vendor_ts__tree-sitter-json-0.24.8//:tree_sitter_json"), "tree-sitter-ql": Label("@vendor_ts__tree-sitter-ql-0.23.1//:tree_sitter_ql"), }, @@ -591,23 +591,33 @@ _CONDITIONS = { "cfg(all(any(target_arch = \"x86_64\", target_arch = \"arm64ec\"), target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"], "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-linux-android", "@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:arm-unknown-linux-musleabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], "cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"], + "cfg(all(target_arch = \"aarch64\", target_os = \"android\"))": ["@rules_rust//rust/platform:aarch64-linux-android"], + "cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu"], + "cfg(all(target_arch = \"aarch64\", 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"], + "cfg(all(target_arch = \"loongarch64\", target_os = \"linux\"))": [], "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\"))": ["@rules_rust//rust/platform:wasm32-wasip2"], + "cfg(all(target_arch = \"wasm32\", target_os = \"wasi\", target_env = \"p3\"))": [], "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 = \"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_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:arm-unknown-linux-musleabi", "@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:riscv64gc-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\", not(target_env = \"ohos\"), any(target_arch = \"x86\", target_arch = \"x86_64\", target_arch = \"aarch64\")))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:i686-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:riscv64gc-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\"))": [], "cfg(any())": [], + "cfg(any(target_arch = \"x86_64\", target_arch = \"x86\"))": ["@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: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"], "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-freebsd", "@rules_rust//rust/platform:x86_64-unknown-freebsd"], "cfg(any(target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\", target_os = \"dragonflybsd\", target_os = \"ios\"))": ["@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-unknown-freebsd"], "cfg(any(target_os = \"haiku\", target_os = \"redox\", target_os = \"nto\", target_os = \"aix\"))": ["@rules_rust//rust/platform:aarch64-unknown-nto-qnx710"], "cfg(any(target_os = \"ios\", target_os = \"visionos\", target_os = \"watchos\", target_os = \"tvos\"))": ["@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:x86_64-apple-ios"], "cfg(any(target_os = \"linux\", target_os = \"android\"))": ["@rules_rust//rust/platform:aarch64-linux-android", "@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:arm-unknown-linux-musleabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "cfg(any(target_os = \"macos\", target_os = \"ios\", target_os = \"freebsd\"))": ["@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:i686-unknown-freebsd", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-unknown-freebsd"], "cfg(any(target_os = \"macos\", target_os = \"openbsd\", target_os = \"vita\", target_os = \"emscripten\"))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:x86_64-apple-darwin"], "cfg(any(target_pointer_width = \"8\", target_pointer_width = \"16\", target_pointer_width = \"32\"))": ["@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:arm-unknown-linux-musleabi", "@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:thumbv7em-none-eabi", "@rules_rust//rust/platform:thumbv8m.main-none-eabi", "@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2"], + "cfg(any(unix, target_os = \"hermit\", target_os = \"wasi\"))": ["@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:arm-unknown-linux-musleabi", "@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:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2", "@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(not(windows))": ["@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:aarch64-unknown-uefi", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:arm-unknown-linux-musleabi", "@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:riscv32imc-unknown-none-elf", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@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-emscripten", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2", "@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", "@rules_rust//rust/platform:x86_64-unknown-none", "@rules_rust//rust/platform:x86_64-unknown-uefi"], + "cfg(target_arch = \"x86_64\")": ["@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"], + "cfg(target_family = \"wasm\")": ["@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2"], "cfg(target_os = \"android\")": ["@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:x86_64-linux-android"], "cfg(target_os = \"haiku\")": [], "cfg(target_os = \"hermit\")": [], @@ -629,6 +639,7 @@ _CONDITIONS = { "i686-unknown-freebsd": ["@rules_rust//rust/platform:i686-unknown-freebsd"], "i686-unknown-linux-gnu": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"], "powerpc-unknown-linux-gnu": ["@rules_rust//rust/platform:powerpc-unknown-linux-gnu"], + "riscv32i-unknown-none-elf": [], "riscv32imc-unknown-none-elf": ["@rules_rust//rust/platform:riscv32imc-unknown-none-elf"], "riscv64gc-unknown-linux-gnu": ["@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu"], "riscv64gc-unknown-none-elf": ["@rules_rust//rust/platform:riscv64gc-unknown-none-elf"], @@ -651,6 +662,7 @@ _CONDITIONS = { "x86_64-unknown-nixos-gnu": ["@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], "x86_64-unknown-none": ["@rules_rust//rust/platform:x86_64-unknown-none"], "x86_64-unknown-uefi": ["@rules_rust//rust/platform:x86_64-unknown-uefi"], + "xtensa-esp32s2-none-elf": [], } ############################################################################### @@ -673,12 +685,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__aho-corasick-1.1.3", - sha256 = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916", + name = "vendor_ts__aho-corasick-1.1.4", + sha256 = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301", type = "tar.gz", - urls = ["https://static.crates.io/crates/aho-corasick/1.1.3/download"], - strip_prefix = "aho-corasick-1.1.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.aho-corasick-1.1.3.bazel"), + urls = ["https://static.crates.io/crates/aho-corasick/1.1.4/download"], + strip_prefix = "aho-corasick-1.1.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.aho-corasick-1.1.4.bazel"), ) maybe( @@ -703,42 +715,42 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__anstream-0.6.20", - sha256 = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192", + name = "vendor_ts__anstream-1.0.0", + sha256 = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/anstream/1.0.0/download"], + strip_prefix = "anstream-1.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstream-1.0.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__anstyle-1.0.11", - sha256 = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd", + name = "vendor_ts__anstyle-1.0.14", + sha256 = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000", type = "tar.gz", - urls = ["https://static.crates.io/crates/anstyle/1.0.11/download"], - strip_prefix = "anstyle-1.0.11", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-1.0.11.bazel"), + urls = ["https://static.crates.io/crates/anstyle/1.0.14/download"], + strip_prefix = "anstyle-1.0.14", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-1.0.14.bazel"), ) maybe( http_archive, - name = "vendor_ts__anstyle-parse-0.2.7", - sha256 = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2", + name = "vendor_ts__anstyle-parse-1.0.0", + sha256 = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e", type = "tar.gz", - urls = ["https://static.crates.io/crates/anstyle-parse/0.2.7/download"], - strip_prefix = "anstyle-parse-0.2.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-parse-0.2.7.bazel"), + urls = ["https://static.crates.io/crates/anstyle-parse/1.0.0/download"], + strip_prefix = "anstyle-parse-1.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-parse-1.0.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__anstyle-query-1.1.4", - sha256 = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2", + name = "vendor_ts__anstyle-query-1.1.5", + sha256 = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/anstyle-query/1.1.5/download"], + strip_prefix = "anstyle-query-1.1.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-query-1.1.5.bazel"), ) maybe( @@ -753,22 +765,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__anyhow-1.0.100", - sha256 = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61", + name = "vendor_ts__anyhow-1.0.102", + sha256 = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c", type = "tar.gz", - urls = ["https://static.crates.io/crates/anyhow/1.0.100/download"], - strip_prefix = "anyhow-1.0.100", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anyhow-1.0.100.bazel"), + urls = ["https://static.crates.io/crates/anyhow/1.0.102/download"], + strip_prefix = "anyhow-1.0.102", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anyhow-1.0.102.bazel"), ) maybe( http_archive, - name = "vendor_ts__argfile-0.2.1", - sha256 = "0a1cc0ba69de57db40674c66f7cf2caee3981ddef084388482c95c0e2133e5e8", + name = "vendor_ts__argfile-1.0.0", + sha256 = "99489a733dea0d2930bfa59c243146a8513ce7b0991b9d006647687cc61f53e7", type = "tar.gz", - urls = ["https://static.crates.io/crates/argfile/0.2.1/download"], - strip_prefix = "argfile-0.2.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.argfile-0.2.1.bazel"), + urls = ["https://static.crates.io/crates/argfile/1.0.0/download"], + strip_prefix = "argfile-1.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.argfile-1.0.0.bazel"), ) maybe( @@ -791,6 +803,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.atomic-0.6.1.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__atomic-polyfill-1.0.3", + sha256 = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4", + type = "tar.gz", + urls = ["https://static.crates.io/crates/atomic-polyfill/1.0.3/download"], + strip_prefix = "atomic-polyfill-1.0.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.atomic-polyfill-1.0.3.bazel"), + ) + maybe( http_archive, name = "vendor_ts__autocfg-1.5.0", @@ -823,22 +845,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__bitflags-2.9.4", - sha256 = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394", + name = "vendor_ts__bitflags-2.11.1", + sha256 = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/bitflags/2.11.1/download"], + strip_prefix = "bitflags-2.11.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bitflags-2.11.1.bazel"), ) maybe( http_archive, - name = "vendor_ts__borsh-1.5.7", - sha256 = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce", + name = "vendor_ts__borsh-1.6.1", + sha256 = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a", type = "tar.gz", - urls = ["https://static.crates.io/crates/borsh/1.5.7/download"], - strip_prefix = "borsh-1.5.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.borsh-1.5.7.bazel"), + urls = ["https://static.crates.io/crates/borsh/1.6.1/download"], + strip_prefix = "borsh-1.6.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.borsh-1.6.1.bazel"), ) maybe( @@ -883,62 +905,72 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__camino-1.1.12", - sha256 = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5", + name = "vendor_ts__byteorder-1.5.0", + sha256 = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/byteorder/1.5.0/download"], + strip_prefix = "byteorder-1.5.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.byteorder-1.5.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__bytes-1.11.1", + sha256 = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/bytes/1.11.1/download"], + strip_prefix = "bytes-1.11.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bytes-1.11.1.bazel"), ) maybe( http_archive, - name = "vendor_ts__cargo-platform-0.2.0", - sha256 = "84982c6c0ae343635a3a4ee6dedef965513735c8b183caa7289fa6e27399ebd4", + name = "vendor_ts__camino-1.2.2", + sha256 = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48", type = "tar.gz", - urls = ["https://static.crates.io/crates/cargo-platform/0.2.0/download"], - strip_prefix = "cargo-platform-0.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo-platform-0.2.0.bazel"), + urls = ["https://static.crates.io/crates/camino/1.2.2/download"], + strip_prefix = "camino-1.2.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.camino-1.2.2.bazel"), ) maybe( http_archive, - name = "vendor_ts__cargo-util-schemas-0.8.2", - sha256 = "7dc1a6f7b5651af85774ae5a34b4e8be397d9cf4bc063b7e6dbd99a841837830", + name = "vendor_ts__cargo-platform-0.3.2", + sha256 = "87a0c0e6148f11f01f32650a2ea02d532b2ad4e81d8bd41e6e565b5adc5e6082", type = "tar.gz", - urls = ["https://static.crates.io/crates/cargo-util-schemas/0.8.2/download"], - strip_prefix = "cargo-util-schemas-0.8.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo-util-schemas-0.8.2.bazel"), + urls = ["https://static.crates.io/crates/cargo-platform/0.3.2/download"], + strip_prefix = "cargo-platform-0.3.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo-platform-0.3.2.bazel"), ) maybe( http_archive, - name = "vendor_ts__cargo_metadata-0.21.0", - sha256 = "5cfca2aaa699835ba88faf58a06342a314a950d2b9686165e038286c30316868", + name = "vendor_ts__cargo_metadata-0.23.1", + sha256 = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9", type = "tar.gz", - urls = ["https://static.crates.io/crates/cargo_metadata/0.21.0/download"], - strip_prefix = "cargo_metadata-0.21.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo_metadata-0.21.0.bazel"), + urls = ["https://static.crates.io/crates/cargo_metadata/0.23.1/download"], + strip_prefix = "cargo_metadata-0.23.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo_metadata-0.23.1.bazel"), ) maybe( http_archive, - name = "vendor_ts__cc-1.2.37", - sha256 = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44", + name = "vendor_ts__cc-1.2.60", + sha256 = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/cc/1.2.60/download"], + strip_prefix = "cc-1.2.60", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cc-1.2.60.bazel"), ) maybe( http_archive, - name = "vendor_ts__cfg-if-1.0.3", - sha256 = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9", + name = "vendor_ts__cfg-if-1.0.4", + sha256 = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/cfg-if/1.0.4/download"], + strip_prefix = "cfg-if-1.0.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cfg-if-1.0.4.bazel"), ) maybe( @@ -953,12 +985,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__chalk-derive-0.103.0", - sha256 = "eb4899682de915ca7c0b025bdd0a3d34c75fe12184122fda6805a7baddaa293c", + name = "vendor_ts__chacha20-0.10.0", + sha256 = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601", type = "tar.gz", - urls = ["https://static.crates.io/crates/chalk-derive/0.103.0/download"], - strip_prefix = "chalk-derive-0.103.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-derive-0.103.0.bazel"), + urls = ["https://static.crates.io/crates/chacha20/0.10.0/download"], + strip_prefix = "chacha20-0.10.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chacha20-0.10.0.bazel"), ) maybe( @@ -971,16 +1003,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-derive-0.104.0.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__chalk-ir-0.103.0", - sha256 = "90a37d2ab99352b4caca135061e7b4ac67024b648c28ed0b787feec4bea4caed", - type = "tar.gz", - urls = ["https://static.crates.io/crates/chalk-ir/0.103.0/download"], - strip_prefix = "chalk-ir-0.103.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-ir-0.103.0.bazel"), - ) - maybe( http_archive, name = "vendor_ts__chalk-ir-0.104.0", @@ -993,82 +1015,72 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__chalk-recursive-0.103.0", - sha256 = "c855be60e646664bc37c2496d3dc81ca5ef60520930e5e0f0057a0575aff6c19", - type = "tar.gz", - urls = ["https://static.crates.io/crates/chalk-recursive/0.103.0/download"], - strip_prefix = "chalk-recursive-0.103.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-recursive-0.103.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__chalk-solve-0.103.0", - sha256 = "477ac6cdfd2013e9f93b09b036c2b607a67b2e728f4777b8422d55a79e9e3a34", + name = "vendor_ts__chrono-0.4.44", + sha256 = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0", type = "tar.gz", - urls = ["https://static.crates.io/crates/chalk-solve/0.103.0/download"], - strip_prefix = "chalk-solve-0.103.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-solve-0.103.0.bazel"), + urls = ["https://static.crates.io/crates/chrono/0.4.44/download"], + strip_prefix = "chrono-0.4.44", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chrono-0.4.44.bazel"), ) maybe( http_archive, - name = "vendor_ts__chrono-0.4.42", - sha256 = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2", + name = "vendor_ts__clap-4.6.0", + sha256 = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/clap/4.6.0/download"], + strip_prefix = "clap-4.6.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap-4.6.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__clap-4.5.48", - sha256 = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae", + name = "vendor_ts__clap_builder-4.6.0", + sha256 = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f", type = "tar.gz", - urls = ["https://static.crates.io/crates/clap/4.5.48/download"], - strip_prefix = "clap-4.5.48", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap-4.5.48.bazel"), + urls = ["https://static.crates.io/crates/clap_builder/4.6.0/download"], + strip_prefix = "clap_builder-4.6.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_builder-4.6.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__clap_builder-4.5.48", - sha256 = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9", + name = "vendor_ts__clap_derive-4.6.0", + sha256 = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a", type = "tar.gz", - urls = ["https://static.crates.io/crates/clap_builder/4.5.48/download"], - strip_prefix = "clap_builder-4.5.48", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_builder-4.5.48.bazel"), + urls = ["https://static.crates.io/crates/clap_derive/4.6.0/download"], + strip_prefix = "clap_derive-4.6.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_derive-4.6.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__clap_derive-4.5.47", - sha256 = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c", + name = "vendor_ts__clap_lex-1.1.0", + sha256 = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/clap_lex/1.1.0/download"], + strip_prefix = "clap_lex-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_lex-1.1.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__clap_lex-0.7.5", - sha256 = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675", + name = "vendor_ts__cobs-0.3.0", + sha256 = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1", type = "tar.gz", - urls = ["https://static.crates.io/crates/clap_lex/0.7.5/download"], - strip_prefix = "clap_lex-0.7.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_lex-0.7.5.bazel"), + urls = ["https://static.crates.io/crates/cobs/0.3.0/download"], + strip_prefix = "cobs-0.3.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cobs-0.3.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__colorchoice-1.0.4", - sha256 = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75", + name = "vendor_ts__colorchoice-1.0.5", + sha256 = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570", type = "tar.gz", - urls = ["https://static.crates.io/crates/colorchoice/1.0.4/download"], - strip_prefix = "colorchoice-1.0.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.colorchoice-1.0.4.bazel"), + urls = ["https://static.crates.io/crates/colorchoice/1.0.5/download"], + strip_prefix = "colorchoice-1.0.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.colorchoice-1.0.5.bazel"), ) maybe( @@ -1101,6 +1113,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cov-mark-2.1.0.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__cpufeatures-0.3.0", + sha256 = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201", + type = "tar.gz", + urls = ["https://static.crates.io/crates/cpufeatures/0.3.0/download"], + strip_prefix = "cpufeatures-0.3.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cpufeatures-0.3.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__crc32fast-1.5.0", @@ -1111,6 +1133,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crc32fast-1.5.0.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__critical-section-1.2.0", + sha256 = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/critical-section/1.2.0/download"], + strip_prefix = "critical-section-1.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.critical-section-1.2.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__crossbeam-channel-0.5.15", @@ -1163,32 +1195,32 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__darling-0.21.3", - sha256 = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0", + name = "vendor_ts__darling-0.23.0", + sha256 = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d", type = "tar.gz", - urls = ["https://static.crates.io/crates/darling/0.21.3/download"], - strip_prefix = "darling-0.21.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.darling-0.21.3.bazel"), + urls = ["https://static.crates.io/crates/darling/0.23.0/download"], + strip_prefix = "darling-0.23.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.darling-0.23.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__darling_core-0.21.3", - sha256 = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4", + name = "vendor_ts__darling_core-0.23.0", + sha256 = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0", type = "tar.gz", - urls = ["https://static.crates.io/crates/darling_core/0.21.3/download"], - strip_prefix = "darling_core-0.21.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.darling_core-0.21.3.bazel"), + urls = ["https://static.crates.io/crates/darling_core/0.23.0/download"], + strip_prefix = "darling_core-0.23.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.darling_core-0.23.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__darling_macro-0.21.3", - sha256 = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81", + name = "vendor_ts__darling_macro-0.23.0", + sha256 = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d", type = "tar.gz", - urls = ["https://static.crates.io/crates/darling_macro/0.21.3/download"], - strip_prefix = "darling_macro-0.21.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.darling_macro-0.21.3.bazel"), + urls = ["https://static.crates.io/crates/darling_macro/0.23.0/download"], + strip_prefix = "darling_macro-0.23.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.darling_macro-0.23.0.bazel"), ) maybe( @@ -1213,12 +1245,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__displaydoc-0.2.5", - sha256 = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0", + name = "vendor_ts__derive-where-1.6.1", + sha256 = "d08b3a0bcc0d079199cd476b2cae8435016ec11d1c0986c6901c5ac223041534", type = "tar.gz", - urls = ["https://static.crates.io/crates/displaydoc/0.2.5/download"], - strip_prefix = "displaydoc-0.2.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.displaydoc-0.2.5.bazel"), + urls = ["https://static.crates.io/crates/derive-where/1.6.1/download"], + strip_prefix = "derive-where-1.6.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.derive-where-1.6.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__dissimilar-1.0.11", + sha256 = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/dissimilar/1.0.11/download"], + strip_prefix = "dissimilar-1.0.11", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.dissimilar-1.0.11.bazel"), ) maybe( @@ -1261,6 +1303,26 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.either-1.15.0.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__embedded-io-0.4.0", + sha256 = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced", + type = "tar.gz", + urls = ["https://static.crates.io/crates/embedded-io/0.4.0/download"], + strip_prefix = "embedded-io-0.4.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.embedded-io-0.4.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__embedded-io-0.6.1", + sha256 = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/embedded-io/0.6.1/download"], + strip_prefix = "embedded-io-0.6.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.embedded-io-0.6.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__ena-0.14.3", @@ -1351,16 +1413,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.equivalent-1.0.2.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__erased-serde-0.4.6", - sha256 = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7", - type = "tar.gz", - urls = ["https://static.crates.io/crates/erased-serde/0.4.6/download"], - strip_prefix = "erased-serde-0.4.6", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.erased-serde-0.4.6.bazel"), - ) - maybe( http_archive, name = "vendor_ts__figment-0.10.19", @@ -1373,22 +1425,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__find-msvc-tools-0.1.1", - sha256 = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d", + name = "vendor_ts__find-msvc-tools-0.1.9", + sha256 = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/find-msvc-tools/0.1.9/download"], + strip_prefix = "find-msvc-tools-0.1.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.find-msvc-tools-0.1.9.bazel"), ) maybe( http_archive, - name = "vendor_ts__fixedbitset-0.4.2", - sha256 = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80", + name = "vendor_ts__fixedbitset-0.5.7", + sha256 = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99", type = "tar.gz", - urls = ["https://static.crates.io/crates/fixedbitset/0.4.2/download"], - strip_prefix = "fixedbitset-0.4.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fixedbitset-0.4.2.bazel"), + urls = ["https://static.crates.io/crates/fixedbitset/0.5.7/download"], + strip_prefix = "fixedbitset-0.5.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fixedbitset-0.5.7.bazel"), ) maybe( @@ -1401,16 +1453,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.flate2-1.1.2.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__fnv-1.0.7", - sha256 = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1", - type = "tar.gz", - urls = ["https://static.crates.io/crates/fnv/1.0.7/download"], - strip_prefix = "fnv-1.0.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fnv-1.0.7.bazel"), - ) - maybe( http_archive, name = "vendor_ts__foldhash-0.1.5", @@ -1423,22 +1465,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__form_urlencoded-1.2.2", - sha256 = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf", - type = "tar.gz", - 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( - http_archive, - name = "vendor_ts__fs-err-2.11.0", - sha256 = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41", + name = "vendor_ts__fs-err-3.3.0", + sha256 = "73fde052dbfc920003cfd2c8e2c6e6d4cc7c1091538c3a24226cec0665ab08c0", type = "tar.gz", - urls = ["https://static.crates.io/crates/fs-err/2.11.0/download"], - strip_prefix = "fs-err-2.11.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fs-err-2.11.0.bazel"), + urls = ["https://static.crates.io/crates/fs-err/3.3.0/download"], + strip_prefix = "fs-err-3.3.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fs-err-3.3.0.bazel"), ) maybe( @@ -1463,12 +1495,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__getrandom-0.3.3", - sha256 = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4", + name = "vendor_ts__getrandom-0.3.4", + sha256 = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd", type = "tar.gz", - urls = ["https://static.crates.io/crates/getrandom/0.3.3/download"], - strip_prefix = "getrandom-0.3.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.getrandom-0.3.3.bazel"), + urls = ["https://static.crates.io/crates/getrandom/0.3.4/download"], + strip_prefix = "getrandom-0.3.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.getrandom-0.3.4.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__getrandom-0.4.2", + sha256 = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555", + type = "tar.gz", + urls = ["https://static.crates.io/crates/getrandom/0.4.2/download"], + strip_prefix = "getrandom-0.4.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.getrandom-0.4.2.bazel"), ) maybe( @@ -1491,6 +1533,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.globset-0.4.16.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__hash32-0.2.1", + sha256 = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67", + type = "tar.gz", + urls = ["https://static.crates.io/crates/hash32/0.2.1/download"], + strip_prefix = "hash32-0.2.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hash32-0.2.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__hashbrown-0.12.3", @@ -1521,6 +1573,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashbrown-0.15.5.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__hashbrown-0.17.0", + sha256 = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51", + type = "tar.gz", + urls = ["https://static.crates.io/crates/hashbrown/0.17.0/download"], + strip_prefix = "hashbrown-0.17.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashbrown-0.17.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__hashlink-0.10.0", @@ -1531,6 +1593,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashlink-0.10.0.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__heapless-0.7.17", + sha256 = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/heapless/0.7.17/download"], + strip_prefix = "heapless-0.7.17", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.heapless-0.7.17.bazel"), + ) + maybe( http_archive, name = "vendor_ts__heck-0.5.0", @@ -1563,12 +1635,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__home-0.5.11", - sha256 = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf", + name = "vendor_ts__home-0.5.12", + sha256 = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d", type = "tar.gz", - urls = ["https://static.crates.io/crates/home/0.5.11/download"], - strip_prefix = "home-0.5.11", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.home-0.5.11.bazel"), + urls = ["https://static.crates.io/crates/home/0.5.12/download"], + strip_prefix = "home-0.5.12", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.home-0.5.12.bazel"), ) maybe( @@ -1593,72 +1665,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__icu_collections-2.0.0", - sha256 = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47", - type = "tar.gz", - urls = ["https://static.crates.io/crates/icu_collections/2.0.0/download"], - strip_prefix = "icu_collections-2.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.icu_collections-2.0.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__icu_locale_core-2.0.0", - sha256 = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/icu_locale_core/2.0.0/download"], - strip_prefix = "icu_locale_core-2.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.icu_locale_core-2.0.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__icu_normalizer-2.0.0", - sha256 = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979", - type = "tar.gz", - urls = ["https://static.crates.io/crates/icu_normalizer/2.0.0/download"], - strip_prefix = "icu_normalizer-2.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.icu_normalizer-2.0.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__icu_normalizer_data-2.0.0", - sha256 = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3", - type = "tar.gz", - urls = ["https://static.crates.io/crates/icu_normalizer_data/2.0.0/download"], - strip_prefix = "icu_normalizer_data-2.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.icu_normalizer_data-2.0.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__icu_properties-2.0.1", - sha256 = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/icu_properties/2.0.1/download"], - strip_prefix = "icu_properties-2.0.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.icu_properties-2.0.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__icu_properties_data-2.0.1", - sha256 = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632", - type = "tar.gz", - urls = ["https://static.crates.io/crates/icu_properties_data/2.0.1/download"], - strip_prefix = "icu_properties_data-2.0.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.icu_properties_data-2.0.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__icu_provider-2.0.0", - sha256 = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af", + name = "vendor_ts__id-arena-2.3.0", + sha256 = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954", type = "tar.gz", - urls = ["https://static.crates.io/crates/icu_provider/2.0.0/download"], - strip_prefix = "icu_provider-2.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.icu_provider-2.0.0.bazel"), + urls = ["https://static.crates.io/crates/id-arena/2.3.0/download"], + strip_prefix = "id-arena-2.3.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.id-arena-2.3.0.bazel"), ) maybe( @@ -1671,26 +1683,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ident_case-1.0.1.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__idna-1.1.0", - sha256 = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de", - type = "tar.gz", - 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( - http_archive, - name = "vendor_ts__idna_adapter-1.2.1", - sha256 = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344", - type = "tar.gz", - urls = ["https://static.crates.io/crates/idna_adapter/1.2.1/download"], - strip_prefix = "idna_adapter-1.2.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.idna_adapter-1.2.1.bazel"), - ) - maybe( http_archive, name = "vendor_ts__indexmap-1.9.3", @@ -1703,12 +1695,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__indexmap-2.11.4", - sha256 = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5", + name = "vendor_ts__indexmap-2.14.0", + sha256 = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9", type = "tar.gz", - urls = ["https://static.crates.io/crates/indexmap/2.11.4/download"], - strip_prefix = "indexmap-2.11.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.indexmap-2.11.4.bazel"), + urls = ["https://static.crates.io/crates/indexmap/2.14.0/download"], + strip_prefix = "indexmap-2.14.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.indexmap-2.14.0.bazel"), ) maybe( @@ -1753,22 +1745,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__is_terminal_polyfill-1.70.1", - sha256 = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf", + name = "vendor_ts__inventory-0.3.24", + sha256 = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b", type = "tar.gz", - urls = ["https://static.crates.io/crates/is_terminal_polyfill/1.70.1/download"], - strip_prefix = "is_terminal_polyfill-1.70.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.is_terminal_polyfill-1.70.1.bazel"), + urls = ["https://static.crates.io/crates/inventory/0.3.24/download"], + strip_prefix = "inventory-0.3.24", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.inventory-0.3.24.bazel"), ) maybe( http_archive, - name = "vendor_ts__itertools-0.12.1", - sha256 = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569", + name = "vendor_ts__is_terminal_polyfill-1.70.2", + sha256 = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695", type = "tar.gz", - urls = ["https://static.crates.io/crates/itertools/0.12.1/download"], - strip_prefix = "itertools-0.12.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.itertools-0.12.1.bazel"), + urls = ["https://static.crates.io/crates/is_terminal_polyfill/1.70.2/download"], + strip_prefix = "is_terminal_polyfill-1.70.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.is_terminal_polyfill-1.70.2.bazel"), ) maybe( @@ -1783,12 +1775,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__itoa-1.0.15", - sha256 = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c", + name = "vendor_ts__itoa-1.0.18", + sha256 = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682", type = "tar.gz", - urls = ["https://static.crates.io/crates/itoa/1.0.15/download"], - strip_prefix = "itoa-1.0.15", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.itoa-1.0.15.bazel"), + urls = ["https://static.crates.io/crates/itoa/1.0.18/download"], + strip_prefix = "itoa-1.0.18", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.itoa-1.0.18.bazel"), ) maybe( @@ -1863,32 +1855,32 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__libc-0.2.175", - sha256 = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543", + name = "vendor_ts__leb128fmt-0.1.0", + sha256 = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/leb128fmt/0.1.0/download"], + strip_prefix = "leb128fmt-0.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.leb128fmt-0.1.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__line-index-0.1.2", - sha256 = "3e27e0ed5a392a7f5ba0b3808a2afccff16c64933312c84b57618b49d1209bd2", + name = "vendor_ts__libc-0.2.185", + sha256 = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f", type = "tar.gz", - urls = ["https://static.crates.io/crates/line-index/0.1.2/download"], - strip_prefix = "line-index-0.1.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.line-index-0.1.2.bazel"), + urls = ["https://static.crates.io/crates/libc/0.2.185/download"], + strip_prefix = "libc-0.2.185", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.libc-0.2.185.bazel"), ) maybe( http_archive, - name = "vendor_ts__litemap-0.8.0", - sha256 = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956", + name = "vendor_ts__line-index-0.1.2", + sha256 = "3e27e0ed5a392a7f5ba0b3808a2afccff16c64933312c84b57618b49d1209bd2", type = "tar.gz", - urls = ["https://static.crates.io/crates/litemap/0.8.0/download"], - strip_prefix = "litemap-0.8.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.litemap-0.8.0.bazel"), + urls = ["https://static.crates.io/crates/line-index/0.1.2/download"], + strip_prefix = "line-index-0.1.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.line-index-0.1.2.bazel"), ) maybe( @@ -1913,12 +1905,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__log-0.4.28", - sha256 = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432", + name = "vendor_ts__log-0.4.29", + sha256 = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/log/0.4.29/download"], + strip_prefix = "log-0.4.29", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.log-0.4.29.bazel"), ) maybe( @@ -1933,12 +1925,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__memchr-2.7.5", - sha256 = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0", + name = "vendor_ts__memchr-2.8.0", + sha256 = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79", type = "tar.gz", - urls = ["https://static.crates.io/crates/memchr/2.7.5/download"], - strip_prefix = "memchr-2.7.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.memchr-2.7.5.bazel"), + urls = ["https://static.crates.io/crates/memchr/2.8.0/download"], + strip_prefix = "memchr-2.8.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.memchr-2.8.0.bazel"), ) maybe( @@ -1963,12 +1955,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__mio-1.0.4", - sha256 = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c", + name = "vendor_ts__mio-1.2.0", + sha256 = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1", type = "tar.gz", - urls = ["https://static.crates.io/crates/mio/1.0.4/download"], - strip_prefix = "mio-1.0.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.mio-1.0.4.bazel"), + urls = ["https://static.crates.io/crates/mio/1.2.0/download"], + strip_prefix = "mio-1.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.mio-1.2.0.bazel"), ) maybe( @@ -2033,12 +2025,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__num-conv-0.1.0", - sha256 = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9", + name = "vendor_ts__num-conv-0.2.1", + sha256 = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967", type = "tar.gz", - urls = ["https://static.crates.io/crates/num-conv/0.1.0/download"], - strip_prefix = "num-conv-0.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.num-conv-0.1.0.bazel"), + urls = ["https://static.crates.io/crates/num-conv/0.2.1/download"], + strip_prefix = "num-conv-0.2.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.num-conv-0.2.1.bazel"), ) maybe( @@ -2063,12 +2055,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__once_cell-1.21.3", - sha256 = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d", + name = "vendor_ts__num_threads-0.1.7", + sha256 = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9", + type = "tar.gz", + urls = ["https://static.crates.io/crates/num_threads/0.1.7/download"], + strip_prefix = "num_threads-0.1.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.num_threads-0.1.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__once_cell-1.21.4", + sha256 = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50", type = "tar.gz", - urls = ["https://static.crates.io/crates/once_cell/1.21.3/download"], - strip_prefix = "once_cell-1.21.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.once_cell-1.21.3.bazel"), + urls = ["https://static.crates.io/crates/once_cell/1.21.4/download"], + strip_prefix = "once_cell-1.21.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.once_cell-1.21.4.bazel"), ) maybe( @@ -2091,16 +2093,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.oorandom-11.1.5.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__ordered-float-2.10.1", - sha256 = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ordered-float/2.10.1/download"], - strip_prefix = "ordered-float-2.10.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ordered-float-2.10.1.bazel"), - ) - maybe( http_archive, name = "vendor_ts__os_str_bytes-7.1.1", @@ -2111,16 +2103,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.os_str_bytes-7.1.1.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__papaya-0.2.3", - sha256 = "f92dd0b07c53a0a0c764db2ace8c541dc47320dad97c2200c2a637ab9dd2328f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/papaya/0.2.3/download"], - strip_prefix = "papaya-0.2.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.papaya-0.2.3.bazel"), - ) - maybe( http_archive, name = "vendor_ts__parking_lot-0.12.4", @@ -2163,52 +2145,42 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__percent-encoding-2.3.2", - sha256 = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220", + name = "vendor_ts__perf-event-0.4.8", + sha256 = "b4d6393d9238342159080d79b78cb59c67399a8e7ecfa5d410bd614169e4e823", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/perf-event/0.4.8/download"], + strip_prefix = "perf-event-0.4.8", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.perf-event-0.4.8.bazel"), ) maybe( http_archive, - name = "vendor_ts__perf-event-0.4.7", - sha256 = "5396562cd2eaa828445d6d34258ae21ee1eb9d40fe626ca7f51c8dccb4af9d66", + name = "vendor_ts__perf-event-open-sys-4.0.0", + sha256 = "7c44fb1c7651a45a3652c4afc6e754e40b3d6e6556f1487e2b230bfc4f33c2a8", type = "tar.gz", - urls = ["https://static.crates.io/crates/perf-event/0.4.7/download"], - strip_prefix = "perf-event-0.4.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.perf-event-0.4.7.bazel"), + urls = ["https://static.crates.io/crates/perf-event-open-sys/4.0.0/download"], + strip_prefix = "perf-event-open-sys-4.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.perf-event-open-sys-4.0.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__perf-event-open-sys-1.0.1", - sha256 = "ce9bedf5da2c234fdf2391ede2b90fabf585355f33100689bc364a3ea558561a", + name = "vendor_ts__petgraph-0.8.3", + sha256 = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455", type = "tar.gz", - urls = ["https://static.crates.io/crates/perf-event-open-sys/1.0.1/download"], - strip_prefix = "perf-event-open-sys-1.0.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.perf-event-open-sys-1.0.1.bazel"), + urls = ["https://static.crates.io/crates/petgraph/0.8.3/download"], + strip_prefix = "petgraph-0.8.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.petgraph-0.8.3.bazel"), ) maybe( http_archive, - name = "vendor_ts__petgraph-0.6.5", - sha256 = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db", + name = "vendor_ts__pin-project-lite-0.2.17", + sha256 = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd", type = "tar.gz", - urls = ["https://static.crates.io/crates/petgraph/0.6.5/download"], - strip_prefix = "petgraph-0.6.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.petgraph-0.6.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__pin-project-lite-0.2.16", - sha256 = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/pin-project-lite/0.2.16/download"], - strip_prefix = "pin-project-lite-0.2.16", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.pin-project-lite-0.2.16.bazel"), + urls = ["https://static.crates.io/crates/pin-project-lite/0.2.17/download"], + strip_prefix = "pin-project-lite-0.2.17", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.pin-project-lite-0.2.17.bazel"), ) maybe( @@ -2233,12 +2205,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__potential_utf-0.1.3", - sha256 = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a", + name = "vendor_ts__postcard-1.1.3", + sha256 = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/postcard/1.1.3/download"], + strip_prefix = "postcard-1.1.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.postcard-1.1.3.bazel"), ) maybe( @@ -2253,22 +2225,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__ppv-lite86-0.2.21", - sha256 = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9", + name = "vendor_ts__prettyplease-0.2.37", + sha256 = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b", type = "tar.gz", - urls = ["https://static.crates.io/crates/ppv-lite86/0.2.21/download"], - strip_prefix = "ppv-lite86-0.2.21", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ppv-lite86-0.2.21.bazel"), + urls = ["https://static.crates.io/crates/prettyplease/0.2.37/download"], + strip_prefix = "prettyplease-0.2.37", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.prettyplease-0.2.37.bazel"), ) maybe( http_archive, - name = "vendor_ts__proc-macro2-1.0.101", - sha256 = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de", + name = "vendor_ts__proc-macro2-1.0.106", + sha256 = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/proc-macro2/1.0.106/download"], + strip_prefix = "proc-macro2-1.0.106", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.proc-macro2-1.0.106.bazel"), ) maybe( @@ -2283,12 +2255,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__quote-1.0.41", - sha256 = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1", + name = "vendor_ts__quote-1.0.45", + sha256 = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924", type = "tar.gz", - urls = ["https://static.crates.io/crates/quote/1.0.41/download"], - strip_prefix = "quote-1.0.41", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.quote-1.0.41.bazel"), + urls = ["https://static.crates.io/crates/quote/1.0.45/download"], + strip_prefix = "quote-1.0.45", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.quote-1.0.45.bazel"), ) maybe( @@ -2303,372 +2275,432 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_abi-0.123.0", - sha256 = "f18c877575c259d127072e9bfc41d985202262fb4d6bfdae3d1252147c2562c2", + name = "vendor_ts__r-efi-6.0.0", + sha256 = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_abi/0.123.0/download"], - strip_prefix = "ra-ap-rustc_abi-0.123.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_abi-0.123.0.bazel"), + urls = ["https://static.crates.io/crates/r-efi/6.0.0/download"], + strip_prefix = "r-efi-6.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.r-efi-6.0.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_hashes-0.123.0", - sha256 = "2439ed1df3472443133b66949f81080dff88089b42f825761455463709ee1cad", + name = "vendor_ts__ra-ap-rustc_abi-0.143.0", + sha256 = "1d49dbe5d570793b3c3227972a6ac85fc3e830f09b32c3cb3b68cfceebad3b0a", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_hashes/0.123.0/download"], - strip_prefix = "ra-ap-rustc_hashes-0.123.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_hashes-0.123.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_abi/0.143.0/download"], + strip_prefix = "ra-ap-rustc_abi-0.143.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_abi-0.143.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_index-0.123.0", - sha256 = "57a24fe0be21be1f8ebc21dcb40129214fb4cefb0f2753f3d46b6dbe656a1a45", + name = "vendor_ts__ra-ap-rustc_ast_ir-0.143.0", + sha256 = "cd0956db62c264a899d15667993cbbd2e8f0b02108712217e2579c61ac30b94b", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_index/0.123.0/download"], - strip_prefix = "ra-ap-rustc_index-0.123.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index-0.123.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_ast_ir/0.143.0/download"], + strip_prefix = "ra-ap-rustc_ast_ir-0.143.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_ast_ir-0.143.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_index_macros-0.123.0", - sha256 = "844a27ddcad0116facae2df8e741fd788662cf93dc13029cd864f2b8013b81f9", + name = "vendor_ts__ra-ap-rustc_hashes-0.143.0", + sha256 = "7df512084c24f4c96c8cc9a59cbd264301efbc8913d3759b065398024af316c9", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_index_macros/0.123.0/download"], - strip_prefix = "ra-ap-rustc_index_macros-0.123.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index_macros-0.123.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_hashes/0.143.0/download"], + strip_prefix = "ra-ap-rustc_hashes-0.143.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_hashes-0.143.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_lexer-0.121.0", - sha256 = "22944e31fb91e9b3e75bcbc91e37d958b8c0825a6160927f2856831d2ce83b36", + name = "vendor_ts__ra-ap-rustc_index-0.143.0", + sha256 = "bca3a49a928d38ba7927605e5909b6abe77d09ff359e4695c070c3f91d69cc8a", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_lexer/0.121.0/download"], - strip_prefix = "ra-ap-rustc_lexer-0.121.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_lexer-0.121.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_index/0.143.0/download"], + strip_prefix = "ra-ap-rustc_index-0.143.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index-0.143.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_lexer-0.123.0", - sha256 = "2b734cfcb577d09877799a22742f1bd398be6c00bc428d9de56d48d11ece5771", + name = "vendor_ts__ra-ap-rustc_index_macros-0.143.0", + sha256 = "4463e908a62c64c2a65c1966c2f4995d0e1f8b7dfc85a8b8de2562edf3d89070", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_lexer/0.123.0/download"], - strip_prefix = "ra-ap-rustc_lexer-0.123.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_lexer-0.123.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_index_macros/0.143.0/download"], + strip_prefix = "ra-ap-rustc_index_macros-0.143.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index_macros-0.143.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_parse_format-0.121.0", - sha256 = "81057891bc2063ad9e353f29462fbc47a0f5072560af34428ae9313aaa5e9d97", + name = "vendor_ts__ra-ap-rustc_lexer-0.143.0", + sha256 = "228e01e1b237adb4bd8793487e1c37019c1e526a8f93716d99602301be267056", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_parse_format/0.121.0/download"], - strip_prefix = "ra-ap-rustc_parse_format-0.121.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_parse_format-0.121.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_lexer/0.143.0/download"], + strip_prefix = "ra-ap-rustc_lexer-0.143.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_lexer-0.143.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_pattern_analysis-0.123.0", - sha256 = "75b0ee1f059b9dea0818c6c7267478926eee95ba4c7dcf89c8db32fa165d3904", + name = "vendor_ts__ra-ap-rustc_next_trait_solver-0.143.0", + sha256 = "10d6f91143011d474bb844d268b0784c6a4c6db57743558b83f5ad34511627f1", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_pattern_analysis/0.123.0/download"], - strip_prefix = "ra-ap-rustc_pattern_analysis-0.123.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_pattern_analysis-0.123.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_next_trait_solver/0.143.0/download"], + strip_prefix = "ra-ap-rustc_next_trait_solver-0.143.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_next_trait_solver-0.143.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_base_db-0.0.301", - sha256 = "e876bb2c3e52a8d4e6684526a2d4e81f9d028b939ee4dc5dc775fe10deb44d59", + name = "vendor_ts__ra-ap-rustc_parse_format-0.143.0", + sha256 = "37fa8effbc436c0ddd9d7b1421aa3cccf8b94566c841c4e4aa3e09063b8f423f", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_parse_format/0.143.0/download"], + strip_prefix = "ra-ap-rustc_parse_format-0.143.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_parse_format-0.143.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_cfg-0.0.301", - sha256 = "3a0b56eb4536ce6d2431932c4d337aeeaf7bb22c9249b38cbe80677b5881228f", + name = "vendor_ts__ra-ap-rustc_pattern_analysis-0.143.0", + sha256 = "883c843fc27847ad03b8e772dd4a2d2728af4333a6d6821a22dfcfe7136dff3e", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_pattern_analysis/0.143.0/download"], + strip_prefix = "ra-ap-rustc_pattern_analysis-0.143.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_pattern_analysis-0.143.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_edition-0.0.301", - sha256 = "1bdc6cbe42c63ca78611bae82bfc8db24864f33dccc813697c5fde43a0907285", + name = "vendor_ts__ra-ap-rustc_type_ir-0.143.0", + sha256 = "a86e33c46b2b261a173b23f207461a514812a8b2d2d7935bbc685f733eacce10", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_type_ir/0.143.0/download"], + strip_prefix = "ra-ap-rustc_type_ir-0.143.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_type_ir-0.143.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir-0.0.301", - sha256 = "ebffdc134eccabc17209d7760cfff7fd12ed18ab6e21188c5e084b97aa38504c", + name = "vendor_ts__ra-ap-rustc_type_ir_macros-0.143.0", + sha256 = "15034c2fcaa5cf302aea6db20eda0f71fffeb0b372d6073cc50f940e974a2a47", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_type_ir_macros/0.143.0/download"], + strip_prefix = "ra-ap-rustc_type_ir_macros-0.143.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_type_ir_macros-0.143.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir_def-0.0.301", - sha256 = "81d2337ef59550392d42aa997aa1105a3d6d1c2b3a583c777786bc4a0a074fd5", + name = "vendor_ts__ra_ap_base_db-0.0.328", + sha256 = "b1567168e7c7b50acf2ffb87bde8937986d4f41c777a2c308298ede9d555c96c", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_base_db/0.0.328/download"], + strip_prefix = "ra_ap_base_db-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_base_db-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir_expand-0.0.301", - sha256 = "97cf8ececb2743a819d8299a408e17f164dd1a1004d65936b3d5493b55330326", + name = "vendor_ts__ra_ap_cfg-0.0.328", + sha256 = "1e1fc8d53014b0ec4c06c9dbf0a810ccd67b3a96de4ef06bd1a248c2295b6a37", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_cfg/0.0.328/download"], + strip_prefix = "ra_ap_cfg-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_cfg-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir_ty-0.0.301", - sha256 = "bc004e1099ba766a61500c27d34eb5cd336430d0a89a9620315a90d7a202a73a", + name = "vendor_ts__ra_ap_edition-0.0.328", + sha256 = "627a8ce8e870632395b7bf053c93039a3d91dda744ccae166ac83650572cfaa2", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_edition/0.0.328/download"], + strip_prefix = "ra_ap_edition-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_edition-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_ide_db-0.0.301", - sha256 = "d2acb572d6dbeb1c96d0339890ba91298b8f5f0ab22648da4ee2b4ab77dbc3fe", + name = "vendor_ts__ra_ap_hir-0.0.328", + sha256 = "b77616ef81f690a3eba4befd32112780b99f052676b0e7686a22bf79f3fbe2a8", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_hir/0.0.328/download"], + strip_prefix = "ra_ap_hir-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_intern-0.0.301", - sha256 = "14586c2c4781b69fdd0c505972d9bff8c162a8740537a3ee506faff686d9a20d", + name = "vendor_ts__ra_ap_hir_def-0.0.328", + sha256 = "81504dd727efbaf48704a9c0e18e6491cb9848428376ad37146f37f63571ab3c", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_hir_def/0.0.328/download"], + strip_prefix = "ra_ap_hir_def-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_def-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_load-cargo-0.0.301", - sha256 = "50ce5546b3e3414507ab4d12348d0a28748062e33a1448895c68466d0b015503", + name = "vendor_ts__ra_ap_hir_expand-0.0.328", + sha256 = "9980623345a88d4431ce80331e640c494e2e59303e82a2cb1290b4684efdc6e5", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_hir_expand/0.0.328/download"], + strip_prefix = "ra_ap_hir_expand-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_expand-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_mbe-0.0.301", - sha256 = "67333c6405797cb64aafb994b9a179157b30beeda2352e203e800be2b184a22d", + name = "vendor_ts__ra_ap_hir_ty-0.0.328", + sha256 = "b822d1b9f0168281bbba34e0c5abada891fa9fc5e0b54e86493e8b075a877973", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_hir_ty/0.0.328/download"], + strip_prefix = "ra_ap_hir_ty-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_ty-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_parser-0.0.301", - sha256 = "3a3b92b8b147c0826b83e70ad44e3c98e94201fc93e1f09396c43b4d7958c22a", + name = "vendor_ts__ra_ap_ide_db-0.0.328", + sha256 = "0e250964a32be6c74f1f72e0fd8aea08aaed0535d85a7fd315fe442942185da0", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_ide_db/0.0.328/download"], + strip_prefix = "ra_ap_ide_db-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_ide_db-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_paths-0.0.301", - sha256 = "d4991f3d57fac0def7822bebfeb159c8d7b58c824bf82044b765c54f2c0971e2", + name = "vendor_ts__ra_ap_intern-0.0.328", + sha256 = "df7edf9d14d093b4314b43ed75eaf56d47d870a09b8d0e0e67d17919c30bfb0f", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_intern/0.0.328/download"], + strip_prefix = "ra_ap_intern-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_intern-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_proc_macro_api-0.0.301", - sha256 = "45db9e2df587d56f0738afa89fb2c100ff7c1e9cbe49e07f6a8b62342832211b", + name = "vendor_ts__ra_ap_load-cargo-0.0.328", + sha256 = "184cdaabfb66948938aa4b73ee24f7fa57c1292292c1d87bcad2c616cbd254ea", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_load-cargo/0.0.328/download"], + strip_prefix = "ra_ap_load-cargo-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_load-cargo-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_profile-0.0.301", - sha256 = "19981637b8ee4160e228c815a7fef3944b5c0555d6af41a931be92d68978bc6c", + name = "vendor_ts__ra_ap_macros-0.0.328", + sha256 = "fd338f982b2f7438ee89ca2429ad7181f2f0751fa6b98d8275905c97e2fb8361", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_macros/0.0.328/download"], + strip_prefix = "ra_ap_macros-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_macros-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_project_model-0.0.301", - sha256 = "5bda0769fd6ca949fdd5917acb68ddc2c143745614ddd94ef38b376838611cf8", + name = "vendor_ts__ra_ap_mbe-0.0.328", + sha256 = "81d4c7114f2363c05b6dc7f5f6cdd6c9d6a1ba63410b0cdc80c81d1414da7c72", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_mbe/0.0.328/download"], + strip_prefix = "ra_ap_mbe-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_mbe-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_query-group-macro-0.0.301", - sha256 = "5f182a4b05f004eabaa83250a5de7ea3a13a92c88f3cbe98bfa1880cd9fbce0a", + name = "vendor_ts__ra_ap_parser-0.0.328", + sha256 = "c9851f3b6e93971e6c3957966a07154bc35e0f91c0a6980ad71965620df6f737", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_parser/0.0.328/download"], + strip_prefix = "ra_ap_parser-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_parser-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_span-0.0.301", - sha256 = "ca6f9fa2de07f5cccf431674b90e82c1fe1ea2339db3b3869eec44d135de09a4", + name = "vendor_ts__ra_ap_paths-0.0.328", + sha256 = "506bbef9963ca9275dd50f5876d68e32a58d47a369ea10bce2be1c758b081c42", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_paths/0.0.328/download"], + strip_prefix = "ra_ap_paths-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_paths-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_stdx-0.0.301", - sha256 = "aa770adb32896fcba934b464ac3bd179163ba2b0766e275eed5b4e262e08492b", + name = "vendor_ts__ra_ap_proc_macro_api-0.0.328", + sha256 = "18e0229d5c7daa016a8f4f735194e68baf34ca18b73982ae036a8217874f32e9", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_proc_macro_api/0.0.328/download"], + strip_prefix = "ra_ap_proc_macro_api-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_proc_macro_api-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_syntax-0.0.301", - sha256 = "6e9e1393281ad5c635239d353ed3cfbf28c8d0af03d0c61a3b24b31d1143b17f", + name = "vendor_ts__ra_ap_profile-0.0.328", + sha256 = "b251c30d8e4df3902a92d10c4899e43403921f72aef12afa2f027a77e4898950", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_profile/0.0.328/download"], + strip_prefix = "ra_ap_profile-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_profile-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_syntax-bridge-0.0.301", - sha256 = "684e6ff1008ee5340335888f0453d94bb38950f110059a51f1818c7f6a56a807", + name = "vendor_ts__ra_ap_project_model-0.0.328", + sha256 = "2b04624412e45c7b0f792859be553182ea2360d8a24bf7162ca212840e683a24", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_project_model/0.0.328/download"], + strip_prefix = "ra_ap_project_model-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_project_model-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_toolchain-0.0.301", - sha256 = "61969c5f72af03a9837e077c2d939d87a5c863623725c461777c352664a3bb03", + name = "vendor_ts__ra_ap_query-group-macro-0.0.328", + sha256 = "770079ca5addde33d31b7f3fa8d399f0dc29c26f69642a9d5c2a5e623d8af64d", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_query-group-macro/0.0.328/download"], + strip_prefix = "ra_ap_query-group-macro-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_query-group-macro-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_tt-0.0.301", - sha256 = "fb87c7b35572c18a580ea811e970b94875fad5ac7cfa8644266a59081044f959", + name = "vendor_ts__ra_ap_span-0.0.328", + sha256 = "80a523bc8c85155ccd1db35b6855d37729d339c572b7fc0801c459bb8218976b", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_span/0.0.328/download"], + strip_prefix = "ra_ap_span-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_span-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_vfs-0.0.301", - sha256 = "6c174d6b9b7a7f54687df7e00c3e75ed6f082a7943a9afb1d54f33c0c12773de", + name = "vendor_ts__ra_ap_stdx-0.0.328", + sha256 = "eb22b95e21d08060860056c86af1b47b2cecbac5422baa112d9d138e97c3671a", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_stdx/0.0.328/download"], + strip_prefix = "ra_ap_stdx-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_stdx-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_vfs-notify-0.0.301", - sha256 = "04f6fce8d47c7ce9b8f2cd0e5a55f8fc4878d6043e61f46cde4391d3a5c6086f", + name = "vendor_ts__ra_ap_syntax-0.0.328", + sha256 = "ba3d9c469b5635401647b69e01a9930746f08a3cac51d04ad5ae99e66bdd643f", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_syntax/0.0.328/download"], + strip_prefix = "ra_ap_syntax-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__rand-0.9.2", - sha256 = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1", + name = "vendor_ts__ra_ap_syntax-bridge-0.0.328", + sha256 = "b4d3f2e2a1836eeedc2ed2810ece4cdf7ea42284f71b7031eac8448c1cb95b09", type = "tar.gz", - urls = ["https://static.crates.io/crates/rand/0.9.2/download"], - strip_prefix = "rand-0.9.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rand-0.9.2.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_syntax-bridge/0.0.328/download"], + strip_prefix = "ra_ap_syntax-bridge-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-bridge-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__rand_chacha-0.9.0", - sha256 = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb", + name = "vendor_ts__ra_ap_test_fixture-0.0.328", + sha256 = "21d6d353373b4f28f2236ed7843bcee0e4dd0e6a12b339da874460bbefd070ab", type = "tar.gz", - urls = ["https://static.crates.io/crates/rand_chacha/0.9.0/download"], - strip_prefix = "rand_chacha-0.9.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rand_chacha-0.9.0.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_test_fixture/0.0.328/download"], + strip_prefix = "ra_ap_test_fixture-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_test_fixture-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__rand_core-0.9.3", - sha256 = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38", + name = "vendor_ts__ra_ap_test_utils-0.0.328", + sha256 = "57d10cbb0402abee7034de5d90ddf7e380d1e21ad0e1dcd2db92c3c87df78723", type = "tar.gz", - urls = ["https://static.crates.io/crates/rand_core/0.9.3/download"], - strip_prefix = "rand_core-0.9.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rand_core-0.9.3.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_test_utils/0.0.328/download"], + strip_prefix = "ra_ap_test_utils-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_test_utils-0.0.328.bazel"), ) maybe( http_archive, - name = "vendor_ts__rayon-1.11.0", - sha256 = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f", + name = "vendor_ts__ra_ap_toolchain-0.0.328", + sha256 = "2fed946c88a9dfa93de7a376a06493c5377a1052ac666ab9e1155f4ea57271c9", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/ra_ap_toolchain/0.0.328/download"], + strip_prefix = "ra_ap_toolchain-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_toolchain-0.0.328.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_tt-0.0.328", + sha256 = "96dfc20add2675d38240a7815755b54f514d91b9dc0336cb3d024901af4faeef", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_tt/0.0.328/download"], + strip_prefix = "ra_ap_tt-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_tt-0.0.328.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_vfs-0.0.328", + sha256 = "d69bc10b59435e4d989d10bc0b602a5bd70e1dcc2c5d8513b10585d9e778b440", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_vfs/0.0.328/download"], + strip_prefix = "ra_ap_vfs-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-0.0.328.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_vfs-notify-0.0.328", + sha256 = "07f7f31bb0c5744ba1fe1b1460eeb62274110dfb94e4b6719cf2e7df9410032d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_vfs-notify/0.0.328/download"], + strip_prefix = "ra_ap_vfs-notify-0.0.328", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-notify-0.0.328.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rand-0.10.1", + sha256 = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rand/0.10.1/download"], + strip_prefix = "rand-0.10.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rand-0.10.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rand_core-0.10.1", + sha256 = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rand_core/0.10.1/download"], + strip_prefix = "rand_core-0.10.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rand_core-0.10.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rayon-1.12.0", + sha256 = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rayon/1.12.0/download"], + strip_prefix = "rayon-1.12.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rayon-1.12.0.bazel"), ) maybe( @@ -2713,42 +2745,42 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__regex-1.11.3", - sha256 = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c", + name = "vendor_ts__regex-1.12.3", + sha256 = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276", type = "tar.gz", - urls = ["https://static.crates.io/crates/regex/1.11.3/download"], - strip_prefix = "regex-1.11.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-1.11.3.bazel"), + urls = ["https://static.crates.io/crates/regex/1.12.3/download"], + strip_prefix = "regex-1.12.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-1.12.3.bazel"), ) maybe( http_archive, - name = "vendor_ts__regex-automata-0.4.11", - sha256 = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad", + name = "vendor_ts__regex-automata-0.4.14", + sha256 = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f", type = "tar.gz", - urls = ["https://static.crates.io/crates/regex-automata/0.4.11/download"], - strip_prefix = "regex-automata-0.4.11", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-automata-0.4.11.bazel"), + urls = ["https://static.crates.io/crates/regex-automata/0.4.14/download"], + strip_prefix = "regex-automata-0.4.14", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-automata-0.4.14.bazel"), ) maybe( http_archive, - name = "vendor_ts__regex-syntax-0.8.6", - sha256 = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001", + name = "vendor_ts__regex-syntax-0.8.10", + sha256 = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/regex-syntax/0.8.10/download"], + strip_prefix = "regex-syntax-0.8.10", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-syntax-0.8.10.bazel"), ) maybe( http_archive, - name = "vendor_ts__rowan-0.15.15", - sha256 = "32a58fa8a7ccff2aec4f39cc45bf5f985cec7125ab271cf681c279fd00192b49", + name = "vendor_ts__rowan-0.15.18", + sha256 = "62f509095fc8cc0c8c8564016771d458079c11a8d857e65861f045145c0d3208", type = "tar.gz", - urls = ["https://static.crates.io/crates/rowan/0.15.15/download"], - strip_prefix = "rowan-0.15.15", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rowan-0.15.15.bazel"), + urls = ["https://static.crates.io/crates/rowan/0.15.18/download"], + strip_prefix = "rowan-0.15.18", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rowan-0.15.18.bazel"), ) maybe( @@ -2763,12 +2795,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__rustc-hash-2.1.1", - sha256 = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d", + name = "vendor_ts__rustc-hash-2.1.2", + sha256 = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe", type = "tar.gz", - urls = ["https://static.crates.io/crates/rustc-hash/2.1.1/download"], - strip_prefix = "rustc-hash-2.1.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-hash-2.1.1.bazel"), + urls = ["https://static.crates.io/crates/rustc-hash/2.1.2/download"], + strip_prefix = "rustc-hash-2.1.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-hash-2.1.2.bazel"), ) maybe( @@ -2781,6 +2813,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-literal-escaper-0.0.4.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__rustc-literal-escaper-0.0.5", + sha256 = "e4ee29da77c5a54f42697493cd4c9b9f31b74df666a6c04dfc4fde77abe0438b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rustc-literal-escaper/0.0.5/download"], + strip_prefix = "rustc-literal-escaper-0.0.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-literal-escaper-0.0.5.bazel"), + ) + maybe( http_archive, name = "vendor_ts__rustc-stable-hash-0.1.2", @@ -2801,6 +2843,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__rustc_version-0.4.1", + sha256 = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rustc_version/0.4.1/download"], + strip_prefix = "rustc_version-0.4.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc_version-0.4.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__rustversion-1.0.22", @@ -2823,32 +2875,32 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__salsa-0.23.0", - sha256 = "2e235afdb8e510f38a07138fbe5a0b64691894358a9c0cbd813b1aade110efc9", + name = "vendor_ts__salsa-0.25.2", + sha256 = "e2e2aa2fca57727371eeafc975acc8e6f4c52f8166a78035543f6ee1c74c2dcc", type = "tar.gz", - urls = ["https://static.crates.io/crates/salsa/0.23.0/download"], - strip_prefix = "salsa-0.23.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-0.23.0.bazel"), + urls = ["https://static.crates.io/crates/salsa/0.25.2/download"], + strip_prefix = "salsa-0.25.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-0.25.2.bazel"), ) maybe( http_archive, - name = "vendor_ts__salsa-macro-rules-0.23.0", - sha256 = "2edb86a7e9c91f6d30c9ce054312721dbe773a162db27bbfae834d16177b30ce", + name = "vendor_ts__salsa-macro-rules-0.25.2", + sha256 = "1bfc2a1e7bf06964105515451d728f2422dedc3a112383324a00b191a5c397a3", type = "tar.gz", - urls = ["https://static.crates.io/crates/salsa-macro-rules/0.23.0/download"], - strip_prefix = "salsa-macro-rules-0.23.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macro-rules-0.23.0.bazel"), + urls = ["https://static.crates.io/crates/salsa-macro-rules/0.25.2/download"], + strip_prefix = "salsa-macro-rules-0.25.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macro-rules-0.25.2.bazel"), ) maybe( http_archive, - name = "vendor_ts__salsa-macros-0.23.0", - sha256 = "d0778d6e209051bc4e75acfe83bcd7848601ec3dbe9c3dbb982829020e9128af", + name = "vendor_ts__salsa-macros-0.25.2", + sha256 = "3d844c1aa34946da46af683b5c27ec1088a3d9d84a2b837a108223fd830220e1", type = "tar.gz", - urls = ["https://static.crates.io/crates/salsa-macros/0.23.0/download"], - strip_prefix = "salsa-macros-0.23.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macros-0.23.0.bazel"), + urls = ["https://static.crates.io/crates/salsa-macros/0.25.2/download"], + strip_prefix = "salsa-macros-0.25.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macros-0.25.2.bazel"), ) maybe( @@ -2881,16 +2933,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.schemars-1.0.4.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__scoped-tls-1.0.1", - sha256 = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294", - type = "tar.gz", - urls = ["https://static.crates.io/crates/scoped-tls/1.0.1/download"], - strip_prefix = "scoped-tls-1.0.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.scoped-tls-1.0.1.bazel"), - ) - maybe( http_archive, name = "vendor_ts__scopeguard-1.2.0", @@ -2903,22 +2945,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__seize-0.5.0", - sha256 = "e4b8d813387d566f627f3ea1b914c068aac94c40ae27ec43f5f33bde65abefe7", + name = "vendor_ts__semver-1.0.28", + sha256 = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd", type = "tar.gz", - urls = ["https://static.crates.io/crates/seize/0.5.0/download"], - strip_prefix = "seize-0.5.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.seize-0.5.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__semver-1.0.26", - sha256 = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0", - type = "tar.gz", - urls = ["https://static.crates.io/crates/semver/1.0.26/download"], - strip_prefix = "semver-1.0.26", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.semver-1.0.26.bazel"), + urls = ["https://static.crates.io/crates/semver/1.0.28/download"], + strip_prefix = "semver-1.0.28", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.semver-1.0.28.bazel"), ) maybe( @@ -2931,26 +2963,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde-1.0.228.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__serde-untagged-0.1.8", - sha256 = "34836a629bcbc6f1afdf0907a744870039b1e14c0561cb26094fa683b158eff3", - type = "tar.gz", - 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( - http_archive, - name = "vendor_ts__serde-value-0.7.0", - sha256 = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/serde-value/0.7.0/download"], - strip_prefix = "serde-value-0.7.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde-value-0.7.0.bazel"), - ) - maybe( http_archive, name = "vendor_ts__serde_core-1.0.228", @@ -2973,52 +2985,42 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__serde_json-1.0.145", - sha256 = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_json/1.0.145/download"], - strip_prefix = "serde_json-1.0.145", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_json-1.0.145.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__serde_spanned-0.6.9", - sha256 = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3", + name = "vendor_ts__serde_json-1.0.149", + sha256 = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86", type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_spanned/0.6.9/download"], - strip_prefix = "serde_spanned-0.6.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_spanned-0.6.9.bazel"), + urls = ["https://static.crates.io/crates/serde_json/1.0.149/download"], + strip_prefix = "serde_json-1.0.149", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_json-1.0.149.bazel"), ) maybe( http_archive, - name = "vendor_ts__serde_spanned-1.0.2", - sha256 = "5417783452c2be558477e104686f7de5dae53dba813c28435e0e70f82d9b04ee", + name = "vendor_ts__serde_spanned-1.1.1", + sha256 = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26", type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_spanned/1.0.2/download"], - strip_prefix = "serde_spanned-1.0.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_spanned-1.0.2.bazel"), + urls = ["https://static.crates.io/crates/serde_spanned/1.1.1/download"], + strip_prefix = "serde_spanned-1.1.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_spanned-1.1.1.bazel"), ) maybe( http_archive, - name = "vendor_ts__serde_with-3.14.1", - sha256 = "c522100790450cf78eeac1507263d0a350d4d5b30df0c8e1fe051a10c22b376e", + name = "vendor_ts__serde_with-3.18.0", + sha256 = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f", type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_with/3.14.1/download"], - strip_prefix = "serde_with-3.14.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_with-3.14.1.bazel"), + urls = ["https://static.crates.io/crates/serde_with/3.18.0/download"], + strip_prefix = "serde_with-3.18.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_with-3.18.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__serde_with_macros-3.14.1", - sha256 = "327ada00f7d64abaac1e55a6911e90cf665aa051b9a561c7006c157f4633135e", + name = "vendor_ts__serde_with_macros-3.18.0", + sha256 = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65", type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_with_macros/3.14.1/download"], - strip_prefix = "serde_with_macros-3.14.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_with_macros-3.14.1.bazel"), + urls = ["https://static.crates.io/crates/serde_with_macros/3.18.0/download"], + strip_prefix = "serde_with_macros-3.18.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_with_macros-3.18.0.bazel"), ) maybe( @@ -3063,22 +3065,32 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__smol_str-0.3.2", - sha256 = "9676b89cd56310a87b93dec47b11af744f34d5fc9f367b829474eec0a891350d", + name = "vendor_ts__smol_str-0.3.6", + sha256 = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523", type = "tar.gz", - urls = ["https://static.crates.io/crates/smol_str/0.3.2/download"], - strip_prefix = "smol_str-0.3.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.smol_str-0.3.2.bazel"), + urls = ["https://static.crates.io/crates/smol_str/0.3.6/download"], + strip_prefix = "smol_str-0.3.6", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.smol_str-0.3.6.bazel"), ) maybe( http_archive, - name = "vendor_ts__stable_deref_trait-1.2.0", - sha256 = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3", + name = "vendor_ts__spin-0.9.8", + sha256 = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67", type = "tar.gz", - urls = ["https://static.crates.io/crates/stable_deref_trait/1.2.0/download"], - strip_prefix = "stable_deref_trait-1.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.stable_deref_trait-1.2.0.bazel"), + urls = ["https://static.crates.io/crates/spin/0.9.8/download"], + strip_prefix = "spin-0.9.8", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.spin-0.9.8.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__stable_deref_trait-1.2.1", + sha256 = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596", + type = "tar.gz", + urls = ["https://static.crates.io/crates/stable_deref_trait/1.2.1/download"], + strip_prefix = "stable_deref_trait-1.2.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.stable_deref_trait-1.2.1.bazel"), ) maybe( @@ -3103,12 +3115,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__syn-2.0.106", - sha256 = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6", + name = "vendor_ts__syn-2.0.117", + sha256 = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/syn/2.0.117/download"], + strip_prefix = "syn-2.0.117", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.syn-2.0.117.bazel"), ) maybe( @@ -3153,22 +3165,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__thiserror-2.0.16", - sha256 = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0", + name = "vendor_ts__thiserror-2.0.18", + sha256 = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/thiserror/2.0.18/download"], + strip_prefix = "thiserror-2.0.18", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-2.0.18.bazel"), ) maybe( http_archive, - name = "vendor_ts__thiserror-impl-2.0.16", - sha256 = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960", + name = "vendor_ts__thiserror-impl-2.0.18", + sha256 = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/thiserror-impl/2.0.18/download"], + strip_prefix = "thiserror-impl-2.0.18", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-impl-2.0.18.bazel"), ) maybe( @@ -3183,152 +3195,122 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__time-0.3.43", - sha256 = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031", - type = "tar.gz", - 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.6", - sha256 = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b", + name = "vendor_ts__time-0.3.47", + sha256 = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/time/0.3.47/download"], + strip_prefix = "time-0.3.47", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-0.3.47.bazel"), ) maybe( http_archive, - name = "vendor_ts__time-macros-0.2.24", - sha256 = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3", + name = "vendor_ts__time-core-0.1.8", + sha256 = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/time-core/0.1.8/download"], + strip_prefix = "time-core-0.1.8", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-core-0.1.8.bazel"), ) maybe( http_archive, - name = "vendor_ts__tinystr-0.8.1", - sha256 = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b", + name = "vendor_ts__time-macros-0.2.27", + sha256 = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215", type = "tar.gz", - urls = ["https://static.crates.io/crates/tinystr/0.8.1/download"], - strip_prefix = "tinystr-0.8.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tinystr-0.8.1.bazel"), + urls = ["https://static.crates.io/crates/time-macros/0.2.27/download"], + strip_prefix = "time-macros-0.2.27", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-macros-0.2.27.bazel"), ) maybe( http_archive, - name = "vendor_ts__toml-0.8.23", - sha256 = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362", + name = "vendor_ts__toml-0.9.12-spec-1.1.0", + sha256 = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863", type = "tar.gz", - urls = ["https://static.crates.io/crates/toml/0.8.23/download"], - strip_prefix = "toml-0.8.23", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml-0.8.23.bazel"), + urls = ["https://static.crates.io/crates/toml/0.9.12+spec-1.1.0/download"], + strip_prefix = "toml-0.9.12+spec-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml-0.9.12+spec-1.1.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__toml-0.9.7", - sha256 = "00e5e5d9bf2475ac9d4f0d9edab68cc573dc2fd644b0dba36b0c30a92dd9eaa0", + name = "vendor_ts__toml-1.1.2-spec-1.1.0", + sha256 = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee", type = "tar.gz", - urls = ["https://static.crates.io/crates/toml/0.9.7/download"], - strip_prefix = "toml-0.9.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml-0.9.7.bazel"), + urls = ["https://static.crates.io/crates/toml/1.1.2+spec-1.1.0/download"], + strip_prefix = "toml-1.1.2+spec-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml-1.1.2+spec-1.1.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__toml_datetime-0.6.11", - sha256 = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c", + name = "vendor_ts__toml_datetime-0.7.5-spec-1.1.0", + sha256 = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347", type = "tar.gz", - urls = ["https://static.crates.io/crates/toml_datetime/0.6.11/download"], - strip_prefix = "toml_datetime-0.6.11", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_datetime-0.6.11.bazel"), + urls = ["https://static.crates.io/crates/toml_datetime/0.7.5+spec-1.1.0/download"], + strip_prefix = "toml_datetime-0.7.5+spec-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_datetime-0.7.5+spec-1.1.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__toml_datetime-0.7.2", - sha256 = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1", + name = "vendor_ts__toml_datetime-1.1.1-spec-1.1.0", + sha256 = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7", type = "tar.gz", - urls = ["https://static.crates.io/crates/toml_datetime/0.7.2/download"], - strip_prefix = "toml_datetime-0.7.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_datetime-0.7.2.bazel"), + urls = ["https://static.crates.io/crates/toml_datetime/1.1.1+spec-1.1.0/download"], + strip_prefix = "toml_datetime-1.1.1+spec-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_datetime-1.1.1+spec-1.1.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__toml_edit-0.22.27", - sha256 = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a", + name = "vendor_ts__toml_parser-1.1.2-spec-1.1.0", + sha256 = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526", type = "tar.gz", - urls = ["https://static.crates.io/crates/toml_edit/0.22.27/download"], - strip_prefix = "toml_edit-0.22.27", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_edit-0.22.27.bazel"), + urls = ["https://static.crates.io/crates/toml_parser/1.1.2+spec-1.1.0/download"], + strip_prefix = "toml_parser-1.1.2+spec-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_parser-1.1.2+spec-1.1.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__toml_parser-1.0.3", - sha256 = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627", + name = "vendor_ts__toml_writer-1.1.1-spec-1.1.0", + sha256 = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db", type = "tar.gz", - urls = ["https://static.crates.io/crates/toml_parser/1.0.3/download"], - strip_prefix = "toml_parser-1.0.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_parser-1.0.3.bazel"), + urls = ["https://static.crates.io/crates/toml_writer/1.1.1+spec-1.1.0/download"], + strip_prefix = "toml_writer-1.1.1+spec-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_writer-1.1.1+spec-1.1.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__toml_write-0.1.2", - sha256 = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801", + name = "vendor_ts__tracing-0.1.44", + sha256 = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100", type = "tar.gz", - urls = ["https://static.crates.io/crates/toml_write/0.1.2/download"], - strip_prefix = "toml_write-0.1.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_write-0.1.2.bazel"), + urls = ["https://static.crates.io/crates/tracing/0.1.44/download"], + strip_prefix = "tracing-0.1.44", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-0.1.44.bazel"), ) maybe( http_archive, - name = "vendor_ts__toml_writer-1.0.3", - sha256 = "d163a63c116ce562a22cda521fcc4d79152e7aba014456fb5eb442f6d6a10109", + name = "vendor_ts__tracing-attributes-0.1.31", + sha256 = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da", type = "tar.gz", - urls = ["https://static.crates.io/crates/toml_writer/1.0.3/download"], - strip_prefix = "toml_writer-1.0.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_writer-1.0.3.bazel"), + urls = ["https://static.crates.io/crates/tracing-attributes/0.1.31/download"], + strip_prefix = "tracing-attributes-0.1.31", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-attributes-0.1.31.bazel"), ) maybe( http_archive, - name = "vendor_ts__tracing-0.1.41", - sha256 = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0", + name = "vendor_ts__tracing-core-0.1.36", + sha256 = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a", type = "tar.gz", - urls = ["https://static.crates.io/crates/tracing/0.1.41/download"], - strip_prefix = "tracing-0.1.41", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-0.1.41.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tracing-attributes-0.1.30", - sha256 = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tracing-attributes/0.1.30/download"], - strip_prefix = "tracing-attributes-0.1.30", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-attributes-0.1.30.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tracing-core-0.1.34", - sha256 = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tracing-core/0.1.34/download"], - strip_prefix = "tracing-core-0.1.34", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-core-0.1.34.bazel"), + urls = ["https://static.crates.io/crates/tracing-core/0.1.36/download"], + strip_prefix = "tracing-core-0.1.36", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-core-0.1.36.bazel"), ) maybe( @@ -3353,12 +3335,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__tracing-subscriber-0.3.20", - sha256 = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5", + name = "vendor_ts__tracing-subscriber-0.3.23", + sha256 = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/tracing-subscriber/0.3.23/download"], + strip_prefix = "tracing-subscriber-0.3.23", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-subscriber-0.3.23.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tracing-tree-0.4.1", + sha256 = "ac87aa03b6a4d5a7e4810d1a80c19601dbe0f8a837e9177f23af721c7ba7beec", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tracing-tree/0.4.1/download"], + strip_prefix = "tracing-tree-0.4.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-tree-0.4.1.bazel"), ) maybe( @@ -3423,12 +3415,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__triomphe-0.1.14", - sha256 = "ef8f7726da4807b58ea5c96fdc122f80702030edc33b35aff9190a51148ccc85", + name = "vendor_ts__triomphe-0.1.15", + sha256 = "dd69c5aa8f924c7519d6372789a74eac5b94fb0f8fcf0d4a97eb0bfc3e785f39", type = "tar.gz", - urls = ["https://static.crates.io/crates/triomphe/0.1.14/download"], - strip_prefix = "triomphe-0.1.14", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.triomphe-0.1.14.bazel"), + urls = ["https://static.crates.io/crates/triomphe/0.1.15/download"], + strip_prefix = "triomphe-0.1.15", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.triomphe-0.1.15.bazel"), ) maybe( @@ -3441,16 +3433,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.typed-arena-2.0.2.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__typeid-1.0.3", - sha256 = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/typeid/1.0.3/download"], - strip_prefix = "typeid-1.0.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.typeid-1.0.3.bazel"), - ) - maybe( http_archive, name = "vendor_ts__uncased-0.9.10", @@ -3473,12 +3455,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__unicode-ident-1.0.19", - sha256 = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d", + name = "vendor_ts__unicode-ident-1.0.24", + sha256 = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/unicode-ident/1.0.24/download"], + strip_prefix = "unicode-ident-1.0.24", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unicode-ident-1.0.24.bazel"), ) maybe( @@ -3511,26 +3493,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unsafe-libyaml-0.2.11.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__url-2.5.7", - sha256 = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b", - type = "tar.gz", - 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( - http_archive, - name = "vendor_ts__utf8_iter-1.0.4", - sha256 = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be", - type = "tar.gz", - urls = ["https://static.crates.io/crates/utf8_iter/1.0.4/download"], - strip_prefix = "utf8_iter-1.0.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.utf8_iter-1.0.4.bazel"), - ) - maybe( http_archive, name = "vendor_ts__utf8parse-0.2.2", @@ -3581,16 +3543,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasi-0.11.1+wasi-snapshot-preview1.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__wasi-0.14.5-wasi-0.2.4", - sha256 = "a4494f6290a82f5fe584817a676a34b9d6763e8d9d18204009fb31dceca98fd4", - type = "tar.gz", - 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__wasip2-1.0.0-wasi-0.2.4", @@ -3601,6 +3553,16 @@ def crate_repositories(): 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__wasip3-0.4.0-wasi-0.3.0-rc-2026-01-06", + sha256 = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/wasip3/0.4.0+wasi-0.3.0-rc-2026-01-06/download"], + strip_prefix = "wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.bazel"), + ) + maybe( http_archive, name = "vendor_ts__wasm-bindgen-0.2.101", @@ -3651,6 +3613,36 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-shared-0.2.101.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__wasm-encoder-0.244.0", + sha256 = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319", + type = "tar.gz", + urls = ["https://static.crates.io/crates/wasm-encoder/0.244.0/download"], + strip_prefix = "wasm-encoder-0.244.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-encoder-0.244.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__wasm-metadata-0.244.0", + sha256 = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909", + type = "tar.gz", + urls = ["https://static.crates.io/crates/wasm-metadata/0.244.0/download"], + strip_prefix = "wasm-metadata-0.244.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-metadata-0.244.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__wasmparser-0.244.0", + sha256 = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe", + type = "tar.gz", + urls = ["https://static.crates.io/crates/wasmparser/0.244.0/download"], + strip_prefix = "wasmparser-0.244.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasmparser-0.244.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__winapi-util-0.1.11", @@ -3741,16 +3733,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-sys-0.52.0.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__windows-sys-0.59.0", - sha256 = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-sys/0.59.0/download"], - strip_prefix = "windows-sys-0.59.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-sys-0.59.0.bazel"), - ) - maybe( http_archive, name = "vendor_ts__windows-sys-0.60.2", @@ -3953,132 +3935,112 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__winnow-0.7.13", - sha256 = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf", - type = "tar.gz", - 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-0.45.1", - sha256 = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36", + name = "vendor_ts__winnow-0.7.15", + sha256 = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/winnow/0.7.15/download"], + strip_prefix = "winnow-0.7.15", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winnow-0.7.15.bazel"), ) maybe( http_archive, - name = "vendor_ts__writeable-0.6.1", - sha256 = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb", + name = "vendor_ts__winnow-1.0.1", + sha256 = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5", type = "tar.gz", - urls = ["https://static.crates.io/crates/writeable/0.6.1/download"], - strip_prefix = "writeable-0.6.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.writeable-0.6.1.bazel"), + urls = ["https://static.crates.io/crates/winnow/1.0.1/download"], + strip_prefix = "winnow-1.0.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winnow-1.0.1.bazel"), ) maybe( http_archive, - name = "vendor_ts__yansi-1.0.1", - sha256 = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049", - type = "tar.gz", - urls = ["https://static.crates.io/crates/yansi/1.0.1/download"], - strip_prefix = "yansi-1.0.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.yansi-1.0.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__yoke-0.8.0", - sha256 = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc", + name = "vendor_ts__wit-bindgen-0.45.1", + sha256 = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36", type = "tar.gz", - urls = ["https://static.crates.io/crates/yoke/0.8.0/download"], - strip_prefix = "yoke-0.8.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.yoke-0.8.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( http_archive, - name = "vendor_ts__yoke-derive-0.8.0", - sha256 = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6", + name = "vendor_ts__wit-bindgen-0.51.0", + sha256 = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5", type = "tar.gz", - urls = ["https://static.crates.io/crates/yoke-derive/0.8.0/download"], - strip_prefix = "yoke-derive-0.8.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.yoke-derive-0.8.0.bazel"), + urls = ["https://static.crates.io/crates/wit-bindgen/0.51.0/download"], + strip_prefix = "wit-bindgen-0.51.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-bindgen-0.51.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__zerocopy-0.8.27", - sha256 = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c", + name = "vendor_ts__wit-bindgen-core-0.51.0", + sha256 = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/wit-bindgen-core/0.51.0/download"], + strip_prefix = "wit-bindgen-core-0.51.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-bindgen-core-0.51.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__zerocopy-derive-0.8.27", - sha256 = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831", + name = "vendor_ts__wit-bindgen-rust-0.51.0", + sha256 = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/wit-bindgen-rust/0.51.0/download"], + strip_prefix = "wit-bindgen-rust-0.51.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-bindgen-rust-0.51.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__zerofrom-0.1.6", - sha256 = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5", + name = "vendor_ts__wit-bindgen-rust-macro-0.51.0", + sha256 = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a", type = "tar.gz", - urls = ["https://static.crates.io/crates/zerofrom/0.1.6/download"], - strip_prefix = "zerofrom-0.1.6", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerofrom-0.1.6.bazel"), + urls = ["https://static.crates.io/crates/wit-bindgen-rust-macro/0.51.0/download"], + strip_prefix = "wit-bindgen-rust-macro-0.51.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-bindgen-rust-macro-0.51.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__zerofrom-derive-0.1.6", - sha256 = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502", + name = "vendor_ts__wit-component-0.244.0", + sha256 = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2", type = "tar.gz", - urls = ["https://static.crates.io/crates/zerofrom-derive/0.1.6/download"], - strip_prefix = "zerofrom-derive-0.1.6", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerofrom-derive-0.1.6.bazel"), + urls = ["https://static.crates.io/crates/wit-component/0.244.0/download"], + strip_prefix = "wit-component-0.244.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-component-0.244.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__zerotrie-0.2.2", - sha256 = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595", + name = "vendor_ts__wit-parser-0.244.0", + sha256 = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736", type = "tar.gz", - urls = ["https://static.crates.io/crates/zerotrie/0.2.2/download"], - strip_prefix = "zerotrie-0.2.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerotrie-0.2.2.bazel"), + urls = ["https://static.crates.io/crates/wit-parser/0.244.0/download"], + strip_prefix = "wit-parser-0.244.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-parser-0.244.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__zerovec-0.11.4", - sha256 = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b", + name = "vendor_ts__yansi-1.0.1", + sha256 = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049", type = "tar.gz", - 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"), + urls = ["https://static.crates.io/crates/yansi/1.0.1/download"], + strip_prefix = "yansi-1.0.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.yansi-1.0.1.bazel"), ) maybe( http_archive, - name = "vendor_ts__zerovec-derive-0.11.1", - sha256 = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f", + name = "vendor_ts__zmij-1.0.21", + sha256 = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa", type = "tar.gz", - urls = ["https://static.crates.io/crates/zerovec-derive/0.11.1/download"], - strip_prefix = "zerovec-derive-0.11.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerovec-derive-0.11.1.bazel"), + urls = ["https://static.crates.io/crates/zmij/1.0.21/download"], + strip_prefix = "zmij-1.0.21", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zmij-1.0.21.bazel"), ) maybe( @@ -4112,11 +4074,11 @@ def crate_repositories(): ) return [ - struct(repo = "vendor_ts__anyhow-1.0.100", is_dev_dep = False), - struct(repo = "vendor_ts__argfile-0.2.1", is_dev_dep = False), + struct(repo = "vendor_ts__anyhow-1.0.102", is_dev_dep = False), + struct(repo = "vendor_ts__argfile-1.0.0", is_dev_dep = False), struct(repo = "vendor_ts__chalk-ir-0.104.0", is_dev_dep = False), - struct(repo = "vendor_ts__chrono-0.4.42", is_dev_dep = False), - struct(repo = "vendor_ts__clap-4.5.48", is_dev_dep = False), + struct(repo = "vendor_ts__chrono-0.4.44", is_dev_dep = False), + struct(repo = "vendor_ts__clap-4.6.0", 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), @@ -4129,41 +4091,41 @@ def crate_repositories(): 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.101", is_dev_dep = False), - struct(repo = "vendor_ts__quote-1.0.41", 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.3", is_dev_dep = False), + struct(repo = "vendor_ts__proc-macro2-1.0.106", is_dev_dep = False), + struct(repo = "vendor_ts__quote-1.0.45", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_base_db-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_cfg-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_def-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_expand-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_ty-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_ide_db-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_intern-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_load-cargo-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_parser-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_paths-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_project_model-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_span-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_stdx-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_syntax-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_vfs-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__rayon-1.12.0", is_dev_dep = False), + struct(repo = "vendor_ts__regex-1.12.3", is_dev_dep = False), struct(repo = "vendor_ts__serde-1.0.228", is_dev_dep = False), - struct(repo = "vendor_ts__serde_json-1.0.145", is_dev_dep = False), - struct(repo = "vendor_ts__serde_with-3.14.1", is_dev_dep = False), - struct(repo = "vendor_ts__syn-2.0.106", is_dev_dep = False), - struct(repo = "vendor_ts__toml-0.9.7", is_dev_dep = False), - struct(repo = "vendor_ts__tracing-0.1.41", is_dev_dep = False), + struct(repo = "vendor_ts__serde_json-1.0.149", is_dev_dep = False), + struct(repo = "vendor_ts__serde_with-3.18.0", is_dev_dep = False), + struct(repo = "vendor_ts__syn-2.0.117", is_dev_dep = False), + struct(repo = "vendor_ts__toml-1.1.2-spec-1.1.0", is_dev_dep = False), + struct(repo = "vendor_ts__tracing-0.1.44", 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.20", is_dev_dep = False), + struct(repo = "vendor_ts__tracing-subscriber-0.3.23", 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.25.0", 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), + struct(repo = "vendor_ts__triomphe-0.1.15", is_dev_dep = False), struct(repo = "vendor_ts__ungrammar-1.16.1", is_dev_dep = False), struct(repo = "vendor_ts__zstd-0.13.3", is_dev_dep = False), - struct(repo = "vendor_ts__rand-0.9.2", is_dev_dep = True), + struct(repo = "vendor_ts__rand-0.10.1", is_dev_dep = True), struct(repo = "vendor_ts__tree-sitter-json-0.24.8", is_dev_dep = True), struct(repo = "vendor_ts__tree-sitter-ql-0.23.1", is_dev_dep = True), ] From 5f76c946deeec685a4e93fc60a2f4fec58ec8725 Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 15 Apr 2026 13:11:27 +0000 Subject: [PATCH 003/167] Rust: update rust-analyzer source and run codegen --- MODULE.bazel | 4 +- .../ast-generator/patches/rust-analyzer.patch | 20 +- rust/ast-generator/src/main.rs | 8 +- rust/extractor/src/generated/.generated.list | 2 +- rust/extractor/src/generated/top.rs | 801 ++++++++++++++---- rust/extractor/src/translate/generated.rs | 231 +++-- rust/ql/.generated.list | 100 ++- rust/ql/.gitattributes | 60 +- .../internal/generated/CfgNodes.qll | 49 +- rust/ql/lib/codeql/rust/elements.qll | 12 +- .../ql/lib/codeql/rust/elements/BlockExpr.qll | 1 + rust/ql/lib/codeql/rust/elements/CfgAtom.qll | 9 + .../lib/codeql/rust/elements/CfgAttrMeta.qll | 10 + .../lib/codeql/rust/elements/CfgComposite.qll | 9 + rust/ql/lib/codeql/rust/elements/CfgMeta.qll | 10 + .../lib/codeql/rust/elements/CfgPredicate.qll | 9 + .../codeql/rust/elements/FormatArgsArg.qll | 2 +- .../rust/elements/FormatArgsArgName.qll | 9 + .../lib/codeql/rust/elements/KeyValueMeta.qll | 11 + rust/ql/lib/codeql/rust/elements/Meta.qll | 3 - rust/ql/lib/codeql/rust/elements/PathMeta.qll | 10 + .../lib/codeql/rust/elements/StructField.qll | 2 +- .../codeql/rust/elements/TokenTreeMeta.qll | 11 + .../lib/codeql/rust/elements/TraitAlias.qll | 23 - .../codeql/rust/elements/TryBlockModifier.qll | 10 + .../lib/codeql/rust/elements/UnsafeMeta.qll | 9 + rust/ql/lib/codeql/rust/elements/Variant.qll | 2 +- ...Constructor.qll => CfgAtomConstructor.qll} | 6 +- .../{TraitAliasImpl.qll => CfgAtomImpl.qll} | 16 +- .../internal/CfgAttrMetaConstructor.qll | 14 + .../elements/internal/CfgAttrMetaImpl.qll | 16 + .../internal/CfgCompositeConstructor.qll | 14 + .../elements/internal/CfgCompositeImpl.qll | 16 + .../elements/internal/CfgMetaConstructor.qll | 14 + .../rust/elements/internal/CfgMetaImpl.qll | 16 + .../elements/internal/CfgPredicateImpl.qll | 16 + .../internal/FormatArgsArgNameConstructor.qll | 14 + .../internal/FormatArgsArgNameImpl.qll | 16 + .../internal/KeyValueMetaConstructor.qll | 14 + .../elements/internal/KeyValueMetaImpl.qll | 16 + .../elements/internal/PathMetaConstructor.qll | 14 + .../rust/elements/internal/PathMetaImpl.qll | 16 + .../internal/TokenTreeMetaConstructor.qll | 14 + .../elements/internal/TokenTreeMetaImpl.qll | 16 + .../internal/TryBlockModifierConstructor.qll | 14 + .../internal/TryBlockModifierImpl.qll | 16 + ...structor.qll => UnsafeMetaConstructor.qll} | 6 +- .../rust/elements/internal/UnsafeMetaImpl.qll | 16 + .../elements/internal/generated/BlockExpr.qll | 21 +- .../elements/internal/generated/CfgAtom.qll | 23 + .../internal/generated/CfgAttrMeta.qll | 60 ++ .../internal/generated/CfgComposite.qll | 44 + .../elements/internal/generated/CfgMeta.qll | 39 + .../internal/generated/CfgPredicate.qll | 21 + .../internal/generated/FormatArgsArg.qll | 26 +- .../internal/generated/FormatArgsArgName.qll | 23 + .../internal/generated/KeyValueMeta.qll | 55 ++ .../rust/elements/internal/generated/Meta.qll | 49 +- .../internal/generated/ParentChild.qll | 248 ++++-- .../elements/internal/generated/PathMeta.qll | 37 + .../rust/elements/internal/generated/Raw.qll | 469 ++++++---- .../internal/generated/StructField.qll | 14 +- .../elements/internal/generated/Synth.qll | 288 ++++++- .../internal/generated/SynthConstructors.qll | 12 +- .../internal/generated/TokenTreeMeta.qll | 55 ++ .../internal/generated/TraitAlias.qll | 128 --- .../internal/generated/TryBlockModifier.qll | 44 + .../internal/generated/UnsafeMeta.qll | 42 + .../elements/internal/generated/Variant.qll | 12 +- rust/ql/lib/rust.dbscheme | 227 +++-- .../generated/.generated_tests.list | 2 - .../extractor-tests/generated/.gitattributes | 2 - .../generated/BlockExpr/BlockExpr.ql | 10 +- .../generated/CfgAtom/MISSING_SOURCE.txt | 4 + .../generated/CfgAttrMeta/MISSING_SOURCE.txt | 4 + .../generated/CfgComposite/MISSING_SOURCE.txt | 4 + .../generated/CfgMeta/MISSING_SOURCE.txt | 4 + .../FormatArgsArgName/MISSING_SOURCE.txt | 4 + .../generated/FormatArgsExpr/FormatArgsArg.ql | 8 +- .../generated/KeyValueMeta/MISSING_SOURCE.txt | 4 + .../extractor-tests/generated/Meta/Meta.ql | 22 - .../generated/Meta/gen_meta.rs | 14 - .../generated/PathMeta/MISSING_SOURCE.txt | 4 + .../generated/StructField/StructField.ql | 4 +- .../TokenTreeMeta/MISSING_SOURCE.txt | 4 + .../generated/TraitAlias/TraitAlias.ql | 35 - .../generated/TraitAlias/gen_trait_alias.rs | 8 - .../TryBlockModifier/MISSING_SOURCE.txt | 4 + .../generated/UnsafeMeta/MISSING_SOURCE.txt | 4 + .../generated/Variant/Variant.ql | 4 +- rust/schema/annotations.py | 12 - rust/schema/ast.py | 61 +- 92 files changed, 2866 insertions(+), 1020 deletions(-) create mode 100644 rust/ql/lib/codeql/rust/elements/CfgAtom.qll create mode 100644 rust/ql/lib/codeql/rust/elements/CfgAttrMeta.qll create mode 100644 rust/ql/lib/codeql/rust/elements/CfgComposite.qll create mode 100644 rust/ql/lib/codeql/rust/elements/CfgMeta.qll create mode 100644 rust/ql/lib/codeql/rust/elements/CfgPredicate.qll create mode 100644 rust/ql/lib/codeql/rust/elements/FormatArgsArgName.qll create mode 100644 rust/ql/lib/codeql/rust/elements/KeyValueMeta.qll create mode 100644 rust/ql/lib/codeql/rust/elements/PathMeta.qll create mode 100644 rust/ql/lib/codeql/rust/elements/TokenTreeMeta.qll delete mode 100644 rust/ql/lib/codeql/rust/elements/TraitAlias.qll create mode 100644 rust/ql/lib/codeql/rust/elements/TryBlockModifier.qll create mode 100644 rust/ql/lib/codeql/rust/elements/UnsafeMeta.qll rename rust/ql/lib/codeql/rust/elements/internal/{MetaConstructor.qll => CfgAtomConstructor.qll} (64%) rename rust/ql/lib/codeql/rust/elements/internal/{TraitAliasImpl.qll => CfgAtomImpl.qll} (51%) create mode 100644 rust/ql/lib/codeql/rust/elements/internal/CfgAttrMetaConstructor.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/CfgAttrMetaImpl.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/CfgCompositeConstructor.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/CfgCompositeImpl.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/CfgMetaConstructor.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/CfgMetaImpl.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/CfgPredicateImpl.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameConstructor.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameImpl.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/KeyValueMetaConstructor.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/KeyValueMetaImpl.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/PathMetaConstructor.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/PathMetaImpl.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/TokenTreeMetaConstructor.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/TokenTreeMetaImpl.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/TryBlockModifierConstructor.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/TryBlockModifierImpl.qll rename rust/ql/lib/codeql/rust/elements/internal/{TraitAliasConstructor.qll => UnsafeMetaConstructor.qll} (64%) create mode 100644 rust/ql/lib/codeql/rust/elements/internal/UnsafeMetaImpl.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/generated/CfgAtom.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/generated/CfgAttrMeta.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/generated/CfgComposite.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/generated/CfgMeta.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/generated/CfgPredicate.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArgName.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/generated/KeyValueMeta.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/generated/PathMeta.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/generated/TokenTreeMeta.qll delete mode 100644 rust/ql/lib/codeql/rust/elements/internal/generated/TraitAlias.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/generated/TryBlockModifier.qll create mode 100644 rust/ql/lib/codeql/rust/elements/internal/generated/UnsafeMeta.qll create mode 100644 rust/ql/test/extractor-tests/generated/CfgAtom/MISSING_SOURCE.txt create mode 100644 rust/ql/test/extractor-tests/generated/CfgAttrMeta/MISSING_SOURCE.txt create mode 100644 rust/ql/test/extractor-tests/generated/CfgComposite/MISSING_SOURCE.txt create mode 100644 rust/ql/test/extractor-tests/generated/CfgMeta/MISSING_SOURCE.txt create mode 100644 rust/ql/test/extractor-tests/generated/FormatArgsArgName/MISSING_SOURCE.txt create mode 100644 rust/ql/test/extractor-tests/generated/KeyValueMeta/MISSING_SOURCE.txt delete mode 100644 rust/ql/test/extractor-tests/generated/Meta/Meta.ql delete mode 100644 rust/ql/test/extractor-tests/generated/Meta/gen_meta.rs create mode 100644 rust/ql/test/extractor-tests/generated/PathMeta/MISSING_SOURCE.txt create mode 100644 rust/ql/test/extractor-tests/generated/TokenTreeMeta/MISSING_SOURCE.txt delete mode 100644 rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.ql delete mode 100644 rust/ql/test/extractor-tests/generated/TraitAlias/gen_trait_alias.rs create mode 100644 rust/ql/test/extractor-tests/generated/TryBlockModifier/MISSING_SOURCE.txt create mode 100644 rust/ql/test/extractor-tests/generated/UnsafeMeta/MISSING_SOURCE.txt diff --git a/MODULE.bazel b/MODULE.bazel index dfc9a0c9144a..7fda4b7e42c2 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -159,12 +159,12 @@ use_repo( http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # rust-analyzer sources needed by the rust ast-generator (see `rust/ast-generator/README.md`) -RUST_ANALYZER_SRC_TAG = "2025-01-07" +RUST_ANALYZER_SRC_TAG = "2026-04-13" http_archive( name = "rust-analyzer-src", build_file = "//rust/ast-generator:BUILD.rust-analyzer-src.bazel", - integrity = "sha256-eo8mIaUafZL8LOM65bDIIIXw1rNQ/P/x5RK/XUtgo5g=", + integrity = "sha256-UB/+EVx/6j4VGvnb7jfRqPaoc7Uwci3rEt6il+2J1Ds=", patch_args = ["-p1"], patches = [ "//rust/ast-generator:patches/rust-analyzer.patch", diff --git a/rust/ast-generator/patches/rust-analyzer.patch b/rust/ast-generator/patches/rust-analyzer.patch index e799e90f48a4..b8b8e6e6c8f0 100644 --- a/rust/ast-generator/patches/rust-analyzer.patch +++ b/rust/ast-generator/patches/rust-analyzer.patch @@ -1,5 +1,5 @@ diff --git a/xtask/src/codegen/grammar.rs b/xtask/src/codegen/grammar.rs -index e7534582f2..49c96f1be3 100644 +index 257429c..ddbe321 100644 --- a/xtask/src/codegen/grammar.rs +++ b/xtask/src/codegen/grammar.rs @@ -3,7 +3,9 @@ @@ -22,7 +22,7 @@ index e7534582f2..49c96f1be3 100644 use self::ast_src::{AstEnumSrc, AstNodeSrc, AstSrc, Cardinality, Field, KindsSrc}; pub(crate) fn generate(check: bool) { -@@ -624,7 +626,7 @@ fn pluralize(s: &str) -> String { +@@ -775,7 +777,7 @@ fn pluralize(s: &str) -> String { } impl Field { @@ -31,26 +31,26 @@ index e7534582f2..49c96f1be3 100644 matches!(self, Field::Node { cardinality: Cardinality::Many, .. }) } fn token_kind(&self) -> Option { -@@ -636,7 +638,7 @@ impl Field { +@@ -787,7 +789,7 @@ impl Field { _ => None, } } - fn method_name(&self) -> String { + pub fn method_name(&self) -> String { match self { - Field::Token(name) => { - let name = match name.as_str() { -@@ -682,7 +684,7 @@ impl Field { + Field::Token { name, token, .. } => { + if let Some(name) = name { +@@ -836,7 +838,7 @@ impl Field { } } } - fn ty(&self) -> proc_macro2::Ident { + pub fn ty(&self) -> proc_macro2::Ident { match self { - Field::Token(_) => format_ident!("SyntaxToken"), + Field::Token { .. } => format_ident!("SyntaxToken"), Field::Node { ty, .. } => format_ident!("{}", ty), -@@ -699,7 +701,7 @@ fn clean_token_name(name: &str) -> String { - } +@@ -849,7 +851,7 @@ fn clean_token_name(name: &str) -> String { + if cleaned.is_empty() { name.to_owned() } else { cleaned.to_owned() } } -fn lower(grammar: &Grammar) -> AstSrc { @@ -59,7 +59,7 @@ index e7534582f2..49c96f1be3 100644 tokens: "Whitespace Comment String ByteString CString IntNumber FloatNumber Char Byte Ident" diff --git a/xtask/src/codegen/grammar/ast_src.rs b/xtask/src/codegen/grammar/ast_src.rs -index 9269d15423..babe7ca1bf 100644 +index a0abdf0..5f59f97 100644 --- a/xtask/src/codegen/grammar/ast_src.rs +++ b/xtask/src/codegen/grammar/ast_src.rs @@ -1,5 +1,8 @@ diff --git a/rust/ast-generator/src/main.rs b/rust/ast-generator/src/main.rs index b1de337f3aca..fe6865a172fb 100644 --- a/rust/ast-generator/src/main.rs +++ b/rust/ast-generator/src/main.rs @@ -308,10 +308,10 @@ fn write_schema( fn get_fields(node: &AstNodeSrc) -> Vec { let mut result = Vec::new(); for field in &node.fields { - if let Field::Token(name) = field { - if should_predicate_be_extracted(name) { + if let Field::Token { token, .. } = field { + if should_predicate_be_extracted(token) { result.push(FieldInfo { - name: format!("is_{name}"), + name: format!("is_{token}"), ty: FieldType::Predicate, }); } @@ -326,7 +326,7 @@ fn get_fields(node: &AstNodeSrc) -> Vec { continue; } let ty = match field { - Field::Token(_) => continue, + Field::Token { .. } => continue, Field::Node { ty, cardinality, .. } => match cardinality { diff --git a/rust/extractor/src/generated/.generated.list b/rust/extractor/src/generated/.generated.list index 89659a4811dd..2dd94e90ca4c 100644 --- a/rust/extractor/src/generated/.generated.list +++ b/rust/extractor/src/generated/.generated.list @@ -1,2 +1,2 @@ mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 -top.rs ea9c28694da3d0e90d09fc7d31824e35817c34720ea91e7c8bf8e7e74ffe4ee8 ea9c28694da3d0e90d09fc7d31824e35817c34720ea91e7c8bf8e7e74ffe4ee8 +top.rs 3773804c68b168304266d17d0bbe5de721ae138043dcf1ff8679e6562a3b94fc 3773804c68b168304266d17d0bbe5de721ae138043dcf1ff8679e6562a3b94fc diff --git a/rust/extractor/src/generated/top.rs b/rust/extractor/src/generated/top.rs index 1c4fd0f00d61..6b757dfcd048 100644 --- a/rust/extractor/src/generated/top.rs +++ b/rust/extractor/src/generated/top.rs @@ -824,6 +824,42 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct CfgPredicate { + _unused: () +} + +impl trap::TrapClass for CfgPredicate { + fn class_name() -> &'static str { "CfgPredicate" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgPredicate is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgPredicate is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgPredicate is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct Expr { _unused: () @@ -1003,8 +1039,8 @@ impl From> for trap::Label { #[derive(Debug)] pub struct FormatArgsArg { pub id: trap::TrapId, + pub arg_name: Option>, pub expr: Option>, - pub name: Option>, } impl trap::TrapEntry for FormatArgsArg { @@ -1014,12 +1050,12 @@ impl trap::TrapEntry for FormatArgsArg { fn emit(self, id: trap::Label, out: &mut trap::Writer) { out.add_tuple("format_args_args", vec![id.into()]); + if let Some(v) = self.arg_name { + out.add_tuple("format_args_arg_arg_names", vec![id.into(), v.into()]); + } if let Some(v) = self.expr { out.add_tuple("format_args_arg_exprs", vec![id.into(), v.into()]); } - if let Some(v) = self.name { - out.add_tuple("format_args_arg_names", vec![id.into(), v.into()]); - } } } @@ -1054,6 +1090,52 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct FormatArgsArgName { + pub id: trap::TrapId, +} + +impl trap::TrapEntry for FormatArgsArgName { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("format_args_arg_names", vec![id.into()]); + } +} + +impl trap::TrapClass for FormatArgsArgName { + fn class_name() -> &'static str { "FormatArgsArgName" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme FormatArgsArgName is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme FormatArgsArgName is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme FormatArgsArgName is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct GenericArg { _unused: () @@ -1598,33 +1680,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct Meta { - pub id: trap::TrapId, - pub expr: Option>, - pub is_unsafe: bool, - pub path: Option>, - pub token_tree: Option>, -} - -impl trap::TrapEntry for Meta { - fn extract_id(&mut self) -> trap::TrapId { - std::mem::replace(&mut self.id, trap::TrapId::Star) - } - - fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("meta", vec![id.into()]); - if let Some(v) = self.expr { - out.add_tuple("meta_exprs", vec![id.into(), v.into()]); - } - if self.is_unsafe { - out.add_tuple("meta_is_unsafe", vec![id.into()]); - } - if let Some(v) = self.path { - out.add_tuple("meta_paths", vec![id.into(), v.into()]); - } - if let Some(v) = self.token_tree { - out.add_tuple("meta_token_trees", vec![id.into(), v.into()]); - } - } + _unused: () } impl trap::TrapClass for Meta { @@ -2465,7 +2521,7 @@ impl From> for trap::Label { pub struct StructField { pub id: trap::TrapId, pub attrs: Vec>, - pub default: Option>, + pub default_val: Option>, pub is_unsafe: bool, pub name: Option>, pub type_repr: Option>, @@ -2482,8 +2538,8 @@ impl trap::TrapEntry for StructField { for (i, v) in self.attrs.into_iter().enumerate() { out.add_tuple("struct_field_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.default { - out.add_tuple("struct_field_defaults", vec![id.into(), v.into()]); + if let Some(v) = self.default_val { + out.add_tuple("struct_field_default_vals", vec![id.into(), v.into()]); } if self.is_unsafe { out.add_tuple("struct_field_is_unsafe", vec![id.into()]); @@ -2725,6 +2781,60 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct TryBlockModifier { + pub id: trap::TrapId, + pub is_try: bool, + pub type_repr: Option>, +} + +impl trap::TrapEntry for TryBlockModifier { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("try_block_modifiers", vec![id.into()]); + if self.is_try { + out.add_tuple("try_block_modifier_is_try", vec![id.into()]); + } + if let Some(v) = self.type_repr { + out.add_tuple("try_block_modifier_type_reprs", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for TryBlockModifier { + fn class_name() -> &'static str { "TryBlockModifier" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TryBlockModifier is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TryBlockModifier is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TryBlockModifier is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct TupleField { pub id: trap::TrapId, @@ -4408,40 +4518,276 @@ impl trap::TrapEntry for CastExpr { } } -impl trap::TrapClass for CastExpr { - fn class_name() -> &'static str { "CastExpr" } +impl trap::TrapClass for CastExpr { + fn class_name() -> &'static str { "CastExpr" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CastExpr is a subclass of Expr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CastExpr is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CastExpr is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CastExpr is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct CfgAtom { + pub id: trap::TrapId, +} + +impl trap::TrapEntry for CfgAtom { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("cfg_atoms", vec![id.into()]); + } +} + +impl trap::TrapClass for CfgAtom { + fn class_name() -> &'static str { "CfgAtom" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgAtom is a subclass of CfgPredicate + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgAtom is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgAtom is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgAtom is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct CfgAttrMeta { + pub id: trap::TrapId, + pub cfg_predicate: Option>, + pub metas: Vec>, +} + +impl trap::TrapEntry for CfgAttrMeta { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("cfg_attr_meta", vec![id.into()]); + if let Some(v) = self.cfg_predicate { + out.add_tuple("cfg_attr_meta_cfg_predicates", vec![id.into(), v.into()]); + } + for (i, v) in self.metas.into_iter().enumerate() { + out.add_tuple("cfg_attr_meta_metas", vec![id.into(), i.into(), v.into()]); + } + } +} + +impl trap::TrapClass for CfgAttrMeta { + fn class_name() -> &'static str { "CfgAttrMeta" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgAttrMeta is a subclass of Meta + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgAttrMeta is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgAttrMeta is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgAttrMeta is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct CfgComposite { + pub id: trap::TrapId, + pub cfg_predicates: Vec>, +} + +impl trap::TrapEntry for CfgComposite { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("cfg_composites", vec![id.into()]); + for (i, v) in self.cfg_predicates.into_iter().enumerate() { + out.add_tuple("cfg_composite_cfg_predicates", vec![id.into(), i.into(), v.into()]); + } + } +} + +impl trap::TrapClass for CfgComposite { + fn class_name() -> &'static str { "CfgComposite" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgComposite is a subclass of CfgPredicate + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgComposite is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgComposite is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgComposite is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct CfgMeta { + pub id: trap::TrapId, + pub cfg_predicate: Option>, +} + +impl trap::TrapEntry for CfgMeta { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("cfg_meta", vec![id.into()]); + if let Some(v) = self.cfg_predicate { + out.add_tuple("cfg_meta_cfg_predicates", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for CfgMeta { + fn class_name() -> &'static str { "CfgMeta" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme CastExpr is a subclass of Expr +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgMeta is a subclass of Meta unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme CastExpr is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgMeta is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme CastExpr is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgMeta is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme CastExpr is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgMeta is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } @@ -5651,6 +5997,69 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct KeyValueMeta { + pub id: trap::TrapId, + pub expr: Option>, + pub path: Option>, +} + +impl trap::TrapEntry for KeyValueMeta { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("key_value_meta", vec![id.into()]); + if let Some(v) = self.expr { + out.add_tuple("key_value_meta_exprs", vec![id.into(), v.into()]); + } + if let Some(v) = self.path { + out.add_tuple("key_value_meta_paths", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for KeyValueMeta { + fn class_name() -> &'static str { "KeyValueMeta" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme KeyValueMeta is a subclass of Meta + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme KeyValueMeta is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme KeyValueMeta is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme KeyValueMeta is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct LabelableExpr { _unused: () @@ -6997,6 +7406,65 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct PathMeta { + pub id: trap::TrapId, + pub path: Option>, +} + +impl trap::TrapEntry for PathMeta { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("path_meta", vec![id.into()]); + if let Some(v) = self.path { + out.add_tuple("path_meta_paths", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for PathMeta { + fn class_name() -> &'static str { "PathMeta" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathMeta is a subclass of Meta + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathMeta is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathMeta is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathMeta is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct PathPat { pub id: trap::TrapId, @@ -8123,6 +8591,69 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct TokenTreeMeta { + pub id: trap::TrapId, + pub path: Option>, + pub token_tree: Option>, +} + +impl trap::TrapEntry for TokenTreeMeta { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("token_tree_meta", vec![id.into()]); + if let Some(v) = self.path { + out.add_tuple("token_tree_meta_paths", vec![id.into(), v.into()]); + } + if let Some(v) = self.token_tree { + out.add_tuple("token_tree_meta_token_trees", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for TokenTreeMeta { + fn class_name() -> &'static str { "TokenTreeMeta" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TokenTreeMeta is a subclass of Meta + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TokenTreeMeta is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TokenTreeMeta is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TokenTreeMeta is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct TryExpr { pub id: trap::TrapId, @@ -8687,11 +9218,74 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct UnsafeMeta { + pub id: trap::TrapId, + pub is_unsafe: bool, + pub meta: Option>, +} + +impl trap::TrapEntry for UnsafeMeta { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("unsafe_meta", vec![id.into()]); + if self.is_unsafe { + out.add_tuple("unsafe_meta_is_unsafe", vec![id.into()]); + } + if let Some(v) = self.meta { + out.add_tuple("unsafe_meta_meta", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for UnsafeMeta { + fn class_name() -> &'static str { "UnsafeMeta" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme UnsafeMeta is a subclass of Meta + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme UnsafeMeta is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme UnsafeMeta is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme UnsafeMeta is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct Variant { pub id: trap::TrapId, pub attrs: Vec>, - pub discriminant: Option>, + pub const_arg: Option>, pub field_list: Option>, pub name: Option>, pub visibility: Option>, @@ -8707,8 +9301,8 @@ impl trap::TrapEntry for Variant { for (i, v) in self.attrs.into_iter().enumerate() { out.add_tuple("variant_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.discriminant { - out.add_tuple("variant_discriminants", vec![id.into(), v.into()]); + if let Some(v) = self.const_arg { + out.add_tuple("variant_const_args", vec![id.into(), v.into()]); } if let Some(v) = self.field_list { out.add_tuple("variant_field_lists", vec![id.into(), v.into()]); @@ -9109,9 +9703,9 @@ pub struct BlockExpr { pub is_const: bool, pub is_gen: bool, pub is_move: bool, - pub is_try: bool, pub is_unsafe: bool, pub stmt_list: Option>, + pub try_block_modifier: Option>, } impl trap::TrapEntry for BlockExpr { @@ -9139,15 +9733,15 @@ impl trap::TrapEntry for BlockExpr { if self.is_move { out.add_tuple("block_expr_is_move", vec![id.into()]); } - if self.is_try { - out.add_tuple("block_expr_is_try", vec![id.into()]); - } if self.is_unsafe { out.add_tuple("block_expr_is_unsafe", vec![id.into()]); } if let Some(v) = self.stmt_list { out.add_tuple("block_expr_stmt_lists", vec![id.into(), v.into()]); } + if let Some(v) = self.try_block_modifier { + out.add_tuple("block_expr_try_block_modifiers", vec![id.into(), v.into()]); + } } } @@ -10069,103 +10663,6 @@ impl From> for trap::Label { } } -#[derive(Debug)] -pub struct TraitAlias { - pub id: trap::TrapId, - pub attrs: Vec>, - pub generic_param_list: Option>, - pub name: Option>, - pub type_bound_list: Option>, - pub visibility: Option>, - pub where_clause: Option>, -} - -impl trap::TrapEntry for TraitAlias { - fn extract_id(&mut self) -> trap::TrapId { - std::mem::replace(&mut self.id, trap::TrapId::Star) - } - - fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("trait_aliases", vec![id.into()]); - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("trait_alias_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.generic_param_list { - out.add_tuple("trait_alias_generic_param_lists", vec![id.into(), v.into()]); - } - if let Some(v) = self.name { - out.add_tuple("trait_alias_names", vec![id.into(), v.into()]); - } - if let Some(v) = self.type_bound_list { - out.add_tuple("trait_alias_type_bound_lists", vec![id.into(), v.into()]); - } - if let Some(v) = self.visibility { - out.add_tuple("trait_alias_visibilities", vec![id.into(), v.into()]); - } - if let Some(v) = self.where_clause { - out.add_tuple("trait_alias_where_clauses", vec![id.into(), v.into()]); - } - } -} - -impl trap::TrapClass for TraitAlias { - fn class_name() -> &'static str { "TraitAlias" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Item - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Stmt - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of AstNode - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Locatable - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Element - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Addressable - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - #[derive(Debug)] pub struct TypeItem { _unused: () diff --git a/rust/extractor/src/translate/generated.rs b/rust/extractor/src/translate/generated.rs index e6cc06419fce..083b52d02b3c 100644 --- a/rust/extractor/src/translate/generated.rs +++ b/rust/extractor/src/translate/generated.rs @@ -53,6 +53,18 @@ impl Translator<'_> { self.post_emit(node, label); Some(label) } + pub(crate) fn emit_cfg_predicate( + &mut self, + node: &ast::CfgPredicate, + ) -> Option> { + let label = match node { + ast::CfgPredicate::CfgAtom(inner) => self.emit_cfg_atom(inner).map(Into::into), + ast::CfgPredicate::CfgComposite(inner) => { + self.emit_cfg_composite(inner).map(Into::into) + } + }?; + Some(label) + } pub(crate) fn emit_expr(&mut self, node: &ast::Expr) -> Option> { let label = match node { ast::Expr::ArrayExpr(inner) => self.emit_array_expr(inner).map(Into::into), @@ -149,6 +161,21 @@ impl Translator<'_> { }?; Some(label) } + pub(crate) fn emit_meta(&mut self, node: &ast::Meta) -> Option> { + if let Some(label) = self.pre_emit(node) { + return Some(label); + } + let label = match node { + ast::Meta::CfgAttrMeta(inner) => self.emit_cfg_attr_meta(inner).map(Into::into), + ast::Meta::CfgMeta(inner) => self.emit_cfg_meta(inner).map(Into::into), + ast::Meta::KeyValueMeta(inner) => self.emit_key_value_meta(inner).map(Into::into), + ast::Meta::PathMeta(inner) => self.emit_path_meta(inner).map(Into::into), + ast::Meta::TokenTreeMeta(inner) => self.emit_token_tree_meta(inner).map(Into::into), + ast::Meta::UnsafeMeta(inner) => self.emit_unsafe_meta(inner).map(Into::into), + }?; + self.post_emit(node, label); + Some(label) + } pub(crate) fn emit_pat(&mut self, node: &ast::Pat) -> Option> { let label = match node { ast::Pat::BoxPat(inner) => self.emit_box_pat(inner).map(Into::into), @@ -226,7 +253,6 @@ impl Translator<'_> { ast::Item::Static(inner) => self.emit_static(inner).map(Into::into), ast::Item::Struct(inner) => self.emit_struct(inner).map(Into::into), ast::Item::Trait(inner) => self.emit_trait(inner).map(Into::into), - ast::Item::TraitAlias(inner) => self.emit_trait_alias(inner).map(Into::into), ast::Item::TypeAlias(inner) => self.emit_type_alias(inner).map(Into::into), ast::Item::Union(inner) => self.emit_union(inner).map(Into::into), ast::Item::Use(inner) => self.emit_use(inner).map(Into::into), @@ -598,10 +624,12 @@ impl Translator<'_> { let is_const = node.const_token().is_some(); let is_gen = node.gen_token().is_some(); let is_move = node.move_token().is_some(); - let is_try = node.try_token().is_some(); let is_unsafe = node.unsafe_token().is_some(); let label = node.label().and_then(|x| self.emit_label(&x)); let stmt_list = node.stmt_list().and_then(|x| self.emit_stmt_list(&x)); + let try_block_modifier = node + .try_block_modifier() + .and_then(|x| self.emit_try_block_modifier(&x)); let label = self.trap.emit(generated::BlockExpr { id: TrapId::Star, attrs, @@ -609,10 +637,10 @@ impl Translator<'_> { is_const, is_gen, is_move, - is_try, is_unsafe, label, stmt_list, + try_block_modifier, }); self.emit_location(label, node); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); @@ -688,6 +716,63 @@ impl Translator<'_> { self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } + pub(crate) fn emit_cfg_atom( + &mut self, + node: &ast::CfgAtom, + ) -> Option> { + let label = self.trap.emit(generated::CfgAtom { id: TrapId::Star }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } + pub(crate) fn emit_cfg_attr_meta( + &mut self, + node: &ast::CfgAttrMeta, + ) -> Option> { + let cfg_predicate = node + .cfg_predicate() + .and_then(|x| self.emit_cfg_predicate(&x)); + let metas = node.metas().filter_map(|x| self.emit_meta(&x)).collect(); + let label = self.trap.emit(generated::CfgAttrMeta { + id: TrapId::Star, + cfg_predicate, + metas, + }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } + pub(crate) fn emit_cfg_composite( + &mut self, + node: &ast::CfgComposite, + ) -> Option> { + let cfg_predicates = node + .cfg_predicates() + .filter_map(|x| self.emit_cfg_predicate(&x)) + .collect(); + let label = self.trap.emit(generated::CfgComposite { + id: TrapId::Star, + cfg_predicates, + }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } + pub(crate) fn emit_cfg_meta( + &mut self, + node: &ast::CfgMeta, + ) -> Option> { + let cfg_predicate = node + .cfg_predicate() + .and_then(|x| self.emit_cfg_predicate(&x)); + let label = self.trap.emit(generated::CfgMeta { + id: TrapId::Star, + cfg_predicate, + }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } pub(crate) fn emit_closure_expr( &mut self, node: &ast::ClosureExpr, @@ -1105,17 +1190,30 @@ impl Translator<'_> { &mut self, node: &ast::FormatArgsArg, ) -> Option> { + let arg_name = node + .arg_name() + .and_then(|x| self.emit_format_args_arg_name(&x)); let expr = node.expr().and_then(|x| self.emit_expr(&x)); - let name = node.name().and_then(|x| self.emit_name(&x)); let label = self.trap.emit(generated::FormatArgsArg { id: TrapId::Star, + arg_name, expr, - name, }); self.emit_location(label, node); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } + pub(crate) fn emit_format_args_arg_name( + &mut self, + node: &ast::FormatArgsArgName, + ) -> Option> { + let label = self + .trap + .emit(generated::FormatArgsArgName { id: TrapId::Star }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } pub(crate) fn emit_format_args_expr( &mut self, node: &ast::FormatArgsExpr, @@ -1313,6 +1411,21 @@ impl Translator<'_> { self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } + pub(crate) fn emit_key_value_meta( + &mut self, + node: &ast::KeyValueMeta, + ) -> Option> { + let expr = node.expr().and_then(|x| self.emit_expr(&x)); + let path = node.path().and_then(|x| self.emit_path(&x)); + let label = self.trap.emit(generated::KeyValueMeta { + id: TrapId::Star, + expr, + path, + }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } pub(crate) fn emit_label(&mut self, node: &ast::Label) -> Option> { let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); let label = self.trap.emit(generated::Label { @@ -1691,26 +1804,6 @@ impl Translator<'_> { self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } - pub(crate) fn emit_meta(&mut self, node: &ast::Meta) -> Option> { - if let Some(label) = self.pre_emit(node) { - return Some(label); - } - let expr = node.expr().and_then(|x| self.emit_expr(&x)); - let is_unsafe = node.unsafe_token().is_some(); - let path = node.path().and_then(|x| self.emit_path(&x)); - let token_tree = node.token_tree().and_then(|x| self.emit_token_tree(&x)); - let label = self.trap.emit(generated::Meta { - id: TrapId::Star, - expr, - is_unsafe, - path, - token_tree, - }); - self.emit_location(label, node); - self.post_emit(node, label); - self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); - Some(label) - } pub(crate) fn emit_method_call_expr( &mut self, node: &ast::MethodCallExpr, @@ -1949,6 +2042,19 @@ impl Translator<'_> { self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } + pub(crate) fn emit_path_meta( + &mut self, + node: &ast::PathMeta, + ) -> Option> { + let path = node.path().and_then(|x| self.emit_path(&x)); + let label = self.trap.emit(generated::PathMeta { + id: TrapId::Star, + path, + }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } pub(crate) fn emit_path_pat( &mut self, node: &ast::PathPat, @@ -2150,7 +2256,7 @@ impl Translator<'_> { return None; } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); - let default = node.expr().and_then(|x| self.emit_expr(&x)); + let default_val = node.default_val().and_then(|x| self.emit_const_arg(&x)); let is_unsafe = node.unsafe_token().is_some(); let name = node.name().and_then(|x| self.emit_name(&x)); let type_repr = node.ty().and_then(|x| self.emit_type(&x)); @@ -2158,7 +2264,7 @@ impl Translator<'_> { let label = self.trap.emit(generated::StructField { id: TrapId::Star, attrs, - default, + default_val, is_unsafe, name, type_repr, @@ -2522,6 +2628,21 @@ impl Translator<'_> { self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } + pub(crate) fn emit_token_tree_meta( + &mut self, + node: &ast::TokenTreeMeta, + ) -> Option> { + let path = node.path().and_then(|x| self.emit_path(&x)); + let token_tree = node.token_tree().and_then(|x| self.emit_token_tree(&x)); + let label = self.trap.emit(generated::TokenTreeMeta { + id: TrapId::Star, + path, + token_tree, + }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } pub(crate) fn emit_trait(&mut self, node: &ast::Trait) -> Option> { if self.should_be_excluded(node) { return None; @@ -2557,31 +2678,16 @@ impl Translator<'_> { self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } - pub(crate) fn emit_trait_alias( + pub(crate) fn emit_try_block_modifier( &mut self, - node: &ast::TraitAlias, - ) -> Option> { - if self.should_be_excluded(node) { - return None; - } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); - let generic_param_list = node - .generic_param_list() - .and_then(|x| self.emit_generic_param_list(&x)); - let name = node.name().and_then(|x| self.emit_name(&x)); - let type_bound_list = node - .type_bound_list() - .and_then(|x| self.emit_type_bound_list(&x)); - let visibility = node.visibility().and_then(|x| self.emit_visibility(&x)); - let where_clause = node.where_clause().and_then(|x| self.emit_where_clause(&x)); - let label = self.trap.emit(generated::TraitAlias { + node: &ast::TryBlockModifier, + ) -> Option> { + let is_try = node.try_token().is_some(); + let type_repr = node.ty().and_then(|x| self.emit_type(&x)); + let label = self.trap.emit(generated::TryBlockModifier { id: TrapId::Star, - attrs, - generic_param_list, - name, - type_bound_list, - visibility, - where_clause, + is_try, + type_repr, }); self.emit_location(label, node); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); @@ -2859,6 +2965,21 @@ impl Translator<'_> { self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } + pub(crate) fn emit_unsafe_meta( + &mut self, + node: &ast::UnsafeMeta, + ) -> Option> { + let is_unsafe = node.unsafe_token().is_some(); + let meta = node.meta().and_then(|x| self.emit_meta(&x)); + let label = self.trap.emit(generated::UnsafeMeta { + id: TrapId::Star, + is_unsafe, + meta, + }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } pub(crate) fn emit_use(&mut self, node: &ast::Use) -> Option> { if self.should_be_excluded(node) { return None; @@ -2937,14 +3058,14 @@ impl Translator<'_> { return None; } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); - let discriminant = node.expr().and_then(|x| self.emit_expr(&x)); + let const_arg = node.const_arg().and_then(|x| self.emit_const_arg(&x)); let field_list = node.field_list().and_then(|x| self.emit_field_list(&x)); let name = node.name().and_then(|x| self.emit_name(&x)); let visibility = node.visibility().and_then(|x| self.emit_visibility(&x)); let label = self.trap.emit(generated::Variant { id: TrapId::Star, attrs, - discriminant, + const_arg, field_list, name, visibility, @@ -3093,6 +3214,9 @@ impl HasTrapClass for ast::AssocItem { impl HasTrapClass for ast::ExternItem { type TrapClass = generated::ExternItem; } +impl HasTrapClass for ast::Meta { + type TrapClass = generated::Meta; +} impl HasTrapClass for ast::Item { type TrapClass = generated::Item; } @@ -3108,9 +3232,6 @@ impl HasTrapClass for ast::Fn { impl HasTrapClass for ast::MacroCall { type TrapClass = generated::MacroCall; } -impl HasTrapClass for ast::Meta { - type TrapClass = generated::Meta; -} impl HasTrapClass for ast::PathSegment { type TrapClass = generated::PathSegment; } diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index 003ede900234..bc9aabe628f3 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -1,4 +1,4 @@ -lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll 3f4499c892277e07380232b2c90138d7c312911ef8af4a89ba0c9c2958da028b d8a8b330f8dc43e009c261a41801893230b6b568f503c17faeae9cea54714075 +lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll 6856901e16b8e54da81700c78abf93268801e77dbca5d3f2d3c63f7e1eeef088 8e4cbe943860b173a519a7b797d9a6af0d3cdcc0514d9e003720a71b51d8cb8c lib/codeql/rust/elements/Abi.qll 485a2e79f6f7bfd1c02a6e795a71e62dede3c3e150149d5f8f18b761253b7208 6159ba175e7ead0dd2e3f2788f49516c306ee11b1a443bd4bdc00b7017d559bd lib/codeql/rust/elements/Addressable.qll 13011bfd2e1556694c3d440cc34af8527da4df49ad92b62f2939d3699ff2cea5 ddb25935f7553a1a384b1abe2e4b4fa90ab50b952dadec32fd867afcb054f4be lib/codeql/rust/elements/ArgList.qll 3d2f6f5542340b80a4c6e944ac17aba0d00727588bb66e501453ac0f80c82f83 afd52700bf5a337f19827846667cd0fb1fea5abbbcbc353828e292a727ea58c9 @@ -28,12 +28,17 @@ lib/codeql/rust/elements/Attr.qll 2cb6a6adf1ff9ee40bc37434320d77d74ae41ff10bbd49 lib/codeql/rust/elements/AwaitExpr.qll d8b37c01f7d27f0ec40d92a533a8f09a06af7ece1ae832b4ea8f2450c1762511 92cdb7ff0efddf26bed2b7b2729fddd197e26c1a11c8fec0c747aab642710c21 lib/codeql/rust/elements/BecomeExpr.qll 7a3cfc4894feb6be1cde664f675b18936434e68ccea52e55314c33d01491e34f 49666eca509b30d44bb02702bda67239c76bf8d9f231022c9cf6ecca123f8616 lib/codeql/rust/elements/BinaryExpr.qll 394522da3bc3a716fc7bc40c3560143ca840f5d210cfcba2a752c3026dd0f725 fbbd6fb79bf16a7d9820613654c584cd7ff3e7a29988f3920b6cfbe746acfd8d -lib/codeql/rust/elements/BlockExpr.qll b5cf57119b15f27d0bc258dfa375b0ef2730c157870ff543f0dc7a8cfe514182 f6a01999606b010c81ef9c6ff1385e6640632b6f5ce067ffeb0ef0af0a0aeb92 +lib/codeql/rust/elements/BlockExpr.qll 1dbf64445aebfa87c5ee5f295b6f47a959d952f86a108d8cca381d787d5cbf3e ac6c46175a10807a886263143095a9454041e54a08e3644e06b5dbc4d394a397 lib/codeql/rust/elements/BoxPat.qll 1b2c3fff171aa6aa238c9460b122f26c79e04577cea67fa856de99842ba873d4 0caf8d23ed6e0997a6b8751def27641582151fba6e24fccf798712a4690b42f1 lib/codeql/rust/elements/BreakExpr.qll 7ca3807a20e9a9a988d1fd7abebf240325ed422fcb45c719ba46272f031f94db dffb7379d3f3ba220acfbd05eb7bb6cfd9cfda211e9c8b1f5240ca5fa61be3fc lib/codeql/rust/elements/CallExpr.qll ee3997f265dc1b6b2fc7134548dd88d509b6bcbc26cf65061a31980f9900ae26 7e86e0ab24ce78c3f592a5614eac083d00f331664f021a438f74e2e0785f4609 lib/codeql/rust/elements/Callable.qll 08a46e987b8fde29069795a536fcd1ad1a96f60341f72293e4d07e20334d554f cfc2be9287000718e5ff3c2a35bb45ffc93fd36d97f2e034888e9aa2ae9af555 lib/codeql/rust/elements/CastExpr.qll 2fe1f36ba31fa29de309baf0a665cfcae67b61c73345e8f9bbd41e8c235fec45 c5b4c1e9dc24eb2357799defcb2df25989075e3a80e8663b74204a1c1b70e29a +lib/codeql/rust/elements/CfgAtom.qll 0567c41550cbcf88f334f0285bac32f87726099f2444108b7842e1ecf8a3a36b 6a3858268921c4a9bb8db9239867b5e46b54d1f5d133a6f19cfd648de4d15b65 +lib/codeql/rust/elements/CfgAttrMeta.qll 85f6503abce5c1c3de06df0c0d2ae8fda4206b94bc8103d54550ad2d84a93fb4 af1e7967d7c9c80f1a4725d8a045d645b247f5aa1a3a462a08eea39c4ab4491f +lib/codeql/rust/elements/CfgComposite.qll 50f624532b6f6086ac507c294da7dc3a96d4154d70541449c89b4395cbe366a7 6aa0c7a1484b02833b7cc7692018f96dd6724b8f76a1e171171b7f5aac69e3a6 +lib/codeql/rust/elements/CfgMeta.qll 583c4561968f787ea1fb7fe8af165273e0f35c2e1efd26364a004edeebee5786 86eca520313dc40b0e523d8941858909c2632eb32c01d74ddb1c524527fbd8eb +lib/codeql/rust/elements/CfgPredicate.qll e86f55f98b8f09fb5da9af550cb6c43089d8deb2e3b83d7e195e9bddc8cf201b ba30cf064ba1236139c8c55bfab204b9256e407db983b42b23319690c7ff5562 lib/codeql/rust/elements/ClosureExpr.qll 69e0b7a7c7a4c348fcada5ad4da22dd2f51747109f856be239cede315a56d695 93400650282e2d4e682b826e9f5f844aa893dda126548e41ea1c703d2bf209ca lib/codeql/rust/elements/Comment.qll fedad50575125e9a64a8a8776a8c1dbf1e76df990f01849d9f0955f9d74cb2a6 8eb1afad1e1007a4f0090fdac65d81726b23eda6517d067fd0185f70f17635ab lib/codeql/rust/elements/Const.qll 5f4d11e01162a06127ba56519efd66d1ecfb5de7c1792fc1c283a56cf2127373 8c618ac774267d25db70cc05a080f8a408dc23ab7e88c0fc543eda8b4d4cb995 @@ -58,7 +63,8 @@ lib/codeql/rust/elements/ForBinder.qll ee29b55cb4c1fa5180cc4ee1236ac089fe9f67ffa lib/codeql/rust/elements/ForExpr.qll a050f60cf6fcc3ce66f5042be1b8096e5207fe2674d7477f9e299091ca99a4bd d7198495139649778894e930163add2d16b5588dd12bd6e094a9aec6863cb16f lib/codeql/rust/elements/ForTypeRepr.qll c85c5e368b9db4a308b55259b3e6b1f4d37050984de43b24971243d6ca6dcec5 51b1c3ddac2fb9616ec44816bcbb549df2c15bbbe674d045a7b1c352c1e335e3 lib/codeql/rust/elements/Format.qll 1b186730710e7e29ea47594998f0b359ad308927f84841adae0c0cb35fc8aeda d6f7bfdda60a529fb9e9a1975628d5bd11aa28a45e295c7526692ac662fd19f8 -lib/codeql/rust/elements/FormatArgsArg.qll a2c23cd512d44dd60b7d65eba52cc3adf6e2fbbcd0588be375daa16002cd7741 d9c5fe183fb228375223d83f857b7a9ee686f1d3e341bcf323d7c6f39652f88b +lib/codeql/rust/elements/FormatArgsArg.qll 822287617367bca322a0157a1671a884b8035821c565c9ec8a29d1d4d154deaf 7a8dc3b18c12f0560574500523001e9babeee28a4b3fe3968ac3f30d89f44b3b +lib/codeql/rust/elements/FormatArgsArgName.qll 1e50d3007b517179bffb257b9a0b65b2651a07d1d3380b165995b8eb3eaff63d 6a1932ea108adaf951013f35ac5fe9cdcc409055c2249240a2eb47c73c503750 lib/codeql/rust/elements/FormatArgsExpr.qll 8127cbe4082f7acc3d8a05298c2c9bea302519b8a6cd2d158a83c516d18fc487 88cf9b3bedd69a1150968f9a465c904bbb6805da0e0b90cfd1fc0dab1f6d9319 lib/codeql/rust/elements/FormatArgument.qll f6fe17ee1481c353dd42edae8b5fa79aeb99dff25b4842ec9a6f267b1837d1e3 5aed19c2daf2383b89ad7fd527375641cff26ddee7afddb89bc0d18d520f4034 lib/codeql/rust/elements/FormatTemplateVariableAccess.qll ff3218a1dda30c232d0ecd9d1c60bbb9f3973456ef0bee1d1a12ad14b1e082b5 e4316291c939800d8b34d477d92be9404a30d52b7eee37302aef3d3205cf4ae0 @@ -75,6 +81,7 @@ lib/codeql/rust/elements/IndexExpr.qll 0e2e9f018d06ae72be0fc4ddbc019a9aacd8a06f4 lib/codeql/rust/elements/InferTypeRepr.qll 1b8bdcb574a7b6e7dd49f4cfb96655a6ccc355744b424b8c2593fe8218090d53 c20a2a5b0346dc277721deb450e732a47812c8e872ffb60aaba351b1708e9477 lib/codeql/rust/elements/Item.qll 59d2ac7b5b111579951bf42f68834ecf6dab47a5fb342ed0841c905b977923ab 0d220ec12a373098b26e6cb3a7b327b2d0c1882c3d9b6de00f4df1e8d00bae68 lib/codeql/rust/elements/ItemList.qll b302d25a7570504e88bfcedf7afc99d25740f320ab27a4a9def1ae66569a4c15 4012a5e43639fa39d5313356ff3ab56c4bb567add1ce012bfede4835406a9571 +lib/codeql/rust/elements/KeyValueMeta.qll b66aeedd5a548ae94ed680c399a32176cb5999f972cc3a434a05b802e5a25264 02944562b4f66e99b8503e1d87a9f1cc4ba80bae49a4108c6f884cc54398a379 lib/codeql/rust/elements/Label.qll a31d41db351af7f99a55b26cdbbc7f13b4e96b660a74e2f1cc90c17ee8df8d73 689f87cb056c8a2aefe1a0bfc2486a32feb44eb3175803c61961a6aeee53d66e lib/codeql/rust/elements/LabelableExpr.qll 598be487cd051b004ab95cbbc3029100069dc9955851c492029d80f230e56f0d 92c49b3cfdaba07982f950e18a8d62dae4e96f5d9ae0d7d2f4292628361f0ddc lib/codeql/rust/elements/LetElse.qll abb12749e1e05047e62f04fcaaf0947acc4dc431be80cb5939308f3531f29700 2799133c6bc84d5bb242a6bce7d26be885b31a3e2d2a7757c46c300b9ef07a20 @@ -99,7 +106,7 @@ lib/codeql/rust/elements/MatchArm.qll c39fd6cc0da24b1ff8d1e42835bcfee7695ad13580 lib/codeql/rust/elements/MatchArmList.qll f221c5e344814fa44db06ab897afdc249e8e88118953116c9c9b745aa2189614 8ff30685e631c5daa6c42390dfb11fd76a4ff2e374013e3dabc67b4c135c0bc4 lib/codeql/rust/elements/MatchExpr.qll e9ef1664f020823b6f4bb72d906a9dc0c1ee6432d4a9a13f7dbdbab2b2b1ee4d 38d71e5c487abcb5682293c573343be66e499a6e131bb630604c120d34b7777b lib/codeql/rust/elements/MatchGuard.qll 58256689a90f24b16401543452c2a32f00d619ddac6c0fe8b65a8cd3e46401bb 8efb2ac03c69a9db687e382331085d7a6cfbf8eca559174ba2727a9549ec7ddd -lib/codeql/rust/elements/Meta.qll b17d7bf605bd0cf4f6d6c6cf4f39a16cfc431d256d45b93663a7569181d36168 815cdfef06231de4b4b1c85e321b8ccb3e22379e5a4e111df9cc9ca6be593841 +lib/codeql/rust/elements/Meta.qll e54802dadd2f1b914a821f9e9335f6088d4782751e36c014e1fcf18eb4134b14 552a5ebbd998cba27fa7ea9b91b387c36ab10964deab546afdba52463ed8661a lib/codeql/rust/elements/MethodCallExpr.qll 914633f304c587addced988a7f161a1a4b3297ce370f6a959b7a042b1c04dace 289a0854d6323df915ee5f268523ee597ba20a37c646bbb2a79c9ed1f7aa2260 lib/codeql/rust/elements/Missing.qll 70e6ac9790314752849c9888443c98223ccfc93a193998b7ce350b2c6ebe8ea4 e2f0623511acaa76b091f748d417714137a8b94f1f2bdbbd177f1c682c786dad lib/codeql/rust/elements/Module.qll 0bc85019177709256f8078d9de2a36f62f848d476225bff7bba1e35f249875c7 3fbb70e0c417a644dd0cada2c364c6e6876cfa16f37960e219c87e49c966c94e @@ -120,6 +127,7 @@ lib/codeql/rust/elements/Path.qll 16264a9c978a3027f623530e386a9ad16541305b252fed lib/codeql/rust/elements/PathAstNode.qll 68160b08272ecde0e636779b7c547f808356d69d1150863b37188ea84e110cab cafa2de0bf3be978854319bbcf5ad1591acd64abd7b0958ff14c96a7529fcc99 lib/codeql/rust/elements/PathExpr.qll 0232228845a2005fc63d6b8aea8b49ff50415e0e90fd18f863ee1d6e44f53c07 47b15cc6ae576d13f14b29ffa4620451accc603ff87071dfe48660dbe018bf36 lib/codeql/rust/elements/PathExprBase.qll bb41092ec690ae926e3233c215dcaf1fd8e161b8a6955151949f492e02dba13a b2257072f8062d31c29c63ee1311b07e0d2eb37075f582cfc76bb542ef773198 +lib/codeql/rust/elements/PathMeta.qll 56021df592b69c9c735db2ebe2b14ee5b5e0a76546d7a6bafaed9d9ba4ff2ba8 23c34dbd742698f9197ce5b48970b77520131ad31c12e2d88cdfd98de0708b3c lib/codeql/rust/elements/PathPat.qll a7069d1dd77ba66814d6c84e135ed2975d7fcf379624079e6a76dc44b5de832e 2294d524b65ab0d038094b2a00f73feb8ab70c8f49fb4d91e9d390073205631d lib/codeql/rust/elements/PathSegment.qll c54e9d03fc76f3b21c0cfe719617d03d2a172a47c8f884a259566dd6c63d23f2 4995473961f723239b8ac52804aeb373ef2ac26df0f3719c4ca67858039f2132 lib/codeql/rust/elements/PathTypeRepr.qll 1b68e119ac82fdf5f421ded88a1739bfb8009c61e2745be11b34c3a025de18aa 48d9b49ee871f3932a0806709b4a21dadfdbe5cef8bab8d71aab69b6e4e7b432 @@ -146,15 +154,16 @@ lib/codeql/rust/elements/Struct.qll e60a859c0112b7a7ce4a4752e936e0d58f413ceb895d lib/codeql/rust/elements/StructExpr.qll 84f384ef74c723796e514186037a91dd9666556f62c717f133ce22e9dda4425f 176497835252cfdfe110e58ebde9fbde553d03e44e07d3e4d8041e835dbf31b9 lib/codeql/rust/elements/StructExprField.qll 3eb9f17ecd1ad38679689eb4ecc169d3a0b5b7a3fc597ae5a957a7aea2f74e4f 8fcd26f266f203004899a60447ba16e7eae4e3a654fbec7f54e26857730ede93 lib/codeql/rust/elements/StructExprFieldList.qll 6efb2ec4889b38556dc679bb89bbd4bd76ed6a60014c41f8e232288fc23b2d52 dc867a0a4710621e04b36bbec7d317d6f360e0d6ac68b79168c8b714babde31d -lib/codeql/rust/elements/StructField.qll c43a552ce22c768c7f4c878501f08ecd4eae3554c5cd885dcd2e8625fe705233 bfd7934835ca41eb70e4064198d9b40ec9812842fb4349e412d1aaf98c3cd625 +lib/codeql/rust/elements/StructField.qll 76e41d8a14d30a3f5a89d1cf28e77265f747824a356711e466fcde3b70e11d39 0fef2c368f53c12db96dcad2eab1bd0ae9cb619711451750bc94b6e31af329dc lib/codeql/rust/elements/StructFieldList.qll ee3cf510d35fad0edfeec68315fbe986a6d5323fbaddcfb688682be9a6508352 8cafe522251f98eb10eb45073e434a814165c25e436850f81b1d73ef88d6ae83 lib/codeql/rust/elements/StructPat.qll cdd1e8417d1c8cb3d14356390d71eb2916a295d95f240f48d4c2fb21bf4398cb 69c3456a13ef3e978a9a145b9e232198a30360f771feb41a917e507410611f6c lib/codeql/rust/elements/StructPatField.qll 856aa7d7c6d9b3c17514cbd12a36164e6e9d5923245770d0af3afb759a15204a 1bd1a294d84ad5e4da24e03b4882b215c50473875014859dbf26555d1f4ec2d5 lib/codeql/rust/elements/StructPatFieldList.qll 44619afedcda047e51ee3e319f738d5c49ff5e3f8811155a3ef9874d12bc091d 6b4412a5b0f3ebc0a9f228129c1727b1d6a1947fc826e62fa8e34b2c7d3864ed lib/codeql/rust/elements/Token.qll e2de97c32e12c7ac9369f8dccabc22d89bfcbf7f6acd99f1aa7faa38eb4ac2b2 888d7e1743e802790e78bae694fedb4aba361b600fb9d9ecf022436f2138e13c lib/codeql/rust/elements/TokenTree.qll 23e57fd945ce509df5122aa46f7971360788945cb7a67ddc229de5f44b80e6e9 18a7834edf5d6808e9126c0ce2e9554211faaf21bf7e9e2fa09aa167654e43a9 +lib/codeql/rust/elements/TokenTreeMeta.qll f784784313490314520f6aa9f4dac0f4fbf990427ed39c36185a9526e8d1726d 9c8a74c34ba908d3e886f3e7b041dbaf46a981e26ecc1b66a22d11c1b5155e3f lib/codeql/rust/elements/Trait.qll f78a917c2f2e5a0dfcd7c36e95ad67b1fa218484ee509610db8ca38453bebd4c 2a12f03870ebf86e104bdc3b61aae8512bfafbbf79a0cff5c3c27a04635926af -lib/codeql/rust/elements/TraitAlias.qll 1d82d043f24dbac04baa7aa3882c6884b8ffbc5d9b97669ce8efb7e2c8d3d2c8 505ba5426e87b3c49721f440fbc9ad6b0e7d89d1b1a51ca3fa3a6cc2d36f8b82 +lib/codeql/rust/elements/TryBlockModifier.qll 1567952cea9392e7af28cbe6b7c4aaf00f231e5caeb1292a6fc515918b2891bf 622cbadf10f955f5558475d8015f16667773dabf7db7bdabcc9dbff5425a9fb8 lib/codeql/rust/elements/TryExpr.qll cb452f53292a1396139f64a35f05bb11501f6b363f8affc9f2d5f1945ad4a647 d60ad731bfe256d0f0b688bdc31708759a3d990c11dee4f1d85ccc0d9e07bec9 lib/codeql/rust/elements/TupleExpr.qll 1b1be270198f9d3db1c28c4caaa4a7fe9b5ae14651f1a10e2891a7d78d6ad18b 4f585aa684dfbff753e342903ddd60ee4d7c374b8bddeb645784d10903c90ae0 lib/codeql/rust/elements/TupleField.qll 8d6288fd79959d5ef3732397c0a05a47fcb09091383058d1dba7268a950f8c32 1518cdd0fd9746d09fcdbecabc2a3ce6b36b6d983883850beed3f55c2bdf2c16 @@ -173,12 +182,13 @@ lib/codeql/rust/elements/UnderscoreExpr.qll 233661b82b87c8cda16d8f2e17965658c3dc lib/codeql/rust/elements/Unextracted.qll 12e60c79ef5b94d72b579b19970622e7b73822ebc13fbcfedfe953527ab1ac36 ec015db2eb12c3c82693ddc71d32d9ab9ef7a958e741e2510681bb707ceca23e lib/codeql/rust/elements/Unimplemented.qll bf624d28163e5c99accda16c0c99f938bec4a3b1b920a463e86fc8529ff5ff02 013bc7777298d250338f835cd494b5a8accea2d6a4f9561851f283ac129a446b lib/codeql/rust/elements/Union.qll e23ca528f8573e77dfa7eca71457e2022c92f22292ce84d021d304e52820ee66 eed20ac3797faaa248bc47ef81fa79a5d5c372b4c6289a075d041a84dd8bd6f4 +lib/codeql/rust/elements/UnsafeMeta.qll 10473d5527b564c69e9290553f000fcd7ae7502c22e3e183372530541bb81b5b 028220efdf4f4c8c24297d5fc7159126b06c6f1e46eff518ddc55caef5e45cf2 lib/codeql/rust/elements/Use.qll fdcf70574403c2f219353211b6930f2f9bc79f41c2594e07548de5a8c6cbb24d e41f2b689fcbeb7b84c7ba8d09592f7561626559318642b73574bbac83f74546 lib/codeql/rust/elements/UseBoundGenericArg.qll f16903f8fff676d3700eaad5490804624391141472ecc3166ccb1f70c794c120 5efda98088d096b42f53ceccae78c05f15c6953525b514d849681cb2cf65b147 lib/codeql/rust/elements/UseBoundGenericArgs.qll 841913cfbb84de14aab1820a5433eae978bbadbb8e6d413b8ba70780c7328335 c9ec9d086cff91d15c3aea64f1080b22b41cdaf64e3c8b192aaaec17604a5d10 lib/codeql/rust/elements/UseTree.qll e67c148f63668319c37914a46ff600692de477242a0129fa1bb9839754c0f830 de9b39d3d078d51ec9130db6579bff13e6297e60556a7214a5c51cbf89d92791 lib/codeql/rust/elements/UseTreeList.qll 92ebfee4392a485b38fb3265fdede7c8f2ed1dbe2ab860aa61b1497c33874d25 a4e677455d20838e422e430eebd73d0a488e34e8c960f375fef7b99e79d4c911 -lib/codeql/rust/elements/Variant.qll 7895461fa728f6c3a7293799c5e6b965b413b679566dcbd40bbe2609db8b6cde b0413547365a301bd9fbb6b266757f956394abad0a77f0e424446e23ec7d83e9 +lib/codeql/rust/elements/Variant.qll affe9c58021358fd93d9c867277b4853c8303caa75521c657c8ba2e0cd45f0d6 44894859e3dde36b727abe8a28198f1ba7c487af839e6d9a2fe2d1bacb59f477 lib/codeql/rust/elements/VariantList.qll 39803fbb873d48202c2a511c00c8eafede06e519894e0fd050c2a85bf5f4aa73 1735f89b2b8f6d5960a276b87ea10e4bb8c848c24a5d5fad7f3add7a4d94b7da lib/codeql/rust/elements/Visibility.qll aa69e8a3fd3b01f6fea0ae2d841a2adc51f4e46dcfc9f8f03c34fbe96f7e24e7 0d475e97e07b73c8da2b53555085b8309d8dc69c113bcb396fc901361dbfe6b8 lib/codeql/rust/elements/WhereClause.qll 4e28e11ceec835a093e469854a4b615e698309cdcbc39ed83810e2e4e7c5953f 4736baf689b87dd6669cb0ef9e27eb2c0f2776ce7f29d7693670bbcea06eb4e4 @@ -236,6 +246,15 @@ lib/codeql/rust/elements/internal/BoxPatConstructor.qll 153f110ba25fd6c889092bfd lib/codeql/rust/elements/internal/BreakExprConstructor.qll 356be043c28e0b34fdf925a119c945632ee883c6f5ebb9a27003c6a8d250afd9 bb77e66b04bb9489340e7506931559b94285c6904b6f9d2f83b214cba4f3cfd5 lib/codeql/rust/elements/internal/CallExprConstructor.qll 742b38e862e2cf82fd1ecc4d4fc5b4782a9c7c07f031452b2bae7aa59d5aa13a cad6e0a8be21d91b20ac2ec16cab9c30eae810b452c0f1992ed87d5c7f4144dc lib/codeql/rust/elements/internal/CastExprConstructor.qll f3d6e10c4731f38a384675aeab3fba47d17b9e15648293787092bb3247ed808d d738a7751dbadb70aa1dcffcf8af7fa61d4cf8029798369a7e8620013afff4ed +lib/codeql/rust/elements/internal/CfgAtomConstructor.qll b71484029b4fdaa5df6b42f6b38c3feb0ad72284e5badf3d8413b78d6d14240b 146c73c0354d67fbccba5eb2fe21918ab441d953e005b4ec5482c80388d9493d +lib/codeql/rust/elements/internal/CfgAtomImpl.qll 47ca5355933e1c405dc2edec7bff9fd9be5132f708d6d7e0237a9f0a809eefa7 965eeca1d9ba5045735b16fa0340c0227f22418e0545f381c4df36eac23cf3fe +lib/codeql/rust/elements/internal/CfgAttrMetaConstructor.qll 8cae731f5e86830dec3367b1c69e807389bc434b4f83ff6e13427e4106ec6f2c 0ced22b35219edf0250a8542062f66641f03c13575a3c71d4d718ce5146288ea +lib/codeql/rust/elements/internal/CfgAttrMetaImpl.qll 2b8a578d52aea3ab218f1337ba2c8737cf16e9c64580b1916860dc66ae3e9025 e92e5e8dc79b1da72873af410b778054df7e22bc9080719d60371bc72bc27043 +lib/codeql/rust/elements/internal/CfgCompositeConstructor.qll 160bfbccdd80c9b9421b33cb302f6fe48bebe80050a01ad72a43f7332100f834 0102cad0255d632cac4ffaf334ce15f9beff9d7eb7d14a50255ef5c0e4b67d7b +lib/codeql/rust/elements/internal/CfgCompositeImpl.qll 840a148dc5c4b213ffdaca6213d6f2dfa3c1dad3f99293f8244baa3bf6902909 36e9291b124c52bb2e4620bead8acf2f9be4a2281eccfd74411adaf91914dd20 +lib/codeql/rust/elements/internal/CfgMetaConstructor.qll 335cb7a36e430b08a12c5548d0a91bbb9a00aaa2f9b0dc7b2fa526882ec0271e 0bd7002f58c1c19c22023d6f03874d84e083e1aa09ec9cac888661d5ad632f6b +lib/codeql/rust/elements/internal/CfgMetaImpl.qll 9d820fb4dee32288e467a8b667ba191588381d8ec2a0ce0e5e8645ee437a16a8 5888fb533768a36d94f56f81058aa0d00c4a2c13721af42bdd30628747698bce +lib/codeql/rust/elements/internal/CfgPredicateImpl.qll 3ba6c6732a7de4df967dd2cb2b4cc99db8aefb2301b75521f1b369052e3a2ec0 c07d4366f98f374f24e235f809946dc513a16203e4c1eb151c8185a5bc79e70d lib/codeql/rust/elements/internal/ClosureExprConstructor.qll a348229d2b25c7ebd43b58461830b7915e92d31ae83436ec831e0c4873f6218a 70a1d2ac33db3ac4da5826b0e8628f2f29a8f9cdfd8e4fd0e488d90ce0031a38 lib/codeql/rust/elements/internal/CommentConstructor.qll 0b4a6a976d667bf7595500dfb91b9cfc87460a501837ba5382d9a8d8321d7736 7d02d8c94a319dc48e7978d5270e33fc5c308d443768ff96b618236d250123f1 lib/codeql/rust/elements/internal/ConstArgConstructor.qll f63021dc1ca2276786da3a981d06c18d7a360b5e75c08bca5d1afece4f7c4a83 487a870cbf5ed6554d671a8e159edd9261d853eba2d28ce2bd459759f47f11f2 @@ -271,6 +290,8 @@ lib/codeql/rust/elements/internal/ForTypeReprConstructor.qll eae141dbe9256ab0eb8 lib/codeql/rust/elements/internal/ForTypeReprImpl.qll dbbcb86626dcba3d5534d461d7306c354a15f800ff37c1d039801b868179b387 f942eebb20fb2603b7bab0e90f3e3f7a3f87dd6229090fc011c692a52164ac90 lib/codeql/rust/elements/internal/FormatArgsArgConstructor.qll 8bd9b4e035ef8adeb3ac510dd68043934c0140facb933be1f240096d01cdfa11 74e9d3bbd8882ae59a7e88935d468e0a90a6529a4e2af6a3d83e93944470f0ee lib/codeql/rust/elements/internal/FormatArgsArgImpl.qll 6a8f55e51e141e4875ed03a7cc65eea49daa349de370b957e1e8c6bc4478425c 7efab8981ccbe75a4843315404674793dda66dde02ba432edbca25c7d355778a +lib/codeql/rust/elements/internal/FormatArgsArgNameConstructor.qll 1d5221a97f0edee8c07fd1140a9409cf7c3e6e90fc226278bbe64cf55d72b5c5 a77954bd52b2aa7b2e6891482001a2600c9365778630baf318ffd05cf1630568 +lib/codeql/rust/elements/internal/FormatArgsArgNameImpl.qll 58576638f78150e84c11ae9c702c1f4ea286460f6476a89f0259c9f7cf34dd36 3befb988d6e8ece20b718cd59bac4a68c458814c3157e4d1d7a513a03fd4bd1e lib/codeql/rust/elements/internal/FormatArgsExprConstructor.qll ce29ff5a839b885b1ab7a02d6a381ae474ab1be3e6ee7dcfd7595bdf28e4b558 63bf957426871905a51ea319662a59e38104c197a1024360aca364dc145b11e8 lib/codeql/rust/elements/internal/FunctionConstructor.qll b50aea579938d03745dfbd8b5fa8498f7f83b967369f63d6875510e09ab7f5d2 19cca32aeaecaf9debc27329e8c39ecec69464bb1d89d7b09908a1d73a8d92a2 lib/codeql/rust/elements/internal/GenericArgImpl.qll fde43bb0e3cb2d8eb9feb02012b0a4f934015f8175ec112dea1077d131f55acb 44842e8075f750ba2876cff28d07284f99188982aa6d674ec863ad90305bf6ae @@ -285,6 +306,8 @@ lib/codeql/rust/elements/internal/IndexExprConstructor.qll 99bdc3d793c4dbd993860 lib/codeql/rust/elements/internal/InferTypeReprConstructor.qll bc5f16853401617fc9c5af8a1287a23c5921df1b615cfbe2d7c7a70145ecfcbd da93bd28ea2daade2cbb0a729be3fbf05f72bc02009565c7bb062e4f68fdb9e7 lib/codeql/rust/elements/internal/ItemListConstructor.qll 08af3bd12536941c3dd4a43c81cc861be24325e242e2593c087a3ce632674291 2fa166159c409d2aaffa73a30babb40829a6de580bd40894d909ee6152801082 lib/codeql/rust/elements/internal/ItemListImpl.qll 195dbe93c334ad2bfc29db530bda9aaea88fc31696b2f230faae9e6c2ecb74a8 e498983a5b2f7a91e2fd336e85ac17e521a18c677784a0788d95bb283f3652e7 +lib/codeql/rust/elements/internal/KeyValueMetaConstructor.qll 946f4df587ae7c77445faec67b0c796e008a10c642e5bdf881f9f75e819a1f93 d2bff94a5f8967fabadb76424917383e1472467db1d90214b1b871ebf8da672d +lib/codeql/rust/elements/internal/KeyValueMetaImpl.qll 6f895ee05d983885ad3624b5c64483f2c9024888ed62781889c589ba6fadb4eb 4004bb1b22c30e27f7e2262e9788d1ad3ea4cb08729d8910140c54663a123b91 lib/codeql/rust/elements/internal/LabelConstructor.qll 1f814c94251e664bfa1b1a606aef995382e40e78d4f953350ec951ee0bc8bd34 3157fb8c7c6bd365a739f217ad73ba1e0b65ccd59b922e5ab034e3449915b36c lib/codeql/rust/elements/internal/LetElseConstructor.qll b2b5d68e5701379a0870aa6278078e09f06aa18ddd14045fc6ae62e90827ece7 7359e70bea8a78bcaf6e6ecc8cc37c5135ae31415b74645594456cc8daa82118 lib/codeql/rust/elements/internal/LetExprConstructor.qll 66f27cbdafb2b72b31d99645ec5ed72f4b762a7d6f5d292d7639dd8b86272972 7da048f4d7f677919c41d5c87ead301eacc12ece634d30b30a8ae1fab580ff30 @@ -317,7 +340,6 @@ lib/codeql/rust/elements/internal/MatchArmListImpl.qll 16de8d9e0768ee42c5069df5c lib/codeql/rust/elements/internal/MatchExprConstructor.qll 0355ca543a0f9ad56697bc2e1e2511fa3f233bc1f6344d9e1c2369106901c696 78622807a1c4bff61b751c715639510146c7a713e0c4f63246e9a2cf302f4875 lib/codeql/rust/elements/internal/MatchGuardConstructor.qll d4cae02d2902fe8d3cb6b9c2796137863f41f55840f6623935a1c99df43f28d8 0c89f2ca71a2fd5a3f365291e784cb779e34ba0542d9285515e1856424cec60d lib/codeql/rust/elements/internal/MatchGuardImpl.qll 489040ca1ea85edda91405fab3d12321b6541d2888c35356d3c14c707bf1468e 2b60223a822b840356a3668da3f9578e6a9b8f683fcdd3dbd99b5354c7d96095 -lib/codeql/rust/elements/internal/MetaConstructor.qll 49ab9aafdcab7785fc5fc9fb8f7c5bb0ae76cf85d0d259c4b3ac4b0eccbbeb56 bc11aef22661077e398b6ca75e3701fd8d0ac94a0e96dc556a6f6de4089d8b8c lib/codeql/rust/elements/internal/MetaImpl.qll ab77681dc271d26b4eb77d792fd9b24fce65b0f4a88056ad09aa9400d26b4b58 270e58d97c03357e92f777ce2bd332e2718e077a7faaa6778941a9d5b14e135d lib/codeql/rust/elements/internal/MethodCallExprConstructor.qll a1b3c4587f0ae60d206980b1d9e6881d998f29d2b592a73421d6a44124c70c20 8d4eaa3eb54653fac17f7d95e9cc833fe1398d27c02b2388cd9af8724a560ded lib/codeql/rust/elements/internal/MissingConstructor.qll aab0b7f2846f14a5914661a18c7c9eae71b9bde2162a3c5e5e8a8ecafa20e854 8f30b00b5b7918a7500786cc749b61695158b5b3cc8e9f2277b6b6bf0f7850a0 @@ -344,6 +366,8 @@ lib/codeql/rust/elements/internal/PathAstNodeImpl.qll 5a38c42a9127fc2071a9e8f091 lib/codeql/rust/elements/internal/PathConstructor.qll 5c6354c28faf9f28f3efee8e19bdb82773adcf4b0c1a38788b06af25bcb6bc4a 3e2aeef7b6b9cda7f7f45a6c8119c98803aa644cf6a492cf0fce318eba40fe8f lib/codeql/rust/elements/internal/PathExprBaseImpl.qll e8b09447ee41b4123f7d94c6b366b2602d8022c9644f1088c670c7794307ab2e 96b9b328771aaf19ba18d0591e85fcc915c0f930b2479b433de3bfdd2ea25249 lib/codeql/rust/elements/internal/PathExprConstructor.qll cf6e0a338a8ed2d1042bdee4c2c49be5827e8c572d8c56e828db265d39e59ae3 36a3d1b7c5cc2cf527616be787b32071b9e2a6613a4f6b3f82e2a3b0e02a516f +lib/codeql/rust/elements/internal/PathMetaConstructor.qll de6ebd053e66f0c72e6acb59c7a7e7326abfe0331e65080cc539030b93c49e32 327a8d8b5a6d721daa763cb5dac83247f9b2d9650be53ce01cbae02b15fbad94 +lib/codeql/rust/elements/internal/PathMetaImpl.qll 052152ec17c827054b1e9fccfc7cd7cb12fc0787e82242fde5724fd7a77b3b39 677460de83898bdfc9f06460ddb5dab2d4d884a88998c879b7eff5018d9b434a lib/codeql/rust/elements/internal/PathPatConstructor.qll 966c4ea22218ef71e000d7ce8dd5b570c39ad96b9239a3aa8a38292e2a9f36d2 8a1f348e9257ffc6e6bedcd70389b8e7ec2a3ed6e7b3733744ddfab284826e57 lib/codeql/rust/elements/internal/PathSegmentConstructor.qll 2d9639e42035dc7e73b7d6ddb8a977beadc6b4492dee4292b2f85b4409344441 c337fc3b9ef56366428772563e3f25f711474d16e860d3e89c1395a95d9e83e7 lib/codeql/rust/elements/internal/PathTypeReprConstructor.qll e05e7be13d48e7f832e735254777692d4be827a745b1fd94b9649d46fe574393 4aa1e6935a4479b61f205265cbbba01ce96d09a680c20d5decf30d1374d484d4 @@ -392,9 +416,11 @@ lib/codeql/rust/elements/internal/StructPatFieldListImpl.qll 046464430ba9cc0a924 lib/codeql/rust/elements/internal/TokenImpl.qll 87629ffee74cacc6e8af5e96e18e62fb0fa4043d3ba1e7360daa880e628f8530 d54e213e39ae2b9bb92ab377dc72d72ba5bca88b72d29032507cdcbef201a215 lib/codeql/rust/elements/internal/TokenTreeConstructor.qll 0be1f838b04ff944560aa477cbe4ab1ad0b3f4ae982de84773faac5902fcae45 254b387adc2e1e3c355651ab958785d0b8babbc0030194234698a1219e9497b3 lib/codeql/rust/elements/internal/TokenTreeImpl.qll 7c16b22a8ff4ad33be25c3d2d43b8f043cab7626538ac5d8938b074dc663b4f4 793e04299d571a8cea2097e6c43136c5e618b31da91ccc68bda334c3d2c3793d -lib/codeql/rust/elements/internal/TraitAliasConstructor.qll d2f159cac53b9d65ec8176b8c8ccb944541cd35c64f0d1ceabb32cd975c000bf 6564981793de762af2775cc729e25054ea788648509d151cbfdbdf99fc9ed364 -lib/codeql/rust/elements/internal/TraitAliasImpl.qll 434cf074a461219ad01ab2f116681213302fc62dabc4131d118b3bc2f2fd1af4 59e6f8893431e563897304e6f22da466c69410cf59206b634b426e8fef93b159 +lib/codeql/rust/elements/internal/TokenTreeMetaConstructor.qll 059903cc9cbc77d753f1e7833bbc6ba42d55d281bdf0a3ec1c79d0224be1613f b387eb1eb56f83ff9b2831552db5f23af9b8b8bd822e277f2c1e95ed88b71c1f +lib/codeql/rust/elements/internal/TokenTreeMetaImpl.qll e0c30c264f05a5b610c6d1c7bdacd804b4188031e3968756e6670d51b9b7ee02 084adcb4898a694a8be217a416b693e8291848f3802d4437a2004384ab079037 lib/codeql/rust/elements/internal/TraitConstructor.qll 1f790e63c32f1a22ae1b039ca585b5fe6ffef6339c1e2bf8bca108febb433035 535cebd676001bfbbb724d8006fa2da94e585951b8fd54c7dc092732214615b5 +lib/codeql/rust/elements/internal/TryBlockModifierConstructor.qll 55a69eced15a1637cb84889e50cf465bbc677baaf4bf3e4e5ab37615018f5803 ee6141225ade44559067474a75b27e3c68dbb149dc9c24dacc1e9d8c791f13f7 +lib/codeql/rust/elements/internal/TryBlockModifierImpl.qll 97ab789b3a0d9f9e851cee967cc92ae28446355e7bfeb7ff598787f18b9fdfa5 6f24a42b5e4c448f3ac447200becbf63b83bf1f26e99fca933f5e4262906d278 lib/codeql/rust/elements/internal/TryExprConstructor.qll 98e3077ebc4d76f687488b344f532b698512af215b66f0a74b5cea8ed180836c b95603c10c262911eeffdf4ccba14849e8443916b360e287963d5f2582d8e434 lib/codeql/rust/elements/internal/TryExprImpl.qll cacf43a49ba518be3f94e4a355f5889861edc41f77601eff27e0ed774eca6651 5f4a6a346ec457d5de89b32419e8b4c2deddc55e2d61dbb59842d7f34aa11c44 lib/codeql/rust/elements/internal/TupleExprConstructor.qll 71c38786723225d3d90399b8a085b2b2664c62256654db9e1288fadd56745b9d 639ad70b49ebadc027127fbdc9de14e5180169a4285908233bc38ccac6f14110 @@ -419,6 +445,8 @@ lib/codeql/rust/elements/internal/UnextractedImpl.qll 5c23df7e448184d76ccab2c227 lib/codeql/rust/elements/internal/UnimplementedConstructor.qll 70b0489fdc75fed389de8203947ed9c8eabb91373a1264eb2c8018ddbb2d9baa 0f2592c1697a2f2f913014ecd73b0e3ff1ec5b038ba1c3a22e7939bf8759e664 lib/codeql/rust/elements/internal/UnimplementedImpl.qll 06771abc088e0a8fc24032c9d2633618e8e40343ef8757a68cc0a70f1617165a 5738f626f1f4f573fdf7dcd5bd57a0948d290ed89342b9160e95ef3c84044f9a lib/codeql/rust/elements/internal/UnionConstructor.qll d650551a1b3ef29c5a770bdad626269cf539ed0c675af954bc847d2c6111f3f6 aca9064ad653a126ab4f03703e96b274587c852dc5e7ff3fea0fec4d45993f10 +lib/codeql/rust/elements/internal/UnsafeMetaConstructor.qll 89c041ebd8ff05137d0244c97b9cd8ea1afffbc1d6d3e6aab906546897d851aa 6da0034021f992ae39977694418a4d8f2fe6b426f54f606a2a089c3896e6eb52 +lib/codeql/rust/elements/internal/UnsafeMetaImpl.qll 38134143aec9d5f48762a1d70330a8899bd3e94265f80b0772e7db3987a7a107 7731646d9a29357c7567a08129d018c4b09982781d8b6cb73d93bcea7f71f0a1 lib/codeql/rust/elements/internal/UseBoundGenericArgImpl.qll 2f90bfd5e43113da1155445bef0334ab84acddef102bd62dfa2ef908717a5d09 dd2fa3c6081d79e1d96360dbdb339128cd944e7b7dc26c449c04f970ee1d7848 lib/codeql/rust/elements/internal/UseBoundGenericArgsConstructor.qll 84d4a959d098fcd1713cb169e15b4945d846121701d2c5709b11e19202c21f2b 93113c92be9bc9f0b8530c308fe482dfeddc7dc827fc44049cecb3eab28df731 lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll 0f98d47c1e09c46dd3da66a4770181a0caae0512b362faaec997af22bb5f4ce7 1919235e50b9d2fee9bd5d407a0bc023a02dbb04b2662349fad5a8d6cfa98069 @@ -470,12 +498,17 @@ lib/codeql/rust/elements/internal/generated/Attr.qll 3f306e301c79f58018f1d5f39b4 lib/codeql/rust/elements/internal/generated/AwaitExpr.qll 1d71af702a1f397fb231fae3e0642b3deeba0cd5a43c1d8fabdff29cac979340 e0bfa007bdecc5a09a266d449d723ae35f5a24fbdfc11e4e48aeea3ec0c5147c lib/codeql/rust/elements/internal/generated/BecomeExpr.qll 7a211b785a4a2f961242d1d73fd031d381aad809f7b600ce7f7f864518bb7242 17a0388680007871748cfdc6621f700a7c2817b9601e1bd817fb48561e7c63ad lib/codeql/rust/elements/internal/generated/BinaryExpr.qll 64e9bd9c571edd6e5f3e7662b956b1d87fa0354ce6fe95da9caf25ac16b66c68 3fca09fdbe879db2ca3293618896a462e96376a2963d15cce3d5b1baac552fcb -lib/codeql/rust/elements/internal/generated/BlockExpr.qll 5a5ddbe34bc478a7bd9b0d07d3b6f017c2d1f20581d859251a963314e6514d1f 9804c30b8b279038b864c52557535f854bd012bacdfe8e5840f1f777c74e52df +lib/codeql/rust/elements/internal/generated/BlockExpr.qll db813fa05eace9769ba2a51bb38c17e58d621cc31cbf88ee8186c23e3734467c 3a2804490c2bdfccfd2b18c2d4c6cd6edefc375a0a7463120a43212d22ce7513 lib/codeql/rust/elements/internal/generated/BoxPat.qll 597bed52f7489e0addce3266f7bee5be7c53d2d1263eceec3a252d041ca0908f b8ccf363ca5f1a988547caf1fd266a55aec7cbf8623578deea99765d264b0151 lib/codeql/rust/elements/internal/generated/BreakExpr.qll 0f428a8b2f4209b134c2ffc3e1c93c30bc6b0e9c9172f140cefa88c1f77d8690 957b39f38ff6befe9061f55bc0b403c2f1c366dd0cf63b874bae6f8216576d76 lib/codeql/rust/elements/internal/generated/CallExpr.qll 6096035ba2ef1ce3e6254d5b8497dcb6cd7570253423c778a9dd7e158f928644 e56caf9ba094ddfc4952ed5072c5f6f139db8029fa6bd6328d1a118e96a1d5fe lib/codeql/rust/elements/internal/generated/Callable.qll 12368b998c771c6b80f54123cea4d3600af7432ab34c9e571bc0bf3894ceb17e 273a9fd9cdae56cf2edbdc9c49b15da49cd5ad04be70acbbe2475c9c50200183 lib/codeql/rust/elements/internal/generated/CastExpr.qll ddc20054b0b339ad4d40298f3461490d25d00af87c876da5ffbc6a11c0832295 f4247307afcd74d80e926f29f8c57e78c50800984483e6b6003a44681e4a71f3 +lib/codeql/rust/elements/internal/generated/CfgAtom.qll 4379fe45c14c3f8d6bdbc2d7879082d1dbcfee00973c91d93a29ed01f9477dad 52488050dddacb84729ddf06cfe1d71c33e052015f1dff544d805ebbf286150d +lib/codeql/rust/elements/internal/generated/CfgAttrMeta.qll 8bbf153628df0e59d5c66bd41788fbbfb83b44e8870b695f5551a8961e7d4464 f605ddb63a1adc2a881e95b6adbbd908e341aca24448cd1441c7021a1eb70ae1 +lib/codeql/rust/elements/internal/generated/CfgComposite.qll 96ea6dc95579b31808d1b6cc10c8a42bb8d2b211fe6092eb62416b225297c15e 37ba82588d34831abf4426b658e1b063044f6093879bc8a704432cb8f99785d8 +lib/codeql/rust/elements/internal/generated/CfgMeta.qll 6e2e5f26a57781af0e46ddcf589f4d33637d304eca28b9c4c4e01108d075c590 015385a2fc33bfb6fbe3d3353861dea36ed00cbcf810e64c36fa46cae140218d +lib/codeql/rust/elements/internal/generated/CfgPredicate.qll 736fe7385e2af5bb86c349bb1b8dd030aef191541f6af24694e3c460b8272f61 4117ee073683eb5fb81bae9e7e49b4ad0991cfcb53e0b7b4160199931a300632 lib/codeql/rust/elements/internal/generated/ClosureExpr.qll 818aff75d86821c670d8ba0720c3270681b3e070140a9c41beab2a811b43eee6 9bf2d1d38f6c4a99d7c058f8ed096141f5ba6a75d2d26a464f0d65ed4e554222 lib/codeql/rust/elements/internal/generated/Comment.qll cd1ef861e3803618f9f78a4ac00516d50ecfecdca1c1d14304dc5327cbe07a3b 8b67345aeb15beb5895212228761ea3496297846c93fd2127b417406ae87c201 lib/codeql/rust/elements/internal/generated/Const.qll 3e606f0198b6461a94964dba7a4d386408f01651d75378eeab251dfceccf49c8 20fe276cded4764bdb1cd50de956bea88d7cd731909c0b84b4abb972b3094959 @@ -501,7 +534,8 @@ lib/codeql/rust/elements/internal/generated/ForBinder.qll 7be6b8e3934db8cd4ac326 lib/codeql/rust/elements/internal/generated/ForExpr.qll 7c497d2c612fd175069037d6d7ff9339e8aec63259757bb56269e9ca8b0114ea dc48c0ad3945868d6bd5e41ca34a41f8ee74d8ba0adc62b440256f59c7f21096 lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll 7daa3b938592b590d604203e7d0fc5c34c2bffe6adcceee5a5e0c681ed16214c f1380179cbdc188ad133c946d9e17e85aed0d77771b319f663d8eada0f7cf17d lib/codeql/rust/elements/internal/generated/Format.qll 934351f8a8ffd914cc3fd88aca8e81bf646236fe34d15e0df7aeeb0b942b203f da9f146e6f52bafd67dcfd3b916692cf8f66031e0b1d5d17fc8dda5eefb99ca0 -lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll c762a4af8609472e285dd1b1aec8251421aec49f8d0e5ce9df2cc5e2722326f8 c8c226b94b32447634b445c62bd9af7e11b93a706f8fa35d2de4fda3ce951926 +lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll e12e470cfe23da78cb82258f7e1e9e263fd11a8ff6b9a31facf130264e1d2f86 31e8419530cff1811937ad24558aa2feaa5198df5eeb9e16b4197e8ce4efdce2 +lib/codeql/rust/elements/internal/generated/FormatArgsArgName.qll 7720d5a024c6487604952bb6a1925fd473d35d959079791acbdd98e5cd1de11e b7b4fa8121aa1f75f9467fb91e87b2a5ced1b1ce65ebe07249b78945433ea3a3 lib/codeql/rust/elements/internal/generated/FormatArgsExpr.qll 8aed8715a27d3af3de56ded4610c6792a25216b1544eb7e57c8b0b37c14bd9c1 590a2b0063d2ecd00bbbd1ce29603c8fd69972e34e6daddf309c915ce4ec1375 lib/codeql/rust/elements/internal/generated/FormatArgument.qll cd05153276e63e689c95d5537fbc7d892615f62e110323759ef02e23a7587407 be2a4531b498f01625effa4c631d51ee8857698b00cfb829074120a0f2696d57 lib/codeql/rust/elements/internal/generated/FormatTemplateVariableAccess.qll a6175214fad445df9234b3ee9bf5147da75baf82473fb8d384b455e3add0dac1 a928db0ff126b2e54a18f5c488232abd1bd6c5eda24591d3c3bb80c6ee71c770 @@ -518,6 +552,7 @@ lib/codeql/rust/elements/internal/generated/IndexExpr.qll cf951fc40f6690e966b4dc lib/codeql/rust/elements/internal/generated/InferTypeRepr.qll 4f101c1cb1278e919f9195cac4aa0c768e304c1881394b500874e7627e62d6c4 dca3f85d0a78ecc8bf030b4324f0d219ffff60784a2ecf565a4257e888dea0ff lib/codeql/rust/elements/internal/generated/Item.qll 03077c9d2f3200ebbc5df5d31f7d9b78a3ae25957ac46899a19a93684b2d7306 6492e341b9d9270c0181da0a5330f588238ced81657041ad1ad343db2bdf210b lib/codeql/rust/elements/internal/generated/ItemList.qll 1571a3ab0f2c7c0d8384549f8eac7f6e6863c42f3ec5d5ea5e01fc26b9f1056f 7b2cade995505f214df9bb2d73143a28b2499f76d88abc56ae8fcc59bf709204 +lib/codeql/rust/elements/internal/generated/KeyValueMeta.qll 0cd628f043ee5d693f602d91cd6d4e3e889beed905d84ae215be2ce0988bd2a9 4fa22e86456df225c14ae10f6c0d2509447efed81ef7bc98a88c61b0f06c1a1c lib/codeql/rust/elements/internal/generated/Label.qll 6630fe16e9d2de6c759ff2684f5b9950bc8566a1525c835c131ebb26f3eea63e 671143775e811fd88ec90961837a6c0ee4db96e54f42efd80c5ae2571661f108 lib/codeql/rust/elements/internal/generated/LabelableExpr.qll 896fd165b438b60d7169e8f30fa2a94946490c4d284e1bbadfec4253b909ee6c 5c6b029ea0b22cf096df2b15fe6f9384ad3e65b50b253cae7f19a2e5ffb04a58 lib/codeql/rust/elements/internal/generated/LetElse.qll 9e6f7057b8cb7d37b0ea79d540520028febe017ed8e9def95927ffa3fcdc1af4 3ee7d344d718898f25eb2a7a646d3c6704e8f1f22b83d0c0ea727cff74161946 @@ -542,7 +577,7 @@ lib/codeql/rust/elements/internal/generated/MatchArm.qll f8c4c955c50f8398159c492 lib/codeql/rust/elements/internal/generated/MatchArmList.qll 12d969ecb267a749918e93beda6ad2e5e5198f1683c7611772a0734a2748b04b 9226ff7cadcab4dc69009f3deeda7320c3cee9f4c5b40d6439a2fe2a9b8e8617 lib/codeql/rust/elements/internal/generated/MatchExpr.qll b686842e7000fd61e3a0598bf245fb4e18167b99eca9162fdfdff0b0963def22 00f1743b1b0f1a92c5a687f5260fda02d80cc5871694cad0d5e7d94bac7fe977 lib/codeql/rust/elements/internal/generated/MatchGuard.qll 58fa1d6979ef22de2bd68574c7ffcf4a021d7543445f68834d879ff8cee3abcb 072f22a7929df3c0e764b2a770b4cdf03504b3053067d9b9008d6655fb5837e1 -lib/codeql/rust/elements/internal/generated/Meta.qll 15e98e8d38f5618b7053057a629b135aae5e105fbf72731833a644fb695244c0 2977b6a0781c89383e87c595b14a39851f27b2508296f3e77466eea44c916188 +lib/codeql/rust/elements/internal/generated/Meta.qll 5c3358c737d504dacfa3227b80ceeead3cdeebbd7498d1d0ac88570cac1d91ec cd04ebdf19cf6710ce43e888211e61b0740aa6298db9a5ec79f29a1301a60b40 lib/codeql/rust/elements/internal/generated/MethodCallExpr.qll ffce98a6a1921822b12ead721cff0878553eb3e049c5d2184a7abce32b6615b4 d1408a0f47ee5764fe7b484494daf6e1f99b1c6a505274c48545b3e650ef8baf lib/codeql/rust/elements/internal/generated/Missing.qll 16735d91df04a4e1ae52fae25db5f59a044e540755734bbab46b5fbb0fe6b0bd 28ca4e49fb7e6b4734be2f2f69e7c224c570344cc160ef80c5a5cd413e750dad lib/codeql/rust/elements/internal/generated/Module.qll ebae5d8963c9fd569c0fbad1d7770abd3fd2479437f236cbce0505ba9f9af52c fa3c382115fed18a26f1a755d8749a201b9489f82c09448a88fb8e9e1435fe5f @@ -558,13 +593,14 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll eaa0cd4402d3665013d47e lib/codeql/rust/elements/internal/generated/ParenExpr.qll 812d2ff65079277f39f15c084657a955a960a7c1c0e96dd60472a58d56b945eb eb8c607f43e1fcbb41f37a10de203a1db806690e10ff4f04d48ed874189cb0eb lib/codeql/rust/elements/internal/generated/ParenPat.qll 24f9dc7fce75827d6fddb856cd48f80168143151b27295c0bab6db5a06567a09 ebadbc6f5498e9ed754b39893ce0763840409a0721036a25b56e1ead7dcc09aa lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 03f5c5b96a37adeb845352d7fcea3e098da9050e534972d14ac0f70d60a2d776 ed3d6e5d02086523087adebce4e89e35461eb95f2a66d1d4100fe23fc691b126 -lib/codeql/rust/elements/internal/generated/ParentChild.qll b0e3c13b2ca75faaf0d92b2ca3d70cac7b78b3729aaccf635063cc5836c163af a340e8f34a6d7425f38845e789b4aeb83aec90c11429a68ad6632a5aa132fa57 +lib/codeql/rust/elements/internal/generated/ParentChild.qll 8f1fee0d67dcac880ed20a6bdee5810a85ae752ffc3fb1d5f76d5aa2b9b54d4e 16387ca21c94f237f47b9be9b27589fea090321219c4ab73ab01d03deaea1429 lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll d901fdc8142a5b8847cc98fc2afcfd16428b8ace4fbffb457e761b5fd3901a77 5dbb0aea5a13f937da666ccb042494af8f11e776ade1459d16b70a4dd193f9fb lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4 lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd lib/codeql/rust/elements/internal/generated/PathAstNode.qll b02654422f80e398027069135bb01205358f0ab82ded3408d83d066f300996a3 345e7f92a75bfc71657b223602f60c36f7637d6f2e3798f07e2d2926eea2431b lib/codeql/rust/elements/internal/generated/PathExpr.qll 34ebad4d062ce8b7e517f2ab09d52745fb8455203f4a936df7284ad296638387 ba66781cdbdeb89c27a4bfb2be0f27f85fb34978d699b4e343446fb0d7ad2aa6 lib/codeql/rust/elements/internal/generated/PathExprBase.qll d8218e201b8557fa6d9ca2c30b764e5ad9a04a2e4fb695cc7219bbd7636a6ac2 4ef178426d7095a156f4f8c459b4d16f63abc64336cb50a6cf883a5f7ee09113 +lib/codeql/rust/elements/internal/generated/PathMeta.qll 42cf084a78acb656a86a6a9b3cd893b93176a6ec9fc989a0232f01cfa3cbd228 cccedf3ca1e353d55979354b0baa23d936890ae9581097cfe4b44748ca797f18 lib/codeql/rust/elements/internal/generated/PathPat.qll 003d10a4d18681da67c7b20fcb16b15047cf9cc4b1723e7674ef74e40589cc5a 955e66f6d317ca5562ad1b5b13e1cd230c29e2538b8e86f072795b0fdd8a1c66 lib/codeql/rust/elements/internal/generated/PathSegment.qll 48b452229b644ea323460cd44e258d3ea8482b3e8b4cb14c3b1df581da004fa8 2025badcfab385756009a499e08eecc8ffd7fa590cd2b777adb283eebcc432c6 lib/codeql/rust/elements/internal/generated/PathTypeRepr.qll f12fe234d7fb1a12678b524434fcdd801453d90eb778b9173f7197ff3d957557 a1be605f8937c5bd3a3a9cb277782c24446c9f5ef8363e6f5ee8f6229886b6f6 @@ -573,7 +609,7 @@ lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 8d0ea4f6c7f8203340bf lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9 lib/codeql/rust/elements/internal/generated/RangePat.qll 80826a6a6868a803aa2372e31c52a03e1811a3f1f2abdb469f91ca0bfdd9ecb6 34ee1e208c1690cba505dff2c588837c0cd91e185e2a87d1fe673191962276a9 -lib/codeql/rust/elements/internal/generated/Raw.qll 6e32bd7167d3eece2d22f893a92410129b1bd18e59533b1cf82f72f31465b43a bb25c56118df0e2755be2350cf307c19e6c4d85b2a39388c08f2cc1bad303692 +lib/codeql/rust/elements/internal/generated/Raw.qll 3c0155cada06e8b03749b6607abeca93a865f5935a905043ac91c53d417175cd 6ebbd128c0f426155fcbda9a2efd9c890d108b3ed87068830a756664d90a96c2 lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66 lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05 lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll 5b0663a6d234572fb3e467e276d019415caa95ef006438cc59b7af4e1783161e 0e27c8a8f0e323c0e4d6db01fca821bf07c0864d293cdf96fa891b10820c1e4b @@ -593,17 +629,18 @@ lib/codeql/rust/elements/internal/generated/Struct.qll 56775b98f793c108bd0eb8f35 lib/codeql/rust/elements/internal/generated/StructExpr.qll e77702890561102af38f52d836729e82569c964f8d4c7e680b27992c1ff0f141 23dc51f68107ab0e5c9dd88a6bcc85bb66e8e0f4064cb4d416f50f2ba5db698c lib/codeql/rust/elements/internal/generated/StructExprField.qll 6bdc52ed325fd014495410c619536079b8c404e2247bd2435aa7685dd56c3833 501a30650cf813176ff325a1553da6030f78d14be3f84fea6d38032f4262c6b0 lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll 298d33442d1054922d2f97133a436ee559f1f35b7708523284d1f7eee7ebf443 7febe38a79fadf3dcb53fb8f8caf4c2780f5df55a1f8336269c7b674d53c6272 -lib/codeql/rust/elements/internal/generated/StructField.qll 0ccd678b64b82fdab7ffe9eb74f0d393b22da4459fe72248828896b5204c009c 0faf5a517eccc43141a48809ed35b864341a35764de2dba7442daa899ff4ff69 +lib/codeql/rust/elements/internal/generated/StructField.qll 23c5a0b26936582f43b8bb567825257aab29ee8a3d4ff646ca1dff2e3063bf41 163c446ae52519fd77c1108719e014c41caad205b303848782c45fa50b37b254 lib/codeql/rust/elements/internal/generated/StructFieldList.qll 5da528a51a6a5db9d245772aec462d1767bcc7341e5bedd1dc1bbedd3e4ab920 dac4cee3280eef1136ffc7fbc11b84b754eb6290fc159c6397a39ae91ceeaa13 lib/codeql/rust/elements/internal/generated/StructPat.qll c76fa005c2fd0448a8803233e1e8818c4123301eb66ac5cf69d0b9eaafc61e98 6e0dffccdce24bca20e87d5ba0f0995c9a1ae8983283e71e7dbfcf6fffc67a58 lib/codeql/rust/elements/internal/generated/StructPatField.qll 5b5c7302dbc4a902ca8e69ff31875c867e295a16a626ba3cef29cd0aa248f179 4e192a0df79947f5cb0d47fdbbba7986137a6a40a1be92ae119873e2fad67edf lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll 1a95a1bd9f64fb18e9571657cf2d02a8b13c747048a1f0f74baf31b91f0392ad fc274e414ff4ed54386046505920de92755ad0b4d39a7523cdffa4830bd53b37 -lib/codeql/rust/elements/internal/generated/Synth.qll 3b9f71b9b6b9952c967e1ba74175b74dd563492d5adc00a27e19ab735bf37918 3ef3e4fe71ab08f772ebd68036cba7b2ec4109d706cfb03747aa05835f376628 -lib/codeql/rust/elements/internal/generated/SynthConstructors.qll ec935bac4f775b64c76cd15ab975d885f544e77bf4833fd0f47acd40438fe66f ec935bac4f775b64c76cd15ab975d885f544e77bf4833fd0f47acd40438fe66f +lib/codeql/rust/elements/internal/generated/Synth.qll f3914d3d346fe9dad959b7c7fa88a791860284c848aaa339b800e521195dde08 87a338c138bc8322ddc34b7a265232be294cf7b0a07944b478b8ee9531841e6a +lib/codeql/rust/elements/internal/generated/SynthConstructors.qll aea619227c640e27d715bf57c00bfde840a31d28addc8baee3b38aeb16bdf721 aea619227c640e27d715bf57c00bfde840a31d28addc8baee3b38aeb16bdf721 lib/codeql/rust/elements/internal/generated/Token.qll 77a91a25ca5669703cf3a4353b591cef4d72caa6b0b9db07bb9e005d69c848d1 2fdffc4882ed3a6ca9ac6d1fb5f1ac5a471ca703e2ffdc642885fa558d6e373b lib/codeql/rust/elements/internal/generated/TokenTree.qll 1a3c4f5f30659738641abdd28cb793dab3cfde484196b59656fc0a2767e53511 de2ebb210c7759ef7a6f7ee9f805e1cac879221287281775fc80ba34a5492edf +lib/codeql/rust/elements/internal/generated/TokenTreeMeta.qll 6952cd186e38c4a41131f93754010c8af3c210324d5a8ce3831694aa6be9f2aa 7a23c380fc8aa02c53370e0c68536a7e9fed8aad58185cb0f6110093c3067543 lib/codeql/rust/elements/internal/generated/Trait.qll 8fa41b50fa0f68333534f2b66bb4ec8e103ff09ac8fa5c2cc64bc04beafec205 ce1c9aa6d0e2f05d28aab8e1165c3b9fb8e24681ade0cf6a9df2e8617abeae7e -lib/codeql/rust/elements/internal/generated/TraitAlias.qll 40a296cf89eceaf02a32db90acb42bdc90df10e717bae3ab95bc09d842360a5b af85cf1f8fa46a8b04b763cdcacc6643b83c074c58c1344e485157d2ceb26306 +lib/codeql/rust/elements/internal/generated/TryBlockModifier.qll 812cc73a945abaa51054e7261daf4dc10912f1e331f202186001ed087a962696 a76457699f3f6bc1373276a0de2f14365e573d34e82fd292c6c9261612c0f17e lib/codeql/rust/elements/internal/generated/TryExpr.qll 73052d7d309427a30019ad962ee332d22e7e48b9cc98ee60261ca2df2f433f93 d9dd70bf69eaa22475acd78bea504341e3574742a51ad9118566f39038a02d85 lib/codeql/rust/elements/internal/generated/TupleExpr.qll 98f10bc72d09f98e3be87f41b1a3cbf037f4a7e3d3560dfa6d5759905a8177a5 6a9eb5568c518876b2912371e2b7b774cf5245097c5a0206eda35b749995f00b lib/codeql/rust/elements/internal/generated/TupleField.qll 121f7b35e28b86592f83e00993f9041acbe7ab636db894d03055149c7f15fd32 b1ba9e1182307a44bb5afc11e92d62e7eb2c819ccdfb28ef54943b6fec676827 @@ -622,12 +659,13 @@ lib/codeql/rust/elements/internal/generated/UnderscoreExpr.qll b3780c99c5d57159b lib/codeql/rust/elements/internal/generated/Unextracted.qll 01563dfd769d6dc3c6b8a40d9a4dc0d99a3b6a0c6725c180d2bf4d7633929a17 a93ce90f8c03f4305e59de9c63f089fc7935298fc9a73d091d76933cf63e790c lib/codeql/rust/elements/internal/generated/Unimplemented.qll a3eb304781991bff1227de1e4422b68bf91e7b344e4f6c9e874b324e82a35e60 6bc4839fda3850a56dc993b79ef9ba921008395c8432b184e14438fba4566f21 lib/codeql/rust/elements/internal/generated/Union.qll 4df8fc632f7bcc0cbd564cd1c148c1a2438f26e6a83cd6470e15870120f677fe c74dea0a4ddfd581b9208d7907ea134219cafd217294315acf5c595de38a61f3 +lib/codeql/rust/elements/internal/generated/UnsafeMeta.qll ec5515798be2395a1256460d9272fe023bc604d952eba5d18e13d3e43fc801ff 3ece9a326a7c91d49395e3dc6687a38e2e2736cc20e4b7c534eb7a4e73613264 lib/codeql/rust/elements/internal/generated/Use.qll cf95b5c4756b25bee74113207786e37464ffbc0fb5f776a04c651300afc53753 1fe26b3904db510184cb688cb0eeb0a8dbac7ac15e27a3b572d839743c738393 lib/codeql/rust/elements/internal/generated/UseBoundGenericArg.qll 69162794e871291545ea04f61259b2d000671a96f7ca129f7dd9ed6e984067c4 31de9ebc0634b38e2347e0608b4ea888892f1f2732a2892464078cd8a07b4ee8 lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll cedde7ccf689e3a2a246113be94544c206c56fb1c01b83b074e1f6edd3acfced f022ea4c653d1b5f311917efde8e59be27394ce7f6abf2561bb1e42f93f74adf lib/codeql/rust/elements/internal/generated/UseTree.qll 3d7cbcc8ae76068b8f660c7d5b81b05595026043015cd6b4d42a60ed4c165811 b9f0bcf82feb31f31406e787670fee93e1aa0966bcc0e4cc285c342e88793e4e lib/codeql/rust/elements/internal/generated/UseTreeList.qll 38efaa569b76ca79be047703279388e8f64583a126b98078fbbb6586e0c6eb56 1623a50fd2d3b1e4b85323ad73dd655172f7cbc658d3506aaa6b409e9ebe576e -lib/codeql/rust/elements/internal/generated/Variant.qll fa6909715133049b3dba4622e6262fa30c4a9478b6219ec4fd12e07c58750709 71fc2ddac97fc4c4e6b92a13ee217cccc81dffc7c12295b6bc97c56ad25a92cc +lib/codeql/rust/elements/internal/generated/Variant.qll 7a1aedf6518780d1534147d5a52d14542698befe1d8eb8b78eb10d2664c3a69b 180d6de0826b1a75bf8b1853d539f605bff2eb3794ccb57ff23e5b3ee3171956 lib/codeql/rust/elements/internal/generated/VariantList.qll 3f70bfde982e5c5e8ee45da6ebe149286214f8d40377d5bc5e25df6ae8f3e2d1 22e5f428bf64fd3fd21c537bfa69a46089aad7c363d72c6566474fbe1d75859e lib/codeql/rust/elements/internal/generated/Visibility.qll af1069733c0120fae8610b3ebbcdcebe4b4c9ce4c3e3d9be3f82a93541873625 266106bdff4d7041d017871d755c011e7dd396c5999803d9e46725b6a03a2458 lib/codeql/rust/elements/internal/generated/WhereClause.qll aec72d358689d99741c769b6e8e72b92c1458138c097ec2380e917aa68119ff0 81bb9d303bc0c8d2513dc7a2b8802ec15345b364e6c1e8b300f7860aac219c36 @@ -636,7 +674,7 @@ lib/codeql/rust/elements/internal/generated/WhileExpr.qll 0353aab87c49569e1fbf58 lib/codeql/rust/elements/internal/generated/WildcardPat.qll d74b70b57a0a66bfae017a329352a5b27a6b9e73dd5521d627f680e810c6c59e 4b913b548ba27ff3c82fcd32cf996ff329cb57d176d3bebd0fcef394486ea499 lib/codeql/rust/elements/internal/generated/YeetExpr.qll cac328200872a35337b4bcb15c851afb4743f82c080f9738d295571eb01d7392 94af734eea08129b587fed849b643e7572800e8330c0b57d727d41abda47930b lib/codeql/rust/elements/internal/generated/YieldExpr.qll 37e5f0c1e373a22bbc53d8b7f2c0e1f476e5be5080b8437c5e964f4e83fad79a 4a9a68643401637bf48e5c2b2f74a6bf0ddcb4ff76f6bffb61d436b685621e85 -lib/codeql/rust/elements.qll be9c7606d429b62fcb8686285e8eeff41f45f0dd22feb5b4fd3ea2f3cdfb39be be9c7606d429b62fcb8686285e8eeff41f45f0dd22feb5b4fd3ea2f3cdfb39be +lib/codeql/rust/elements.qll 55ccf59deeb718517703e2aa9e90452736de118032d3bdad4b4ab7295cbb795a 55ccf59deeb718517703e2aa9e90452736de118032d3bdad4b4ab7295cbb795a test/extractor-tests/generated/Abi/Abi.ql 086ed104ab1a7e7fe5c1ed29e03f1719a797c7096c738868bf6ebe872ab8fdaa fe23fe67ab0d9201e1177ea3f844b18ed428e13e3ce77381bf2b6910adfa3a0e test/extractor-tests/generated/ArgList/ArgList.ql da97b5b25418b2aa8cb8df793f48870c89fa00759cdade8ddba60d7f1f4bbc01 acfd5d2caf67282ad2d57b961068472100482d0f770a52a3c00214c647d18c75 test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql 42b365276aa43e2cad588338463542d3ce1dd0db3a428621554584b07a1431d5 08a66a8b69af35ee3bc64c35c453a19a6c9881cc6cc7e65275d1fff056121270 @@ -659,11 +697,15 @@ test/extractor-tests/generated/Attr/Attr.ql 88f9a524b557e81006a5079ac6d703c42df0 test/extractor-tests/generated/AwaitExpr/AwaitExpr.ql 93ccb34e00b37deecd6d3019bb47948daffe55a2d5d031c60b4f6fa7a61412a4 5502459743efd8346ab943ff3334545407b21aaf0771bf422be58a5df5d27381 test/extractor-tests/generated/BecomeExpr/BecomeExpr.ql 7076b3f965c680e8f03bccd9ecb4495d03d35a4f460ec43628c19314eae8b49e 961e6e656e467ba389bbc6db39f345d9a8afaae4584d357dfe47484c6afadb99 test/extractor-tests/generated/BinaryExpr/BinaryExpr.ql 4e849e6eaae581f487aa74d09d1106e441c876b06474389687a04df446690a4d 6cd36dfdb0af25396d2219fe2789f898e2393cc3f10a25410b2ede5d216707cd -test/extractor-tests/generated/BlockExpr/BlockExpr.ql cd6ef66de9e56ebb74964e59617d47999fb8c9081e885acece17a3b747a35ae1 6766844c1b87e518688565f2469575af5ca4e0ff4eb0c0b620df73a451d86a0b +test/extractor-tests/generated/BlockExpr/BlockExpr.ql d2917477f9cf09e1548fdbf9a5d835a1c0cec14705b3cbd16831c6a169050339 85937baa90543dc63407c53d69090d16134591f5f0baaf32c927105fb3bab865 test/extractor-tests/generated/BoxPat/BoxPat.ql 854c9ba4e045dbe7ea1666866c1c443a92597df0ce02f4ca5993142925941c39 a22c17cce0bff7d1df51b817d2cb1a61045357f91be14465166971efa5f5daad test/extractor-tests/generated/BreakExpr/BreakExpr.ql c2181211da3dfe983cfca93ead32d5d211e91181899b9477152c58124eaa846d 57e57b926e14db2efb2e88e04699608b2ba9797ee4f6c4f710135b6858982256 test/extractor-tests/generated/CallExpr/CallExpr.ql 16d85d6e5cb68384d0b932fb4506c1855019b819f2c5faa39a4472f39427623a 14df8383948cedaff88f514f7239c1ec8c424720d24e3546cbcd0b689acecdb1 test/extractor-tests/generated/CastExpr/CastExpr.ql 3480ec51072399409b7553ab6139c832db6ed4ca991f3a7a2282a39afe07c6f2 614c8ea7a2fe30d57583dbf84ed7a12743c2aba49d8c6252d31af3ed10853a39 +test/extractor-tests/generated/CfgAtom/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 +test/extractor-tests/generated/CfgAttrMeta/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 +test/extractor-tests/generated/CfgComposite/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 +test/extractor-tests/generated/CfgMeta/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql 675ae07193241fbd710ece4f74f86e9b00f47841299b1c5934f55dbf13a4b4af 21fb0664619c9c889e9491bfd651c2814dcf0f158dd6269937bd0acc18be6b0e test/extractor-tests/generated/Comment/Comment.ql 0e0454911d2cf2e7ef5c6d860b84c57b9d490090914ebcf4fa0e8a70f777f066 cbd1c195276ef163f8d3c122344738c884dc9fb70eb2f9b7067829d735d48c4c test/extractor-tests/generated/Const/Const.ql 97797a56743b519c1990682ccb22af6d997ed5eea1e280b52ad31b16a5836f9e e5289ebcb71a25b7ac0a7e1aa0111e4f3ec83d26b7f83e819509c9b9d756921d @@ -683,8 +725,9 @@ test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.ql 1501730f1e02e9d22b test/extractor-tests/generated/ForBinder/ForBinder.ql c95fd006eaddb9535eda0d527d71cdd5d3745fe464fd809a8d58b8c4dfc8790e 1d8b38059b8a25965eab9a8a1286384aa994d7cac7414b70b63c6a3d6bcf3c39 test/extractor-tests/generated/ForExpr/ForExpr.ql 3bac38bf33e140ae9f88371ec90409f7de867e39cdea46f02b15519b236b57cb aade1baf6e6081b3b9bce5b7e95fe4b7ffe00ea9450fd6e1d6692ad97cf93fe9 test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.ql 5961055988b3a7749fb80e24d924bf1b67b0c52a6c895379beedd66a34bad04f d8ab72fac742314ead1aa0e1fed2535cc6597d278f3eef017bc9f8fd8cde83e7 +test/extractor-tests/generated/FormatArgsArgName/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 test/extractor-tests/generated/FormatArgsExpr/Format.ql 237ed2e01d9a75ee8521d6578333a7b1d566f09ef2102c4efcbb34ea58f2f9e8 09007ce4de701c0d1c0967f4f728ea9e627d9db19431bd9caebbf28ee51a1f36 -test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql 5abcb565dcd2822e2ea142d19b8c92194ee17c71c3db7595248690034559d174 1ffa743fc678701ffeefff6c14c1414bb9158e6756f32380dd590ff44b19ca5a +test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql 30e57945c51bfde4c0cf69e404741548c899450e5dd6622b8caabd1394b10eaf d6d38db1e2ea20ce5f0cd858817fe306397a9ba50eb9be08e132eaf897cb5592 test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql 243c2f9d830f1eae915749e81ac78d3c140280385b0002d10fcc4d2feaf14711 72b90a99a8b1c16baf1e254e1e3463c3ce5409624a2a90829122717d4e5a2b74 test/extractor-tests/generated/FormatArgsExpr/FormatArgument.ql 0a345eb48dba8e535d12a00e88008e71b3ce692fbf8f9686c8885e158635dffe eab1f230fd572474a3f304f97d05bbf4a004c52773aaf2d34f999192244c0b80 test/extractor-tests/generated/FormatArgsExpr/FormatTemplateVariableAccess.ql 24108cdc54feb77c24bb7894744e36e374f0c03d46d6e6c3fcb2012b1ad117f6 05a6b6f51029ee1a15039aa9d738bb1fd7145148f1aad790198fba832572c719 @@ -698,6 +741,7 @@ test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.ql 311c6c1e18 test/extractor-tests/generated/IndexExpr/IndexExpr.ql ecfca80175a78b633bf41684a0f8f5eebe0b8a23f8de9ff27142936687711263 27d4832911f7272376a199550d57d8488e75e0eeeeb7abbfb3b135350a30d277 test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.ql 6ba01a9e229e7dfdb2878a0bdbeb6c0888c4a068984b820e7a48d4b84995daa2 7120cafd267e956dbb4af5e19d57237275d334ffe5ff0fb635d65d309381aa46 test/extractor-tests/generated/ItemList/ItemList.ql e29302a9212b07fdaf93618852be30adfac64b292e9a0ddbf63addb803daaa98 7e69a78b0f58ef9344892113799092149024c1352b0965a6326d8a45cd44771a +test/extractor-tests/generated/KeyValueMeta/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 test/extractor-tests/generated/Label/Label.ql da1f302da6cb31e6ccb73c722d9d5cfaad6a26d9869b3fa09fe50b03e26f3d9b 5fbfabfef6567ec6609be1af7859eba8ecb1f7f1878b8fac426e0d7098c17ba1 test/extractor-tests/generated/LetElse/LetElse.ql ec8e7362ce9f903731ed6bfc190fc18a6f60abf150f5cee878a0fb9adaa20b94 2e019b6e246caabe4800ab940bc150bd8e466d59dde87bd614bf064adb703c8f test/extractor-tests/generated/LetExpr/LetExpr.ql 59f70af49ba496559a7ccfe30e737597fb473794d677627d344a9285f85dad33 b59d1f665c600055666a422c4008878cecf17d9ff847cd02b6e0e82ca73073bc @@ -719,7 +763,6 @@ test/extractor-tests/generated/MatchArm/MatchArm.ql 704976bd48e56a0a2fce7c2d9454 test/extractor-tests/generated/MatchArmList/MatchArmList.ql bbc679fe6d8dedf9131d0fa5faa7b44c138c5f56b9cf3cb209fd3ccd614b689c 916c53a2b68646b52f2d28eca2a19218ba9d12eb8edf7c6cc4140dace1bf4e0d test/extractor-tests/generated/MatchExpr/MatchExpr.ql b75a5936401bb5ca38686f1413f5c8267ad685722560a2e9041dacf2f8d54abc 7da57118fe5b1f7f5cbe8d6b5f3ae70816fd4837b1c2e6401b98175b36ca233f test/extractor-tests/generated/MatchGuard/MatchGuard.ql 91de18a0a18d120db568b2c329e5cb26f83e327cf22c5825c555ea17249d7d23 0bcdb25895362128517227c860b9dad76851215c2cdf9b2d0e5cc3534278f4ec -test/extractor-tests/generated/Meta/Meta.ql 43dd1cd669099b38396b316616992af6d84b0c1cee953b19235a00ab3d3bb43c 80b1885809aa074357e21707d1f8c6dca19f0b968ccff43229bb0d5c6fffb2b2 test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql 9d5af6b4771a8725fa5b56ccb3e2a33158b18c876546b88e6dc63da1f887910a 494c8c2fe5584aac45c828b38d8bb20c113927a1e909773d4a2dbd3965d26170 test/extractor-tests/generated/Module/Module.ql d7c442fd1b1f4f00da87e2228fc1aeeab0bb86648b2aa06a9dd6f40dbae1ee28 3229388727d14048e87238bcda5fde1bed503e5cac088922381e5833cfc32fa9 test/extractor-tests/generated/Name/Name.ql b2fe417f7c816f71d12622b4f84ece74eba3c128c806266a55b53f8120fa4fb3 8bc65bbf3f2909637485f5db7830d6fc110a94c9b12eefe12d7627f41eae2256 @@ -738,6 +781,7 @@ test/extractor-tests/generated/Path/PathExpr.ql caa2a41b5cc3af837fcf52b49abc5f45 test/extractor-tests/generated/Path/PathPat.ql 8a6a759f4bbf4fa9c23fd235ce4d63f04bd715a86a6e71bba0a324fe1231d947 be23d83e4f6ac209f3f7c382fce6b9bc57db17a26b236bdf8215848285e345ff test/extractor-tests/generated/Path/PathSegment.ql 87774cc2e9d1be7aaf8748d418b151d7ec03fb20fda9430ebabd86ddaebf5538 699545d8eb2d6325bcd2c253d56339bd71170b34e80efe5155189fbbdde9fbbc test/extractor-tests/generated/Path/PathTypeRepr.ql 32023340cb9aa1fbf52a1a3e330c6f3206e1c64c9dce2f795d9e434aa5a1533b f451de0d4941ab79014d2883b46291f9f05f79d479fcdcab387020ab3ed68703 +test/extractor-tests/generated/PathMeta/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql 63e9dbae0d0b46d5e9d60c313e408c4c7ee1a93c5a26fe4c01a632911de961d0 09fcc28bb22553356aebf9ea93811703e5404b88022be8dab61ac81d3b187b75 test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.ql d9289bfe1e72d9560b3878e4557f8cfda578ef7bce67eb29d7320921c0ba46a5 f3ea108aa25635bffa7673bb66b2581ce246d3aae86edf878c6f1abca2493c16 test/extractor-tests/generated/RangeExpr/RangeExpr.ql c9776706d933606d1463bb08ed76457ac03a9558f6dac0218ef2012bc5e8e48f 77cafee86abc2680e1f9c925fbe664c05ba1b9a2533b1873242ef01dde1ce308 @@ -760,15 +804,16 @@ test/extractor-tests/generated/Struct/Struct.ql 57e837e3c665d24870d99492c8874441 test/extractor-tests/generated/StructExpr/StructExpr.ql 3b98205260e750cc7adc42b318deef2854cc3b4f921cbcfffc6d701553af3903 368bccf01db2fa069dca30d9fb0878f8e6a88d4ce58b333b24a18620933e4c91 test/extractor-tests/generated/StructExprField/StructExprField.ql b65375963aa24f0d1dd4c10784e32ab8c337ad431462ea1d081a0e456fbb1362 7f5a49e8df03ed0890b51c2e941d636fbbf70445a53d3af2c0f34a04f26bc6ef test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.ql 01dc3ef66d79836a3d372464f05454015648ab093f9547c5d9c5d55271acb718 83625301c097fa38d4e6021ea28b8adc6338076c8c2aa88a86a22aac412839f6 -test/extractor-tests/generated/StructField/StructField.ql dbdb627202975a0ca07ed441449ecc95d9d0764084a49a18e7849164b2e65ce2 8e7f32f28d15104575eaa985e892c162ec775adf3481c227ef618b5668168de7 +test/extractor-tests/generated/StructField/StructField.ql 322229f824f2e2e2c4fb76ff35e343559bbe986982d40ca8739a071ee9778de4 535c3958f316c7106de50aa507f159b99b58cef4707e1f6b0a5ea48913d9c49c test/extractor-tests/generated/StructFieldList/StructFieldList.ql 292170b20f3a55c0cd6a8d78ce99474ca68daf6fb380cffe00b2bd7074e1b73a 404bab780f290ae04d1d71d3c6d4e0092bb3d8c55e956168d2a445cbd6d1f06d test/extractor-tests/generated/StructPat/StructPat.ql 894babd64d3def35717cbeed6eb4799cf9f52e73992822b72fc521c93efb4935 5bd1502b69014d70464b4b76795e1732ac2a6db5d028bea52929cf1998af5f07 test/extractor-tests/generated/StructPatField/StructPatField.ql 92cb6a4b5234359c02d66085b10d41f37b77370491ed478ad6d4d9b12b943ecf 14bc2079763b53bc6ab11356f3bb21820ae9e4dd1b2a42a78665c32181c4ef92 test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.ql a3ba3e99d3c87d5e0ae0ad82cbea3600ac1745e9364d54d8d51224b51a5a09a5 5942ed2722c006bae99de9174249110bfc79594c5ef9a6dfc098ae2be269b8f3 test/extractor-tests/generated/TokenTree/TokenTree.ql 55592f43a6fe99045d0b0b1e2323211d3a3fd64a8c7d2b083f2518d4c3e2e4b0 8eeef2060c80b0918857ba9b3a8543a4b866ca04be3d5ca18aae8a26cbdb836e +test/extractor-tests/generated/TokenTreeMeta/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 test/extractor-tests/generated/Trait/AssocItemList.ql 065c4903992500423d796800e7dc9a5835a07cbada595108f3af6efa72517782 aa797bf5ddefb800d5ca7f49c19c5124b1007e1658129b27c8c3de34427c7f08 test/extractor-tests/generated/Trait/Trait.ql e59d9d97baedc5691f9fb837e3600b1b33808c598971d8abe28121a9c70292b4 0da2808421a1e1acbc61076d4b50c559f2abf02cbd5f69ba15a65457887ff435 -test/extractor-tests/generated/TraitAlias/TraitAlias.ql 9a4bcbf850afd833606f9447493b848e9a5df593198e5fc7a3a5bfb1c4c0782c 1f738eaf245220142d9fe5b88718980494b1e3c5b68609f5ee591056f23ea765 +test/extractor-tests/generated/TryBlockModifier/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 test/extractor-tests/generated/TryExpr/TryExpr.ql 4e3c224a7d5fb8f01654c7d3c79414daa575897cfa6f351fcd5b5832f53a151f d961a497c304c1c5aa1d94e04aed2bf17a2c422e315f05986e1a9027e69dbd2a test/extractor-tests/generated/TupleExpr/TupleExpr.ql 4011d94438903e96fa321285558f5791bee7e1d1fb26be0381586511cf439d1b c6bc8d08a8d5d98d7a52b72d5c597b63754fe12cec653c520833e4b71a9dcea4 test/extractor-tests/generated/TupleField/TupleField.ql ed681b7fee5e68d24db4999389727b2589e5af793d3c2ddc8b1e245713c0e1f8 4f867b29adf91b4bfa5052e16d392c16bf260e858aad11b60c42f1eddb476e61 @@ -783,11 +828,12 @@ test/extractor-tests/generated/TypeBoundList/TypeBoundList.ql 6827529eca62f5e7be test/extractor-tests/generated/TypeParam/TypeParam.ql c5f8f62f2877c719c3cf069f9d0ca83cebc14f7611c6c2dce86c85114ea2635c 751c630986f35a8d0d32fbeb61ca6ff801c96cd1829dbccc874fbf5f5158e98d test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql a7b7a93104fff28515154cf8e79045d3eea2494b5c46f1caf36639c53b1c64a7 070ee2e1664e3291646ea56681b5c93331f94dcc519deb28622beca3e26e16f3 test/extractor-tests/generated/Union/Union.ql 427757ef5aa4e95fde8f5047263cbbbc7e2614f9efabc51c9a5f9ba8d9b68310 d1d8840a4324e5727e1ecf6e696741e902b807b39ec82686b94211803eb2d0ba +test/extractor-tests/generated/UnsafeMeta/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 test/extractor-tests/generated/Use/Use.ql 1f084f3b49c910c6e01d2a81be2443e84c2836a5855b89874965efaf25d17511 d5bf37ba65f4d280312ca798bae22d2735c00cf91ff05ed6321f69b76b4551bc test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.ql 46ff2cf0fc8b561b21f8dff3230550f2feafbe52a7ea8b28bf183abef94ff241 92646f3bd15a8cf4c23ee9de4d857ac5c147e570ef0eb223423a109b4b79aedf test/extractor-tests/generated/UseTree/UseTree.ql 3c2bc924b54b9af5c95784023d4098924571ba464c5982124acea712c3ce0e93 8d9f963b61a9a8a83efd93438ce8b43d4aa763493338ad9afd2a3dc7a440892d test/extractor-tests/generated/UseTreeList/UseTreeList.ql faff7bfc060d5b0a922f38b37bf586596566186f704c9921651785580e86d684 81e5b90edeef0d3883547844a030e72b555d714de1ed8dded1c22a3772b4449a -test/extractor-tests/generated/Variant/Variant.ql 6b1936698cec413f1645d52e3f4d6d995968d432466241eb823c1ae635c852dd 0b5b0248f09ae01b683ea835299d51fa26f6b5a584e889c538b0f0cf13106d0f +test/extractor-tests/generated/Variant/Variant.ql 0de458e2d04e40e9a0c036e423d05af3617f4423b967e287f0800ccffd345633 921a8ca71390812f174c5220d54dfcfc7105e57ba3c301f5c86301a19d089bda test/extractor-tests/generated/VariantList/VariantList.ql 1c1d82ce3ecfa7daaae1920662510e81892ed899a3c2f785e2ff3670245a03cd 29d4c5ab2b737a92c7525789e10a4aa9848f1a327e34f4e9543018021106b303 test/extractor-tests/generated/Visibility/Visibility.ql 725d47d7444332133df603f9b06592dc40b0f83bf5e21ad4781c5658e001a3aa 2d65a30702a8bb5bc91caf6ae2d0e4c769b3eeb0d72ffbd9cdb81048be4061ad test/extractor-tests/generated/WhereClause/WhereClause.ql a6f0e69ffa6b997cac04d4da442eb8bde517a576840c953abcc40863b9099ba1 7ce888fffc3038d5b18f8c94d3b045815cd45500e1bb3849c05fc874edbeb695 diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index d8004cb5b35e..d4feb85fc476 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -36,6 +36,11 @@ /lib/codeql/rust/elements/CallExpr.qll linguist-generated /lib/codeql/rust/elements/Callable.qll linguist-generated /lib/codeql/rust/elements/CastExpr.qll linguist-generated +/lib/codeql/rust/elements/CfgAtom.qll linguist-generated +/lib/codeql/rust/elements/CfgAttrMeta.qll linguist-generated +/lib/codeql/rust/elements/CfgComposite.qll linguist-generated +/lib/codeql/rust/elements/CfgMeta.qll linguist-generated +/lib/codeql/rust/elements/CfgPredicate.qll linguist-generated /lib/codeql/rust/elements/ClosureExpr.qll linguist-generated /lib/codeql/rust/elements/Comment.qll linguist-generated /lib/codeql/rust/elements/Const.qll linguist-generated @@ -61,6 +66,7 @@ /lib/codeql/rust/elements/ForTypeRepr.qll linguist-generated /lib/codeql/rust/elements/Format.qll linguist-generated /lib/codeql/rust/elements/FormatArgsArg.qll linguist-generated +/lib/codeql/rust/elements/FormatArgsArgName.qll linguist-generated /lib/codeql/rust/elements/FormatArgsExpr.qll linguist-generated /lib/codeql/rust/elements/FormatArgument.qll linguist-generated /lib/codeql/rust/elements/FormatTemplateVariableAccess.qll linguist-generated @@ -77,6 +83,7 @@ /lib/codeql/rust/elements/InferTypeRepr.qll linguist-generated /lib/codeql/rust/elements/Item.qll linguist-generated /lib/codeql/rust/elements/ItemList.qll linguist-generated +/lib/codeql/rust/elements/KeyValueMeta.qll linguist-generated /lib/codeql/rust/elements/Label.qll linguist-generated /lib/codeql/rust/elements/LabelableExpr.qll linguist-generated /lib/codeql/rust/elements/LetElse.qll linguist-generated @@ -122,6 +129,7 @@ /lib/codeql/rust/elements/PathAstNode.qll linguist-generated /lib/codeql/rust/elements/PathExpr.qll linguist-generated /lib/codeql/rust/elements/PathExprBase.qll linguist-generated +/lib/codeql/rust/elements/PathMeta.qll linguist-generated /lib/codeql/rust/elements/PathPat.qll linguist-generated /lib/codeql/rust/elements/PathSegment.qll linguist-generated /lib/codeql/rust/elements/PathTypeRepr.qll linguist-generated @@ -155,8 +163,9 @@ /lib/codeql/rust/elements/StructPatFieldList.qll linguist-generated /lib/codeql/rust/elements/Token.qll linguist-generated /lib/codeql/rust/elements/TokenTree.qll linguist-generated +/lib/codeql/rust/elements/TokenTreeMeta.qll linguist-generated /lib/codeql/rust/elements/Trait.qll linguist-generated -/lib/codeql/rust/elements/TraitAlias.qll linguist-generated +/lib/codeql/rust/elements/TryBlockModifier.qll linguist-generated /lib/codeql/rust/elements/TryExpr.qll linguist-generated /lib/codeql/rust/elements/TupleExpr.qll linguist-generated /lib/codeql/rust/elements/TupleField.qll linguist-generated @@ -175,6 +184,7 @@ /lib/codeql/rust/elements/Unextracted.qll linguist-generated /lib/codeql/rust/elements/Unimplemented.qll linguist-generated /lib/codeql/rust/elements/Union.qll linguist-generated +/lib/codeql/rust/elements/UnsafeMeta.qll linguist-generated /lib/codeql/rust/elements/Use.qll linguist-generated /lib/codeql/rust/elements/UseBoundGenericArg.qll linguist-generated /lib/codeql/rust/elements/UseBoundGenericArgs.qll linguist-generated @@ -238,6 +248,15 @@ /lib/codeql/rust/elements/internal/BreakExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/CallExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/CastExprConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/CfgAtomConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/CfgAtomImpl.qll linguist-generated +/lib/codeql/rust/elements/internal/CfgAttrMetaConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/CfgAttrMetaImpl.qll linguist-generated +/lib/codeql/rust/elements/internal/CfgCompositeConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/CfgCompositeImpl.qll linguist-generated +/lib/codeql/rust/elements/internal/CfgMetaConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/CfgMetaImpl.qll linguist-generated +/lib/codeql/rust/elements/internal/CfgPredicateImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ClosureExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/CommentConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ConstArgConstructor.qll linguist-generated @@ -273,6 +292,8 @@ /lib/codeql/rust/elements/internal/ForTypeReprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/FormatArgsArgConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/FormatArgsArgImpl.qll linguist-generated +/lib/codeql/rust/elements/internal/FormatArgsArgNameConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/FormatArgsArgNameImpl.qll linguist-generated /lib/codeql/rust/elements/internal/FormatArgsExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/FunctionConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/GenericArgImpl.qll linguist-generated @@ -287,6 +308,8 @@ /lib/codeql/rust/elements/internal/InferTypeReprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ItemListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ItemListImpl.qll linguist-generated +/lib/codeql/rust/elements/internal/KeyValueMetaConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/KeyValueMetaImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LabelConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/LetElseConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/LetExprConstructor.qll linguist-generated @@ -319,7 +342,6 @@ /lib/codeql/rust/elements/internal/MatchExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MatchGuardConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MatchGuardImpl.qll linguist-generated -/lib/codeql/rust/elements/internal/MetaConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MetaImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MethodCallExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MissingConstructor.qll linguist-generated @@ -346,6 +368,8 @@ /lib/codeql/rust/elements/internal/PathConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PathExprBaseImpl.qll linguist-generated /lib/codeql/rust/elements/internal/PathExprConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/PathMetaConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/PathMetaImpl.qll linguist-generated /lib/codeql/rust/elements/internal/PathPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PathSegmentConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PathTypeReprConstructor.qll linguist-generated @@ -394,9 +418,11 @@ /lib/codeql/rust/elements/internal/TokenImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TokenTreeConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/TokenTreeImpl.qll linguist-generated -/lib/codeql/rust/elements/internal/TraitAliasConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/TraitAliasImpl.qll linguist-generated +/lib/codeql/rust/elements/internal/TokenTreeMetaConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/TokenTreeMetaImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TraitConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/TryBlockModifierConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/TryBlockModifierImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TryExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/TryExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TupleExprConstructor.qll linguist-generated @@ -421,6 +447,8 @@ /lib/codeql/rust/elements/internal/UnimplementedConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/UnimplementedImpl.qll linguist-generated /lib/codeql/rust/elements/internal/UnionConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/UnsafeMetaConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/UnsafeMetaImpl.qll linguist-generated /lib/codeql/rust/elements/internal/UseBoundGenericArgImpl.qll linguist-generated /lib/codeql/rust/elements/internal/UseBoundGenericArgsConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll linguist-generated @@ -478,6 +506,11 @@ /lib/codeql/rust/elements/internal/generated/CallExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Callable.qll linguist-generated /lib/codeql/rust/elements/internal/generated/CastExpr.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/CfgAtom.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/CfgAttrMeta.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/CfgComposite.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/CfgMeta.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/CfgPredicate.qll linguist-generated /lib/codeql/rust/elements/internal/generated/ClosureExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Comment.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Const.qll linguist-generated @@ -504,6 +537,7 @@ /lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Format.qll linguist-generated /lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/FormatArgsArgName.qll linguist-generated /lib/codeql/rust/elements/internal/generated/FormatArgsExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/FormatArgument.qll linguist-generated /lib/codeql/rust/elements/internal/generated/FormatTemplateVariableAccess.qll linguist-generated @@ -520,6 +554,7 @@ /lib/codeql/rust/elements/internal/generated/InferTypeRepr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Item.qll linguist-generated /lib/codeql/rust/elements/internal/generated/ItemList.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/KeyValueMeta.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Label.qll linguist-generated /lib/codeql/rust/elements/internal/generated/LabelableExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/LetElse.qll linguist-generated @@ -567,6 +602,7 @@ /lib/codeql/rust/elements/internal/generated/PathAstNode.qll linguist-generated /lib/codeql/rust/elements/internal/generated/PathExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/PathExprBase.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/PathMeta.qll linguist-generated /lib/codeql/rust/elements/internal/generated/PathPat.qll linguist-generated /lib/codeql/rust/elements/internal/generated/PathSegment.qll linguist-generated /lib/codeql/rust/elements/internal/generated/PathTypeRepr.qll linguist-generated @@ -604,8 +640,9 @@ /lib/codeql/rust/elements/internal/generated/SynthConstructors.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Token.qll linguist-generated /lib/codeql/rust/elements/internal/generated/TokenTree.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/TokenTreeMeta.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Trait.qll linguist-generated -/lib/codeql/rust/elements/internal/generated/TraitAlias.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/TryBlockModifier.qll linguist-generated /lib/codeql/rust/elements/internal/generated/TryExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/TupleExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/TupleField.qll linguist-generated @@ -624,6 +661,7 @@ /lib/codeql/rust/elements/internal/generated/Unextracted.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Unimplemented.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Union.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/UnsafeMeta.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Use.qll linguist-generated /lib/codeql/rust/elements/internal/generated/UseBoundGenericArg.qll linguist-generated /lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll linguist-generated @@ -666,6 +704,10 @@ /test/extractor-tests/generated/BreakExpr/BreakExpr.ql linguist-generated /test/extractor-tests/generated/CallExpr/CallExpr.ql linguist-generated /test/extractor-tests/generated/CastExpr/CastExpr.ql linguist-generated +/test/extractor-tests/generated/CfgAtom/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/CfgAttrMeta/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/CfgComposite/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/CfgMeta/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql linguist-generated /test/extractor-tests/generated/Comment/Comment.ql linguist-generated /test/extractor-tests/generated/Const/Const.ql linguist-generated @@ -685,6 +727,7 @@ /test/extractor-tests/generated/ForBinder/ForBinder.ql linguist-generated /test/extractor-tests/generated/ForExpr/ForExpr.ql linguist-generated /test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.ql linguist-generated +/test/extractor-tests/generated/FormatArgsArgName/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/FormatArgsExpr/Format.ql linguist-generated /test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql linguist-generated /test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql linguist-generated @@ -700,6 +743,7 @@ /test/extractor-tests/generated/IndexExpr/IndexExpr.ql linguist-generated /test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.ql linguist-generated /test/extractor-tests/generated/ItemList/ItemList.ql linguist-generated +/test/extractor-tests/generated/KeyValueMeta/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/Label/Label.ql linguist-generated /test/extractor-tests/generated/LetElse/LetElse.ql linguist-generated /test/extractor-tests/generated/LetExpr/LetExpr.ql linguist-generated @@ -721,7 +765,6 @@ /test/extractor-tests/generated/MatchArmList/MatchArmList.ql linguist-generated /test/extractor-tests/generated/MatchExpr/MatchExpr.ql linguist-generated /test/extractor-tests/generated/MatchGuard/MatchGuard.ql linguist-generated -/test/extractor-tests/generated/Meta/Meta.ql linguist-generated /test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql linguist-generated /test/extractor-tests/generated/Module/Module.ql linguist-generated /test/extractor-tests/generated/Name/Name.ql linguist-generated @@ -740,6 +783,7 @@ /test/extractor-tests/generated/Path/PathPat.ql linguist-generated /test/extractor-tests/generated/Path/PathSegment.ql linguist-generated /test/extractor-tests/generated/Path/PathTypeRepr.ql linguist-generated +/test/extractor-tests/generated/PathMeta/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql linguist-generated /test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.ql linguist-generated /test/extractor-tests/generated/RangeExpr/RangeExpr.ql linguist-generated @@ -768,9 +812,10 @@ /test/extractor-tests/generated/StructPatField/StructPatField.ql linguist-generated /test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.ql linguist-generated /test/extractor-tests/generated/TokenTree/TokenTree.ql linguist-generated +/test/extractor-tests/generated/TokenTreeMeta/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/Trait/AssocItemList.ql linguist-generated /test/extractor-tests/generated/Trait/Trait.ql linguist-generated -/test/extractor-tests/generated/TraitAlias/TraitAlias.ql linguist-generated +/test/extractor-tests/generated/TryBlockModifier/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/TryExpr/TryExpr.ql linguist-generated /test/extractor-tests/generated/TupleExpr/TupleExpr.ql linguist-generated /test/extractor-tests/generated/TupleField/TupleField.ql linguist-generated @@ -785,6 +830,7 @@ /test/extractor-tests/generated/TypeParam/TypeParam.ql linguist-generated /test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql linguist-generated /test/extractor-tests/generated/Union/Union.ql linguist-generated +/test/extractor-tests/generated/UnsafeMeta/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/Use/Use.ql linguist-generated /test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.ql linguist-generated /test/extractor-tests/generated/UseTree/UseTree.ql linguist-generated diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll b/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll index 6aeaa3dd4f4b..c8b4117a9abb 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll @@ -507,11 +507,6 @@ module MakeCfgNodes Input> { */ predicate isMove() { node.isMove() } - /** - * Holds if this block expression is try. - */ - predicate isTry() { node.isTry() } - /** * Holds if this block expression is unsafe. */ @@ -526,6 +521,16 @@ module MakeCfgNodes Input> { * Holds if `getStmtList()` exists. */ predicate hasStmtList() { exists(this.getStmtList()) } + + /** + * Gets the try block modifier of this block expression, if it exists. + */ + TryBlockModifier getTryBlockModifier() { result = node.getTryBlockModifier() } + + /** + * Holds if `getTryBlockModifier()` exists. + */ + predicate hasTryBlockModifier() { exists(this.getTryBlockModifier()) } } final private class ParentBoxPat extends ParentAstNode, BoxPat { @@ -1018,8 +1023,6 @@ module MakeCfgNodes Input> { none() or child = this.getExpr() - or - child = this.getName() } } @@ -1038,28 +1041,26 @@ module MakeCfgNodes Input> { FormatArgsArg getFormatArgsArg() { result = node } /** - * Gets the expression of this format arguments argument, if it exists. + * Gets the argument name of this format arguments argument, if it exists. */ - ExprCfgNode getExpr() { - any(ChildMapping mapping).hasCfgChild(node, node.getExpr(), this, result) - } + FormatArgsArgName getArgName() { result = node.getArgName() } /** - * Holds if `getExpr()` exists. + * Holds if `getArgName()` exists. */ - predicate hasExpr() { exists(this.getExpr()) } + predicate hasArgName() { exists(this.getArgName()) } /** - * Gets the name of this format arguments argument, if it exists. + * Gets the expression of this format arguments argument, if it exists. */ - NameCfgNode getName() { - any(ChildMapping mapping).hasCfgChild(node, node.getName(), this, result) + ExprCfgNode getExpr() { + any(ChildMapping mapping).hasCfgChild(node, node.getExpr(), this, result) } /** - * Holds if `getName()` exists. + * Holds if `getExpr()` exists. */ - predicate hasName() { exists(this.getName()) } + predicate hasExpr() { exists(this.getExpr()) } } final private class ParentFormatArgsExpr extends ParentAstNode, FormatArgsExpr { @@ -3558,18 +3559,6 @@ module MakeCfgNodes Input> { cfgNode ) or - pred = "getName" and - parent = - any(Nodes::FormatArgsArgCfgNode cfgNode, FormatArgsArg astNode | - astNode = cfgNode.getFormatArgsArg() and - child = getDesugared(astNode.getName()) and - i = -1 and - hasCfgNode(child) and - not child = cfgNode.getName().getAstNode() - | - cfgNode - ) - or pred = "getArg" and parent = any(Nodes::FormatArgsExprCfgNode cfgNode, FormatArgsExpr astNode | diff --git a/rust/ql/lib/codeql/rust/elements.qll b/rust/ql/lib/codeql/rust/elements.qll index b7ca8fe1ca5c..fdfe2c0cacf0 100644 --- a/rust/ql/lib/codeql/rust/elements.qll +++ b/rust/ql/lib/codeql/rust/elements.qll @@ -39,6 +39,11 @@ import codeql.rust.elements.BreakExpr import codeql.rust.elements.CallExpr import codeql.rust.elements.Callable import codeql.rust.elements.CastExpr +import codeql.rust.elements.CfgAtom +import codeql.rust.elements.CfgAttrMeta +import codeql.rust.elements.CfgComposite +import codeql.rust.elements.CfgMeta +import codeql.rust.elements.CfgPredicate import codeql.rust.elements.ClosureExpr import codeql.rust.elements.Comment import codeql.rust.elements.Const @@ -64,6 +69,7 @@ import codeql.rust.elements.ForExpr import codeql.rust.elements.ForTypeRepr import codeql.rust.elements.Format import codeql.rust.elements.FormatArgsArg +import codeql.rust.elements.FormatArgsArgName import codeql.rust.elements.FormatArgsExpr import codeql.rust.elements.FormatArgument import codeql.rust.elements.FormatTemplateVariableAccess @@ -80,6 +86,7 @@ import codeql.rust.elements.IndexExpr import codeql.rust.elements.InferTypeRepr import codeql.rust.elements.Item import codeql.rust.elements.ItemList +import codeql.rust.elements.KeyValueMeta import codeql.rust.elements.Label import codeql.rust.elements.LabelableExpr import codeql.rust.elements.LetElse @@ -125,6 +132,7 @@ import codeql.rust.elements.Path import codeql.rust.elements.PathAstNode import codeql.rust.elements.PathExpr import codeql.rust.elements.PathExprBase +import codeql.rust.elements.PathMeta import codeql.rust.elements.PathPat import codeql.rust.elements.PathSegment import codeql.rust.elements.PathTypeRepr @@ -158,8 +166,9 @@ import codeql.rust.elements.StructPatField import codeql.rust.elements.StructPatFieldList import codeql.rust.elements.Token import codeql.rust.elements.TokenTree +import codeql.rust.elements.TokenTreeMeta import codeql.rust.elements.Trait -import codeql.rust.elements.TraitAlias +import codeql.rust.elements.TryBlockModifier import codeql.rust.elements.TryExpr import codeql.rust.elements.TupleExpr import codeql.rust.elements.TupleField @@ -178,6 +187,7 @@ import codeql.rust.elements.UnderscoreExpr import codeql.rust.elements.Unextracted import codeql.rust.elements.Unimplemented import codeql.rust.elements.Union +import codeql.rust.elements.UnsafeMeta import codeql.rust.elements.Use import codeql.rust.elements.UseBoundGenericArg import codeql.rust.elements.UseBoundGenericArgs diff --git a/rust/ql/lib/codeql/rust/elements/BlockExpr.qll b/rust/ql/lib/codeql/rust/elements/BlockExpr.qll index 9e87d381525d..8a85ca21310f 100644 --- a/rust/ql/lib/codeql/rust/elements/BlockExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/BlockExpr.qll @@ -7,6 +7,7 @@ private import internal.BlockExprImpl import codeql.rust.elements.Attr import codeql.rust.elements.LabelableExpr import codeql.rust.elements.StmtList +import codeql.rust.elements.TryBlockModifier /** * A block expression. For example: diff --git a/rust/ql/lib/codeql/rust/elements/CfgAtom.qll b/rust/ql/lib/codeql/rust/elements/CfgAtom.qll new file mode 100644 index 000000000000..6aecca369fe9 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/CfgAtom.qll @@ -0,0 +1,9 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `CfgAtom`. + */ + +private import internal.CfgAtomImpl +import codeql.rust.elements.CfgPredicate + +final class CfgAtom = Impl::CfgAtom; diff --git a/rust/ql/lib/codeql/rust/elements/CfgAttrMeta.qll b/rust/ql/lib/codeql/rust/elements/CfgAttrMeta.qll new file mode 100644 index 000000000000..b8c3364f4874 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/CfgAttrMeta.qll @@ -0,0 +1,10 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `CfgAttrMeta`. + */ + +private import internal.CfgAttrMetaImpl +import codeql.rust.elements.CfgPredicate +import codeql.rust.elements.Meta + +final class CfgAttrMeta = Impl::CfgAttrMeta; diff --git a/rust/ql/lib/codeql/rust/elements/CfgComposite.qll b/rust/ql/lib/codeql/rust/elements/CfgComposite.qll new file mode 100644 index 000000000000..61aac82a2709 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/CfgComposite.qll @@ -0,0 +1,9 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `CfgComposite`. + */ + +private import internal.CfgCompositeImpl +import codeql.rust.elements.CfgPredicate + +final class CfgComposite = Impl::CfgComposite; diff --git a/rust/ql/lib/codeql/rust/elements/CfgMeta.qll b/rust/ql/lib/codeql/rust/elements/CfgMeta.qll new file mode 100644 index 000000000000..f32ade7e63c7 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/CfgMeta.qll @@ -0,0 +1,10 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `CfgMeta`. + */ + +private import internal.CfgMetaImpl +import codeql.rust.elements.CfgPredicate +import codeql.rust.elements.Meta + +final class CfgMeta = Impl::CfgMeta; diff --git a/rust/ql/lib/codeql/rust/elements/CfgPredicate.qll b/rust/ql/lib/codeql/rust/elements/CfgPredicate.qll new file mode 100644 index 000000000000..399705fb4a7d --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/CfgPredicate.qll @@ -0,0 +1,9 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `CfgPredicate`. + */ + +private import internal.CfgPredicateImpl +import codeql.rust.elements.AstNode + +final class CfgPredicate = Impl::CfgPredicate; diff --git a/rust/ql/lib/codeql/rust/elements/FormatArgsArg.qll b/rust/ql/lib/codeql/rust/elements/FormatArgsArg.qll index 4946f9789304..2cb12d291fb1 100644 --- a/rust/ql/lib/codeql/rust/elements/FormatArgsArg.qll +++ b/rust/ql/lib/codeql/rust/elements/FormatArgsArg.qll @@ -6,7 +6,7 @@ private import internal.FormatArgsArgImpl import codeql.rust.elements.AstNode import codeql.rust.elements.Expr -import codeql.rust.elements.Name +import codeql.rust.elements.FormatArgsArgName /** * A FormatArgsArg. For example the `"world"` in: diff --git a/rust/ql/lib/codeql/rust/elements/FormatArgsArgName.qll b/rust/ql/lib/codeql/rust/elements/FormatArgsArgName.qll new file mode 100644 index 000000000000..93c5b2185701 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/FormatArgsArgName.qll @@ -0,0 +1,9 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `FormatArgsArgName`. + */ + +private import internal.FormatArgsArgNameImpl +import codeql.rust.elements.AstNode + +final class FormatArgsArgName = Impl::FormatArgsArgName; diff --git a/rust/ql/lib/codeql/rust/elements/KeyValueMeta.qll b/rust/ql/lib/codeql/rust/elements/KeyValueMeta.qll new file mode 100644 index 000000000000..87b2bec9f045 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/KeyValueMeta.qll @@ -0,0 +1,11 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `KeyValueMeta`. + */ + +private import internal.KeyValueMetaImpl +import codeql.rust.elements.Expr +import codeql.rust.elements.Meta +import codeql.rust.elements.Path + +final class KeyValueMeta = Impl::KeyValueMeta; diff --git a/rust/ql/lib/codeql/rust/elements/Meta.qll b/rust/ql/lib/codeql/rust/elements/Meta.qll index 46fcafb43c2f..8086286cd7e4 100644 --- a/rust/ql/lib/codeql/rust/elements/Meta.qll +++ b/rust/ql/lib/codeql/rust/elements/Meta.qll @@ -5,9 +5,6 @@ private import internal.MetaImpl import codeql.rust.elements.AstNode -import codeql.rust.elements.Expr -import codeql.rust.elements.Path -import codeql.rust.elements.TokenTree /** * A meta item in an attribute. diff --git a/rust/ql/lib/codeql/rust/elements/PathMeta.qll b/rust/ql/lib/codeql/rust/elements/PathMeta.qll new file mode 100644 index 000000000000..53fd0ed669e6 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/PathMeta.qll @@ -0,0 +1,10 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `PathMeta`. + */ + +private import internal.PathMetaImpl +import codeql.rust.elements.Meta +import codeql.rust.elements.Path + +final class PathMeta = Impl::PathMeta; diff --git a/rust/ql/lib/codeql/rust/elements/StructField.qll b/rust/ql/lib/codeql/rust/elements/StructField.qll index 6d363a17b12d..d02d9418049c 100644 --- a/rust/ql/lib/codeql/rust/elements/StructField.qll +++ b/rust/ql/lib/codeql/rust/elements/StructField.qll @@ -6,7 +6,7 @@ private import internal.StructFieldImpl import codeql.rust.elements.AstNode import codeql.rust.elements.Attr -import codeql.rust.elements.Expr +import codeql.rust.elements.ConstArg import codeql.rust.elements.Name import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility diff --git a/rust/ql/lib/codeql/rust/elements/TokenTreeMeta.qll b/rust/ql/lib/codeql/rust/elements/TokenTreeMeta.qll new file mode 100644 index 000000000000..1299a44550b0 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/TokenTreeMeta.qll @@ -0,0 +1,11 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `TokenTreeMeta`. + */ + +private import internal.TokenTreeMetaImpl +import codeql.rust.elements.Meta +import codeql.rust.elements.Path +import codeql.rust.elements.TokenTree + +final class TokenTreeMeta = Impl::TokenTreeMeta; diff --git a/rust/ql/lib/codeql/rust/elements/TraitAlias.qll b/rust/ql/lib/codeql/rust/elements/TraitAlias.qll deleted file mode 100644 index 956fa76ab212..000000000000 --- a/rust/ql/lib/codeql/rust/elements/TraitAlias.qll +++ /dev/null @@ -1,23 +0,0 @@ -// generated by codegen, do not edit -/** - * This module provides the public class `TraitAlias`. - */ - -private import internal.TraitAliasImpl -import codeql.rust.elements.Attr -import codeql.rust.elements.GenericParamList -import codeql.rust.elements.Item -import codeql.rust.elements.Name -import codeql.rust.elements.TypeBoundList -import codeql.rust.elements.Visibility -import codeql.rust.elements.WhereClause - -/** - * A trait alias. - * - * For example: - * ```rust - * trait Foo = Bar + Baz; - * ``` - */ -final class TraitAlias = Impl::TraitAlias; diff --git a/rust/ql/lib/codeql/rust/elements/TryBlockModifier.qll b/rust/ql/lib/codeql/rust/elements/TryBlockModifier.qll new file mode 100644 index 000000000000..b7265e12f26a --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/TryBlockModifier.qll @@ -0,0 +1,10 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `TryBlockModifier`. + */ + +private import internal.TryBlockModifierImpl +import codeql.rust.elements.AstNode +import codeql.rust.elements.TypeRepr + +final class TryBlockModifier = Impl::TryBlockModifier; diff --git a/rust/ql/lib/codeql/rust/elements/UnsafeMeta.qll b/rust/ql/lib/codeql/rust/elements/UnsafeMeta.qll new file mode 100644 index 000000000000..ec1bec4e7743 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/UnsafeMeta.qll @@ -0,0 +1,9 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `UnsafeMeta`. + */ + +private import internal.UnsafeMetaImpl +import codeql.rust.elements.Meta + +final class UnsafeMeta = Impl::UnsafeMeta; diff --git a/rust/ql/lib/codeql/rust/elements/Variant.qll b/rust/ql/lib/codeql/rust/elements/Variant.qll index dfe5199f1592..983488da4032 100644 --- a/rust/ql/lib/codeql/rust/elements/Variant.qll +++ b/rust/ql/lib/codeql/rust/elements/Variant.qll @@ -6,7 +6,7 @@ private import internal.VariantImpl import codeql.rust.elements.Addressable import codeql.rust.elements.Attr -import codeql.rust.elements.Expr +import codeql.rust.elements.ConstArg import codeql.rust.elements.FieldList import codeql.rust.elements.Name import codeql.rust.elements.Visibility diff --git a/rust/ql/lib/codeql/rust/elements/internal/MetaConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgAtomConstructor.qll similarity index 64% rename from rust/ql/lib/codeql/rust/elements/internal/MetaConstructor.qll rename to rust/ql/lib/codeql/rust/elements/internal/CfgAtomConstructor.qll index 0cd1ca6bbe9f..7e1b8e962853 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MetaConstructor.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgAtomConstructor.qll @@ -1,14 +1,14 @@ // generated by codegen, remove this comment if you wish to edit this file /** * This module defines the hook used internally to tweak the characteristic predicate of - * `Meta` synthesized instances. + * `CfgAtom` synthesized instances. * INTERNAL: Do not use. */ private import codeql.rust.elements.internal.generated.Raw /** - * The characteristic predicate of `Meta` synthesized instances. + * The characteristic predicate of `CfgAtom` synthesized instances. * INTERNAL: Do not use. */ -predicate constructMeta(Raw::Meta id) { any() } +predicate constructCfgAtom(Raw::CfgAtom id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TraitAliasImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgAtomImpl.qll similarity index 51% rename from rust/ql/lib/codeql/rust/elements/internal/TraitAliasImpl.qll rename to rust/ql/lib/codeql/rust/elements/internal/CfgAtomImpl.qll index c11516896b47..6f1515cb7d1b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TraitAliasImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgAtomImpl.qll @@ -1,24 +1,16 @@ // generated by codegen, remove this comment if you wish to edit this file /** - * This module provides a hand-modifiable wrapper around the generated class `TraitAlias`. + * This module provides a hand-modifiable wrapper around the generated class `CfgAtom`. * * INTERNAL: Do not use. */ -private import codeql.rust.elements.internal.generated.TraitAlias +private import codeql.rust.elements.internal.generated.CfgAtom /** - * INTERNAL: This module contains the customizable definition of `TraitAlias` and should not + * INTERNAL: This module contains the customizable definition of `CfgAtom` and should not * be referenced directly. */ module Impl { - /** - * A trait alias. - * - * For example: - * ```rust - * trait Foo = Bar + Baz; - * ``` - */ - class TraitAlias extends Generated::TraitAlias { } + class CfgAtom extends Generated::CfgAtom { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgAttrMetaConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgAttrMetaConstructor.qll new file mode 100644 index 000000000000..585a8c07e3c9 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgAttrMetaConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `CfgAttrMeta` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `CfgAttrMeta` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructCfgAttrMeta(Raw::CfgAttrMeta id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgAttrMetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgAttrMetaImpl.qll new file mode 100644 index 000000000000..5e189d4126de --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgAttrMetaImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `CfgAttrMeta`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.CfgAttrMeta + +/** + * INTERNAL: This module contains the customizable definition of `CfgAttrMeta` and should not + * be referenced directly. + */ +module Impl { + class CfgAttrMeta extends Generated::CfgAttrMeta { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgCompositeConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgCompositeConstructor.qll new file mode 100644 index 000000000000..ad4c42ec5729 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgCompositeConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `CfgComposite` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `CfgComposite` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructCfgComposite(Raw::CfgComposite id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgCompositeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgCompositeImpl.qll new file mode 100644 index 000000000000..58c9a10af763 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgCompositeImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `CfgComposite`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.CfgComposite + +/** + * INTERNAL: This module contains the customizable definition of `CfgComposite` and should not + * be referenced directly. + */ +module Impl { + class CfgComposite extends Generated::CfgComposite { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgMetaConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgMetaConstructor.qll new file mode 100644 index 000000000000..3f374993ccd7 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgMetaConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `CfgMeta` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `CfgMeta` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructCfgMeta(Raw::CfgMeta id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgMetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgMetaImpl.qll new file mode 100644 index 000000000000..f3c75352121e --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgMetaImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `CfgMeta`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.CfgMeta + +/** + * INTERNAL: This module contains the customizable definition of `CfgMeta` and should not + * be referenced directly. + */ +module Impl { + class CfgMeta extends Generated::CfgMeta { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgPredicateImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgPredicateImpl.qll new file mode 100644 index 000000000000..eda245d0777f --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgPredicateImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `CfgPredicate`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.CfgPredicate + +/** + * INTERNAL: This module contains the customizable definition of `CfgPredicate` and should not + * be referenced directly. + */ +module Impl { + class CfgPredicate extends Generated::CfgPredicate { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameConstructor.qll new file mode 100644 index 000000000000..fbed7006a8aa --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `FormatArgsArgName` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `FormatArgsArgName` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructFormatArgsArgName(Raw::FormatArgsArgName id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameImpl.qll new file mode 100644 index 000000000000..31ead66d0ac2 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `FormatArgsArgName`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.FormatArgsArgName + +/** + * INTERNAL: This module contains the customizable definition of `FormatArgsArgName` and should not + * be referenced directly. + */ +module Impl { + class FormatArgsArgName extends Generated::FormatArgsArgName { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/KeyValueMetaConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/KeyValueMetaConstructor.qll new file mode 100644 index 000000000000..b9a506a485cc --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/KeyValueMetaConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `KeyValueMeta` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `KeyValueMeta` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructKeyValueMeta(Raw::KeyValueMeta id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/KeyValueMetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/KeyValueMetaImpl.qll new file mode 100644 index 000000000000..ac3befd85b60 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/KeyValueMetaImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `KeyValueMeta`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.KeyValueMeta + +/** + * INTERNAL: This module contains the customizable definition of `KeyValueMeta` and should not + * be referenced directly. + */ +module Impl { + class KeyValueMeta extends Generated::KeyValueMeta { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathMetaConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/PathMetaConstructor.qll new file mode 100644 index 000000000000..5d8fd0da4f62 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/PathMetaConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `PathMeta` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `PathMeta` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructPathMeta(Raw::PathMeta id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathMetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathMetaImpl.qll new file mode 100644 index 000000000000..fd58653419e7 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/PathMetaImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `PathMeta`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.PathMeta + +/** + * INTERNAL: This module contains the customizable definition of `PathMeta` and should not + * be referenced directly. + */ +module Impl { + class PathMeta extends Generated::PathMeta { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/TokenTreeMetaConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/TokenTreeMetaConstructor.qll new file mode 100644 index 000000000000..8cb49c13e668 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/TokenTreeMetaConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `TokenTreeMeta` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `TokenTreeMeta` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructTokenTreeMeta(Raw::TokenTreeMeta id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TokenTreeMetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TokenTreeMetaImpl.qll new file mode 100644 index 000000000000..b61b222879d8 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/TokenTreeMetaImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `TokenTreeMeta`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.TokenTreeMeta + +/** + * INTERNAL: This module contains the customizable definition of `TokenTreeMeta` and should not + * be referenced directly. + */ +module Impl { + class TokenTreeMeta extends Generated::TokenTreeMeta { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/TryBlockModifierConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/TryBlockModifierConstructor.qll new file mode 100644 index 000000000000..1da4a8262b07 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/TryBlockModifierConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `TryBlockModifier` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `TryBlockModifier` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructTryBlockModifier(Raw::TryBlockModifier id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TryBlockModifierImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TryBlockModifierImpl.qll new file mode 100644 index 000000000000..8be62790eeeb --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/TryBlockModifierImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `TryBlockModifier`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.TryBlockModifier + +/** + * INTERNAL: This module contains the customizable definition of `TryBlockModifier` and should not + * be referenced directly. + */ +module Impl { + class TryBlockModifier extends Generated::TryBlockModifier { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/TraitAliasConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/UnsafeMetaConstructor.qll similarity index 64% rename from rust/ql/lib/codeql/rust/elements/internal/TraitAliasConstructor.qll rename to rust/ql/lib/codeql/rust/elements/internal/UnsafeMetaConstructor.qll index ee417d726513..3ffc0efcac72 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TraitAliasConstructor.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/UnsafeMetaConstructor.qll @@ -1,14 +1,14 @@ // generated by codegen, remove this comment if you wish to edit this file /** * This module defines the hook used internally to tweak the characteristic predicate of - * `TraitAlias` synthesized instances. + * `UnsafeMeta` synthesized instances. * INTERNAL: Do not use. */ private import codeql.rust.elements.internal.generated.Raw /** - * The characteristic predicate of `TraitAlias` synthesized instances. + * The characteristic predicate of `UnsafeMeta` synthesized instances. * INTERNAL: Do not use. */ -predicate constructTraitAlias(Raw::TraitAlias id) { any() } +predicate constructUnsafeMeta(Raw::UnsafeMeta id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/UnsafeMetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/UnsafeMetaImpl.qll new file mode 100644 index 000000000000..7da4ed5ace29 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/UnsafeMetaImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `UnsafeMeta`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.UnsafeMeta + +/** + * INTERNAL: This module contains the customizable definition of `UnsafeMeta` and should not + * be referenced directly. + */ +module Impl { + class UnsafeMeta extends Generated::UnsafeMeta { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/BlockExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/BlockExpr.qll index 6a01a0c45880..e448e321e646 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/BlockExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/BlockExpr.qll @@ -9,6 +9,7 @@ private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.Attr import codeql.rust.elements.internal.LabelableExprImpl::Impl as LabelableExprImpl import codeql.rust.elements.StmtList +import codeql.rust.elements.TryBlockModifier /** * INTERNAL: This module contains the fully generated definition of `BlockExpr` and should not @@ -72,11 +73,6 @@ module Generated { */ predicate isMove() { Synth::convertBlockExprToRaw(this).(Raw::BlockExpr).isMove() } - /** - * Holds if this block expression is try. - */ - predicate isTry() { Synth::convertBlockExprToRaw(this).(Raw::BlockExpr).isTry() } - /** * Holds if this block expression is unsafe. */ @@ -96,5 +92,20 @@ module Generated { * Holds if `getStmtList()` exists. */ final predicate hasStmtList() { exists(this.getStmtList()) } + + /** + * Gets the try block modifier of this block expression, if it exists. + */ + TryBlockModifier getTryBlockModifier() { + result = + Synth::convertTryBlockModifierFromRaw(Synth::convertBlockExprToRaw(this) + .(Raw::BlockExpr) + .getTryBlockModifier()) + } + + /** + * Holds if `getTryBlockModifier()` exists. + */ + final predicate hasTryBlockModifier() { exists(this.getTryBlockModifier()) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgAtom.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgAtom.qll new file mode 100644 index 000000000000..8243d5ba14a7 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgAtom.qll @@ -0,0 +1,23 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `CfgAtom`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.internal.CfgPredicateImpl::Impl as CfgPredicateImpl + +/** + * INTERNAL: This module contains the fully generated definition of `CfgAtom` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::CfgAtom` class directly. + * Use the subclass `CfgAtom`, where the following predicates are available. + */ + class CfgAtom extends Synth::TCfgAtom, CfgPredicateImpl::CfgPredicate { + override string getAPrimaryQlClass() { result = "CfgAtom" } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgAttrMeta.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgAttrMeta.qll new file mode 100644 index 000000000000..0b972b413c53 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgAttrMeta.qll @@ -0,0 +1,60 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `CfgAttrMeta`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.CfgPredicate +import codeql.rust.elements.Meta +import codeql.rust.elements.internal.MetaImpl::Impl as MetaImpl + +/** + * INTERNAL: This module contains the fully generated definition of `CfgAttrMeta` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::CfgAttrMeta` class directly. + * Use the subclass `CfgAttrMeta`, where the following predicates are available. + */ + class CfgAttrMeta extends Synth::TCfgAttrMeta, MetaImpl::Meta { + override string getAPrimaryQlClass() { result = "CfgAttrMeta" } + + /** + * Gets the cfg predicate of this cfg attr meta, if it exists. + */ + CfgPredicate getCfgPredicate() { + result = + Synth::convertCfgPredicateFromRaw(Synth::convertCfgAttrMetaToRaw(this) + .(Raw::CfgAttrMeta) + .getCfgPredicate()) + } + + /** + * Holds if `getCfgPredicate()` exists. + */ + final predicate hasCfgPredicate() { exists(this.getCfgPredicate()) } + + /** + * Gets the `index`th meta of this cfg attr meta (0-based). + */ + Meta getMeta(int index) { + result = + Synth::convertMetaFromRaw(Synth::convertCfgAttrMetaToRaw(this) + .(Raw::CfgAttrMeta) + .getMeta(index)) + } + + /** + * Gets any of the metas of this cfg attr meta. + */ + final Meta getAMeta() { result = this.getMeta(_) } + + /** + * Gets the number of metas of this cfg attr meta. + */ + final int getNumberOfMetas() { result = count(int i | exists(this.getMeta(i))) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgComposite.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgComposite.qll new file mode 100644 index 000000000000..65a5a672baf9 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgComposite.qll @@ -0,0 +1,44 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `CfgComposite`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.CfgPredicate +import codeql.rust.elements.internal.CfgPredicateImpl::Impl as CfgPredicateImpl + +/** + * INTERNAL: This module contains the fully generated definition of `CfgComposite` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::CfgComposite` class directly. + * Use the subclass `CfgComposite`, where the following predicates are available. + */ + class CfgComposite extends Synth::TCfgComposite, CfgPredicateImpl::CfgPredicate { + override string getAPrimaryQlClass() { result = "CfgComposite" } + + /** + * Gets the `index`th cfg predicate of this cfg composite (0-based). + */ + CfgPredicate getCfgPredicate(int index) { + result = + Synth::convertCfgPredicateFromRaw(Synth::convertCfgCompositeToRaw(this) + .(Raw::CfgComposite) + .getCfgPredicate(index)) + } + + /** + * Gets any of the cfg predicates of this cfg composite. + */ + final CfgPredicate getACfgPredicate() { result = this.getCfgPredicate(_) } + + /** + * Gets the number of cfg predicates of this cfg composite. + */ + final int getNumberOfCfgPredicates() { result = count(int i | exists(this.getCfgPredicate(i))) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgMeta.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgMeta.qll new file mode 100644 index 000000000000..d65162b85dda --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgMeta.qll @@ -0,0 +1,39 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `CfgMeta`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.CfgPredicate +import codeql.rust.elements.internal.MetaImpl::Impl as MetaImpl + +/** + * INTERNAL: This module contains the fully generated definition of `CfgMeta` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::CfgMeta` class directly. + * Use the subclass `CfgMeta`, where the following predicates are available. + */ + class CfgMeta extends Synth::TCfgMeta, MetaImpl::Meta { + override string getAPrimaryQlClass() { result = "CfgMeta" } + + /** + * Gets the cfg predicate of this cfg meta, if it exists. + */ + CfgPredicate getCfgPredicate() { + result = + Synth::convertCfgPredicateFromRaw(Synth::convertCfgMetaToRaw(this) + .(Raw::CfgMeta) + .getCfgPredicate()) + } + + /** + * Holds if `getCfgPredicate()` exists. + */ + final predicate hasCfgPredicate() { exists(this.getCfgPredicate()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgPredicate.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgPredicate.qll new file mode 100644 index 000000000000..f5187ecf1e05 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgPredicate.qll @@ -0,0 +1,21 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `CfgPredicate`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl + +/** + * INTERNAL: This module contains the fully generated definition of `CfgPredicate` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::CfgPredicate` class directly. + * Use the subclass `CfgPredicate`, where the following predicates are available. + */ + class CfgPredicate extends Synth::TCfgPredicate, AstNodeImpl::AstNode { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll index 80ca340284fa..2c5ab6fe693c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll @@ -8,7 +8,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl import codeql.rust.elements.Expr -import codeql.rust.elements.Name +import codeql.rust.elements.FormatArgsArgName /** * INTERNAL: This module contains the fully generated definition of `FormatArgsArg` and should not @@ -27,33 +27,33 @@ module Generated { override string getAPrimaryQlClass() { result = "FormatArgsArg" } /** - * Gets the expression of this format arguments argument, if it exists. + * Gets the argument name of this format arguments argument, if it exists. */ - Expr getExpr() { + FormatArgsArgName getArgName() { result = - Synth::convertExprFromRaw(Synth::convertFormatArgsArgToRaw(this) + Synth::convertFormatArgsArgNameFromRaw(Synth::convertFormatArgsArgToRaw(this) .(Raw::FormatArgsArg) - .getExpr()) + .getArgName()) } /** - * Holds if `getExpr()` exists. + * Holds if `getArgName()` exists. */ - final predicate hasExpr() { exists(this.getExpr()) } + final predicate hasArgName() { exists(this.getArgName()) } /** - * Gets the name of this format arguments argument, if it exists. + * Gets the expression of this format arguments argument, if it exists. */ - Name getName() { + Expr getExpr() { result = - Synth::convertNameFromRaw(Synth::convertFormatArgsArgToRaw(this) + Synth::convertExprFromRaw(Synth::convertFormatArgsArgToRaw(this) .(Raw::FormatArgsArg) - .getName()) + .getExpr()) } /** - * Holds if `getName()` exists. + * Holds if `getExpr()` exists. */ - final predicate hasName() { exists(this.getName()) } + final predicate hasExpr() { exists(this.getExpr()) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArgName.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArgName.qll new file mode 100644 index 000000000000..ce83c40e161a --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArgName.qll @@ -0,0 +1,23 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `FormatArgsArgName`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl + +/** + * INTERNAL: This module contains the fully generated definition of `FormatArgsArgName` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::FormatArgsArgName` class directly. + * Use the subclass `FormatArgsArgName`, where the following predicates are available. + */ + class FormatArgsArgName extends Synth::TFormatArgsArgName, AstNodeImpl::AstNode { + override string getAPrimaryQlClass() { result = "FormatArgsArgName" } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/KeyValueMeta.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/KeyValueMeta.qll new file mode 100644 index 000000000000..fba14fb3fc4d --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/KeyValueMeta.qll @@ -0,0 +1,55 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `KeyValueMeta`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.Expr +import codeql.rust.elements.internal.MetaImpl::Impl as MetaImpl +import codeql.rust.elements.Path + +/** + * INTERNAL: This module contains the fully generated definition of `KeyValueMeta` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::KeyValueMeta` class directly. + * Use the subclass `KeyValueMeta`, where the following predicates are available. + */ + class KeyValueMeta extends Synth::TKeyValueMeta, MetaImpl::Meta { + override string getAPrimaryQlClass() { result = "KeyValueMeta" } + + /** + * Gets the expression of this key value meta, if it exists. + */ + Expr getExpr() { + result = + Synth::convertExprFromRaw(Synth::convertKeyValueMetaToRaw(this) + .(Raw::KeyValueMeta) + .getExpr()) + } + + /** + * Holds if `getExpr()` exists. + */ + final predicate hasExpr() { exists(this.getExpr()) } + + /** + * Gets the path of this key value meta, if it exists. + */ + Path getPath() { + result = + Synth::convertPathFromRaw(Synth::convertKeyValueMetaToRaw(this) + .(Raw::KeyValueMeta) + .getPath()) + } + + /** + * Holds if `getPath()` exists. + */ + final predicate hasPath() { exists(this.getPath()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Meta.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Meta.qll index 27e6c03a3287..aa5181ee326a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Meta.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Meta.qll @@ -7,9 +7,6 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Expr -import codeql.rust.elements.Path -import codeql.rust.elements.TokenTree /** * INTERNAL: This module contains the fully generated definition of `Meta` and should not @@ -32,49 +29,5 @@ module Generated { * INTERNAL: Do not reference the `Generated::Meta` class directly. * Use the subclass `Meta`, where the following predicates are available. */ - class Meta extends Synth::TMeta, AstNodeImpl::AstNode { - override string getAPrimaryQlClass() { result = "Meta" } - - /** - * Gets the expression of this meta, if it exists. - */ - Expr getExpr() { - result = Synth::convertExprFromRaw(Synth::convertMetaToRaw(this).(Raw::Meta).getExpr()) - } - - /** - * Holds if `getExpr()` exists. - */ - final predicate hasExpr() { exists(this.getExpr()) } - - /** - * Holds if this meta is unsafe. - */ - predicate isUnsafe() { Synth::convertMetaToRaw(this).(Raw::Meta).isUnsafe() } - - /** - * Gets the path of this meta, if it exists. - */ - Path getPath() { - result = Synth::convertPathFromRaw(Synth::convertMetaToRaw(this).(Raw::Meta).getPath()) - } - - /** - * Holds if `getPath()` exists. - */ - final predicate hasPath() { exists(this.getPath()) } - - /** - * Gets the token tree of this meta, if it exists. - */ - TokenTree getTokenTree() { - result = - Synth::convertTokenTreeFromRaw(Synth::convertMetaToRaw(this).(Raw::Meta).getTokenTree()) - } - - /** - * Holds if `getTokenTree()` exists. - */ - final predicate hasTokenTree() { exists(this.getTokenTree()) } - } + class Meta extends Synth::TMeta, AstNodeImpl::AstNode { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll index c593451b9937..f3c1ee591ab6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll @@ -188,20 +188,26 @@ private module Impl { private Element getImmediateChildOfFormatArgsArg( FormatArgsArg e, int index, string partialPredicateCall ) { - exists(int n, int nExpr, int nName | + exists(int n, int nArgName, int nExpr | n = 0 and - nExpr = n + 1 and - nName = nExpr + 1 and + nArgName = n + 1 and + nExpr = nArgName + 1 and ( none() or - index = n and result = e.getExpr() and partialPredicateCall = "Expr()" + index = n and result = e.getArgName() and partialPredicateCall = "ArgName()" or - index = nExpr and result = e.getName() and partialPredicateCall = "Name()" + index = nArgName and result = e.getExpr() and partialPredicateCall = "Expr()" ) ) } + private Element getImmediateChildOfFormatArgsArgName( + FormatArgsArgName e, int index, string partialPredicateCall + ) { + none() + } + private Element getImmediateChildOfGenericArgList( GenericArgList e, int index, string partialPredicateCall ) { @@ -339,24 +345,6 @@ private module Impl { ) } - private Element getImmediateChildOfMeta(Meta e, int index, string partialPredicateCall) { - exists(int n, int nExpr, int nPath, int nTokenTree | - n = 0 and - nExpr = n + 1 and - nPath = nExpr + 1 and - nTokenTree = nPath + 1 and - ( - none() - or - index = n and result = e.getExpr() and partialPredicateCall = "Expr()" - or - index = nExpr and result = e.getPath() and partialPredicateCall = "Path()" - or - index = nPath and result = e.getTokenTree() and partialPredicateCall = "TokenTree()" - ) - ) - } - private Element getImmediateChildOfName(Name e, int index, string partialPredicateCall) { none() } private Element getImmediateChildOfParamList(ParamList e, int index, string partialPredicateCall) { @@ -567,11 +555,11 @@ private module Impl { private Element getImmediateChildOfStructField( StructField e, int index, string partialPredicateCall ) { - exists(int n, int nAttr, int nDefault, int nName, int nTypeRepr, int nVisibility | + exists(int n, int nAttr, int nDefaultVal, int nName, int nTypeRepr, int nVisibility | n = 0 and nAttr = n + e.getNumberOfAttrs() and - nDefault = nAttr + 1 and - nName = nDefault + 1 and + nDefaultVal = nAttr + 1 and + nName = nDefaultVal + 1 and nTypeRepr = nName + 1 and nVisibility = nTypeRepr + 1 and ( @@ -580,9 +568,9 @@ private module Impl { result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or - index = nAttr and result = e.getDefault() and partialPredicateCall = "Default()" + index = nAttr and result = e.getDefaultVal() and partialPredicateCall = "DefaultVal()" or - index = nDefault and result = e.getName() and partialPredicateCall = "Name()" + index = nDefaultVal and result = e.getName() and partialPredicateCall = "Name()" or index = nName and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" or @@ -634,6 +622,20 @@ private module Impl { none() } + private Element getImmediateChildOfTryBlockModifier( + TryBlockModifier e, int index, string partialPredicateCall + ) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" + ) + ) + } + private Element getImmediateChildOfTupleField(TupleField e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nTypeRepr, int nVisibility | n = 0 and @@ -1108,6 +1110,55 @@ private module Impl { ) } + private Element getImmediateChildOfCfgAtom(CfgAtom e, int index, string partialPredicateCall) { + none() + } + + private Element getImmediateChildOfCfgAttrMeta( + CfgAttrMeta e, int index, string partialPredicateCall + ) { + exists(int n, int nCfgPredicate, int nMeta | + n = 0 and + nCfgPredicate = n + 1 and + nMeta = nCfgPredicate + e.getNumberOfMetas() and + ( + none() + or + index = n and result = e.getCfgPredicate() and partialPredicateCall = "CfgPredicate()" + or + result = e.getMeta(index - nCfgPredicate) and + partialPredicateCall = "Meta(" + (index - nCfgPredicate).toString() + ")" + ) + ) + } + + private Element getImmediateChildOfCfgComposite( + CfgComposite e, int index, string partialPredicateCall + ) { + exists(int n, int nCfgPredicate | + n = 0 and + nCfgPredicate = n + e.getNumberOfCfgPredicates() and + ( + none() + or + result = e.getCfgPredicate(index - n) and + partialPredicateCall = "CfgPredicate(" + (index - n).toString() + ")" + ) + ) + } + + private Element getImmediateChildOfCfgMeta(CfgMeta e, int index, string partialPredicateCall) { + exists(int n, int nCfgPredicate | + n = 0 and + nCfgPredicate = n + 1 and + ( + none() + or + index = n and result = e.getCfgPredicate() and partialPredicateCall = "CfgPredicate()" + ) + ) + } + private Element getImmediateChildOfClosureExpr( ClosureExpr e, int index, string partialPredicateCall ) { @@ -1393,6 +1444,23 @@ private module Impl { none() } + private Element getImmediateChildOfKeyValueMeta( + KeyValueMeta e, int index, string partialPredicateCall + ) { + exists(int n, int nExpr, int nPath | + n = 0 and + nExpr = n + 1 and + nPath = nExpr + 1 and + ( + none() + or + index = n and result = e.getExpr() and partialPredicateCall = "Expr()" + or + index = nExpr and result = e.getPath() and partialPredicateCall = "Path()" + ) + ) + } + private Element getImmediateChildOfLetExpr(LetExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nScrutinee, int nPat | n = 0 and @@ -1701,6 +1769,18 @@ private module Impl { ) } + private Element getImmediateChildOfPathMeta(PathMeta e, int index, string partialPredicateCall) { + exists(int n, int nPath | + n = 0 and + nPath = n + 1 and + ( + none() + or + index = n and result = e.getPath() and partialPredicateCall = "Path()" + ) + ) + } + private Element getImmediateChildOfPathPat(PathPat e, int index, string partialPredicateCall) { exists(int n, int nPath | n = 0 and @@ -1963,6 +2043,23 @@ private module Impl { ) } + private Element getImmediateChildOfTokenTreeMeta( + TokenTreeMeta e, int index, string partialPredicateCall + ) { + exists(int n, int nPath, int nTokenTree | + n = 0 and + nPath = n + 1 and + nTokenTree = nPath + 1 and + ( + none() + or + index = n and result = e.getPath() and partialPredicateCall = "Path()" + or + index = nPath and result = e.getTokenTree() and partialPredicateCall = "TokenTree()" + ) + ) + } + private Element getImmediateChildOfTryExpr(TryExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and @@ -2106,12 +2203,24 @@ private module Impl { ) } + private Element getImmediateChildOfUnsafeMeta(UnsafeMeta e, int index, string partialPredicateCall) { + exists(int n, int nMeta | + n = 0 and + nMeta = n + 1 and + ( + none() + or + index = n and result = e.getMeta() and partialPredicateCall = "Meta()" + ) + ) + } + private Element getImmediateChildOfVariant(Variant e, int index, string partialPredicateCall) { - exists(int n, int nAttr, int nDiscriminant, int nFieldList, int nName, int nVisibility | + exists(int n, int nAttr, int nConstArg, int nFieldList, int nName, int nVisibility | n = 0 and nAttr = n + e.getNumberOfAttrs() and - nDiscriminant = nAttr + 1 and - nFieldList = nDiscriminant + 1 and + nConstArg = nAttr + 1 and + nFieldList = nConstArg + 1 and nName = nFieldList + 1 and nVisibility = nName + 1 and ( @@ -2120,9 +2229,9 @@ private module Impl { result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or - index = nAttr and result = e.getDiscriminant() and partialPredicateCall = "Discriminant()" + index = nAttr and result = e.getConstArg() and partialPredicateCall = "ConstArg()" or - index = nDiscriminant and result = e.getFieldList() and partialPredicateCall = "FieldList()" + index = nConstArg and result = e.getFieldList() and partialPredicateCall = "FieldList()" or index = nFieldList and result = e.getName() and partialPredicateCall = "Name()" or @@ -2242,11 +2351,12 @@ private module Impl { } private Element getImmediateChildOfBlockExpr(BlockExpr e, int index, string partialPredicateCall) { - exists(int n, int nLabel, int nAttr, int nStmtList | + exists(int n, int nLabel, int nAttr, int nStmtList, int nTryBlockModifier | n = 0 and nLabel = n + 1 and nAttr = nLabel + e.getNumberOfAttrs() and nStmtList = nAttr + 1 and + nTryBlockModifier = nStmtList + 1 and ( none() or @@ -2256,6 +2366,10 @@ private module Impl { partialPredicateCall = "Attr(" + (index - nLabel).toString() + ")" or index = nAttr and result = e.getStmtList() and partialPredicateCall = "StmtList()" + or + index = nStmtList and + result = e.getTryBlockModifier() and + partialPredicateCall = "TryBlockModifier()" ) ) } @@ -2526,48 +2640,6 @@ private module Impl { ) } - private Element getImmediateChildOfTraitAlias(TraitAlias e, int index, string partialPredicateCall) { - exists( - int n, int nAttributeMacroExpansion, int nAttr, int nGenericParamList, int nName, - int nTypeBoundList, int nVisibility, int nWhereClause - | - n = 0 and - nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and - nGenericParamList = nAttr + 1 and - nName = nGenericParamList + 1 and - nTypeBoundList = nName + 1 and - nVisibility = nTypeBoundList + 1 and - nWhereClause = nVisibility + 1 and - ( - none() - or - index = n and - result = e.getAttributeMacroExpansion() and - partialPredicateCall = "AttributeMacroExpansion()" - or - result = e.getAttr(index - nAttributeMacroExpansion) and - partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" - or - index = nAttr and - result = e.getGenericParamList() and - partialPredicateCall = "GenericParamList()" - or - index = nGenericParamList and result = e.getName() and partialPredicateCall = "Name()" - or - index = nName and result = e.getTypeBoundList() and partialPredicateCall = "TypeBoundList()" - or - index = nTypeBoundList and - result = e.getVisibility() and - partialPredicateCall = "Visibility()" - or - index = nVisibility and - result = e.getWhereClause() and - partialPredicateCall = "WhereClause()" - ) - ) - } - private Element getImmediateChildOfUse(Use e, int index, string partialPredicateCall) { exists(int n, int nAttributeMacroExpansion, int nAttr, int nUseTree, int nVisibility | n = 0 and @@ -3045,6 +3117,8 @@ private module Impl { or result = getImmediateChildOfFormatArgsArg(e, index, partialAccessor) or + result = getImmediateChildOfFormatArgsArgName(e, index, partialAccessor) + or result = getImmediateChildOfGenericArgList(e, index, partialAccessor) or result = getImmediateChildOfGenericParamList(e, index, partialAccessor) @@ -3063,8 +3137,6 @@ private module Impl { or result = getImmediateChildOfMatchGuard(e, index, partialAccessor) or - result = getImmediateChildOfMeta(e, index, partialAccessor) - or result = getImmediateChildOfName(e, index, partialAccessor) or result = getImmediateChildOfParamList(e, index, partialAccessor) @@ -3097,6 +3169,8 @@ private module Impl { or result = getImmediateChildOfTokenTree(e, index, partialAccessor) or + result = getImmediateChildOfTryBlockModifier(e, index, partialAccessor) + or result = getImmediateChildOfTupleField(e, index, partialAccessor) or result = getImmediateChildOfTypeBound(e, index, partialAccessor) @@ -3151,6 +3225,14 @@ private module Impl { or result = getImmediateChildOfCastExpr(e, index, partialAccessor) or + result = getImmediateChildOfCfgAtom(e, index, partialAccessor) + or + result = getImmediateChildOfCfgAttrMeta(e, index, partialAccessor) + or + result = getImmediateChildOfCfgComposite(e, index, partialAccessor) + or + result = getImmediateChildOfCfgMeta(e, index, partialAccessor) + or result = getImmediateChildOfClosureExpr(e, index, partialAccessor) or result = getImmediateChildOfComment(e, index, partialAccessor) @@ -3185,6 +3267,8 @@ private module Impl { or result = getImmediateChildOfInferTypeRepr(e, index, partialAccessor) or + result = getImmediateChildOfKeyValueMeta(e, index, partialAccessor) + or result = getImmediateChildOfLetExpr(e, index, partialAccessor) or result = getImmediateChildOfLetStmt(e, index, partialAccessor) @@ -3225,6 +3309,8 @@ private module Impl { or result = getImmediateChildOfParenTypeRepr(e, index, partialAccessor) or + result = getImmediateChildOfPathMeta(e, index, partialAccessor) + or result = getImmediateChildOfPathPat(e, index, partialAccessor) or result = getImmediateChildOfPathTypeRepr(e, index, partialAccessor) @@ -3259,6 +3345,8 @@ private module Impl { or result = getImmediateChildOfStructPat(e, index, partialAccessor) or + result = getImmediateChildOfTokenTreeMeta(e, index, partialAccessor) + or result = getImmediateChildOfTryExpr(e, index, partialAccessor) or result = getImmediateChildOfTupleExpr(e, index, partialAccessor) @@ -3277,6 +3365,8 @@ private module Impl { or result = getImmediateChildOfUnderscoreExpr(e, index, partialAccessor) or + result = getImmediateChildOfUnsafeMeta(e, index, partialAccessor) + or result = getImmediateChildOfVariant(e, index, partialAccessor) or result = getImmediateChildOfWildcardPat(e, index, partialAccessor) @@ -3311,8 +3401,6 @@ private module Impl { or result = getImmediateChildOfTrait(e, index, partialAccessor) or - result = getImmediateChildOfTraitAlias(e, index, partialAccessor) - or result = getImmediateChildOfUse(e, index, partialAccessor) or result = getImmediateChildOfConst(e, index, partialAccessor) diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/PathMeta.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/PathMeta.qll new file mode 100644 index 000000000000..f568d2407e13 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/PathMeta.qll @@ -0,0 +1,37 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `PathMeta`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.internal.MetaImpl::Impl as MetaImpl +import codeql.rust.elements.Path + +/** + * INTERNAL: This module contains the fully generated definition of `PathMeta` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::PathMeta` class directly. + * Use the subclass `PathMeta`, where the following predicates are available. + */ + class PathMeta extends Synth::TPathMeta, MetaImpl::Meta { + override string getAPrimaryQlClass() { result = "PathMeta" } + + /** + * Gets the path of this path meta, if it exists. + */ + Path getPath() { + result = + Synth::convertPathFromRaw(Synth::convertPathMetaToRaw(this).(Raw::PathMeta).getPath()) + } + + /** + * Holds if `getPath()` exists. + */ + final predicate hasPath() { exists(this.getPath()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll index 01f54e7ab608..c0ab16aa8277 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll @@ -418,6 +418,11 @@ module Raw { int getNumberOfAttrs() { result = count(int i | callable_attrs(this, i, _)) } } + /** + * INTERNAL: Do not use. + */ + class CfgPredicate extends @cfg_predicate, AstNode { } + /** * INTERNAL: Do not use. * The base class for expressions. @@ -538,31 +543,40 @@ module Raw { override string toString() { result = "FormatArgsArg" } /** - * Gets the expression of this format arguments argument, if it exists. + * Gets the argument name of this format arguments argument, if it exists. */ - Expr getExpr() { format_args_arg_exprs(this, result) } + FormatArgsArgName getArgName() { format_args_arg_arg_names(this, result) } /** - * Gets the name of this format arguments argument, if it exists. + * Gets the expression of this format arguments argument, if it exists. */ - Name getName() { format_args_arg_names(this, result) } + Expr getExpr() { format_args_arg_exprs(this, result) } } private Element getImmediateChildOfFormatArgsArg(FormatArgsArg e, int index) { - exists(int n, int nExpr, int nName | + exists(int n, int nArgName, int nExpr | n = 0 and - nExpr = n + 1 and - nName = nExpr + 1 and + nArgName = n + 1 and + nExpr = nArgName + 1 and ( none() or - index = n and result = e.getExpr() + index = n and result = e.getArgName() or - index = nExpr and result = e.getName() + index = nArgName and result = e.getExpr() ) ) } + /** + * INTERNAL: Do not use. + */ + class FormatArgsArgName extends @format_args_arg_name, AstNode { + override string toString() { result = "FormatArgsArgName" } + } + + private Element getImmediateChildOfFormatArgsArgName(FormatArgsArgName e, int index) { none() } + /** * INTERNAL: Do not use. * A generic argument in a generic argument list. @@ -988,47 +1002,7 @@ module Raw { * } * ``` */ - class Meta extends @meta, AstNode { - override string toString() { result = "Meta" } - - /** - * Gets the expression of this meta, if it exists. - */ - Expr getExpr() { meta_exprs(this, result) } - - /** - * Holds if this meta is unsafe. - */ - predicate isUnsafe() { meta_is_unsafe(this) } - - /** - * Gets the path of this meta, if it exists. - */ - Path getPath() { meta_paths(this, result) } - - /** - * Gets the token tree of this meta, if it exists. - */ - TokenTree getTokenTree() { meta_token_trees(this, result) } - } - - private Element getImmediateChildOfMeta(Meta e, int index) { - exists(int n, int nExpr, int nPath, int nTokenTree | - n = 0 and - nExpr = n + 1 and - nPath = nExpr + 1 and - nTokenTree = nPath + 1 and - ( - none() - or - index = n and result = e.getExpr() - or - index = nExpr and result = e.getPath() - or - index = nPath and result = e.getTokenTree() - ) - ) - } + class Meta extends @meta, AstNode { } /** * INTERNAL: Do not use. @@ -1638,9 +1612,9 @@ module Raw { int getNumberOfAttrs() { result = count(int i | struct_field_attrs(this, i, _)) } /** - * Gets the default of this struct field, if it exists. + * Gets the default val of this struct field, if it exists. */ - Expr getDefault() { struct_field_defaults(this, result) } + ConstArg getDefaultVal() { struct_field_default_vals(this, result) } /** * Holds if this struct field is unsafe. @@ -1664,11 +1638,11 @@ module Raw { } private Element getImmediateChildOfStructField(StructField e, int index) { - exists(int n, int nAttr, int nDefault, int nName, int nTypeRepr, int nVisibility | + exists(int n, int nAttr, int nDefaultVal, int nName, int nTypeRepr, int nVisibility | n = 0 and nAttr = n + e.getNumberOfAttrs() and - nDefault = nAttr + 1 and - nName = nDefault + 1 and + nDefaultVal = nAttr + 1 and + nName = nDefaultVal + 1 and nTypeRepr = nName + 1 and nVisibility = nTypeRepr + 1 and ( @@ -1676,9 +1650,9 @@ module Raw { or result = e.getAttr(index - n) or - index = nAttr and result = e.getDefault() + index = nAttr and result = e.getDefaultVal() or - index = nDefault and result = e.getName() + index = nDefaultVal and result = e.getName() or index = nName and result = e.getTypeRepr() or @@ -1806,6 +1780,35 @@ module Raw { private Element getImmediateChildOfTokenTree(TokenTree e, int index) { none() } + /** + * INTERNAL: Do not use. + */ + class TryBlockModifier extends @try_block_modifier, AstNode { + override string toString() { result = "TryBlockModifier" } + + /** + * Holds if this try block modifier is try. + */ + predicate isTry() { try_block_modifier_is_try(this) } + + /** + * Gets the type representation of this try block modifier, if it exists. + */ + TypeRepr getTypeRepr() { try_block_modifier_type_reprs(this, result) } + } + + private Element getImmediateChildOfTryBlockModifier(TryBlockModifier e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A field in a tuple struct or tuple variant. @@ -3044,6 +3047,107 @@ module Raw { ) } + /** + * INTERNAL: Do not use. + */ + class CfgAtom extends @cfg_atom, CfgPredicate { + override string toString() { result = "CfgAtom" } + } + + private Element getImmediateChildOfCfgAtom(CfgAtom e, int index) { none() } + + /** + * INTERNAL: Do not use. + */ + class CfgAttrMeta extends @cfg_attr_meta, Meta { + override string toString() { result = "CfgAttrMeta" } + + /** + * Gets the cfg predicate of this cfg attr meta, if it exists. + */ + CfgPredicate getCfgPredicate() { cfg_attr_meta_cfg_predicates(this, result) } + + /** + * Gets the `index`th meta of this cfg attr meta (0-based). + */ + Meta getMeta(int index) { cfg_attr_meta_metas(this, index, result) } + + /** + * Gets the number of metas of this cfg attr meta. + */ + int getNumberOfMetas() { result = count(int i | cfg_attr_meta_metas(this, i, _)) } + } + + private Element getImmediateChildOfCfgAttrMeta(CfgAttrMeta e, int index) { + exists(int n, int nCfgPredicate, int nMeta | + n = 0 and + nCfgPredicate = n + 1 and + nMeta = nCfgPredicate + e.getNumberOfMetas() and + ( + none() + or + index = n and result = e.getCfgPredicate() + or + result = e.getMeta(index - nCfgPredicate) + ) + ) + } + + /** + * INTERNAL: Do not use. + */ + class CfgComposite extends @cfg_composite, CfgPredicate { + override string toString() { result = "CfgComposite" } + + /** + * Gets the `index`th cfg predicate of this cfg composite (0-based). + */ + CfgPredicate getCfgPredicate(int index) { cfg_composite_cfg_predicates(this, index, result) } + + /** + * Gets the number of cfg predicates of this cfg composite. + */ + int getNumberOfCfgPredicates() { + result = count(int i | cfg_composite_cfg_predicates(this, i, _)) + } + } + + private Element getImmediateChildOfCfgComposite(CfgComposite e, int index) { + exists(int n, int nCfgPredicate | + n = 0 and + nCfgPredicate = n + e.getNumberOfCfgPredicates() and + ( + none() + or + result = e.getCfgPredicate(index - n) + ) + ) + } + + /** + * INTERNAL: Do not use. + */ + class CfgMeta extends @cfg_meta, Meta { + override string toString() { result = "CfgMeta" } + + /** + * Gets the cfg predicate of this cfg meta, if it exists. + */ + CfgPredicate getCfgPredicate() { cfg_meta_cfg_predicates(this, result) } + } + + private Element getImmediateChildOfCfgMeta(CfgMeta e, int index) { + exists(int n, int nCfgPredicate | + n = 0 and + nCfgPredicate = n + 1 and + ( + none() + or + index = n and result = e.getCfgPredicate() + ) + ) + } + /** * INTERNAL: Do not use. * A closure expression. For example: @@ -3855,6 +3959,38 @@ module Raw { MacroItems getAttributeMacroExpansion() { item_attribute_macro_expansions(this, result) } } + /** + * INTERNAL: Do not use. + */ + class KeyValueMeta extends @key_value_meta, Meta { + override string toString() { result = "KeyValueMeta" } + + /** + * Gets the expression of this key value meta, if it exists. + */ + Expr getExpr() { key_value_meta_exprs(this, result) } + + /** + * Gets the path of this key value meta, if it exists. + */ + Path getPath() { key_value_meta_paths(this, result) } + } + + private Element getImmediateChildOfKeyValueMeta(KeyValueMeta e, int index) { + exists(int n, int nExpr, int nPath | + n = 0 and + nExpr = n + 1 and + nPath = nExpr + 1 and + ( + none() + or + index = n and result = e.getExpr() + or + index = nExpr and result = e.getPath() + ) + ) + } + /** * INTERNAL: Do not use. * The base class for expressions that can be labeled (`LoopExpr`, `ForExpr`, `WhileExpr` or `BlockExpr`). @@ -4673,6 +4809,30 @@ module Raw { */ class PathExprBase extends @path_expr_base, Expr { } + /** + * INTERNAL: Do not use. + */ + class PathMeta extends @path_meta, Meta { + override string toString() { result = "PathMeta" } + + /** + * Gets the path of this path meta, if it exists. + */ + Path getPath() { path_meta_paths(this, result) } + } + + private Element getImmediateChildOfPathMeta(PathMeta e, int index) { + exists(int n, int nPath | + n = 0 and + nPath = n + 1 and + ( + none() + or + index = n and result = e.getPath() + ) + ) + } + /** * INTERNAL: Do not use. * A path pattern. For example: @@ -5379,6 +5539,38 @@ module Raw { ) } + /** + * INTERNAL: Do not use. + */ + class TokenTreeMeta extends @token_tree_meta, Meta { + override string toString() { result = "TokenTreeMeta" } + + /** + * Gets the path of this token tree meta, if it exists. + */ + Path getPath() { token_tree_meta_paths(this, result) } + + /** + * Gets the token tree of this token tree meta, if it exists. + */ + TokenTree getTokenTree() { token_tree_meta_token_trees(this, result) } + } + + private Element getImmediateChildOfTokenTreeMeta(TokenTreeMeta e, int index) { + exists(int n, int nPath, int nTokenTree | + n = 0 and + nPath = n + 1 and + nTokenTree = nPath + 1 and + ( + none() + or + index = n and result = e.getPath() + or + index = nPath and result = e.getTokenTree() + ) + ) + } + /** * INTERNAL: Do not use. * A try expression using the `?` operator. @@ -5741,6 +5933,35 @@ module Raw { ) } + /** + * INTERNAL: Do not use. + */ + class UnsafeMeta extends @unsafe_meta, Meta { + override string toString() { result = "UnsafeMeta" } + + /** + * Holds if this unsafe meta is unsafe. + */ + predicate isUnsafe() { unsafe_meta_is_unsafe(this) } + + /** + * Gets the meta of this unsafe meta, if it exists. + */ + Meta getMeta() { unsafe_meta_meta(this, result) } + } + + private Element getImmediateChildOfUnsafeMeta(UnsafeMeta e, int index) { + exists(int n, int nMeta | + n = 0 and + nMeta = n + 1 and + ( + none() + or + index = n and result = e.getMeta() + ) + ) + } + /** * INTERNAL: Do not use. * A variant in an enum declaration. @@ -5765,9 +5986,9 @@ module Raw { int getNumberOfAttrs() { result = count(int i | variant_attrs(this, i, _)) } /** - * Gets the discriminant of this variant, if it exists. + * Gets the const argument of this variant, if it exists. */ - Expr getDiscriminant() { variant_discriminants(this, result) } + ConstArg getConstArg() { variant_const_args(this, result) } /** * Gets the field list of this variant, if it exists. @@ -5786,11 +6007,11 @@ module Raw { } private Element getImmediateChildOfVariant(Variant e, int index) { - exists(int n, int nAttr, int nDiscriminant, int nFieldList, int nName, int nVisibility | + exists(int n, int nAttr, int nConstArg, int nFieldList, int nName, int nVisibility | n = 0 and nAttr = n + e.getNumberOfAttrs() and - nDiscriminant = nAttr + 1 and - nFieldList = nDiscriminant + 1 and + nConstArg = nAttr + 1 and + nFieldList = nConstArg + 1 and nName = nFieldList + 1 and nVisibility = nName + 1 and ( @@ -5798,9 +6019,9 @@ module Raw { or result = e.getAttr(index - n) or - index = nAttr and result = e.getDiscriminant() + index = nAttr and result = e.getConstArg() or - index = nDiscriminant and result = e.getFieldList() + index = nConstArg and result = e.getFieldList() or index = nFieldList and result = e.getName() or @@ -6034,11 +6255,6 @@ module Raw { */ predicate isMove() { block_expr_is_move(this) } - /** - * Holds if this block expression is try. - */ - predicate isTry() { block_expr_is_try(this) } - /** * Holds if this block expression is unsafe. */ @@ -6048,14 +6264,20 @@ module Raw { * Gets the statement list of this block expression, if it exists. */ StmtList getStmtList() { block_expr_stmt_lists(this, result) } + + /** + * Gets the try block modifier of this block expression, if it exists. + */ + TryBlockModifier getTryBlockModifier() { block_expr_try_block_modifiers(this, result) } } private Element getImmediateChildOfBlockExpr(BlockExpr e, int index) { - exists(int n, int nLabel, int nAttr, int nStmtList | + exists(int n, int nLabel, int nAttr, int nStmtList, int nTryBlockModifier | n = 0 and nLabel = n + 1 and nAttr = nLabel + e.getNumberOfAttrs() and nStmtList = nAttr + 1 and + nTryBlockModifier = nStmtList + 1 and ( none() or @@ -6064,6 +6286,8 @@ module Raw { result = e.getAttr(index - nLabel) or index = nAttr and result = e.getStmtList() + or + index = nStmtList and result = e.getTryBlockModifier() ) ) } @@ -6674,87 +6898,6 @@ module Raw { ) } - /** - * INTERNAL: Do not use. - * A trait alias. - * - * For example: - * ```rust - * trait Foo = Bar + Baz; - * ``` - */ - class TraitAlias extends @trait_alias, Item { - override string toString() { result = "TraitAlias" } - - /** - * Gets the `index`th attr of this trait alias (0-based). - */ - Attr getAttr(int index) { trait_alias_attrs(this, index, result) } - - /** - * Gets the number of attrs of this trait alias. - */ - int getNumberOfAttrs() { result = count(int i | trait_alias_attrs(this, i, _)) } - - /** - * Gets the generic parameter list of this trait alias, if it exists. - */ - GenericParamList getGenericParamList() { trait_alias_generic_param_lists(this, result) } - - /** - * Gets the name of this trait alias, if it exists. - */ - Name getName() { trait_alias_names(this, result) } - - /** - * Gets the type bound list of this trait alias, if it exists. - */ - TypeBoundList getTypeBoundList() { trait_alias_type_bound_lists(this, result) } - - /** - * Gets the visibility of this trait alias, if it exists. - */ - Visibility getVisibility() { trait_alias_visibilities(this, result) } - - /** - * Gets the where clause of this trait alias, if it exists. - */ - WhereClause getWhereClause() { trait_alias_where_clauses(this, result) } - } - - private Element getImmediateChildOfTraitAlias(TraitAlias e, int index) { - exists( - int n, int nAttributeMacroExpansion, int nAttr, int nGenericParamList, int nName, - int nTypeBoundList, int nVisibility, int nWhereClause - | - n = 0 and - nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and - nGenericParamList = nAttr + 1 and - nName = nGenericParamList + 1 and - nTypeBoundList = nName + 1 and - nVisibility = nTypeBoundList + 1 and - nWhereClause = nVisibility + 1 and - ( - none() - or - index = n and result = e.getAttributeMacroExpansion() - or - result = e.getAttr(index - nAttributeMacroExpansion) - or - index = nAttr and result = e.getGenericParamList() - or - index = nGenericParamList and result = e.getName() - or - index = nName and result = e.getTypeBoundList() - or - index = nTypeBoundList and result = e.getVisibility() - or - index = nVisibility and result = e.getWhereClause() - ) - ) - } - /** * INTERNAL: Do not use. * An item that defines a type. Either a `Struct`, `Enum`, or `Union`. @@ -7712,6 +7855,8 @@ module Raw { or result = getImmediateChildOfFormatArgsArg(e, index) or + result = getImmediateChildOfFormatArgsArgName(e, index) + or result = getImmediateChildOfGenericArgList(e, index) or result = getImmediateChildOfGenericParamList(e, index) @@ -7730,8 +7875,6 @@ module Raw { or result = getImmediateChildOfMatchGuard(e, index) or - result = getImmediateChildOfMeta(e, index) - or result = getImmediateChildOfName(e, index) or result = getImmediateChildOfParamList(e, index) @@ -7764,6 +7907,8 @@ module Raw { or result = getImmediateChildOfTokenTree(e, index) or + result = getImmediateChildOfTryBlockModifier(e, index) + or result = getImmediateChildOfTupleField(e, index) or result = getImmediateChildOfTypeBound(e, index) @@ -7818,6 +7963,14 @@ module Raw { or result = getImmediateChildOfCastExpr(e, index) or + result = getImmediateChildOfCfgAtom(e, index) + or + result = getImmediateChildOfCfgAttrMeta(e, index) + or + result = getImmediateChildOfCfgComposite(e, index) + or + result = getImmediateChildOfCfgMeta(e, index) + or result = getImmediateChildOfClosureExpr(e, index) or result = getImmediateChildOfComment(e, index) @@ -7852,6 +8005,8 @@ module Raw { or result = getImmediateChildOfInferTypeRepr(e, index) or + result = getImmediateChildOfKeyValueMeta(e, index) + or result = getImmediateChildOfLetExpr(e, index) or result = getImmediateChildOfLetStmt(e, index) @@ -7892,6 +8047,8 @@ module Raw { or result = getImmediateChildOfParenTypeRepr(e, index) or + result = getImmediateChildOfPathMeta(e, index) + or result = getImmediateChildOfPathPat(e, index) or result = getImmediateChildOfPathTypeRepr(e, index) @@ -7926,6 +8083,8 @@ module Raw { or result = getImmediateChildOfStructPat(e, index) or + result = getImmediateChildOfTokenTreeMeta(e, index) + or result = getImmediateChildOfTryExpr(e, index) or result = getImmediateChildOfTupleExpr(e, index) @@ -7944,6 +8103,8 @@ module Raw { or result = getImmediateChildOfUnderscoreExpr(e, index) or + result = getImmediateChildOfUnsafeMeta(e, index) + or result = getImmediateChildOfVariant(e, index) or result = getImmediateChildOfWildcardPat(e, index) @@ -7972,8 +8133,6 @@ module Raw { or result = getImmediateChildOfTrait(e, index) or - result = getImmediateChildOfTraitAlias(e, index) - or result = getImmediateChildOfUse(e, index) or result = getImmediateChildOfConst(e, index) diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll index 9650d4fd2c12..bbad0ec97fc7 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll @@ -8,7 +8,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl import codeql.rust.elements.Attr -import codeql.rust.elements.Expr +import codeql.rust.elements.ConstArg import codeql.rust.elements.Name import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility @@ -53,19 +53,19 @@ module Generated { final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) } /** - * Gets the default of this struct field, if it exists. + * Gets the default val of this struct field, if it exists. */ - Expr getDefault() { + ConstArg getDefaultVal() { result = - Synth::convertExprFromRaw(Synth::convertStructFieldToRaw(this) + Synth::convertConstArgFromRaw(Synth::convertStructFieldToRaw(this) .(Raw::StructField) - .getDefault()) + .getDefaultVal()) } /** - * Holds if `getDefault()` exists. + * Holds if `getDefaultVal()` exists. */ - final predicate hasDefault() { exists(this.getDefault()) } + final predicate hasDefaultVal() { exists(this.getDefaultVal()) } /** * Holds if this struct field is unsafe. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll index eebd86348e0c..bff6809686f8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll @@ -130,6 +130,22 @@ module Synth { * INTERNAL: Do not use. */ TCastExpr(Raw::CastExpr id) { constructCastExpr(id) } or + /** + * INTERNAL: Do not use. + */ + TCfgAtom(Raw::CfgAtom id) { constructCfgAtom(id) } or + /** + * INTERNAL: Do not use. + */ + TCfgAttrMeta(Raw::CfgAttrMeta id) { constructCfgAttrMeta(id) } or + /** + * INTERNAL: Do not use. + */ + TCfgComposite(Raw::CfgComposite id) { constructCfgComposite(id) } or + /** + * INTERNAL: Do not use. + */ + TCfgMeta(Raw::CfgMeta id) { constructCfgMeta(id) } or /** * INTERNAL: Do not use. */ @@ -220,6 +236,10 @@ module Synth { * INTERNAL: Do not use. */ TFormatArgsArg(Raw::FormatArgsArg id) { constructFormatArgsArg(id) } or + /** + * INTERNAL: Do not use. + */ + TFormatArgsArgName(Raw::FormatArgsArgName id) { constructFormatArgsArgName(id) } or /** * INTERNAL: Do not use. */ @@ -278,6 +298,10 @@ module Synth { * INTERNAL: Do not use. */ TItemList(Raw::ItemList id) { constructItemList(id) } or + /** + * INTERNAL: Do not use. + */ + TKeyValueMeta(Raw::KeyValueMeta id) { constructKeyValueMeta(id) } or /** * INTERNAL: Do not use. */ @@ -362,10 +386,6 @@ module Synth { * INTERNAL: Do not use. */ TMatchGuard(Raw::MatchGuard id) { constructMatchGuard(id) } or - /** - * INTERNAL: Do not use. - */ - TMeta(Raw::Meta id) { constructMeta(id) } or /** * INTERNAL: Do not use. */ @@ -434,6 +454,10 @@ module Synth { * INTERNAL: Do not use. */ TPathExpr(Raw::PathExpr id) { constructPathExpr(id) } or + /** + * INTERNAL: Do not use. + */ + TPathMeta(Raw::PathMeta id) { constructPathMeta(id) } or /** * INTERNAL: Do not use. */ @@ -558,6 +582,10 @@ module Synth { * INTERNAL: Do not use. */ TTokenTree(Raw::TokenTree id) { constructTokenTree(id) } or + /** + * INTERNAL: Do not use. + */ + TTokenTreeMeta(Raw::TokenTreeMeta id) { constructTokenTreeMeta(id) } or /** * INTERNAL: Do not use. */ @@ -565,7 +593,7 @@ module Synth { /** * INTERNAL: Do not use. */ - TTraitAlias(Raw::TraitAlias id) { constructTraitAlias(id) } or + TTryBlockModifier(Raw::TryBlockModifier id) { constructTryBlockModifier(id) } or /** * INTERNAL: Do not use. */ @@ -626,6 +654,10 @@ module Synth { * INTERNAL: Do not use. */ TUnion(Raw::Union id) { constructUnion(id) } or + /** + * INTERNAL: Do not use. + */ + TUnsafeMeta(Raw::UnsafeMeta id) { constructUnsafeMeta(id) } or /** * INTERNAL: Do not use. */ @@ -709,22 +741,28 @@ module Synth { */ class TAstNode = TAbi or TAddressable or TArgList or TAsmDirSpec or TAsmOperand or TAsmOperandExpr or - TAsmOption or TAsmPiece or TAsmRegSpec or TAssocItemList or TAttr or TCallable or TExpr or - TExternItemList or TFieldList or TForBinder or TFormatArgsArg or TGenericArg or - TGenericArgList or TGenericParam or TGenericParamList or TItemList or TLabel or TLetElse or - TMacroItems or TMatchArm or TMatchArmList or TMatchGuard or TMeta or TName or TParamBase or - TParamList or TParenthesizedArgList or TPat or TPath or TPathAstNode or TPathSegment or - TRename or TRetTypeRepr or TReturnTypeSyntax or TSourceFile or TStmt or TStmtList or + TAsmOption or TAsmPiece or TAsmRegSpec or TAssocItemList or TAttr or TCallable or + TCfgPredicate or TExpr or TExternItemList or TFieldList or TForBinder or TFormatArgsArg or + TFormatArgsArgName or TGenericArg or TGenericArgList or TGenericParam or + TGenericParamList or TItemList or TLabel or TLetElse or TMacroItems or TMatchArm or + TMatchArmList or TMatchGuard or TMeta or TName or TParamBase or TParamList or + TParenthesizedArgList or TPat or TPath or TPathAstNode or TPathSegment or TRename or + TRetTypeRepr or TReturnTypeSyntax or TSourceFile or TStmt or TStmtList or TStructExprField or TStructExprFieldList or TStructField or TStructPatField or - TStructPatFieldList or TToken or TTokenTree or TTupleField or TTypeBound or - TTypeBoundList or TTypeRepr or TUseBoundGenericArg or TUseBoundGenericArgs or TUseTree or - TUseTreeList or TVariantList or TVisibility or TWhereClause or TWherePred; + TStructPatFieldList or TToken or TTokenTree or TTryBlockModifier or TTupleField or + TTypeBound or TTypeBoundList or TTypeRepr or TUseBoundGenericArg or TUseBoundGenericArgs or + TUseTree or TUseTreeList or TVariantList or TVisibility or TWhereClause or TWherePred; /** * INTERNAL: Do not use. */ class TCallable = TClosureExpr or TFunction; + /** + * INTERNAL: Do not use. + */ + class TCfgPredicate = TCfgAtom or TCfgComposite; + /** * INTERNAL: Do not use. */ @@ -761,7 +799,7 @@ module Synth { */ class TItem = TAsmExpr or TAssocItem or TExternBlock or TExternCrate or TExternItem or TImpl or TMacroDef or - TMacroRules or TModule or TTrait or TTraitAlias or TTypeItem or TUse; + TMacroRules or TModule or TTrait or TTypeItem or TUse; /** * INTERNAL: Do not use. @@ -778,6 +816,12 @@ module Synth { */ class TLoopingExpr = TForExpr or TLoopExpr or TWhileExpr; + /** + * INTERNAL: Do not use. + */ + class TMeta = + TCfgAttrMeta or TCfgMeta or TKeyValueMeta or TPathMeta or TTokenTreeMeta or TUnsafeMeta; + /** * INTERNAL: Do not use. */ @@ -1054,6 +1098,34 @@ module Synth { */ TCastExpr convertCastExprFromRaw(Raw::Element e) { result = TCastExpr(e) } + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TCfgAtom`, if possible. + */ + TCfgAtom convertCfgAtomFromRaw(Raw::Element e) { result = TCfgAtom(e) } + + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TCfgAttrMeta`, if possible. + */ + TCfgAttrMeta convertCfgAttrMetaFromRaw(Raw::Element e) { result = TCfgAttrMeta(e) } + + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TCfgComposite`, if possible. + */ + TCfgComposite convertCfgCompositeFromRaw(Raw::Element e) { result = TCfgComposite(e) } + + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TCfgMeta`, if possible. + */ + TCfgMeta convertCfgMetaFromRaw(Raw::Element e) { result = TCfgMeta(e) } + /** * INTERNAL: Do not use. * @@ -1208,6 +1280,15 @@ module Synth { */ TFormatArgsArg convertFormatArgsArgFromRaw(Raw::Element e) { result = TFormatArgsArg(e) } + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TFormatArgsArgName`, if possible. + */ + TFormatArgsArgName convertFormatArgsArgNameFromRaw(Raw::Element e) { + result = TFormatArgsArgName(e) + } + /** * INTERNAL: Do not use. * @@ -1303,6 +1384,13 @@ module Synth { */ TItemList convertItemListFromRaw(Raw::Element e) { result = TItemList(e) } + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TKeyValueMeta`, if possible. + */ + TKeyValueMeta convertKeyValueMetaFromRaw(Raw::Element e) { result = TKeyValueMeta(e) } + /** * INTERNAL: Do not use. * @@ -1450,13 +1538,6 @@ module Synth { */ TMatchGuard convertMatchGuardFromRaw(Raw::Element e) { result = TMatchGuard(e) } - /** - * INTERNAL: Do not use. - * - * Converts a raw element to a synthesized `TMeta`, if possible. - */ - TMeta convertMetaFromRaw(Raw::Element e) { result = TMeta(e) } - /** * INTERNAL: Do not use. * @@ -1578,6 +1659,13 @@ module Synth { */ TPathExpr convertPathExprFromRaw(Raw::Element e) { result = TPathExpr(e) } + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TPathMeta`, if possible. + */ + TPathMeta convertPathMetaFromRaw(Raw::Element e) { result = TPathMeta(e) } + /** * INTERNAL: Do not use. * @@ -1799,6 +1887,13 @@ module Synth { */ TTokenTree convertTokenTreeFromRaw(Raw::Element e) { result = TTokenTree(e) } + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TTokenTreeMeta`, if possible. + */ + TTokenTreeMeta convertTokenTreeMetaFromRaw(Raw::Element e) { result = TTokenTreeMeta(e) } + /** * INTERNAL: Do not use. * @@ -1809,9 +1904,9 @@ module Synth { /** * INTERNAL: Do not use. * - * Converts a raw element to a synthesized `TTraitAlias`, if possible. + * Converts a raw element to a synthesized `TTryBlockModifier`, if possible. */ - TTraitAlias convertTraitAliasFromRaw(Raw::Element e) { result = TTraitAlias(e) } + TTryBlockModifier convertTryBlockModifierFromRaw(Raw::Element e) { result = TTryBlockModifier(e) } /** * INTERNAL: Do not use. @@ -1918,6 +2013,13 @@ module Synth { */ TUnion convertUnionFromRaw(Raw::Element e) { result = TUnion(e) } + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TUnsafeMeta`, if possible. + */ + TUnsafeMeta convertUnsafeMetaFromRaw(Raw::Element e) { result = TUnsafeMeta(e) } + /** * INTERNAL: Do not use. * @@ -2100,6 +2202,8 @@ module Synth { or result = convertCallableFromRaw(e) or + result = convertCfgPredicateFromRaw(e) + or result = convertExprFromRaw(e) or result = convertExternItemListFromRaw(e) @@ -2110,6 +2214,8 @@ module Synth { or result = convertFormatArgsArgFromRaw(e) or + result = convertFormatArgsArgNameFromRaw(e) + or result = convertGenericArgFromRaw(e) or result = convertGenericArgListFromRaw(e) @@ -2176,6 +2282,8 @@ module Synth { or result = convertTokenTreeFromRaw(e) or + result = convertTryBlockModifierFromRaw(e) + or result = convertTupleFieldFromRaw(e) or result = convertTypeBoundFromRaw(e) @@ -2211,6 +2319,16 @@ module Synth { result = convertFunctionFromRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a raw DB element to a synthesized `TCfgPredicate`, if possible. + */ + TCfgPredicate convertCfgPredicateFromRaw(Raw::Element e) { + result = convertCfgAtomFromRaw(e) + or + result = convertCfgCompositeFromRaw(e) + } + /** * INTERNAL: Do not use. * Converts a raw DB element to a synthesized `TElement`, if possible. @@ -2374,8 +2492,6 @@ module Synth { or result = convertTraitFromRaw(e) or - result = convertTraitAliasFromRaw(e) - or result = convertTypeItemFromRaw(e) or result = convertUseFromRaw(e) @@ -2417,6 +2533,24 @@ module Synth { result = convertWhileExprFromRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a raw DB element to a synthesized `TMeta`, if possible. + */ + TMeta convertMetaFromRaw(Raw::Element e) { + result = convertCfgAttrMetaFromRaw(e) + or + result = convertCfgMetaFromRaw(e) + or + result = convertKeyValueMetaFromRaw(e) + or + result = convertPathMetaFromRaw(e) + or + result = convertTokenTreeMetaFromRaw(e) + or + result = convertUnsafeMetaFromRaw(e) + } + /** * INTERNAL: Do not use. * Converts a raw DB element to a synthesized `TParamBase`, if possible. @@ -2751,6 +2885,30 @@ module Synth { */ Raw::Element convertCastExprToRaw(TCastExpr e) { e = TCastExpr(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TCfgAtom` to a raw DB element, if possible. + */ + Raw::Element convertCfgAtomToRaw(TCfgAtom e) { e = TCfgAtom(result) } + + /** + * INTERNAL: Do not use. + * Converts a synthesized `TCfgAttrMeta` to a raw DB element, if possible. + */ + Raw::Element convertCfgAttrMetaToRaw(TCfgAttrMeta e) { e = TCfgAttrMeta(result) } + + /** + * INTERNAL: Do not use. + * Converts a synthesized `TCfgComposite` to a raw DB element, if possible. + */ + Raw::Element convertCfgCompositeToRaw(TCfgComposite e) { e = TCfgComposite(result) } + + /** + * INTERNAL: Do not use. + * Converts a synthesized `TCfgMeta` to a raw DB element, if possible. + */ + Raw::Element convertCfgMetaToRaw(TCfgMeta e) { e = TCfgMeta(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TClosureExpr` to a raw DB element, if possible. @@ -2883,6 +3041,14 @@ module Synth { */ Raw::Element convertFormatArgsArgToRaw(TFormatArgsArg e) { e = TFormatArgsArg(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TFormatArgsArgName` to a raw DB element, if possible. + */ + Raw::Element convertFormatArgsArgNameToRaw(TFormatArgsArgName e) { + e = TFormatArgsArgName(result) + } + /** * INTERNAL: Do not use. * Converts a synthesized `TFormatArgsExpr` to a raw DB element, if possible. @@ -2963,6 +3129,12 @@ module Synth { */ Raw::Element convertItemListToRaw(TItemList e) { e = TItemList(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TKeyValueMeta` to a raw DB element, if possible. + */ + Raw::Element convertKeyValueMetaToRaw(TKeyValueMeta e) { e = TKeyValueMeta(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TLabel` to a raw DB element, if possible. @@ -3089,12 +3261,6 @@ module Synth { */ Raw::Element convertMatchGuardToRaw(TMatchGuard e) { e = TMatchGuard(result) } - /** - * INTERNAL: Do not use. - * Converts a synthesized `TMeta` to a raw DB element, if possible. - */ - Raw::Element convertMetaToRaw(TMeta e) { e = TMeta(result) } - /** * INTERNAL: Do not use. * Converts a synthesized `TMethodCallExpr` to a raw DB element, if possible. @@ -3199,6 +3365,12 @@ module Synth { */ Raw::Element convertPathExprToRaw(TPathExpr e) { e = TPathExpr(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TPathMeta` to a raw DB element, if possible. + */ + Raw::Element convertPathMetaToRaw(TPathMeta e) { e = TPathMeta(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TPathPat` to a raw DB element, if possible. @@ -3389,6 +3561,12 @@ module Synth { */ Raw::Element convertTokenTreeToRaw(TTokenTree e) { e = TTokenTree(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TTokenTreeMeta` to a raw DB element, if possible. + */ + Raw::Element convertTokenTreeMetaToRaw(TTokenTreeMeta e) { e = TTokenTreeMeta(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TTrait` to a raw DB element, if possible. @@ -3397,9 +3575,9 @@ module Synth { /** * INTERNAL: Do not use. - * Converts a synthesized `TTraitAlias` to a raw DB element, if possible. + * Converts a synthesized `TTryBlockModifier` to a raw DB element, if possible. */ - Raw::Element convertTraitAliasToRaw(TTraitAlias e) { e = TTraitAlias(result) } + Raw::Element convertTryBlockModifierToRaw(TTryBlockModifier e) { e = TTryBlockModifier(result) } /** * INTERNAL: Do not use. @@ -3491,6 +3669,12 @@ module Synth { */ Raw::Element convertUnionToRaw(TUnion e) { e = TUnion(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TUnsafeMeta` to a raw DB element, if possible. + */ + Raw::Element convertUnsafeMetaToRaw(TUnsafeMeta e) { e = TUnsafeMeta(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TUse` to a raw DB element, if possible. @@ -3660,6 +3844,8 @@ module Synth { or result = convertCallableToRaw(e) or + result = convertCfgPredicateToRaw(e) + or result = convertExprToRaw(e) or result = convertExternItemListToRaw(e) @@ -3670,6 +3856,8 @@ module Synth { or result = convertFormatArgsArgToRaw(e) or + result = convertFormatArgsArgNameToRaw(e) + or result = convertGenericArgToRaw(e) or result = convertGenericArgListToRaw(e) @@ -3736,6 +3924,8 @@ module Synth { or result = convertTokenTreeToRaw(e) or + result = convertTryBlockModifierToRaw(e) + or result = convertTupleFieldToRaw(e) or result = convertTypeBoundToRaw(e) @@ -3771,6 +3961,16 @@ module Synth { result = convertFunctionToRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TCfgPredicate` to a raw DB element, if possible. + */ + Raw::Element convertCfgPredicateToRaw(TCfgPredicate e) { + result = convertCfgAtomToRaw(e) + or + result = convertCfgCompositeToRaw(e) + } + /** * INTERNAL: Do not use. * Converts a synthesized `TElement` to a raw DB element, if possible. @@ -3934,8 +4134,6 @@ module Synth { or result = convertTraitToRaw(e) or - result = convertTraitAliasToRaw(e) - or result = convertTypeItemToRaw(e) or result = convertUseToRaw(e) @@ -3977,6 +4175,24 @@ module Synth { result = convertWhileExprToRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TMeta` to a raw DB element, if possible. + */ + Raw::Element convertMetaToRaw(TMeta e) { + result = convertCfgAttrMetaToRaw(e) + or + result = convertCfgMetaToRaw(e) + or + result = convertKeyValueMetaToRaw(e) + or + result = convertPathMetaToRaw(e) + or + result = convertTokenTreeMetaToRaw(e) + or + result = convertUnsafeMetaToRaw(e) + } + /** * INTERNAL: Do not use. * Converts a synthesized `TParamBase` to a raw DB element, if possible. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/SynthConstructors.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/SynthConstructors.qll index 613af726ba4e..40d7f1c5acd7 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/SynthConstructors.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/SynthConstructors.qll @@ -32,6 +32,10 @@ import codeql.rust.elements.internal.BoxPatConstructor import codeql.rust.elements.internal.BreakExprConstructor import codeql.rust.elements.internal.CallExprConstructor import codeql.rust.elements.internal.CastExprConstructor +import codeql.rust.elements.internal.CfgAtomConstructor +import codeql.rust.elements.internal.CfgAttrMetaConstructor +import codeql.rust.elements.internal.CfgCompositeConstructor +import codeql.rust.elements.internal.CfgMetaConstructor import codeql.rust.elements.internal.ClosureExprConstructor import codeql.rust.elements.internal.CommentConstructor import codeql.rust.elements.internal.ConstConstructor @@ -54,6 +58,7 @@ import codeql.rust.elements.internal.ForExprConstructor import codeql.rust.elements.internal.ForTypeReprConstructor import codeql.rust.elements.internal.FormatConstructor import codeql.rust.elements.internal.FormatArgsArgConstructor +import codeql.rust.elements.internal.FormatArgsArgNameConstructor import codeql.rust.elements.internal.FormatArgsExprConstructor import codeql.rust.elements.internal.FormatArgumentConstructor import codeql.rust.elements.internal.FormatTemplateVariableAccessConstructor @@ -67,6 +72,7 @@ import codeql.rust.elements.internal.ImplTraitTypeReprConstructor import codeql.rust.elements.internal.IndexExprConstructor import codeql.rust.elements.internal.InferTypeReprConstructor import codeql.rust.elements.internal.ItemListConstructor +import codeql.rust.elements.internal.KeyValueMetaConstructor import codeql.rust.elements.internal.LabelConstructor import codeql.rust.elements.internal.LetElseConstructor import codeql.rust.elements.internal.LetExprConstructor @@ -88,7 +94,6 @@ import codeql.rust.elements.internal.MatchArmConstructor import codeql.rust.elements.internal.MatchArmListConstructor import codeql.rust.elements.internal.MatchExprConstructor import codeql.rust.elements.internal.MatchGuardConstructor -import codeql.rust.elements.internal.MetaConstructor import codeql.rust.elements.internal.MethodCallExprConstructor import codeql.rust.elements.internal.MissingConstructor import codeql.rust.elements.internal.ModuleConstructor @@ -106,6 +111,7 @@ import codeql.rust.elements.internal.ParenTypeReprConstructor import codeql.rust.elements.internal.ParenthesizedArgListConstructor import codeql.rust.elements.internal.PathConstructor import codeql.rust.elements.internal.PathExprConstructor +import codeql.rust.elements.internal.PathMetaConstructor import codeql.rust.elements.internal.PathPatConstructor import codeql.rust.elements.internal.PathSegmentConstructor import codeql.rust.elements.internal.PathTypeReprConstructor @@ -137,8 +143,9 @@ import codeql.rust.elements.internal.StructPatConstructor import codeql.rust.elements.internal.StructPatFieldConstructor import codeql.rust.elements.internal.StructPatFieldListConstructor import codeql.rust.elements.internal.TokenTreeConstructor +import codeql.rust.elements.internal.TokenTreeMetaConstructor import codeql.rust.elements.internal.TraitConstructor -import codeql.rust.elements.internal.TraitAliasConstructor +import codeql.rust.elements.internal.TryBlockModifierConstructor import codeql.rust.elements.internal.TryExprConstructor import codeql.rust.elements.internal.TupleExprConstructor import codeql.rust.elements.internal.TupleFieldConstructor @@ -154,6 +161,7 @@ import codeql.rust.elements.internal.TypeParamConstructor import codeql.rust.elements.internal.UnderscoreExprConstructor import codeql.rust.elements.internal.UnimplementedConstructor import codeql.rust.elements.internal.UnionConstructor +import codeql.rust.elements.internal.UnsafeMetaConstructor import codeql.rust.elements.internal.UseConstructor import codeql.rust.elements.internal.UseBoundGenericArgsConstructor import codeql.rust.elements.internal.UseTreeConstructor diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTreeMeta.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTreeMeta.qll new file mode 100644 index 000000000000..b6d7d0a676a3 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTreeMeta.qll @@ -0,0 +1,55 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `TokenTreeMeta`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.internal.MetaImpl::Impl as MetaImpl +import codeql.rust.elements.Path +import codeql.rust.elements.TokenTree + +/** + * INTERNAL: This module contains the fully generated definition of `TokenTreeMeta` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::TokenTreeMeta` class directly. + * Use the subclass `TokenTreeMeta`, where the following predicates are available. + */ + class TokenTreeMeta extends Synth::TTokenTreeMeta, MetaImpl::Meta { + override string getAPrimaryQlClass() { result = "TokenTreeMeta" } + + /** + * Gets the path of this token tree meta, if it exists. + */ + Path getPath() { + result = + Synth::convertPathFromRaw(Synth::convertTokenTreeMetaToRaw(this) + .(Raw::TokenTreeMeta) + .getPath()) + } + + /** + * Holds if `getPath()` exists. + */ + final predicate hasPath() { exists(this.getPath()) } + + /** + * Gets the token tree of this token tree meta, if it exists. + */ + TokenTree getTokenTree() { + result = + Synth::convertTokenTreeFromRaw(Synth::convertTokenTreeMetaToRaw(this) + .(Raw::TokenTreeMeta) + .getTokenTree()) + } + + /** + * Holds if `getTokenTree()` exists. + */ + final predicate hasTokenTree() { exists(this.getTokenTree()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TraitAlias.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TraitAlias.qll deleted file mode 100644 index 0ca44b1f577d..000000000000 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TraitAlias.qll +++ /dev/null @@ -1,128 +0,0 @@ -// generated by codegen, do not edit -/** - * This module provides the generated definition of `TraitAlias`. - * INTERNAL: Do not import directly. - */ - -private import codeql.rust.elements.internal.generated.Synth -private import codeql.rust.elements.internal.generated.Raw -import codeql.rust.elements.Attr -import codeql.rust.elements.GenericParamList -import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl -import codeql.rust.elements.Name -import codeql.rust.elements.TypeBoundList -import codeql.rust.elements.Visibility -import codeql.rust.elements.WhereClause - -/** - * INTERNAL: This module contains the fully generated definition of `TraitAlias` and should not - * be referenced directly. - */ -module Generated { - /** - * A trait alias. - * - * For example: - * ```rust - * trait Foo = Bar + Baz; - * ``` - * INTERNAL: Do not reference the `Generated::TraitAlias` class directly. - * Use the subclass `TraitAlias`, where the following predicates are available. - */ - class TraitAlias extends Synth::TTraitAlias, ItemImpl::Item { - override string getAPrimaryQlClass() { result = "TraitAlias" } - - /** - * Gets the `index`th attr of this trait alias (0-based). - */ - Attr getAttr(int index) { - result = - Synth::convertAttrFromRaw(Synth::convertTraitAliasToRaw(this) - .(Raw::TraitAlias) - .getAttr(index)) - } - - /** - * Gets any of the attrs of this trait alias. - */ - final Attr getAnAttr() { result = this.getAttr(_) } - - /** - * Gets the number of attrs of this trait alias. - */ - final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) } - - /** - * Gets the generic parameter list of this trait alias, if it exists. - */ - GenericParamList getGenericParamList() { - result = - Synth::convertGenericParamListFromRaw(Synth::convertTraitAliasToRaw(this) - .(Raw::TraitAlias) - .getGenericParamList()) - } - - /** - * Holds if `getGenericParamList()` exists. - */ - final predicate hasGenericParamList() { exists(this.getGenericParamList()) } - - /** - * Gets the name of this trait alias, if it exists. - */ - Name getName() { - result = - Synth::convertNameFromRaw(Synth::convertTraitAliasToRaw(this).(Raw::TraitAlias).getName()) - } - - /** - * Holds if `getName()` exists. - */ - final predicate hasName() { exists(this.getName()) } - - /** - * Gets the type bound list of this trait alias, if it exists. - */ - TypeBoundList getTypeBoundList() { - result = - Synth::convertTypeBoundListFromRaw(Synth::convertTraitAliasToRaw(this) - .(Raw::TraitAlias) - .getTypeBoundList()) - } - - /** - * Holds if `getTypeBoundList()` exists. - */ - final predicate hasTypeBoundList() { exists(this.getTypeBoundList()) } - - /** - * Gets the visibility of this trait alias, if it exists. - */ - Visibility getVisibility() { - result = - Synth::convertVisibilityFromRaw(Synth::convertTraitAliasToRaw(this) - .(Raw::TraitAlias) - .getVisibility()) - } - - /** - * Holds if `getVisibility()` exists. - */ - final predicate hasVisibility() { exists(this.getVisibility()) } - - /** - * Gets the where clause of this trait alias, if it exists. - */ - WhereClause getWhereClause() { - result = - Synth::convertWhereClauseFromRaw(Synth::convertTraitAliasToRaw(this) - .(Raw::TraitAlias) - .getWhereClause()) - } - - /** - * Holds if `getWhereClause()` exists. - */ - final predicate hasWhereClause() { exists(this.getWhereClause()) } - } -} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TryBlockModifier.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TryBlockModifier.qll new file mode 100644 index 000000000000..e058784736b8 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TryBlockModifier.qll @@ -0,0 +1,44 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `TryBlockModifier`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl +import codeql.rust.elements.TypeRepr + +/** + * INTERNAL: This module contains the fully generated definition of `TryBlockModifier` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::TryBlockModifier` class directly. + * Use the subclass `TryBlockModifier`, where the following predicates are available. + */ + class TryBlockModifier extends Synth::TTryBlockModifier, AstNodeImpl::AstNode { + override string getAPrimaryQlClass() { result = "TryBlockModifier" } + + /** + * Holds if this try block modifier is try. + */ + predicate isTry() { Synth::convertTryBlockModifierToRaw(this).(Raw::TryBlockModifier).isTry() } + + /** + * Gets the type representation of this try block modifier, if it exists. + */ + TypeRepr getTypeRepr() { + result = + Synth::convertTypeReprFromRaw(Synth::convertTryBlockModifierToRaw(this) + .(Raw::TryBlockModifier) + .getTypeRepr()) + } + + /** + * Holds if `getTypeRepr()` exists. + */ + final predicate hasTypeRepr() { exists(this.getTypeRepr()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/UnsafeMeta.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/UnsafeMeta.qll new file mode 100644 index 000000000000..e701e6bb1fb8 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/UnsafeMeta.qll @@ -0,0 +1,42 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `UnsafeMeta`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.Meta +import codeql.rust.elements.internal.MetaImpl::Impl as MetaImpl + +/** + * INTERNAL: This module contains the fully generated definition of `UnsafeMeta` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::UnsafeMeta` class directly. + * Use the subclass `UnsafeMeta`, where the following predicates are available. + */ + class UnsafeMeta extends Synth::TUnsafeMeta, MetaImpl::Meta { + override string getAPrimaryQlClass() { result = "UnsafeMeta" } + + /** + * Holds if this unsafe meta is unsafe. + */ + predicate isUnsafe() { Synth::convertUnsafeMetaToRaw(this).(Raw::UnsafeMeta).isUnsafe() } + + /** + * Gets the meta of this unsafe meta, if it exists. + */ + Meta getMeta() { + result = + Synth::convertMetaFromRaw(Synth::convertUnsafeMetaToRaw(this).(Raw::UnsafeMeta).getMeta()) + } + + /** + * Holds if `getMeta()` exists. + */ + final predicate hasMeta() { exists(this.getMeta()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll index 7da69072953c..c37995f77a0f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll @@ -8,7 +8,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.internal.AddressableImpl::Impl as AddressableImpl import codeql.rust.elements.Attr -import codeql.rust.elements.Expr +import codeql.rust.elements.ConstArg import codeql.rust.elements.FieldList import codeql.rust.elements.Name import codeql.rust.elements.Visibility @@ -51,17 +51,17 @@ module Generated { final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) } /** - * Gets the discriminant of this variant, if it exists. + * Gets the const argument of this variant, if it exists. */ - Expr getDiscriminant() { + ConstArg getConstArg() { result = - Synth::convertExprFromRaw(Synth::convertVariantToRaw(this).(Raw::Variant).getDiscriminant()) + Synth::convertConstArgFromRaw(Synth::convertVariantToRaw(this).(Raw::Variant).getConstArg()) } /** - * Holds if `getDiscriminant()` exists. + * Holds if `getConstArg()` exists. */ - final predicate hasDiscriminant() { exists(this.getDiscriminant()) } + final predicate hasConstArg() { exists(this.getConstArg()) } /** * Gets the field list of this variant, if it exists. diff --git a/rust/ql/lib/rust.dbscheme b/rust/ql/lib/rust.dbscheme index 66a489863649..109496fd2f20 100644 --- a/rust/ql/lib/rust.dbscheme +++ b/rust/ql/lib/rust.dbscheme @@ -189,11 +189,13 @@ named_crates( | @assoc_item_list | @attr | @callable +| @cfg_predicate | @expr | @extern_item_list | @field_list | @for_binder | @format_args_arg +| @format_args_arg_name | @generic_arg | @generic_arg_list | @generic_param @@ -227,6 +229,7 @@ named_crates( | @struct_pat_field_list | @token | @token_tree +| @try_block_modifier | @tuple_field | @type_bound | @type_bound_list @@ -403,6 +406,11 @@ callable_attrs( int attr: @attr ref ); +@cfg_predicate = + @cfg_atom +| @cfg_composite +; + @expr = @array_expr_internal | @asm_expr @@ -476,16 +484,20 @@ format_args_args( unique int id: @format_args_arg ); +#keyset[id] +format_args_arg_arg_names( + int id: @format_args_arg ref, + int arg_name: @format_args_arg_name ref +); + #keyset[id] format_args_arg_exprs( int id: @format_args_arg ref, int expr: @expr ref ); -#keyset[id] format_args_arg_names( - int id: @format_args_arg ref, - int name: @name ref + unique int id: @format_args_arg_name ); @generic_arg = @@ -629,32 +641,14 @@ match_guard_conditions( int condition: @expr ref ); -meta( - unique int id: @meta -); - -#keyset[id] -meta_exprs( - int id: @meta ref, - int expr: @expr ref -); - -#keyset[id] -meta_is_unsafe( - int id: @meta ref -); - -#keyset[id] -meta_paths( - int id: @meta ref, - int path: @path ref -); - -#keyset[id] -meta_token_trees( - int id: @meta ref, - int token_tree: @token_tree ref -); +@meta = + @cfg_attr_meta +| @cfg_meta +| @key_value_meta +| @path_meta +| @token_tree_meta +| @unsafe_meta +; names( unique int id: @name @@ -938,9 +932,9 @@ struct_field_attrs( ); #keyset[id] -struct_field_defaults( +struct_field_default_vals( int id: @struct_field ref, - int default: @expr ref + int default_val: @const_arg ref ); #keyset[id] @@ -1014,6 +1008,21 @@ token_trees( unique int id: @token_tree ); +try_block_modifiers( + unique int id: @try_block_modifier +); + +#keyset[id] +try_block_modifier_is_try( + int id: @try_block_modifier ref +); + +#keyset[id] +try_block_modifier_type_reprs( + int id: @try_block_modifier ref, + int type_repr: @type_repr ref +); + tuple_fields( unique int id: @tuple_field ); @@ -1538,6 +1547,48 @@ cast_expr_type_reprs( int type_repr: @type_repr ref ); +cfg_atoms( + unique int id: @cfg_atom +); + +cfg_attr_meta( + unique int id: @cfg_attr_meta +); + +#keyset[id] +cfg_attr_meta_cfg_predicates( + int id: @cfg_attr_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +#keyset[id, index] +cfg_attr_meta_metas( + int id: @cfg_attr_meta ref, + int index: int ref, + int meta: @meta ref +); + +cfg_composites( + unique int id: @cfg_composite +); + +#keyset[id, index] +cfg_composite_cfg_predicates( + int id: @cfg_composite ref, + int index: int ref, + int cfg_predicate: @cfg_predicate ref +); + +cfg_meta( + unique int id: @cfg_meta +); + +#keyset[id] +cfg_meta_cfg_predicates( + int id: @cfg_meta ref, + int cfg_predicate: @cfg_predicate ref +); + closure_exprs( unique int id: @closure_expr ); @@ -1897,7 +1948,6 @@ infer_type_reprs( | @macro_rules | @module | @trait -| @trait_alias | @type_item | @use ; @@ -1908,6 +1958,22 @@ item_attribute_macro_expansions( int attribute_macro_expansion: @macro_items ref ); +key_value_meta( + unique int id: @key_value_meta +); + +#keyset[id] +key_value_meta_exprs( + int id: @key_value_meta ref, + int expr: @expr ref +); + +#keyset[id] +key_value_meta_paths( + int id: @key_value_meta ref, + int path: @path ref +); + @labelable_expr = @block_expr | @looping_expr @@ -2235,6 +2301,16 @@ paren_type_repr_type_reprs( @path_expr ; +path_meta( + unique int id: @path_meta +); + +#keyset[id] +path_meta_paths( + int id: @path_meta ref, + int path: @path ref +); + path_pats( unique int id: @path_pat ); @@ -2517,6 +2593,22 @@ struct_pat_struct_pat_field_lists( int struct_pat_field_list: @struct_pat_field_list ref ); +token_tree_meta( + unique int id: @token_tree_meta +); + +#keyset[id] +token_tree_meta_paths( + int id: @token_tree_meta ref, + int path: @path ref +); + +#keyset[id] +token_tree_meta_token_trees( + int id: @token_tree_meta ref, + int token_tree: @token_tree ref +); + try_exprs( unique int id: @try_expr ); @@ -2646,6 +2738,21 @@ underscore_expr_attrs( int attr: @attr ref ); +unsafe_meta( + unique int id: @unsafe_meta +); + +#keyset[id] +unsafe_meta_is_unsafe( + int id: @unsafe_meta ref +); + +#keyset[id] +unsafe_meta_meta( + int id: @unsafe_meta ref, + int meta: @meta ref +); + variants( unique int id: @variant ); @@ -2658,9 +2765,9 @@ variant_attrs( ); #keyset[id] -variant_discriminants( +variant_const_args( int id: @variant ref, - int discriminant: @expr ref + int const_arg: @const_arg ref ); #keyset[id] @@ -2782,11 +2889,6 @@ block_expr_is_move( int id: @block_expr ref ); -#keyset[id] -block_expr_is_try( - int id: @block_expr ref -); - #keyset[id] block_expr_is_unsafe( int id: @block_expr ref @@ -2798,6 +2900,12 @@ block_expr_stmt_lists( int stmt_list: @stmt_list ref ); +#keyset[id] +block_expr_try_block_modifiers( + int id: @block_expr ref, + int try_block_modifier: @try_block_modifier ref +); + extern_blocks( unique int id: @extern_block ); @@ -3097,47 +3205,6 @@ trait_where_clauses( int where_clause: @where_clause ref ); -trait_aliases( - unique int id: @trait_alias -); - -#keyset[id, index] -trait_alias_attrs( - int id: @trait_alias ref, - int index: int ref, - int attr: @attr ref -); - -#keyset[id] -trait_alias_generic_param_lists( - int id: @trait_alias ref, - int generic_param_list: @generic_param_list ref -); - -#keyset[id] -trait_alias_names( - int id: @trait_alias ref, - int name: @name ref -); - -#keyset[id] -trait_alias_type_bound_lists( - int id: @trait_alias ref, - int type_bound_list: @type_bound_list ref -); - -#keyset[id] -trait_alias_visibilities( - int id: @trait_alias ref, - int visibility: @visibility ref -); - -#keyset[id] -trait_alias_where_clauses( - int id: @trait_alias ref, - int where_clause: @where_clause ref -); - @type_item = @enum | @struct diff --git a/rust/ql/test/extractor-tests/generated/.generated_tests.list b/rust/ql/test/extractor-tests/generated/.generated_tests.list index 73e2a1b767d3..ae1ef1424dcb 100644 --- a/rust/ql/test/extractor-tests/generated/.generated_tests.list +++ b/rust/ql/test/extractor-tests/generated/.generated_tests.list @@ -78,7 +78,6 @@ MatchArm/gen_match_arm.rs 4f4e717930729b2161b9cf9cd5e2b86b8e919204f5f7d4993d2c4e MatchArmList/gen_match_arm_list.rs 6dcb92591c86771d2aeb762e4274d3e61a7d6c1a42da3dbace1cbc545b474080 6dcb92591c86771d2aeb762e4274d3e61a7d6c1a42da3dbace1cbc545b474080 MatchExpr/gen_match_expr.rs 081c5d4c78cb71ccd13fb37a93d7f525267c51b179f44b5a22ca3297897002a0 081c5d4c78cb71ccd13fb37a93d7f525267c51b179f44b5a22ca3297897002a0 MatchGuard/gen_match_guard.rs f0e84a1f608c0361983c516a40216cea149620a36e0aed7ff39b0b7d77a9ab8a f0e84a1f608c0361983c516a40216cea149620a36e0aed7ff39b0b7d77a9ab8a -Meta/gen_meta.rs 39172a1f7dd02fa3149e7a1fc1dc1f135aa87c84057ee721cd9b373517042b25 39172a1f7dd02fa3149e7a1fc1dc1f135aa87c84057ee721cd9b373517042b25 MethodCallExpr/gen_method_call_expr.rs f696e63c5302f46dcac7bc2914fe899d029996d5064ffe8252cfa173a06f9dd3 f696e63c5302f46dcac7bc2914fe899d029996d5064ffe8252cfa173a06f9dd3 Module/gen_module.rs 815605a604fea1d9276684f8d6738a4e833eacad57ceeb27e2095fc450264fc1 815605a604fea1d9276684f8d6738a4e833eacad57ceeb27e2095fc450264fc1 Name/gen_name.rs 8a7fe65ee632a47d12eaa313e7248ac9210e5a381e9522499ca68f94c39e72c0 8a7fe65ee632a47d12eaa313e7248ac9210e5a381e9522499ca68f94c39e72c0 @@ -125,7 +124,6 @@ StructPatField/gen_struct_pat_field.rs dfdab8cef7dcfee40451744c8d2c7c4ae67fdb8bd StructPatFieldList/gen_struct_pat_field_list.rs 06c0e56c78a6b28909d94d9519ba41ac8a6005741f82b947ef14db51e8cbebd0 06c0e56c78a6b28909d94d9519ba41ac8a6005741f82b947ef14db51e8cbebd0 TokenTree/gen_token_tree.rs 3fdc9a36a1870bb2bedf66c8fe37d368f4ac18488e7118b86e3979d3957a8f94 3fdc9a36a1870bb2bedf66c8fe37d368f4ac18488e7118b86e3979d3957a8f94 Trait/gen_trait.rs bac694993e224f9c6dd86cfb28c54846ae1b3bae45a1e58d3149c884184487ea bac694993e224f9c6dd86cfb28c54846ae1b3bae45a1e58d3149c884184487ea -TraitAlias/gen_trait_alias.rs 425d78a7cb87db7737ceaf713c9a62e0411537374d1bc58c5b1fb80cc25732c9 425d78a7cb87db7737ceaf713c9a62e0411537374d1bc58c5b1fb80cc25732c9 TryExpr/gen_try_expr.rs f60198181a423661f4ed1bf6f98d475f40ada190b7b5fc6af97aa5e45ca29a1e f60198181a423661f4ed1bf6f98d475f40ada190b7b5fc6af97aa5e45ca29a1e TupleExpr/gen_tuple_expr.rs 27e56846b3f08c37c8a345169c2a532b2023d231d46a5bdf586bbc6d8fb36a01 27e56846b3f08c37c8a345169c2a532b2023d231d46a5bdf586bbc6d8fb36a01 TupleField/gen_tuple_field.rs 20507753ddb979a33d0e568ae5ebe466f039e7ab7b8f2e6ce15b28b3e4450615 20507753ddb979a33d0e568ae5ebe466f039e7ab7b8f2e6ce15b28b3e4450615 diff --git a/rust/ql/test/extractor-tests/generated/.gitattributes b/rust/ql/test/extractor-tests/generated/.gitattributes index 660ad73721ab..7ac64a528a53 100644 --- a/rust/ql/test/extractor-tests/generated/.gitattributes +++ b/rust/ql/test/extractor-tests/generated/.gitattributes @@ -80,7 +80,6 @@ /MatchArmList/gen_match_arm_list.rs linguist-generated /MatchExpr/gen_match_expr.rs linguist-generated /MatchGuard/gen_match_guard.rs linguist-generated -/Meta/gen_meta.rs linguist-generated /MethodCallExpr/gen_method_call_expr.rs linguist-generated /Module/gen_module.rs linguist-generated /Name/gen_name.rs linguist-generated @@ -127,7 +126,6 @@ /StructPatFieldList/gen_struct_pat_field_list.rs linguist-generated /TokenTree/gen_token_tree.rs linguist-generated /Trait/gen_trait.rs linguist-generated -/TraitAlias/gen_trait_alias.rs linguist-generated /TryExpr/gen_try_expr.rs linguist-generated /TupleExpr/gen_tuple_expr.rs linguist-generated /TupleField/gen_tuple_field.rs linguist-generated diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql index 4b69689bb913..b93c97029d36 100644 --- a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql +++ b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql @@ -4,8 +4,8 @@ import TestUtils query predicate instances( BlockExpr x, string isAsync__label, string isAsync, string isConst__label, string isConst, - string isGen__label, string isGen, string isMove__label, string isMove, string isTry__label, - string isTry, string isUnsafe__label, string isUnsafe + string isGen__label, string isGen, string isMove__label, string isMove, string isUnsafe__label, + string isUnsafe ) { toBeTested(x) and not x.isUnknown() and @@ -17,8 +17,6 @@ query predicate instances( (if x.isGen() then isGen = "yes" else isGen = "no") and isMove__label = "isMove:" and (if x.isMove() then isMove = "yes" else isMove = "no") and - isTry__label = "isTry:" and - (if x.isTry() then isTry = "yes" else isTry = "no") and isUnsafe__label = "isUnsafe:" and if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no" } @@ -34,3 +32,7 @@ query predicate getAttr(BlockExpr x, int index, Attr getAttr) { query predicate getStmtList(BlockExpr x, StmtList getStmtList) { toBeTested(x) and not x.isUnknown() and getStmtList = x.getStmtList() } + +query predicate getTryBlockModifier(BlockExpr x, TryBlockModifier getTryBlockModifier) { + toBeTested(x) and not x.isUnknown() and getTryBlockModifier = x.getTryBlockModifier() +} diff --git a/rust/ql/test/extractor-tests/generated/CfgAtom/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/CfgAtom/MISSING_SOURCE.txt new file mode 100644 index 000000000000..7f96b17b1f3c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/CfgAtom/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen, do not edit + +After a source file is added in this directory and codegen is run again, test queries +will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/CfgAttrMeta/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/CfgAttrMeta/MISSING_SOURCE.txt new file mode 100644 index 000000000000..7f96b17b1f3c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/CfgAttrMeta/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen, do not edit + +After a source file is added in this directory and codegen is run again, test queries +will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/CfgComposite/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/CfgComposite/MISSING_SOURCE.txt new file mode 100644 index 000000000000..7f96b17b1f3c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/CfgComposite/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen, do not edit + +After a source file is added in this directory and codegen is run again, test queries +will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/CfgMeta/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/CfgMeta/MISSING_SOURCE.txt new file mode 100644 index 000000000000..7f96b17b1f3c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/CfgMeta/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen, do not edit + +After a source file is added in this directory and codegen is run again, test queries +will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsArgName/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/FormatArgsArgName/MISSING_SOURCE.txt new file mode 100644 index 000000000000..7f96b17b1f3c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/FormatArgsArgName/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen, do not edit + +After a source file is added in this directory and codegen is run again, test queries +will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql index d3931f985113..d445d40234d6 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql @@ -4,10 +4,10 @@ import TestUtils query predicate instances(FormatArgsArg x) { toBeTested(x) and not x.isUnknown() } -query predicate getExpr(FormatArgsArg x, Expr getExpr) { - toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +query predicate getArgName(FormatArgsArg x, FormatArgsArgName getArgName) { + toBeTested(x) and not x.isUnknown() and getArgName = x.getArgName() } -query predicate getName(FormatArgsArg x, Name getName) { - toBeTested(x) and not x.isUnknown() and getName = x.getName() +query predicate getExpr(FormatArgsArg x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() } diff --git a/rust/ql/test/extractor-tests/generated/KeyValueMeta/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/KeyValueMeta/MISSING_SOURCE.txt new file mode 100644 index 000000000000..7f96b17b1f3c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/KeyValueMeta/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen, do not edit + +After a source file is added in this directory and codegen is run again, test queries +will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/Meta/Meta.ql b/rust/ql/test/extractor-tests/generated/Meta/Meta.ql deleted file mode 100644 index dd054ea7e993..000000000000 --- a/rust/ql/test/extractor-tests/generated/Meta/Meta.ql +++ /dev/null @@ -1,22 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -query predicate instances(Meta x, string isUnsafe__label, string isUnsafe) { - toBeTested(x) and - not x.isUnknown() and - isUnsafe__label = "isUnsafe:" and - if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no" -} - -query predicate getExpr(Meta x, Expr getExpr) { - toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() -} - -query predicate getPath(Meta x, Path getPath) { - toBeTested(x) and not x.isUnknown() and getPath = x.getPath() -} - -query predicate getTokenTree(Meta x, TokenTree getTokenTree) { - toBeTested(x) and not x.isUnknown() and getTokenTree = x.getTokenTree() -} diff --git a/rust/ql/test/extractor-tests/generated/Meta/gen_meta.rs b/rust/ql/test/extractor-tests/generated/Meta/gen_meta.rs deleted file mode 100644 index 104540323f95..000000000000 --- a/rust/ql/test/extractor-tests/generated/Meta/gen_meta.rs +++ /dev/null @@ -1,14 +0,0 @@ -// generated by codegen, do not edit - -fn test_meta() -> () { - // A meta item in an attribute. - // - // For example: - #[unsafe(lint::name = "reason_for_bypass")] - //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - #[deprecated(since = "1.2.0", note = "Use bar instead", unsafe=true)] - //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - fn foo() { - // ... - } -} diff --git a/rust/ql/test/extractor-tests/generated/PathMeta/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/PathMeta/MISSING_SOURCE.txt new file mode 100644 index 000000000000..7f96b17b1f3c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/PathMeta/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen, do not edit + +After a source file is added in this directory and codegen is run again, test queries +will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField.ql b/rust/ql/test/extractor-tests/generated/StructField/StructField.ql index 773f282e36b3..6db753a5808b 100644 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField.ql +++ b/rust/ql/test/extractor-tests/generated/StructField/StructField.ql @@ -13,8 +13,8 @@ query predicate getAttr(StructField x, int index, Attr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } -query predicate getDefault(StructField x, Expr getDefault) { - toBeTested(x) and not x.isUnknown() and getDefault = x.getDefault() +query predicate getDefaultVal(StructField x, ConstArg getDefaultVal) { + toBeTested(x) and not x.isUnknown() and getDefaultVal = x.getDefaultVal() } query predicate getName(StructField x, Name getName) { diff --git a/rust/ql/test/extractor-tests/generated/TokenTreeMeta/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/TokenTreeMeta/MISSING_SOURCE.txt new file mode 100644 index 000000000000..7f96b17b1f3c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TokenTreeMeta/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen, do not edit + +After a source file is added in this directory and codegen is run again, test queries +will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.ql b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.ql deleted file mode 100644 index c0fee75678af..000000000000 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.ql +++ /dev/null @@ -1,35 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -query predicate instances(TraitAlias x) { toBeTested(x) and not x.isUnknown() } - -query predicate getAttributeMacroExpansion(TraitAlias x, MacroItems getAttributeMacroExpansion) { - toBeTested(x) and - not x.isUnknown() and - getAttributeMacroExpansion = x.getAttributeMacroExpansion() -} - -query predicate getAttr(TraitAlias x, int index, Attr getAttr) { - toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) -} - -query predicate getGenericParamList(TraitAlias x, GenericParamList getGenericParamList) { - toBeTested(x) and not x.isUnknown() and getGenericParamList = x.getGenericParamList() -} - -query predicate getName(TraitAlias x, Name getName) { - toBeTested(x) and not x.isUnknown() and getName = x.getName() -} - -query predicate getTypeBoundList(TraitAlias x, TypeBoundList getTypeBoundList) { - toBeTested(x) and not x.isUnknown() and getTypeBoundList = x.getTypeBoundList() -} - -query predicate getVisibility(TraitAlias x, Visibility getVisibility) { - toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() -} - -query predicate getWhereClause(TraitAlias x, WhereClause getWhereClause) { - toBeTested(x) and not x.isUnknown() and getWhereClause = x.getWhereClause() -} diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/gen_trait_alias.rs b/rust/ql/test/extractor-tests/generated/TraitAlias/gen_trait_alias.rs deleted file mode 100644 index 6fa75a8a08d4..000000000000 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/gen_trait_alias.rs +++ /dev/null @@ -1,8 +0,0 @@ -// generated by codegen, do not edit - -fn test_trait_alias() -> () { - // A trait alias. - // - // For example: - trait Foo = Bar + Baz; -} diff --git a/rust/ql/test/extractor-tests/generated/TryBlockModifier/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/TryBlockModifier/MISSING_SOURCE.txt new file mode 100644 index 000000000000..7f96b17b1f3c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TryBlockModifier/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen, do not edit + +After a source file is added in this directory and codegen is run again, test queries +will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/UnsafeMeta/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/UnsafeMeta/MISSING_SOURCE.txt new file mode 100644 index 000000000000..7f96b17b1f3c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/UnsafeMeta/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen, do not edit + +After a source file is added in this directory and codegen is run again, test queries +will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant.ql b/rust/ql/test/extractor-tests/generated/Variant/Variant.ql index 61c142671163..b5e63ff3ceff 100644 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant.ql +++ b/rust/ql/test/extractor-tests/generated/Variant/Variant.ql @@ -8,8 +8,8 @@ query predicate getAttr(Variant x, int index, Attr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } -query predicate getDiscriminant(Variant x, Expr getDiscriminant) { - toBeTested(x) and not x.isUnknown() and getDiscriminant = x.getDiscriminant() +query predicate getConstArg(Variant x, ConstArg getConstArg) { + toBeTested(x) and not x.isUnknown() and getConstArg = x.getConstArg() } query predicate getFieldList(Variant x, FieldList getFieldList) { diff --git a/rust/schema/annotations.py b/rust/schema/annotations.py index 6fb45ae05b9a..9443b38b93d3 100644 --- a/rust/schema/annotations.py +++ b/rust/schema/annotations.py @@ -1936,18 +1936,6 @@ class _: """ -@annotate(TraitAlias) -class _: - """ - A trait alias. - - For example: - ```rust - trait Foo = Bar + Baz; - ``` - """ - - @annotate(TryExpr, cfg=True) class _: """ diff --git a/rust/schema/ast.py b/rust/schema/ast.py index 5d8a7393ea6f..bfa9cdad55b1 100644 --- a/rust/schema/ast.py +++ b/rust/schema/ast.py @@ -14,6 +14,9 @@ class AsmPiece(AstNode, ): class AssocItem(AstNode, ): pass +class CfgPredicate(AstNode, ): + pass + class Expr(AstNode, ): pass @@ -29,6 +32,9 @@ class GenericArg(AstNode, ): class GenericParam(AstNode, ): pass +class Meta(AstNode, ): + pass + class Pat(AstNode, ): pass @@ -139,10 +145,10 @@ class BlockExpr(Expr, ): is_const: predicate is_gen: predicate is_move: predicate - is_try: predicate is_unsafe: predicate label: optional["Label"] | child stmt_list: optional["StmtList"] | child + try_block_modifier: optional["TryBlockModifier"] | child class BoxPat(Pat, ): pat: optional["Pat"] | child @@ -162,6 +168,19 @@ class CastExpr(Expr, ): expr: optional["Expr"] | child type_repr: optional["TypeRepr"] | child +class CfgAtom(CfgPredicate, ): + pass + +class CfgAttrMeta(Meta, ): + cfg_predicate: optional["CfgPredicate"] | child + metas: list["Meta"] | child + +class CfgComposite(CfgPredicate, ): + cfg_predicates: list["CfgPredicate"] | child + +class CfgMeta(Meta, ): + cfg_predicate: optional["CfgPredicate"] | child + class ClosureExpr(Expr, ): attrs: list["Attr"] | child closure_body: optional["Expr"] | child @@ -277,8 +296,11 @@ class ForTypeRepr(TypeRepr, ): type_repr: optional["TypeRepr"] | child class FormatArgsArg(AstNode, ): + arg_name: optional["FormatArgsArgName"] | child expr: optional["Expr"] | child - name: optional["Name"] | child + +class FormatArgsArgName(AstNode, ): + pass class FormatArgsExpr(Expr, ): args: list["FormatArgsArg"] | child @@ -331,6 +353,10 @@ class ItemList(AstNode, ): attrs: list["Attr"] | child items: list["Item"] | child +class KeyValueMeta(Meta, ): + expr: optional["Expr"] | child + path: optional["Path"] | child + class Label(AstNode, ): lifetime: optional["Lifetime"] | child @@ -420,12 +446,6 @@ class MatchExpr(Expr, ): class MatchGuard(AstNode, ): condition: optional["Expr"] | child -class Meta(AstNode, ): - expr: optional["Expr"] | child - is_unsafe: predicate - path: optional["Path"] | child - token_tree: optional["TokenTree"] | child - class MethodCallExpr(Expr, ): arg_list: optional["ArgList"] | child attrs: list["Attr"] | child @@ -486,6 +506,9 @@ class PathExpr(Expr, ): attrs: list["Attr"] | child path: optional["Path"] | child +class PathMeta(Meta, ): + path: optional["Path"] | child + class PathPat(Pat, ): path: optional["Path"] | child @@ -536,7 +559,7 @@ class StructExprFieldList(AstNode, ): class StructField(AstNode, ): attrs: list["Attr"] | child - default: optional["Expr"] | child + default_val: optional["ConstArg"] | child is_unsafe: predicate name: optional["Name"] | child type_repr: optional["TypeRepr"] | child @@ -634,6 +657,10 @@ class Struct(TypeItem, Item, ): class TokenTree(AstNode, ): pass +class TokenTreeMeta(Meta, ): + path: optional["Path"] | child + token_tree: optional["TokenTree"] | child + class Trait(Item, ): assoc_item_list: optional["AssocItemList"] | child attrs: list["Attr"] | child @@ -645,13 +672,9 @@ class Trait(Item, ): visibility: optional["Visibility"] | child where_clause: optional["WhereClause"] | child -class TraitAlias(Item, ): - attrs: list["Attr"] | child - generic_param_list: optional["GenericParamList"] | child - name: optional["Name"] | child - type_bound_list: optional["TypeBoundList"] | child - visibility: optional["Visibility"] | child - where_clause: optional["WhereClause"] | child +class TryBlockModifier(AstNode, ): + is_try: predicate + type_repr: optional["TypeRepr"] | child class TryExpr(Expr, ): attrs: list["Attr"] | child @@ -720,6 +743,10 @@ class Union(TypeItem, Item, ): visibility: optional["Visibility"] | child where_clause: optional["WhereClause"] | child +class UnsafeMeta(Meta, ): + is_unsafe: predicate + meta: optional["Meta"] | child + class Use(Item, ): attrs: list["Attr"] | child use_tree: optional["UseTree"] | child @@ -739,7 +766,7 @@ class UseTreeList(AstNode, ): class Variant(AstNode, ): attrs: list["Attr"] | child - discriminant: optional["Expr"] | child + const_arg: optional["ConstArg"] | child field_list: optional["FieldList"] | child name: optional["Name"] | child visibility: optional["Visibility"] | child From ce360c4f17d5345c5a210f6f55b60e98bd38d3f2 Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 15 Apr 2026 13:26:54 +0000 Subject: [PATCH 004/167] Rust: adapt extractor to rust-analyzer 0.0.328 API changes --- rust/extractor/src/config.rs | 8 +++++--- rust/extractor/src/crate_graph.rs | 4 ++-- rust/extractor/src/rust_analyzer.rs | 9 ++++----- rust/extractor/src/translate/base.rs | 30 +++++++++++++++++++++++----- 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/rust/extractor/src/config.rs b/rust/extractor/src/config.rs index 86d3ab6272c8..f887f85906d5 100644 --- a/rust/extractor/src/config.rs +++ b/rust/extractor/src/config.rs @@ -14,7 +14,7 @@ use ra_ap_ide_db::FxHashMap; use ra_ap_intern::Symbol; use ra_ap_load_cargo::{LoadCargoConfig, ProcMacroServerChoice}; use ra_ap_paths::{AbsPath, AbsPathBuf, Utf8PathBuf}; -use ra_ap_project_model::{CargoConfig, CargoFeatures, CfgOverrides, RustLibSource, Sysroot}; +use ra_ap_project_model::{CargoConfig, CargoFeatures, CfgOverrides, RustLibSource, Sysroot, TargetDirectoryConfig}; use rust_extractor_macros::extractor_cli_config; use serde::{Deserialize, Serialize}; use std::collections::HashSet; @@ -171,12 +171,12 @@ impl Config { .iter() .map(|p| join_path_buf(dir, p)) .collect(), - target_dir: Utf8PathBuf::from_path_buf( + target_dir_config: Utf8PathBuf::from_path_buf( self.cargo_target_dir .clone() .unwrap_or_else(|| self.scratch_dir.join("target")), ) - .ok(), + .map_or(TargetDirectoryConfig::None, TargetDirectoryConfig::Directory), features: self.cargo_features(), target: self.cargo_target.clone(), cfg_overrides: to_cfg_overrides(&self.cargo_cfg_overrides), @@ -192,6 +192,8 @@ impl Config { load_out_dirs_from_check: true, with_proc_macro_server: self.proc_macro_server_choice(dir), prefill_caches: false, + num_worker_threads: 0, + proc_macro_processes: 0, }, ) } diff --git a/rust/extractor/src/crate_graph.rs b/rust/extractor/src/crate_graph.rs index 87f8e4e17b41..7a1505347d68 100644 --- a/rust/extractor/src/crate_graph.rs +++ b/rust/extractor/src/crate_graph.rs @@ -1,7 +1,7 @@ use crate::{generated, trap}; use itertools::Itertools; -use ra_ap_base_db::{Crate, RootQueryDb}; +use ra_ap_base_db::Crate; use ra_ap_cfg::CfgAtom; use ra_ap_ide_db::RootDatabase; use ra_ap_vfs::{Vfs, VfsPath}; @@ -12,7 +12,7 @@ use std::{cmp::Ordering, collections::HashMap, path::PathBuf}; use tracing::error; pub fn extract_crate_graph(trap_provider: &trap::TrapFileProvider, db: &RootDatabase, vfs: &Vfs) { - let crate_graph = db.all_crates(); + let crate_graph = ra_ap_base_db::all_crates(db); // According to the documentation of `CrateGraph`: // Each crate is defined by the `FileId` of its root module, the set of enabled diff --git a/rust/extractor/src/rust_analyzer.rs b/rust/extractor/src/rust_analyzer.rs index 9d3769a24040..9811bd39ce5b 100644 --- a/rust/extractor/src/rust_analyzer.rs +++ b/rust/extractor/src/rust_analyzer.rs @@ -1,6 +1,6 @@ use crate::trap; use itertools::Itertools; -use ra_ap_base_db::{EditionedFileId, FileText, RootQueryDb, SourceDatabase}; +use ra_ap_base_db::{EditionedFileId, FileText, SourceDatabase}; use ra_ap_hir::Semantics; use ra_ap_ide_db::RootDatabase; use ra_ap_load_cargo::{LoadCargoConfig, load_workspace_at}; @@ -115,7 +115,7 @@ impl<'a> RustAnalyzer<'a> { "no text available for the file in the project", )), )?; - let editioned_file_id = semantics.attach_first_edition(file_id).ok_or( + let editioned_file_id = semantics.attach_first_edition_opt(file_id).ok_or( RustAnalyzerNoSemantics::warning("failed to determine rust edition"), )?; Ok((semantics, editioned_file_id, input)) @@ -127,9 +127,8 @@ impl<'a> RustAnalyzer<'a> { match self.get_file_data(path) { Ok((semantics, file_id, input)) => { let source_file = semantics.parse(file_id); - let errors = semantics - .db - .parse_errors(file_id) + let errors = file_id + .parse_errors(semantics.db) .into_iter() .flat_map(|x| x.to_vec()) .collect(); diff --git a/rust/extractor/src/translate/base.rs b/rust/extractor/src/translate/base.rs index 94d8545bb15f..890aee7c12fb 100644 --- a/rust/extractor/src/translate/base.rs +++ b/rust/extractor/src/translate/base.rs @@ -465,9 +465,27 @@ impl<'a> Translator<'a> { pub(crate) fn should_be_excluded(&self, item: &impl ast::HasAttrs) -> bool { self.semantics.is_some_and(|sema| { item.attrs().any(|attr| { - attr.as_simple_call().is_some_and(|(name, tokens)| { - name == "cfg" && sema.check_cfg_attr(&tokens) == Some(false) - }) + let meta = match attr.meta() { + Some(meta) => meta, + None => return false, + }; + let cfg_meta = match ast::CfgMeta::cast(meta.syntax().clone()) { + Some(cfg_meta) => cfg_meta, + None => return false, + }; + let cfg_predicate = match cfg_meta.cfg_predicate() { + Some(pred) => pred, + None => return false, + }; + let cfg_expr = ra_ap_cfg::CfgExpr::parse_from_ast(cfg_predicate); + let file_id = sema.hir_file_for(item.syntax()); + let krate = match file_id.file_id().and_then(|fid| { + sema.file_to_module_defs(fid.file_id(sema.db)).next() + }) { + Some(module) => module.krate(sema.db), + None => return false, + }; + krate.cfg(sema.db).check(&cfg_expr) == Some(false) }) }) } @@ -551,9 +569,9 @@ impl<'a> Translator<'a> { is_const: false, is_gen: false, is_move: false, - is_try: false, is_unsafe: false, stmt_list: Some(stmt_list), + try_block_modifier: None, }); self.emit_location(label, node); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); @@ -695,7 +713,9 @@ impl<'a> Translator<'a> { let node: ast::Adt = node.clone().into(); let expansions = node .attrs() - .filter_map(|attr| semantics.expand_derive_macro(&attr)) + .filter_map(|attr| attr.meta()) + .filter_map(|meta| semantics.expand_derive_macro(&meta)) + .flatten() .flatten() .filter_map(|expanded| self.process_item_macro_expansion(&node, expanded)) .collect::>(); From 35fc6fbd22e4453b49da746cde2d5ad252b24c7b Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 15 Apr 2026 13:29:44 +0000 Subject: [PATCH 005/167] Rust: update toolchain to 1.91 and apply lint fixes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- rust-toolchain.toml | 2 +- rust/ast-generator/src/main.rs | 5 ++--- rust/extractor/src/config.rs | 9 +++++++-- rust/extractor/src/main.rs | 10 ++++------ rust/extractor/src/translate/base.rs | 17 ++++++++--------- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 242a1af3ed51..60d093c30021 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -5,6 +5,6 @@ # reflected by `MODULE.bazel` in this repository). [toolchain] -channel = "1.88" +channel = "1.91" profile = "minimal" components = [ "clippy", "rustfmt" ] diff --git a/rust/ast-generator/src/main.rs b/rust/ast-generator/src/main.rs index fe6865a172fb..74fe9db9a7ed 100644 --- a/rust/ast-generator/src/main.rs +++ b/rust/ast-generator/src/main.rs @@ -308,14 +308,13 @@ fn write_schema( fn get_fields(node: &AstNodeSrc) -> Vec { let mut result = Vec::new(); for field in &node.fields { - if let Field::Token { token, .. } = field { - if should_predicate_be_extracted(token) { + if let Field::Token { token, .. } = field + && should_predicate_be_extracted(token) { result.push(FieldInfo { name: format!("is_{token}"), ty: FieldType::Predicate, }); } - } } result.extend(get_additional_fields(&node.name)); diff --git a/rust/extractor/src/config.rs b/rust/extractor/src/config.rs index f887f85906d5..0e682bbb06ef 100644 --- a/rust/extractor/src/config.rs +++ b/rust/extractor/src/config.rs @@ -14,7 +14,9 @@ use ra_ap_ide_db::FxHashMap; use ra_ap_intern::Symbol; use ra_ap_load_cargo::{LoadCargoConfig, ProcMacroServerChoice}; use ra_ap_paths::{AbsPath, AbsPathBuf, Utf8PathBuf}; -use ra_ap_project_model::{CargoConfig, CargoFeatures, CfgOverrides, RustLibSource, Sysroot, TargetDirectoryConfig}; +use ra_ap_project_model::{ + CargoConfig, CargoFeatures, CfgOverrides, RustLibSource, Sysroot, TargetDirectoryConfig, +}; use rust_extractor_macros::extractor_cli_config; use serde::{Deserialize, Serialize}; use std::collections::HashSet; @@ -176,7 +178,10 @@ impl Config { .clone() .unwrap_or_else(|| self.scratch_dir.join("target")), ) - .map_or(TargetDirectoryConfig::None, TargetDirectoryConfig::Directory), + .map_or( + TargetDirectoryConfig::None, + TargetDirectoryConfig::Directory, + ), features: self.cargo_features(), target: self.cargo_target.clone(), cfg_overrides: to_cfg_overrides(&self.cargo_cfg_overrides), diff --git a/rust/extractor/src/main.rs b/rust/extractor/src/main.rs index e90badc63cd0..a838ebbafed1 100644 --- a/rust/extractor/src/main.rs +++ b/rust/extractor/src/main.rs @@ -80,8 +80,8 @@ impl<'a> Extractor<'a> { translator.emit_parse_error(&ast, &err); } let no_location = (LineCol { line: 0, col: 0 }, LineCol { line: 0, col: 0 }); - if let Err(RustAnalyzerNoSemantics { severity, reason }) = semantics_info { - if !reason.is_empty() { + if let Err(RustAnalyzerNoSemantics { severity, reason }) = semantics_info + && !reason.is_empty() { let message = format!("semantic analyzer unavailable ({reason})"); let full_message = format!("{message}: macro expansion will be skipped."); translator.emit_diagnostic( @@ -92,7 +92,6 @@ impl<'a> Extractor<'a> { no_location, ); } - } translator.emit_source_file(&ast); translator.emit_truncated_diagnostics_message(); translator.trap.commit().unwrap_or_else(|err| { @@ -300,8 +299,8 @@ fn main() -> anyhow::Result<()> { }; } for (file_id, file) in vfs.iter() { - if let Some(file) = file.as_path().map(<_ as AsRef>::as_ref) { - if file.extension().is_some_and(|ext| ext == "rs") + if let Some(file) = file.as_path().map(<_ as AsRef>::as_ref) + && file.extension().is_some_and(|ext| ext == "rs") && processed_files.insert(file.to_owned()) && db .source_root(db.file_source_root(file_id).source_root_id(db)) @@ -311,7 +310,6 @@ fn main() -> anyhow::Result<()> { extractor.extract_with_semantics(file, &semantics, vfs, library_mode); extractor.archiver.archive(file); } - } } } else { for file in files { diff --git a/rust/extractor/src/translate/base.rs b/rust/extractor/src/translate/base.rs index 890aee7c12fb..fa0cf0e40c71 100644 --- a/rust/extractor/src/translate/base.rs +++ b/rust/extractor/src/translate/base.rs @@ -215,14 +215,13 @@ impl<'a> Translator<'a> { ) { let parent_range = parent.syntax().text_range(); let token_range = token.text_range(); - if let Some(clipped_range) = token_range.intersect(parent_range) { - if let Some(parent_range2) = self.text_range_for_node(parent) { + if let Some(clipped_range) = token_range.intersect(parent_range) + && let Some(parent_range2) = self.text_range_for_node(parent) { let token_range = clipped_range + parent_range2.start() - parent_range.start(); if let Some((start, end)) = self.location(token_range) { self.trap.emit_location(self.label, label, start, end) } } - } } pub fn emit_diagnostic( &mut self, @@ -332,8 +331,8 @@ impl<'a> Translator<'a> { children: SyntaxElementChildren, ) { for child in children { - if let NodeOrToken::Token(token) = child { - if token.kind() == SyntaxKind::COMMENT { + if let NodeOrToken::Token(token) = child + && token.kind() == SyntaxKind::COMMENT { let label = self.trap.emit(generated::Comment { id: TrapId::Star, parent: parent_label, @@ -341,7 +340,6 @@ impl<'a> Translator<'a> { }); self.emit_location_token(label.into(), parent_node, &token); } - } } } fn emit_macro_expansion_parse_errors( @@ -479,9 +477,10 @@ impl<'a> Translator<'a> { }; let cfg_expr = ra_ap_cfg::CfgExpr::parse_from_ast(cfg_predicate); let file_id = sema.hir_file_for(item.syntax()); - let krate = match file_id.file_id().and_then(|fid| { - sema.file_to_module_defs(fid.file_id(sema.db)).next() - }) { + let krate = match file_id + .file_id() + .and_then(|fid| sema.file_to_module_defs(fid.file_id(sema.db)).next()) + { Some(module) => module.krate(sema.db), None => return false, }; From 68ab2fb7383106f41edbe0362f657e9460a84c7d Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 15 Apr 2026 14:20:38 +0000 Subject: [PATCH 006/167] Rust: fix QL references for schema changes and add upgrade/downgrade scripts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix Meta usage: Meta is now abstract with subtypes (PathMeta, KeyValueMeta, TokenTreeMeta, etc.) - Fix FormatArgsArg: getName() replaced by getArgName() returning FormatArgsArgName - Add upgrade script (old → new) and downgrade script (new → old) - Update Definitions.qll, PathResolution.qll, BadCtorInitialization.ql, FormatTemplateVariableAccessConstructor.qll Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../old.dbscheme | 3623 +++++++++++++++++ .../rust.dbscheme | 3556 ++++++++++++++++ .../upgrade.properties | 29 + ...ormatTemplateVariableAccessConstructor.qll | 6 +- .../rust/elements/internal/MetaImpl.qll | 1 - .../lib/codeql/rust/internal/Definitions.qll | 18 +- .../codeql/rust/internal/PathResolution.qll | 24 +- .../old.dbscheme | 3556 ++++++++++++++++ .../rust.dbscheme | 3623 +++++++++++++++++ .../upgrade.properties | 19 + .../security/CWE-696/BadCtorInitialization.ql | 13 +- 11 files changed, 14449 insertions(+), 19 deletions(-) create mode 100644 rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/old.dbscheme create mode 100644 rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/rust.dbscheme create mode 100644 rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties create mode 100644 rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/old.dbscheme create mode 100644 rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/rust.dbscheme create mode 100644 rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.properties diff --git a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/old.dbscheme b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/old.dbscheme new file mode 100644 index 000000000000..109496fd2f20 --- /dev/null +++ b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/old.dbscheme @@ -0,0 +1,3623 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string ref +); + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item_list +| @attr +| @callable +| @cfg_predicate +| @expr +| @extern_item_list +| @field_list +| @for_binder +| @format_args_arg +| @format_args_arg_name +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_ast_node +| @path_segment +| @rename +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @try_block_modifier +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +@cfg_predicate = + @cfg_atom +| @cfg_composite +; + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_expr +| @match_expr +| @method_call_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +for_binders( + unique int id: @for_binder +); + +#keyset[id] +for_binder_generic_param_lists( + int id: @for_binder ref, + int generic_param_list: @generic_param_list ref +); + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_arg_names( + int id: @format_args_arg ref, + int arg_name: @format_args_arg_name ref +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +format_args_arg_names( + unique int id: @format_args_arg_name +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +@meta = + @cfg_attr_meta +| @cfg_meta +| @key_value_meta +| @path_meta +| @token_tree_meta +| @unsafe_meta +; + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_default_vals( + int id: @struct_field ref, + int default_val: @const_arg ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +try_block_modifiers( + unique int id: @try_block_modifier +); + +#keyset[id] +try_block_modifier_is_try( + int id: @try_block_modifier ref +); + +#keyset[id] +try_block_modifier_type_reprs( + int id: @try_block_modifier ref, + int type_repr: @type_repr ref +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_for_binders( + int id: @type_bound ref, + int for_binder: @for_binder ref +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_for_binders( + int id: @where_pred ref, + int for_binder: @for_binder ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_arg_lists( + int id: @call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_attrs( + int id: @call_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +cfg_atoms( + unique int id: @cfg_atom +); + +cfg_attr_meta( + unique int id: @cfg_attr_meta +); + +#keyset[id] +cfg_attr_meta_cfg_predicates( + int id: @cfg_attr_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +#keyset[id, index] +cfg_attr_meta_metas( + int id: @cfg_attr_meta ref, + int index: int ref, + int meta: @meta ref +); + +cfg_composites( + unique int id: @cfg_composite +); + +#keyset[id, index] +cfg_composite_cfg_predicates( + int id: @cfg_composite ref, + int index: int ref, + int cfg_predicate: @cfg_predicate ref +); + +cfg_meta( + unique int id: @cfg_meta +); + +#keyset[id] +cfg_meta_cfg_predicates( + int id: @cfg_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_closure_bodies( + int id: @closure_expr ref, + int closure_body: @expr ref +); + +#keyset[id] +closure_expr_for_binders( + int id: @closure_expr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_for_binders( + int id: @for_type_repr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @asm_expr +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @type_item +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +key_value_meta( + unique int id: @key_value_meta +); + +#keyset[id] +key_value_meta_exprs( + int id: @key_value_meta ref, + int expr: @expr ref +); + +#keyset[id] +key_value_meta_paths( + int id: @key_value_meta ref, + int path: @path ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_arg_lists( + int id: @method_call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +method_call_expr_attrs( + int id: @method_call_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_expr_base = + @path_expr +; + +path_meta( + unique int id: @path_meta +); + +#keyset[id] +path_meta_paths( + int id: @path_meta ref, + int path: @path ref +); + +path_pats( + unique int id: @path_pat +); + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +token_tree_meta( + unique int id: @token_tree_meta +); + +#keyset[id] +token_tree_meta_paths( + int id: @token_tree_meta ref, + int path: @path ref +); + +#keyset[id] +token_tree_meta_token_trees( + int id: @token_tree_meta ref, + int token_tree: @token_tree ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +unsafe_meta( + unique int id: @unsafe_meta +); + +#keyset[id] +unsafe_meta_is_unsafe( + int id: @unsafe_meta ref +); + +#keyset[id] +unsafe_meta_meta( + int id: @unsafe_meta ref, + int meta: @meta ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_const_args( + int id: @variant ref, + int const_arg: @const_arg ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +#keyset[id] +block_expr_try_block_modifiers( + int id: @block_expr ref, + int try_block_modifier: @try_block_modifier ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +@type_item = + @enum +| @struct +| @union +; + +#keyset[id, index] +type_item_derive_macro_expansions( + int id: @type_item ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +#keyset[id, index] +type_item_attrs( + int id: @type_item ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_item_generic_param_lists( + int id: @type_item ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_item_names( + int id: @type_item ref, + int name: @name ref +); + +#keyset[id] +type_item_visibilities( + int id: @type_item ref, + int visibility: @visibility ref +); + +#keyset[id] +type_item_where_clauses( + int id: @type_item ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_function_bodies( + int id: @function ref, + int function_body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/rust.dbscheme b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/rust.dbscheme new file mode 100644 index 000000000000..66a489863649 --- /dev/null +++ b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/rust.dbscheme @@ -0,0 +1,3556 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string ref +); + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item_list +| @attr +| @callable +| @expr +| @extern_item_list +| @field_list +| @for_binder +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_ast_node +| @path_segment +| @rename +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_expr +| @match_expr +| @method_call_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +for_binders( + unique int id: @for_binder +); + +#keyset[id] +for_binder_generic_param_lists( + int id: @for_binder ref, + int generic_param_list: @generic_param_list ref +); + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_for_binders( + int id: @type_bound ref, + int for_binder: @for_binder ref +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_for_binders( + int id: @where_pred ref, + int for_binder: @for_binder ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_arg_lists( + int id: @call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_attrs( + int id: @call_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_closure_bodies( + int id: @closure_expr ref, + int closure_body: @expr ref +); + +#keyset[id] +closure_expr_for_binders( + int id: @closure_expr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_for_binders( + int id: @for_type_repr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @asm_expr +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @trait_alias +| @type_item +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_arg_lists( + int id: @method_call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +method_call_expr_attrs( + int id: @method_call_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_expr_base = + @path_expr +; + +path_pats( + unique int id: @path_pat +); + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +@type_item = + @enum +| @struct +| @union +; + +#keyset[id, index] +type_item_derive_macro_expansions( + int id: @type_item ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +#keyset[id, index] +type_item_attrs( + int id: @type_item ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_item_generic_param_lists( + int id: @type_item ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_item_names( + int id: @type_item ref, + int name: @name ref +); + +#keyset[id] +type_item_visibilities( + int id: @type_item ref, + int visibility: @visibility ref +); + +#keyset[id] +type_item_where_clauses( + int id: @type_item ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_function_bodies( + int id: @function ref, + int function_body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties new file mode 100644 index 000000000000..6d4e1d708ba6 --- /dev/null +++ b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties @@ -0,0 +1,29 @@ +description: Downgrade from rust-analyzer 0.0.328 to 0.0.301 +compatibility: partial + +format_args_arg_arg_names.rel: delete +format_args_arg_names.rel: delete +struct_field_default_vals.rel: delete +variant_const_args.rel: delete +try_block_modifiers.rel: delete +try_block_modifier_is_try.rel: delete +try_block_modifier_type_reprs.rel: delete +cfg_atoms.rel: delete +cfg_attr_meta.rel: delete +cfg_attr_meta_cfg_predicates.rel: delete +cfg_attr_meta_metas.rel: delete +cfg_composites.rel: delete +cfg_composite_cfg_predicates.rel: delete +cfg_meta.rel: delete +cfg_meta_cfg_predicates.rel: delete +key_value_meta.rel: delete +key_value_meta_exprs.rel: delete +key_value_meta_paths.rel: delete +path_meta.rel: delete +path_meta_paths.rel: delete +token_tree_meta.rel: delete +token_tree_meta_paths.rel: delete +token_tree_meta_token_trees.rel: delete +unsafe_meta.rel: delete +unsafe_meta_is_unsafe.rel: delete +unsafe_meta_meta.rel: delete diff --git a/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessConstructor.qll index 40cb174a0710..95f01f85c953 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessConstructor.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessConstructor.qll @@ -35,8 +35,8 @@ private predicate formatArgsHasArg( } pragma[nomagic] -private predicate formatArgsHasArgName(Raw::FormatArgsExpr parent, string name) { - parent.getArg(_).getName().getText() = name +private predicate formatArgsHasArgName(Raw::FormatArgsExpr parent) { + exists(parent.getArg(_).getArgName()) } /** @@ -48,6 +48,6 @@ predicate unboundNamedFormatArgument( ) { exists(string name | formatArgsHasArg(parent, arg, name, index, kind) and - not formatArgsHasArgName(parent, name) + not formatArgsHasArgName(parent) ) } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll index bbac494ed3c9..3c496845cec4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Meta`. * diff --git a/rust/ql/lib/codeql/rust/internal/Definitions.qll b/rust/ql/lib/codeql/rust/internal/Definitions.qll index aedcc3fc69c5..aa0c5146b41f 100644 --- a/rust/ql/lib/codeql/rust/internal/Definitions.qll +++ b/rust/ql/lib/codeql/rust/internal/Definitions.qll @@ -8,6 +8,7 @@ private import codeql.rust.elements.Variable private import codeql.rust.elements.Locatable private import codeql.rust.elements.FormatArgsExpr private import codeql.rust.elements.FormatArgsArg +private import codeql.rust.elements.FormatArgsArgName private import codeql.rust.elements.Format private import codeql.rust.elements.MacroCall private import codeql.rust.elements.NamedFormatArgument @@ -33,7 +34,7 @@ private module Cached { cached newtype TDef = TVariable(Variable v) or - TFormatArgsArgName(Name name) { name = any(FormatArgsArg a).getName() } or + TFormatArgsArgDef(FormatArgsArgName name) { name = any(FormatArgsArg a).getArgName() } or TFormatArgsArgIndex(Expr e) { e = any(FormatArgsArg a).getExpr() } or TItemNode(ItemNode i) @@ -58,7 +59,7 @@ class Definition extends Cached::TDef { /** Gets the location of this variable. */ Location getLocation() { result = this.asVariable().getLocation() or - result = this.asName().getLocation() or + result = this.asFormatArgsArgName().getLocation() or result = this.asExpr().getLocation() or result = this.asItemNode().getLocation() } @@ -66,8 +67,8 @@ class Definition extends Cached::TDef { /** Gets this definition as a `Variable` */ Variable asVariable() { this = Cached::TVariable(result) } - /** Gets this definition as a `Name` */ - Name asName() { this = Cached::TFormatArgsArgName(result) } + /** Gets this definition as a format argument name */ + FormatArgsArgName asFormatArgsArgName() { this = Cached::TFormatArgsArgDef(result) } /** Gets this definition as an `Expr` */ Expr asExpr() { this = Cached::TFormatArgsArgIndex(result) } @@ -79,7 +80,7 @@ class Definition extends Cached::TDef { string toString() { result = this.asExpr().toString() or result = this.asVariable().toString() or - result = this.asName().getText() or + result = this.asFormatArgsArgName().toString() or result = this.asItemNode().toString() } } @@ -95,17 +96,16 @@ private class LocalVariableUse extends Use instanceof VariableAccess { } private class NamedFormatArgumentUse extends Use instanceof NamedFormatArgument { - private Name def; + private FormatArgsArgName def; NamedFormatArgumentUse() { exists(FormatArgsExpr parent | parent = this.getParent().getParent() and - parent.getAnArg().getName() = def and - this.getName() = def.getText() + parent.getAnArg().getArgName() = def ) } - override Definition getDefinition() { result.asName() = def } + override Definition getDefinition() { result.asFormatArgsArgName() = def } override string getUseType() { result = "format argument" } } diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 10d18786880b..1d5f090705a4 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -49,6 +49,20 @@ private import codeql.rust.internal.CachedStages private import codeql.rust.frameworks.stdlib.Builtins as Builtins private import codeql.util.Option +/** Gets the path of a `Meta` node, regardless of its concrete subtype. */ +pragma[nomagic] +private Path getMetaPath(Meta m) { + result = m.(PathMeta).getPath() + or + result = m.(KeyValueMeta).getPath() + or + result = m.(TokenTreeMeta).getPath() +} + +/** Gets the expression of a `Meta` node, regardless of its concrete subtype. */ +pragma[nomagic] +private Expr getMetaExpr(Meta m) { result = m.(KeyValueMeta).getExpr() } + private newtype TNamespace = TTypeNamespace() or TValueNamespace() or @@ -263,7 +277,7 @@ abstract class ItemNode extends Locatable { pragma[nomagic] final Attr getAttr(string name) { result = this.getAnAttr() and - result.getMeta().getPath().(PathExt).isUnqualified(name) + getMetaPath(result.getMeta()).(PathExt).isUnqualified(name) } final predicate hasAttr(string name) { exists(this.getAttr(name)) } @@ -1348,7 +1362,7 @@ private predicate fileModuleInlineLate(SourceFile f, string name, Folder folder) */ private Meta getPathAttrMeta(Module m) { result = m.getAnAttr().getMeta() and - result.getPath().getText() = "path" + getMetaPath(result).getText() = "path" } /** @@ -1412,7 +1426,7 @@ private predicate pathAttrImport(Folder f, Module m, string relativePath) { exists(Meta meta | f = m.getFile().getParentContainer() and meta = getPathAttrMeta(m) and - relativePath = meta.getExpr().(LiteralExpr).getTextValue().regexpCapture("\"(.+)\"", 1) + relativePath = getMetaExpr(meta).(LiteralExpr).getTextValue().regexpCapture("\"(.+)\"", 1) ) } @@ -1793,7 +1807,7 @@ private module DollarCrateResolution { or exists(ItemNode type | expansion = type.(TypeItem).getDeriveMacroExpansion(_) and - macroDefPath = type.getAttr("derive").getMeta().getPath() + macroDefPath = getMetaPath(type.getAttr("derive").getMeta()) ) } @@ -1952,7 +1966,7 @@ private predicate pathUsesNamespace(PathExt p, Namespace n) { ( p = any(MacroCall mc).getPath() or - p = any(Meta m).getPath() + p = getMetaPath(any(Meta m)) ) } diff --git a/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/old.dbscheme b/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/old.dbscheme new file mode 100644 index 000000000000..66a489863649 --- /dev/null +++ b/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/old.dbscheme @@ -0,0 +1,3556 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string ref +); + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item_list +| @attr +| @callable +| @expr +| @extern_item_list +| @field_list +| @for_binder +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_ast_node +| @path_segment +| @rename +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_expr +| @match_expr +| @method_call_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +for_binders( + unique int id: @for_binder +); + +#keyset[id] +for_binder_generic_param_lists( + int id: @for_binder ref, + int generic_param_list: @generic_param_list ref +); + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_for_binders( + int id: @type_bound ref, + int for_binder: @for_binder ref +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_for_binders( + int id: @where_pred ref, + int for_binder: @for_binder ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_arg_lists( + int id: @call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_attrs( + int id: @call_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_closure_bodies( + int id: @closure_expr ref, + int closure_body: @expr ref +); + +#keyset[id] +closure_expr_for_binders( + int id: @closure_expr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_for_binders( + int id: @for_type_repr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @asm_expr +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @trait_alias +| @type_item +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_arg_lists( + int id: @method_call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +method_call_expr_attrs( + int id: @method_call_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_expr_base = + @path_expr +; + +path_pats( + unique int id: @path_pat +); + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +@type_item = + @enum +| @struct +| @union +; + +#keyset[id, index] +type_item_derive_macro_expansions( + int id: @type_item ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +#keyset[id, index] +type_item_attrs( + int id: @type_item ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_item_generic_param_lists( + int id: @type_item ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_item_names( + int id: @type_item ref, + int name: @name ref +); + +#keyset[id] +type_item_visibilities( + int id: @type_item ref, + int visibility: @visibility ref +); + +#keyset[id] +type_item_where_clauses( + int id: @type_item ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_function_bodies( + int id: @function ref, + int function_body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/rust.dbscheme b/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/rust.dbscheme new file mode 100644 index 000000000000..109496fd2f20 --- /dev/null +++ b/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/rust.dbscheme @@ -0,0 +1,3623 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string ref +); + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item_list +| @attr +| @callable +| @cfg_predicate +| @expr +| @extern_item_list +| @field_list +| @for_binder +| @format_args_arg +| @format_args_arg_name +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_ast_node +| @path_segment +| @rename +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @try_block_modifier +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +@cfg_predicate = + @cfg_atom +| @cfg_composite +; + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_expr +| @match_expr +| @method_call_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +for_binders( + unique int id: @for_binder +); + +#keyset[id] +for_binder_generic_param_lists( + int id: @for_binder ref, + int generic_param_list: @generic_param_list ref +); + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_arg_names( + int id: @format_args_arg ref, + int arg_name: @format_args_arg_name ref +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +format_args_arg_names( + unique int id: @format_args_arg_name +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +@meta = + @cfg_attr_meta +| @cfg_meta +| @key_value_meta +| @path_meta +| @token_tree_meta +| @unsafe_meta +; + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_default_vals( + int id: @struct_field ref, + int default_val: @const_arg ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +try_block_modifiers( + unique int id: @try_block_modifier +); + +#keyset[id] +try_block_modifier_is_try( + int id: @try_block_modifier ref +); + +#keyset[id] +try_block_modifier_type_reprs( + int id: @try_block_modifier ref, + int type_repr: @type_repr ref +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_for_binders( + int id: @type_bound ref, + int for_binder: @for_binder ref +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_for_binders( + int id: @where_pred ref, + int for_binder: @for_binder ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_arg_lists( + int id: @call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_attrs( + int id: @call_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +cfg_atoms( + unique int id: @cfg_atom +); + +cfg_attr_meta( + unique int id: @cfg_attr_meta +); + +#keyset[id] +cfg_attr_meta_cfg_predicates( + int id: @cfg_attr_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +#keyset[id, index] +cfg_attr_meta_metas( + int id: @cfg_attr_meta ref, + int index: int ref, + int meta: @meta ref +); + +cfg_composites( + unique int id: @cfg_composite +); + +#keyset[id, index] +cfg_composite_cfg_predicates( + int id: @cfg_composite ref, + int index: int ref, + int cfg_predicate: @cfg_predicate ref +); + +cfg_meta( + unique int id: @cfg_meta +); + +#keyset[id] +cfg_meta_cfg_predicates( + int id: @cfg_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_closure_bodies( + int id: @closure_expr ref, + int closure_body: @expr ref +); + +#keyset[id] +closure_expr_for_binders( + int id: @closure_expr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_for_binders( + int id: @for_type_repr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @asm_expr +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @type_item +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +key_value_meta( + unique int id: @key_value_meta +); + +#keyset[id] +key_value_meta_exprs( + int id: @key_value_meta ref, + int expr: @expr ref +); + +#keyset[id] +key_value_meta_paths( + int id: @key_value_meta ref, + int path: @path ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_arg_lists( + int id: @method_call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +method_call_expr_attrs( + int id: @method_call_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_expr_base = + @path_expr +; + +path_meta( + unique int id: @path_meta +); + +#keyset[id] +path_meta_paths( + int id: @path_meta ref, + int path: @path ref +); + +path_pats( + unique int id: @path_pat +); + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +token_tree_meta( + unique int id: @token_tree_meta +); + +#keyset[id] +token_tree_meta_paths( + int id: @token_tree_meta ref, + int path: @path ref +); + +#keyset[id] +token_tree_meta_token_trees( + int id: @token_tree_meta ref, + int token_tree: @token_tree ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +unsafe_meta( + unique int id: @unsafe_meta +); + +#keyset[id] +unsafe_meta_is_unsafe( + int id: @unsafe_meta ref +); + +#keyset[id] +unsafe_meta_meta( + int id: @unsafe_meta ref, + int meta: @meta ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_const_args( + int id: @variant ref, + int const_arg: @const_arg ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +#keyset[id] +block_expr_try_block_modifiers( + int id: @block_expr ref, + int try_block_modifier: @try_block_modifier ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +@type_item = + @enum +| @struct +| @union +; + +#keyset[id, index] +type_item_derive_macro_expansions( + int id: @type_item ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +#keyset[id, index] +type_item_attrs( + int id: @type_item ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_item_generic_param_lists( + int id: @type_item ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_item_names( + int id: @type_item ref, + int name: @name ref +); + +#keyset[id] +type_item_visibilities( + int id: @type_item ref, + int visibility: @visibility ref +); + +#keyset[id] +type_item_where_clauses( + int id: @type_item ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_function_bodies( + int id: @function ref, + int function_body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.properties b/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.properties new file mode 100644 index 000000000000..e8888f4d7321 --- /dev/null +++ b/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.properties @@ -0,0 +1,19 @@ +description: Upgrade from rust-analyzer 0.0.301 to 0.0.328 +compatibility: partial + +block_expr_is_try.rel: delete +meta.rel: delete +meta_exprs.rel: delete +meta_is_unsafe.rel: delete +meta_paths.rel: delete +meta_token_trees.rel: delete +format_args_arg_names.rel: delete +struct_field_defaults.rel: delete +variant_discriminants.rel: delete +trait_aliases.rel: delete +trait_alias_attrs.rel: delete +trait_alias_generic_param_lists.rel: delete +trait_alias_names.rel: delete +trait_alias_type_bound_lists.rel: delete +trait_alias_visibilities.rel: delete +trait_alias_where_clauses.rel: delete diff --git a/rust/ql/src/queries/security/CWE-696/BadCtorInitialization.ql b/rust/ql/src/queries/security/CWE-696/BadCtorInitialization.ql index 7a206856adf8..04a991b9a004 100644 --- a/rust/ql/src/queries/security/CWE-696/BadCtorInitialization.ql +++ b/rust/ql/src/queries/security/CWE-696/BadCtorInitialization.ql @@ -12,6 +12,17 @@ */ import rust +private import codeql.rust.elements.PathMeta +private import codeql.rust.elements.KeyValueMeta +private import codeql.rust.elements.TokenTreeMeta + +private Path getMetaPath(Meta m) { + result = m.(PathMeta).getPath() + or + result = m.(KeyValueMeta).getPath() + or + result = m.(TokenTreeMeta).getPath() +} /** * A `#[ctor]` or `#[dtor]` attribute, that is, a source for this query. @@ -20,7 +31,7 @@ class CtorAttr extends Attr { string whichAttr; CtorAttr() { - whichAttr = this.getMeta().getPath().getText() and + whichAttr = getMetaPath(this.getMeta()).getText() and whichAttr = ["ctor", "dtor"] } From 87472288c30b51d2426cf1ae19ee636149209d38 Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 15 Apr 2026 15:12:41 +0000 Subject: [PATCH 007/167] Rust: fix formatting and codegen drift Re-run cargo fmt after clippy --fix to ensure consistent formatting. Re-run codegen to update generated file tracking for MetaImpl.qll. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- rust/ast-generator/src/main.rs | 13 +++--- rust/extractor/src/main.rs | 41 ++++++++++--------- rust/extractor/src/translate/base.rs | 28 +++++++------ rust/ql/.generated.list | 1 - rust/ql/.gitattributes | 1 - .../rust/elements/internal/MetaImpl.qll | 1 + 6 files changed, 44 insertions(+), 41 deletions(-) diff --git a/rust/ast-generator/src/main.rs b/rust/ast-generator/src/main.rs index 74fe9db9a7ed..9e5120847a54 100644 --- a/rust/ast-generator/src/main.rs +++ b/rust/ast-generator/src/main.rs @@ -309,12 +309,13 @@ fn get_fields(node: &AstNodeSrc) -> Vec { let mut result = Vec::new(); for field in &node.fields { if let Field::Token { token, .. } = field - && should_predicate_be_extracted(token) { - result.push(FieldInfo { - name: format!("is_{token}"), - ty: FieldType::Predicate, - }); - } + && should_predicate_be_extracted(token) + { + result.push(FieldInfo { + name: format!("is_{token}"), + ty: FieldType::Predicate, + }); + } } result.extend(get_additional_fields(&node.name)); diff --git a/rust/extractor/src/main.rs b/rust/extractor/src/main.rs index a838ebbafed1..d4c6e5352f7d 100644 --- a/rust/extractor/src/main.rs +++ b/rust/extractor/src/main.rs @@ -81,17 +81,18 @@ impl<'a> Extractor<'a> { } let no_location = (LineCol { line: 0, col: 0 }, LineCol { line: 0, col: 0 }); if let Err(RustAnalyzerNoSemantics { severity, reason }) = semantics_info - && !reason.is_empty() { - let message = format!("semantic analyzer unavailable ({reason})"); - let full_message = format!("{message}: macro expansion will be skipped."); - translator.emit_diagnostic( - severity, - "semantics".to_owned(), - message, - full_message, - no_location, - ); - } + && !reason.is_empty() + { + let message = format!("semantic analyzer unavailable ({reason})"); + let full_message = format!("{message}: macro expansion will be skipped."); + translator.emit_diagnostic( + severity, + "semantics".to_owned(), + message, + full_message, + no_location, + ); + } translator.emit_source_file(&ast); translator.emit_truncated_diagnostics_message(); translator.trap.commit().unwrap_or_else(|err| { @@ -301,15 +302,15 @@ fn main() -> anyhow::Result<()> { for (file_id, file) in vfs.iter() { if let Some(file) = file.as_path().map(<_ as AsRef>::as_ref) && file.extension().is_some_and(|ext| ext == "rs") - && processed_files.insert(file.to_owned()) - && db - .source_root(db.file_source_root(file_id).source_root_id(db)) - .source_root(db) - .is_library - { - extractor.extract_with_semantics(file, &semantics, vfs, library_mode); - extractor.archiver.archive(file); - } + && processed_files.insert(file.to_owned()) + && db + .source_root(db.file_source_root(file_id).source_root_id(db)) + .source_root(db) + .is_library + { + extractor.extract_with_semantics(file, &semantics, vfs, library_mode); + extractor.archiver.archive(file); + } } } else { for file in files { diff --git a/rust/extractor/src/translate/base.rs b/rust/extractor/src/translate/base.rs index fa0cf0e40c71..403e69c50c39 100644 --- a/rust/extractor/src/translate/base.rs +++ b/rust/extractor/src/translate/base.rs @@ -216,12 +216,13 @@ impl<'a> Translator<'a> { let parent_range = parent.syntax().text_range(); let token_range = token.text_range(); if let Some(clipped_range) = token_range.intersect(parent_range) - && let Some(parent_range2) = self.text_range_for_node(parent) { - let token_range = clipped_range + parent_range2.start() - parent_range.start(); - if let Some((start, end)) = self.location(token_range) { - self.trap.emit_location(self.label, label, start, end) - } + && let Some(parent_range2) = self.text_range_for_node(parent) + { + let token_range = clipped_range + parent_range2.start() - parent_range.start(); + if let Some((start, end)) = self.location(token_range) { + self.trap.emit_location(self.label, label, start, end) } + } } pub fn emit_diagnostic( &mut self, @@ -332,14 +333,15 @@ impl<'a> Translator<'a> { ) { for child in children { if let NodeOrToken::Token(token) = child - && token.kind() == SyntaxKind::COMMENT { - let label = self.trap.emit(generated::Comment { - id: TrapId::Star, - parent: parent_label, - text: token.text().to_owned(), - }); - self.emit_location_token(label.into(), parent_node, &token); - } + && token.kind() == SyntaxKind::COMMENT + { + let label = self.trap.emit(generated::Comment { + id: TrapId::Star, + parent: parent_label, + text: token.text().to_owned(), + }); + self.emit_location_token(label.into(), parent_node, &token); + } } } fn emit_macro_expansion_parse_errors( diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index bc9aabe628f3..9f8a07e67b09 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -340,7 +340,6 @@ lib/codeql/rust/elements/internal/MatchArmListImpl.qll 16de8d9e0768ee42c5069df5c lib/codeql/rust/elements/internal/MatchExprConstructor.qll 0355ca543a0f9ad56697bc2e1e2511fa3f233bc1f6344d9e1c2369106901c696 78622807a1c4bff61b751c715639510146c7a713e0c4f63246e9a2cf302f4875 lib/codeql/rust/elements/internal/MatchGuardConstructor.qll d4cae02d2902fe8d3cb6b9c2796137863f41f55840f6623935a1c99df43f28d8 0c89f2ca71a2fd5a3f365291e784cb779e34ba0542d9285515e1856424cec60d lib/codeql/rust/elements/internal/MatchGuardImpl.qll 489040ca1ea85edda91405fab3d12321b6541d2888c35356d3c14c707bf1468e 2b60223a822b840356a3668da3f9578e6a9b8f683fcdd3dbd99b5354c7d96095 -lib/codeql/rust/elements/internal/MetaImpl.qll ab77681dc271d26b4eb77d792fd9b24fce65b0f4a88056ad09aa9400d26b4b58 270e58d97c03357e92f777ce2bd332e2718e077a7faaa6778941a9d5b14e135d lib/codeql/rust/elements/internal/MethodCallExprConstructor.qll a1b3c4587f0ae60d206980b1d9e6881d998f29d2b592a73421d6a44124c70c20 8d4eaa3eb54653fac17f7d95e9cc833fe1398d27c02b2388cd9af8724a560ded lib/codeql/rust/elements/internal/MissingConstructor.qll aab0b7f2846f14a5914661a18c7c9eae71b9bde2162a3c5e5e8a8ecafa20e854 8f30b00b5b7918a7500786cc749b61695158b5b3cc8e9f2277b6b6bf0f7850a0 lib/codeql/rust/elements/internal/MissingImpl.qll e81caa383797dfe837cf101fb78d23ab150b32fef7b47ffcc5489bfcd942ac3e 9f3212d45d77e5888e435e7babd55c1e6b42c3c16f5b1f71170ac41f93ee8d0b diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index d4feb85fc476..6dc4ce6b105f 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -342,7 +342,6 @@ /lib/codeql/rust/elements/internal/MatchExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MatchGuardConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MatchGuardImpl.qll linguist-generated -/lib/codeql/rust/elements/internal/MetaImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MethodCallExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MissingConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MissingImpl.qll linguist-generated diff --git a/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll index 3c496845cec4..295decd667a9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll @@ -11,6 +11,7 @@ private import codeql.rust.elements.internal.generated.Meta * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A meta item in an attribute. * From 87a0ed190f01119dba4e18530dd2989b6f6f20ab Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 15 Apr 2026 15:29:00 +0000 Subject: [PATCH 008/167] Rust: fix LoadCargoConfig defaults (proc_macro_processes must be >= 1) Setting proc_macro_processes to 0 causes an index-out-of-bounds panic in ProcMacroServerPool::new when the proc macro server is enabled. Use the same defaults as rust-analyzer itself (1 each). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- rust/extractor/src/config.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rust/extractor/src/config.rs b/rust/extractor/src/config.rs index 0e682bbb06ef..7677025a66f2 100644 --- a/rust/extractor/src/config.rs +++ b/rust/extractor/src/config.rs @@ -197,8 +197,8 @@ impl Config { load_out_dirs_from_check: true, with_proc_macro_server: self.proc_macro_server_choice(dir), prefill_caches: false, - num_worker_threads: 0, - proc_macro_processes: 0, + num_worker_threads: 1, + proc_macro_processes: 1, }, ) } From 6057c79231b62125663e54f057c4220ed88d00d7 Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 15 Apr 2026 16:58:12 +0000 Subject: [PATCH 009/167] Rust: fix upgrade script and update test expectations - Remove format_args_arg_names from upgrade delete list (table exists in both schemas with different columns) - Accept updated .expected files for schema changes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../upgrade.properties | 1 - .../canonical_path/canonical_paths.expected | 3 - .../generated/Attr/Attr.expected | 2 +- .../generated/BlockExpr/BlockExpr.expected | 7 +- .../FormatArgsExpr/FormatArgsArg.expected | 6 +- .../generated/MacroItems/MacroItems.expected | 2 - .../StructField/StructField.expected | 2 +- .../generated/Variant/Variant.expected | 2 +- .../macro-expansion/PrintAst.expected | 233 +------- .../macro-expansion/test.expected | 21 +- .../macro-in-library/PrintAst.expected | 2 +- .../web_frameworks/InlineFlow.expected | 6 +- .../web_frameworks/TaintSources.expected | 16 +- .../definitions/Definitions.expected | 6 +- .../security/CWE-079/actix/XSS.expected | 6 +- .../security/CWE-614/InsecureCookie.expected | 528 ++++-------------- .../CWE-696/BadCTorInitialization.expected | 8 +- .../UncontrolledAllocationSize.expected | 196 ++++--- .../CWE-825/AccessInvalidPointer.expected | 4 + 19 files changed, 272 insertions(+), 779 deletions(-) diff --git a/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.properties b/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.properties index e8888f4d7321..c130c0f83810 100644 --- a/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.properties +++ b/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.properties @@ -7,7 +7,6 @@ meta_exprs.rel: delete meta_is_unsafe.rel: delete meta_paths.rel: delete meta_token_trees.rel: delete -format_args_arg_names.rel: delete struct_field_defaults.rel: delete variant_discriminants.rel: delete trait_aliases.rel: delete diff --git a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected index cfdb7fc723b0..5778e6f3a83a 100644 --- a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected +++ b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected @@ -4,9 +4,6 @@ | lib.rs:1:1:1:18 | mod anonymous | test::anonymous | | lib.rs:2:1:2:16 | mod regular | test::regular | | regular.rs:1:1:2:18 | struct Struct | test::regular::Struct | -| regular.rs:2:12:2:17 | fn eq | ::eq | -| regular.rs:2:12:2:17 | impl ...::Eq for Struct::<...> { ... } | | -| regular.rs:2:12:2:17 | impl ...::PartialEq for Struct::<...> { ... } | | | regular.rs:4:1:6:1 | trait Trait | test::regular::Trait | | regular.rs:5:5:5:16 | fn f | <_ as test::regular::Trait>::f | | regular.rs:8:1:10:1 | impl Trait for Struct { ... } | | diff --git a/rust/ql/test/extractor-tests/generated/Attr/Attr.expected b/rust/ql/test/extractor-tests/generated/Attr/Attr.expected index 1272453173d9..98a72a41f18a 100644 --- a/rust/ql/test/extractor-tests/generated/Attr/Attr.expected +++ b/rust/ql/test/extractor-tests/generated/Attr/Attr.expected @@ -1,4 +1,4 @@ instances | gen_attr.rs:7:5:7:20 | Attr | getMeta -| gen_attr.rs:7:5:7:20 | Attr | gen_attr.rs:7:7:7:19 | Meta | +| gen_attr.rs:7:5:7:20 | Attr | gen_attr.rs:7:7:7:19 | TokenTreeMeta | diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.expected b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.expected index 0423524834b7..843d156ff9a6 100644 --- a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.expected +++ b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.expected @@ -1,7 +1,7 @@ instances -| gen_block_expr.rs:3:28:12:1 | { ... } | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | -| gen_block_expr.rs:5:5:7:5 | { ... } | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | -| gen_block_expr.rs:8:5:11:5 | 'label: { ... } | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | +| gen_block_expr.rs:3:28:12:1 | { ... } | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isUnsafe: | no | +| gen_block_expr.rs:5:5:7:5 | { ... } | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isUnsafe: | no | +| gen_block_expr.rs:8:5:11:5 | 'label: { ... } | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isUnsafe: | no | getLabel | gen_block_expr.rs:8:5:11:5 | 'label: { ... } | gen_block_expr.rs:8:5:8:11 | 'label | getAttr @@ -9,3 +9,4 @@ getStmtList | gen_block_expr.rs:3:28:12:1 | { ... } | gen_block_expr.rs:3:28:12:1 | StmtList | | gen_block_expr.rs:5:5:7:5 | { ... } | gen_block_expr.rs:5:5:7:5 | StmtList | | gen_block_expr.rs:8:5:11:5 | 'label: { ... } | gen_block_expr.rs:8:13:11:5 | StmtList | +getTryBlockModifier diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.expected index 32a73ae1c7c4..01c549f29a1a 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.expected +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.expected @@ -15,6 +15,9 @@ instances | gen_format_argument.rs:7:34:7:38 | FormatArgsArg | | gen_format_argument.rs:7:41:7:45 | FormatArgsArg | | gen_format_argument.rs:7:48:7:56 | FormatArgsArg | +getArgName +| gen_format_args_expr.rs:7:35:7:37 | FormatArgsArg | gen_format_args_expr.rs:7:35:7:36 | FormatArgsArgName | +| gen_format_args_expr.rs:7:40:7:42 | FormatArgsArg | gen_format_args_expr.rs:7:40:7:41 | FormatArgsArgName | getExpr | gen_format.rs:5:26:5:32 | FormatArgsArg | gen_format.rs:5:26:5:32 | "world" | | gen_format.rs:12:35:12:38 | FormatArgsArg | gen_format.rs:12:35:12:38 | name | @@ -32,6 +35,3 @@ getExpr | gen_format_argument.rs:7:34:7:38 | FormatArgsArg | gen_format_argument.rs:7:34:7:38 | value | | gen_format_argument.rs:7:41:7:45 | FormatArgsArg | gen_format_argument.rs:7:41:7:45 | width | | gen_format_argument.rs:7:48:7:56 | FormatArgsArg | gen_format_argument.rs:7:48:7:56 | precision | -getName -| gen_format_args_expr.rs:7:35:7:37 | FormatArgsArg | gen_format_args_expr.rs:7:35:7:35 | a | -| gen_format_args_expr.rs:7:40:7:42 | FormatArgsArg | gen_format_args_expr.rs:7:40:7:40 | b | diff --git a/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.expected b/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.expected index 156893a07eba..c7b6ab807aac 100644 --- a/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.expected +++ b/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.expected @@ -1,7 +1,5 @@ instances | gen_macro_items.rs:5:5:5:12 | MacroItems | -| gen_macro_items.rs:13:12:13:14 | MacroItems | getItem | gen_macro_items.rs:5:5:5:12 | MacroItems | 0 | gen_macro_items.rs:5:5:5:38 | use ...::Path | | gen_macro_items.rs:5:5:5:12 | MacroItems | 1 | gen_macro_items.rs:5:5:5:38 | fn get_parent | -| gen_macro_items.rs:13:12:13:14 | MacroItems | 0 | gen_macro_items.rs:13:12:13:14 | impl ...::Debug for Bar::<...> { ... } | diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField.expected b/rust/ql/test/extractor-tests/generated/StructField/StructField.expected index 285d3530c66f..981fafb354ca 100644 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField.expected +++ b/rust/ql/test/extractor-tests/generated/StructField/StructField.expected @@ -1,7 +1,7 @@ instances | gen_struct_field.rs:7:16:7:21 | x: i32 | isUnsafe: | no | getAttr -getDefault +getDefaultVal getName | gen_struct_field.rs:7:16:7:21 | x: i32 | gen_struct_field.rs:7:16:7:16 | x | getTypeRepr diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant.expected b/rust/ql/test/extractor-tests/generated/Variant/Variant.expected index 4c67e1684b00..112c0a3522a5 100644 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant.expected +++ b/rust/ql/test/extractor-tests/generated/Variant/Variant.expected @@ -3,7 +3,7 @@ instances | gen_variant.rs:7:17:7:22 | B | | gen_variant.rs:7:25:7:36 | C | getAttr -getDiscriminant +getConstArg getFieldList | gen_variant.rs:7:17:7:22 | B | gen_variant.rs:7:18:7:22 | TupleFieldList | | gen_variant.rs:7:25:7:36 | C | gen_variant.rs:7:27:7:36 | StructFieldList | diff --git a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected index 6f0b278d062e..e45cbadf0d21 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected @@ -203,7 +203,7 @@ macro_expansion.rs: # 8| getStmtList(): [StmtList] StmtList # 8| getName(): [Name] inner_1 # 7| getAttr(0): [Attr] Attr -# 7| getMeta(): [Meta] Meta +# 7| getMeta(): [TokenTreeMeta] TokenTreeMeta # 7| getPath(): [Path] repeat # 7| getSegment(): [PathSegment] repeat # 7| getIdentifier(): [NameRef] repeat @@ -251,7 +251,7 @@ macro_expansion.rs: # 8| getStmtList(): [StmtList] StmtList # 8| getName(): [Name] inner_1 # 7| getAttr(0): [Attr] Attr -# 7| getMeta(): [Meta] Meta +# 7| getMeta(): [TokenTreeMeta] TokenTreeMeta # 7| getPath(): [Path] repeat # 7| getSegment(): [PathSegment] repeat # 7| getIdentifier(): [NameRef] repeat @@ -273,7 +273,7 @@ macro_expansion.rs: # 4| getName(): [Name] foo_new # 4| getVisibility(): [Visibility] pub # 3| getAttr(0): [Attr] Attr -# 3| getMeta(): [Meta] Meta +# 3| getMeta(): [PathMeta] PathMeta # 3| getPath(): [Path] add_one # 3| getSegment(): [PathSegment] add_one # 3| getIdentifier(): [NameRef] add_one @@ -294,7 +294,7 @@ macro_expansion.rs: # 16| getName(): [Name] bar_0_new # 16| getVisibility(): [Visibility] pub # 15| getAttr(0): [Attr] Attr -# 15| getMeta(): [Meta] Meta +# 15| getMeta(): [PathMeta] PathMeta # 15| getPath(): [Path] add_one # 15| getSegment(): [PathSegment] add_one # 15| getIdentifier(): [NameRef] add_one @@ -313,25 +313,25 @@ macro_expansion.rs: # 16| getName(): [Name] bar_1_new # 16| getVisibility(): [Visibility] pub # 15| getAttr(0): [Attr] Attr -# 15| getMeta(): [Meta] Meta +# 15| getMeta(): [PathMeta] PathMeta # 15| getPath(): [Path] add_one # 15| getSegment(): [PathSegment] add_one # 15| getIdentifier(): [NameRef] add_one # 14| getAttr(0): [Attr] Attr -# 14| getMeta(): [Meta] Meta +# 14| getMeta(): [TokenTreeMeta] TokenTreeMeta # 14| getPath(): [Path] repeat # 14| getSegment(): [PathSegment] repeat # 14| getIdentifier(): [NameRef] repeat # 14| getTokenTree(): [TokenTree] TokenTree # 15| getAttr(1): [Attr] Attr -# 15| getMeta(): [Meta] Meta +# 15| getMeta(): [PathMeta] PathMeta # 15| getPath(): [Path] add_one # 15| getSegment(): [PathSegment] add_one # 15| getIdentifier(): [NameRef] add_one # 18| getItem(3): [Function] (item with attribute macro expansion) # 18| getAttributeMacroExpansion(): [MacroItems] MacroItems # 18| getAttr(0): [Attr] Attr -# 18| getMeta(): [Meta] Meta +# 18| getMeta(): [PathMeta] PathMeta # 18| getPath(): [Path] erase # 18| getSegment(): [PathSegment] erase # 18| getIdentifier(): [NameRef] erase @@ -496,7 +496,7 @@ macro_expansion.rs: # 32| getName(): [Name] bzz_2 # 32| getVisibility(): [Visibility] pub # 31| getAttr(0): [Attr] Attr -# 31| getMeta(): [Meta] Meta +# 31| getMeta(): [TokenTreeMeta] TokenTreeMeta # 31| getPath(): [Path] repeat # 31| getSegment(): [PathSegment] repeat # 31| getIdentifier(): [NameRef] repeat @@ -631,7 +631,7 @@ macro_expansion.rs: # 63| getItem(12): [Function] fn documented # 64| getParamList(): [ParamList] ParamList # 63| getAttr(0): [Attr] Attr -# 63| getMeta(): [Meta] Meta +# 63| getMeta(): [KeyValueMeta] KeyValueMeta # 63| getExpr(): [MacroExpr] MacroExpr # 63| getMacroCall(): [MacroCall] include_str!... # 63| getPath(): [Path] include_str @@ -720,96 +720,8 @@ macro_expansion.rs: # 79| getSegment(): [PathSegment] i32 # 79| getIdentifier(): [NameRef] i32 # 83| getItem(17): [Struct] struct MyDerive -# 84| getDeriveMacroExpansion(0): [MacroItems] MacroItems -# 84| getItem(0): [Impl] impl ...::Debug for MyDerive::<...> { ... } -# 84| getAssocItemList(): [AssocItemList] AssocItemList -# 84| getAssocItem(0): [Function] fn fmt -# 83| getParamList(): [ParamList] ParamList -# 83| getParam(0): [Param] ...: ... -# 83| getTypeRepr(): [RefTypeRepr] RefTypeRepr -# 83| getTypeRepr(): [PathTypeRepr] ...::Formatter -# 83| getPath(): [Path] ...::Formatter -# 83| getQualifier(): [Path] ...::fmt -# 83| getQualifier(): [Path] $crate -# 83| getSegment(): [PathSegment] $crate -# 83| getIdentifier(): [NameRef] $crate -# 83| getSegment(): [PathSegment] fmt -# 83| getIdentifier(): [NameRef] fmt -# 83| getSegment(): [PathSegment] Formatter -# 83| getIdentifier(): [NameRef] Formatter -# 83| getPat(): [IdentPat] f -# 83| getName(): [Name] f -# 83| getSelfParam(): [SelfParam] SelfParam -# 83| getName(): [Name] self -# 84| getFunctionBody(): [BlockExpr] { ... } -# 84| getStmtList(): [StmtList] StmtList -# 84| getTailExpr(): [MatchExpr] match self { ... } -# 83| getScrutinee(): [VariableAccess] self -# 83| getPath(): [Path] self -# 83| getSegment(): [PathSegment] self -# 83| getIdentifier(): [NameRef] self -# 84| getMatchArmList(): [MatchArmList] MatchArmList -# 84| getArm(0): [MatchArm] ... => ... -# 85| getExpr(): [MethodCallExpr] ... .finish() -# 83| getArgList(): [ArgList] ArgList -# 83| getIdentifier(): [NameRef] finish -# 85| getReceiver(): [MethodCallExpr] ... .field(...) -# 85| getArgList(): [ArgList] ArgList -# 83| getArg(0): [StringLiteralExpr] "field" -# 85| getArg(1): [RefExpr] &field -# 85| getExpr(): [VariableAccess] field -# 85| getPath(): [Path] field -# 85| getSegment(): [PathSegment] field -# 85| getIdentifier(): [NameRef] field -# 83| getIdentifier(): [NameRef] field -# 83| getReceiver(): [MethodCallExpr] f.debug_struct(...) -# 83| getArgList(): [ArgList] ArgList -# 83| getArg(0): [StringLiteralExpr] "MyDerive" -# 83| getIdentifier(): [NameRef] debug_struct -# 83| getReceiver(): [VariableAccess] f -# 83| getPath(): [Path] f -# 83| getSegment(): [PathSegment] f -# 83| getIdentifier(): [NameRef] f -# 84| getPat(): [StructPat] MyDerive {...} -# 84| getPath(): [Path] MyDerive -# 84| getSegment(): [PathSegment] MyDerive -# 84| getIdentifier(): [NameRef] MyDerive -# 85| getStructPatFieldList(): [StructPatFieldList] StructPatFieldList -# 85| getField(0): [StructPatField] field: ... -# 85| getIdentifier(): [NameRef] field -# 85| getPat(): [IdentPat] field -# 85| getName(): [Name] field -# 83| getName(): [Name] fmt -# 83| getRetType(): [RetTypeRepr] RetTypeRepr -# 83| getTypeRepr(): [PathTypeRepr] ...::Result -# 83| getPath(): [Path] ...::Result -# 83| getQualifier(): [Path] ...::fmt -# 83| getQualifier(): [Path] $crate -# 83| getSegment(): [PathSegment] $crate -# 83| getIdentifier(): [NameRef] $crate -# 83| getSegment(): [PathSegment] fmt -# 83| getIdentifier(): [NameRef] fmt -# 83| getSegment(): [PathSegment] Result -# 83| getIdentifier(): [NameRef] Result -# 83| getGenericParamList(): [GenericParamList] <...> -# 84| getSelfTy(): [PathTypeRepr] MyDerive::<...> -# 84| getPath(): [Path] MyDerive::<...> -# 84| getSegment(): [PathSegment] MyDerive::<...> -# 83| getGenericArgList(): [GenericArgList] <...> -# 84| getIdentifier(): [NameRef] MyDerive -# 83| getTrait(): [PathTypeRepr] ...::Debug -# 83| getPath(): [Path] ...::Debug -# 83| getQualifier(): [Path] ...::fmt -# 83| getQualifier(): [Path] $crate -# 83| getSegment(): [PathSegment] $crate -# 83| getIdentifier(): [NameRef] $crate -# 83| getSegment(): [PathSegment] fmt -# 83| getIdentifier(): [NameRef] fmt -# 83| getSegment(): [PathSegment] Debug -# 83| getIdentifier(): [NameRef] Debug -# 83| getWhereClause(): [WhereClause] WhereClause # 83| getAttr(0): [Attr] Attr -# 83| getMeta(): [Meta] Meta +# 83| getMeta(): [TokenTreeMeta] TokenTreeMeta # 83| getPath(): [Path] derive # 83| getSegment(): [PathSegment] derive # 83| getIdentifier(): [NameRef] derive @@ -823,117 +735,8 @@ macro_expansion.rs: # 85| getSegment(): [PathSegment] usize # 85| getIdentifier(): [NameRef] usize # 88| getItem(18): [Enum] enum MyDeriveEnum -# 89| getDeriveMacroExpansion(0): [MacroItems] MacroItems -# 89| getItem(0): [Impl] impl ...::PartialEq for MyDeriveEnum::<...> { ... } -# 89| getAssocItemList(): [AssocItemList] AssocItemList -# 89| getAssocItem(0): [Function] fn eq -# 88| getParamList(): [ParamList] ParamList -# 88| getParam(0): [Param] ...: ... -# 88| getTypeRepr(): [RefTypeRepr] RefTypeRepr -# 88| getTypeRepr(): [PathTypeRepr] Self -# 88| getPath(): [Path] Self -# 88| getSegment(): [PathSegment] Self -# 88| getIdentifier(): [NameRef] Self -# 88| getPat(): [IdentPat] other -# 88| getName(): [Name] other -# 88| getSelfParam(): [SelfParam] SelfParam -# 88| getName(): [Name] self -# 89| getFunctionBody(): [BlockExpr] { ... } -# 89| getStmtList(): [StmtList] StmtList -# 89| getTailExpr(): [MatchExpr] match ... { ... } -# 88| getScrutinee(): [TupleExpr] TupleExpr -# 88| getField(0): [VariableAccess] self -# 88| getPath(): [Path] self -# 88| getSegment(): [PathSegment] self -# 88| getIdentifier(): [NameRef] self -# 88| getField(1): [VariableAccess] other -# 88| getPath(): [Path] other -# 88| getSegment(): [PathSegment] other -# 88| getIdentifier(): [NameRef] other -# 89| getMatchArmList(): [MatchArmList] MatchArmList -# 89| getArm(0): [MatchArm] ... => true -# 88| getExpr(): [BooleanLiteralExpr] true -# 89| getPat(): [TuplePat] TuplePat -# 89| getField(0): [PathPat] ...::Variant1 -# 89| getPath(): [Path] ...::Variant1 -# 89| getQualifier(): [Path] MyDeriveEnum -# 89| getSegment(): [PathSegment] MyDeriveEnum -# 89| getIdentifier(): [NameRef] MyDeriveEnum -# 90| getSegment(): [PathSegment] Variant1 -# 90| getIdentifier(): [NameRef] Variant1 -# 89| getField(1): [PathPat] ...::Variant1 -# 89| getPath(): [Path] ...::Variant1 -# 89| getQualifier(): [Path] MyDeriveEnum -# 89| getSegment(): [PathSegment] MyDeriveEnum -# 89| getIdentifier(): [NameRef] MyDeriveEnum -# 90| getSegment(): [PathSegment] Variant1 -# 90| getIdentifier(): [NameRef] Variant1 -# 89| getArm(1): [MatchArm] ... => true -# 88| getExpr(): [BooleanLiteralExpr] true -# 89| getPat(): [TuplePat] TuplePat -# 89| getField(0): [PathPat] ...::Variant2 -# 89| getPath(): [Path] ...::Variant2 -# 89| getQualifier(): [Path] MyDeriveEnum -# 89| getSegment(): [PathSegment] MyDeriveEnum -# 89| getIdentifier(): [NameRef] MyDeriveEnum -# 91| getSegment(): [PathSegment] Variant2 -# 91| getIdentifier(): [NameRef] Variant2 -# 89| getField(1): [PathPat] ...::Variant2 -# 89| getPath(): [Path] ...::Variant2 -# 89| getQualifier(): [Path] MyDeriveEnum -# 89| getSegment(): [PathSegment] MyDeriveEnum -# 89| getIdentifier(): [NameRef] MyDeriveEnum -# 91| getSegment(): [PathSegment] Variant2 -# 91| getIdentifier(): [NameRef] Variant2 -# 88| getArm(2): [MatchArm] ... => false -# 88| getExpr(): [BooleanLiteralExpr] false -# 88| getPat(): [IdentPat] _unused -# 88| getName(): [Name] _unused -# 88| getName(): [Name] eq -# 88| getRetType(): [RetTypeRepr] RetTypeRepr -# 88| getTypeRepr(): [PathTypeRepr] bool -# 88| getPath(): [Path] bool -# 88| getSegment(): [PathSegment] bool -# 88| getIdentifier(): [NameRef] bool -# 88| getGenericParamList(): [GenericParamList] <...> -# 89| getSelfTy(): [PathTypeRepr] MyDeriveEnum::<...> -# 89| getPath(): [Path] MyDeriveEnum::<...> -# 89| getSegment(): [PathSegment] MyDeriveEnum::<...> -# 88| getGenericArgList(): [GenericArgList] <...> -# 89| getIdentifier(): [NameRef] MyDeriveEnum -# 88| getTrait(): [PathTypeRepr] ...::PartialEq -# 88| getPath(): [Path] ...::PartialEq -# 88| getQualifier(): [Path] ...::cmp -# 88| getQualifier(): [Path] $crate -# 88| getSegment(): [PathSegment] $crate -# 88| getIdentifier(): [NameRef] $crate -# 88| getSegment(): [PathSegment] cmp -# 88| getIdentifier(): [NameRef] cmp -# 88| getSegment(): [PathSegment] PartialEq -# 88| getIdentifier(): [NameRef] PartialEq -# 88| getWhereClause(): [WhereClause] WhereClause -# 89| getDeriveMacroExpansion(1): [MacroItems] MacroItems -# 89| getItem(0): [Impl] impl ...::Eq for MyDeriveEnum::<...> { ... } -# 88| getAssocItemList(): [AssocItemList] AssocItemList -# 88| getGenericParamList(): [GenericParamList] <...> -# 89| getSelfTy(): [PathTypeRepr] MyDeriveEnum::<...> -# 89| getPath(): [Path] MyDeriveEnum::<...> -# 89| getSegment(): [PathSegment] MyDeriveEnum::<...> -# 88| getGenericArgList(): [GenericArgList] <...> -# 89| getIdentifier(): [NameRef] MyDeriveEnum -# 88| getTrait(): [PathTypeRepr] ...::Eq -# 88| getPath(): [Path] ...::Eq -# 88| getQualifier(): [Path] ...::cmp -# 88| getQualifier(): [Path] $crate -# 88| getSegment(): [PathSegment] $crate -# 88| getIdentifier(): [NameRef] $crate -# 88| getSegment(): [PathSegment] cmp -# 88| getIdentifier(): [NameRef] cmp -# 88| getSegment(): [PathSegment] Eq -# 88| getIdentifier(): [NameRef] Eq -# 88| getWhereClause(): [WhereClause] WhereClause # 88| getAttr(0): [Attr] Attr -# 88| getMeta(): [Meta] Meta +# 88| getMeta(): [TokenTreeMeta] TokenTreeMeta # 88| getPath(): [Path] derive # 88| getSegment(): [PathSegment] derive # 88| getIdentifier(): [NameRef] derive @@ -989,7 +792,7 @@ macro_expansion.rs: # 98| getSegment(): [PathSegment] MyTrait # 98| getIdentifier(): [NameRef] MyTrait # 98| getAttr(0): [Attr] Attr -# 98| getMeta(): [Meta] Meta +# 98| getMeta(): [TokenTreeMeta] TokenTreeMeta # 98| getPath(): [Path] derive # 98| getSegment(): [PathSegment] derive # 98| getIdentifier(): [NameRef] derive @@ -1051,7 +854,7 @@ proc_macro.rs: # 5| getPat(): [IdentPat] item # 5| getName(): [Name] item # 4| getAttr(0): [Attr] Attr -# 4| getMeta(): [Meta] Meta +# 4| getMeta(): [PathMeta] PathMeta # 4| getPath(): [Path] proc_macro_attribute # 4| getSegment(): [PathSegment] proc_macro_attribute # 4| getIdentifier(): [NameRef] proc_macro_attribute @@ -1627,7 +1430,7 @@ proc_macro.rs: # 16| getStmtList(): [StmtList] StmtList # 16| getStatement(0): [LetStmt] let ... = ... # 15| getAttr(0): [Attr] Attr -# 15| getMeta(): [Meta] Meta +# 15| getMeta(): [TokenTreeMeta] TokenTreeMeta # 15| getPath(): [Path] allow # 15| getSegment(): [PathSegment] allow # 15| getIdentifier(): [NameRef] allow @@ -2068,7 +1871,7 @@ proc_macro.rs: # 21| getPat(): [IdentPat] item # 21| getName(): [Name] item # 20| getAttr(0): [Attr] Attr -# 20| getMeta(): [Meta] Meta +# 20| getMeta(): [PathMeta] PathMeta # 20| getPath(): [Path] proc_macro_attribute # 20| getSegment(): [PathSegment] proc_macro_attribute # 20| getIdentifier(): [NameRef] proc_macro_attribute @@ -2511,7 +2314,7 @@ proc_macro.rs: # 32| getPat(): [IdentPat] _item # 32| getName(): [Name] _item # 31| getAttr(0): [Attr] Attr -# 31| getMeta(): [Meta] Meta +# 31| getMeta(): [PathMeta] PathMeta # 31| getPath(): [Path] proc_macro_attribute # 31| getSegment(): [PathSegment] proc_macro_attribute # 31| getIdentifier(): [NameRef] proc_macro_attribute @@ -2543,7 +2346,7 @@ proc_macro.rs: # 37| getPat(): [IdentPat] input # 37| getName(): [Name] input # 36| getAttr(0): [Attr] Attr -# 36| getMeta(): [Meta] Meta +# 36| getMeta(): [TokenTreeMeta] TokenTreeMeta # 36| getPath(): [Path] proc_macro_derive # 36| getSegment(): [PathSegment] proc_macro_derive # 36| getIdentifier(): [NameRef] proc_macro_derive diff --git a/rust/ql/test/extractor-tests/macro-expansion/test.expected b/rust/ql/test/extractor-tests/macro-expansion/test.expected index f47a7455e916..50632f16bfe6 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/test.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/test.expected @@ -15,23 +15,20 @@ attribute_macros | macro_expansion.rs:31:5:34:5 | (item with attribute macro expansion) | 1 | macro_expansion.rs:32:5:34:5 | fn bzz_1 | | macro_expansion.rs:31:5:34:5 | (item with attribute macro expansion) | 2 | macro_expansion.rs:32:5:34:5 | fn bzz_2 | derive_macros -| macro_expansion.rs:83:1:86:1 | struct MyDerive | 0 | 0 | macro_expansion.rs:84:8:85:9 | impl ...::Debug for MyDerive::<...> { ... } | -| macro_expansion.rs:88:1:92:1 | enum MyDeriveEnum | 0 | 0 | macro_expansion.rs:89:6:91:12 | impl ...::PartialEq for MyDeriveEnum::<...> { ... } | -| macro_expansion.rs:88:1:92:1 | enum MyDeriveEnum | 1 | 0 | macro_expansion.rs:89:6:89:17 | impl ...::Eq for MyDeriveEnum::<...> { ... } | | macro_expansion.rs:98:1:102:1 | union MyDeriveUnion | 0 | 0 | macro_expansion.rs:99:7:99:19 | Const | | macro_expansion.rs:98:1:102:1 | union MyDeriveUnion | 0 | 1 | macro_expansion.rs:99:7:99:19 | impl MyTrait for MyDeriveUnion { ... } | macro_calls | macro_expansion.rs:5:9:5:35 | concat!... | macro_expansion.rs:5:17:5:34 | "Hello world!" | | macro_expansion.rs:5:9:5:35 | concat!... | macro_expansion.rs:5:17:5:34 | "Hello world!" | -| macro_expansion.rs:31:5:31:16 | ...::format_args_nl!... | macro_expansion.rs:31:5:31:16 | FormatArgsExpr | -| macro_expansion.rs:31:5:31:16 | ...::format_args_nl!... | macro_expansion.rs:31:5:31:16 | FormatArgsExpr | -| macro_expansion.rs:31:5:31:16 | ...::format_args_nl!... | macro_expansion.rs:31:5:31:16 | FormatArgsExpr | -| macro_expansion.rs:31:5:31:16 | println!... | macro_expansion.rs:31:5:31:16 | { ... } | -| macro_expansion.rs:31:5:31:16 | println!... | macro_expansion.rs:31:5:31:16 | { ... } | -| macro_expansion.rs:31:5:31:16 | println!... | macro_expansion.rs:31:5:31:16 | { ... } | -| macro_expansion.rs:33:9:33:16 | hello!... | macro_expansion.rs:31:5:31:16 | { ... } | -| macro_expansion.rs:33:9:33:16 | hello!... | macro_expansion.rs:31:5:31:16 | { ... } | -| macro_expansion.rs:33:9:33:16 | hello!... | macro_expansion.rs:31:5:31:16 | { ... } | +| macro_expansion.rs:31:7:31:15 | ...::format_args_nl!... | macro_expansion.rs:31:7:31:15 | FormatArgsExpr | +| macro_expansion.rs:31:7:31:15 | ...::format_args_nl!... | macro_expansion.rs:31:7:31:15 | FormatArgsExpr | +| macro_expansion.rs:31:7:31:15 | ...::format_args_nl!... | macro_expansion.rs:31:7:31:15 | FormatArgsExpr | +| macro_expansion.rs:31:7:31:15 | println!... | macro_expansion.rs:31:7:31:15 | { ... } | +| macro_expansion.rs:31:7:31:15 | println!... | macro_expansion.rs:31:7:31:15 | { ... } | +| macro_expansion.rs:31:7:31:15 | println!... | macro_expansion.rs:31:7:31:15 | { ... } | +| macro_expansion.rs:33:9:33:16 | hello!... | macro_expansion.rs:31:7:31:15 | { ... } | +| macro_expansion.rs:33:9:33:16 | hello!... | macro_expansion.rs:31:7:31:15 | { ... } | +| macro_expansion.rs:33:9:33:16 | hello!... | macro_expansion.rs:31:7:31:15 | { ... } | | macro_expansion.rs:44:5:44:13 | def_x!... | macro_expansion.rs:44:5:44:10 | MacroItems | | macro_expansion.rs:53:9:53:25 | concat!... | macro_expansion.rs:53:17:53:24 | "xy" | | macro_expansion.rs:55:9:58:5 | my_macro!... | macro_expansion.rs:56:9:57:13 | MacroExpr | diff --git a/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected b/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected index aa0fc42f81d8..78b3d8cc786e 100644 --- a/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected +++ b/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected @@ -50,7 +50,7 @@ proc_macro.rs: # 5| getSegment(): [PathSegment] TokenStream # 5| getIdentifier(): [NameRef] TokenStream # 4| getAttr(0): [Attr] Attr -# 4| getMeta(): [Meta] Meta +# 4| getMeta(): [PathMeta] PathMeta # 4| getPath(): [Path] proc_macro_attribute # 4| getSegment(): [PathSegment] proc_macro_attribute # 4| getIdentifier(): [NameRef] proc_macro_attribute diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected index d3c65fac62ff..7b8a4b97e60a 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected @@ -39,7 +39,7 @@ edges | test.rs:107:22:107:25 | path | test.rs:107:22:107:38 | path.into_inner() | provenance | MaD:11 | | test.rs:107:22:107:38 | path.into_inner() | test.rs:107:13:107:18 | TuplePat | provenance | | | test.rs:115:33:115:65 | ...: ...::Query::<...> | test.rs:116:14:116:14 | a | provenance | | -| test.rs:121:5:121:20 | to | test.rs:122:33:122:55 | ...: ...::Path::<...> | provenance | Src:MaD:4 | +| test.rs:121:7:121:19 | to | test.rs:122:33:122:55 | ...: ...::Path::<...> | provenance | Src:MaD:4 | | test.rs:122:33:122:55 | ...: ...::Path::<...> | test.rs:123:17:123:20 | path | provenance | | | test.rs:123:13:123:13 | a | test.rs:124:14:124:14 | a | provenance | | | test.rs:123:17:123:20 | path | test.rs:123:17:123:33 | path.into_inner() | provenance | MaD:11 | @@ -108,7 +108,7 @@ nodes | test.rs:110:14:110:14 | b | semmle.label | b | | test.rs:115:33:115:65 | ...: ...::Query::<...> | semmle.label | ...: ...::Query::<...> | | test.rs:116:14:116:14 | a | semmle.label | a | -| test.rs:121:5:121:20 | to | semmle.label | to | +| test.rs:121:7:121:19 | to | semmle.label | to | | test.rs:122:33:122:55 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | | test.rs:123:13:123:13 | a | semmle.label | a | | test.rs:123:17:123:20 | path | semmle.label | path | @@ -172,7 +172,7 @@ testFailures | test.rs:109:14:109:14 | a | test.rs:132:45:132:46 | to | test.rs:109:14:109:14 | a | $@ | test.rs:132:45:132:46 | to | to | | test.rs:110:14:110:14 | b | test.rs:132:45:132:46 | to | test.rs:110:14:110:14 | b | $@ | test.rs:132:45:132:46 | to | to | | test.rs:116:14:116:14 | a | test.rs:133:41:133:42 | to | test.rs:116:14:116:14 | a | $@ | test.rs:133:41:133:42 | to | to | -| test.rs:124:14:124:14 | a | test.rs:121:5:121:20 | to | test.rs:124:14:124:14 | a | $@ | test.rs:121:5:121:20 | to | to | +| test.rs:124:14:124:14 | a | test.rs:121:7:121:19 | to | test.rs:124:14:124:14 | a | $@ | test.rs:121:7:121:19 | to | to | | test.rs:148:14:148:23 | a.as_str() | test.rs:200:30:200:32 | get | test.rs:148:14:148:23 | a.as_str() | $@ | test.rs:200:30:200:32 | get | get | | test.rs:149:14:149:25 | a.as_bytes() | test.rs:200:30:200:32 | get | test.rs:149:14:149:25 | a.as_bytes() | $@ | test.rs:200:30:200:32 | get | get | | test.rs:150:14:150:14 | a | test.rs:200:30:200:32 | get | test.rs:150:14:150:14 | a | $@ | test.rs:200:30:200:32 | get | get | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected index 146406e7192c..6ff9e7cfa031 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected @@ -3,14 +3,14 @@ | test.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:5:121:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:5:121:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:5:121:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:5:121:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:5:121:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:5:121:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:5:121:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:5:121:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:131:41:131:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:131:41:131:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:131:41:131:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | diff --git a/rust/ql/test/library-tests/definitions/Definitions.expected b/rust/ql/test/library-tests/definitions/Definitions.expected index 23ad4e291de3..2ab25620188e 100644 --- a/rust/ql/test/library-tests/definitions/Definitions.expected +++ b/rust/ql/test/library-tests/definitions/Definitions.expected @@ -10,9 +10,9 @@ | main.rs:20:13:20:14 | S2 | main.rs:16:5:16:24 | struct S2 | path | | main.rs:20:16:20:16 | x | main.rs:19:20:19:20 | x | local variable | | main.rs:29:5:29:11 | println | {EXTERNAL LOCATION} | MacroRules | path | -| main.rs:29:22:29:26 | value | main.rs:29:50:29:54 | value | format argument | -| main.rs:29:29:29:33 | width | main.rs:26:9:26:13 | width | local variable | -| main.rs:29:36:29:44 | precision | main.rs:27:9:27:17 | precision | local variable | +| main.rs:29:22:29:26 | value | main.rs:29:50:29:56 | FormatArgsArgName | format argument | +| main.rs:29:29:29:33 | width | main.rs:29:50:29:56 | FormatArgsArgName | format argument | +| main.rs:29:36:29:44 | precision | main.rs:29:50:29:56 | FormatArgsArgName | format argument | | main.rs:30:5:30:11 | println | {EXTERNAL LOCATION} | MacroRules | path | | main.rs:30:22:30:22 | 0 | main.rs:30:34:30:38 | value | format argument | | main.rs:30:25:30:25 | 1 | main.rs:30:41:30:45 | width | format argument | diff --git a/rust/ql/test/query-tests/security/CWE-079/actix/XSS.expected b/rust/ql/test/query-tests/security/CWE-079/actix/XSS.expected index 9667a9216e6f..c388b6d58f09 100644 --- a/rust/ql/test/query-tests/security/CWE-079/actix/XSS.expected +++ b/rust/ql/test/query-tests/security/CWE-079/actix/XSS.expected @@ -1,7 +1,7 @@ #select -| main.rs:25:5:25:13 | ...::new | main.rs:8:1:8:18 | to | main.rs:25:5:25:13 | ...::new | Cross-site scripting vulnerability due to a $@. | main.rs:8:1:8:18 | to | user-provided value | +| main.rs:25:5:25:13 | ...::new | main.rs:8:3:8:17 | to | main.rs:25:5:25:13 | ...::new | Cross-site scripting vulnerability due to a $@. | main.rs:8:3:8:17 | to | user-provided value | edges -| main.rs:8:1:8:18 | to | main.rs:9:29:9:51 | ...: ...::Path::<...> | provenance | Src:MaD:2 | +| main.rs:8:3:8:17 | to | main.rs:9:29:9:51 | ...: ...::Path::<...> | provenance | Src:MaD:2 | | main.rs:9:29:9:51 | ...: ...::Path::<...> | main.rs:10:22:10:25 | path | provenance | | | main.rs:10:9:10:18 | user_input | main.rs:13:9:22:18 | MacroExpr | provenance | | | main.rs:10:22:10:25 | path | main.rs:10:22:10:38 | path.into_inner() | provenance | MaD:3 | @@ -19,7 +19,7 @@ models | 4 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | | 5 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes -| main.rs:8:1:8:18 | to | semmle.label | to | +| main.rs:8:3:8:17 | to | semmle.label | to | | main.rs:9:29:9:51 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | | main.rs:10:9:10:18 | user_input | semmle.label | user_input | | main.rs:10:22:10:25 | path | semmle.label | path | diff --git a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected index 7decd880f595..15f6280fa524 100644 --- a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected +++ b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected @@ -23,325 +23,111 @@ | main.rs:49:41:49:45 | build | main.rs:49:5:49:25 | ...::build(...) | main.rs:49:41:49:45 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:50:56:50:60 | build | main.rs:50:5:50:40 | ...::build(...) | main.rs:50:56:50:60 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:53:65:53:69 | build | main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:65:53:69 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:59:9:59:11 | add | main.rs:58:17:58:27 | ...::new | main.rs:59:9:59:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:60:9:60:20 | add_original | main.rs:58:17:58:27 | ...::new | main.rs:60:9:60:20 | add_original | Cookie attribute 'Secure' is not set to true. | -| main.rs:64:9:64:11 | add | main.rs:63:5:63:5 | [SSA] a | main.rs:64:9:64:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:64:9:64:11 | add | main.rs:63:5:63:5 | a | main.rs:64:9:64:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:69:16:69:18 | add | main.rs:68:17:68:29 | ...::named | main.rs:69:16:69:18 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:70:16:70:27 | add_original | main.rs:63:5:63:5 | [SSA] a | main.rs:70:16:70:27 | add_original | Cookie attribute 'Secure' is not set to true. | -| main.rs:70:16:70:27 | add_original | main.rs:63:5:63:5 | a | main.rs:70:16:70:27 | add_original | Cookie attribute 'Secure' is not set to true. | -| main.rs:72:16:72:18 | add | main.rs:71:5:71:5 | [SSA] b | main.rs:72:16:72:18 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:72:16:72:18 | add | main.rs:71:5:71:5 | b | main.rs:72:16:72:18 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:78:17:78:19 | add | main.rs:77:17:77:28 | ...::from | main.rs:78:17:78:19 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:79:17:79:28 | add_original | main.rs:63:5:63:5 | [SSA] a | main.rs:79:17:79:28 | add_original | Cookie attribute 'Secure' is not set to true. | -| main.rs:79:17:79:28 | add_original | main.rs:63:5:63:5 | a | main.rs:79:17:79:28 | add_original | Cookie attribute 'Secure' is not set to true. | -| main.rs:83:17:83:19 | add | main.rs:77:17:77:28 | ...::from | main.rs:83:17:83:19 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:88:9:88:11 | add | main.rs:87:17:87:28 | ...::from | main.rs:88:9:88:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:94:9:94:11 | add | main.rs:87:17:87:28 | ...::from | main.rs:94:9:94:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:123:13:123:18 | insert | main.rs:122:13:122:41 | ...::new | main.rs:123:13:123:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:131:13:131:18 | insert | main.rs:130:13:130:13 | b | main.rs:131:13:131:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:147:13:147:18 | insert | main.rs:146:13:146:13 | f | main.rs:147:13:147:18 | insert | Cookie attribute 'Secure' is not set to true. | | main.rs:152:13:152:18 | insert | main.rs:151:13:151:42 | ...::from | main.rs:152:13:152:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:156:13:156:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:156:13:156:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:157:13:157:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:157:13:157:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:158:13:158:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:158:13:158:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:159:13:159:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:159:13:159:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:160:13:160:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:160:13:160:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:161:13:161:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:161:13:161:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:162:13:162:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:162:13:162:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:163:13:163:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:163:13:163:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:164:13:164:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:164:13:164:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:165:13:165:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:165:13:165:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:166:13:166:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:166:13:166:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:167:13:167:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:167:13:167:18 | insert | Cookie attribute 'Secure' is not set to true. | | main.rs:173:61:173:65 | build | main.rs:173:22:173:34 | ...::build | main.rs:173:61:173:65 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:197:55:197:60 | finish | main.rs:197:5:197:39 | ...::build(...) | main.rs:197:55:197:60 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:198:65:198:70 | finish | main.rs:198:5:198:39 | ...::build(...) | main.rs:198:65:198:70 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:202:9:202:11 | add | main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:202:9:202:11 | add | main.rs:201:5:201:11 | cookie1 | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:212:41:212:46 | finish | main.rs:212:5:212:22 | ...::build | main.rs:212:41:212:46 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:215:9:215:11 | add | main.rs:214:19:214:34 | ...::new | main.rs:215:9:215:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:229:9:229:11 | add | main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:9:229:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:229:9:229:11 | add | main.rs:228:5:228:11 | cookie1 | main.rs:229:9:229:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:242:9:242:41 | ...::new | main.rs:241:29:241:62 | ...::new(...) | main.rs:242:9:242:41 | ...::new | Cookie attribute 'Secure' is not set to true. | | main.rs:245:9:245:41 | ...::new | main.rs:244:30:244:63 | ...::new(...) | main.rs:245:9:245:41 | ...::new | Cookie attribute 'Secure' is not set to true. | | main.rs:259:59:259:64 | finish | main.rs:259:5:259:43 | ...::build(...) | main.rs:259:59:259:64 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:260:69:260:74 | finish | main.rs:260:5:260:43 | ...::build(...) | main.rs:260:69:260:74 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:264:9:264:11 | add | main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:264:9:264:11 | add | main.rs:263:5:263:11 | cookie1 | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:274:45:274:50 | finish | main.rs:274:5:274:26 | ...::build | main.rs:274:45:274:50 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:277:9:277:11 | add | main.rs:276:19:276:38 | ...::new | main.rs:277:9:277:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | edges -| main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:35 | +| main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:9 | | main.rs:8:19:8:64 | ... .secure(...) | main.rs:8:66:8:70 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:16:19:16:31 | ...::build | main.rs:16:19:16:50 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:16:19:16:31 | ...::build | main.rs:16:19:16:50 | ...::build(...) | provenance | Src:MaD:6 MaD:6 | | main.rs:16:19:16:50 | ...::build(...) | main.rs:16:52:16:56 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:20:5:20:36 | ...::build(...) | main.rs:20:5:20:54 | ... .secure(...) | provenance | MaD:35 | +| main.rs:20:5:20:36 | ...::build(...) | main.rs:20:5:20:54 | ... .secure(...) | provenance | MaD:9 | | main.rs:20:5:20:54 | ... .secure(...) | main.rs:20:56:20:60 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:21:5:21:36 | ...::build(...) | main.rs:21:5:21:55 | ... .secure(...) | provenance | MaD:35 | +| main.rs:21:5:21:36 | ...::build(...) | main.rs:21:5:21:55 | ... .secure(...) | provenance | MaD:9 | | main.rs:21:5:21:55 | ... .secure(...) | main.rs:21:57:21:61 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:25:5:25:36 | ...::build(...) | main.rs:25:5:25:52 | ... .secure(...) | provenance | MaD:35 | +| main.rs:25:5:25:36 | ...::build(...) | main.rs:25:5:25:52 | ... .secure(...) | provenance | MaD:9 | | main.rs:25:5:25:52 | ... .secure(...) | main.rs:25:54:25:58 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:26:5:26:36 | ...::build(...) | main.rs:26:5:26:50 | ... .secure(...) | provenance | MaD:35 | +| main.rs:26:5:26:36 | ...::build(...) | main.rs:26:5:26:50 | ... .secure(...) | provenance | MaD:9 | | main.rs:26:5:26:50 | ... .secure(...) | main.rs:26:52:26:56 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:27:5:27:36 | ...::build(...) | main.rs:27:5:27:51 | ... .secure(...) | provenance | MaD:35 | +| main.rs:27:5:27:36 | ...::build(...) | main.rs:27:5:27:51 | ... .secure(...) | provenance | MaD:9 | | main.rs:27:5:27:51 | ... .secure(...) | main.rs:27:53:27:57 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:28:5:28:36 | ...::build(...) | main.rs:28:5:28:60 | ... .secure(...) | provenance | MaD:35 | +| main.rs:28:5:28:36 | ...::build(...) | main.rs:28:5:28:60 | ... .secure(...) | provenance | MaD:9 | | main.rs:28:5:28:60 | ... .secure(...) | main.rs:28:62:28:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:29:5:29:36 | ...::build(...) | main.rs:29:5:29:60 | ... .secure(...) | provenance | MaD:35 | +| main.rs:29:5:29:36 | ...::build(...) | main.rs:29:5:29:60 | ... .secure(...) | provenance | MaD:9 | | main.rs:29:5:29:60 | ... .secure(...) | main.rs:29:62:29:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:33:9:33:40 | ...::build(...) | main.rs:33:9:33:58 | ... .secure(...) | provenance | MaD:35 | +| main.rs:33:9:33:40 | ...::build(...) | main.rs:33:9:33:58 | ... .secure(...) | provenance | MaD:9 | | main.rs:33:9:33:58 | ... .secure(...) | main.rs:33:60:33:64 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:35:9:35:40 | ...::build(...) | main.rs:35:9:35:58 | ... .secure(...) | provenance | MaD:35 | +| main.rs:35:9:35:40 | ...::build(...) | main.rs:35:9:35:58 | ... .secure(...) | provenance | MaD:9 | | main.rs:35:9:35:58 | ... .secure(...) | main.rs:35:60:35:64 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:39:5:39:39 | ...::new(...) | main.rs:39:5:39:53 | ... .secure(...) | provenance | MaD:35 | +| main.rs:39:5:39:39 | ...::new(...) | main.rs:39:5:39:53 | ... .secure(...) | provenance | MaD:9 | | main.rs:39:5:39:53 | ... .secure(...) | main.rs:39:55:39:59 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:5:40:64 | ... .secure(...) | provenance | MaD:35 | +| main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:5:40:64 | ... .secure(...) | provenance | MaD:9 | | main.rs:40:5:40:64 | ... .secure(...) | main.rs:40:66:40:70 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:5:41:93 | ... .secure(...) | provenance | MaD:35 | +| main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:5:41:93 | ... .secure(...) | provenance | MaD:9 | | main.rs:41:5:41:93 | ... .secure(...) | main.rs:41:95:41:99 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:5:42:72 | ... .secure(...) | provenance | MaD:35 | +| main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:5:42:72 | ... .secure(...) | provenance | MaD:9 | | main.rs:42:5:42:72 | ... .secure(...) | main.rs:42:74:42:78 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:43:5:43:46 | ... .path(...) | main.rs:43:5:43:60 | ... .secure(...) | provenance | MaD:35 | +| main.rs:43:5:43:46 | ... .path(...) | main.rs:43:5:43:60 | ... .secure(...) | provenance | MaD:9 | | main.rs:43:5:43:60 | ... .secure(...) | main.rs:43:62:43:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:5:44:66 | ... .secure(...) | provenance | MaD:35 | +| main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:5:44:66 | ... .secure(...) | provenance | MaD:9 | | main.rs:44:5:44:66 | ... .secure(...) | main.rs:44:68:44:72 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:5:45:86 | ... .secure(...) | provenance | MaD:35 | +| main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:5:45:86 | ... .secure(...) | provenance | MaD:9 | | main.rs:45:5:45:86 | ... .secure(...) | main.rs:45:88:45:92 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:46:5:46:48 | ... .permanent() | main.rs:46:5:46:62 | ... .secure(...) | provenance | MaD:35 | +| main.rs:46:5:46:48 | ... .permanent() | main.rs:46:5:46:62 | ... .secure(...) | provenance | MaD:9 | | main.rs:46:5:46:62 | ... .secure(...) | main.rs:46:64:46:68 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:47:5:47:46 | ... .removal() | main.rs:47:5:47:60 | ... .secure(...) | provenance | MaD:35 | +| main.rs:47:5:47:46 | ... .removal() | main.rs:47:5:47:60 | ... .secure(...) | provenance | MaD:9 | | main.rs:47:5:47:60 | ... .secure(...) | main.rs:47:62:47:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:48:5:48:36 | ...::build(...) | main.rs:48:5:48:50 | ... .secure(...) | provenance | MaD:35 | +| main.rs:48:5:48:36 | ...::build(...) | main.rs:48:5:48:50 | ... .secure(...) | provenance | MaD:9 | | main.rs:48:5:48:50 | ... .secure(...) | main.rs:48:52:48:57 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:49:5:49:25 | ...::build(...) | main.rs:49:5:49:39 | ... .secure(...) | provenance | MaD:35 | +| main.rs:49:5:49:25 | ...::build(...) | main.rs:49:5:49:39 | ... .secure(...) | provenance | MaD:9 | | main.rs:49:5:49:39 | ... .secure(...) | main.rs:49:41:49:45 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:50:5:50:40 | ...::build(...) | main.rs:50:5:50:54 | ... .secure(...) | provenance | MaD:35 | +| main.rs:50:5:50:40 | ...::build(...) | main.rs:50:5:50:54 | ... .secure(...) | provenance | MaD:9 | | main.rs:50:5:50:54 | ... .secure(...) | main.rs:50:56:50:60 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:35 | +| main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:9 | | main.rs:53:5:53:63 | ... .secure(...) | main.rs:53:65:53:69 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:58:9:58:13 | mut a | main.rs:59:13:59:13 | a | provenance | | -| main.rs:58:9:58:13 | mut a | main.rs:60:22:60:22 | a | provenance | | -| main.rs:58:17:58:27 | ...::new | main.rs:58:17:58:44 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | -| main.rs:58:17:58:44 | ...::new(...) | main.rs:58:9:58:13 | mut a | provenance | | -| main.rs:59:13:59:13 | a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:18 | -| main.rs:59:13:59:21 | a.clone() | main.rs:59:9:59:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:60:22:60:22 | a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:18 | -| main.rs:60:22:60:30 | a.clone() | main.rs:60:9:60:20 | add_original | provenance | MaD:5 Sink:MaD:5 | -| main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:13 | a | provenance | | -| main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:29 | a | provenance | | -| main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:30 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:64:13:64:13 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:70:29:70:29 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:79:30:79:30 | a | provenance | | -| main.rs:64:13:64:13 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:18 | -| main.rs:64:13:64:21 | a.clone() | main.rs:64:9:64:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:68:9:68:13 | mut b | main.rs:69:20:69:20 | b | provenance | | -| main.rs:68:17:68:29 | ...::named | main.rs:68:17:68:37 | ...::named(...) | provenance | Src:MaD:16 MaD:16 | -| main.rs:68:17:68:37 | ...::named(...) | main.rs:68:9:68:13 | mut b | provenance | | -| main.rs:69:20:69:20 | b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:18 | -| main.rs:69:20:69:28 | b.clone() | main.rs:69:16:69:18 | add | provenance | MaD:8 Sink:MaD:8 | -| main.rs:70:29:70:29 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:18 | -| main.rs:70:29:70:37 | a.clone() | main.rs:70:16:70:27 | add_original | provenance | MaD:9 Sink:MaD:9 | -| main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:20 | b | provenance | | -| main.rs:71:5:71:5 | b | main.rs:72:20:72:20 | b | provenance | | -| main.rs:72:20:72:20 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:18 | -| main.rs:72:20:72:28 | b.clone() | main.rs:72:16:72:18 | add | provenance | MaD:8 Sink:MaD:8 | -| main.rs:77:9:77:13 | mut c | main.rs:78:21:78:21 | c | provenance | | -| main.rs:77:9:77:13 | mut c | main.rs:83:21:83:21 | c | provenance | | -| main.rs:77:17:77:28 | ...::from | main.rs:77:17:77:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 | -| main.rs:77:17:77:36 | ...::from(...) | main.rs:77:9:77:13 | mut c | provenance | | -| main.rs:78:21:78:21 | c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:18 | -| main.rs:78:21:78:29 | c.clone() | main.rs:78:17:78:19 | add | provenance | MaD:6 Sink:MaD:6 | -| main.rs:79:30:79:30 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:18 | -| main.rs:79:30:79:38 | a.clone() | main.rs:79:17:79:28 | add_original | provenance | MaD:7 Sink:MaD:7 | -| main.rs:83:21:83:21 | c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:18 | -| main.rs:83:21:83:29 | c.clone() | main.rs:83:17:83:19 | add | provenance | MaD:6 Sink:MaD:6 | -| main.rs:87:9:87:13 | mut d | main.rs:88:13:88:13 | d | provenance | | -| main.rs:87:9:87:13 | mut d | main.rs:94:13:94:13 | d | provenance | | -| main.rs:87:17:87:28 | ...::from | main.rs:87:17:87:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 | -| main.rs:87:17:87:36 | ...::from(...) | main.rs:87:9:87:13 | mut d | provenance | | -| main.rs:88:13:88:13 | d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:18 | -| main.rs:88:13:88:21 | d.clone() | main.rs:88:9:88:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:94:13:94:13 | d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:18 | -| main.rs:94:13:94:21 | d.clone() | main.rs:94:9:94:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:114:5:114:17 | ...::build | main.rs:114:5:114:36 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:33 | +| main.rs:114:5:114:17 | ...::build | main.rs:114:5:114:36 | ...::build(...) | provenance | Src:MaD:6 MaD:6 | +| main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:7 | | main.rs:114:5:114:54 | ... .partitioned(...) | main.rs:114:56:114:60 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:122:9:122:9 | a | main.rs:123:20:123:20 | a | provenance | | -| main.rs:122:13:122:41 | ...::new | main.rs:122:13:122:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:122:13:122:58 | ...::new(...) | main.rs:122:9:122:9 | a | provenance | | -| main.rs:123:20:123:20 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:18 | -| main.rs:123:20:123:28 | a.clone() | main.rs:123:13:123:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:130:9:130:9 | c | main.rs:131:20:131:20 | c | provenance | | -| main.rs:130:9:130:9 | c | main.rs:134:13:134:13 | c | provenance | | -| main.rs:130:13:130:13 | b | main.rs:130:13:130:31 | b.set_secure(...) | provenance | MaD:28 | -| main.rs:130:13:130:31 | b.set_secure(...) | main.rs:130:9:130:9 | c | provenance | | -| main.rs:131:20:131:20 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:18 | -| main.rs:131:20:131:28 | c.clone() | main.rs:131:13:131:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:134:9:134:9 | d | main.rs:135:20:135:20 | d | provenance | | -| main.rs:134:13:134:13 | c | main.rs:134:13:134:35 | c.set_partitioned(...) | provenance | MaD:25 | -| main.rs:134:13:134:35 | c.set_partitioned(...) | main.rs:134:9:134:9 | d | provenance | | -| main.rs:135:20:135:20 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:18 | -| main.rs:135:20:135:28 | d.clone() | main.rs:135:13:135:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:146:9:146:9 | g | main.rs:147:20:147:20 | g | provenance | | -| main.rs:146:13:146:13 | f | main.rs:146:13:146:31 | f.set_secure(...) | provenance | MaD:28 | -| main.rs:146:13:146:31 | f.set_secure(...) | main.rs:146:9:146:9 | g | provenance | | -| main.rs:147:20:147:20 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:18 | -| main.rs:147:20:147:28 | g.clone() | main.rs:147:13:147:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:151:9:151:9 | h | main.rs:152:20:152:20 | h | provenance | | -| main.rs:151:13:151:42 | ...::from | main.rs:151:13:151:61 | ...::from(...) | provenance | Src:MaD:12 MaD:12 | +| main.rs:151:13:151:42 | ...::from | main.rs:151:13:151:61 | ...::from(...) | provenance | Src:MaD:5 MaD:5 | | main.rs:151:13:151:61 | ...::from(...) | main.rs:151:9:151:9 | h | provenance | | | main.rs:152:20:152:20 | h | main.rs:152:13:152:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:155:9:155:9 | i | main.rs:156:20:156:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:157:20:157:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:158:20:158:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:159:20:159:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:160:20:160:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:161:20:161:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:162:20:162:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:163:20:163:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:164:20:164:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:165:20:165:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:166:20:166:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:167:20:167:20 | i | provenance | | -| main.rs:155:13:155:41 | ...::new | main.rs:155:13:155:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:155:13:155:58 | ...::new(...) | main.rs:155:9:155:9 | i | provenance | | -| main.rs:156:20:156:20 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:18 | -| main.rs:156:20:156:28 | i.clone() | main.rs:156:20:156:46 | ... .set_name(...) | provenance | MaD:24 | -| main.rs:156:20:156:46 | ... .set_name(...) | main.rs:156:13:156:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:157:20:157:20 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:18 | -| main.rs:157:20:157:28 | i.clone() | main.rs:157:20:157:48 | ... .set_value(...) | provenance | MaD:29 | -| main.rs:157:20:157:48 | ... .set_value(...) | main.rs:157:13:157:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:158:20:158:20 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:18 | -| main.rs:158:20:158:28 | i.clone() | main.rs:158:20:158:48 | ... .set_http_only(...) | provenance | MaD:22 | -| main.rs:158:20:158:48 | ... .set_http_only(...) | main.rs:158:13:158:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:159:20:159:20 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:18 | -| main.rs:159:20:159:28 | i.clone() | main.rs:159:20:159:70 | ... .set_same_site(...) | provenance | MaD:27 | -| main.rs:159:20:159:70 | ... .set_same_site(...) | main.rs:159:13:159:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:160:20:160:20 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:18 | -| main.rs:160:20:160:28 | i.clone() | main.rs:160:20:160:46 | ... .set_max_age(...) | provenance | MaD:23 | -| main.rs:160:20:160:46 | ... .set_max_age(...) | main.rs:160:13:160:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:161:20:161:20 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:18 | -| main.rs:161:20:161:28 | i.clone() | main.rs:161:20:161:42 | ... .set_path(...) | provenance | MaD:26 | -| main.rs:161:20:161:42 | ... .set_path(...) | main.rs:161:13:161:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:162:20:162:20 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:18 | -| main.rs:162:20:162:28 | i.clone() | main.rs:162:20:162:41 | ... .unset_path() | provenance | MaD:32 | -| main.rs:162:20:162:41 | ... .unset_path() | main.rs:162:13:162:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:163:20:163:20 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:18 | -| main.rs:163:20:163:28 | i.clone() | main.rs:163:20:163:54 | ... .set_domain(...) | provenance | MaD:20 | -| main.rs:163:20:163:54 | ... .set_domain(...) | main.rs:163:13:163:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:164:20:164:20 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:18 | -| main.rs:164:20:164:28 | i.clone() | main.rs:164:20:164:43 | ... .unset_domain() | provenance | MaD:30 | -| main.rs:164:20:164:43 | ... .unset_domain() | main.rs:164:13:164:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:165:20:165:20 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:18 | -| main.rs:165:20:165:28 | i.clone() | main.rs:165:20:165:46 | ... .set_expires(...) | provenance | MaD:21 | -| main.rs:165:20:165:46 | ... .set_expires(...) | main.rs:165:13:165:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:166:20:166:20 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:18 | -| main.rs:166:20:166:28 | i.clone() | main.rs:166:20:166:44 | ... .unset_expires() | provenance | MaD:31 | -| main.rs:166:20:166:44 | ... .unset_expires() | main.rs:166:13:166:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:167:20:167:20 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:18 | -| main.rs:167:20:167:28 | i.clone() | main.rs:167:20:167:45 | ... .make_permanent() | provenance | MaD:19 | -| main.rs:167:20:167:45 | ... .make_permanent() | main.rs:167:13:167:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:173:22:173:34 | ...::build | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:173:22:173:34 | ...::build | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:6 MaD:6 | | main.rs:173:22:173:59 | ...::build(...) | main.rs:173:61:173:65 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:197:5:197:39 | ...::build(...) | main.rs:197:5:197:53 | ... .secure(...) | provenance | MaD:35 | +| main.rs:197:5:197:39 | ...::build(...) | main.rs:197:5:197:53 | ... .secure(...) | provenance | MaD:9 | | main.rs:197:5:197:53 | ... .secure(...) | main.rs:197:55:197:60 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:198:5:198:39 | ...::build(...) | main.rs:198:5:198:53 | ... .secure(...) | provenance | MaD:35 | -| main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:34 | +| main.rs:198:5:198:39 | ...::build(...) | main.rs:198:5:198:53 | ... .secure(...) | provenance | MaD:9 | +| main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:8 | | main.rs:198:5:198:63 | ... .path(...) | main.rs:198:65:198:70 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | -| main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | -| main.rs:202:13:202:19 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:18 | -| main.rs:202:13:202:27 | cookie1.clone() | main.rs:202:9:202:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:212:5:212:22 | ...::build | main.rs:212:5:212:39 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:212:5:212:22 | ...::build | main.rs:212:5:212:39 | ...::build(...) | provenance | Src:MaD:6 MaD:6 | | main.rs:212:5:212:39 | ...::build(...) | main.rs:212:41:212:46 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:19 | cookie3 | provenance | | -| main.rs:214:19:214:34 | ...::new | main.rs:214:19:214:51 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | -| main.rs:214:19:214:51 | ...::new(...) | main.rs:214:9:214:15 | cookie3 | provenance | | -| main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:18 | -| main.rs:215:13:215:27 | cookie3.clone() | main.rs:215:9:215:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | -| main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | -| main.rs:219:13:219:19 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:18 | -| main.rs:219:13:219:27 | cookie2.clone() | main.rs:219:9:219:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | | -| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | | -| main.rs:229:13:229:19 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:18 | -| main.rs:229:13:229:27 | cookie1.clone() | main.rs:229:9:229:11 | add | provenance | MaD:11 Sink:MaD:11 | | main.rs:241:9:241:25 | cookie_config_bad | main.rs:242:43:242:59 | cookie_config_bad | provenance | | -| main.rs:241:29:241:62 | ...::new(...) | main.rs:241:29:241:76 | ... .secure(...) | provenance | MaD:38 | +| main.rs:241:29:241:62 | ...::new(...) | main.rs:241:29:241:76 | ... .secure(...) | provenance | MaD:12 | | main.rs:241:29:241:76 | ... .secure(...) | main.rs:241:9:241:25 | cookie_config_bad | provenance | | -| main.rs:242:43:242:59 | cookie_config_bad | main.rs:242:9:242:41 | ...::new | provenance | MaD:10 Sink:MaD:10 | +| main.rs:242:43:242:59 | cookie_config_bad | main.rs:242:9:242:41 | ...::new | provenance | MaD:4 Sink:MaD:4 | | main.rs:244:9:244:26 | cookie_config_bad2 | main.rs:245:43:245:60 | cookie_config_bad2 | provenance | | -| main.rs:244:30:244:63 | ...::new(...) | main.rs:244:30:244:77 | ... .secure(...) | provenance | MaD:38 | -| main.rs:244:30:244:77 | ... .secure(...) | main.rs:244:30:244:90 | ... .name(...) | provenance | MaD:36 | -| main.rs:244:30:244:90 | ... .name(...) | main.rs:244:30:244:100 | ... .path(...) | provenance | MaD:37 | +| main.rs:244:30:244:63 | ...::new(...) | main.rs:244:30:244:77 | ... .secure(...) | provenance | MaD:12 | +| main.rs:244:30:244:77 | ... .secure(...) | main.rs:244:30:244:90 | ... .name(...) | provenance | MaD:10 | +| main.rs:244:30:244:90 | ... .name(...) | main.rs:244:30:244:100 | ... .path(...) | provenance | MaD:11 | | main.rs:244:30:244:100 | ... .path(...) | main.rs:244:9:244:26 | cookie_config_bad2 | provenance | | -| main.rs:245:43:245:60 | cookie_config_bad2 | main.rs:245:9:245:41 | ...::new | provenance | MaD:10 Sink:MaD:10 | -| main.rs:259:5:259:43 | ...::build(...) | main.rs:259:5:259:57 | ... .secure(...) | provenance | MaD:35 | +| main.rs:245:43:245:60 | cookie_config_bad2 | main.rs:245:9:245:41 | ...::new | provenance | MaD:4 Sink:MaD:4 | +| main.rs:259:5:259:43 | ...::build(...) | main.rs:259:5:259:57 | ... .secure(...) | provenance | MaD:9 | | main.rs:259:5:259:57 | ... .secure(...) | main.rs:259:59:259:64 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:260:5:260:43 | ...::build(...) | main.rs:260:5:260:57 | ... .secure(...) | provenance | MaD:35 | -| main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:34 | +| main.rs:260:5:260:43 | ...::build(...) | main.rs:260:5:260:57 | ... .secure(...) | provenance | MaD:9 | +| main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:8 | | main.rs:260:5:260:67 | ... .path(...) | main.rs:260:69:260:74 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | -| main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | -| main.rs:264:13:264:19 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:18 | -| main.rs:264:13:264:27 | cookie1.clone() | main.rs:264:9:264:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:274:5:274:26 | ...::build | main.rs:274:5:274:43 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:274:5:274:26 | ...::build | main.rs:274:5:274:43 | ...::build(...) | provenance | Src:MaD:6 MaD:6 | | main.rs:274:5:274:43 | ...::build(...) | main.rs:274:45:274:50 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:19 | cookie3 | provenance | | -| main.rs:276:19:276:38 | ...::new | main.rs:276:19:276:55 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | -| main.rs:276:19:276:55 | ...::new(...) | main.rs:276:9:276:15 | cookie3 | provenance | | -| main.rs:277:13:277:19 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:18 | -| main.rs:277:13:277:27 | cookie3.clone() | main.rs:277:9:277:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | -| main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | -| main.rs:281:13:281:19 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:18 | -| main.rs:281:13:281:27 | cookie2.clone() | main.rs:281:9:281:11 | add | provenance | MaD:4 Sink:MaD:4 | models | 1 | Sink: ::insert; Argument[0]; cookie-use | | 2 | Sink: ::build; Argument[self]; cookie-use | | 3 | Sink: ::finish; Argument[self]; cookie-use | -| 4 | Sink: ::add; Argument[0]; cookie-use | -| 5 | Sink: ::add_original; Argument[0]; cookie-use | -| 6 | Sink: ::add; Argument[0]; cookie-use | -| 7 | Sink: ::add_original; Argument[0]; cookie-use | -| 8 | Sink: ::add; Argument[0]; cookie-use | -| 9 | Sink: ::add_original; Argument[0]; cookie-use | -| 10 | Sink: ::new; Argument[0]; cookie-use | -| 11 | Sink: ::add; Argument[0]; cookie-use | -| 12 | Source: ::from; ReturnValue; cookie-create | -| 13 | Source: ::new; ReturnValue; cookie-create | -| 14 | Source: ::from; ReturnValue; cookie-create | -| 15 | Source: ::build; ReturnValue; cookie-create | -| 16 | Source: ::named; ReturnValue; cookie-create | -| 17 | Source: ::new; ReturnValue; cookie-create | -| 18 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 19 | Summary: ::make_permanent; Argument[self]; ReturnValue; taint | -| 20 | Summary: ::set_domain; Argument[self]; ReturnValue; taint | -| 21 | Summary: ::set_expires; Argument[self]; ReturnValue; taint | -| 22 | Summary: ::set_http_only; Argument[self]; ReturnValue; taint | -| 23 | Summary: ::set_max_age; Argument[self]; ReturnValue; taint | -| 24 | Summary: ::set_name; Argument[self]; ReturnValue; taint | -| 25 | Summary: ::set_partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | -| 26 | Summary: ::set_path; Argument[self]; ReturnValue; taint | -| 27 | Summary: ::set_same_site; Argument[self]; ReturnValue; taint | -| 28 | Summary: ::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | -| 29 | Summary: ::set_value; Argument[self]; ReturnValue; taint | -| 30 | Summary: ::unset_domain; Argument[self]; ReturnValue; taint | -| 31 | Summary: ::unset_expires; Argument[self]; ReturnValue; taint | -| 32 | Summary: ::unset_path; Argument[self]; ReturnValue; taint | -| 33 | Summary: ::partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | -| 34 | Summary: ::path; Argument[self]; ReturnValue; taint | -| 35 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | -| 36 | Summary: ::name; Argument[self]; ReturnValue; taint | -| 37 | Summary: ::path; Argument[self]; ReturnValue; taint | -| 38 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 4 | Sink: ::new; Argument[0]; cookie-use | +| 5 | Source: ::from; ReturnValue; cookie-create | +| 6 | Source: ::build; ReturnValue; cookie-create | +| 7 | Summary: ::partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | +| 8 | Summary: ::path; Argument[self]; ReturnValue; taint | +| 9 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 10 | Summary: ::name; Argument[self]; ReturnValue; taint | +| 11 | Summary: ::path; Argument[self]; ReturnValue; taint | +| 12 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | nodes | main.rs:8:19:8:50 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:8:19:8:64 | ... .secure(...) | semmle.label | ... .secure(...) | @@ -415,139 +201,15 @@ nodes | main.rs:53:5:53:49 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:53:5:53:63 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:53:65:53:69 | build | semmle.label | build | -| main.rs:58:9:58:13 | mut a | semmle.label | mut a | -| main.rs:58:17:58:27 | ...::new | semmle.label | ...::new | -| main.rs:58:17:58:44 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:59:9:59:11 | add | semmle.label | add | -| main.rs:59:13:59:13 | a | semmle.label | a | -| main.rs:59:13:59:21 | a.clone() | semmle.label | a.clone() | -| main.rs:60:9:60:20 | add_original | semmle.label | add_original | -| main.rs:60:22:60:22 | a | semmle.label | a | -| main.rs:60:22:60:30 | a.clone() | semmle.label | a.clone() | -| main.rs:63:5:63:5 | [SSA] a | semmle.label | [SSA] a | -| main.rs:63:5:63:5 | a | semmle.label | a | -| main.rs:64:9:64:11 | add | semmle.label | add | -| main.rs:64:13:64:13 | a | semmle.label | a | -| main.rs:64:13:64:21 | a.clone() | semmle.label | a.clone() | -| main.rs:68:9:68:13 | mut b | semmle.label | mut b | -| main.rs:68:17:68:29 | ...::named | semmle.label | ...::named | -| main.rs:68:17:68:37 | ...::named(...) | semmle.label | ...::named(...) | -| main.rs:69:16:69:18 | add | semmle.label | add | -| main.rs:69:20:69:20 | b | semmle.label | b | -| main.rs:69:20:69:28 | b.clone() | semmle.label | b.clone() | -| main.rs:70:16:70:27 | add_original | semmle.label | add_original | -| main.rs:70:29:70:29 | a | semmle.label | a | -| main.rs:70:29:70:37 | a.clone() | semmle.label | a.clone() | -| main.rs:71:5:71:5 | [SSA] b | semmle.label | [SSA] b | -| main.rs:71:5:71:5 | b | semmle.label | b | -| main.rs:72:16:72:18 | add | semmle.label | add | -| main.rs:72:20:72:20 | b | semmle.label | b | -| main.rs:72:20:72:28 | b.clone() | semmle.label | b.clone() | -| main.rs:77:9:77:13 | mut c | semmle.label | mut c | -| main.rs:77:17:77:28 | ...::from | semmle.label | ...::from | -| main.rs:77:17:77:36 | ...::from(...) | semmle.label | ...::from(...) | -| main.rs:78:17:78:19 | add | semmle.label | add | -| main.rs:78:21:78:21 | c | semmle.label | c | -| main.rs:78:21:78:29 | c.clone() | semmle.label | c.clone() | -| main.rs:79:17:79:28 | add_original | semmle.label | add_original | -| main.rs:79:30:79:30 | a | semmle.label | a | -| main.rs:79:30:79:38 | a.clone() | semmle.label | a.clone() | -| main.rs:83:17:83:19 | add | semmle.label | add | -| main.rs:83:21:83:21 | c | semmle.label | c | -| main.rs:83:21:83:29 | c.clone() | semmle.label | c.clone() | -| main.rs:87:9:87:13 | mut d | semmle.label | mut d | -| main.rs:87:17:87:28 | ...::from | semmle.label | ...::from | -| main.rs:87:17:87:36 | ...::from(...) | semmle.label | ...::from(...) | -| main.rs:88:9:88:11 | add | semmle.label | add | -| main.rs:88:13:88:13 | d | semmle.label | d | -| main.rs:88:13:88:21 | d.clone() | semmle.label | d.clone() | -| main.rs:94:9:94:11 | add | semmle.label | add | -| main.rs:94:13:94:13 | d | semmle.label | d | -| main.rs:94:13:94:21 | d.clone() | semmle.label | d.clone() | | main.rs:114:5:114:17 | ...::build | semmle.label | ...::build | | main.rs:114:5:114:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:114:5:114:54 | ... .partitioned(...) | semmle.label | ... .partitioned(...) | | main.rs:114:56:114:60 | build | semmle.label | build | -| main.rs:122:9:122:9 | a | semmle.label | a | -| main.rs:122:13:122:41 | ...::new | semmle.label | ...::new | -| main.rs:122:13:122:58 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:123:13:123:18 | insert | semmle.label | insert | -| main.rs:123:20:123:20 | a | semmle.label | a | -| main.rs:123:20:123:28 | a.clone() | semmle.label | a.clone() | -| main.rs:130:9:130:9 | c | semmle.label | c | -| main.rs:130:13:130:13 | b | semmle.label | b | -| main.rs:130:13:130:31 | b.set_secure(...) | semmle.label | b.set_secure(...) | -| main.rs:131:13:131:18 | insert | semmle.label | insert | -| main.rs:131:20:131:20 | c | semmle.label | c | -| main.rs:131:20:131:28 | c.clone() | semmle.label | c.clone() | -| main.rs:134:9:134:9 | d | semmle.label | d | -| main.rs:134:13:134:13 | c | semmle.label | c | -| main.rs:134:13:134:35 | c.set_partitioned(...) | semmle.label | c.set_partitioned(...) | -| main.rs:135:13:135:18 | insert | semmle.label | insert | -| main.rs:135:20:135:20 | d | semmle.label | d | -| main.rs:135:20:135:28 | d.clone() | semmle.label | d.clone() | -| main.rs:146:9:146:9 | g | semmle.label | g | -| main.rs:146:13:146:13 | f | semmle.label | f | -| main.rs:146:13:146:31 | f.set_secure(...) | semmle.label | f.set_secure(...) | -| main.rs:147:13:147:18 | insert | semmle.label | insert | -| main.rs:147:20:147:20 | g | semmle.label | g | -| main.rs:147:20:147:28 | g.clone() | semmle.label | g.clone() | | main.rs:151:9:151:9 | h | semmle.label | h | | main.rs:151:13:151:42 | ...::from | semmle.label | ...::from | | main.rs:151:13:151:61 | ...::from(...) | semmle.label | ...::from(...) | | main.rs:152:13:152:18 | insert | semmle.label | insert | | main.rs:152:20:152:20 | h | semmle.label | h | -| main.rs:155:9:155:9 | i | semmle.label | i | -| main.rs:155:13:155:41 | ...::new | semmle.label | ...::new | -| main.rs:155:13:155:58 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:156:13:156:18 | insert | semmle.label | insert | -| main.rs:156:20:156:20 | i | semmle.label | i | -| main.rs:156:20:156:28 | i.clone() | semmle.label | i.clone() | -| main.rs:156:20:156:46 | ... .set_name(...) | semmle.label | ... .set_name(...) | -| main.rs:157:13:157:18 | insert | semmle.label | insert | -| main.rs:157:20:157:20 | i | semmle.label | i | -| main.rs:157:20:157:28 | i.clone() | semmle.label | i.clone() | -| main.rs:157:20:157:48 | ... .set_value(...) | semmle.label | ... .set_value(...) | -| main.rs:158:13:158:18 | insert | semmle.label | insert | -| main.rs:158:20:158:20 | i | semmle.label | i | -| main.rs:158:20:158:28 | i.clone() | semmle.label | i.clone() | -| main.rs:158:20:158:48 | ... .set_http_only(...) | semmle.label | ... .set_http_only(...) | -| main.rs:159:13:159:18 | insert | semmle.label | insert | -| main.rs:159:20:159:20 | i | semmle.label | i | -| main.rs:159:20:159:28 | i.clone() | semmle.label | i.clone() | -| main.rs:159:20:159:70 | ... .set_same_site(...) | semmle.label | ... .set_same_site(...) | -| main.rs:160:13:160:18 | insert | semmle.label | insert | -| main.rs:160:20:160:20 | i | semmle.label | i | -| main.rs:160:20:160:28 | i.clone() | semmle.label | i.clone() | -| main.rs:160:20:160:46 | ... .set_max_age(...) | semmle.label | ... .set_max_age(...) | -| main.rs:161:13:161:18 | insert | semmle.label | insert | -| main.rs:161:20:161:20 | i | semmle.label | i | -| main.rs:161:20:161:28 | i.clone() | semmle.label | i.clone() | -| main.rs:161:20:161:42 | ... .set_path(...) | semmle.label | ... .set_path(...) | -| main.rs:162:13:162:18 | insert | semmle.label | insert | -| main.rs:162:20:162:20 | i | semmle.label | i | -| main.rs:162:20:162:28 | i.clone() | semmle.label | i.clone() | -| main.rs:162:20:162:41 | ... .unset_path() | semmle.label | ... .unset_path() | -| main.rs:163:13:163:18 | insert | semmle.label | insert | -| main.rs:163:20:163:20 | i | semmle.label | i | -| main.rs:163:20:163:28 | i.clone() | semmle.label | i.clone() | -| main.rs:163:20:163:54 | ... .set_domain(...) | semmle.label | ... .set_domain(...) | -| main.rs:164:13:164:18 | insert | semmle.label | insert | -| main.rs:164:20:164:20 | i | semmle.label | i | -| main.rs:164:20:164:28 | i.clone() | semmle.label | i.clone() | -| main.rs:164:20:164:43 | ... .unset_domain() | semmle.label | ... .unset_domain() | -| main.rs:165:13:165:18 | insert | semmle.label | insert | -| main.rs:165:20:165:20 | i | semmle.label | i | -| main.rs:165:20:165:28 | i.clone() | semmle.label | i.clone() | -| main.rs:165:20:165:46 | ... .set_expires(...) | semmle.label | ... .set_expires(...) | -| main.rs:166:13:166:18 | insert | semmle.label | insert | -| main.rs:166:20:166:20 | i | semmle.label | i | -| main.rs:166:20:166:28 | i.clone() | semmle.label | i.clone() | -| main.rs:166:20:166:44 | ... .unset_expires() | semmle.label | ... .unset_expires() | -| main.rs:167:13:167:18 | insert | semmle.label | insert | -| main.rs:167:20:167:20 | i | semmle.label | i | -| main.rs:167:20:167:28 | i.clone() | semmle.label | i.clone() | -| main.rs:167:20:167:45 | ... .make_permanent() | semmle.label | ... .make_permanent() | | main.rs:173:22:173:34 | ...::build | semmle.label | ...::build | | main.rs:173:22:173:59 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:173:61:173:65 | build | semmle.label | build | @@ -558,30 +220,9 @@ nodes | main.rs:198:5:198:53 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:198:5:198:63 | ... .path(...) | semmle.label | ... .path(...) | | main.rs:198:65:198:70 | finish | semmle.label | finish | -| main.rs:201:5:201:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | -| main.rs:201:5:201:11 | cookie1 | semmle.label | cookie1 | -| main.rs:202:9:202:11 | add | semmle.label | add | -| main.rs:202:13:202:19 | cookie1 | semmle.label | cookie1 | -| main.rs:202:13:202:27 | cookie1.clone() | semmle.label | cookie1.clone() | | main.rs:212:5:212:22 | ...::build | semmle.label | ...::build | | main.rs:212:5:212:39 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:212:41:212:46 | finish | semmle.label | finish | -| main.rs:214:9:214:15 | cookie3 | semmle.label | cookie3 | -| main.rs:214:19:214:34 | ...::new | semmle.label | ...::new | -| main.rs:214:19:214:51 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:215:9:215:11 | add | semmle.label | add | -| main.rs:215:13:215:19 | cookie3 | semmle.label | cookie3 | -| main.rs:215:13:215:27 | cookie3.clone() | semmle.label | cookie3.clone() | -| main.rs:218:5:218:11 | [SSA] cookie2 | semmle.label | [SSA] cookie2 | -| main.rs:218:5:218:11 | cookie2 | semmle.label | cookie2 | -| main.rs:219:9:219:11 | add | semmle.label | add | -| main.rs:219:13:219:19 | cookie2 | semmle.label | cookie2 | -| main.rs:219:13:219:27 | cookie2.clone() | semmle.label | cookie2.clone() | -| main.rs:228:5:228:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | -| main.rs:228:5:228:11 | cookie1 | semmle.label | cookie1 | -| main.rs:229:9:229:11 | add | semmle.label | add | -| main.rs:229:13:229:19 | cookie1 | semmle.label | cookie1 | -| main.rs:229:13:229:27 | cookie1.clone() | semmle.label | cookie1.clone() | | main.rs:241:9:241:25 | cookie_config_bad | semmle.label | cookie_config_bad | | main.rs:241:29:241:62 | ...::new(...) | semmle.label | ...::new(...) | | main.rs:241:29:241:76 | ... .secure(...) | semmle.label | ... .secure(...) | @@ -601,23 +242,58 @@ nodes | main.rs:260:5:260:57 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:260:5:260:67 | ... .path(...) | semmle.label | ... .path(...) | | main.rs:260:69:260:74 | finish | semmle.label | finish | -| main.rs:263:5:263:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | -| main.rs:263:5:263:11 | cookie1 | semmle.label | cookie1 | -| main.rs:264:9:264:11 | add | semmle.label | add | -| main.rs:264:13:264:19 | cookie1 | semmle.label | cookie1 | -| main.rs:264:13:264:27 | cookie1.clone() | semmle.label | cookie1.clone() | | main.rs:274:5:274:26 | ...::build | semmle.label | ...::build | | main.rs:274:5:274:43 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:274:45:274:50 | finish | semmle.label | finish | -| main.rs:276:9:276:15 | cookie3 | semmle.label | cookie3 | -| main.rs:276:19:276:38 | ...::new | semmle.label | ...::new | -| main.rs:276:19:276:55 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:277:9:277:11 | add | semmle.label | add | -| main.rs:277:13:277:19 | cookie3 | semmle.label | cookie3 | -| main.rs:277:13:277:27 | cookie3.clone() | semmle.label | cookie3.clone() | -| main.rs:280:5:280:11 | [SSA] cookie2 | semmle.label | [SSA] cookie2 | -| main.rs:280:5:280:11 | cookie2 | semmle.label | cookie2 | -| main.rs:281:9:281:11 | add | semmle.label | add | -| main.rs:281:13:281:19 | cookie2 | semmle.label | cookie2 | -| main.rs:281:13:281:27 | cookie2.clone() | semmle.label | cookie2.clone() | subpaths +testFailures +| main.rs:58:47:58:57 | //... | Missing result: Source | +| main.rs:59:25:59:56 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:60:34:60:65 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:63:26:63:36 | //... | Missing result: Source | +| main.rs:64:25:64:56 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:68:40:68:50 | //... | Missing result: Source | +| main.rs:69:32:69:63 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:70:41:70:72 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:71:30:71:40 | //... | Missing result: Source | +| main.rs:72:32:72:63 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:77:39:77:49 | //... | Missing result: Source | +| main.rs:78:33:78:64 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:79:42:79:73 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:83:33:83:64 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:87:39:87:49 | //... | Missing result: Source | +| main.rs:88:25:88:56 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:94:25:94:66 | //... | Fixed spurious result: Alert[rust/insecure-cookie] | +| main.rs:122:61:122:71 | //... | Missing result: Source | +| main.rs:123:32:123:63 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:130:34:130:44 | //... | Missing result: Source | +| main.rs:131:32:131:63 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:146:34:146:44 | //... | Missing result: Source | +| main.rs:147:32:147:63 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:155:61:155:71 | //... | Missing result: Source | +| main.rs:156:50:156:81 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:157:52:157:83 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:158:52:158:83 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:159:74:159:105 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:160:50:160:81 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:161:46:161:77 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:162:45:162:76 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:163:58:163:89 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:164:47:164:78 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:165:50:165:81 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:166:48:166:79 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:167:49:167:80 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:201:32:201:42 | //... | Missing result: Source | +| main.rs:202:31:202:62 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:214:54:214:64 | //... | Missing result: Source | +| main.rs:215:31:215:62 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:218:31:218:41 | //... | Missing result: Source | +| main.rs:219:31:219:62 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:228:32:228:42 | //... | Missing result: Source | +| main.rs:229:31:229:62 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:263:32:263:42 | //... | Missing result: Source | +| main.rs:264:31:264:62 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:276:58:276:68 | //... | Missing result: Source | +| main.rs:277:31:277:62 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:280:31:280:41 | //... | Missing result: Source | +| main.rs:281:31:281:62 | //... | Missing result: Alert[rust/insecure-cookie] | 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 cf0f287e4f7b..7430d3bacfc3 100644 --- a/rust/ql/test/query-tests/security/CWE-696/BadCTorInitialization.expected +++ b/rust/ql/test/query-tests/security/CWE-696/BadCTorInitialization.expected @@ -22,8 +22,8 @@ | test.rs:125:9:125:44 | ... .write_all(...) | test.rs:128:1:128:7 | Attr | test.rs:125:9:125:44 | ... .write_all(...) | Call to ... .write_all(...) from the standard library in a function with the ctor attribute. | | test.rs:125:9:125:44 | ... .write_all(...) | test.rs:144:1:144:7 | Attr | test.rs:125:9:125:44 | ... .write_all(...) | Call to ... .write_all(...) from the standard library in a function with the ctor attribute. | | test.rs:125:9:125:44 | ... .write_all(...) | test.rs:150:1:150:7 | Attr | test.rs:125:9:125:44 | ... .write_all(...) | Call to ... .write_all(...) from the standard library in a function with the ctor attribute. | -| test.rs:168:1:168:7 | ... .write(...) | test.rs:168:1:168:7 | Attr | test.rs:168:1:168:7 | ... .write(...) | Call to ... .write(...) from the standard library in a function with the ctor attribute. | -| test.rs:168:1:168:7 | ...::stdout(...) | test.rs:168:1:168:7 | Attr | test.rs:168:1:168:7 | ...::stdout(...) | Call to ...::stdout(...) from the standard library in a function with the ctor attribute. | +| test.rs:168:3:168:6 | ... .write(...) | test.rs:168:1:168:7 | Attr | test.rs:168:3:168:6 | ... .write(...) | Call to ... .write(...) from the standard library in a function with the ctor attribute. | +| test.rs:168:3:168:6 | ...::stdout(...) | test.rs:168:1:168:7 | Attr | test.rs:168:3:168:6 | ...::stdout(...) | Call to ...::stdout(...) from the standard library in a function with the ctor attribute. | edges | test.rs:28:1:28:13 | Attr | test.rs:29:4:31:1 | fn bad1_1 | | test.rs:29:4:31:1 | fn bad1_1 | test.rs:30:9:30:25 | ...::stdout(...) | @@ -65,5 +65,5 @@ edges | test.rs:151:4:153:1 | fn bad3_4 | test.rs:152:5:152:12 | bad3_3(...) | | test.rs:152:5:152:12 | bad3_3(...) | test.rs:145:4:148:1 | fn bad3_3 | | test.rs:168:1:168:7 | Attr | test.rs:169:4:171:1 | fn bad4_1 | -| test.rs:169:4:171:1 | fn bad4_1 | test.rs:168:1:168:7 | ... .write(...) | -| test.rs:169:4:171:1 | fn bad4_1 | test.rs:168:1:168:7 | ...::stdout(...) | +| test.rs:169:4:171:1 | fn bad4_1 | test.rs:168:3:168:6 | ... .write(...) | +| test.rs:169:4:171:1 | fn bad4_1 | test.rs:168:3:168:6 | ...::stdout(...) | diff --git a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected index 477dbee0e0f4..dca47ef0cdc2 100644 --- a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected +++ b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected @@ -42,16 +42,21 @@ | main.rs:210:40:210:50 | grow_zeroed | main.rs:339:13:339:26 | ...::args | main.rs:210:40:210:50 | grow_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:213:36:213:41 | shrink | main.rs:339:13:339:26 | ...::args | main.rs:213:36:213:41 | shrink | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:219:13:219:24 | ...::malloc | main.rs:339:13:339:26 | ...::args | main.rs:219:13:219:24 | ...::malloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | +| main.rs:219:13:219:24 | ...::malloc | main.rs:339:13:339:26 | ...::args | main.rs:219:13:219:24 | ...::malloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:220:13:220:31 | ...::aligned_alloc | main.rs:339:13:339:26 | ...::args | main.rs:220:13:220:31 | ...::aligned_alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:222:13:222:24 | ...::calloc | main.rs:339:13:339:26 | ...::args | main.rs:222:13:222:24 | ...::calloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | +| main.rs:222:13:222:24 | ...::calloc | main.rs:339:13:339:26 | ...::args | main.rs:222:13:222:24 | ...::calloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | +| main.rs:223:13:223:24 | ...::calloc | main.rs:339:13:339:26 | ...::args | main.rs:223:13:223:24 | ...::calloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:223:13:223:24 | ...::calloc | main.rs:339:13:339:26 | ...::args | main.rs:223:13:223:24 | ...::calloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:224:13:224:25 | ...::realloc | main.rs:339:13:339:26 | ...::args | main.rs:224:13:224:25 | ...::realloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | +| main.rs:224:13:224:25 | ...::realloc | main.rs:339:13:339:26 | ...::args | main.rs:224:13:224:25 | ...::realloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:228:13:228:41 | ...::try_with_capacity | main.rs:339:13:339:26 | ...::args | main.rs:228:13:228:41 | ...::try_with_capacity | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:229:13:229:37 | ...::with_capacity | main.rs:339:13:339:26 | ...::args | main.rs:229:13:229:37 | ...::with_capacity | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:230:13:230:44 | ...::try_with_capacity_in | main.rs:339:13:339:26 | ...::args | main.rs:230:13:230:44 | ...::try_with_capacity_in | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:231:13:231:40 | ...::with_capacity_in | main.rs:339:13:339:26 | ...::args | main.rs:231:13:231:40 | ...::with_capacity_in | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:287:22:287:38 | ...::alloc | main.rs:311:25:311:38 | ...::args | main.rs:287:22:287:38 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:311:25:311:38 | ...::args | user-provided value | | main.rs:331:13:331:24 | ...::malloc | main.rs:339:13:339:26 | ...::args | main.rs:331:13:331:24 | ...::malloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | +| main.rs:331:13:331:24 | ...::malloc | main.rs:339:13:339:26 | ...::args | main.rs:331:13:331:24 | ...::malloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | edges | main.rs:12:36:12:43 | ...: usize | main.rs:18:41:18:41 | v | provenance | | | main.rs:18:41:18:41 | v | main.rs:18:13:18:31 | ...::realloc | provenance | MaD:17 Sink:MaD:17 | @@ -60,43 +65,43 @@ edges | main.rs:18:41:18:41 | v | main.rs:32:60:32:60 | v | provenance | | | main.rs:18:41:18:41 | v | main.rs:35:49:35:49 | v | provenance | | | main.rs:20:9:20:10 | l2 | main.rs:21:31:21:32 | l2 | provenance | | -| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:41 | +| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:44 | | main.rs:20:14:20:63 | ... .unwrap() | main.rs:20:9:20:10 | l2 | provenance | | -| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:33 | +| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:36 | | main.rs:21:31:21:32 | l2 | main.rs:21:13:21:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:21:31:21:32 | l2 | main.rs:22:31:22:32 | l2 | provenance | | | main.rs:21:31:21:32 | l2 | main.rs:23:31:23:32 | l2 | provenance | | | main.rs:21:31:21:32 | l2 | main.rs:24:38:24:39 | l2 | provenance | | -| main.rs:22:31:22:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:27 | -| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:41 | +| main.rs:22:31:22:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:30 | +| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:44 | | main.rs:22:31:22:53 | ... .unwrap() | main.rs:22:13:22:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:23:31:23:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:27 | -| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:41 | -| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:35 | +| main.rs:23:31:23:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:30 | +| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:44 | +| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:38 | | main.rs:23:31:23:68 | ... .pad_to_align() | main.rs:23:13:23:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:24:38:24:39 | l2 | main.rs:24:13:24:36 | ...::alloc_zeroed | provenance | MaD:16 Sink:MaD:16 | | main.rs:29:9:29:10 | l4 | main.rs:30:31:30:32 | l4 | provenance | | | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | main.rs:29:9:29:10 | l4 | provenance | | -| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:34 | +| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:37 | | main.rs:30:31:30:32 | l4 | main.rs:30:13:30:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:32:9:32:10 | l5 | main.rs:33:31:33:32 | l5 | provenance | | | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | main.rs:32:9:32:10 | l5 | provenance | | -| main.rs:32:60:32:60 | v | main.rs:32:60:32:89 | ... * ... | provenance | MaD:25 | -| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:34 | +| main.rs:32:60:32:60 | v | main.rs:32:60:32:89 | ... * ... | provenance | MaD:28 | +| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:37 | | main.rs:33:31:33:32 | l5 | main.rs:33:13:33:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:35:9:35:10 | s6 | main.rs:36:60:36:61 | s6 | provenance | | | main.rs:35:14:35:54 | ... + ... | main.rs:35:9:35:10 | s6 | provenance | | -| main.rs:35:15:35:49 | ... * ... | main.rs:35:14:35:54 | ... + ... | provenance | MaD:24 | -| main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:25 | +| main.rs:35:15:35:49 | ... * ... | main.rs:35:14:35:54 | ... + ... | provenance | MaD:27 | +| main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:28 | | main.rs:36:9:36:10 | l6 | main.rs:37:31:37:32 | l6 | provenance | | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | main.rs:36:9:36:10 | l6 | provenance | | -| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:34 | +| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:37 | | main.rs:37:31:37:32 | l6 | main.rs:37:13:37:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:37:31:37:32 | l6 | main.rs:39:60:39:61 | l6 | provenance | | | main.rs:39:9:39:10 | l7 | main.rs:40:31:40:32 | l7 | provenance | | | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | main.rs:39:9:39:10 | l7 | provenance | | -| main.rs:39:60:39:61 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:38 | -| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:34 | +| main.rs:39:60:39:61 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:41 | +| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:37 | | main.rs:40:31:40:32 | l7 | main.rs:40:13:40:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:43:44:43:51 | ...: usize | main.rs:50:41:50:41 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:51:41:51:41 | v | provenance | | @@ -104,27 +109,27 @@ edges | main.rs:43:44:43:51 | ...: usize | main.rs:54:48:54:48 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:58:34:58:34 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:67:46:67:46 | v | provenance | | -| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:41 | +| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:44 | | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | main.rs:50:31:50:53 | ... .0 | provenance | | | main.rs:50:31:50:53 | ... .0 | main.rs:50:13:50:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:36 | -| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:41 | +| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:39 | +| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:44 | | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | main.rs:51:31:51:57 | ... .0 | provenance | | | main.rs:51:31:51:57 | ... .0 | main.rs:51:13:51:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:51:41:51:41 | v | main.rs:51:41:51:45 | ... + ... | provenance | MaD:24 | -| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:36 | -| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:41 | +| main.rs:51:41:51:41 | v | main.rs:51:41:51:45 | ... + ... | provenance | MaD:27 | +| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:39 | +| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:44 | | main.rs:53:31:53:58 | ... .unwrap() | main.rs:53:13:53:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:37 | -| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:41 | +| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:40 | +| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:44 | | main.rs:54:31:54:63 | ... .unwrap() | main.rs:54:13:54:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:54:48:54:48 | v | main.rs:54:48:54:53 | ... * ... | provenance | MaD:25 | -| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:37 | +| main.rs:54:48:54:48 | v | main.rs:54:48:54:53 | ... * ... | provenance | MaD:28 | +| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:40 | | main.rs:58:9:58:20 | TuplePat [tuple.0] | main.rs:58:10:58:11 | k1 | provenance | | | main.rs:58:10:58:11 | k1 | main.rs:59:31:59:32 | k1 | provenance | | -| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:40 | +| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:43 | | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | main.rs:58:9:58:20 | TuplePat [tuple.0] | provenance | | -| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:36 | +| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:39 | | main.rs:59:31:59:32 | k1 | main.rs:59:13:59:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:59:31:59:32 | k1 | main.rs:60:34:60:35 | k1 | provenance | | | main.rs:59:31:59:32 | k1 | main.rs:62:24:62:25 | k1 | provenance | | @@ -132,32 +137,32 @@ edges | main.rs:59:31:59:32 | k1 | main.rs:65:31:65:32 | k1 | provenance | | | main.rs:60:9:60:20 | TuplePat [tuple.0] | main.rs:60:10:60:11 | k2 | provenance | | | main.rs:60:10:60:11 | k2 | main.rs:61:31:61:32 | k2 | provenance | | -| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:41 | +| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:44 | | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | main.rs:60:9:60:20 | TuplePat [tuple.0] | provenance | | -| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:29 | +| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:32 | | main.rs:61:31:61:32 | k2 | main.rs:61:13:61:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:62:9:62:20 | TuplePat [tuple.0] | main.rs:62:10:62:11 | k3 | provenance | | | main.rs:62:10:62:11 | k3 | main.rs:63:31:63:32 | k3 | provenance | | -| main.rs:62:24:62:25 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:30 | -| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:41 | +| main.rs:62:24:62:25 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:33 | +| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:44 | | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | main.rs:62:9:62:20 | TuplePat [tuple.0] | provenance | | | main.rs:63:31:63:32 | k3 | main.rs:63:13:63:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:41 | +| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:44 | | main.rs:64:31:64:59 | ... .unwrap() | main.rs:64:13:64:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:31 | -| main.rs:65:31:65:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:32 | -| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:41 | +| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:34 | +| main.rs:65:31:65:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:35 | +| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:44 | | main.rs:65:31:65:59 | ... .unwrap() | main.rs:65:13:65:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:67:9:67:10 | l4 | main.rs:68:31:68:32 | l4 | provenance | | -| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:41 | +| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:44 | | main.rs:67:14:67:56 | ... .unwrap() | main.rs:67:9:67:10 | l4 | provenance | | -| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | +| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | | main.rs:68:31:68:32 | l4 | main.rs:68:13:68:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:86:35:86:42 | ...: usize | main.rs:87:54:87:54 | v | provenance | | | main.rs:87:9:87:14 | layout | main.rs:88:31:88:36 | layout | provenance | | -| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:41 | +| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:44 | | main.rs:87:18:87:67 | ... .unwrap() | main.rs:87:9:87:14 | layout | provenance | | -| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:33 | +| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:36 | | main.rs:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:91:38:91:45 | ...: usize | main.rs:92:47:92:47 | v | provenance | | | main.rs:91:38:91:45 | ...: usize | main.rs:101:51:101:51 | v | provenance | | @@ -168,16 +173,16 @@ edges | main.rs:91:38:91:45 | ...: usize | main.rs:161:55:161:55 | v | provenance | | | main.rs:92:9:92:10 | l1 | main.rs:96:35:96:36 | l1 | provenance | | | main.rs:92:9:92:10 | l1 | main.rs:102:35:102:36 | l1 | provenance | | -| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:41 | +| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:44 | | main.rs:92:14:92:57 | ... .unwrap() | main.rs:92:9:92:10 | l1 | provenance | | -| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | +| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | | main.rs:96:35:96:36 | l1 | main.rs:96:17:96:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:96:35:96:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | | main.rs:96:35:96:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | | main.rs:101:13:101:14 | l3 | main.rs:103:35:103:36 | l3 | provenance | | -| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:41 | +| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:44 | | main.rs:101:18:101:61 | ... .unwrap() | main.rs:101:13:101:14 | l3 | provenance | | -| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | +| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | | main.rs:102:35:102:36 | l1 | main.rs:102:17:102:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:102:35:102:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | | main.rs:102:35:102:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | @@ -188,28 +193,28 @@ edges | main.rs:111:35:111:36 | l1 | main.rs:111:17:111:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:111:35:111:36 | l1 | main.rs:146:35:146:36 | l1 | provenance | | | main.rs:145:13:145:14 | l9 | main.rs:148:35:148:36 | l9 | provenance | | -| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:41 | +| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:44 | | main.rs:145:18:145:61 | ... .unwrap() | main.rs:145:13:145:14 | l9 | provenance | | -| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | +| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | | main.rs:146:35:146:36 | l1 | main.rs:146:17:146:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:146:35:146:36 | l1 | main.rs:177:31:177:32 | l1 | provenance | | | main.rs:148:35:148:36 | l9 | main.rs:148:17:148:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:151:9:151:11 | l10 | main.rs:152:31:152:33 | l10 | provenance | | -| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:41 | +| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:44 | | main.rs:151:15:151:78 | ... .unwrap() | main.rs:151:9:151:11 | l10 | provenance | | -| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | -| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:43 | +| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | +| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:46 | | main.rs:152:31:152:33 | l10 | main.rs:152:13:152:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:154:9:154:11 | l11 | main.rs:155:31:155:33 | l11 | provenance | | -| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:41 | +| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:44 | | main.rs:154:15:154:78 | ... .unwrap() | main.rs:154:9:154:11 | l11 | provenance | | -| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | -| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:42 | +| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | +| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:45 | | main.rs:155:31:155:33 | l11 | main.rs:155:13:155:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:161:13:161:15 | l13 | main.rs:162:35:162:37 | l13 | provenance | | -| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:41 | +| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:44 | | main.rs:161:19:161:68 | ... .unwrap() | main.rs:161:13:161:15 | l13 | provenance | | -| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:33 | +| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:36 | | main.rs:162:35:162:37 | l13 | main.rs:162:17:162:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:162:35:162:37 | l13 | main.rs:169:35:169:37 | l13 | provenance | | | main.rs:169:35:169:37 | l13 | main.rs:169:17:169:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | @@ -217,9 +222,9 @@ edges | main.rs:183:29:183:36 | ...: usize | main.rs:192:46:192:46 | v | provenance | | | main.rs:183:29:183:36 | ...: usize | main.rs:202:48:202:48 | v | provenance | | | main.rs:192:9:192:10 | l2 | main.rs:193:38:193:39 | l2 | provenance | | -| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:41 | +| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:44 | | main.rs:192:14:192:56 | ... .unwrap() | main.rs:192:9:192:10 | l2 | provenance | | -| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | +| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | | main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:12 Sink:MaD:12 | | main.rs:193:38:193:39 | l2 | main.rs:194:45:194:46 | l2 | provenance | | | main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:13 Sink:MaD:13 | @@ -240,14 +245,18 @@ edges | main.rs:213:51:213:52 | l2 | main.rs:213:36:213:41 | shrink | provenance | MaD:11 Sink:MaD:11 | | main.rs:217:27:217:34 | ...: usize | main.rs:219:26:219:26 | v | provenance | | | main.rs:219:26:219:26 | v | main.rs:219:13:219:24 | ...::malloc | provenance | MaD:20 Sink:MaD:20 | +| main.rs:219:26:219:26 | v | main.rs:219:13:219:24 | ...::malloc | provenance | MaD:23 Sink:MaD:23 | | main.rs:219:26:219:26 | v | main.rs:220:36:220:36 | v | provenance | | | main.rs:220:36:220:36 | v | main.rs:220:13:220:31 | ...::aligned_alloc | provenance | MaD:18 Sink:MaD:18 | | main.rs:220:36:220:36 | v | main.rs:222:30:222:30 | v | provenance | | | main.rs:222:30:222:30 | v | main.rs:222:13:222:24 | ...::calloc | provenance | MaD:19 Sink:MaD:19 | +| main.rs:222:30:222:30 | v | main.rs:222:13:222:24 | ...::calloc | provenance | MaD:22 Sink:MaD:22 | | main.rs:222:30:222:30 | v | main.rs:223:26:223:26 | v | provenance | | | main.rs:223:26:223:26 | v | main.rs:223:13:223:24 | ...::calloc | provenance | MaD:19 Sink:MaD:19 | +| main.rs:223:26:223:26 | v | main.rs:223:13:223:24 | ...::calloc | provenance | MaD:22 Sink:MaD:22 | | main.rs:223:26:223:26 | v | main.rs:224:31:224:31 | v | provenance | | | main.rs:224:31:224:31 | v | main.rs:224:13:224:25 | ...::realloc | provenance | MaD:21 Sink:MaD:21 | +| main.rs:224:31:224:31 | v | main.rs:224:13:224:25 | ...::realloc | provenance | MaD:24 Sink:MaD:24 | | main.rs:227:24:227:31 | ...: usize | main.rs:228:43:228:43 | v | provenance | | | main.rs:228:43:228:43 | v | main.rs:228:13:228:41 | ...::try_with_capacity | provenance | MaD:3 Sink:MaD:3 | | main.rs:228:43:228:43 | v | main.rs:229:39:229:39 | v | provenance | | @@ -258,21 +267,22 @@ edges | main.rs:231:42:231:42 | v | main.rs:231:13:231:40 | ...::with_capacity_in | provenance | MaD:6 Sink:MaD:6 | | main.rs:282:24:282:41 | ...: String | main.rs:283:21:283:30 | user_input | provenance | | | main.rs:283:9:283:17 | num_bytes | main.rs:285:54:285:62 | num_bytes | provenance | | -| main.rs:283:21:283:30 | user_input | main.rs:283:21:283:47 | user_input.parse() [Ok] | provenance | MaD:26 | +| main.rs:283:21:283:30 | user_input | main.rs:283:21:283:47 | user_input.parse() [Ok] | provenance | MaD:29 | | main.rs:283:21:283:47 | user_input.parse() [Ok] | main.rs:283:21:283:48 | TryExpr | provenance | | -| main.rs:283:21:283:48 | TryExpr | main.rs:283:21:283:77 | ... * ... | provenance | MaD:25 | +| main.rs:283:21:283:48 | TryExpr | main.rs:283:21:283:77 | ... * ... | provenance | MaD:28 | | main.rs:283:21:283:77 | ... * ... | main.rs:283:9:283:17 | num_bytes | provenance | | | main.rs:285:9:285:14 | layout | main.rs:287:40:287:45 | layout | provenance | | -| main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | main.rs:285:18:285:75 | ... .unwrap() | provenance | MaD:41 | +| main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | main.rs:285:18:285:75 | ... .unwrap() | provenance | MaD:44 | | main.rs:285:18:285:75 | ... .unwrap() | main.rs:285:9:285:14 | layout | provenance | | -| main.rs:285:54:285:62 | num_bytes | main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | provenance | MaD:33 | +| main.rs:285:54:285:62 | num_bytes | main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | provenance | MaD:36 | | main.rs:287:40:287:45 | layout | main.rs:287:22:287:38 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:311:25:311:38 | ...::args | main.rs:311:25:311:40 | ...::args(...) [element] | provenance | Src:MaD:22 | -| main.rs:311:25:311:40 | ...::args(...) [element] | main.rs:311:25:311:47 | ... .nth(...) [Some] | provenance | MaD:23 | -| main.rs:311:25:311:47 | ... .nth(...) [Some] | main.rs:311:25:311:74 | ... .unwrap_or(...) | provenance | MaD:39 | +| main.rs:311:25:311:38 | ...::args | main.rs:311:25:311:40 | ...::args(...) [element] | provenance | Src:MaD:25 | +| main.rs:311:25:311:40 | ...::args(...) [element] | main.rs:311:25:311:47 | ... .nth(...) [Some] | provenance | MaD:26 | +| main.rs:311:25:311:47 | ... .nth(...) [Some] | main.rs:311:25:311:74 | ... .unwrap_or(...) | provenance | MaD:42 | | main.rs:311:25:311:74 | ... .unwrap_or(...) | main.rs:282:24:282:41 | ...: String | provenance | | | main.rs:317:26:317:33 | ...: usize | main.rs:331:26:331:26 | a | provenance | | | main.rs:331:26:331:26 | a | main.rs:331:13:331:24 | ...::malloc | provenance | MaD:20 Sink:MaD:20 | +| main.rs:331:26:331:26 | a | main.rs:331:13:331:24 | ...::malloc | provenance | MaD:23 Sink:MaD:23 | | main.rs:339:9:339:9 | v | main.rs:342:34:342:34 | v | provenance | | | main.rs:339:9:339:9 | v | main.rs:343:42:343:42 | v | provenance | | | main.rs:339:9:339:9 | v | main.rs:344:36:344:36 | v | provenance | | @@ -280,11 +290,11 @@ edges | main.rs:339:9:339:9 | v | main.rs:346:25:346:25 | v | provenance | | | main.rs:339:9:339:9 | v | main.rs:347:22:347:22 | v | provenance | | | main.rs:339:9:339:9 | v | main.rs:349:24:349:24 | v | provenance | | -| main.rs:339:13:339:26 | ...::args | main.rs:339:13:339:28 | ...::args(...) [element] | provenance | Src:MaD:22 | -| main.rs:339:13:339:28 | ...::args(...) [element] | main.rs:339:13:339:35 | ... .nth(...) [Some] | provenance | MaD:23 | -| main.rs:339:13:339:35 | ... .nth(...) [Some] | main.rs:339:13:339:65 | ... .unwrap_or(...) | provenance | MaD:39 | -| main.rs:339:13:339:65 | ... .unwrap_or(...) | main.rs:339:13:339:82 | ... .parse() [Ok] | provenance | MaD:26 | -| main.rs:339:13:339:82 | ... .parse() [Ok] | main.rs:339:13:339:91 | ... .unwrap() | provenance | MaD:41 | +| main.rs:339:13:339:26 | ...::args | main.rs:339:13:339:28 | ...::args(...) [element] | provenance | Src:MaD:25 | +| main.rs:339:13:339:28 | ...::args(...) [element] | main.rs:339:13:339:35 | ... .nth(...) [Some] | provenance | MaD:26 | +| main.rs:339:13:339:35 | ... .nth(...) [Some] | main.rs:339:13:339:65 | ... .unwrap_or(...) | provenance | MaD:42 | +| main.rs:339:13:339:65 | ... .unwrap_or(...) | main.rs:339:13:339:82 | ... .parse() [Ok] | provenance | MaD:29 | +| main.rs:339:13:339:82 | ... .parse() [Ok] | main.rs:339:13:339:91 | ... .unwrap() | provenance | MaD:44 | | main.rs:339:13:339:91 | ... .unwrap() | main.rs:339:9:339:9 | v | provenance | | | main.rs:342:34:342:34 | v | main.rs:12:36:12:43 | ...: usize | provenance | | | main.rs:343:42:343:42 | v | main.rs:43:44:43:51 | ...: usize | provenance | | @@ -315,28 +325,31 @@ models | 19 | Sink: libc::unix::calloc; Argument[0,1]; alloc-size | | 20 | Sink: libc::unix::malloc; Argument[0]; alloc-size | | 21 | Sink: libc::unix::realloc; Argument[1]; alloc-size | -| 22 | Source: std::env::args; ReturnValue.Element; commandargs | -| 23 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 24 | Summary: <_ as core::ops::arith::Add>::add; Argument[self,0]; ReturnValue; taint | -| 25 | Summary: <_ as core::ops::arith::Mul>::mul; Argument[self,0]; ReturnValue; taint | -| 26 | Summary: ::deref; Argument[self]; ReturnValue; value | -| 27 | Summary: ::align_to; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 28 | Summary: ::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 29 | Summary: ::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 30 | Summary: ::extend; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 31 | Summary: ::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 32 | Summary: ::extend_packed; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 33 | Summary: ::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 34 | Summary: ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | -| 35 | Summary: ::pad_to_align; Argument[self].Reference; ReturnValue; taint | -| 36 | Summary: ::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 37 | Summary: ::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 38 | Summary: ::size; Argument[self].Reference; ReturnValue; taint | -| 39 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 40 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 41 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 42 | Summary: core::cmp::max; Argument[0]; ReturnValue; value | -| 43 | Summary: core::cmp::min; Argument[0]; ReturnValue; value | +| 22 | Sink: libc::windows::calloc; Argument[0,1]; alloc-size | +| 23 | Sink: libc::windows::malloc; Argument[0]; alloc-size | +| 24 | Sink: libc::windows::realloc; Argument[1]; alloc-size | +| 25 | Source: std::env::args; ReturnValue.Element; commandargs | +| 26 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 27 | Summary: <_ as core::ops::arith::Add>::add; Argument[self,0]; ReturnValue; taint | +| 28 | Summary: <_ as core::ops::arith::Mul>::mul; Argument[self,0]; ReturnValue; taint | +| 29 | Summary: ::deref; Argument[self]; ReturnValue; value | +| 30 | Summary: ::align_to; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 31 | Summary: ::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 32 | Summary: ::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 33 | Summary: ::extend; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 34 | Summary: ::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 35 | Summary: ::extend_packed; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 36 | Summary: ::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 37 | Summary: ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | +| 38 | Summary: ::pad_to_align; Argument[self].Reference; ReturnValue; taint | +| 39 | Summary: ::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 40 | Summary: ::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 41 | Summary: ::size; Argument[self].Reference; ReturnValue; taint | +| 42 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 43 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 44 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 45 | Summary: core::cmp::max; Argument[0]; ReturnValue; value | +| 46 | Summary: core::cmp::min; Argument[0]; ReturnValue; value | nodes | main.rs:12:36:12:43 | ...: usize | semmle.label | ...: usize | | main.rs:18:13:18:31 | ...::realloc | semmle.label | ...::realloc | @@ -526,14 +539,18 @@ nodes | main.rs:213:51:213:52 | l2 | semmle.label | l2 | | main.rs:217:27:217:34 | ...: usize | semmle.label | ...: usize | | main.rs:219:13:219:24 | ...::malloc | semmle.label | ...::malloc | +| main.rs:219:13:219:24 | ...::malloc | semmle.label | ...::malloc | | main.rs:219:26:219:26 | v | semmle.label | v | | main.rs:220:13:220:31 | ...::aligned_alloc | semmle.label | ...::aligned_alloc | | main.rs:220:36:220:36 | v | semmle.label | v | | main.rs:222:13:222:24 | ...::calloc | semmle.label | ...::calloc | +| main.rs:222:13:222:24 | ...::calloc | semmle.label | ...::calloc | | main.rs:222:30:222:30 | v | semmle.label | v | | main.rs:223:13:223:24 | ...::calloc | semmle.label | ...::calloc | +| main.rs:223:13:223:24 | ...::calloc | semmle.label | ...::calloc | | main.rs:223:26:223:26 | v | semmle.label | v | | main.rs:224:13:224:25 | ...::realloc | semmle.label | ...::realloc | +| main.rs:224:13:224:25 | ...::realloc | semmle.label | ...::realloc | | main.rs:224:31:224:31 | v | semmle.label | v | | main.rs:227:24:227:31 | ...: usize | semmle.label | ...: usize | | main.rs:228:13:228:41 | ...::try_with_capacity | semmle.label | ...::try_with_capacity | @@ -562,6 +579,7 @@ nodes | main.rs:311:25:311:74 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | | main.rs:317:26:317:33 | ...: usize | semmle.label | ...: usize | | main.rs:331:13:331:24 | ...::malloc | semmle.label | ...::malloc | +| main.rs:331:13:331:24 | ...::malloc | semmle.label | ...::malloc | | main.rs:331:26:331:26 | a | semmle.label | a | | main.rs:339:9:339:9 | v | semmle.label | v | | main.rs:339:13:339:26 | ...::args | semmle.label | ...::args | diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected index d3b5456063ff..0993171ab96a 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected @@ -9,6 +9,7 @@ | deallocation.rs:90:7:90:8 | m2 | deallocation.rs:70:3:70:21 | ...::dealloc | deallocation.rs:90:7:90:8 | m2 | This operation dereferences a pointer that may be $@. | deallocation.rs:70:3:70:21 | ...::dealloc | invalid | | deallocation.rs:95:5:95:31 | ...::write::<...> | deallocation.rs:70:3:70:21 | ...::dealloc | deallocation.rs:95:5:95:31 | ...::write::<...> | This operation dereferences a pointer that may be $@. | deallocation.rs:70:3:70:21 | ...::dealloc | invalid | | deallocation.rs:115:13:115:18 | my_ptr | deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:115:13:115:18 | my_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:112:3:112:12 | ...::free | invalid | +| deallocation.rs:115:13:115:18 | my_ptr | deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:115:13:115:18 | my_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:112:3:112:12 | ...::free | invalid | | deallocation.rs:130:14:130:15 | p1 | deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:130:14:130:15 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:123:23:123:40 | ...::dangling | invalid | | deallocation.rs:131:14:131:15 | p2 | deallocation.rs:124:21:124:42 | ...::dangling_mut | deallocation.rs:131:14:131:15 | p2 | This operation dereferences a pointer that may be $@. | deallocation.rs:124:21:124:42 | ...::dangling_mut | invalid | | deallocation.rs:132:14:132:15 | p3 | deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:132:14:132:15 | p3 | This operation dereferences a pointer that may be $@. | deallocation.rs:125:23:125:36 | ...::null | invalid | @@ -43,6 +44,7 @@ edges | deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:95:33:95:34 | m2 | provenance | | | deallocation.rs:95:33:95:34 | m2 | deallocation.rs:95:5:95:31 | ...::write::<...> | provenance | MaD:2 Sink:MaD:2 | | deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | provenance | Src:MaD:9 MaD:9 | +| deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | provenance | Src:MaD:10 MaD:10 | | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | deallocation.rs:115:13:115:18 | my_ptr | provenance | | | deallocation.rs:123:6:123:7 | p1 | deallocation.rs:130:14:130:15 | p1 | provenance | | | deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:123:23:123:42 | ...::dangling(...) | provenance | Src:MaD:4 MaD:4 | @@ -92,6 +94,7 @@ models | 7 | Source: core::ptr::null; ReturnValue; pointer-invalidate | | 8 | Source: core::ptr::null_mut; ReturnValue; pointer-invalidate | | 9 | Source: libc::unix::free; Argument[0]; pointer-invalidate | +| 10 | Source: libc::windows::free; Argument[0]; pointer-invalidate | nodes | deallocation.rs:20:3:20:21 | ...::dealloc | semmle.label | ...::dealloc | | deallocation.rs:20:23:20:24 | [post] m1 | semmle.label | [post] m1 | @@ -110,6 +113,7 @@ nodes | deallocation.rs:95:5:95:31 | ...::write::<...> | semmle.label | ...::write::<...> | | deallocation.rs:95:33:95:34 | m2 | semmle.label | m2 | | deallocation.rs:112:3:112:12 | ...::free | semmle.label | ...::free | +| deallocation.rs:112:3:112:12 | ...::free | semmle.label | ...::free | | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | semmle.label | [post] my_ptr as ... | | deallocation.rs:115:13:115:18 | my_ptr | semmle.label | my_ptr | | deallocation.rs:123:6:123:7 | p1 | semmle.label | p1 | From 1bd08217faa2f5d0b3bf12a626fe16d899af6b0e Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 15 Apr 2026 19:25:40 +0000 Subject: [PATCH 010/167] Rust: fix downgrade script (same format_args_arg_names issue) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties | 1 - 1 file changed, 1 deletion(-) diff --git a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties index 6d4e1d708ba6..30fc1c731cab 100644 --- a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties +++ b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties @@ -2,7 +2,6 @@ description: Downgrade from rust-analyzer 0.0.328 to 0.0.301 compatibility: partial format_args_arg_arg_names.rel: delete -format_args_arg_names.rel: delete struct_field_default_vals.rel: delete variant_const_args.rel: delete try_block_modifiers.rel: delete From ac27c207113bca37f74b097646df4ec174b29cad Mon Sep 17 00:00:00 2001 From: Taus Date: Thu, 16 Apr 2026 14:12:59 +0000 Subject: [PATCH 011/167] Rust: fix consistency test failures from rust-analyzer upgrade - Exclude macro-expanded and attribute paths from PathResolutionConsistency (tokio::main and similar attribute macros resolve to multiple proc macro fns) - Exclude "macro expansion failed" warnings from ExtractionConsistency (compile_error! and undefined macros are expected to fail expansion) - Update pre-existing consistency expectations (net multipleResolvedTargets) - Update type-inference.expected for new RA results Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ExtractionConsistency.ql | 4 +++- .../internal/PathResolutionConsistency.qll | 4 ++++ .../ExtractionConsistency.expected | 2 -- .../PathResolutionConsistency.expected | 3 +++ .../TypeInferenceConsistency.expected | 4 ++++ .../type-inference/type-inference.expected | 23 ++++++++++++------- .../ExtractionConsistency.expected | 1 - .../PathResolutionConsistency.expected | 6 +++++ .../PathResolutionConsistency.expected | 12 ++++++++++ .../PathResolutionConsistency.expected | 9 ++++++++ .../PathResolutionConsistency.expected | 3 +++ .../PathResolutionConsistency.expected | 2 ++ .../TypeInferenceConsistency.expected | 8 +++++++ 13 files changed, 69 insertions(+), 12 deletions(-) create mode 100644 rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/TypeInferenceConsistency.expected create mode 100644 rust/ql/test/query-tests/security/CWE-295/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/query-tests/security/CWE-311/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/TypeInferenceConsistency.expected diff --git a/rust/ql/consistency-queries/ExtractionConsistency.ql b/rust/ql/consistency-queries/ExtractionConsistency.ql index c6e9bcdc2cb7..e07ed64df075 100644 --- a/rust/ql/consistency-queries/ExtractionConsistency.ql +++ b/rust/ql/consistency-queries/ExtractionConsistency.ql @@ -12,5 +12,7 @@ query predicate extractionError(ExtractionError ee) { } query predicate extractionWarning(ExtractionWarning ew) { - not exists(ew.getLocation()) or ew.getLocation().fromSource() + (not exists(ew.getLocation()) or ew.getLocation().fromSource()) and + // macro expansion failures are expected for macros like compile_error! and panic! + not ew.getMessage().matches("macro expansion failed for%") } diff --git a/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll b/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll index 807225d1615a..37de5d358151 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll @@ -8,6 +8,9 @@ private import PathResolution /** Holds if `p` may resolve to multiple items including `i`. */ query predicate multiplePathResolutions(Path p, ItemNode i) { p.fromSource() and + not p.(AstNode).isInMacroExpansion() and + // exclude paths inside attributes (e.g. `#[tokio::main]`) + not p.getParentNode*() instanceof Attr and i = resolvePath(p) and // `panic` is defined in both `std` and `core`; both are included in the prelude not p.getText() = "panic" and @@ -26,6 +29,7 @@ query predicate multiplePathResolutions(Path p, ItemNode i) { /** Holds if `ie` has multiple resolved targets including `target`. */ query predicate multipleResolvedTargets(InvocationExpr ie, Addressable target) { + not ie.(AstNode).isInMacroExpansion() and target = ie.getResolvedTarget() and strictcount(ie.getResolvedTarget()) > 1 } diff --git a/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/ExtractionConsistency.expected index 5c472b07a14f..e69de29bb2d1 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/ExtractionConsistency.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/ExtractionConsistency.expected @@ -1,2 +0,0 @@ -extractionWarning -| macro_expansion.rs:56:9:56:31 | macro expansion failed for 'concat' | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected index e69de29bb2d1..4388f45f296e 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,3 @@ +multipleResolvedTargets +| test.rs:23:26:23:66 | ... .text() | +| test.rs:26:26:26:67 | ... .bytes() | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/TypeInferenceConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/TypeInferenceConsistency.expected new file mode 100644 index 000000000000..2242144075b9 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/TypeInferenceConsistency.expected @@ -0,0 +1,4 @@ +nonUniqueCertainType +| test.rs:23:26:23:52 | ...::get(...) | dyn(Output).T | +| test.rs:26:26:26:52 | ...::get(...) | dyn(Output).T | +| test.rs:29:24:29:50 | ...::get(...) | dyn(Output).T | 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 5e870ae6ca5d..0832235788df 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -3669,7 +3669,6 @@ inferCertainType | main.rs:2405:18:2405:42 | ...::method(...) | | main.rs:2369:5:2369:20 | S1 | | main.rs:2405:18:2405:42 | ...::method(...) | T | main.rs:2371:5:2372:14 | S2 | | main.rs:2405:29:2405:41 | ...::default(...) | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2409:21:2409:33 | ...::default(...) | | main.rs:2371:5:2372:14 | S2 | | main.rs:2410:13:2410:15 | x10 | | main.rs:2392:5:2394:5 | S5 | | main.rs:2410:13:2410:15 | x10 | T5 | main.rs:2371:5:2372:14 | S2 | | main.rs:2410:19:2413:9 | S5::<...> {...} | | main.rs:2392:5:2394:5 | S5 | @@ -3680,7 +3679,6 @@ inferCertainType | main.rs:2415:19:2415:33 | S5 {...} | | main.rs:2392:5:2394:5 | S5 | | main.rs:2416:13:2416:15 | x13 | | main.rs:2392:5:2394:5 | S5 | | main.rs:2416:19:2419:9 | S5 {...} | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2418:20:2418:32 | ...::default(...) | | main.rs:2371:5:2372:14 | S2 | | main.rs:2420:13:2420:15 | x14 | | {EXTERNAL LOCATION} | i32 | | main.rs:2420:19:2420:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:2421:13:2421:15 | x15 | | main.rs:2369:5:2369:20 | S1 | @@ -12269,10 +12267,7 @@ inferType | main.rs:2408:18:2408:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | | main.rs:2408:21:2408:21 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2409:13:2409:14 | x9 | | main.rs:2390:5:2390:27 | S4 | -| main.rs:2409:13:2409:14 | x9 | T4 | main.rs:2371:5:2372:14 | S2 | | main.rs:2409:18:2409:34 | S4(...) | | main.rs:2390:5:2390:27 | S4 | -| main.rs:2409:18:2409:34 | S4(...) | T4 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2409:21:2409:33 | ...::default(...) | | main.rs:2371:5:2372:14 | S2 | | main.rs:2410:13:2410:15 | x10 | | main.rs:2392:5:2394:5 | S5 | | main.rs:2410:13:2410:15 | x10 | T5 | main.rs:2371:5:2372:14 | S2 | | main.rs:2410:19:2413:9 | S5::<...> {...} | | main.rs:2392:5:2394:5 | S5 | @@ -12289,10 +12284,7 @@ inferType | main.rs:2415:19:2415:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | | main.rs:2415:31:2415:31 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2416:13:2416:15 | x13 | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2416:13:2416:15 | x13 | T5 | main.rs:2371:5:2372:14 | S2 | | main.rs:2416:19:2419:9 | S5 {...} | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2416:19:2419:9 | S5 {...} | T5 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2418:20:2418:32 | ...::default(...) | | main.rs:2371:5:2372:14 | S2 | | main.rs:2420:13:2420:15 | x14 | | {EXTERNAL LOCATION} | i32 | | main.rs:2420:19:2420:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:2420:30:2420:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | @@ -15861,3 +15853,18 @@ inferType | regressions.rs:179:24:179:27 | S(...) | T | {EXTERNAL LOCATION} | i32 | | regressions.rs:179:26:179:26 | 1 | | {EXTERNAL LOCATION} | i32 | testFailures +| main.rs:1308:44:1308:62 | //... | Missing result: target=default | +| main.rs:2406:48:2406:80 | //... | Missing result: target=default | +| main.rs:2409:37:2409:69 | //... | Missing result: target=default | +| main.rs:2409:37:2409:69 | //... | Missing result: type=x9:T4.S2 | +| main.rs:2412:40:2412:58 | //... | Missing result: target=default | +| main.rs:2416:22:2416:40 | //... | Missing result: type=x13:T5.S2 | +| main.rs:2418:35:2418:53 | //... | Missing result: target=default | +| main.rs:2574:41:2574:59 | //... | Missing result: target=default | +| main.rs:2698:37:2698:64 | //... | Missing result: target=default | +| overloading.rs:58:67:58:125 | //... | Missing result: target=default | +| overloading.rs:60:68:60:132 | //... | Missing result: target=default | +| overloading.rs:64:68:64:126 | //... | Missing result: target=default | +| overloading.rs:66:69:66:133 | //... | Missing result: target=default | +| overloading.rs:368:37:368:64 | //... | Missing result: target=default | +| overloading.rs:398:57:398:84 | //... | Missing result: target=default | diff --git a/rust/ql/test/query-tests/diagnostics/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/query-tests/diagnostics/CONSISTENCY/ExtractionConsistency.expected index 82c29ac7f2b0..5b4796faa8c5 100644 --- a/rust/ql/test/query-tests/diagnostics/CONSISTENCY/ExtractionConsistency.expected +++ b/rust/ql/test/query-tests/diagnostics/CONSISTENCY/ExtractionConsistency.expected @@ -5,4 +5,3 @@ extractionWarning | does_not_compile.rs:2:21:2:20 | expected SEMICOLON | | does_not_compile.rs:2:26:2:25 | expected SEMICOLON | | error.rs:2:5:2:17 | An error! | -| my_macro.rs:17:9:17:27 | macro expansion failed for 'myUndefinedMacro' | diff --git a/rust/ql/test/query-tests/security/CWE-295/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-295/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..e4c71e75287c --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-295/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,6 @@ +multipleResolvedTargets +| main.rs:36:16:36:41 | ...::builder(...) | +| main.rs:46:16:46:44 | ...::new(...) | +multiplePathResolutions +| main.rs:36:16:36:30 | ...::Client | +| main.rs:46:16:46:37 | ...::ClientBuilder | diff --git a/rust/ql/test/query-tests/security/CWE-311/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-311/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..e0fbd93fd64a --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-311/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,12 @@ +multipleResolvedTargets +| main.rs:20:18:20:39 | ...::new(...) | +| main.rs:21:5:21:20 | client.post(...) | +| main.rs:21:5:21:33 | ... .body(...) | +| main.rs:21:5:21:40 | ... .send() | +| main.rs:34:18:34:39 | ...::new(...) | +| main.rs:35:5:35:36 | client.request(...) | +| main.rs:35:5:35:49 | ... .body(...) | +| main.rs:35:5:35:56 | ... .send() | +multiplePathResolutions +| main.rs:20:18:20:32 | ...::Client | +| main.rs:34:18:34:32 | ...::Client | 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..8fdcfa97d675 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,9 @@ +multipleResolvedTargets +| main.rs:218:14:218:30 | ...::malloc(...) | +| main.rs:219:13:219:27 | ...::malloc(...) | +| main.rs:220:13:220:37 | ...::aligned_alloc(...) | +| main.rs:221:13:221:37 | ...::aligned_alloc(...) | +| main.rs:222:13:222:31 | ...::calloc(...) | +| main.rs:223:13:223:55 | ...::calloc(...) | +| main.rs:224:13:224:32 | ...::realloc(...) | +| main.rs:331:13:331:27 | ...::malloc(...) | diff --git a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..850ba012c153 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,3 @@ +multipleResolvedTargets +| deallocation.rs:106:16:106:32 | ...::malloc(...) | +| deallocation.rs:112:3:112:41 | ...::free(...) | diff --git a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..ac7fc3cad3f0 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,2 @@ +multiplePathResolutions +| request_forgery_tests.rs:79:5:79:18 | ...::runtime | diff --git a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/TypeInferenceConsistency.expected b/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/TypeInferenceConsistency.expected new file mode 100644 index 000000000000..b70ece5bb153 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/TypeInferenceConsistency.expected @@ -0,0 +1,8 @@ +nonUniqueCertainType +| request_forgery_tests.rs:8:24:8:46 | ...::get(...) | dyn(Output).T | +| request_forgery_tests.rs:17:25:17:42 | ...::get(...) | dyn(Output).T | +| request_forgery_tests.rs:21:25:21:42 | ...::get(...) | dyn(Output).T | +| request_forgery_tests.rs:25:25:25:42 | ...::get(...) | dyn(Output).T | +| request_forgery_tests.rs:31:29:31:51 | ...::get(...) | dyn(Output).T | +| request_forgery_tests.rs:37:37:37:59 | ...::get(...) | dyn(Output).T | +| request_forgery_tests.rs:68:28:68:43 | ...::get(...) | dyn(Output).T | From f66f82ce59032397d5339a479b74cb7c1e8beed0 Mon Sep 17 00:00:00 2001 From: Taus Date: Thu, 16 Apr 2026 20:31:11 +0000 Subject: [PATCH 012/167] Rust: fix downgrade script - add missing block_expr_try_block_modifiers Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../upgrade.properties | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties index 30fc1c731cab..a17d7f22b27e 100644 --- a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties +++ b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties @@ -1,12 +1,7 @@ description: Downgrade from rust-analyzer 0.0.328 to 0.0.301 compatibility: partial -format_args_arg_arg_names.rel: delete -struct_field_default_vals.rel: delete -variant_const_args.rel: delete -try_block_modifiers.rel: delete -try_block_modifier_is_try.rel: delete -try_block_modifier_type_reprs.rel: delete +block_expr_try_block_modifiers.rel: delete cfg_atoms.rel: delete cfg_attr_meta.rel: delete cfg_attr_meta_cfg_predicates.rel: delete @@ -15,14 +10,20 @@ cfg_composites.rel: delete cfg_composite_cfg_predicates.rel: delete cfg_meta.rel: delete cfg_meta_cfg_predicates.rel: delete +format_args_arg_arg_names.rel: delete key_value_meta.rel: delete key_value_meta_exprs.rel: delete key_value_meta_paths.rel: delete path_meta.rel: delete path_meta_paths.rel: delete +struct_field_default_vals.rel: delete token_tree_meta.rel: delete token_tree_meta_paths.rel: delete token_tree_meta_token_trees.rel: delete +try_block_modifier_is_try.rel: delete +try_block_modifiers.rel: delete +try_block_modifier_type_reprs.rel: delete unsafe_meta.rel: delete unsafe_meta_is_unsafe.rel: delete unsafe_meta_meta.rel: delete +variant_const_args.rel: delete From a2ecf6571156d33df8ce3ec36e87aa959b3c55b0 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Fri, 22 May 2026 17:14:42 +0200 Subject: [PATCH 013/167] Rust: accept test changes --- .../library-tests/type-inference/type-inference.expected | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 4d1ae6a72624..137b6cab0153 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -15848,11 +15848,11 @@ inferType | regressions.rs:179:26:179:26 | 1 | | {EXTERNAL LOCATION} | i32 | testFailures | main.rs:1308:44:1308:62 | //... | Missing result: target=default | -| main.rs:2406:48:2406:80 | //... | Missing result: target=default | -| main.rs:2409:37:2409:69 | //... | Missing result: target=default | -| main.rs:2409:37:2409:69 | //... | Missing result: type=x9:T4.S2 | +| main.rs:2406:48:2406:84 | //... | Missing result: target=default | +| main.rs:2409:37:2409:73 | //... | Missing result: target=default | +| main.rs:2409:37:2409:73 | //... | Missing result: type=x9@S4:S2 | | main.rs:2412:40:2412:58 | //... | Missing result: target=default | -| main.rs:2416:22:2416:40 | //... | Missing result: type=x13:T5.S2 | +| main.rs:2416:22:2416:44 | //... | Missing result: type=x13@S5:S2 | | main.rs:2418:35:2418:53 | //... | Missing result: target=default | | main.rs:2574:41:2574:59 | //... | Missing result: target=default | | main.rs:2698:37:2698:64 | //... | Missing result: target=default | From 7f2bda10661935680f0aeb664fbd7e92d7d90dc9 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 26 May 2026 18:17:38 +0200 Subject: [PATCH 014/167] Rust: Add full upgrade script for dbscheme migration Adds upgrade.ql with transformations for all schema changes from rust-analyzer 0.0.301 to 0.0.328: - Meta split into PathMeta/KeyValueMeta/TokenTreeMeta/UnsafeMeta - TraitAlias merged into Trait - BlockExpr.isTry() -> TryBlockModifier - StructField.getDefault() -> getDefaultVal() returning ConstArg - Variant.getDiscriminant() -> getConstArg() returning ConstArg - FormatArgsArg.getName() -> getArgName() returning FormatArgsArgName Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../upgrade.properties | 30 ++- .../upgrade.ql | 205 ++++++++++++++++++ 2 files changed, 234 insertions(+), 1 deletion(-) create mode 100644 rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.ql diff --git a/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.properties b/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.properties index c130c0f83810..55145c26245b 100644 --- a/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.properties +++ b/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.properties @@ -1,14 +1,29 @@ description: Upgrade from rust-analyzer 0.0.301 to 0.0.328 -compatibility: partial +compatibility: full block_expr_is_try.rel: delete +format_args_arg_names.rel: run upgrade.ql new_format_args_arg_names +format_args_arg_arg_names.rel: run upgrade.ql new_format_args_arg_arg_names meta.rel: delete meta_exprs.rel: delete meta_is_unsafe.rel: delete meta_paths.rel: delete meta_token_trees.rel: delete +path_meta.rel: run upgrade.ql new_path_meta +path_meta_paths.rel: run upgrade.ql new_path_meta_paths +key_value_meta.rel: run upgrade.ql new_key_value_meta +key_value_meta_exprs.rel: run upgrade.ql new_key_value_meta_exprs +key_value_meta_paths.rel: run upgrade.ql new_key_value_meta_paths +token_tree_meta.rel: run upgrade.ql new_token_tree_meta +token_tree_meta_paths.rel: run upgrade.ql new_token_tree_meta_paths +token_tree_meta_token_trees.rel: run upgrade.ql new_token_tree_meta_token_trees +unsafe_meta.rel: run upgrade.ql new_unsafe_meta +unsafe_meta_is_unsafe.rel: run upgrade.ql new_unsafe_meta_is_unsafe +unsafe_meta_meta.rel: run upgrade.ql new_unsafe_meta_meta struct_field_defaults.rel: delete +struct_field_default_vals.rel: run upgrade.ql new_struct_field_default_vals variant_discriminants.rel: delete +variant_const_args.rel: run upgrade.ql new_variant_const_args trait_aliases.rel: delete trait_alias_attrs.rel: delete trait_alias_generic_param_lists.rel: delete @@ -16,3 +31,16 @@ trait_alias_names.rel: delete trait_alias_type_bound_lists.rel: delete trait_alias_visibilities.rel: delete trait_alias_where_clauses.rel: delete +try_block_modifiers.rel: run upgrade.ql new_try_block_modifiers +try_block_modifier_is_try.rel: run upgrade.ql new_try_block_modifier_is_try +block_expr_try_block_modifiers.rel: run upgrade.ql new_block_expr_try_block_modifiers +const_args.rel: run upgrade.ql new_const_args +const_arg_exprs.rel: run upgrade.ql new_const_arg_exprs +traits.rel: run upgrade.ql new_traits +trait_attrs.rel: run upgrade.ql new_trait_attrs +trait_generic_param_lists.rel: run upgrade.ql new_trait_generic_param_lists +trait_names.rel: run upgrade.ql new_trait_names +trait_type_bound_lists.rel: run upgrade.ql new_trait_type_bound_lists +trait_visibilities.rel: run upgrade.ql new_trait_visibilities +trait_where_clauses.rel: run upgrade.ql new_trait_where_clauses +locatable_locations.rel: run upgrade.ql new_locatable_locations diff --git a/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.ql b/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.ql new file mode 100644 index 000000000000..db588965363a --- /dev/null +++ b/rust/ql/lib/upgrades/66a489863649185f4a9770f894505803059a1312/upgrade.ql @@ -0,0 +1,205 @@ +class Element extends @element { + string toString() { none() } +} + +class Location extends @location_default { + string toString() { none() } +} + +private predicate oldMetaHasExpr(Element meta) { meta_exprs(meta, _) } + +private predicate oldMetaHasPath(Element meta) { meta_paths(meta, _) } + +private predicate oldMetaHasTokenTree(Element meta) { meta_token_trees(meta, _) } + +private predicate oldMetaIsPath(Element meta) { + oldMetaHasPath(meta) and not oldMetaHasExpr(meta) and not oldMetaHasTokenTree(meta) +} + +private predicate oldMetaIsKeyValue(Element meta) { oldMetaHasPath(meta) and oldMetaHasExpr(meta) } + +private predicate oldMetaIsTokenTree(Element meta) { + oldMetaHasPath(meta) and oldMetaHasTokenTree(meta) and not oldMetaHasExpr(meta) +} + +private predicate oldMetaHasInnerShape(Element meta) { + oldMetaIsPath(meta) or oldMetaIsKeyValue(meta) or oldMetaIsTokenTree(meta) +} + +newtype TAddedElement = + TFormatArgsArgName(Element arg, Element name) { format_args_arg_names(arg, name) } or + TTryBlockModifier(Element block) { block_expr_is_try(block) } or + TStructFieldDefaultConstArg(Element field, Element expr) { struct_field_defaults(field, expr) } or + TVariantDiscriminantConstArg(Element variant, Element expr) { + variant_discriminants(variant, expr) + } or + TUnsafePathMeta(Element meta) { meta_is_unsafe(meta) and oldMetaIsPath(meta) } or + TUnsafeKeyValueMeta(Element meta) { meta_is_unsafe(meta) and oldMetaIsKeyValue(meta) } or + TUnsafeTokenTreeMeta(Element meta) { meta_is_unsafe(meta) and oldMetaIsTokenTree(meta) } + +module Fresh = QlBuiltins::NewEntity; + +class TNewElement = @element or Fresh::EntityId; + +class NewElement extends TNewElement { + string toString() { none() } +} + +private predicate isFreshInnerMeta(NewElement id, Element oldMeta) { + id = Fresh::map(TUnsafePathMeta(oldMeta)) or + id = Fresh::map(TUnsafeKeyValueMeta(oldMeta)) or + id = Fresh::map(TUnsafeTokenTreeMeta(oldMeta)) +} + +query predicate new_format_args_arg_names(NewElement id) { + id = Fresh::map(TFormatArgsArgName(_, _)) +} + +query predicate new_format_args_arg_arg_names(Element id, NewElement arg_name) { + arg_name = Fresh::map(TFormatArgsArgName(id, _)) +} + +query predicate new_try_block_modifiers(NewElement id) { id = Fresh::map(TTryBlockModifier(_)) } + +query predicate new_try_block_modifier_is_try(NewElement id) { + id = Fresh::map(TTryBlockModifier(_)) +} + +query predicate new_block_expr_try_block_modifiers(Element id, NewElement try_block_modifier) { + try_block_modifier = Fresh::map(TTryBlockModifier(id)) +} + +query predicate new_const_args(NewElement id) { + const_args(id) or + id = Fresh::map(TStructFieldDefaultConstArg(_, _)) or + id = Fresh::map(TVariantDiscriminantConstArg(_, _)) +} + +query predicate new_const_arg_exprs(NewElement id, Element expr) { + const_arg_exprs(id, expr) or + id = Fresh::map(TStructFieldDefaultConstArg(_, expr)) or + id = Fresh::map(TVariantDiscriminantConstArg(_, expr)) +} + +query predicate new_struct_field_default_vals(Element id, NewElement default_val) { + default_val = Fresh::map(TStructFieldDefaultConstArg(id, _)) +} + +query predicate new_variant_const_args(Element id, NewElement const_arg) { + const_arg = Fresh::map(TVariantDiscriminantConstArg(id, _)) +} + +query predicate new_traits(Element id) { traits(id) or trait_aliases(id) } + +query predicate new_trait_attrs(Element id, int index, Element attr) { + trait_attrs(id, index, attr) or trait_alias_attrs(id, index, attr) +} + +query predicate new_trait_generic_param_lists(Element id, Element generic_param_list) { + trait_generic_param_lists(id, generic_param_list) or + trait_alias_generic_param_lists(id, generic_param_list) +} + +query predicate new_trait_names(Element id, Element name) { + trait_names(id, name) or trait_alias_names(id, name) +} + +query predicate new_trait_type_bound_lists(Element id, Element type_bound_list) { + trait_type_bound_lists(id, type_bound_list) or trait_alias_type_bound_lists(id, type_bound_list) +} + +query predicate new_trait_visibilities(Element id, Element visibility) { + trait_visibilities(id, visibility) or trait_alias_visibilities(id, visibility) +} + +query predicate new_trait_where_clauses(Element id, Element where_clause) { + trait_where_clauses(id, where_clause) or trait_alias_where_clauses(id, where_clause) +} + +query predicate new_path_meta(NewElement id) { + meta(id) and not meta_is_unsafe(id) and oldMetaIsPath(id) + or + id = Fresh::map(TUnsafePathMeta(_)) +} + +query predicate new_path_meta_paths(NewElement id, Element path) { + meta_paths(id, path) and not meta_is_unsafe(id) and oldMetaIsPath(id) + or + exists(Element oldMeta | id = Fresh::map(TUnsafePathMeta(oldMeta)) and meta_paths(oldMeta, path)) +} + +query predicate new_key_value_meta(NewElement id) { + meta(id) and not meta_is_unsafe(id) and oldMetaIsKeyValue(id) + or + id = Fresh::map(TUnsafeKeyValueMeta(_)) +} + +query predicate new_key_value_meta_exprs(NewElement id, Element expr) { + meta_exprs(id, expr) and not meta_is_unsafe(id) and oldMetaIsKeyValue(id) + or + exists(Element oldMeta | + id = Fresh::map(TUnsafeKeyValueMeta(oldMeta)) and meta_exprs(oldMeta, expr) + ) +} + +query predicate new_key_value_meta_paths(NewElement id, Element path) { + meta_paths(id, path) and not meta_is_unsafe(id) and oldMetaIsKeyValue(id) + or + exists(Element oldMeta | + id = Fresh::map(TUnsafeKeyValueMeta(oldMeta)) and meta_paths(oldMeta, path) + ) +} + +query predicate new_token_tree_meta(NewElement id) { + meta(id) and not meta_is_unsafe(id) and oldMetaIsTokenTree(id) + or + id = Fresh::map(TUnsafeTokenTreeMeta(_)) +} + +query predicate new_token_tree_meta_paths(NewElement id, Element path) { + meta_paths(id, path) and not meta_is_unsafe(id) and oldMetaIsTokenTree(id) + or + exists(Element oldMeta | + id = Fresh::map(TUnsafeTokenTreeMeta(oldMeta)) and meta_paths(oldMeta, path) + ) +} + +query predicate new_token_tree_meta_token_trees(NewElement id, Element token_tree) { + meta_token_trees(id, token_tree) and not meta_is_unsafe(id) and oldMetaIsTokenTree(id) + or + exists(Element oldMeta | + id = Fresh::map(TUnsafeTokenTreeMeta(oldMeta)) and meta_token_trees(oldMeta, token_tree) + ) +} + +query predicate new_unsafe_meta(Element id) { meta_is_unsafe(id) } + +query predicate new_unsafe_meta_is_unsafe(Element id) { meta_is_unsafe(id) } + +query predicate new_unsafe_meta_meta(Element id, NewElement inner) { + meta_is_unsafe(id) and oldMetaHasInnerShape(id) and isFreshInnerMeta(inner, id) +} + +query predicate new_locatable_locations(NewElement id, Location location) { + locatable_locations(id, location) + or + exists(Element arg, Element name | + id = Fresh::map(TFormatArgsArgName(arg, name)) and locatable_locations(name, location) + ) + or + exists(Element block | + id = Fresh::map(TTryBlockModifier(block)) and locatable_locations(block, location) + ) + or + exists(Element field, Element expr | + id = Fresh::map(TStructFieldDefaultConstArg(field, expr)) and + locatable_locations(expr, location) + ) + or + exists(Element variant, Element expr | + id = Fresh::map(TVariantDiscriminantConstArg(variant, expr)) and + locatable_locations(expr, location) + ) + or + exists(Element oldMeta | isFreshInnerMeta(id, oldMeta) and locatable_locations(oldMeta, location)) +} From 25ab2e0280b06801183ecf1ff570bdfae8ce79a5 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 27 May 2026 09:33:18 +0200 Subject: [PATCH 015/167] Rust: Add full downgrade script for dbscheme migration Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../upgrade.properties | 32 +++- .../upgrade.ql | 174 ++++++++++++++++++ 2 files changed, 205 insertions(+), 1 deletion(-) create mode 100644 rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql diff --git a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties index a17d7f22b27e..1bd49f3382b4 100644 --- a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties +++ b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties @@ -1,7 +1,8 @@ description: Downgrade from rust-analyzer 0.0.328 to 0.0.301 -compatibility: partial +compatibility: full block_expr_try_block_modifiers.rel: delete +block_expr_is_try.rel: run upgrade.ql new_block_expr_is_try cfg_atoms.rel: delete cfg_attr_meta.rel: delete cfg_attr_meta_cfg_predicates.rel: delete @@ -10,16 +11,44 @@ cfg_composites.rel: delete cfg_composite_cfg_predicates.rel: delete cfg_meta.rel: delete cfg_meta_cfg_predicates.rel: delete +const_args.rel: run upgrade.ql new_const_args +const_arg_exprs.rel: run upgrade.ql new_const_arg_exprs format_args_arg_arg_names.rel: delete +format_args_arg_names.rel: run upgrade.ql new_format_args_arg_names key_value_meta.rel: delete key_value_meta_exprs.rel: delete key_value_meta_paths.rel: delete +locatable_locations.rel: run upgrade.ql new_locatable_locations +meta.rel: run upgrade.ql new_meta +meta_exprs.rel: run upgrade.ql new_meta_exprs +meta_is_unsafe.rel: run upgrade.ql new_meta_is_unsafe +meta_paths.rel: run upgrade.ql new_meta_paths +meta_token_trees.rel: run upgrade.ql new_meta_token_trees +names.rel: run upgrade.ql new_names path_meta.rel: delete path_meta_paths.rel: delete struct_field_default_vals.rel: delete +struct_field_defaults.rel: run upgrade.ql new_struct_field_defaults token_tree_meta.rel: delete token_tree_meta_paths.rel: delete token_tree_meta_token_trees.rel: delete +trait_assoc_item_lists.rel: run upgrade.ql new_trait_assoc_item_lists +trait_attrs.rel: run upgrade.ql new_trait_attrs +trait_generic_param_lists.rel: run upgrade.ql new_trait_generic_param_lists +trait_is_auto.rel: run upgrade.ql new_trait_is_auto +trait_is_unsafe.rel: run upgrade.ql new_trait_is_unsafe +trait_names.rel: run upgrade.ql new_trait_names +trait_type_bound_lists.rel: run upgrade.ql new_trait_type_bound_lists +trait_visibilities.rel: run upgrade.ql new_trait_visibilities +trait_where_clauses.rel: run upgrade.ql new_trait_where_clauses +trait_aliases.rel: run upgrade.ql new_trait_aliases +trait_alias_attrs.rel: run upgrade.ql new_trait_alias_attrs +trait_alias_generic_param_lists.rel: run upgrade.ql new_trait_alias_generic_param_lists +trait_alias_names.rel: run upgrade.ql new_trait_alias_names +trait_alias_type_bound_lists.rel: run upgrade.ql new_trait_alias_type_bound_lists +trait_alias_visibilities.rel: run upgrade.ql new_trait_alias_visibilities +trait_alias_where_clauses.rel: run upgrade.ql new_trait_alias_where_clauses +traits.rel: run upgrade.ql new_traits try_block_modifier_is_try.rel: delete try_block_modifiers.rel: delete try_block_modifier_type_reprs.rel: delete @@ -27,3 +56,4 @@ unsafe_meta.rel: delete unsafe_meta_is_unsafe.rel: delete unsafe_meta_meta.rel: delete variant_const_args.rel: delete +variant_discriminants.rel: run upgrade.ql new_variant_discriminants diff --git a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql new file mode 100644 index 000000000000..6cad9ea7277e --- /dev/null +++ b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql @@ -0,0 +1,174 @@ +class Element extends @element { + string toString() { none() } +} + +class Location extends @location_default { + string toString() { none() } +} + +private predicate wrapperConstArg(Element id) { + struct_field_default_vals(_, id) or variant_const_args(_, id) +} + +private predicate traitIsAlias(Element id) { + traits(id) and trait_type_bound_lists(id, _) and not trait_assoc_item_lists(id, _) +} + +private predicate sourceMeta(Element id) { + path_meta(id) or + key_value_meta(id) or + token_tree_meta(id) or + unsafe_meta(id) or + cfg_meta(id) or + cfg_attr_meta(id) +} + +private predicate unsafeInnerMeta(Element id) { + unsafe_meta_meta(_, id) +} + +private predicate metaPath(Element id, Element path) { + path_meta_paths(id, path) or key_value_meta_paths(id, path) or token_tree_meta_paths(id, path) +} + +private predicate metaExpr(Element id, Element expr) { + key_value_meta_exprs(id, expr) +} + +private predicate metaTokenTree(Element id, Element tokenTree) { + token_tree_meta_token_trees(id, tokenTree) +} + +private predicate deletedElement(Element id) { + wrapperConstArg(id) or + unsafeInnerMeta(id) or + cfg_atoms(id) or + cfg_composites(id) or + try_block_modifiers(id) +} + +query predicate new_block_expr_is_try(Element id) { + exists(Element modifier | block_expr_try_block_modifiers(id, modifier) and try_block_modifier_is_try(modifier)) +} + +query predicate new_names(Element id) { + names(id) or format_args_arg_names(id) +} + +query predicate new_format_args_arg_names(Element id, Element name) { + format_args_arg_arg_names(id, name) +} + +query predicate new_const_args(Element id) { + const_args(id) and not wrapperConstArg(id) +} + +query predicate new_const_arg_exprs(Element id, Element expr) { + const_arg_exprs(id, expr) and not wrapperConstArg(id) +} + +query predicate new_struct_field_defaults(Element id, Element expr) { + exists(Element constArg | struct_field_default_vals(id, constArg) and const_arg_exprs(constArg, expr)) +} + +query predicate new_variant_discriminants(Element id, Element expr) { + exists(Element constArg | variant_const_args(id, constArg) and const_arg_exprs(constArg, expr)) +} + +query predicate new_meta(Element id) { + sourceMeta(id) and not unsafeInnerMeta(id) +} + +query predicate new_meta_paths(Element id, Element path) { + metaPath(id, path) and not unsafeInnerMeta(id) + or + exists(Element inner | unsafe_meta_meta(id, inner) and metaPath(inner, path)) +} + +query predicate new_meta_exprs(Element id, Element expr) { + metaExpr(id, expr) and not unsafeInnerMeta(id) + or + exists(Element inner | unsafe_meta_meta(id, inner) and metaExpr(inner, expr)) +} + +query predicate new_meta_token_trees(Element id, Element tokenTree) { + metaTokenTree(id, tokenTree) and not unsafeInnerMeta(id) + or + exists(Element inner | unsafe_meta_meta(id, inner) and metaTokenTree(inner, tokenTree)) +} + +query predicate new_meta_is_unsafe(Element id) { + unsafe_meta_is_unsafe(id) +} + +query predicate new_traits(Element id) { + traits(id) and not traitIsAlias(id) +} + +query predicate new_trait_assoc_item_lists(Element id, Element assocItemList) { + trait_assoc_item_lists(id, assocItemList) and not traitIsAlias(id) +} + +query predicate new_trait_attrs(Element id, int index, Element attr) { + trait_attrs(id, index, attr) and not traitIsAlias(id) +} + +query predicate new_trait_generic_param_lists(Element id, Element genericParamList) { + trait_generic_param_lists(id, genericParamList) and not traitIsAlias(id) +} + +query predicate new_trait_is_auto(Element id) { + trait_is_auto(id) and not traitIsAlias(id) +} + +query predicate new_trait_is_unsafe(Element id) { + trait_is_unsafe(id) and not traitIsAlias(id) +} + +query predicate new_trait_names(Element id, Element name) { + trait_names(id, name) and not traitIsAlias(id) +} + +query predicate new_trait_type_bound_lists(Element id, Element typeBoundList) { + trait_type_bound_lists(id, typeBoundList) and not traitIsAlias(id) +} + +query predicate new_trait_visibilities(Element id, Element visibility) { + trait_visibilities(id, visibility) and not traitIsAlias(id) +} + +query predicate new_trait_where_clauses(Element id, Element whereClause) { + trait_where_clauses(id, whereClause) and not traitIsAlias(id) +} + +query predicate new_trait_aliases(Element id) { + traitIsAlias(id) +} + +query predicate new_trait_alias_attrs(Element id, int index, Element attr) { + trait_attrs(id, index, attr) and traitIsAlias(id) +} + +query predicate new_trait_alias_generic_param_lists(Element id, Element genericParamList) { + trait_generic_param_lists(id, genericParamList) and traitIsAlias(id) +} + +query predicate new_trait_alias_names(Element id, Element name) { + trait_names(id, name) and traitIsAlias(id) +} + +query predicate new_trait_alias_type_bound_lists(Element id, Element typeBoundList) { + trait_type_bound_lists(id, typeBoundList) and traitIsAlias(id) +} + +query predicate new_trait_alias_visibilities(Element id, Element visibility) { + trait_visibilities(id, visibility) and traitIsAlias(id) +} + +query predicate new_trait_alias_where_clauses(Element id, Element whereClause) { + trait_where_clauses(id, whereClause) and traitIsAlias(id) +} + +query predicate new_locatable_locations(Element id, Location location) { + locatable_locations(id, location) and not deletedElement(id) +} From f4faf4cd45882eef6cdccf076778c70886fa776a Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 27 May 2026 10:32:22 +0200 Subject: [PATCH 016/167] Rust: Filter downgraded comments on removed nodes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../upgrade.properties | 1 + .../109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties index 1bd49f3382b4..9cba151b6f06 100644 --- a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties +++ b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.properties @@ -11,6 +11,7 @@ cfg_composites.rel: delete cfg_composite_cfg_predicates.rel: delete cfg_meta.rel: delete cfg_meta_cfg_predicates.rel: delete +comments.rel: run upgrade.ql new_comments const_args.rel: run upgrade.ql new_const_args const_arg_exprs.rel: run upgrade.ql new_const_arg_exprs format_args_arg_arg_names.rel: delete diff --git a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql index 6cad9ea7277e..ab0c3052dad2 100644 --- a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql +++ b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql @@ -44,6 +44,7 @@ private predicate deletedElement(Element id) { unsafeInnerMeta(id) or cfg_atoms(id) or cfg_composites(id) or + format_args_arg_names(id) or try_block_modifiers(id) } @@ -67,6 +68,10 @@ query predicate new_const_arg_exprs(Element id, Element expr) { const_arg_exprs(id, expr) and not wrapperConstArg(id) } +query predicate new_comments(Element id, Element parent, string text) { + comments(id, parent, text) and not deletedElement(parent) +} + query predicate new_struct_field_defaults(Element id, Element expr) { exists(Element constArg | struct_field_default_vals(id, constArg) and const_arg_exprs(constArg, expr)) } From b89d9ad1e043f642ba2f729ed4b4c64fe58ab722 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 27 May 2026 10:34:57 +0200 Subject: [PATCH 017/167] Rust: Drop locations for downgraded comments Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../upgrade.ql | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql index ab0c3052dad2..d162d3a6bbdf 100644 --- a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql +++ b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql @@ -39,7 +39,7 @@ private predicate metaTokenTree(Element id, Element tokenTree) { token_tree_meta_token_trees(id, tokenTree) } -private predicate deletedElement(Element id) { +private predicate deletedAstNode(Element id) { wrapperConstArg(id) or unsafeInnerMeta(id) or cfg_atoms(id) or @@ -48,6 +48,12 @@ private predicate deletedElement(Element id) { try_block_modifiers(id) } +private predicate deletedElement(Element id) { + deletedAstNode(id) + or + exists(Element parent, string text | comments(id, parent, text) and deletedAstNode(parent)) +} + query predicate new_block_expr_is_try(Element id) { exists(Element modifier | block_expr_try_block_modifiers(id, modifier) and try_block_modifier_is_try(modifier)) } @@ -69,7 +75,7 @@ query predicate new_const_arg_exprs(Element id, Element expr) { } query predicate new_comments(Element id, Element parent, string text) { - comments(id, parent, text) and not deletedElement(parent) + comments(id, parent, text) and not deletedAstNode(parent) } query predicate new_struct_field_defaults(Element id, Element expr) { From 63d8bb7d5b678a6542e7b57c67268e17ea9404f6 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Thu, 28 May 2026 09:00:54 +0200 Subject: [PATCH 018/167] Rust: Format downgrade query Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../upgrade.ql | 48 +++++++------------ 1 file changed, 16 insertions(+), 32 deletions(-) diff --git a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql index d162d3a6bbdf..4fff5c8ddba3 100644 --- a/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql +++ b/rust/downgrades/109496fd2f20f28a35e50b110859e74882ee80d6/upgrade.ql @@ -23,17 +23,13 @@ private predicate sourceMeta(Element id) { cfg_attr_meta(id) } -private predicate unsafeInnerMeta(Element id) { - unsafe_meta_meta(_, id) -} +private predicate unsafeInnerMeta(Element id) { unsafe_meta_meta(_, id) } private predicate metaPath(Element id, Element path) { path_meta_paths(id, path) or key_value_meta_paths(id, path) or token_tree_meta_paths(id, path) } -private predicate metaExpr(Element id, Element expr) { - key_value_meta_exprs(id, expr) -} +private predicate metaExpr(Element id, Element expr) { key_value_meta_exprs(id, expr) } private predicate metaTokenTree(Element id, Element tokenTree) { token_tree_meta_token_trees(id, tokenTree) @@ -55,20 +51,18 @@ private predicate deletedElement(Element id) { } query predicate new_block_expr_is_try(Element id) { - exists(Element modifier | block_expr_try_block_modifiers(id, modifier) and try_block_modifier_is_try(modifier)) + exists(Element modifier | + block_expr_try_block_modifiers(id, modifier) and try_block_modifier_is_try(modifier) + ) } -query predicate new_names(Element id) { - names(id) or format_args_arg_names(id) -} +query predicate new_names(Element id) { names(id) or format_args_arg_names(id) } query predicate new_format_args_arg_names(Element id, Element name) { format_args_arg_arg_names(id, name) } -query predicate new_const_args(Element id) { - const_args(id) and not wrapperConstArg(id) -} +query predicate new_const_args(Element id) { const_args(id) and not wrapperConstArg(id) } query predicate new_const_arg_exprs(Element id, Element expr) { const_arg_exprs(id, expr) and not wrapperConstArg(id) @@ -79,16 +73,16 @@ query predicate new_comments(Element id, Element parent, string text) { } query predicate new_struct_field_defaults(Element id, Element expr) { - exists(Element constArg | struct_field_default_vals(id, constArg) and const_arg_exprs(constArg, expr)) + exists(Element constArg | + struct_field_default_vals(id, constArg) and const_arg_exprs(constArg, expr) + ) } query predicate new_variant_discriminants(Element id, Element expr) { exists(Element constArg | variant_const_args(id, constArg) and const_arg_exprs(constArg, expr)) } -query predicate new_meta(Element id) { - sourceMeta(id) and not unsafeInnerMeta(id) -} +query predicate new_meta(Element id) { sourceMeta(id) and not unsafeInnerMeta(id) } query predicate new_meta_paths(Element id, Element path) { metaPath(id, path) and not unsafeInnerMeta(id) @@ -108,13 +102,9 @@ query predicate new_meta_token_trees(Element id, Element tokenTree) { exists(Element inner | unsafe_meta_meta(id, inner) and metaTokenTree(inner, tokenTree)) } -query predicate new_meta_is_unsafe(Element id) { - unsafe_meta_is_unsafe(id) -} +query predicate new_meta_is_unsafe(Element id) { unsafe_meta_is_unsafe(id) } -query predicate new_traits(Element id) { - traits(id) and not traitIsAlias(id) -} +query predicate new_traits(Element id) { traits(id) and not traitIsAlias(id) } query predicate new_trait_assoc_item_lists(Element id, Element assocItemList) { trait_assoc_item_lists(id, assocItemList) and not traitIsAlias(id) @@ -128,13 +118,9 @@ query predicate new_trait_generic_param_lists(Element id, Element genericParamLi trait_generic_param_lists(id, genericParamList) and not traitIsAlias(id) } -query predicate new_trait_is_auto(Element id) { - trait_is_auto(id) and not traitIsAlias(id) -} +query predicate new_trait_is_auto(Element id) { trait_is_auto(id) and not traitIsAlias(id) } -query predicate new_trait_is_unsafe(Element id) { - trait_is_unsafe(id) and not traitIsAlias(id) -} +query predicate new_trait_is_unsafe(Element id) { trait_is_unsafe(id) and not traitIsAlias(id) } query predicate new_trait_names(Element id, Element name) { trait_names(id, name) and not traitIsAlias(id) @@ -152,9 +138,7 @@ query predicate new_trait_where_clauses(Element id, Element whereClause) { trait_where_clauses(id, whereClause) and not traitIsAlias(id) } -query predicate new_trait_aliases(Element id) { - traitIsAlias(id) -} +query predicate new_trait_aliases(Element id) { traitIsAlias(id) } query predicate new_trait_alias_attrs(Element id, int index, Element attr) { trait_attrs(id, index, attr) and traitIsAlias(id) From 612b9237da553762c57c0aa902ef20d6bb25ffdc Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 2 Jun 2026 16:36:01 +0100 Subject: [PATCH 019/167] Rust: Undo hiding some warnings in the extraction consistency check query. --- rust/ql/consistency-queries/ExtractionConsistency.ql | 4 +--- .../CONSISTENCY/ExtractionConsistency.expected | 2 ++ .../diagnostics/CONSISTENCY/ExtractionConsistency.expected | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/rust/ql/consistency-queries/ExtractionConsistency.ql b/rust/ql/consistency-queries/ExtractionConsistency.ql index e07ed64df075..26ce4c31ecc4 100644 --- a/rust/ql/consistency-queries/ExtractionConsistency.ql +++ b/rust/ql/consistency-queries/ExtractionConsistency.ql @@ -12,7 +12,5 @@ query predicate extractionError(ExtractionError ee) { } query predicate extractionWarning(ExtractionWarning ew) { - (not exists(ew.getLocation()) or ew.getLocation().fromSource()) and - // macro expansion failures are expected for macros like compile_error! and panic! - not ew.getMessage().matches("macro expansion failed for%") + (not exists(ew.getLocation()) or ew.getLocation().fromSource()) } diff --git a/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/ExtractionConsistency.expected index e69de29bb2d1..5c472b07a14f 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/ExtractionConsistency.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/ExtractionConsistency.expected @@ -0,0 +1,2 @@ +extractionWarning +| macro_expansion.rs:56:9:56:31 | macro expansion failed for 'concat' | diff --git a/rust/ql/test/query-tests/diagnostics/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/query-tests/diagnostics/CONSISTENCY/ExtractionConsistency.expected index 5b4796faa8c5..82c29ac7f2b0 100644 --- a/rust/ql/test/query-tests/diagnostics/CONSISTENCY/ExtractionConsistency.expected +++ b/rust/ql/test/query-tests/diagnostics/CONSISTENCY/ExtractionConsistency.expected @@ -5,3 +5,4 @@ extractionWarning | does_not_compile.rs:2:21:2:20 | expected SEMICOLON | | does_not_compile.rs:2:26:2:25 | expected SEMICOLON | | error.rs:2:5:2:17 | An error! | +| my_macro.rs:17:9:17:27 | macro expansion failed for 'myUndefinedMacro' | From 9024cbaecb2e6501df1adcafdb382f72542b5743 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 2 Jun 2026 17:04:45 +0100 Subject: [PATCH 020/167] Rust: Remove redundant brackets. --- rust/ql/consistency-queries/ExtractionConsistency.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/consistency-queries/ExtractionConsistency.ql b/rust/ql/consistency-queries/ExtractionConsistency.ql index 26ce4c31ecc4..c6e9bcdc2cb7 100644 --- a/rust/ql/consistency-queries/ExtractionConsistency.ql +++ b/rust/ql/consistency-queries/ExtractionConsistency.ql @@ -12,5 +12,5 @@ query predicate extractionError(ExtractionError ee) { } query predicate extractionWarning(ExtractionWarning ew) { - (not exists(ew.getLocation()) or ew.getLocation().fromSource()) + not exists(ew.getLocation()) or ew.getLocation().fromSource() } From db9d781f369fb3edcd11738388b224a0e415f5b1 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 2 Jun 2026 18:07:43 +0100 Subject: [PATCH 021/167] Rust: More impacted test expectations. --- .../sources/database/CONSISTENCY/ExtractionConsistency.expected | 2 ++ .../sources/file/CONSISTENCY/ExtractionConsistency.expected | 2 ++ .../sources/stdin/CONSISTENCY/ExtractionConsistency.expected | 2 ++ .../CWE-079/warp/CONSISTENCY/ExtractionConsistency.expected | 2 ++ 4 files changed, 8 insertions(+) create mode 100644 rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/ExtractionConsistency.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/ExtractionConsistency.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/ExtractionConsistency.expected create mode 100644 rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/ExtractionConsistency.expected diff --git a/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/ExtractionConsistency.expected new file mode 100644 index 000000000000..61ef42d077a4 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/ExtractionConsistency.expected @@ -0,0 +1,2 @@ +extractionWarning +| test.rs:221:7:221:10 | macro expansion failed for 'panic' | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/ExtractionConsistency.expected new file mode 100644 index 000000000000..9f7a9af6e891 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/ExtractionConsistency.expected @@ -0,0 +1,2 @@ +extractionWarning +| test.rs:326:7:326:10 | macro expansion failed for 'panic' | diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/ExtractionConsistency.expected new file mode 100644 index 000000000000..1669b7895193 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/ExtractionConsistency.expected @@ -0,0 +1,2 @@ +extractionWarning +| test.rs:218:7:218:10 | macro expansion failed for 'panic' | diff --git a/rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/ExtractionConsistency.expected new file mode 100644 index 000000000000..133438cef21c --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/ExtractionConsistency.expected @@ -0,0 +1,2 @@ +extractionWarning +| main.rs:1:1:1:1 | macro expansion failed for 'panic' | From 00d297693c94d82b785233ddf532386d0efc5a82 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 3 Jun 2026 11:03:32 +0100 Subject: [PATCH 022/167] Rust: More impacted test expectations (2). --- .../ExtractionConsistency.expected | 2 ++ .../ExtractionConsistency.expected | 2 ++ .../ExtractionConsistency.expected | 2 ++ .../ExtractionConsistency.expected | 22 +++++++++++++++++++ 4 files changed, 28 insertions(+) create mode 100644 rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/ExtractionConsistency.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/ExtractionConsistency.expected create mode 100644 rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/ExtractionConsistency.expected create mode 100644 rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/ExtractionConsistency.expected diff --git a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/ExtractionConsistency.expected new file mode 100644 index 000000000000..bc5b5c896a5a --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/ExtractionConsistency.expected @@ -0,0 +1,2 @@ +extractionWarning +| test.rs:563:7:563:10 | macro expansion failed for 'panic' | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/ExtractionConsistency.expected new file mode 100644 index 000000000000..eb9d8e47d74c --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/ExtractionConsistency.expected @@ -0,0 +1,2 @@ +extractionWarning +| test.rs:267:62:267:62 | macro expansion failed for 'panic' | diff --git a/rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/ExtractionConsistency.expected new file mode 100644 index 000000000000..39c3a932a0ba --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/ExtractionConsistency.expected @@ -0,0 +1,2 @@ +extractionWarning +| main.rs:19:46:19:46 | macro expansion failed for 'panic' | diff --git a/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/ExtractionConsistency.expected new file mode 100644 index 000000000000..e63e6374ba5b --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/ExtractionConsistency.expected @@ -0,0 +1,22 @@ +extractionWarning +| test.rs:16:10:19:5 | macro expansion failed for 'compile_error' | +| test.rs:23:17:24:9 | macro expansion failed for 'compile_error' | +| test.rs:28:3:28:12 | macro expansion failed for 'compile_error' | +| test.rs:33:3:33:12 | macro expansion failed for 'compile_error' | +| test.rs:39:3:39:12 | macro expansion failed for 'compile_error' | +| test.rs:50:3:50:6 | macro expansion failed for 'compile_error' | +| test.rs:55:3:55:6 | macro expansion failed for 'compile_error' | +| test.rs:60:3:60:6 | macro expansion failed for 'compile_error' | +| test.rs:65:3:65:6 | macro expansion failed for 'compile_error' | +| test.rs:73:3:73:6 | macro expansion failed for 'compile_error' | +| test.rs:78:3:78:6 | macro expansion failed for 'compile_error' | +| test.rs:87:3:87:6 | macro expansion failed for 'compile_error' | +| test.rs:94:3:94:6 | macro expansion failed for 'compile_error' | +| test.rs:99:3:99:12 | macro expansion failed for 'compile_error' | +| test.rs:104:3:104:12 | macro expansion failed for 'compile_error' | +| test.rs:112:3:112:12 | macro expansion failed for 'compile_error' | +| test.rs:128:3:128:6 | macro expansion failed for 'compile_error' | +| test.rs:139:3:139:6 | macro expansion failed for 'compile_error' | +| test.rs:144:3:144:6 | macro expansion failed for 'compile_error' | +| test.rs:150:3:150:6 | macro expansion failed for 'compile_error' | +| test.rs:168:3:168:6 | macro expansion failed for 'compile_error' | From 85b2fcedf4eaa131480adb94c61e9f37a64370d9 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 2 Jun 2026 17:15:18 +0100 Subject: [PATCH 023/167] Rust: Undo another change to the consistency check queries. --- rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll | 3 --- .../sources/net/CONSISTENCY/PathResolutionConsistency.expected | 3 +++ .../CWE-918/CONSISTENCY/PathResolutionConsistency.expected | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll b/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll index 37de5d358151..e3416b1480b0 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll @@ -8,9 +8,6 @@ private import PathResolution /** Holds if `p` may resolve to multiple items including `i`. */ query predicate multiplePathResolutions(Path p, ItemNode i) { p.fromSource() and - not p.(AstNode).isInMacroExpansion() and - // exclude paths inside attributes (e.g. `#[tokio::main]`) - not p.getParentNode*() instanceof Attr and i = resolvePath(p) and // `panic` is defined in both `std` and `core`; both are included in the prelude not p.getText() = "panic" and diff --git a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected index 4388f45f296e..5be3b1490017 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,6 @@ multipleResolvedTargets | test.rs:23:26:23:66 | ... .text() | | test.rs:26:26:26:67 | ... .bytes() | +multiplePathResolutions +| test.rs:517:3:517:13 | ...::main | +| test.rs:563:5:563:6 | ...::runtime | diff --git a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected index ac7fc3cad3f0..eb6f8590fbdd 100644 --- a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected @@ -1,2 +1,4 @@ multiplePathResolutions +| request_forgery_tests.rs:60:7:60:17 | ...::main | +| request_forgery_tests.rs:64:9:64:11 | ...::runtime | | request_forgery_tests.rs:79:5:79:18 | ...::runtime | From 1d6ac57dd63a91b85a02a5b0bc5490510d6aa1f6 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 3 Aug 2026 15:36:47 +0200 Subject: [PATCH 024/167] Rust: Restore built-in derive macro expansion under rust-analyzer 0.0.328 rust-analyzer 0.0.317 re-modeled built-in derives (`Debug`, `PartialEq`, `Eq`, ...) as synthetic impls rather than syntactic macro expansions, so `Semantics::expand_derive_macro` returns nothing for them and the 0.0.328 upgrade silently dropped their extraction. This regressed queries that depend on the derived impls (e.g. `rust/insecure-cookie`). Reconstruct the expansions extractor-side by re-running the still-public built-in derive expander over the ADT and emitting the resulting `impl` items. Synthesized nodes are not in the semantics cache, so their source locations are resolved through the expansion span map instead of `Semantics::original_range`. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 86c6ce1d-a625-491a-94ea-eae08d3cc1be --- Cargo.lock | 1 + MODULE.bazel | 1 + .../tree_sitter_extractors_deps/BUILD.bazel | 12 + .../tree_sitter_extractors_deps/defs.bzl | 2 + rust/extractor/Cargo.toml | 1 + rust/extractor/src/translate/base.rs | 105 +++- .../canonical_path/canonical_paths.expected | 3 + .../generated/MacroItems/MacroItems.expected | 2 + .../macro-expansion/PrintAst.expected | 197 +++++++ .../macro-expansion/test.expected | 3 + .../type-inference/type-inference.expected | 23 +- .../security/CWE-614/InsecureCookie.expected | 528 ++++++++++++++---- 12 files changed, 750 insertions(+), 128 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a6fc6ddca7ff..4c787086bddc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -505,6 +505,7 @@ dependencies = [ "ra_ap_project_model", "ra_ap_span", "ra_ap_syntax", + "ra_ap_syntax-bridge", "ra_ap_vfs", "rust-extractor-macros", "serde", diff --git a/MODULE.bazel b/MODULE.bazel index 9ecf728200fb..e06b7ce9bbdc 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -135,6 +135,7 @@ use_repo( "vendor_ts__ra_ap_span-0.0.328", "vendor_ts__ra_ap_stdx-0.0.328", "vendor_ts__ra_ap_syntax-0.0.328", + "vendor_ts__ra_ap_syntax-bridge-0.0.328", "vendor_ts__ra_ap_vfs-0.0.328", "vendor_ts__rand-0.10.1", "vendor_ts__rayon-1.12.0", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel index 8d1a63e1e5ef..579a8a61fd86 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel @@ -457,6 +457,18 @@ alias( tags = ["manual"], ) +alias( + name = "ra_ap_syntax-bridge-0.0.328", + actual = "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge", + tags = ["manual"], +) + +alias( + name = "ra_ap_syntax-bridge", + actual = "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge", + tags = ["manual"], +) + alias( name = "ra_ap_vfs-0.0.328", actual = "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl index 75ec0cf7fd85..a1542cc9cda4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl @@ -350,6 +350,7 @@ _NORMAL_DEPENDENCIES = { "ra_ap_project_model": Label("@vendor_ts__ra_ap_project_model-0.0.328//:ra_ap_project_model"), "ra_ap_span": Label("@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span"), "ra_ap_syntax": Label("@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax"), + "ra_ap_syntax-bridge": Label("@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge"), "ra_ap_vfs": Label("@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs"), "serde": Label("@vendor_ts__serde-1.0.228//:serde"), "serde_json": Label("@vendor_ts__serde_json-1.0.150//:serde_json"), @@ -4498,6 +4499,7 @@ def crate_repositories(): struct(repo = "vendor_ts__ra_ap_span-0.0.328", is_dev_dep = False), struct(repo = "vendor_ts__ra_ap_stdx-0.0.328", is_dev_dep = False), struct(repo = "vendor_ts__ra_ap_syntax-0.0.328", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_syntax-bridge-0.0.328", is_dev_dep = False), struct(repo = "vendor_ts__ra_ap_vfs-0.0.328", is_dev_dep = False), struct(repo = "vendor_ts__rayon-1.12.0", is_dev_dep = False), struct(repo = "vendor_ts__regex-1.12.3", is_dev_dep = False), diff --git a/rust/extractor/Cargo.toml b/rust/extractor/Cargo.toml index 41199b7c8f98..60376b5b67e8 100644 --- a/rust/extractor/Cargo.toml +++ b/rust/extractor/Cargo.toml @@ -20,6 +20,7 @@ ra_ap_load-cargo = "0.0.328" ra_ap_paths = "0.0.328" ra_ap_project_model = "0.0.328" ra_ap_syntax = "0.0.328" +ra_ap_syntax-bridge = "0.0.328" ra_ap_vfs = "0.0.328" ra_ap_parser = "0.0.328" ra_ap_span = "0.0.328" diff --git a/rust/extractor/src/translate/base.rs b/rust/extractor/src/translate/base.rs index 403e69c50c39..62ff3d5fa10e 100644 --- a/rust/extractor/src/translate/base.rs +++ b/rust/extractor/src/translate/base.rs @@ -6,16 +6,19 @@ use crate::trap::{Label, TrapClass}; use ra_ap_base_db::EditionedFileId; use ra_ap_hir::Semantics; use ra_ap_hir::db::ExpandDatabase; -use ra_ap_hir_expand::{ExpandResult, ExpandTo, InFile}; +use ra_ap_hir_expand::builtin::{BuiltinDeriveExpander, find_builtin_derive}; +use ra_ap_hir_expand::span_map::ExpansionSpanMap; +use ra_ap_hir_expand::{ExpandResult, ExpandTo, InFile, map_node_range_up_rooted}; use ra_ap_ide_db::RootDatabase; use ra_ap_ide_db::line_index::{LineCol, LineIndex}; -use ra_ap_parser::SyntaxKind; +use ra_ap_parser::{SyntaxKind, TopEntryPoint}; use ra_ap_span::TextSize; use ra_ap_syntax::ast::HasAttrs; use ra_ap_syntax::{ AstNode, NodeOrToken, SyntaxElementChildren, SyntaxError, SyntaxNode, SyntaxToken, TextRange, ast, }; +use ra_ap_syntax_bridge::{DocCommentDesugarMode, syntax_node_to_token_tree, token_tree_to_syntax_node}; impl Emission for Translator<'_> { fn pre_emit(&mut self, node: &ast::Item) -> Option> { @@ -128,6 +131,10 @@ pub struct Translator<'a> { source_kind: SourceKind, pub(crate) macro_context_depth: usize, diagnostic_count: usize, + /// When emitting a reconstructed built-in derive expansion, holds the span map of the + /// synthesized syntax tree. Those nodes are not registered in the semantics cache, so + /// locations are resolved through this map instead of `Semantics::original_range`. + builtin_derive_span_map: Option, } const UNKNOWN_LOCATION: (LineCol, LineCol) = @@ -154,6 +161,7 @@ impl<'a> Translator<'a> { source_kind, macro_context_depth: 0, diagnostic_count: 0, + builtin_derive_span_map: None, } } fn location(&self, range: TextRange) -> Option<(LineCol, LineCol)> { @@ -177,6 +185,15 @@ impl<'a> Translator<'a> { } pub fn text_range_for_node(&mut self, node: &impl ast::AstNode) -> Option { + if let Some(span_map) = self.builtin_derive_span_map.as_ref() { + // Nodes synthesized by a reconstructed built-in derive expansion are not in the + // semantics cache; resolve their original source range through the expansion span map. + let semantics = self.semantics.as_ref()?; + let file_id = self.file_id?; + let file_range = + map_node_range_up_rooted(semantics.db, span_map, node.syntax().text_range())?; + return (file_id == file_range.file_id).then_some(file_range.range); + } if let Some(semantics) = self.semantics.as_ref() { let file_range = semantics.original_range(node.syntax()); let file_id = self.file_id?; @@ -411,6 +428,11 @@ impl<'a> Translator<'a> { // way as from version 0.0.274 rust-analyser only expands in the context of an expansion return; } + if self.builtin_derive_span_map.is_some() { + // inside a reconstructed built-in derive expansion the macro call is not registered in + // the semantics cache, so it cannot (and need not) be expanded further + return; + } if let Some(expanded) = self .semantics .as_ref() @@ -582,7 +604,8 @@ impl<'a> Translator<'a> { fn is_attribute_macro_target(&self, node: &ast::Item) -> bool { // rust-analyzer considers as an `attr_macro_call` also a plain macro call, but we want to // process that differently (in `extract_macro_call_expanded`) - !matches!(node, ast::Item::MacroCall(_)) + self.builtin_derive_span_map.is_none() + && !matches!(node, ast::Item::MacroCall(_)) && self.semantics.is_some_and(|semantics| { let file = semantics.hir_file_for(node.syntax()); let node = InFile::new(file, node); @@ -703,6 +726,51 @@ impl<'a> Translator<'a> { } } + /// Reconstructs the expansion of a built-in derive macro (e.g. `Debug`, `PartialEq`). + /// + /// Since rust-analyzer 0.0.317 built-in derives are modeled as synthetic impls rather than + /// syntactic macro expansions, `Semantics::expand_derive_macro` no longer returns anything for + /// them. We re-run the still-public built-in derive expander over the ADT and emit the resulting + /// `impl` items ourselves. The synthesized nodes are not registered in the semantics + /// cache, so `builtin_derive_span_map` is set for the duration of the emission to route their + /// locations through the expansion span map. + fn emit_builtin_derive_expansion( + &mut self, + adt: &ast::Adt, + expander: BuiltinDeriveExpander, + ) -> Option> { + let semantics = self.semantics?; + let db = semantics.db; + let file_id = semantics.hir_file_for(adt.syntax()); + let span_map = db.span_map(file_id); + let call_site = span_map.span_for_range(adt.syntax().text_range()); + let input = syntax_node_to_token_tree( + adt.syntax(), + span_map.as_ref(), + call_site, + DocCommentDesugarMode::ProcMacro, + ); + let ExpandResult { value: output, err } = expander.expander()(db, call_site, &input); + let edition = self.file_id?.edition(db); + let (parsed, output_span_map) = + token_tree_to_syntax_node(&output, TopEntryPoint::MacroItems, &mut |_| edition); + let items = ast::MacroItems::cast(parsed.syntax_node())?; + if let Some(err) = err { + let rendered = err.render_to_string(db); + self.emit_diagnostic_for_node( + adt, + DiagnosticSeverity::Warning, + "item_expansion".to_owned(), + format!("built-in derive expansion failed ({})", rendered.kind), + rendered.message, + ); + } + let previous = self.builtin_derive_span_map.replace(output_span_map); + let result = self.emit_macro_items(&items); + self.builtin_derive_span_map = previous; + result + } + pub(crate) fn emit_derive_expansion( &mut self, node: &(impl Into + Clone), @@ -712,14 +780,29 @@ impl<'a> Translator<'a> { return; }; let node: ast::Adt = node.clone().into(); - let expansions = node - .attrs() - .filter_map(|attr| attr.meta()) - .filter_map(|meta| semantics.expand_derive_macro(&meta)) - .flatten() - .flatten() - .filter_map(|expanded| self.process_item_macro_expansion(&node, expanded)) - .collect::>(); + let mut expansions = Vec::new(); + for meta in node.attrs().filter_map(|attr| attr.meta()) { + let Some(expanded) = semantics.expand_derive_macro(&meta) else { + continue; + }; + // `resolve_derive_macro` yields one entry per derive, including built-in ones for which + // `expand_derive_macro` returns `None`; we use it to recover the built-in expander. + let resolved = semantics.resolve_derive_macro(&meta).unwrap_or_default(); + for (i, expanded) in expanded.into_iter().enumerate() { + let label = if let Some(expanded) = expanded { + self.process_item_macro_expansion(&node, expanded) + } else if let Some(expander) = resolved + .get(i) + .and_then(|m| m.as_ref()) + .and_then(|m| find_builtin_derive(&m.name(semantics.db))) + { + self.emit_builtin_derive_expansion(&node, expander) + } else { + None + }; + expansions.extend(label); + } + } generated::TypeItem::emit_derive_macro_expansions( label.into(), expansions, diff --git a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected index 5778e6f3a83a..b6187932ec9b 100644 --- a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected +++ b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected @@ -3,6 +3,9 @@ | {EXTERNAL LOCATION} | fn trim | ::trim | | lib.rs:1:1:1:18 | mod anonymous | test::anonymous | | lib.rs:2:1:2:16 | mod regular | test::regular | +| regular.rs:1:1:2:18 | fn eq | ::eq | +| regular.rs:1:1:2:18 | impl ...::Eq for Struct::<...> { ... } | | +| regular.rs:1:1:2:18 | impl ...::PartialEq for Struct::<...> { ... } | | | regular.rs:1:1:2:18 | struct Struct | test::regular::Struct | | regular.rs:4:1:6:1 | trait Trait | test::regular::Trait | | regular.rs:5:5:5:16 | fn f | <_ as test::regular::Trait>::f | diff --git a/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.expected b/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.expected index c7b6ab807aac..a3560c0fdef1 100644 --- a/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.expected +++ b/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.expected @@ -1,5 +1,7 @@ instances | gen_macro_items.rs:5:5:5:12 | MacroItems | +| gen_macro_items.rs:12:5:13:15 | MacroItems | getItem | gen_macro_items.rs:5:5:5:12 | MacroItems | 0 | gen_macro_items.rs:5:5:5:38 | use ...::Path | | gen_macro_items.rs:5:5:5:12 | MacroItems | 1 | gen_macro_items.rs:5:5:5:38 | fn get_parent | +| gen_macro_items.rs:12:5:13:15 | MacroItems | 0 | gen_macro_items.rs:12:5:13:15 | impl ...::Debug for Bar::<...> { ... } | diff --git a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected index a12af2dc3ed9..672ce3d5bbe6 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected @@ -720,6 +720,94 @@ macro_expansion.rs: # 79| getSegment(): [PathSegment] i32 # 79| getIdentifier(): [NameRef] i32 # 83| getItem(17): [Struct] struct MyDerive +# 83| getDeriveMacroExpansion(0): [MacroItems] MacroItems +# 83| getItem(0): [Impl] impl ...::Debug for MyDerive::<...> { ... } +# 83| getAssocItemList(): [AssocItemList] AssocItemList +# 83| getAssocItem(0): [Function] fn fmt +# 83| getParamList(): [ParamList] ParamList +# 83| getParam(0): [Param] ...: ... +# 83| getTypeRepr(): [RefTypeRepr] RefTypeRepr +# 83| getTypeRepr(): [PathTypeRepr] ...::Formatter +# 83| getPath(): [Path] ...::Formatter +# 83| getQualifier(): [Path] ...::fmt +# 83| getQualifier(): [Path] $crate +# 83| getSegment(): [PathSegment] $crate +# 83| getIdentifier(): [NameRef] $crate +# 83| getSegment(): [PathSegment] fmt +# 83| getIdentifier(): [NameRef] fmt +# 83| getSegment(): [PathSegment] Formatter +# 83| getIdentifier(): [NameRef] Formatter +# 83| getPat(): [IdentPat] f +# 83| getName(): [Name] f +# 83| getSelfParam(): [SelfParam] SelfParam +# 83| getName(): [Name] self +# 83| getFunctionBody(): [BlockExpr] { ... } +# 83| getStmtList(): [StmtList] StmtList +# 83| getTailExpr(): [MatchExpr] match self { ... } +# 83| getScrutinee(): [VariableAccess] self +# 83| getPath(): [Path] self +# 83| getSegment(): [PathSegment] self +# 83| getIdentifier(): [NameRef] self +# 83| getMatchArmList(): [MatchArmList] MatchArmList +# 83| getArm(0): [MatchArm] ... => ... +# 83| getExpr(): [MethodCallExpr] ... .finish() +# 83| getArgList(): [ArgList] ArgList +# 83| getIdentifier(): [NameRef] finish +# 83| getReceiver(): [MethodCallExpr] ... .field(...) +# 83| getArgList(): [ArgList] ArgList +# 83| getArg(0): [StringLiteralExpr] "field" +# 83| getArg(1): [RefExpr] &field +# 85| getExpr(): [VariableAccess] field +# 85| getPath(): [Path] field +# 85| getSegment(): [PathSegment] field +# 85| getIdentifier(): [NameRef] field +# 83| getIdentifier(): [NameRef] field +# 83| getReceiver(): [MethodCallExpr] f.debug_struct(...) +# 83| getArgList(): [ArgList] ArgList +# 83| getArg(0): [StringLiteralExpr] "MyDerive" +# 83| getIdentifier(): [NameRef] debug_struct +# 83| getReceiver(): [VariableAccess] f +# 83| getPath(): [Path] f +# 83| getSegment(): [PathSegment] f +# 83| getIdentifier(): [NameRef] f +# 83| getPat(): [StructPat] MyDerive {...} +# 84| getPath(): [Path] MyDerive +# 84| getSegment(): [PathSegment] MyDerive +# 84| getIdentifier(): [NameRef] MyDerive +# 83| getStructPatFieldList(): [StructPatFieldList] StructPatFieldList +# 83| getField(0): [StructPatField] field: ... +# 85| getIdentifier(): [NameRef] field +# 85| getPat(): [IdentPat] field +# 85| getName(): [Name] field +# 83| getName(): [Name] fmt +# 83| getRetType(): [RetTypeRepr] RetTypeRepr +# 83| getTypeRepr(): [PathTypeRepr] ...::Result +# 83| getPath(): [Path] ...::Result +# 83| getQualifier(): [Path] ...::fmt +# 83| getQualifier(): [Path] $crate +# 83| getSegment(): [PathSegment] $crate +# 83| getIdentifier(): [NameRef] $crate +# 83| getSegment(): [PathSegment] fmt +# 83| getIdentifier(): [NameRef] fmt +# 83| getSegment(): [PathSegment] Result +# 83| getIdentifier(): [NameRef] Result +# 83| getGenericParamList(): [GenericParamList] <...> +# 83| getSelfTy(): [PathTypeRepr] MyDerive::<...> +# 83| getPath(): [Path] MyDerive::<...> +# 83| getSegment(): [PathSegment] MyDerive::<...> +# 83| getGenericArgList(): [GenericArgList] <...> +# 84| getIdentifier(): [NameRef] MyDerive +# 83| getTrait(): [PathTypeRepr] ...::Debug +# 83| getPath(): [Path] ...::Debug +# 83| getQualifier(): [Path] ...::fmt +# 83| getQualifier(): [Path] $crate +# 83| getSegment(): [PathSegment] $crate +# 83| getIdentifier(): [NameRef] $crate +# 83| getSegment(): [PathSegment] fmt +# 83| getIdentifier(): [NameRef] fmt +# 83| getSegment(): [PathSegment] Debug +# 83| getIdentifier(): [NameRef] Debug +# 83| getWhereClause(): [WhereClause] WhereClause # 83| getAttr(0): [Attr] Attr # 83| getMeta(): [TokenTreeMeta] TokenTreeMeta # 83| getPath(): [Path] derive @@ -735,6 +823,115 @@ macro_expansion.rs: # 85| getSegment(): [PathSegment] usize # 85| getIdentifier(): [NameRef] usize # 88| getItem(18): [Enum] enum MyDeriveEnum +# 88| getDeriveMacroExpansion(0): [MacroItems] MacroItems +# 88| getItem(0): [Impl] impl ...::PartialEq for MyDeriveEnum::<...> { ... } +# 88| getAssocItemList(): [AssocItemList] AssocItemList +# 88| getAssocItem(0): [Function] fn eq +# 88| getParamList(): [ParamList] ParamList +# 88| getParam(0): [Param] ...: ... +# 88| getTypeRepr(): [RefTypeRepr] RefTypeRepr +# 88| getTypeRepr(): [PathTypeRepr] Self +# 88| getPath(): [Path] Self +# 88| getSegment(): [PathSegment] Self +# 88| getIdentifier(): [NameRef] Self +# 88| getPat(): [IdentPat] other +# 88| getName(): [Name] other +# 88| getSelfParam(): [SelfParam] SelfParam +# 88| getName(): [Name] self +# 88| getFunctionBody(): [BlockExpr] { ... } +# 88| getStmtList(): [StmtList] StmtList +# 88| getTailExpr(): [MatchExpr] match ... { ... } +# 88| getScrutinee(): [TupleExpr] TupleExpr +# 88| getField(0): [VariableAccess] self +# 88| getPath(): [Path] self +# 88| getSegment(): [PathSegment] self +# 88| getIdentifier(): [NameRef] self +# 88| getField(1): [VariableAccess] other +# 88| getPath(): [Path] other +# 88| getSegment(): [PathSegment] other +# 88| getIdentifier(): [NameRef] other +# 88| getMatchArmList(): [MatchArmList] MatchArmList +# 88| getArm(0): [MatchArm] ... => true +# 88| getExpr(): [BooleanLiteralExpr] true +# 88| getPat(): [TuplePat] TuplePat +# 88| getField(0): [PathPat] ...::Variant1 +# 88| getPath(): [Path] ...::Variant1 +# 89| getQualifier(): [Path] MyDeriveEnum +# 89| getSegment(): [PathSegment] MyDeriveEnum +# 89| getIdentifier(): [NameRef] MyDeriveEnum +# 90| getSegment(): [PathSegment] Variant1 +# 90| getIdentifier(): [NameRef] Variant1 +# 88| getField(1): [PathPat] ...::Variant1 +# 88| getPath(): [Path] ...::Variant1 +# 89| getQualifier(): [Path] MyDeriveEnum +# 89| getSegment(): [PathSegment] MyDeriveEnum +# 89| getIdentifier(): [NameRef] MyDeriveEnum +# 90| getSegment(): [PathSegment] Variant1 +# 90| getIdentifier(): [NameRef] Variant1 +# 88| getArm(1): [MatchArm] ... => true +# 88| getExpr(): [BooleanLiteralExpr] true +# 88| getPat(): [TuplePat] TuplePat +# 88| getField(0): [PathPat] ...::Variant2 +# 88| getPath(): [Path] ...::Variant2 +# 89| getQualifier(): [Path] MyDeriveEnum +# 89| getSegment(): [PathSegment] MyDeriveEnum +# 89| getIdentifier(): [NameRef] MyDeriveEnum +# 91| getSegment(): [PathSegment] Variant2 +# 91| getIdentifier(): [NameRef] Variant2 +# 88| getField(1): [PathPat] ...::Variant2 +# 88| getPath(): [Path] ...::Variant2 +# 89| getQualifier(): [Path] MyDeriveEnum +# 89| getSegment(): [PathSegment] MyDeriveEnum +# 89| getIdentifier(): [NameRef] MyDeriveEnum +# 91| getSegment(): [PathSegment] Variant2 +# 91| getIdentifier(): [NameRef] Variant2 +# 88| getArm(2): [MatchArm] ... => false +# 88| getExpr(): [BooleanLiteralExpr] false +# 88| getPat(): [IdentPat] _unused +# 88| getName(): [Name] _unused +# 88| getName(): [Name] eq +# 88| getRetType(): [RetTypeRepr] RetTypeRepr +# 88| getTypeRepr(): [PathTypeRepr] bool +# 88| getPath(): [Path] bool +# 88| getSegment(): [PathSegment] bool +# 88| getIdentifier(): [NameRef] bool +# 88| getGenericParamList(): [GenericParamList] <...> +# 88| getSelfTy(): [PathTypeRepr] MyDeriveEnum::<...> +# 88| getPath(): [Path] MyDeriveEnum::<...> +# 88| getSegment(): [PathSegment] MyDeriveEnum::<...> +# 88| getGenericArgList(): [GenericArgList] <...> +# 89| getIdentifier(): [NameRef] MyDeriveEnum +# 88| getTrait(): [PathTypeRepr] ...::PartialEq +# 88| getPath(): [Path] ...::PartialEq +# 88| getQualifier(): [Path] ...::cmp +# 88| getQualifier(): [Path] $crate +# 88| getSegment(): [PathSegment] $crate +# 88| getIdentifier(): [NameRef] $crate +# 88| getSegment(): [PathSegment] cmp +# 88| getIdentifier(): [NameRef] cmp +# 88| getSegment(): [PathSegment] PartialEq +# 88| getIdentifier(): [NameRef] PartialEq +# 88| getWhereClause(): [WhereClause] WhereClause +# 88| getDeriveMacroExpansion(1): [MacroItems] MacroItems +# 88| getItem(0): [Impl] impl ...::Eq for MyDeriveEnum::<...> { ... } +# 88| getAssocItemList(): [AssocItemList] AssocItemList +# 88| getGenericParamList(): [GenericParamList] <...> +# 88| getSelfTy(): [PathTypeRepr] MyDeriveEnum::<...> +# 88| getPath(): [Path] MyDeriveEnum::<...> +# 88| getSegment(): [PathSegment] MyDeriveEnum::<...> +# 88| getGenericArgList(): [GenericArgList] <...> +# 89| getIdentifier(): [NameRef] MyDeriveEnum +# 88| getTrait(): [PathTypeRepr] ...::Eq +# 88| getPath(): [Path] ...::Eq +# 88| getQualifier(): [Path] ...::cmp +# 88| getQualifier(): [Path] $crate +# 88| getSegment(): [PathSegment] $crate +# 88| getIdentifier(): [NameRef] $crate +# 88| getSegment(): [PathSegment] cmp +# 88| getIdentifier(): [NameRef] cmp +# 88| getSegment(): [PathSegment] Eq +# 88| getIdentifier(): [NameRef] Eq +# 88| getWhereClause(): [WhereClause] WhereClause # 88| getAttr(0): [Attr] Attr # 88| getMeta(): [TokenTreeMeta] TokenTreeMeta # 88| getPath(): [Path] derive diff --git a/rust/ql/test/extractor-tests/macro-expansion/test.expected b/rust/ql/test/extractor-tests/macro-expansion/test.expected index 985be0f6b7dd..108fa52ced94 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/test.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/test.expected @@ -15,6 +15,9 @@ attribute_macros | macro_expansion.rs:31:5:34:5 | (item with attribute macro expansion) | 1 | macro_expansion.rs:32:5:34:5 | fn bzz_1 | | macro_expansion.rs:31:5:34:5 | (item with attribute macro expansion) | 2 | macro_expansion.rs:32:5:34:5 | fn bzz_2 | derive_macros +| macro_expansion.rs:83:1:86:1 | struct MyDerive | 0 | 0 | macro_expansion.rs:83:1:86:1 | impl ...::Debug for MyDerive::<...> { ... } | +| macro_expansion.rs:88:1:92:1 | enum MyDeriveEnum | 0 | 0 | macro_expansion.rs:88:1:92:1 | impl ...::PartialEq for MyDeriveEnum::<...> { ... } | +| macro_expansion.rs:88:1:92:1 | enum MyDeriveEnum | 1 | 0 | macro_expansion.rs:88:1:92:1 | impl ...::Eq for MyDeriveEnum::<...> { ... } | | macro_expansion.rs:98:1:102:1 | union MyDeriveUnion | 0 | 0 | macro_expansion.rs:99:7:99:19 | const CONST_MyDeriveUnion | | macro_expansion.rs:98:1:102:1 | union MyDeriveUnion | 0 | 1 | macro_expansion.rs:99:7:99:19 | impl MyTrait for MyDeriveUnion { ... } | macro_calls 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 137b6cab0153..3344fc45f74f 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -3669,6 +3669,7 @@ inferCertainType | main.rs:2405:18:2405:42 | ...::method(...) | | main.rs:2369:5:2369:20 | S1 | | main.rs:2405:18:2405:42 | ...::method(...) | T | main.rs:2371:5:2372:14 | S2 | | main.rs:2405:29:2405:41 | ...::default(...) | | main.rs:2369:5:2369:20 | S1 | +| main.rs:2409:21:2409:33 | ...::default(...) | | main.rs:2371:5:2372:14 | S2 | | main.rs:2410:13:2410:15 | x10 | | main.rs:2392:5:2394:5 | S5 | | main.rs:2410:13:2410:15 | x10 | T5 | main.rs:2371:5:2372:14 | S2 | | main.rs:2410:19:2413:9 | S5::<...> {...} | | main.rs:2392:5:2394:5 | S5 | @@ -3679,6 +3680,7 @@ inferCertainType | main.rs:2415:19:2415:33 | S5 {...} | | main.rs:2392:5:2394:5 | S5 | | main.rs:2416:13:2416:15 | x13 | | main.rs:2392:5:2394:5 | S5 | | main.rs:2416:19:2419:9 | S5 {...} | | main.rs:2392:5:2394:5 | S5 | +| main.rs:2418:20:2418:32 | ...::default(...) | | main.rs:2371:5:2372:14 | S2 | | main.rs:2420:13:2420:15 | x14 | | {EXTERNAL LOCATION} | i32 | | main.rs:2420:19:2420:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:2421:13:2421:15 | x15 | | main.rs:2369:5:2369:20 | S1 | @@ -12267,7 +12269,10 @@ inferType | main.rs:2408:18:2408:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | | main.rs:2408:21:2408:21 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2409:13:2409:14 | x9 | | main.rs:2390:5:2390:27 | S4 | +| main.rs:2409:13:2409:14 | x9 | T4 | main.rs:2371:5:2372:14 | S2 | | main.rs:2409:18:2409:34 | S4(...) | | main.rs:2390:5:2390:27 | S4 | +| main.rs:2409:18:2409:34 | S4(...) | T4 | main.rs:2371:5:2372:14 | S2 | +| main.rs:2409:21:2409:33 | ...::default(...) | | main.rs:2371:5:2372:14 | S2 | | main.rs:2410:13:2410:15 | x10 | | main.rs:2392:5:2394:5 | S5 | | main.rs:2410:13:2410:15 | x10 | T5 | main.rs:2371:5:2372:14 | S2 | | main.rs:2410:19:2413:9 | S5::<...> {...} | | main.rs:2392:5:2394:5 | S5 | @@ -12284,7 +12289,10 @@ inferType | main.rs:2415:19:2415:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | | main.rs:2415:31:2415:31 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2416:13:2416:15 | x13 | | main.rs:2392:5:2394:5 | S5 | +| main.rs:2416:13:2416:15 | x13 | T5 | main.rs:2371:5:2372:14 | S2 | | main.rs:2416:19:2419:9 | S5 {...} | | main.rs:2392:5:2394:5 | S5 | +| main.rs:2416:19:2419:9 | S5 {...} | T5 | main.rs:2371:5:2372:14 | S2 | +| main.rs:2418:20:2418:32 | ...::default(...) | | main.rs:2371:5:2372:14 | S2 | | main.rs:2420:13:2420:15 | x14 | | {EXTERNAL LOCATION} | i32 | | main.rs:2420:19:2420:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:2420:30:2420:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | @@ -15847,18 +15855,3 @@ inferType | regressions.rs:179:24:179:27 | S(...) | T | {EXTERNAL LOCATION} | i32 | | regressions.rs:179:26:179:26 | 1 | | {EXTERNAL LOCATION} | i32 | testFailures -| main.rs:1308:44:1308:62 | //... | Missing result: target=default | -| main.rs:2406:48:2406:84 | //... | Missing result: target=default | -| main.rs:2409:37:2409:73 | //... | Missing result: target=default | -| main.rs:2409:37:2409:73 | //... | Missing result: type=x9@S4:S2 | -| main.rs:2412:40:2412:58 | //... | Missing result: target=default | -| main.rs:2416:22:2416:44 | //... | Missing result: type=x13@S5:S2 | -| main.rs:2418:35:2418:53 | //... | Missing result: target=default | -| main.rs:2574:41:2574:59 | //... | Missing result: target=default | -| main.rs:2698:37:2698:64 | //... | Missing result: target=default | -| overloading.rs:58:67:58:125 | //... | Missing result: target=default | -| overloading.rs:60:68:60:132 | //... | Missing result: target=default | -| overloading.rs:64:68:64:126 | //... | Missing result: target=default | -| overloading.rs:66:69:66:133 | //... | Missing result: target=default | -| overloading.rs:368:37:368:64 | //... | Missing result: target=default | -| overloading.rs:398:57:398:84 | //... | Missing result: target=default | diff --git a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected index 15f6280fa524..7decd880f595 100644 --- a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected +++ b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected @@ -23,111 +23,325 @@ | main.rs:49:41:49:45 | build | main.rs:49:5:49:25 | ...::build(...) | main.rs:49:41:49:45 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:50:56:50:60 | build | main.rs:50:5:50:40 | ...::build(...) | main.rs:50:56:50:60 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:53:65:53:69 | build | main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:65:53:69 | build | Cookie attribute 'Secure' is not set to true. | +| main.rs:59:9:59:11 | add | main.rs:58:17:58:27 | ...::new | main.rs:59:9:59:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:60:9:60:20 | add_original | main.rs:58:17:58:27 | ...::new | main.rs:60:9:60:20 | add_original | Cookie attribute 'Secure' is not set to true. | +| main.rs:64:9:64:11 | add | main.rs:63:5:63:5 | [SSA] a | main.rs:64:9:64:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:64:9:64:11 | add | main.rs:63:5:63:5 | a | main.rs:64:9:64:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:69:16:69:18 | add | main.rs:68:17:68:29 | ...::named | main.rs:69:16:69:18 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:70:16:70:27 | add_original | main.rs:63:5:63:5 | [SSA] a | main.rs:70:16:70:27 | add_original | Cookie attribute 'Secure' is not set to true. | +| main.rs:70:16:70:27 | add_original | main.rs:63:5:63:5 | a | main.rs:70:16:70:27 | add_original | Cookie attribute 'Secure' is not set to true. | +| main.rs:72:16:72:18 | add | main.rs:71:5:71:5 | [SSA] b | main.rs:72:16:72:18 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:72:16:72:18 | add | main.rs:71:5:71:5 | b | main.rs:72:16:72:18 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:78:17:78:19 | add | main.rs:77:17:77:28 | ...::from | main.rs:78:17:78:19 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:79:17:79:28 | add_original | main.rs:63:5:63:5 | [SSA] a | main.rs:79:17:79:28 | add_original | Cookie attribute 'Secure' is not set to true. | +| main.rs:79:17:79:28 | add_original | main.rs:63:5:63:5 | a | main.rs:79:17:79:28 | add_original | Cookie attribute 'Secure' is not set to true. | +| main.rs:83:17:83:19 | add | main.rs:77:17:77:28 | ...::from | main.rs:83:17:83:19 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:88:9:88:11 | add | main.rs:87:17:87:28 | ...::from | main.rs:88:9:88:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:94:9:94:11 | add | main.rs:87:17:87:28 | ...::from | main.rs:94:9:94:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:123:13:123:18 | insert | main.rs:122:13:122:41 | ...::new | main.rs:123:13:123:18 | insert | Cookie attribute 'Secure' is not set to true. | +| main.rs:131:13:131:18 | insert | main.rs:130:13:130:13 | b | main.rs:131:13:131:18 | insert | Cookie attribute 'Secure' is not set to true. | +| main.rs:147:13:147:18 | insert | main.rs:146:13:146:13 | f | main.rs:147:13:147:18 | insert | Cookie attribute 'Secure' is not set to true. | | main.rs:152:13:152:18 | insert | main.rs:151:13:151:42 | ...::from | main.rs:152:13:152:18 | insert | Cookie attribute 'Secure' is not set to true. | +| main.rs:156:13:156:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:156:13:156:18 | insert | Cookie attribute 'Secure' is not set to true. | +| main.rs:157:13:157:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:157:13:157:18 | insert | Cookie attribute 'Secure' is not set to true. | +| main.rs:158:13:158:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:158:13:158:18 | insert | Cookie attribute 'Secure' is not set to true. | +| main.rs:159:13:159:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:159:13:159:18 | insert | Cookie attribute 'Secure' is not set to true. | +| main.rs:160:13:160:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:160:13:160:18 | insert | Cookie attribute 'Secure' is not set to true. | +| main.rs:161:13:161:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:161:13:161:18 | insert | Cookie attribute 'Secure' is not set to true. | +| main.rs:162:13:162:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:162:13:162:18 | insert | Cookie attribute 'Secure' is not set to true. | +| main.rs:163:13:163:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:163:13:163:18 | insert | Cookie attribute 'Secure' is not set to true. | +| main.rs:164:13:164:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:164:13:164:18 | insert | Cookie attribute 'Secure' is not set to true. | +| main.rs:165:13:165:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:165:13:165:18 | insert | Cookie attribute 'Secure' is not set to true. | +| main.rs:166:13:166:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:166:13:166:18 | insert | Cookie attribute 'Secure' is not set to true. | +| main.rs:167:13:167:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:167:13:167:18 | insert | Cookie attribute 'Secure' is not set to true. | | main.rs:173:61:173:65 | build | main.rs:173:22:173:34 | ...::build | main.rs:173:61:173:65 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:197:55:197:60 | finish | main.rs:197:5:197:39 | ...::build(...) | main.rs:197:55:197:60 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:198:65:198:70 | finish | main.rs:198:5:198:39 | ...::build(...) | main.rs:198:65:198:70 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:202:9:202:11 | add | main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:202:9:202:11 | add | main.rs:201:5:201:11 | cookie1 | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:212:41:212:46 | finish | main.rs:212:5:212:22 | ...::build | main.rs:212:41:212:46 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:215:9:215:11 | add | main.rs:214:19:214:34 | ...::new | main.rs:215:9:215:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:229:9:229:11 | add | main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:9:229:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:229:9:229:11 | add | main.rs:228:5:228:11 | cookie1 | main.rs:229:9:229:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:242:9:242:41 | ...::new | main.rs:241:29:241:62 | ...::new(...) | main.rs:242:9:242:41 | ...::new | Cookie attribute 'Secure' is not set to true. | | main.rs:245:9:245:41 | ...::new | main.rs:244:30:244:63 | ...::new(...) | main.rs:245:9:245:41 | ...::new | Cookie attribute 'Secure' is not set to true. | | main.rs:259:59:259:64 | finish | main.rs:259:5:259:43 | ...::build(...) | main.rs:259:59:259:64 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:260:69:260:74 | finish | main.rs:260:5:260:43 | ...::build(...) | main.rs:260:69:260:74 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:264:9:264:11 | add | main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:264:9:264:11 | add | main.rs:263:5:263:11 | cookie1 | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:274:45:274:50 | finish | main.rs:274:5:274:26 | ...::build | main.rs:274:45:274:50 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:277:9:277:11 | add | main.rs:276:19:276:38 | ...::new | main.rs:277:9:277:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | edges -| main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:9 | +| main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:35 | | main.rs:8:19:8:64 | ... .secure(...) | main.rs:8:66:8:70 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:16:19:16:31 | ...::build | main.rs:16:19:16:50 | ...::build(...) | provenance | Src:MaD:6 MaD:6 | +| main.rs:16:19:16:31 | ...::build | main.rs:16:19:16:50 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:16:19:16:50 | ...::build(...) | main.rs:16:52:16:56 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:20:5:20:36 | ...::build(...) | main.rs:20:5:20:54 | ... .secure(...) | provenance | MaD:9 | +| main.rs:20:5:20:36 | ...::build(...) | main.rs:20:5:20:54 | ... .secure(...) | provenance | MaD:35 | | main.rs:20:5:20:54 | ... .secure(...) | main.rs:20:56:20:60 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:21:5:21:36 | ...::build(...) | main.rs:21:5:21:55 | ... .secure(...) | provenance | MaD:9 | +| main.rs:21:5:21:36 | ...::build(...) | main.rs:21:5:21:55 | ... .secure(...) | provenance | MaD:35 | | main.rs:21:5:21:55 | ... .secure(...) | main.rs:21:57:21:61 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:25:5:25:36 | ...::build(...) | main.rs:25:5:25:52 | ... .secure(...) | provenance | MaD:9 | +| main.rs:25:5:25:36 | ...::build(...) | main.rs:25:5:25:52 | ... .secure(...) | provenance | MaD:35 | | main.rs:25:5:25:52 | ... .secure(...) | main.rs:25:54:25:58 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:26:5:26:36 | ...::build(...) | main.rs:26:5:26:50 | ... .secure(...) | provenance | MaD:9 | +| main.rs:26:5:26:36 | ...::build(...) | main.rs:26:5:26:50 | ... .secure(...) | provenance | MaD:35 | | main.rs:26:5:26:50 | ... .secure(...) | main.rs:26:52:26:56 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:27:5:27:36 | ...::build(...) | main.rs:27:5:27:51 | ... .secure(...) | provenance | MaD:9 | +| main.rs:27:5:27:36 | ...::build(...) | main.rs:27:5:27:51 | ... .secure(...) | provenance | MaD:35 | | main.rs:27:5:27:51 | ... .secure(...) | main.rs:27:53:27:57 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:28:5:28:36 | ...::build(...) | main.rs:28:5:28:60 | ... .secure(...) | provenance | MaD:9 | +| main.rs:28:5:28:36 | ...::build(...) | main.rs:28:5:28:60 | ... .secure(...) | provenance | MaD:35 | | main.rs:28:5:28:60 | ... .secure(...) | main.rs:28:62:28:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:29:5:29:36 | ...::build(...) | main.rs:29:5:29:60 | ... .secure(...) | provenance | MaD:9 | +| main.rs:29:5:29:36 | ...::build(...) | main.rs:29:5:29:60 | ... .secure(...) | provenance | MaD:35 | | main.rs:29:5:29:60 | ... .secure(...) | main.rs:29:62:29:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:33:9:33:40 | ...::build(...) | main.rs:33:9:33:58 | ... .secure(...) | provenance | MaD:9 | +| main.rs:33:9:33:40 | ...::build(...) | main.rs:33:9:33:58 | ... .secure(...) | provenance | MaD:35 | | main.rs:33:9:33:58 | ... .secure(...) | main.rs:33:60:33:64 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:35:9:35:40 | ...::build(...) | main.rs:35:9:35:58 | ... .secure(...) | provenance | MaD:9 | +| main.rs:35:9:35:40 | ...::build(...) | main.rs:35:9:35:58 | ... .secure(...) | provenance | MaD:35 | | main.rs:35:9:35:58 | ... .secure(...) | main.rs:35:60:35:64 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:39:5:39:39 | ...::new(...) | main.rs:39:5:39:53 | ... .secure(...) | provenance | MaD:9 | +| main.rs:39:5:39:39 | ...::new(...) | main.rs:39:5:39:53 | ... .secure(...) | provenance | MaD:35 | | main.rs:39:5:39:53 | ... .secure(...) | main.rs:39:55:39:59 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:5:40:64 | ... .secure(...) | provenance | MaD:9 | +| main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:5:40:64 | ... .secure(...) | provenance | MaD:35 | | main.rs:40:5:40:64 | ... .secure(...) | main.rs:40:66:40:70 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:5:41:93 | ... .secure(...) | provenance | MaD:9 | +| main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:5:41:93 | ... .secure(...) | provenance | MaD:35 | | main.rs:41:5:41:93 | ... .secure(...) | main.rs:41:95:41:99 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:5:42:72 | ... .secure(...) | provenance | MaD:9 | +| main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:5:42:72 | ... .secure(...) | provenance | MaD:35 | | main.rs:42:5:42:72 | ... .secure(...) | main.rs:42:74:42:78 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:43:5:43:46 | ... .path(...) | main.rs:43:5:43:60 | ... .secure(...) | provenance | MaD:9 | +| main.rs:43:5:43:46 | ... .path(...) | main.rs:43:5:43:60 | ... .secure(...) | provenance | MaD:35 | | main.rs:43:5:43:60 | ... .secure(...) | main.rs:43:62:43:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:5:44:66 | ... .secure(...) | provenance | MaD:9 | +| main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:5:44:66 | ... .secure(...) | provenance | MaD:35 | | main.rs:44:5:44:66 | ... .secure(...) | main.rs:44:68:44:72 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:5:45:86 | ... .secure(...) | provenance | MaD:9 | +| main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:5:45:86 | ... .secure(...) | provenance | MaD:35 | | main.rs:45:5:45:86 | ... .secure(...) | main.rs:45:88:45:92 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:46:5:46:48 | ... .permanent() | main.rs:46:5:46:62 | ... .secure(...) | provenance | MaD:9 | +| main.rs:46:5:46:48 | ... .permanent() | main.rs:46:5:46:62 | ... .secure(...) | provenance | MaD:35 | | main.rs:46:5:46:62 | ... .secure(...) | main.rs:46:64:46:68 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:47:5:47:46 | ... .removal() | main.rs:47:5:47:60 | ... .secure(...) | provenance | MaD:9 | +| main.rs:47:5:47:46 | ... .removal() | main.rs:47:5:47:60 | ... .secure(...) | provenance | MaD:35 | | main.rs:47:5:47:60 | ... .secure(...) | main.rs:47:62:47:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:48:5:48:36 | ...::build(...) | main.rs:48:5:48:50 | ... .secure(...) | provenance | MaD:9 | +| main.rs:48:5:48:36 | ...::build(...) | main.rs:48:5:48:50 | ... .secure(...) | provenance | MaD:35 | | main.rs:48:5:48:50 | ... .secure(...) | main.rs:48:52:48:57 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:49:5:49:25 | ...::build(...) | main.rs:49:5:49:39 | ... .secure(...) | provenance | MaD:9 | +| main.rs:49:5:49:25 | ...::build(...) | main.rs:49:5:49:39 | ... .secure(...) | provenance | MaD:35 | | main.rs:49:5:49:39 | ... .secure(...) | main.rs:49:41:49:45 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:50:5:50:40 | ...::build(...) | main.rs:50:5:50:54 | ... .secure(...) | provenance | MaD:9 | +| main.rs:50:5:50:40 | ...::build(...) | main.rs:50:5:50:54 | ... .secure(...) | provenance | MaD:35 | | main.rs:50:5:50:54 | ... .secure(...) | main.rs:50:56:50:60 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:9 | +| main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:35 | | main.rs:53:5:53:63 | ... .secure(...) | main.rs:53:65:53:69 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:114:5:114:17 | ...::build | main.rs:114:5:114:36 | ...::build(...) | provenance | Src:MaD:6 MaD:6 | -| main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:7 | +| main.rs:58:9:58:13 | mut a | main.rs:59:13:59:13 | a | provenance | | +| main.rs:58:9:58:13 | mut a | main.rs:60:22:60:22 | a | provenance | | +| main.rs:58:17:58:27 | ...::new | main.rs:58:17:58:44 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | +| main.rs:58:17:58:44 | ...::new(...) | main.rs:58:9:58:13 | mut a | provenance | | +| main.rs:59:13:59:13 | a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:18 | +| main.rs:59:13:59:21 | a.clone() | main.rs:59:9:59:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:60:22:60:22 | a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:18 | +| main.rs:60:22:60:30 | a.clone() | main.rs:60:9:60:20 | add_original | provenance | MaD:5 Sink:MaD:5 | +| main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:13 | a | provenance | | +| main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:29 | a | provenance | | +| main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:30 | a | provenance | | +| main.rs:63:5:63:5 | a | main.rs:64:13:64:13 | a | provenance | | +| main.rs:63:5:63:5 | a | main.rs:70:29:70:29 | a | provenance | | +| main.rs:63:5:63:5 | a | main.rs:79:30:79:30 | a | provenance | | +| main.rs:64:13:64:13 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:18 | +| main.rs:64:13:64:21 | a.clone() | main.rs:64:9:64:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:68:9:68:13 | mut b | main.rs:69:20:69:20 | b | provenance | | +| main.rs:68:17:68:29 | ...::named | main.rs:68:17:68:37 | ...::named(...) | provenance | Src:MaD:16 MaD:16 | +| main.rs:68:17:68:37 | ...::named(...) | main.rs:68:9:68:13 | mut b | provenance | | +| main.rs:69:20:69:20 | b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:18 | +| main.rs:69:20:69:28 | b.clone() | main.rs:69:16:69:18 | add | provenance | MaD:8 Sink:MaD:8 | +| main.rs:70:29:70:29 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:18 | +| main.rs:70:29:70:37 | a.clone() | main.rs:70:16:70:27 | add_original | provenance | MaD:9 Sink:MaD:9 | +| main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:20 | b | provenance | | +| main.rs:71:5:71:5 | b | main.rs:72:20:72:20 | b | provenance | | +| main.rs:72:20:72:20 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:18 | +| main.rs:72:20:72:28 | b.clone() | main.rs:72:16:72:18 | add | provenance | MaD:8 Sink:MaD:8 | +| main.rs:77:9:77:13 | mut c | main.rs:78:21:78:21 | c | provenance | | +| main.rs:77:9:77:13 | mut c | main.rs:83:21:83:21 | c | provenance | | +| main.rs:77:17:77:28 | ...::from | main.rs:77:17:77:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 | +| main.rs:77:17:77:36 | ...::from(...) | main.rs:77:9:77:13 | mut c | provenance | | +| main.rs:78:21:78:21 | c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:18 | +| main.rs:78:21:78:29 | c.clone() | main.rs:78:17:78:19 | add | provenance | MaD:6 Sink:MaD:6 | +| main.rs:79:30:79:30 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:18 | +| main.rs:79:30:79:38 | a.clone() | main.rs:79:17:79:28 | add_original | provenance | MaD:7 Sink:MaD:7 | +| main.rs:83:21:83:21 | c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:18 | +| main.rs:83:21:83:29 | c.clone() | main.rs:83:17:83:19 | add | provenance | MaD:6 Sink:MaD:6 | +| main.rs:87:9:87:13 | mut d | main.rs:88:13:88:13 | d | provenance | | +| main.rs:87:9:87:13 | mut d | main.rs:94:13:94:13 | d | provenance | | +| main.rs:87:17:87:28 | ...::from | main.rs:87:17:87:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 | +| main.rs:87:17:87:36 | ...::from(...) | main.rs:87:9:87:13 | mut d | provenance | | +| main.rs:88:13:88:13 | d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:18 | +| main.rs:88:13:88:21 | d.clone() | main.rs:88:9:88:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:94:13:94:13 | d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:18 | +| main.rs:94:13:94:21 | d.clone() | main.rs:94:9:94:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:114:5:114:17 | ...::build | main.rs:114:5:114:36 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:33 | | main.rs:114:5:114:54 | ... .partitioned(...) | main.rs:114:56:114:60 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:122:9:122:9 | a | main.rs:123:20:123:20 | a | provenance | | +| main.rs:122:13:122:41 | ...::new | main.rs:122:13:122:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:122:13:122:58 | ...::new(...) | main.rs:122:9:122:9 | a | provenance | | +| main.rs:123:20:123:20 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:18 | +| main.rs:123:20:123:28 | a.clone() | main.rs:123:13:123:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:130:9:130:9 | c | main.rs:131:20:131:20 | c | provenance | | +| main.rs:130:9:130:9 | c | main.rs:134:13:134:13 | c | provenance | | +| main.rs:130:13:130:13 | b | main.rs:130:13:130:31 | b.set_secure(...) | provenance | MaD:28 | +| main.rs:130:13:130:31 | b.set_secure(...) | main.rs:130:9:130:9 | c | provenance | | +| main.rs:131:20:131:20 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:18 | +| main.rs:131:20:131:28 | c.clone() | main.rs:131:13:131:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:134:9:134:9 | d | main.rs:135:20:135:20 | d | provenance | | +| main.rs:134:13:134:13 | c | main.rs:134:13:134:35 | c.set_partitioned(...) | provenance | MaD:25 | +| main.rs:134:13:134:35 | c.set_partitioned(...) | main.rs:134:9:134:9 | d | provenance | | +| main.rs:135:20:135:20 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:18 | +| main.rs:135:20:135:28 | d.clone() | main.rs:135:13:135:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:146:9:146:9 | g | main.rs:147:20:147:20 | g | provenance | | +| main.rs:146:13:146:13 | f | main.rs:146:13:146:31 | f.set_secure(...) | provenance | MaD:28 | +| main.rs:146:13:146:31 | f.set_secure(...) | main.rs:146:9:146:9 | g | provenance | | +| main.rs:147:20:147:20 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:18 | +| main.rs:147:20:147:28 | g.clone() | main.rs:147:13:147:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:151:9:151:9 | h | main.rs:152:20:152:20 | h | provenance | | -| main.rs:151:13:151:42 | ...::from | main.rs:151:13:151:61 | ...::from(...) | provenance | Src:MaD:5 MaD:5 | +| main.rs:151:13:151:42 | ...::from | main.rs:151:13:151:61 | ...::from(...) | provenance | Src:MaD:12 MaD:12 | | main.rs:151:13:151:61 | ...::from(...) | main.rs:151:9:151:9 | h | provenance | | | main.rs:152:20:152:20 | h | main.rs:152:13:152:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:173:22:173:34 | ...::build | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:6 MaD:6 | +| main.rs:155:9:155:9 | i | main.rs:156:20:156:20 | i | provenance | | +| main.rs:155:9:155:9 | i | main.rs:157:20:157:20 | i | provenance | | +| main.rs:155:9:155:9 | i | main.rs:158:20:158:20 | i | provenance | | +| main.rs:155:9:155:9 | i | main.rs:159:20:159:20 | i | provenance | | +| main.rs:155:9:155:9 | i | main.rs:160:20:160:20 | i | provenance | | +| main.rs:155:9:155:9 | i | main.rs:161:20:161:20 | i | provenance | | +| main.rs:155:9:155:9 | i | main.rs:162:20:162:20 | i | provenance | | +| main.rs:155:9:155:9 | i | main.rs:163:20:163:20 | i | provenance | | +| main.rs:155:9:155:9 | i | main.rs:164:20:164:20 | i | provenance | | +| main.rs:155:9:155:9 | i | main.rs:165:20:165:20 | i | provenance | | +| main.rs:155:9:155:9 | i | main.rs:166:20:166:20 | i | provenance | | +| main.rs:155:9:155:9 | i | main.rs:167:20:167:20 | i | provenance | | +| main.rs:155:13:155:41 | ...::new | main.rs:155:13:155:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:155:13:155:58 | ...::new(...) | main.rs:155:9:155:9 | i | provenance | | +| main.rs:156:20:156:20 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:18 | +| main.rs:156:20:156:28 | i.clone() | main.rs:156:20:156:46 | ... .set_name(...) | provenance | MaD:24 | +| main.rs:156:20:156:46 | ... .set_name(...) | main.rs:156:13:156:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:157:20:157:20 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:18 | +| main.rs:157:20:157:28 | i.clone() | main.rs:157:20:157:48 | ... .set_value(...) | provenance | MaD:29 | +| main.rs:157:20:157:48 | ... .set_value(...) | main.rs:157:13:157:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:158:20:158:20 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:18 | +| main.rs:158:20:158:28 | i.clone() | main.rs:158:20:158:48 | ... .set_http_only(...) | provenance | MaD:22 | +| main.rs:158:20:158:48 | ... .set_http_only(...) | main.rs:158:13:158:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:159:20:159:20 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:18 | +| main.rs:159:20:159:28 | i.clone() | main.rs:159:20:159:70 | ... .set_same_site(...) | provenance | MaD:27 | +| main.rs:159:20:159:70 | ... .set_same_site(...) | main.rs:159:13:159:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:160:20:160:20 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:18 | +| main.rs:160:20:160:28 | i.clone() | main.rs:160:20:160:46 | ... .set_max_age(...) | provenance | MaD:23 | +| main.rs:160:20:160:46 | ... .set_max_age(...) | main.rs:160:13:160:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:161:20:161:20 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:18 | +| main.rs:161:20:161:28 | i.clone() | main.rs:161:20:161:42 | ... .set_path(...) | provenance | MaD:26 | +| main.rs:161:20:161:42 | ... .set_path(...) | main.rs:161:13:161:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:162:20:162:20 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:18 | +| main.rs:162:20:162:28 | i.clone() | main.rs:162:20:162:41 | ... .unset_path() | provenance | MaD:32 | +| main.rs:162:20:162:41 | ... .unset_path() | main.rs:162:13:162:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:163:20:163:20 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:18 | +| main.rs:163:20:163:28 | i.clone() | main.rs:163:20:163:54 | ... .set_domain(...) | provenance | MaD:20 | +| main.rs:163:20:163:54 | ... .set_domain(...) | main.rs:163:13:163:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:164:20:164:20 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:18 | +| main.rs:164:20:164:28 | i.clone() | main.rs:164:20:164:43 | ... .unset_domain() | provenance | MaD:30 | +| main.rs:164:20:164:43 | ... .unset_domain() | main.rs:164:13:164:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:165:20:165:20 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:18 | +| main.rs:165:20:165:28 | i.clone() | main.rs:165:20:165:46 | ... .set_expires(...) | provenance | MaD:21 | +| main.rs:165:20:165:46 | ... .set_expires(...) | main.rs:165:13:165:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:166:20:166:20 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:18 | +| main.rs:166:20:166:28 | i.clone() | main.rs:166:20:166:44 | ... .unset_expires() | provenance | MaD:31 | +| main.rs:166:20:166:44 | ... .unset_expires() | main.rs:166:13:166:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:167:20:167:20 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:18 | +| main.rs:167:20:167:28 | i.clone() | main.rs:167:20:167:45 | ... .make_permanent() | provenance | MaD:19 | +| main.rs:167:20:167:45 | ... .make_permanent() | main.rs:167:13:167:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:173:22:173:34 | ...::build | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:173:22:173:59 | ...::build(...) | main.rs:173:61:173:65 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:197:5:197:39 | ...::build(...) | main.rs:197:5:197:53 | ... .secure(...) | provenance | MaD:9 | +| main.rs:197:5:197:39 | ...::build(...) | main.rs:197:5:197:53 | ... .secure(...) | provenance | MaD:35 | | main.rs:197:5:197:53 | ... .secure(...) | main.rs:197:55:197:60 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:198:5:198:39 | ...::build(...) | main.rs:198:5:198:53 | ... .secure(...) | provenance | MaD:9 | -| main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:8 | +| main.rs:198:5:198:39 | ...::build(...) | main.rs:198:5:198:53 | ... .secure(...) | provenance | MaD:35 | +| main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:34 | | main.rs:198:5:198:63 | ... .path(...) | main.rs:198:65:198:70 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:212:5:212:22 | ...::build | main.rs:212:5:212:39 | ...::build(...) | provenance | Src:MaD:6 MaD:6 | +| main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | +| main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | +| main.rs:202:13:202:19 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:202:13:202:27 | cookie1.clone() | main.rs:202:9:202:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:212:5:212:22 | ...::build | main.rs:212:5:212:39 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:212:5:212:39 | ...::build(...) | main.rs:212:41:212:46 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:19 | cookie3 | provenance | | +| main.rs:214:19:214:34 | ...::new | main.rs:214:19:214:51 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | +| main.rs:214:19:214:51 | ...::new(...) | main.rs:214:9:214:15 | cookie3 | provenance | | +| main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:18 | +| main.rs:215:13:215:27 | cookie3.clone() | main.rs:215:9:215:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | +| main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | +| main.rs:219:13:219:19 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:18 | +| main.rs:219:13:219:27 | cookie2.clone() | main.rs:219:9:219:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | | +| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | | +| main.rs:229:13:229:19 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:229:13:229:27 | cookie1.clone() | main.rs:229:9:229:11 | add | provenance | MaD:11 Sink:MaD:11 | | main.rs:241:9:241:25 | cookie_config_bad | main.rs:242:43:242:59 | cookie_config_bad | provenance | | -| main.rs:241:29:241:62 | ...::new(...) | main.rs:241:29:241:76 | ... .secure(...) | provenance | MaD:12 | +| main.rs:241:29:241:62 | ...::new(...) | main.rs:241:29:241:76 | ... .secure(...) | provenance | MaD:38 | | main.rs:241:29:241:76 | ... .secure(...) | main.rs:241:9:241:25 | cookie_config_bad | provenance | | -| main.rs:242:43:242:59 | cookie_config_bad | main.rs:242:9:242:41 | ...::new | provenance | MaD:4 Sink:MaD:4 | +| main.rs:242:43:242:59 | cookie_config_bad | main.rs:242:9:242:41 | ...::new | provenance | MaD:10 Sink:MaD:10 | | main.rs:244:9:244:26 | cookie_config_bad2 | main.rs:245:43:245:60 | cookie_config_bad2 | provenance | | -| main.rs:244:30:244:63 | ...::new(...) | main.rs:244:30:244:77 | ... .secure(...) | provenance | MaD:12 | -| main.rs:244:30:244:77 | ... .secure(...) | main.rs:244:30:244:90 | ... .name(...) | provenance | MaD:10 | -| main.rs:244:30:244:90 | ... .name(...) | main.rs:244:30:244:100 | ... .path(...) | provenance | MaD:11 | +| main.rs:244:30:244:63 | ...::new(...) | main.rs:244:30:244:77 | ... .secure(...) | provenance | MaD:38 | +| main.rs:244:30:244:77 | ... .secure(...) | main.rs:244:30:244:90 | ... .name(...) | provenance | MaD:36 | +| main.rs:244:30:244:90 | ... .name(...) | main.rs:244:30:244:100 | ... .path(...) | provenance | MaD:37 | | main.rs:244:30:244:100 | ... .path(...) | main.rs:244:9:244:26 | cookie_config_bad2 | provenance | | -| main.rs:245:43:245:60 | cookie_config_bad2 | main.rs:245:9:245:41 | ...::new | provenance | MaD:4 Sink:MaD:4 | -| main.rs:259:5:259:43 | ...::build(...) | main.rs:259:5:259:57 | ... .secure(...) | provenance | MaD:9 | +| main.rs:245:43:245:60 | cookie_config_bad2 | main.rs:245:9:245:41 | ...::new | provenance | MaD:10 Sink:MaD:10 | +| main.rs:259:5:259:43 | ...::build(...) | main.rs:259:5:259:57 | ... .secure(...) | provenance | MaD:35 | | main.rs:259:5:259:57 | ... .secure(...) | main.rs:259:59:259:64 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:260:5:260:43 | ...::build(...) | main.rs:260:5:260:57 | ... .secure(...) | provenance | MaD:9 | -| main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:8 | +| main.rs:260:5:260:43 | ...::build(...) | main.rs:260:5:260:57 | ... .secure(...) | provenance | MaD:35 | +| main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:34 | | main.rs:260:5:260:67 | ... .path(...) | main.rs:260:69:260:74 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:274:5:274:26 | ...::build | main.rs:274:5:274:43 | ...::build(...) | provenance | Src:MaD:6 MaD:6 | +| main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | +| main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | +| main.rs:264:13:264:19 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:264:13:264:27 | cookie1.clone() | main.rs:264:9:264:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:274:5:274:26 | ...::build | main.rs:274:5:274:43 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:274:5:274:43 | ...::build(...) | main.rs:274:45:274:50 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:19 | cookie3 | provenance | | +| main.rs:276:19:276:38 | ...::new | main.rs:276:19:276:55 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | +| main.rs:276:19:276:55 | ...::new(...) | main.rs:276:9:276:15 | cookie3 | provenance | | +| main.rs:277:13:277:19 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:18 | +| main.rs:277:13:277:27 | cookie3.clone() | main.rs:277:9:277:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | +| main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | +| main.rs:281:13:281:19 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:18 | +| main.rs:281:13:281:27 | cookie2.clone() | main.rs:281:9:281:11 | add | provenance | MaD:4 Sink:MaD:4 | models | 1 | Sink: ::insert; Argument[0]; cookie-use | | 2 | Sink: ::build; Argument[self]; cookie-use | | 3 | Sink: ::finish; Argument[self]; cookie-use | -| 4 | Sink: ::new; Argument[0]; cookie-use | -| 5 | Source: ::from; ReturnValue; cookie-create | -| 6 | Source: ::build; ReturnValue; cookie-create | -| 7 | Summary: ::partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | -| 8 | Summary: ::path; Argument[self]; ReturnValue; taint | -| 9 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | -| 10 | Summary: ::name; Argument[self]; ReturnValue; taint | -| 11 | Summary: ::path; Argument[self]; ReturnValue; taint | -| 12 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 4 | Sink: ::add; Argument[0]; cookie-use | +| 5 | Sink: ::add_original; Argument[0]; cookie-use | +| 6 | Sink: ::add; Argument[0]; cookie-use | +| 7 | Sink: ::add_original; Argument[0]; cookie-use | +| 8 | Sink: ::add; Argument[0]; cookie-use | +| 9 | Sink: ::add_original; Argument[0]; cookie-use | +| 10 | Sink: ::new; Argument[0]; cookie-use | +| 11 | Sink: ::add; Argument[0]; cookie-use | +| 12 | Source: ::from; ReturnValue; cookie-create | +| 13 | Source: ::new; ReturnValue; cookie-create | +| 14 | Source: ::from; ReturnValue; cookie-create | +| 15 | Source: ::build; ReturnValue; cookie-create | +| 16 | Source: ::named; ReturnValue; cookie-create | +| 17 | Source: ::new; ReturnValue; cookie-create | +| 18 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | +| 19 | Summary: ::make_permanent; Argument[self]; ReturnValue; taint | +| 20 | Summary: ::set_domain; Argument[self]; ReturnValue; taint | +| 21 | Summary: ::set_expires; Argument[self]; ReturnValue; taint | +| 22 | Summary: ::set_http_only; Argument[self]; ReturnValue; taint | +| 23 | Summary: ::set_max_age; Argument[self]; ReturnValue; taint | +| 24 | Summary: ::set_name; Argument[self]; ReturnValue; taint | +| 25 | Summary: ::set_partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | +| 26 | Summary: ::set_path; Argument[self]; ReturnValue; taint | +| 27 | Summary: ::set_same_site; Argument[self]; ReturnValue; taint | +| 28 | Summary: ::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 29 | Summary: ::set_value; Argument[self]; ReturnValue; taint | +| 30 | Summary: ::unset_domain; Argument[self]; ReturnValue; taint | +| 31 | Summary: ::unset_expires; Argument[self]; ReturnValue; taint | +| 32 | Summary: ::unset_path; Argument[self]; ReturnValue; taint | +| 33 | Summary: ::partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | +| 34 | Summary: ::path; Argument[self]; ReturnValue; taint | +| 35 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 36 | Summary: ::name; Argument[self]; ReturnValue; taint | +| 37 | Summary: ::path; Argument[self]; ReturnValue; taint | +| 38 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | nodes | main.rs:8:19:8:50 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:8:19:8:64 | ... .secure(...) | semmle.label | ... .secure(...) | @@ -201,15 +415,139 @@ nodes | main.rs:53:5:53:49 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:53:5:53:63 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:53:65:53:69 | build | semmle.label | build | +| main.rs:58:9:58:13 | mut a | semmle.label | mut a | +| main.rs:58:17:58:27 | ...::new | semmle.label | ...::new | +| main.rs:58:17:58:44 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:59:9:59:11 | add | semmle.label | add | +| main.rs:59:13:59:13 | a | semmle.label | a | +| main.rs:59:13:59:21 | a.clone() | semmle.label | a.clone() | +| main.rs:60:9:60:20 | add_original | semmle.label | add_original | +| main.rs:60:22:60:22 | a | semmle.label | a | +| main.rs:60:22:60:30 | a.clone() | semmle.label | a.clone() | +| main.rs:63:5:63:5 | [SSA] a | semmle.label | [SSA] a | +| main.rs:63:5:63:5 | a | semmle.label | a | +| main.rs:64:9:64:11 | add | semmle.label | add | +| main.rs:64:13:64:13 | a | semmle.label | a | +| main.rs:64:13:64:21 | a.clone() | semmle.label | a.clone() | +| main.rs:68:9:68:13 | mut b | semmle.label | mut b | +| main.rs:68:17:68:29 | ...::named | semmle.label | ...::named | +| main.rs:68:17:68:37 | ...::named(...) | semmle.label | ...::named(...) | +| main.rs:69:16:69:18 | add | semmle.label | add | +| main.rs:69:20:69:20 | b | semmle.label | b | +| main.rs:69:20:69:28 | b.clone() | semmle.label | b.clone() | +| main.rs:70:16:70:27 | add_original | semmle.label | add_original | +| main.rs:70:29:70:29 | a | semmle.label | a | +| main.rs:70:29:70:37 | a.clone() | semmle.label | a.clone() | +| main.rs:71:5:71:5 | [SSA] b | semmle.label | [SSA] b | +| main.rs:71:5:71:5 | b | semmle.label | b | +| main.rs:72:16:72:18 | add | semmle.label | add | +| main.rs:72:20:72:20 | b | semmle.label | b | +| main.rs:72:20:72:28 | b.clone() | semmle.label | b.clone() | +| main.rs:77:9:77:13 | mut c | semmle.label | mut c | +| main.rs:77:17:77:28 | ...::from | semmle.label | ...::from | +| main.rs:77:17:77:36 | ...::from(...) | semmle.label | ...::from(...) | +| main.rs:78:17:78:19 | add | semmle.label | add | +| main.rs:78:21:78:21 | c | semmle.label | c | +| main.rs:78:21:78:29 | c.clone() | semmle.label | c.clone() | +| main.rs:79:17:79:28 | add_original | semmle.label | add_original | +| main.rs:79:30:79:30 | a | semmle.label | a | +| main.rs:79:30:79:38 | a.clone() | semmle.label | a.clone() | +| main.rs:83:17:83:19 | add | semmle.label | add | +| main.rs:83:21:83:21 | c | semmle.label | c | +| main.rs:83:21:83:29 | c.clone() | semmle.label | c.clone() | +| main.rs:87:9:87:13 | mut d | semmle.label | mut d | +| main.rs:87:17:87:28 | ...::from | semmle.label | ...::from | +| main.rs:87:17:87:36 | ...::from(...) | semmle.label | ...::from(...) | +| main.rs:88:9:88:11 | add | semmle.label | add | +| main.rs:88:13:88:13 | d | semmle.label | d | +| main.rs:88:13:88:21 | d.clone() | semmle.label | d.clone() | +| main.rs:94:9:94:11 | add | semmle.label | add | +| main.rs:94:13:94:13 | d | semmle.label | d | +| main.rs:94:13:94:21 | d.clone() | semmle.label | d.clone() | | main.rs:114:5:114:17 | ...::build | semmle.label | ...::build | | main.rs:114:5:114:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:114:5:114:54 | ... .partitioned(...) | semmle.label | ... .partitioned(...) | | main.rs:114:56:114:60 | build | semmle.label | build | +| main.rs:122:9:122:9 | a | semmle.label | a | +| main.rs:122:13:122:41 | ...::new | semmle.label | ...::new | +| main.rs:122:13:122:58 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:123:13:123:18 | insert | semmle.label | insert | +| main.rs:123:20:123:20 | a | semmle.label | a | +| main.rs:123:20:123:28 | a.clone() | semmle.label | a.clone() | +| main.rs:130:9:130:9 | c | semmle.label | c | +| main.rs:130:13:130:13 | b | semmle.label | b | +| main.rs:130:13:130:31 | b.set_secure(...) | semmle.label | b.set_secure(...) | +| main.rs:131:13:131:18 | insert | semmle.label | insert | +| main.rs:131:20:131:20 | c | semmle.label | c | +| main.rs:131:20:131:28 | c.clone() | semmle.label | c.clone() | +| main.rs:134:9:134:9 | d | semmle.label | d | +| main.rs:134:13:134:13 | c | semmle.label | c | +| main.rs:134:13:134:35 | c.set_partitioned(...) | semmle.label | c.set_partitioned(...) | +| main.rs:135:13:135:18 | insert | semmle.label | insert | +| main.rs:135:20:135:20 | d | semmle.label | d | +| main.rs:135:20:135:28 | d.clone() | semmle.label | d.clone() | +| main.rs:146:9:146:9 | g | semmle.label | g | +| main.rs:146:13:146:13 | f | semmle.label | f | +| main.rs:146:13:146:31 | f.set_secure(...) | semmle.label | f.set_secure(...) | +| main.rs:147:13:147:18 | insert | semmle.label | insert | +| main.rs:147:20:147:20 | g | semmle.label | g | +| main.rs:147:20:147:28 | g.clone() | semmle.label | g.clone() | | main.rs:151:9:151:9 | h | semmle.label | h | | main.rs:151:13:151:42 | ...::from | semmle.label | ...::from | | main.rs:151:13:151:61 | ...::from(...) | semmle.label | ...::from(...) | | main.rs:152:13:152:18 | insert | semmle.label | insert | | main.rs:152:20:152:20 | h | semmle.label | h | +| main.rs:155:9:155:9 | i | semmle.label | i | +| main.rs:155:13:155:41 | ...::new | semmle.label | ...::new | +| main.rs:155:13:155:58 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:156:13:156:18 | insert | semmle.label | insert | +| main.rs:156:20:156:20 | i | semmle.label | i | +| main.rs:156:20:156:28 | i.clone() | semmle.label | i.clone() | +| main.rs:156:20:156:46 | ... .set_name(...) | semmle.label | ... .set_name(...) | +| main.rs:157:13:157:18 | insert | semmle.label | insert | +| main.rs:157:20:157:20 | i | semmle.label | i | +| main.rs:157:20:157:28 | i.clone() | semmle.label | i.clone() | +| main.rs:157:20:157:48 | ... .set_value(...) | semmle.label | ... .set_value(...) | +| main.rs:158:13:158:18 | insert | semmle.label | insert | +| main.rs:158:20:158:20 | i | semmle.label | i | +| main.rs:158:20:158:28 | i.clone() | semmle.label | i.clone() | +| main.rs:158:20:158:48 | ... .set_http_only(...) | semmle.label | ... .set_http_only(...) | +| main.rs:159:13:159:18 | insert | semmle.label | insert | +| main.rs:159:20:159:20 | i | semmle.label | i | +| main.rs:159:20:159:28 | i.clone() | semmle.label | i.clone() | +| main.rs:159:20:159:70 | ... .set_same_site(...) | semmle.label | ... .set_same_site(...) | +| main.rs:160:13:160:18 | insert | semmle.label | insert | +| main.rs:160:20:160:20 | i | semmle.label | i | +| main.rs:160:20:160:28 | i.clone() | semmle.label | i.clone() | +| main.rs:160:20:160:46 | ... .set_max_age(...) | semmle.label | ... .set_max_age(...) | +| main.rs:161:13:161:18 | insert | semmle.label | insert | +| main.rs:161:20:161:20 | i | semmle.label | i | +| main.rs:161:20:161:28 | i.clone() | semmle.label | i.clone() | +| main.rs:161:20:161:42 | ... .set_path(...) | semmle.label | ... .set_path(...) | +| main.rs:162:13:162:18 | insert | semmle.label | insert | +| main.rs:162:20:162:20 | i | semmle.label | i | +| main.rs:162:20:162:28 | i.clone() | semmle.label | i.clone() | +| main.rs:162:20:162:41 | ... .unset_path() | semmle.label | ... .unset_path() | +| main.rs:163:13:163:18 | insert | semmle.label | insert | +| main.rs:163:20:163:20 | i | semmle.label | i | +| main.rs:163:20:163:28 | i.clone() | semmle.label | i.clone() | +| main.rs:163:20:163:54 | ... .set_domain(...) | semmle.label | ... .set_domain(...) | +| main.rs:164:13:164:18 | insert | semmle.label | insert | +| main.rs:164:20:164:20 | i | semmle.label | i | +| main.rs:164:20:164:28 | i.clone() | semmle.label | i.clone() | +| main.rs:164:20:164:43 | ... .unset_domain() | semmle.label | ... .unset_domain() | +| main.rs:165:13:165:18 | insert | semmle.label | insert | +| main.rs:165:20:165:20 | i | semmle.label | i | +| main.rs:165:20:165:28 | i.clone() | semmle.label | i.clone() | +| main.rs:165:20:165:46 | ... .set_expires(...) | semmle.label | ... .set_expires(...) | +| main.rs:166:13:166:18 | insert | semmle.label | insert | +| main.rs:166:20:166:20 | i | semmle.label | i | +| main.rs:166:20:166:28 | i.clone() | semmle.label | i.clone() | +| main.rs:166:20:166:44 | ... .unset_expires() | semmle.label | ... .unset_expires() | +| main.rs:167:13:167:18 | insert | semmle.label | insert | +| main.rs:167:20:167:20 | i | semmle.label | i | +| main.rs:167:20:167:28 | i.clone() | semmle.label | i.clone() | +| main.rs:167:20:167:45 | ... .make_permanent() | semmle.label | ... .make_permanent() | | main.rs:173:22:173:34 | ...::build | semmle.label | ...::build | | main.rs:173:22:173:59 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:173:61:173:65 | build | semmle.label | build | @@ -220,9 +558,30 @@ nodes | main.rs:198:5:198:53 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:198:5:198:63 | ... .path(...) | semmle.label | ... .path(...) | | main.rs:198:65:198:70 | finish | semmle.label | finish | +| main.rs:201:5:201:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | +| main.rs:201:5:201:11 | cookie1 | semmle.label | cookie1 | +| main.rs:202:9:202:11 | add | semmle.label | add | +| main.rs:202:13:202:19 | cookie1 | semmle.label | cookie1 | +| main.rs:202:13:202:27 | cookie1.clone() | semmle.label | cookie1.clone() | | main.rs:212:5:212:22 | ...::build | semmle.label | ...::build | | main.rs:212:5:212:39 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:212:41:212:46 | finish | semmle.label | finish | +| main.rs:214:9:214:15 | cookie3 | semmle.label | cookie3 | +| main.rs:214:19:214:34 | ...::new | semmle.label | ...::new | +| main.rs:214:19:214:51 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:215:9:215:11 | add | semmle.label | add | +| main.rs:215:13:215:19 | cookie3 | semmle.label | cookie3 | +| main.rs:215:13:215:27 | cookie3.clone() | semmle.label | cookie3.clone() | +| main.rs:218:5:218:11 | [SSA] cookie2 | semmle.label | [SSA] cookie2 | +| main.rs:218:5:218:11 | cookie2 | semmle.label | cookie2 | +| main.rs:219:9:219:11 | add | semmle.label | add | +| main.rs:219:13:219:19 | cookie2 | semmle.label | cookie2 | +| main.rs:219:13:219:27 | cookie2.clone() | semmle.label | cookie2.clone() | +| main.rs:228:5:228:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | +| main.rs:228:5:228:11 | cookie1 | semmle.label | cookie1 | +| main.rs:229:9:229:11 | add | semmle.label | add | +| main.rs:229:13:229:19 | cookie1 | semmle.label | cookie1 | +| main.rs:229:13:229:27 | cookie1.clone() | semmle.label | cookie1.clone() | | main.rs:241:9:241:25 | cookie_config_bad | semmle.label | cookie_config_bad | | main.rs:241:29:241:62 | ...::new(...) | semmle.label | ...::new(...) | | main.rs:241:29:241:76 | ... .secure(...) | semmle.label | ... .secure(...) | @@ -242,58 +601,23 @@ nodes | main.rs:260:5:260:57 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:260:5:260:67 | ... .path(...) | semmle.label | ... .path(...) | | main.rs:260:69:260:74 | finish | semmle.label | finish | +| main.rs:263:5:263:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | +| main.rs:263:5:263:11 | cookie1 | semmle.label | cookie1 | +| main.rs:264:9:264:11 | add | semmle.label | add | +| main.rs:264:13:264:19 | cookie1 | semmle.label | cookie1 | +| main.rs:264:13:264:27 | cookie1.clone() | semmle.label | cookie1.clone() | | main.rs:274:5:274:26 | ...::build | semmle.label | ...::build | | main.rs:274:5:274:43 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:274:45:274:50 | finish | semmle.label | finish | +| main.rs:276:9:276:15 | cookie3 | semmle.label | cookie3 | +| main.rs:276:19:276:38 | ...::new | semmle.label | ...::new | +| main.rs:276:19:276:55 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:277:9:277:11 | add | semmle.label | add | +| main.rs:277:13:277:19 | cookie3 | semmle.label | cookie3 | +| main.rs:277:13:277:27 | cookie3.clone() | semmle.label | cookie3.clone() | +| main.rs:280:5:280:11 | [SSA] cookie2 | semmle.label | [SSA] cookie2 | +| main.rs:280:5:280:11 | cookie2 | semmle.label | cookie2 | +| main.rs:281:9:281:11 | add | semmle.label | add | +| main.rs:281:13:281:19 | cookie2 | semmle.label | cookie2 | +| main.rs:281:13:281:27 | cookie2.clone() | semmle.label | cookie2.clone() | subpaths -testFailures -| main.rs:58:47:58:57 | //... | Missing result: Source | -| main.rs:59:25:59:56 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:60:34:60:65 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:63:26:63:36 | //... | Missing result: Source | -| main.rs:64:25:64:56 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:68:40:68:50 | //... | Missing result: Source | -| main.rs:69:32:69:63 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:70:41:70:72 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:71:30:71:40 | //... | Missing result: Source | -| main.rs:72:32:72:63 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:77:39:77:49 | //... | Missing result: Source | -| main.rs:78:33:78:64 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:79:42:79:73 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:83:33:83:64 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:87:39:87:49 | //... | Missing result: Source | -| main.rs:88:25:88:56 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:94:25:94:66 | //... | Fixed spurious result: Alert[rust/insecure-cookie] | -| main.rs:122:61:122:71 | //... | Missing result: Source | -| main.rs:123:32:123:63 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:130:34:130:44 | //... | Missing result: Source | -| main.rs:131:32:131:63 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:146:34:146:44 | //... | Missing result: Source | -| main.rs:147:32:147:63 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:155:61:155:71 | //... | Missing result: Source | -| main.rs:156:50:156:81 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:157:52:157:83 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:158:52:158:83 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:159:74:159:105 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:160:50:160:81 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:161:46:161:77 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:162:45:162:76 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:163:58:163:89 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:164:47:164:78 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:165:50:165:81 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:166:48:166:79 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:167:49:167:80 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:201:32:201:42 | //... | Missing result: Source | -| main.rs:202:31:202:62 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:214:54:214:64 | //... | Missing result: Source | -| main.rs:215:31:215:62 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:218:31:218:41 | //... | Missing result: Source | -| main.rs:219:31:219:62 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:228:32:228:42 | //... | Missing result: Source | -| main.rs:229:31:229:62 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:263:32:263:42 | //... | Missing result: Source | -| main.rs:264:31:264:62 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:276:58:276:68 | //... | Missing result: Source | -| main.rs:277:31:277:62 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:280:31:280:41 | //... | Missing result: Source | -| main.rs:281:31:281:62 | //... | Missing result: Alert[rust/insecure-cookie] | From 76140a69070b9bc78422961ec13f593b8d0cb5c6 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 3 Aug 2026 17:56:36 +0200 Subject: [PATCH 025/167] Rust: Add change note for rust-analyzer 0.0.328 upgrade Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- rust/ql/lib/change-notes/2026-08-03-rust-analyzer-0.0.328.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/lib/change-notes/2026-08-03-rust-analyzer-0.0.328.md diff --git a/rust/ql/lib/change-notes/2026-08-03-rust-analyzer-0.0.328.md b/rust/ql/lib/change-notes/2026-08-03-rust-analyzer-0.0.328.md new file mode 100644 index 000000000000..d9403a8b62aa --- /dev/null +++ b/rust/ql/lib/change-notes/2026-08-03-rust-analyzer-0.0.328.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The Rust extractor has been upgraded to use `rust-analyzer` version 0.0.328. As a result, the AST exposed by the Rust libraries has changed: the `TraitAlias` class has been removed, `cfg` attributes are now modeled by the new `CfgMeta`, `CfgAtom`, `CfgComposite`, `CfgPredicate`, and `CfgAttrMeta` classes, and the `Meta` class has been refined into the `KeyValueMeta`, `PathMeta`, `TokenTreeMeta`, and `UnsafeMeta` subclasses. New `TryBlockModifier` and `FormatArgsArgName` classes have also been added. From 50648628bfbd8e1720292d54e8827b890bf5f899 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 3 Aug 2026 18:03:08 +0200 Subject: [PATCH 026/167] Rust: fix clippy lints surfaced by the 1.91 toolchain bump Collapse nested `if let`/`if` into let-chains (edition 2024) in tree-sitter-extractor and add an explicit `'_` lifetime in yeast, as required by clippy under the new toolchain. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../tree-sitter-extractor/src/diagnostics.rs | 34 +++++++++---------- .../src/extractor/mod.rs | 16 ++++----- .../src/generator/ql_gen.rs | 8 ++--- .../tree-sitter-extractor/src/node_types.rs | 8 ++--- shared/yeast/src/lib.rs | 2 +- 5 files changed, 34 insertions(+), 34 deletions(-) diff --git a/shared/tree-sitter-extractor/src/diagnostics.rs b/shared/tree-sitter-extractor/src/diagnostics.rs index cd6f685e639e..412647ee07a5 100644 --- a/shared/tree-sitter-extractor/src/diagnostics.rs +++ b/shared/tree-sitter-extractor/src/diagnostics.rs @@ -119,24 +119,24 @@ impl LogWriter { Some(Severity::Note) => tracing::info!("{}", full_error_message), None => tracing::debug!("{}", full_error_message), } - if self.inner.is_none() { - if let Some(path) = self.path.as_ref() { - match std::fs::OpenOptions::new() - .create(true) - .append(true) - .open(path) - { - Err(e) => { - tracing::error!( - "Could not open log file '{}': {}", - &path.to_string_lossy(), - e - ); - self.path = None; - self.inner = None - } - Ok(file) => self.inner = Some(std::io::BufWriter::new(file)), + if self.inner.is_none() + && let Some(path) = self.path.as_ref() + { + match std::fs::OpenOptions::new() + .create(true) + .append(true) + .open(path) + { + Err(e) => { + tracing::error!( + "Could not open log file '{}': {}", + &path.to_string_lossy(), + e + ); + self.path = None; + self.inner = None } + Ok(file) => self.inner = Some(std::io::BufWriter::new(file)), } } if let Some(mut writer) = self.inner.as_mut() { diff --git a/shared/tree-sitter-extractor/src/extractor/mod.rs b/shared/tree-sitter-extractor/src/extractor/mod.rs index 1a8b9e820164..13ee3264133b 100644 --- a/shared/tree-sitter-extractor/src/extractor/mod.rs +++ b/shared/tree-sitter-extractor/src/extractor/mod.rs @@ -904,10 +904,10 @@ impl<'a> Visitor<'a> { if tp == single_type { return true; } - if let EntryKind::Union { members } = &self.schema.get(single_type).unwrap().kind { - if self.type_matches_set(tp, members) { - return true; - } + if let EntryKind::Union { members } = &self.schema.get(single_type).unwrap().kind + && self.type_matches_set(tp, members) + { + return true; } } node_types::FieldTypeInfo::Multiple { types, .. } => { @@ -926,10 +926,10 @@ impl<'a> Visitor<'a> { return true; } for other in types.iter() { - if let EntryKind::Union { members } = &self.schema.get(other).unwrap().kind { - if self.type_matches_set(tp, members) { - return true; - } + if let EntryKind::Union { members } = &self.schema.get(other).unwrap().kind + && self.type_matches_set(tp, members) + { + return true; } } false diff --git a/shared/tree-sitter-extractor/src/generator/ql_gen.rs b/shared/tree-sitter-extractor/src/generator/ql_gen.rs index fe6f9a2a828b..237ed9ddb968 100644 --- a/shared/tree-sitter-extractor/src/generator/ql_gen.rs +++ b/shared/tree-sitter-extractor/src/generator/ql_gen.rs @@ -834,10 +834,10 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { let mut token_kinds = BTreeSet::new(); let direct_supertypes = compute_direct_supertypes(nodes); for (type_name, node) in nodes { - if let node_types::EntryKind::Token { .. } = &node.kind { - if type_name.named { - token_kinds.insert(&type_name.kind); - } + if let node_types::EntryKind::Token { .. } = &node.kind + && type_name.named + { + token_kinds.insert(&type_name.kind); } } diff --git a/shared/tree-sitter-extractor/src/node_types.rs b/shared/tree-sitter-extractor/src/node_types.rs index 4c67c2e4f20e..65217c8a28b6 100644 --- a/shared/tree-sitter-extractor/src/node_types.rs +++ b/shared/tree-sitter-extractor/src/node_types.rs @@ -355,10 +355,10 @@ fn escape_name(name: &str) -> String { let mut result = String::new(); // If there's a leading underscore, replace it with 'underscore_'. - if let Some(c) = name.chars().next() { - if c == '_' { - result.push_str("underscore"); - } + if let Some(c) = name.chars().next() + && c == '_' + { + result.push_str("underscore"); } for c in name.chars() { match c { diff --git a/shared/yeast/src/lib.rs b/shared/yeast/src/lib.rs index cf06d2d2c17b..c290246541f5 100644 --- a/shared/yeast/src/lib.rs +++ b/shared/yeast/src/lib.rs @@ -492,7 +492,7 @@ impl Ast { } } - pub fn walk(&self) -> AstCursor { + pub fn walk(&self) -> AstCursor<'_> { AstCursor::new(self) } From 1ff0e75f4d3b02603c92450bd3076b89743c32c6 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 3 Aug 2026 18:09:05 +0200 Subject: [PATCH 027/167] Rust: fix rustfmt formatting of ra_ap_syntax_bridge import The rust-analyzer 0.0.328 upgrade changed the ra_ap_syntax_bridge import in rust/extractor/src/translate/base.rs to a single line that exceeds the max width, causing the rust-code CI job to fail at cargo fmt --check. Wrap the import so cargo fmt --check passes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- rust/extractor/src/translate/base.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rust/extractor/src/translate/base.rs b/rust/extractor/src/translate/base.rs index 62ff3d5fa10e..cb498e40bfe9 100644 --- a/rust/extractor/src/translate/base.rs +++ b/rust/extractor/src/translate/base.rs @@ -18,7 +18,9 @@ use ra_ap_syntax::{ AstNode, NodeOrToken, SyntaxElementChildren, SyntaxError, SyntaxNode, SyntaxToken, TextRange, ast, }; -use ra_ap_syntax_bridge::{DocCommentDesugarMode, syntax_node_to_token_tree, token_tree_to_syntax_node}; +use ra_ap_syntax_bridge::{ + DocCommentDesugarMode, syntax_node_to_token_tree, token_tree_to_syntax_node, +}; impl Emission for Translator<'_> { fn pre_emit(&mut self, node: &ast::Item) -> Option> { From d85deef514bdc072b4e8ae1b697b192a63f02d24 Mon Sep 17 00:00:00 2001 From: Keshav Malik Date: Wed, 5 Aug 2026 22:38:06 +0530 Subject: [PATCH 028/167] Detect unpinned reusable workflows --- .../Security/CWE-829/UnpinnedActionsTag.md | 18 ++++++++-- .../Security/CWE-829/UnpinnedActionsTag.ql | 36 ++++++++++++------- .../2026-08-05-unpinned-reusable-workflows.md | 4 +++ .../workflows/unpinned_reusable_workflows.yml | 35 ++++++++++++++++++ .../CWE-829/UnpinnedActionsTag.expected | 18 ++++++++++ 5 files changed, 97 insertions(+), 14 deletions(-) create mode 100644 actions/ql/src/change-notes/2026-08-05-unpinned-reusable-workflows.md create mode 100644 actions/ql/test/query-tests/Security/CWE-829/.github/workflows/unpinned_reusable_workflows.yml diff --git a/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.md b/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.md index 16551e9c89a7..b8c7435adddf 100644 --- a/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.md +++ b/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.md @@ -1,10 +1,10 @@ ## Overview -Using a tag for a 3rd party Action that is not pinned to a commit can lead to executing an untrusted Action through a supply chain attack. +Using a mutable tag or branch for an Action or reusable workflow can lead to executing untrusted code through a supply chain attack. ## Recommendation -Pinning an action to a full length commit SHA is currently the only way to use a non-immutable action as an immutable release. Pinning to a particular SHA helps mitigate the risk of a bad actor adding a backdoor to the action's repository, as they would need to generate a SHA-1 collision for a valid Git object payload. When selecting a SHA, you should verify it is from the action's repository and not a repository fork. +Pinning an Action or reusable workflow to a full length commit SHA is currently the only way to use a mutable reference as an immutable release. Pinning to a particular SHA helps mitigate the risk of a bad actor adding a backdoor to the referenced repository, as they would need to generate a SHA-1 collision for a valid Git object payload. When selecting a SHA, you should verify it is from the intended repository and not a repository fork. ## Example @@ -14,12 +14,26 @@ Pinning an action to a full length commit SHA is currently the only way to use a - uses: tj-actions/changed-files@v44 ``` +```yaml +jobs: + call-workflow: + uses: example/actions/.github/workflows/build.yml@main +``` + ### Correct Usage ```yaml - uses: tj-actions/changed-files@c65cd883420fd2eb864698a825fc4162dd94482c # v44 ``` +```yaml +jobs: + call-workflow: + uses: example/actions/.github/workflows/build.yml@25b062c917b0c75f8b47d8469aff6c94ffd89abb +``` + ## References - GitHub Docs: [Using third-party actions](https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions#using-third-party-actions). +- GitHub Docs: [Reusing third-party workflows](https://docs.github.com/en/actions/reference/security/secure-use#reusing-third-party-workflows). +- GitHub Docs: [Workflow syntax for reusable workflow calls](https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_iduses). diff --git a/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql b/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql index 530b8e48e0f5..9a4bc007bb51 100644 --- a/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql +++ b/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql @@ -1,6 +1,6 @@ /** - * @name Unpinned tag for a non-immutable Action in workflow or composite action - * @description Using a tag for a non-immutable Action that is not pinned to a commit can lead to executing an untrusted Action through a supply chain attack. + * @name Unpinned tag for a non-immutable Action or reusable workflow + * @description Using a mutable reference for a non-immutable Action or reusable workflow can lead to executing untrusted code through a supply chain attack. * @kind problem * @security-severity 5.0 * @problem.severity warning @@ -33,7 +33,7 @@ private predicate isPinnedContainer(string version) { bindingset[nwo] private predicate isContainerImage(string nwo) { nwo.regexpMatch("^docker://.+") } -private predicate getStepContainerName(UsesStep uses, string name) { +private predicate hasUsesContainerName(Uses uses, string name) { exists(Workflow workflow | uses.getEnclosingWorkflow() = workflow and ( @@ -43,20 +43,32 @@ private predicate getStepContainerName(UsesStep uses, string name) { ) ) or - exists(CompositeAction action | - uses.getEnclosingCompositeAction() = action and + exists(UsesStep step, CompositeAction action | + uses = step and + step.getEnclosingCompositeAction() = action and name = action.getLocation().getFile().getBaseName() ) } -from UsesStep uses, string nwo, string version, string name +from Uses uses, string nwo, string version, string name, string message where uses.getCallee() = nwo and - getStepContainerName(uses, name) and + hasUsesContainerName(uses, name) and uses.getVersion() = version and not isTrustedOwner(nwo) and - not (if isContainerImage(nwo) then isPinnedContainer(version) else isPinnedCommit(version)) and - not isImmutableAction(uses, nwo) -select uses.getCalleeNode(), - "Unpinned 3rd party Action '" + name + "' step $@ uses '" + nwo + "' with ref '" + version + - "', not a pinned commit hash", uses, uses.toString() + not ( + if uses instanceof UsesStep and isContainerImage(nwo) + then isPinnedContainer(version) + else isPinnedCommit(version) + ) and + not exists(UsesStep step | uses = step and isImmutableAction(step, nwo)) and + if uses instanceof ExternalJob + then + message = + "Job $@ in '" + name + "' uses reusable workflow '" + nwo + "' with ref '" + version + + "', not a pinned commit hash" + else + message = + "Unpinned 3rd party Action '" + name + "' step $@ uses '" + nwo + "' with ref '" + version + + "', not a pinned commit hash" +select uses.getCalleeNode(), message, uses, uses.toString() diff --git a/actions/ql/src/change-notes/2026-08-05-unpinned-reusable-workflows.md b/actions/ql/src/change-notes/2026-08-05-unpinned-reusable-workflows.md new file mode 100644 index 000000000000..6269fdec14e6 --- /dev/null +++ b/actions/ql/src/change-notes/2026-08-05-unpinned-reusable-workflows.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The `actions/unpinned-tag` query now detects mutable references to reusable workflows. diff --git a/actions/ql/test/query-tests/Security/CWE-829/.github/workflows/unpinned_reusable_workflows.yml b/actions/ql/test/query-tests/Security/CWE-829/.github/workflows/unpinned_reusable_workflows.yml new file mode 100644 index 000000000000..72ce6b4dd05b --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-829/.github/workflows/unpinned_reusable_workflows.yml @@ -0,0 +1,35 @@ +name: Reusable workflow pinning + +on: + pull_request: + +jobs: + unpinned-tag: + uses: example/actions/.github/workflows/build.yml@v2 + + unpinned-branch: + uses: example/actions/.github/workflows/build.yml@main + + unpinned-branch-with-slash: + uses: example/actions/.github/workflows/build.yml@release/v2 + + unpinned-short-sha: + uses: example/actions/.github/workflows/build.yml@25b062c917b0c75f8b47d8469aff6c94ffd89ab + + pinned-sha1: + uses: example/actions/.github/workflows/build.yml@25b062c917b0c75f8b47d8469aff6c94ffd89abb + + pinned-sha256: + uses: example/actions/.github/workflows/build.yml@25b062c917b0c75f8b47d8469aff6c94ffd89abb25b062c917b0c75f8b47d84d + + pinned-uppercase-sha1: + uses: example/actions/.github/workflows/build.yml@25B062C917B0C75F8B47D8469AFF6C94FFD89ABB + + trusted-owner: + uses: actions/reusable-workflows/.github/workflows/build.yml@main + + local-workflow: + uses: ./.github/workflows/reusable_local.yml + + local-workflow-dollar: + uses: $/.github/workflows/reusable_local.yml diff --git a/actions/ql/test/query-tests/Security/CWE-829/UnpinnedActionsTag.expected b/actions/ql/test/query-tests/Security/CWE-829/UnpinnedActionsTag.expected index 14cff70c3804..05f9cf3d8fd5 100644 --- a/actions/ql/test/query-tests/Security/CWE-829/UnpinnedActionsTag.expected +++ b/actions/ql/test/query-tests/Security/CWE-829/UnpinnedActionsTag.expected @@ -8,6 +8,10 @@ | .github/workflows/auto_ci.yml:94:15:94:39 | codecov/codecov-action@v3 | Unpinned 3rd party Action 'Python CI' step $@ uses 'codecov/codecov-action' with ref 'v3', not a pinned commit hash | .github/workflows/auto_ci.yml:93:9:96:6 | Uses Step | Uses Step | | .github/workflows/auto_ci.yml:111:15:111:48 | peter-evans/create-pull-request@v5 | Unpinned 3rd party Action 'Python CI' step $@ uses 'peter-evans/create-pull-request' with ref 'v5', not a pinned commit hash | .github/workflows/auto_ci.yml:108:9:119:6 | Uses Step: create_pr | Uses Step: create_pr | | .github/workflows/auto_ci.yml:127:15:127:56 | thollander/actions-comment-pull-request@v2 | Unpinned 3rd party Action 'Python CI' step $@ uses 'thollander/actions-comment-pull-request' with ref 'v2', not a pinned commit hash | .github/workflows/auto_ci.yml:125:9:133:6 | Uses Step | Uses Step | +| .github/workflows/external/TestOrg/TestRepo/.github/workflows/build_nested.yml:9:11:9:59 | TestOrg/TestRepo/.github/workflows/build.yml@main | Job $@ in 'build_nested.yml' uses reusable workflow 'TestOrg/TestRepo/.github/workflows/build.yml' with ref 'main', not a pinned commit hash | .github/workflows/external/TestOrg/TestRepo/.github/workflows/build_nested.yml:9:5:13:7 | Job: build | Job: build | +| .github/workflows/external/TestOrg/TestRepo/.github/workflows/build_nested_branching.yml:27:11:27:66 | TestOrg/TestRepo/.github/workflows/build_nested.yml@main | Job $@ in 'build_nested_branching.yml' uses reusable workflow 'TestOrg/TestRepo/.github/workflows/build_nested.yml' with ref 'main', not a pinned commit hash | .github/workflows/external/TestOrg/TestRepo/.github/workflows/build_nested_branching.yml:26:5:30:2 | Job: build_safe | Job: build_safe | +| .github/workflows/external/TestOrg/TestRepo/.github/workflows/build_nested_branching.yml:31:11:31:66 | TestOrg/TestRepo/.github/workflows/build_nested.yml@main | Job $@ in 'build_nested_branching.yml' uses reusable workflow 'TestOrg/TestRepo/.github/workflows/build_nested.yml' with ref 'main', not a pinned commit hash | .github/workflows/external/TestOrg/TestRepo/.github/workflows/build_nested_branching.yml:31:5:33:43 | Job: build_unsafe | Job: build_unsafe | +| .github/workflows/formal.yml:12:11:12:60 | TestOrg/TestRepo/.github/workflows/formal.yml@main | Job $@ in 'Test Formalities' uses reusable workflow 'TestOrg/TestRepo/.github/workflows/formal.yml' with ref 'main', not a pinned commit hash | .github/workflows/formal.yml:11:5:12:61 | Job: build | Job: build | | .github/workflows/issue_comment_3rd_party_action.yml:14:15:14:52 | xt0rted/pull-request-comment-branch@v2 | Unpinned 3rd party Action 'PR head from 3rd party action' step $@ uses 'xt0rted/pull-request-comment-branch' with ref 'v2', not a pinned commit hash | .github/workflows/issue_comment_3rd_party_action.yml:12:9:16:6 | Uses Step: comment-branch | Uses Step: comment-branch | | .github/workflows/issue_comment_3rd_party_action.yml:27:15:27:52 | xt0rted/pull-request-comment-branch@v2 | Unpinned 3rd party Action 'PR head from 3rd party action' step $@ uses 'xt0rted/pull-request-comment-branch' with ref 'v2', not a pinned commit hash | .github/workflows/issue_comment_3rd_party_action.yml:25:9:30:6 | Uses Step: comment-branch | Uses Step: comment-branch | | .github/workflows/issue_comment_3rd_party_action.yml:41:15:41:42 | eficode/resolve-pr-refs@main | Unpinned 3rd party Action 'PR head from 3rd party action' step $@ uses 'eficode/resolve-pr-refs' with ref 'main', not a pinned commit hash | .github/workflows/issue_comment_3rd_party_action.yml:39:9:45:6 | Uses Step: refs | Uses Step: refs | @@ -28,10 +32,24 @@ | .github/workflows/pr-workflow.yml:449:15:449:43 | cachix/install-nix-action@v20 | Unpinned 3rd party Action 'pr-workflow' step $@ uses 'cachix/install-nix-action' with ref 'v20', not a pinned commit hash | .github/workflows/pr-workflow.yml:449:9:452:6 | Uses Step | Uses Step | | .github/workflows/pr-workflow.yml:452:15:452:60 | DeterminateSystems/magic-nix-cache-action@main | Unpinned 3rd party Action 'pr-workflow' step $@ uses 'DeterminateSystems/magic-nix-cache-action' with ref 'main', not a pinned commit hash | .github/workflows/pr-workflow.yml:452:9:453:6 | Uses Step | Uses Step | | .github/workflows/pr-workflow.yml:453:15:453:41 | cachix/cachix-action@master | Unpinned 3rd party Action 'pr-workflow' step $@ uses 'cachix/cachix-action' with ref 'master', not a pinned commit hash | .github/workflows/pr-workflow.yml:453:9:459:6 | Uses Step | Uses Step | +| .github/workflows/reusable_caller1.yaml:8:11:8:62 | TestOrg/TestRepo/.github/workflows/reusable.yml@main | Job $@ in 'assets-test' uses reusable workflow 'TestOrg/TestRepo/.github/workflows/reusable.yml' with ref 'main', not a pinned commit hash | .github/workflows/reusable_caller1.yaml:8:5:10:56 | Job: check-execution-context | Job: check-execution-context | +| .github/workflows/reusable_caller2.yaml:8:11:8:62 | TestOrg/TestRepo/.github/workflows/reusable.yml@main | Job $@ in 'assets-test' uses reusable workflow 'TestOrg/TestRepo/.github/workflows/reusable.yml' with ref 'main', not a pinned commit hash | .github/workflows/reusable_caller2.yaml:8:5:10:56 | Job: check-execution-context | Job: check-execution-context | | .github/workflows/test7.yml:25:15:25:34 | pnpm/action-setup@v3 | Unpinned 3rd party Action 'Benchmark' step $@ uses 'pnpm/action-setup' with ref 'v3', not a pinned commit hash | .github/workflows/test7.yml:24:9:27:6 | Uses Step | Uses Step | | .github/workflows/test13.yml:15:13:15:53 | sushichop/action-repository-permission@v2 | Unpinned 3rd party Action 'test13.yml' step $@ uses 'sushichop/action-repository-permission' with ref 'v2', not a pinned commit hash | .github/workflows/test13.yml:14:7:20:4 | Uses Step | Uses Step | | .github/workflows/test17.yml:20:21:20:63 | sonarsource/sonarcloud-github-action@master | Unpinned 3rd party Action 'Sonar' step $@ uses 'sonarsource/sonarcloud-github-action' with ref 'master', not a pinned commit hash | .github/workflows/test17.yml:19:15:23:58 | Uses Step | Uses Step | | .github/workflows/test18.yml:37:21:37:63 | sonarsource/sonarcloud-github-action@master | Unpinned 3rd party Action 'Sonar' step $@ uses 'sonarsource/sonarcloud-github-action' with ref 'master', not a pinned commit hash | .github/workflows/test18.yml:36:15:40:58 | Uses Step | Uses Step | +| .github/workflows/unpinned_reusable_workflows.yml:8:11:8:56 | example/actions/.github/workflows/build.yml@v2 | Job $@ in 'Reusable workflow pinning' uses reusable workflow 'example/actions/.github/workflows/build.yml' with ref 'v2', not a pinned commit hash | .github/workflows/unpinned_reusable_workflows.yml:8:5:10:2 | Job: unpinned-tag | Job: unpinned-tag | +| .github/workflows/unpinned_reusable_workflows.yml:11:11:11:58 | example/actions/.github/workflows/build.yml@main | Job $@ in 'Reusable workflow pinning' uses reusable workflow 'example/actions/.github/workflows/build.yml' with ref 'main', not a pinned commit hash | .github/workflows/unpinned_reusable_workflows.yml:11:5:13:2 | Job: unpinned-branch | Job: unpinned-branch | +| .github/workflows/unpinned_reusable_workflows.yml:14:11:14:64 | example/actions/.github/workflows/build.yml@release/v2 | Job $@ in 'Reusable workflow pinning' uses reusable workflow 'example/actions/.github/workflows/build.yml' with ref 'release/v2', not a pinned commit hash | .github/workflows/unpinned_reusable_workflows.yml:14:5:16:2 | Job: unpinned-branch-with-slash | Job: unpinned-branch-with-slash | +| .github/workflows/unpinned_reusable_workflows.yml:17:11:17:93 | example/actions/.github/workflows/build.yml@25b062c917b0c75f8b47d8469aff6c94ffd89ab | Job $@ in 'Reusable workflow pinning' uses reusable workflow 'example/actions/.github/workflows/build.yml' with ref '25b062c917b0c75f8b47d8469aff6c94ffd89ab', not a pinned commit hash | .github/workflows/unpinned_reusable_workflows.yml:17:5:19:2 | Job: unpinned-short-sha | Job: unpinned-short-sha | | .github/workflows/unpinned_tags.yml:10:13:10:22 | foo/bar@v1 | Unpinned 3rd party Action 'unpinned_tags.yml' step $@ uses 'foo/bar' with ref 'v1', not a pinned commit hash | .github/workflows/unpinned_tags.yml:10:7:11:4 | Uses Step | Uses Step | | .github/workflows/unpinned_tags.yml:12:13:12:35 | docker://foo/bar@latest | Unpinned 3rd party Action 'unpinned_tags.yml' step $@ uses 'docker://foo/bar' with ref 'latest', not a pinned commit hash | .github/workflows/unpinned_tags.yml:12:7:13:4 | Uses Step | Uses Step | | .github/workflows/unpinned_tags.yml:19:13:19:70 | foo/bar@a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2a1b2c3d4e5 | Unpinned 3rd party Action 'unpinned_tags.yml' step $@ uses 'foo/bar' with ref 'a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2a1b2c3d4e5', not a pinned commit hash | .github/workflows/unpinned_tags.yml:19:7:19:71 | Uses Step | Uses Step | +| .github/workflows/untrusted_checkout_permission_check_reusable2.yml:24:11:24:59 | TestOrg/TestRepo/.github/workflows/build.yml@main | Job $@ in 'untrusted_checkout_permission_check_reusable2.yml' uses reusable workflow 'TestOrg/TestRepo/.github/workflows/build.yml' with ref 'main', not a pinned commit hash | .github/workflows/untrusted_checkout_permission_check_reusable2.yml:24:5:27:2 | Job: build_unsafe | Job: build_unsafe | +| .github/workflows/untrusted_checkout_permission_check_reusable2.yml:29:11:29:59 | TestOrg/TestRepo/.github/workflows/build.yml@main | Job $@ in 'untrusted_checkout_permission_check_reusable2.yml' uses reusable workflow 'TestOrg/TestRepo/.github/workflows/build.yml' with ref 'main', not a pinned commit hash | .github/workflows/untrusted_checkout_permission_check_reusable2.yml:28:5:31:101 | Job: build_safe | Job: build_safe | +| .github/workflows/untrusted_checkout_permission_check_reusable.yml:24:11:24:59 | TestOrg/TestRepo/.github/workflows/build.yml@main | Job $@ in 'untrusted_checkout_permission_check_reusable.yml' uses reusable workflow 'TestOrg/TestRepo/.github/workflows/build.yml' with ref 'main', not a pinned commit hash | .github/workflows/untrusted_checkout_permission_check_reusable.yml:23:5:26:101 | Job: build | Job: build | +| .github/workflows/untrusted_checkout_permission_check_reusable_branching_nested.yml:6:11:6:76 | TestOrg/TestRepo/.github/workflows/build_nested_branching.yml@main | Job $@ in 'untrusted_checkout_permission_check_reusable_branching_nested.yml' uses reusable workflow 'TestOrg/TestRepo/.github/workflows/build_nested_branching.yml' with ref 'main', not a pinned commit hash | .github/workflows/untrusted_checkout_permission_check_reusable_branching_nested.yml:6:5:8:60 | Job: build | Job: build | +| .github/workflows/untrusted_checkout_permission_check_reusable_level2.yml:24:11:24:66 | TestOrg/TestRepo/.github/workflows/build_nested.yml@main | Job $@ in 'untrusted_checkout_permission_check_reusable_level2.yml' uses reusable workflow 'TestOrg/TestRepo/.github/workflows/build_nested.yml' with ref 'main', not a pinned commit hash | .github/workflows/untrusted_checkout_permission_check_reusable_level2.yml:23:5:26:101 | Job: build | Job: build | +| .github/workflows/untrusted_checkout_permission_check_reusable_no_needs.yml:24:11:24:66 | TestOrg/TestRepo/.github/workflows/build_nested.yml@main | Job $@ in 'untrusted_checkout_permission_check_reusable_no_needs.yml' uses reusable workflow 'TestOrg/TestRepo/.github/workflows/build_nested.yml' with ref 'main', not a pinned commit hash | .github/workflows/untrusted_checkout_permission_check_reusable_no_needs.yml:24:5:26:60 | Job: build | Job: build | +| .github/workflows/untrusted_checkout_two_callers_both_protected.yml:24:11:24:59 | TestOrg/TestRepo/.github/workflows/build.yml@main | Job $@ in 'untrusted_checkout_two_callers_both_protected.yml' uses reusable workflow 'TestOrg/TestRepo/.github/workflows/build.yml' with ref 'main', not a pinned commit hash | .github/workflows/untrusted_checkout_two_callers_both_protected.yml:23:5:27:2 | Job: caller-a | Job: caller-a | +| .github/workflows/untrusted_checkout_two_callers_both_protected.yml:46:11:46:59 | TestOrg/TestRepo/.github/workflows/build.yml@main | Job $@ in 'untrusted_checkout_two_callers_both_protected.yml' uses reusable workflow 'TestOrg/TestRepo/.github/workflows/build.yml' with ref 'main', not a pinned commit hash | .github/workflows/untrusted_checkout_two_callers_both_protected.yml:45:5:48:60 | Job: caller-b | Job: caller-b | From 60baec6745bbe75ee416244bacb0d353370b191b Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 6 Aug 2026 20:33:53 +0200 Subject: [PATCH 029/167] unified: Add test showing problem with literal getValue() getValue() returns an empty string for various literals --- unified/ql/test/library-tests/BasicTest/strings.swift | 1 + unified/ql/test/library-tests/BasicTest/test.expected | 2 ++ unified/ql/test/library-tests/BasicTest/test.ql | 2 ++ 3 files changed, 5 insertions(+) create mode 100644 unified/ql/test/library-tests/BasicTest/strings.swift diff --git a/unified/ql/test/library-tests/BasicTest/strings.swift b/unified/ql/test/library-tests/BasicTest/strings.swift new file mode 100644 index 000000000000..db9ae84e980b --- /dev/null +++ b/unified/ql/test/library-tests/BasicTest/strings.swift @@ -0,0 +1 @@ +let x = "hello" diff --git a/unified/ql/test/library-tests/BasicTest/test.expected b/unified/ql/test/library-tests/BasicTest/test.expected index b9f4eafe8653..6043574bef25 100644 --- a/unified/ql/test/library-tests/BasicTest/test.expected +++ b/unified/ql/test/library-tests/BasicTest/test.expected @@ -35,3 +35,5 @@ nameExpr | test.swift:87:38:87:43 | NameExpr | values | | test.swift:87:49:87:57 | NameExpr | transform | unsupported +stringValue +| strings.swift:1:9:1:15 | | | diff --git a/unified/ql/test/library-tests/BasicTest/test.ql b/unified/ql/test/library-tests/BasicTest/test.ql index 5e70f9303687..8e30af381d61 100644 --- a/unified/ql/test/library-tests/BasicTest/test.ql +++ b/unified/ql/test/library-tests/BasicTest/test.ql @@ -3,3 +3,5 @@ import unified query predicate nameExpr(NameExpr node, string value) { value = node.getIdentifier().getValue() } query predicate unsupported(UnsupportedNode node, string value) { value = node.getValue() } + +query predicate stringValue(StringLiteral e, string value) { value = e.getValue() } From 51fe2730855f84aa1e26cf91fc3d3ec0749a253f Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 6 Aug 2026 20:32:46 +0200 Subject: [PATCH 030/167] unified: Fix extraction of literals --- unified/extractor/src/languages/swift/swift.rs | 12 ++++++------ .../ql/test/library-tests/BasicTest/test.expected | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/unified/extractor/src/languages/swift/swift.rs b/unified/extractor/src/languages/swift/swift.rs index ccc1cc7f725d..e76e7ef212d4 100644 --- a/unified/extractor/src/languages/swift/swift.rs +++ b/unified/extractor/src/languages/swift/swift.rs @@ -158,12 +158,12 @@ fn translation_rules() -> Vec> { // swift-syntax does not distinguish the lexical integer/string forms // (hex/binary/octal, single- vs multi-line, raw): each is a single // `*LiteralExpr` kind, so one rule per literal type suffices. - rule!((integerLiteralExpr) => (int_literal)), - rule!((floatLiteralExpr) => (float_literal)), - rule!((booleanLiteralExpr) => (boolean_literal)), - rule!((nilLiteralExpr) => (builtin_expr)), - rule!((stringLiteralExpr) => (string_literal)), - rule!((regexLiteralExpr) => (regex_literal)), + rule!((integerLiteralExpr) @@node => (int_literal #{node})), + rule!((floatLiteralExpr) @@node => (float_literal #{node})), + rule!((booleanLiteralExpr) @@node => (boolean_literal #{node})), + rule!((nilLiteralExpr) @@node => (builtin_expr #{node})), + rule!((stringLiteralExpr) @@node => (string_literal #{node})), + rule!((regexLiteralExpr) @@node => (regex_literal #{node})), // ---- Names ---- // A function reference spelled with argument labels (`f(x:y:z:)`) is a // `declReferenceExpr` carrying `argumentNames`. Mark it unsupported for diff --git a/unified/ql/test/library-tests/BasicTest/test.expected b/unified/ql/test/library-tests/BasicTest/test.expected index 6043574bef25..301cd90ca2a5 100644 --- a/unified/ql/test/library-tests/BasicTest/test.expected +++ b/unified/ql/test/library-tests/BasicTest/test.expected @@ -36,4 +36,4 @@ nameExpr | test.swift:87:49:87:57 | NameExpr | transform | unsupported stringValue -| strings.swift:1:9:1:15 | | | +| strings.swift:1:9:1:15 | "hello" | "hello" | From b71ff8f233772efd41db45affde7f8b0a2a04b00 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 6 Aug 2026 10:00:57 +0200 Subject: [PATCH 031/167] unified: Factor some code into CommentUtil.qll --- unified/ql/lib/utils/test/CommentUtil.qll | 20 +++++++++++++++++++ .../library-tests/local-name-binding/test.ql | 20 +------------------ 2 files changed, 21 insertions(+), 19 deletions(-) create mode 100644 unified/ql/lib/utils/test/CommentUtil.qll diff --git a/unified/ql/lib/utils/test/CommentUtil.qll b/unified/ql/lib/utils/test/CommentUtil.qll new file mode 100644 index 000000000000..6747aed57187 --- /dev/null +++ b/unified/ql/lib/utils/test/CommentUtil.qll @@ -0,0 +1,20 @@ +private import unified + +/** Holds if a comment with `text` appears at `filepath:line`, excluding the text in a `$` section. */ +predicate plainCommentAt(string filepath, int line, string text) { + exists(Comment comment | + comment.getLocation().hasLocationInfo(filepath, line, _, _, _) and + text = comment.getCommentText().regexpReplaceAll("\\$([^/]|/[^/])*", "") + ) +} + +/** Holds if a `key=value` comment appears on `filepath:line` (not in the `$` section). */ +predicate keyValueCommentAt(string filepath, int line, string key, string value) { + exists(string text, string regexp, string match | + plainCommentAt(filepath, line, text) and + regexp = "(\\w+)=([\\w.]+)" and + match = text.regexpFind(regexp, _, _) and + key = match.regexpCapture(regexp, 1) and + value = match.regexpCapture(regexp, 2) + ) +} diff --git a/unified/ql/test/library-tests/local-name-binding/test.ql b/unified/ql/test/library-tests/local-name-binding/test.ql index 0fcae36dd31e..e430f16ba48d 100644 --- a/unified/ql/test/library-tests/local-name-binding/test.ql +++ b/unified/ql/test/library-tests/local-name-binding/test.ql @@ -1,26 +1,8 @@ import unified import utils.test.InlineExpectationsTest +import utils.test.CommentUtil import codeql.unified.internal.LocalNameBinding -/** Holds if a comment with `text` appears at `filepath:line`, excluding the text in a `$` section. */ -predicate plainCommentAt(string filepath, int line, string text) { - exists(Comment comment | - comment.getLocation().hasLocationInfo(filepath, line, _, _, _) and - text = comment.getCommentText().regexpReplaceAll("\\$([^/]|/[^/])*", "") - ) -} - -/** Holds if a `key=value` comment appears on `filepath:line` (not in the `$` section). */ -predicate keyValueCommentAt(string filepath, int line, string key, string value) { - exists(string text, string regexp, string match | - plainCommentAt(filepath, line, text) and - regexp = "(\\w+)=([\\w.]+)" and - match = text.regexpFind(regexp, _, _) and - key = match.regexpCapture(regexp, 1) and - value = match.regexpCapture(regexp, 2) - ) -} - module VariableAccessTest implements TestSig { string getARelevantTag() { result = "access" } From c9fc793d008fe7542b1b3dcb783e88dbe7a3c4f2 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 6 Aug 2026 11:00:46 +0200 Subject: [PATCH 032/167] unified: Fix mapping for compound type names --- .../extractor/src/languages/swift/swift.rs | 10 +- .../corpus/swift/types/qualified-type.output | 139 ++++++++++++++++++ .../corpus/swift/types/qualified-type.swift | 8 + 3 files changed, 154 insertions(+), 3 deletions(-) create mode 100644 unified/extractor/tests/corpus/swift/types/qualified-type.output create mode 100644 unified/extractor/tests/corpus/swift/types/qualified-type.swift diff --git a/unified/extractor/src/languages/swift/swift.rs b/unified/extractor/src/languages/swift/swift.rs index e76e7ef212d4..77314ceb678c 100644 --- a/unified/extractor/src/languages/swift/swift.rs +++ b/unified/extractor/src/languages/swift/swift.rs @@ -1014,9 +1014,13 @@ fn translation_rules() -> Vec> { // A named type (`Int`). `identifierType.name` is the type-name token. rule!((identifierType name: @@n) => (named_type_expr name: (identifier #{n}))), // A qualified type (`Outer.Inner`, `NSString.CompareOptions`). swift-syntax - // nests these as `memberType` nodes; we keep the whole dotted path as the - // opaque `named_type_expr` name. - rule!((memberType) @ty => (named_type_expr name: (identifier #{ty}))), + // nests these as `memberType` nodes; preserve the nesting in the + // named_type_expr qualifier field. + rule!( + (memberType baseType: @base name: @@name) + => + (named_type_expr qualifier: {base} name: (identifier #{name})) + ), // Sugared types desugar to `generic_type_expr`: `T?` -> Optional, // `[T]` -> Array, `[K: V]` -> Dictionary. rule!( diff --git a/unified/extractor/tests/corpus/swift/types/qualified-type.output b/unified/extractor/tests/corpus/swift/types/qualified-type.output new file mode 100644 index 000000000000..f561dc6ab2dc --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/qualified-type.output @@ -0,0 +1,139 @@ +struct Outer { + struct Inner { + struct Deep {} + } +} + +let value: Outer.Inner +let nested: Outer.Inner.Deep + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + structDecl + attributes: + name: identifier "Outer" + memberBlock: + memberBlock + leftBrace: { + rightBrace: } + members: + memberBlockItem + decl: + structDecl + attributes: + name: identifier "Inner" + memberBlock: + memberBlock + leftBrace: { + rightBrace: } + members: + memberBlockItem + decl: + structDecl + attributes: + name: identifier "Deep" + memberBlock: + memberBlock + leftBrace: { + rightBrace: } + members: + modifiers: + structKeyword: struct + modifiers: + structKeyword: struct + modifiers: + structKeyword: struct + codeBlockItem + item: + variableDecl + attributes: + modifiers: + bindingSpecifier: let + bindings: + patternBinding + pattern: + identifierPattern + identifier: identifier "value" + typeAnnotation: + typeAnnotation + colon: : + type: + memberType + name: identifier "Inner" + baseType: + identifierType + name: identifier "Outer" + period: . + codeBlockItem + item: + variableDecl + attributes: + modifiers: + bindingSpecifier: let + bindings: + patternBinding + pattern: + identifierPattern + identifier: identifier "nested" + typeAnnotation: + typeAnnotation + colon: : + type: + memberType + name: identifier "Deep" + baseType: + memberType + name: identifier "Inner" + baseType: + identifierType + name: identifier "Outer" + period: . + period: . + +--- + +top_level + body: + block + stmt: + class_like_declaration + modifier: modifier "struct" + name: identifier "Outer" + member: + class_like_declaration + modifier: modifier "struct" + name: identifier "Inner" + member: + class_like_declaration + modifier: modifier "struct" + name: identifier "Deep" + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "value" + type: + named_type_expr + qualifier: + named_type_expr + name: identifier "Outer" + name: identifier "Inner" + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "nested" + type: + named_type_expr + qualifier: + named_type_expr + qualifier: + named_type_expr + name: identifier "Outer" + name: identifier "Inner" + name: identifier "Deep" diff --git a/unified/extractor/tests/corpus/swift/types/qualified-type.swift b/unified/extractor/tests/corpus/swift/types/qualified-type.swift new file mode 100644 index 000000000000..9c5fbae3cf7b --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/qualified-type.swift @@ -0,0 +1,8 @@ +struct Outer { + struct Inner { + struct Deep {} + } +} + +let value: Outer.Inner +let nested: Outer.Inner.Deep From f50c80a753b4c6c83092a21d978b4bcd32dc6474 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 6 Aug 2026 10:47:36 +0200 Subject: [PATCH 033/167] unified: Initial static name binding pass This supports only a minimal set of features but sets up the structure we'll be using for supporting more features. --- .../lib/codeql/unified/internal/FacadeAst.qll | 8 + .../unified/internal/LocalNameBinding.qll | 67 ++++-- .../unified/internal/NameBindingPlugin.qll | 37 ++++ .../internal/NameBindingPluginSwift.qll | 24 +++ .../unified/internal/StaticNameBinding.qll | 197 ++++++++++++++++++ ...Graph.ql => debugLocalNameBindingGraph.ql} | 6 +- .../dev/debugStaticNameBindingGraph.ql | 16 ++ .../static-name-binding/test.expected | 0 .../library-tests/static-name-binding/test.ql | 51 +++++ .../static-name-binding/test.swift | 44 ++++ 10 files changed, 428 insertions(+), 22 deletions(-) create mode 100644 unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll create mode 100644 unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll create mode 100644 unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll rename unified/ql/lib/codeql/unified/internal/dev/{debugScopeGraph.ql => debugLocalNameBindingGraph.ql} (72%) create mode 100644 unified/ql/lib/codeql/unified/internal/dev/debugStaticNameBindingGraph.ql create mode 100644 unified/ql/test/library-tests/static-name-binding/test.expected create mode 100644 unified/ql/test/library-tests/static-name-binding/test.ql create mode 100644 unified/ql/test/library-tests/static-name-binding/test.swift diff --git a/unified/ql/lib/codeql/unified/internal/FacadeAst.qll b/unified/ql/lib/codeql/unified/internal/FacadeAst.qll index a25fb3447c1e..a5d057135d87 100644 --- a/unified/ql/lib/codeql/unified/internal/FacadeAst.qll +++ b/unified/ql/lib/codeql/unified/internal/FacadeAst.qll @@ -17,6 +17,14 @@ module Unified { mod.getValue() = text ) } + + /** Gets the nearest enclosing class declaration, possibly this node itself. */ + ClassLikeDeclaration getEnclosingClass() { + result = this + or + not this instanceof ClassLikeDeclaration and + result = this.getParent().getEnclosingClass() + } } /** The base class for all patterns. */ diff --git a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll index 0df235d521fd..59f94b433ba7 100644 --- a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll @@ -184,79 +184,92 @@ private module LocalNameBindingInput implements LocalNameBindingInputSig; module Public { @@ -319,6 +334,20 @@ module Public { /** Gets the name of this local, as a string. */ string getName() { result = super.getName() } } + + /** An identifier that appears as the declaration site of a name, such as the `x` in `let x = 123`. */ + class NameDeclaration extends Identifier { + NameDeclaration() { LocalNameBindingInput::bindingContext(this, _, _) } + + /** Gets the statement-like node declaring this name, such as a `VariableDeclaration` or `CatchClause`. */ + AstNode getDeclaration() { LocalNameBindingInput::bindingContext(this, _, result) } + + /** Gets the name being declared. */ + string getName() { result = this.getValue() } + + /** Gets the representative for the local name introduced by this declaration. */ + LocalName getLocalName() { result = this.(LocalNameBindingOutput::LocalAccess).getLocal() } + } } /** @@ -342,7 +371,7 @@ class PotentialLocalNameAccess extends Identifier { or this = any(NamedTypeExpr e | not exists(e.getQualifier())).getName() or - LocalNameBindingInput::bindingContext(this, _) + this instanceof NameDeclaration } LocalName getLocalName() { result = this.(LocalNameBindingOutput::LocalAccess).getLocal() } @@ -350,5 +379,5 @@ class PotentialLocalNameAccess extends Identifier { string getName() { result = this.getValue() } /** Holds if this is one of the declaration sites for a name, such as the `x` in `let x = 123`. */ - predicate isDeclarationSite() { LocalNameBindingInput::bindingContext(this, _) } + predicate isDeclarationSite() { this instanceof NameDeclaration } } diff --git a/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll b/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll new file mode 100644 index 000000000000..5ef34d6fe2da --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll @@ -0,0 +1,37 @@ +private import unified +private import codeql.util.Unit +private import codeql.unified.internal.NameBindingPluginSwift // ensure overrides are seen + +/** Extension point for language-specific inputs to name binding. */ +class NameBindingPlugin extends Unit { + /** + * Holds if `member` is an instance member. + * + * The caller has already restricted `member` to be a member of `cls`, and + * ensured that `member` is a `VariableDeclaration` or `FunctionDeclaration`. + */ + bindingset[cls, member] + predicate isInstanceMember(ClassLikeDeclaration cls, Member member) { none() } + + /** + * Holds if `member` is only visible in its local scope, and can thus be entirely resolved + * by local name-binding, suppressing any store-steps that would otherwise be induced from the member. + * + * Need only be implemented for members that occur in the context of class or top-level, as other + * contexts are considered local already. + */ + predicate isPrivateToLocalScope(Member member) { none() } +} + +/** Holds if `member` is an instance member. */ +predicate isInstanceMember(Member member) { + (member instanceof VariableDeclaration or member instanceof FunctionDeclaration) and + exists(ClassLikeDeclaration cls | cls.getAMember() = member | + any(NameBindingPlugin p).isInstanceMember(cls, member) + ) +} + +/** Holds if `member` is only visible in its local scope. */ +predicate isPrivateToLocalScope(Member member) { + any(NameBindingPlugin p).isPrivateToLocalScope(member) +} diff --git a/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll b/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll new file mode 100644 index 000000000000..98d30c5d779f --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll @@ -0,0 +1,24 @@ +/** + * Provides Swift-specific name binding rules. + */ + +private import unified +private import codeql.unified.internal.NameBindingPlugin + +class NameBindingPluginSwift extends NameBindingPlugin { + // Note: For now we assume all code is Swift, but in the future we must restrict these rules to Swift-files + bindingset[cls, member] + override predicate isInstanceMember(ClassLikeDeclaration cls, Member member) { + exists(cls) and + not member.hasModifier(["static", "class", "enum_case"]) + } + + override predicate isPrivateToLocalScope(Member member) { + // Private top-level members + member = any(TopLevel top).getBody().getAStmt() and + member.hasModifier(["private", "fileprivate"]) + // + // Note: Private class members can be seen within type-extensions in the same file, + // so we can't declare those private to their local scope. + } +} diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll new file mode 100644 index 000000000000..f662a46b7de3 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -0,0 +1,197 @@ +/** + * Provides classes for reasoning about static references to the members of classes and top-levels. + */ + +private import unified +private import codeql.unified.internal.LocalNameBinding +private import codeql.unified.internal.NameBindingPlugin + +private newtype TNameBindingNode = + TIdentifier(Identifier n) or + TLocalName(LocalName local) or + TExportedNamespace(ClassLikeDeclaration cls) + +/** + * A node in a graph, in which name-binding rules are represented as edges between nodes. + */ +class NameBindingNode extends TNameBindingNode { + predicate isIdentifier(Identifier n) { this = TIdentifier(n) } + + Identifier asIdentifier() { this.isIdentifier(result) } + + predicate isLocalName(LocalName local) { this = TLocalName(local) } + + /** Holds if this represents the set of static members available in the given namespace (currently restricted to classes) */ + predicate isExportedNamespace(ClassLikeDeclaration cls) { this = TExportedNamespace(cls) } + + string toString() { + exists(Identifier n | this.isIdentifier(n) and result = "Identifier(" + n + ")") + or + exists(LocalName local | this.isLocalName(local) and result = "LocalName(" + local + ")") + or + exists(ClassLikeDeclaration cls | + this.isExportedNamespace(cls) and result = "ExportedNamespace(" + cls + ")" + ) + } + + Location getLocation() { + exists(Identifier n | this.isIdentifier(n) and result = n.getLocation()) + or + exists(LocalName local | this.isLocalName(local) and result = local.getLocation()) + or + exists(ClassLikeDeclaration cls | this.isExportedNamespace(cls) and result = cls.getLocation()) + } +} + +Identifier getIdentifierFromRef(AstNode n) { + result = n.(NameExpr).getIdentifier() + or + result = n.(NamePattern).getIdentifier() + or + result = n.(MemberAccessExpr).getMember() + or + result = n.(NamedTypeExpr).getName() +} + +NameBindingNode getNodeFromRef(AstNode n) { result.isIdentifier(getIdentifierFromRef(n)) } + +predicate readStep(NameBindingNode node1, string name, NameBindingNode node2) { + exists(MemberAccessExpr expr | + node1 = getNodeFromRef(expr.getBase()) and + name = expr.getMember().getValue() and + node2 = getNodeFromRef(expr) + ) + or + exists(NamedTypeExpr expr | + node1 = getNodeFromRef(expr.getQualifier()) and + name = expr.getName().getValue() and + node2 = getNodeFromRef(expr) + ) +} + +predicate storeStep(NameBindingNode node1, string name, NameBindingNode node2) { + exists(ClassLikeDeclaration cls, Member member, NameDeclaration nameDecl | + member = cls.getAMember() and + not isInstanceMember(member) and + not isPrivateToLocalScope(member) and + nameDecl.getDeclaration() = member + | + node1.isIdentifier(nameDecl) and + name = nameDecl.getName() and + node2.isExportedNamespace(cls) + ) +} + +predicate valueStep(NameBindingNode node1, NameBindingNode node2) { + exists(PotentialLocalNameAccess access | + access.isDeclarationSite() and + node1.isIdentifier(access) and + node2.isLocalName(access.getLocalName()) + or + node1.isLocalName(access.getLocalName()) and + node2.isIdentifier(access) + ) + or + exists(ClassLikeDeclaration cls | + node1.isExportedNamespace(cls) and + node2.isIdentifier(cls.getName()) + ) +} + +signature module TrackInputSig { + /** Holds if the forward-flow of `node` should be tracked. */ + predicate shouldTrack(NameBindingNode node); +} + +/** Creates a module for tracking flow through the name-binding graph. */ +module Track { + private import Input + + /** Gets a name-binding node to which `node` can flow. */ + NameBindingNode track(NameBindingNode node) { + shouldTrack(node) and + result = node + or + exists(NameBindingNode prev | prev = track(node) | valueStepEx(prev, result)) + } +} + +/** + * Holds if `node1 -> node2` is derived by combining a store and a read step. + */ +pragma[nomagic] +private predicate derivedStoreReadStep(NameBindingNode node1, NameBindingNode node2) { + exists(NamespaceNode namespace, string name | + node1 = namespace.getMember(name) and + readStep(namespace.ref(), name, node2) + ) +} + +/** Holds if there is an effective value step `node1 -> node2`. */ +pragma[inline] +private predicate valueStepEx(NameBindingNode node1, NameBindingNode node2) { + valueStep(node1, node2) + or + derivedStoreReadStep(node1, node2) +} + +/** A name-binding node that has members. */ +class NamespaceNode extends NameBindingNode { + NamespaceNode() { storeStep(_, _, this) } + + /** Gets a name-binding node that may refer to this namespace. */ + NameBindingNode ref() { result = TrackNamespace::track(this) } + + /** Gets a member of this namespace of the given name. */ + NameBindingNode getMember(string name) { storeStep(result, name, this) } +} + +private module TrackNamespaceInput implements TrackInputSig { + predicate shouldTrack(NameBindingNode node) { node instanceof NamespaceNode } +} + +private module TrackNamespace = Track; + +private module TrackNameDeclarationInput implements TrackInputSig { + predicate shouldTrack(NameBindingNode node) { node.isIdentifier(any(NameDeclaration d)) } +} + +private module TrackNameDeclaration = Track; + +/** Gets a name-binding node that may refer to the given declaration. */ +NameBindingNode trackNameDeclaration(NameDeclaration decl) { + exists(NameBindingNode start | + start.isIdentifier(decl) and + result = TrackNameDeclaration::track(start) + ) +} + +/** Holds if `node` should be included in the debug view. */ +private signature predicate relevantFileSig(File node); + +module DebugGraph { + private predicate relevantNode(NameBindingNode node) { + relevantFile(node.getLocation().getFile()) + } + + query predicate nodes(NameBindingNode node, string key, string value) { + relevantNode(node) and + key = "semmle.label" and + value = node.toString() + } + + query predicate edges(NameBindingNode node1, NameBindingNode node2, string key, string value) { + key = "semmle.label" and + ( + valueStep(node1, node2) and value = "" + or + exists(string name | + readStep(node1, name, node2) and + value = "read(" + name + ")" + or + storeStep(node1, name, node2) and + value = "store(" + name + ")" + ) + ) + } +} diff --git a/unified/ql/lib/codeql/unified/internal/dev/debugScopeGraph.ql b/unified/ql/lib/codeql/unified/internal/dev/debugLocalNameBindingGraph.ql similarity index 72% rename from unified/ql/lib/codeql/unified/internal/dev/debugScopeGraph.ql rename to unified/ql/lib/codeql/unified/internal/dev/debugLocalNameBindingGraph.ql index a77f8912d6fa..71887f476f16 100644 --- a/unified/ql/lib/codeql/unified/internal/dev/debugScopeGraph.ql +++ b/unified/ql/lib/codeql/unified/internal/dev/debugLocalNameBindingGraph.ql @@ -1,8 +1,8 @@ /** - * @name Debug scope graph - * @description Renders the graph used to perform local variable lookups + * @name Debug local name-binding graph + * @description Renders the graph used to perform local name lookups * @kind graph - * @id unified/debug-scope-graph + * @id unified/debug-local-name-binding-graph */ private import unified diff --git a/unified/ql/lib/codeql/unified/internal/dev/debugStaticNameBindingGraph.ql b/unified/ql/lib/codeql/unified/internal/dev/debugStaticNameBindingGraph.ql new file mode 100644 index 000000000000..740943fc66db --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dev/debugStaticNameBindingGraph.ql @@ -0,0 +1,16 @@ +/** + * @name Debug static name-binding graph + * @description Renders the graph used to perform static name lookups + * @kind graph + * @id unified/debug-static-name-binding-graph + */ + +private import unified +private import codeql.unified.internal.StaticNameBinding + +/** + * Holds if graphs related to `file` should be shown in the graph. + */ +predicate relevantFile(File file) { file.getBaseName() = "test.swift" } + +import DebugGraph diff --git a/unified/ql/test/library-tests/static-name-binding/test.expected b/unified/ql/test/library-tests/static-name-binding/test.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/unified/ql/test/library-tests/static-name-binding/test.ql b/unified/ql/test/library-tests/static-name-binding/test.ql new file mode 100644 index 000000000000..272606e2bd20 --- /dev/null +++ b/unified/ql/test/library-tests/static-name-binding/test.ql @@ -0,0 +1,51 @@ +import unified +import utils.test.InlineExpectationsTest +import utils.test.CommentUtil +import codeql.unified.internal.StaticNameBinding + +module StaticDeclAccess implements TestSig { + string getARelevantTag() { result = "access" } + + private string deriveClassName(ClassLikeDeclaration cls) { + not exists(cls.getParent().getEnclosingClass()) and + result = cls.getName().getValue() + or + result = deriveClassName(cls.getParent().getEnclosingClass()) + "." + cls.getName().getValue() + } + + private string defaultName(NameDeclaration decl) { + exists(ClassLikeDeclaration cls | + decl.getDeclaration() = cls.getAMember() and + result = deriveClassName(cls) + "." + decl.getName() + ) + or + not decl.getDeclaration() = any(ClassLikeDeclaration cls).getAMember() and + result = decl.getName() + } + + additional predicate declAt(NameDeclaration v, string filepath, int line) { + v.getLocation().hasLocationInfo(filepath, line, _, _, _) + } + + private predicate decl(NameDeclaration v, string alias) { + exists(string filepath, int line | declAt(v, filepath, line) | + keyValueCommentAt(filepath, line, "name", alias) + or + not keyValueCommentAt(filepath, line, "name", _) and + alias = defaultName(v) + ) + } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(NameDeclaration decl, Identifier access | + access = trackNameDeclaration(decl).asIdentifier() and + not access instanceof NameDeclaration and + location = access.getLocation() and + element = access.toString() and + decl(decl, value) and + tag = "access" + ) + } +} + +import MakeTest diff --git a/unified/ql/test/library-tests/static-name-binding/test.swift b/unified/ql/test/library-tests/static-name-binding/test.swift new file mode 100644 index 000000000000..7698e714291f --- /dev/null +++ b/unified/ql/test/library-tests/static-name-binding/test.swift @@ -0,0 +1,44 @@ +class B {} // name=top.B + +class A { + class B { + class C {} + } +} + +let x1: B = nil; // $ access=top.B +let x2: A.B = nil; // $ access=A access=A.B +let x3: A.B.C = nil; // $ access=A access=A.B access=A.B.C + +class D { + let x1: B = nil; // $ access=top.B + let x2: A.B = nil; // $ access=A access=A.B + let x3: A.B.C = nil; // $ access=A access=A.B access=A.B.C + + func member() { + let x1: B = nil; // $ access=top.B + let x2: A.B = nil; // $ access=A access=A.B + let x3: A.B.C = nil; // $ access=A access=A.B access=A.B.C + } +} + +class E { + class A { + class B { + } + } + + let x1: A = nil; // $ access=E.A + let x2: A.B = nil; // $ access=E.A access=E.A.B +} + +class F { + static let field = 1 + static let (a,b) = (1,2) + + static func foo() { + F.field // $ access=F access=F.field + F.a // $ access=F access=F.a + F.b // $ access=F access=F.b + } +} From 375924ed293e340815c86d37618a842b1fa32807 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 6 Aug 2026 11:48:48 +0200 Subject: [PATCH 034/167] unified: Track through aliases --- .../unified/internal/StaticNameBinding.qll | 28 +++++++++++++------ .../static-name-binding/test.swift | 9 ++++++ 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index f662a46b7de3..3f60b2b28c85 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -101,6 +101,8 @@ predicate valueStep(NameBindingNode node1, NameBindingNode node2) { signature module TrackInputSig { /** Holds if the forward-flow of `node` should be tracked. */ predicate shouldTrack(NameBindingNode node); + + default predicate additionalValueStep(NameBindingNode node1, NameBindingNode node2) { none() } } /** Creates a module for tracking flow through the name-binding graph. */ @@ -114,6 +116,16 @@ module Track { or exists(NameBindingNode prev | prev = track(node) | valueStepEx(prev, result)) } + + /** Holds if there is an effective value step `node1 -> node2`. */ + pragma[inline] + private predicate valueStepEx(NameBindingNode node1, NameBindingNode node2) { + valueStep(node1, node2) + or + derivedStoreReadStep(node1, node2) + or + additionalValueStep(node1, node2) + } } /** @@ -127,14 +139,6 @@ private predicate derivedStoreReadStep(NameBindingNode node1, NameBindingNode no ) } -/** Holds if there is an effective value step `node1 -> node2`. */ -pragma[inline] -private predicate valueStepEx(NameBindingNode node1, NameBindingNode node2) { - valueStep(node1, node2) - or - derivedStoreReadStep(node1, node2) -} - /** A name-binding node that has members. */ class NamespaceNode extends NameBindingNode { NamespaceNode() { storeStep(_, _, this) } @@ -148,6 +152,14 @@ class NamespaceNode extends NameBindingNode { private module TrackNamespaceInput implements TrackInputSig { predicate shouldTrack(NameBindingNode node) { node instanceof NamespaceNode } + + predicate additionalValueStep(NameBindingNode node1, NameBindingNode node2) { + // Namespace-tracking goes through aliases, but declaration-tracking does not + exists(TypeAliasDeclaration decl | + node1 = getNodeFromRef(decl.getType()) and + node2.isIdentifier(decl.getName()) + ) + } } private module TrackNamespace = Track; diff --git a/unified/ql/test/library-tests/static-name-binding/test.swift b/unified/ql/test/library-tests/static-name-binding/test.swift index 7698e714291f..27453ec34351 100644 --- a/unified/ql/test/library-tests/static-name-binding/test.swift +++ b/unified/ql/test/library-tests/static-name-binding/test.swift @@ -42,3 +42,12 @@ class F { F.b // $ access=F access=F.b } } + +typealias G = A // $ access=A + +// Members can be accessed through aliases, but references to the alias itself do not bypass the alias. +class H { + let x1: G = nil; // $ access=G + let x2: G.B = nil; // $ access=G access=A.B + let x3: G.B.C = nil; // $ access=G access=A.B access=A.B.C +} From db8b97a0ddcdd3e514abb457a431797ad0844916 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 6 Aug 2026 12:48:41 +0200 Subject: [PATCH 035/167] unified: Add inheritance steps --- .../unified/internal/StaticNameBinding.qll | 33 +++++++++++++++++-- .../static-name-binding/inheritance.swift | 19 +++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 unified/ql/test/library-tests/static-name-binding/inheritance.swift diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index 3f60b2b28c85..ca1f670fb8ff 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -98,6 +98,14 @@ predicate valueStep(NameBindingNode node1, NameBindingNode node2) { ) } +predicate inheritanceStep(NameBindingNode supertype, NameBindingNode subtype) { + exists(ClassLikeDeclaration cls, BaseType base | + base = cls.getABaseType() and + supertype = getNodeFromRef(base.getType()) and + subtype.isExportedNamespace(cls) + ) +} + signature module TrackInputSig { /** Holds if the forward-flow of `node` should be tracked. */ predicate shouldTrack(NameBindingNode node); @@ -141,13 +149,31 @@ private predicate derivedStoreReadStep(NameBindingNode node1, NameBindingNode no /** A name-binding node that has members. */ class NamespaceNode extends NameBindingNode { - NamespaceNode() { storeStep(_, _, this) } + NamespaceNode() { storeStep(_, _, this) or inheritanceStep(_, this) } /** Gets a name-binding node that may refer to this namespace. */ NameBindingNode ref() { result = TrackNamespace::track(this) } + /** Gets an own (non-inherited) member of this namespace of the given name. */ + NameBindingNode getOwnMember(string name) { storeStep(result, name, this) } + + /** Holds if this namespace has an own-member of the given name */ + predicate hasOwnMember(string name) { exists(this.getOwnMember(name)) } + + /** Gets a namespace from which this namespace inherits directly. */ + NamespaceNode getAnInheritanceParent() { inheritanceStep(result.ref(), this) } + + /** Gets a namespace that directly inherits from this one. */ + NamespaceNode getAnInheritanceChild() { result.getAnInheritanceParent() = this } + /** Gets a member of this namespace of the given name. */ - NameBindingNode getMember(string name) { storeStep(result, name, this) } + pragma[nomagic] + NameBindingNode getMember(string name) { + result = this.getOwnMember(name) + or + not this.hasOwnMember(name) and + result = this.getAnInheritanceParent().getMember(name) + } } private module TrackNamespaceInput implements TrackInputSig { @@ -204,6 +230,9 @@ module DebugGraph { storeStep(node1, name, node2) and value = "store(" + name + ")" ) + or + inheritanceStep(node1, node2) and + value = "inheritedBy" ) } } diff --git a/unified/ql/test/library-tests/static-name-binding/inheritance.swift b/unified/ql/test/library-tests/static-name-binding/inheritance.swift new file mode 100644 index 000000000000..fcf1967d4842 --- /dev/null +++ b/unified/ql/test/library-tests/static-name-binding/inheritance.swift @@ -0,0 +1,19 @@ +class A { + class B { + class C {} + } +} + +class D: A {} // $ access=A +class E: D.B {} // $ access=D access=A.B + +// Members of base classes can be accessed through derived classes +func t1() { + let x1: D = nil; // $ access=D + let x2: D.B = nil; // $ access=D access=A.B + let x3: D.B.C = nil; // $ access=D access=A.B access=A.B.C + + // The base class of 'E' is itself resolved through inheritance + let x4: E = nil; // $ access=E + let x5: E.C = nil; // $ access=E access=A.B.C +} From 6341bba0e198901e753c2bbe0deb4b49870012eb Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 6 Aug 2026 13:36:29 +0200 Subject: [PATCH 036/167] unified: Support unqualified access --- .../codeql/namebinding/LocalNameBinding.qll | 29 +++++++++++++++++ .../unified/internal/LocalNameBinding.qll | 9 ++++++ .../unified/internal/StaticNameBinding.qll | 31 ++++++++++++++++++- .../unqualified-access.swift | 20 ++++++++++++ 4 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 unified/ql/test/library-tests/static-name-binding/unqualified-access.swift diff --git a/shared/namebinding/codeql/namebinding/LocalNameBinding.qll b/shared/namebinding/codeql/namebinding/LocalNameBinding.qll index 57c792027ba8..c4d4abdead45 100644 --- a/shared/namebinding/codeql/namebinding/LocalNameBinding.qll +++ b/shared/namebinding/codeql/namebinding/LocalNameBinding.qll @@ -136,6 +136,12 @@ signature module LocalNameBindingInputSig { * full control of scope resolution for specific types of references. */ default predicate lookupStartsAt(AstNode n, AstNode scope) { none() } + + /** + * Holds if the set of names available in `scope` is not known ahead of time, + * and thus any lookup chain that goes through `scope` may need to be reconciled at a later stage. + */ + default predicate uncertainScope(AstNode scope) { none() } } /** @@ -154,6 +160,8 @@ module LocalNameBinding implicitDeclInScope(_, this) or isTopScope(this) + or + uncertainScope(this) } } @@ -353,6 +361,27 @@ module LocalNameBinding ) } + /** + * Holds if `name`, when resolved from `lookup`, may resolve to one of the uncertain members of `scope`. + */ + pragma[nomagic] + private predicate lookupInUncertainScope(string name, Scope lookup, Scope scope) { + lookupInScope(name, lookup, scope) and + uncertainScope(scope) and + not declInScope(_, name, scope) and + not implicitDeclInScope(name, scope) + } + + /** + * Gets an uncertain scope that the given `accessCand` pair may resolve to. + */ + AstNode getAnUncertainScope(AstNode access, string name) { + exists(Scope lookup | + accessCandInLookupScope(access, name, lookup) and + lookupInUncertainScope(name, lookup, result) + ) + } + cached private newtype TLocal = TExplicitLocal(AstNode definingNode, string name, AstNode scope) { diff --git a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll index 59f94b433ba7..97268e05af3f 100644 --- a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll @@ -314,6 +314,15 @@ private module LocalNameBindingInput implements LocalNameBindingInputSig Date: Thu, 6 Aug 2026 15:37:52 +0200 Subject: [PATCH 037/167] unified: Allow numbers in key=value comments --- unified/ql/lib/utils/test/CommentUtil.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unified/ql/lib/utils/test/CommentUtil.qll b/unified/ql/lib/utils/test/CommentUtil.qll index 6747aed57187..bd6f887a4010 100644 --- a/unified/ql/lib/utils/test/CommentUtil.qll +++ b/unified/ql/lib/utils/test/CommentUtil.qll @@ -12,7 +12,7 @@ predicate plainCommentAt(string filepath, int line, string text) { predicate keyValueCommentAt(string filepath, int line, string key, string value) { exists(string text, string regexp, string match | plainCommentAt(filepath, line, text) and - regexp = "(\\w+)=([\\w.]+)" and + regexp = "(\\w+)=([\\w.0-9]+)" and match = text.regexpFind(regexp, _, _) and key = match.regexpCapture(regexp, 1) and value = match.regexpCapture(regexp, 2) From 7e3a4e36a31e0faae3e3d5715fd2b80be2790e7d Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 6 Aug 2026 15:41:46 +0200 Subject: [PATCH 038/167] unified: Cross-file name binding --- unified/ql/lib/codeql/files/FileSystem.qll | 2 + .../lib/codeql/unified/internal/FacadeAst.qll | 27 +++++++ .../unified/internal/LocalNameBinding.qll | 4 + .../unified/internal/NameBindingPlugin.qll | 41 ++++++++++ .../internal/NameBindingPluginSwift.qll | 76 +++++++++++++++++++ .../unified/internal/StaticNameBinding.qll | 62 ++++++++++++++- .../package1/Package.swift | 11 +++ .../package1/Sources/Target1/File1.swift | 2 + .../package1/Sources/Target1/File2.swift | 1 + .../package1/Sources/Target2/File3.swift | 1 + 10 files changed, 224 insertions(+), 3 deletions(-) create mode 100644 unified/ql/test/library-tests/static-name-binding/package1/Package.swift create mode 100644 unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File1.swift create mode 100644 unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File2.swift create mode 100644 unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift diff --git a/unified/ql/lib/codeql/files/FileSystem.qll b/unified/ql/lib/codeql/files/FileSystem.qll index 6cc771fad9d2..a50c1cd3432a 100644 --- a/unified/ql/lib/codeql/files/FileSystem.qll +++ b/unified/ql/lib/codeql/files/FileSystem.qll @@ -31,6 +31,8 @@ class Container = Impl::Container; class Folder = Impl::Folder; +module Folder = Impl::Folder; + /** A file. */ class File extends Container, Impl::File { /** Holds if this file was extracted from ordinary source code. */ diff --git a/unified/ql/lib/codeql/unified/internal/FacadeAst.qll b/unified/ql/lib/codeql/unified/internal/FacadeAst.qll index a5d057135d87..cb00bae7eeca 100644 --- a/unified/ql/lib/codeql/unified/internal/FacadeAst.qll +++ b/unified/ql/lib/codeql/unified/internal/FacadeAst.qll @@ -4,12 +4,17 @@ overlay[local?] module; +private import codeql.files.FileSystem + module Unified { private import Ast::Unified as G import G /** The base class for all AST nodes. */ class AstNode extends G::AstNode { + /** Gets the file containing this AST node. */ + File getFile() { result = this.getLocation().getFile() } + /** Holds if this AST node has a modifier with the given text. */ predicate hasModifier(string text) { exists(Modifier mod | @@ -27,6 +32,28 @@ module Unified { } } + /** An expression */ + class Expr extends G::Expr { + /** Gets the string value of this expression, if it is a known string constant. */ + string getStringValue() { + // TODO: we'll want to cook the string literals extractor-side, but for now + // just strip the quotes here and ignore escape sequences. + result = this.(StringLiteral).getValue().regexpCapture("\"(.*)\"", 1) + } + } + + /** A function call */ + class CallExpr extends G::CallExpr { + /** Gets the named argument with the given `name`. */ + Expr getNamedArgument(string name) { + exists(Argument arg | + arg = this.getAnArgument() and + arg.getName().getValue() = name and + result = arg.getValue() + ) + } + } + /** The base class for all patterns. */ class Pattern extends G::Pattern { /** Gets the immediately-enclosing pattern in which this is a nested pattern. */ diff --git a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll index 97268e05af3f..faa2be5fe43e 100644 --- a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll @@ -322,6 +322,10 @@ private module LocalNameBindingInput implements LocalNameBindingInputSig; diff --git a/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll b/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll index 98d30c5d779f..b2bba1763ed7 100644 --- a/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll +++ b/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll @@ -22,3 +22,79 @@ class NameBindingPluginSwift extends NameBindingPlugin { // so we can't declare those private to their local scope. } } + +private predicate predefinedSourceFolders(string folder, int ordering) { + folder = "Sources,Source,src,srcs".splitAt(",", ordering) +} + +bindingset[targetKind] +private predicate predefinedSourceFoldersByTarget(string targetKind, string folder, int ordering) { + predefinedSourceFolders(folder, ordering) + or + ordering = -1 and + ( + targetKind = "testTarget" and + folder = "Tests" + or + targetKind = "plugin" and + folder = "Plugins" + ) +} + +/** + * A call to `.target()` or similar target spec, in a `Package.swift` file. + */ +class SwiftPackageTarget extends ModuleScopeRepr, CallExpr { + private string targetKind; + + SwiftPackageTarget() { + this.getFile().getBaseName() = "Package.swift" and + this.getCallee().(MemberAccessExpr).getMember().getValue() = targetKind and + targetKind = + [ + "target", "executableTarget", "testTarget", "systemLibrary", "binaryTarget", "plugin", + "macro" + ] + } + + Folder getFolder() { result = this.getFile().getParentContainer() } + + /** Gets the intermediate folder such as `Sources/` containing the sources, but without the target name. */ + Folder getSourceMidFolder() { + result = + min(int i, string name, Folder subfolder | + predefinedSourceFoldersByTarget(targetKind, name, i) and + subfolder = this.getFolder().getFolder(name) + | + subfolder order by i + ) + } + + /** Gets the source folder to use if no explicit `path:` if given, typically `Sources/` */ + Folder getDefaultSourceFolder() { + exists(Folder subfolder | subfolder = this.getSourceMidFolder() | + result = subfolder.getFolder(this.getName()) + or + not exists(subfolder.getFolder(this.getName())) and + result = subfolder + ) + } + + string getName() { result = this.getNamedArgument("name").getStringValue() } + + string getExplicitPath() { result = this.getNamedArgument("path").getStringValue() } + + override predicate shouldInclude(Container c, string path) { + c = this.getFolder() and + path = this.getExplicitPath() + "/**/*.swift" + or + not exists(this.getExplicitPath()) and + c = this.getDefaultSourceFolder() and + path = "**/*.swift" + } + + override predicate hasImportableName(string name) { + targetKind = "target" and + name = this.getName() + } +} diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index f976520a7258..02ce277bc895 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -10,7 +10,13 @@ private newtype TNameBindingNode = TIdentifier(Identifier n) or TLocalName(LocalName local) or TExportedNamespace(ClassLikeDeclaration cls) or - TLocalNamespace(ClassLikeDeclaration cls) + TLocalNamespace(AstNode n) { + n = any(TopLevel t) or // Module names come in scope here + n = any(TopLevel t).getBody() or // Imported names come in scope here (shadowing module names) + n instanceof ClassLikeDeclaration + } or + TModuleScope(ModuleScopeRepr repr) or + TModuleRoot() /** * A node in a graph, in which name-binding rules are represented as edges between nodes. @@ -25,8 +31,14 @@ class NameBindingNode extends TNameBindingNode { /** Holds if this represents the set of static members available in the given namespace (currently restricted to classes) */ predicate isExportedNamespace(ClassLikeDeclaration cls) { this = TExportedNamespace(cls) } - /** Holds if this represents the set of members that can be accessed unqualified within the given scope (currently restricted to classes) */ - predicate isLocalNamespace(ClassLikeDeclaration cls) { this = TLocalNamespace(cls) } + /** Holds if this represents the set of members that can be accessed unqualified within the given scope. */ + predicate isLocalNamespace(AstNode n) { this = TLocalNamespace(n) } + + /** Holds if this represents the given module scope. */ + predicate isModuleScopeNode(ModuleScopeRepr repr) { this = TModuleScope(repr) } + + /** Holds if this represents the root namespace in which all named modules are members. */ + predicate isModuleRoot() { this = TModuleRoot() } string toString() { exists(Identifier n | this.isIdentifier(n) and result = "Identifier(" + n + ")") @@ -40,6 +52,12 @@ class NameBindingNode extends TNameBindingNode { exists(ClassLikeDeclaration cls | this.isLocalNamespace(cls) and result = "LocalNamespace(" + cls + ")" ) + or + exists(ModuleScopeRepr repr | + this.isModuleScopeNode(repr) and result = "ModuleScope(" + repr + ")" + ) + or + this.isModuleRoot() and result = "ModuleRoot" } Location getLocation() { @@ -50,6 +68,11 @@ class NameBindingNode extends TNameBindingNode { exists(ClassLikeDeclaration cls | this.isExportedNamespace(cls) and result = cls.getLocation()) or exists(ClassLikeDeclaration cls | this.isLocalNamespace(cls) and result = cls.getLocation()) + or + exists(ModuleScopeRepr repr | this.isModuleScopeNode(repr) and result = repr.getLocation()) + or + this.isModuleRoot() and + exists(ModuleScopeRepr repr | result = repr.getLocation()) } } @@ -65,12 +88,21 @@ Identifier getIdentifierFromRef(AstNode n) { NameBindingNode getNodeFromRef(AstNode n) { result.isIdentifier(getIdentifierFromRef(n)) } +NameBindingNode getModuleNodeFromFile(File f) { + exists(ModuleScopeRepr mod | + mod.getAnIncludedFile() = f and + result.isModuleScopeNode(mod) + ) +} + /** Gets the name-binding node associated with the given uncertain scope node. */ private NameBindingNode getNodeFromUncertainScope(AstNode n) { exists(ClassLikeDeclaration cls | n = cls.getAMember() and // note: must align with LocalNameBindingInput::uncertainScope result.isLocalNamespace(cls) ) + or + result.isLocalNamespace(n) } predicate readStep(NameBindingNode node1, string name, NameBindingNode node2) { @@ -104,6 +136,22 @@ predicate storeStep(NameBindingNode node1, string name, NameBindingNode node2) { name = nameDecl.getName() and node2.isExportedNamespace(cls) ) + or + exists(TopLevel top, Stmt stmt, NameDeclaration nameDecl | + stmt = top.getBody().getAStmt() and + not isPrivateToLocalScope(stmt) and + nameDecl.getDeclaration() = stmt + | + node1.isIdentifier(nameDecl) and + name = nameDecl.getName() and + node2 = getModuleNodeFromFile(top.getFile()) + ) + or + exists(ModuleScopeRepr mod | + node1.isModuleScopeNode(mod) and + mod.hasImportableName(name) and + node2.isModuleRoot() + ) } predicate valueStep(NameBindingNode node1, NameBindingNode node2) { @@ -125,6 +173,14 @@ predicate valueStep(NameBindingNode node1, NameBindingNode node2) { node1.isExportedNamespace(cls) and node2.isLocalNamespace(cls) ) + or + exists(TopLevel top | + node1.isModuleRoot() and + node2.isLocalNamespace(top) // module names in outermost scope + or + node1 = getModuleNodeFromFile(top.getFile()) and + node2.isLocalNamespace(top.getBody()) // implicitly import own module + ) } predicate inheritanceStep(NameBindingNode supertype, NameBindingNode subtype) { diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Package.swift b/unified/ql/test/library-tests/static-name-binding/package1/Package.swift new file mode 100644 index 000000000000..0789887c4b4c --- /dev/null +++ b/unified/ql/test/library-tests/static-name-binding/package1/Package.swift @@ -0,0 +1,11 @@ +// swift-tools-version: 5.9 + +import PackageDescription + +let package = Package( + name: "Package1", + targets: [ + .target(name: "Target1"), + .target(name: "Target2"), + ] +) diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File1.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File1.swift new file mode 100644 index 000000000000..fff0a56e90f3 --- /dev/null +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File1.swift @@ -0,0 +1,2 @@ +let x: A; // $ access=Target1.A +let y: Target2.A; // $ access=Target2.A diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File2.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File2.swift new file mode 100644 index 000000000000..fa515af0eaf5 --- /dev/null +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File2.swift @@ -0,0 +1 @@ +class A {} // name=Target1.A diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift new file mode 100644 index 000000000000..47c3f4da77ed --- /dev/null +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift @@ -0,0 +1 @@ +class A {} // name=Target2.A From 574a5c95059dafcf6227fe86d3140054a8b9802d Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 7 Aug 2026 08:38:58 +0200 Subject: [PATCH 039/167] unified: Handle bracketed generic array constructors --- .../extractor/src/languages/swift/swift.rs | 16 ++++ .../expressions/array-type-constructor.output | 74 +++++++++++++++++++ .../expressions/array-type-constructor.swift | 1 + 3 files changed, 91 insertions(+) create mode 100644 unified/extractor/tests/corpus/swift/expressions/array-type-constructor.output create mode 100644 unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift diff --git a/unified/extractor/src/languages/swift/swift.rs b/unified/extractor/src/languages/swift/swift.rs index 77314ceb678c..b192669ae9a2 100644 --- a/unified/extractor/src/languages/swift/swift.rs +++ b/unified/extractor/src/languages/swift/swift.rs @@ -633,6 +633,22 @@ fn translation_rules() -> Vec> { default: {val})) } ), + // Swift's `[T](...)` array-type constructor syntax is parsed as a call + // whose callee is an `arrayExpr` containing `T`. For a generic `T`, + // translating that callee as an array literal would place a type + // expression in an expression-only element field. Normalize it to an + // `Array` generic type constructor instead. + rule!( + (functionCallExpr + calledExpression: (arrayExpr elements: (arrayElement expression: (genericSpecializationExpr) @element)) + arguments: _* @args) + => + (call_expr + callee: (generic_type_expr + base: (named_type_expr name: (identifier "Array")) + type_argument: {element}) + argument: {args}) + ), // A function/method call (`foo(1, 2)`). `calledExpression` is the callee // and `arguments` is an (elided) list of `labeledExpr`, each translated // to an `argument` below. A trailing closure (`xs.map { … }`) becomes a diff --git a/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.output b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.output new file mode 100644 index 000000000000..e721ba9cfde2 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.output @@ -0,0 +1,74 @@ +let values = [Result]() + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + variableDecl + attributes: + modifiers: + bindingSpecifier: let + bindings: + patternBinding + initializer: + initializerClause + equal: = + value: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + additionalTrailingClosures: + calledExpression: + arrayExpr + elements: + arrayElement + expression: + genericSpecializationExpr + expression: + declReferenceExpr + baseName: identifier "Result" + genericArgumentClause: + genericArgumentClause + arguments: + genericArgument + argument: + identifierType + name: identifier "Void" + leftAngle: < + rightAngle: > + leftSquare: [ + rightSquare: ] + pattern: + identifierPattern + identifier: identifier "values" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "values" + value: + call_expr + callee: + generic_type_expr + base: + named_type_expr + name: identifier "Array" + type_argument: + generic_type_expr + base: + named_type_expr + name: identifier "Result" + type_argument: + named_type_expr + name: identifier "Void" diff --git a/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift new file mode 100644 index 000000000000..b3cccb6ae2a1 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift @@ -0,0 +1 @@ +let values = [Result]() \ No newline at end of file From 55b96f1f7bad28bdc8a806d04e8378d3ad68ef7e Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 7 Aug 2026 08:44:40 +0200 Subject: [PATCH 040/167] unified: Handle bracketed generic array metatypes --- .../extractor/src/languages/swift/swift.rs | 14 ++++ .../expressions/array-type-metatype.output | 75 +++++++++++++++++++ .../expressions/array-type-metatype.swift | 1 + 3 files changed, 90 insertions(+) create mode 100644 unified/extractor/tests/corpus/swift/expressions/array-type-metatype.output create mode 100644 unified/extractor/tests/corpus/swift/expressions/array-type-metatype.swift diff --git a/unified/extractor/src/languages/swift/swift.rs b/unified/extractor/src/languages/swift/swift.rs index b192669ae9a2..a52ec352cca2 100644 --- a/unified/extractor/src/languages/swift/swift.rs +++ b/unified/extractor/src/languages/swift/swift.rs @@ -699,6 +699,20 @@ fn translation_rules() -> Vec> { // `declReferenceExpr`; pull its `baseName` out as the member identifier. // A leading-dot access (`.foo`) has no explicit base — the base is an // `inferred_type_expr`. The base-ful form is matched first. + // A bracketed generic array type used as a metatype or static-member + // base (`[T].self`) is parsed as an `arrayExpr`; preserve its type + // meaning as `Array` rather than an array literal. + rule!( + (memberAccessExpr + base: (arrayExpr elements: (arrayElement expression: (genericSpecializationExpr) @element)) + declName: (declReferenceExpr baseName: @member)) + => + (member_access_expr + base: (generic_type_expr + base: (named_type_expr name: (identifier "Array")) + type_argument: {element}) + member: (identifier #{member})) + ), rule!( (memberAccessExpr base: @base declName: (declReferenceExpr baseName: @member)) => diff --git a/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.output b/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.output new file mode 100644 index 000000000000..f06917190b3a --- /dev/null +++ b/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.output @@ -0,0 +1,75 @@ +let type = [Result].self + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + variableDecl + attributes: + modifiers: + bindingSpecifier: let + bindings: + patternBinding + initializer: + initializerClause + equal: = + value: + memberAccessExpr + period: . + declName: + declReferenceExpr + baseName: self + base: + arrayExpr + elements: + arrayElement + expression: + genericSpecializationExpr + expression: + declReferenceExpr + baseName: identifier "Result" + genericArgumentClause: + genericArgumentClause + arguments: + genericArgument + argument: + identifierType + name: identifier "Void" + leftAngle: < + rightAngle: > + leftSquare: [ + rightSquare: ] + pattern: + identifierPattern + identifier: identifier "type" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "type" + value: + member_access_expr + base: + generic_type_expr + base: + named_type_expr + name: identifier "Array" + type_argument: + generic_type_expr + base: + named_type_expr + name: identifier "Result" + type_argument: + named_type_expr + name: identifier "Void" + member: identifier "self" diff --git a/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.swift b/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.swift new file mode 100644 index 000000000000..d0ee51283459 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.swift @@ -0,0 +1 @@ +let type = [Result].self \ No newline at end of file From 171aa7a623660f63214181a073673896e82ec8ce Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 7 Aug 2026 08:56:30 +0200 Subject: [PATCH 041/167] unified: Use '.' as location for inferred_type_expr --- unified/extractor/src/languages/swift/swift.rs | 4 ++-- .../corpus/swift/functions/leading-dot-expression-call.output | 2 +- .../swift/functions/leading-dot-expression-value.output | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/unified/extractor/src/languages/swift/swift.rs b/unified/extractor/src/languages/swift/swift.rs index a52ec352cca2..065e91ad3be4 100644 --- a/unified/extractor/src/languages/swift/swift.rs +++ b/unified/extractor/src/languages/swift/swift.rs @@ -719,9 +719,9 @@ fn translation_rules() -> Vec> { (member_access_expr base: {base} member: (identifier #{member})) ), rule!( - (memberAccessExpr declName: (declReferenceExpr baseName: @member)) + (memberAccessExpr period: @dot declName: (declReferenceExpr baseName: @member)) => - (member_access_expr base: (inferred_type_expr) member: (identifier #{member})) + (member_access_expr base: (inferred_type_expr #{dot}) member: (identifier #{member})) ), // Control transfer, one rule per keyword. `return` carries an optional // value; `break` / `continue` an optional target label; `throw` its diff --git a/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.output b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.output index d0a844d02afa..a5b38e1e2bea 100644 --- a/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.output +++ b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.output @@ -51,7 +51,7 @@ top_level call_expr callee: member_access_expr - base: inferred_type_expr ".some" + base: inferred_type_expr "." member: identifier "some" argument: argument diff --git a/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.output b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.output index bec014593d91..41128b61818e 100644 --- a/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.output +++ b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.output @@ -39,5 +39,5 @@ top_level identifier: identifier "x" value: member_access_expr - base: inferred_type_expr ".foo" + base: inferred_type_expr "." member: identifier "foo" From a9792e5be85e83c20ad60840beb3ea5396086393 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 7 Aug 2026 08:35:30 +0200 Subject: [PATCH 042/167] unified: Fix handling of exprPattern --- .../extractor/src/languages/swift/swift.rs | 144 +++++++++------- .../nested-enum-case-pattern.output | 160 ++++++++++++++++++ .../nested-enum-case-pattern.swift | 6 + .../optional-enum-case-binding.output | 117 +++++++++++++ .../optional-enum-case-binding.swift | 3 + 5 files changed, 368 insertions(+), 62 deletions(-) create mode 100644 unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output create mode 100644 unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift create mode 100644 unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.output create mode 100644 unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.swift diff --git a/unified/extractor/src/languages/swift/swift.rs b/unified/extractor/src/languages/swift/swift.rs index 065e91ad3be4..556345c18d21 100644 --- a/unified/extractor/src/languages/swift/swift.rs +++ b/unified/extractor/src/languages/swift/swift.rs @@ -158,12 +158,30 @@ fn translation_rules() -> Vec> { // swift-syntax does not distinguish the lexical integer/string forms // (hex/binary/octal, single- vs multi-line, raw): each is a single // `*LiteralExpr` kind, so one rule per literal type suffices. - rule!((integerLiteralExpr) @@node => (int_literal #{node})), - rule!((floatLiteralExpr) @@node => (float_literal #{node})), - rule!((booleanLiteralExpr) @@node => (boolean_literal #{node})), - rule!((nilLiteralExpr) @@node => (builtin_expr #{node})), - rule!((stringLiteralExpr) @@node => (string_literal #{node})), - rule!((regexLiteralExpr) @@node => (regex_literal #{node})), + rule!((integerLiteralExpr) @@node => expr { + let value = tree!((int_literal #{node})); + if ctx.in_pattern { tree!((expr_equality_pattern expr: {value})) } else { value } + }), + rule!((floatLiteralExpr) @@node => expr { + let value = tree!((float_literal #{node})); + if ctx.in_pattern { tree!((expr_equality_pattern expr: {value})) } else { value } + }), + rule!((booleanLiteralExpr) @@node => expr { + let value = tree!((boolean_literal #{node})); + if ctx.in_pattern { tree!((expr_equality_pattern expr: {value})) } else { value } + }), + rule!((nilLiteralExpr) @@node => expr { + let value = tree!((builtin_expr #{node})); + if ctx.in_pattern { tree!((expr_equality_pattern expr: {value})) } else { value } + }), + rule!((stringLiteralExpr) @@node => expr { + let value = tree!((string_literal #{node})); + if ctx.in_pattern { tree!((expr_equality_pattern expr: {value})) } else { value } + }), + rule!((regexLiteralExpr) @@node => expr { + let value = tree!((regex_literal #{node})); + if ctx.in_pattern { tree!((expr_equality_pattern expr: {value})) } else { value } + }), // ---- Names ---- // A function reference spelled with argument labels (`f(x:y:z:)`) is a // `declReferenceExpr` carrying `argumentNames`. Mark it unsupported for @@ -176,6 +194,14 @@ fn translation_rules() -> Vec> { => (unsupported_node) ), + rule!((declReferenceExpr baseName: (identifier) @name) => expr { + let name = tree!((name_expr identifier: (identifier #{name}))); + if ctx.in_pattern { + tree!((expr_equality_pattern expr: {name})) + } else { + name + } + }), // A bare name reference (`x`), and an operator used as a value (`+` in // `reduce(0, +)`), are both `declReferenceExpr`; its `baseName` is the // referenced identifier / operator symbol. @@ -507,29 +533,6 @@ fn translation_rules() -> Vec> { // introduces a new binding; it unwraps to its inner pattern (a // `name_pattern`). rule!((valueBindingPattern pattern: @p) => pattern { p }), - // An enum-case pattern with associated values (`case .foo(let x)`, - // `case Color.foo(let x)`) is an expression pattern wrapping a call of a - // member access. It becomes a `constructor_pattern`; its arguments are - // translated as pattern elements (see the `labeledExpr` rules, gated by - // `ctx.in_pattern`). Matched before the generic `expressionPattern` rule. - // The base is optional: a leading-dot form (`.foo`) has none, so the - // constructor's base is an `inferred_type_expr`. - rule!( - (expressionPattern expression: (functionCallExpr - calledExpression: (memberAccessExpr base: _? @base period: @dot declName: (declReferenceExpr baseName: @name)) - arguments: _* @@args)) - => - constructor_pattern { - ctx.in_pattern = true; - let elements = ctx.translate(args)?; - let base = base.unwrap_or_else(|| tree!((inferred_type_expr #{dot}))); - tree!((constructor_pattern - constructor: (member_access_expr - base: {base} - member: (identifier #{name})) - element: {elements})) - } - ), // A tuple destructuring pattern (`let (a, b) = …`). A labelled element // (`let (x: a) = …`) carries its label through as the `pattern_element` // key; unlabelled elements have no key. @@ -544,36 +547,16 @@ fn translation_rules() -> Vec> { // handling in the future. (Redundant with the catch-all fallback, but // kept as a signpost.) rule!((isTypePattern) => (unsupported_node)), - // A standalone wildcard pattern (`case _:`, `if case _`): swift-syntax - // models the bare `_` as an `expressionPattern` wrapping a - // `discardAssignmentExpr`. Matched before the generic `expressionPattern` - // rule so `_` becomes an `ignore_pattern` rather than an equality match. - // (Wildcards *inside* an enum-case argument list are handled by the - // `labeledExpr`/`discardAssignmentExpr` rules.) - rule!((expressionPattern expression: (discardAssignmentExpr)) => (ignore_pattern)), // A wildcard *binding* pattern (`let _ = x`, `for _ in xs`). swift-syntax - // models this as a `wildcardPattern` — distinct from the `_` *match* - // pattern above, which is an `expressionPattern` over a - // `discardAssignmentExpr`. + // models this as a `wildcardPattern`, distinct from the `_` match form + // handled by the context-aware `discardAssignmentExpr` rule. rule!((wildcardPattern) => (ignore_pattern)), - // A tuple pattern in a match position (`case (let a, 3):`) is parsed by - // swift-syntax as an `expressionPattern` wrapping a `tupleExpr` — unlike a - // binding tuple (`let (a, b)`), which is a real `tuplePattern`. Recognise - // it as a `tuple_pattern`; its `labeledExpr` elements translate to - // `pattern_element`s under `ctx.in_pattern` (a binding element becomes a - // `name_pattern`, any other expression an `expr_equality_pattern`). - rule!( - (expressionPattern expression: (tupleExpr elements: _* @@els)) - => - tuple_pattern { - ctx.in_pattern = true; - let elements = ctx.translate(els)?; - tree!((tuple_pattern element: {elements})) - } - ), - // A bare expression pattern (`case 1:`, `case someConstant:`) matches by - // equality. - rule!((expressionPattern expression: @e) => (expr_equality_pattern expr: {e})), + // An expression pattern only establishes pattern context; its child + // determines the concrete pattern shape. + rule!((expressionPattern expression: @@e) => expr { + ctx.in_pattern = true; + ctx.translate(e)?.into_iter().next().ok_or("expression pattern has no child")? + }), // ---- Functions ---- // A function declaration (parameters/return type/body optional). The // parameters and return type nest under `signature`; the body is a @@ -661,7 +644,13 @@ fn translation_rules() -> Vec> { rule!( (functionCallExpr calledExpression: @callee arguments: _* @args) => - (call_expr callee: {callee} argument: {args}) + expr { + if ctx.in_pattern { + tree!((constructor_pattern constructor: {callee} element: {args})) + } else { + tree!((call_expr callee: {callee} argument: {args})) + } + } ), // A call argument or an enum-case pattern argument. When translating an // enum-case `constructor_pattern`'s arguments (`ctx.in_pattern`), a @@ -672,6 +661,27 @@ fn translation_rules() -> Vec> { // Otherwise the argument keeps its label as the `name` and its value. // The pattern-only shapes (`patternExpr`, `discardAssignmentExpr`) are // matched first; they never occur as ordinary call arguments. + rule!( + (labeledExpr + label: _? @@lbl + expression: (functionCallExpr + calledExpression: @constructor + arguments: _* @elements)) + => + argument { + if ctx.in_pattern { + tree!((pattern_element + key: (identifier #{lbl})? + pattern: (constructor_pattern + constructor: {constructor} + element: {elements}))) + } else { + tree!((argument + name: (identifier #{lbl})? + value: (call_expr callee: {constructor} argument: {elements}))) + } + } + ), rule!( (labeledExpr label: _? @@lbl expression: (patternExpr pattern: @p)) => @@ -689,7 +699,7 @@ fn translation_rules() -> Vec> { if ctx.in_pattern { tree!((pattern_element key: (identifier #{lbl})? - pattern: (expr_equality_pattern expr: {val}))) + pattern: {val})) } else { tree!((argument name: (identifier #{lbl})? value: {val})) } @@ -933,7 +943,18 @@ fn translation_rules() -> Vec> { ), // ---- Optionals and errors ---- // Optional chaining — unwrap the marker - rule!((optionalChainingExpr expression: @inner) => expr { inner }), + rule!((optionalChainingExpr expression: @@inner) => expr { + let inner = ctx.translate(inner)?.into_iter().next().ok_or("optional chaining expression has no child")?; + if ctx.in_pattern { + tree!((constructor_pattern + constructor: (member_access_expr + base: (named_type_expr name: (identifier "Optional")) + member: (identifier "some")) + element: (pattern_element pattern: {inner}))) + } else { + inner + } + }), // try/try?/try! expr → unary_expr with operator "try", "try?" or "try!" rule!( (tryExpr questionOrExclamationMark: _? @@m expression: @e) @@ -1023,8 +1044,7 @@ fn translation_rules() -> Vec> { // becomes a `modifier`; its source text is the modifier spelling. rule!((attribute) @m => (modifier #{m})), rule!((declModifier) @m => (modifier #{m})), - // A `super` expression. (`self` needs no rule: swift-syntax models it as - // an ordinary `declReferenceExpr`, already mapped to a `name_expr`.) + // A `super` expression. rule!((superExpr) => (super_expr)), // Type expressions. A generic type applied with explicit arguments // (`Set`) becomes a `generic_type_expr` whose `base` is the type diff --git a/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output new file mode 100644 index 000000000000..22d9b86bf996 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output @@ -0,0 +1,160 @@ +switch event { +case let .received(.some(value), timestamp): + print(value, timestamp) +default: + break +} + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + expressionStmt + expression: + switchExpr + leftBrace: { + rightBrace: } + cases: + switchCase + label: + switchCaseLabel + colon: : + caseKeyword: case + caseItems: + switchCaseItem + pattern: + valueBindingPattern + pattern: + expressionPattern + expression: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + labeledExpr + expression: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + labeledExpr + expression: + patternExpr + pattern: + identifierPattern + identifier: identifier "value" + additionalTrailingClosures: + calledExpression: + memberAccessExpr + period: . + declName: + declReferenceExpr + baseName: identifier "some" + trailingComma: , + labeledExpr + expression: + patternExpr + pattern: + identifierPattern + identifier: identifier "timestamp" + additionalTrailingClosures: + calledExpression: + memberAccessExpr + period: . + declName: + declReferenceExpr + baseName: identifier "received" + bindingSpecifier: let + statements: + codeBlockItem + item: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + labeledExpr + expression: + declReferenceExpr + baseName: identifier "value" + trailingComma: , + labeledExpr + expression: + declReferenceExpr + baseName: identifier "timestamp" + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "print" + switchCase + label: + switchDefaultLabel + colon: : + defaultKeyword: default + statements: + codeBlockItem + item: + breakStmt + breakKeyword: break + subject: + declReferenceExpr + baseName: identifier "event" + switchKeyword: switch + +--- + +top_level + body: + block + stmt: + switch_expr + value: + name_expr + identifier: identifier "event" + case: + switch_case + pattern: + constructor_pattern + constructor: + member_access_expr + base: inferred_type_expr "." + member: identifier "received" + element: + pattern_element + pattern: + constructor_pattern + constructor: + member_access_expr + base: inferred_type_expr "." + member: identifier "some" + element: + pattern_element + pattern: + name_pattern + identifier: identifier "value" + pattern_element + pattern: + name_pattern + identifier: identifier "timestamp" + body: + block + stmt: + call_expr + callee: + name_expr + identifier: identifier "print" + argument: + argument + value: + name_expr + identifier: identifier "value" + argument + value: + name_expr + identifier: identifier "timestamp" + switch_case + body: + block + stmt: break_expr "break" diff --git a/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift new file mode 100644 index 000000000000..c603e2a3b12c --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift @@ -0,0 +1,6 @@ +switch event { +case let .received(.some(value), timestamp): + print(value, timestamp) +default: + break +} \ No newline at end of file diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.output new file mode 100644 index 000000000000..7b1eb1eea3b4 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.output @@ -0,0 +1,117 @@ +if case .some(let value)? = input { + print(value) +} + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + expressionStmt + expression: + ifExpr + body: + codeBlock + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + labeledExpr + expression: + declReferenceExpr + baseName: identifier "value" + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "print" + conditions: + conditionElement + condition: + matchingPatternCondition + initializer: + initializerClause + equal: = + value: + declReferenceExpr + baseName: identifier "input" + pattern: + expressionPattern + expression: + optionalChainingExpr + expression: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + labeledExpr + expression: + patternExpr + pattern: + valueBindingPattern + pattern: + identifierPattern + identifier: identifier "value" + bindingSpecifier: let + additionalTrailingClosures: + calledExpression: + memberAccessExpr + period: . + declName: + declReferenceExpr + baseName: identifier "some" + questionMark: ? + caseKeyword: case + ifKeyword: if + +--- + +top_level + body: + block + stmt: + if_expr + condition: + pattern_guard_expr + pattern: + constructor_pattern + constructor: + member_access_expr + base: + named_type_expr + name: identifier "Optional" + member: identifier "some" + element: + pattern_element + pattern: + constructor_pattern + constructor: + member_access_expr + base: inferred_type_expr "." + member: identifier "some" + element: + pattern_element + pattern: + name_pattern + identifier: identifier "value" + value: + name_expr + identifier: identifier "input" + then: + block + stmt: + call_expr + callee: + name_expr + identifier: identifier "print" + argument: + argument + value: + name_expr + identifier: identifier "value" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.swift b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.swift new file mode 100644 index 000000000000..ef9eac3661c9 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.swift @@ -0,0 +1,3 @@ +if case .some(let value)? = input { + print(value) +} \ No newline at end of file From 8080bac9cf5f681ca9efeacce6498794b1134521 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 7 Aug 2026 08:59:44 +0200 Subject: [PATCH 043/167] unified: Add newlines at EOF --- .../corpus/swift/control-flow/nested-enum-case-pattern.swift | 2 +- .../tests/corpus/swift/expressions/array-type-constructor.swift | 2 +- .../tests/corpus/swift/expressions/array-type-metatype.swift | 2 +- .../swift/optionals-and-errors/optional-enum-case-binding.swift | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift index c603e2a3b12c..876d9995aee6 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift +++ b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift @@ -3,4 +3,4 @@ case let .received(.some(value), timestamp): print(value, timestamp) default: break -} \ No newline at end of file +} diff --git a/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift index b3cccb6ae2a1..49191aee851d 100644 --- a/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift +++ b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift @@ -1 +1 @@ -let values = [Result]() \ No newline at end of file +let values = [Result]() diff --git a/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.swift b/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.swift index d0ee51283459..85d770be76cb 100644 --- a/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.swift +++ b/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.swift @@ -1 +1 @@ -let type = [Result].self \ No newline at end of file +let type = [Result].self diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.swift b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.swift index ef9eac3661c9..c0e58852bef1 100644 --- a/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.swift +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.swift @@ -1,3 +1,3 @@ if case .some(let value)? = input { print(value) -} \ No newline at end of file +} From 0cf2871385d5bb8140ded73738500cd50f680bc4 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 7 Aug 2026 09:42:19 +0200 Subject: [PATCH 044/167] unified: Update comment The restriction to classes was more permanent that anticipated, since top-level scopes instead target a TModuleScope --- unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index 02ce277bc895..8f7b7ae7404e 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -28,7 +28,7 @@ class NameBindingNode extends TNameBindingNode { predicate isLocalName(LocalName local) { this = TLocalName(local) } - /** Holds if this represents the set of static members available in the given namespace (currently restricted to classes) */ + /** Holds if this represents the set of static members available in the given namespace. */ predicate isExportedNamespace(ClassLikeDeclaration cls) { this = TExportedNamespace(cls) } /** Holds if this represents the set of members that can be accessed unqualified within the given scope. */ From a3f21a5a20bf63b4dcff1b6ac011817963420170 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 7 Aug 2026 10:44:24 +0200 Subject: [PATCH 045/167] unified: Support scoped imports Scoped imports like 'import class B.C' are mapped to an AST of form ImportDeclartion pattern: NamePattern "C" importedExpr: MemberAccessExpr base: "B" member: "C" The NamePattern introduces a local alias for 'C', but unlike type aliases we also resolve to the ultimate target, when it's coming through an import. --- unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll | 5 +++++ .../static-name-binding/package1/Sources/Target1/File2.swift | 5 +++++ .../static-name-binding/package1/Sources/Target2/File3.swift | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index 8f7b7ae7404e..adf505281eb9 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -181,6 +181,11 @@ predicate valueStep(NameBindingNode node1, NameBindingNode node2) { node1 = getModuleNodeFromFile(top.getFile()) and node2.isLocalNamespace(top.getBody()) // implicitly import own module ) + or + exists(ImportDeclaration imprt | + node1 = getNodeFromRef(imprt.getImportedExpr()) and + node2 = getNodeFromRef(imprt.getPattern()) + ) } predicate inheritanceStep(NameBindingNode supertype, NameBindingNode subtype) { diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File2.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File2.swift index fa515af0eaf5..4705d8f65558 100644 --- a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File2.swift +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File2.swift @@ -1 +1,6 @@ class A {} // name=Target1.A + +private import class Target2.B // $ access=Target2.B // name=LocalB + +// Note: currently the local name 'B' introduced by the scoped import is also resolved as a target +private let x: B.C; // $ access=Target2.B access=Target2.B.C access=LocalB diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift index 47c3f4da77ed..c49329b168f3 100644 --- a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift @@ -1 +1,5 @@ class A {} // name=Target2.A + +class B { // name=Target2.B + class C {} // name=Target2.B.C +} From 50f934bbc4f0836c87786548e08b95b24d7a8d8f Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 7 Aug 2026 10:55:32 +0200 Subject: [PATCH 046/167] unified: Don't track trivial name aliasse --- .../unified/internal/StaticNameBinding.qll | 20 ++++++++++++++++++- .../package1/Sources/Target1/File2.swift | 5 ++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index adf505281eb9..5afbf1ab6bb2 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -280,8 +280,26 @@ private module TrackNamespaceInput implements TrackInputSig { private module TrackNamespace = Track; +/** + * Holds if `decl` is a trivial local alias for an imported name. + * + * Declaration-tracking usually stops at type-aliases, but trivial aliases + * will be passed through. + */ +predicate isTrivialNameAlias(NameDeclaration decl) { + exists(ImportDeclaration imprt | + decl = getIdentifierFromRef(imprt.getPattern()) and + decl.getName() = getIdentifierFromRef(imprt.getImportedExpr()).getValue() + ) +} + private module TrackNameDeclarationInput implements TrackInputSig { - predicate shouldTrack(NameBindingNode node) { node.isIdentifier(any(NameDeclaration d)) } + predicate shouldTrack(NameBindingNode node) { + exists(NameDeclaration decl | + node.isIdentifier(decl) and + not isTrivialNameAlias(decl) + ) + } } private module TrackNameDeclaration = Track; diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File2.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File2.swift index 4705d8f65558..62dbfcbf5c04 100644 --- a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File2.swift +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File2.swift @@ -1,6 +1,5 @@ class A {} // name=Target1.A -private import class Target2.B // $ access=Target2.B // name=LocalB +private import class Target2.B // $ access=Target2.B -// Note: currently the local name 'B' introduced by the scoped import is also resolved as a target -private let x: B.C; // $ access=Target2.B access=Target2.B.C access=LocalB +private let x: B.C; // $ access=Target2.B access=Target2.B.C From a79c32ae9f5fe61bfb12de2b61ef9cd88b3fc03f Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 7 Aug 2026 13:46:59 +0200 Subject: [PATCH 047/167] unified: Bulk imports --- .../unified/internal/LocalNameBinding.qll | 3 +++ .../unified/internal/NameBindingPlugin.qll | 4 +-- .../internal/NameBindingPluginSwift.qll | 5 +++- .../unified/internal/StaticNameBinding.qll | 27 ++++++++++++++++++- .../package1/Sources/Target1/File3.swift | 4 +++ 5 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File3.swift diff --git a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll index faa2be5fe43e..a7ab44dbbb8e 100644 --- a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll @@ -326,6 +326,9 @@ private module LocalNameBindingInput implements LocalNameBindingInputSig Date: Fri, 7 Aug 2026 13:48:21 +0200 Subject: [PATCH 048/167] unified: Fix access level in test case Program was not valid unless these were public --- .../package1/Sources/Target2/File3.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift index c49329b168f3..8309118a867b 100644 --- a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift @@ -1,5 +1,5 @@ -class A {} // name=Target2.A +public class A {} // name=Target2.A -class B { // name=Target2.B - class C {} // name=Target2.B.C +public class B { // name=Target2.B + public class C {} // name=Target2.B.C } From 659da08a38f0b6954cff3dc5c351c5e33b4baca0 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 7 Aug 2026 13:53:21 +0200 Subject: [PATCH 049/167] unified: Fix incorrect expectation Module names can only be referenced by an import declaration, they cannot appear directly on front of a type name unless the module is also imported. --- .../static-name-binding/package1/Sources/Target1/File1.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File1.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File1.swift index fff0a56e90f3..1c9d6f81d06c 100644 --- a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File1.swift +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File1.swift @@ -1,2 +1,2 @@ let x: A; // $ access=Target1.A -let y: Target2.A; // $ access=Target2.A +let y: Target2.A; // $ SPURIOUS: access=Target2.A From 35c54b15c7ed6916a38244497e10349fdc7539e7 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 7 Aug 2026 14:26:12 +0200 Subject: [PATCH 050/167] unified: Fix toString and getLocation for TLocalNamespace --- .../ql/lib/codeql/unified/internal/StaticNameBinding.qll | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index 8a58e640b470..9c9967920704 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -54,9 +54,7 @@ class NameBindingNode extends TNameBindingNode { this.isExportedNamespace(cls) and result = "ExportedNamespace(" + cls + ")" ) or - exists(ClassLikeDeclaration cls | - this.isLocalNamespace(cls) and result = "LocalNamespace(" + cls + ")" - ) + exists(AstNode n | this.isLocalNamespace(n) and result = "LocalNamespace(" + n + ")") or exists(ModuleScopeRepr repr | this.isModuleScopeNode(repr) and result = "ModuleScope(" + repr + ")" @@ -74,7 +72,7 @@ class NameBindingNode extends TNameBindingNode { or exists(ClassLikeDeclaration cls | this.isExportedNamespace(cls) and result = cls.getLocation()) or - exists(ClassLikeDeclaration cls | this.isLocalNamespace(cls) and result = cls.getLocation()) + exists(AstNode n | this.isLocalNamespace(n) and result = n.getLocation()) or exists(ModuleScopeRepr repr | this.isModuleScopeNode(repr) and result = repr.getLocation()) or From af2f5a2654394ff56975db8db6625f89958b0098 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 7 Aug 2026 14:26:27 +0200 Subject: [PATCH 051/167] unified: Remove location of TModuleRoot --- unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll | 3 --- 1 file changed, 3 deletions(-) diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index 9c9967920704..a753cc5cce55 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -75,9 +75,6 @@ class NameBindingNode extends TNameBindingNode { exists(AstNode n | this.isLocalNamespace(n) and result = n.getLocation()) or exists(ModuleScopeRepr repr | this.isModuleScopeNode(repr) and result = repr.getLocation()) - or - this.isModuleRoot() and - exists(ModuleScopeRepr repr | result = repr.getLocation()) } } From 970e4c637361e486ca7ce907891c03c92bd0ffcd Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 7 Aug 2026 14:30:31 +0200 Subject: [PATCH 052/167] unified: Fix handling of unscoped imports An `import X` declaration now does two things: - X becomes a local name binding - X is bulk-imported into the local scope The AST mapping now maps it to X with a bulk-importing pattern as a sub-pattern. Module names can no longer be referenced anywhere except as the leading qualifier of an import statement. --- unified/extractor/ast_types.yml | 1 + .../extractor/src/languages/swift/swift.rs | 11 ++++---- ...with-deeply-nested-path-three-parts.output | 5 +++- .../import-with-dotted-path-two-parts.output | 5 +++- .../simple-import-with-single-name.output | 5 +++- .../ql/lib/codeql/unified/internal/Ast.qll | 9 ++++++- .../unified/internal/LocalNameBinding.qll | 2 -- .../unified/internal/NameBindingPlugin.qll | 3 ++- .../unified/internal/StaticNameBinding.qll | 27 +++++++++++++++---- unified/ql/lib/unified.dbscheme | 5 ++++ .../package1/Sources/Target1/File1.swift | 2 +- 11 files changed, 56 insertions(+), 19 deletions(-) diff --git a/unified/extractor/ast_types.yml b/unified/extractor/ast_types.yml index ca5f6d45edc6..854829a17cb4 100644 --- a/unified/extractor/ast_types.yml +++ b/unified/extractor/ast_types.yml @@ -413,6 +413,7 @@ named: name_pattern: modifier*: modifier identifier: identifier + sub_pattern?: pattern # A pattern matching anything, binding no variables, usually using the syntax "_" ignore_pattern: diff --git a/unified/extractor/src/languages/swift/swift.rs b/unified/extractor/src/languages/swift/swift.rs index 556345c18d21..0762cc66b291 100644 --- a/unified/extractor/src/languages/swift/swift.rs +++ b/unified/extractor/src/languages/swift/swift.rs @@ -1023,13 +1023,12 @@ fn translation_rules() -> Vec> { path: (importPathComponent name: @@parts)*) => import_declaration { - let pattern = match kind { - Some(_) => { - let last = *parts.last().ok_or("import has no path")?; - tree!((name_pattern identifier: (identifier #{last}))) - } - None => tree!((bulk_importing_pattern)), + let bulk_import = match kind { + None => Some(tree!((bulk_importing_pattern))), + Some(_) => None, // scoped import, no bulk import }; + let last = *parts.last().ok_or("import has no path")?; + let pattern = tree!((name_pattern identifier: (identifier #{last}) sub_pattern: {bulk_import})); tree!((import_declaration modifier: (modifier #{kind})? modifier: {attrs} diff --git a/unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.output b/unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.output index cacdc64a46de..ed16e68e219d 100644 --- a/unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.output +++ b/unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.output @@ -37,4 +37,7 @@ top_level identifier: identifier "Foundation" member: identifier "Networking" member: identifier "URLSession" - pattern: bulk_importing_pattern "import Foundation.Networking.URLSession" + pattern: + name_pattern + identifier: identifier "URLSession" + sub_pattern: bulk_importing_pattern "import Foundation.Networking.URLSession" diff --git a/unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.output b/unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.output index 4fc053a7bc53..88f08baa19ce 100644 --- a/unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.output +++ b/unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.output @@ -31,4 +31,7 @@ top_level name_expr identifier: identifier "Foundation" member: identifier "Networking" - pattern: bulk_importing_pattern "import Foundation.Networking" + pattern: + name_pattern + identifier: identifier "Networking" + sub_pattern: bulk_importing_pattern "import Foundation.Networking" diff --git a/unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.output b/unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.output index 583f33563d13..31261cd952c3 100644 --- a/unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.output +++ b/unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.output @@ -25,4 +25,7 @@ top_level imported_expr: name_expr identifier: identifier "Foundation" - pattern: bulk_importing_pattern "import Foundation" + pattern: + name_pattern + identifier: identifier "Foundation" + sub_pattern: bulk_importing_pattern "import Foundation" diff --git a/unified/ql/lib/codeql/unified/internal/Ast.qll b/unified/ql/lib/codeql/unified/internal/Ast.qll index 20ff74e6eaf7..d5ffa0218523 100644 --- a/unified/ql/lib/codeql/unified/internal/Ast.qll +++ b/unified/ql/lib/codeql/unified/internal/Ast.qll @@ -1078,9 +1078,14 @@ module Unified { /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getAModifier() { result = this.getModifier(_) } + /** Gets the node corresponding to the field `sub_pattern`. */ + final F::Pattern getSubPattern() { unified_name_pattern_sub_pattern(this, result) } + /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { - unified_name_pattern_def(this, result) or unified_name_pattern_modifier(this, _, result) + unified_name_pattern_def(this, result) or + unified_name_pattern_modifier(this, _, result) or + unified_name_pattern_sub_pattern(this, result) } } @@ -1895,6 +1900,8 @@ module Unified { or result = node.(NamePattern).getModifier(i) and name = "getModifier" or + result = node.(NamePattern).getSubPattern() and i = -1 and name = "getSubPattern" + or result = node.(NamedTypeExpr).getName() and i = -1 and name = "getName" or result = node.(NamedTypeExpr).getQualifier() and i = -1 and name = "getQualifier" diff --git a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll index a7ab44dbbb8e..d7020c153465 100644 --- a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll @@ -323,8 +323,6 @@ private module LocalNameBindingInput implements LocalNameBindingInputSig Date: Mon, 10 Aug 2026 11:42:33 +0200 Subject: [PATCH 053/167] unified: Fix Swift source folder documentation --- .../ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll b/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll index fb47c577b79e..6fd2187f47a1 100644 --- a/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll +++ b/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll @@ -73,7 +73,7 @@ class SwiftPackageTarget extends ModuleScopeRepr, CallExpr { ) } - /** Gets the source folder to use if no explicit `path:` if given, typically `Sources/` */ + /** Gets the source folder to use if no explicit `path:` is given, typically `Sources/`. */ Folder getDefaultSourceFolder() { exists(Folder subfolder | subfolder = this.getSourceMidFolder() | result = subfolder.getFolder(this.getName()) From d6164c3231b53ee95e6015e25e7e0de249699248 Mon Sep 17 00:00:00 2001 From: Asger F Date: Mon, 10 Aug 2026 11:43:16 +0200 Subject: [PATCH 054/167] unified: Preserve array constructor trailing closures --- .../extractor/src/languages/swift/swift.rs | 13 ++ .../expressions/array-type-constructor.output | 120 ++++++++++++++++++ .../expressions/array-type-constructor.swift | 3 + 3 files changed, 136 insertions(+) diff --git a/unified/extractor/src/languages/swift/swift.rs b/unified/extractor/src/languages/swift/swift.rs index 0762cc66b291..e615f07388a9 100644 --- a/unified/extractor/src/languages/swift/swift.rs +++ b/unified/extractor/src/languages/swift/swift.rs @@ -621,6 +621,19 @@ fn translation_rules() -> Vec> { // translating that callee as an array literal would place a type // expression in an expression-only element field. Normalize it to an // `Array` generic type constructor instead. + rule!( + (functionCallExpr + calledExpression: (arrayExpr elements: (arrayElement expression: (genericSpecializationExpr) @element)) + arguments: _* @args + trailingClosure: @tc) + => + (call_expr + callee: (generic_type_expr + base: (named_type_expr name: (identifier "Array")) + type_argument: {element}) + argument: {args} + argument: (argument value: {tc})) + ), rule!( (functionCallExpr calledExpression: (arrayExpr elements: (arrayElement expression: (genericSpecializationExpr) @element)) diff --git a/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.output b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.output index e721ba9cfde2..43f1c8a553da 100644 --- a/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.output +++ b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.output @@ -1,4 +1,7 @@ let values = [Result]() +let initialized = [Result](unsafeUninitializedCapacity: 1) { _, count in + count = 0 +} --- @@ -45,6 +48,79 @@ sourceFile pattern: identifierPattern identifier: identifier "values" + codeBlockItem + item: + variableDecl + attributes: + modifiers: + bindingSpecifier: let + bindings: + patternBinding + initializer: + initializerClause + equal: = + value: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + labeledExpr + colon: : + label: identifier "unsafeUninitializedCapacity" + expression: + integerLiteralExpr + literal: integerLiteral "1" + additionalTrailingClosures: + calledExpression: + arrayExpr + elements: + arrayElement + expression: + genericSpecializationExpr + expression: + declReferenceExpr + baseName: identifier "Result" + genericArgumentClause: + genericArgumentClause + arguments: + genericArgument + argument: + identifierType + name: identifier "Void" + leftAngle: < + rightAngle: > + leftSquare: [ + rightSquare: ] + trailingClosure: + closureExpr + leftBrace: { + rightBrace: } + signature: + closureSignature + attributes: + inKeyword: in + parameterClause: + closureShorthandParameter + name: _ + trailingComma: , + closureShorthandParameter + name: identifier "count" + statements: + codeBlockItem + item: + infixOperatorExpr + operator: + assignmentExpr + equal: = + leftOperand: + declReferenceExpr + baseName: identifier "count" + rightOperand: + integerLiteralExpr + literal: integerLiteral "0" + pattern: + identifierPattern + identifier: identifier "initialized" --- @@ -72,3 +148,47 @@ top_level type_argument: named_type_expr name: identifier "Void" + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "initialized" + value: + call_expr + callee: + generic_type_expr + base: + named_type_expr + name: identifier "Array" + type_argument: + generic_type_expr + base: + named_type_expr + name: identifier "Result" + type_argument: + named_type_expr + name: identifier "Void" + argument: + argument + name: identifier "unsafeUninitializedCapacity" + value: int_literal "1" + argument + value: + function_expr + parameter: + parameter + pattern: + name_pattern + identifier: identifier "_" + parameter + pattern: + name_pattern + identifier: identifier "count" + body: + block + stmt: + assign_expr + target: + name_expr + identifier: identifier "count" + value: int_literal "0" diff --git a/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift index 49191aee851d..bd25a9cbb4ce 100644 --- a/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift +++ b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift @@ -1 +1,4 @@ let values = [Result]() +let initialized = [Result](unsafeUninitializedCapacity: 1) { _, count in + count = 0 +} From 6a6931cfe8581f04a31dc01f923de020d72d812f Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 10 Aug 2026 14:14:56 +0200 Subject: [PATCH 055/167] Rust: Accept more inconsistencies --- .../models/CONSISTENCY/PathResolutionConsistency.expected | 3 +++ .../database/CONSISTENCY/PathResolutionConsistency.expected | 2 ++ .../file/CONSISTENCY/PathResolutionConsistency.expected | 3 +++ .../stdin/CONSISTENCY/PathResolutionConsistency.expected | 3 +++ .../CONSISTENCY/PathResolutionConsistency.expected | 5 +++++ .../axum/CONSISTENCY/PathResolutionConsistency.expected | 5 +++++ .../warp/CONSISTENCY/PathResolutionConsistency.expected | 3 +++ .../CWE-696/CONSISTENCY/PathResolutionConsistency.expected | 4 ++++ 8 files changed, 28 insertions(+) create mode 100644 rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected diff --git a/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..e30b94a59e93 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,3 @@ +multiplePathResolutions +| main.rs:433:3:433:13 | ...::main | +| main.rs:455:5:455:7 | ...::runtime | diff --git a/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/PathResolutionConsistency.expected index b6a4a56f9f77..a43ac755ca4f 100644 --- a/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,5 @@ multiplePathResolutions | test.rs:10:28:10:65 | Result::<...> | | test.rs:97:40:97:49 | Result::<...> | +| test.rs:207:3:207:13 | ...::main | +| test.rs:221:5:221:6 | ...::runtime | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..83f2dd8d73c3 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,3 @@ +multiplePathResolutions +| test.rs:294:3:294:13 | ...::main | +| test.rs:326:5:326:6 | ...::runtime | diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..a74204eaf517 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,3 @@ +multiplePathResolutions +| test.rs:204:3:204:13 | ...::main | +| test.rs:218:5:218:6 | ...::runtime | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..a57d64282229 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,5 @@ +multiplePathResolutions +| test.rs:40:7:40:25 | ...::fmt | +| test.rs:40:7:40:25 | ...::fmt | +| test.rs:217:7:217:17 | ...::main | +| test.rs:267:9:267:12 | ...::runtime | diff --git a/rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..5b4fc1e3902c --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,5 @@ +multiplePathResolutions +| main.rs:3:3:3:28 | ...::fmt | +| main.rs:3:3:3:28 | ...::fmt | +| main.rs:13:3:13:13 | ...::main | +| main.rs:19:5:19:8 | ...::runtime | diff --git a/rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..63b00cc6d41b --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,3 @@ +multiplePathResolutions +| main.rs:3:3:3:13 | ...::main | +| main.rs:14:5:14:8 | ...::runtime | 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..632d59f91e9e --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,4 @@ +multiplePathResolutions +| test.rs:14:3:14:12 | harmless1_3___rust_dtor___dtor | +| test.rs:33:3:33:12 | bad1_2___rust_dtor___dtor | +| test.rs:39:3:39:12 | bad1_3___rust_dtor___dtor | From dc90b3af41c8236786dc8ed603f85ba4e5140e48 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 10 Aug 2026 15:04:07 +0200 Subject: [PATCH 056/167] Rust: fix cfg exclusion for items from macro expansions `should_be_excluded` only resolved a crate for items in real files. Items coming from a macro expansion live in a `MacroFile`, for which `HirFileId::file_id()` returns `None`, so the cfg was never checked and both branches of e.g. `#[cfg(feature = "rt")]` / `#[cfg(not(feature = "rt"))]` were extracted. Recover the crate from the macro call in that case, mirroring the crate resolution the old upstream `Semantics::check_cfg_attr` performed. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4ee033fb-30ad-4617-9922-bc0f1088ba81 --- rust/extractor/src/translate/base.rs | 29 +++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/rust/extractor/src/translate/base.rs b/rust/extractor/src/translate/base.rs index cb498e40bfe9..68c3691fd24c 100644 --- a/rust/extractor/src/translate/base.rs +++ b/rust/extractor/src/translate/base.rs @@ -8,7 +8,7 @@ use ra_ap_hir::Semantics; use ra_ap_hir::db::ExpandDatabase; use ra_ap_hir_expand::builtin::{BuiltinDeriveExpander, find_builtin_derive}; use ra_ap_hir_expand::span_map::ExpansionSpanMap; -use ra_ap_hir_expand::{ExpandResult, ExpandTo, InFile, map_node_range_up_rooted}; +use ra_ap_hir_expand::{ExpandResult, ExpandTo, HirFileId, InFile, map_node_range_up_rooted}; use ra_ap_ide_db::RootDatabase; use ra_ap_ide_db::line_index::{LineCol, LineIndex}; use ra_ap_parser::{SyntaxKind, TopEntryPoint}; @@ -502,15 +502,26 @@ impl<'a> Translator<'a> { None => return false, }; let cfg_expr = ra_ap_cfg::CfgExpr::parse_from_ast(cfg_predicate); - let file_id = sema.hir_file_for(item.syntax()); - let krate = match file_id - .file_id() - .and_then(|fid| sema.file_to_module_defs(fid.file_id(sema.db)).next()) - { - Some(module) => module.krate(sema.db), - None => return false, + // Resolve the crate the item belongs to so its `cfg` options can be checked. + // Items originating from a macro expansion live in a `MacroFile` rather than a + // real file, so we recover their crate from the macro call; otherwise cfg'd-out + // items from expansions (e.g. tokio's `cfg(feature = "rt")` / + // `cfg(not(feature = "rt"))` cousins) would all be extracted, bloating the DB with + // contradictory entries. + let cfg_options = match sema.hir_file_for(item.syntax()) { + HirFileId::FileId(fid) => { + match sema.file_to_module_defs(fid.file_id(sema.db)).next() { + Some(module) => module.krate(sema.db).cfg(sema.db), + None => return false, + } + } + HirFileId::MacroFile(macro_call) => sema + .db + .lookup_intern_macro_call(macro_call) + .krate + .cfg_options(sema.db), }; - krate.cfg(sema.db).check(&cfg_expr) == Some(false) + cfg_options.check(&cfg_expr) == Some(false) }) }) } From 70598e915fdfa0a3c546aa0e3efa497fe0280c7b Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 10 Aug 2026 15:18:27 +0200 Subject: [PATCH 057/167] Rust: Add extractor test for cfg exclusion in macro expansions Regression test for `should_be_excluded`: items produced by a macro expansion carrying a disabled `#[cfg(...)]` must be excluded from extraction, just like disabled items written directly in a source file. Uses `cfg(any())`/`cfg(all())` so the test does not depend on crate features. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4ee033fb-30ad-4617-9922-bc0f1088ba81 --- .../macro-expansion-cfg/Cargo.lock | 7 ++++++ .../macro-expansion-cfg/cfg_macro.expected | 2 ++ .../macro-expansion-cfg/cfg_macro.ql | 6 +++++ .../macro-expansion-cfg/cfg_macro.rs | 22 +++++++++++++++++++ 4 files changed, 37 insertions(+) create mode 100644 rust/ql/test/extractor-tests/macro-expansion-cfg/Cargo.lock create mode 100644 rust/ql/test/extractor-tests/macro-expansion-cfg/cfg_macro.expected create mode 100644 rust/ql/test/extractor-tests/macro-expansion-cfg/cfg_macro.ql create mode 100644 rust/ql/test/extractor-tests/macro-expansion-cfg/cfg_macro.rs diff --git a/rust/ql/test/extractor-tests/macro-expansion-cfg/Cargo.lock b/rust/ql/test/extractor-tests/macro-expansion-cfg/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion-cfg/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/extractor-tests/macro-expansion-cfg/cfg_macro.expected b/rust/ql/test/extractor-tests/macro-expansion-cfg/cfg_macro.expected new file mode 100644 index 000000000000..51ce8be37062 --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion-cfg/cfg_macro.expected @@ -0,0 +1,2 @@ +| cfg_macro.rs:15:1:15:15 | fn from_macro_enabled | from_macro_enabled | +| cfg_macro.rs:21:1:22:26 | fn direct_enabled | direct_enabled | diff --git a/rust/ql/test/extractor-tests/macro-expansion-cfg/cfg_macro.ql b/rust/ql/test/extractor-tests/macro-expansion-cfg/cfg_macro.ql new file mode 100644 index 000000000000..93c4b4d80edf --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion-cfg/cfg_macro.ql @@ -0,0 +1,6 @@ +import rust +import TestUtils + +query predicate functions(Function f, string name) { + toBeTested(f) and name = f.getName().getText() +} diff --git a/rust/ql/test/extractor-tests/macro-expansion-cfg/cfg_macro.rs b/rust/ql/test/extractor-tests/macro-expansion-cfg/cfg_macro.rs new file mode 100644 index 000000000000..ea4799b49b5e --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion-cfg/cfg_macro.rs @@ -0,0 +1,22 @@ +// Regression test: `#[cfg(...)]`-disabled items produced by a macro expansion must be +// excluded from extraction, just like disabled items written directly in a source file. +// `any()` is always false and `all()` is always true, so this does not depend on crate features. + +macro_rules! make_cfg_items { + () => { + #[cfg(any())] // always false: must be excluded + pub fn from_macro_disabled() {} + + #[cfg(all())] // always true: must be kept + pub fn from_macro_enabled() {} + }; +} + +make_cfg_items!(); + +// Baseline: the same predicates on items written directly in the file (not via a macro). +#[cfg(any())] // always false: must be excluded +pub fn direct_disabled() {} + +#[cfg(all())] // always true: must be kept +pub fn direct_enabled() {} From c567c679a41ae6a5d8542ea8bce3e43740a0dde5 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 10 Aug 2026 15:57:05 +0200 Subject: [PATCH 058/167] Rust: Accept expected-file changes from CI Apply .expected diffs from the Rust Language Tests CI runs following the cfg-exclusion fix: duplicate flow rows from macro/cfg double-extraction are removed and platform-gated models no longer double-load, which clears the associated consistency violations. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4ee033fb-30ad-4617-9922-bc0f1088ba81 --- .../PathResolutionConsistency.expected | 3 - .../ExtractionConsistency.expected | 2 - .../PathResolutionConsistency.expected | 2 - .../ExtractionConsistency.expected | 2 - .../PathResolutionConsistency.expected | 3 - .../ExtractionConsistency.expected | 2 - .../PathResolutionConsistency.expected | 6 - .../TypeInferenceConsistency.expected | 4 - .../ExtractionConsistency.expected | 2 - .../PathResolutionConsistency.expected | 3 - .../ExtractionConsistency.expected | 2 - .../PathResolutionConsistency.expected | 5 - .../ExtractionConsistency.expected | 2 - .../PathResolutionConsistency.expected | 5 - .../ExtractionConsistency.expected | 2 - .../PathResolutionConsistency.expected | 3 - .../PathResolutionConsistency.expected | 6 - .../PathResolutionConsistency.expected | 12 -- .../ExtractionConsistency.expected | 22 -- .../PathResolutionConsistency.expected | 4 - .../PathResolutionConsistency.expected | 9 - .../UncontrolledAllocationSize.expected | 196 ++++++++---------- .../CWE-825/AccessInvalidPointer.expected | 4 - .../PathResolutionConsistency.expected | 3 - .../PathResolutionConsistency.expected | 4 - .../TypeInferenceConsistency.expected | 8 - 26 files changed, 89 insertions(+), 227 deletions(-) delete mode 100644 rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/ExtractionConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/ExtractionConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/ExtractionConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/TypeInferenceConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/ExtractionConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/ExtractionConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/ExtractionConsistency.expected delete mode 100644 rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/ExtractionConsistency.expected delete mode 100644 rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/query-tests/security/CWE-295/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/query-tests/security/CWE-311/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/ExtractionConsistency.expected delete mode 100644 rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/TypeInferenceConsistency.expected diff --git a/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index e30b94a59e93..000000000000 --- a/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,3 +0,0 @@ -multiplePathResolutions -| main.rs:433:3:433:13 | ...::main | -| main.rs:455:5:455:7 | ...::runtime | diff --git a/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/ExtractionConsistency.expected deleted file mode 100644 index 61ef42d077a4..000000000000 --- a/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/ExtractionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -extractionWarning -| test.rs:221:7:221:10 | macro expansion failed for 'panic' | diff --git a/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/PathResolutionConsistency.expected index a43ac755ca4f..b6a4a56f9f77 100644 --- a/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/PathResolutionConsistency.expected @@ -1,5 +1,3 @@ multiplePathResolutions | test.rs:10:28:10:65 | Result::<...> | | test.rs:97:40:97:49 | Result::<...> | -| test.rs:207:3:207:13 | ...::main | -| test.rs:221:5:221:6 | ...::runtime | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/ExtractionConsistency.expected deleted file mode 100644 index 9f7a9af6e891..000000000000 --- a/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/ExtractionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -extractionWarning -| test.rs:326:7:326:10 | macro expansion failed for 'panic' | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 83f2dd8d73c3..000000000000 --- a/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,3 +0,0 @@ -multiplePathResolutions -| test.rs:294:3:294:13 | ...::main | -| test.rs:326:5:326:6 | ...::runtime | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/ExtractionConsistency.expected deleted file mode 100644 index bc5b5c896a5a..000000000000 --- a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/ExtractionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -extractionWarning -| test.rs:563:7:563:10 | macro expansion failed for 'panic' | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 5be3b1490017..000000000000 --- a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,6 +0,0 @@ -multipleResolvedTargets -| test.rs:23:26:23:66 | ... .text() | -| test.rs:26:26:26:67 | ... .bytes() | -multiplePathResolutions -| test.rs:517:3:517:13 | ...::main | -| test.rs:563:5:563:6 | ...::runtime | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/TypeInferenceConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/TypeInferenceConsistency.expected deleted file mode 100644 index 2242144075b9..000000000000 --- a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/TypeInferenceConsistency.expected +++ /dev/null @@ -1,4 +0,0 @@ -nonUniqueCertainType -| test.rs:23:26:23:52 | ...::get(...) | dyn(Output).T | -| test.rs:26:26:26:52 | ...::get(...) | dyn(Output).T | -| test.rs:29:24:29:50 | ...::get(...) | dyn(Output).T | diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/ExtractionConsistency.expected deleted file mode 100644 index 1669b7895193..000000000000 --- a/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/ExtractionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -extractionWarning -| test.rs:218:7:218:10 | macro expansion failed for 'panic' | diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index a74204eaf517..000000000000 --- a/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,3 +0,0 @@ -multiplePathResolutions -| test.rs:204:3:204:13 | ...::main | -| test.rs:218:5:218:6 | ...::runtime | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/ExtractionConsistency.expected deleted file mode 100644 index eb9d8e47d74c..000000000000 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/ExtractionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -extractionWarning -| test.rs:267:62:267:62 | macro expansion failed for 'panic' | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index a57d64282229..000000000000 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,5 +0,0 @@ -multiplePathResolutions -| test.rs:40:7:40:25 | ...::fmt | -| test.rs:40:7:40:25 | ...::fmt | -| test.rs:217:7:217:17 | ...::main | -| test.rs:267:9:267:12 | ...::runtime | diff --git a/rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/ExtractionConsistency.expected deleted file mode 100644 index 39c3a932a0ba..000000000000 --- a/rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/ExtractionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -extractionWarning -| main.rs:19:46:19:46 | macro expansion failed for 'panic' | diff --git a/rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 5b4fc1e3902c..000000000000 --- a/rust/ql/test/query-tests/security/CWE-079/axum/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,5 +0,0 @@ -multiplePathResolutions -| main.rs:3:3:3:28 | ...::fmt | -| main.rs:3:3:3:28 | ...::fmt | -| main.rs:13:3:13:13 | ...::main | -| main.rs:19:5:19:8 | ...::runtime | diff --git a/rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/ExtractionConsistency.expected deleted file mode 100644 index 133438cef21c..000000000000 --- a/rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/ExtractionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -extractionWarning -| main.rs:1:1:1:1 | macro expansion failed for 'panic' | diff --git a/rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 63b00cc6d41b..000000000000 --- a/rust/ql/test/query-tests/security/CWE-079/warp/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,3 +0,0 @@ -multiplePathResolutions -| main.rs:3:3:3:13 | ...::main | -| main.rs:14:5:14:8 | ...::runtime | diff --git a/rust/ql/test/query-tests/security/CWE-295/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-295/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index e4c71e75287c..000000000000 --- a/rust/ql/test/query-tests/security/CWE-295/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,6 +0,0 @@ -multipleResolvedTargets -| main.rs:36:16:36:41 | ...::builder(...) | -| main.rs:46:16:46:44 | ...::new(...) | -multiplePathResolutions -| main.rs:36:16:36:30 | ...::Client | -| main.rs:46:16:46:37 | ...::ClientBuilder | diff --git a/rust/ql/test/query-tests/security/CWE-311/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-311/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index e0fbd93fd64a..000000000000 --- a/rust/ql/test/query-tests/security/CWE-311/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,12 +0,0 @@ -multipleResolvedTargets -| main.rs:20:18:20:39 | ...::new(...) | -| main.rs:21:5:21:20 | client.post(...) | -| main.rs:21:5:21:33 | ... .body(...) | -| main.rs:21:5:21:40 | ... .send() | -| main.rs:34:18:34:39 | ...::new(...) | -| main.rs:35:5:35:36 | client.request(...) | -| main.rs:35:5:35:49 | ... .body(...) | -| main.rs:35:5:35:56 | ... .send() | -multiplePathResolutions -| main.rs:20:18:20:32 | ...::Client | -| main.rs:34:18:34:32 | ...::Client | diff --git a/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/ExtractionConsistency.expected deleted file mode 100644 index e63e6374ba5b..000000000000 --- a/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/ExtractionConsistency.expected +++ /dev/null @@ -1,22 +0,0 @@ -extractionWarning -| test.rs:16:10:19:5 | macro expansion failed for 'compile_error' | -| test.rs:23:17:24:9 | macro expansion failed for 'compile_error' | -| test.rs:28:3:28:12 | macro expansion failed for 'compile_error' | -| test.rs:33:3:33:12 | macro expansion failed for 'compile_error' | -| test.rs:39:3:39:12 | macro expansion failed for 'compile_error' | -| test.rs:50:3:50:6 | macro expansion failed for 'compile_error' | -| test.rs:55:3:55:6 | macro expansion failed for 'compile_error' | -| test.rs:60:3:60:6 | macro expansion failed for 'compile_error' | -| test.rs:65:3:65:6 | macro expansion failed for 'compile_error' | -| test.rs:73:3:73:6 | macro expansion failed for 'compile_error' | -| test.rs:78:3:78:6 | macro expansion failed for 'compile_error' | -| test.rs:87:3:87:6 | macro expansion failed for 'compile_error' | -| test.rs:94:3:94:6 | macro expansion failed for 'compile_error' | -| test.rs:99:3:99:12 | macro expansion failed for 'compile_error' | -| test.rs:104:3:104:12 | macro expansion failed for 'compile_error' | -| test.rs:112:3:112:12 | macro expansion failed for 'compile_error' | -| test.rs:128:3:128:6 | macro expansion failed for 'compile_error' | -| test.rs:139:3:139:6 | macro expansion failed for 'compile_error' | -| test.rs:144:3:144:6 | macro expansion failed for 'compile_error' | -| test.rs:150:3:150:6 | macro expansion failed for 'compile_error' | -| test.rs:168:3:168:6 | macro expansion failed for 'compile_error' | 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 deleted file mode 100644 index 632d59f91e9e..000000000000 --- a/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,4 +0,0 @@ -multiplePathResolutions -| test.rs:14:3:14:12 | harmless1_3___rust_dtor___dtor | -| test.rs:33:3:33:12 | bad1_2___rust_dtor___dtor | -| test.rs:39:3:39:12 | bad1_3___rust_dtor___dtor | 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 deleted file mode 100644 index 8fdcfa97d675..000000000000 --- a/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,9 +0,0 @@ -multipleResolvedTargets -| main.rs:218:14:218:30 | ...::malloc(...) | -| main.rs:219:13:219:27 | ...::malloc(...) | -| main.rs:220:13:220:37 | ...::aligned_alloc(...) | -| main.rs:221:13:221:37 | ...::aligned_alloc(...) | -| main.rs:222:13:222:31 | ...::calloc(...) | -| main.rs:223:13:223:55 | ...::calloc(...) | -| main.rs:224:13:224:32 | ...::realloc(...) | -| main.rs:331:13:331:27 | ...::malloc(...) | diff --git a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected index dca47ef0cdc2..477dbee0e0f4 100644 --- a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected +++ b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected @@ -42,21 +42,16 @@ | main.rs:210:40:210:50 | grow_zeroed | main.rs:339:13:339:26 | ...::args | main.rs:210:40:210:50 | grow_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:213:36:213:41 | shrink | main.rs:339:13:339:26 | ...::args | main.rs:213:36:213:41 | shrink | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:219:13:219:24 | ...::malloc | main.rs:339:13:339:26 | ...::args | main.rs:219:13:219:24 | ...::malloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:219:13:219:24 | ...::malloc | main.rs:339:13:339:26 | ...::args | main.rs:219:13:219:24 | ...::malloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:220:13:220:31 | ...::aligned_alloc | main.rs:339:13:339:26 | ...::args | main.rs:220:13:220:31 | ...::aligned_alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:222:13:222:24 | ...::calloc | main.rs:339:13:339:26 | ...::args | main.rs:222:13:222:24 | ...::calloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:222:13:222:24 | ...::calloc | main.rs:339:13:339:26 | ...::args | main.rs:222:13:222:24 | ...::calloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:223:13:223:24 | ...::calloc | main.rs:339:13:339:26 | ...::args | main.rs:223:13:223:24 | ...::calloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:223:13:223:24 | ...::calloc | main.rs:339:13:339:26 | ...::args | main.rs:223:13:223:24 | ...::calloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:224:13:224:25 | ...::realloc | main.rs:339:13:339:26 | ...::args | main.rs:224:13:224:25 | ...::realloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:224:13:224:25 | ...::realloc | main.rs:339:13:339:26 | ...::args | main.rs:224:13:224:25 | ...::realloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:228:13:228:41 | ...::try_with_capacity | main.rs:339:13:339:26 | ...::args | main.rs:228:13:228:41 | ...::try_with_capacity | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:229:13:229:37 | ...::with_capacity | main.rs:339:13:339:26 | ...::args | main.rs:229:13:229:37 | ...::with_capacity | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:230:13:230:44 | ...::try_with_capacity_in | main.rs:339:13:339:26 | ...::args | main.rs:230:13:230:44 | ...::try_with_capacity_in | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:231:13:231:40 | ...::with_capacity_in | main.rs:339:13:339:26 | ...::args | main.rs:231:13:231:40 | ...::with_capacity_in | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | | main.rs:287:22:287:38 | ...::alloc | main.rs:311:25:311:38 | ...::args | main.rs:287:22:287:38 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:311:25:311:38 | ...::args | user-provided value | | main.rs:331:13:331:24 | ...::malloc | main.rs:339:13:339:26 | ...::args | main.rs:331:13:331:24 | ...::malloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:331:13:331:24 | ...::malloc | main.rs:339:13:339:26 | ...::args | main.rs:331:13:331:24 | ...::malloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | edges | main.rs:12:36:12:43 | ...: usize | main.rs:18:41:18:41 | v | provenance | | | main.rs:18:41:18:41 | v | main.rs:18:13:18:31 | ...::realloc | provenance | MaD:17 Sink:MaD:17 | @@ -65,43 +60,43 @@ edges | main.rs:18:41:18:41 | v | main.rs:32:60:32:60 | v | provenance | | | main.rs:18:41:18:41 | v | main.rs:35:49:35:49 | v | provenance | | | main.rs:20:9:20:10 | l2 | main.rs:21:31:21:32 | l2 | provenance | | -| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:44 | +| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:41 | | main.rs:20:14:20:63 | ... .unwrap() | main.rs:20:9:20:10 | l2 | provenance | | -| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:36 | +| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:33 | | main.rs:21:31:21:32 | l2 | main.rs:21:13:21:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:21:31:21:32 | l2 | main.rs:22:31:22:32 | l2 | provenance | | | main.rs:21:31:21:32 | l2 | main.rs:23:31:23:32 | l2 | provenance | | | main.rs:21:31:21:32 | l2 | main.rs:24:38:24:39 | l2 | provenance | | -| main.rs:22:31:22:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:30 | -| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:44 | +| main.rs:22:31:22:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:27 | +| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:41 | | main.rs:22:31:22:53 | ... .unwrap() | main.rs:22:13:22:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:23:31:23:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:30 | -| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:44 | -| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:38 | +| main.rs:23:31:23:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:27 | +| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:41 | +| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:35 | | main.rs:23:31:23:68 | ... .pad_to_align() | main.rs:23:13:23:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:24:38:24:39 | l2 | main.rs:24:13:24:36 | ...::alloc_zeroed | provenance | MaD:16 Sink:MaD:16 | | main.rs:29:9:29:10 | l4 | main.rs:30:31:30:32 | l4 | provenance | | | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | main.rs:29:9:29:10 | l4 | provenance | | -| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:37 | +| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:34 | | main.rs:30:31:30:32 | l4 | main.rs:30:13:30:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:32:9:32:10 | l5 | main.rs:33:31:33:32 | l5 | provenance | | | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | main.rs:32:9:32:10 | l5 | provenance | | -| main.rs:32:60:32:60 | v | main.rs:32:60:32:89 | ... * ... | provenance | MaD:28 | -| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:37 | +| main.rs:32:60:32:60 | v | main.rs:32:60:32:89 | ... * ... | provenance | MaD:25 | +| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:34 | | main.rs:33:31:33:32 | l5 | main.rs:33:13:33:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:35:9:35:10 | s6 | main.rs:36:60:36:61 | s6 | provenance | | | main.rs:35:14:35:54 | ... + ... | main.rs:35:9:35:10 | s6 | provenance | | -| main.rs:35:15:35:49 | ... * ... | main.rs:35:14:35:54 | ... + ... | provenance | MaD:27 | -| main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:28 | +| main.rs:35:15:35:49 | ... * ... | main.rs:35:14:35:54 | ... + ... | provenance | MaD:24 | +| main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:25 | | main.rs:36:9:36:10 | l6 | main.rs:37:31:37:32 | l6 | provenance | | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | main.rs:36:9:36:10 | l6 | provenance | | -| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:37 | +| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:34 | | main.rs:37:31:37:32 | l6 | main.rs:37:13:37:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:37:31:37:32 | l6 | main.rs:39:60:39:61 | l6 | provenance | | | main.rs:39:9:39:10 | l7 | main.rs:40:31:40:32 | l7 | provenance | | | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | main.rs:39:9:39:10 | l7 | provenance | | -| main.rs:39:60:39:61 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:41 | -| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:37 | +| main.rs:39:60:39:61 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:38 | +| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:34 | | main.rs:40:31:40:32 | l7 | main.rs:40:13:40:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:43:44:43:51 | ...: usize | main.rs:50:41:50:41 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:51:41:51:41 | v | provenance | | @@ -109,27 +104,27 @@ edges | main.rs:43:44:43:51 | ...: usize | main.rs:54:48:54:48 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:58:34:58:34 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:67:46:67:46 | v | provenance | | -| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:44 | +| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:41 | | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | main.rs:50:31:50:53 | ... .0 | provenance | | | main.rs:50:31:50:53 | ... .0 | main.rs:50:13:50:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:39 | -| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:44 | +| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:36 | +| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:41 | | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | main.rs:51:31:51:57 | ... .0 | provenance | | | main.rs:51:31:51:57 | ... .0 | main.rs:51:13:51:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:51:41:51:41 | v | main.rs:51:41:51:45 | ... + ... | provenance | MaD:27 | -| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:39 | -| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:44 | +| main.rs:51:41:51:41 | v | main.rs:51:41:51:45 | ... + ... | provenance | MaD:24 | +| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:36 | +| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:41 | | main.rs:53:31:53:58 | ... .unwrap() | main.rs:53:13:53:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:40 | -| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:44 | +| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:37 | +| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:41 | | main.rs:54:31:54:63 | ... .unwrap() | main.rs:54:13:54:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:54:48:54:48 | v | main.rs:54:48:54:53 | ... * ... | provenance | MaD:28 | -| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:40 | +| main.rs:54:48:54:48 | v | main.rs:54:48:54:53 | ... * ... | provenance | MaD:25 | +| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:37 | | main.rs:58:9:58:20 | TuplePat [tuple.0] | main.rs:58:10:58:11 | k1 | provenance | | | main.rs:58:10:58:11 | k1 | main.rs:59:31:59:32 | k1 | provenance | | -| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:43 | +| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:40 | | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | main.rs:58:9:58:20 | TuplePat [tuple.0] | provenance | | -| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:39 | +| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:36 | | main.rs:59:31:59:32 | k1 | main.rs:59:13:59:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:59:31:59:32 | k1 | main.rs:60:34:60:35 | k1 | provenance | | | main.rs:59:31:59:32 | k1 | main.rs:62:24:62:25 | k1 | provenance | | @@ -137,32 +132,32 @@ edges | main.rs:59:31:59:32 | k1 | main.rs:65:31:65:32 | k1 | provenance | | | main.rs:60:9:60:20 | TuplePat [tuple.0] | main.rs:60:10:60:11 | k2 | provenance | | | main.rs:60:10:60:11 | k2 | main.rs:61:31:61:32 | k2 | provenance | | -| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:44 | +| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:41 | | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | main.rs:60:9:60:20 | TuplePat [tuple.0] | provenance | | -| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:32 | +| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:29 | | main.rs:61:31:61:32 | k2 | main.rs:61:13:61:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:62:9:62:20 | TuplePat [tuple.0] | main.rs:62:10:62:11 | k3 | provenance | | | main.rs:62:10:62:11 | k3 | main.rs:63:31:63:32 | k3 | provenance | | -| main.rs:62:24:62:25 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:33 | -| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:44 | +| main.rs:62:24:62:25 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:30 | +| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:41 | | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | main.rs:62:9:62:20 | TuplePat [tuple.0] | provenance | | | main.rs:63:31:63:32 | k3 | main.rs:63:13:63:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:44 | +| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:41 | | main.rs:64:31:64:59 | ... .unwrap() | main.rs:64:13:64:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:34 | -| main.rs:65:31:65:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:35 | -| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:44 | +| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:31 | +| main.rs:65:31:65:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:32 | +| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:41 | | main.rs:65:31:65:59 | ... .unwrap() | main.rs:65:13:65:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:67:9:67:10 | l4 | main.rs:68:31:68:32 | l4 | provenance | | -| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:44 | +| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:41 | | main.rs:67:14:67:56 | ... .unwrap() | main.rs:67:9:67:10 | l4 | provenance | | -| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | +| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | | main.rs:68:31:68:32 | l4 | main.rs:68:13:68:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:86:35:86:42 | ...: usize | main.rs:87:54:87:54 | v | provenance | | | main.rs:87:9:87:14 | layout | main.rs:88:31:88:36 | layout | provenance | | -| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:44 | +| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:41 | | main.rs:87:18:87:67 | ... .unwrap() | main.rs:87:9:87:14 | layout | provenance | | -| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:36 | +| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:33 | | main.rs:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:91:38:91:45 | ...: usize | main.rs:92:47:92:47 | v | provenance | | | main.rs:91:38:91:45 | ...: usize | main.rs:101:51:101:51 | v | provenance | | @@ -173,16 +168,16 @@ edges | main.rs:91:38:91:45 | ...: usize | main.rs:161:55:161:55 | v | provenance | | | main.rs:92:9:92:10 | l1 | main.rs:96:35:96:36 | l1 | provenance | | | main.rs:92:9:92:10 | l1 | main.rs:102:35:102:36 | l1 | provenance | | -| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:44 | +| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:41 | | main.rs:92:14:92:57 | ... .unwrap() | main.rs:92:9:92:10 | l1 | provenance | | -| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | +| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | | main.rs:96:35:96:36 | l1 | main.rs:96:17:96:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:96:35:96:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | | main.rs:96:35:96:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | | main.rs:101:13:101:14 | l3 | main.rs:103:35:103:36 | l3 | provenance | | -| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:44 | +| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:41 | | main.rs:101:18:101:61 | ... .unwrap() | main.rs:101:13:101:14 | l3 | provenance | | -| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | +| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | | main.rs:102:35:102:36 | l1 | main.rs:102:17:102:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:102:35:102:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | | main.rs:102:35:102:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | @@ -193,28 +188,28 @@ edges | main.rs:111:35:111:36 | l1 | main.rs:111:17:111:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:111:35:111:36 | l1 | main.rs:146:35:146:36 | l1 | provenance | | | main.rs:145:13:145:14 | l9 | main.rs:148:35:148:36 | l9 | provenance | | -| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:44 | +| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:41 | | main.rs:145:18:145:61 | ... .unwrap() | main.rs:145:13:145:14 | l9 | provenance | | -| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | +| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | | main.rs:146:35:146:36 | l1 | main.rs:146:17:146:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:146:35:146:36 | l1 | main.rs:177:31:177:32 | l1 | provenance | | | main.rs:148:35:148:36 | l9 | main.rs:148:17:148:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:151:9:151:11 | l10 | main.rs:152:31:152:33 | l10 | provenance | | -| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:44 | +| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:41 | | main.rs:151:15:151:78 | ... .unwrap() | main.rs:151:9:151:11 | l10 | provenance | | -| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | -| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:46 | +| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | +| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:43 | | main.rs:152:31:152:33 | l10 | main.rs:152:13:152:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:154:9:154:11 | l11 | main.rs:155:31:155:33 | l11 | provenance | | -| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:44 | +| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:41 | | main.rs:154:15:154:78 | ... .unwrap() | main.rs:154:9:154:11 | l11 | provenance | | -| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | -| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:45 | +| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | +| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:42 | | main.rs:155:31:155:33 | l11 | main.rs:155:13:155:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:161:13:161:15 | l13 | main.rs:162:35:162:37 | l13 | provenance | | -| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:44 | +| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:41 | | main.rs:161:19:161:68 | ... .unwrap() | main.rs:161:13:161:15 | l13 | provenance | | -| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:36 | +| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:33 | | main.rs:162:35:162:37 | l13 | main.rs:162:17:162:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:162:35:162:37 | l13 | main.rs:169:35:169:37 | l13 | provenance | | | main.rs:169:35:169:37 | l13 | main.rs:169:17:169:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | @@ -222,9 +217,9 @@ edges | main.rs:183:29:183:36 | ...: usize | main.rs:192:46:192:46 | v | provenance | | | main.rs:183:29:183:36 | ...: usize | main.rs:202:48:202:48 | v | provenance | | | main.rs:192:9:192:10 | l2 | main.rs:193:38:193:39 | l2 | provenance | | -| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:44 | +| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:41 | | main.rs:192:14:192:56 | ... .unwrap() | main.rs:192:9:192:10 | l2 | provenance | | -| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | +| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | | main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:12 Sink:MaD:12 | | main.rs:193:38:193:39 | l2 | main.rs:194:45:194:46 | l2 | provenance | | | main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:13 Sink:MaD:13 | @@ -245,18 +240,14 @@ edges | main.rs:213:51:213:52 | l2 | main.rs:213:36:213:41 | shrink | provenance | MaD:11 Sink:MaD:11 | | main.rs:217:27:217:34 | ...: usize | main.rs:219:26:219:26 | v | provenance | | | main.rs:219:26:219:26 | v | main.rs:219:13:219:24 | ...::malloc | provenance | MaD:20 Sink:MaD:20 | -| main.rs:219:26:219:26 | v | main.rs:219:13:219:24 | ...::malloc | provenance | MaD:23 Sink:MaD:23 | | main.rs:219:26:219:26 | v | main.rs:220:36:220:36 | v | provenance | | | main.rs:220:36:220:36 | v | main.rs:220:13:220:31 | ...::aligned_alloc | provenance | MaD:18 Sink:MaD:18 | | main.rs:220:36:220:36 | v | main.rs:222:30:222:30 | v | provenance | | | main.rs:222:30:222:30 | v | main.rs:222:13:222:24 | ...::calloc | provenance | MaD:19 Sink:MaD:19 | -| main.rs:222:30:222:30 | v | main.rs:222:13:222:24 | ...::calloc | provenance | MaD:22 Sink:MaD:22 | | main.rs:222:30:222:30 | v | main.rs:223:26:223:26 | v | provenance | | | main.rs:223:26:223:26 | v | main.rs:223:13:223:24 | ...::calloc | provenance | MaD:19 Sink:MaD:19 | -| main.rs:223:26:223:26 | v | main.rs:223:13:223:24 | ...::calloc | provenance | MaD:22 Sink:MaD:22 | | main.rs:223:26:223:26 | v | main.rs:224:31:224:31 | v | provenance | | | main.rs:224:31:224:31 | v | main.rs:224:13:224:25 | ...::realloc | provenance | MaD:21 Sink:MaD:21 | -| main.rs:224:31:224:31 | v | main.rs:224:13:224:25 | ...::realloc | provenance | MaD:24 Sink:MaD:24 | | main.rs:227:24:227:31 | ...: usize | main.rs:228:43:228:43 | v | provenance | | | main.rs:228:43:228:43 | v | main.rs:228:13:228:41 | ...::try_with_capacity | provenance | MaD:3 Sink:MaD:3 | | main.rs:228:43:228:43 | v | main.rs:229:39:229:39 | v | provenance | | @@ -267,22 +258,21 @@ edges | main.rs:231:42:231:42 | v | main.rs:231:13:231:40 | ...::with_capacity_in | provenance | MaD:6 Sink:MaD:6 | | main.rs:282:24:282:41 | ...: String | main.rs:283:21:283:30 | user_input | provenance | | | main.rs:283:9:283:17 | num_bytes | main.rs:285:54:285:62 | num_bytes | provenance | | -| main.rs:283:21:283:30 | user_input | main.rs:283:21:283:47 | user_input.parse() [Ok] | provenance | MaD:29 | +| main.rs:283:21:283:30 | user_input | main.rs:283:21:283:47 | user_input.parse() [Ok] | provenance | MaD:26 | | main.rs:283:21:283:47 | user_input.parse() [Ok] | main.rs:283:21:283:48 | TryExpr | provenance | | -| main.rs:283:21:283:48 | TryExpr | main.rs:283:21:283:77 | ... * ... | provenance | MaD:28 | +| main.rs:283:21:283:48 | TryExpr | main.rs:283:21:283:77 | ... * ... | provenance | MaD:25 | | main.rs:283:21:283:77 | ... * ... | main.rs:283:9:283:17 | num_bytes | provenance | | | main.rs:285:9:285:14 | layout | main.rs:287:40:287:45 | layout | provenance | | -| main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | main.rs:285:18:285:75 | ... .unwrap() | provenance | MaD:44 | +| main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | main.rs:285:18:285:75 | ... .unwrap() | provenance | MaD:41 | | main.rs:285:18:285:75 | ... .unwrap() | main.rs:285:9:285:14 | layout | provenance | | -| main.rs:285:54:285:62 | num_bytes | main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | provenance | MaD:36 | +| main.rs:285:54:285:62 | num_bytes | main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | provenance | MaD:33 | | main.rs:287:40:287:45 | layout | main.rs:287:22:287:38 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:311:25:311:38 | ...::args | main.rs:311:25:311:40 | ...::args(...) [element] | provenance | Src:MaD:25 | -| main.rs:311:25:311:40 | ...::args(...) [element] | main.rs:311:25:311:47 | ... .nth(...) [Some] | provenance | MaD:26 | -| main.rs:311:25:311:47 | ... .nth(...) [Some] | main.rs:311:25:311:74 | ... .unwrap_or(...) | provenance | MaD:42 | +| main.rs:311:25:311:38 | ...::args | main.rs:311:25:311:40 | ...::args(...) [element] | provenance | Src:MaD:22 | +| main.rs:311:25:311:40 | ...::args(...) [element] | main.rs:311:25:311:47 | ... .nth(...) [Some] | provenance | MaD:23 | +| main.rs:311:25:311:47 | ... .nth(...) [Some] | main.rs:311:25:311:74 | ... .unwrap_or(...) | provenance | MaD:39 | | main.rs:311:25:311:74 | ... .unwrap_or(...) | main.rs:282:24:282:41 | ...: String | provenance | | | main.rs:317:26:317:33 | ...: usize | main.rs:331:26:331:26 | a | provenance | | | main.rs:331:26:331:26 | a | main.rs:331:13:331:24 | ...::malloc | provenance | MaD:20 Sink:MaD:20 | -| main.rs:331:26:331:26 | a | main.rs:331:13:331:24 | ...::malloc | provenance | MaD:23 Sink:MaD:23 | | main.rs:339:9:339:9 | v | main.rs:342:34:342:34 | v | provenance | | | main.rs:339:9:339:9 | v | main.rs:343:42:343:42 | v | provenance | | | main.rs:339:9:339:9 | v | main.rs:344:36:344:36 | v | provenance | | @@ -290,11 +280,11 @@ edges | main.rs:339:9:339:9 | v | main.rs:346:25:346:25 | v | provenance | | | main.rs:339:9:339:9 | v | main.rs:347:22:347:22 | v | provenance | | | main.rs:339:9:339:9 | v | main.rs:349:24:349:24 | v | provenance | | -| main.rs:339:13:339:26 | ...::args | main.rs:339:13:339:28 | ...::args(...) [element] | provenance | Src:MaD:25 | -| main.rs:339:13:339:28 | ...::args(...) [element] | main.rs:339:13:339:35 | ... .nth(...) [Some] | provenance | MaD:26 | -| main.rs:339:13:339:35 | ... .nth(...) [Some] | main.rs:339:13:339:65 | ... .unwrap_or(...) | provenance | MaD:42 | -| main.rs:339:13:339:65 | ... .unwrap_or(...) | main.rs:339:13:339:82 | ... .parse() [Ok] | provenance | MaD:29 | -| main.rs:339:13:339:82 | ... .parse() [Ok] | main.rs:339:13:339:91 | ... .unwrap() | provenance | MaD:44 | +| main.rs:339:13:339:26 | ...::args | main.rs:339:13:339:28 | ...::args(...) [element] | provenance | Src:MaD:22 | +| main.rs:339:13:339:28 | ...::args(...) [element] | main.rs:339:13:339:35 | ... .nth(...) [Some] | provenance | MaD:23 | +| main.rs:339:13:339:35 | ... .nth(...) [Some] | main.rs:339:13:339:65 | ... .unwrap_or(...) | provenance | MaD:39 | +| main.rs:339:13:339:65 | ... .unwrap_or(...) | main.rs:339:13:339:82 | ... .parse() [Ok] | provenance | MaD:26 | +| main.rs:339:13:339:82 | ... .parse() [Ok] | main.rs:339:13:339:91 | ... .unwrap() | provenance | MaD:41 | | main.rs:339:13:339:91 | ... .unwrap() | main.rs:339:9:339:9 | v | provenance | | | main.rs:342:34:342:34 | v | main.rs:12:36:12:43 | ...: usize | provenance | | | main.rs:343:42:343:42 | v | main.rs:43:44:43:51 | ...: usize | provenance | | @@ -325,31 +315,28 @@ models | 19 | Sink: libc::unix::calloc; Argument[0,1]; alloc-size | | 20 | Sink: libc::unix::malloc; Argument[0]; alloc-size | | 21 | Sink: libc::unix::realloc; Argument[1]; alloc-size | -| 22 | Sink: libc::windows::calloc; Argument[0,1]; alloc-size | -| 23 | Sink: libc::windows::malloc; Argument[0]; alloc-size | -| 24 | Sink: libc::windows::realloc; Argument[1]; alloc-size | -| 25 | Source: std::env::args; ReturnValue.Element; commandargs | -| 26 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 27 | Summary: <_ as core::ops::arith::Add>::add; Argument[self,0]; ReturnValue; taint | -| 28 | Summary: <_ as core::ops::arith::Mul>::mul; Argument[self,0]; ReturnValue; taint | -| 29 | Summary: ::deref; Argument[self]; ReturnValue; value | -| 30 | Summary: ::align_to; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 31 | Summary: ::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 32 | Summary: ::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 33 | Summary: ::extend; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 34 | Summary: ::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 35 | Summary: ::extend_packed; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 36 | Summary: ::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 37 | Summary: ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | -| 38 | Summary: ::pad_to_align; Argument[self].Reference; ReturnValue; taint | -| 39 | Summary: ::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 40 | Summary: ::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 41 | Summary: ::size; Argument[self].Reference; ReturnValue; taint | -| 42 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 43 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 44 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 45 | Summary: core::cmp::max; Argument[0]; ReturnValue; value | -| 46 | Summary: core::cmp::min; Argument[0]; ReturnValue; value | +| 22 | Source: std::env::args; ReturnValue.Element; commandargs | +| 23 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 24 | Summary: <_ as core::ops::arith::Add>::add; Argument[self,0]; ReturnValue; taint | +| 25 | Summary: <_ as core::ops::arith::Mul>::mul; Argument[self,0]; ReturnValue; taint | +| 26 | Summary: ::deref; Argument[self]; ReturnValue; value | +| 27 | Summary: ::align_to; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 28 | Summary: ::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 29 | Summary: ::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 30 | Summary: ::extend; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 31 | Summary: ::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 32 | Summary: ::extend_packed; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 33 | Summary: ::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 34 | Summary: ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | +| 35 | Summary: ::pad_to_align; Argument[self].Reference; ReturnValue; taint | +| 36 | Summary: ::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 37 | Summary: ::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 38 | Summary: ::size; Argument[self].Reference; ReturnValue; taint | +| 39 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 40 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 41 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 42 | Summary: core::cmp::max; Argument[0]; ReturnValue; value | +| 43 | Summary: core::cmp::min; Argument[0]; ReturnValue; value | nodes | main.rs:12:36:12:43 | ...: usize | semmle.label | ...: usize | | main.rs:18:13:18:31 | ...::realloc | semmle.label | ...::realloc | @@ -539,18 +526,14 @@ nodes | main.rs:213:51:213:52 | l2 | semmle.label | l2 | | main.rs:217:27:217:34 | ...: usize | semmle.label | ...: usize | | main.rs:219:13:219:24 | ...::malloc | semmle.label | ...::malloc | -| main.rs:219:13:219:24 | ...::malloc | semmle.label | ...::malloc | | main.rs:219:26:219:26 | v | semmle.label | v | | main.rs:220:13:220:31 | ...::aligned_alloc | semmle.label | ...::aligned_alloc | | main.rs:220:36:220:36 | v | semmle.label | v | | main.rs:222:13:222:24 | ...::calloc | semmle.label | ...::calloc | -| main.rs:222:13:222:24 | ...::calloc | semmle.label | ...::calloc | | main.rs:222:30:222:30 | v | semmle.label | v | | main.rs:223:13:223:24 | ...::calloc | semmle.label | ...::calloc | -| main.rs:223:13:223:24 | ...::calloc | semmle.label | ...::calloc | | main.rs:223:26:223:26 | v | semmle.label | v | | main.rs:224:13:224:25 | ...::realloc | semmle.label | ...::realloc | -| main.rs:224:13:224:25 | ...::realloc | semmle.label | ...::realloc | | main.rs:224:31:224:31 | v | semmle.label | v | | main.rs:227:24:227:31 | ...: usize | semmle.label | ...: usize | | main.rs:228:13:228:41 | ...::try_with_capacity | semmle.label | ...::try_with_capacity | @@ -579,7 +562,6 @@ nodes | main.rs:311:25:311:74 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | | main.rs:317:26:317:33 | ...: usize | semmle.label | ...: usize | | main.rs:331:13:331:24 | ...::malloc | semmle.label | ...::malloc | -| main.rs:331:13:331:24 | ...::malloc | semmle.label | ...::malloc | | main.rs:331:26:331:26 | a | semmle.label | a | | main.rs:339:9:339:9 | v | semmle.label | v | | main.rs:339:13:339:26 | ...::args | semmle.label | ...::args | diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected index 0993171ab96a..d3b5456063ff 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected @@ -9,7 +9,6 @@ | deallocation.rs:90:7:90:8 | m2 | deallocation.rs:70:3:70:21 | ...::dealloc | deallocation.rs:90:7:90:8 | m2 | This operation dereferences a pointer that may be $@. | deallocation.rs:70:3:70:21 | ...::dealloc | invalid | | deallocation.rs:95:5:95:31 | ...::write::<...> | deallocation.rs:70:3:70:21 | ...::dealloc | deallocation.rs:95:5:95:31 | ...::write::<...> | This operation dereferences a pointer that may be $@. | deallocation.rs:70:3:70:21 | ...::dealloc | invalid | | deallocation.rs:115:13:115:18 | my_ptr | deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:115:13:115:18 | my_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:112:3:112:12 | ...::free | invalid | -| deallocation.rs:115:13:115:18 | my_ptr | deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:115:13:115:18 | my_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:112:3:112:12 | ...::free | invalid | | deallocation.rs:130:14:130:15 | p1 | deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:130:14:130:15 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:123:23:123:40 | ...::dangling | invalid | | deallocation.rs:131:14:131:15 | p2 | deallocation.rs:124:21:124:42 | ...::dangling_mut | deallocation.rs:131:14:131:15 | p2 | This operation dereferences a pointer that may be $@. | deallocation.rs:124:21:124:42 | ...::dangling_mut | invalid | | deallocation.rs:132:14:132:15 | p3 | deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:132:14:132:15 | p3 | This operation dereferences a pointer that may be $@. | deallocation.rs:125:23:125:36 | ...::null | invalid | @@ -44,7 +43,6 @@ edges | deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:95:33:95:34 | m2 | provenance | | | deallocation.rs:95:33:95:34 | m2 | deallocation.rs:95:5:95:31 | ...::write::<...> | provenance | MaD:2 Sink:MaD:2 | | deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | provenance | Src:MaD:9 MaD:9 | -| deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | provenance | Src:MaD:10 MaD:10 | | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | deallocation.rs:115:13:115:18 | my_ptr | provenance | | | deallocation.rs:123:6:123:7 | p1 | deallocation.rs:130:14:130:15 | p1 | provenance | | | deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:123:23:123:42 | ...::dangling(...) | provenance | Src:MaD:4 MaD:4 | @@ -94,7 +92,6 @@ models | 7 | Source: core::ptr::null; ReturnValue; pointer-invalidate | | 8 | Source: core::ptr::null_mut; ReturnValue; pointer-invalidate | | 9 | Source: libc::unix::free; Argument[0]; pointer-invalidate | -| 10 | Source: libc::windows::free; Argument[0]; pointer-invalidate | nodes | deallocation.rs:20:3:20:21 | ...::dealloc | semmle.label | ...::dealloc | | deallocation.rs:20:23:20:24 | [post] m1 | semmle.label | [post] m1 | @@ -113,7 +110,6 @@ nodes | deallocation.rs:95:5:95:31 | ...::write::<...> | semmle.label | ...::write::<...> | | deallocation.rs:95:33:95:34 | m2 | semmle.label | m2 | | deallocation.rs:112:3:112:12 | ...::free | semmle.label | ...::free | -| deallocation.rs:112:3:112:12 | ...::free | semmle.label | ...::free | | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | semmle.label | [post] my_ptr as ... | | deallocation.rs:115:13:115:18 | my_ptr | semmle.label | my_ptr | | deallocation.rs:123:6:123:7 | p1 | semmle.label | p1 | diff --git a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 850ba012c153..000000000000 --- a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,3 +0,0 @@ -multipleResolvedTargets -| deallocation.rs:106:16:106:32 | ...::malloc(...) | -| deallocation.rs:112:3:112:41 | ...::free(...) | diff --git a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index eb6f8590fbdd..000000000000 --- a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,4 +0,0 @@ -multiplePathResolutions -| request_forgery_tests.rs:60:7:60:17 | ...::main | -| request_forgery_tests.rs:64:9:64:11 | ...::runtime | -| request_forgery_tests.rs:79:5:79:18 | ...::runtime | diff --git a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/TypeInferenceConsistency.expected b/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/TypeInferenceConsistency.expected deleted file mode 100644 index b70ece5bb153..000000000000 --- a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/TypeInferenceConsistency.expected +++ /dev/null @@ -1,8 +0,0 @@ -nonUniqueCertainType -| request_forgery_tests.rs:8:24:8:46 | ...::get(...) | dyn(Output).T | -| request_forgery_tests.rs:17:25:17:42 | ...::get(...) | dyn(Output).T | -| request_forgery_tests.rs:21:25:21:42 | ...::get(...) | dyn(Output).T | -| request_forgery_tests.rs:25:25:25:42 | ...::get(...) | dyn(Output).T | -| request_forgery_tests.rs:31:29:31:51 | ...::get(...) | dyn(Output).T | -| request_forgery_tests.rs:37:37:37:59 | ...::get(...) | dyn(Output).T | -| request_forgery_tests.rs:68:28:68:43 | ...::get(...) | dyn(Output).T | From c972bb8632974fc9c928750ee33f2c86abcd2f1c Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 10 Aug 2026 16:15:36 +0200 Subject: [PATCH 059/167] Rust: Revert change in `multipleResolvedTargets` --- rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll | 1 - 1 file changed, 1 deletion(-) diff --git a/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll b/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll index e3416b1480b0..807225d1615a 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll @@ -26,7 +26,6 @@ query predicate multiplePathResolutions(Path p, ItemNode i) { /** Holds if `ie` has multiple resolved targets including `target`. */ query predicate multipleResolvedTargets(InvocationExpr ie, Addressable target) { - not ie.(AstNode).isInMacroExpansion() and target = ie.getResolvedTarget() and strictcount(ie.getResolvedTarget()) > 1 } From 3fd19093876335ad3273ae42422f75967b3b4ddf Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 10 Aug 2026 16:24:37 +0200 Subject: [PATCH 060/167] Rust: Minor cleanup --- .../rust/elements/internal/MetaImpl.qll | 14 +++++++++- .../codeql/rust/internal/PathResolution.qll | 26 +++++-------------- .../security/CWE-696/BadCtorInitialization.ql | 13 +--------- 3 files changed, 20 insertions(+), 33 deletions(-) diff --git a/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll index 295decd667a9..693724e96ae6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll @@ -11,6 +11,8 @@ private import codeql.rust.elements.internal.generated.Meta * be referenced directly. */ module Impl { + private import rust + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A meta item in an attribute. @@ -26,5 +28,15 @@ module Impl { * } * ``` */ - class Meta extends Generated::Meta { } + class Meta extends Generated::Meta { + /** Gets the path, if it exists. */ + pragma[nomagic] + Path getMetaPath() { + result = this.(PathMeta).getPath() + or + result = this.(KeyValueMeta).getPath() + or + result = this.(TokenTreeMeta).getPath() + } + } } diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index a3627dad33c6..15a67ff62679 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -49,20 +49,6 @@ private import codeql.rust.internal.CachedStages private import codeql.rust.frameworks.stdlib.Builtins as Builtins private import codeql.util.Option -/** Gets the path of a `Meta` node, regardless of its concrete subtype. */ -pragma[nomagic] -private Path getMetaPath(Meta m) { - result = m.(PathMeta).getPath() - or - result = m.(KeyValueMeta).getPath() - or - result = m.(TokenTreeMeta).getPath() -} - -/** Gets the expression of a `Meta` node, regardless of its concrete subtype. */ -pragma[nomagic] -private Expr getMetaExpr(Meta m) { result = m.(KeyValueMeta).getExpr() } - private newtype TNamespace = TTypeNamespace() or TValueNamespace() or @@ -277,7 +263,7 @@ abstract class ItemNode extends Locatable { pragma[nomagic] final Attr getAttr(string name) { result = this.getAnAttr() and - getMetaPath(result.getMeta()).(PathExt).isUnqualified(name) + result.getMeta().getMetaPath().(PathExt).isUnqualified(name) } final predicate hasAttr(string name) { exists(this.getAttr(name)) } @@ -1394,7 +1380,7 @@ private predicate fileModuleInlineLate(SourceFile f, string name, Folder folder) */ private Meta getPathAttrMeta(Module m) { result = m.getAnAttr().getMeta() and - getMetaPath(result).getText() = "path" + result.getMetaPath().getText() = "path" } /** @@ -1455,10 +1441,10 @@ private predicate modImportNestedLookup(Module m, ModuleItemNode ancestor, Folde } private predicate pathAttrImport(Folder f, Module m, string relativePath) { - exists(Meta meta | + exists(KeyValueMeta meta | f = m.getFile().getParentContainer() and meta = getPathAttrMeta(m) and - relativePath = getMetaExpr(meta).(LiteralExpr).getTextValue().regexpCapture("\"(.+)\"", 1) + relativePath = meta.getExpr().(LiteralExpr).getTextValue().regexpCapture("\"(.+)\"", 1) ) } @@ -1839,7 +1825,7 @@ private module DollarCrateResolution { or exists(ItemNode type | expansion = type.(TypeItem).getDeriveMacroExpansion(_) and - macroDefPath = getMetaPath(type.getAttr("derive").getMeta()) + macroDefPath = type.getAttr("derive").getMeta().getMetaPath() ) } @@ -1998,7 +1984,7 @@ private predicate pathUsesNamespace(PathExt p, Namespace n) { ( p = any(MacroCall mc).getPath() or - p = getMetaPath(any(Meta m)) + p = any(Meta m).getMetaPath() ) } diff --git a/rust/ql/src/queries/security/CWE-696/BadCtorInitialization.ql b/rust/ql/src/queries/security/CWE-696/BadCtorInitialization.ql index 04a991b9a004..a45f4fb0209d 100644 --- a/rust/ql/src/queries/security/CWE-696/BadCtorInitialization.ql +++ b/rust/ql/src/queries/security/CWE-696/BadCtorInitialization.ql @@ -12,17 +12,6 @@ */ import rust -private import codeql.rust.elements.PathMeta -private import codeql.rust.elements.KeyValueMeta -private import codeql.rust.elements.TokenTreeMeta - -private Path getMetaPath(Meta m) { - result = m.(PathMeta).getPath() - or - result = m.(KeyValueMeta).getPath() - or - result = m.(TokenTreeMeta).getPath() -} /** * A `#[ctor]` or `#[dtor]` attribute, that is, a source for this query. @@ -31,7 +20,7 @@ class CtorAttr extends Attr { string whichAttr; CtorAttr() { - whichAttr = getMetaPath(this.getMeta()).getText() and + whichAttr = this.getMeta().getMetaPath().getText() and whichAttr = ["ctor", "dtor"] } From d3775a2c6683f39f9c9cd147b87258523f06713d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 11 Aug 2026 08:11:11 +0000 Subject: [PATCH 061/167] Initial plan From a658c7742bec431d0ed102893e8e1668583b5066 Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 11 Aug 2026 10:16:46 +0200 Subject: [PATCH 062/167] unified: Add test showing AST mapping error Notice the type error in the output --- .../nested-enum-case-pattern.output | 78 +++++++++++++++++++ .../nested-enum-case-pattern.swift | 2 + 2 files changed, 80 insertions(+) diff --git a/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output index 22d9b86bf996..a85ba8a8cca8 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output +++ b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output @@ -1,6 +1,8 @@ switch event { case let .received(.some(value), timestamp): print(value, timestamp) +case Type.some(let value): + print(value) default: break } @@ -88,6 +90,54 @@ sourceFile calledExpression: declReferenceExpr baseName: identifier "print" + switchCase + label: + switchCaseLabel + colon: : + caseKeyword: case + caseItems: + switchCaseItem + pattern: + expressionPattern + expression: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + labeledExpr + expression: + patternExpr + pattern: + valueBindingPattern + pattern: + identifierPattern + identifier: identifier "value" + bindingSpecifier: let + additionalTrailingClosures: + calledExpression: + memberAccessExpr + period: . + declName: + declReferenceExpr + baseName: identifier "some" + base: + declReferenceExpr + baseName: identifier "Type" + statements: + codeBlockItem + item: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + labeledExpr + expression: + declReferenceExpr + baseName: identifier "value" + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "print" switchCase label: switchDefaultLabel @@ -154,6 +204,34 @@ top_level value: name_expr identifier: identifier "timestamp" + switch_case + pattern: + constructor_pattern + constructor: + member_access_expr + base: + expr_equality_pattern <-- ERROR: The field member_access_expr.base should contain expr_or_type, but got expr_equality_pattern + expr: + name_expr + identifier: identifier "Type" + member: identifier "some" + element: + pattern_element + pattern: + name_pattern + identifier: identifier "value" + body: + block + stmt: + call_expr + callee: + name_expr + identifier: identifier "print" + argument: + argument + value: + name_expr + identifier: identifier "value" switch_case body: block diff --git a/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift index 876d9995aee6..ed1a6b738a4b 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift +++ b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift @@ -1,6 +1,8 @@ switch event { case let .received(.some(value), timestamp): print(value, timestamp) +case Type.some(let value): + print(value) default: break } From c58a096608d9bc9578c1ae4596650ff0d366ea78 Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 11 Aug 2026 10:19:21 +0200 Subject: [PATCH 063/167] unified: Fix translation of callee in constructor pattern --- unified/extractor/src/languages/swift/swift.rs | 7 ++++++- .../swift/control-flow/nested-enum-case-pattern.output | 6 ++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/unified/extractor/src/languages/swift/swift.rs b/unified/extractor/src/languages/swift/swift.rs index e615f07388a9..6396d4addd75 100644 --- a/unified/extractor/src/languages/swift/swift.rs +++ b/unified/extractor/src/languages/swift/swift.rs @@ -655,9 +655,14 @@ fn translation_rules() -> Vec> { (call_expr callee: {callee} argument: {args} argument: (argument value: {tc})) ), rule!( - (functionCallExpr calledExpression: @callee arguments: _* @args) + (functionCallExpr calledExpression: @@rawCallee arguments: _* @args) => expr { + // Always translate the callee in non-pattern context. + let callee = ctx.scoped(|ctx| { + ctx.in_pattern = false; + ctx.translate(rawCallee) + })?; if ctx.in_pattern { tree!((constructor_pattern constructor: {callee} element: {args})) } else { diff --git a/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output index a85ba8a8cca8..66a6f32dab4d 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output +++ b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output @@ -210,10 +210,8 @@ top_level constructor: member_access_expr base: - expr_equality_pattern <-- ERROR: The field member_access_expr.base should contain expr_or_type, but got expr_equality_pattern - expr: - name_expr - identifier: identifier "Type" + name_expr + identifier: identifier "Type" member: identifier "some" element: pattern_element From 925d3e2c219ccd601c727c54822a2d6852fbad7a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 11 Aug 2026 08:24:07 +0000 Subject: [PATCH 064/167] Java: replace non-existent String.valueOf(CharSequence) summary with a synthetic callable for valueOf(Object) on CharSequence arguments Co-authored-by: hvitved <3667920+hvitved@users.noreply.github.com> --- .../2026-08-11-string-valueof-charsequence.md | 4 ++ java/ql/lib/ext/java.lang.model.yml | 1 - .../semmle/code/java/dataflow/FlowSummary.qll | 1 + .../semmle/code/java/frameworks/Strings.qll | 40 +++++++++++++++++++ .../dataflow/string-valueof/A.java | 26 ++++++++++++ .../dataflow/string-valueof/test.expected | 39 ++++++++++++++++++ .../dataflow/string-valueof/test.ql | 3 ++ 7 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 java/ql/lib/change-notes/2026-08-11-string-valueof-charsequence.md create mode 100644 java/ql/lib/semmle/code/java/frameworks/Strings.qll create mode 100644 java/ql/test/library-tests/dataflow/string-valueof/A.java create mode 100644 java/ql/test/library-tests/dataflow/string-valueof/test.expected create mode 100644 java/ql/test/library-tests/dataflow/string-valueof/test.ql diff --git a/java/ql/lib/change-notes/2026-08-11-string-valueof-charsequence.md b/java/ql/lib/change-notes/2026-08-11-string-valueof-charsequence.md new file mode 100644 index 000000000000..51331eb08372 --- /dev/null +++ b/java/ql/lib/change-notes/2026-08-11-string-valueof-charsequence.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Removed the summary model for `String.valueOf(CharSequence)`, which does not exist. Instead, taint is now propagated through calls to `String.valueOf(Object)` when the argument is a `CharSequence`, for example a `String` or a `StringBuilder`. diff --git a/java/ql/lib/ext/java.lang.model.yml b/java/ql/lib/ext/java.lang.model.yml index 9e3d9e8cee54..d613c6fe8f5b 100644 --- a/java/ql/lib/ext/java.lang.model.yml +++ b/java/ql/lib/ext/java.lang.model.yml @@ -134,7 +134,6 @@ extensions: - ["java.lang", "String", False, "valueOf", "(char)", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["java.lang", "String", False, "valueOf", "(char[])", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["java.lang", "String", False, "valueOf", "(char[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["java.lang", "String", False, "valueOf", "(CharSequence)", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["java.lang", "StringBuffer", True, "StringBuffer", "(CharSequence)", "", "Argument[0]", "Argument[this]", "taint", "manual"] - ["java.lang", "StringBuffer", True, "StringBuffer", "(String)", "", "Argument[0]", "Argument[this]", "taint", "manual"] - ["java.lang", "StringBuilder", True, "StringBuilder", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] diff --git a/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll b/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll index b88db0272cea..ff281b61511c 100644 --- a/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll +++ b/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll @@ -44,6 +44,7 @@ private module SyntheticCallables { private import semmle.code.java.dispatch.WrappedInvocation private import semmle.code.java.frameworks.android.Intent private import semmle.code.java.frameworks.Stream + private import semmle.code.java.frameworks.Strings } private newtype TSummarizedCallableBase = diff --git a/java/ql/lib/semmle/code/java/frameworks/Strings.qll b/java/ql/lib/semmle/code/java/frameworks/Strings.qll new file mode 100644 index 000000000000..4b8600ab3ac3 --- /dev/null +++ b/java/ql/lib/semmle/code/java/frameworks/Strings.qll @@ -0,0 +1,40 @@ +/** Definitions related to `java.lang.String`. */ +overlay[local?] +module; + +private import java +private import semmle.code.java.dataflow.FlowSummary + +/** + * A call to `String.valueOf(Object)` where the argument is a `CharSequence`, + * for example a `String` or a `StringBuilder`. + * + * Such a call is equivalent to calling `toString()` on the argument, which for + * a `CharSequence` is guaranteed to yield a string containing the characters of + * the argument, so taint is propagated. This is in contrast to `valueOf(Object)` + * calls in general, where `toString()` may not expose the state of the argument. + */ +private class StringValueOfCharSequence extends SyntheticCallable { + StringValueOfCharSequence() { this = "java.lang.String.valueOf(Object)+CharSequence" } + + override MethodCall getACall() { + exists(Method m | m = result.getMethod().getSourceDeclaration() | + m.hasQualifiedName("java.lang", "String", "valueOf") and + m.getParameterType(0) instanceof TypeObject + ) and + result + .getArgument(0) + .getType() + .(RefType) + .getAnAncestor() + .hasQualifiedName("java.lang", "CharSequence") + } + + override predicate propagatesFlow(string input, string output, boolean preservesValue) { + input = "Argument[0]" and + output = "ReturnValue" and + preservesValue = false + } + + override Type getReturnType() { result instanceof TypeString } +} diff --git a/java/ql/test/library-tests/dataflow/string-valueof/A.java b/java/ql/test/library-tests/dataflow/string-valueof/A.java new file mode 100644 index 000000000000..037372002912 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/string-valueof/A.java @@ -0,0 +1,26 @@ +public class A { + String source() { return "source"; } + + void sink(Object o) {} + + void m(char[] cs, char c, Object obj) { + String s = source(); + + sink(String.valueOf(s)); // $ hasTaintFlow + + CharSequence seq = s; + sink(String.valueOf(seq)); // $ hasTaintFlow + + StringBuilder sb = new StringBuilder(s); + sink(String.valueOf(sb)); // $ hasTaintFlow + + sink(String.valueOf(s.toCharArray())); // $ hasTaintFlow + + sink(String.valueOf(s.charAt(0))); // $ hasTaintFlow + + // `toString` on an arbitrary object is not assumed to expose the state of + // the object, so no flow is expected here. + Object o = s; + sink(String.valueOf(o)); + } +} diff --git a/java/ql/test/library-tests/dataflow/string-valueof/test.expected b/java/ql/test/library-tests/dataflow/string-valueof/test.expected new file mode 100644 index 000000000000..851523f93087 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/string-valueof/test.expected @@ -0,0 +1,39 @@ +models +| 1 | Summary: java.lang; CharSequence; true; charAt; ; ; Argument[this]; ReturnValue; taint; manual | +| 2 | Summary: java.lang; String; false; toCharArray; ; ; Argument[this]; ReturnValue; taint; manual | +| 3 | Summary: java.lang; String; false; valueOf; (char); ; Argument[0]; ReturnValue; taint; manual | +| 4 | Summary: java.lang; String; false; valueOf; (char[]); ; Argument[0]; ReturnValue; taint; manual | +| 5 | Summary: java.lang; StringBuilder; true; StringBuilder; ; ; Argument[0]; Argument[this]; taint; manual | +edges +| A.java:7:16:7:23 | source(...) : String | A.java:9:25:9:25 | s : String | provenance | | +| A.java:7:16:7:23 | source(...) : String | A.java:12:25:12:27 | seq : String | provenance | | +| A.java:7:16:7:23 | source(...) : String | A.java:14:42:14:42 | s : String | provenance | | +| A.java:7:16:7:23 | source(...) : String | A.java:17:25:17:25 | s : String | provenance | | +| A.java:7:16:7:23 | source(...) : String | A.java:19:25:19:25 | s : String | provenance | | +| A.java:9:25:9:25 | s : String | A.java:9:10:9:26 | valueOf(...) | provenance | java.lang.String.valueOf(Object)+CharSequence | +| A.java:12:25:12:27 | seq : String | A.java:12:10:12:28 | valueOf(...) | provenance | java.lang.String.valueOf(Object)+CharSequence | +| A.java:14:24:14:43 | new StringBuilder(...) : StringBuilder | A.java:15:25:15:26 | sb : StringBuilder | provenance | | +| A.java:14:42:14:42 | s : String | A.java:14:24:14:43 | new StringBuilder(...) : StringBuilder | provenance | MaD:5 | +| A.java:15:25:15:26 | sb : StringBuilder | A.java:15:10:15:27 | valueOf(...) | provenance | java.lang.String.valueOf(Object)+CharSequence | +| A.java:17:25:17:25 | s : String | A.java:17:25:17:39 | toCharArray(...) : char[] | provenance | MaD:2 | +| A.java:17:25:17:39 | toCharArray(...) : char[] | A.java:17:10:17:40 | valueOf(...) | provenance | MaD:4 | +| A.java:19:25:19:25 | s : String | A.java:19:25:19:35 | charAt(...) : Number | provenance | MaD:1 | +| A.java:19:25:19:35 | charAt(...) : Number | A.java:19:10:19:36 | valueOf(...) | provenance | MaD:3 | +nodes +| A.java:7:16:7:23 | source(...) : String | semmle.label | source(...) : String | +| A.java:9:10:9:26 | valueOf(...) | semmle.label | valueOf(...) | +| A.java:9:25:9:25 | s : String | semmle.label | s : String | +| A.java:12:10:12:28 | valueOf(...) | semmle.label | valueOf(...) | +| A.java:12:25:12:27 | seq : String | semmle.label | seq : String | +| A.java:14:24:14:43 | new StringBuilder(...) : StringBuilder | semmle.label | new StringBuilder(...) : StringBuilder | +| A.java:14:42:14:42 | s : String | semmle.label | s : String | +| A.java:15:10:15:27 | valueOf(...) | semmle.label | valueOf(...) | +| A.java:15:25:15:26 | sb : StringBuilder | semmle.label | sb : StringBuilder | +| A.java:17:10:17:40 | valueOf(...) | semmle.label | valueOf(...) | +| A.java:17:25:17:25 | s : String | semmle.label | s : String | +| A.java:17:25:17:39 | toCharArray(...) : char[] | semmle.label | toCharArray(...) : char[] | +| A.java:19:10:19:36 | valueOf(...) | semmle.label | valueOf(...) | +| A.java:19:25:19:25 | s : String | semmle.label | s : String | +| A.java:19:25:19:35 | charAt(...) : Number | semmle.label | charAt(...) : Number | +subpaths +testFailures diff --git a/java/ql/test/library-tests/dataflow/string-valueof/test.ql b/java/ql/test/library-tests/dataflow/string-valueof/test.ql new file mode 100644 index 000000000000..e64b8bfececb --- /dev/null +++ b/java/ql/test/library-tests/dataflow/string-valueof/test.ql @@ -0,0 +1,3 @@ +import utils.test.InlineFlowTest +import DefaultFlowTest +import TaintFlow::PathGraph From c601c6c3a28b0f6d775829e3b104db47df726d81 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 11 Aug 2026 08:25:13 +0000 Subject: [PATCH 065/167] Simplify test method signature Co-authored-by: hvitved <3667920+hvitved@users.noreply.github.com> --- java/ql/test/library-tests/dataflow/string-valueof/A.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/test/library-tests/dataflow/string-valueof/A.java b/java/ql/test/library-tests/dataflow/string-valueof/A.java index 037372002912..cf9d6ea8c1d7 100644 --- a/java/ql/test/library-tests/dataflow/string-valueof/A.java +++ b/java/ql/test/library-tests/dataflow/string-valueof/A.java @@ -3,7 +3,7 @@ public class A { void sink(Object o) {} - void m(char[] cs, char c, Object obj) { + void m() { String s = source(); sink(String.valueOf(s)); // $ hasTaintFlow From 7e3c1443a92539f5c1ec3000dac2de3f7adbd44d Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 11 Aug 2026 13:05:46 +0200 Subject: [PATCH 066/167] Java: Update test expectations --- java/ql/test/utils/modelgenerator/dataflow/p/Joiner.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/ql/test/utils/modelgenerator/dataflow/p/Joiner.java b/java/ql/test/utils/modelgenerator/dataflow/p/Joiner.java index ffe68e6722db..6412d1293b9d 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/p/Joiner.java +++ b/java/ql/test/utils/modelgenerator/dataflow/p/Joiner.java @@ -82,6 +82,7 @@ public String toString() { } // heuristic-summary=p;Joiner;false;add;(CharSequence);;Argument[this];ReturnValue;value;df-generated + // heuristic-summary=p;Joiner;false;add;(CharSequence);;Argument[0];Argument[this];taint;df-generated // contentbased-summary=p;Joiner;false;add;(CharSequence);;Argument[this];ReturnValue;value;dfc-generated // MISSING content based summaries for "elts". This could be a synthetic field. public Joiner add(CharSequence newElement) { @@ -107,6 +108,7 @@ private int checkAddLength(int oldLen, int inc) { } // heuristic-summary=p;Joiner;false;merge;(Joiner);;Argument[this];ReturnValue;value;df-generated + // heuristic-summary=p;Joiner;false;merge;(Joiner);;Argument[0];Argument[this];taint;df-generated // contentbased-summary=p;Joiner;false;merge;(Joiner);;Argument[this];ReturnValue;value;dfc-generated // MISSING content based summaries for "elts". This could be a synthetic field. public Joiner merge(Joiner other) { From 9db7db17ef72a803043f1e2916ce01c1b2ffcb27 Mon Sep 17 00:00:00 2001 From: Matin Zadeh Dolatabad <24797481+matinzd@users.noreply.github.com> Date: Mon, 10 Aug 2026 13:02:36 +0200 Subject: [PATCH 067/167] Add React Native Reanimated worklet directive as KnownDirective --- javascript/ql/lib/semmle/javascript/Stmt.qll | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/javascript/ql/lib/semmle/javascript/Stmt.qll b/javascript/ql/lib/semmle/javascript/Stmt.qll index 6a757cc1d6ca..94aac3ade6b1 100644 --- a/javascript/ql/lib/semmle/javascript/Stmt.qll +++ b/javascript/ql/lib/semmle/javascript/Stmt.qll @@ -475,6 +475,21 @@ module Directive { class UseCacheDirective extends KnownDirective { UseCacheDirective() { this.getDirectiveText().regexpMatch("use cache(:.*)?") } } + + /** + * A React Native Reanimated worklet directive. + * + * Example: + * + * ``` + * function myWorklet() { + * "worklet"; + * } + * ``` + */ + class WorkletDirective extends KnownDirective { + WorkletDirective() { this.getDirectiveText() = "worklet" } + } } /** From b71f9e84fe0c3e71d7c7eff15476f56a542e06c7 Mon Sep 17 00:00:00 2001 From: Matin Zadeh Dolatabad <24797481+matinzd@users.noreply.github.com> Date: Mon, 10 Aug 2026 13:04:09 +0200 Subject: [PATCH 068/167] test: update --- javascript/ql/test/library-tests/Directives/tst.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/javascript/ql/test/library-tests/Directives/tst.js b/javascript/ql/test/library-tests/Directives/tst.js index 7c7676322a4a..30a0772a610e 100644 --- a/javascript/ql/test/library-tests/Directives/tst.js +++ b/javascript/ql/test/library-tests/Directives/tst.js @@ -1,6 +1,7 @@ 'use strict'; // this is a directive 'use asm'; // and so is this 'bundle';// and this +'worklet'; 'use server'; 'use client'; 'use memo'; @@ -18,6 +19,7 @@ function f() { 'use\x20strict'; // this is a directive, though not a strict mode directive 'use asm'; // and so is this 'bundle'; + 'worklet'; 'use server'; 'use client'; 'use memo'; From 0611639a63eb687f95a9cd57368da841684d6afd Mon Sep 17 00:00:00 2001 From: matinzd <24797481+matinzd@users.noreply.github.com> Date: Mon, 10 Aug 2026 13:19:17 +0200 Subject: [PATCH 069/167] chore: update test snapshot --- .../2026-08-10-worklet-directive.md | 5 +++ javascript/ql/lib/semmle/javascript/Stmt.qll | 2 +- .../Directives/KnownDirective.expected | 36 ++++++++++--------- 3 files changed, 25 insertions(+), 18 deletions(-) create mode 100644 javascript/ql/lib/change-notes/2026-08-10-worklet-directive.md diff --git a/javascript/ql/lib/change-notes/2026-08-10-worklet-directive.md b/javascript/ql/lib/change-notes/2026-08-10-worklet-directive.md new file mode 100644 index 000000000000..c596f14e9abe --- /dev/null +++ b/javascript/ql/lib/change-notes/2026-08-10-worklet-directive.md @@ -0,0 +1,5 @@ +--- +category: feature +--- + +- Added support for recognizing the React Native Worklets `"worklet"` directive as a known directive. diff --git a/javascript/ql/lib/semmle/javascript/Stmt.qll b/javascript/ql/lib/semmle/javascript/Stmt.qll index 94aac3ade6b1..cedc3da2e8cb 100644 --- a/javascript/ql/lib/semmle/javascript/Stmt.qll +++ b/javascript/ql/lib/semmle/javascript/Stmt.qll @@ -477,7 +477,7 @@ module Directive { } /** - * A React Native Reanimated worklet directive. + * A React Native Worklets worklet directive. * * Example: * diff --git a/javascript/ql/test/library-tests/Directives/KnownDirective.expected b/javascript/ql/test/library-tests/Directives/KnownDirective.expected index 065c0954f747..89efb1e24dcd 100644 --- a/javascript/ql/test/library-tests/Directives/KnownDirective.expected +++ b/javascript/ql/test/library-tests/Directives/KnownDirective.expected @@ -1,20 +1,22 @@ | tst.js:1:1:1:13 | 'use strict'; | use strict | | tst.js:2:1:2:10 | 'use asm'; | use asm | | tst.js:3:1:3:9 | 'bundle'; | bundle | -| tst.js:4:1:4:13 | 'use server'; | use server | -| tst.js:5:1:5:13 | 'use client'; | use client | -| tst.js:6:1:6:11 | 'use memo'; | use memo | -| tst.js:7:1:7:14 | 'use no memo'; | use no memo | -| tst.js:8:1:8:12 | 'use cache'; | use cache | -| tst.js:9:1:9:20 | 'use cache: remote'; | use cache: remote | -| tst.js:10:1:10:21 | 'use ca ... ivate'; | use cache: private | -| tst.js:19:3:19:12 | 'use asm'; | use asm | -| tst.js:20:3:20:11 | 'bundle'; | bundle | -| tst.js:21:3:21:15 | 'use server'; | use server | -| tst.js:22:3:22:15 | 'use client'; | use client | -| tst.js:23:3:23:13 | 'use memo'; | use memo | -| tst.js:24:3:24:16 | 'use no memo'; | use no memo | -| tst.js:25:3:25:14 | 'use cache'; | use cache | -| tst.js:26:3:26:22 | 'use cache: remote'; | use cache: remote | -| tst.js:27:3:27:23 | 'use ca ... ivate'; | use cache: private | -| tst.js:34:5:34:17 | 'use strict'; | use strict | +| tst.js:4:1:4:10 | 'worklet'; | worklet | +| tst.js:5:1:5:13 | 'use server'; | use server | +| tst.js:6:1:6:13 | 'use client'; | use client | +| tst.js:7:1:7:11 | 'use memo'; | use memo | +| tst.js:8:1:8:14 | 'use no memo'; | use no memo | +| tst.js:9:1:9:12 | 'use cache'; | use cache | +| tst.js:10:1:10:20 | 'use cache: remote'; | use cache: remote | +| tst.js:11:1:11:21 | 'use ca ... ivate'; | use cache: private | +| tst.js:20:3:20:12 | 'use asm'; | use asm | +| tst.js:21:3:21:11 | 'bundle'; | bundle | +| tst.js:22:3:22:12 | 'worklet'; | worklet | +| tst.js:23:3:23:15 | 'use server'; | use server | +| tst.js:24:3:24:15 | 'use client'; | use client | +| tst.js:25:3:25:13 | 'use memo'; | use memo | +| tst.js:26:3:26:16 | 'use no memo'; | use no memo | +| tst.js:27:3:27:14 | 'use cache'; | use cache | +| tst.js:28:3:28:22 | 'use cache: remote'; | use cache: remote | +| tst.js:29:3:29:23 | 'use ca ... ivate'; | use cache: private | +| tst.js:36:5:36:17 | 'use strict'; | use strict | From db708d4a804086f8ef4b17ea112431b839391f12 Mon Sep 17 00:00:00 2001 From: Keshav Malik Date: Wed, 12 Aug 2026 00:33:09 +0530 Subject: [PATCH 070/167] Recognize RequireAntiforgeryToken attributes --- .../MissingAntiForgeryTokenValidation.ql | 80 +++++++- .../2026-08-09-require-antiforgery-token.md | 4 + .../MissingAntiForgeryTokenValidation.cs | 27 +++ ...MissingAntiForgeryTokenValidation.expected | 0 .../MissingAntiForgeryTokenValidation.qlref | 1 + .../disabled-require-antiforgery/options | 2 + .../MissingAntiForgeryTokenValidation.cs | 175 ++++++++++++++++++ ...MissingAntiForgeryTokenValidation.expected | 10 +- .../MissingAntiForgeryTokenValidation.cs | 19 ++ ...MissingAntiForgeryTokenValidation.expected | 1 + .../MissingAntiForgeryTokenValidation.qlref | 1 + .../options | 2 + 12 files changed, 318 insertions(+), 4 deletions(-) create mode 100644 csharp/ql/src/change-notes/2026-08-09-require-antiforgery-token.md create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/MissingAntiForgeryTokenValidation.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/MissingAntiForgeryTokenValidation.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/MissingAntiForgeryTokenValidation.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/options create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/MissingAntiForgeryTokenValidation.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/MissingAntiForgeryTokenValidation.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/MissingAntiForgeryTokenValidation.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/options diff --git a/csharp/ql/src/Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql b/csharp/ql/src/Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql index 60a022d43d0f..a1cb7f9f506a 100644 --- a/csharp/ql/src/Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql +++ b/csharp/ql/src/Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql @@ -51,6 +51,80 @@ predicate hasGlobalAntiForgeryFilter() { ) } +private class RequireAntiforgeryTokenAttribute extends Attribute { + RequireAntiforgeryTokenAttribute() { + this.getType() + .hasFullyQualifiedName("Microsoft.AspNetCore.Antiforgery", + "RequireAntiforgeryTokenAttribute") + } + + predicate requiresValidation() { + not exists(this.getArgument(0)) + or + this.getArgument(0).isImplicit() + or + this.getArgument(0).getValue() = "true" + } +} + +private predicate hasAspNetCoreAntiForgeryMiddleware() { + exists(MethodCall call | + call.getTarget() + .hasFullyQualifiedName("Microsoft.AspNetCore.Builder", + "AntiforgeryApplicationBuilderExtensions", "UseAntiforgery") + ) +} + +bindingset[method] +private RequireAntiforgeryTokenAttribute getEffectiveRequireAntiforgeryTokenAttributeOnMethod( + Method method +) { + exists(Method attributedMethod | + attributedMethod = method.getOverridee*() and + result = attributedMethod.getAnAttribute() and + not exists(Method closerMethod | + closerMethod = method.getOverridee*() and + closerMethod.getOverridee+() = attributedMethod and + closerMethod.getAnAttribute() instanceof RequireAntiforgeryTokenAttribute + ) + ) +} + +bindingset[controller] +private RequireAntiforgeryTokenAttribute getEffectiveRequireAntiforgeryTokenAttributeOnClass( + Class controller +) { + exists(Class attributedClass | + attributedClass = controller.getBaseClass*() and + result = attributedClass.getAnAttribute() and + not exists(Class closerClass | + closerClass = controller.getBaseClass*() and + closerClass.getBaseClass+() = attributedClass and + closerClass.getAnAttribute() instanceof RequireAntiforgeryTokenAttribute + ) + ) +} + +bindingset[controller, method] +private RequireAntiforgeryTokenAttribute getEffectiveRequireAntiforgeryTokenAttribute( + Class controller, Method method +) { + result = getEffectiveRequireAntiforgeryTokenAttributeOnMethod(method) + or + not exists(getEffectiveRequireAntiforgeryTokenAttributeOnMethod(method)) and + result = getEffectiveRequireAntiforgeryTokenAttributeOnClass(controller) +} + +bindingset[controller, method] +private predicate hasAspNetCoreAntiForgeryValidation(Class controller, Method method) { + method.getAnAttribute() instanceof AspNetCore::ValidateAntiForgeryAttribute + or + controller.getABaseType*().getAnAttribute() instanceof AspNetCore::ValidateAntiForgeryAttribute + or + hasAspNetCoreAntiForgeryMiddleware() and + getEffectiveRequireAntiforgeryTokenAttribute(controller, method).requiresValidation() +} + predicate isUnvalidatedPostMethod(Class c, Method m) { c.(Controller).getAPostActionMethod() = m and not m.getAnAttribute() instanceof ValidateAntiForgeryTokenAttribute and @@ -58,14 +132,16 @@ predicate isUnvalidatedPostMethod(Class c, Method m) { or c.(AspNetCore::MicrosoftAspNetCoreMvcController).getAnActionMethod() = m and m.getAnAttribute() instanceof AspNetCore::MicrosoftAspNetCoreMvcHttpPostAttribute and - not m.getAnAttribute() instanceof AspNetCore::ValidateAntiForgeryAttribute and - not c.getABaseType*().getAnAttribute() instanceof AspNetCore::ValidateAntiForgeryAttribute + not hasAspNetCoreAntiForgeryValidation(c, m) } Element getAValidatedElement() { any(ValidateAntiForgeryTokenAttribute a).getTarget() = result or any(AspNetCore::ValidateAntiForgeryAttribute a).getTarget() = result + or + hasAspNetCoreAntiForgeryMiddleware() and + any(RequireAntiforgeryTokenAttribute a | a.requiresValidation()).getTarget() = result } from Class c, Method postMethod diff --git a/csharp/ql/src/change-notes/2026-08-09-require-antiforgery-token.md b/csharp/ql/src/change-notes/2026-08-09-require-antiforgery-token.md new file mode 100644 index 000000000000..ce1b6e9418fe --- /dev/null +++ b/csharp/ql/src/change-notes/2026-08-09-require-antiforgery-token.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The `cs/web/missing-token-validation` query now recognizes enabled ASP.NET Core `RequireAntiforgeryToken` attributes when antiforgery middleware is used. diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/MissingAntiForgeryTokenValidation.cs b/csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/MissingAntiForgeryTokenValidation.cs new file mode 100644 index 000000000000..32a6e8326555 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/MissingAntiForgeryTokenValidation.cs @@ -0,0 +1,27 @@ +using Microsoft.AspNetCore.Antiforgery; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Mvc; + +public class HomeController : Controller +{ + [HttpPost] + [RequireAntiforgeryToken(false)] + public ActionResult DisabledValidation() + { + return View(); + } + + [HttpPost] + public ActionResult MissingValidation() + { + return View(); + } +} + +public class Startup +{ + public void Configure(IApplicationBuilder app) + { + app.UseAntiforgery(); + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/MissingAntiForgeryTokenValidation.expected b/csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/MissingAntiForgeryTokenValidation.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/MissingAntiForgeryTokenValidation.qlref b/csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/MissingAntiForgeryTokenValidation.qlref new file mode 100644 index 000000000000..5e1ab2426c65 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/MissingAntiForgeryTokenValidation.qlref @@ -0,0 +1 @@ +query: Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/options b/csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/options new file mode 100644 index 000000000000..698ad488b6d4 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/disabled-require-antiforgery/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/missing-aspnetcore/MissingAntiForgeryTokenValidation.cs b/csharp/ql/test/query-tests/Security Features/CWE-352/missing-aspnetcore/MissingAntiForgeryTokenValidation.cs index febc12a61255..123ac0f7ec26 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-352/missing-aspnetcore/MissingAntiForgeryTokenValidation.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/missing-aspnetcore/MissingAntiForgeryTokenValidation.cs @@ -1,7 +1,12 @@ using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Antiforgery; +using Microsoft.AspNetCore.Builder; public class HomeController : Controller { + private const bool ValidationEnabled = true; + private const bool ValidationDisabled = false; + // BAD: Anti forgery token has been forgotten [HttpPost] public ActionResult Login() // $ Alert @@ -17,6 +22,46 @@ public ActionResult UpdateDetails() return View(); } + // GOOD: Anti forgery token is required by ASP.NET Core middleware + [HttpPost] + [RequireAntiforgeryToken] + public ActionResult UpdateProfile() + { + return View(); + } + + // GOOD: Explicitly requires anti forgery validation + [HttpPost] + [RequireAntiforgeryToken(true)] + public ActionResult UpdatePreferences() + { + return View(); + } + + // GOOD: Named and constant arguments are supported + [HttpPost] + [RequireAntiforgeryToken(required: ValidationEnabled)] + public ActionResult UpdateSettings() + { + return View(); + } + + // BAD: Explicitly disables anti forgery validation + [HttpPost] + [RequireAntiforgeryToken(false)] + public ActionResult DisabledValidation() // $ Alert + { + return View(); + } + + // BAD: A false constant also disables anti forgery validation + [HttpPost] + [RequireAntiforgeryToken(ValidationDisabled)] + public ActionResult ConstantDisabledValidation() // $ Alert + { + return View(); + } + // No validation required, as this is a GET method. public ActionResult ShowHelp() { @@ -46,6 +91,110 @@ public ActionResult InheritedValidation() } } +// GOOD: Base class requires anti forgery validation +[RequireAntiforgeryToken] +public abstract class AntiforgeryBaseController : Controller +{ +} + +public abstract class IntermediateAntiforgeryController : AntiforgeryBaseController +{ +} + +public class DerivedAntiforgeryController : IntermediateAntiforgeryController +{ + [HttpPost] + public ActionResult InheritedRequiredValidation() + { + return View(); + } +} + +[RequireAntiforgeryToken] +public class ProtectedController : Controller +{ + // GOOD: Controller requires anti forgery validation + [HttpPost] + public ActionResult ProtectedAction() + { + return View(); + } + + // BAD: Action-level metadata overrides the controller metadata + [HttpPost] + [RequireAntiforgeryToken(false)] + public ActionResult DisabledAction() // $ Alert + { + return View(); + } +} + +[RequireAntiforgeryToken(false)] +public class DisabledController : Controller +{ + // BAD: Controller explicitly disables anti forgery validation + [HttpPost] + public ActionResult DisabledControllerAction() // $ Alert + { + return View(); + } + + // GOOD: Action-level metadata overrides the controller metadata + [HttpPost] + [RequireAntiforgeryToken(true)] + public ActionResult EnabledAction() + { + return View(); + } +} + +[RequireAntiforgeryToken] +public abstract class ProtectedBaseController : Controller +{ +} + +[RequireAntiforgeryToken(false)] +public class DisabledDerivedController : ProtectedBaseController +{ + // BAD: Derived controller metadata overrides base controller metadata + [HttpPost] + public ActionResult DisabledInheritedAction() // $ Alert + { + return View(); + } +} + +[AutoValidateAntiforgeryToken] +public class FilterProtectedController : Controller +{ + // GOOD: Disabled middleware metadata does not disable the MVC filter + [HttpPost] + [RequireAntiforgeryToken(false)] + public ActionResult FilterProtectedAction() + { + return View(); + } +} + +public abstract class MethodMetadataBaseController : Controller +{ + [RequireAntiforgeryToken] + public virtual ActionResult InheritedMethodValidation() + { + return View(); + } +} + +public class MethodMetadataController : MethodMetadataBaseController +{ + // GOOD: Method metadata is inherited by the override + [HttpPost] + public override ActionResult InheritedMethodValidation() + { + return View(); + } +} + // BAD: Base class without antiforgery attribute public abstract class UnprotectedBaseController : Controller { @@ -60,3 +209,29 @@ public ActionResult NoInheritedValidation() // $ Alert return View(); } } + +namespace Custom +{ + public class RequireAntiforgeryTokenAttribute : System.Attribute + { + } + + public class CustomAttributeController : Controller + { + // BAD: An unrelated attribute with the same name does not provide validation + [HttpPost] + [RequireAntiforgeryToken] + public ActionResult LookalikeAttribute() // $ Alert + { + return View(); + } + } +} + +public class Startup +{ + public void Configure(IApplicationBuilder app) + { + app.UseAntiforgery(); + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/missing-aspnetcore/MissingAntiForgeryTokenValidation.expected b/csharp/ql/test/query-tests/Security Features/CWE-352/missing-aspnetcore/MissingAntiForgeryTokenValidation.expected index 360b909cd0fa..ceb32e94c984 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-352/missing-aspnetcore/MissingAntiForgeryTokenValidation.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/missing-aspnetcore/MissingAntiForgeryTokenValidation.expected @@ -1,2 +1,8 @@ -| MissingAntiForgeryTokenValidation.cs:7:25:7:29 | Login | Method 'Login' handles a POST request without performing CSRF token validation. | -| MissingAntiForgeryTokenValidation.cs:58:25:58:45 | NoInheritedValidation | Method 'NoInheritedValidation' handles a POST request without performing CSRF token validation. | +| MissingAntiForgeryTokenValidation.cs:12:25:12:29 | Login | Method 'Login' handles a POST request without performing CSRF token validation. | +| MissingAntiForgeryTokenValidation.cs:52:25:52:42 | DisabledValidation | Method 'DisabledValidation' handles a POST request without performing CSRF token validation. | +| MissingAntiForgeryTokenValidation.cs:60:25:60:50 | ConstantDisabledValidation | Method 'ConstantDisabledValidation' handles a POST request without performing CSRF token validation. | +| MissingAntiForgeryTokenValidation.cs:126:25:126:38 | DisabledAction | Method 'DisabledAction' handles a POST request without performing CSRF token validation. | +| MissingAntiForgeryTokenValidation.cs:137:25:137:48 | DisabledControllerAction | Method 'DisabledControllerAction' handles a POST request without performing CSRF token validation. | +| MissingAntiForgeryTokenValidation.cs:161:25:161:47 | DisabledInheritedAction | Method 'DisabledInheritedAction' handles a POST request without performing CSRF token validation. | +| MissingAntiForgeryTokenValidation.cs:207:25:207:45 | NoInheritedValidation | Method 'NoInheritedValidation' handles a POST request without performing CSRF token validation. | +| MissingAntiForgeryTokenValidation.cs:224:29:224:46 | LookalikeAttribute | Method 'LookalikeAttribute' handles a POST request without performing CSRF token validation. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/MissingAntiForgeryTokenValidation.cs b/csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/MissingAntiForgeryTokenValidation.cs new file mode 100644 index 000000000000..9943c21aff3f --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/MissingAntiForgeryTokenValidation.cs @@ -0,0 +1,19 @@ +using Microsoft.AspNetCore.Antiforgery; +using Microsoft.AspNetCore.Mvc; + +public class HomeController : Controller +{ + [HttpPost] + [ValidateAntiForgeryToken] + public ActionResult FilterValidated() + { + return View(); + } + + [HttpPost] + [RequireAntiforgeryToken] + public ActionResult MetadataWithoutMiddleware() // $ Alert + { + return View(); + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/MissingAntiForgeryTokenValidation.expected b/csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/MissingAntiForgeryTokenValidation.expected new file mode 100644 index 000000000000..2b5360166026 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/MissingAntiForgeryTokenValidation.expected @@ -0,0 +1 @@ +| MissingAntiForgeryTokenValidation.cs:15:25:15:49 | MetadataWithoutMiddleware | Method 'MetadataWithoutMiddleware' handles a POST request without performing CSRF token validation. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/MissingAntiForgeryTokenValidation.qlref b/csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/MissingAntiForgeryTokenValidation.qlref new file mode 100644 index 000000000000..5e1ab2426c65 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/MissingAntiForgeryTokenValidation.qlref @@ -0,0 +1 @@ +query: Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/options b/csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/options new file mode 100644 index 000000000000..698ad488b6d4 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/require-antiforgery-without-middleware/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj From 6b3afee892607c029b494e12cd7207d87019bca7 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 11 Aug 2026 13:57:33 +0200 Subject: [PATCH 071/167] Data flow: Earlier pruning based on `accessPathLimit` --- .../codeql/dataflow/internal/DataFlowImpl.qll | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index 3af6b9eab99a..806b4d5a2413 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -561,6 +561,21 @@ module MakeImpl Lang> { ) } + pragma[nomagic] + private int getAnApLengthLowerBound(Ap ap) { + accessPathLimit() > 1 and // `accessPathLimit() <= 1` is already checked in stages 1 and 2 + ap instanceof ApNil and + result = 0 + or + exists(Content c, Ap tail | + ap = apCons(c, tail) and + fwdFlowConsCand(_, ap, c, _, tail) and + ap != tail and // no need to report a longer length + result = 1 + getAnApLengthLowerBound(tail) and + result <= accessPathLimit() + ) + } + pragma[nomagic] private predicate fwdFlow0( Nd node, Cc cc, SummaryCtx summaryCtx, Typ t, Ap ap, ApApprox apa, TypOption stored @@ -594,7 +609,10 @@ module MakeImpl Lang> { exists(Content c, Ap ap0 | fwdFlowStore(_, _, ap0, _, c, t, stored, node, cc, summaryCtx) and ap = apCons(c, ap0) and - apa = getApprox(ap) + apa = getApprox(ap) and + if accessPathLimit() > 1 + then getAnApLengthLowerBound(ap0) < accessPathLimit() + else any() ) or // read @@ -1320,6 +1338,20 @@ module MakeImpl Lang> { fwdFlow(node, _, _, _, ap, _) } + pragma[nomagic] + private int getAnApLengthLowerBoundRev(Ap ap) { + accessPathLimit() > 1 and // `accessPathLimit() <= 1` is already checked in stages 1 and 2 + ap instanceof ApNil and + result = 0 + or + exists(Ap tail | + revFlowConsCand(ap, _, tail) and + ap != tail and // no need to report a longer length + result = 1 + getAnApLengthLowerBoundRev(tail) and + result <= accessPathLimit() + ) + } + pragma[nomagic] private predicate revFlow0(Nd node, ReturnCtx returnCtx, ApOption returnAp, Ap ap) { fwdFlow(node, _, any(SummaryCtx sinkCtx | sinkCtx.isASinkCtx()), _, ap, _) and @@ -1356,7 +1388,10 @@ module MakeImpl Lang> { // read exists(Nd mid, Ap ap0 | revFlow(mid, returnCtx, returnAp, ap0) and - readStepFwd(node, ap, _, mid, ap0) + readStepFwd(node, ap, _, mid, ap0) and + if accessPathLimit() > 1 + then getAnApLengthLowerBoundRev(ap0) < accessPathLimit() + else any() ) or // flow into a callable From 2129dc8b615cfef2787aceae2a65886d95799f74 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 24 Jun 2026 10:56:07 +0200 Subject: [PATCH 072/167] C#: Re-factor GetAllFeeds into properties in the Feed Manager and encapsulate as immutable hash sets. --- .../FeedManager.cs | 26 +++++++++++++++---- .../NugetPackageRestorer.cs | 7 ++--- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs index 744b60f3d3f5..1dc4c2ac1666 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs @@ -29,6 +29,12 @@ internal sealed partial class FeedManager : IDisposable public bool HasPrivateRegistryFeeds { get; } public bool CheckNugetFeedResponsiveness { get; } = EnvironmentVariables.GetBooleanOptOut(EnvironmentVariableNames.CheckNugetFeedResponsiveness); + private readonly Lazy> lazyExplicitFeeds; + public ImmutableHashSet ExplicitFeeds => lazyExplicitFeeds.Value; + + private readonly Lazy> lazyAllFeeds; + public ImmutableHashSet AllFeeds => lazyAllFeeds.Value; + public FeedManager(ILogger logger, IDotNet dotnet, DependabotProxy? dependabotProxy, FileProvider fileProvider) { this.logger = logger; @@ -38,6 +44,9 @@ public FeedManager(ILogger logger, IDotNet dotnet, DependabotProxy? dependabotPr PrivateRegistryFeeds = dependabotProxy?.RegistryURLs.ToImmutableHashSet() ?? []; HasPrivateRegistryFeeds = PrivateRegistryFeeds.Count > 0; emptyPackageDirectory = new DependencyDirectory("empty", "empty package", logger); + + lazyExplicitFeeds = new Lazy>(GetExplicitFeeds); + lazyAllFeeds = new Lazy>(GetAllFeeds); } private string? GetDirectoryName(string path) @@ -271,7 +280,7 @@ private HashSet GetExcludedFeeds() /// True if there is a timeout when trying to reach the feeds (excluding any feeds that are configured /// to be excluded from the check) or false otherwise. /// - public bool CheckSpecifiedFeeds(HashSet feeds, out HashSet reachableFeeds) + public bool CheckSpecifiedFeeds(ImmutableHashSet feeds, out HashSet reachableFeeds) { // Exclude any feeds from the feed check that are configured by the corresponding environment variable. // These feeds are always assumed to be reachable. @@ -342,7 +351,7 @@ private List GetReachableNuGetFeeds(HashSet feedsToCheck, bool i return reachableFeeds; } - public List GetReachableFallbackNugetFeeds(HashSet? feedsFromNugetConfigs) + public List GetReachableFallbackNugetFeeds(ImmutableHashSet? feedsFromNugetConfigs) { var fallbackFeeds = EnvironmentVariables.GetURLs(EnvironmentVariableNames.FallbackNugetFeeds).ToHashSet(); if (fallbackFeeds.Count == 0) @@ -365,7 +374,7 @@ public List GetReachableFallbackNugetFeeds(HashSet? feedsFromNug return GetReachableNuGetFeeds(fallbackFeeds, isFallback: true, out var _); } - public (HashSet explicitFeeds, HashSet allFeeds) GetAllFeeds() + private ImmutableHashSet GetExplicitFeeds() { var nugetConfigs = fileProvider.NugetConfigs; @@ -391,10 +400,17 @@ public List GetReachableFallbackNugetFeeds(HashSet? feedsFromNug explicitFeeds.UnionWith(PrivateRegistryFeeds); } + return explicitFeeds.ToImmutableHashSet(); + } + + private ImmutableHashSet GetAllFeeds() + { + var nugetConfigs = fileProvider.NugetConfigs; + HashSet allFeeds = []; // Add all explicitFeeds to the set of all feeds. - allFeeds.UnionWith(explicitFeeds); + allFeeds.UnionWith(ExplicitFeeds); // Obtain the list of feeds from the root source directory. // If a NuGet file is present it will be respected, otherwise we will just get the machine/environment specific feeds. @@ -414,7 +430,7 @@ public List GetReachableFallbackNugetFeeds(HashSet? feedsFromNug logger.LogInfo($"Found {allFeeds.Count} NuGet feeds (with inherited ones) in nuget.config files: {string.Join(", ", allFeeds.OrderBy(f => f))}"); - return (explicitFeeds, allFeeds); + return allFeeds.ToImmutableHashSet(); } [GeneratedRegex(@"^E\s(.*)$", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)] diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs index 9da2018dffbc..2b55923e46b3 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs @@ -117,11 +117,12 @@ public HashSet Restore() // Find feeds that are configured in NuGet.config files and divide them into ones that // are explicitly configured for the project or by a private registry, and "all feeds" // (including inherited ones) from other locations on the host outside of the working directory. - (var explicitFeeds, var allFeeds) = feedManager.GetAllFeeds(); + var explicitFeeds = feedManager.ExplicitFeeds; + var allFeeds = feedManager.AllFeeds; if (feedManager.CheckNugetFeedResponsiveness) { - var inheritedFeeds = allFeeds.Except(explicitFeeds).ToHashSet(); + var inheritedFeeds = allFeeds.Except(explicitFeeds).ToImmutableHashSet(); if (inheritedFeeds.Count > 0) { @@ -312,7 +313,7 @@ private void RestoreProjects(IEnumerable projects, HashSet reach compilationInfoContainer.CompilationInfos.Add(("Failed project restore with missing package error", nugetMissingPackageFailures.ToString())); } - private AssemblyLookupLocation? DownloadMissingPackagesFromSpecificFeeds(IEnumerable usedPackageNames, HashSet? feedsFromNugetConfigs) + private AssemblyLookupLocation? DownloadMissingPackagesFromSpecificFeeds(IEnumerable usedPackageNames, ImmutableHashSet? feedsFromNugetConfigs) { var reachableFallbackFeeds = feedManager.GetReachableFallbackNugetFeeds(feedsFromNugetConfigs); compilationInfoContainer.CompilationInfos.Add(("Reachable fallback NuGet feed count", reachableFallbackFeeds.Count.ToString())); From 23fa7516912d65f6d72bd052f21236de4a191c88 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 24 Jun 2026 12:56:36 +0200 Subject: [PATCH 073/167] C#: Re-factor more feed sets into the feed manager (and further use immutable hash sets). --- .../FeedManager.cs | 70 ++++++++++++++++--- .../NugetPackageRestorer.cs | 20 ++---- .../PackagesConfigRestorer.cs | 7 +- 3 files changed, 70 insertions(+), 27 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs index 1dc4c2ac1666..b0a402148220 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs @@ -24,31 +24,79 @@ internal sealed partial class FeedManager : IDisposable private readonly FileProvider fileProvider; private readonly DependabotProxy? dependabotProxy; private readonly DependencyDirectory emptyPackageDirectory; + private readonly ImmutableHashSet privateRegistryFeeds; - public ImmutableHashSet PrivateRegistryFeeds { get; } public bool HasPrivateRegistryFeeds { get; } public bool CheckNugetFeedResponsiveness { get; } = EnvironmentVariables.GetBooleanOptOut(EnvironmentVariableNames.CheckNugetFeedResponsiveness); private readonly Lazy> lazyExplicitFeeds; + + /// + /// Gets the list of NuGet feeds that are explicitly configured + /// - NuGet configuration files. + /// - Private package registries that are configured for C#. + /// public ImmutableHashSet ExplicitFeeds => lazyExplicitFeeds.Value; private readonly Lazy> lazyAllFeeds; + + /// + /// Gets the list of all NuGet feeds that are configured in the environment. That is + /// - Explicit feeds + /// - Inherited feeds from the machine and environment (if not explicitly disabled by a + /// root directory NuGet configuration). + /// public ImmutableHashSet AllFeeds => lazyAllFeeds.Value; + /// + /// Gets the list of inherited NuGet feeds that are configured in the environment. + /// + public ImmutableHashSet InheritedFeeds => AllFeeds.Except(ExplicitFeeds).ToImmutableHashSet(); + + private readonly Lazy<(bool, ImmutableHashSet)> lazyReachableExplicitFeeds; + + /// + /// Gets whether there was a timeout when checking the reachability of the explicitly configured NuGet feeds. + /// + public bool ExplicitFeedTimeout => lazyReachableExplicitFeeds.Value.Item1; + + /// + /// Gets the list of reachable NuGet feeds that are explicitly configured. + /// + public ImmutableHashSet ReachableExplicitFeeds => lazyReachableExplicitFeeds.Value.Item2; + + private readonly Lazy> lazyReachableFeeds; + /// + /// Gets the list of reachable NuGet feeds that are configured in the environment. + /// + public ImmutableHashSet ReachableFeeds => lazyReachableFeeds.Value; + public FeedManager(ILogger logger, IDotNet dotnet, DependabotProxy? dependabotProxy, FileProvider fileProvider) { this.logger = logger; this.dotnet = dotnet; this.dependabotProxy = dependabotProxy; this.fileProvider = fileProvider; - PrivateRegistryFeeds = dependabotProxy?.RegistryURLs.ToImmutableHashSet() ?? []; - HasPrivateRegistryFeeds = PrivateRegistryFeeds.Count > 0; + privateRegistryFeeds = dependabotProxy?.RegistryURLs.ToImmutableHashSet() ?? []; + HasPrivateRegistryFeeds = privateRegistryFeeds.Count > 0; emptyPackageDirectory = new DependencyDirectory("empty", "empty package", logger); lazyExplicitFeeds = new Lazy>(GetExplicitFeeds); lazyAllFeeds = new Lazy>(GetAllFeeds); + lazyReachableExplicitFeeds = new Lazy<(bool, ImmutableHashSet)>(() => + { + var timeout = CheckSpecifiedFeeds(ExplicitFeeds, out var reachableFeeds); + return (timeout, reachableFeeds); + }); + lazyReachableFeeds = new Lazy>(() => + { + // Inherited feeds should only be used, if they are indeed reachable (as they may be environment specific). + CheckSpecifiedFeeds(InheritedFeeds, out var reachableInheritedFeeds); + return ReachableExplicitFeeds.Union(reachableInheritedFeeds).ToImmutableHashSet(); + }); } + private string? GetDirectoryName(string path) { try @@ -124,7 +172,7 @@ public string FeedsToRestoreArgument(IEnumerable feeds, string sourceArg /// Path to project/solution/packages.config /// The set of reachable NuGet feeds. /// The list of NuGet feeds to use for this restore. - public IEnumerable FeedsToUse(string path, HashSet reachableFeeds) + public IEnumerable FeedsToUse(string path, ImmutableHashSet reachableFeeds) { // Find the path specific feeds. var folder = GetDirectoryName(path); @@ -132,7 +180,7 @@ public IEnumerable FeedsToUse(string path, HashSet reachableFeed if (HasPrivateRegistryFeeds) { - feedsToConsider.UnionWith(PrivateRegistryFeeds); + feedsToConsider.UnionWith(privateRegistryFeeds); } var feedsToUse = CheckNugetFeedResponsiveness @@ -150,7 +198,7 @@ public IEnumerable FeedsToUse(string path, HashSet reachableFeed /// Path to project/solution /// The set of reachable NuGet feeds. /// A string representing the NuGet sources argument for the restore command. - public string? MakeDotnetRestoreSourcesArgument(string path, HashSet reachableFeeds) + public string? MakeDotnetRestoreSourcesArgument(string path, ImmutableHashSet reachableFeeds) { // Do not construct a set of explicit NuGet sources to use for restore. if (!CheckNugetFeedResponsiveness && !HasPrivateRegistryFeeds) @@ -280,7 +328,7 @@ private HashSet GetExcludedFeeds() /// True if there is a timeout when trying to reach the feeds (excluding any feeds that are configured /// to be excluded from the check) or false otherwise. /// - public bool CheckSpecifiedFeeds(ImmutableHashSet feeds, out HashSet reachableFeeds) + private bool CheckSpecifiedFeeds(ImmutableHashSet feeds, out ImmutableHashSet reachableFeeds) { // Exclude any feeds from the feed check that are configured by the corresponding environment variable. // These feeds are always assumed to be reachable. @@ -296,10 +344,10 @@ public bool CheckSpecifiedFeeds(ImmutableHashSet feeds, out HashSet excludedFeeds.Contains(feed))); + reachableFeeds = reachable.Union(feeds.Where(feed => excludedFeeds.Contains(feed))).ToImmutableHashSet(); return isTimeout; } @@ -396,8 +444,8 @@ private ImmutableHashSet GetExplicitFeeds() // in addition to the ones that are configured in `nuget.config` files. if (HasPrivateRegistryFeeds) { - logger.LogInfo($"Found {PrivateRegistryFeeds.Count} private registry feeds configured for C#: {string.Join(", ", PrivateRegistryFeeds.OrderBy(f => f))}"); - explicitFeeds.UnionWith(PrivateRegistryFeeds); + logger.LogInfo($"Found {privateRegistryFeeds.Count} private registry feeds configured for C#: {string.Join(", ", privateRegistryFeeds.OrderBy(f => f))}"); + explicitFeeds.UnionWith(privateRegistryFeeds); } return explicitFeeds.ToImmutableHashSet(); diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs index 2b55923e46b3..98d5394b9235 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs @@ -110,7 +110,7 @@ public HashSet Restore() logger.LogInfo($"Checking NuGet feed responsiveness: {feedManager.CheckNugetFeedResponsiveness}"); compilationInfoContainer.CompilationInfos.Add(("NuGet feed responsiveness checked", feedManager.CheckNugetFeedResponsiveness ? "1" : "0")); - HashSet reachableFeeds = []; + ImmutableHashSet reachableFeeds = []; EmitNugetConfigDiagnostics(); @@ -118,24 +118,20 @@ public HashSet Restore() // are explicitly configured for the project or by a private registry, and "all feeds" // (including inherited ones) from other locations on the host outside of the working directory. var explicitFeeds = feedManager.ExplicitFeeds; - var allFeeds = feedManager.AllFeeds; if (feedManager.CheckNugetFeedResponsiveness) { - var inheritedFeeds = allFeeds.Except(explicitFeeds).ToImmutableHashSet(); + var inheritedFeeds = feedManager.InheritedFeeds; if (inheritedFeeds.Count > 0) { compilationInfoContainer.CompilationInfos.Add(("Inherited NuGet feed count", inheritedFeeds.Count.ToString())); } - var timeout = feedManager.CheckSpecifiedFeeds(explicitFeeds, out var reachableExplicitFeeds); - reachableFeeds.UnionWith(reachableExplicitFeeds); - - var allExplicitReachable = explicitFeeds.Count == reachableExplicitFeeds.Count; + var allExplicitReachable = explicitFeeds.Count == feedManager.ReachableExplicitFeeds.Count; EmitUnreachableFeedsDiagnostics(allExplicitReachable); - if (timeout) + if (feedManager.ExplicitFeedTimeout) { // If we experience a timeout, we use this fallback. // todo: we could also check the reachability of the inherited nuget feeds, but to use those in the fallback we would need to handle authentication too. @@ -145,9 +141,7 @@ public HashSet Restore() : [unresponsiveMissingPackageLocation]; } - // Inherited feeds should only be used, if they are indeed reachable (as they may be environment specific). - feedManager.CheckSpecifiedFeeds(inheritedFeeds, out var reachableInheritedFeeds); - reachableFeeds.UnionWith(reachableInheritedFeeds); + reachableFeeds = feedManager.ReachableFeeds; } try @@ -224,7 +218,7 @@ public HashSet Restore() /// Populates dependencies with the relevant dependencies from the assets files generated by the restore. /// Returns a list of projects that are up to date with respect to restore. /// - private IEnumerable RestoreSolutions(HashSet reachableFeeds, out DependencyContainer dependencies) + private IEnumerable RestoreSolutions(ImmutableHashSet reachableFeeds, out DependencyContainer dependencies) { var successCount = 0; var nugetSourceFailures = 0; @@ -269,7 +263,7 @@ private IEnumerable RestoreSolutions(HashSet reachableFeeds, out /// /// A list of paths to project files. /// The set of reachable NuGet feeds. - private void RestoreProjects(IEnumerable projects, HashSet reachableFeeds, out ConcurrentBag dependencies) + private void RestoreProjects(IEnumerable projects, ImmutableHashSet reachableFeeds, out ConcurrentBag dependencies) { var successCount = 0; var nugetSourceFailures = 0; diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs index af484ba406e4..26f9e42d435d 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.Immutable; using System.Diagnostics; using System.IO; using System.Linq; @@ -33,7 +34,7 @@ internal interface IPackagesConfigRestore /// internal class PackagesConfigRestoreFactory { - public static IPackagesConfigRestore Create(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager, HashSet reachableFeeds) + public static IPackagesConfigRestore Create(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager, ImmutableHashSet reachableFeeds) { if (SystemBuildActions.Instance.IsWindows() || SystemBuildActions.Instance.IsMonoInstalled()) { @@ -64,7 +65,7 @@ private class NugetExeWrapper : IPackagesConfigRestore /// private readonly DependencyDirectory packageDirectory; private readonly FeedManager feedManager; - private readonly HashSet reachableFeeds; + private readonly ImmutableHashSet reachableFeeds; private bool IsWindows => SystemBuildActions.Instance.IsWindows(); @@ -75,7 +76,7 @@ private class NugetExeWrapper : IPackagesConfigRestore /// /// Create the package manager for a specified source tree. /// - public NugetExeWrapper(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager, HashSet reachableFeeds) + public NugetExeWrapper(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager, ImmutableHashSet reachableFeeds) { this.fileProvider = fileProvider; this.packageDirectory = packageDirectory; From 13c2c8d34df40efb814997314750b03db2acc2a0 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 25 Jun 2026 14:16:50 +0200 Subject: [PATCH 074/167] C#: Do not pass around the set of reachable feeds. This implicitly delays the calculation of the reachable feeds until it is needed/used. --- .../FeedManager.cs | 10 ++++------ .../NugetPackageRestorer.cs | 18 +++++++----------- .../PackagesConfigRestorer.cs | 10 ++++------ 3 files changed, 15 insertions(+), 23 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs index b0a402148220..ec5b781eaacf 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs @@ -170,9 +170,8 @@ public string FeedsToRestoreArgument(IEnumerable feeds, string sourceArg /// (2) Use private registries, if they are configured /// /// Path to project/solution/packages.config - /// The set of reachable NuGet feeds. /// The list of NuGet feeds to use for this restore. - public IEnumerable FeedsToUse(string path, ImmutableHashSet reachableFeeds) + public IEnumerable FeedsToUse(string path) { // Find the path specific feeds. var folder = GetDirectoryName(path); @@ -184,7 +183,7 @@ public IEnumerable FeedsToUse(string path, ImmutableHashSet reac } var feedsToUse = CheckNugetFeedResponsiveness - ? feedsToConsider.Where(reachableFeeds.Contains) + ? feedsToConsider.Where(ReachableFeeds.Contains) : feedsToConsider; return feedsToUse; @@ -196,9 +195,8 @@ public IEnumerable FeedsToUse(string path, ImmutableHashSet reac /// (2) Use private registries, if they are configured /// /// Path to project/solution - /// The set of reachable NuGet feeds. /// A string representing the NuGet sources argument for the restore command. - public string? MakeDotnetRestoreSourcesArgument(string path, ImmutableHashSet reachableFeeds) + public string? MakeDotnetRestoreSourcesArgument(string path) { // Do not construct a set of explicit NuGet sources to use for restore. if (!CheckNugetFeedResponsiveness && !HasPrivateRegistryFeeds) @@ -206,7 +204,7 @@ public IEnumerable FeedsToUse(string path, ImmutableHashSet reac return null; } - var feedsToUse = FeedsToUse(path, reachableFeeds); + var feedsToUse = FeedsToUse(path); return FeedsToRestoreArgument(feedsToUse, "-s"); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs index 98d5394b9235..bcccfda829a8 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs @@ -110,8 +110,6 @@ public HashSet Restore() logger.LogInfo($"Checking NuGet feed responsiveness: {feedManager.CheckNugetFeedResponsiveness}"); compilationInfoContainer.CompilationInfos.Add(("NuGet feed responsiveness checked", feedManager.CheckNugetFeedResponsiveness ? "1" : "0")); - ImmutableHashSet reachableFeeds = []; - EmitNugetConfigDiagnostics(); // Find feeds that are configured in NuGet.config files and divide them into ones that @@ -141,12 +139,11 @@ public HashSet Restore() : [unresponsiveMissingPackageLocation]; } - reachableFeeds = feedManager.ReachableFeeds; } try { - var packagesConfigRestore = PackagesConfigRestoreFactory.Create(fileProvider, legacyPackageDirectory, logger, feedManager, reachableFeeds); + var packagesConfigRestore = PackagesConfigRestoreFactory.Create(fileProvider, legacyPackageDirectory, logger, feedManager); var count = packagesConfigRestore.InstallPackages(); if (packagesConfigRestore.PackageCount > 0) { @@ -184,9 +181,9 @@ public HashSet Restore() } // Restore project dependencies with `dotnet restore`. - var restoredProjects = RestoreSolutions(reachableFeeds, out var container); + var restoredProjects = RestoreSolutions(out var container); var projects = fileProvider.Projects.Except(restoredProjects); - RestoreProjects(projects, reachableFeeds, out var containers); + RestoreProjects(projects, out var containers); var dependencies = containers.Flatten(container); @@ -218,7 +215,7 @@ public HashSet Restore() /// Populates dependencies with the relevant dependencies from the assets files generated by the restore. /// Returns a list of projects that are up to date with respect to restore. /// - private IEnumerable RestoreSolutions(ImmutableHashSet reachableFeeds, out DependencyContainer dependencies) + private IEnumerable RestoreSolutions(out DependencyContainer dependencies) { var successCount = 0; var nugetSourceFailures = 0; @@ -231,7 +228,7 @@ private IEnumerable RestoreSolutions(ImmutableHashSet reachableF var projects = fileProvider.Solutions.SelectMany(solution => { logger.LogInfo($"Restoring solution {solution}..."); - var nugetSources = feedManager.MakeDotnetRestoreSourcesArgument(solution, reachableFeeds); + var nugetSources = feedManager.MakeDotnetRestoreSourcesArgument(solution); var res = dotnet.Restore(new(solution, PackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true, NugetSources: nugetSources, TargetWindows: isWindows)); if (res.Success) { @@ -262,8 +259,7 @@ private IEnumerable RestoreSolutions(ImmutableHashSet reachableF /// Populates dependencies with the relative paths to the assets files generated by the restore. /// /// A list of paths to project files. - /// The set of reachable NuGet feeds. - private void RestoreProjects(IEnumerable projects, ImmutableHashSet reachableFeeds, out ConcurrentBag dependencies) + private void RestoreProjects(IEnumerable projects, out ConcurrentBag dependencies) { var successCount = 0; var nugetSourceFailures = 0; @@ -280,7 +276,7 @@ private void RestoreProjects(IEnumerable projects, ImmutableHashSet internal class PackagesConfigRestoreFactory { - public static IPackagesConfigRestore Create(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager, ImmutableHashSet reachableFeeds) + public static IPackagesConfigRestore Create(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager) { if (SystemBuildActions.Instance.IsWindows() || SystemBuildActions.Instance.IsMonoInstalled()) { - return new NugetExeWrapper(fileProvider, packageDirectory, logger, feedManager, reachableFeeds); + return new NugetExeWrapper(fileProvider, packageDirectory, logger, feedManager); } return new NoOpPackagesConfig(fileProvider.PackagesConfigs, logger); @@ -65,7 +65,6 @@ private class NugetExeWrapper : IPackagesConfigRestore /// private readonly DependencyDirectory packageDirectory; private readonly FeedManager feedManager; - private readonly ImmutableHashSet reachableFeeds; private bool IsWindows => SystemBuildActions.Instance.IsWindows(); @@ -76,13 +75,12 @@ private class NugetExeWrapper : IPackagesConfigRestore /// /// Create the package manager for a specified source tree. /// - public NugetExeWrapper(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager, ImmutableHashSet reachableFeeds) + public NugetExeWrapper(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager) { this.fileProvider = fileProvider; this.packageDirectory = packageDirectory; this.logger = logger; this.feedManager = feedManager; - this.reachableFeeds = reachableFeeds; if (fileProvider.PackagesConfigs.Count > 0) { @@ -171,7 +169,7 @@ private bool TryRestoreNugetPackage(string packagesConfig) logger.LogInfo($"Restoring file \"{packagesConfig}\"..."); var sourcesArgument = ""; - var feedsToUse = feedManager.FeedsToUse(packagesConfig, reachableFeeds).ToList(); + var feedsToUse = feedManager.FeedsToUse(packagesConfig).ToList(); var useDefaultFeed = feedsToUse.Count == 0 && IsDefaultFeedReachable; // Explicitly construct the sources to be used for the restore command when checking feed From 179f29b8d5899b28ace26a9585213e3359552103 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 25 Jun 2026 15:21:47 +0200 Subject: [PATCH 075/167] C#: Use feed management for more package download flows. --- .../FeedManager.cs | 35 ++++++++---- .../NugetPackageRestorer.cs | 53 +++++++------------ 2 files changed, 46 insertions(+), 42 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs index ec5b781eaacf..99568fa9ce19 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs @@ -164,6 +164,20 @@ public string FeedsToRestoreArgument(IEnumerable feeds, string sourceArg return feedArgs.ToString(); } + private IEnumerable FeedsToUseAux(HashSet feedsToConsider) + { + if (HasPrivateRegistryFeeds) + { + feedsToConsider.UnionWith(privateRegistryFeeds); + } + + var feedsToUse = CheckNugetFeedResponsiveness + ? feedsToConsider.Where(ReachableFeeds.Contains) + : feedsToConsider; + + return feedsToUse; + } + /// /// Constructs the list of NuGet sources to use for this restore. /// (1) Use the feeds we get from `dotnet nuget list source` @@ -177,16 +191,19 @@ public IEnumerable FeedsToUse(string path) var folder = GetDirectoryName(path); var feedsToConsider = folder is not null ? GetFeedsFromFolder(folder).ToHashSet() : new HashSet(); - if (HasPrivateRegistryFeeds) - { - feedsToConsider.UnionWith(privateRegistryFeeds); - } + return FeedsToUseAux(feedsToConsider); + } - var feedsToUse = CheckNugetFeedResponsiveness - ? feedsToConsider.Where(ReachableFeeds.Contains) - : feedsToConsider; + public IEnumerable FeedsToUseFromConfig(string config) + { + var feedsToConsider = GetFeedsFromNugetConfig(config).ToHashSet(); - return feedsToUse; + return FeedsToUseAux(feedsToConsider); + } + + public string FeedsToDotnetRestoreArgument(IEnumerable feeds) + { + return FeedsToRestoreArgument(feeds, "-s"); } /// @@ -206,7 +223,7 @@ public IEnumerable FeedsToUse(string path) var feedsToUse = FeedsToUse(path); - return FeedsToRestoreArgument(feedsToUse, "-s"); + return FeedsToDotnetRestoreArgument(feedsToUse); } private (int initialTimeout, int tryCount) GetFeedRequestSettings(bool isFallback) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs index bcccfda829a8..8dd04e989edd 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs @@ -350,10 +350,18 @@ private void RestoreProjects(IEnumerable projects, out ConcurrentBag feeds = []; + if (fallbackNugetFeeds is not null) + { + feeds = fallbackNugetFeeds; + } + else if (GetNugetConfig() is string config) + { + feeds = feedManager.FeedsToUseFromConfig(config); + } + + var nugetSources = feedManager.FeedsToDotnetRestoreArgument(feeds); compilationInfoContainer.CompilationInfos.Add(("Fallback nuget restore", notYetDownloadedPackages.Count.ToString())); @@ -362,7 +370,7 @@ private void RestoreProjects(IEnumerable projects, out ConcurrentBag { - var success = TryRestorePackageManually(package.Name, nugetConfig, package.PackageReferenceSource, tryWithoutNugetConfig: fallbackNugetFeeds is null); + var success = TryRestorePackageManually(package.Name, nugetSources, package.PackageReferenceSource, tryWithoutNugetConfig: fallbackNugetFeeds is null); if (!success) { return; @@ -379,27 +387,6 @@ private void RestoreProjects(IEnumerable projects, out ConcurrentBag fallbackNugetFeeds, string folderPath) - { - var sb = new StringBuilder(); - fallbackNugetFeeds.ForEach((feed, index) => sb.AppendLine($"")); - - var nugetConfigPath = Path.Join(folderPath, "nuget.config"); - logger.LogInfo($"Creating fallback nuget.config file {nugetConfigPath}."); - File.WriteAllText(nugetConfigPath, - $""" - - - - - {sb} - - - """); - - return nugetConfigPath; - } - private string? GetNugetConfig() { var nugetConfigs = fileProvider.NugetConfigs; @@ -489,7 +476,7 @@ private static IEnumerable GetRestoredPackageDirectoryNames(DirectoryInf .Select(d => Path.GetFileName(d).ToLowerInvariant()); } - private bool TryRestorePackageManually(string package, string? nugetConfig = null, PackageReferenceSource packageReferenceSource = PackageReferenceSource.SdkCsProj, + private bool TryRestorePackageManually(string package, string? nugetSources = null, PackageReferenceSource packageReferenceSource = PackageReferenceSource.SdkCsProj, bool tryWithoutNugetConfig = true, bool tryPrereleaseVersion = true) { logger.LogInfo($"Restoring package {package}..."); @@ -512,17 +499,17 @@ private bool TryRestorePackageManually(string package, string? nugetConfig = nul return false; } - var res = TryRestorePackageManually(package, nugetConfig, tempDir, tryPrereleaseVersion); + var res = TryRestorePackageManually(package, nugetSources, tempDir, tryPrereleaseVersion); if (res.Success) { return true; } - if (tryWithoutNugetConfig && res.HasNugetPackageSourceError && nugetConfig is not null) + if (tryWithoutNugetConfig && res.HasNugetPackageSourceError && nugetSources is not null && !feedManager.CheckNugetFeedResponsiveness) { logger.LogDebug($"Trying to restore '{package}' without nuget.config."); // Restore could not be completed because the listed source is unavailable. Try without the nuget.config: - res = TryRestorePackageManually(package, nugetConfig: null, tempDir, tryPrereleaseVersion); + res = TryRestorePackageManually(package, nugetSources: null, tempDir, tryPrereleaseVersion); if (res.Success) { return true; @@ -533,16 +520,16 @@ private bool TryRestorePackageManually(string package, string? nugetConfig = nul return false; } - private RestoreResult TryRestorePackageManually(string package, string? nugetConfig, TemporaryDirectory tempDir, bool tryPrereleaseVersion) + private RestoreResult TryRestorePackageManually(string package, string? nugetSources, TemporaryDirectory tempDir, bool tryPrereleaseVersion) { - var res = dotnet.Restore(new(tempDir.DirInfo.FullName, missingPackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: false, PathToNugetConfig: nugetConfig, ForceReevaluation: true)); + var res = dotnet.Restore(new(tempDir.DirInfo.FullName, missingPackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: false, NugetSources: nugetSources, ForceReevaluation: true)); if (!res.Success && tryPrereleaseVersion && res.HasNugetNoStablePackageVersionError) { logger.LogDebug($"Failed to restore nuget package {package} because no stable version was found."); TryChangePackageVersion(tempDir.DirInfo, "*-*"); - res = dotnet.Restore(new(tempDir.DirInfo.FullName, missingPackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: false, PathToNugetConfig: nugetConfig, ForceReevaluation: true)); + res = dotnet.Restore(new(tempDir.DirInfo.FullName, missingPackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: false, NugetSources: nugetSources, ForceReevaluation: true)); if (!res.Success) { TryChangePackageVersion(tempDir.DirInfo, "*"); From 0874377bf359c757b6be4ece67796ad8469ff4d9 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 25 Jun 2026 15:31:17 +0200 Subject: [PATCH 076/167] C#: Remove the dotnet restore config file option. --- .../Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs | 5 ----- .../IDotNet.cs | 2 +- csharp/extractor/Semmle.Extraction.Tests/DotNet.cs | 8 ++++---- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs index e93a29336126..e02d157dc620 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs @@ -80,11 +80,6 @@ private string GetRestoreArgs(RestoreSettings restoreSettings) args += $" /p:TargetFrameworkRootPath=\"{path}\" /p:NetCoreTargetingPackRoot=\"{path}\" /p:AllowMissingPrunePackageData=true"; } - if (restoreSettings.PathToNugetConfig != null) - { - args += $" --configfile \"{restoreSettings.PathToNugetConfig}\""; - } - if (restoreSettings.ForceReevaluation) { args += " --force"; diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs index d14dee506524..394a05e9e596 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs @@ -17,7 +17,7 @@ public interface IDotNet IList GetNugetFeedsFromFolder(string folderPath); } - public record class RestoreSettings(string File, string PackageDirectory, bool ForceDotnetRefAssemblyFetching, string? NugetSources = null, string? PathToNugetConfig = null, bool ForceReevaluation = false, bool TargetWindows = false); + public record class RestoreSettings(string File, string PackageDirectory, bool ForceDotnetRefAssemblyFetching, string? NugetSources = null, bool ForceReevaluation = false, bool TargetWindows = false); public partial record class RestoreResult(bool Success, IList Output) { diff --git a/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs b/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs index a2996497e005..74939b61af5e 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs @@ -130,11 +130,11 @@ public void TestDotnetRestoreProjectToDirectory2() var dotnet = MakeDotnet(dotnetCliInvoker); // Execute - var res = dotnet.Restore(new("myproject.csproj", "mypackages", false, null, "myconfig.config")); + var res = dotnet.Restore(new("myproject.csproj", "mypackages", false, null)); // Verify var lastArgs = dotnetCliInvoker.GetLastArgs(); - Assert.Equal("restore --no-dependencies \"myproject.csproj\" --packages \"mypackages\" /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile \"myconfig.config\"", lastArgs); + Assert.Equal("restore --no-dependencies \"myproject.csproj\" --packages \"mypackages\" /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal", lastArgs); Assert.Equal(2, res.AssetsFilePaths.Count()); Assert.Contains("/path/to/project.assets.json", res.AssetsFilePaths); Assert.Contains("/path/to/project2.assets.json", res.AssetsFilePaths); @@ -148,11 +148,11 @@ public void TestDotnetRestoreProjectToDirectory3() var dotnet = MakeDotnet(dotnetCliInvoker); // Execute - var res = dotnet.Restore(new("myproject.csproj", "mypackages", false, null, "myconfig.config", true)); + var res = dotnet.Restore(new("myproject.csproj", "mypackages", false, null, true)); // Verify var lastArgs = dotnetCliInvoker.GetLastArgs(); - Assert.Equal("restore --no-dependencies \"myproject.csproj\" --packages \"mypackages\" /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile \"myconfig.config\" --force", lastArgs); + Assert.Equal("restore --no-dependencies \"myproject.csproj\" --packages \"mypackages\" /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --force", lastArgs); Assert.Equal(2, res.AssetsFilePaths.Count()); Assert.Contains("/path/to/project.assets.json", res.AssetsFilePaths); Assert.Contains("/path/to/project2.assets.json", res.AssetsFilePaths); From 2d1edd4b3f3537282e16ec2d7ba73e843cf243c5 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 29 Jun 2026 15:42:33 +0200 Subject: [PATCH 077/167] C#: Add some more documentation in the FeedManager. --- .../FeedManager.cs | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs index 99568fa9ce19..9694a60d3127 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs @@ -26,7 +26,14 @@ internal sealed partial class FeedManager : IDisposable private readonly DependencyDirectory emptyPackageDirectory; private readonly ImmutableHashSet privateRegistryFeeds; + /// + /// Gets whether there are private package registries configured for C#. + /// public bool HasPrivateRegistryFeeds { get; } + + /// + /// Gets whether the reachability of the NuGet feeds should be checked before using them for restore. + /// public bool CheckNugetFeedResponsiveness { get; } = EnvironmentVariables.GetBooleanOptOut(EnvironmentVariableNames.CheckNugetFeedResponsiveness); private readonly Lazy> lazyExplicitFeeds; @@ -145,6 +152,13 @@ private IEnumerable GetFeedsFromFolder(string folderPath) => private IEnumerable GetFeedsFromNugetConfig(string nugetConfigPath) => GetFeeds(() => dotnet.GetNugetFeeds(nugetConfigPath)); + /// + /// Constructs the NuGet sources argument for the restore command based on the given feeds. + /// If there are no feeds, a dummy source argument is added to override any default feeds that `restore` would use. + /// + /// The list of feeds to use for the restore command. + /// The prefix to use for each source argument (e.g., "-s"). + /// The constructed NuGet sources argument for the restore command. public string FeedsToRestoreArgument(IEnumerable feeds, string sourceArgumentPrefix) { // If there are no feeds, we want to override any default feeds that `restore` would use by passing a dummy source argument. @@ -194,6 +208,13 @@ public IEnumerable FeedsToUse(string path) return FeedsToUseAux(feedsToConsider); } + /// + /// Constructs the list of NuGet sources to use for this restore. + /// (1) Use the feeds we get from `dotnet nuget list source --configfile` + /// (2) Use private registries, if they are configured + /// + /// Path to the NuGet configuration file. + /// The list of NuGet feeds to use for this restore. public IEnumerable FeedsToUseFromConfig(string config) { var feedsToConsider = GetFeedsFromNugetConfig(config).ToHashSet(); @@ -201,6 +222,11 @@ public IEnumerable FeedsToUseFromConfig(string config) return FeedsToUseAux(feedsToConsider); } + /// + /// Constructs the NuGet sources argument for the `dotnet restore` command based on the given feeds. + /// + /// The list of NuGet feeds to use for the restore command. + /// A string representing the NuGet sources argument for the `dotnet restore` command. public string FeedsToDotnetRestoreArgument(IEnumerable feeds) { return FeedsToRestoreArgument(feeds, "-s"); @@ -212,7 +238,7 @@ public string FeedsToDotnetRestoreArgument(IEnumerable feeds) /// (2) Use private registries, if they are configured /// /// Path to project/solution - /// A string representing the NuGet sources argument for the restore command. + /// A string representing the NuGet sources argument for the `dotnet restore` command. public string? MakeDotnetRestoreSourcesArgument(string path) { // Do not construct a set of explicit NuGet sources to use for restore. @@ -367,6 +393,11 @@ private bool CheckSpecifiedFeeds(ImmutableHashSet feeds, out ImmutableHa return isTimeout; } + /// + /// Return true if the default NuGet feed is reachable, false otherwise. + /// If the reachability check is disabled, this method will always return true. + /// + /// True if the default NuGet feed is reachable, false otherwise. public bool IsDefaultFeedReachable() { if (CheckNugetFeedResponsiveness) From 3411459fb6eb863d1b77556e989ae15b6716ebae Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 29 Jun 2026 16:21:58 +0200 Subject: [PATCH 078/167] C#: Remove the explicitfeeds argument from DownloadMissingPackagesFromSpecificFeeds as it is always called with this argument. --- .../FeedManager.cs | 12 ++++++------ .../NugetPackageRestorer.cs | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs index 9694a60d3127..e7ff1514d507 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs @@ -445,7 +445,7 @@ private List GetReachableNuGetFeeds(HashSet feedsToCheck, bool i return reachableFeeds; } - public List GetReachableFallbackNugetFeeds(ImmutableHashSet? feedsFromNugetConfigs) + private List GetReachableFallbackNugetFeeds() { var fallbackFeeds = EnvironmentVariables.GetURLs(EnvironmentVariableNames.FallbackNugetFeeds).ToHashSet(); if (fallbackFeeds.Count == 0) @@ -456,12 +456,12 @@ public List GetReachableFallbackNugetFeeds(ImmutableHashSet? fee var shouldAddNugetConfigFeeds = EnvironmentVariables.GetBooleanOptOut(EnvironmentVariableNames.AddNugetConfigFeedsToFallback); logger.LogInfo($"Adding feeds from nuget.config to fallback restore: {shouldAddNugetConfigFeeds}"); - if (shouldAddNugetConfigFeeds && feedsFromNugetConfigs?.Count > 0) + if (shouldAddNugetConfigFeeds && ExplicitFeeds.Count > 0) { - // There are some feeds in `feedsFromNugetConfigs` that have already been checked for reachability, we could skip those. - // But we might use different responsiveness testing settings when we try them in the fallback logic, so checking them again is safer. - fallbackFeeds.UnionWith(feedsFromNugetConfigs); - logger.LogInfo($"Using NuGet feeds from nuget.config files as fallback feeds: {string.Join(", ", feedsFromNugetConfigs.OrderBy(f => f))}"); + // Feeds in `ExplicitFeeds` may already been checked for reachability. + // But we might use different responsiveness testing settings when we try them in the fallback logic, so checking them again. + fallbackFeeds.UnionWith(ExplicitFeeds); + logger.LogInfo($"Using NuGet feeds from nuget.config files as fallback feeds: {string.Join(", ", ExplicitFeeds.OrderBy(f => f))}"); } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs index 8dd04e989edd..c65c2153beaf 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs @@ -133,7 +133,7 @@ public HashSet Restore() { // If we experience a timeout, we use this fallback. // todo: we could also check the reachability of the inherited nuget feeds, but to use those in the fallback we would need to handle authentication too. - var unresponsiveMissingPackageLocation = DownloadMissingPackagesFromSpecificFeeds([], explicitFeeds); + var unresponsiveMissingPackageLocation = DownloadMissingPackagesAndUseFallback([]); return unresponsiveMissingPackageLocation is null ? [] : [unresponsiveMissingPackageLocation]; @@ -196,7 +196,7 @@ public HashSet Restore() var usedPackageNames = GetAllUsedPackageDirNames(dependencies); var missingPackageLocation = feedManager.CheckNugetFeedResponsiveness - ? DownloadMissingPackagesFromSpecificFeeds(usedPackageNames, explicitFeeds) + ? DownloadMissingPackagesAndUseFallback(usedPackageNames) : DownloadMissingPackages(usedPackageNames); if (missingPackageLocation is not null) @@ -303,9 +303,9 @@ private void RestoreProjects(IEnumerable projects, out ConcurrentBag usedPackageNames, ImmutableHashSet? feedsFromNugetConfigs) + private AssemblyLookupLocation? DownloadMissingPackagesAndUseFallback(IEnumerable usedPackageNames) { - var reachableFallbackFeeds = feedManager.GetReachableFallbackNugetFeeds(feedsFromNugetConfigs); + var reachableFallbackFeeds = feedManager.GetReachableFallbackNugetFeeds(); compilationInfoContainer.CompilationInfos.Add(("Reachable fallback NuGet feed count", reachableFallbackFeeds.Count.ToString())); if (reachableFallbackFeeds.Count > 0) From 25b640bd680f2240c900dcdd4992c3f583592a3b Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 30 Jun 2026 15:09:52 +0200 Subject: [PATCH 079/167] C#: Push the feed fetching logic into DownloadPackages, use allfeeds instead of a specific nuget.config file, and supply a list of nuget sources when using the TryRestore. --- .../FeedManager.cs | 27 +++--- .../NugetPackageRestorer.cs | 84 ++++++------------- 2 files changed, 36 insertions(+), 75 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs index e7ff1514d507..87aa3c575790 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs @@ -78,6 +78,12 @@ internal sealed partial class FeedManager : IDisposable /// public ImmutableHashSet ReachableFeeds => lazyReachableFeeds.Value; + private readonly Lazy> lazyReachableFallbackFeeds; + /// + /// Gets the list of reachable NuGet feeds that are configured as fallback feeds. + /// + public ImmutableHashSet ReachableFallbackFeeds => lazyReachableFallbackFeeds.Value; + public FeedManager(ILogger logger, IDotNet dotnet, DependabotProxy? dependabotProxy, FileProvider fileProvider) { this.logger = logger; @@ -101,9 +107,13 @@ public FeedManager(ILogger logger, IDotNet dotnet, DependabotProxy? dependabotPr CheckSpecifiedFeeds(InheritedFeeds, out var reachableInheritedFeeds); return ReachableExplicitFeeds.Union(reachableInheritedFeeds).ToImmutableHashSet(); }); + lazyReachableFallbackFeeds = new Lazy>(() => + { + var reachableFallbackFeeds = GetReachableFallbackNugetFeeds(); + return reachableFallbackFeeds.ToImmutableHashSet(); + }); } - private string? GetDirectoryName(string path) { try @@ -148,7 +158,6 @@ private IEnumerable GetFeeds(Func> getNugetFeeds) private IEnumerable GetFeedsFromFolder(string folderPath) => GetFeeds(() => dotnet.GetNugetFeedsFromFolder(folderPath)); - private IEnumerable GetFeedsFromNugetConfig(string nugetConfigPath) => GetFeeds(() => dotnet.GetNugetFeeds(nugetConfigPath)); @@ -208,20 +217,6 @@ public IEnumerable FeedsToUse(string path) return FeedsToUseAux(feedsToConsider); } - /// - /// Constructs the list of NuGet sources to use for this restore. - /// (1) Use the feeds we get from `dotnet nuget list source --configfile` - /// (2) Use private registries, if they are configured - /// - /// Path to the NuGet configuration file. - /// The list of NuGet feeds to use for this restore. - public IEnumerable FeedsToUseFromConfig(string config) - { - var feedsToConsider = GetFeedsFromNugetConfig(config).ToHashSet(); - - return FeedsToUseAux(feedsToConsider); - } - /// /// Constructs the NuGet sources argument for the `dotnet restore` command based on the given feeds. /// diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs index c65c2153beaf..f9ffd1cec272 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs @@ -4,7 +4,6 @@ using System.Collections.Immutable; using System.IO; using System.Linq; -using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; @@ -53,7 +52,9 @@ public NugetPackageRestorer( public string? TryRestore(string package) { - if (TryRestorePackageManually(package)) + var feeds = feedManager.CheckNugetFeedResponsiveness ? feedManager.ReachableFeeds : feedManager.AllFeeds; + var nugetSources = feedManager.FeedsToDotnetRestoreArgument(feeds); + if (TryRestorePackageManually(package, nugetSources)) { var packageDir = DependencyManager.GetPackageDirectory(package, missingPackageDirectory.DirInfo); if (packageDir is not null) @@ -133,7 +134,7 @@ public HashSet Restore() { // If we experience a timeout, we use this fallback. // todo: we could also check the reachability of the inherited nuget feeds, but to use those in the fallback we would need to handle authentication too. - var unresponsiveMissingPackageLocation = DownloadMissingPackagesAndUseFallback([]); + var unresponsiveMissingPackageLocation = DownloadMissingPackages([]); return unresponsiveMissingPackageLocation is null ? [] : [unresponsiveMissingPackageLocation]; @@ -195,9 +196,7 @@ public HashSet Restore() var usedPackageNames = GetAllUsedPackageDirNames(dependencies); - var missingPackageLocation = feedManager.CheckNugetFeedResponsiveness - ? DownloadMissingPackagesAndUseFallback(usedPackageNames) - : DownloadMissingPackages(usedPackageNames); + var missingPackageLocation = DownloadMissingPackages(usedPackageNames); if (missingPackageLocation is not null) { @@ -303,22 +302,28 @@ private void RestoreProjects(IEnumerable projects, out ConcurrentBag usedPackageNames) + private AssemblyLookupLocation? DownloadMissingPackages(IEnumerable usedPackageNames) { - var reachableFallbackFeeds = feedManager.GetReachableFallbackNugetFeeds(); - compilationInfoContainer.CompilationInfos.Add(("Reachable fallback NuGet feed count", reachableFallbackFeeds.Count.ToString())); + ImmutableHashSet feeds; + if (feedManager.CheckNugetFeedResponsiveness) + { + // Attempt to get the fallback configuration. + var reachableFallbackFeeds = feedManager.ReachableFallbackFeeds; + compilationInfoContainer.CompilationInfos.Add(("Reachable fallback NuGet feed count", reachableFallbackFeeds.Count.ToString())); - if (reachableFallbackFeeds.Count > 0) + if (reachableFallbackFeeds.Count == 0) + { + logger.LogWarning("Skipping download of missing packages from specific feeds as no fallback NuGet feeds are reachable."); + return null; + } + feeds = reachableFallbackFeeds; + } + else { - return DownloadMissingPackages(usedPackageNames, fallbackNugetFeeds: reachableFallbackFeeds); + feeds = feedManager.AllFeeds; } - logger.LogWarning("Skipping download of missing packages from specific feeds as no fallback NuGet feeds are reachable."); - return null; - } - - private AssemblyLookupLocation? DownloadMissingPackages(IEnumerable usedPackageNames, IEnumerable? fallbackNugetFeeds = null) - { + var nugetSources = feedManager.FeedsToDotnetRestoreArgument(feeds); var alreadyDownloadedPackages = usedPackageNames.Select(p => p.ToLowerInvariant()); var alreadyDownloadedLegacyPackages = GetRestoredLegacyPackageNames(); @@ -351,18 +356,6 @@ private void RestoreProjects(IEnumerable projects, out ConcurrentBag feeds = []; - if (fallbackNugetFeeds is not null) - { - feeds = fallbackNugetFeeds; - } - else if (GetNugetConfig() is string config) - { - feeds = feedManager.FeedsToUseFromConfig(config); - } - - var nugetSources = feedManager.FeedsToDotnetRestoreArgument(feeds); - compilationInfoContainer.CompilationInfos.Add(("Fallback nuget restore", notYetDownloadedPackages.Count.ToString())); var successCount = 0; @@ -370,7 +363,7 @@ private void RestoreProjects(IEnumerable projects, out ConcurrentBag { - var success = TryRestorePackageManually(package.Name, nugetSources, package.PackageReferenceSource, tryWithoutNugetConfig: fallbackNugetFeeds is null); + var success = TryRestorePackageManually(package.Name, nugetSources, package.PackageReferenceSource); if (!success) { return; @@ -387,32 +380,6 @@ private void RestoreProjects(IEnumerable projects, out ConcurrentBag 1) - { - logger.LogInfo($"Found multiple nuget.config files: {string.Join(", ", nugetConfigs)}."); - nugetConfig = fileProvider.RootNugetConfig; - if (nugetConfig == null) - { - logger.LogInfo("Could not find a top-level nuget.config file."); - } - } - else - { - nugetConfig = nugetConfigs.FirstOrDefault(); - } - - if (nugetConfig != null) - { - logger.LogInfo($"Using nuget.config file {nugetConfig}."); - } - - return nugetConfig; - } - private IEnumerable GetAllUsedPackageDirNames(DependencyContainer dependencies) { var allPackageDirectories = GetAllPackageDirectories(); @@ -476,8 +443,7 @@ private static IEnumerable GetRestoredPackageDirectoryNames(DirectoryInf .Select(d => Path.GetFileName(d).ToLowerInvariant()); } - private bool TryRestorePackageManually(string package, string? nugetSources = null, PackageReferenceSource packageReferenceSource = PackageReferenceSource.SdkCsProj, - bool tryWithoutNugetConfig = true, bool tryPrereleaseVersion = true) + private bool TryRestorePackageManually(string package, string? nugetSources, PackageReferenceSource packageReferenceSource = PackageReferenceSource.SdkCsProj, bool tryPrereleaseVersion = true) { logger.LogInfo($"Restoring package {package}..."); using var tempDir = new TemporaryDirectory( @@ -505,7 +471,7 @@ private bool TryRestorePackageManually(string package, string? nugetSources = nu return true; } - if (tryWithoutNugetConfig && res.HasNugetPackageSourceError && nugetSources is not null && !feedManager.CheckNugetFeedResponsiveness) + if (!feedManager.CheckNugetFeedResponsiveness && res.HasNugetPackageSourceError && nugetSources is not null) { logger.LogDebug($"Trying to restore '{package}' without nuget.config."); // Restore could not be completed because the listed source is unavailable. Try without the nuget.config: From b34fe443c3496883df772fac2ae0b300e676cd2c Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 17 Jul 2026 15:19:09 +0200 Subject: [PATCH 080/167] C#: Add change note. --- .../ql/lib/change-notes/2026-07-17-nuget-package-restore.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2026-07-17-nuget-package-restore.md diff --git a/csharp/ql/lib/change-notes/2026-07-17-nuget-package-restore.md b/csharp/ql/lib/change-notes/2026-07-17-nuget-package-restore.md new file mode 100644 index 000000000000..0673bffa3049 --- /dev/null +++ b/csharp/ql/lib/change-notes/2026-07-17-nuget-package-restore.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Simplified and streamlined the use of NuGet sources when downloading dependencies. In fallback scenarios and specialized package downloads, NuGet sources are now passed directly to `dotnet restore` via `-s`. Furthermore, no `nuget.config` files are created for fallback scenarios, and private registries are used when attempting to download missing packages that were not restored as part of the normal `dotnet restore` process. From 41b257d004807d4bd2a32a0b8c9108deb3f76384 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 12 Aug 2026 15:06:26 +0200 Subject: [PATCH 081/167] C#: Address review comments. --- .../FeedManager.cs | 4 ++-- .../NugetPackageRestorer.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs index 87aa3c575790..1d5523a983cb 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs @@ -453,8 +453,8 @@ private List GetReachableFallbackNugetFeeds() if (shouldAddNugetConfigFeeds && ExplicitFeeds.Count > 0) { - // Feeds in `ExplicitFeeds` may already been checked for reachability. - // But we might use different responsiveness testing settings when we try them in the fallback logic, so checking them again. + // Feeds in `ExplicitFeeds` may already have been checked for reachability. + // However, the fallback logic may use different responsiveness settings, so check them again. fallbackFeeds.UnionWith(ExplicitFeeds); logger.LogInfo($"Using NuGet feeds from nuget.config files as fallback feeds: {string.Join(", ", ExplicitFeeds.OrderBy(f => f))}"); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs index f9ffd1cec272..aeedbc176867 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs @@ -473,8 +473,8 @@ private bool TryRestorePackageManually(string package, string? nugetSources, Pac if (!feedManager.CheckNugetFeedResponsiveness && res.HasNugetPackageSourceError && nugetSources is not null) { - logger.LogDebug($"Trying to restore '{package}' without nuget.config."); - // Restore could not be completed because the listed source is unavailable. Try without the nuget.config: + logger.LogDebug($"Trying to restore '{package}' without explicitly providing NuGet sources."); + // Restore could not be completed because the listed source is unavailable. Try without an explicit restore source argument. res = TryRestorePackageManually(package, nugetSources: null, tempDir, tryPrereleaseVersion); if (res.Success) { From 710a7539ca725ab12e09d1f88da8a1d12ef5f18e Mon Sep 17 00:00:00 2001 From: Keshav Malik Date: Wed, 12 Aug 2026 23:18:34 +0530 Subject: [PATCH 082/167] Simplify composite action lookup --- actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql b/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql index 9a4bc007bb51..f98439063712 100644 --- a/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql +++ b/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql @@ -43,9 +43,8 @@ private predicate hasUsesContainerName(Uses uses, string name) { ) ) or - exists(UsesStep step, CompositeAction action | - uses = step and - step.getEnclosingCompositeAction() = action and + exists(CompositeAction action | + uses.getEnclosingCompositeAction() = action and name = action.getLocation().getFile().getBaseName() ) } From 39998944caafaee40ed5adb1abc5018f8a456811 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 13 Aug 2026 11:04:33 +0200 Subject: [PATCH 083/167] unified: Clarify description of derivedStoreReadStep --- .../ql/lib/codeql/unified/internal/StaticNameBinding.qll | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index 4a677769f5c0..c2734381845d 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -264,13 +264,14 @@ module Track { } /** - * Holds if `node1 -> node2` is derived by combining a store and a read step. + * Holds if `node1 -> node2` is derived by combining a store and a read step, with zero or more value steps and inheritance steps in-between. */ pragma[nomagic] private predicate derivedStoreReadStep(NameBindingNode node1, NameBindingNode node2) { exists(NamespaceNode namespace, string name | - node1 = namespace.getMember(name) and - readStep(namespace.ref(), name, node2) + node1 = namespace.getMember(name) and // getMember() combines a store step with subsequent inheritance steps + readStep(namespace.ref(), name, node2) and + node1 != node2 ) } From e88dde7791c0ac2cdd2166b1c6ab0d35069cbca0 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 13 Aug 2026 11:18:40 +0200 Subject: [PATCH 084/167] unified: Make debug graph subset more configurable --- .../unified/internal/StaticNameBinding.qll | 38 ++++++++++++++++--- .../dev/debugStaticNameBindingGraph.ql | 9 +++-- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index c2734381845d..bf334a52f5e6 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -42,6 +42,23 @@ class NameBindingNode extends TNameBindingNode { /** Holds if this represents the root namespace in which all named modules are members. */ predicate isModuleRoot() { this = TModuleRoot() } + /** + * Gets an AST node wrapped by this name-binding node, if such a node exists. + * + * Mainly for debugging purposes. + */ + AstNode getWrappedAstNode() { + this.isIdentifier(result) + or + this.isBulkImport(result) + or + this.isExportedNamespace(result) + or + this.isLocalNamespace(result) + or + this.isModuleScopeNode(result) + } + string toString() { exists(Identifier n | this.isIdentifier(n) and result = "Identifier(" + n + ")") or @@ -351,21 +368,32 @@ NameBindingNode trackNameDeclaration(NameDeclaration decl) { } /** Holds if `node` should be included in the debug view. */ -private signature predicate relevantFileSig(File node); +private signature predicate relevantNodeSig(AstNode node); -module DebugGraph { - private predicate relevantNode(NameBindingNode node) { - relevantFile(node.getLocation().getFile()) +module DebugGraph { + private predicate relevantNameBindingNode(NameBindingNode node) { + relevantNode(node.getWrappedAstNode()) + or + // Also consider LocalName to be relevant if any of its accesses are relevant + exists(LocalName name | + node.isLocalName(name) and + relevantNode(any(PotentialLocalNameAccess ac | ac.getLocalName() = name)) + ) + or + // Always include module root + node.isModuleRoot() } query predicate nodes(NameBindingNode node, string key, string value) { - relevantNode(node) and + relevantNameBindingNode(node) and key = "semmle.label" and value = node.toString() } query predicate edges(NameBindingNode node1, NameBindingNode node2, string key, string value) { key = "semmle.label" and + relevantNameBindingNode(node1) and + relevantNameBindingNode(node2) and ( valueStep(node1, node2) and value = "" or diff --git a/unified/ql/lib/codeql/unified/internal/dev/debugStaticNameBindingGraph.ql b/unified/ql/lib/codeql/unified/internal/dev/debugStaticNameBindingGraph.ql index 740943fc66db..f365d3915f89 100644 --- a/unified/ql/lib/codeql/unified/internal/dev/debugStaticNameBindingGraph.ql +++ b/unified/ql/lib/codeql/unified/internal/dev/debugStaticNameBindingGraph.ql @@ -9,8 +9,11 @@ private import unified private import codeql.unified.internal.StaticNameBinding /** - * Holds if graphs related to `file` should be shown in the graph. + * Holds if `node` should be shown in the graph. */ -predicate relevantFile(File file) { file.getBaseName() = "test.swift" } +predicate relevantNode(AstNode node) { + // Match an ancestor node by location so its whole subtree is shown. + node.getParent*().getLocation().toString().matches("%test.swift@13:%") +} -import DebugGraph +import DebugGraph From d30b7a0d6bc300a9dde31aae5f5878569249e328 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 13 Aug 2026 11:37:39 +0200 Subject: [PATCH 085/167] unified: Simplify uncertain scopes Marking Members as uncertain scopes led to inaccurate resolution when a member referred to itself, because the uncertain scope (Member) appeared in the scope chain before the LocalName scope (ClassLikeDeclaration). Meanwhile, one of the arguments for doing it, avoiding base classes etc from hitting the uncertain scope, was already fixed by local scope tree-rewrites. It gets harder to detect if a given access appears in static or instance context, but perhaps we'll probably want to expose such information through a separate predicate anyway. --- .../ql/lib/codeql/unified/internal/LocalNameBinding.qll | 6 +----- .../ql/lib/codeql/unified/internal/StaticNameBinding.qll | 9 +-------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll index d7020c153465..da0bd0540ea2 100644 --- a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll @@ -317,11 +317,7 @@ private module LocalNameBindingInput implements LocalNameBindingInputSig Date: Thu, 13 Aug 2026 11:43:02 +0200 Subject: [PATCH 086/167] unified: Don't step into declaration sites --- unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index 037d66b13bd9..b1242cfb8a27 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -134,6 +134,7 @@ predicate readStep(NameBindingNode node1, string name, NameBindingNode node2) { ) or exists(PotentialLocalNameAccess access | + not access.isDeclarationSite() and name = access.getName() and node1 = getNodeFromUncertainScope(LocalNameBindingOutput::getAnUncertainScope(access, name)) and node2.isIdentifier(access) @@ -182,6 +183,7 @@ predicate valueStep(NameBindingNode node1, NameBindingNode node2) { node1.isIdentifier(access) and node2.isLocalName(access.getLocalName()) or + not access.isDeclarationSite() and node1.isLocalName(access.getLocalName()) and node2.isIdentifier(access) ) From bec213b4c9c5ebfcc3239e421e277adf816ce344 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 13 Aug 2026 11:43:16 +0200 Subject: [PATCH 087/167] shared: Factor out declInScope(name, scope) --- .../codeql/namebinding/LocalNameBinding.qll | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/shared/namebinding/codeql/namebinding/LocalNameBinding.qll b/shared/namebinding/codeql/namebinding/LocalNameBinding.qll index c4d4abdead45..1aac957d7cea 100644 --- a/shared/namebinding/codeql/namebinding/LocalNameBinding.qll +++ b/shared/namebinding/codeql/namebinding/LocalNameBinding.qll @@ -354,13 +354,17 @@ module LocalNameBinding or exists(Scope mid | lookupInScope(name, lookup, mid) and - not declInScope(_, name, mid) and - not implicitDeclInScope(name, mid) and + not declInScope(name, mid) and not isTopScope(mid) and scope = getEnclosingScope(mid) ) } + private predicate declInScope(string name, AstNode scope) { + declInScope(_, name, scope) or + implicitDeclInScope(name, scope) + } + /** * Holds if `name`, when resolved from `lookup`, may resolve to one of the uncertain members of `scope`. */ @@ -368,8 +372,7 @@ module LocalNameBinding private predicate lookupInUncertainScope(string name, Scope lookup, Scope scope) { lookupInScope(name, lookup, scope) and uncertainScope(scope) and - not declInScope(_, name, scope) and - not implicitDeclInScope(name, scope) + not declInScope(name, scope) } /** From 4eade9eae1dd5ff7d3edc86f053fb9944b36255d Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 13 Aug 2026 11:44:11 +0200 Subject: [PATCH 088/167] shared: Rephrase a qldoc --- shared/namebinding/codeql/namebinding/LocalNameBinding.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/namebinding/codeql/namebinding/LocalNameBinding.qll b/shared/namebinding/codeql/namebinding/LocalNameBinding.qll index 1aac957d7cea..4a9c5b61db92 100644 --- a/shared/namebinding/codeql/namebinding/LocalNameBinding.qll +++ b/shared/namebinding/codeql/namebinding/LocalNameBinding.qll @@ -376,7 +376,7 @@ module LocalNameBinding } /** - * Gets an uncertain scope that the given `accessCand` pair may resolve to. + * Gets an uncertain scope in which the `accessCand` pair may resolve. */ AstNode getAnUncertainScope(AstNode access, string name) { exists(Scope lookup | From 828816c2734bf45293774d53da279b65f0dc0525 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 13 Aug 2026 11:45:12 +0200 Subject: [PATCH 089/167] unified: QLdoc fix --- unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll b/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll index de9c09f5bb70..352d39bd5f00 100644 --- a/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll +++ b/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll @@ -37,7 +37,7 @@ predicate isPrivateToLocalScope(Stmt member) { } /** - * Representative for a module scope. + * A representative for a module scope. * * Module scopes can encompass a set of files, and is the canonical representative * for the top-level members collectively exported from those files. From 78671cd4cc61e6b78b6fb11e5f2bff8208209acf Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 13 Aug 2026 11:46:04 +0200 Subject: [PATCH 090/167] unified: Prefer 'and' instead of '|' --- .../ql/lib/codeql/unified/internal/StaticNameBinding.qll | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index b1242cfb8a27..16ae5ad2602e 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -153,8 +153,7 @@ predicate storeStep(NameBindingNode node1, string name, NameBindingNode node2) { member = cls.getAMember() and not isInstanceMember(member) and not isPrivateToLocalScope(member) and - nameDecl.getDeclaration() = member - | + nameDecl.getDeclaration() = member and node1.isIdentifier(nameDecl) and name = nameDecl.getName() and node2.isExportedNamespace(cls) @@ -163,8 +162,7 @@ predicate storeStep(NameBindingNode node1, string name, NameBindingNode node2) { exists(TopLevel top, Stmt stmt, NameDeclaration nameDecl | stmt = top.getBody().getAStmt() and not isPrivateToLocalScope(stmt) and - nameDecl.getDeclaration() = stmt - | + nameDecl.getDeclaration() = stmt and node1.isIdentifier(nameDecl) and name = nameDecl.getName() and node2 = getModuleNodeFromFile(top.getFile()) From 94cb4033fb0e8fc7c0045311f91bee929e9f4dcc Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 13 Aug 2026 11:47:01 +0200 Subject: [PATCH 091/167] Rust: Always force high access path precision --- rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index f466249ada99..8793bf7a6272 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -583,7 +583,7 @@ module RustDataFlowGen implements InputSig class LambdaCallKind = LambdaCallKindAlias; - predicate forceHighPrecision(Content c) { none() } + predicate forceHighPrecision(Content c) { any() } class ContentApprox = ContentApproxAlias; From 360f281a4ab6748a91df83a37691fb33f933d238 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 13 Aug 2026 10:44:00 +0000 Subject: [PATCH 092/167] update codeql documentation --- .../codeql-changelog/codeql-cli-2.26.3.rst | 119 ++++++++++++++++++ .../codeql-changelog/index.rst | 1 + 2 files changed, 120 insertions(+) create mode 100644 docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.26.3.rst diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.26.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.26.3.rst new file mode 100644 index 000000000000..57a19ae4633a --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.26.3.rst @@ -0,0 +1,119 @@ +.. _codeql-cli-2.26.3: + +========================== +CodeQL 2.26.3 (2026-08-12) +========================== + +.. 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.26.3 runs a total of 497 security queries when configured with the Default suite (covering 170 CWE). The Extended suite enables an additional 131 queries (covering 32 more CWE). + +CodeQL CLI +---------- + +Bug Fixes +~~~~~~~~~ + +* Fixed the pack upload format to comply with the OCI-image-manifest specification, by ensuring that all required fields are present/valid, and that no extraneous/non-compliant fields are included. +* Fixed path canonicalization on Windows so that paths located on :code:`subst`\ ed drives are always resolved to their underlying target paths. Previously, :code:`subst`\ ed drives were not handled consistently by the CodeQL CLI and the language-specific extractors. + +Improvements +~~~~~~~~~~~~ + +* Commands that accept a :code:`--ram` option now report a clear error when given a value that is far too large to be a sensible amount of memory in megabytes (for example, a number of bytes passed by mistake), instead of failing with a cryptic "is not an int" message. + +Miscellaneous +~~~~~~~~~~~~~ + +* Upgraded Jackson from 2.18.6 to 2.18.9. + +Query Packs +----------- + +Bug Fixes +~~~~~~~~~ + +GitHub Actions +"""""""""""""" + +* The :code:`actions/output-clobbering/high` query now provides messages tailored to the affected output channel and includes expanded documentation and recommendations. +* The :code:`actions/cache-poisoning/poisonable-step` and :code:`actions/untrusted-checkout/critical` queries now start paths at the expressions that control untrusted checkouts and link their alert messages to those expressions. +* Fixed a performance issue in the :code:`actions/output-clobbering/high` query caused by using unescaped source-code input in a regular expression. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +JavaScript/TypeScript +""""""""""""""""""""" + +* The :code:`js/missing-rate-limiting` query now recognizes the :code:`@fastify/rate-limit` package as a rate limiter. + +GitHub Actions +"""""""""""""" + +* The :code:`actions/output-clobbering/high` query no longer reports simple :code:`jq` path filters when their output remains JSON-encoded. Raw-output modes, complex filters, and unrecognized options remain reportable. +* GitHub Actions queries now correctly classify the :code:`schedule` event when determining whether a workflow is externally triggerable. +* The :code:`actions/envvar-injection/critical` query now requires the untrusted source and privileged context to originate from the same trigger event. The environment variable injection queries also no longer treat pull request head labels as injection-capable because they cannot contain newlines. +* The :code:`actions/cache-poisoning/code-injection`, :code:`actions/cache-poisoning/direct-cache`, and :code:`actions/cache-poisoning/poisonable-step` queries now account for read-only cache access on low-trust triggers that run in the default branch scope. Results are retained for triggers that GitHub allows to write to that cache scope. + +Query Metadata Changes +~~~~~~~~~~~~~~~~~~~~~~ + +GitHub Actions +"""""""""""""" + +* The name and alert message of the :code:`actions/cache-poisoning/code-injection` query have been reworded for clarity. + +Language Libraries +------------------ + +Breaking Changes +~~~~~~~~~~~~~~~~ + +GitHub Actions +"""""""""""""" + +* The :code:`codeql.actions.security.SelfHostedQuery` module has been removed because runner labels do not reliably distinguish self-hosted runners from managed runners. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +JavaScript/TypeScript +""""""""""""""""""""" + +* It is now possible for custom models to refer to specific files in the codebase, using a package name of form :code:`file:`. The model should describe the public exports of that file. This can be used to derive sources and sinks in code that imports the file, but note that sources and sinks will not generally be placed within the file itself. + For example, a source model :code:`['file:lib/service.js', 'Member[getData].ReturnValue', 'remote']` could identify :code:`require('../lib/service').getData()` as a source. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Added flow source models for :code:`RegQueryValue` and related functions from the :code:`winreg.h` Windows header. + +JavaScript/TypeScript +""""""""""""""""""""" + +* JavaScript security queries using the :code:`response` threat model now track promise-wrapped client response data into promise fulfillment values. This may improve results for queries such as :code:`js/xss` when response data is consumed through :code:`.then(...)` chains. +* The route object returned by Vue Router's :code:`useRoute()` Composition API is now recognized as a client-side remote flow source, covering its :code:`query`, :code:`params`, :code:`path`, :code:`fullPath`, and :code:`hash` members. These members are additionally reported under the corresponding :code:`browser-url-query`, :code:`browser-url-path`, and :code:`browser-url-fragment` threat models. +* Added flow models for Vue's :code:`ref`, :code:`shallowRef`, :code:`toRef`, :code:`reactive`, and :code:`computed` Composition API helpers. +* Added support for treating declared :code:`inputs` properties in Sails Action2 controller files as remote flow sources. This may improve results for security queries such as :code:`js/path-injection`. + +Ruby +"""" + +* Removed library input to vendored gems from the set of taint sources. This should reduce false positives for :code:`rb/polynomial-redos`, :code:`rb/regex/badly-anchored-regexp`, :code:`rb/unsafe-code-construction`, :code:`rb/html-constructed-from-input`, and :code:`rb/shell-command-constructed-from-input` whenever vendoring is used. + +GitHub Actions +"""""""""""""" + +* GitHub Actions analysis now recognizes untrusted data in :code:`github.event.merge_group` for workflows triggered by the :code:`merge_group` event. diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index a0a2e1832d83..6562d3482c54 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 Date: Thu, 13 Aug 2026 12:46:11 +0200 Subject: [PATCH 093/167] unified: Add test with @_exported import --- .../lib/codeql/unified/internal/StaticNameBinding.qll | 1 + .../static-name-binding/package1/Package.swift | 2 ++ .../package1/Sources/Target3/ReExport.swift | 3 +++ .../package1/Sources/Target4/UseReExport.swift | 11 +++++++++++ 4 files changed, 17 insertions(+) create mode 100644 unified/ql/test/library-tests/static-name-binding/package1/Sources/Target3/ReExport.swift create mode 100644 unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index 16ae5ad2602e..780b1fbd850a 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -212,6 +212,7 @@ predicate valueStep(NameBindingNode node1, NameBindingNode node2) { | node2 = getNodeFromUncertainScope(scope) or + // TODO: Add support for '@_exported' with tests, so this gets exercised // Bulk re-exporting declarations exists(TopLevel top | declaration = top.getBody().getAStmt() and diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Package.swift b/unified/ql/test/library-tests/static-name-binding/package1/Package.swift index 0789887c4b4c..0c046ec542c7 100644 --- a/unified/ql/test/library-tests/static-name-binding/package1/Package.swift +++ b/unified/ql/test/library-tests/static-name-binding/package1/Package.swift @@ -7,5 +7,7 @@ let package = Package( targets: [ .target(name: "Target1"), .target(name: "Target2"), + .target(name: "Target3"), + .target(name: "Target4"), ] ) diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target3/ReExport.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target3/ReExport.swift new file mode 100644 index 000000000000..f802bbe9d308 --- /dev/null +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target3/ReExport.swift @@ -0,0 +1,3 @@ +@_exported import Target2 + +public class C {} // name=Target3.C diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift new file mode 100644 index 000000000000..d9ef7c904c18 --- /dev/null +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift @@ -0,0 +1,11 @@ +import Target3 // re-exports Target2 + +private protocol P { + let x1: A; // $ MISSING: access=Target2.A + let x2: B.C; // $ MISSING: access=Target2.B access=Target2.B.C + let x3: C; // $ access=Target3.C + + let x4: Target3.A; // $ MISSING: access=Target2.A + let x5: Target3.B.C; // $ MISSING: access=Target2.B access=Target2.B.C + let x6: Target3.C; // $ access=Target3.C +} From ccbab33f2712f4103a9614a034fdb3e27ea0e526 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 13 Aug 2026 12:46:49 +0200 Subject: [PATCH 094/167] Update shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll Co-authored-by: Anders Schack-Mulligen --- shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll | 1 - 1 file changed, 1 deletion(-) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index 806b4d5a2413..285451510375 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -568,7 +568,6 @@ module MakeImpl Lang> { result = 0 or exists(Content c, Ap tail | - ap = apCons(c, tail) and fwdFlowConsCand(_, ap, c, _, tail) and ap != tail and // no need to report a longer length result = 1 + getAnApLengthLowerBound(tail) and From 61b372029b13ffe3d34a76562a6ccca461b5b4a1 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 13 Aug 2026 12:49:22 +0200 Subject: [PATCH 095/167] unified: Support @_exported imports --- .../codeql/unified/internal/NameBindingPluginSwift.qll | 5 +++-- .../ql/lib/codeql/unified/internal/StaticNameBinding.qll | 1 - .../package1/Sources/Target4/UseReExport.swift | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll b/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll index 6fd2187f47a1..52c52833c279 100644 --- a/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll +++ b/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll @@ -18,8 +18,9 @@ class NameBindingPluginSwift extends NameBindingPlugin { member = any(TopLevel top).getBody().getAStmt() and member.hasModifier(["private", "fileprivate"]) or - // Imports are always file-local - member instanceof ImportDeclaration + // Imports are always file-local, except `@_exported` import which re-export everything + member instanceof ImportDeclaration and + not member.hasModifier("@_exported") // // Note: Private class members can be seen within type-extensions in the same file, // so we can't declare those private to their local scope. diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index 780b1fbd850a..16ae5ad2602e 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -212,7 +212,6 @@ predicate valueStep(NameBindingNode node1, NameBindingNode node2) { | node2 = getNodeFromUncertainScope(scope) or - // TODO: Add support for '@_exported' with tests, so this gets exercised // Bulk re-exporting declarations exists(TopLevel top | declaration = top.getBody().getAStmt() and diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift index d9ef7c904c18..ba30deeff57a 100644 --- a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift @@ -1,11 +1,11 @@ import Target3 // re-exports Target2 private protocol P { - let x1: A; // $ MISSING: access=Target2.A - let x2: B.C; // $ MISSING: access=Target2.B access=Target2.B.C + let x1: A; // $ access=Target2.A + let x2: B.C; // $ access=Target2.B access=Target2.B.C let x3: C; // $ access=Target3.C - let x4: Target3.A; // $ MISSING: access=Target2.A - let x5: Target3.B.C; // $ MISSING: access=Target2.B access=Target2.B.C + let x4: Target3.A; // $ access=Target2.A + let x5: Target3.B.C; // $ access=Target2.B access=Target2.B.C let x6: Target3.C; // $ access=Target3.C } From 811932fc23bd23fa581e9309519d08cfaf4a5f76 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 13 Aug 2026 12:52:09 +0200 Subject: [PATCH 096/167] unified: Add test for spurious re-export --- .../package1/Sources/Target4/UseReExport.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift index ba30deeff57a..e0c454454073 100644 --- a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift @@ -8,4 +8,7 @@ private protocol P { let x4: Target3.A; // $ access=Target2.A let x5: Target3.B.C; // $ access=Target2.B access=Target2.B.C let x6: Target3.C; // $ access=Target3.C + + // `@_exported import Target2` should not re-export the local 'Target2' name, only its contents + let x7: Target3.Target2.A; // $ SPURIOUS: access=Target2.A } From 1f380d260ec47d6cda5ead9a0184ce42455bb8b2 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 13 Aug 2026 13:07:24 +0200 Subject: [PATCH 097/167] unified: Fix spurious resolution by refining isPrivateToLocalScope --- .../unified/internal/NameBindingPlugin.qll | 23 +++++++++++++++---- .../internal/NameBindingPluginSwift.qll | 8 +++++-- .../unified/internal/StaticNameBinding.qll | 6 ++--- .../Sources/Target4/UseReExport.swift | 2 +- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll b/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll index 352d39bd5f00..a0a7028dfe92 100644 --- a/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll +++ b/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll @@ -1,5 +1,6 @@ private import unified private import codeql.util.Unit +private import codeql.unified.internal.LocalNameBinding private import codeql.unified.internal.NameBindingPluginSwift // ensure overrides are seen /** Extension point for language-specific inputs to name binding. */ @@ -14,13 +15,16 @@ class NameBindingPlugin extends Unit { predicate isInstanceMember(ClassLikeDeclaration cls, Member member) { none() } /** - * Holds if `member` is only visible in its local scope, and can thus be entirely resolved + * Holds if `binding`, declared by `member` is only visible in its local scope, and can thus be entirely resolved * by local name-binding, suppressing any store-steps that would otherwise be induced from the member. * * Need only be implemented for members that occur in the context of class or top-level, as other * contexts are considered local already. + * + * `binding` refers to an `Identifier` or `BulkImportingPattern` bound by the member. */ - predicate isPrivateToLocalScope(Stmt member) { none() } + bindingset[member, binding] + predicate isPrivateToLocalScope(Stmt member, AstNode binding) { none() } } /** Holds if `member` is an instance member. */ @@ -31,9 +35,18 @@ predicate isInstanceMember(Member member) { ) } -/** Holds if `member` is only visible in its local scope. */ -predicate isPrivateToLocalScope(Stmt member) { - any(NameBindingPlugin p).isPrivateToLocalScope(member) +/** Holds if `binding` is only visible in its local scope. */ +pragma[nomagic] +predicate isPrivateToLocalScope(AstNode binding) { + exists(Stmt member | + bindingContext(binding, _, member) and + ( + member = any(ClassLikeDeclaration cls).getAMember() or + member = any(TopLevel t).getBody().getAStmt() + ) and + (binding instanceof NameDeclaration or binding instanceof BulkImportingPattern) and + any(NameBindingPlugin p).isPrivateToLocalScope(member, binding) + ) } /** diff --git a/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll b/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll index 52c52833c279..eaa8f46c65f4 100644 --- a/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll +++ b/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll @@ -13,14 +13,18 @@ class NameBindingPluginSwift extends NameBindingPlugin { not member.hasModifier(["static", "class", "enum_case"]) } - override predicate isPrivateToLocalScope(Stmt member) { + bindingset[member, binding] + override predicate isPrivateToLocalScope(Stmt member, AstNode binding) { // Private top-level members member = any(TopLevel top).getBody().getAStmt() and member.hasModifier(["private", "fileprivate"]) or // Imports are always file-local, except `@_exported` import which re-export everything member instanceof ImportDeclaration and - not member.hasModifier("@_exported") + not ( + member.hasModifier("@_exported") and + binding instanceof BulkImportingPattern + ) // // Note: Private class members can be seen within type-extensions in the same file, // so we can't declare those private to their local scope. diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index 16ae5ad2602e..907cc9f14010 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -152,7 +152,7 @@ predicate storeStep(NameBindingNode node1, string name, NameBindingNode node2) { exists(ClassLikeDeclaration cls, Member member, NameDeclaration nameDecl | member = cls.getAMember() and not isInstanceMember(member) and - not isPrivateToLocalScope(member) and + not isPrivateToLocalScope(nameDecl) and nameDecl.getDeclaration() = member and node1.isIdentifier(nameDecl) and name = nameDecl.getName() and @@ -161,7 +161,7 @@ predicate storeStep(NameBindingNode node1, string name, NameBindingNode node2) { or exists(TopLevel top, Stmt stmt, NameDeclaration nameDecl | stmt = top.getBody().getAStmt() and - not isPrivateToLocalScope(stmt) and + not isPrivateToLocalScope(nameDecl) and nameDecl.getDeclaration() = stmt and node1.isIdentifier(nameDecl) and name = nameDecl.getName() and @@ -215,7 +215,7 @@ predicate valueStep(NameBindingNode node1, NameBindingNode node2) { // Bulk re-exporting declarations exists(TopLevel top | declaration = top.getBody().getAStmt() and - not isPrivateToLocalScope(declaration) and + not isPrivateToLocalScope(p) and node2 = getModuleNodeFromFile(top.getFile()) ) ) diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift index e0c454454073..677cd6a67299 100644 --- a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target4/UseReExport.swift @@ -10,5 +10,5 @@ private protocol P { let x6: Target3.C; // $ access=Target3.C // `@_exported import Target2` should not re-export the local 'Target2' name, only its contents - let x7: Target3.Target2.A; // $ SPURIOUS: access=Target2.A + let x7: Target3.Target2.A; // should not resolve } From aa48658a760046b6c42ada55a63f46769bbd074f Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 13 Aug 2026 13:28:32 +0200 Subject: [PATCH 098/167] Data flow: Remove unused variable --- shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index 285451510375..c6bdcc206b45 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -567,8 +567,8 @@ module MakeImpl Lang> { ap instanceof ApNil and result = 0 or - exists(Content c, Ap tail | - fwdFlowConsCand(_, ap, c, _, tail) and + exists(Ap tail | + fwdFlowConsCand(_, ap, _, _, tail) and ap != tail and // no need to report a longer length result = 1 + getAnApLengthLowerBound(tail) and result <= accessPathLimit() From 4321ba17379c0ba550d92ba29f982d34c03b44ae Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Thu, 13 Aug 2026 13:31:39 +0200 Subject: [PATCH 099/167] Gate remaining Android integration tests off linux-arm64 Completes the arm64 gating begun in #22327 for the last two Android-driving java integration tests, so all 10 (the 8 already merged + these) are deselected on linux-arm64 while mac-arm64 and x86_64 stay green. android-8-sample: AGP 8.0.0 ships no linux-aarch64 aapt2 (Google's Maven publishes only linux/osx/windows classifiers), so the build fails on linux-arm64 with an x86-64 aapt2 exec'd on aarch64. android-gradle-incompatibility: gated to avoid conflating that same x86_64-only aapt2 build failure on linux-arm64 with the AGP/Gradle-version incompatibility failure this test asserts (otherwise the test would pass for the wrong reason). Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- java/ql/integration-tests/java/android-8-sample/test.py | 5 +++++ .../java/diagnostics/android-gradle-incompatibility/test.py | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/java/ql/integration-tests/java/android-8-sample/test.py b/java/ql/integration-tests/java/android-8-sample/test.py index 72e3c5d3fc47..3b38eb208893 100644 --- a/java/ql/integration-tests/java/android-8-sample/test.py +++ b/java/ql/integration-tests/java/android-8-sample/test.py @@ -1,4 +1,9 @@ +import runs_on + + # Put Java 11 on the path so as to challenge our version selection logic: Java 11 is unsuitable for Android Gradle Plugin 8+, # so it will be necessary to notice Java 17 available in the environment and actively select it. +# This Android Gradle Plugin version ships no linux-aarch64 aapt2, so the build fails on linux-arm64 (macOS arm64 works). +@(runs_on.x86_64 or runs_on.macos) def test(codeql, use_java_11, java, gradle_8_0, android_sdk): codeql.database.create() diff --git a/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/test.py b/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/test.py index f58e84e77a2f..64112d0e5e62 100644 --- a/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/test.py +++ b/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/test.py @@ -1,2 +1,7 @@ +import runs_on + + +# Deselected on linux-arm64: the build also fails there due to the x86_64-only aapt2 gap, which would conflate with the AGP/Gradle-incompatibility failure this test asserts. +@(runs_on.x86_64 or runs_on.macos) def test(codeql, java, gradle_7_3, android_sdk): codeql.database.create(_assert_failure=True) From e4cf8d6ed8bd77c84a761440697a395b9439ba87 Mon Sep 17 00:00:00 2001 From: Keshav Malik Date: Thu, 13 Aug 2026 17:40:01 +0530 Subject: [PATCH 100/167] Refactor antiforgery validation query --- .../MissingAntiForgeryTokenValidation.ql | 73 ++++++++++++------- 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/csharp/ql/src/Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql b/csharp/ql/src/Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql index a1cb7f9f506a..77a3f2b59450 100644 --- a/csharp/ql/src/Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql +++ b/csharp/ql/src/Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql @@ -75,7 +75,6 @@ private predicate hasAspNetCoreAntiForgeryMiddleware() { ) } -bindingset[method] private RequireAntiforgeryTokenAttribute getEffectiveRequireAntiforgeryTokenAttributeOnMethod( Method method ) { @@ -90,7 +89,6 @@ private RequireAntiforgeryTokenAttribute getEffectiveRequireAntiforgeryTokenAttr ) } -bindingset[controller] private RequireAntiforgeryTokenAttribute getEffectiveRequireAntiforgeryTokenAttributeOnClass( Class controller ) { @@ -105,34 +103,53 @@ private RequireAntiforgeryTokenAttribute getEffectiveRequireAntiforgeryTokenAttr ) } -bindingset[controller, method] -private RequireAntiforgeryTokenAttribute getEffectiveRequireAntiforgeryTokenAttribute( - Class controller, Method method -) { - result = getEffectiveRequireAntiforgeryTokenAttributeOnMethod(method) - or - not exists(getEffectiveRequireAntiforgeryTokenAttributeOnMethod(method)) and - result = getEffectiveRequireAntiforgeryTokenAttributeOnClass(controller) +class MvcControllerPostMethod extends Method { + private Controller controller; + + MvcControllerPostMethod() { controller.getAPostActionMethod() = this } + + predicate hasValidateAntiForgeryAttribute() { + this.getAnAttribute() instanceof ValidateAntiForgeryTokenAttribute or + controller.getABaseType*().getAnAttribute() instanceof ValidateAntiForgeryTokenAttribute + } } -bindingset[controller, method] -private predicate hasAspNetCoreAntiForgeryValidation(Class controller, Method method) { - method.getAnAttribute() instanceof AspNetCore::ValidateAntiForgeryAttribute - or - controller.getABaseType*().getAnAttribute() instanceof AspNetCore::ValidateAntiForgeryAttribute - or - hasAspNetCoreAntiForgeryMiddleware() and - getEffectiveRequireAntiforgeryTokenAttribute(controller, method).requiresValidation() +class AspNetCoreControllerPostMethod extends Method { + private AspNetCore::MicrosoftAspNetCoreMvcController controller; + + AspNetCoreControllerPostMethod() { + controller.getAnActionMethod() = this and + this.getAnAttribute() instanceof AspNetCore::MicrosoftAspNetCoreMvcHttpPostAttribute + } + + predicate hasValidateAntiForgeryAttribute() { + this.getAnAttribute() instanceof AspNetCore::ValidateAntiForgeryAttribute or + controller.getABaseType*().getAnAttribute() instanceof AspNetCore::ValidateAntiForgeryAttribute + } + + predicate hasRequireAntiForgeryAttribute() { + hasAspNetCoreAntiForgeryMiddleware() and + ( + getEffectiveRequireAntiforgeryTokenAttributeOnMethod(this).requiresValidation() + or + not exists(getEffectiveRequireAntiforgeryTokenAttributeOnMethod(this)) and + getEffectiveRequireAntiforgeryTokenAttributeOnClass(controller).requiresValidation() + ) + } } -predicate isUnvalidatedPostMethod(Class c, Method m) { - c.(Controller).getAPostActionMethod() = m and - not m.getAnAttribute() instanceof ValidateAntiForgeryTokenAttribute and - not c.getABaseType*().getAnAttribute() instanceof ValidateAntiForgeryTokenAttribute - or - c.(AspNetCore::MicrosoftAspNetCoreMvcController).getAnActionMethod() = m and - m.getAnAttribute() instanceof AspNetCore::MicrosoftAspNetCoreMvcHttpPostAttribute and - not hasAspNetCoreAntiForgeryValidation(c, m) +predicate isUnvalidatedAspNetCorePostMethod(AspNetCoreControllerPostMethod m) { + not m.hasValidateAntiForgeryAttribute() and + not m.hasRequireAntiForgeryAttribute() +} + +predicate isUnvalidatedMvcPostMethod(MvcControllerPostMethod m) { + not m.hasValidateAntiForgeryAttribute() +} + +predicate isUnvalidatedPostMethod(Method m) { + isUnvalidatedMvcPostMethod(m) or + isUnvalidatedAspNetCorePostMethod(m) } Element getAValidatedElement() { @@ -144,9 +161,9 @@ Element getAValidatedElement() { any(RequireAntiforgeryTokenAttribute a | a.requiresValidation()).getTarget() = result } -from Class c, Method postMethod +from Method postMethod where - isUnvalidatedPostMethod(c, postMethod) and + isUnvalidatedPostMethod(postMethod) and // Verify that validate anti forgery token attributes are used somewhere within this project, to // avoid reporting false positives on projects that use an alternative approach to mitigate CSRF // issues. From 719e8b41963127137c261289fa6dde0867ceb11b Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 13 Aug 2026 14:21:38 +0200 Subject: [PATCH 101/167] unified: Prefer instanceof --- unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll index da0bd0540ea2..e9ffcd8a29af 100644 --- a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll @@ -317,7 +317,7 @@ private module LocalNameBindingInput implements LocalNameBindingInputSig Date: Thu, 13 Aug 2026 14:57:50 +0200 Subject: [PATCH 102/167] Use expected_files.add as context manager where applicable --- .../integration-tests/kotlin/all-platforms/logs/test.py | 3 +-- misc/pytest/lib/query_suites.py | 8 ++++---- .../integration-tests/posix/frontend-invocations/test.py | 3 +-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/java/ql/integration-tests/kotlin/all-platforms/logs/test.py b/java/ql/integration-tests/kotlin/all-platforms/logs/test.py index 38a385f0e7d3..44965f0f2dcc 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/logs/test.py +++ b/java/ql/integration-tests/kotlin/all-platforms/logs/test.py @@ -6,9 +6,8 @@ def test(codeql, java_full, cwd: pathlib.Path, expected_files): codeql.database.create(command=["kotlinc test.kt"]) - expected_files.add("logs.actual") - with open("logs.actual", "w") as f_out: + with expected_files.add("logs.actual") as f_out: log_dir = cwd / "test-db" / "log" for file_index, log_file in enumerate(log_dir.glob("kotlin-extractor*.log"), 1): f_out.write(f"Log file {file_index}\n") diff --git a/misc/pytest/lib/query_suites.py b/misc/pytest/lib/query_suites.py index fcbb1f16bde0..1e70008f65bc 100644 --- a/misc/pytest/lib/query_suites.py +++ b/misc/pytest/lib/query_suites.py @@ -9,8 +9,8 @@ def ret(query_suite): actual = sorted(actual.splitlines()) actual = [os.path.relpath(q, semmle_code_dir) for q in actual] actual_file_name = query_suite + '.actual' - expected_files.add(actual_file_name) - (cwd / actual_file_name).write_text('\n'.join(actual) + '\n') + with expected_files.add(actual_file_name) as f: + f.write('\n'.join(actual) + '\n') return ret @pytest.fixture @@ -25,6 +25,6 @@ def ret(lang_folder_name, query_suites): not_included = sorted(set(all_queries) - included_in_qls) not_included = [os.path.relpath(q, semmle_code_dir) for q in not_included] not_included_file_name = 'not_included_in_qls.actual' - expected_files.add(not_included_file_name) - (cwd / not_included_file_name).write_text('\n'.join(not_included) + '\n') + with expected_files.add(not_included_file_name) as f: + f.write('\n'.join(not_included) + '\n') return ret diff --git a/swift/ql/integration-tests/posix/frontend-invocations/test.py b/swift/ql/integration-tests/posix/frontend-invocations/test.py index da5b231883e7..1ec0ed83eb87 100644 --- a/swift/ql/integration-tests/posix/frontend-invocations/test.py +++ b/swift/ql/integration-tests/posix/frontend-invocations/test.py @@ -13,7 +13,7 @@ def test(codeql, swift, expected_files): with open(f, "rb") as module: print(f.name, sha256(module.read()).hexdigest(), file=expected) - with open("hashes.actual", "w") as actual: + with expected_files.add("hashes.actual") as actual: hashes = [ (s.name, s.resolve().name) for s in Path("test-db/working/swift-extraction-artifacts/store").iterdir() @@ -21,4 +21,3 @@ def test(codeql, swift, expected_files): hashes.sort() for module, hash in hashes: print(module, hash, file=actual) - expected_files.add("hashes.actual") From 2c67a0878b103d7aeae6e9b0272adaa0ba6013ec Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Thu, 13 Aug 2026 15:17:57 +0200 Subject: [PATCH 103/167] Make android-gradle-incompatibility gating comment self-contained It no longer reads as a cross-reference to the android-8-sample comment. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: f6519783-e7e9-4ddb-850f-e7b5b9f417f8 --- .../java/diagnostics/android-gradle-incompatibility/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/test.py b/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/test.py index 64112d0e5e62..5131ab601762 100644 --- a/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/test.py +++ b/java/ql/integration-tests/java/diagnostics/android-gradle-incompatibility/test.py @@ -1,7 +1,7 @@ import runs_on -# Deselected on linux-arm64: the build also fails there due to the x86_64-only aapt2 gap, which would conflate with the AGP/Gradle-incompatibility failure this test asserts. +# Deselected on linux-arm64: there the AGP build fails because no linux-aarch64 aapt2 exists, which is unrelated to the AGP/Gradle version incompatibility this test asserts and would otherwise let it pass for the wrong reason. @(runs_on.x86_64 or runs_on.macos) def test(codeql, java, gradle_7_3, android_sdk): codeql.database.create(_assert_failure=True) From 33c26b0a097d22cfc234cdc7cedb98ad03ac28b6 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Thu, 13 Aug 2026 16:38:12 +0200 Subject: [PATCH 104/167] Go: support linux-arm64 in autobuild scripts The go autobuilder, extractor and identify-environment tools are arch-native and their per-platform binaries are already built for linux-arm64, but the unix wrapper scripts hard-gated on linux64/osx64 and bailed with "Automatic build detection ... is not implemented" on arm64. Allow linux-arm64 so Go extraction works on native Linux Arm64. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- go/codeql-tools/autobuild.sh | 2 +- go/codeql-tools/identify-environment.sh | 2 +- go/codeql-tools/index.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go/codeql-tools/autobuild.sh b/go/codeql-tools/autobuild.sh index 585152e676e2..85060a3d9bde 100755 --- a/go/codeql-tools/autobuild.sh +++ b/go/codeql-tools/autobuild.sh @@ -2,7 +2,7 @@ set -eu -if [ "$CODEQL_PLATFORM" != "linux64" ] && [ "$CODEQL_PLATFORM" != "osx64" ] ; then +if [ "$CODEQL_PLATFORM" != "linux64" ] && [ "$CODEQL_PLATFORM" != "linux-arm64" ] && [ "$CODEQL_PLATFORM" != "osx64" ] ; then echo "Automatic build detection for $CODEQL_PLATFORM is not implemented." exit 1 fi diff --git a/go/codeql-tools/identify-environment.sh b/go/codeql-tools/identify-environment.sh index 27d483290656..917a59225744 100755 --- a/go/codeql-tools/identify-environment.sh +++ b/go/codeql-tools/identify-environment.sh @@ -2,7 +2,7 @@ set -eu -if [ "$CODEQL_PLATFORM" != "linux64" ] && [ "$CODEQL_PLATFORM" != "osx64" ] ; then +if [ "$CODEQL_PLATFORM" != "linux64" ] && [ "$CODEQL_PLATFORM" != "linux-arm64" ] && [ "$CODEQL_PLATFORM" != "osx64" ] ; then echo "Automatic build detection for $CODEQL_PLATFORM is not implemented." exit 1 fi diff --git a/go/codeql-tools/index.sh b/go/codeql-tools/index.sh index 877400d37f2a..de2790ceca70 100755 --- a/go/codeql-tools/index.sh +++ b/go/codeql-tools/index.sh @@ -2,7 +2,7 @@ set -eu -if [ "$CODEQL_PLATFORM" != "linux64" ] && [ "$CODEQL_PLATFORM" != "osx64" ] ; then +if [ "$CODEQL_PLATFORM" != "linux64" ] && [ "$CODEQL_PLATFORM" != "linux-arm64" ] && [ "$CODEQL_PLATFORM" != "osx64" ] ; then echo "Automatic build detection for $CODEQL_PLATFORM is not implemented." exit 1 fi From 8f5a8dbe2b5900f3f8bb8c40921748022d24c4a7 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 13 Aug 2026 17:30:19 +0200 Subject: [PATCH 105/167] Unified: Bazel downloaded toolchain on macOS --- MODULE.bazel | 22 +--- .../4.0.0-rc5-codeql.1/MODULE.bazel | 79 ++++++++++++++ .../register_downloaded_macos_toolchain.patch | 103 ++++++++++++++++++ .../4.0.0-rc5-codeql.1/source.json | 8 ++ .../modules/rules_swift/metadata.json | 11 ++ unified/swift-syntax-rs/BUILD.bazel | 4 +- unified/swift-syntax-rs/README.md | 24 ++-- unified/swift-syntax-rs/xcode_transition.bzl | 92 ---------------- 8 files changed, 216 insertions(+), 127 deletions(-) create mode 100644 misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/MODULE.bazel create mode 100644 misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/patches/register_downloaded_macos_toolchain.patch create mode 100644 misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/source.json create mode 100644 misc/bazel/registry/modules/rules_swift/metadata.json delete mode 100644 unified/swift-syntax-rs/xcode_transition.bzl diff --git a/MODULE.bazel b/MODULE.bazel index 0584af40dc69..be1ec97cfd99 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -31,13 +31,8 @@ bazel_dep(name = "gazelle", version = "0.50.0") bazel_dep(name = "rules_dotnet", version = "0.21.5-codeql.1") bazel_dep(name = "googletest", version = "1.17.0.bcr.2") bazel_dep(name = "rules_rust", version = "0.69.0") -bazel_dep(name = "rules_swift", version = "4.0.0-rc5") +bazel_dep(name = "rules_swift", version = "4.0.0-rc5-codeql.1") bazel_dep(name = "swift-syntax", version = "603.0.2") - -# Needed so we can `use_repo` `local_config_xcode` and -# `local_config_apple_cc_toolchains` below (referenced by the per-target -# Xcode-config transition in `unified/swift-syntax-rs/xcode_transition.bzl`). -bazel_dep(name = "apple_support", version = "2.8.0") bazel_dep(name = "zstd", version = "1.5.7.bcr.1") bazel_dep(name = "buildifier_prebuilt", version = "6.4.0", dev_dependency = True) @@ -223,10 +218,7 @@ use_repo( "swift-resource-dir-macos", ) -# Swift toolchain for building `unified/swift-syntax-rs`. On Linux we register -# a hermetic swift.org toolchain as the exec toolchain; on macOS `rules_swift` -# auto-registers `xcode_swift_toolchain` (host Xcode + OS-provided Swift -# runtime), which is not hermetic. +# Hermetic swift.org toolchain for building `unified/swift-syntax-rs`. # # The version is pinned as a literal rather than read from # `unified/swift-syntax-rs/.swift-version` via `swift_version_file`: the latter @@ -244,20 +236,14 @@ use_repo( swift, "swift_toolchain", "swift_toolchain_ubuntu22.04", + "swift_toolchain_xcode", ) register_toolchains( "@swift_toolchain//:swift_toolchain_exec_ubuntu22.04", + "@swift_toolchain//:swift_toolchain_exec_xcode", ) -# `apple_support`'s xcode_config and CC toolchains, needed by the Xcode -# transition in `unified/swift-syntax-rs/xcode_transition.bzl`. -xcode_configure = use_extension("@apple_support//xcode:xcode_configure.bzl", "xcode_configure_extension") -use_repo(xcode_configure, "local_config_xcode") - -apple_cc_configure = use_extension("@apple_support//crosstool:setup.bzl", "apple_cc_configure_extension") -use_repo(apple_cc_configure, "local_config_apple_cc_toolchains") - node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") node.toolchain( name = "nodejs", diff --git a/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/MODULE.bazel b/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/MODULE.bazel new file mode 100644 index 000000000000..f83ac395da02 --- /dev/null +++ b/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/MODULE.bazel @@ -0,0 +1,79 @@ +"""rules_swift MODULE.bazel file""" + +module( + name = "rules_swift", + version = "4.0.0-rc5-codeql.1", + bazel_compatibility = [">=8.0.0"], + compatibility_level = 3, +) + +bazel_dep(name = "abseil-cpp", version = "20250814.1") +bazel_dep(name = "apple_support", version = "2.8.0") +bazel_dep(name = "bazel_linux_packages", version = "0.4.1") +bazel_dep(name = "bazel_features", version = "1.51.0") +bazel_dep(name = "bazel_skylib", version = "1.7.1") +bazel_dep(name = "nlohmann_json", version = "3.12.0.bcr.1") +bazel_dep(name = "platforms", version = "0.0.11") +bazel_dep(name = "protobuf", version = "34.0.bcr.1") +bazel_dep(name = "rules_cc", version = "0.2.14") +bazel_dep(name = "rules_shell", version = "0.3.0") +bazel_dep(name = "swift_argument_parser", version = "1.7.0") + +apt = use_extension("@bazel_linux_packages//apt:extensions.bzl", "apt") +apt.ubuntu( + name = "swift_ubuntu22.04_sysroot", + architectures = ["amd64"], + lockfile = "//swift/internal/extensions:ubuntu22.04_sysroot.lock.json", + packages = [ + "libc6-dev", + "libcurl4-openssl-dev", + "libstdc++-11-dev", + "libxml2-dev", + "linux-libc-dev", + "zlib1g-dev", + ], + suites = ["jammy"], +) +apt.ubuntu( + name = "swift_ubuntu22.04_aarch64_sysroot", + architectures = ["arm64"], + lockfile = "//swift/internal/extensions:ubuntu22.04_aarch64_sysroot.lock.json", + packages = [ + "libc6-dev", + "libcurl4-openssl-dev", + "libstdc++-11-dev", + "libxml2-dev", + "linux-libc-dev", + "zlib1g-dev", + ], + suites = ["jammy"], +) +use_repo( + apt, + "swift_ubuntu22.04_aarch64_sysroot", + "swift_ubuntu22.04_sysroot", +) + +swift_autoconfiguration = use_repo_rule("//swift/internal:swift_autoconfiguration.bzl", "swift_autoconfiguration") + +swift_autoconfiguration(name = "rules_swift_local_config") + +http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "rules_swift_index_import_5_8", + build_file = "//third_party:rules_swift_index_import/BUILD.overlay", + canonical_id = "index-import-5.8", + sha256 = "28c1ffa39d99e74ed70623899b207b41f79214c498c603915aef55972a851a15", + urls = ["https://github.com/MobileNativeFoundation/index-import/releases/download/5.8.0.1/index-import.tar.gz"], +) + +http_archive( + name = "rules_swift_index_import_6_1", + build_file = "//third_party:rules_swift_index_import/BUILD.overlay", + canonical_id = "index-import-6.1", + sha256 = "9a54fc1674af6031125a9884480a1e31e1bcf48b8f558b3e8bcc6b6fcd6e8b61", + urls = ["https://github.com/MobileNativeFoundation/index-import/releases/download/6.1.0.1/index-import.tar.gz"], +) + +register_toolchains("//swift/toolchains:all") diff --git a/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/patches/register_downloaded_macos_toolchain.patch b/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/patches/register_downloaded_macos_toolchain.patch new file mode 100644 index 000000000000..029f78c06f03 --- /dev/null +++ b/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/patches/register_downloaded_macos_toolchain.patch @@ -0,0 +1,103 @@ +diff --git a/swift/internal/extensions/toolchains.bzl b/swift/internal/extensions/toolchains.bzl +--- a/swift/internal/extensions/toolchains.bzl ++++ b/swift/internal/extensions/toolchains.bzl +@@ -132,12 +132,11 @@ def toolchains_for_platform(platform, toolchain_repository): + toolchain_repository = toolchain_repository, + ) + +- if platform != "xcode": +- content += _EXEC_TOOLCHAIN_PLATFORM.format( +- exec_compatible_with = _exec_compatible_with_for_platform(platform), +- platform = platform, +- toolchain_repository = toolchain_repository, +- ) ++ content += _EXEC_TOOLCHAIN_PLATFORM.format( ++ exec_compatible_with = _exec_compatible_with_for_platform(platform), ++ platform = platform, ++ toolchain_repository = toolchain_repository, ++ ) + + if platform in ( + "ubuntu22.04", +diff --git a/swift/toolchains/swift_toolchain.bzl b/swift/toolchains/swift_toolchain.bzl +--- a/swift/toolchains/swift_toolchain.bzl ++++ b/swift/toolchains/swift_toolchain.bzl +@@ -605,10 +605,14 @@ def _parse_target_system_name(*, arch, os, target_system_name): + """Returns the target system name set by the CC toolchain or attempts to create one based on the OS and arch.""" + + if target_system_name and target_system_name != "local": ++ if os == "macos" and target_system_name.endswith(("-macos", "-macosx")): ++ return target_system_name + "10.15" + return target_system_name + + if os == "linux": + return "%s-unknown-linux-gnu" % arch ++ elif os == "macos": ++ return "%s-apple-macos10.15" % arch + elif os == "windows": + # The MSVC cc toolchain reports a `target_gnu_system_name` of "local", + # so synthesize the triple. +@@ -706,5 +710,16 @@ def _swift_toolchain_impl(ctx): + elif ctx.attr.os == "none": + swift_linkopts_cc_info = CcInfo() ++ elif ctx.attr.os == "macos": ++ macos_linkopts = ["-L{}".format(paths.join(toolchain_root, "lib/swift/macosx"))] ++ if sdkroot: ++ macos_linkopts.append("-L{}".format(paths.join(sdkroot, "usr/lib/swift"))) ++ swift_linkopts_cc_info = _swift_sdk_linkopts_cc_info( ++ ctx.label, ++ macos_linkopts, ++ ctx.attr.swift_tools[SwiftToolsInfo].additional_inputs if ctx.attr.swift_tools else [], ++ ) ++ dynamic_runtime_cc_info = None ++ static_runtime_cc_info = None + elif ctx.attr.os == "android": + if not sdkroot: + fail("Android toolchain requires a sysroot to be set, either via the `sdkroot` attribute or by using a CC toolchain that provides one.") +diff --git a/swift/internal/extensions/toolchain.BUILD b/swift/internal/extensions/toolchain.BUILD +--- a/swift/internal/extensions/toolchain.BUILD ++++ b/swift/internal/extensions/toolchain.BUILD +@@ -333,17 +333,22 @@ swift_toolchain( + features = [ + "swift._supports_upcoming_features", + "swift.no_embed_debug_module", +- "swift.use_autolink_extract", +- "swift.lld_gc_workaround", +- "swift.use_module_wrap", + # TODO: This should be removed so that private headers can be used with + # explicit modules, but the build targets for CgRPC need to be cleaned up + # first because they contain C++ code. + "swift.module_map_no_private_headers", +- ], ++ ] + select({ ++ "@platforms//os:linux": [ ++ "swift.lld_gc_workaround", ++ "swift.use_autolink_extract", ++ "swift.use_module_wrap", ++ ], ++ "//conditions:default": [], ++ }), + os = select({ + "@platforms//os:linux": "linux", + "@platforms//os:macos": "macos", + }), + parsed_version = "{swift_version}", ++ sdkroot = "{macos_sdkroot}", + static_runtime = select({ +diff --git a/swift/internal/extensions/standalone_toolchain.bzl b/swift/internal/extensions/standalone_toolchain.bzl +--- a/swift/internal/extensions/standalone_toolchain.bzl ++++ b/swift/internal/extensions/standalone_toolchain.bzl +@@ -91,11 +91,13 @@ def _standalone_toolchain_impl(repository_ctx): + strip_prefix = filename.removesuffix(".tar.gz"), + ) + ++ macos_sdkroot = _run(repository_ctx, ["xcrun", "--sdk", "macosx", "--show-sdk-path"]) if repository_ctx.attr.platform == "xcode" else "" + repository_ctx.file(".swift-version", repository_ctx.attr.swift_version) + repository_ctx.template( + "BUILD.bazel", + repository_ctx.attr._build_template, + substitutions = { ++ "{macos_sdkroot}": macos_sdkroot, + "{swift_version}": repository_ctx.attr.swift_version, + }, + ) diff --git a/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/source.json b/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/source.json new file mode 100644 index 000000000000..fd5c4f2047e7 --- /dev/null +++ b/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/source.json @@ -0,0 +1,8 @@ +{ + "integrity": "sha256-Ly2lS4AlZJMiyqAxKHyCB+2pGeP5aYkQ6zv8QheeSTI=", + "url": "https://github.com/bazelbuild/rules_swift/releases/download/4.0.0-rc5/rules_swift.4.0.0-rc5.tar.gz", + "patches": { + "register_downloaded_macos_toolchain.patch": "sha256-kFzGyE1MhhiDxUfEzRPUTahvycyy+VNgPzQ5I44zRYc=" + }, + "patch_strip": 1 +} diff --git a/misc/bazel/registry/modules/rules_swift/metadata.json b/misc/bazel/registry/modules/rules_swift/metadata.json new file mode 100644 index 000000000000..188799c9dbf9 --- /dev/null +++ b/misc/bazel/registry/modules/rules_swift/metadata.json @@ -0,0 +1,11 @@ +{ + "homepage": "https://github.com/bazelbuild/rules_swift", + "maintainers": [], + "repository": [ + "github:bazelbuild/rules_swift" + ], + "versions": [ + "4.0.0-rc5-codeql.1" + ], + "yanked_versions": {} +} diff --git a/unified/swift-syntax-rs/BUILD.bazel b/unified/swift-syntax-rs/BUILD.bazel index 95f644b200f4..91a28dc40505 100644 --- a/unified/swift-syntax-rs/BUILD.bazel +++ b/unified/swift-syntax-rs/BUILD.bazel @@ -1,9 +1,9 @@ load("@rules_cc//cc:defs.bzl", "cc_library") load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_test") +load("@rules_swift//swift:swift.bzl", "swift_library") load("//unified:platforms.bzl", "UNIFIED_SUPPORTED_PLATFORMS") load(":swift_runtime.bzl", "swift_runtime_libs") load(":swift_runtime_linking.bzl", "swift_runtime_linking") -load(":xcode_transition.bzl", "xcode_transition_swift_library") package(default_visibility = ["//visibility:public"]) @@ -34,7 +34,7 @@ cc_library( ) # Swift FFI shim: wraps swift-syntax and exposes a small C ABI. -xcode_transition_swift_library( +swift_library( name = "swift_syntax_ffi", srcs = ["swift/Sources/SwiftSyntaxFFI/SwiftSyntaxFFI.swift"], module_name = "SwiftSyntaxFFI", diff --git a/unified/swift-syntax-rs/README.md b/unified/swift-syntax-rs/README.md index f4e84e18f361..299fc40951a6 100644 --- a/unified/swift-syntax-rs/README.md +++ b/unified/swift-syntax-rs/README.md @@ -174,26 +174,20 @@ Requirements: - **`clang`** must be installed on the runner. `rules_swift` requires the Bazel CC toolchain to use clang; the repo's `.bazelrc` already sets `--repo_env=CC=clang`, so no extra flags are needed. -- The registered Swift toolchains cover **ubuntu24.04 / x86_64** and - **macOS / `xcode`** (Apple Silicon and Intel). Bazel selects the toolchain - matching the host. Targets are marked `target_compatible_with` these two - OSes, so on Windows Bazel skips them cleanly. -- **macOS only:** the Swift toolchain comes from the host Xcode installation - (`rules_swift` auto-registers `xcode_swift_toolchain`), which also needs - Xcode's CC toolchain and xcode_config; these are applied to the Swift - target via an incoming-edge Starlark transition (see - [`xcode_transition.bzl`](xcode_transition.bzl)), so other targets on macOS - keep using Bazel's default CC toolchain. +- The registered Swift toolchains cover **ubuntu22.04 / x86_64** and + **macOS** (Apple Silicon and Intel). Bazel selects the toolchain matching the + host. Targets are marked `target_compatible_with` these two OSes, so on + Windows Bazel skips them cleanly. +- **macOS only:** `rules_swift` downloads the pinned Swift toolchain from + swift.org. The Bazel C++ toolchain must still provide the macOS SDK, but a + full Xcode installation is not required. The Swift compiler version is kept in sync across three places: the [`.swift-version`](.swift-version) file (read by the local `cargo`/`swift build` and by [swiftly](https://www.swift.org/swiftly/)), the literal `swift_version` pinned on `swift.toolchain(...)` in the root `MODULE.bazel` (the hermetic -swift.org **Linux** Bazel toolchain), and the `swift-syntax` release in -`swift/Package.swift`. On **macOS** the version is *not* pinned by the Bazel -build: `rules_swift` auto-registers the host `xcode_swift_toolchain`, which uses -whichever Swift ships with the installed Xcode. So the pin governs Linux (and -local) builds, while the macOS compiler version depends on the host Xcode. +swift.org Bazel toolchain), and the `swift-syntax` release in +`swift/Package.swift`. (The Bazel toolchain pins a literal rather than reading `.swift-version` via `swift_version_file`, because the latter makes the module extension read a diff --git a/unified/swift-syntax-rs/xcode_transition.bzl b/unified/swift-syntax-rs/xcode_transition.bzl deleted file mode 100644 index 9783c0fc8719..000000000000 --- a/unified/swift-syntax-rs/xcode_transition.bzl +++ /dev/null @@ -1,92 +0,0 @@ -"""Per-target Xcode configuration for `//unified/swift-syntax-rs` on macOS. - -`rules_swift`'s auto-registered `xcode_swift_toolchain` reads -`cc_toolchain.target_gnu_system_name`, which is literally "local" on -Bazel's built-in `local_config_cc`. To make it usable we need: - -- `--xcode_version_config=@local_config_xcode//:host_xcodes` — selects - `apple_support`'s xcode_config (matches `rules_swift`'s `system_sdk` keys). -- `--extra_toolchains=@local_config_apple_cc_toolchains//:all` — forces - `apple_support`'s CC toolchain ahead of `local_config_cc`. - -Applied via an incoming-edge Starlark transition on the `swift_library` -target only (via the `xcode_transition_swift_library` macro), so downstream -Rust targets and the rest of the repo stay on the default CC toolchain and -the `@local_config_*` repos are not materialized otherwise. No-op off macOS. -""" - -load("@rules_cc//cc/common:cc_info.bzl", "CcInfo") -load("@rules_swift//swift:swift.bzl", "swift_library") -load("//misc/bazel:os.bzl", "os_select") - -_XCODE_VERSION_CONFIG = "//command_line_option:xcode_version_config" -_EXTRA_TOOLCHAINS = "//command_line_option:extra_toolchains" - -def _transition_impl(settings, attr): - if attr.os != "macos": - return {} - else: - return { - _XCODE_VERSION_CONFIG: "@local_config_xcode//:host_xcodes", - _EXTRA_TOOLCHAINS: ( - list(settings[_EXTRA_TOOLCHAINS]) + - ["@local_config_apple_cc_toolchains//:all"] - ), - } - -_xcode_transition = transition( - implementation = _transition_impl, - inputs = [_EXTRA_TOOLCHAINS], - outputs = [_XCODE_VERSION_CONFIG, _EXTRA_TOOLCHAINS], -) - -def _wrapper_impl(ctx): - src = ctx.attr.actual[0] - - # Forward the providers a downstream `rust_*` target reads from `deps`: - # `DefaultInfo`, `CcInfo` (linking info), and `OutputGroupInfo`. - providers = [src[DefaultInfo]] - for p in (CcInfo, OutputGroupInfo): - if p in src: - providers.append(src[p]) - return providers - -_xcode_transition_swift_library_rule = rule( - implementation = _wrapper_impl, - attrs = { - "actual": attr.label( - mandatory = True, - cfg = _xcode_transition, - providers = [CcInfo], - ), - "os": attr.string(mandatory = True), - "_allowlist_function_transition": attr.label( - default = "@bazel_tools//tools/allowlists/function_transition_allowlist", - ), - }, -) - -def xcode_transition_swift_library(name, visibility = None, tags = None, target_compatible_with = None, **kwargs): - """`swift_library` wrapped in the macOS Xcode-config transition. - - Emits a private inner `_impl_` `swift_library` (tagged `manual`) - and a public `name` that applies the transition on macOS and forwards - the inner target's providers. Downstream `rust_*` targets depend on - `name` as usual; only the `swift_library` sub-graph flips toolchain. - """ - inner_name = "_impl_%s" % name - swift_library( - name = inner_name, - visibility = ["//visibility:private"], - tags = (tags or []) + ["manual"], - target_compatible_with = target_compatible_with, - **kwargs - ) - _xcode_transition_swift_library_rule( - name = name, - visibility = visibility, - tags = tags, - target_compatible_with = target_compatible_with, - actual = ":" + inner_name, - os = os_select(linux = "linux", macos = "macos", default = "other"), - ) From cca2c0695394b65984b9c23a34831c40695a0ab7 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Thu, 13 Aug 2026 17:54:14 +0200 Subject: [PATCH 106/167] C#: support linux-arm64 in autobuild script Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- csharp/tools/autobuild.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/tools/autobuild.sh b/csharp/tools/autobuild.sh index e8e007a10d74..39d10b38f3b5 100755 --- a/csharp/tools/autobuild.sh +++ b/csharp/tools/autobuild.sh @@ -2,7 +2,7 @@ set -eu -if [ "$CODEQL_PLATFORM" != "linux64" ] && [ "$CODEQL_PLATFORM" != "osx64" ] ; then +if [ "$CODEQL_PLATFORM" != "linux64" ] && [ "$CODEQL_PLATFORM" != "linux-arm64" ] && [ "$CODEQL_PLATFORM" != "osx64" ] ; then echo "Automatic build detection for $CODEQL_PLATFORM is not implemented." exit 1 fi From 5a8f9b8d75b8a369143757f652aa07c8ac38548a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 14 Aug 2026 00:28:36 +0000 Subject: [PATCH 107/167] Add changed framework coverage reports --- java/documentation/library-coverage/coverage.csv | 2 +- java/documentation/library-coverage/coverage.rst | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/java/documentation/library-coverage/coverage.csv b/java/documentation/library-coverage/coverage.csv index e3893d193663..ef3a711c8dcf 100644 --- a/java/documentation/library-coverage/coverage.csv +++ b/java/documentation/library-coverage/coverage.csv @@ -88,7 +88,7 @@ java.applet,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11, java.awt,1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,3 java.beans,1,,177,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,82,95 java.io,66,1,225,,,,,,,,,22,,,,,,,,,,,,,,,29,15,,,,,,,,,,,,,,,,,,,,,,,,,1,,202,23 -java.lang,38,3,790,,13,,,,,,1,,,,,,,,,,,,8,,,,2,9,,,4,,,1,,,,,,,,,,,,,,,,,,3,,,510,280 +java.lang,38,3,789,,13,,,,,,1,,,,,,,,,,,,8,,,,2,9,,,4,,,1,,,,,,,,,,,,,,,,,,3,,,509,280 java.math,,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9 java.net,23,3,347,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,,,,3,248,99 java.nio,47,,499,,,,,,,,,5,,,,,,,,,,,,,,,25,16,,,,,,,,,1,,,,,,,,,,,,,,,,,,302,197 diff --git a/java/documentation/library-coverage/coverage.rst b/java/documentation/library-coverage/coverage.rst index 70d02b68751e..0b4387b476d7 100644 --- a/java/documentation/library-coverage/coverage.rst +++ b/java/documentation/library-coverage/coverage.rst @@ -26,7 +26,7 @@ Java framework & library support `JBoss Logging `_,``org.jboss.logging``,,,324,,,,,, `JSON-java `_,``org.json``,,236,,,,,,, `Jackson `_,``com.fasterxml.jackson.*``,,9,2,2,,,,, - Java Standard Library,``java.*``,10,4629,260,99,,9,,,26 + Java Standard Library,``java.*``,10,4628,260,99,,9,,,26 Java extensions,"``javax.*``, ``jakarta.*``",101,4185,90,10,4,2,1,1,4 `Jetty `_,``org.eclipse.jetty.client``,,,2,,,,,,2 Kotlin Standard Library,``kotlin*``,,1849,16,14,,,,,2 @@ -41,5 +41,5 @@ Java framework & library support `Thymeleaf `_,``org.thymeleaf``,,2,2,,,,,, `jOOQ `_,``org.jooq``,,,1,,,1,,, Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.com.caucho.hessian.io``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.caucho.burlap.io``, ``com.caucho.hessian.io``, ``com.cedarsoftware.util.io``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.esotericsoftware.yamlbeans``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.opensymphony.xwork2``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``hudson``, ``io.jsonwebtoken``, ``io.r2dbc.spi``, ``io.undertow.server.handlers.resource``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.lingala.zip4j``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.avro``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.fileupload``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hc.client5.http.protocol``, ``org.apache.hc.client5.http.utils``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.poi``, ``org.apache.shiro.authc``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.codehaus.cargo.container.installer``, ``org.dom4j``, ``org.exolab.castor.xml``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.ho.yaml``, ``org.influxdb``, ``org.jabsorb``, ``org.jboss.vfs``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.lastaflute.web``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.xml.sax``, ``org.xmlpull.v1``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``software.amazon.awssdk.transfer.s3.model``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",151,8258,824,188,6,20,18,,186 - Totals,,406,28637,2765,461,16,151,33,1,416 + Totals,,406,28636,2765,461,16,151,33,1,416 From bb4ad0905221fb5a73c0ee64c847a6ff33e13929 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Aug 2026 03:05:06 +0000 Subject: [PATCH 108/167] Bump golang.org/x/mod Bumps the extractor-dependencies group in /go/extractor with 1 update: [golang.org/x/mod](https://github.com/golang/mod). Updates `golang.org/x/mod` from 0.38.0 to 0.39.0 - [Commits](https://github.com/golang/mod/compare/v0.38.0...v0.39.0) --- updated-dependencies: - dependency-name: golang.org/x/mod dependency-version: 0.39.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: extractor-dependencies ... Signed-off-by: dependabot[bot] --- go/extractor/go.mod | 2 +- go/extractor/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go/extractor/go.mod b/go/extractor/go.mod index c92b654c8c6c..fc48b4cffeba 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -9,7 +9,7 @@ toolchain go1.26.5 // when adding or removing dependencies, run // bazel mod tidy require ( - golang.org/x/mod v0.38.0 + golang.org/x/mod v0.39.0 golang.org/x/tools v0.48.0 ) diff --git a/go/extractor/go.sum b/go/extractor/go.sum index b57649cbb351..889863082b11 100644 --- a/go/extractor/go.sum +++ b/go/extractor/go.sum @@ -6,8 +6,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -golang.org/x/mod v0.38.0 h1:MECBjubtXD7yj4HrhIUcywNaGeNVUdfVnxmPajOk4yk= -golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40= +golang.org/x/mod v0.39.0 h1:UF5zwQdCRRUpHfyPwr7d4UrGiVeldIsogtzWVnczL74= +golang.org/x/mod v0.39.0/go.mod h1:bvIbwjQ0HUFFf5AKukeeYQG4ZBUG9yxQbR9aEweIwYY= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= From d09cd94b9291890d3d3151b04493425a1fff4513 Mon Sep 17 00:00:00 2001 From: Keshav Malik Date: Fri, 14 Aug 2026 09:51:48 +0530 Subject: [PATCH 109/167] C#: Avoid recursive operator simplification --- .../ql/src/Language Abuse/SimplifyBoolExpr.ql | 20 ++++++- ...6-08-13-simplifiable-operator-recursion.md | 4 ++ .../SimplifyBoolExpr/SimplifyBoolExpr.cs | 60 +++++++++++++++++++ .../SimplifyBoolExpr.expected | 3 + .../SimplifyBoolExpr/SimplifyBoolExpr.qlref | 2 + .../Language Abuse/SimplifyBoolExpr/options | 1 + 6 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 csharp/ql/src/change-notes/2026-08-13-simplifiable-operator-recursion.md create mode 100644 csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.cs create mode 100644 csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.expected create mode 100644 csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.qlref create mode 100644 csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/options diff --git a/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql b/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql index 8fea284ae317..100fa2338110 100644 --- a/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql +++ b/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql @@ -75,6 +75,23 @@ predicate negatedOperators(string op, string negated) { negatedOperators(negated, op) } +/** Holds if replacing `expr` with `operatorName` could call an enclosing operator. */ +private predicate couldCallEnclosingOperator(LogicalNotExpr expr, string operatorName) { + exists(BinaryOperation binary, Operator enclosingOperator | + binary = expr.getOperand() and + enclosingOperator = expr.getEnclosingCallable().getEnclosingCallable*() and + enclosingOperator.getName() = operatorName and + binary + .getLeftOperand() + .getType() + .isImplicitlyConvertibleTo(enclosingOperator.getParameter(0).getType()) and + binary + .getRightOperand() + .getType() + .isImplicitlyConvertibleTo(enclosingOperator.getParameter(1).getType()) + ) +} + predicate simplifyBinaryExpr(string op, string withFalseOperand, string withTrueOperand) { op = "==" and withTrueOperand = "A" and withFalseOperand = "!A" or @@ -90,7 +107,8 @@ predicate pushNegation(LogicalNotExpr expr, string oldPattern, string newPattern or exists(string oldOperator, string newOperator | oldOperator = expr.getOperand().(BinaryOperation).getOperator() and - negatedOperators(oldOperator, newOperator) + negatedOperators(oldOperator, newOperator) and + not couldCallEnclosingOperator(expr, newOperator) | oldPattern = "!(A " + oldOperator + " B)" and newPattern = "A " + newOperator + " B" diff --git a/csharp/ql/src/change-notes/2026-08-13-simplifiable-operator-recursion.md b/csharp/ql/src/change-notes/2026-08-13-simplifiable-operator-recursion.md new file mode 100644 index 000000000000..177df03a1b55 --- /dev/null +++ b/csharp/ql/src/change-notes/2026-08-13-simplifiable-operator-recursion.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The `cs/simplifiable-boolean-expression` query no longer suggests replacing a negated comparison when the replacement could recursively call an enclosing user-defined operator in `build-mode: none` databases. diff --git a/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.cs b/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.cs new file mode 100644 index 000000000000..882ded10f873 --- /dev/null +++ b/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.cs @@ -0,0 +1,60 @@ +using System; + +// The missing matching operators deliberately model an incompletely compiled database. +class IncompleteOperatorTest +{ + // GOOD: Rewriting this as `left != right` could recursively call this operator. + public static bool operator !=(IncompleteOperatorTest left, IncompleteOperatorTest right) + { + // BAD: Rewriting this built-in comparison cannot call the enclosing operator. + bool valuesDiffer = !(left.Value == right.Value); // $ Alert + + // BAD: Explicitly converting both operands prevents a call to the enclosing operator. + bool referencesDiffer = !((object)left == (object)right); // $ Alert + + return valuesDiffer && referencesDiffer && !(left == right); + } + + // GOOD: Rewriting this as `left >= right` could recursively call this operator. + public static bool operator >=(IncompleteOperatorTest left, IncompleteOperatorTest right) => !(left < right); + + int Value { get; } +} + +class IncompleteReverseOperatorTest +{ + // GOOD: Rewriting this as `left == right` could recursively call this operator. + public static bool operator ==(IncompleteReverseOperatorTest left, IncompleteReverseOperatorTest right) => !(left != right); + + // GOOD: Rewriting this as `left < right` could recursively call this operator. + public static bool operator <(IncompleteReverseOperatorTest left, IncompleteReverseOperatorTest right) => !(left >= right); +} + +class IncompleteGreaterOperatorTest +{ + // GOOD: Rewriting this as `left <= right` could recursively call this operator. + public static bool operator <=(IncompleteGreaterOperatorTest left, IncompleteGreaterOperatorTest right) => !(left > right); + + // GOOD: Rewriting this as `left > right` could recursively call this operator. + public static bool operator >(IncompleteGreaterOperatorTest left, IncompleteGreaterOperatorTest right) => !(left <= right); +} + +class IncompleteDifferentOperatorTest +{ + // BAD: The suggested operator differs from the enclosing operator. + public static bool operator >(IncompleteDifferentOperatorTest left, IncompleteDifferentOperatorTest right) => !(left == right); // $ Alert +} + +class IncompleteNestedOperatorTest +{ + public static bool operator !=(IncompleteNestedOperatorTest left, IncompleteNestedOperatorTest right) + { + // GOOD: The replacement could call the enclosing operator from this lambda. + Func lambda = () => !(left == right); + + // GOOD: The replacement could call the enclosing operator from this local function. + bool Local() => !(left == right); + + return lambda() || Local(); + } +} diff --git a/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.expected b/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.expected new file mode 100644 index 000000000000..a0b97ee97862 --- /dev/null +++ b/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.expected @@ -0,0 +1,3 @@ +| SimplifyBoolExpr.cs:10:29:10:56 | !... | The expression '!(A == B)' can be simplified to 'A != B'. | +| SimplifyBoolExpr.cs:13:33:13:64 | !... | The expression '!(A == B)' can be simplified to 'A != B'. | +| SimplifyBoolExpr.cs:45:115:45:130 | !... | The expression '!(A == B)' can be simplified to 'A != B'. | diff --git a/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.qlref b/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.qlref new file mode 100644 index 000000000000..222fc236213b --- /dev/null +++ b/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.qlref @@ -0,0 +1,2 @@ +query: Language Abuse/SimplifyBoolExpr.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/options b/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/options new file mode 100644 index 000000000000..7ba3811b2afb --- /dev/null +++ b/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/options @@ -0,0 +1 @@ +semmle-extractor-options: --standalone From bb64af0b892031d0c2d6a02bb704fa29b6d13a98 Mon Sep 17 00:00:00 2001 From: Anders Fugmann Date: Wed, 12 Aug 2026 14:03:29 +0200 Subject: [PATCH 110/167] Java: add regression test for Maven version property Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 77fc65d2-e1bb-46b1-a73d-aed6101a7596 --- .../maven-enforcer-property-version/pom.xml | 134 ++++++++++++++++++ .../settings.xml | 10 ++ .../source_archive.expected | 11 ++ .../src/main/java/com/example/App.java | 30 ++++ .../src/main/resources/my-app.properties | 1 + .../src/main/resources/page.xml | 8 ++ .../src/main/resources/struts.xml | 4 + .../src/test/java/com/example/AppTest.java | 20 +++ .../maven-enforcer-property-version/test.py | 9 ++ .../maven-enforcer-single-version/test.py | 1 + 10 files changed, 228 insertions(+) create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/pom.xml create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/settings.xml create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/source_archive.expected create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/src/main/java/com/example/App.java create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/my-app.properties create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/page.xml create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/struts.xml create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/src/test/java/com/example/AppTest.java create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/test.py diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/pom.xml b/java/ql/integration-tests/java/maven-enforcer-property-version/pom.xml new file mode 100644 index 000000000000..1fde7386b72b --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/pom.xml @@ -0,0 +1,134 @@ + + + + 4.0.0 + + com.example + maven-sample + 1.0-SNAPSHOT + + maven-sample + + http://www.example.com + + + UTF-8 + 1.7 + 1.7 + 3.9.1 + + + + + junit + junit + 4.11 + test + + + + + + + exec-maven-plugin + org.codehaus.mojo + 1.1.1 + + + check-maven-version + package + + java + + + + + com.example.App + + + + com.diffplug.spotless + spotless-maven-plugin + 2.19.1 + + + + check + + compile + + + + + + /* FAIL ME */ + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-maven + + enforce + + + + + ${maven.version} + + + + + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + + + diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/settings.xml b/java/ql/integration-tests/java/maven-enforcer-property-version/settings.xml new file mode 100644 index 000000000000..a40670670a62 --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/settings.xml @@ -0,0 +1,10 @@ + + + + google-maven-central + GCS Maven Central mirror + https://maven-central.storage-download.googleapis.com/maven2/ + central + + + diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/source_archive.expected b/java/ql/integration-tests/java/maven-enforcer-property-version/source_archive.expected new file mode 100644 index 000000000000..d86dae4531fd --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/source_archive.expected @@ -0,0 +1,11 @@ +pom.xml +settings.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +target/classes/my-app.properties +target/classes/page.xml +target/classes/struts.xml +target/maven-archiver/pom.properties diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/java/com/example/App.java new file mode 100644 index 000000000000..3229e21835cd --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/java/com/example/App.java @@ -0,0 +1,30 @@ +package com.example; + +import java.util.regex.Pattern; +import java.nio.file.Path; +import java.nio.file.Paths; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + String expectedVersion = System.getenv("EXPECT_MAVEN"); + Path mavenHome = Paths.get(System.getProperty("maven.home")).normalize(); + String observedVersion = mavenHome.getFileName().toString(); + if (expectedVersion != null && !expectedVersion.equals(observedVersion)) { + System.err.println("Wrong maven version, expected '" + expectedVersion + "' but got '" + observedVersion + "'" + mavenHome); + System.exit(1); + } + String commandMatcher = System.getenv("EXPECT_COMMAND_REGEX"); + String command = System.getProperty("sun.java.command"); + if (commandMatcher != null && !Pattern.matches(commandMatcher, command)) { + System.err.println("Wrong command line, '" + command + "' does not match '" + commandMatcher + "'"); + System.exit(1); + } + } +} diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/my-app.properties new file mode 100644 index 000000000000..e566b49a29a8 --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/my-app.properties @@ -0,0 +1 @@ +version=1.0 diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/page.xml new file mode 100644 index 000000000000..2bab459cb031 --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/page.xml @@ -0,0 +1,8 @@ + + +A sample + + +

Hello world!

+ + diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/struts.xml new file mode 100644 index 000000000000..73fc0c6b9cb6 --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/struts.xml @@ -0,0 +1,4 @@ + + +This is a sample file + diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-enforcer-property-version/src/test/java/com/example/AppTest.java new file mode 100644 index 000000000000..328b4d97ce59 --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/test/java/com/example/AppTest.java @@ -0,0 +1,20 @@ +package com.example; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class AppTest +{ + /** + * Rigorous Test :-) + */ + @Test + public void shouldAnswerWithTrue() + { + assertTrue( true ); + } +} diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/test.py b/java/ql/integration-tests/java/maven-enforcer-property-version/test.py new file mode 100644 index 000000000000..ac4bff0d9e26 --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/test.py @@ -0,0 +1,9 @@ +import os + +def test(codeql, java): + codeql.database.create( + _env={ + "EXPECT_MAVEN": "apache-maven-3.9.9", + "LGTM_INDEX_MAVEN_SETTINGS_FILE": os.path.join(os.path.dirname(os.path.realpath(__file__)), "settings.xml"), + }, + ) diff --git a/java/ql/integration-tests/java/maven-enforcer-single-version/test.py b/java/ql/integration-tests/java/maven-enforcer-single-version/test.py index a71c8821d5e6..ac4bff0d9e26 100644 --- a/java/ql/integration-tests/java/maven-enforcer-single-version/test.py +++ b/java/ql/integration-tests/java/maven-enforcer-single-version/test.py @@ -3,6 +3,7 @@ def test(codeql, java): codeql.database.create( _env={ + "EXPECT_MAVEN": "apache-maven-3.9.9", "LGTM_INDEX_MAVEN_SETTINGS_FILE": os.path.join(os.path.dirname(os.path.realpath(__file__)), "settings.xml"), }, ) From 668f4e836ef70bacad089fa13c05f97cb0cc5cba Mon Sep 17 00:00:00 2001 From: Anders Fugmann Date: Wed, 12 Aug 2026 14:49:51 +0200 Subject: [PATCH 111/167] Java: test Maven 3.9.16 selection Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e435859b-f4ed-442f-b649-5e1002031780 --- .../java/maven-enforcer-property-version/test.py | 2 +- .../java/maven-enforcer-single-version/test.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/test.py b/java/ql/integration-tests/java/maven-enforcer-property-version/test.py index ac4bff0d9e26..295db6762b6f 100644 --- a/java/ql/integration-tests/java/maven-enforcer-property-version/test.py +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/test.py @@ -3,7 +3,7 @@ def test(codeql, java): codeql.database.create( _env={ - "EXPECT_MAVEN": "apache-maven-3.9.9", + "EXPECT_MAVEN": "apache-maven-3.9.16", "LGTM_INDEX_MAVEN_SETTINGS_FILE": os.path.join(os.path.dirname(os.path.realpath(__file__)), "settings.xml"), }, ) diff --git a/java/ql/integration-tests/java/maven-enforcer-single-version/test.py b/java/ql/integration-tests/java/maven-enforcer-single-version/test.py index ac4bff0d9e26..295db6762b6f 100644 --- a/java/ql/integration-tests/java/maven-enforcer-single-version/test.py +++ b/java/ql/integration-tests/java/maven-enforcer-single-version/test.py @@ -3,7 +3,7 @@ def test(codeql, java): codeql.database.create( _env={ - "EXPECT_MAVEN": "apache-maven-3.9.9", + "EXPECT_MAVEN": "apache-maven-3.9.16", "LGTM_INDEX_MAVEN_SETTINGS_FILE": os.path.join(os.path.dirname(os.path.realpath(__file__)), "settings.xml"), }, ) From fe0e62206d55ed767d5b67c2d92515d5e7e99415 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 14 Aug 2026 11:22:46 +0200 Subject: [PATCH 112/167] Unified: Address Copilot code review --- .../register_downloaded_macos_toolchain.patch | 76 ++++++++++++++++++- .../4.0.0-rc5-codeql.1/source.json | 2 +- 2 files changed, 75 insertions(+), 3 deletions(-) diff --git a/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/patches/register_downloaded_macos_toolchain.patch b/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/patches/register_downloaded_macos_toolchain.patch index 029f78c06f03..6d94822e0247 100644 --- a/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/patches/register_downloaded_macos_toolchain.patch +++ b/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/patches/register_downloaded_macos_toolchain.patch @@ -87,11 +87,15 @@ diff --git a/swift/internal/extensions/toolchain.BUILD b/swift/internal/extensio diff --git a/swift/internal/extensions/standalone_toolchain.bzl b/swift/internal/extensions/standalone_toolchain.bzl --- a/swift/internal/extensions/standalone_toolchain.bzl +++ b/swift/internal/extensions/standalone_toolchain.bzl -@@ -91,11 +91,13 @@ def _standalone_toolchain_impl(repository_ctx): +@@ -91,11 +91,17 @@ def _standalone_toolchain_impl(repository_ctx): strip_prefix = filename.removesuffix(".tar.gz"), ) -+ macos_sdkroot = _run(repository_ctx, ["xcrun", "--sdk", "macosx", "--show-sdk-path"]) if repository_ctx.attr.platform == "xcode" else "" ++ macos_sdkroot = "" ++ if repository_ctx.attr.platform == "xcode": ++ macos_sdkroot = _run(repository_ctx, ["xcrun", "--sdk", "macosx", "--show-sdk-path"]) ++ repository_ctx.watch(macos_sdkroot) ++ repository_ctx.file(".swift-version", repository_ctx.attr.swift_version) repository_ctx.template( "BUILD.bazel", @@ -101,3 +105,71 @@ diff --git a/swift/internal/extensions/standalone_toolchain.bzl b/swift/internal "{swift_version}": repository_ctx.attr.swift_version, }, ) +@@ -107,19 +109,29 @@ def _standalone_toolchain_impl(repository_ctx): +-standalone_toolchain = repository_rule( +- implementation = _standalone_toolchain_impl, +- attrs = { +- "_build_template": attr.label( +- default = "//swift/internal/extensions:toolchain.BUILD", +- ), +- "platform": attr.string( +- doc = "The host platform name in the swift package download URL", +- mandatory = True, +- ), +- "sha256": attr.string( +- doc = "The expected SHA-256 of the file downloaded. This must match the SHA-256 of the file downloaded.", +- ), +- "swift_version": attr.string( +- doc = "Version of the swift toolchain to be installed.", +- mandatory = True, +- ), +- }, ++_STANDALONE_TOOLCHAIN_ATTRS = { ++ "_build_template": attr.label( ++ default = "//swift/internal/extensions:toolchain.BUILD", ++ ), ++ "platform": attr.string( ++ doc = "The host platform name in the swift package download URL", ++ mandatory = True, ++ ), ++ "sha256": attr.string( ++ doc = "The expected SHA-256 of the file downloaded. This must match the SHA-256 of the file downloaded.", ++ ), ++ "swift_version": attr.string( ++ doc = "Version of the swift toolchain to be installed.", ++ mandatory = True, ++ ), ++} ++ ++standalone_toolchain = repository_rule( ++ implementation = _standalone_toolchain_impl, ++ attrs = _STANDALONE_TOOLCHAIN_ATTRS, ++) ++ ++standalone_macos_toolchain = repository_rule( ++ implementation = _standalone_toolchain_impl, ++ attrs = _STANDALONE_TOOLCHAIN_ATTRS, ++ configure = True, ++ environ = ["DEVELOPER_DIR"], ++ local = True, + ) +diff --git a/swift/extensions.bzl b/swift/extensions.bzl +--- a/swift/extensions.bzl ++++ b/swift/extensions.bzl +@@ -17 +17,5 @@ +-load("//swift/internal/extensions:standalone_toolchain.bzl", "standalone_toolchain") ++load( ++ "//swift/internal/extensions:standalone_toolchain.bzl", ++ "standalone_macos_toolchain", ++ "standalone_toolchain", ++) +@@ -182,7 +186,8 @@ def _standalone_toolchain_impl(module_ctx): + toolchain_releases = toolchain.platform_sha256.items() or swift_releases[swift_version].items() + for platform, sha256 in toolchain_releases: + repository_name = toolchain.name + "_{}".format(platform) +- standalone_toolchain( ++ toolchain_repository = standalone_macos_toolchain if platform == "xcode" else standalone_toolchain ++ toolchain_repository( + name = repository_name, + sha256 = sha256, + platform = platform, diff --git a/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/source.json b/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/source.json index fd5c4f2047e7..4f98e32f3d62 100644 --- a/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/source.json +++ b/misc/bazel/registry/modules/rules_swift/4.0.0-rc5-codeql.1/source.json @@ -2,7 +2,7 @@ "integrity": "sha256-Ly2lS4AlZJMiyqAxKHyCB+2pGeP5aYkQ6zv8QheeSTI=", "url": "https://github.com/bazelbuild/rules_swift/releases/download/4.0.0-rc5/rules_swift.4.0.0-rc5.tar.gz", "patches": { - "register_downloaded_macos_toolchain.patch": "sha256-kFzGyE1MhhiDxUfEzRPUTahvycyy+VNgPzQ5I44zRYc=" + "register_downloaded_macos_toolchain.patch": "sha256-249WJ4YEH2HmxlvGftl4eD53792joKJx9Dh0j5eHAgo=" }, "patch_strip": 1 } From 81f626a894c51ea5ff90225e5b73dfd699559dc8 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 14 Aug 2026 09:37:07 +0200 Subject: [PATCH 113/167] unified: Build a placeholder executable on windows This mirrors the approach taken by the original Swift extractor --- unified/BUILD.bazel | 7 ++++--- unified/extractor-unsupported-os/BUILD.bazel | 8 ++++++++ unified/extractor-unsupported-os/Cargo.toml | 6 ++++++ unified/extractor-unsupported-os/src/main.rs | 4 ++++ 4 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 unified/extractor-unsupported-os/BUILD.bazel create mode 100644 unified/extractor-unsupported-os/Cargo.toml create mode 100644 unified/extractor-unsupported-os/src/main.rs diff --git a/unified/BUILD.bazel b/unified/BUILD.bazel index 1539c7fd2f9d..c30dbbdeee58 100644 --- a/unified/BUILD.bazel +++ b/unified/BUILD.bazel @@ -41,9 +41,10 @@ codeql_pkg_files( codeql_pkg_files( name = "extractor-arch", - exes = [ - "//unified/extractor", - ] + select_os( + exes = select_os( + posix = ["//unified/extractor"], + windows = ["//unified/extractor-unsupported-os:extractor"], + ) + select_os( linux = ["//unified/swift-syntax-rs:swift_runtime_libs"], otherwise = [], ), diff --git a/unified/extractor-unsupported-os/BUILD.bazel b/unified/extractor-unsupported-os/BUILD.bazel new file mode 100644 index 000000000000..63ccae37bf45 --- /dev/null +++ b/unified/extractor-unsupported-os/BUILD.bazel @@ -0,0 +1,8 @@ +load("//misc/bazel:rust.bzl", "codeql_rust_binary") + +codeql_rust_binary( + name = "extractor", + srcs = ["src/main.rs"], + crate_root = "src/main.rs", + visibility = ["//visibility:public"], +) diff --git a/unified/extractor-unsupported-os/Cargo.toml b/unified/extractor-unsupported-os/Cargo.toml new file mode 100644 index 000000000000..da374ad31c6f --- /dev/null +++ b/unified/extractor-unsupported-os/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "codeql-extractor-unified-unsupported-os" +description = "Fallback executable for unsupported CodeQL Unified extractor platforms" +version = "0.1.0" +authors = ["GitHub"] +edition = "2024" diff --git a/unified/extractor-unsupported-os/src/main.rs b/unified/extractor-unsupported-os/src/main.rs new file mode 100644 index 000000000000..fa3705a9a68e --- /dev/null +++ b/unified/extractor-unsupported-os/src/main.rs @@ -0,0 +1,4 @@ +fn main() { + println!("Unsupported OS. Extraction is not currently supported on Windows."); + std::process::exit(1); +} From 508df7e7c6dca481de57146012ef4686b0246475 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 14 Aug 2026 13:38:14 +0200 Subject: [PATCH 114/167] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- unified/extractor-unsupported-os/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unified/extractor-unsupported-os/src/main.rs b/unified/extractor-unsupported-os/src/main.rs index fa3705a9a68e..a59217a2c09d 100644 --- a/unified/extractor-unsupported-os/src/main.rs +++ b/unified/extractor-unsupported-os/src/main.rs @@ -1,4 +1,4 @@ fn main() { - println!("Unsupported OS. Extraction is not currently supported on Windows."); + eprintln!("Unsupported OS. Extraction is not currently supported on Windows."); std::process::exit(1); } From 69660446fc530057f8365d36e2309a4d5986150f Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Fri, 14 Aug 2026 15:04:40 +0200 Subject: [PATCH 115/167] C#: add linux-arm64 to standalone_dependencies assembly path normalization Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../standalone_dependencies_executing_runtime/Assemblies.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.ql index b5634fb7b96a..ec5297f39aa4 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.ql +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.ql @@ -3,7 +3,7 @@ import csharp private string getPath(Assembly a) { not a.getCompilation().getOutputAssembly() = a and exists(string s | s = a.getFile().getAbsolutePath() | - exists(string sub | sub = "csharp/tools/" + ["osx64", "linux64"] | + exists(string sub | sub = "csharp/tools/" + ["osx64", "linux64", "linux-arm64"] | result = "[...]/csharp/tools/[...]" + s.substring(s.indexOf(sub) + sub.length(), s.length()) ) or From 1c6b4b8c854426aa5a62eeceb3448be116afdb0d Mon Sep 17 00:00:00 2001 From: Keshav Malik Date: Fri, 14 Aug 2026 21:04:34 +0530 Subject: [PATCH 116/167] Fix TransformStream constructor arity --- javascript/externs/web/streamsapi.js | 22 +++++++++++++++++-- ...08-14-transformstream-constructor-arity.md | 4 ++++ .../SpuriousArguments.expected | 1 + .../SpuriousArguments/externs.js | 8 +++++++ .../SpuriousArguments/transformstream.ts | 15 +++++++++++++ 5 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 javascript/ql/src/change-notes/2026-08-14-transformstream-constructor-arity.md create mode 100644 javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/transformstream.ts diff --git a/javascript/externs/web/streamsapi.js b/javascript/externs/web/streamsapi.js index 4a335775aadb..2e936a1b7a13 100644 --- a/javascript/externs/web/streamsapi.js +++ b/javascript/externs/web/streamsapi.js @@ -38,9 +38,27 @@ var QueuingStrategy; /** + * A transform stream (https://streams.spec.whatwg.org/#transform-stream). * @record */ -function TransformStream() {}; +function ITransformStream() {}; + +/** @type {!WritableStream} */ +ITransformStream.prototype.writable; + +/** @type {!ReadableStream} */ +ITransformStream.prototype.readable; + + +/** + * @constructor + * @implements {ITransformStream} + * @param {Object=} transformer + * @param {!QueuingStrategy=} writableStrategy + * @param {!QueuingStrategy=} readableStrategy + * @see https://streams.spec.whatwg.org/#ts-class + */ +function TransformStream(transformer, writableStrategy, readableStrategy) {}; /** @type {!WritableStream} */ TransformStream.prototype.writable; @@ -120,7 +138,7 @@ ReadableStream.prototype.cancel = function(reason) {}; ReadableStream.prototype.getReader = function(opt_options) {}; /** - * @param {!TransformStream} transform + * @param {!ITransformStream} transform * @param {!PipeOptions=} opt_options * @return {!ReadableStream} * @see https://streams.spec.whatwg.org/#rs-pipe-through diff --git a/javascript/ql/src/change-notes/2026-08-14-transformstream-constructor-arity.md b/javascript/ql/src/change-notes/2026-08-14-transformstream-constructor-arity.md new file mode 100644 index 000000000000..a8b66c4c612b --- /dev/null +++ b/javascript/ql/src/change-notes/2026-08-14-transformstream-constructor-arity.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The `js/superfluous-trailing-arguments` query no longer reports valid arguments passed to the `TransformStream` constructor. diff --git a/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/SpuriousArguments.expected b/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/SpuriousArguments.expected index b88dd7d68e80..40493b31b1ec 100644 --- a/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/SpuriousArguments.expected +++ b/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/SpuriousArguments.expected @@ -8,6 +8,7 @@ | reflection.js:7:15:7:18 | 1 | Superfluous arguments passed to $@. | reflection.js:1:1:1:23 | functio ... eturn;} | function f0 | | reflection.js:12:18:12:18 | 2 | Superfluous argument passed to $@. | reflection.js:2:1:2:24 | functio ... eturn;} | function f1 | | thisparameter.ts:4:11:4:12 | 45 | Superfluous argument passed to $@. | thisparameter.ts:1:1:1:45 | functio ... eturn;} | function foo | +| transformstream.ts:15:33:15:34 | {} | Superfluous argument passed to $@. | externs.js:48:1:48:76 | functio ... egy) {} | function TransformStream | | tst.js:10:3:10:5 | g() | Superfluous argument passed to $@. | tst.js:1:1:4:1 | functio ... x+19;\\n} | function f | | tst.js:31:15:31:18 | 2 | Superfluous arguments passed to $@. | externs.js:34:1:34:27 | functio ... str) {} | function String | | tst.js:34:4:34:5 | 42 | Superfluous argument passed to $@. | tst.js:35:4:35:23 | function() {return;} | anonymous function | diff --git a/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/externs.js b/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/externs.js index c8a88126efbf..cc3bf09cc149 100644 --- a/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/externs.js +++ b/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/externs.js @@ -39,4 +39,12 @@ function Number() {} Number.parseFloat = function(num) {}; +/** + * @param {*=} transformer + * @param {*=} writableStrategy + * @param {*=} readableStrategy + * @constructor + */ +function TransformStream(transformer, writableStrategy, readableStrategy) {} + /** @externs */ diff --git a/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/transformstream.ts b/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/transformstream.ts new file mode 100644 index 000000000000..161ffc4fcf7b --- /dev/null +++ b/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/transformstream.ts @@ -0,0 +1,15 @@ +class CustomTransformStream extends TransformStream { + constructor() { + super({ + transform(chunk, controller) { + controller.enqueue(chunk); + } + }); + } +} + +new TransformStream(); +new TransformStream({}); +new TransformStream({}, {}); +new TransformStream({}, {}, {}); +new TransformStream({}, {}, {}, {}); // $ Alert From 110943091d9397bae8397de11281aee457c03b21 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 9 Jul 2026 13:42:20 +0200 Subject: [PATCH 117/167] Rust: Add more MaD source/sink tests --- .../library-tests/dataflow/models/main.rs | 80 + .../dataflow/models/models.expected | 1483 +++++++++-------- .../dataflow/models/models.ext.yml | 6 + 3 files changed, 876 insertions(+), 693 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/models/main.rs b/rust/ql/test/library-tests/dataflow/models/main.rs index 61e5928636d7..a65963600494 100644 --- a/rust/ql/test/library-tests/dataflow/models/main.rs +++ b/rust/ql/test/library-tests/dataflow/models/main.rs @@ -75,6 +75,7 @@ fn test_set_var_pos() { enum MyFieldEnum { C { field_c: i64 }, D { field_d: i64 }, + E { field_e: Option }, } // has a flow model @@ -101,6 +102,7 @@ fn test_set_var_field() { match e1 { MyFieldEnum::C { field_c: i } => sink(i), MyFieldEnum::D { field_d: i } => sink(i), // $ hasValueFlow=5 + MyFieldEnum::E { field_e: o } => () } } @@ -246,11 +248,30 @@ fn enum_source(i: i64) -> MyFieldEnum { MyFieldEnum::C { field_c: 0 } } +// has a source model +fn enum_source_nested(i: i64) -> MyFieldEnum { + MyFieldEnum::C { field_c: 0 } +} + fn test_enum_source() { let s = enum_source(12); match s { MyFieldEnum::C { field_c: i } => sink(i), MyFieldEnum::D { field_d: i } => sink(i), // $ hasValueFlow=12 + MyFieldEnum::E { field_e: o } => () + } + + let s = enum_source_nested(13); + match s { + MyFieldEnum::C { field_c: i } => sink(i), + MyFieldEnum::D { field_d: i } => sink(i), + MyFieldEnum::E { field_e: o } => + { + match o { + Some(i) => sink(i), // $ hasValueFlow=13 + None => () + } + } } } @@ -260,10 +281,12 @@ fn test_enum_method_source() { match s { MyFieldEnum::C { field_c: i } => sink(i), // $ hasValueFlow=13 MyFieldEnum::D { field_d: i } => sink(i), + MyFieldEnum::E { field_e: o } => () } } mod source_into_function { + use crate::MyFieldEnum; use super::sink; // has a source model @@ -271,6 +294,11 @@ mod source_into_function { f(42) } + // has a source model + fn pass_source_nested(_i: i64, f: impl FnOnce(MyFieldEnum) -> ()) { + f(MyFieldEnum::C { field_c: 0 }) + } + fn test_source_into_function() { let a = |a| sink(a); // $ hasValueFlow=1 pass_source(1, a); @@ -287,16 +315,57 @@ mod source_into_function { pass_source(4, async move |a| { sink(a); // $ hasValueFlow=4 }); + + pass_source_nested(5, |e| { + match e { + MyFieldEnum::C { field_c: i } => sink(i), + MyFieldEnum::D { field_d: i } => sink(i), + MyFieldEnum::E { field_e: o } => + { + match o { + Some(i) => sink(i), // $ hasValueFlow=5 + None => () + } + } + } + }); + } +} + +mod sink_out_of_function { + use crate::MyFieldEnum; + use super::source; + + // has a sink model + fn pass_sink(f: impl FnOnce(()) -> i64) { } + + // has a sink model + fn pass_sink_nested(f: impl FnOnce(()) -> MyFieldEnum) { } + + fn test_sink_out_of_function() { + let a = |a| source(1); + pass_sink(a); // $ MISSING: hasValueFlow=1 + + let b = |_a| { + let s = source(2); + MyFieldEnum::E { field_e: Option::Some(s) } + }; + pass_sink_nested(b); // $ MISSING: hasValueFlow=2 } } // has a sink model fn enum_sink(e: MyFieldEnum) {} +// has a sink model +fn enum_sink_nested(e: MyFieldEnum) {} + fn test_enum_sink() { let s = source(14); enum_sink(MyFieldEnum::C { field_c: s }); // $ hasValueFlow=14 enum_sink(MyFieldEnum::D { field_d: s }); + enum_sink_nested(MyFieldEnum::E { field_e: None }); + enum_sink_nested(MyFieldEnum::E { field_e: Some(s) }); // $ hasValueFlow=14 } fn test_enum_method_sink() { @@ -332,6 +401,17 @@ fn test_arg_source() { sink(i) // $ hasValueFlow=i } +trait MyTrait { + // has a source model + fn test_param_source(i: i64); +} + +impl MyTrait for () { + fn test_param_source(i: i64) { + sink(i) // $ MISSING: hasValueFlow=i + } +} + struct MyStruct2(i64); impl PartialEq for MyStruct { diff --git a/rust/ql/test/library-tests/dataflow/models/models.expected b/rust/ql/test/library-tests/dataflow/models/models.expected index e5ea563eaefe..f531b85b6898 100644 --- a/rust/ql/test/library-tests/dataflow/models/models.expected +++ b/rust/ql/test/library-tests/dataflow/models/models.expected @@ -1,36 +1,39 @@ models | 1 | Sink: ::sink; Argument[self].Field[main::MyFieldEnum::D::field_d]; test-sink | | 2 | Sink: main::enum_sink; Argument[0].Field[main::MyFieldEnum::C::field_c]; test-sink | -| 3 | Sink: main::external_file::generated_sink; Argument[0]; test-sink | -| 4 | Sink: main::external_file::neutral_manual_sink; Argument[0]; test-sink | -| 5 | Sink: main::simple_sink; Argument[0]; test-sink | -| 6 | Source: ::source; ReturnValue.Field[main::MyFieldEnum::C::field_c]; test-source | -| 7 | Source: main::arg_source; Argument[0]; test-source | -| 8 | Source: main::enum_source; ReturnValue.Field[main::MyFieldEnum::D::field_d]; test-source | -| 9 | Source: main::external_file::generated_source; ReturnValue; test-source | -| 10 | Source: main::external_file::neutral_manual_source; ReturnValue; test-source | -| 11 | Source: main::simple_source; ReturnValue; test-source | -| 12 | Source: main::source_into_function::pass_source; Argument[1].Parameter[0]; test-source | -| 13 | Summary: <_ as core::cmp::Ord>::max; Argument[self,0]; ReturnValue; value | -| 14 | Summary: <_ as core::cmp::PartialOrd>::lt; Argument[self].Reference; ReturnValue; taint | -| 15 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | -| 16 | Summary: main::apply; Argument[0]; Argument[1].Parameter[0]; value | -| 17 | Summary: main::apply; Argument[1].ReturnValue; ReturnValue; value | -| 18 | Summary: main::coerce; Argument[0]; ReturnValue; taint | -| 19 | Summary: main::external_file::generated_summary; Argument[0]; ReturnValue; value | -| 20 | Summary: main::external_file::neutral_manual_summary; Argument[0]; ReturnValue; value | -| 21 | Summary: main::get_array_element; Argument[0].Element; ReturnValue; value | -| 22 | Summary: main::get_async_number; Argument[0]; ReturnValue.Future; value | -| 23 | Summary: main::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value | -| 24 | Summary: main::get_tuple_element; Argument[0].Field[0]; ReturnValue; value | -| 25 | Summary: main::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value | -| 26 | Summary: main::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value | -| 27 | Summary: main::set_array_element; Argument[0]; ReturnValue.Element; value | -| 28 | Summary: main::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value | -| 29 | Summary: main::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value | -| 30 | Summary: main::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value | -| 31 | Summary: main::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value | -| 32 | Summary: main::snd; Argument[1]; ReturnValue; value | +| 3 | Sink: main::enum_sink_nested; Argument[0].Field[main::MyFieldEnum::E::field_e].Field[core::option::Option::Some(0)]; test-sink | +| 4 | Sink: main::external_file::generated_sink; Argument[0]; test-sink | +| 5 | Sink: main::external_file::neutral_manual_sink; Argument[0]; test-sink | +| 6 | Sink: main::simple_sink; Argument[0]; test-sink | +| 7 | Source: ::source; ReturnValue.Field[main::MyFieldEnum::C::field_c]; test-source | +| 8 | Source: main::arg_source; Argument[0]; test-source | +| 9 | Source: main::enum_source; ReturnValue.Field[main::MyFieldEnum::D::field_d]; test-source | +| 10 | Source: main::enum_source_nested; ReturnValue.Field[main::MyFieldEnum::E::field_e].Field[core::option::Option::Some(0)]; test-source | +| 11 | Source: main::external_file::generated_source; ReturnValue; test-source | +| 12 | Source: main::external_file::neutral_manual_source; ReturnValue; test-source | +| 13 | Source: main::simple_source; ReturnValue; test-source | +| 14 | Source: main::source_into_function::pass_source; Argument[1].Parameter[0]; test-source | +| 15 | Source: main::source_into_function::pass_source_nested; Argument[1].Parameter[0].Field[main::MyFieldEnum::E::field_e].Field[core::option::Option::Some(0)]; test-source | +| 16 | Summary: <_ as core::cmp::Ord>::max; Argument[self,0]; ReturnValue; value | +| 17 | Summary: <_ as core::cmp::PartialOrd>::lt; Argument[self].Reference; ReturnValue; taint | +| 18 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | +| 19 | Summary: main::apply; Argument[0]; Argument[1].Parameter[0]; value | +| 20 | Summary: main::apply; Argument[1].ReturnValue; ReturnValue; value | +| 21 | Summary: main::coerce; Argument[0]; ReturnValue; taint | +| 22 | Summary: main::external_file::generated_summary; Argument[0]; ReturnValue; value | +| 23 | Summary: main::external_file::neutral_manual_summary; Argument[0]; ReturnValue; value | +| 24 | Summary: main::get_array_element; Argument[0].Element; ReturnValue; value | +| 25 | Summary: main::get_async_number; Argument[0]; ReturnValue.Future; value | +| 26 | Summary: main::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value | +| 27 | Summary: main::get_tuple_element; Argument[0].Field[0]; ReturnValue; value | +| 28 | Summary: main::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value | +| 29 | Summary: main::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value | +| 30 | Summary: main::set_array_element; Argument[0]; ReturnValue.Element; value | +| 31 | Summary: main::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value | +| 32 | Summary: main::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value | +| 33 | Summary: main::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value | +| 34 | Summary: main::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value | +| 35 | Summary: main::snd; Argument[1]; ReturnValue; 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 | | @@ -40,13 +43,13 @@ 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:18 | +| main.rs:26:17:26:17 | s | main.rs:26:10:26:18 | coerce(...) | provenance | MaD:21 | | main.rs:41:9:41:10 | s1 | main.rs:42:17:42:18 | s1 | provenance | | | main.rs:41:9:41:10 | s1 | main.rs:42:17:42:18 | s1 | provenance | | | main.rs:41:14:41:23 | source(...) | main.rs:41:9:41:10 | s1 | provenance | | | main.rs:41:14:41:23 | source(...) | main.rs:41:9:41:10 | s1 | provenance | | -| main.rs:42:17:42:18 | s1 | main.rs:42:10:42:19 | snd(...) | provenance | MaD:32 | -| main.rs:42:17:42:18 | s1 | main.rs:42:10:42:19 | snd(...) | provenance | MaD:32 | +| main.rs:42:17:42:18 | s1 | main.rs:42:10:42:19 | snd(...) | provenance | MaD:35 | +| main.rs:42:17:42:18 | s1 | main.rs:42:10:42:19 | snd(...) | provenance | MaD:35 | | main.rs:54:9:54:9 | s | main.rs:55:27:55:27 | s | provenance | | | main.rs:54:9:54:9 | s | main.rs:55:27:55:27 | s | provenance | | | main.rs:54:13:54:21 | source(...) | main.rs:54:9:54:9 | s | provenance | | @@ -57,8 +60,8 @@ edges | main.rs:55:14:55:28 | ...::A(...) [A] | main.rs:55:9:55:10 | e1 [A] | provenance | | | main.rs:55:27:55:27 | s | main.rs:55:14:55:28 | ...::A(...) [A] | provenance | | | main.rs:55:27:55:27 | s | main.rs:55:14:55:28 | ...::A(...) [A] | provenance | | -| main.rs:56:22:56:23 | e1 [A] | main.rs:56:10:56:24 | get_var_pos(...) | provenance | MaD:26 | -| main.rs:56:22:56:23 | e1 [A] | main.rs:56:10:56:24 | get_var_pos(...) | provenance | MaD:26 | +| main.rs:56:22:56:23 | e1 [A] | main.rs:56:10:56:24 | get_var_pos(...) | provenance | MaD:29 | +| main.rs:56:22:56:23 | e1 [A] | main.rs:56:10:56:24 | get_var_pos(...) | provenance | MaD:29 | | main.rs:67:9:67:9 | s | main.rs:68:26:68:26 | s | provenance | | | main.rs:67:9:67:9 | s | main.rs:68:26:68:26 | s | provenance | | | main.rs:67:13:67:21 | source(...) | main.rs:67:9:67:9 | s | provenance | | @@ -67,276 +70,318 @@ edges | main.rs:68:9:68:10 | e1 [B] | main.rs:69:11:69:12 | e1 [B] | provenance | | | main.rs:68:14:68:27 | set_var_pos(...) [B] | main.rs:68:9:68:10 | e1 [B] | provenance | | | main.rs:68:14:68:27 | set_var_pos(...) [B] | main.rs:68:9:68:10 | e1 [B] | provenance | | -| main.rs:68:26:68:26 | s | main.rs:68:14:68:27 | set_var_pos(...) [B] | provenance | MaD:31 | -| main.rs:68:26:68:26 | s | main.rs:68:14:68:27 | set_var_pos(...) [B] | provenance | MaD:31 | +| main.rs:68:26:68:26 | s | main.rs:68:14:68:27 | set_var_pos(...) [B] | provenance | MaD:34 | +| main.rs:68:26:68:26 | s | main.rs:68:14:68:27 | set_var_pos(...) [B] | provenance | MaD:34 | | main.rs:69:11:69:12 | e1 [B] | main.rs:71:9:71:23 | ...::B(...) [B] | provenance | | | main.rs:69:11:69:12 | e1 [B] | main.rs:71:9:71:23 | ...::B(...) [B] | provenance | | | main.rs:71:9:71:23 | ...::B(...) [B] | main.rs:71:22:71:22 | i | provenance | | | main.rs:71:9:71:23 | ...::B(...) [B] | main.rs:71:22:71:22 | i | provenance | | | main.rs:71:22:71:22 | i | main.rs:71:33:71:33 | i | provenance | | | main.rs:71:22:71:22 | i | main.rs:71:33:71:33 | i | provenance | | -| main.rs:86:9:86:9 | s | main.rs:87:40:87:40 | s | provenance | | -| main.rs:86:9:86:9 | s | main.rs:87:40:87:40 | s | provenance | | -| main.rs:86:13:86:21 | source(...) | main.rs:86:9:86:9 | s | provenance | | -| main.rs:86:13:86:21 | source(...) | main.rs:86:9:86:9 | s | provenance | | -| main.rs:87:9:87:10 | e1 [C] | main.rs:88:24:88:25 | e1 [C] | provenance | | -| main.rs:87:9:87:10 | e1 [C] | main.rs:88:24:88:25 | e1 [C] | provenance | | -| main.rs:87:14:87:42 | ...::C {...} [C] | main.rs:87:9:87:10 | e1 [C] | provenance | | -| main.rs:87:14:87:42 | ...::C {...} [C] | main.rs:87:9:87:10 | e1 [C] | provenance | | -| main.rs:87:40:87:40 | s | main.rs:87:14:87:42 | ...::C {...} [C] | provenance | | -| main.rs:87:40:87:40 | s | main.rs:87:14:87:42 | ...::C {...} [C] | provenance | | -| main.rs:88:24:88:25 | e1 [C] | main.rs:88:10:88:26 | get_var_field(...) | provenance | MaD:25 | -| main.rs:88:24:88:25 | e1 [C] | main.rs:88:10:88:26 | get_var_field(...) | provenance | MaD:25 | -| main.rs:99:9:99:9 | s | main.rs:100:28:100:28 | s | provenance | | -| main.rs:99:9:99:9 | s | main.rs:100:28:100:28 | s | provenance | | -| main.rs:99:13:99:21 | source(...) | main.rs:99:9:99:9 | s | provenance | | -| main.rs:99:13:99:21 | source(...) | main.rs:99:9:99:9 | s | provenance | | -| main.rs:100:9:100:10 | e1 [D] | main.rs:101:11:101:12 | e1 [D] | provenance | | -| main.rs:100:9:100:10 | e1 [D] | main.rs:101:11:101:12 | e1 [D] | provenance | | -| main.rs:100:14:100:29 | set_var_field(...) [D] | main.rs:100:9:100:10 | e1 [D] | provenance | | -| main.rs:100:14:100:29 | set_var_field(...) [D] | main.rs:100:9:100:10 | e1 [D] | provenance | | -| main.rs:100:28:100:28 | s | main.rs:100:14:100:29 | set_var_field(...) [D] | provenance | MaD:30 | -| main.rs:100:28:100:28 | s | main.rs:100:14:100:29 | set_var_field(...) [D] | provenance | MaD:30 | -| main.rs:101:11:101:12 | e1 [D] | main.rs:103:9:103:37 | ...::D {...} [D] | provenance | | -| main.rs:101:11:101:12 | e1 [D] | main.rs:103:9:103:37 | ...::D {...} [D] | provenance | | -| main.rs:103:9:103:37 | ...::D {...} [D] | main.rs:103:35:103:35 | i | provenance | | -| main.rs:103:9:103:37 | ...::D {...} [D] | main.rs:103:35:103:35 | i | provenance | | -| main.rs:103:35:103:35 | i | main.rs:103:47:103:47 | i | provenance | | -| main.rs:103:35:103:35 | i | main.rs:103:47:103:47 | i | provenance | | -| main.rs:118:9:118:9 | s | main.rs:120:17:120:17 | s | provenance | | -| main.rs:118:9:118:9 | s | main.rs:120:17:120:17 | s | provenance | | -| main.rs:118:13:118:21 | source(...) | main.rs:118:9:118:9 | s | provenance | | -| main.rs:118:13:118:21 | source(...) | main.rs:118:9:118:9 | s | provenance | | -| main.rs:119:9:119:17 | my_struct [MyStruct.field1] | main.rs:123:27:123:35 | my_struct [MyStruct.field1] | provenance | | -| main.rs:119:9:119:17 | my_struct [MyStruct.field1] | main.rs:123:27:123:35 | my_struct [MyStruct.field1] | provenance | | -| main.rs:119:21:122:5 | MyStruct {...} [MyStruct.field1] | main.rs:119:9:119:17 | my_struct [MyStruct.field1] | provenance | | -| main.rs:119:21:122:5 | MyStruct {...} [MyStruct.field1] | main.rs:119:9:119:17 | my_struct [MyStruct.field1] | provenance | | -| main.rs:120:17:120:17 | s | main.rs:119:21:122:5 | MyStruct {...} [MyStruct.field1] | provenance | | -| main.rs:120:17:120:17 | s | main.rs:119:21:122:5 | MyStruct {...} [MyStruct.field1] | provenance | | -| main.rs:123:27:123:35 | my_struct [MyStruct.field1] | main.rs:123:10:123:36 | get_struct_field(...) | provenance | MaD:23 | -| main.rs:123:27:123:35 | my_struct [MyStruct.field1] | main.rs:123:10:123:36 | get_struct_field(...) | provenance | MaD:23 | -| main.rs:140:9:140:9 | s | main.rs:141:38:141:38 | s | provenance | | -| main.rs:140:9:140:9 | s | main.rs:141:38:141:38 | s | provenance | | -| main.rs:140:13:140:21 | source(...) | main.rs:140:9:140:9 | s | provenance | | -| main.rs:140:13:140:21 | source(...) | main.rs:140:9:140:9 | s | provenance | | -| main.rs:141:9:141:17 | my_struct [MyStruct.field2] | main.rs:143:10:143:18 | my_struct [MyStruct.field2] | provenance | | -| main.rs:141:9:141:17 | my_struct [MyStruct.field2] | main.rs:143:10:143:18 | my_struct [MyStruct.field2] | provenance | | -| main.rs:141:21:141:39 | set_struct_field(...) [MyStruct.field2] | main.rs:141:9:141:17 | my_struct [MyStruct.field2] | provenance | | -| main.rs:141:21:141:39 | set_struct_field(...) [MyStruct.field2] | main.rs:141:9:141:17 | my_struct [MyStruct.field2] | provenance | | -| main.rs:141:38:141:38 | s | main.rs:141:21:141:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:28 | -| main.rs:141:38:141:38 | s | main.rs:141:21:141:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:28 | -| main.rs:143:10:143:18 | my_struct [MyStruct.field2] | main.rs:143:10:143:25 | my_struct.field2 | provenance | | -| main.rs:143:10:143:18 | my_struct [MyStruct.field2] | main.rs:143:10:143:25 | my_struct.field2 | provenance | | -| main.rs:152:9:152:9 | s | main.rs:153:29:153:29 | s | provenance | | -| main.rs:152:9:152:9 | s | main.rs:153:29:153:29 | s | provenance | | -| main.rs:152:13:152:21 | source(...) | main.rs:152:9:152:9 | s | provenance | | -| main.rs:152:13:152:21 | source(...) | main.rs:152:9:152:9 | s | provenance | | -| main.rs:153:28:153:30 | [...] [element] | main.rs:153:10:153:31 | get_array_element(...) | provenance | MaD:21 | -| main.rs:153:28:153:30 | [...] [element] | main.rs:153:10:153:31 | get_array_element(...) | provenance | MaD:21 | -| main.rs:153:29:153:29 | s | main.rs:153:28:153:30 | [...] [element] | provenance | | -| main.rs:153:29:153:29 | s | main.rs:153:28:153:30 | [...] [element] | provenance | | -| main.rs:162:9:162:9 | s | main.rs:163:33:163:33 | s | provenance | | -| main.rs:162:9:162:9 | s | main.rs:163:33:163:33 | s | provenance | | -| main.rs:162:13:162:21 | source(...) | main.rs:162:9:162:9 | s | provenance | | -| main.rs:162:13:162:21 | source(...) | main.rs:162:9:162:9 | s | provenance | | -| main.rs:163:9:163:11 | arr [element] | main.rs:164:10:164:12 | arr [element] | provenance | | -| main.rs:163:9:163:11 | arr [element] | main.rs:164:10:164:12 | arr [element] | provenance | | -| main.rs:163:15:163:34 | set_array_element(...) [element] | main.rs:163:9:163:11 | arr [element] | provenance | | -| main.rs:163:15:163:34 | set_array_element(...) [element] | main.rs:163:9:163:11 | arr [element] | provenance | | -| main.rs:163:33:163:33 | s | main.rs:163:15:163:34 | set_array_element(...) [element] | provenance | MaD:27 | -| main.rs:163:33:163:33 | s | main.rs:163:15:163:34 | set_array_element(...) [element] | provenance | MaD:27 | -| main.rs:164:10:164:12 | arr [element] | main.rs:164:10:164:15 | arr[0] | provenance | MaD:15 | -| main.rs:164:10:164:12 | arr [element] | main.rs:164:10:164:15 | arr[0] | provenance | MaD:15 | -| main.rs:173:9:173:9 | s | main.rs:174:14:174:14 | s | provenance | | -| main.rs:173:9:173:9 | s | main.rs:174:14:174:14 | s | provenance | | -| main.rs:173:13:173:22 | source(...) | main.rs:173:9:173:9 | s | provenance | | -| main.rs:173:13:173:22 | source(...) | main.rs:173:9:173:9 | s | provenance | | -| main.rs:174:9:174:9 | t [tuple.0] | main.rs:175:28:175:28 | t [tuple.0] | provenance | | -| main.rs:174:9:174:9 | t [tuple.0] | main.rs:175:28:175:28 | t [tuple.0] | provenance | | -| main.rs:174:13:174:18 | TupleExpr [tuple.0] | main.rs:174:9:174:9 | t [tuple.0] | provenance | | -| main.rs:174:13:174:18 | TupleExpr [tuple.0] | main.rs:174:9:174:9 | t [tuple.0] | provenance | | -| main.rs:174:14:174:14 | s | main.rs:174:13:174:18 | TupleExpr [tuple.0] | provenance | | -| main.rs:174:14:174:14 | s | main.rs:174:13:174:18 | TupleExpr [tuple.0] | provenance | | -| main.rs:175:28:175:28 | t [tuple.0] | main.rs:175:10:175:29 | get_tuple_element(...) | provenance | MaD:24 | -| main.rs:175:28:175:28 | t [tuple.0] | main.rs:175:10:175:29 | get_tuple_element(...) | provenance | MaD:24 | -| main.rs:186:9:186:9 | s | main.rs:187:31:187:31 | s | provenance | | -| main.rs:186:9:186:9 | s | main.rs:187:31:187:31 | s | provenance | | -| main.rs:186:13:186:22 | source(...) | main.rs:186:9:186:9 | s | provenance | | -| main.rs:186:13:186:22 | source(...) | main.rs:186:9:186:9 | s | provenance | | -| main.rs:187:9:187:9 | t [tuple.1] | main.rs:189:10:189:10 | t [tuple.1] | provenance | | -| main.rs:187:9:187:9 | t [tuple.1] | main.rs:189:10:189:10 | t [tuple.1] | provenance | | -| main.rs:187:13:187:32 | set_tuple_element(...) [tuple.1] | main.rs:187:9:187:9 | t [tuple.1] | provenance | | -| main.rs:187:13:187:32 | set_tuple_element(...) [tuple.1] | main.rs:187:9:187:9 | t [tuple.1] | provenance | | -| main.rs:187:31:187:31 | s | main.rs:187:13:187:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:29 | -| main.rs:187:31:187:31 | s | main.rs:187:13:187:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:29 | -| main.rs:189:10:189:10 | t [tuple.1] | main.rs:189:10:189:12 | t.1 | provenance | | -| main.rs:189:10:189:10 | t [tuple.1] | main.rs:189:10:189:12 | t.1 | provenance | | -| main.rs:201:9:201:9 | s | main.rs:206:11:206:11 | s | provenance | | -| main.rs:201:9:201:9 | s | main.rs:206:11:206:11 | s | provenance | | -| main.rs:201:13:201:22 | source(...) | main.rs:201:9:201:9 | s | provenance | | -| main.rs:201:13:201:22 | source(...) | main.rs:201:9:201:9 | s | provenance | | -| main.rs:202:14:202:14 | ... | main.rs:203:14:203:14 | n | provenance | | -| main.rs:202:14:202:14 | ... | main.rs:203:14:203:14 | n | provenance | | -| main.rs:206:11:206:11 | s | main.rs:202:14:202:14 | ... | provenance | MaD:16 | -| main.rs:206:11:206:11 | s | main.rs:202:14:202:14 | ... | provenance | MaD:16 | -| main.rs:210:13:210:22 | source(...) | main.rs:212:23:212:23 | f [captured s] | provenance | | -| main.rs:210:13:210:22 | source(...) | main.rs:212:23:212:23 | f [captured s] | provenance | | -| main.rs:211:40:211:40 | s | main.rs:211:17:211:42 | if ... {...} else {...} | provenance | | -| main.rs:211:40:211:40 | s | main.rs:211:17:211:42 | if ... {...} else {...} | provenance | | -| main.rs:212:9:212:9 | t | main.rs:213:10:213:10 | t | provenance | | -| main.rs:212:9:212:9 | t | main.rs:213:10:213:10 | t | provenance | | -| main.rs:212:13:212:24 | apply(...) | main.rs:212:9:212:9 | t | provenance | | -| main.rs:212:13:212:24 | apply(...) | main.rs:212:9:212:9 | t | provenance | | -| main.rs:212:23:212:23 | f [captured s] | main.rs:211:40:211:40 | s | provenance | MaD:16 | -| main.rs:212:23:212:23 | f [captured s] | main.rs:211:40:211:40 | s | provenance | MaD:16 | -| main.rs:212:23:212:23 | f [captured s] | main.rs:211:40:211:40 | s | provenance | MaD:17 | -| main.rs:212:23:212:23 | f [captured s] | main.rs:211:40:211:40 | s | provenance | MaD:17 | -| main.rs:212:23:212:23 | f [captured s] | main.rs:212:13:212:24 | apply(...) | provenance | MaD:16 | -| main.rs:212:23:212:23 | f [captured s] | main.rs:212:13:212:24 | apply(...) | provenance | MaD:16 | -| main.rs:212:23:212:23 | f [captured s] | main.rs:212:13:212:24 | apply(...) | provenance | MaD:17 | -| main.rs:212:23:212:23 | f [captured s] | main.rs:212:13:212:24 | apply(...) | provenance | MaD:17 | -| main.rs:217:9:217:9 | s | main.rs:219:19:219:19 | s | provenance | | -| main.rs:217:9:217:9 | s | main.rs:219:19:219:19 | s | provenance | | -| main.rs:217:13:217:22 | source(...) | main.rs:217:9:217:9 | s | provenance | | -| main.rs:217:13:217:22 | source(...) | main.rs:217:9:217:9 | s | provenance | | -| main.rs:218:14:218:14 | ... | main.rs:218:17:218:42 | if ... {...} else {...} | provenance | | -| main.rs:218:14:218:14 | ... | main.rs:218:17:218:42 | if ... {...} else {...} | provenance | | -| main.rs:219:9:219:9 | t | main.rs:220:10:220:10 | t | provenance | | -| main.rs:219:9:219:9 | t | main.rs:220:10:220:10 | t | provenance | | -| main.rs:219:13:219:23 | apply(...) | main.rs:219:9:219:9 | t | provenance | | -| main.rs:219:13:219:23 | apply(...) | main.rs:219:9:219:9 | t | provenance | | -| main.rs:219:19:219:19 | s | main.rs:218:14:218:14 | ... | provenance | MaD:16 | -| main.rs:219:19:219:19 | s | main.rs:218:14:218:14 | ... | provenance | MaD:16 | -| main.rs:219:19:219:19 | s | main.rs:219:13:219:23 | apply(...) | provenance | MaD:16 | -| main.rs:219:19:219:19 | s | main.rs:219:13:219:23 | apply(...) | provenance | MaD:16 | -| main.rs:229:9:229:9 | s | main.rs:230:30:230:30 | s | provenance | | -| main.rs:229:9:229:9 | s | main.rs:230:30:230:30 | s | provenance | | -| main.rs:229:13:229:22 | source(...) | main.rs:229:9:229:9 | s | provenance | | -| main.rs:229:13:229:22 | source(...) | main.rs:229:9:229:9 | s | provenance | | -| main.rs:230:9:230:9 | t | main.rs:231:10:231:10 | t | provenance | | -| main.rs:230:9:230:9 | t | main.rs:231:10:231:10 | t | provenance | | -| main.rs:230:13:230:31 | get_async_number(...) [future] | main.rs:230:13:230:37 | await ... | provenance | | -| main.rs:230:13:230:31 | get_async_number(...) [future] | main.rs:230:13:230:37 | await ... | provenance | | -| main.rs:230:13:230:37 | await ... | main.rs:230:9:230:9 | t | provenance | | -| main.rs:230:13:230:37 | await ... | main.rs:230:9:230:9 | t | provenance | | -| main.rs:230:30:230:30 | s | main.rs:230:13:230:31 | get_async_number(...) [future] | provenance | MaD:22 | -| main.rs:230:30:230:30 | s | main.rs:230:13:230:31 | get_async_number(...) [future] | provenance | MaD:22 | -| main.rs:250:9:250:9 | s [D] | main.rs:251:11:251:11 | s [D] | provenance | | -| main.rs:250:9:250:9 | s [D] | main.rs:251:11:251:11 | s [D] | provenance | | -| main.rs:250:13:250:23 | enum_source | main.rs:250:13:250:27 | enum_source(...) [D] | provenance | Src:MaD:8 | -| main.rs:250:13:250:23 | enum_source | main.rs:250:13:250:27 | enum_source(...) [D] | provenance | Src:MaD:8 | -| main.rs:250:13:250:27 | enum_source(...) [D] | main.rs:250:9:250:9 | s [D] | provenance | | -| main.rs:250:13:250:27 | enum_source(...) [D] | main.rs:250:9:250:9 | s [D] | provenance | | -| main.rs:251:11:251:11 | s [D] | main.rs:253:9:253:37 | ...::D {...} [D] | provenance | | -| main.rs:251:11:251:11 | s [D] | main.rs:253:9:253:37 | ...::D {...} [D] | provenance | | -| main.rs:253:9:253:37 | ...::D {...} [D] | main.rs:253:35:253:35 | i | provenance | | -| main.rs:253:9:253:37 | ...::D {...} [D] | main.rs:253:35:253:35 | i | provenance | | -| main.rs:253:35:253:35 | i | main.rs:253:47:253:47 | i | provenance | | -| main.rs:253:35:253:35 | i | main.rs:253:47:253:47 | i | provenance | | -| main.rs:259:9:259:9 | s [C] | main.rs:260:11:260:11 | s [C] | provenance | | -| main.rs:259:9:259:9 | s [C] | main.rs:260:11:260:11 | s [C] | provenance | | -| main.rs:259:13:259:24 | e.source(...) [C] | main.rs:259:9:259:9 | s [C] | provenance | | -| main.rs:259:13:259:24 | e.source(...) [C] | main.rs:259:9:259:9 | s [C] | provenance | | -| main.rs:259:15:259:20 | source | main.rs:259:13:259:24 | e.source(...) [C] | provenance | Src:MaD:6 | -| main.rs:259:15:259:20 | source | main.rs:259:13:259:24 | e.source(...) [C] | provenance | Src:MaD:6 | -| main.rs:260:11:260:11 | s [C] | main.rs:261:9:261:37 | ...::C {...} [C] | provenance | | -| main.rs:260:11:260:11 | s [C] | main.rs:261:9:261:37 | ...::C {...} [C] | provenance | | -| main.rs:261:9:261:37 | ...::C {...} [C] | main.rs:261:35:261:35 | i | provenance | | -| main.rs:261:9:261:37 | ...::C {...} [C] | main.rs:261:35:261:35 | i | provenance | | -| main.rs:261:35:261:35 | i | main.rs:261:47:261:47 | i | provenance | | -| main.rs:261:35:261:35 | i | main.rs:261:47:261:47 | i | provenance | | -| main.rs:275:18:275:18 | ... | main.rs:275:26:275:26 | a | provenance | | -| main.rs:275:18:275:18 | ... | main.rs:275:26:275:26 | a | provenance | | -| main.rs:276:9:276:19 | pass_source | main.rs:275:18:275:18 | ... | provenance | Src:MaD:12 | -| main.rs:276:9:276:19 | pass_source | main.rs:275:18:275:18 | ... | provenance | Src:MaD:12 | -| main.rs:278:9:278:19 | pass_source | main.rs:278:25:278:25 | ... | provenance | Src:MaD:12 | -| main.rs:278:9:278:19 | pass_source | main.rs:278:25:278:25 | ... | provenance | Src:MaD:12 | -| main.rs:278:25:278:25 | ... | main.rs:279:18:279:18 | a | provenance | | -| main.rs:278:25:278:25 | ... | main.rs:279:18:279:18 | a | provenance | | -| main.rs:282:14:282:19 | ...: i64 | main.rs:283:18:283:18 | a | provenance | | -| main.rs:282:14:282:19 | ...: i64 | main.rs:283:18:283:18 | a | provenance | | -| main.rs:285:9:285:19 | pass_source | main.rs:282:14:282:19 | ...: i64 | provenance | Src:MaD:12 | -| main.rs:285:9:285:19 | pass_source | main.rs:282:14:282:19 | ...: i64 | provenance | Src:MaD:12 | -| main.rs:287:9:287:19 | pass_source | main.rs:287:36:287:36 | ... | provenance | Src:MaD:12 | -| main.rs:287:9:287:19 | pass_source | main.rs:287:36:287:36 | ... | provenance | Src:MaD:12 | -| main.rs:287:36:287:36 | ... | main.rs:288:18:288:18 | a | provenance | | -| main.rs:287:36:287:36 | ... | main.rs:288:18:288:18 | a | provenance | | -| main.rs:297:9:297:9 | s | main.rs:298:41:298:41 | s | provenance | | -| main.rs:297:9:297:9 | s | main.rs:298:41:298:41 | s | provenance | | -| main.rs:297:13:297:22 | source(...) | main.rs:297:9:297:9 | s | provenance | | -| main.rs:297:13:297:22 | source(...) | main.rs:297:9:297:9 | s | provenance | | -| main.rs:298:15:298:43 | ...::C {...} [C] | main.rs:298:5:298:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 | -| main.rs:298:15:298:43 | ...::C {...} [C] | main.rs:298:5:298:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 | -| main.rs:298:41:298:41 | s | main.rs:298:15:298:43 | ...::C {...} [C] | provenance | | -| main.rs:298:41:298:41 | s | main.rs:298:15:298:43 | ...::C {...} [C] | provenance | | -| main.rs:303:9:303:9 | s | main.rs:304:39:304:39 | s | provenance | | -| main.rs:303:9:303:9 | s | main.rs:304:39:304:39 | s | provenance | | -| main.rs:303:13:303:22 | source(...) | main.rs:303:9:303:9 | s | provenance | | -| main.rs:303:13:303:22 | source(...) | main.rs:303:9:303:9 | s | provenance | | -| main.rs:304:9:304:9 | e [D] | main.rs:305:5:305:5 | e [D] | provenance | | -| main.rs:304:9:304:9 | e [D] | main.rs:305:5:305:5 | e [D] | provenance | | -| main.rs:304:13:304:41 | ...::D {...} [D] | main.rs:304:9:304:9 | e [D] | provenance | | -| main.rs:304:13:304:41 | ...::D {...} [D] | main.rs:304:9:304:9 | e [D] | provenance | | -| main.rs:304:39:304:39 | s | main.rs:304:13:304:41 | ...::D {...} [D] | provenance | | -| main.rs:304:39:304:39 | s | main.rs:304:13:304:41 | ...::D {...} [D] | provenance | | -| main.rs:305:5:305:5 | e [D] | main.rs:305:7:305:10 | sink | provenance | MaD:1 Sink:MaD:1 | -| main.rs:305:5:305:5 | e [D] | main.rs:305:7:305:10 | sink | provenance | MaD:1 Sink:MaD:1 | -| main.rs:314:9:314:9 | s | main.rs:315:10:315:10 | s | provenance | | -| main.rs:314:9:314:9 | s | main.rs:315:10:315:10 | s | provenance | | -| main.rs:314:13:314:25 | simple_source | main.rs:314:13:314:29 | simple_source(...) | provenance | Src:MaD:11 MaD:11 | -| main.rs:314:13:314:25 | simple_source | main.rs:314:13:314:29 | simple_source(...) | provenance | Src:MaD:11 MaD:11 | -| main.rs:314:13:314:29 | simple_source(...) | main.rs:314:9:314:9 | s | provenance | | -| main.rs:314:13:314:29 | simple_source(...) | main.rs:314:9:314:9 | s | provenance | | -| main.rs:322:9:322:9 | s | main.rs:323:17:323:17 | s | provenance | | -| main.rs:322:9:322:9 | s | main.rs:323:17:323:17 | s | provenance | | -| main.rs:322:13:322:22 | source(...) | main.rs:322:9:322:9 | s | provenance | | -| main.rs:322:13:322:22 | source(...) | main.rs:322:9:322:9 | s | provenance | | -| main.rs:323:17:323:17 | s | main.rs:323:5:323:15 | simple_sink | provenance | MaD:5 Sink:MaD:5 | -| main.rs:323:17:323:17 | s | main.rs:323:5:323:15 | simple_sink | provenance | MaD:5 Sink:MaD:5 | -| main.rs:331:5:331:14 | arg_source | main.rs:331:16:331:16 | [post] i | provenance | Src:MaD:7 MaD:7 | -| main.rs:331:5:331:14 | arg_source | main.rs:331:16:331:16 | [post] i | provenance | Src:MaD:7 MaD:7 | -| main.rs:331:16:331:16 | [post] i | main.rs:332:10:332:10 | i | provenance | | -| main.rs:331:16:331:16 | [post] i | main.rs:332:10:332:10 | i | provenance | | -| main.rs:384:9:384:10 | x1 | main.rs:385:10:385:11 | x1 | provenance | | -| main.rs:384:9:384:10 | x1 | main.rs:385:10:385:11 | x1 | provenance | | -| main.rs:384:14:384:23 | source(...) | main.rs:384:14:384:30 | ... .max(...) | provenance | MaD:13 | -| main.rs:384:14:384:23 | source(...) | main.rs:384:14:384:30 | ... .max(...) | provenance | MaD:13 | -| main.rs:384:14:384:30 | ... .max(...) | main.rs:384:9:384:10 | x1 | provenance | | -| main.rs:384:14:384:30 | ... .max(...) | main.rs:384:9:384:10 | x1 | provenance | | -| main.rs:387:9:387:10 | x2 [MyStruct.field1] | main.rs:395:10:395:11 | x2 [MyStruct.field1] | provenance | | -| main.rs:387:9:387:10 | x2 [MyStruct.field1] | main.rs:395:10:395:11 | x2 [MyStruct.field1] | provenance | | -| main.rs:387:14:394:6 | ... .max(...) [MyStruct.field1] | main.rs:387:9:387:10 | x2 [MyStruct.field1] | provenance | | -| main.rs:387:14:394:6 | ... .max(...) [MyStruct.field1] | main.rs:387:9:387:10 | x2 [MyStruct.field1] | provenance | | -| main.rs:387:15:390:5 | MyStruct {...} [MyStruct.field1] | main.rs:387:14:394:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:13 | -| main.rs:387:15:390:5 | MyStruct {...} [MyStruct.field1] | main.rs:387:14:394:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:13 | -| main.rs:388:17:388:26 | source(...) | main.rs:387:15:390:5 | MyStruct {...} [MyStruct.field1] | provenance | | -| main.rs:388:17:388:26 | source(...) | main.rs:387:15:390:5 | MyStruct {...} [MyStruct.field1] | provenance | | -| main.rs:395:10:395:11 | x2 [MyStruct.field1] | main.rs:395:10:395:18 | x2.field1 | provenance | | -| main.rs:395:10:395:11 | x2 [MyStruct.field1] | main.rs:395:10:395:18 | x2.field1 | provenance | | -| main.rs:400:9:400:10 | x4 | main.rs:401:10:401:11 | x4 | provenance | | -| main.rs:400:9:400:10 | x4 | main.rs:401:10:401:11 | x4 | provenance | | -| main.rs:400:14:400:23 | source(...) | main.rs:400:14:400:30 | ... .max(...) | provenance | MaD:13 | -| main.rs:400:14:400:23 | source(...) | main.rs:400:14:400:30 | ... .max(...) | provenance | MaD:13 | -| main.rs:400:14:400:30 | ... .max(...) | main.rs:400:9:400:10 | x4 | provenance | | -| main.rs:400:14:400:30 | ... .max(...) | main.rs:400:9:400:10 | x4 | provenance | | -| main.rs:403:9:403:10 | x5 | main.rs:404:10:404:11 | x5 | provenance | | -| main.rs:403:14:403:23 | source(...) | main.rs:403:14:403:30 | ... .lt(...) | provenance | MaD:14 | -| main.rs:403:14:403:30 | ... .lt(...) | main.rs:403:9:403:10 | x5 | provenance | | -| main.rs:406:9:406:10 | x6 | main.rs:407:10:407:11 | x6 | provenance | | -| main.rs:406:14:406:23 | source(...) | main.rs:406:14:406:27 | ... < ... | provenance | MaD:14 | -| main.rs:406:14:406:27 | ... < ... | main.rs:406:9:406:10 | x6 | provenance | | -| main.rs:422:10:422:25 | generated_source | main.rs:422:10:422:28 | generated_source(...) | provenance | Src:MaD:9 MaD:9 | -| main.rs:422:10:422:25 | generated_source | main.rs:422:10:422:28 | generated_source(...) | provenance | Src:MaD:9 MaD:9 | -| main.rs:424:10:424:30 | neutral_manual_source | main.rs:424:10:424:33 | neutral_manual_source(...) | provenance | Src:MaD:10 MaD:10 | -| main.rs:424:10:424:30 | neutral_manual_source | main.rs:424:10:424:33 | neutral_manual_source(...) | provenance | Src:MaD:10 MaD:10 | -| main.rs:425:20:425:28 | source(...) | main.rs:425:5:425:18 | generated_sink | provenance | MaD:3 Sink:MaD:3 | -| main.rs:425:20:425:28 | source(...) | main.rs:425:5:425:18 | generated_sink | provenance | MaD:3 Sink:MaD:3 | -| main.rs:427:25:427:33 | source(...) | main.rs:427:5:427:23 | neutral_manual_sink | provenance | MaD:4 Sink:MaD:4 | -| main.rs:427:25:427:33 | source(...) | main.rs:427:5:427:23 | neutral_manual_sink | provenance | MaD:4 Sink:MaD:4 | -| main.rs:428:28:428:36 | source(...) | main.rs:428:10:428:37 | generated_summary(...) | provenance | MaD:19 | -| main.rs:428:28:428:36 | source(...) | main.rs:428:10:428:37 | generated_summary(...) | provenance | MaD:19 | -| main.rs:430:33:430:41 | source(...) | main.rs:430:10:430:42 | neutral_manual_summary(...) | provenance | MaD:20 | -| main.rs:430:33:430:41 | source(...) | main.rs:430:10:430:42 | neutral_manual_summary(...) | provenance | MaD:20 | +| main.rs:87:9:87:9 | s | main.rs:88:40:88:40 | s | provenance | | +| main.rs:87:9:87:9 | s | main.rs:88:40:88:40 | s | provenance | | +| main.rs:87:13:87:21 | source(...) | main.rs:87:9:87:9 | s | provenance | | +| main.rs:87:13:87:21 | source(...) | main.rs:87:9:87:9 | s | provenance | | +| main.rs:88:9:88:10 | e1 [C] | main.rs:89:24:89:25 | e1 [C] | provenance | | +| main.rs:88:9:88:10 | e1 [C] | main.rs:89:24:89:25 | e1 [C] | provenance | | +| main.rs:88:14:88:42 | ...::C {...} [C] | main.rs:88:9:88:10 | e1 [C] | provenance | | +| main.rs:88:14:88:42 | ...::C {...} [C] | main.rs:88:9:88:10 | e1 [C] | provenance | | +| main.rs:88:40:88:40 | s | main.rs:88:14:88:42 | ...::C {...} [C] | provenance | | +| main.rs:88:40:88:40 | s | main.rs:88:14:88:42 | ...::C {...} [C] | provenance | | +| main.rs:89:24:89:25 | e1 [C] | main.rs:89:10:89:26 | get_var_field(...) | provenance | MaD:28 | +| main.rs:89:24:89:25 | e1 [C] | main.rs:89:10:89:26 | get_var_field(...) | provenance | MaD:28 | +| main.rs:100:9:100:9 | s | main.rs:101:28:101:28 | s | provenance | | +| main.rs:100:9:100:9 | s | main.rs:101:28:101:28 | s | provenance | | +| main.rs:100:13:100:21 | source(...) | main.rs:100:9:100:9 | s | provenance | | +| main.rs:100:13:100:21 | source(...) | main.rs:100:9:100:9 | s | provenance | | +| main.rs:101:9:101:10 | e1 [D] | main.rs:102:11:102:12 | e1 [D] | provenance | | +| main.rs:101:9:101:10 | e1 [D] | main.rs:102:11:102:12 | e1 [D] | provenance | | +| main.rs:101:14:101:29 | set_var_field(...) [D] | main.rs:101:9:101:10 | e1 [D] | provenance | | +| main.rs:101:14:101:29 | set_var_field(...) [D] | main.rs:101:9:101:10 | e1 [D] | provenance | | +| main.rs:101:28:101:28 | s | main.rs:101:14:101:29 | set_var_field(...) [D] | provenance | MaD:33 | +| main.rs:101:28:101:28 | s | main.rs:101:14:101:29 | set_var_field(...) [D] | provenance | MaD:33 | +| main.rs:102:11:102:12 | e1 [D] | main.rs:104:9:104:37 | ...::D {...} [D] | provenance | | +| main.rs:102:11:102:12 | e1 [D] | main.rs:104:9:104:37 | ...::D {...} [D] | provenance | | +| main.rs:104:9:104:37 | ...::D {...} [D] | main.rs:104:35:104:35 | i | provenance | | +| main.rs:104:9:104:37 | ...::D {...} [D] | main.rs:104:35:104:35 | i | provenance | | +| main.rs:104:35:104:35 | i | main.rs:104:47:104:47 | i | provenance | | +| main.rs:104:35:104:35 | i | main.rs:104:47:104:47 | i | provenance | | +| main.rs:120:9:120:9 | s | main.rs:122:17:122:17 | s | provenance | | +| main.rs:120:9:120:9 | s | main.rs:122:17:122:17 | s | provenance | | +| main.rs:120:13:120:21 | source(...) | main.rs:120:9:120:9 | s | provenance | | +| main.rs:120:13:120:21 | source(...) | main.rs:120:9:120:9 | s | provenance | | +| main.rs:121:9:121:17 | my_struct [MyStruct.field1] | main.rs:125:27:125:35 | my_struct [MyStruct.field1] | provenance | | +| main.rs:121:9:121:17 | my_struct [MyStruct.field1] | main.rs:125:27:125:35 | my_struct [MyStruct.field1] | provenance | | +| main.rs:121:21:124:5 | MyStruct {...} [MyStruct.field1] | main.rs:121:9:121:17 | my_struct [MyStruct.field1] | provenance | | +| main.rs:121:21:124:5 | MyStruct {...} [MyStruct.field1] | main.rs:121:9:121:17 | my_struct [MyStruct.field1] | provenance | | +| main.rs:122:17:122:17 | s | main.rs:121:21:124:5 | MyStruct {...} [MyStruct.field1] | provenance | | +| main.rs:122:17:122:17 | s | main.rs:121:21:124:5 | MyStruct {...} [MyStruct.field1] | provenance | | +| main.rs:125:27:125:35 | my_struct [MyStruct.field1] | main.rs:125:10:125:36 | get_struct_field(...) | provenance | MaD:26 | +| main.rs:125:27:125:35 | my_struct [MyStruct.field1] | main.rs:125:10:125:36 | get_struct_field(...) | provenance | MaD:26 | +| main.rs:142:9:142:9 | s | main.rs:143:38:143:38 | s | provenance | | +| main.rs:142:9:142:9 | s | main.rs:143:38:143:38 | s | provenance | | +| main.rs:142:13:142:21 | source(...) | main.rs:142:9:142:9 | s | provenance | | +| main.rs:142:13:142:21 | source(...) | main.rs:142:9:142:9 | s | provenance | | +| main.rs:143:9:143:17 | my_struct [MyStruct.field2] | main.rs:145:10:145:18 | my_struct [MyStruct.field2] | provenance | | +| main.rs:143:9:143:17 | my_struct [MyStruct.field2] | main.rs:145:10:145:18 | my_struct [MyStruct.field2] | provenance | | +| main.rs:143:21:143:39 | set_struct_field(...) [MyStruct.field2] | main.rs:143:9:143:17 | my_struct [MyStruct.field2] | provenance | | +| main.rs:143:21:143:39 | set_struct_field(...) [MyStruct.field2] | main.rs:143:9:143:17 | my_struct [MyStruct.field2] | provenance | | +| main.rs:143:38:143:38 | s | main.rs:143:21:143:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:31 | +| main.rs:143:38:143:38 | s | main.rs:143:21:143:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:31 | +| main.rs:145:10:145:18 | my_struct [MyStruct.field2] | main.rs:145:10:145:25 | my_struct.field2 | provenance | | +| main.rs:145:10:145:18 | my_struct [MyStruct.field2] | main.rs:145:10:145:25 | my_struct.field2 | provenance | | +| main.rs:154:9:154:9 | s | main.rs:155:29:155:29 | s | provenance | | +| main.rs:154:9:154:9 | s | main.rs:155:29:155:29 | s | provenance | | +| main.rs:154:13:154:21 | source(...) | main.rs:154:9:154:9 | s | provenance | | +| main.rs:154:13:154:21 | source(...) | main.rs:154:9:154:9 | s | provenance | | +| main.rs:155:28:155:30 | [...] [element] | main.rs:155:10:155:31 | get_array_element(...) | provenance | MaD:24 | +| main.rs:155:28:155:30 | [...] [element] | main.rs:155:10:155:31 | get_array_element(...) | provenance | MaD:24 | +| main.rs:155:29:155:29 | s | main.rs:155:28:155:30 | [...] [element] | provenance | | +| main.rs:155:29:155:29 | s | main.rs:155:28:155:30 | [...] [element] | provenance | | +| main.rs:164:9:164:9 | s | main.rs:165:33:165:33 | s | provenance | | +| main.rs:164:9:164:9 | s | main.rs:165:33:165:33 | s | provenance | | +| main.rs:164:13:164:21 | source(...) | main.rs:164:9:164:9 | s | provenance | | +| main.rs:164:13:164:21 | source(...) | main.rs:164:9:164:9 | s | provenance | | +| main.rs:165:9:165:11 | arr [element] | main.rs:166:10:166:12 | arr [element] | provenance | | +| main.rs:165:9:165:11 | arr [element] | main.rs:166:10:166:12 | arr [element] | provenance | | +| main.rs:165:15:165:34 | set_array_element(...) [element] | main.rs:165:9:165:11 | arr [element] | provenance | | +| main.rs:165:15:165:34 | set_array_element(...) [element] | main.rs:165:9:165:11 | arr [element] | provenance | | +| main.rs:165:33:165:33 | s | main.rs:165:15:165:34 | set_array_element(...) [element] | provenance | MaD:30 | +| main.rs:165:33:165:33 | s | main.rs:165:15:165:34 | set_array_element(...) [element] | provenance | MaD:30 | +| main.rs:166:10:166:12 | arr [element] | main.rs:166:10:166:15 | arr[0] | provenance | MaD:18 | +| main.rs:166:10:166:12 | arr [element] | main.rs:166:10:166:15 | arr[0] | provenance | MaD:18 | +| main.rs:175:9:175:9 | s | main.rs:176:14:176:14 | s | provenance | | +| main.rs:175:9:175:9 | s | main.rs:176:14:176:14 | s | provenance | | +| main.rs:175:13:175:22 | source(...) | main.rs:175:9:175:9 | s | provenance | | +| main.rs:175:13:175:22 | source(...) | main.rs:175:9:175:9 | s | provenance | | +| main.rs:176:9:176:9 | t [tuple.0] | main.rs:177:28:177:28 | t [tuple.0] | provenance | | +| main.rs:176:9:176:9 | t [tuple.0] | main.rs:177:28:177:28 | t [tuple.0] | provenance | | +| main.rs:176:13:176:18 | TupleExpr [tuple.0] | main.rs:176:9:176:9 | t [tuple.0] | provenance | | +| main.rs:176:13:176:18 | TupleExpr [tuple.0] | main.rs:176:9:176:9 | t [tuple.0] | provenance | | +| main.rs:176:14:176:14 | s | main.rs:176:13:176:18 | TupleExpr [tuple.0] | provenance | | +| main.rs:176:14:176:14 | s | main.rs:176:13:176:18 | TupleExpr [tuple.0] | provenance | | +| main.rs:177:28:177:28 | t [tuple.0] | main.rs:177:10:177:29 | get_tuple_element(...) | provenance | MaD:27 | +| main.rs:177:28:177:28 | t [tuple.0] | main.rs:177:10:177:29 | get_tuple_element(...) | provenance | MaD:27 | +| main.rs:188:9:188:9 | s | main.rs:189:31:189:31 | s | provenance | | +| main.rs:188:9:188:9 | s | main.rs:189:31:189:31 | s | provenance | | +| main.rs:188:13:188:22 | source(...) | main.rs:188:9:188:9 | s | provenance | | +| main.rs:188:13:188:22 | source(...) | main.rs:188:9:188:9 | s | provenance | | +| main.rs:189:9:189:9 | t [tuple.1] | main.rs:191:10:191:10 | t [tuple.1] | provenance | | +| main.rs:189:9:189:9 | t [tuple.1] | main.rs:191:10:191:10 | t [tuple.1] | provenance | | +| main.rs:189:13:189:32 | set_tuple_element(...) [tuple.1] | main.rs:189:9:189:9 | t [tuple.1] | provenance | | +| main.rs:189:13:189:32 | set_tuple_element(...) [tuple.1] | main.rs:189:9:189:9 | t [tuple.1] | provenance | | +| main.rs:189:31:189:31 | s | main.rs:189:13:189:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:32 | +| main.rs:189:31:189:31 | s | main.rs:189:13:189:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:32 | +| main.rs:191:10:191:10 | t [tuple.1] | main.rs:191:10:191:12 | t.1 | provenance | | +| main.rs:191:10:191:10 | t [tuple.1] | main.rs:191:10:191:12 | t.1 | provenance | | +| main.rs:203:9:203:9 | s | main.rs:208:11:208:11 | s | provenance | | +| main.rs:203:9:203:9 | s | main.rs:208:11:208:11 | s | provenance | | +| main.rs:203:13:203:22 | source(...) | main.rs:203:9:203:9 | s | provenance | | +| main.rs:203:13:203:22 | source(...) | main.rs:203:9:203:9 | s | provenance | | +| main.rs:204:14:204:14 | ... | main.rs:205:14:205:14 | n | provenance | | +| main.rs:204:14:204:14 | ... | main.rs:205:14:205:14 | n | provenance | | +| main.rs:208:11:208:11 | s | main.rs:204:14:204:14 | ... | provenance | MaD:19 | +| main.rs:208:11:208:11 | s | main.rs:204:14:204:14 | ... | provenance | MaD:19 | +| main.rs:212:13:212:22 | source(...) | main.rs:214:23:214:23 | f [captured s] | provenance | | +| main.rs:212:13:212:22 | source(...) | main.rs:214:23:214:23 | f [captured s] | provenance | | +| main.rs:213:40:213:40 | s | main.rs:213:17:213:42 | if ... {...} else {...} | provenance | | +| main.rs:213:40:213:40 | s | main.rs:213:17:213:42 | if ... {...} else {...} | provenance | | +| main.rs:214:9:214:9 | t | main.rs:215:10:215:10 | t | provenance | | +| main.rs:214:9:214:9 | t | main.rs:215:10:215:10 | t | provenance | | +| main.rs:214:13:214:24 | apply(...) | main.rs:214:9:214:9 | t | provenance | | +| main.rs:214:13:214:24 | apply(...) | main.rs:214:9:214:9 | t | provenance | | +| main.rs:214:23:214:23 | f [captured s] | main.rs:213:40:213:40 | s | provenance | MaD:19 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:213:40:213:40 | s | provenance | MaD:19 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:213:40:213:40 | s | provenance | MaD:20 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:213:40:213:40 | s | provenance | MaD:20 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:214:13:214:24 | apply(...) | provenance | MaD:19 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:214:13:214:24 | apply(...) | provenance | MaD:19 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:214:13:214:24 | apply(...) | provenance | MaD:20 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:214:13:214:24 | apply(...) | provenance | MaD:20 | +| main.rs:219:9:219:9 | s | main.rs:221:19:221:19 | s | provenance | | +| main.rs:219:9:219:9 | s | main.rs:221:19:221:19 | s | provenance | | +| main.rs:219:13:219:22 | source(...) | main.rs:219:9:219:9 | s | provenance | | +| main.rs:219:13:219:22 | source(...) | main.rs:219:9:219:9 | s | provenance | | +| main.rs:220:14:220:14 | ... | main.rs:220:17:220:42 | if ... {...} else {...} | provenance | | +| main.rs:220:14:220:14 | ... | main.rs:220:17:220:42 | if ... {...} else {...} | provenance | | +| main.rs:221:9:221:9 | t | main.rs:222:10:222:10 | t | provenance | | +| main.rs:221:9:221:9 | t | main.rs:222:10:222:10 | t | provenance | | +| main.rs:221:13:221:23 | apply(...) | main.rs:221:9:221:9 | t | provenance | | +| main.rs:221:13:221:23 | apply(...) | main.rs:221:9:221:9 | t | provenance | | +| main.rs:221:19:221:19 | s | main.rs:220:14:220:14 | ... | provenance | MaD:19 | +| main.rs:221:19:221:19 | s | main.rs:220:14:220:14 | ... | provenance | MaD:19 | +| main.rs:221:19:221:19 | s | main.rs:221:13:221:23 | apply(...) | provenance | MaD:19 | +| main.rs:221:19:221:19 | s | main.rs:221:13:221:23 | apply(...) | provenance | MaD:19 | +| main.rs:231:9:231:9 | s | main.rs:232:30:232:30 | s | provenance | | +| main.rs:231:9:231:9 | s | main.rs:232:30:232:30 | s | provenance | | +| main.rs:231:13:231:22 | source(...) | main.rs:231:9:231:9 | s | provenance | | +| main.rs:231:13:231:22 | source(...) | main.rs:231:9:231:9 | s | provenance | | +| main.rs:232:9:232:9 | t | main.rs:233:10:233:10 | t | provenance | | +| main.rs:232:9:232:9 | t | main.rs:233:10:233:10 | t | provenance | | +| main.rs:232:13:232:31 | get_async_number(...) [future] | main.rs:232:13:232:37 | await ... | provenance | | +| main.rs:232:13:232:31 | get_async_number(...) [future] | main.rs:232:13:232:37 | await ... | provenance | | +| main.rs:232:13:232:37 | await ... | main.rs:232:9:232:9 | t | provenance | | +| main.rs:232:13:232:37 | await ... | main.rs:232:9:232:9 | t | provenance | | +| main.rs:232:30:232:30 | s | main.rs:232:13:232:31 | get_async_number(...) [future] | provenance | MaD:25 | +| main.rs:232:30:232:30 | s | main.rs:232:13:232:31 | get_async_number(...) [future] | provenance | MaD:25 | +| main.rs:257:9:257:9 | s [D] | main.rs:258:11:258:11 | s [D] | provenance | | +| main.rs:257:9:257:9 | s [D] | main.rs:258:11:258:11 | s [D] | provenance | | +| main.rs:257:13:257:23 | enum_source | main.rs:257:13:257:27 | enum_source(...) [D] | provenance | Src:MaD:9 | +| main.rs:257:13:257:23 | enum_source | main.rs:257:13:257:27 | enum_source(...) [D] | provenance | Src:MaD:9 | +| main.rs:257:13:257:27 | enum_source(...) [D] | main.rs:257:9:257:9 | s [D] | provenance | | +| main.rs:257:13:257:27 | enum_source(...) [D] | main.rs:257:9:257:9 | s [D] | provenance | | +| main.rs:258:11:258:11 | s [D] | main.rs:260:9:260:37 | ...::D {...} [D] | provenance | | +| main.rs:258:11:258:11 | s [D] | main.rs:260:9:260:37 | ...::D {...} [D] | provenance | | +| main.rs:260:9:260:37 | ...::D {...} [D] | main.rs:260:35:260:35 | i | provenance | | +| main.rs:260:9:260:37 | ...::D {...} [D] | main.rs:260:35:260:35 | i | provenance | | +| main.rs:260:35:260:35 | i | main.rs:260:47:260:47 | i | provenance | | +| main.rs:260:35:260:35 | i | main.rs:260:47:260:47 | i | provenance | | +| main.rs:264:9:264:9 | s [E, Some] | main.rs:265:11:265:11 | s [E, Some] | provenance | | +| main.rs:264:9:264:9 | s [E, Some] | main.rs:265:11:265:11 | s [E, Some] | provenance | | +| main.rs:264:13:264:30 | enum_source_nested | main.rs:264:13:264:34 | enum_source_nested(...) [E, Some] | provenance | Src:MaD:10 | +| main.rs:264:13:264:30 | enum_source_nested | main.rs:264:13:264:34 | enum_source_nested(...) [E, Some] | provenance | Src:MaD:10 | +| main.rs:264:13:264:34 | enum_source_nested(...) [E, Some] | main.rs:264:9:264:9 | s [E, Some] | provenance | | +| main.rs:264:13:264:34 | enum_source_nested(...) [E, Some] | main.rs:264:9:264:9 | s [E, Some] | provenance | | +| main.rs:265:11:265:11 | s [E, Some] | main.rs:268:9:268:37 | ...::E {...} [E, Some] | provenance | | +| main.rs:265:11:265:11 | s [E, Some] | main.rs:268:9:268:37 | ...::E {...} [E, Some] | provenance | | +| main.rs:268:9:268:37 | ...::E {...} [E, Some] | main.rs:268:35:268:35 | o [Some] | provenance | | +| main.rs:268:9:268:37 | ...::E {...} [E, Some] | main.rs:268:35:268:35 | o [Some] | provenance | | +| main.rs:268:35:268:35 | o [Some] | main.rs:270:19:270:19 | o [Some] | provenance | | +| main.rs:268:35:268:35 | o [Some] | main.rs:270:19:270:19 | o [Some] | provenance | | +| main.rs:270:19:270:19 | o [Some] | main.rs:271:17:271:23 | Some(...) [Some] | provenance | | +| main.rs:270:19:270:19 | o [Some] | main.rs:271:17:271:23 | Some(...) [Some] | provenance | | +| main.rs:271:17:271:23 | Some(...) [Some] | main.rs:271:22:271:22 | i | provenance | | +| main.rs:271:17:271:23 | Some(...) [Some] | main.rs:271:22:271:22 | i | provenance | | +| main.rs:271:22:271:22 | i | main.rs:271:33:271:33 | i | provenance | | +| main.rs:271:22:271:22 | i | main.rs:271:33:271:33 | i | provenance | | +| main.rs:280:9:280:9 | s [C] | main.rs:281:11:281:11 | s [C] | provenance | | +| main.rs:280:9:280:9 | s [C] | main.rs:281:11:281:11 | s [C] | provenance | | +| main.rs:280:13:280:24 | e.source(...) [C] | main.rs:280:9:280:9 | s [C] | provenance | | +| main.rs:280:13:280:24 | e.source(...) [C] | main.rs:280:9:280:9 | s [C] | provenance | | +| main.rs:280:15:280:20 | source | main.rs:280:13:280:24 | e.source(...) [C] | provenance | Src:MaD:7 | +| main.rs:280:15:280:20 | source | main.rs:280:13:280:24 | e.source(...) [C] | provenance | Src:MaD:7 | +| main.rs:281:11:281:11 | s [C] | main.rs:282:9:282:37 | ...::C {...} [C] | provenance | | +| main.rs:281:11:281:11 | s [C] | main.rs:282:9:282:37 | ...::C {...} [C] | provenance | | +| main.rs:282:9:282:37 | ...::C {...} [C] | main.rs:282:35:282:35 | i | provenance | | +| main.rs:282:9:282:37 | ...::C {...} [C] | main.rs:282:35:282:35 | i | provenance | | +| main.rs:282:35:282:35 | i | main.rs:282:47:282:47 | i | provenance | | +| main.rs:282:35:282:35 | i | main.rs:282:47:282:47 | i | provenance | | +| main.rs:303:18:303:18 | ... | main.rs:303:26:303:26 | a | provenance | | +| main.rs:303:18:303:18 | ... | main.rs:303:26:303:26 | a | provenance | | +| main.rs:304:9:304:19 | pass_source | main.rs:303:18:303:18 | ... | provenance | Src:MaD:14 | +| main.rs:304:9:304:19 | pass_source | main.rs:303:18:303:18 | ... | provenance | Src:MaD:14 | +| main.rs:306:9:306:19 | pass_source | main.rs:306:25:306:25 | ... | provenance | Src:MaD:14 | +| main.rs:306:9:306:19 | pass_source | main.rs:306:25:306:25 | ... | provenance | Src:MaD:14 | +| main.rs:306:25:306:25 | ... | main.rs:307:18:307:18 | a | provenance | | +| main.rs:306:25:306:25 | ... | main.rs:307:18:307:18 | a | provenance | | +| main.rs:310:14:310:19 | ...: i64 | main.rs:311:18:311:18 | a | provenance | | +| main.rs:310:14:310:19 | ...: i64 | main.rs:311:18:311:18 | a | provenance | | +| main.rs:313:9:313:19 | pass_source | main.rs:310:14:310:19 | ...: i64 | provenance | Src:MaD:14 | +| main.rs:313:9:313:19 | pass_source | main.rs:310:14:310:19 | ...: i64 | provenance | Src:MaD:14 | +| main.rs:315:9:315:19 | pass_source | main.rs:315:36:315:36 | ... | provenance | Src:MaD:14 | +| main.rs:315:9:315:19 | pass_source | main.rs:315:36:315:36 | ... | provenance | Src:MaD:14 | +| main.rs:315:36:315:36 | ... | main.rs:316:18:316:18 | a | provenance | | +| main.rs:315:36:315:36 | ... | main.rs:316:18:316:18 | a | provenance | | +| main.rs:319:9:319:26 | pass_source_nested | main.rs:319:32:319:32 | ... [E, Some] | provenance | Src:MaD:15 | +| main.rs:319:9:319:26 | pass_source_nested | main.rs:319:32:319:32 | ... [E, Some] | provenance | Src:MaD:15 | +| main.rs:319:32:319:32 | ... [E, Some] | main.rs:320:19:320:19 | e [E, Some] | provenance | | +| main.rs:319:32:319:32 | ... [E, Some] | main.rs:320:19:320:19 | e [E, Some] | provenance | | +| main.rs:320:19:320:19 | e [E, Some] | main.rs:323:17:323:45 | ...::E {...} [E, Some] | provenance | | +| main.rs:320:19:320:19 | e [E, Some] | main.rs:323:17:323:45 | ...::E {...} [E, Some] | provenance | | +| main.rs:323:17:323:45 | ...::E {...} [E, Some] | main.rs:323:43:323:43 | o [Some] | provenance | | +| main.rs:323:17:323:45 | ...::E {...} [E, Some] | main.rs:323:43:323:43 | o [Some] | provenance | | +| main.rs:323:43:323:43 | o [Some] | main.rs:325:27:325:27 | o [Some] | provenance | | +| main.rs:323:43:323:43 | o [Some] | main.rs:325:27:325:27 | o [Some] | provenance | | +| main.rs:325:27:325:27 | o [Some] | main.rs:326:25:326:31 | Some(...) [Some] | provenance | | +| main.rs:325:27:325:27 | o [Some] | main.rs:326:25:326:31 | Some(...) [Some] | provenance | | +| main.rs:326:25:326:31 | Some(...) [Some] | main.rs:326:30:326:30 | i | provenance | | +| main.rs:326:25:326:31 | Some(...) [Some] | main.rs:326:30:326:30 | i | provenance | | +| main.rs:326:30:326:30 | i | main.rs:326:41:326:41 | i | provenance | | +| main.rs:326:30:326:30 | i | main.rs:326:41:326:41 | i | provenance | | +| main.rs:364:9:364:9 | s | main.rs:365:41:365:41 | s | provenance | | +| main.rs:364:9:364:9 | s | main.rs:365:41:365:41 | s | provenance | | +| main.rs:364:9:364:9 | s | main.rs:368:53:368:53 | s | provenance | | +| main.rs:364:9:364:9 | s | main.rs:368:53:368:53 | s | provenance | | +| main.rs:364:13:364:22 | source(...) | main.rs:364:9:364:9 | s | provenance | | +| main.rs:364:13:364:22 | source(...) | main.rs:364:9:364:9 | s | provenance | | +| main.rs:365:15:365:43 | ...::C {...} [C] | main.rs:365:5:365:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 | +| main.rs:365:15:365:43 | ...::C {...} [C] | main.rs:365:5:365:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 | +| main.rs:365:41:365:41 | s | main.rs:365:15:365:43 | ...::C {...} [C] | provenance | | +| main.rs:365:41:365:41 | s | main.rs:365:15:365:43 | ...::C {...} [C] | provenance | | +| main.rs:368:22:368:56 | ...::E {...} [E, Some] | main.rs:368:5:368:20 | enum_sink_nested | provenance | MaD:3 Sink:MaD:3 | +| main.rs:368:22:368:56 | ...::E {...} [E, Some] | main.rs:368:5:368:20 | enum_sink_nested | provenance | MaD:3 Sink:MaD:3 | +| main.rs:368:48:368:54 | Some(...) [Some] | main.rs:368:22:368:56 | ...::E {...} [E, Some] | provenance | | +| main.rs:368:48:368:54 | Some(...) [Some] | main.rs:368:22:368:56 | ...::E {...} [E, Some] | provenance | | +| main.rs:368:53:368:53 | s | main.rs:368:48:368:54 | Some(...) [Some] | provenance | | +| main.rs:368:53:368:53 | s | main.rs:368:48:368:54 | Some(...) [Some] | provenance | | +| main.rs:372:9:372:9 | s | main.rs:373:39:373:39 | s | provenance | | +| main.rs:372:9:372:9 | s | main.rs:373:39:373:39 | s | provenance | | +| main.rs:372:13:372:22 | source(...) | main.rs:372:9:372:9 | s | provenance | | +| main.rs:372:13:372:22 | source(...) | main.rs:372:9:372:9 | s | provenance | | +| main.rs:373:9:373:9 | e [D] | main.rs:374:5:374:5 | e [D] | provenance | | +| main.rs:373:9:373:9 | e [D] | main.rs:374:5:374:5 | e [D] | provenance | | +| main.rs:373:13:373:41 | ...::D {...} [D] | main.rs:373:9:373:9 | e [D] | provenance | | +| main.rs:373:13:373:41 | ...::D {...} [D] | main.rs:373:9:373:9 | e [D] | provenance | | +| main.rs:373:39:373:39 | s | main.rs:373:13:373:41 | ...::D {...} [D] | provenance | | +| main.rs:373:39:373:39 | s | main.rs:373:13:373:41 | ...::D {...} [D] | provenance | | +| main.rs:374:5:374:5 | e [D] | main.rs:374:7:374:10 | sink | provenance | MaD:1 Sink:MaD:1 | +| main.rs:374:5:374:5 | e [D] | main.rs:374:7:374:10 | sink | provenance | MaD:1 Sink:MaD:1 | +| main.rs:383:9:383:9 | s | main.rs:384:10:384:10 | s | provenance | | +| main.rs:383:9:383:9 | s | main.rs:384:10:384:10 | s | provenance | | +| main.rs:383:13:383:25 | simple_source | main.rs:383:13:383:29 | simple_source(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:383:13:383:25 | simple_source | main.rs:383:13:383:29 | simple_source(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:383:13:383:29 | simple_source(...) | main.rs:383:9:383:9 | s | provenance | | +| main.rs:383:13:383:29 | simple_source(...) | main.rs:383:9:383:9 | s | provenance | | +| main.rs:391:9:391:9 | s | main.rs:392:17:392:17 | s | provenance | | +| main.rs:391:9:391:9 | s | main.rs:392:17:392:17 | s | provenance | | +| main.rs:391:13:391:22 | source(...) | main.rs:391:9:391:9 | s | provenance | | +| main.rs:391:13:391:22 | source(...) | main.rs:391:9:391:9 | s | provenance | | +| main.rs:392:17:392:17 | s | main.rs:392:5:392:15 | simple_sink | provenance | MaD:6 Sink:MaD:6 | +| main.rs:392:17:392:17 | s | main.rs:392:5:392:15 | simple_sink | provenance | MaD:6 Sink:MaD:6 | +| main.rs:400:5:400:14 | arg_source | main.rs:400:16:400:16 | [post] i | provenance | Src:MaD:8 MaD:8 | +| main.rs:400:5:400:14 | arg_source | main.rs:400:16:400:16 | [post] i | provenance | Src:MaD:8 MaD:8 | +| main.rs:400:16:400:16 | [post] i | main.rs:401:10:401:10 | i | provenance | | +| main.rs:400:16:400:16 | [post] i | main.rs:401:10:401:10 | i | provenance | | +| main.rs:464:9:464:10 | x1 | main.rs:465:10:465:11 | x1 | provenance | | +| main.rs:464:9:464:10 | x1 | main.rs:465:10:465:11 | x1 | provenance | | +| main.rs:464:14:464:23 | source(...) | main.rs:464:14:464:30 | ... .max(...) | provenance | MaD:16 | +| main.rs:464:14:464:23 | source(...) | main.rs:464:14:464:30 | ... .max(...) | provenance | MaD:16 | +| main.rs:464:14:464:30 | ... .max(...) | main.rs:464:9:464:10 | x1 | provenance | | +| main.rs:464:14:464:30 | ... .max(...) | main.rs:464:9:464:10 | x1 | provenance | | +| main.rs:467:9:467:10 | x2 [MyStruct.field1] | main.rs:475:10:475:11 | x2 [MyStruct.field1] | provenance | | +| main.rs:467:9:467:10 | x2 [MyStruct.field1] | main.rs:475:10:475:11 | x2 [MyStruct.field1] | provenance | | +| main.rs:467:14:474:6 | ... .max(...) [MyStruct.field1] | main.rs:467:9:467:10 | x2 [MyStruct.field1] | provenance | | +| main.rs:467:14:474:6 | ... .max(...) [MyStruct.field1] | main.rs:467:9:467:10 | x2 [MyStruct.field1] | provenance | | +| main.rs:467:15:470:5 | MyStruct {...} [MyStruct.field1] | main.rs:467:14:474:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:16 | +| main.rs:467:15:470:5 | MyStruct {...} [MyStruct.field1] | main.rs:467:14:474:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:16 | +| main.rs:468:17:468:26 | source(...) | main.rs:467:15:470:5 | MyStruct {...} [MyStruct.field1] | provenance | | +| main.rs:468:17:468:26 | source(...) | main.rs:467:15:470:5 | MyStruct {...} [MyStruct.field1] | provenance | | +| main.rs:475:10:475:11 | x2 [MyStruct.field1] | main.rs:475:10:475:18 | x2.field1 | provenance | | +| main.rs:475:10:475:11 | x2 [MyStruct.field1] | main.rs:475:10:475:18 | x2.field1 | provenance | | +| main.rs:480:9:480:10 | x4 | main.rs:481:10:481:11 | x4 | provenance | | +| main.rs:480:9:480:10 | x4 | main.rs:481:10:481:11 | x4 | provenance | | +| main.rs:480:14:480:23 | source(...) | main.rs:480:14:480:30 | ... .max(...) | provenance | MaD:16 | +| main.rs:480:14:480:23 | source(...) | main.rs:480:14:480:30 | ... .max(...) | provenance | MaD:16 | +| main.rs:480:14:480:30 | ... .max(...) | main.rs:480:9:480:10 | x4 | provenance | | +| main.rs:480:14:480:30 | ... .max(...) | main.rs:480:9:480:10 | x4 | provenance | | +| main.rs:483:9:483:10 | x5 | main.rs:484:10:484:11 | x5 | provenance | | +| main.rs:483:14:483:23 | source(...) | main.rs:483:14:483:30 | ... .lt(...) | provenance | MaD:17 | +| main.rs:483:14:483:30 | ... .lt(...) | main.rs:483:9:483:10 | x5 | provenance | | +| main.rs:486:9:486:10 | x6 | main.rs:487:10:487:11 | x6 | provenance | | +| main.rs:486:14:486:23 | source(...) | main.rs:486:14:486:27 | ... < ... | provenance | MaD:17 | +| main.rs:486:14:486:27 | ... < ... | main.rs:486:9:486:10 | x6 | provenance | | +| main.rs:502:10:502:25 | generated_source | main.rs:502:10:502:28 | generated_source(...) | provenance | Src:MaD:11 MaD:11 | +| main.rs:502:10:502:25 | generated_source | main.rs:502:10:502:28 | generated_source(...) | provenance | Src:MaD:11 MaD:11 | +| main.rs:504:10:504:30 | neutral_manual_source | main.rs:504:10:504:33 | neutral_manual_source(...) | provenance | Src:MaD:12 MaD:12 | +| main.rs:504:10:504:30 | neutral_manual_source | main.rs:504:10:504:33 | neutral_manual_source(...) | provenance | Src:MaD:12 MaD:12 | +| main.rs:505:20:505:28 | source(...) | main.rs:505:5:505:18 | generated_sink | provenance | MaD:4 Sink:MaD:4 | +| main.rs:505:20:505:28 | source(...) | main.rs:505:5:505:18 | generated_sink | provenance | MaD:4 Sink:MaD:4 | +| main.rs:507:25:507:33 | source(...) | main.rs:507:5:507:23 | neutral_manual_sink | provenance | MaD:5 Sink:MaD:5 | +| main.rs:507:25:507:33 | source(...) | main.rs:507:5:507:23 | neutral_manual_sink | provenance | MaD:5 Sink:MaD:5 | +| main.rs:508:28:508:36 | source(...) | main.rs:508:10:508:37 | generated_summary(...) | provenance | MaD:22 | +| main.rs:508:28:508:36 | source(...) | main.rs:508:10:508:37 | generated_summary(...) | provenance | MaD:22 | +| main.rs:510:33:510:41 | source(...) | main.rs:510:10:510:42 | neutral_manual_summary(...) | provenance | MaD:23 | +| main.rs:510:33:510:41 | source(...) | main.rs:510:10:510:42 | neutral_manual_summary(...) | provenance | MaD:23 | nodes | main.rs:15:9:15:9 | s | semmle.label | s | | main.rs:15:9:15:9 | s | semmle.label | s | @@ -390,335 +435,381 @@ nodes | main.rs:71:22:71:22 | i | semmle.label | i | | main.rs:71:33:71:33 | i | semmle.label | i | | main.rs:71:33:71:33 | i | semmle.label | i | -| main.rs:86:9:86:9 | s | semmle.label | s | -| main.rs:86:9:86:9 | s | semmle.label | s | -| main.rs:86:13:86:21 | source(...) | semmle.label | source(...) | -| main.rs:86:13:86:21 | source(...) | semmle.label | source(...) | -| main.rs:87:9:87:10 | e1 [C] | semmle.label | e1 [C] | -| main.rs:87:9:87:10 | e1 [C] | semmle.label | e1 [C] | -| main.rs:87:14:87:42 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | -| main.rs:87:14:87:42 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | -| main.rs:87:40:87:40 | s | semmle.label | s | -| main.rs:87:40:87:40 | s | semmle.label | s | -| main.rs:88:10:88:26 | get_var_field(...) | semmle.label | get_var_field(...) | -| main.rs:88:10:88:26 | get_var_field(...) | semmle.label | get_var_field(...) | -| main.rs:88:24:88:25 | e1 [C] | semmle.label | e1 [C] | -| main.rs:88:24:88:25 | e1 [C] | semmle.label | e1 [C] | -| main.rs:99:9:99:9 | s | semmle.label | s | -| main.rs:99:9:99:9 | s | semmle.label | s | -| main.rs:99:13:99:21 | source(...) | semmle.label | source(...) | -| main.rs:99:13:99:21 | source(...) | semmle.label | source(...) | -| main.rs:100:9:100:10 | e1 [D] | semmle.label | e1 [D] | -| main.rs:100:9:100:10 | e1 [D] | semmle.label | e1 [D] | -| main.rs:100:14:100:29 | set_var_field(...) [D] | semmle.label | set_var_field(...) [D] | -| main.rs:100:14:100:29 | set_var_field(...) [D] | semmle.label | set_var_field(...) [D] | -| main.rs:100:28:100:28 | s | semmle.label | s | -| main.rs:100:28:100:28 | s | semmle.label | s | -| main.rs:101:11:101:12 | e1 [D] | semmle.label | e1 [D] | -| main.rs:101:11:101:12 | e1 [D] | semmle.label | e1 [D] | -| main.rs:103:9:103:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | -| main.rs:103:9:103:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | -| main.rs:103:35:103:35 | i | semmle.label | i | -| main.rs:103:35:103:35 | i | semmle.label | i | -| main.rs:103:47:103:47 | i | semmle.label | i | -| main.rs:103:47:103:47 | i | semmle.label | i | -| main.rs:118:9:118:9 | s | semmle.label | s | -| main.rs:118:9:118:9 | s | semmle.label | s | -| main.rs:118:13:118:21 | source(...) | semmle.label | source(...) | -| main.rs:118:13:118:21 | source(...) | semmle.label | source(...) | -| main.rs:119:9:119:17 | my_struct [MyStruct.field1] | semmle.label | my_struct [MyStruct.field1] | -| main.rs:119:9:119:17 | my_struct [MyStruct.field1] | semmle.label | my_struct [MyStruct.field1] | -| main.rs:119:21:122:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] | -| main.rs:119:21:122:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] | -| main.rs:120:17:120:17 | s | semmle.label | s | -| main.rs:120:17:120:17 | s | semmle.label | s | -| main.rs:123:10:123:36 | get_struct_field(...) | semmle.label | get_struct_field(...) | -| main.rs:123:10:123:36 | get_struct_field(...) | semmle.label | get_struct_field(...) | -| main.rs:123:27:123:35 | my_struct [MyStruct.field1] | semmle.label | my_struct [MyStruct.field1] | -| main.rs:123:27:123:35 | my_struct [MyStruct.field1] | semmle.label | my_struct [MyStruct.field1] | -| main.rs:140:9:140:9 | s | semmle.label | s | -| main.rs:140:9:140:9 | s | semmle.label | s | -| main.rs:140:13:140:21 | source(...) | semmle.label | source(...) | -| main.rs:140:13:140:21 | source(...) | semmle.label | source(...) | -| main.rs:141:9:141:17 | my_struct [MyStruct.field2] | semmle.label | my_struct [MyStruct.field2] | -| main.rs:141:9:141:17 | my_struct [MyStruct.field2] | semmle.label | my_struct [MyStruct.field2] | -| main.rs:141:21:141:39 | set_struct_field(...) [MyStruct.field2] | semmle.label | set_struct_field(...) [MyStruct.field2] | -| main.rs:141:21:141:39 | set_struct_field(...) [MyStruct.field2] | semmle.label | set_struct_field(...) [MyStruct.field2] | -| main.rs:141:38:141:38 | s | semmle.label | s | -| main.rs:141:38:141:38 | s | semmle.label | s | -| main.rs:143:10:143:18 | my_struct [MyStruct.field2] | semmle.label | my_struct [MyStruct.field2] | -| main.rs:143:10:143:18 | my_struct [MyStruct.field2] | semmle.label | my_struct [MyStruct.field2] | -| main.rs:143:10:143:25 | my_struct.field2 | semmle.label | my_struct.field2 | -| main.rs:143:10:143:25 | my_struct.field2 | semmle.label | my_struct.field2 | -| main.rs:152:9:152:9 | s | semmle.label | s | -| main.rs:152:9:152:9 | s | semmle.label | s | -| main.rs:152:13:152:21 | source(...) | semmle.label | source(...) | -| main.rs:152:13:152:21 | source(...) | semmle.label | source(...) | -| main.rs:153:10:153:31 | get_array_element(...) | semmle.label | get_array_element(...) | -| main.rs:153:10:153:31 | get_array_element(...) | semmle.label | get_array_element(...) | -| main.rs:153:28:153:30 | [...] [element] | semmle.label | [...] [element] | -| main.rs:153:28:153:30 | [...] [element] | semmle.label | [...] [element] | -| main.rs:153:29:153:29 | s | semmle.label | s | -| main.rs:153:29:153:29 | s | semmle.label | s | -| main.rs:162:9:162:9 | s | semmle.label | s | -| main.rs:162:9:162:9 | s | semmle.label | s | -| main.rs:162:13:162:21 | source(...) | semmle.label | source(...) | -| main.rs:162:13:162:21 | source(...) | semmle.label | source(...) | -| main.rs:163:9:163:11 | arr [element] | semmle.label | arr [element] | -| main.rs:163:9:163:11 | arr [element] | semmle.label | arr [element] | -| main.rs:163:15:163:34 | set_array_element(...) [element] | semmle.label | set_array_element(...) [element] | -| main.rs:163:15:163:34 | set_array_element(...) [element] | semmle.label | set_array_element(...) [element] | -| main.rs:163:33:163:33 | s | semmle.label | s | -| main.rs:163:33:163:33 | s | semmle.label | s | -| main.rs:164:10:164:12 | arr [element] | semmle.label | arr [element] | -| main.rs:164:10:164:12 | arr [element] | semmle.label | arr [element] | -| main.rs:164:10:164:15 | arr[0] | semmle.label | arr[0] | -| main.rs:164:10:164:15 | arr[0] | semmle.label | arr[0] | -| main.rs:173:9:173:9 | s | semmle.label | s | -| main.rs:173:9:173:9 | s | semmle.label | s | -| main.rs:173:13:173:22 | source(...) | semmle.label | source(...) | -| main.rs:173:13:173:22 | source(...) | semmle.label | source(...) | -| main.rs:174:9:174:9 | t [tuple.0] | semmle.label | t [tuple.0] | -| main.rs:174:9:174:9 | t [tuple.0] | semmle.label | t [tuple.0] | -| main.rs:174:13:174:18 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | -| main.rs:174:13:174:18 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | -| main.rs:174:14:174:14 | s | semmle.label | s | -| main.rs:174:14:174:14 | s | semmle.label | s | -| main.rs:175:10:175:29 | get_tuple_element(...) | semmle.label | get_tuple_element(...) | -| main.rs:175:10:175:29 | get_tuple_element(...) | semmle.label | get_tuple_element(...) | -| main.rs:175:28:175:28 | t [tuple.0] | semmle.label | t [tuple.0] | -| main.rs:175:28:175:28 | t [tuple.0] | semmle.label | t [tuple.0] | -| main.rs:186:9:186:9 | s | semmle.label | s | -| main.rs:186:9:186:9 | s | semmle.label | s | -| main.rs:186:13:186:22 | source(...) | semmle.label | source(...) | -| main.rs:186:13:186:22 | source(...) | semmle.label | source(...) | -| main.rs:187:9:187:9 | t [tuple.1] | semmle.label | t [tuple.1] | -| main.rs:187:9:187:9 | t [tuple.1] | semmle.label | t [tuple.1] | -| main.rs:187:13:187:32 | set_tuple_element(...) [tuple.1] | semmle.label | set_tuple_element(...) [tuple.1] | -| main.rs:187:13:187:32 | set_tuple_element(...) [tuple.1] | semmle.label | set_tuple_element(...) [tuple.1] | -| main.rs:187:31:187:31 | s | semmle.label | s | -| main.rs:187:31:187:31 | s | semmle.label | s | -| main.rs:189:10:189:10 | t [tuple.1] | semmle.label | t [tuple.1] | -| main.rs:189:10:189:10 | t [tuple.1] | semmle.label | t [tuple.1] | -| main.rs:189:10:189:12 | t.1 | semmle.label | t.1 | -| main.rs:189:10:189:12 | t.1 | semmle.label | t.1 | -| main.rs:201:9:201:9 | s | semmle.label | s | -| main.rs:201:9:201:9 | s | semmle.label | s | -| main.rs:201:13:201:22 | source(...) | semmle.label | source(...) | -| main.rs:201:13:201:22 | source(...) | semmle.label | source(...) | -| main.rs:202:14:202:14 | ... | semmle.label | ... | -| main.rs:202:14:202:14 | ... | semmle.label | ... | -| main.rs:203:14:203:14 | n | semmle.label | n | -| main.rs:203:14:203:14 | n | semmle.label | n | -| main.rs:206:11:206:11 | s | semmle.label | s | -| main.rs:206:11:206:11 | s | semmle.label | s | -| main.rs:210:13:210:22 | source(...) | semmle.label | source(...) | -| main.rs:210:13:210:22 | source(...) | semmle.label | source(...) | -| main.rs:211:17:211:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | -| main.rs:211:17:211:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | -| main.rs:211:40:211:40 | s | semmle.label | s | -| main.rs:211:40:211:40 | s | semmle.label | s | -| main.rs:212:9:212:9 | t | semmle.label | t | -| main.rs:212:9:212:9 | t | semmle.label | t | -| main.rs:212:13:212:24 | apply(...) | semmle.label | apply(...) | -| main.rs:212:13:212:24 | apply(...) | semmle.label | apply(...) | -| main.rs:212:23:212:23 | f [captured s] | semmle.label | f [captured s] | -| main.rs:212:23:212:23 | f [captured s] | semmle.label | f [captured s] | -| main.rs:213:10:213:10 | t | semmle.label | t | -| main.rs:213:10:213:10 | t | semmle.label | t | -| main.rs:217:9:217:9 | s | semmle.label | s | -| main.rs:217:9:217:9 | s | semmle.label | s | -| main.rs:217:13:217:22 | source(...) | semmle.label | source(...) | -| main.rs:217:13:217:22 | source(...) | semmle.label | source(...) | -| main.rs:218:14:218:14 | ... | semmle.label | ... | -| main.rs:218:14:218:14 | ... | semmle.label | ... | -| main.rs:218:17:218:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | -| main.rs:218:17:218:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | -| main.rs:219:9:219:9 | t | semmle.label | t | -| main.rs:219:9:219:9 | t | semmle.label | t | -| main.rs:219:13:219:23 | apply(...) | semmle.label | apply(...) | -| main.rs:219:13:219:23 | apply(...) | semmle.label | apply(...) | -| main.rs:219:19:219:19 | s | semmle.label | s | -| main.rs:219:19:219:19 | s | semmle.label | s | -| main.rs:220:10:220:10 | t | semmle.label | t | -| main.rs:220:10:220:10 | t | semmle.label | t | -| main.rs:229:9:229:9 | s | semmle.label | s | -| main.rs:229:9:229:9 | s | semmle.label | s | -| main.rs:229:13:229:22 | source(...) | semmle.label | source(...) | -| main.rs:229:13:229:22 | source(...) | semmle.label | source(...) | -| main.rs:230:9:230:9 | t | semmle.label | t | -| main.rs:230:9:230:9 | t | semmle.label | t | -| main.rs:230:13:230:31 | get_async_number(...) [future] | semmle.label | get_async_number(...) [future] | -| main.rs:230:13:230:31 | get_async_number(...) [future] | semmle.label | get_async_number(...) [future] | -| main.rs:230:13:230:37 | await ... | semmle.label | await ... | -| main.rs:230:13:230:37 | await ... | semmle.label | await ... | -| main.rs:230:30:230:30 | s | semmle.label | s | -| main.rs:230:30:230:30 | s | semmle.label | s | -| main.rs:231:10:231:10 | t | semmle.label | t | -| main.rs:231:10:231:10 | t | semmle.label | t | -| main.rs:250:9:250:9 | s [D] | semmle.label | s [D] | -| main.rs:250:9:250:9 | s [D] | semmle.label | s [D] | -| main.rs:250:13:250:23 | enum_source | semmle.label | enum_source | -| main.rs:250:13:250:23 | enum_source | semmle.label | enum_source | -| main.rs:250:13:250:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] | -| main.rs:250:13:250:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] | -| main.rs:251:11:251:11 | s [D] | semmle.label | s [D] | -| main.rs:251:11:251:11 | s [D] | semmle.label | s [D] | -| main.rs:253:9:253:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | -| main.rs:253:9:253:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | -| main.rs:253:35:253:35 | i | semmle.label | i | -| main.rs:253:35:253:35 | i | semmle.label | i | -| main.rs:253:47:253:47 | i | semmle.label | i | -| main.rs:253:47:253:47 | i | semmle.label | i | -| main.rs:259:9:259:9 | s [C] | semmle.label | s [C] | -| main.rs:259:9:259:9 | s [C] | semmle.label | s [C] | -| main.rs:259:13:259:24 | e.source(...) [C] | semmle.label | e.source(...) [C] | -| main.rs:259:13:259:24 | e.source(...) [C] | semmle.label | e.source(...) [C] | -| main.rs:259:15:259:20 | source | semmle.label | source | -| main.rs:259:15:259:20 | source | semmle.label | source | -| main.rs:260:11:260:11 | s [C] | semmle.label | s [C] | -| main.rs:260:11:260:11 | s [C] | semmle.label | s [C] | -| main.rs:261:9:261:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | -| main.rs:261:9:261:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | -| main.rs:261:35:261:35 | i | semmle.label | i | -| main.rs:261:35:261:35 | i | semmle.label | i | -| main.rs:261:47:261:47 | i | semmle.label | i | -| main.rs:261:47:261:47 | i | semmle.label | i | -| main.rs:275:18:275:18 | ... | semmle.label | ... | -| main.rs:275:18:275:18 | ... | semmle.label | ... | -| main.rs:275:26:275:26 | a | semmle.label | a | -| main.rs:275:26:275:26 | a | semmle.label | a | -| main.rs:276:9:276:19 | pass_source | semmle.label | pass_source | -| main.rs:276:9:276:19 | pass_source | semmle.label | pass_source | -| main.rs:278:9:278:19 | pass_source | semmle.label | pass_source | -| main.rs:278:9:278:19 | pass_source | semmle.label | pass_source | -| main.rs:278:25:278:25 | ... | semmle.label | ... | -| main.rs:278:25:278:25 | ... | semmle.label | ... | -| main.rs:279:18:279:18 | a | semmle.label | a | -| main.rs:279:18:279:18 | a | semmle.label | a | -| main.rs:282:14:282:19 | ...: i64 | semmle.label | ...: i64 | -| main.rs:282:14:282:19 | ...: i64 | semmle.label | ...: i64 | -| main.rs:283:18:283:18 | a | semmle.label | a | -| main.rs:283:18:283:18 | a | semmle.label | a | -| main.rs:285:9:285:19 | pass_source | semmle.label | pass_source | -| main.rs:285:9:285:19 | pass_source | semmle.label | pass_source | -| main.rs:287:9:287:19 | pass_source | semmle.label | pass_source | -| main.rs:287:9:287:19 | pass_source | semmle.label | pass_source | -| main.rs:287:36:287:36 | ... | semmle.label | ... | -| main.rs:287:36:287:36 | ... | semmle.label | ... | -| main.rs:288:18:288:18 | a | semmle.label | a | -| main.rs:288:18:288:18 | a | semmle.label | a | -| main.rs:297:9:297:9 | s | semmle.label | s | -| main.rs:297:9:297:9 | s | semmle.label | s | -| main.rs:297:13:297:22 | source(...) | semmle.label | source(...) | -| main.rs:297:13:297:22 | source(...) | semmle.label | source(...) | -| main.rs:298:5:298:13 | enum_sink | semmle.label | enum_sink | -| main.rs:298:5:298:13 | enum_sink | semmle.label | enum_sink | -| main.rs:298:15:298:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | -| main.rs:298:15:298:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | -| main.rs:298:41:298:41 | s | semmle.label | s | -| main.rs:298:41:298:41 | s | semmle.label | s | -| main.rs:303:9:303:9 | s | semmle.label | s | -| main.rs:303:9:303:9 | s | semmle.label | s | -| main.rs:303:13:303:22 | source(...) | semmle.label | source(...) | -| main.rs:303:13:303:22 | source(...) | semmle.label | source(...) | -| main.rs:304:9:304:9 | e [D] | semmle.label | e [D] | -| main.rs:304:9:304:9 | e [D] | semmle.label | e [D] | -| main.rs:304:13:304:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | -| main.rs:304:13:304:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | -| main.rs:304:39:304:39 | s | semmle.label | s | -| main.rs:304:39:304:39 | s | semmle.label | s | -| main.rs:305:5:305:5 | e [D] | semmle.label | e [D] | -| main.rs:305:5:305:5 | e [D] | semmle.label | e [D] | -| main.rs:305:7:305:10 | sink | semmle.label | sink | -| main.rs:305:7:305:10 | sink | semmle.label | sink | -| main.rs:314:9:314:9 | s | semmle.label | s | -| main.rs:314:9:314:9 | s | semmle.label | s | -| main.rs:314:13:314:25 | simple_source | semmle.label | simple_source | -| main.rs:314:13:314:25 | simple_source | semmle.label | simple_source | -| main.rs:314:13:314:29 | simple_source(...) | semmle.label | simple_source(...) | -| main.rs:314:13:314:29 | simple_source(...) | semmle.label | simple_source(...) | -| main.rs:315:10:315:10 | s | semmle.label | s | -| main.rs:315:10:315:10 | s | semmle.label | s | -| main.rs:322:9:322:9 | s | semmle.label | s | -| main.rs:322:9:322:9 | s | semmle.label | s | -| main.rs:322:13:322:22 | source(...) | semmle.label | source(...) | -| main.rs:322:13:322:22 | source(...) | semmle.label | source(...) | -| main.rs:323:5:323:15 | simple_sink | semmle.label | simple_sink | -| main.rs:323:5:323:15 | simple_sink | semmle.label | simple_sink | -| main.rs:323:17:323:17 | s | semmle.label | s | -| main.rs:323:17:323:17 | s | semmle.label | s | -| main.rs:331:5:331:14 | arg_source | semmle.label | arg_source | -| main.rs:331:5:331:14 | arg_source | semmle.label | arg_source | -| main.rs:331:16:331:16 | [post] i | semmle.label | [post] i | -| main.rs:331:16:331:16 | [post] i | semmle.label | [post] i | -| main.rs:332:10:332:10 | i | semmle.label | i | -| main.rs:332:10:332:10 | i | semmle.label | i | -| main.rs:384:9:384:10 | x1 | semmle.label | x1 | -| main.rs:384:9:384:10 | x1 | semmle.label | x1 | -| main.rs:384:14:384:23 | source(...) | semmle.label | source(...) | -| main.rs:384:14:384:23 | source(...) | semmle.label | source(...) | -| main.rs:384:14:384:30 | ... .max(...) | semmle.label | ... .max(...) | -| main.rs:384:14:384:30 | ... .max(...) | semmle.label | ... .max(...) | -| main.rs:385:10:385:11 | x1 | semmle.label | x1 | -| main.rs:385:10:385:11 | x1 | semmle.label | x1 | -| main.rs:387:9:387:10 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | -| main.rs:387:9:387:10 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | -| main.rs:387:14:394:6 | ... .max(...) [MyStruct.field1] | semmle.label | ... .max(...) [MyStruct.field1] | -| main.rs:387:14:394:6 | ... .max(...) [MyStruct.field1] | semmle.label | ... .max(...) [MyStruct.field1] | -| main.rs:387:15:390:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] | -| main.rs:387:15:390:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] | -| main.rs:388:17:388:26 | source(...) | semmle.label | source(...) | -| main.rs:388:17:388:26 | source(...) | semmle.label | source(...) | -| main.rs:395:10:395:11 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | -| main.rs:395:10:395:11 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | -| main.rs:395:10:395:18 | x2.field1 | semmle.label | x2.field1 | -| main.rs:395:10:395:18 | x2.field1 | semmle.label | x2.field1 | -| main.rs:400:9:400:10 | x4 | semmle.label | x4 | -| main.rs:400:9:400:10 | x4 | semmle.label | x4 | -| main.rs:400:14:400:23 | source(...) | semmle.label | source(...) | -| main.rs:400:14:400:23 | source(...) | semmle.label | source(...) | -| main.rs:400:14:400:30 | ... .max(...) | semmle.label | ... .max(...) | -| main.rs:400:14:400:30 | ... .max(...) | semmle.label | ... .max(...) | -| main.rs:401:10:401:11 | x4 | semmle.label | x4 | -| main.rs:401:10:401:11 | x4 | semmle.label | x4 | -| main.rs:403:9:403:10 | x5 | semmle.label | x5 | -| main.rs:403:14:403:23 | source(...) | semmle.label | source(...) | -| main.rs:403:14:403:30 | ... .lt(...) | semmle.label | ... .lt(...) | -| main.rs:404:10:404:11 | x5 | semmle.label | x5 | -| main.rs:406:9:406:10 | x6 | semmle.label | x6 | -| main.rs:406:14:406:23 | source(...) | semmle.label | source(...) | -| main.rs:406:14:406:27 | ... < ... | semmle.label | ... < ... | -| main.rs:407:10:407:11 | x6 | semmle.label | x6 | -| main.rs:422:10:422:25 | generated_source | semmle.label | generated_source | -| main.rs:422:10:422:25 | generated_source | semmle.label | generated_source | -| main.rs:422:10:422:28 | generated_source(...) | semmle.label | generated_source(...) | -| main.rs:422:10:422:28 | generated_source(...) | semmle.label | generated_source(...) | -| main.rs:424:10:424:30 | neutral_manual_source | semmle.label | neutral_manual_source | -| main.rs:424:10:424:30 | neutral_manual_source | semmle.label | neutral_manual_source | -| main.rs:424:10:424:33 | neutral_manual_source(...) | semmle.label | neutral_manual_source(...) | -| main.rs:424:10:424:33 | neutral_manual_source(...) | semmle.label | neutral_manual_source(...) | -| main.rs:425:5:425:18 | generated_sink | semmle.label | generated_sink | -| main.rs:425:5:425:18 | generated_sink | semmle.label | generated_sink | -| main.rs:425:20:425:28 | source(...) | semmle.label | source(...) | -| main.rs:425:20:425:28 | source(...) | semmle.label | source(...) | -| main.rs:427:5:427:23 | neutral_manual_sink | semmle.label | neutral_manual_sink | -| main.rs:427:5:427:23 | neutral_manual_sink | semmle.label | neutral_manual_sink | -| main.rs:427:25:427:33 | source(...) | semmle.label | source(...) | -| main.rs:427:25:427:33 | source(...) | semmle.label | source(...) | -| main.rs:428:10:428:37 | generated_summary(...) | semmle.label | generated_summary(...) | -| main.rs:428:10:428:37 | generated_summary(...) | semmle.label | generated_summary(...) | -| main.rs:428:28:428:36 | source(...) | semmle.label | source(...) | -| main.rs:428:28:428:36 | source(...) | semmle.label | source(...) | -| main.rs:430:10:430:42 | neutral_manual_summary(...) | semmle.label | neutral_manual_summary(...) | -| main.rs:430:10:430:42 | neutral_manual_summary(...) | semmle.label | neutral_manual_summary(...) | -| main.rs:430:33:430:41 | source(...) | semmle.label | source(...) | -| main.rs:430:33:430:41 | source(...) | semmle.label | source(...) | +| main.rs:87:9:87:9 | s | semmle.label | s | +| main.rs:87:9:87:9 | s | semmle.label | s | +| main.rs:87:13:87:21 | source(...) | semmle.label | source(...) | +| main.rs:87:13:87:21 | source(...) | semmle.label | source(...) | +| main.rs:88:9:88:10 | e1 [C] | semmle.label | e1 [C] | +| main.rs:88:9:88:10 | e1 [C] | semmle.label | e1 [C] | +| main.rs:88:14:88:42 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | +| main.rs:88:14:88:42 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | +| main.rs:88:40:88:40 | s | semmle.label | s | +| main.rs:88:40:88:40 | s | semmle.label | s | +| main.rs:89:10:89:26 | get_var_field(...) | semmle.label | get_var_field(...) | +| main.rs:89:10:89:26 | get_var_field(...) | semmle.label | get_var_field(...) | +| main.rs:89:24:89:25 | e1 [C] | semmle.label | e1 [C] | +| main.rs:89:24:89:25 | e1 [C] | semmle.label | e1 [C] | +| main.rs:100:9:100:9 | s | semmle.label | s | +| main.rs:100:9:100:9 | s | semmle.label | s | +| main.rs:100:13:100:21 | source(...) | semmle.label | source(...) | +| main.rs:100:13:100:21 | source(...) | semmle.label | source(...) | +| main.rs:101:9:101:10 | e1 [D] | semmle.label | e1 [D] | +| main.rs:101:9:101:10 | e1 [D] | semmle.label | e1 [D] | +| main.rs:101:14:101:29 | set_var_field(...) [D] | semmle.label | set_var_field(...) [D] | +| main.rs:101:14:101:29 | set_var_field(...) [D] | semmle.label | set_var_field(...) [D] | +| main.rs:101:28:101:28 | s | semmle.label | s | +| main.rs:101:28:101:28 | s | semmle.label | s | +| main.rs:102:11:102:12 | e1 [D] | semmle.label | e1 [D] | +| main.rs:102:11:102:12 | e1 [D] | semmle.label | e1 [D] | +| main.rs:104:9:104:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | +| main.rs:104:9:104:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | +| main.rs:104:35:104:35 | i | semmle.label | i | +| main.rs:104:35:104:35 | i | semmle.label | i | +| main.rs:104:47:104:47 | i | semmle.label | i | +| main.rs:104:47:104:47 | i | semmle.label | i | +| main.rs:120:9:120:9 | s | semmle.label | s | +| main.rs:120:9:120:9 | s | semmle.label | s | +| main.rs:120:13:120:21 | source(...) | semmle.label | source(...) | +| main.rs:120:13:120:21 | source(...) | semmle.label | source(...) | +| main.rs:121:9:121:17 | my_struct [MyStruct.field1] | semmle.label | my_struct [MyStruct.field1] | +| main.rs:121:9:121:17 | my_struct [MyStruct.field1] | semmle.label | my_struct [MyStruct.field1] | +| main.rs:121:21:124:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] | +| main.rs:121:21:124:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] | +| main.rs:122:17:122:17 | s | semmle.label | s | +| main.rs:122:17:122:17 | s | semmle.label | s | +| main.rs:125:10:125:36 | get_struct_field(...) | semmle.label | get_struct_field(...) | +| main.rs:125:10:125:36 | get_struct_field(...) | semmle.label | get_struct_field(...) | +| main.rs:125:27:125:35 | my_struct [MyStruct.field1] | semmle.label | my_struct [MyStruct.field1] | +| main.rs:125:27:125:35 | my_struct [MyStruct.field1] | semmle.label | my_struct [MyStruct.field1] | +| main.rs:142:9:142:9 | s | semmle.label | s | +| main.rs:142:9:142:9 | s | semmle.label | s | +| main.rs:142:13:142:21 | source(...) | semmle.label | source(...) | +| main.rs:142:13:142:21 | source(...) | semmle.label | source(...) | +| main.rs:143:9:143:17 | my_struct [MyStruct.field2] | semmle.label | my_struct [MyStruct.field2] | +| main.rs:143:9:143:17 | my_struct [MyStruct.field2] | semmle.label | my_struct [MyStruct.field2] | +| main.rs:143:21:143:39 | set_struct_field(...) [MyStruct.field2] | semmle.label | set_struct_field(...) [MyStruct.field2] | +| main.rs:143:21:143:39 | set_struct_field(...) [MyStruct.field2] | semmle.label | set_struct_field(...) [MyStruct.field2] | +| main.rs:143:38:143:38 | s | semmle.label | s | +| main.rs:143:38:143:38 | s | semmle.label | s | +| main.rs:145:10:145:18 | my_struct [MyStruct.field2] | semmle.label | my_struct [MyStruct.field2] | +| main.rs:145:10:145:18 | my_struct [MyStruct.field2] | semmle.label | my_struct [MyStruct.field2] | +| main.rs:145:10:145:25 | my_struct.field2 | semmle.label | my_struct.field2 | +| main.rs:145:10:145:25 | my_struct.field2 | semmle.label | my_struct.field2 | +| main.rs:154:9:154:9 | s | semmle.label | s | +| main.rs:154:9:154:9 | s | semmle.label | s | +| main.rs:154:13:154:21 | source(...) | semmle.label | source(...) | +| main.rs:154:13:154:21 | source(...) | semmle.label | source(...) | +| main.rs:155:10:155:31 | get_array_element(...) | semmle.label | get_array_element(...) | +| main.rs:155:10:155:31 | get_array_element(...) | semmle.label | get_array_element(...) | +| main.rs:155:28:155:30 | [...] [element] | semmle.label | [...] [element] | +| main.rs:155:28:155:30 | [...] [element] | semmle.label | [...] [element] | +| main.rs:155:29:155:29 | s | semmle.label | s | +| main.rs:155:29:155:29 | s | semmle.label | s | +| main.rs:164:9:164:9 | s | semmle.label | s | +| main.rs:164:9:164:9 | s | semmle.label | s | +| main.rs:164:13:164:21 | source(...) | semmle.label | source(...) | +| main.rs:164:13:164:21 | source(...) | semmle.label | source(...) | +| main.rs:165:9:165:11 | arr [element] | semmle.label | arr [element] | +| main.rs:165:9:165:11 | arr [element] | semmle.label | arr [element] | +| main.rs:165:15:165:34 | set_array_element(...) [element] | semmle.label | set_array_element(...) [element] | +| main.rs:165:15:165:34 | set_array_element(...) [element] | semmle.label | set_array_element(...) [element] | +| main.rs:165:33:165:33 | s | semmle.label | s | +| main.rs:165:33:165:33 | s | semmle.label | s | +| main.rs:166:10:166:12 | arr [element] | semmle.label | arr [element] | +| main.rs:166:10:166:12 | arr [element] | semmle.label | arr [element] | +| main.rs:166:10:166:15 | arr[0] | semmle.label | arr[0] | +| main.rs:166:10:166:15 | arr[0] | semmle.label | arr[0] | +| main.rs:175:9:175:9 | s | semmle.label | s | +| main.rs:175:9:175:9 | s | semmle.label | s | +| main.rs:175:13:175:22 | source(...) | semmle.label | source(...) | +| main.rs:175:13:175:22 | source(...) | semmle.label | source(...) | +| main.rs:176:9:176:9 | t [tuple.0] | semmle.label | t [tuple.0] | +| main.rs:176:9:176:9 | t [tuple.0] | semmle.label | t [tuple.0] | +| main.rs:176:13:176:18 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | +| main.rs:176:13:176:18 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | +| main.rs:176:14:176:14 | s | semmle.label | s | +| main.rs:176:14:176:14 | s | semmle.label | s | +| main.rs:177:10:177:29 | get_tuple_element(...) | semmle.label | get_tuple_element(...) | +| main.rs:177:10:177:29 | get_tuple_element(...) | semmle.label | get_tuple_element(...) | +| main.rs:177:28:177:28 | t [tuple.0] | semmle.label | t [tuple.0] | +| main.rs:177:28:177:28 | t [tuple.0] | semmle.label | t [tuple.0] | +| main.rs:188:9:188:9 | s | semmle.label | s | +| main.rs:188:9:188:9 | s | semmle.label | s | +| main.rs:188:13:188:22 | source(...) | semmle.label | source(...) | +| main.rs:188:13:188:22 | source(...) | semmle.label | source(...) | +| main.rs:189:9:189:9 | t [tuple.1] | semmle.label | t [tuple.1] | +| main.rs:189:9:189:9 | t [tuple.1] | semmle.label | t [tuple.1] | +| main.rs:189:13:189:32 | set_tuple_element(...) [tuple.1] | semmle.label | set_tuple_element(...) [tuple.1] | +| main.rs:189:13:189:32 | set_tuple_element(...) [tuple.1] | semmle.label | set_tuple_element(...) [tuple.1] | +| main.rs:189:31:189:31 | s | semmle.label | s | +| main.rs:189:31:189:31 | s | semmle.label | s | +| main.rs:191:10:191:10 | t [tuple.1] | semmle.label | t [tuple.1] | +| main.rs:191:10:191:10 | t [tuple.1] | semmle.label | t [tuple.1] | +| main.rs:191:10:191:12 | t.1 | semmle.label | t.1 | +| main.rs:191:10:191:12 | t.1 | semmle.label | t.1 | +| main.rs:203:9:203:9 | s | semmle.label | s | +| main.rs:203:9:203:9 | s | semmle.label | s | +| main.rs:203:13:203:22 | source(...) | semmle.label | source(...) | +| main.rs:203:13:203:22 | source(...) | semmle.label | source(...) | +| main.rs:204:14:204:14 | ... | semmle.label | ... | +| main.rs:204:14:204:14 | ... | semmle.label | ... | +| main.rs:205:14:205:14 | n | semmle.label | n | +| main.rs:205:14:205:14 | n | semmle.label | n | +| main.rs:208:11:208:11 | s | semmle.label | s | +| main.rs:208:11:208:11 | s | semmle.label | s | +| main.rs:212:13:212:22 | source(...) | semmle.label | source(...) | +| main.rs:212:13:212:22 | source(...) | semmle.label | source(...) | +| main.rs:213:17:213:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | +| main.rs:213:17:213:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | +| main.rs:213:40:213:40 | s | semmle.label | s | +| main.rs:213:40:213:40 | s | semmle.label | s | +| main.rs:214:9:214:9 | t | semmle.label | t | +| main.rs:214:9:214:9 | t | semmle.label | t | +| main.rs:214:13:214:24 | apply(...) | semmle.label | apply(...) | +| main.rs:214:13:214:24 | apply(...) | semmle.label | apply(...) | +| main.rs:214:23:214:23 | f [captured s] | semmle.label | f [captured s] | +| main.rs:214:23:214:23 | f [captured s] | semmle.label | f [captured s] | +| main.rs:215:10:215:10 | t | semmle.label | t | +| main.rs:215:10:215:10 | t | semmle.label | t | +| main.rs:219:9:219:9 | s | semmle.label | s | +| main.rs:219:9:219:9 | s | semmle.label | s | +| main.rs:219:13:219:22 | source(...) | semmle.label | source(...) | +| main.rs:219:13:219:22 | source(...) | semmle.label | source(...) | +| main.rs:220:14:220:14 | ... | semmle.label | ... | +| main.rs:220:14:220:14 | ... | semmle.label | ... | +| main.rs:220:17:220:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | +| main.rs:220:17:220:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | +| main.rs:221:9:221:9 | t | semmle.label | t | +| main.rs:221:9:221:9 | t | semmle.label | t | +| main.rs:221:13:221:23 | apply(...) | semmle.label | apply(...) | +| main.rs:221:13:221:23 | apply(...) | semmle.label | apply(...) | +| main.rs:221:19:221:19 | s | semmle.label | s | +| main.rs:221:19:221:19 | s | semmle.label | s | +| main.rs:222:10:222:10 | t | semmle.label | t | +| main.rs:222:10:222:10 | t | semmle.label | t | +| main.rs:231:9:231:9 | s | semmle.label | s | +| main.rs:231:9:231:9 | s | semmle.label | s | +| main.rs:231:13:231:22 | source(...) | semmle.label | source(...) | +| main.rs:231:13:231:22 | source(...) | semmle.label | source(...) | +| main.rs:232:9:232:9 | t | semmle.label | t | +| main.rs:232:9:232:9 | t | semmle.label | t | +| main.rs:232:13:232:31 | get_async_number(...) [future] | semmle.label | get_async_number(...) [future] | +| main.rs:232:13:232:31 | get_async_number(...) [future] | semmle.label | get_async_number(...) [future] | +| main.rs:232:13:232:37 | await ... | semmle.label | await ... | +| main.rs:232:13:232:37 | await ... | semmle.label | await ... | +| main.rs:232:30:232:30 | s | semmle.label | s | +| main.rs:232:30:232:30 | s | semmle.label | s | +| main.rs:233:10:233:10 | t | semmle.label | t | +| main.rs:233:10:233:10 | t | semmle.label | t | +| main.rs:257:9:257:9 | s [D] | semmle.label | s [D] | +| main.rs:257:9:257:9 | s [D] | semmle.label | s [D] | +| main.rs:257:13:257:23 | enum_source | semmle.label | enum_source | +| main.rs:257:13:257:23 | enum_source | semmle.label | enum_source | +| main.rs:257:13:257:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] | +| main.rs:257:13:257:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] | +| main.rs:258:11:258:11 | s [D] | semmle.label | s [D] | +| main.rs:258:11:258:11 | s [D] | semmle.label | s [D] | +| main.rs:260:9:260:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | +| main.rs:260:9:260:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | +| main.rs:260:35:260:35 | i | semmle.label | i | +| main.rs:260:35:260:35 | i | semmle.label | i | +| main.rs:260:47:260:47 | i | semmle.label | i | +| main.rs:260:47:260:47 | i | semmle.label | i | +| main.rs:264:9:264:9 | s [E, Some] | semmle.label | s [E, Some] | +| main.rs:264:9:264:9 | s [E, Some] | semmle.label | s [E, Some] | +| main.rs:264:13:264:30 | enum_source_nested | semmle.label | enum_source_nested | +| main.rs:264:13:264:30 | enum_source_nested | semmle.label | enum_source_nested | +| main.rs:264:13:264:34 | enum_source_nested(...) [E, Some] | semmle.label | enum_source_nested(...) [E, Some] | +| main.rs:264:13:264:34 | enum_source_nested(...) [E, Some] | semmle.label | enum_source_nested(...) [E, Some] | +| main.rs:265:11:265:11 | s [E, Some] | semmle.label | s [E, Some] | +| main.rs:265:11:265:11 | s [E, Some] | semmle.label | s [E, Some] | +| main.rs:268:9:268:37 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] | +| main.rs:268:9:268:37 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] | +| main.rs:268:35:268:35 | o [Some] | semmle.label | o [Some] | +| main.rs:268:35:268:35 | o [Some] | semmle.label | o [Some] | +| main.rs:270:19:270:19 | o [Some] | semmle.label | o [Some] | +| main.rs:270:19:270:19 | o [Some] | semmle.label | o [Some] | +| main.rs:271:17:271:23 | Some(...) [Some] | semmle.label | Some(...) [Some] | +| main.rs:271:17:271:23 | Some(...) [Some] | semmle.label | Some(...) [Some] | +| main.rs:271:22:271:22 | i | semmle.label | i | +| main.rs:271:22:271:22 | i | semmle.label | i | +| main.rs:271:33:271:33 | i | semmle.label | i | +| main.rs:271:33:271:33 | i | semmle.label | i | +| main.rs:280:9:280:9 | s [C] | semmle.label | s [C] | +| main.rs:280:9:280:9 | s [C] | semmle.label | s [C] | +| main.rs:280:13:280:24 | e.source(...) [C] | semmle.label | e.source(...) [C] | +| main.rs:280:13:280:24 | e.source(...) [C] | semmle.label | e.source(...) [C] | +| main.rs:280:15:280:20 | source | semmle.label | source | +| main.rs:280:15:280:20 | source | semmle.label | source | +| main.rs:281:11:281:11 | s [C] | semmle.label | s [C] | +| main.rs:281:11:281:11 | s [C] | semmle.label | s [C] | +| main.rs:282:9:282:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | +| main.rs:282:9:282:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | +| main.rs:282:35:282:35 | i | semmle.label | i | +| main.rs:282:35:282:35 | i | semmle.label | i | +| main.rs:282:47:282:47 | i | semmle.label | i | +| main.rs:282:47:282:47 | i | semmle.label | i | +| main.rs:303:18:303:18 | ... | semmle.label | ... | +| main.rs:303:18:303:18 | ... | semmle.label | ... | +| main.rs:303:26:303:26 | a | semmle.label | a | +| main.rs:303:26:303:26 | a | semmle.label | a | +| main.rs:304:9:304:19 | pass_source | semmle.label | pass_source | +| main.rs:304:9:304:19 | pass_source | semmle.label | pass_source | +| main.rs:306:9:306:19 | pass_source | semmle.label | pass_source | +| main.rs:306:9:306:19 | pass_source | semmle.label | pass_source | +| main.rs:306:25:306:25 | ... | semmle.label | ... | +| main.rs:306:25:306:25 | ... | semmle.label | ... | +| main.rs:307:18:307:18 | a | semmle.label | a | +| main.rs:307:18:307:18 | a | semmle.label | a | +| main.rs:310:14:310:19 | ...: i64 | semmle.label | ...: i64 | +| main.rs:310:14:310:19 | ...: i64 | semmle.label | ...: i64 | +| main.rs:311:18:311:18 | a | semmle.label | a | +| main.rs:311:18:311:18 | a | semmle.label | a | +| main.rs:313:9:313:19 | pass_source | semmle.label | pass_source | +| main.rs:313:9:313:19 | pass_source | semmle.label | pass_source | +| main.rs:315:9:315:19 | pass_source | semmle.label | pass_source | +| main.rs:315:9:315:19 | pass_source | semmle.label | pass_source | +| main.rs:315:36:315:36 | ... | semmle.label | ... | +| main.rs:315:36:315:36 | ... | semmle.label | ... | +| main.rs:316:18:316:18 | a | semmle.label | a | +| main.rs:316:18:316:18 | a | semmle.label | a | +| main.rs:319:9:319:26 | pass_source_nested | semmle.label | pass_source_nested | +| main.rs:319:9:319:26 | pass_source_nested | semmle.label | pass_source_nested | +| main.rs:319:32:319:32 | ... [E, Some] | semmle.label | ... [E, Some] | +| main.rs:319:32:319:32 | ... [E, Some] | semmle.label | ... [E, Some] | +| main.rs:320:19:320:19 | e [E, Some] | semmle.label | e [E, Some] | +| main.rs:320:19:320:19 | e [E, Some] | semmle.label | e [E, Some] | +| main.rs:323:17:323:45 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] | +| main.rs:323:17:323:45 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] | +| main.rs:323:43:323:43 | o [Some] | semmle.label | o [Some] | +| main.rs:323:43:323:43 | o [Some] | semmle.label | o [Some] | +| main.rs:325:27:325:27 | o [Some] | semmle.label | o [Some] | +| main.rs:325:27:325:27 | o [Some] | semmle.label | o [Some] | +| main.rs:326:25:326:31 | Some(...) [Some] | semmle.label | Some(...) [Some] | +| main.rs:326:25:326:31 | Some(...) [Some] | semmle.label | Some(...) [Some] | +| main.rs:326:30:326:30 | i | semmle.label | i | +| main.rs:326:30:326:30 | i | semmle.label | i | +| main.rs:326:41:326:41 | i | semmle.label | i | +| main.rs:326:41:326:41 | i | semmle.label | i | +| main.rs:364:9:364:9 | s | semmle.label | s | +| main.rs:364:9:364:9 | s | semmle.label | s | +| main.rs:364:13:364:22 | source(...) | semmle.label | source(...) | +| main.rs:364:13:364:22 | source(...) | semmle.label | source(...) | +| main.rs:365:5:365:13 | enum_sink | semmle.label | enum_sink | +| main.rs:365:5:365:13 | enum_sink | semmle.label | enum_sink | +| main.rs:365:15:365:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | +| main.rs:365:15:365:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | +| main.rs:365:41:365:41 | s | semmle.label | s | +| main.rs:365:41:365:41 | s | semmle.label | s | +| main.rs:368:5:368:20 | enum_sink_nested | semmle.label | enum_sink_nested | +| main.rs:368:5:368:20 | enum_sink_nested | semmle.label | enum_sink_nested | +| main.rs:368:22:368:56 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] | +| main.rs:368:22:368:56 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] | +| main.rs:368:48:368:54 | Some(...) [Some] | semmle.label | Some(...) [Some] | +| main.rs:368:48:368:54 | Some(...) [Some] | semmle.label | Some(...) [Some] | +| main.rs:368:53:368:53 | s | semmle.label | s | +| main.rs:368:53:368:53 | s | semmle.label | s | +| main.rs:372:9:372:9 | s | semmle.label | s | +| main.rs:372:9:372:9 | s | semmle.label | s | +| main.rs:372:13:372:22 | source(...) | semmle.label | source(...) | +| main.rs:372:13:372:22 | source(...) | semmle.label | source(...) | +| main.rs:373:9:373:9 | e [D] | semmle.label | e [D] | +| main.rs:373:9:373:9 | e [D] | semmle.label | e [D] | +| main.rs:373:13:373:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | +| main.rs:373:13:373:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | +| main.rs:373:39:373:39 | s | semmle.label | s | +| main.rs:373:39:373:39 | s | semmle.label | s | +| main.rs:374:5:374:5 | e [D] | semmle.label | e [D] | +| main.rs:374:5:374:5 | e [D] | semmle.label | e [D] | +| main.rs:374:7:374:10 | sink | semmle.label | sink | +| main.rs:374:7:374:10 | sink | semmle.label | sink | +| main.rs:383:9:383:9 | s | semmle.label | s | +| main.rs:383:9:383:9 | s | semmle.label | s | +| main.rs:383:13:383:25 | simple_source | semmle.label | simple_source | +| main.rs:383:13:383:25 | simple_source | semmle.label | simple_source | +| main.rs:383:13:383:29 | simple_source(...) | semmle.label | simple_source(...) | +| main.rs:383:13:383:29 | simple_source(...) | semmle.label | simple_source(...) | +| main.rs:384:10:384:10 | s | semmle.label | s | +| main.rs:384:10:384:10 | s | semmle.label | s | +| main.rs:391:9:391:9 | s | semmle.label | s | +| main.rs:391:9:391:9 | s | semmle.label | s | +| main.rs:391:13:391:22 | source(...) | semmle.label | source(...) | +| main.rs:391:13:391:22 | source(...) | semmle.label | source(...) | +| main.rs:392:5:392:15 | simple_sink | semmle.label | simple_sink | +| main.rs:392:5:392:15 | simple_sink | semmle.label | simple_sink | +| main.rs:392:17:392:17 | s | semmle.label | s | +| main.rs:392:17:392:17 | s | semmle.label | s | +| main.rs:400:5:400:14 | arg_source | semmle.label | arg_source | +| main.rs:400:5:400:14 | arg_source | semmle.label | arg_source | +| main.rs:400:16:400:16 | [post] i | semmle.label | [post] i | +| main.rs:400:16:400:16 | [post] i | semmle.label | [post] i | +| main.rs:401:10:401:10 | i | semmle.label | i | +| main.rs:401:10:401:10 | i | semmle.label | i | +| main.rs:464:9:464:10 | x1 | semmle.label | x1 | +| main.rs:464:9:464:10 | x1 | semmle.label | x1 | +| main.rs:464:14:464:23 | source(...) | semmle.label | source(...) | +| main.rs:464:14:464:23 | source(...) | semmle.label | source(...) | +| main.rs:464:14:464:30 | ... .max(...) | semmle.label | ... .max(...) | +| main.rs:464:14:464:30 | ... .max(...) | semmle.label | ... .max(...) | +| main.rs:465:10:465:11 | x1 | semmle.label | x1 | +| main.rs:465:10:465:11 | x1 | semmle.label | x1 | +| main.rs:467:9:467:10 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | +| main.rs:467:9:467:10 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | +| main.rs:467:14:474:6 | ... .max(...) [MyStruct.field1] | semmle.label | ... .max(...) [MyStruct.field1] | +| main.rs:467:14:474:6 | ... .max(...) [MyStruct.field1] | semmle.label | ... .max(...) [MyStruct.field1] | +| main.rs:467:15:470:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] | +| main.rs:467:15:470:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] | +| main.rs:468:17:468:26 | source(...) | semmle.label | source(...) | +| main.rs:468:17:468:26 | source(...) | semmle.label | source(...) | +| main.rs:475:10:475:11 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | +| main.rs:475:10:475:11 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | +| main.rs:475:10:475:18 | x2.field1 | semmle.label | x2.field1 | +| main.rs:475:10:475:18 | x2.field1 | semmle.label | x2.field1 | +| main.rs:480:9:480:10 | x4 | semmle.label | x4 | +| main.rs:480:9:480:10 | x4 | semmle.label | x4 | +| main.rs:480:14:480:23 | source(...) | semmle.label | source(...) | +| main.rs:480:14:480:23 | source(...) | semmle.label | source(...) | +| main.rs:480:14:480:30 | ... .max(...) | semmle.label | ... .max(...) | +| main.rs:480:14:480:30 | ... .max(...) | semmle.label | ... .max(...) | +| main.rs:481:10:481:11 | x4 | semmle.label | x4 | +| main.rs:481:10:481:11 | x4 | semmle.label | x4 | +| main.rs:483:9:483:10 | x5 | semmle.label | x5 | +| main.rs:483:14:483:23 | source(...) | semmle.label | source(...) | +| main.rs:483:14:483:30 | ... .lt(...) | semmle.label | ... .lt(...) | +| main.rs:484:10:484:11 | x5 | semmle.label | x5 | +| main.rs:486:9:486:10 | x6 | semmle.label | x6 | +| main.rs:486:14:486:23 | source(...) | semmle.label | source(...) | +| main.rs:486:14:486:27 | ... < ... | semmle.label | ... < ... | +| main.rs:487:10:487:11 | x6 | semmle.label | x6 | +| main.rs:502:10:502:25 | generated_source | semmle.label | generated_source | +| main.rs:502:10:502:25 | generated_source | semmle.label | generated_source | +| main.rs:502:10:502:28 | generated_source(...) | semmle.label | generated_source(...) | +| main.rs:502:10:502:28 | generated_source(...) | semmle.label | generated_source(...) | +| main.rs:504:10:504:30 | neutral_manual_source | semmle.label | neutral_manual_source | +| main.rs:504:10:504:30 | neutral_manual_source | semmle.label | neutral_manual_source | +| main.rs:504:10:504:33 | neutral_manual_source(...) | semmle.label | neutral_manual_source(...) | +| main.rs:504:10:504:33 | neutral_manual_source(...) | semmle.label | neutral_manual_source(...) | +| main.rs:505:5:505:18 | generated_sink | semmle.label | generated_sink | +| main.rs:505:5:505:18 | generated_sink | semmle.label | generated_sink | +| main.rs:505:20:505:28 | source(...) | semmle.label | source(...) | +| main.rs:505:20:505:28 | source(...) | semmle.label | source(...) | +| main.rs:507:5:507:23 | neutral_manual_sink | semmle.label | neutral_manual_sink | +| main.rs:507:5:507:23 | neutral_manual_sink | semmle.label | neutral_manual_sink | +| main.rs:507:25:507:33 | source(...) | semmle.label | source(...) | +| main.rs:507:25:507:33 | source(...) | semmle.label | source(...) | +| main.rs:508:10:508:37 | generated_summary(...) | semmle.label | generated_summary(...) | +| main.rs:508:10:508:37 | generated_summary(...) | semmle.label | generated_summary(...) | +| main.rs:508:28:508:36 | source(...) | semmle.label | source(...) | +| main.rs:508:28:508:36 | source(...) | semmle.label | source(...) | +| main.rs:510:10:510:42 | neutral_manual_summary(...) | semmle.label | neutral_manual_summary(...) | +| main.rs:510:10:510:42 | neutral_manual_summary(...) | semmle.label | neutral_manual_summary(...) | +| main.rs:510:33:510:41 | source(...) | semmle.label | source(...) | +| main.rs:510:33:510:41 | source(...) | semmle.label | source(...) | subpaths -| main.rs:212:23:212:23 | f [captured s] | main.rs:211:40:211:40 | s | main.rs:211:17:211:42 | if ... {...} else {...} | main.rs:212:13:212:24 | apply(...) | -| main.rs:212:23:212:23 | f [captured s] | main.rs:211:40:211:40 | s | main.rs:211:17:211:42 | if ... {...} else {...} | main.rs:212:13:212:24 | apply(...) | -| main.rs:219:19:219:19 | s | main.rs:218:14:218:14 | ... | main.rs:218:17:218:42 | if ... {...} else {...} | main.rs:219:13:219:23 | apply(...) | -| main.rs:219:19:219:19 | s | main.rs:218:14:218:14 | ... | main.rs:218:17:218:42 | if ... {...} else {...} | main.rs:219:13:219:23 | apply(...) | +| main.rs:214:23:214:23 | f [captured s] | main.rs:213:40:213:40 | s | main.rs:213:17:213:42 | if ... {...} else {...} | main.rs:214:13:214:24 | apply(...) | +| main.rs:214:23:214:23 | f [captured s] | main.rs:213:40:213:40 | s | main.rs:213:17:213:42 | if ... {...} else {...} | main.rs:214:13:214:24 | apply(...) | +| main.rs:221:19:221:19 | s | main.rs:220:14:220:14 | ... | main.rs:220:17:220:42 | if ... {...} else {...} | main.rs:221:13:221:23 | apply(...) | +| main.rs:221:19:221:19 | s | main.rs:220:14:220:14 | ... | main.rs:220:17:220:42 | if ... {...} else {...} | main.rs:221:13:221:23 | apply(...) | testFailures invalidSpecComponent #select @@ -731,69 +822,75 @@ invalidSpecComponent | main.rs:56:10:56:24 | get_var_pos(...) | main.rs:54:13:54:21 | source(...) | main.rs:56:10:56:24 | get_var_pos(...) | $@ | main.rs:54:13:54:21 | source(...) | source(...) | | main.rs:71:33:71:33 | i | main.rs:67:13:67:21 | source(...) | main.rs:71:33:71:33 | i | $@ | main.rs:67:13:67:21 | source(...) | source(...) | | main.rs:71:33:71:33 | i | main.rs:67:13:67:21 | source(...) | main.rs:71:33:71:33 | i | $@ | main.rs:67:13:67:21 | source(...) | source(...) | -| main.rs:88:10:88:26 | get_var_field(...) | main.rs:86:13:86:21 | source(...) | main.rs:88:10:88:26 | get_var_field(...) | $@ | main.rs:86:13:86:21 | source(...) | source(...) | -| main.rs:88:10:88:26 | get_var_field(...) | main.rs:86:13:86:21 | source(...) | main.rs:88:10:88:26 | get_var_field(...) | $@ | main.rs:86:13:86:21 | source(...) | source(...) | -| main.rs:103:47:103:47 | i | main.rs:99:13:99:21 | source(...) | main.rs:103:47:103:47 | i | $@ | main.rs:99:13:99:21 | source(...) | source(...) | -| main.rs:103:47:103:47 | i | main.rs:99:13:99:21 | source(...) | main.rs:103:47:103:47 | i | $@ | main.rs:99:13:99:21 | source(...) | source(...) | -| main.rs:123:10:123:36 | get_struct_field(...) | main.rs:118:13:118:21 | source(...) | main.rs:123:10:123:36 | get_struct_field(...) | $@ | main.rs:118:13:118:21 | source(...) | source(...) | -| main.rs:123:10:123:36 | get_struct_field(...) | main.rs:118:13:118:21 | source(...) | main.rs:123:10:123:36 | get_struct_field(...) | $@ | main.rs:118:13:118:21 | source(...) | source(...) | -| main.rs:143:10:143:25 | my_struct.field2 | main.rs:140:13:140:21 | source(...) | main.rs:143:10:143:25 | my_struct.field2 | $@ | main.rs:140:13:140:21 | source(...) | source(...) | -| main.rs:143:10:143:25 | my_struct.field2 | main.rs:140:13:140:21 | source(...) | main.rs:143:10:143:25 | my_struct.field2 | $@ | main.rs:140:13:140:21 | source(...) | source(...) | -| main.rs:153:10:153:31 | get_array_element(...) | main.rs:152:13:152:21 | source(...) | main.rs:153:10:153:31 | get_array_element(...) | $@ | main.rs:152:13:152:21 | source(...) | source(...) | -| main.rs:153:10:153:31 | get_array_element(...) | main.rs:152:13:152:21 | source(...) | main.rs:153:10:153:31 | get_array_element(...) | $@ | main.rs:152:13:152:21 | source(...) | source(...) | -| main.rs:164:10:164:15 | arr[0] | main.rs:162:13:162:21 | source(...) | main.rs:164:10:164:15 | arr[0] | $@ | main.rs:162:13:162:21 | source(...) | source(...) | -| main.rs:164:10:164:15 | arr[0] | main.rs:162:13:162:21 | source(...) | main.rs:164:10:164:15 | arr[0] | $@ | main.rs:162:13:162:21 | source(...) | source(...) | -| main.rs:175:10:175:29 | get_tuple_element(...) | main.rs:173:13:173:22 | source(...) | main.rs:175:10:175:29 | get_tuple_element(...) | $@ | main.rs:173:13:173:22 | source(...) | source(...) | -| main.rs:175:10:175:29 | get_tuple_element(...) | main.rs:173:13:173:22 | source(...) | main.rs:175:10:175:29 | get_tuple_element(...) | $@ | main.rs:173:13:173:22 | source(...) | source(...) | -| main.rs:189:10:189:12 | t.1 | main.rs:186:13:186:22 | source(...) | main.rs:189:10:189:12 | t.1 | $@ | main.rs:186:13:186:22 | source(...) | source(...) | -| main.rs:189:10:189:12 | t.1 | main.rs:186:13:186:22 | source(...) | main.rs:189:10:189:12 | t.1 | $@ | main.rs:186:13:186:22 | source(...) | source(...) | -| main.rs:203:14:203:14 | n | main.rs:201:13:201:22 | source(...) | main.rs:203:14:203:14 | n | $@ | main.rs:201:13:201:22 | source(...) | source(...) | -| main.rs:203:14:203:14 | n | main.rs:201:13:201:22 | source(...) | main.rs:203:14:203:14 | n | $@ | main.rs:201:13:201:22 | source(...) | source(...) | -| main.rs:213:10:213:10 | t | main.rs:210:13:210:22 | source(...) | main.rs:213:10:213:10 | t | $@ | main.rs:210:13:210:22 | source(...) | source(...) | -| main.rs:213:10:213:10 | t | main.rs:210:13:210:22 | source(...) | main.rs:213:10:213:10 | t | $@ | main.rs:210:13:210:22 | source(...) | source(...) | -| main.rs:220:10:220:10 | t | main.rs:217:13:217:22 | source(...) | main.rs:220:10:220:10 | t | $@ | main.rs:217:13:217:22 | source(...) | source(...) | -| main.rs:220:10:220:10 | t | main.rs:217:13:217:22 | source(...) | main.rs:220:10:220:10 | t | $@ | main.rs:217:13:217:22 | source(...) | source(...) | -| main.rs:231:10:231:10 | t | main.rs:229:13:229:22 | source(...) | main.rs:231:10:231:10 | t | $@ | main.rs:229:13:229:22 | source(...) | source(...) | -| main.rs:231:10:231:10 | t | main.rs:229:13:229:22 | source(...) | main.rs:231:10:231:10 | t | $@ | main.rs:229:13:229:22 | source(...) | source(...) | -| main.rs:253:47:253:47 | i | main.rs:250:13:250:23 | enum_source | main.rs:253:47:253:47 | i | $@ | main.rs:250:13:250:23 | enum_source | enum_source | -| main.rs:253:47:253:47 | i | main.rs:250:13:250:23 | enum_source | main.rs:253:47:253:47 | i | $@ | main.rs:250:13:250:23 | enum_source | enum_source | -| main.rs:261:47:261:47 | i | main.rs:259:15:259:20 | source | main.rs:261:47:261:47 | i | $@ | main.rs:259:15:259:20 | source | source | -| main.rs:261:47:261:47 | i | main.rs:259:15:259:20 | source | main.rs:261:47:261:47 | i | $@ | main.rs:259:15:259:20 | source | source | -| main.rs:275:26:275:26 | a | main.rs:276:9:276:19 | pass_source | main.rs:275:26:275:26 | a | $@ | main.rs:276:9:276:19 | pass_source | pass_source | -| main.rs:275:26:275:26 | a | main.rs:276:9:276:19 | pass_source | main.rs:275:26:275:26 | a | $@ | main.rs:276:9:276:19 | pass_source | pass_source | -| main.rs:279:18:279:18 | a | main.rs:278:9:278:19 | pass_source | main.rs:279:18:279:18 | a | $@ | main.rs:278:9:278:19 | pass_source | pass_source | -| main.rs:279:18:279:18 | a | main.rs:278:9:278:19 | pass_source | main.rs:279:18:279:18 | a | $@ | main.rs:278:9:278:19 | pass_source | pass_source | -| main.rs:283:18:283:18 | a | main.rs:285:9:285:19 | pass_source | main.rs:283:18:283:18 | a | $@ | main.rs:285:9:285:19 | pass_source | pass_source | -| main.rs:283:18:283:18 | a | main.rs:285:9:285:19 | pass_source | main.rs:283:18:283:18 | a | $@ | main.rs:285:9:285:19 | pass_source | pass_source | -| main.rs:288:18:288:18 | a | main.rs:287:9:287:19 | pass_source | main.rs:288:18:288:18 | a | $@ | main.rs:287:9:287:19 | pass_source | pass_source | -| main.rs:288:18:288:18 | a | main.rs:287:9:287:19 | pass_source | main.rs:288:18:288:18 | a | $@ | main.rs:287:9:287:19 | pass_source | pass_source | -| main.rs:298:5:298:13 | enum_sink | main.rs:297:13:297:22 | source(...) | main.rs:298:5:298:13 | enum_sink | $@ | main.rs:297:13:297:22 | source(...) | source(...) | -| main.rs:298:5:298:13 | enum_sink | main.rs:297:13:297:22 | source(...) | main.rs:298:5:298:13 | enum_sink | $@ | main.rs:297:13:297:22 | source(...) | source(...) | -| main.rs:305:7:305:10 | sink | main.rs:303:13:303:22 | source(...) | main.rs:305:7:305:10 | sink | $@ | main.rs:303:13:303:22 | source(...) | source(...) | -| main.rs:305:7:305:10 | sink | main.rs:303:13:303:22 | source(...) | main.rs:305:7:305:10 | sink | $@ | main.rs:303:13:303:22 | source(...) | source(...) | -| main.rs:315:10:315:10 | s | main.rs:314:13:314:25 | simple_source | main.rs:315:10:315:10 | s | $@ | main.rs:314:13:314:25 | simple_source | simple_source | -| main.rs:315:10:315:10 | s | main.rs:314:13:314:25 | simple_source | main.rs:315:10:315:10 | s | $@ | main.rs:314:13:314:25 | simple_source | simple_source | -| main.rs:323:5:323:15 | simple_sink | main.rs:322:13:322:22 | source(...) | main.rs:323:5:323:15 | simple_sink | $@ | main.rs:322:13:322:22 | source(...) | source(...) | -| main.rs:323:5:323:15 | simple_sink | main.rs:322:13:322:22 | source(...) | main.rs:323:5:323:15 | simple_sink | $@ | main.rs:322:13:322:22 | source(...) | source(...) | -| main.rs:332:10:332:10 | i | main.rs:331:5:331:14 | arg_source | main.rs:332:10:332:10 | i | $@ | main.rs:331:5:331:14 | arg_source | arg_source | -| main.rs:332:10:332:10 | i | main.rs:331:5:331:14 | arg_source | main.rs:332:10:332:10 | i | $@ | main.rs:331:5:331:14 | arg_source | arg_source | -| main.rs:385:10:385:11 | x1 | main.rs:384:14:384:23 | source(...) | main.rs:385:10:385:11 | x1 | $@ | main.rs:384:14:384:23 | source(...) | source(...) | -| main.rs:385:10:385:11 | x1 | main.rs:384:14:384:23 | source(...) | main.rs:385:10:385:11 | x1 | $@ | main.rs:384:14:384:23 | source(...) | source(...) | -| main.rs:395:10:395:18 | x2.field1 | main.rs:388:17:388:26 | source(...) | main.rs:395:10:395:18 | x2.field1 | $@ | main.rs:388:17:388:26 | source(...) | source(...) | -| main.rs:395:10:395:18 | x2.field1 | main.rs:388:17:388:26 | source(...) | main.rs:395:10:395:18 | x2.field1 | $@ | main.rs:388:17:388:26 | source(...) | source(...) | -| main.rs:401:10:401:11 | x4 | main.rs:400:14:400:23 | source(...) | main.rs:401:10:401:11 | x4 | $@ | main.rs:400:14:400:23 | source(...) | source(...) | -| main.rs:401:10:401:11 | x4 | main.rs:400:14:400:23 | source(...) | main.rs:401:10:401:11 | x4 | $@ | main.rs:400:14:400:23 | source(...) | source(...) | -| main.rs:404:10:404:11 | x5 | main.rs:403:14:403:23 | source(...) | main.rs:404:10:404:11 | x5 | $@ | main.rs:403:14:403:23 | source(...) | source(...) | -| main.rs:407:10:407:11 | x6 | main.rs:406:14:406:23 | source(...) | main.rs:407:10:407:11 | x6 | $@ | main.rs:406:14:406:23 | source(...) | source(...) | -| main.rs:422:10:422:28 | generated_source(...) | main.rs:422:10:422:25 | generated_source | main.rs:422:10:422:28 | generated_source(...) | $@ | main.rs:422:10:422:25 | generated_source | generated_source | -| main.rs:422:10:422:28 | generated_source(...) | main.rs:422:10:422:25 | generated_source | main.rs:422:10:422:28 | generated_source(...) | $@ | main.rs:422:10:422:25 | generated_source | generated_source | -| main.rs:424:10:424:33 | neutral_manual_source(...) | main.rs:424:10:424:30 | neutral_manual_source | main.rs:424:10:424:33 | neutral_manual_source(...) | $@ | main.rs:424:10:424:30 | neutral_manual_source | neutral_manual_source | -| main.rs:424:10:424:33 | neutral_manual_source(...) | main.rs:424:10:424:30 | neutral_manual_source | main.rs:424:10:424:33 | neutral_manual_source(...) | $@ | main.rs:424:10:424:30 | neutral_manual_source | neutral_manual_source | -| main.rs:425:5:425:18 | generated_sink | main.rs:425:20:425:28 | source(...) | main.rs:425:5:425:18 | generated_sink | $@ | main.rs:425:20:425:28 | source(...) | source(...) | -| main.rs:425:5:425:18 | generated_sink | main.rs:425:20:425:28 | source(...) | main.rs:425:5:425:18 | generated_sink | $@ | main.rs:425:20:425:28 | source(...) | source(...) | -| main.rs:427:5:427:23 | neutral_manual_sink | main.rs:427:25:427:33 | source(...) | main.rs:427:5:427:23 | neutral_manual_sink | $@ | main.rs:427:25:427:33 | source(...) | source(...) | -| main.rs:427:5:427:23 | neutral_manual_sink | main.rs:427:25:427:33 | source(...) | main.rs:427:5:427:23 | neutral_manual_sink | $@ | main.rs:427:25:427:33 | source(...) | source(...) | -| main.rs:428:10:428:37 | generated_summary(...) | main.rs:428:28:428:36 | source(...) | main.rs:428:10:428:37 | generated_summary(...) | $@ | main.rs:428:28:428:36 | source(...) | source(...) | -| main.rs:428:10:428:37 | generated_summary(...) | main.rs:428:28:428:36 | source(...) | main.rs:428:10:428:37 | generated_summary(...) | $@ | main.rs:428:28:428:36 | source(...) | source(...) | -| main.rs:430:10:430:42 | neutral_manual_summary(...) | main.rs:430:33:430:41 | source(...) | main.rs:430:10:430:42 | neutral_manual_summary(...) | $@ | main.rs:430:33:430:41 | source(...) | source(...) | -| main.rs:430:10:430:42 | neutral_manual_summary(...) | main.rs:430:33:430:41 | source(...) | main.rs:430:10:430:42 | neutral_manual_summary(...) | $@ | main.rs:430:33:430:41 | source(...) | source(...) | +| main.rs:89:10:89:26 | get_var_field(...) | main.rs:87:13:87:21 | source(...) | main.rs:89:10:89:26 | get_var_field(...) | $@ | main.rs:87:13:87:21 | source(...) | source(...) | +| main.rs:89:10:89:26 | get_var_field(...) | main.rs:87:13:87:21 | source(...) | main.rs:89:10:89:26 | get_var_field(...) | $@ | main.rs:87:13:87:21 | source(...) | source(...) | +| main.rs:104:47:104:47 | i | main.rs:100:13:100:21 | source(...) | main.rs:104:47:104:47 | i | $@ | main.rs:100:13:100:21 | source(...) | source(...) | +| main.rs:104:47:104:47 | i | main.rs:100:13:100:21 | source(...) | main.rs:104:47:104:47 | i | $@ | main.rs:100:13:100:21 | source(...) | source(...) | +| main.rs:125:10:125:36 | get_struct_field(...) | main.rs:120:13:120:21 | source(...) | main.rs:125:10:125:36 | get_struct_field(...) | $@ | main.rs:120:13:120:21 | source(...) | source(...) | +| main.rs:125:10:125:36 | get_struct_field(...) | main.rs:120:13:120:21 | source(...) | main.rs:125:10:125:36 | get_struct_field(...) | $@ | main.rs:120:13:120:21 | source(...) | source(...) | +| main.rs:145:10:145:25 | my_struct.field2 | main.rs:142:13:142:21 | source(...) | main.rs:145:10:145:25 | my_struct.field2 | $@ | main.rs:142:13:142:21 | source(...) | source(...) | +| main.rs:145:10:145:25 | my_struct.field2 | main.rs:142:13:142:21 | source(...) | main.rs:145:10:145:25 | my_struct.field2 | $@ | main.rs:142:13:142:21 | source(...) | source(...) | +| main.rs:155:10:155:31 | get_array_element(...) | main.rs:154:13:154:21 | source(...) | main.rs:155:10:155:31 | get_array_element(...) | $@ | main.rs:154:13:154:21 | source(...) | source(...) | +| main.rs:155:10:155:31 | get_array_element(...) | main.rs:154:13:154:21 | source(...) | main.rs:155:10:155:31 | get_array_element(...) | $@ | main.rs:154:13:154:21 | source(...) | source(...) | +| main.rs:166:10:166:15 | arr[0] | main.rs:164:13:164:21 | source(...) | main.rs:166:10:166:15 | arr[0] | $@ | main.rs:164:13:164:21 | source(...) | source(...) | +| main.rs:166:10:166:15 | arr[0] | main.rs:164:13:164:21 | source(...) | main.rs:166:10:166:15 | arr[0] | $@ | main.rs:164:13:164:21 | source(...) | source(...) | +| main.rs:177:10:177:29 | get_tuple_element(...) | main.rs:175:13:175:22 | source(...) | main.rs:177:10:177:29 | get_tuple_element(...) | $@ | main.rs:175:13:175:22 | source(...) | source(...) | +| main.rs:177:10:177:29 | get_tuple_element(...) | main.rs:175:13:175:22 | source(...) | main.rs:177:10:177:29 | get_tuple_element(...) | $@ | main.rs:175:13:175:22 | source(...) | source(...) | +| main.rs:191:10:191:12 | t.1 | main.rs:188:13:188:22 | source(...) | main.rs:191:10:191:12 | t.1 | $@ | main.rs:188:13:188:22 | source(...) | source(...) | +| main.rs:191:10:191:12 | t.1 | main.rs:188:13:188:22 | source(...) | main.rs:191:10:191:12 | t.1 | $@ | main.rs:188:13:188:22 | source(...) | source(...) | +| main.rs:205:14:205:14 | n | main.rs:203:13:203:22 | source(...) | main.rs:205:14:205:14 | n | $@ | main.rs:203:13:203:22 | source(...) | source(...) | +| main.rs:205:14:205:14 | n | main.rs:203:13:203:22 | source(...) | main.rs:205:14:205:14 | n | $@ | main.rs:203:13:203:22 | source(...) | source(...) | +| main.rs:215:10:215:10 | t | main.rs:212:13:212:22 | source(...) | main.rs:215:10:215:10 | t | $@ | main.rs:212:13:212:22 | source(...) | source(...) | +| main.rs:215:10:215:10 | t | main.rs:212:13:212:22 | source(...) | main.rs:215:10:215:10 | t | $@ | main.rs:212:13:212:22 | source(...) | source(...) | +| main.rs:222:10:222:10 | t | main.rs:219:13:219:22 | source(...) | main.rs:222:10:222:10 | t | $@ | main.rs:219:13:219:22 | source(...) | source(...) | +| main.rs:222:10:222:10 | t | main.rs:219:13:219:22 | source(...) | main.rs:222:10:222:10 | t | $@ | main.rs:219:13:219:22 | source(...) | source(...) | +| main.rs:233:10:233:10 | t | main.rs:231:13:231:22 | source(...) | main.rs:233:10:233:10 | t | $@ | main.rs:231:13:231:22 | source(...) | source(...) | +| main.rs:233:10:233:10 | t | main.rs:231:13:231:22 | source(...) | main.rs:233:10:233:10 | t | $@ | main.rs:231:13:231:22 | source(...) | source(...) | +| main.rs:260:47:260:47 | i | main.rs:257:13:257:23 | enum_source | main.rs:260:47:260:47 | i | $@ | main.rs:257:13:257:23 | enum_source | enum_source | +| main.rs:260:47:260:47 | i | main.rs:257:13:257:23 | enum_source | main.rs:260:47:260:47 | i | $@ | main.rs:257:13:257:23 | enum_source | enum_source | +| main.rs:271:33:271:33 | i | main.rs:264:13:264:30 | enum_source_nested | main.rs:271:33:271:33 | i | $@ | main.rs:264:13:264:30 | enum_source_nested | enum_source_nested | +| main.rs:271:33:271:33 | i | main.rs:264:13:264:30 | enum_source_nested | main.rs:271:33:271:33 | i | $@ | main.rs:264:13:264:30 | enum_source_nested | enum_source_nested | +| main.rs:282:47:282:47 | i | main.rs:280:15:280:20 | source | main.rs:282:47:282:47 | i | $@ | main.rs:280:15:280:20 | source | source | +| main.rs:282:47:282:47 | i | main.rs:280:15:280:20 | source | main.rs:282:47:282:47 | i | $@ | main.rs:280:15:280:20 | source | source | +| main.rs:303:26:303:26 | a | main.rs:304:9:304:19 | pass_source | main.rs:303:26:303:26 | a | $@ | main.rs:304:9:304:19 | pass_source | pass_source | +| main.rs:303:26:303:26 | a | main.rs:304:9:304:19 | pass_source | main.rs:303:26:303:26 | a | $@ | main.rs:304:9:304:19 | pass_source | pass_source | +| main.rs:307:18:307:18 | a | main.rs:306:9:306:19 | pass_source | main.rs:307:18:307:18 | a | $@ | main.rs:306:9:306:19 | pass_source | pass_source | +| main.rs:307:18:307:18 | a | main.rs:306:9:306:19 | pass_source | main.rs:307:18:307:18 | a | $@ | main.rs:306:9:306:19 | pass_source | pass_source | +| main.rs:311:18:311:18 | a | main.rs:313:9:313:19 | pass_source | main.rs:311:18:311:18 | a | $@ | main.rs:313:9:313:19 | pass_source | pass_source | +| main.rs:311:18:311:18 | a | main.rs:313:9:313:19 | pass_source | main.rs:311:18:311:18 | a | $@ | main.rs:313:9:313:19 | pass_source | pass_source | +| main.rs:316:18:316:18 | a | main.rs:315:9:315:19 | pass_source | main.rs:316:18:316:18 | a | $@ | main.rs:315:9:315:19 | pass_source | pass_source | +| main.rs:316:18:316:18 | a | main.rs:315:9:315:19 | pass_source | main.rs:316:18:316:18 | a | $@ | main.rs:315:9:315:19 | pass_source | pass_source | +| main.rs:326:41:326:41 | i | main.rs:319:9:319:26 | pass_source_nested | main.rs:326:41:326:41 | i | $@ | main.rs:319:9:319:26 | pass_source_nested | pass_source_nested | +| main.rs:326:41:326:41 | i | main.rs:319:9:319:26 | pass_source_nested | main.rs:326:41:326:41 | i | $@ | main.rs:319:9:319:26 | pass_source_nested | pass_source_nested | +| main.rs:365:5:365:13 | enum_sink | main.rs:364:13:364:22 | source(...) | main.rs:365:5:365:13 | enum_sink | $@ | main.rs:364:13:364:22 | source(...) | source(...) | +| main.rs:365:5:365:13 | enum_sink | main.rs:364:13:364:22 | source(...) | main.rs:365:5:365:13 | enum_sink | $@ | main.rs:364:13:364:22 | source(...) | source(...) | +| main.rs:368:5:368:20 | enum_sink_nested | main.rs:364:13:364:22 | source(...) | main.rs:368:5:368:20 | enum_sink_nested | $@ | main.rs:364:13:364:22 | source(...) | source(...) | +| main.rs:368:5:368:20 | enum_sink_nested | main.rs:364:13:364:22 | source(...) | main.rs:368:5:368:20 | enum_sink_nested | $@ | main.rs:364:13:364:22 | source(...) | source(...) | +| main.rs:374:7:374:10 | sink | main.rs:372:13:372:22 | source(...) | main.rs:374:7:374:10 | sink | $@ | main.rs:372:13:372:22 | source(...) | source(...) | +| main.rs:374:7:374:10 | sink | main.rs:372:13:372:22 | source(...) | main.rs:374:7:374:10 | sink | $@ | main.rs:372:13:372:22 | source(...) | source(...) | +| main.rs:384:10:384:10 | s | main.rs:383:13:383:25 | simple_source | main.rs:384:10:384:10 | s | $@ | main.rs:383:13:383:25 | simple_source | simple_source | +| main.rs:384:10:384:10 | s | main.rs:383:13:383:25 | simple_source | main.rs:384:10:384:10 | s | $@ | main.rs:383:13:383:25 | simple_source | simple_source | +| main.rs:392:5:392:15 | simple_sink | main.rs:391:13:391:22 | source(...) | main.rs:392:5:392:15 | simple_sink | $@ | main.rs:391:13:391:22 | source(...) | source(...) | +| main.rs:392:5:392:15 | simple_sink | main.rs:391:13:391:22 | source(...) | main.rs:392:5:392:15 | simple_sink | $@ | main.rs:391:13:391:22 | source(...) | source(...) | +| main.rs:401:10:401:10 | i | main.rs:400:5:400:14 | arg_source | main.rs:401:10:401:10 | i | $@ | main.rs:400:5:400:14 | arg_source | arg_source | +| main.rs:401:10:401:10 | i | main.rs:400:5:400:14 | arg_source | main.rs:401:10:401:10 | i | $@ | main.rs:400:5:400:14 | arg_source | arg_source | +| main.rs:465:10:465:11 | x1 | main.rs:464:14:464:23 | source(...) | main.rs:465:10:465:11 | x1 | $@ | main.rs:464:14:464:23 | source(...) | source(...) | +| main.rs:465:10:465:11 | x1 | main.rs:464:14:464:23 | source(...) | main.rs:465:10:465:11 | x1 | $@ | main.rs:464:14:464:23 | source(...) | source(...) | +| main.rs:475:10:475:18 | x2.field1 | main.rs:468:17:468:26 | source(...) | main.rs:475:10:475:18 | x2.field1 | $@ | main.rs:468:17:468:26 | source(...) | source(...) | +| main.rs:475:10:475:18 | x2.field1 | main.rs:468:17:468:26 | source(...) | main.rs:475:10:475:18 | x2.field1 | $@ | main.rs:468:17:468:26 | source(...) | source(...) | +| main.rs:481:10:481:11 | x4 | main.rs:480:14:480:23 | source(...) | main.rs:481:10:481:11 | x4 | $@ | main.rs:480:14:480:23 | source(...) | source(...) | +| main.rs:481:10:481:11 | x4 | main.rs:480:14:480:23 | source(...) | main.rs:481:10:481:11 | x4 | $@ | main.rs:480:14:480:23 | source(...) | source(...) | +| main.rs:484:10:484:11 | x5 | main.rs:483:14:483:23 | source(...) | main.rs:484:10:484:11 | x5 | $@ | main.rs:483:14:483:23 | source(...) | source(...) | +| main.rs:487:10:487:11 | x6 | main.rs:486:14:486:23 | source(...) | main.rs:487:10:487:11 | x6 | $@ | main.rs:486:14:486:23 | source(...) | source(...) | +| main.rs:502:10:502:28 | generated_source(...) | main.rs:502:10:502:25 | generated_source | main.rs:502:10:502:28 | generated_source(...) | $@ | main.rs:502:10:502:25 | generated_source | generated_source | +| main.rs:502:10:502:28 | generated_source(...) | main.rs:502:10:502:25 | generated_source | main.rs:502:10:502:28 | generated_source(...) | $@ | main.rs:502:10:502:25 | generated_source | generated_source | +| main.rs:504:10:504:33 | neutral_manual_source(...) | main.rs:504:10:504:30 | neutral_manual_source | main.rs:504:10:504:33 | neutral_manual_source(...) | $@ | main.rs:504:10:504:30 | neutral_manual_source | neutral_manual_source | +| main.rs:504:10:504:33 | neutral_manual_source(...) | main.rs:504:10:504:30 | neutral_manual_source | main.rs:504:10:504:33 | neutral_manual_source(...) | $@ | main.rs:504:10:504:30 | neutral_manual_source | neutral_manual_source | +| main.rs:505:5:505:18 | generated_sink | main.rs:505:20:505:28 | source(...) | main.rs:505:5:505:18 | generated_sink | $@ | main.rs:505:20:505:28 | source(...) | source(...) | +| main.rs:505:5:505:18 | generated_sink | main.rs:505:20:505:28 | source(...) | main.rs:505:5:505:18 | generated_sink | $@ | main.rs:505:20:505:28 | source(...) | source(...) | +| main.rs:507:5:507:23 | neutral_manual_sink | main.rs:507:25:507:33 | source(...) | main.rs:507:5:507:23 | neutral_manual_sink | $@ | main.rs:507:25:507:33 | source(...) | source(...) | +| main.rs:507:5:507:23 | neutral_manual_sink | main.rs:507:25:507:33 | source(...) | main.rs:507:5:507:23 | neutral_manual_sink | $@ | main.rs:507:25:507:33 | source(...) | source(...) | +| main.rs:508:10:508:37 | generated_summary(...) | main.rs:508:28:508:36 | source(...) | main.rs:508:10:508:37 | generated_summary(...) | $@ | main.rs:508:28:508:36 | source(...) | source(...) | +| main.rs:508:10:508:37 | generated_summary(...) | main.rs:508:28:508:36 | source(...) | main.rs:508:10:508:37 | generated_summary(...) | $@ | main.rs:508:28:508:36 | source(...) | source(...) | +| main.rs:510:10:510:42 | neutral_manual_summary(...) | main.rs:510:33:510:41 | source(...) | main.rs:510:10:510:42 | neutral_manual_summary(...) | $@ | main.rs:510:33:510:41 | source(...) | source(...) | +| main.rs:510:10:510:42 | neutral_manual_summary(...) | main.rs:510:33:510:41 | source(...) | main.rs:510:10:510:42 | neutral_manual_summary(...) | $@ | main.rs:510:33:510:41 | 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 4e3377881a36..3fee1227a6df 100644 --- a/rust/ql/test/library-tests/dataflow/models/models.ext.yml +++ b/rust/ql/test/library-tests/dataflow/models/models.ext.yml @@ -5,9 +5,12 @@ extensions: data: - ["main::simple_source", "ReturnValue", "test-source", "manual"] - ["main::enum_source", "ReturnValue.Field[main::MyFieldEnum::D::field_d]", "test-source", "manual"] + - ["main::enum_source_nested", "ReturnValue.Field[main::MyFieldEnum::E::field_e].Field[core::option::Option::Some(0)]", "test-source", "manual"] - ["::source", "ReturnValue.Field[main::MyFieldEnum::C::field_c]", "test-source", "manual"] - ["main::arg_source", "Argument[0]", "test-source", "manual"] + - ["<_ as main::MyTrait>::test_param_source", "Parameter[0]", "test-source", "manual"] - ["main::source_into_function::pass_source", "Argument[1].Parameter[0]", "test-source", "manual"] + - ["main::source_into_function::pass_source_nested", "Argument[1].Parameter[0].Field[main::MyFieldEnum::E::field_e].Field[core::option::Option::Some(0)]", "test-source", "manual"] - ["main::external_file::generated_source", "ReturnValue", "test-source", "dfc-generated"] # not actually generated, but we want to test behaviour of generated models here. - ["main::external_file::neutral_generated_source", "ReturnValue", "test-source", "dfc-generated"] - ["main::external_file::neutral_manual_source", "ReturnValue", "test-source", "manual"] @@ -17,7 +20,10 @@ extensions: data: - ["main::simple_sink", "Argument[0]", "test-sink", "manual"] - ["main::enum_sink", "Argument[0].Field[main::MyFieldEnum::C::field_c]", "test-sink", "manual"] + - ["main::enum_sink_nested", "Argument[0].Field[main::MyFieldEnum::E::field_e].Field[core::option::Option::Some(0)]", "test-sink", "manual"] - ["::sink", "Argument[self].Field[main::MyFieldEnum::D::field_d]", "test-sink", "manual"] + - ["main::sink_out_of_function::pass_sink", "Argument[0].ReturnValue", "test-sink", "manual"] + - ["main::sink_out_of_function::pass_sink_nested", "Argument[0].ReturnValue.Field[main::MyFieldEnum::E::field_e].Field[core::option::Option::Some(0)]", "test-sink", "manual"] - ["main::external_file::generated_sink", "Argument[0]", "test-sink", "dfc-generated"] - ["main::external_file::neutral_generated_sink", "Argument[0]", "test-sink", "dfc-generated"] - ["main::external_file::neutral_manual_sink", "Argument[0]", "test-sink", "manual"] From 7e1f7ed7dbe75e4d29ad4402501caf647ddf66fc Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 8 Jul 2026 13:03:14 +0200 Subject: [PATCH 118/167] FlowSummaryImpl: Introduce `Make2` parameterization --- .../dataflow/internal/FlowSummaryImpl.qll | 1646 +++++++++-------- 1 file changed, 828 insertions(+), 818 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll index b0828c3384bb..21c43b03fef1 100644 --- a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll @@ -1297,847 +1297,963 @@ module Make< } } - private newtype TSummaryNode = - TSummaryInternalNode(SummarizedCallable c, SummaryNodeState state) { - summaryNodeRange(c, state) - } or - TSummaryParameterNode(SummarizedCallable c, ParameterPosition pos) { - summaryParameterNodeRange(c, pos) - } or - TSummaryReturnArgumentNode(FlowSummaryCallBase call, ReturnKind rk) { - exists(SummarizedCallable sc | - call = getASourceCall(sc) and - relevantFlowSummaryPosition(sc, rk) - ) - } or - TSourceOutputNode(SourceElement source, SummaryNodeState state, string kind, string model) { - state.isSourceOutputState(source, _, kind, model) - } or - TSinkInputNode(SinkElement sink, SummaryNodeState state, string kind, string model) { - state.isSinkInputState(sink, _, kind, model) - } - - abstract class SummaryNode extends TSummaryNode { - abstract string toString(); - - abstract SummarizedCallable getSummarizedCallable(); + signature module InputSig2 { + /** + * Gets a data flow node corresponding to the `s` part of `source`. + * + * `s` is typically `ReturnValue` and the result is the node that + * represents the return value of `source`. + */ + Node getSourceNode(SourceBase source, SummaryComponentStack s); - abstract SourceElement getSourceElement(); + /** + * Gets a data flow node corresponding to the `sc` part of `sink`. + * + * `sc` is typically `Argument[i]` and the result is the node that + * represents the `i`th argument of `sink`. + */ + Node getSinkNode(SinkBase sink, SummaryComponent sc); + } - abstract SinkElement getSinkElement(); + module Make2 { + private import Input2 - predicate isHidden() { any() } - } + private newtype TSummaryNode = + TSummaryInternalNode(SummarizedCallable c, SummaryNodeState state) { + summaryNodeRange(c, state) + } or + TSummaryParameterNode(SummarizedCallable c, ParameterPosition pos) { + summaryParameterNodeRange(c, pos) + } or + TSummaryReturnArgumentNode(FlowSummaryCallBase call, ReturnKind rk) { + exists(SummarizedCallable sc | + call = getASourceCall(sc) and + relevantFlowSummaryPosition(sc, rk) + ) + } or + TSourceOutputNode(SourceElement source, SummaryNodeState state, string kind, string model) { + state.isSourceOutputState(source, _, kind, model) + } or + TSinkInputNode(SinkElement sink, SummaryNodeState state, string kind, string model) { + state.isSinkInputState(sink, _, kind, model) + } - private class SummaryInternalNode extends SummaryNode, TSummaryInternalNode { - private SummarizedCallable c; - private SummaryNodeState state; + abstract class SummaryNode extends TSummaryNode { + abstract string toString(); - SummaryInternalNode() { this = TSummaryInternalNode(c, state) } + abstract SummarizedCallable getSummarizedCallable(); - override string toString() { result = "[summary] " + state + " in " + c } + abstract SourceElement getSourceElement(); - override SummarizedCallable getSummarizedCallable() { result = c } + abstract SinkElement getSinkElement(); - override SourceElement getSourceElement() { none() } + predicate isHidden() { any() } + } - override SinkElement getSinkElement() { none() } - } + private class SummaryInternalNode extends SummaryNode, TSummaryInternalNode { + private SummarizedCallable c; + private SummaryNodeState state; - private class SummaryParamNode extends SummaryNode, TSummaryParameterNode { - private SummarizedCallable c; - private ParameterPosition pos; + SummaryInternalNode() { this = TSummaryInternalNode(c, state) } - SummaryParamNode() { this = TSummaryParameterNode(c, pos) } + override string toString() { result = "[summary] " + state + " in " + c } - override string toString() { result = "[summary param] " + pos + " in " + c } + override SummarizedCallable getSummarizedCallable() { result = c } - override SummarizedCallable getSummarizedCallable() { result = c } + override SourceElement getSourceElement() { none() } - override SourceElement getSourceElement() { none() } + override SinkElement getSinkElement() { none() } + } - override SinkElement getSinkElement() { none() } - } + private class SummaryParamNode extends SummaryNode, TSummaryParameterNode { + private SummarizedCallable c; + private ParameterPosition pos; - private class SummaryReturnArgumentNode extends SummaryNode, TSummaryReturnArgumentNode { - private FlowSummaryCallBase call; - private ReturnKind rk; + SummaryParamNode() { this = TSummaryParameterNode(c, pos) } - SummaryReturnArgumentNode() { this = TSummaryReturnArgumentNode(call, rk) } + override string toString() { result = "[summary param] " + pos + " in " + c } - override string toString() { result = "[summary] value written to " + rk + " at " + call } + override SummarizedCallable getSummarizedCallable() { result = c } - override SummarizedCallable getSummarizedCallable() { none() } + override SourceElement getSourceElement() { none() } - override SourceElement getSourceElement() { none() } + override SinkElement getSinkElement() { none() } + } - override SinkElement getSinkElement() { none() } - } + private class SummaryReturnArgumentNode extends SummaryNode, TSummaryReturnArgumentNode { + private FlowSummaryCallBase call; + private ReturnKind rk; - /** - * Gets the summary node that represents the argument node used to transfer - * flow into the caller when a value is written to the value returned by - * `call` with kind `rk`. - */ - SummaryNode summaryArgumentNode(FlowSummaryCallBase call, ReturnKind rk) { - result = TSummaryReturnArgumentNode(call, rk) - } + SummaryReturnArgumentNode() { this = TSummaryReturnArgumentNode(call, rk) } - /** Gets the enclosing callable for summary node `sn`. */ - DataFlowCallable getEnclosingCallable(SummaryNode sn) { - result = getSummarizedCallableAsDataFlowCallable(sn.getSummarizedCallable()) - or - exists(FlowSummaryCallBase call | - sn = TSummaryReturnArgumentNode(call, _) and - result = getSourceCallEnclosingCallable(call) - ) - } + override string toString() { result = "[summary] value written to " + rk + " at " + call } - class SourceOutputNode extends SummaryNode, TSourceOutputNode { - private SourceElement source_; - private SummaryNodeState state_; - private string kind_; - private string model_; + override SummarizedCallable getSummarizedCallable() { none() } - SourceOutputNode() { this = TSourceOutputNode(source_, state_, kind_, model_) } + override SourceElement getSourceElement() { none() } - /** - * Holds if this node is an entry node, i.e. before any stores have been performed. - * - * This node should be used as the actual source node in data flow configurations. - */ - predicate isEntry(string kind, string model) { - model = model_ and - exists(SummaryComponentStack out | - sourceOutputStateEntry(source_, out, kind, model_) and - state_.isSourceOutputState(source_, out, kind, model_) - ) + override SinkElement getSinkElement() { none() } } /** - * 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 - * `s` inside `source`. + * Gets the summary node that represents the argument node used to transfer + * flow into the caller when a value is written to the value returned by + * `call` with kind `rk`. */ - predicate isExit(SourceElement source, SummaryComponentStack s, string model) { - source = source_ and - model = model_ and - state_.isSourceOutputState(source, s, _, model) + SummaryNode summaryArgumentNode(FlowSummaryCallBase call, ReturnKind rk) { + result = TSummaryReturnArgumentNode(call, rk) } - override predicate isHidden() { not this.isEntry(_, _) } - - override string toString() { - if this.isEntry(_, _) - then result = source_.toString() - else result = "[source] " + state_ + " at " + source_ + /** Gets the enclosing callable for summary node `sn`. */ + DataFlowCallable getEnclosingCallable(SummaryNode sn) { + result = getSummarizedCallableAsDataFlowCallable(sn.getSummarizedCallable()) + or + exists(FlowSummaryCallBase call | + sn = TSummaryReturnArgumentNode(call, _) and + result = getSourceCallEnclosingCallable(call) + ) } - override SummarizedCallable getSummarizedCallable() { none() } + class SourceOutputNode extends SummaryNode, TSourceOutputNode { + private SourceElement source_; + private SummaryNodeState state_; + private string kind_; + private string model_; - override SourceElement getSourceElement() { result = source_ } + SourceOutputNode() { this = TSourceOutputNode(source_, state_, kind_, model_) } - override SinkElement getSinkElement() { none() } - } + /** + * Holds if this node is an entry node, i.e. before any stores have been performed. + * + * This node should be used as the actual source node in data flow configurations. + */ + predicate isEntry(string kind, string model) { + model = model_ and + exists(SummaryComponentStack out | + sourceOutputStateEntry(source_, out, kind, model_) and + state_.isSourceOutputState(source_, out, kind, model_) + ) + } - class SinkInputNode extends SummaryNode, TSinkInputNode { - private SinkElement sink_; - private SummaryNodeState state_; - private string kind_; - private string model_; + /** + * 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 + * `s` inside `source`. + */ + predicate isExit(SourceElement source, SummaryComponentStack s, string model) { + source = source_ and + model = model_ and + state_.isSourceOutputState(source, s, _, model) + } - SinkInputNode() { this = TSinkInputNode(sink_, state_, kind_, model_) } + override predicate isHidden() { not this.isEntry(_, _) } - /** - * Holds if this node is an entry node, i.e. before any reads have been performed. - * - * A local flow step should be added to this node from a data flow node representing - * `sc` inside `sink`. - */ - predicate isEntry(SinkElement sink, SummaryComponent sc, string model) { - sink = sink_ and - model = model_ and - state_.isSinkInputState(sink, TSingletonSummaryComponentStack(sc), _, model) - } + override string toString() { + if this.isEntry(_, _) + then result = source_.toString() + else result = "[source] " + state_ + " at " + source_ + } - /** - * Holds if this node is an exit node, i.e. after all reads have been performed. - * - * This node should be used as the actual sink node in data flow configurations. - */ - predicate isExit(string kind, string model) { - kind = kind_ and - model = model_ and - exists(SummaryComponentStack inp | - sinkInputStateExit(sink_, inp, kind, model_) and - state_.isSinkInputState(sink_, inp, kind, model_) - ) - } + override SummarizedCallable getSummarizedCallable() { none() } - override predicate isHidden() { not this.isExit(_, _) } + override SourceElement getSourceElement() { result = source_ } - override string toString() { - if this.isExit(_, _) - then result = sink_.toString() - else result = "[sink] " + state_ + " at " + sink_ + override SinkElement getSinkElement() { none() } } - override SummarizedCallable getSummarizedCallable() { none() } + class SinkInputNode extends SummaryNode, TSinkInputNode { + private SinkElement sink_; + private SummaryNodeState state_; + private string kind_; + private string model_; - override SourceElement getSourceElement() { none() } + SinkInputNode() { this = TSinkInputNode(sink_, state_, kind_, model_) } - override SinkElement getSinkElement() { result = sink_ } - } + /** + * Holds if this node is an entry node, i.e. before any reads have been performed. + * + * A local flow step should be added to this node from a data flow node representing + * `sc` inside `sink`. + */ + predicate isEntry(SinkElement sink, SummaryComponent sc, string model) { + sink = sink_ and + model = model_ and + state_.isSinkInputState(sink, TSingletonSummaryComponentStack(sc), _, model) + } - /** - * Holds if `state` represents having read from a parameter at position - * `pos` in `c`. In this case we are not synthesizing a data-flow node, - * but instead assume that a relevant parameter node already exists. - */ - private predicate parameterReadState( - SummarizedCallable c, SummaryNodeState state, ParameterPosition pos - ) { - state.isInputState(c, SummaryComponentStack::argument(pos)) - or - exists(ReturnKind rk | - relevantFlowSummaryPosition(c, rk) and - state.isInputState(c, SummaryComponentStack::return(rk)) and - pos = getFlowSummaryParameterPosition(rk) - ) - } + /** + * Holds if this node is an exit node, i.e. after all reads have been performed. + * + * This node should be used as the actual sink node in data flow configurations. + */ + predicate isExit(string kind, string model) { + kind = kind_ and + model = model_ and + exists(SummaryComponentStack inp | + sinkInputStateExit(sink_, inp, kind, model_) and + state_.isSinkInputState(sink_, inp, kind, model_) + ) + } - /** - * Holds if a synthesized summary node is needed for the state `state` in summarized - * callable `c`. - */ - private predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { - state.isInputState(c, _) and - not parameterReadState(c, state, _) - or - state.isOutputState(c, _) - } + override predicate isHidden() { not this.isExit(_, _) } - pragma[noinline] - private SummaryNode summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { - exists(SummaryNodeState state | state.isInputState(c, s) | - result = TSummaryInternalNode(c, state) - or - exists(ParameterPosition pos | - parameterReadState(c, state, pos) and - result = TSummaryParameterNode(c, pos) - ) - ) - } + override string toString() { + if this.isExit(_, _) + then result = sink_.toString() + else result = "[sink] " + state_ + " at " + sink_ + } - pragma[noinline] - private SummaryNode summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { - exists(SummaryNodeState state | - state.isOutputState(c, s) and - result = TSummaryInternalNode(c, state) - ) - } + override SummarizedCallable getSummarizedCallable() { none() } - pragma[noinline] - private SummaryNode sourceElementOutputState(SourceElement source, SummaryComponentStack s) { - exists(SummaryNodeState state, string kind, string model | - state.isSourceOutputState(source, s, kind, model) and - result = TSourceOutputNode(source, state, kind, model) - ) - } + override SourceElement getSourceElement() { none() } - pragma[noinline] - private SummaryNode sinkElementInputState(SinkElement sink, SummaryComponentStack s) { - exists(SummaryNodeState state, string kind, string model | - state.isSinkInputState(sink, s, kind, model) and - result = TSinkInputNode(sink, state, kind, model) - ) - } + override SinkElement getSinkElement() { result = sink_ } + } - /** - * Holds if a write targets `post`, which is a post-update node for a - * parameter at position `pos` in `c`. - */ - private predicate isParameterPostUpdate( - SummaryNode post, SummarizedCallable c, ParameterPosition pos - ) { - post = summaryNodeOutputState(c, SummaryComponentStack::argument(pos)) - } + /** + * Holds if `state` represents having read from a parameter at position + * `pos` in `c`. In this case we are not synthesizing a data-flow node, + * but instead assume that a relevant parameter node already exists. + */ + private predicate parameterReadState( + SummarizedCallable c, SummaryNodeState state, ParameterPosition pos + ) { + state.isInputState(c, SummaryComponentStack::argument(pos)) + or + exists(ReturnKind rk | + relevantFlowSummaryPosition(c, rk) and + state.isInputState(c, SummaryComponentStack::return(rk)) and + pos = getFlowSummaryParameterPosition(rk) + ) + } - /** Holds if a parameter node at position `pos` is required for `c`. */ - private predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { - parameterReadState(c, _, pos) - or - // Same as `isParameterPostUpdate(_, c, pos)`, but can be used in a negative context - any(SummaryNodeState state).isOutputState(c, SummaryComponentStack::argument(pos)) - } + /** + * Holds if a synthesized summary node is needed for the state `state` in summarized + * callable `c`. + */ + private predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { + state.isInputState(c, _) and + not parameterReadState(c, state, _) + or + state.isOutputState(c, _) + } - private predicate callbackOutput( - SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ReturnKind rk - ) { - any(SummaryNodeState state).isInputState(c, s) and - s.head() = TReturnSummaryComponent(rk) and - receiver = summaryNodeInputState(c, s.tail()) - } + pragma[noinline] + private SummaryNode summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { + exists(SummaryNodeState state | state.isInputState(c, s) | + result = TSummaryInternalNode(c, state) + or + exists(ParameterPosition pos | + parameterReadState(c, state, pos) and + result = TSummaryParameterNode(c, pos) + ) + ) + } - private predicate callbackInput( - SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ArgumentPosition pos - ) { - any(SummaryNodeState state).isOutputState(c, s) and - s.head() = TParameterSummaryComponent(pos) and - receiver = summaryNodeInputState(c, s.tail()) - } + pragma[noinline] + private SummaryNode summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { + exists(SummaryNodeState state | + state.isOutputState(c, s) and + result = TSummaryInternalNode(c, state) + ) + } - /** Holds if a call targeting `receiver` should be synthesized inside `c`. */ - predicate summaryCallbackRange(SummarizedCallable c, SummaryNode receiver) { - callbackOutput(c, _, receiver, _) - or - callbackInput(c, _, receiver, _) - } + pragma[noinline] + private SummaryNode sourceElementOutputState(SourceElement source, SummaryComponentStack s) { + exists(SummaryNodeState state, string kind, string model | + state.isSourceOutputState(source, s, kind, model) and + result = TSourceOutputNode(source, state, kind, model) + ) + } - /** Holds if summary node `p` is a parameter with position `pos`. */ - predicate summaryParameterNode(SummaryNode p, ParameterPosition pos) { - p = TSummaryParameterNode(_, pos) - } + pragma[noinline] + private SummaryNode sinkElementInputState(SinkElement sink, SummaryComponentStack s) { + exists(SummaryNodeState state, string kind, string model | + state.isSinkInputState(sink, s, kind, model) and + result = TSinkInputNode(sink, state, kind, model) + ) + } - /** Holds if summary node `out` contains output of kind `rk` from a call targeting `receiver`. */ - predicate summaryOutNode(SummaryNode receiver, SummaryNode out, ReturnKind rk) { - exists(SummarizedCallable callable, SummaryComponentStack s | - callbackOutput(callable, s, receiver, rk) and - out = summaryNodeInputState(callable, s) - ) - } + /** + * Holds if a write targets `post`, which is a post-update node for a + * parameter at position `pos` in `c`. + */ + private predicate isParameterPostUpdate( + SummaryNode post, SummarizedCallable c, ParameterPosition pos + ) { + post = summaryNodeOutputState(c, SummaryComponentStack::argument(pos)) + } - /** Holds if summary node `arg` is at position `pos` in a call targeting `receiver`. */ - predicate summaryArgumentNode(SummaryNode receiver, SummaryNode arg, ArgumentPosition pos) { - exists(SummarizedCallable callable, SummaryComponentStack s | - callbackInput(callable, s, receiver, pos) and - arg = summaryNodeOutputState(callable, s) - ) - } + /** Holds if a parameter node at position `pos` is required for `c`. */ + private predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { + parameterReadState(c, _, pos) + or + // Same as `isParameterPostUpdate(_, c, pos)`, but can be used in a negative context + any(SummaryNodeState state).isOutputState(c, SummaryComponentStack::argument(pos)) + } - /** Holds if summary node `post` is a post-update node with pre-update node `pre`. */ - predicate summaryPostUpdateNode(SummaryNode post, SummaryNode pre) { - exists(SummarizedCallable c, ParameterPosition pos | - isParameterPostUpdate(post, c, pos) and - pre = TSummaryParameterNode(c, pos) - ) - or - exists(SummarizedCallable callable, SummaryComponentStack s | - callbackInput(callable, s, _, _) and - pre = summaryNodeOutputState(callable, s) and - post = summaryNodeInputState(callable, s) - ) - } + private predicate callbackOutput( + SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ReturnKind rk + ) { + any(SummaryNodeState state).isInputState(c, s) and + s.head() = TReturnSummaryComponent(rk) and + receiver = summaryNodeInputState(c, s.tail()) + } - /** Holds if summary node `ret` is a return node of kind `rk`. */ - predicate summaryReturnNode(SummaryNode ret, ReturnKind rk) { - exists(SummaryComponentStack s | - ret = summaryNodeOutputState(_, s) and - s = TSingletonSummaryComponentStack(TReturnSummaryComponent(rk)) - ) - } + private predicate callbackInput( + SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ArgumentPosition pos + ) { + any(SummaryNodeState state).isOutputState(c, s) and + s.head() = TParameterSummaryComponent(pos) and + receiver = summaryNodeInputState(c, s.tail()) + } - /** Holds if return kind `rk` is a relevant return kind for flow summary modeling. */ - predicate relevantFlowSummaryPosition(ReturnKind rk) { relevantFlowSummaryPosition(_, rk) } + /** Holds if a call targeting `receiver` should be synthesized inside `c`. */ + predicate summaryCallbackRange(SummarizedCallable c, SummaryNode receiver) { + callbackOutput(c, _, receiver, _) + or + callbackInput(c, _, receiver, _) + } - /** - * Holds if flow is allowed to pass from the parameter at position `pos` of `c`, - * to a return node, and back out to the parameter. - */ - predicate summaryAllowParameterReturnInSelf(SummarizedCallable c, ParameterPosition ppos) { - exists(SummaryComponentStack inputContents, SummaryComponentStack outputContents | - summary(c, inputContents, outputContents, _, _) and - inputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) and - outputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) - ) - } + /** Holds if summary node `p` is a parameter with position `pos`. */ + predicate summaryParameterNode(SummaryNode p, ParameterPosition pos) { + p = TSummaryParameterNode(_, pos) + } - /** - * Holds if `barrier` is a relevant barrier element with output specification `outSpec`. - */ - predicate barrierSpec( - BarrierElement barrier, SummaryComponentStack outSpec, string kind, string model - ) { - exists(string output | - isRelevantBarrier(barrier, output, kind, _, model) and - External::interpretSpec(output, outSpec) - ) - } + /** Holds if summary node `out` contains output of kind `rk` from a call targeting `receiver`. */ + predicate summaryOutNode(SummaryNode receiver, SummaryNode out, ReturnKind rk) { + exists(SummarizedCallable callable, SummaryComponentStack s | + callbackOutput(callable, s, receiver, rk) and + out = summaryNodeInputState(callable, s) + ) + } - /** - * Holds if `barrierGuard` is a relevant barrier guard element with input specification `inSpec`. - */ - predicate barrierGuardSpec( - BarrierGuardElement barrierGuard, SummaryComponentStack inSpec, string acceptingValue, - string kind, string model - ) { - exists(string input | - isRelevantBarrierGuard(barrierGuard, input, acceptingValue, kind, _, model) and - External::interpretSpec(input, inSpec) - ) - } + /** Holds if summary node `arg` is at position `pos` in a call targeting `receiver`. */ + predicate summaryArgumentNode(SummaryNode receiver, SummaryNode arg, ArgumentPosition pos) { + exists(SummarizedCallable callable, SummaryComponentStack s | + callbackInput(callable, s, receiver, pos) and + arg = summaryNodeOutputState(callable, s) + ) + } - signature module TypesInputSig { - /** Gets the type of content `c`. */ - DataFlowType getContentType(ContentSet c); + /** Holds if summary node `post` is a post-update node with pre-update node `pre`. */ + predicate summaryPostUpdateNode(SummaryNode post, SummaryNode pre) { + exists(SummarizedCallable c, ParameterPosition pos | + isParameterPostUpdate(post, c, pos) and + pre = TSummaryParameterNode(c, pos) + ) + or + exists(SummarizedCallable callable, SummaryComponentStack s | + callbackInput(callable, s, _, _) and + pre = summaryNodeOutputState(callable, s) and + post = summaryNodeInputState(callable, s) + ) + } - /** Gets the type of the parameter at the given position. */ - bindingset[c, pos] - DataFlowType getParameterType(SummarizedCallable c, ParameterPosition pos); + /** Holds if summary node `ret` is a return node of kind `rk`. */ + predicate summaryReturnNode(SummaryNode ret, ReturnKind rk) { + exists(SummaryComponentStack s | + ret = summaryNodeOutputState(_, s) and + s = TSingletonSummaryComponentStack(TReturnSummaryComponent(rk)) + ) + } + + /** Holds if return kind `rk` is a relevant return kind for flow summary modeling. */ + predicate relevantFlowSummaryPosition(ReturnKind rk) { relevantFlowSummaryPosition(_, rk) } - /** Gets the return type of kind `rk` for callable `c`. */ - bindingset[c, rk] - DataFlowType getReturnType(SummarizedCallable c, ReturnKind rk); + /** + * Holds if flow is allowed to pass from the parameter at position `pos` of `c`, + * to a return node, and back out to the parameter. + */ + predicate summaryAllowParameterReturnInSelf(SummarizedCallable c, ParameterPosition ppos) { + exists(SummaryComponentStack inputContents, SummaryComponentStack outputContents | + summary(c, inputContents, outputContents, _, _) and + inputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) and + outputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) + ) + } /** - * Gets the type of the `i`th parameter in a synthesized call that targets a - * callback of type `t`. + * Holds if `barrier` is a relevant barrier element with output specification `outSpec`. */ - bindingset[t, pos] - DataFlowType getCallbackParameterType(DataFlowType t, ArgumentPosition pos); + predicate barrierSpec( + BarrierElement barrier, SummaryComponentStack outSpec, string kind, string model + ) { + exists(string output | + isRelevantBarrier(barrier, output, kind, _, model) and + External::interpretSpec(output, outSpec) + ) + } /** - * Gets the return type of kind `rk` in a synthesized call that targets a - * callback of type `t`. + * Holds if `barrierGuard` is a relevant barrier guard element with input specification `inSpec`. */ - bindingset[t, rk] - DataFlowType getCallbackReturnType(DataFlowType t, ReturnKind rk); + predicate barrierGuardSpec( + BarrierGuardElement barrierGuard, SummaryComponentStack inSpec, string acceptingValue, + string kind, string model + ) { + exists(string input | + isRelevantBarrierGuard(barrierGuard, input, acceptingValue, kind, _, model) and + External::interpretSpec(input, inSpec) + ) + } - DataFlowType getSyntheticGlobalType(SyntheticGlobal sg); + signature module TypesInputSig { + /** Gets the type of content `c`. */ + DataFlowType getContentType(ContentSet c); - DataFlowType getSourceType(SourceBase source, SummaryComponentStack sc); + /** Gets the type of the parameter at the given position. */ + bindingset[c, pos] + DataFlowType getParameterType(SummarizedCallable c, ParameterPosition pos); - DataFlowType getSinkType(SinkBase sink, SummaryComponent sc); - } + /** Gets the return type of kind `rk` for callable `c`. */ + bindingset[c, rk] + DataFlowType getReturnType(SummarizedCallable c, ReturnKind rk); - /** - * Provides the predicate `summaryNodeType` for associating types with summary nodes. - * - * Only relevant for typed languages. - */ - module Types { - private import TypesInput + /** + * Gets the type of the `i`th parameter in a synthesized call that targets a + * callback of type `t`. + */ + bindingset[t, pos] + DataFlowType getCallbackParameterType(DataFlowType t, ArgumentPosition pos); + + /** + * Gets the return type of kind `rk` in a synthesized call that targets a + * callback of type `t`. + */ + bindingset[t, rk] + DataFlowType getCallbackReturnType(DataFlowType t, ReturnKind rk); + + DataFlowType getSyntheticGlobalType(SyntheticGlobal sg); + + DataFlowType getSourceType(SourceBase source, SummaryComponentStack sc); + + DataFlowType getSinkType(SinkBase sink, SummaryComponent sc); + } /** - * Gets the type of synthesized summary node `n`. + * Provides the predicate `summaryNodeType` for associating types with summary nodes. * - * The type is computed based on the language-specific predicates - * `getContentType()`, `getReturnType()`, `getCallbackParameterType()`, and - * `getCallbackReturnType()`. + * Only relevant for typed languages. */ - DataFlowType summaryNodeType(SummaryNode n) { - exists(SummaryNode pre | - summaryPostUpdateNode(n, pre) and - result = summaryNodeType(pre) - ) - or - exists(SummarizedCallable c, SummaryComponentStack s, SummaryComponent head | - head = s.head() - | - n = summaryNodeInputState(c, s) and - ( - exists(ContentSet cont | result = getContentType(cont) | - head = TContentSummaryComponent(cont) or - head = TWithContentSummaryComponent(cont) + module Types { + private import TypesInput + + /** + * Gets the type of synthesized summary node `n`. + * + * The type is computed based on the language-specific predicates + * `getContentType()`, `getReturnType()`, `getCallbackParameterType()`, and + * `getCallbackReturnType()`. + */ + DataFlowType summaryNodeType(SummaryNode n) { + exists(SummaryNode pre | + summaryPostUpdateNode(n, pre) and + result = summaryNodeType(pre) + ) + or + exists(SummarizedCallable c, SummaryComponentStack s, SummaryComponent head | + head = s.head() + | + n = summaryNodeInputState(c, s) and + ( + exists(ContentSet cont | result = getContentType(cont) | + head = TContentSummaryComponent(cont) or + head = TWithContentSummaryComponent(cont) + ) + or + head = TWithoutContentSummaryComponent(_) and + result = summaryNodeType(summaryNodeInputState(c, s.tail())) + or + exists(ReturnKind rk | + head = TReturnSummaryComponent(rk) and + result = + getCallbackReturnType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), + s.tail())), rk) + ) + or + exists(SyntheticGlobal sg | + head = TSyntheticGlobalSummaryComponent(sg) and + result = getSyntheticGlobalType(sg) + ) + or + exists(ParameterPosition pos | + head = TArgumentSummaryComponent(pos) and + result = getParameterType(c, pos) + ) ) or - head = TWithoutContentSummaryComponent(_) and - result = summaryNodeType(summaryNodeInputState(c, s.tail())) - or - exists(ReturnKind rk | - head = TReturnSummaryComponent(rk) and - result = - getCallbackReturnType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), - s.tail())), rk) + n = summaryNodeOutputState(c, s) and + ( + exists(ContentSet cont | + head = TContentSummaryComponent(cont) and result = getContentType(cont) + ) + or + s.length() = 1 and + exists(ReturnKind rk | + head = TReturnSummaryComponent(rk) and + result = getReturnType(c, rk) + ) + or + exists(ArgumentPosition pos | head = TParameterSummaryComponent(pos) | + result = + getCallbackParameterType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), + s.tail())), pos) + ) + or + exists(SyntheticGlobal sg | + head = TSyntheticGlobalSummaryComponent(sg) and + result = getSyntheticGlobalType(sg) + ) + ) + ) + or + exists(SourceElement source | + exists(SummaryComponentStack s | + n.(SourceOutputNode).isExit(source, s, _) and + result = getSourceType(source, s) ) or - exists(SyntheticGlobal sg | - head = TSyntheticGlobalSummaryComponent(sg) and - result = getSyntheticGlobalType(sg) + exists(SummaryComponentStack s, ContentSet cont | + n = sourceElementOutputState(source, s) and + s.head() = TContentSummaryComponent(cont) and + result = getContentType(cont) + ) + ) + or + exists(SinkElement sink | + exists(SummaryComponent sc | + n.(SinkInputNode).isEntry(sink, sc, _) and + result = getSinkType(sink, sc) ) or - exists(ParameterPosition pos | - head = TArgumentSummaryComponent(pos) and - result = getParameterType(c, pos) + exists(SummaryComponentStack s, ContentSet cont | + n = sinkElementInputState(sink, s) and + s.head() = TContentSummaryComponent(cont) and + result = getContentType(cont) ) ) + } + } + + signature module StepsInputSig { + /** Gets the summary node represented by data-flow node `n`, if any. */ + SummaryNode getSummaryNode(Node n); + + /** Gets a call that targets summarized callable `sc`. */ + DataFlowCall getACall(SummarizedCallable sc); + + /** Gets the out node of kind `rk` for `call`, if any. */ + default Node getSourceOutNode(FlowSummaryCallBase call, ReturnKind rk) { none() } + + /** Gets the enclosing callable of `source`. */ + DataFlowCallable getSourceNodeEnclosingCallable(SourceBase source); + } + + /** Provides a compilation of flow summaries to atomic data-flow steps. */ + module Steps { + /** + * Holds if there is a local step from `pred` to `succ`, which is synthesized + * from a flow summary. + */ + private predicate summaryLocalStepImpl( + SummaryNode pred, SummaryNode succ, boolean preservesValue, string model + ) { + exists( + SummarizedCallable c, SummaryComponentStack inputContents, + SummaryComponentStack outputContents + | + summary(c, inputContents, outputContents, preservesValue, model) and + pred = summaryNodeInputState(pragma[only_bind_into](c), inputContents) and + succ = summaryNodeOutputState(pragma[only_bind_into](c), outputContents) + | + preservesValue = true + or + preservesValue = false and not summary(c, inputContents, outputContents, true, _) + ) + or + exists(SummarizedCallable c, SummaryComponentStack s | + pred = summaryNodeInputState(c, s.tail()) and + succ = summaryNodeInputState(c, s) and + s.head() = [SummaryComponent::withContent(_), SummaryComponent::withoutContent(_)] and + preservesValue = true and + model = "" + ) + } + + predicate sourceStep(SourceOutputNode nodeFrom, Node nodeTo, string model, boolean local) { + exists(SummaryComponentStack sc, SourceElement source | + nodeFrom.isExit(source, sc, model) and + nodeTo = Input2::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 = Input2::getSinkNode(sink, sc) and + nodeTo.isEntry(sink, sc, model) + ) + } + + /** Holds if there is a local step between data-flow nodes synthesized from a flow summary. */ + predicate summaryLocalStep(Node pred, SummaryNode succ, boolean preservesValue, string model) { + exists(SummaryNode predSummary | + predSummary = StepsInput::getSummaryNode(pred) and + summaryLocalStepImpl(predSummary, succ, preservesValue, model) + ) or - n = summaryNodeOutputState(c, s) and - ( - exists(ContentSet cont | - head = TContentSummaryComponent(cont) and result = getContentType(cont) - ) - or - s.length() = 1 and - exists(ReturnKind rk | - head = TReturnSummaryComponent(rk) and - result = getReturnType(c, rk) - ) - or - exists(ArgumentPosition pos | head = TParameterSummaryComponent(pos) | - result = - getCallbackParameterType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), - s.tail())), pos) - ) - or - exists(SyntheticGlobal sg | - head = TSyntheticGlobalSummaryComponent(sg) and - result = getSyntheticGlobalType(sg) - ) + exists(FlowSummaryCallBase summaryCall, ReturnKind rk, SummarizedCallable sc | + pred = StepsInput::getSourceOutNode(summaryCall, rk) and + summaryCall = getASourceCall(sc) and + summary(sc, SummaryComponentStack::return(rk), _, preservesValue, model) and + succ = TSummaryReturnArgumentNode(summaryCall, rk) ) - ) - or - exists(SourceElement source | - exists(SummaryComponentStack s | - n.(SourceOutputNode).isExit(source, s, _) and - result = getSourceType(source, s) + } + + /** Holds if the value of `succ` is uniquely determined by the value of `pred`. */ + predicate summaryLocalMustFlowStep(SummaryNode pred, SummaryNode succ) { + pred = unique(SummaryNode n1 | summaryLocalStepImpl(n1, succ, true, _)) + } + + /** + * Holds if there is a read step of content `c` from `pred` to `succ`, which + * is synthesized from a flow summary. + */ + predicate summaryReadStep(SummaryNode pred, ContentSet c, SummaryNode succ) { + exists(SummarizedCallable sc, SummaryComponentStack s | + pred = summaryNodeInputState(sc, s.tail()) and + succ = summaryNodeInputState(sc, s) and + SummaryComponent::content(c) = s.head() ) or - exists(SummaryComponentStack s, ContentSet cont | - n = sourceElementOutputState(source, s) and - s.head() = TContentSummaryComponent(cont) and - result = getContentType(cont) + exists(SinkElement sink, SummaryComponentStack s | + pred = sinkElementInputState(sink, s.tail()) and + succ = sinkElementInputState(sink, s) and + SummaryComponent::content(c) = s.head() ) - ) - or - exists(SinkElement sink | - exists(SummaryComponent sc | - n.(SinkInputNode).isEntry(sink, sc, _) and - result = getSinkType(sink, sc) + } + + /** + * Holds if there is a store step of content `c` from `pred` to `succ`, which + * is synthesized from a flow summary. + */ + predicate summaryStoreStep(SummaryNode pred, ContentSet c, SummaryNode succ) { + exists(SummarizedCallable sc, SummaryComponentStack s | + pred = summaryNodeOutputState(sc, s) and + succ = summaryNodeOutputState(sc, s.tail()) and + SummaryComponent::content(c) = s.head() ) or - exists(SummaryComponentStack s, ContentSet cont | - n = sinkElementInputState(sink, s) and - s.head() = TContentSummaryComponent(cont) and - result = getContentType(cont) + exists(SourceElement source, SummaryComponentStack s | + pred = sourceElementOutputState(source, s) and + succ = sourceElementOutputState(source, s.tail()) and + SummaryComponent::content(c) = s.head() ) - ) - } - } + } - signature module StepsInputSig { - /** Gets the summary node represented by data-flow node `n`, if any. */ - SummaryNode getSummaryNode(Node n); + /** + * Holds if there is a jump step from `pred` to `succ`, which is synthesized + * from a flow summary. + */ + predicate summaryJumpStep(SummaryNode pred, SummaryNode succ) { + exists(SummaryComponentStack s | + s = SummaryComponentStack::singleton(SummaryComponent::syntheticGlobal(_)) and + pred = summaryNodeOutputState(_, s) and + succ = summaryNodeInputState(_, s) + ) + } - /** Gets a call that targets summarized callable `sc`. */ - DataFlowCall getACall(SummarizedCallable sc); + predicate sourceJumpStep(SourceOutputNode nodeFrom, Node nodeTo) { + sourceStep(nodeFrom, nodeTo, _, false) + } - /** Gets the out node of kind `rk` for `call`, if any. */ - default Node getSourceOutNode(FlowSummaryCallBase call, ReturnKind rk) { none() } + /** + * 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 + * to the relevant method, it is important that flow does not pass over + * the argument, either via use-use flow or def-use flow. + * + * Example: + * + * ``` + * a.b = taint; + * a.clearB(); // assume we have a flow summary for `clearB` that clears `b` on the qualifier + * sink(a.b); + * ``` + * + * In the above, flow should not pass from `a` on the first line (or the second + * line) to `a` on the third line. Instead, there will be synthesized flow from + * `a` on line 2 to the post-update node for `a` on that line (via an intermediate + * node where field `b` is cleared). + */ + predicate summaryClearsContent(SummaryNode n, ContentSet c) { + exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | + n = TSummaryInternalNode(sc, state) and + state.isInputState(sc, stack) and + stack.head() = SummaryComponent::withoutContent(c) + ) + } - /** Gets the enclosing callable of `source`. */ - DataFlowCallable getSourceNodeEnclosingCallable(SourceBase source); + /** + * Holds if the value that is being tracked is expected to be stored inside + * content `c` at `n`. + */ + predicate summaryExpectsContent(SummaryNode n, ContentSet c) { + exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | + n = TSummaryInternalNode(sc, state) and + state.isInputState(sc, stack) and + stack.head() = SummaryComponent::withContent(c) + ) + } - /** - * Gets a data flow node corresponding to the `s` part of `source`. - * - * `s` is typically `ReturnValue` and the result is the node that - * represents the return value of `source`. - */ - Node getSourceNode(SourceBase source, SummaryComponentStack s); + pragma[noinline] + private predicate viableParam( + DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, SummaryParamNode p + ) { + p = TSummaryParameterNode(sc, ppos) and + call = StepsInput::getACall(sc) + } - /** - * Gets a data flow node corresponding to the `sc` part of `sink`. - * - * `sc` is typically `Argument[i]` and the result is the node that - * represents the `i`th argument of `sink`. - */ - Node getSinkNode(SinkBase sink, SummaryComponent sc); - } + pragma[nomagic] + private SummaryParamNode summaryArgParam( + DataFlowCall call, ArgNode arg, SummarizedCallable sc + ) { + exists(ParameterPosition ppos | + argumentPositionMatch(call, arg, ppos) and + viableParam(call, sc, ppos, result) + ) + } - /** Provides a compilation of flow summaries to atomic data-flow steps. */ - module Steps { - /** - * Holds if there is a local step from `pred` to `succ`, which is synthesized - * from a flow summary. - */ - private predicate summaryLocalStepImpl( - SummaryNode pred, SummaryNode succ, boolean preservesValue, string model - ) { - exists( - SummarizedCallable c, SummaryComponentStack inputContents, - SummaryComponentStack outputContents - | - summary(c, inputContents, outputContents, preservesValue, model) and - pred = summaryNodeInputState(pragma[only_bind_into](c), inputContents) and - succ = summaryNodeOutputState(pragma[only_bind_into](c), outputContents) - | - preservesValue = true + /** + * Holds if `p` can reach `n` in a summarized callable, using only value-preserving + * local steps. `clearsOrExpects` records whether any node on the path from `p` to + * `n` either clears or expects contents. + */ + private predicate paramReachesLocal( + SummaryParamNode p, SummaryNode n, boolean clearsOrExpects + ) { + viableParam(_, _, _, p) and + n = p and + clearsOrExpects = false or - preservesValue = false and not summary(c, inputContents, outputContents, true, _) - ) - or - exists(SummarizedCallable c, SummaryComponentStack s | - pred = summaryNodeInputState(c, s.tail()) and - succ = summaryNodeInputState(c, s) and - s.head() = [SummaryComponent::withContent(_), SummaryComponent::withoutContent(_)] and - preservesValue = true and - model = "" - ) - } - - 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) 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) - } + exists(SummaryNode mid, boolean clearsOrExpectsMid | + paramReachesLocal(p, mid, clearsOrExpectsMid) and + summaryLocalStepImpl(mid, n, true, _) and + if + summaryClearsContent(n, _) or + summaryExpectsContent(n, _) + then clearsOrExpects = true + else clearsOrExpects = clearsOrExpectsMid + ) + } - predicate sinkLocalStep(Node nodeFrom, SinkInputNode nodeTo, string model) { - exists(SummaryComponent sc, SinkElement sink | - nodeFrom = StepsInput::getSinkNode(sink, sc) and - nodeTo.isEntry(sink, sc, model) - ) - } + /** + * Holds if use-use flow starting from `arg` should be prohibited. + * + * This is the case when `arg` is the argument of a call that targets a + * flow summary where the corresponding parameter either clears contents + * or expects contents. + */ + pragma[nomagic] + predicate prohibitsUseUseFlow(ArgNode arg, SummarizedCallable sc) { + exists(SummaryParamNode p, ParameterPosition ppos, SummaryNode ret | + paramReachesLocal(p, ret, true) and + p = summaryArgParam(_, arg, sc) and + p = TSummaryParameterNode(_, pragma[only_bind_into](ppos)) and + isParameterPostUpdate(ret, _, pragma[only_bind_into](ppos)) + ) + } - /** Holds if there is a local step between data-flow nodes synthesized from a flow summary. */ - predicate summaryLocalStep(Node pred, SummaryNode succ, boolean preservesValue, string model) { - exists(SummaryNode predSummary | - predSummary = StepsInput::getSummaryNode(pred) and - summaryLocalStepImpl(predSummary, succ, preservesValue, model) - ) - or - exists(FlowSummaryCallBase summaryCall, ReturnKind rk, SummarizedCallable sc | - pred = StepsInput::getSourceOutNode(summaryCall, rk) and - summaryCall = getASourceCall(sc) and - summary(sc, SummaryComponentStack::return(rk), _, preservesValue, model) and - succ = TSummaryReturnArgumentNode(summaryCall, rk) - ) - } + pragma[nomagic] + private predicate summaryReturnNodeExt(SummaryNode ret, ReturnKindExt rk) { + summaryReturnNode(ret, rk.(ValueReturnKind).getKind()) + or + exists(SummaryParamNode p, SummaryNode pre, ParameterPosition pos | + paramReachesLocal(p, pre, _) and + summaryPostUpdateNode(ret, pre) and + p = TSummaryParameterNode(_, pos) and + rk.(ParamUpdateReturnKind).getPosition() = pos + ) + } - /** Holds if the value of `succ` is uniquely determined by the value of `pred`. */ - predicate summaryLocalMustFlowStep(SummaryNode pred, SummaryNode succ) { - pred = unique(SummaryNode n1 | summaryLocalStepImpl(n1, succ, true, _)) - } + bindingset[ret] + private SummaryParamNode summaryArgParamRetOut( + ArgNode arg, SummaryNode ret, OutNodeExt out, SummarizedCallable sc + ) { + exists(DataFlowCall call, ReturnKindExt rk | + result = summaryArgParam(call, arg, sc) and + summaryReturnNodeExt(ret, pragma[only_bind_into](rk)) and + out = getAnOutNodeExt(call, pragma[only_bind_into](rk)) + ) + } - /** - * Holds if there is a read step of content `c` from `pred` to `succ`, which - * is synthesized from a flow summary. - */ - predicate summaryReadStep(SummaryNode pred, ContentSet c, SummaryNode succ) { - exists(SummarizedCallable sc, SummaryComponentStack s | - pred = summaryNodeInputState(sc, s.tail()) and - succ = summaryNodeInputState(sc, s) and - SummaryComponent::content(c) = s.head() - ) - or - exists(SinkElement sink, SummaryComponentStack s | - pred = sinkElementInputState(sink, s.tail()) and - succ = sinkElementInputState(sink, s) and - SummaryComponent::content(c) = s.head() - ) - } + /** + * Holds if `arg` flows to `out` using a simple value-preserving flow + * summary, that is, a flow summary without reads and stores. + * + * NOTE: This step should not be used in global data-flow/taint-tracking, but may + * be useful to include in the exposed local data-flow/taint-tracking relations. + */ + predicate summaryThroughStepValue(ArgNode arg, Node out, SummarizedCallable sc) { + exists(SummaryNode ret | + summaryLocalStepImpl(summaryArgParamRetOut(arg, ret, out, sc), ret, true, _) + ) + } - /** - * Holds if there is a store step of content `c` from `pred` to `succ`, which - * is synthesized from a flow summary. - */ - predicate summaryStoreStep(SummaryNode pred, ContentSet c, SummaryNode succ) { - exists(SummarizedCallable sc, SummaryComponentStack s | - pred = summaryNodeOutputState(sc, s) and - succ = summaryNodeOutputState(sc, s.tail()) and - SummaryComponent::content(c) = s.head() - ) - or - exists(SourceElement source, SummaryComponentStack s | - pred = sourceElementOutputState(source, s) and - succ = sourceElementOutputState(source, s.tail()) and - SummaryComponent::content(c) = s.head() - ) - } + /** + * Holds if `arg` flows to `out` using a simple flow summary involving taint + * step, that is, a flow summary without reads and stores. + * + * NOTE: This step should not be used in global data-flow/taint-tracking, but may + * be useful to include in the exposed local data-flow/taint-tracking relations. + */ + predicate summaryThroughStepTaint(ArgNode arg, Node out, SummarizedCallable sc) { + exists(SummaryNode ret | + summaryLocalStepImpl(summaryArgParamRetOut(arg, ret, out, sc), ret, false, _) + ) + } - /** - * Holds if there is a jump step from `pred` to `succ`, which is synthesized - * from a flow summary. - */ - predicate summaryJumpStep(SummaryNode pred, SummaryNode succ) { - exists(SummaryComponentStack s | - s = SummaryComponentStack::singleton(SummaryComponent::syntheticGlobal(_)) and - pred = summaryNodeOutputState(_, s) and - succ = summaryNodeInputState(_, s) - ) - } + /** + * Holds if there is a read(+taint) of `c` from `arg` to `out` using a + * flow summary. + * + * NOTE: This step should not be used in global data-flow/taint-tracking, but may + * be useful to include in the exposed local data-flow/taint-tracking relations. + */ + predicate summaryGetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { + exists(SummaryNode mid, SummaryNode ret | + summaryReadStep(summaryArgParamRetOut(arg, ret, out, sc), c, mid) and + summaryLocalStepImpl(mid, ret, _, _) + ) + } - predicate sourceJumpStep(SourceOutputNode nodeFrom, Node nodeTo) { - sourceStep(nodeFrom, nodeTo, _, false) + /** + * Holds if there is a (taint+)store of `arg` into content `c` of `out` using a + * flow summary. + * + * NOTE: This step should not be used in global data-flow/taint-tracking, but may + * be useful to include in the exposed local data-flow/taint-tracking relations. + */ + predicate summarySetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { + exists(SummaryNode mid, SummaryNode ret | + summaryLocalStepImpl(summaryArgParamRetOut(arg, ret, out, sc), mid, _, _) and + summaryStoreStep(mid, c, ret) + ) + } } /** - * 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 - * to the relevant method, it is important that flow does not pass over - * the argument, either via use-use flow or def-use flow. + * Provides query predicates for rendering the generated data flow graph for + * a summarized callable. * - * Example: - * - * ``` - * a.b = taint; - * a.clearB(); // assume we have a flow summary for `clearB` that clears `b` on the qualifier - * sink(a.b); - * ``` - * - * In the above, flow should not pass from `a` on the first line (or the second - * line) to `a` on the third line. Instead, there will be synthesized flow from - * `a` on line 2 to the post-update node for `a` on that line (via an intermediate - * node where field `b` is cleared). - */ - predicate summaryClearsContent(SummaryNode n, ContentSet c) { - exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | - n = TSummaryInternalNode(sc, state) and - state.isInputState(sc, stack) and - stack.head() = SummaryComponent::withoutContent(c) - ) - } - - /** - * Holds if the value that is being tracked is expected to be stored inside - * content `c` at `n`. + * Import this module into a `.ql` file of `@kind graph` to render the graph. + * The graph is restricted to callables from `RelevantSummarizedCallable`. */ - predicate summaryExpectsContent(SummaryNode n, ContentSet c) { - exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | - n = TSummaryInternalNode(sc, state) and - state.isInputState(sc, stack) and - stack.head() = SummaryComponent::withContent(c) - ) - } + module RenderSummarizedCallable { + private module PrivateSteps = Steps; - pragma[noinline] - private predicate viableParam( - DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, SummaryParamNode p - ) { - p = TSummaryParameterNode(sc, ppos) and - call = StepsInput::getACall(sc) - } + /** A summarized callable to include in the graph. */ + abstract class RelevantSummarizedCallable instanceof SummarizedCallable { + string toString() { result = super.toString() } + } - pragma[nomagic] - private SummaryParamNode summaryArgParam(DataFlowCall call, ArgNode arg, SummarizedCallable sc) { - exists(ParameterPosition ppos | - argumentPositionMatch(call, arg, ppos) and - viableParam(call, sc, ppos, result) - ) - } + private newtype TNodeOrCall = + MkNode(SummaryNode n) { + exists(RelevantSummarizedCallable c | + n = TSummaryInternalNode(c, _) + or + n = TSummaryParameterNode(c, _) + ) + } or + MkCall(SummaryNode receiver) { + receiver.getSummarizedCallable() instanceof RelevantSummarizedCallable and + ( + callbackInput(_, _, receiver, _) or + callbackOutput(_, _, receiver, _) + ) + } - /** - * Holds if `p` can reach `n` in a summarized callable, using only value-preserving - * local steps. `clearsOrExpects` records whether any node on the path from `p` to - * `n` either clears or expects contents. - */ - private predicate paramReachesLocal(SummaryParamNode p, SummaryNode n, boolean clearsOrExpects) { - viableParam(_, _, _, p) and - n = p and - clearsOrExpects = false - or - exists(SummaryNode mid, boolean clearsOrExpectsMid | - paramReachesLocal(p, mid, clearsOrExpectsMid) and - summaryLocalStepImpl(mid, n, true, _) and - if - summaryClearsContent(n, _) or - summaryExpectsContent(n, _) - then clearsOrExpects = true - else clearsOrExpects = clearsOrExpectsMid - ) - } + private class NodeOrCall extends TNodeOrCall { + SummaryNode asNode() { this = MkNode(result) } - /** - * Holds if use-use flow starting from `arg` should be prohibited. - * - * This is the case when `arg` is the argument of a call that targets a - * flow summary where the corresponding parameter either clears contents - * or expects contents. - */ - pragma[nomagic] - predicate prohibitsUseUseFlow(ArgNode arg, SummarizedCallable sc) { - exists(SummaryParamNode p, ParameterPosition ppos, SummaryNode ret | - paramReachesLocal(p, ret, true) and - p = summaryArgParam(_, arg, sc) and - p = TSummaryParameterNode(_, pragma[only_bind_into](ppos)) and - isParameterPostUpdate(ret, _, pragma[only_bind_into](ppos)) - ) - } + SummaryNode asCallReceiver() { this = MkCall(result) } - pragma[nomagic] - private predicate summaryReturnNodeExt(SummaryNode ret, ReturnKindExt rk) { - summaryReturnNode(ret, rk.(ValueReturnKind).getKind()) - or - exists(SummaryParamNode p, SummaryNode pre, ParameterPosition pos | - paramReachesLocal(p, pre, _) and - summaryPostUpdateNode(ret, pre) and - p = TSummaryParameterNode(_, pos) and - rk.(ParamUpdateReturnKind).getPosition() = pos - ) - } + string toString() { + result = this.asNode().toString() + or + result = this.asCallReceiver().toString() + } - bindingset[ret] - private SummaryParamNode summaryArgParamRetOut( - ArgNode arg, SummaryNode ret, OutNodeExt out, SummarizedCallable sc - ) { - exists(DataFlowCall call, ReturnKindExt rk | - result = summaryArgParam(call, arg, sc) and - summaryReturnNodeExt(ret, pragma[only_bind_into](rk)) and - out = getAnOutNodeExt(call, pragma[only_bind_into](rk)) - ) - } + /** + * 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 + * [Locations](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 + ) { + filepath = "" and + startline = 0 and + startcolumn = 0 and + endline = 0 and + endcolumn = 0 + } + } - /** - * Holds if `arg` flows to `out` using a simple value-preserving flow - * summary, that is, a flow summary without reads and stores. - * - * NOTE: This step should not be used in global data-flow/taint-tracking, but may - * be useful to include in the exposed local data-flow/taint-tracking relations. - */ - predicate summaryThroughStepValue(ArgNode arg, Node out, SummarizedCallable sc) { - exists(SummaryNode ret | - summaryLocalStepImpl(summaryArgParamRetOut(arg, ret, out, sc), ret, true, _) - ) - } + query predicate nodes(NodeOrCall n, string key, string val) { + key = "semmle.label" and val = n.toString() + } - /** - * Holds if `arg` flows to `out` using a simple flow summary involving taint - * step, that is, a flow summary without reads and stores. - * - * NOTE: This step should not be used in global data-flow/taint-tracking, but may - * be useful to include in the exposed local data-flow/taint-tracking relations. - */ - predicate summaryThroughStepTaint(ArgNode arg, Node out, SummarizedCallable sc) { - exists(SummaryNode ret | - summaryLocalStepImpl(summaryArgParamRetOut(arg, ret, out, sc), ret, false, _) - ) - } + private Node getNode(SummaryNode sn) { sn = StepsInput::getSummaryNode(result) } - /** - * Holds if there is a read(+taint) of `c` from `arg` to `out` using a - * flow summary. - * - * NOTE: This step should not be used in global data-flow/taint-tracking, but may - * be useful to include in the exposed local data-flow/taint-tracking relations. - */ - predicate summaryGetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { - exists(SummaryNode mid, SummaryNode ret | - summaryReadStep(summaryArgParamRetOut(arg, ret, out, sc), c, mid) and - summaryLocalStepImpl(mid, ret, _, _) - ) - } + private predicate edgesComponent(NodeOrCall a, NodeOrCall b, string value) { + exists(boolean preservesValue | + PrivateSteps::summaryLocalStep(getNode(a.asNode()), b.asNode(), preservesValue, _) and + if preservesValue = true then value = "value" else value = "taint" + ) + or + exists(ContentSet c | + PrivateSteps::summaryReadStep(a.asNode(), c, b.asNode()) and + value = "read (" + c + ")" + or + PrivateSteps::summaryStoreStep(a.asNode(), c, b.asNode()) and + value = "store (" + c + ")" + or + PrivateSteps::summaryClearsContent(a.asNode(), c) and + b = a and + value = "clear (" + c + ")" + or + PrivateSteps::summaryExpectsContent(a.asNode(), c) and + b = a and + value = "expect (" + c + ")" + ) + or + summaryPostUpdateNode(b.asNode(), a.asNode()) and + value = "post-update" + or + b.asCallReceiver() = a.asNode() and + value = "receiver" + or + exists(ArgumentPosition pos | + summaryArgumentNode(b.asCallReceiver(), a.asNode(), pos) and + value = "argument (" + pos + ")" + ) + } - /** - * Holds if there is a (taint+)store of `arg` into content `c` of `out` using a - * flow summary. - * - * NOTE: This step should not be used in global data-flow/taint-tracking, but may - * be useful to include in the exposed local data-flow/taint-tracking relations. - */ - predicate summarySetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { - exists(SummaryNode mid, SummaryNode ret | - summaryLocalStepImpl(summaryArgParamRetOut(arg, ret, out, sc), mid, _, _) and - summaryStoreStep(mid, c, ret) - ) + query predicate edges(NodeOrCall a, NodeOrCall b, string key, string value) { + key = "semmle.label" and + value = strictconcat(string s | edgesComponent(a, b, s) | s, " / ") + } } } @@ -2786,111 +2902,5 @@ module Make< ) } } - - /** - * Provides query predicates for rendering the generated data flow graph for - * a summarized callable. - * - * Import this module into a `.ql` file of `@kind graph` to render the graph. - * The graph is restricted to callables from `RelevantSummarizedCallable`. - */ - module RenderSummarizedCallable { - private module PrivateSteps = Private::Steps; - - /** A summarized callable to include in the graph. */ - abstract class RelevantSummarizedCallable instanceof SummarizedCallable { - string toString() { result = super.toString() } - } - - private newtype TNodeOrCall = - MkNode(SummaryNode n) { - exists(RelevantSummarizedCallable c | - n = TSummaryInternalNode(c, _) - or - n = TSummaryParameterNode(c, _) - ) - } or - MkCall(SummaryNode receiver) { - receiver.getSummarizedCallable() instanceof RelevantSummarizedCallable and - ( - callbackInput(_, _, receiver, _) or - callbackOutput(_, _, receiver, _) - ) - } - - private class NodeOrCall extends TNodeOrCall { - SummaryNode asNode() { this = MkNode(result) } - - SummaryNode asCallReceiver() { this = MkCall(result) } - - string toString() { - result = this.asNode().toString() - or - result = this.asCallReceiver().toString() - } - - /** - * 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 - * [Locations](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 - ) { - filepath = "" and - startline = 0 and - startcolumn = 0 and - endline = 0 and - endcolumn = 0 - } - } - - query predicate nodes(NodeOrCall n, string key, string val) { - key = "semmle.label" and val = n.toString() - } - - private Node getNode(SummaryNode sn) { sn = StepsInput::getSummaryNode(result) } - - private predicate edgesComponent(NodeOrCall a, NodeOrCall b, string value) { - exists(boolean preservesValue | - PrivateSteps::summaryLocalStep(getNode(a.asNode()), b.asNode(), preservesValue, _) and - if preservesValue = true then value = "value" else value = "taint" - ) - or - exists(ContentSet c | - PrivateSteps::summaryReadStep(a.asNode(), c, b.asNode()) and - value = "read (" + c + ")" - or - PrivateSteps::summaryStoreStep(a.asNode(), c, b.asNode()) and - value = "store (" + c + ")" - or - PrivateSteps::summaryClearsContent(a.asNode(), c) and - b = a and - value = "clear (" + c + ")" - or - PrivateSteps::summaryExpectsContent(a.asNode(), c) and - b = a and - value = "expect (" + c + ")" - ) - or - summaryPostUpdateNode(b.asNode(), a.asNode()) and - value = "post-update" - or - b.asCallReceiver() = a.asNode() and - value = "receiver" - or - exists(ArgumentPosition pos | - summaryArgumentNode(b.asCallReceiver(), a.asNode(), pos) and - value = "argument (" + pos + ")" - ) - } - - query predicate edges(NodeOrCall a, NodeOrCall b, string key, string value) { - key = "semmle.label" and - value = strictconcat(string s | edgesComponent(a, b, s) | s, " / ") - } - } } } From d4cefad42fd0c88672af18bcaebdc978a6ba9eac Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 9 Jul 2026 13:14:24 +0200 Subject: [PATCH 119/167] FlowSummaryImpl: Embed AST nodes in source/sink summary nodes for better flow paths --- .../dataflow/internal/FlowSummaryImpl.qll | 770 ++++++++++++++---- 1 file changed, 606 insertions(+), 164 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll index 21c43b03fef1..48ce4f30ca3e 100644 --- a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll @@ -19,6 +19,9 @@ signature module InputSig Lang> { class SummarizedCallableBase { bindingset[this] string toString(); + + bindingset[this] + Location getLocation(); } /** Holds if `c` is defined in source code. */ @@ -32,6 +35,8 @@ signature module InputSig Lang> { class SourceBase { bindingset[this] string toString(); + + Location getLocation(); } /** @@ -41,6 +46,8 @@ signature module InputSig Lang> { class SinkBase { bindingset[this] string toString(); + + Location getLocation(); } /** @@ -59,15 +66,15 @@ signature module InputSig Lang> { */ class FlowSummaryCallBase { string toString(); + + Location getLocation(); } /** Gets a call that targets summarized callable `sc`. */ default FlowSummaryCallBase getASourceCall(SummarizedCallableBase sc) { none() } /** Gets the callable corresponding to summarized callable `c`. */ - default Lang::DataFlowCallable getSummarizedCallableAsDataFlowCallable(SummarizedCallableBase c) { - none() - } + Lang::DataFlowCallable getSummarizedCallableAsDataFlowCallable(SummarizedCallableBase c); /** Gets the enclosing callable of `call`. */ default Lang::DataFlowCallable getSourceCallEnclosingCallable(FlowSummaryCallBase call) { none() } @@ -801,6 +808,16 @@ module Make< ) } + private string sourceMarker() { result = "SOURCEMARKER" } + + private string sinkMarker() { result = "SINKMARKER" } + + bindingset[s] + private string addSourceMarker(string s) { result = sourceMarker() + "." + s } + + bindingset[s] + private string addSinkMarker(string s) { result = sinkMarker() + "." + s } + private predicate flowSpec(string spec) { exists(SummarizedCallable c | c.propagatesFlow(spec, _, _, _, _, _) @@ -808,16 +825,126 @@ module Make< c.propagatesFlow(_, spec, _, _, _, _) ) or - isRelevantSource(_, spec, _, _, _) + exists(string sourceSpec | + spec = addSourceMarker(sourceSpec) and + isRelevantSource(_, sourceSpec, _, _, _) + ) or isRelevantBarrier(_, spec, _, _, _) or isRelevantBarrierGuard(_, spec, _, _, _, _) or - isRelevantSink(_, spec, _, _, _) + exists(string sinkSpec | + spec = addSinkMarker(sinkSpec) and + isRelevantSink(_, sinkSpec, _, _, _) + ) + } + + private module Ap = AccessPathSyntax::AccessPath; + + import Ap + + class AccessPath extends Ap::AccessPath { + AccessPathToken getToken(int n) { result = super.getToken(n) } + + int getNumToken() { result = super.getNumToken() } + } + + abstract private class SourceOrSinkAccessPath extends AccessPath { + AccessPathToken getTokenExclMarker(int n) { + result = super.getToken(n + 1) and + n >= 0 + } + + private predicate hasContentAt(int pos) { + exists(External::interpretContent(this.getTokenExclMarker(pos))) + } + + int getFirstContentToken() { + this.hasContentAt(result) and + not this.hasContentAt(result - 1) + } + + override int getNumToken() { + result = super.getNumToken() - 1 // account for the marker + } + } + + /** + * For a source access path like + * + * ``` + * Argument[0].Parameter[1].Field[A].Field[B] + * ``` + * + * we rewrite it into + * + * ``` + * Parameter[1].Argument[0].Field[A].Field[B] + * ``` + * + * which allows us to process the stack top-down, first performing a store into `B`, + * then a store into `A`, and finally a step from a callback argument at position 0 + * to its parameter at position 1. + */ + private class SourceAccessPath extends SourceOrSinkAccessPath, AccessPath { + SourceAccessPath() { AccessPath.super.getToken(0) = sourceMarker() } + + override AccessPathToken getToken(int n) { + not exists(this.getFirstContentToken()) and + exists(int i | + i = this.getNumToken() - 1 and + result = this.getTokenExclMarker(i - n) + ) + or + exists(int first | first = this.getFirstContentToken() | + result = this.getTokenExclMarker(n) and + n >= first + or + result = this.getTokenExclMarker(first - n - 1) and + n >= 0 + ) + } } - import AccessPathSyntax::AccessPath + /** + * For a sink access path like + * + * ``` + * Argument[0].ReturnValue.Field[A].Field[B] + * ``` + * + * we rewrite it into + * + * ``` + * Field[B].Field[A].Argument[0].ReturnValue + * ``` + * + * which allows us to process the stack top-down, first performing a step from the + * returned value of a callback to the place where the callback is supplied as an + * argument at position 0, then a read of `A`, and finally a read of `B`. + */ + private class SinkAccessPath extends SourceOrSinkAccessPath, AccessPath { + SinkAccessPath() { AccessPath.super.getToken(0) = sinkMarker() } + + override AccessPathToken getToken(int n) { + not exists(this.getFirstContentToken()) and + result = this.getTokenExclMarker(n) + or + exists(int first, int num, int i | + first = this.getFirstContentToken() and + num = this.getNumToken() + | + result = this.getTokenExclMarker(first + i) and + i >= 0 and + n = num - first - i - 1 + or + result = this.getTokenExclMarker(i) and + i < first and + n = num - first + i + ) + } + } /** Holds if specification component `token` parses as parameter `pos`. */ predicate parseParam(AccessPathToken token, ArgumentPosition pos) { @@ -1175,7 +1302,7 @@ module Make< ) { exists(string outSpec | isRelevantSource(source, outSpec, kind, _, model) and - External::interpretSpec(outSpec, s) + External::interpretSpec(addSourceMarker(outSpec), s) ) } @@ -1183,22 +1310,19 @@ module Make< private predicate sourceOutputState( SourceElement source, SummaryComponentStack s, string kind, string model ) { - sourceOutputStateEntry(source, s, kind, model) - or - exists(SummaryComponentStack out | - sourceOutputState(source, out, kind, model) and - out.head() = TContentSummaryComponent(_) and - s = out.tail() + exists(SummaryComponentStack entry | + sourceOutputStateEntry(source, entry, kind, model) and + s = entry.drop(_) ) } pragma[nomagic] - private predicate sinkInputStateExit( + private predicate sinkInputStateEntry( SinkElement sink, SummaryComponentStack s, string kind, string model ) { exists(string inSpec | isRelevantSink(sink, inSpec, kind, _, model) and - External::interpretSpec(inSpec, s) + External::interpretSpec(addSinkMarker(inSpec), s) ) } @@ -1206,12 +1330,9 @@ module Make< private predicate sinkInputState( SinkElement sink, SummaryComponentStack s, string kind, string model ) { - sinkInputStateExit(sink, s, kind, model) - or - exists(SummaryComponentStack inp | - sinkInputState(sink, inp, kind, model) and - inp.head() = TContentSummaryComponent(_) and - s = inp.tail() + exists(SummaryComponentStack entry | + sinkInputStateEntry(sink, entry, kind, model) and + s = entry.drop(_) ) } @@ -1299,25 +1420,242 @@ module Make< signature module InputSig2 { /** - * Gets a data flow node corresponding to the `s` part of `source`. + * An element used to represent sources and sinks. + * + * These elements will be embedded into the data flow graph and serve as the + * sources/sinks that the user sees in the output. + * + * For example, if we have a source access path like + * + * ``` + * Argument[0].Parameter[1].Field[A].Field[B] + * ``` + * + * then there should be a reporting element corresponding to the `Argument[0]` part, + * as well as the `Parameter[1]` part, and a flow step will be generated between them. + */ + class SourceSinkReportingElement { + /** Gets the enclosing callable of this element. */ + DataFlowCallable getEnclosingCallable(); + + /** + * Gets a successor element corresponding to the `sc` part of this element. + * + * For example, if `sc` is `Parameter[0]` then the result should be the + * parameter at position 0 of this element (this element may for example be + * a reference to a closure). + */ + bindingset[this, sc] + SourceSinkReportingElement getASuccessor(SummaryComponent sc); + + /** Gets a textual representation of this element. */ + string toString(); + + /** Gets the location of this element. */ + Location getLocation(); + } + + /** + * Gets an element corresponding to the `sc` part of `source`. * - * `s` is typically `ReturnValue` and the result is the node that - * represents the return value of `source`. + * For example, if `sc` is `ReturnValue` then the result should be a + * call to `source`, and if `sc` is `Argument[0]` then the result + * should be an argument at position 0 in a call to `source`. */ - Node getSourceNode(SourceBase source, SummaryComponentStack s); + bindingset[source, sc] + default SourceSinkReportingElement getASourceReportingElement( + SourceBase source, SummaryComponent sc + ) { + none() + } + + /** + * Gets the source data flow node corresponding to `e` and `sc`. + * + * For example, if `sc` is `ReturnValue` then the result should be the node + * that corresponds directly to `e`, and if `sc` is `Argument[0]` then the + * result should be the post-update node whose pre-update node corresponds to + * `e`. + */ + bindingset[e, sc] + default Node getSourceDataFlowNode(SourceSinkReportingElement e, SummaryComponent sc) { + none() + } + + /** + * Gets an element corresponding to the `sc` part of `sink`. + * + * For example, if `sc` is `Argument[0]` then the result should be the argument + * at position 0 in a call to `sink`. + */ + bindingset[sink, sc] + default SourceSinkReportingElement getASinkReportingElement(SinkBase sink, SummaryComponent sc) { + none() + } /** - * Gets a data flow node corresponding to the `sc` part of `sink`. + * Gets the data flow node corresponding to `e` and `sc`. * - * `sc` is typically `Argument[i]` and the result is the node that - * represents the `i`th argument of `sink`. + * For example, if `sc` is `Argument[0]` then the result should be the node + * that corresponds directly to `e`. */ - Node getSinkNode(SinkBase sink, SummaryComponent sc); + bindingset[e, sc] + default Node getSinkDataFlowNode(SourceSinkReportingElement e, SummaryComponent sc) { none() } } module Make2 { private import Input2 + /** + * For a source access path like + * + * ``` + * Argument[0].Parameter[1].Field[A].Field[B] + * ``` + * + * which gets rewritten into + * + * ``` + * Parameter[1].Argument[0].Field[A].Field[B] + * ``` + * + * we first find the entry reporting element based on `Argument[0]`. This entry + * reporting element will also be used for all the stores (done in + * `sourceOutputStoreNode`), but for `Parameter[1]`, we will use the reporting + * element obtained by going to the parameter at position 1 of the entry element + * (done in `sourceOutputStepNode`). + */ + private predicate sourceOutputNodeEntryElement( + SourceElement source, SummaryNodeState state, SourceSinkReportingElement e, string kind, + string model + ) { + exists(SummaryComponentStack entry, SummaryComponentStack stack | + state.isSourceOutputState(source, stack, kind, model) and + // entry = Parameter[1].Argument[0].Field[A].Field[B] + sourceOutputStateEntry(source, entry, kind, model) and + // stack = Parameter[1].Argument[0] + stack = + min(SummaryComponentStack stack0, int i | + stack0 = entry.drop(i) and + not stack0.head() instanceof TContentSummaryComponent + | + stack0 order by i + ) and + e = getASourceReportingElement(source, stack.head()) + ) + } + + private predicate sourceOutputStepNode( + SourceElement source, SummaryNodeState state, SourceSinkReportingElement e, string kind, + string model + ) { + sourceOutputNodeEntryElement(source, state, e, kind, model) + or + sourceOutputNodeStep(source, state, _, e, _, kind, model) + } + + private predicate sourceOutputNodeStep( + SourceElement source, SummaryNodeState state, SummaryNodeState state0, + SourceSinkReportingElement e, SourceSinkReportingElement e0, string kind, string model + ) { + exists(SummaryComponentStack stack, SummaryComponent head, SummaryComponentStack stack0 | + sourceOutputStepNode(source, state0, e0, kind, model) and + state0.isSourceOutputState(source, stack0, kind, model) and + stack = stack0.tail() and + state.isSourceOutputState(source, stack, kind, model) and + head = stack.head() and + e = e0.getASuccessor(head) + ) + } + + private predicate sourceOutputStoreNode( + SourceElement source, SummaryNodeState state, SourceSinkReportingElement e, string kind, + string model + ) { + sourceOutputNodeEntryElement(source, state, e, kind, model) + or + exists(SummaryComponentStack stack, SummaryNodeState state0 | + sourceOutputStoreNode(source, state0, e, kind, model) and + state0.isSourceOutputState(source, stack.tail(), kind, model) and + state.isSourceOutputState(source, stack, kind, model) + ) + } + + /** + * For a sink access path like + * + * ``` + * Argument[0].ReturnValue.Field[A].Field[B] + * ``` + * + * which gets rewritten into + * + * ``` + * Field[B].Field[A].Argument[0].ReturnValue + * ``` + * + * we first find the entry reporting element based on `Argument[0]`. This entry + * reporting element will also be used for all the reads (done in `sinkInputReadNode`), + * but for `ReturnValue`, we will use the reporting element obtained by going to a + * value returned by the entry element (done in `sinkInputStepNode`). + */ + private predicate sinkInputNodeEntryElement( + SinkElement sink, SummaryNodeState state, SourceSinkReportingElement e, string kind, + string model + ) { + exists(SummaryComponentStack entry, SummaryComponentStack stack | + state.isSinkInputState(sink, stack, kind, model) and + // entry = Field[B].Field[A].Argument[0].ReturnValue + sinkInputStateEntry(sink, entry, kind, model) and + // stack = Field[B].Field[A].Argument[0] + stack = + max(SummaryComponentStack stack0, int i | + stack0 = entry.drop(i) and + not stack0.head() instanceof TContentSummaryComponent + | + stack0 order by i + ) and + e = getASinkReportingElement(sink, stack.head()) + ) + } + + private predicate sinkInputStepNode( + SinkElement sink, SummaryNodeState state, SourceSinkReportingElement e, string kind, + string model + ) { + sinkInputNodeEntryElement(sink, state, e, kind, model) + or + sinkInputNodeStep(sink, state, _, e, _, kind, model) + } + + private predicate sinkInputNodeStep( + SinkElement sink, SummaryNodeState state, SummaryNodeState state0, + SourceSinkReportingElement e, SourceSinkReportingElement e0, string kind, string model + ) { + exists(SummaryComponentStack stack, SummaryComponent head, SummaryComponentStack stack0 | + sinkInputStepNode(sink, state0, e0, kind, model) and + state0.isSinkInputState(sink, stack0, kind, model) and + stack.tail() = stack0 and + state.isSinkInputState(sink, stack, kind, model) and + head = stack.head() and + e = e0.getASuccessor(head) + ) + } + + private predicate sinkInputReadNode( + SinkElement sink, SummaryNodeState state, SourceSinkReportingElement e, string kind, + string model + ) { + sinkInputNodeEntryElement(sink, state, e, kind, model) + or + exists(SummaryComponentStack stack, SummaryNodeState state0, SummaryComponentStack stack0 | + sinkInputReadNode(sink, state0, e, kind, model) and + state0.isSinkInputState(sink, stack0, kind, model) and + state.isSinkInputState(sink, stack, kind, model) and + stack = stack0.tail() + ) + } + private newtype TSummaryNode = TSummaryInternalNode(SummarizedCallable c, SummaryNodeState state) { summaryNodeRange(c, state) @@ -1331,11 +1669,21 @@ module Make< relevantFlowSummaryPosition(sc, rk) ) } or - TSourceOutputNode(SourceElement source, SummaryNodeState state, string kind, string model) { - state.isSourceOutputState(source, _, kind, model) + TSourceOutputNode( + SourceElement source, SummaryNodeState state, SourceSinkReportingElement e, string kind, + string model + ) { + sourceOutputStepNode(source, state, e, kind, model) + or + sourceOutputStoreNode(source, state, e, kind, model) } or - TSinkInputNode(SinkElement sink, SummaryNodeState state, string kind, string model) { - state.isSinkInputState(sink, _, kind, model) + TSinkInputNode( + SinkElement sink, SummaryNodeState state, SourceSinkReportingElement e, string kind, + string model + ) { + sinkInputStepNode(sink, state, e, kind, model) + or + sinkInputReadNode(sink, state, e, kind, model) } abstract class SummaryNode extends TSummaryNode { @@ -1347,6 +1695,12 @@ module Make< abstract SinkElement getSinkElement(); + abstract SourceSinkReportingElement getSourceSinkReportingElement(); + + abstract DataFlowCallable getEnclosingCallable(); + + abstract Location getLocation(); + predicate isHidden() { any() } } @@ -1363,6 +1717,14 @@ module Make< override SourceElement getSourceElement() { none() } override SinkElement getSinkElement() { none() } + + override SourceSinkReportingElement getSourceSinkReportingElement() { none() } + + override DataFlowCallable getEnclosingCallable() { + result = getSummarizedCallableAsDataFlowCallable(c) + } + + override Location getLocation() { result = c.getLocation() } } private class SummaryParamNode extends SummaryNode, TSummaryParameterNode { @@ -1378,6 +1740,14 @@ module Make< override SourceElement getSourceElement() { none() } override SinkElement getSinkElement() { none() } + + override SourceSinkReportingElement getSourceSinkReportingElement() { none() } + + override DataFlowCallable getEnclosingCallable() { + result = getSummarizedCallableAsDataFlowCallable(c) + } + + override Location getLocation() { result = c.getLocation() } } private class SummaryReturnArgumentNode extends SummaryNode, TSummaryReturnArgumentNode { @@ -1393,6 +1763,14 @@ module Make< override SourceElement getSourceElement() { none() } override SinkElement getSinkElement() { none() } + + override SourceSinkReportingElement getSourceSinkReportingElement() { none() } + + override DataFlowCallable getEnclosingCallable() { + result = getSourceCallEnclosingCallable(call) + } + + override Location getLocation() { result = call.getLocation() } } /** @@ -1404,55 +1782,61 @@ module Make< result = TSummaryReturnArgumentNode(call, rk) } - /** Gets the enclosing callable for summary node `sn`. */ - DataFlowCallable getEnclosingCallable(SummaryNode sn) { - result = getSummarizedCallableAsDataFlowCallable(sn.getSummarizedCallable()) - or - exists(FlowSummaryCallBase call | - sn = TSummaryReturnArgumentNode(call, _) and - result = getSourceCallEnclosingCallable(call) - ) - } - class SourceOutputNode extends SummaryNode, TSourceOutputNode { private SourceElement source_; private SummaryNodeState state_; + private SourceSinkReportingElement e_; private string kind_; private string model_; - SourceOutputNode() { this = TSourceOutputNode(source_, state_, kind_, model_) } + SourceOutputNode() { this = TSourceOutputNode(source_, state_, e_, kind_, model_) } /** - * Holds if this node is an entry node, i.e. before any stores have been performed. + * Holds if this node is an entry node, i.e. before any stores or steps have been + * performed. * * This node should be used as the actual source node in data flow configurations. */ predicate isEntry(string kind, string model) { model = model_ and - exists(SummaryComponentStack out | - sourceOutputStateEntry(source_, out, kind, model_) and - state_.isSourceOutputState(source_, out, kind, model_) + exists(SummaryComponentStack entry | + state_.isSourceOutputState(source_, entry, kind, model_) and + sourceOutputStateEntry(source_, entry, kind, model_) ) } /** - * Holds if this node is an exit node, i.e. after all stores have been performed. + * Holds if this node is an exit node, i.e. after all stores and steps have been + * performed. * - * A local flow step should be added from this node to a data flow node representing - * `s` inside `source`. + * A flow step is added from this node to a data flow node representing + * `s` inside `source`, using `getSourceDataFlowNode`. */ - predicate isExit(SourceElement source, SummaryComponentStack s, string model) { + predicate isExit( + SourceElement source, SummaryComponent sc, SourceSinkReportingElement e, string model + ) { source = source_ and model = model_ and - state_.isSourceOutputState(source, s, _, model) + state_.isSourceOutputState(source, TSingletonSummaryComponentStack(sc), _, model) and + e = e_ } - override predicate isHidden() { not this.isEntry(_, _) } + override predicate isHidden() { + not this.isEntry(_, _) and + ( + exists(SummaryComponentStack stack | + state_.isSourceOutputState(_, stack, _, _) and + stack.head() instanceof TContentSummaryComponent + ) + or + this.isExit(_, _, _, _) + ) + } override string toString() { - if this.isEntry(_, _) - then result = source_.toString() - else result = "[source] " + state_ + " at " + source_ + if this.isHidden() + then result = "[source] " + state_ + " at " + e_ + else result = e_.toString() } override SummarizedCallable getSummarizedCallable() { none() } @@ -1460,48 +1844,71 @@ module Make< override SourceElement getSourceElement() { result = source_ } override SinkElement getSinkElement() { none() } + + override SourceSinkReportingElement getSourceSinkReportingElement() { result = e_ } + + override DataFlowCallable getEnclosingCallable() { result = e_.getEnclosingCallable() } + + override Location getLocation() { result = e_.getLocation() } } class SinkInputNode extends SummaryNode, TSinkInputNode { private SinkElement sink_; private SummaryNodeState state_; + private SourceSinkReportingElement e_; private string kind_; private string model_; - SinkInputNode() { this = TSinkInputNode(sink_, state_, kind_, model_) } + SinkInputNode() { this = TSinkInputNode(sink_, state_, e_, kind_, model_) } /** - * Holds if this node is an entry node, i.e. before any reads have been performed. + * Holds if this node is an entry node, i.e. before any reads and steps have been + * performed. * - * A local flow step should be added to this node from a data flow node representing - * `sc` inside `sink`. + * A flow step is added to this node from a data flow node representing + * `sc` inside `sink`, using `getSinkDataFlowNode`. */ - predicate isEntry(SinkElement sink, SummaryComponent sc, string model) { + predicate isEntry( + SinkElement sink, SummaryComponent sc, SourceSinkReportingElement e, string model + ) { sink = sink_ and model = model_ and - state_.isSinkInputState(sink, TSingletonSummaryComponentStack(sc), _, model) + e = e_ and + exists(SummaryComponentStack entry | + sinkInputStateEntry(sink, entry, kind_, model) and + state_.isSinkInputState(sink, entry, _, model) and + sc = entry.head() + ) } /** - * Holds if this node is an exit node, i.e. after all reads have been performed. + * Holds if this node is an exit node, i.e. after all reads and steps have been + * performed. * * This node should be used as the actual sink node in data flow configurations. */ predicate isExit(string kind, string model) { kind = kind_ and model = model_ and - exists(SummaryComponentStack inp | - sinkInputStateExit(sink_, inp, kind, model_) and - state_.isSinkInputState(sink_, inp, kind, model_) - ) + state_.isSinkInputState(sink_, TSingletonSummaryComponentStack(_), kind, model_) } - override predicate isHidden() { not this.isExit(_, _) } + override predicate isHidden() { + not this.isExit(_, _) and + ( + exists(SummaryComponentStack stack | + state_.isSourceOutputState(_, stack, _, _) and + stack.head() instanceof TContentSummaryComponent + ) + or + this.isEntry(_, _, _, _) + ) + } override string toString() { - if this.isExit(_, _) - then result = sink_.toString() - else result = "[sink] " + state_ + " at " + sink_ + if this.isHidden() + then result = "[sink] " + state_ + " at " + e_ + else result = e_.toString() } override SummarizedCallable getSummarizedCallable() { none() } @@ -1509,6 +1916,12 @@ module Make< override SourceElement getSourceElement() { none() } override SinkElement getSinkElement() { result = sink_ } + + override SourceSinkReportingElement getSourceSinkReportingElement() { result = e_ } + + override DataFlowCallable getEnclosingCallable() { result = e_.getEnclosingCallable() } + + override Location getLocation() { result = e_.getLocation() } } /** @@ -1560,19 +1973,17 @@ module Make< } pragma[noinline] - private SummaryNode sourceElementOutputState(SourceElement source, SummaryComponentStack s) { - exists(SummaryNodeState state, string kind, string model | - state.isSourceOutputState(source, s, kind, model) and - result = TSourceOutputNode(source, state, kind, model) - ) + private SummaryNode sourceElementOutputState( + SourceElement source, SourceSinkReportingElement e, SummaryComponentStack s + ) { + result = TSourceOutputNode(source, TSourceOutputState(s), e, _, _) } pragma[noinline] - private SummaryNode sinkElementInputState(SinkElement sink, SummaryComponentStack s) { - exists(SummaryNodeState state, string kind, string model | - state.isSinkInputState(sink, s, kind, model) and - result = TSinkInputNode(sink, state, kind, model) - ) + private SummaryNode sinkElementInputState( + SinkElement sink, SourceSinkReportingElement e, SummaryComponentStack s + ) { + result = TSinkInputNode(sink, TSinkInputState(s), e, _, _) } /** @@ -1727,9 +2138,7 @@ module Make< DataFlowType getSyntheticGlobalType(SyntheticGlobal sg); - DataFlowType getSourceType(SourceBase source, SummaryComponentStack sc); - - DataFlowType getSinkType(SinkBase sink, SummaryComponent sc); + DataFlowType getSourceSinkType(SourceSinkReportingElement e); } /** @@ -1809,27 +2218,25 @@ module Make< ) ) or - exists(SourceElement source | - exists(SummaryComponentStack s | - n.(SourceOutputNode).isExit(source, s, _) and - result = getSourceType(source, s) - ) + exists(SourceElement source, SourceSinkReportingElement e | + n.(SourceOutputNode).isExit(source, _, e, _) and + result = getSourceSinkType(e) or exists(SummaryComponentStack s, ContentSet cont | - n = sourceElementOutputState(source, s) and + n = sourceElementOutputState(source, _, s) and s.head() = TContentSummaryComponent(cont) and result = getContentType(cont) ) ) or exists(SinkElement sink | - exists(SummaryComponent sc | - n.(SinkInputNode).isEntry(sink, sc, _) and - result = getSinkType(sink, sc) + exists(SourceSinkReportingElement e | + n.(SinkInputNode).isEntry(sink, _, e, _) and + result = getSourceSinkType(e) ) or exists(SummaryComponentStack s, ContentSet cont | - n = sinkElementInputState(sink, s) and + n = sinkElementInputState(sink, _, s) and s.head() = TContentSummaryComponent(cont) and result = getContentType(cont) ) @@ -1846,13 +2253,30 @@ module Make< /** Gets the out node of kind `rk` for `call`, if any. */ default Node getSourceOutNode(FlowSummaryCallBase call, ReturnKind rk) { none() } - - /** Gets the enclosing callable of `source`. */ - DataFlowCallable getSourceNodeEnclosingCallable(SourceBase source); } /** Provides a compilation of flow summaries to atomic data-flow steps. */ module Steps { + private predicate sourceExitStep(SourceOutputNode nodeFrom, Node nodeTo, boolean local) { + exists(SummaryComponent sc, SourceSinkReportingElement e | + nodeFrom.isExit(_, sc, e, _) and + nodeTo = getSourceDataFlowNode(e, sc) and + if e.getEnclosingCallable() = getNodeEnclosingCallable(nodeTo) + then local = true + else local = false + ) + } + + private predicate sinkEntryStep(Node nodeFrom, SinkInputNode nodeTo, boolean local) { + exists(SummaryComponent sc, SourceSinkReportingElement e | + nodeTo.isEntry(_, sc, e, _) and + nodeFrom = getSinkDataFlowNode(e, sc) and + if e.getEnclosingCallable() = getNodeEnclosingCallable(nodeFrom) + then local = true + else local = false + ) + } + /** * Holds if there is a local step from `pred` to `succ`, which is synthesized * from a flow summary. @@ -1882,39 +2306,29 @@ module Make< ) } - predicate sourceStep(SourceOutputNode nodeFrom, Node nodeTo, string model, boolean local) { - exists(SummaryComponentStack sc, SourceElement source | - nodeFrom.isExit(source, sc, model) and - nodeTo = Input2::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 = Input2::getSinkNode(sink, sc) and - nodeTo.isEntry(sink, sc, model) - ) - } - /** Holds if there is a local step between data-flow nodes synthesized from a flow summary. */ - predicate summaryLocalStep(Node pred, SummaryNode succ, boolean preservesValue, string model) { - exists(SummaryNode predSummary | - predSummary = StepsInput::getSummaryNode(pred) and - summaryLocalStepImpl(predSummary, succ, preservesValue, model) + predicate summaryLocalStep(Node pred, Node succ, boolean preservesValue, string model) { + exists(SummaryNode predSummary | predSummary = StepsInput::getSummaryNode(pred) | + summaryLocalStepImpl(predSummary, StepsInput::getSummaryNode(succ), preservesValue, + model) + or + sourceExitStep(predSummary, succ, true) and + preservesValue = true and + model = "" + ) + or + exists(SummaryNode succSummary | + succSummary = StepsInput::getSummaryNode(succ) and + sinkEntryStep(pred, succSummary, true) and + preservesValue = true and + model = "" ) or exists(FlowSummaryCallBase summaryCall, ReturnKind rk, SummarizedCallable sc | pred = StepsInput::getSourceOutNode(summaryCall, rk) and summaryCall = getASourceCall(sc) and summary(sc, SummaryComponentStack::return(rk), _, preservesValue, model) and - succ = TSummaryReturnArgumentNode(summaryCall, rk) + StepsInput::getSummaryNode(succ) = TSummaryReturnArgumentNode(summaryCall, rk) ) } @@ -1925,37 +2339,38 @@ module Make< /** * Holds if there is a read step of content `c` from `pred` to `succ`, which - * is synthesized from a flow summary. + * is synthesized from a flow summary or a sink specification. */ predicate summaryReadStep(SummaryNode pred, ContentSet c, SummaryNode succ) { - exists(SummarizedCallable sc, SummaryComponentStack s | - pred = summaryNodeInputState(sc, s.tail()) and - succ = summaryNodeInputState(sc, s) and - SummaryComponent::content(c) = s.head() - ) - or - exists(SinkElement sink, SummaryComponentStack s | - pred = sinkElementInputState(sink, s.tail()) and - succ = sinkElementInputState(sink, s) and - SummaryComponent::content(c) = s.head() + exists(SummaryComponentStack stack | SummaryComponent::content(c) = stack.head() | + exists(SummarizedCallable sc | + pred = summaryNodeInputState(sc, stack.tail()) and + succ = summaryNodeInputState(sc, stack) + ) + or + exists(SinkElement sink, SourceSinkReportingElement e, SummaryComponentStack stack0 | + pred = sinkElementInputState(sink, e, stack0) and + stack = stack0.tail() and + succ = sinkElementInputState(sink, e, stack) + ) ) } /** * Holds if there is a store step of content `c` from `pred` to `succ`, which - * is synthesized from a flow summary. + * is synthesized from a flow summary or a source specification. */ predicate summaryStoreStep(SummaryNode pred, ContentSet c, SummaryNode succ) { - exists(SummarizedCallable sc, SummaryComponentStack s | - pred = summaryNodeOutputState(sc, s) and - succ = summaryNodeOutputState(sc, s.tail()) and - SummaryComponent::content(c) = s.head() - ) - or - exists(SourceElement source, SummaryComponentStack s | - pred = sourceElementOutputState(source, s) and - succ = sourceElementOutputState(source, s.tail()) and - SummaryComponent::content(c) = s.head() + exists(SummaryComponentStack stack | SummaryComponent::content(c) = stack.head() | + exists(SummarizedCallable sc | + pred = summaryNodeOutputState(sc, stack) and + succ = summaryNodeOutputState(sc, stack.tail()) + ) + or + exists(SourceElement source, SourceSinkReportingElement e | + pred = sourceElementOutputState(source, e, stack) and + succ = sourceElementOutputState(source, e, stack.tail()) + ) ) } @@ -1963,18 +2378,44 @@ module Make< * Holds if there is a jump step from `pred` to `succ`, which is synthesized * from a flow summary. */ - predicate summaryJumpStep(SummaryNode pred, SummaryNode succ) { - exists(SummaryComponentStack s | - s = SummaryComponentStack::singleton(SummaryComponent::syntheticGlobal(_)) and - pred = summaryNodeOutputState(_, s) and - succ = summaryNodeInputState(_, s) + predicate summaryJumpStep(Node pred, Node succ) { + exists(SummaryNode predSummary | StepsInput::getSummaryNode(pred) = predSummary | + exists(SummaryNode succSummary | StepsInput::getSummaryNode(succ) = succSummary | + exists(SummaryComponentStack s | + s = SummaryComponentStack::singleton(SummaryComponent::syntheticGlobal(_)) and + predSummary = summaryNodeOutputState(_, s) and + succSummary = summaryNodeInputState(_, s) + ) + or + // We model all non-store steps as jumps in order to ensure that they are not stepped + // over in the path graph. + exists( + SourceElement source, string kind, SummaryNodeState state, SummaryNodeState state0, + SourceSinkReportingElement e, SourceSinkReportingElement e0, string model + | + sourceOutputNodeStep(source, state, state0, e, e0, kind, model) and + predSummary = TSourceOutputNode(source, state0, e0, kind, model) and + succSummary = TSourceOutputNode(source, state, e, kind, model) + ) + or + // We model all non-read steps as jumps in order to ensure that they are not stepped + // over in the path graph. + exists( + SinkElement sink, string kind, SummaryNodeState state, SummaryNodeState state0, + SourceSinkReportingElement e, SourceSinkReportingElement e0, string model + | + sinkInputNodeStep(sink, state, state0, e, e0, kind, model) and + predSummary = TSinkInputNode(sink, state, e, kind, model) and + succSummary = TSinkInputNode(sink, state0, e0, kind, model) + ) + ) + or + sourceExitStep(StepsInput::getSummaryNode(pred), succ, false) + or + sinkEntryStep(pred, StepsInput::getSummaryNode(succ), false) ) } - 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 @@ -2218,7 +2659,8 @@ module Make< private predicate edgesComponent(NodeOrCall a, NodeOrCall b, string value) { exists(boolean preservesValue | - PrivateSteps::summaryLocalStep(getNode(a.asNode()), b.asNode(), preservesValue, _) and + PrivateSteps::summaryLocalStep(getNode(a.asNode()), getNode(b.asNode()), preservesValue, + _) and if preservesValue = true then value = "value" else value = "taint" ) or @@ -2284,15 +2726,15 @@ module Make< token = encodeWithContent(result, "") } + ContentSet interpretContent(AccessPathToken token) { + result = decodeContent(token) + or + not exists(decodeContent(token)) and + result = decodeUnknownContent(token) + } + private SummaryComponent interpretComponent(AccessPathToken token) { - exists(ContentSet c | - c = decodeContent(token) - or - not exists(decodeContent(token)) and - c = decodeUnknownContent(token) - | - result = SummaryComponent::content(c) - ) + result = SummaryComponent::content(interpretContent(token)) or exists(ParameterPosition pos | parseArg(token, pos) and From 267053666eafecf654d9c2761ef1be10dcd8cd60 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 9 Jul 2026 22:08:34 +0200 Subject: [PATCH 120/167] Rust: Adapt to FlowSummaryImpl changes --- .../dataflow/internal/DataFlowConsistency.qll | 2 +- .../rust/dataflow/internal/DataFlowImpl.qll | 38 +--- .../dataflow/internal/FlowSummaryImpl.qll | 162 ++++++++++-------- .../rust/dataflow/internal/ModelsAsData.qll | 8 +- .../codeql/rust/dataflow/internal/Node.qll | 19 +- .../dataflow/internal/TaintTrackingImpl.qll | 3 +- .../DisabledCertificateCheckExtensions.qll | 9 +- .../HardcodedCryptographicValueExtensions.qll | 9 +- .../WeakSensitiveDataHashingExtensions.qll | 10 +- rust/ql/lib/utils/test/InlineFlowTest.qll | 23 ++- .../security/CWE-022/TaintedPathSinks.ql | 75 ++++---- 11 files changed, 184 insertions(+), 174 deletions(-) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll index ca6c0747ba3a..a21552cb3355 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll @@ -21,7 +21,7 @@ private module Input implements InputSig { or n.(Node::PostUpdateNode).getPreUpdateNode().asExpr() = getPostUpdateReverseStep(_, _) or - FlowSummaryImpl::Private::Steps::sourceLocalStep(_, n, _) + FlowSummaryImpl::Private::Steps::summaryLocalStep(_, n, _, _) } predicate missingLocationExclude(RustDataFlow::Node n) { not exists(n.asExpr().getLocation()) } diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index 8793bf7a6272..cb73c7f715d9 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -179,17 +179,7 @@ Expr getPostUpdateReverseStep(Expr e, boolean preservesValue) { module LocalFlow { predicate flowSummaryLocalStep(Node nodeFrom, Node nodeTo, string model) { - exists(FlowSummaryImpl::Public::SummarizedCallable c | - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, - nodeTo.(FlowSummaryNode).getSummaryNode(), true, model) and - c = nodeFrom.(FlowSummaryNode).getSummarizedCallable() - ) - or - FlowSummaryImpl::Private::Steps::sourceLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), - nodeTo, model) - or - FlowSummaryImpl::Private::Steps::sinkLocalStep(nodeFrom, - nodeTo.(FlowSummaryNode).getSummaryNode(), model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true, model) } pragma[nomagic] @@ -448,6 +438,8 @@ module RustDataFlowGen implements InputSig or result = ps.getSelfParam() and this.isSelf() } + + ParamBase getParameter(Callable c) { result = this.getParameterIn(c.getParamList()) } } /** @@ -510,10 +502,6 @@ module RustDataFlowGen implements InputSig node.asExpr() = stripParens(match.getScrutinee()) or node.asPat() = match.getAnArm().getPat() ) - or - FlowSummaryImpl::Private::Steps::sourceLocalStep(_, node, _) - or - FlowSummaryImpl::Private::Steps::sinkLocalStep(node, _, _) } class DataFlowExpr = Expr; @@ -652,10 +640,7 @@ module RustDataFlowGen implements InputSig * variable. */ predicate jumpStep(Node node1, Node node2) { - FlowSummaryImpl::Private::Steps::summaryJumpStep(node1.(FlowSummaryNode).getSummaryNode(), - node2.(FlowSummaryNode).getSummaryNode()) - or - FlowSummaryImpl::Private::Steps::sourceJumpStep(node1.(FlowSummaryNode).getSummaryNode(), node2) + FlowSummaryImpl::Private::Steps::summaryJumpStep(node1, node2) or exists(Const c | node1.asExpr() = c.getBody() and @@ -1289,10 +1274,10 @@ private module Cached { FlowSummaryImpl::Public::AcceptingValue acceptingValue, string kind, string model | FlowSummaryImpl::Private::barrierGuardSpec(b, stack, acceptingValue, kind, model) and - e = FlowSummaryImpl::StepsInput::getSinkNode(b, stack.headOfSingleton()).asExpr() and + e = FlowSummaryImpl::Input2::getASinkReportingElement(b, stack.headOfSingleton()) and kmp = TMkPair(kind, model) and gv = convertAcceptingValue(acceptingValue) and - g = b.getCall() + g.(Call).getResolvedTarget() = b ) } @@ -1303,15 +1288,8 @@ private module Cached { FlowSummaryImpl::Public::BarrierElement b, FlowSummaryImpl::Private::SummaryComponentStack stack | - FlowSummaryImpl::Private::barrierSpec(b, stack, kind, model) - | - n = FlowSummaryImpl::StepsInput::getSourceNode(b, stack, false) - or - // For barriers like `Argument[0]` we want to target the pre-update node - n = - FlowSummaryImpl::StepsInput::getSourceNode(b, stack, true) - .(PostUpdateNode) - .getPreUpdateNode() + FlowSummaryImpl::Private::barrierSpec(b, stack, kind, model) and + n.asExpr() = FlowSummaryImpl::Input2::getASourceReportingElement(b, stack.headOfSingleton()) ) or ParameterizedBarrierGuard::getABarrierNode(TMkPair(kind, diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll index d9104da11ad5..10375c2e180a 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll @@ -33,23 +33,19 @@ module Input implements InputSig { class SummarizedCallableBase = Function; - class FlowSummaryCallBase = Void; + class FlowSummaryCallBase extends Void { + Location getLocation() { none() } + } predicate callableFromSource(SummarizedCallableBase c) { c.fromSource() } - abstract private class SourceSinkBase extends AstNode { - /** Gets the associated call. */ - abstract Call getCall(); - - /** Holds if the associated call resolves to `path`. */ - final predicate callResolvesTo(string path) { - path = this.getCall().getResolvedTarget().getCanonicalPath() - } + DataFlowCallable getSummarizedCallableAsDataFlowCallable(SummarizedCallableBase c) { + result.asSummarizedCallable() = c } - abstract class SourceBase extends SourceSinkBase { } + class SourceBase = Function; - abstract class SinkBase extends SourceSinkBase { } + class SinkBase = Function; predicate neutralElement( Input::SummarizedCallableBase c, string kind, string provenance, boolean isExact @@ -61,22 +57,6 @@ module Input implements InputSig { ) } - private class CallExprFunction extends SourceBase, SinkBase { - private CallExpr call; - - CallExprFunction() { this = call.getFunction() } - - override Call getCall() { result = call } - } - - private class MethodCallExprNameRef extends SourceBase, SinkBase { - private MethodCallExpr call; - - MethodCallExprNameRef() { this = call.getIdentifier() } - - override MethodCallExpr getCall() { result = call } - } - RustDataFlow::ArgumentPosition callbackSelfParameterPosition() { result.isClosureSelf() } ReturnKind getStandardReturnValueKind() { result = TNormalReturnKind() } @@ -147,75 +127,109 @@ module Input implements InputSig { private import Make as Impl -module StepsInput implements Impl::Private::StepsInputSig { - Impl::Private::SummaryNode getSummaryNode(RustDataFlow::Node n) { - result = n.(FlowSummaryNode).getSummaryNode() - } +/** Gets the argument of `call` described by `sc`, if any. */ +private Expr getArg(Call call, Impl::Private::SummaryComponent sc) { + exists(RustDataFlow::ArgumentPosition pos | + sc = Impl::Private::SummaryComponent::argument(pos) and + result = pos.getArgument(call) + ) +} - DataFlowCall getACall(Public::SummarizedCallable sc) { result.asCall().getStaticTarget() = sc } +/** 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 | + def.getARead() = expr and + def.getAnUltimateDefinition().(Ssa::WriteDefinition).assigns(result.(ClosureExpr)) + ) +} - /** Gets the argument of `source` described by `sc`, if any. */ - private Expr getSourceNodeArgument(Input::SourceBase source, Impl::Private::SummaryComponent sc) { - exists(RustDataFlow::ArgumentPosition pos | - sc = Impl::Private::SummaryComponent::argument(pos) and - result = pos.getArgument(source.getCall()) - ) +module Input2 implements Impl::Private::InputSig2 { + private import codeql.rust.controlflow.CfgNodes + + class SourceSinkReportingElement extends AstNode { + DataFlowCallable getEnclosingCallable() { result.asCfgScope() = this.getEnclosingCfgScope() } + + SourceSinkReportingElement getASuccessor(Impl::Private::SummaryComponent sc) { + exists(RustDataFlow::ArgumentPosition pos | + sc = Impl::Private::SummaryComponent::parameter(pos) and + result = pos.getParameter(getCallable(this)) + ) + or + exists(Callable c | + sc = Impl::Private::SummaryComponent::return(_) and + c = getCallable(this) and + result.getACfgNode().getASuccessor() instanceof AnnotatedExitCfgNode and + result.getEnclosingCfgScope() = c + ) + } } - /** Get the callable that `expr` refers to. */ - private Callable getCallable(Expr expr) { - result = resolvePath(expr.(PathExpr).getPath()).(Function) - or - result = expr.(ClosureExpr) + SourceSinkReportingElement getASourceReportingElement( + Input::SourceBase source, Impl::Private::SummaryComponent sc + ) { + exists(Call call | call.getResolvedTarget() = source | + sc = Impl::Private::SummaryComponent::return(_) and + result = call + or + result = getArg(call, sc) + ) or - // The expression is an SSA read of an assignment of a closure - exists(Ssa::Definition def | - def.getARead() = expr and - def.getAnUltimateDefinition().(Ssa::WriteDefinition).assigns(result.(ClosureExpr)) + exists(RustDataFlow::ArgumentPosition pos | + sc = Impl::Private::SummaryComponent::parameter(pos) + | + exists(Function f | + f = source + or + f.implements(source) + | + result = pos.getParameter(f) + ) ) } - RustDataFlow::DataFlowCallable getSourceNodeEnclosingCallable(Input::SourceBase source) { - result.asCfgScope() = source.getEnclosingCfgScope() + bindingset[e, sc] + NodePublic getSourceDataFlowNode(SourceSinkReportingElement e, Impl::Private::SummaryComponent sc) { + if sc = Impl::Private::SummaryComponent::argument(_) + then result.(PostUpdateNode).getPreUpdateNode().(Node).getAstNode() = e + else result.(Node).getAstNode() = e } - additional RustDataFlow::Node getSourceNode( - Input::SourceBase source, Impl::Private::SummaryComponentStack s, boolean isArgPostUpdate + SourceSinkReportingElement getASinkReportingElement( + Input::SinkBase sink, Impl::Private::SummaryComponent sc ) { - s.head() = Impl::Private::SummaryComponent::return(_) and - result.asExpr() = source.getCall() and - isArgPostUpdate = false - or - exists(RustDataFlow::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()) and - isArgPostUpdate = false + exists(Call call | + call.getResolvedTarget() = sink and + result = getArg(call, sc) ) - or - result.(RustDataFlow::PostUpdateNode).getPreUpdateNode().asExpr() = - getSourceNodeArgument(source, s.headOfSingleton()) and - isArgPostUpdate = true } - RustDataFlow::Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { - result = getSourceNode(source, s, _) + bindingset[e, sc] + NodePublic getSinkDataFlowNode(SourceSinkReportingElement e, Impl::Private::SummaryComponent sc) { + result.asExpr() = e and + exists(sc) } +} - RustDataFlow::Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { - exists(InvocationExpr call, Expr arg, RustDataFlow::ArgumentPosition pos | - result.asExpr() = arg and - sc = Impl::Private::SummaryComponent::argument(pos) and - call = sink.getCall() and - arg = pos.getArgument(call) - ) +private import Impl::Private::Make2 as Impl2 + +module StepsInput implements Impl2::StepsInputSig { + Impl2::SummaryNode getSummaryNode(RustDataFlow::Node n) { + result = n.(FlowSummaryNode).getSummaryNode() } + + DataFlowCall getACall(Public::SummarizedCallable sc) { result.asCall().getStaticTarget() = sc } } module Private { import Impl::Private + import Impl2 - module Steps = Impl::Private::Steps; + module Steps = Impl2::Steps; private import codeql.rust.dataflow.FlowSource private import codeql.rust.dataflow.FlowSink diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll index 8b63d818af1b..fddf1bbb5fab 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll @@ -249,7 +249,7 @@ private class FlowSourceFromModel extends FlowSource::Range { FlowSourceFromModel() { sourceModel(path, _, _, _, _) and - this.callResolvesTo(path) + this.getCanonicalPath() = path } override predicate isSource(string output, string kind, Provenance provenance, string model) { @@ -271,7 +271,7 @@ private class FlowSinkFromModel extends FlowSink::Range { FlowSinkFromModel() { sinkModel(path, _, _, _, _) and - this.callResolvesTo(path) + this.getCanonicalPath() = path } override predicate isSink(string input, string kind, Provenance provenance, string model) { @@ -293,7 +293,7 @@ private class FlowBarrierFromModel extends FlowBarrier::Range { FlowBarrierFromModel() { barrierModel(path, _, _, _, _) and - this.callResolvesTo(path) + this.getCanonicalPath() = path } override predicate isBarrier(string output, string kind, Provenance provenance, string model) { @@ -309,7 +309,7 @@ private class FlowBarrierGuardFromModel extends FlowBarrierGuard::Range { FlowBarrierGuardFromModel() { barrierGuardModel(path, _, _, _, _, _) and - this.callResolvesTo(path) + this.getCanonicalPath() = path } override predicate isBarrierGuard( diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll index 9ef2c3a08faf..cbe638d430c4 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll @@ -93,25 +93,16 @@ class FlowSummaryNode extends Node, TFlowSummaryNode { } override CfgScope getCfgScope() { - result = this.getSummaryNode().getSourceElement().getEnclosingCfgScope() - or - result = this.getSummaryNode().getSinkElement().getEnclosingCfgScope() + result = this.getSummaryNode().getSourceSinkReportingElement().getEnclosingCfgScope() } override DataFlowCallable getEnclosingCallable() { - result.asCfgScope() = this.getCfgScope() - or - result.asSummarizedCallable() = this.getSummarizedCallable() + result = this.getSummaryNode().getEnclosingCallable() } override Location getLocation() { Stages::DataFlowStage::ref() and - exists(this.getSummarizedCallable()) and - result instanceof EmptyLocation - or - result = this.getSourceElement().getLocation() - or - result = this.getSinkElement().getLocation() + result = this.getSummaryNode().getLocation() } override string toString() { @@ -761,9 +752,7 @@ newtype TNode = TIndexOutNode(IndexExpr ie, Boolean isPost) or TSsaNode(SsaImpl::DataFlowIntegration::SsaNode node) or TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) { - forall(AstNode n | n = sn.getSinkElement() or n = sn.getSourceElement() | - n.hasEnclosingCfgScope() - ) + forall(AstNode n | n = sn.getSourceSinkReportingElement() | n.hasEnclosingCfgScope()) } or TClosureSelfReferenceNode(CfgScope c) { lambdaCreationExpr(c) } or TCaptureNode(VariableCapture::Flow::SynthesizedCaptureNode cn) or diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll index 7e5af70911d7..6791a22f946f 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll @@ -83,8 +83,7 @@ module RustTaintTrackingGen implements pred.(Node::PostUpdateNode).getPreUpdateNode().asExpr(), _, succ, _) ) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(pred, - succ.(Node::FlowSummaryNode).getSummaryNode(), false, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(pred, succ, false, model) } /** diff --git a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll index a5933bc74b1c..d6685dfcb161 100644 --- a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll @@ -39,12 +39,15 @@ module DisabledCertificateCheckExtensions { */ private class HeuristicSink extends Sink { HeuristicSink() { - exists(Call call | + exists(Call call, Expr arg | + arg = this.asExpr() and call.getStaticTarget().getName().getText() = ["danger_accept_invalid_certs", "danger_accept_invalid_hostnames"] and - call.getPositionalArgument(0) = this.asExpr() and + call.getPositionalArgument(0) = arg and // don't duplicate modeled sinks - not exists(ModelsAsDataSink s | s.(Node::FlowSummaryNode).getSinkElement().getCall() = call) + not exists(ModelsAsDataSink s | + s.(Node::FlowSummaryNode).getSummaryNode().getSourceSinkReportingElement() = arg + ) ) } } diff --git a/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll b/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll index fe5a8b038410..ea57d9427338 100644 --- a/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll @@ -118,8 +118,9 @@ module HardcodedCryptographicValue { HeuristicSinks() { // any argument going to a parameter whose name matches a credential name - exists(Call c, Function f, int argIndex, string argName | - c.getPositionalArgument(argIndex) = this.asExpr() and + exists(Call c, Function f, Expr arg, int argIndex, string argName | + arg = this.asExpr() and + c.getPositionalArgument(argIndex) = arg and c.getStaticTarget() = f and f.getParam(argIndex).getPat().(IdentPat).getName().getText() = argName and ( @@ -134,7 +135,9 @@ module HardcodedCryptographicValue { // note: matching "key" results in too many false positives ) and // don't duplicate modeled sinks - not exists(ModelsAsDataSinks s | s.(Node::FlowSummaryNode).getSinkElement().getCall() = c) + not exists(ModelsAsDataSinks s | + s.(Node::FlowSummaryNode).getSummaryNode().getSourceSinkReportingElement() = arg + ) ) } diff --git a/rust/ql/lib/codeql/rust/security/WeakSensitiveDataHashingExtensions.qll b/rust/ql/lib/codeql/rust/security/WeakSensitiveDataHashingExtensions.qll index bd29f0498b35..25e6f4d5c7b7 100644 --- a/rust/ql/lib/codeql/rust/security/WeakSensitiveDataHashingExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/WeakSensitiveDataHashingExtensions.qll @@ -186,11 +186,15 @@ class ModeledHashOperation extends Cryptography::CryptographicOperation::Range { string algorithmName; ModeledHashOperation() { - exists(CallExpr call | + exists(CallExpr call, Expr e | sinkNode(input, "hasher-input") and - call = input.(Node::FlowSummaryNode).getSinkElement().getCall() and - call = this.asExpr() and + e = this.asExpr() and + e = input.(Node::FlowSummaryNode).getSummaryNode().getSourceSinkReportingElement() and algorithmName = call.getFunction().(PathExpr).getPath().getQualifier().getText() + | + call = e + or + call.getASyntacticArgument() = e ) } diff --git a/rust/ql/lib/utils/test/InlineFlowTest.qll b/rust/ql/lib/utils/test/InlineFlowTest.qll index 704172b95bd9..2b43ed49bf87 100644 --- a/rust/ql/lib/utils/test/InlineFlowTest.qll +++ b/rust/ql/lib/utils/test/InlineFlowTest.qll @@ -29,6 +29,21 @@ private module FlowTestImpl implements InputSig { any(CallExpr call | callTargetName(call, "sink")).getASyntacticArgument() = sink.asExpr() } + private string getSummaryNodeArgString(AstNode n) { + exists(Call call | + n = call + or + not n instanceof Call and + n = call.getASyntacticArgument() // `n` is a callback + | + result = call.getPositionalArgument(0).toString() + ) + or + result = n.(Call).getPositionalArgument(0).toString() + or + result = n.(Param).getPat().(IdentPat).getName().getText() + } + private string getSourceArgString(DataFlow::Node src) { defaultSource(src) and exists(Expr arg | arg = src.asExpr().(Call).getPositionalArgument(0) | @@ -38,9 +53,11 @@ private module FlowTestImpl implements InputSig { result = arg.(ArrayListExpr).getExpr(0).toString() ) or - sourceNode(src, _) and - result = - src.(Node::FlowSummaryNode).getSourceElement().getCall().getPositionalArgument(0).toString() and + exists(AstNode n | + sourceNode(src, _) and + n = src.(Node::FlowSummaryNode).getSummaryNode().getSourceSinkReportingElement() and + result = getSummaryNodeArgString(n) + ) and // Don't use the result if it contains spaces not result.matches("% %") } diff --git a/rust/ql/test/query-tests/security/CWE-022/TaintedPathSinks.ql b/rust/ql/test/query-tests/security/CWE-022/TaintedPathSinks.ql index 8660d779e2f0..a38213ae466c 100644 --- a/rust/ql/test/query-tests/security/CWE-022/TaintedPathSinks.ql +++ b/rust/ql/test/query-tests/security/CWE-022/TaintedPathSinks.ql @@ -15,42 +15,45 @@ module TaintedPathSinksTest implements TestSig { } predicate hasActualResult(Location location, string element, string tag, string value) { - exists(TaintedPath::Sink sink | - location = sink.getLocation() and - location.getFile().getBaseName() != "" and - element = sink.toString() and - tag = "path-injection-sink" and - value = "" - ) - or - exists(DataFlow::Node node | - ( - node instanceof TaintedPath::Barrier or - node instanceof TaintedPath::SanitizerGuard // tends to label the node *after* the check - ) and - location = node.getLocation() and - location.getFile().getBaseName() != "" and - element = node.toString() and - tag = "path-injection-barrier" and - value = "" - ) - or - exists(DataFlow::Node node | - DataflowImpl::optionalBarrier(node, "normalize-path") and - location = node.getLocation() and - location.getFile().getBaseName() != "" and - element = node.toString() and - tag = "path-injection-normalize" and - value = "" - ) - or - exists(DataFlow::Node node | - node instanceof Path::SafeAccessCheck and // tends to label the node *after* the check - location = node.getLocation() and - location.getFile().getBaseName() != "" and - element = node.toString() and - tag = "path-injection-checked" and - value = "" + location.fromSource() and + ( + exists(TaintedPath::Sink sink | + location = sink.getLocation() and + location.getFile().getBaseName() != "" and + element = sink.toString() and + tag = "path-injection-sink" and + value = "" + ) + or + exists(DataFlow::Node node | + ( + node instanceof TaintedPath::Barrier or + node instanceof TaintedPath::SanitizerGuard // tends to label the node *after* the check + ) and + location = node.getLocation() and + location.getFile().getBaseName() != "" and + element = node.toString() and + tag = "path-injection-barrier" and + value = "" + ) + or + exists(DataFlow::Node node | + DataflowImpl::optionalBarrier(node, "normalize-path") and + location = node.getLocation() and + location.getFile().getBaseName() != "" and + element = node.toString() and + tag = "path-injection-normalize" and + value = "" + ) + or + exists(DataFlow::Node node | + node instanceof Path::SafeAccessCheck and // tends to label the node *after* the check + location = node.getLocation() and + location.getFile().getBaseName() != "" and + element = node.toString() and + tag = "path-injection-checked" and + value = "" + ) ) } } From 427a24dd181b8b55138aa959f06574ee19f2127d Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 9 Jul 2026 22:06:27 +0200 Subject: [PATCH 121/167] Rust: Update expected test output / inline expectations --- .../dataflow/local/DataFlowStep.expected | 7 + .../library-tests/dataflow/models/main.rs | 6 +- .../dataflow/models/models.expected | 479 +++++++++--------- .../sources/database/InlineFlow.expected | 170 +++---- .../sources/database/TaintSources.expected | 50 +- .../dataflow/sources/database/test.rs | 32 +- .../dataflow/sources/env/InlineFlow.expected | 96 ++-- .../sources/env/TaintSources.expected | 30 +- .../dataflow/sources/file/InlineFlow.expected | 194 ++++--- .../sources/file/TaintSources.expected | 66 +-- .../dataflow/sources/net/InlineFlow.expected | 164 +++--- .../sources/net/TaintSources.expected | 34 +- .../sources/stdin/InlineFlow.expected | 166 +++--- .../sources/stdin/TaintSources.expected | 52 +- .../web_frameworks/InlineFlow.expected | 134 ++--- .../web_frameworks/TaintSources.expected | 240 ++++----- .../dataflow/sources/web_frameworks/test.rs | 20 +- .../library-tests/frameworks/postgres/main.rs | 4 +- .../library-tests/frameworks/rusqlite/main.rs | 4 +- .../security/CWE-020/RegexInjection.expected | 6 +- .../security/CWE-022/TaintedPath.expected | 116 ++--- .../security/CWE-079/actix/XSS.expected | 12 +- .../security/CWE-079/actix/main.rs | 4 +- .../security/CWE-079/axum/XSS.expected | 8 +- .../security/CWE-079/warp/XSS.expected | 12 +- .../query-tests/security/CWE-079/warp/main.rs | 4 +- .../security/CWE-089/SqlInjection.expected | 222 ++++---- .../query-tests/security/CWE-089/mysql.rs | 8 +- .../security/CWE-117/LogInjection.expected | 138 ++--- .../CWE-295/DisabledCertificateCheck.expected | 124 ++--- .../CWE-311/CleartextTransmission.expected | 30 +- .../CWE-312/CleartextLogging.expected | 348 +++++-------- .../CWE-312/CleartextStorageDatabase.expected | 54 +- .../security/CWE-319/UseOfHttp.expected | 42 +- .../CryptographicOperations.expected | 10 +- .../WeakSensitiveDataHashing.expected | 18 +- .../security/CWE-614/InsecureCookie.expected | 476 ++++++++--------- .../UncontrolledAllocationSize.expected | 351 +++++-------- .../HardcodedCryptographicValue.expected | 76 ++- .../CWE-825/AccessInvalidPointer.expected | 142 ++---- .../security/CWE-918/RequestForgery.expected | 48 +- .../security/CWE-918/request_forgery_tests.rs | 4 +- 42 files changed, 1901 insertions(+), 2300 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index 7d70ff90eaa6..8f50c8d56e97 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -9,6 +9,7 @@ localStep | main.rs:7:9:7:9 | s | main.rs:7:9:7:9 | s | | main.rs:7:9:7:14 | ...: i64 | main.rs:7:9:7:9 | s | | main.rs:8:14:8:20 | FormatArgsExpr | main.rs:8:14:8:20 | MacroExpr | +| main.rs:8:14:8:20 | MacroExpr | main.rs:8:14:8:20 | MacroExpr | | main.rs:8:14:8:20 | [post] MacroExpr | main.rs:8:14:8:20 | [post] FormatArgsExpr | | main.rs:8:14:8:20 | { ... } | main.rs:8:5:8:21 | MacroExpr | | main.rs:8:14:8:20 | { ... } | main.rs:8:14:8:20 | { ... } | @@ -17,6 +18,7 @@ localStep | main.rs:11:13:11:14 | sr | main.rs:11:13:11:14 | sr | | main.rs:11:13:11:20 | ...: ... | main.rs:11:13:11:14 | sr | | main.rs:12:14:12:21 | FormatArgsExpr | main.rs:12:14:12:21 | MacroExpr | +| main.rs:12:14:12:21 | MacroExpr | main.rs:12:14:12:21 | MacroExpr | | main.rs:12:14:12:21 | [post] MacroExpr | main.rs:12:14:12:21 | [post] FormatArgsExpr | | main.rs:12:14:12:21 | { ... } | main.rs:12:5:12:22 | MacroExpr | | main.rs:12:14:12:21 | { ... } | main.rs:12:14:12:21 | { ... } | @@ -424,12 +426,16 @@ localStep | main.rs:335:32:335:45 | Ok(...) | main.rs:335:9:335:10 | 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:337:10:337:11 | s1 | +| main.rs:336:20:336:21 | "" | main.rs:336:20:336:21 | "" | +| main.rs:337:24:337:25 | "" | main.rs:337:24:337:25 | "" | | 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:32:339:46 | Err(...) | main.rs:339:9:339:10 | 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:341:10:341:11 | s2 | +| main.rs:340:20:340:21 | "" | main.rs:340:20:340:21 | "" | +| main.rs:341:24:341:25 | "" | main.rs:341:24:341:25 | "" | | 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 | @@ -695,6 +701,7 @@ localStep | 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 | MacroExpr | main.rs:501:14:501:20 | 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:5:501:21 | MacroExpr | | main.rs:501:14:501:20 | { ... } | main.rs:501:14:501:20 | { ... } | diff --git a/rust/ql/test/library-tests/dataflow/models/main.rs b/rust/ql/test/library-tests/dataflow/models/main.rs index a65963600494..d06ed3069b53 100644 --- a/rust/ql/test/library-tests/dataflow/models/main.rs +++ b/rust/ql/test/library-tests/dataflow/models/main.rs @@ -344,13 +344,13 @@ mod sink_out_of_function { fn test_sink_out_of_function() { let a = |a| source(1); - pass_sink(a); // $ MISSING: hasValueFlow=1 + pass_sink(a); // $ hasValueFlow=1 let b = |_a| { let s = source(2); MyFieldEnum::E { field_e: Option::Some(s) } }; - pass_sink_nested(b); // $ MISSING: hasValueFlow=2 + pass_sink_nested(b); // $ hasValueFlow=2 } } @@ -408,7 +408,7 @@ trait MyTrait { impl MyTrait for () { fn test_param_source(i: i64) { - sink(i) // $ MISSING: hasValueFlow=i + sink(i) // $ hasValueFlow=i } } diff --git a/rust/ql/test/library-tests/dataflow/models/models.expected b/rust/ql/test/library-tests/dataflow/models/models.expected index f531b85b6898..c4fabc6cc1e5 100644 --- a/rust/ql/test/library-tests/dataflow/models/models.expected +++ b/rust/ql/test/library-tests/dataflow/models/models.expected @@ -5,35 +5,38 @@ models | 4 | Sink: main::external_file::generated_sink; Argument[0]; test-sink | | 5 | Sink: main::external_file::neutral_manual_sink; Argument[0]; test-sink | | 6 | Sink: main::simple_sink; Argument[0]; test-sink | -| 7 | Source: ::source; ReturnValue.Field[main::MyFieldEnum::C::field_c]; test-source | -| 8 | Source: main::arg_source; Argument[0]; test-source | -| 9 | Source: main::enum_source; ReturnValue.Field[main::MyFieldEnum::D::field_d]; test-source | -| 10 | Source: main::enum_source_nested; ReturnValue.Field[main::MyFieldEnum::E::field_e].Field[core::option::Option::Some(0)]; test-source | -| 11 | Source: main::external_file::generated_source; ReturnValue; test-source | -| 12 | Source: main::external_file::neutral_manual_source; ReturnValue; test-source | -| 13 | Source: main::simple_source; ReturnValue; test-source | -| 14 | Source: main::source_into_function::pass_source; Argument[1].Parameter[0]; test-source | -| 15 | Source: main::source_into_function::pass_source_nested; Argument[1].Parameter[0].Field[main::MyFieldEnum::E::field_e].Field[core::option::Option::Some(0)]; test-source | -| 16 | Summary: <_ as core::cmp::Ord>::max; Argument[self,0]; ReturnValue; value | -| 17 | Summary: <_ as core::cmp::PartialOrd>::lt; Argument[self].Reference; ReturnValue; taint | -| 18 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | -| 19 | Summary: main::apply; Argument[0]; Argument[1].Parameter[0]; value | -| 20 | Summary: main::apply; Argument[1].ReturnValue; ReturnValue; value | -| 21 | Summary: main::coerce; Argument[0]; ReturnValue; taint | -| 22 | Summary: main::external_file::generated_summary; Argument[0]; ReturnValue; value | -| 23 | Summary: main::external_file::neutral_manual_summary; Argument[0]; ReturnValue; value | -| 24 | Summary: main::get_array_element; Argument[0].Element; ReturnValue; value | -| 25 | Summary: main::get_async_number; Argument[0]; ReturnValue.Future; value | -| 26 | Summary: main::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value | -| 27 | Summary: main::get_tuple_element; Argument[0].Field[0]; ReturnValue; value | -| 28 | Summary: main::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value | -| 29 | Summary: main::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value | -| 30 | Summary: main::set_array_element; Argument[0]; ReturnValue.Element; value | -| 31 | Summary: main::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value | -| 32 | Summary: main::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value | -| 33 | Summary: main::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value | -| 34 | Summary: main::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value | -| 35 | Summary: main::snd; Argument[1]; ReturnValue; value | +| 7 | Sink: main::sink_out_of_function::pass_sink; Argument[0].ReturnValue; test-sink | +| 8 | Sink: main::sink_out_of_function::pass_sink_nested; Argument[0].ReturnValue.Field[main::MyFieldEnum::E::field_e].Field[core::option::Option::Some(0)]; test-sink | +| 9 | Source: <_ as main::MyTrait>::test_param_source; Parameter[0]; test-source | +| 10 | Source: ::source; ReturnValue.Field[main::MyFieldEnum::C::field_c]; test-source | +| 11 | Source: main::arg_source; Argument[0]; test-source | +| 12 | Source: main::enum_source; ReturnValue.Field[main::MyFieldEnum::D::field_d]; test-source | +| 13 | Source: main::enum_source_nested; ReturnValue.Field[main::MyFieldEnum::E::field_e].Field[core::option::Option::Some(0)]; test-source | +| 14 | Source: main::external_file::generated_source; ReturnValue; test-source | +| 15 | Source: main::external_file::neutral_manual_source; ReturnValue; test-source | +| 16 | Source: main::simple_source; ReturnValue; test-source | +| 17 | Source: main::source_into_function::pass_source; Argument[1].Parameter[0]; test-source | +| 18 | Source: main::source_into_function::pass_source_nested; Argument[1].Parameter[0].Field[main::MyFieldEnum::E::field_e].Field[core::option::Option::Some(0)]; test-source | +| 19 | Summary: <_ as core::cmp::Ord>::max; Argument[self,0]; ReturnValue; value | +| 20 | Summary: <_ as core::cmp::PartialOrd>::lt; Argument[self].Reference; ReturnValue; taint | +| 21 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | +| 22 | Summary: main::apply; Argument[0]; Argument[1].Parameter[0]; value | +| 23 | Summary: main::apply; Argument[1].ReturnValue; ReturnValue; value | +| 24 | Summary: main::coerce; Argument[0]; ReturnValue; taint | +| 25 | Summary: main::external_file::generated_summary; Argument[0]; ReturnValue; value | +| 26 | Summary: main::external_file::neutral_manual_summary; Argument[0]; ReturnValue; value | +| 27 | Summary: main::get_array_element; Argument[0].Element; ReturnValue; value | +| 28 | Summary: main::get_async_number; Argument[0]; ReturnValue.Future; value | +| 29 | Summary: main::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value | +| 30 | Summary: main::get_tuple_element; Argument[0].Field[0]; ReturnValue; value | +| 31 | Summary: main::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value | +| 32 | Summary: main::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value | +| 33 | Summary: main::set_array_element; Argument[0]; ReturnValue.Element; value | +| 34 | Summary: main::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value | +| 35 | Summary: main::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value | +| 36 | Summary: main::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value | +| 37 | Summary: main::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value | +| 38 | Summary: main::snd; Argument[1]; ReturnValue; 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 | | @@ -43,13 +46,13 @@ 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:21 | +| main.rs:26:17:26:17 | s | main.rs:26:10:26:18 | coerce(...) | provenance | MaD:24 | | main.rs:41:9:41:10 | s1 | main.rs:42:17:42:18 | s1 | provenance | | | main.rs:41:9:41:10 | s1 | main.rs:42:17:42:18 | s1 | provenance | | | main.rs:41:14:41:23 | source(...) | main.rs:41:9:41:10 | s1 | provenance | | | main.rs:41:14:41:23 | source(...) | main.rs:41:9:41:10 | s1 | provenance | | -| main.rs:42:17:42:18 | s1 | main.rs:42:10:42:19 | snd(...) | provenance | MaD:35 | -| main.rs:42:17:42:18 | s1 | main.rs:42:10:42:19 | snd(...) | provenance | MaD:35 | +| main.rs:42:17:42:18 | s1 | main.rs:42:10:42:19 | snd(...) | provenance | MaD:38 | +| main.rs:42:17:42:18 | s1 | main.rs:42:10:42:19 | snd(...) | provenance | MaD:38 | | main.rs:54:9:54:9 | s | main.rs:55:27:55:27 | s | provenance | | | main.rs:54:9:54:9 | s | main.rs:55:27:55:27 | s | provenance | | | main.rs:54:13:54:21 | source(...) | main.rs:54:9:54:9 | s | provenance | | @@ -60,8 +63,8 @@ edges | main.rs:55:14:55:28 | ...::A(...) [A] | main.rs:55:9:55:10 | e1 [A] | provenance | | | main.rs:55:27:55:27 | s | main.rs:55:14:55:28 | ...::A(...) [A] | provenance | | | main.rs:55:27:55:27 | s | main.rs:55:14:55:28 | ...::A(...) [A] | provenance | | -| main.rs:56:22:56:23 | e1 [A] | main.rs:56:10:56:24 | get_var_pos(...) | provenance | MaD:29 | -| main.rs:56:22:56:23 | e1 [A] | main.rs:56:10:56:24 | get_var_pos(...) | provenance | MaD:29 | +| main.rs:56:22:56:23 | e1 [A] | main.rs:56:10:56:24 | get_var_pos(...) | provenance | MaD:32 | +| main.rs:56:22:56:23 | e1 [A] | main.rs:56:10:56:24 | get_var_pos(...) | provenance | MaD:32 | | main.rs:67:9:67:9 | s | main.rs:68:26:68:26 | s | provenance | | | main.rs:67:9:67:9 | s | main.rs:68:26:68:26 | s | provenance | | | main.rs:67:13:67:21 | source(...) | main.rs:67:9:67:9 | s | provenance | | @@ -70,8 +73,8 @@ edges | main.rs:68:9:68:10 | e1 [B] | main.rs:69:11:69:12 | e1 [B] | provenance | | | main.rs:68:14:68:27 | set_var_pos(...) [B] | main.rs:68:9:68:10 | e1 [B] | provenance | | | main.rs:68:14:68:27 | set_var_pos(...) [B] | main.rs:68:9:68:10 | e1 [B] | provenance | | -| main.rs:68:26:68:26 | s | main.rs:68:14:68:27 | set_var_pos(...) [B] | provenance | MaD:34 | -| main.rs:68:26:68:26 | s | main.rs:68:14:68:27 | set_var_pos(...) [B] | provenance | MaD:34 | +| main.rs:68:26:68:26 | s | main.rs:68:14:68:27 | set_var_pos(...) [B] | provenance | MaD:37 | +| main.rs:68:26:68:26 | s | main.rs:68:14:68:27 | set_var_pos(...) [B] | provenance | MaD:37 | | main.rs:69:11:69:12 | e1 [B] | main.rs:71:9:71:23 | ...::B(...) [B] | provenance | | | main.rs:69:11:69:12 | e1 [B] | main.rs:71:9:71:23 | ...::B(...) [B] | provenance | | | main.rs:71:9:71:23 | ...::B(...) [B] | main.rs:71:22:71:22 | i | provenance | | @@ -88,8 +91,8 @@ edges | main.rs:88:14:88:42 | ...::C {...} [C] | main.rs:88:9:88:10 | e1 [C] | provenance | | | main.rs:88:40:88:40 | s | main.rs:88:14:88:42 | ...::C {...} [C] | provenance | | | main.rs:88:40:88:40 | s | main.rs:88:14:88:42 | ...::C {...} [C] | provenance | | -| main.rs:89:24:89:25 | e1 [C] | main.rs:89:10:89:26 | get_var_field(...) | provenance | MaD:28 | -| main.rs:89:24:89:25 | e1 [C] | main.rs:89:10:89:26 | get_var_field(...) | provenance | MaD:28 | +| main.rs:89:24:89:25 | e1 [C] | main.rs:89:10:89:26 | get_var_field(...) | provenance | MaD:31 | +| main.rs:89:24:89:25 | e1 [C] | main.rs:89:10:89:26 | get_var_field(...) | provenance | MaD:31 | | main.rs:100:9:100:9 | s | main.rs:101:28:101:28 | s | provenance | | | main.rs:100:9:100:9 | s | main.rs:101:28:101:28 | s | provenance | | | main.rs:100:13:100:21 | source(...) | main.rs:100:9:100:9 | s | provenance | | @@ -98,8 +101,8 @@ edges | main.rs:101:9:101:10 | e1 [D] | main.rs:102:11:102:12 | e1 [D] | provenance | | | main.rs:101:14:101:29 | set_var_field(...) [D] | main.rs:101:9:101:10 | e1 [D] | provenance | | | main.rs:101:14:101:29 | set_var_field(...) [D] | main.rs:101:9:101:10 | e1 [D] | provenance | | -| main.rs:101:28:101:28 | s | main.rs:101:14:101:29 | set_var_field(...) [D] | provenance | MaD:33 | -| main.rs:101:28:101:28 | s | main.rs:101:14:101:29 | set_var_field(...) [D] | provenance | MaD:33 | +| main.rs:101:28:101:28 | s | main.rs:101:14:101:29 | set_var_field(...) [D] | provenance | MaD:36 | +| main.rs:101:28:101:28 | s | main.rs:101:14:101:29 | set_var_field(...) [D] | provenance | MaD:36 | | main.rs:102:11:102:12 | e1 [D] | main.rs:104:9:104:37 | ...::D {...} [D] | provenance | | | main.rs:102:11:102:12 | e1 [D] | main.rs:104:9:104:37 | ...::D {...} [D] | provenance | | | main.rs:104:9:104:37 | ...::D {...} [D] | main.rs:104:35:104:35 | i | provenance | | @@ -116,8 +119,8 @@ edges | main.rs:121:21:124:5 | MyStruct {...} [MyStruct.field1] | main.rs:121:9:121:17 | my_struct [MyStruct.field1] | provenance | | | main.rs:122:17:122:17 | s | main.rs:121:21:124:5 | MyStruct {...} [MyStruct.field1] | provenance | | | main.rs:122:17:122:17 | s | main.rs:121:21:124:5 | MyStruct {...} [MyStruct.field1] | provenance | | -| main.rs:125:27:125:35 | my_struct [MyStruct.field1] | main.rs:125:10:125:36 | get_struct_field(...) | provenance | MaD:26 | -| main.rs:125:27:125:35 | my_struct [MyStruct.field1] | main.rs:125:10:125:36 | get_struct_field(...) | provenance | MaD:26 | +| main.rs:125:27:125:35 | my_struct [MyStruct.field1] | main.rs:125:10:125:36 | get_struct_field(...) | provenance | MaD:29 | +| main.rs:125:27:125:35 | my_struct [MyStruct.field1] | main.rs:125:10:125:36 | get_struct_field(...) | provenance | MaD:29 | | main.rs:142:9:142:9 | s | main.rs:143:38:143:38 | s | provenance | | | main.rs:142:9:142:9 | s | main.rs:143:38:143:38 | s | provenance | | | main.rs:142:13:142:21 | source(...) | main.rs:142:9:142:9 | s | provenance | | @@ -126,16 +129,16 @@ edges | main.rs:143:9:143:17 | my_struct [MyStruct.field2] | main.rs:145:10:145:18 | my_struct [MyStruct.field2] | provenance | | | main.rs:143:21:143:39 | set_struct_field(...) [MyStruct.field2] | main.rs:143:9:143:17 | my_struct [MyStruct.field2] | provenance | | | main.rs:143:21:143:39 | set_struct_field(...) [MyStruct.field2] | main.rs:143:9:143:17 | my_struct [MyStruct.field2] | provenance | | -| main.rs:143:38:143:38 | s | main.rs:143:21:143:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:31 | -| main.rs:143:38:143:38 | s | main.rs:143:21:143:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:31 | +| main.rs:143:38:143:38 | s | main.rs:143:21:143:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:34 | +| main.rs:143:38:143:38 | s | main.rs:143:21:143:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:34 | | main.rs:145:10:145:18 | my_struct [MyStruct.field2] | main.rs:145:10:145:25 | my_struct.field2 | provenance | | | main.rs:145:10:145:18 | my_struct [MyStruct.field2] | main.rs:145:10:145:25 | my_struct.field2 | provenance | | | main.rs:154:9:154:9 | s | main.rs:155:29:155:29 | s | provenance | | | main.rs:154:9:154:9 | s | main.rs:155:29:155:29 | s | provenance | | | main.rs:154:13:154:21 | source(...) | main.rs:154:9:154:9 | s | provenance | | | main.rs:154:13:154:21 | source(...) | main.rs:154:9:154:9 | s | provenance | | -| main.rs:155:28:155:30 | [...] [element] | main.rs:155:10:155:31 | get_array_element(...) | provenance | MaD:24 | -| main.rs:155:28:155:30 | [...] [element] | main.rs:155:10:155:31 | get_array_element(...) | provenance | MaD:24 | +| main.rs:155:28:155:30 | [...] [element] | main.rs:155:10:155:31 | get_array_element(...) | provenance | MaD:27 | +| main.rs:155:28:155:30 | [...] [element] | main.rs:155:10:155:31 | get_array_element(...) | provenance | MaD:27 | | main.rs:155:29:155:29 | s | main.rs:155:28:155:30 | [...] [element] | provenance | | | main.rs:155:29:155:29 | s | main.rs:155:28:155:30 | [...] [element] | provenance | | | main.rs:164:9:164:9 | s | main.rs:165:33:165:33 | s | provenance | | @@ -146,10 +149,10 @@ edges | main.rs:165:9:165:11 | arr [element] | main.rs:166:10:166:12 | arr [element] | provenance | | | main.rs:165:15:165:34 | set_array_element(...) [element] | main.rs:165:9:165:11 | arr [element] | provenance | | | main.rs:165:15:165:34 | set_array_element(...) [element] | main.rs:165:9:165:11 | arr [element] | provenance | | -| main.rs:165:33:165:33 | s | main.rs:165:15:165:34 | set_array_element(...) [element] | provenance | MaD:30 | -| main.rs:165:33:165:33 | s | main.rs:165:15:165:34 | set_array_element(...) [element] | provenance | MaD:30 | -| main.rs:166:10:166:12 | arr [element] | main.rs:166:10:166:15 | arr[0] | provenance | MaD:18 | -| main.rs:166:10:166:12 | arr [element] | main.rs:166:10:166:15 | arr[0] | provenance | MaD:18 | +| main.rs:165:33:165:33 | s | main.rs:165:15:165:34 | set_array_element(...) [element] | provenance | MaD:33 | +| main.rs:165:33:165:33 | s | main.rs:165:15:165:34 | set_array_element(...) [element] | provenance | MaD:33 | +| main.rs:166:10:166:12 | arr [element] | main.rs:166:10:166:15 | arr[0] | provenance | MaD:21 | +| main.rs:166:10:166:12 | arr [element] | main.rs:166:10:166:15 | arr[0] | provenance | MaD:21 | | main.rs:175:9:175:9 | s | main.rs:176:14:176:14 | s | provenance | | | main.rs:175:9:175:9 | s | main.rs:176:14:176:14 | s | provenance | | | main.rs:175:13:175:22 | source(...) | main.rs:175:9:175:9 | s | provenance | | @@ -160,8 +163,8 @@ edges | main.rs:176:13:176:18 | TupleExpr [tuple.0] | main.rs:176:9:176:9 | t [tuple.0] | provenance | | | main.rs:176:14:176:14 | s | main.rs:176:13:176:18 | TupleExpr [tuple.0] | provenance | | | main.rs:176:14:176:14 | s | main.rs:176:13:176:18 | TupleExpr [tuple.0] | provenance | | -| main.rs:177:28:177:28 | t [tuple.0] | main.rs:177:10:177:29 | get_tuple_element(...) | provenance | MaD:27 | -| main.rs:177:28:177:28 | t [tuple.0] | main.rs:177:10:177:29 | get_tuple_element(...) | provenance | MaD:27 | +| main.rs:177:28:177:28 | t [tuple.0] | main.rs:177:10:177:29 | get_tuple_element(...) | provenance | MaD:30 | +| main.rs:177:28:177:28 | t [tuple.0] | main.rs:177:10:177:29 | get_tuple_element(...) | provenance | MaD:30 | | main.rs:188:9:188:9 | s | main.rs:189:31:189:31 | s | provenance | | | main.rs:188:9:188:9 | s | main.rs:189:31:189:31 | s | provenance | | | main.rs:188:13:188:22 | source(...) | main.rs:188:9:188:9 | s | provenance | | @@ -170,8 +173,8 @@ edges | main.rs:189:9:189:9 | t [tuple.1] | main.rs:191:10:191:10 | t [tuple.1] | provenance | | | main.rs:189:13:189:32 | set_tuple_element(...) [tuple.1] | main.rs:189:9:189:9 | t [tuple.1] | provenance | | | main.rs:189:13:189:32 | set_tuple_element(...) [tuple.1] | main.rs:189:9:189:9 | t [tuple.1] | provenance | | -| main.rs:189:31:189:31 | s | main.rs:189:13:189:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:32 | -| main.rs:189:31:189:31 | s | main.rs:189:13:189:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:32 | +| main.rs:189:31:189:31 | s | main.rs:189:13:189:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:35 | +| main.rs:189:31:189:31 | s | main.rs:189:13:189:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:35 | | main.rs:191:10:191:10 | t [tuple.1] | main.rs:191:10:191:12 | t.1 | provenance | | | main.rs:191:10:191:10 | t [tuple.1] | main.rs:191:10:191:12 | t.1 | provenance | | | main.rs:203:9:203:9 | s | main.rs:208:11:208:11 | s | provenance | | @@ -180,8 +183,8 @@ edges | main.rs:203:13:203:22 | source(...) | main.rs:203:9:203:9 | s | provenance | | | main.rs:204:14:204:14 | ... | main.rs:205:14:205:14 | n | provenance | | | main.rs:204:14:204:14 | ... | main.rs:205:14:205:14 | n | provenance | | -| main.rs:208:11:208:11 | s | main.rs:204:14:204:14 | ... | provenance | MaD:19 | -| main.rs:208:11:208:11 | s | main.rs:204:14:204:14 | ... | provenance | MaD:19 | +| main.rs:208:11:208:11 | s | main.rs:204:14:204:14 | ... | provenance | MaD:22 | +| main.rs:208:11:208:11 | s | main.rs:204:14:204:14 | ... | provenance | MaD:22 | | main.rs:212:13:212:22 | source(...) | main.rs:214:23:214:23 | f [captured s] | provenance | | | main.rs:212:13:212:22 | source(...) | main.rs:214:23:214:23 | f [captured s] | provenance | | | main.rs:213:40:213:40 | s | main.rs:213:17:213:42 | if ... {...} else {...} | provenance | | @@ -190,14 +193,14 @@ edges | main.rs:214:9:214:9 | t | main.rs:215:10:215:10 | t | provenance | | | main.rs:214:13:214:24 | apply(...) | main.rs:214:9:214:9 | t | provenance | | | main.rs:214:13:214:24 | apply(...) | main.rs:214:9:214:9 | t | provenance | | -| main.rs:214:23:214:23 | f [captured s] | main.rs:213:40:213:40 | s | provenance | MaD:19 | -| main.rs:214:23:214:23 | f [captured s] | main.rs:213:40:213:40 | s | provenance | MaD:19 | -| main.rs:214:23:214:23 | f [captured s] | main.rs:213:40:213:40 | s | provenance | MaD:20 | -| main.rs:214:23:214:23 | f [captured s] | main.rs:213:40:213:40 | s | provenance | MaD:20 | -| main.rs:214:23:214:23 | f [captured s] | main.rs:214:13:214:24 | apply(...) | provenance | MaD:19 | -| main.rs:214:23:214:23 | f [captured s] | main.rs:214:13:214:24 | apply(...) | provenance | MaD:19 | -| main.rs:214:23:214:23 | f [captured s] | main.rs:214:13:214:24 | apply(...) | provenance | MaD:20 | -| main.rs:214:23:214:23 | f [captured s] | main.rs:214:13:214:24 | apply(...) | provenance | MaD:20 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:213:40:213:40 | s | provenance | MaD:22 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:213:40:213:40 | s | provenance | MaD:22 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:213:40:213:40 | s | provenance | MaD:23 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:213:40:213:40 | s | provenance | MaD:23 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:214:13:214:24 | apply(...) | provenance | MaD:22 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:214:13:214:24 | apply(...) | provenance | MaD:22 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:214:13:214:24 | apply(...) | provenance | MaD:23 | +| main.rs:214:23:214:23 | f [captured s] | main.rs:214:13:214:24 | apply(...) | provenance | MaD:23 | | main.rs:219:9:219:9 | s | main.rs:221:19:221:19 | s | provenance | | | main.rs:219:9:219:9 | s | main.rs:221:19:221:19 | s | provenance | | | main.rs:219:13:219:22 | source(...) | main.rs:219:9:219:9 | s | provenance | | @@ -208,10 +211,10 @@ edges | main.rs:221:9:221:9 | t | main.rs:222:10:222:10 | t | provenance | | | main.rs:221:13:221:23 | apply(...) | main.rs:221:9:221:9 | t | provenance | | | main.rs:221:13:221:23 | apply(...) | main.rs:221:9:221:9 | t | provenance | | -| main.rs:221:19:221:19 | s | main.rs:220:14:220:14 | ... | provenance | MaD:19 | -| main.rs:221:19:221:19 | s | main.rs:220:14:220:14 | ... | provenance | MaD:19 | -| main.rs:221:19:221:19 | s | main.rs:221:13:221:23 | apply(...) | provenance | MaD:19 | -| main.rs:221:19:221:19 | s | main.rs:221:13:221:23 | apply(...) | provenance | MaD:19 | +| main.rs:221:19:221:19 | s | main.rs:220:14:220:14 | ... | provenance | MaD:22 | +| main.rs:221:19:221:19 | s | main.rs:220:14:220:14 | ... | provenance | MaD:22 | +| main.rs:221:19:221:19 | s | main.rs:221:13:221:23 | apply(...) | provenance | MaD:22 | +| main.rs:221:19:221:19 | s | main.rs:221:13:221:23 | apply(...) | provenance | MaD:22 | | main.rs:231:9:231:9 | s | main.rs:232:30:232:30 | s | provenance | | | main.rs:231:9:231:9 | s | main.rs:232:30:232:30 | s | provenance | | | main.rs:231:13:231:22 | source(...) | main.rs:231:9:231:9 | s | provenance | | @@ -222,14 +225,12 @@ edges | main.rs:232:13:232:31 | get_async_number(...) [future] | main.rs:232:13:232:37 | await ... | provenance | | | main.rs:232:13:232:37 | await ... | main.rs:232:9:232:9 | t | provenance | | | main.rs:232:13:232:37 | await ... | main.rs:232:9:232:9 | t | provenance | | -| main.rs:232:30:232:30 | s | main.rs:232:13:232:31 | get_async_number(...) [future] | provenance | MaD:25 | -| main.rs:232:30:232:30 | s | main.rs:232:13:232:31 | get_async_number(...) [future] | provenance | MaD:25 | +| main.rs:232:30:232:30 | s | main.rs:232:13:232:31 | get_async_number(...) [future] | provenance | MaD:28 | +| main.rs:232:30:232:30 | s | main.rs:232:13:232:31 | get_async_number(...) [future] | provenance | MaD:28 | | main.rs:257:9:257:9 | s [D] | main.rs:258:11:258:11 | s [D] | provenance | | | main.rs:257:9:257:9 | s [D] | main.rs:258:11:258:11 | s [D] | provenance | | -| main.rs:257:13:257:23 | enum_source | main.rs:257:13:257:27 | enum_source(...) [D] | provenance | Src:MaD:9 | -| main.rs:257:13:257:23 | enum_source | main.rs:257:13:257:27 | enum_source(...) [D] | provenance | Src:MaD:9 | -| main.rs:257:13:257:27 | enum_source(...) [D] | main.rs:257:9:257:9 | s [D] | provenance | | -| main.rs:257:13:257:27 | enum_source(...) [D] | main.rs:257:9:257:9 | s [D] | provenance | | +| main.rs:257:13:257:27 | enum_source(...) | main.rs:257:9:257:9 | s [D] | provenance | Src:MaD:12 | +| main.rs:257:13:257:27 | enum_source(...) | main.rs:257:9:257:9 | s [D] | provenance | Src:MaD:12 | | main.rs:258:11:258:11 | s [D] | main.rs:260:9:260:37 | ...::D {...} [D] | provenance | | | main.rs:258:11:258:11 | s [D] | main.rs:260:9:260:37 | ...::D {...} [D] | provenance | | | main.rs:260:9:260:37 | ...::D {...} [D] | main.rs:260:35:260:35 | i | provenance | | @@ -238,10 +239,8 @@ edges | main.rs:260:35:260:35 | i | main.rs:260:47:260:47 | i | provenance | | | main.rs:264:9:264:9 | s [E, Some] | main.rs:265:11:265:11 | s [E, Some] | provenance | | | main.rs:264:9:264:9 | s [E, Some] | main.rs:265:11:265:11 | s [E, Some] | provenance | | -| main.rs:264:13:264:30 | enum_source_nested | main.rs:264:13:264:34 | enum_source_nested(...) [E, Some] | provenance | Src:MaD:10 | -| main.rs:264:13:264:30 | enum_source_nested | main.rs:264:13:264:34 | enum_source_nested(...) [E, Some] | provenance | Src:MaD:10 | -| main.rs:264:13:264:34 | enum_source_nested(...) [E, Some] | main.rs:264:9:264:9 | s [E, Some] | provenance | | -| main.rs:264:13:264:34 | enum_source_nested(...) [E, Some] | main.rs:264:9:264:9 | s [E, Some] | provenance | | +| main.rs:264:13:264:34 | enum_source_nested(...) | main.rs:264:9:264:9 | s [E, Some] | provenance | Src:MaD:13 | +| main.rs:264:13:264:34 | enum_source_nested(...) | main.rs:264:9:264:9 | s [E, Some] | provenance | Src:MaD:13 | | main.rs:265:11:265:11 | s [E, Some] | main.rs:268:9:268:37 | ...::E {...} [E, Some] | provenance | | | main.rs:265:11:265:11 | s [E, Some] | main.rs:268:9:268:37 | ...::E {...} [E, Some] | provenance | | | main.rs:268:9:268:37 | ...::E {...} [E, Some] | main.rs:268:35:268:35 | o [Some] | provenance | | @@ -256,36 +255,26 @@ edges | main.rs:271:22:271:22 | i | main.rs:271:33:271:33 | i | provenance | | | main.rs:280:9:280:9 | s [C] | main.rs:281:11:281:11 | s [C] | provenance | | | main.rs:280:9:280:9 | s [C] | main.rs:281:11:281:11 | s [C] | provenance | | -| main.rs:280:13:280:24 | e.source(...) [C] | main.rs:280:9:280:9 | s [C] | provenance | | -| main.rs:280:13:280:24 | e.source(...) [C] | main.rs:280:9:280:9 | s [C] | provenance | | -| main.rs:280:15:280:20 | source | main.rs:280:13:280:24 | e.source(...) [C] | provenance | Src:MaD:7 | -| main.rs:280:15:280:20 | source | main.rs:280:13:280:24 | e.source(...) [C] | provenance | Src:MaD:7 | +| main.rs:280:13:280:24 | e.source(...) | main.rs:280:9:280:9 | s [C] | provenance | Src:MaD:10 | +| main.rs:280:13:280:24 | e.source(...) | main.rs:280:9:280:9 | s [C] | provenance | Src:MaD:10 | | main.rs:281:11:281:11 | s [C] | main.rs:282:9:282:37 | ...::C {...} [C] | provenance | | | main.rs:281:11:281:11 | s [C] | main.rs:282:9:282:37 | ...::C {...} [C] | provenance | | | main.rs:282:9:282:37 | ...::C {...} [C] | main.rs:282:35:282:35 | i | provenance | | | main.rs:282:9:282:37 | ...::C {...} [C] | main.rs:282:35:282:35 | i | provenance | | | main.rs:282:35:282:35 | i | main.rs:282:47:282:47 | i | provenance | | | main.rs:282:35:282:35 | i | main.rs:282:47:282:47 | i | provenance | | -| main.rs:303:18:303:18 | ... | main.rs:303:26:303:26 | a | provenance | | -| main.rs:303:18:303:18 | ... | main.rs:303:26:303:26 | a | provenance | | -| main.rs:304:9:304:19 | pass_source | main.rs:303:18:303:18 | ... | provenance | Src:MaD:14 | -| main.rs:304:9:304:19 | pass_source | main.rs:303:18:303:18 | ... | provenance | Src:MaD:14 | -| main.rs:306:9:306:19 | pass_source | main.rs:306:25:306:25 | ... | provenance | Src:MaD:14 | -| main.rs:306:9:306:19 | pass_source | main.rs:306:25:306:25 | ... | provenance | Src:MaD:14 | -| main.rs:306:25:306:25 | ... | main.rs:307:18:307:18 | a | provenance | | -| main.rs:306:25:306:25 | ... | main.rs:307:18:307:18 | a | provenance | | -| main.rs:310:14:310:19 | ...: i64 | main.rs:311:18:311:18 | a | provenance | | -| main.rs:310:14:310:19 | ...: i64 | main.rs:311:18:311:18 | a | provenance | | -| main.rs:313:9:313:19 | pass_source | main.rs:310:14:310:19 | ...: i64 | provenance | Src:MaD:14 | -| main.rs:313:9:313:19 | pass_source | main.rs:310:14:310:19 | ...: i64 | provenance | Src:MaD:14 | -| main.rs:315:9:315:19 | pass_source | main.rs:315:36:315:36 | ... | provenance | Src:MaD:14 | -| main.rs:315:9:315:19 | pass_source | main.rs:315:36:315:36 | ... | provenance | Src:MaD:14 | -| main.rs:315:36:315:36 | ... | main.rs:316:18:316:18 | a | provenance | | -| main.rs:315:36:315:36 | ... | main.rs:316:18:316:18 | a | provenance | | -| main.rs:319:9:319:26 | pass_source_nested | main.rs:319:32:319:32 | ... [E, Some] | provenance | Src:MaD:15 | -| main.rs:319:9:319:26 | pass_source_nested | main.rs:319:32:319:32 | ... [E, Some] | provenance | Src:MaD:15 | -| main.rs:319:32:319:32 | ... [E, Some] | main.rs:320:19:320:19 | e [E, Some] | provenance | | -| main.rs:319:32:319:32 | ... [E, Some] | main.rs:320:19:320:19 | e [E, Some] | provenance | | +| main.rs:304:24:304:24 | a | main.rs:303:26:303:26 | a | provenance | Src:MaD:17 | +| main.rs:304:24:304:24 | a | main.rs:303:26:303:26 | a | provenance | Src:MaD:17 | +| main.rs:306:24:308:9 | \|...\| ... | main.rs:307:18:307:18 | a | provenance | Src:MaD:17 | +| main.rs:306:24:308:9 | \|...\| ... | main.rs:307:18:307:18 | a | provenance | Src:MaD:17 | +| main.rs:313:24:313:24 | f | main.rs:311:18:311:18 | a | provenance | Src:MaD:17 | +| main.rs:313:24:313:24 | f | main.rs:311:18:311:18 | a | provenance | Src:MaD:17 | +| main.rs:315:24:317:9 | \|...\| ... | main.rs:316:18:316:18 | a | provenance | Src:MaD:17 | +| main.rs:315:24:317:9 | \|...\| ... | main.rs:316:18:316:18 | a | provenance | Src:MaD:17 | +| main.rs:319:31:331:9 | \|...\| ... | main.rs:319:31:331:9 | \|...\| ... [E, Some] | provenance | Src:MaD:18 | +| main.rs:319:31:331:9 | \|...\| ... | main.rs:319:31:331:9 | \|...\| ... [E, Some] | provenance | Src:MaD:18 | +| main.rs:319:31:331:9 | \|...\| ... [E, Some] | main.rs:320:19:320:19 | e [E, Some] | provenance | | +| main.rs:319:31:331:9 | \|...\| ... [E, Some] | main.rs:320:19:320:19 | e [E, Some] | provenance | | | main.rs:320:19:320:19 | e [E, Some] | main.rs:323:17:323:45 | ...::E {...} [E, Some] | provenance | | | main.rs:320:19:320:19 | e [E, Some] | main.rs:323:17:323:45 | ...::E {...} [E, Some] | provenance | | | main.rs:323:17:323:45 | ...::E {...} [E, Some] | main.rs:323:43:323:43 | o [Some] | provenance | | @@ -298,18 +287,36 @@ edges | main.rs:326:25:326:31 | Some(...) [Some] | main.rs:326:30:326:30 | i | provenance | | | main.rs:326:30:326:30 | i | main.rs:326:41:326:41 | i | provenance | | | main.rs:326:30:326:30 | i | main.rs:326:41:326:41 | i | provenance | | +| main.rs:346:21:346:29 | source(...) | main.rs:347:19:347:19 | a | provenance | Sink:MaD:7 | +| main.rs:346:21:346:29 | source(...) | main.rs:347:19:347:19 | a | provenance | Sink:MaD:7 | +| main.rs:350:17:350:17 | s | main.rs:351:52:351:52 | s | provenance | | +| main.rs:350:17:350:17 | s | main.rs:351:52:351:52 | s | provenance | | +| main.rs:350:21:350:29 | source(...) | main.rs:350:17:350:17 | s | provenance | | +| main.rs:350:21:350:29 | source(...) | main.rs:350:17:350:17 | s | provenance | | +| main.rs:351:13:351:55 | ...::E {...} [E, Some] | main.rs:353:26:353:26 | b [E, Some] | provenance | | +| main.rs:351:13:351:55 | ...::E {...} [E, Some] | main.rs:353:26:353:26 | b [E, Some] | provenance | | +| main.rs:351:39:351:53 | ...::Some(...) [Some] | main.rs:351:13:351:55 | ...::E {...} [E, Some] | provenance | | +| main.rs:351:39:351:53 | ...::Some(...) [Some] | main.rs:351:13:351:55 | ...::E {...} [E, Some] | provenance | | +| main.rs:351:52:351:52 | s | main.rs:351:39:351:53 | ...::Some(...) [Some] | provenance | | +| main.rs:351:52:351:52 | s | main.rs:351:39:351:53 | ...::Some(...) [Some] | provenance | | +| main.rs:353:26:353:26 | b [E, Some] | main.rs:353:26:353:26 | b [Some] | provenance | | +| main.rs:353:26:353:26 | b [E, Some] | main.rs:353:26:353:26 | b [Some] | provenance | | +| main.rs:353:26:353:26 | b [Some] | main.rs:353:26:353:26 | b | provenance | Sink:MaD:8 | +| main.rs:353:26:353:26 | b [Some] | main.rs:353:26:353:26 | b | provenance | Sink:MaD:8 | | main.rs:364:9:364:9 | s | main.rs:365:41:365:41 | s | provenance | | | main.rs:364:9:364:9 | s | main.rs:365:41:365:41 | s | provenance | | | main.rs:364:9:364:9 | s | main.rs:368:53:368:53 | s | provenance | | | main.rs:364:9:364:9 | s | main.rs:368:53:368:53 | s | provenance | | | main.rs:364:13:364:22 | source(...) | main.rs:364:9:364:9 | s | provenance | | | main.rs:364:13:364:22 | source(...) | main.rs:364:9:364:9 | s | provenance | | -| main.rs:365:15:365:43 | ...::C {...} [C] | main.rs:365:5:365:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 | -| main.rs:365:15:365:43 | ...::C {...} [C] | main.rs:365:5:365:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 | +| main.rs:365:15:365:43 | ...::C {...} [C] | main.rs:365:15:365:43 | ...::C {...} | provenance | Sink:MaD:2 | +| main.rs:365:15:365:43 | ...::C {...} [C] | main.rs:365:15:365:43 | ...::C {...} | provenance | Sink:MaD:2 | | main.rs:365:41:365:41 | s | main.rs:365:15:365:43 | ...::C {...} [C] | provenance | | | main.rs:365:41:365:41 | s | main.rs:365:15:365:43 | ...::C {...} [C] | provenance | | -| main.rs:368:22:368:56 | ...::E {...} [E, Some] | main.rs:368:5:368:20 | enum_sink_nested | provenance | MaD:3 Sink:MaD:3 | -| main.rs:368:22:368:56 | ...::E {...} [E, Some] | main.rs:368:5:368:20 | enum_sink_nested | provenance | MaD:3 Sink:MaD:3 | +| main.rs:368:22:368:56 | ...::E {...} [E, Some] | main.rs:368:22:368:56 | ...::E {...} [Some] | provenance | | +| main.rs:368:22:368:56 | ...::E {...} [E, Some] | main.rs:368:22:368:56 | ...::E {...} [Some] | provenance | | +| main.rs:368:22:368:56 | ...::E {...} [Some] | main.rs:368:22:368:56 | ...::E {...} | provenance | Sink:MaD:3 | +| main.rs:368:22:368:56 | ...::E {...} [Some] | main.rs:368:22:368:56 | ...::E {...} | provenance | Sink:MaD:3 | | main.rs:368:48:368:54 | Some(...) [Some] | main.rs:368:22:368:56 | ...::E {...} [E, Some] | provenance | | | main.rs:368:48:368:54 | Some(...) [Some] | main.rs:368:22:368:56 | ...::E {...} [E, Some] | provenance | | | main.rs:368:53:368:53 | s | main.rs:368:48:368:54 | Some(...) [Some] | provenance | | @@ -318,70 +325,64 @@ edges | main.rs:372:9:372:9 | s | main.rs:373:39:373:39 | s | provenance | | | main.rs:372:13:372:22 | source(...) | main.rs:372:9:372:9 | s | provenance | | | main.rs:372:13:372:22 | source(...) | main.rs:372:9:372:9 | s | provenance | | -| main.rs:373:9:373:9 | e [D] | main.rs:374:5:374:5 | e [D] | provenance | | -| main.rs:373:9:373:9 | e [D] | main.rs:374:5:374:5 | e [D] | provenance | | +| main.rs:373:9:373:9 | e [D] | main.rs:374:5:374:5 | e | provenance | Sink:MaD:1 | +| main.rs:373:9:373:9 | e [D] | main.rs:374:5:374:5 | e | provenance | Sink:MaD:1 | | main.rs:373:13:373:41 | ...::D {...} [D] | main.rs:373:9:373:9 | e [D] | provenance | | | main.rs:373:13:373:41 | ...::D {...} [D] | main.rs:373:9:373:9 | e [D] | provenance | | | main.rs:373:39:373:39 | s | main.rs:373:13:373:41 | ...::D {...} [D] | provenance | | | main.rs:373:39:373:39 | s | main.rs:373:13:373:41 | ...::D {...} [D] | provenance | | -| main.rs:374:5:374:5 | e [D] | main.rs:374:7:374:10 | sink | provenance | MaD:1 Sink:MaD:1 | -| main.rs:374:5:374:5 | e [D] | main.rs:374:7:374:10 | sink | provenance | MaD:1 Sink:MaD:1 | | main.rs:383:9:383:9 | s | main.rs:384:10:384:10 | s | provenance | | | main.rs:383:9:383:9 | s | main.rs:384:10:384:10 | s | provenance | | -| main.rs:383:13:383:25 | simple_source | main.rs:383:13:383:29 | simple_source(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:383:13:383:25 | simple_source | main.rs:383:13:383:29 | simple_source(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:383:13:383:29 | simple_source(...) | main.rs:383:9:383:9 | s | provenance | | -| main.rs:383:13:383:29 | simple_source(...) | main.rs:383:9:383:9 | s | provenance | | -| main.rs:391:9:391:9 | s | main.rs:392:17:392:17 | s | provenance | | -| main.rs:391:9:391:9 | s | main.rs:392:17:392:17 | s | provenance | | +| main.rs:383:13:383:29 | simple_source(...) | main.rs:383:9:383:9 | s | provenance | Src:MaD:16 | +| main.rs:383:13:383:29 | simple_source(...) | main.rs:383:9:383:9 | s | provenance | Src:MaD:16 | +| main.rs:391:9:391:9 | s | main.rs:392:17:392:17 | s | provenance | Sink:MaD:6 | +| main.rs:391:9:391:9 | s | main.rs:392:17:392:17 | s | provenance | Sink:MaD:6 | | main.rs:391:13:391:22 | source(...) | main.rs:391:9:391:9 | s | provenance | | | main.rs:391:13:391:22 | source(...) | main.rs:391:9:391:9 | s | provenance | | -| main.rs:392:17:392:17 | s | main.rs:392:5:392:15 | simple_sink | provenance | MaD:6 Sink:MaD:6 | -| main.rs:392:17:392:17 | s | main.rs:392:5:392:15 | simple_sink | provenance | MaD:6 Sink:MaD:6 | -| main.rs:400:5:400:14 | arg_source | main.rs:400:16:400:16 | [post] i | provenance | Src:MaD:8 MaD:8 | -| main.rs:400:5:400:14 | arg_source | main.rs:400:16:400:16 | [post] i | provenance | Src:MaD:8 MaD:8 | -| main.rs:400:16:400:16 | [post] i | main.rs:401:10:401:10 | i | provenance | | -| main.rs:400:16:400:16 | [post] i | main.rs:401:10:401:10 | i | provenance | | +| main.rs:400:16:400:16 | i | main.rs:401:10:401:10 | i | provenance | Src:MaD:11 | +| main.rs:400:16:400:16 | i | main.rs:401:10:401:10 | i | provenance | Src:MaD:11 | +| main.rs:410:26:410:31 | ...: i64 | main.rs:411:14:411:14 | i | provenance | Src:MaD:9 | +| main.rs:410:26:410:31 | ...: i64 | main.rs:411:14:411:14 | i | provenance | Src:MaD:9 | | main.rs:464:9:464:10 | x1 | main.rs:465:10:465:11 | x1 | provenance | | | main.rs:464:9:464:10 | x1 | main.rs:465:10:465:11 | x1 | provenance | | -| main.rs:464:14:464:23 | source(...) | main.rs:464:14:464:30 | ... .max(...) | provenance | MaD:16 | -| main.rs:464:14:464:23 | source(...) | main.rs:464:14:464:30 | ... .max(...) | provenance | MaD:16 | +| main.rs:464:14:464:23 | source(...) | main.rs:464:14:464:30 | ... .max(...) | provenance | MaD:19 | +| main.rs:464:14:464:23 | source(...) | main.rs:464:14:464:30 | ... .max(...) | provenance | MaD:19 | | main.rs:464:14:464:30 | ... .max(...) | main.rs:464:9:464:10 | x1 | provenance | | | main.rs:464:14:464:30 | ... .max(...) | main.rs:464:9:464:10 | x1 | provenance | | | main.rs:467:9:467:10 | x2 [MyStruct.field1] | main.rs:475:10:475:11 | x2 [MyStruct.field1] | provenance | | | main.rs:467:9:467:10 | x2 [MyStruct.field1] | main.rs:475:10:475:11 | x2 [MyStruct.field1] | provenance | | | main.rs:467:14:474:6 | ... .max(...) [MyStruct.field1] | main.rs:467:9:467:10 | x2 [MyStruct.field1] | provenance | | | main.rs:467:14:474:6 | ... .max(...) [MyStruct.field1] | main.rs:467:9:467:10 | x2 [MyStruct.field1] | provenance | | -| main.rs:467:15:470:5 | MyStruct {...} [MyStruct.field1] | main.rs:467:14:474:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:16 | -| main.rs:467:15:470:5 | MyStruct {...} [MyStruct.field1] | main.rs:467:14:474:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:16 | +| main.rs:467:15:470:5 | MyStruct {...} [MyStruct.field1] | main.rs:467:14:474:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:19 | +| main.rs:467:15:470:5 | MyStruct {...} [MyStruct.field1] | main.rs:467:14:474:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:19 | | main.rs:468:17:468:26 | source(...) | main.rs:467:15:470:5 | MyStruct {...} [MyStruct.field1] | provenance | | | main.rs:468:17:468:26 | source(...) | main.rs:467:15:470:5 | MyStruct {...} [MyStruct.field1] | provenance | | | main.rs:475:10:475:11 | x2 [MyStruct.field1] | main.rs:475:10:475:18 | x2.field1 | provenance | | | main.rs:475:10:475:11 | x2 [MyStruct.field1] | main.rs:475:10:475:18 | x2.field1 | provenance | | | main.rs:480:9:480:10 | x4 | main.rs:481:10:481:11 | x4 | provenance | | | main.rs:480:9:480:10 | x4 | main.rs:481:10:481:11 | x4 | provenance | | -| main.rs:480:14:480:23 | source(...) | main.rs:480:14:480:30 | ... .max(...) | provenance | MaD:16 | -| main.rs:480:14:480:23 | source(...) | main.rs:480:14:480:30 | ... .max(...) | provenance | MaD:16 | +| main.rs:480:14:480:23 | source(...) | main.rs:480:14:480:30 | ... .max(...) | provenance | MaD:19 | +| main.rs:480:14:480:23 | source(...) | main.rs:480:14:480:30 | ... .max(...) | provenance | MaD:19 | | main.rs:480:14:480:30 | ... .max(...) | main.rs:480:9:480:10 | x4 | provenance | | | main.rs:480:14:480:30 | ... .max(...) | main.rs:480:9:480:10 | x4 | provenance | | | main.rs:483:9:483:10 | x5 | main.rs:484:10:484:11 | x5 | provenance | | -| main.rs:483:14:483:23 | source(...) | main.rs:483:14:483:30 | ... .lt(...) | provenance | MaD:17 | +| main.rs:483:14:483:23 | source(...) | main.rs:483:14:483:30 | ... .lt(...) | provenance | MaD:20 | | main.rs:483:14:483:30 | ... .lt(...) | main.rs:483:9:483:10 | x5 | provenance | | | main.rs:486:9:486:10 | x6 | main.rs:487:10:487:11 | x6 | provenance | | -| main.rs:486:14:486:23 | source(...) | main.rs:486:14:486:27 | ... < ... | provenance | MaD:17 | +| main.rs:486:14:486:23 | source(...) | main.rs:486:14:486:27 | ... < ... | provenance | MaD:20 | | main.rs:486:14:486:27 | ... < ... | main.rs:486:9:486:10 | x6 | provenance | | -| main.rs:502:10:502:25 | generated_source | main.rs:502:10:502:28 | generated_source(...) | provenance | Src:MaD:11 MaD:11 | -| main.rs:502:10:502:25 | generated_source | main.rs:502:10:502:28 | generated_source(...) | provenance | Src:MaD:11 MaD:11 | -| main.rs:504:10:504:30 | neutral_manual_source | main.rs:504:10:504:33 | neutral_manual_source(...) | provenance | Src:MaD:12 MaD:12 | -| main.rs:504:10:504:30 | neutral_manual_source | main.rs:504:10:504:33 | neutral_manual_source(...) | provenance | Src:MaD:12 MaD:12 | -| main.rs:505:20:505:28 | source(...) | main.rs:505:5:505:18 | generated_sink | provenance | MaD:4 Sink:MaD:4 | -| main.rs:505:20:505:28 | source(...) | main.rs:505:5:505:18 | generated_sink | provenance | MaD:4 Sink:MaD:4 | -| main.rs:507:25:507:33 | source(...) | main.rs:507:5:507:23 | neutral_manual_sink | provenance | MaD:5 Sink:MaD:5 | -| main.rs:507:25:507:33 | source(...) | main.rs:507:5:507:23 | neutral_manual_sink | provenance | MaD:5 Sink:MaD:5 | -| main.rs:508:28:508:36 | source(...) | main.rs:508:10:508:37 | generated_summary(...) | provenance | MaD:22 | -| main.rs:508:28:508:36 | source(...) | main.rs:508:10:508:37 | generated_summary(...) | provenance | MaD:22 | -| main.rs:510:33:510:41 | source(...) | main.rs:510:10:510:42 | neutral_manual_summary(...) | provenance | MaD:23 | -| main.rs:510:33:510:41 | source(...) | main.rs:510:10:510:42 | neutral_manual_summary(...) | provenance | MaD:23 | +| main.rs:502:10:502:28 | generated_source(...) | main.rs:502:10:502:28 | generated_source(...) | provenance | Src:MaD:14 | +| main.rs:502:10:502:28 | generated_source(...) | main.rs:502:10:502:28 | generated_source(...) | provenance | Src:MaD:14 | +| main.rs:504:10:504:33 | neutral_manual_source(...) | main.rs:504:10:504:33 | neutral_manual_source(...) | provenance | Src:MaD:15 | +| main.rs:504:10:504:33 | neutral_manual_source(...) | main.rs:504:10:504:33 | neutral_manual_source(...) | provenance | Src:MaD:15 | +| main.rs:505:20:505:28 | source(...) | main.rs:505:20:505:28 | source(...) | provenance | Sink:MaD:4 | +| main.rs:505:20:505:28 | source(...) | main.rs:505:20:505:28 | source(...) | provenance | Sink:MaD:4 | +| main.rs:507:25:507:33 | source(...) | main.rs:507:25:507:33 | source(...) | provenance | Sink:MaD:5 | +| main.rs:507:25:507:33 | source(...) | main.rs:507:25:507:33 | source(...) | provenance | Sink:MaD:5 | +| main.rs:508:28:508:36 | source(...) | main.rs:508:10:508:37 | generated_summary(...) | provenance | MaD:25 | +| main.rs:508:28:508:36 | source(...) | main.rs:508:10:508:37 | generated_summary(...) | provenance | MaD:25 | +| main.rs:510:33:510:41 | source(...) | main.rs:510:10:510:42 | neutral_manual_summary(...) | provenance | MaD:26 | +| main.rs:510:33:510:41 | source(...) | main.rs:510:10:510:42 | neutral_manual_summary(...) | provenance | MaD:26 | nodes | main.rs:15:9:15:9 | s | semmle.label | s | | main.rs:15:9:15:9 | s | semmle.label | s | @@ -603,10 +604,8 @@ nodes | main.rs:233:10:233:10 | t | semmle.label | t | | main.rs:257:9:257:9 | s [D] | semmle.label | s [D] | | main.rs:257:9:257:9 | s [D] | semmle.label | s [D] | -| main.rs:257:13:257:23 | enum_source | semmle.label | enum_source | -| main.rs:257:13:257:23 | enum_source | semmle.label | enum_source | -| main.rs:257:13:257:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] | -| main.rs:257:13:257:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] | +| main.rs:257:13:257:27 | enum_source(...) | semmle.label | enum_source(...) | +| main.rs:257:13:257:27 | enum_source(...) | semmle.label | enum_source(...) | | main.rs:258:11:258:11 | s [D] | semmle.label | s [D] | | main.rs:258:11:258:11 | s [D] | semmle.label | s [D] | | main.rs:260:9:260:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | @@ -617,10 +616,8 @@ nodes | main.rs:260:47:260:47 | i | semmle.label | i | | main.rs:264:9:264:9 | s [E, Some] | semmle.label | s [E, Some] | | main.rs:264:9:264:9 | s [E, Some] | semmle.label | s [E, Some] | -| main.rs:264:13:264:30 | enum_source_nested | semmle.label | enum_source_nested | -| main.rs:264:13:264:30 | enum_source_nested | semmle.label | enum_source_nested | -| main.rs:264:13:264:34 | enum_source_nested(...) [E, Some] | semmle.label | enum_source_nested(...) [E, Some] | -| main.rs:264:13:264:34 | enum_source_nested(...) [E, Some] | semmle.label | enum_source_nested(...) [E, Some] | +| main.rs:264:13:264:34 | enum_source_nested(...) | semmle.label | enum_source_nested(...) | +| main.rs:264:13:264:34 | enum_source_nested(...) | semmle.label | enum_source_nested(...) | | main.rs:265:11:265:11 | s [E, Some] | semmle.label | s [E, Some] | | main.rs:265:11:265:11 | s [E, Some] | semmle.label | s [E, Some] | | main.rs:268:9:268:37 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] | @@ -637,10 +634,8 @@ nodes | main.rs:271:33:271:33 | i | semmle.label | i | | main.rs:280:9:280:9 | s [C] | semmle.label | s [C] | | main.rs:280:9:280:9 | s [C] | semmle.label | s [C] | -| main.rs:280:13:280:24 | e.source(...) [C] | semmle.label | e.source(...) [C] | -| main.rs:280:13:280:24 | e.source(...) [C] | semmle.label | e.source(...) [C] | -| main.rs:280:15:280:20 | source | semmle.label | source | -| main.rs:280:15:280:20 | source | semmle.label | source | +| main.rs:280:13:280:24 | e.source(...) | semmle.label | e.source(...) | +| main.rs:280:13:280:24 | e.source(...) | semmle.label | e.source(...) | | main.rs:281:11:281:11 | s [C] | semmle.label | s [C] | | main.rs:281:11:281:11 | s [C] | semmle.label | s [C] | | main.rs:282:9:282:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | @@ -649,34 +644,26 @@ nodes | main.rs:282:35:282:35 | i | semmle.label | i | | main.rs:282:47:282:47 | i | semmle.label | i | | main.rs:282:47:282:47 | i | semmle.label | i | -| main.rs:303:18:303:18 | ... | semmle.label | ... | -| main.rs:303:18:303:18 | ... | semmle.label | ... | | main.rs:303:26:303:26 | a | semmle.label | a | | main.rs:303:26:303:26 | a | semmle.label | a | -| main.rs:304:9:304:19 | pass_source | semmle.label | pass_source | -| main.rs:304:9:304:19 | pass_source | semmle.label | pass_source | -| main.rs:306:9:306:19 | pass_source | semmle.label | pass_source | -| main.rs:306:9:306:19 | pass_source | semmle.label | pass_source | -| main.rs:306:25:306:25 | ... | semmle.label | ... | -| main.rs:306:25:306:25 | ... | semmle.label | ... | +| main.rs:304:24:304:24 | a | semmle.label | a | +| main.rs:304:24:304:24 | a | semmle.label | a | +| main.rs:306:24:308:9 | \|...\| ... | semmle.label | \|...\| ... | +| main.rs:306:24:308:9 | \|...\| ... | semmle.label | \|...\| ... | | main.rs:307:18:307:18 | a | semmle.label | a | | main.rs:307:18:307:18 | a | semmle.label | a | -| main.rs:310:14:310:19 | ...: i64 | semmle.label | ...: i64 | -| main.rs:310:14:310:19 | ...: i64 | semmle.label | ...: i64 | | main.rs:311:18:311:18 | a | semmle.label | a | | main.rs:311:18:311:18 | a | semmle.label | a | -| main.rs:313:9:313:19 | pass_source | semmle.label | pass_source | -| main.rs:313:9:313:19 | pass_source | semmle.label | pass_source | -| main.rs:315:9:315:19 | pass_source | semmle.label | pass_source | -| main.rs:315:9:315:19 | pass_source | semmle.label | pass_source | -| main.rs:315:36:315:36 | ... | semmle.label | ... | -| main.rs:315:36:315:36 | ... | semmle.label | ... | +| main.rs:313:24:313:24 | f | semmle.label | f | +| main.rs:313:24:313:24 | f | semmle.label | f | +| main.rs:315:24:317:9 | \|...\| ... | semmle.label | \|...\| ... | +| main.rs:315:24:317:9 | \|...\| ... | semmle.label | \|...\| ... | | main.rs:316:18:316:18 | a | semmle.label | a | | main.rs:316:18:316:18 | a | semmle.label | a | -| main.rs:319:9:319:26 | pass_source_nested | semmle.label | pass_source_nested | -| main.rs:319:9:319:26 | pass_source_nested | semmle.label | pass_source_nested | -| main.rs:319:32:319:32 | ... [E, Some] | semmle.label | ... [E, Some] | -| main.rs:319:32:319:32 | ... [E, Some] | semmle.label | ... [E, Some] | +| main.rs:319:31:331:9 | \|...\| ... | semmle.label | \|...\| ... | +| main.rs:319:31:331:9 | \|...\| ... | semmle.label | \|...\| ... | +| main.rs:319:31:331:9 | \|...\| ... [E, Some] | semmle.label | \|...\| ... [E, Some] | +| main.rs:319:31:331:9 | \|...\| ... [E, Some] | semmle.label | \|...\| ... [E, Some] | | main.rs:320:19:320:19 | e [E, Some] | semmle.label | e [E, Some] | | main.rs:320:19:320:19 | e [E, Some] | semmle.label | e [E, Some] | | main.rs:323:17:323:45 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] | @@ -691,20 +678,42 @@ nodes | main.rs:326:30:326:30 | i | semmle.label | i | | main.rs:326:41:326:41 | i | semmle.label | i | | main.rs:326:41:326:41 | i | semmle.label | i | +| main.rs:346:21:346:29 | source(...) | semmle.label | source(...) | +| main.rs:346:21:346:29 | source(...) | semmle.label | source(...) | +| main.rs:347:19:347:19 | a | semmle.label | a | +| main.rs:347:19:347:19 | a | semmle.label | a | +| main.rs:350:17:350:17 | s | semmle.label | s | +| main.rs:350:17:350:17 | s | semmle.label | s | +| main.rs:350:21:350:29 | source(...) | semmle.label | source(...) | +| main.rs:350:21:350:29 | source(...) | semmle.label | source(...) | +| main.rs:351:13:351:55 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] | +| main.rs:351:13:351:55 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] | +| main.rs:351:39:351:53 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | +| main.rs:351:39:351:53 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | +| main.rs:351:52:351:52 | s | semmle.label | s | +| main.rs:351:52:351:52 | s | semmle.label | s | +| main.rs:353:26:353:26 | b | semmle.label | b | +| main.rs:353:26:353:26 | b | semmle.label | b | +| main.rs:353:26:353:26 | b [E, Some] | semmle.label | b [E, Some] | +| main.rs:353:26:353:26 | b [E, Some] | semmle.label | b [E, Some] | +| main.rs:353:26:353:26 | b [Some] | semmle.label | b [Some] | +| main.rs:353:26:353:26 | b [Some] | semmle.label | b [Some] | | main.rs:364:9:364:9 | s | semmle.label | s | | main.rs:364:9:364:9 | s | semmle.label | s | | main.rs:364:13:364:22 | source(...) | semmle.label | source(...) | | main.rs:364:13:364:22 | source(...) | semmle.label | source(...) | -| main.rs:365:5:365:13 | enum_sink | semmle.label | enum_sink | -| main.rs:365:5:365:13 | enum_sink | semmle.label | enum_sink | +| main.rs:365:15:365:43 | ...::C {...} | semmle.label | ...::C {...} | +| main.rs:365:15:365:43 | ...::C {...} | semmle.label | ...::C {...} | | main.rs:365:15:365:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | | main.rs:365:15:365:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | | main.rs:365:41:365:41 | s | semmle.label | s | | main.rs:365:41:365:41 | s | semmle.label | s | -| main.rs:368:5:368:20 | enum_sink_nested | semmle.label | enum_sink_nested | -| main.rs:368:5:368:20 | enum_sink_nested | semmle.label | enum_sink_nested | +| main.rs:368:22:368:56 | ...::E {...} | semmle.label | ...::E {...} | +| main.rs:368:22:368:56 | ...::E {...} | semmle.label | ...::E {...} | | main.rs:368:22:368:56 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] | | main.rs:368:22:368:56 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] | +| main.rs:368:22:368:56 | ...::E {...} [Some] | semmle.label | ...::E {...} [Some] | +| main.rs:368:22:368:56 | ...::E {...} [Some] | semmle.label | ...::E {...} [Some] | | main.rs:368:48:368:54 | Some(...) [Some] | semmle.label | Some(...) [Some] | | main.rs:368:48:368:54 | Some(...) [Some] | semmle.label | Some(...) [Some] | | main.rs:368:53:368:53 | s | semmle.label | s | @@ -719,14 +728,10 @@ nodes | main.rs:373:13:373:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | | main.rs:373:39:373:39 | s | semmle.label | s | | main.rs:373:39:373:39 | s | semmle.label | s | -| main.rs:374:5:374:5 | e [D] | semmle.label | e [D] | -| main.rs:374:5:374:5 | e [D] | semmle.label | e [D] | -| main.rs:374:7:374:10 | sink | semmle.label | sink | -| main.rs:374:7:374:10 | sink | semmle.label | sink | +| main.rs:374:5:374:5 | e | semmle.label | e | +| main.rs:374:5:374:5 | e | semmle.label | e | | main.rs:383:9:383:9 | s | semmle.label | s | | main.rs:383:9:383:9 | s | semmle.label | s | -| main.rs:383:13:383:25 | simple_source | semmle.label | simple_source | -| main.rs:383:13:383:25 | simple_source | semmle.label | simple_source | | main.rs:383:13:383:29 | simple_source(...) | semmle.label | simple_source(...) | | main.rs:383:13:383:29 | simple_source(...) | semmle.label | simple_source(...) | | main.rs:384:10:384:10 | s | semmle.label | s | @@ -735,16 +740,16 @@ nodes | main.rs:391:9:391:9 | s | semmle.label | s | | main.rs:391:13:391:22 | source(...) | semmle.label | source(...) | | main.rs:391:13:391:22 | source(...) | semmle.label | source(...) | -| main.rs:392:5:392:15 | simple_sink | semmle.label | simple_sink | -| main.rs:392:5:392:15 | simple_sink | semmle.label | simple_sink | | main.rs:392:17:392:17 | s | semmle.label | s | | main.rs:392:17:392:17 | s | semmle.label | s | -| main.rs:400:5:400:14 | arg_source | semmle.label | arg_source | -| main.rs:400:5:400:14 | arg_source | semmle.label | arg_source | -| main.rs:400:16:400:16 | [post] i | semmle.label | [post] i | -| main.rs:400:16:400:16 | [post] i | semmle.label | [post] i | +| main.rs:400:16:400:16 | i | semmle.label | i | +| main.rs:400:16:400:16 | i | semmle.label | i | | main.rs:401:10:401:10 | i | semmle.label | i | | main.rs:401:10:401:10 | i | semmle.label | i | +| main.rs:410:26:410:31 | ...: i64 | semmle.label | ...: i64 | +| main.rs:410:26:410:31 | ...: i64 | semmle.label | ...: i64 | +| main.rs:411:14:411:14 | i | semmle.label | i | +| main.rs:411:14:411:14 | i | semmle.label | i | | main.rs:464:9:464:10 | x1 | semmle.label | x1 | | main.rs:464:9:464:10 | x1 | semmle.label | x1 | | main.rs:464:14:464:23 | source(...) | semmle.label | source(...) | @@ -781,20 +786,20 @@ nodes | main.rs:486:14:486:23 | source(...) | semmle.label | source(...) | | main.rs:486:14:486:27 | ... < ... | semmle.label | ... < ... | | main.rs:487:10:487:11 | x6 | semmle.label | x6 | -| main.rs:502:10:502:25 | generated_source | semmle.label | generated_source | -| main.rs:502:10:502:25 | generated_source | semmle.label | generated_source | | main.rs:502:10:502:28 | generated_source(...) | semmle.label | generated_source(...) | | main.rs:502:10:502:28 | generated_source(...) | semmle.label | generated_source(...) | -| main.rs:504:10:504:30 | neutral_manual_source | semmle.label | neutral_manual_source | -| main.rs:504:10:504:30 | neutral_manual_source | semmle.label | neutral_manual_source | +| main.rs:502:10:502:28 | generated_source(...) | semmle.label | generated_source(...) | +| main.rs:502:10:502:28 | generated_source(...) | semmle.label | generated_source(...) | +| main.rs:504:10:504:33 | neutral_manual_source(...) | semmle.label | neutral_manual_source(...) | +| main.rs:504:10:504:33 | neutral_manual_source(...) | semmle.label | neutral_manual_source(...) | | main.rs:504:10:504:33 | neutral_manual_source(...) | semmle.label | neutral_manual_source(...) | | main.rs:504:10:504:33 | neutral_manual_source(...) | semmle.label | neutral_manual_source(...) | -| main.rs:505:5:505:18 | generated_sink | semmle.label | generated_sink | -| main.rs:505:5:505:18 | generated_sink | semmle.label | generated_sink | | main.rs:505:20:505:28 | source(...) | semmle.label | source(...) | | main.rs:505:20:505:28 | source(...) | semmle.label | source(...) | -| main.rs:507:5:507:23 | neutral_manual_sink | semmle.label | neutral_manual_sink | -| main.rs:507:5:507:23 | neutral_manual_sink | semmle.label | neutral_manual_sink | +| main.rs:505:20:505:28 | source(...) | semmle.label | source(...) | +| main.rs:505:20:505:28 | source(...) | semmle.label | source(...) | +| main.rs:507:25:507:33 | source(...) | semmle.label | source(...) | +| main.rs:507:25:507:33 | source(...) | semmle.label | source(...) | | main.rs:507:25:507:33 | source(...) | semmle.label | source(...) | | main.rs:507:25:507:33 | source(...) | semmle.label | source(...) | | main.rs:508:10:508:37 | generated_summary(...) | semmle.label | generated_summary(...) | @@ -846,34 +851,40 @@ invalidSpecComponent | main.rs:222:10:222:10 | t | main.rs:219:13:219:22 | source(...) | main.rs:222:10:222:10 | t | $@ | main.rs:219:13:219:22 | source(...) | source(...) | | main.rs:233:10:233:10 | t | main.rs:231:13:231:22 | source(...) | main.rs:233:10:233:10 | t | $@ | main.rs:231:13:231:22 | source(...) | source(...) | | main.rs:233:10:233:10 | t | main.rs:231:13:231:22 | source(...) | main.rs:233:10:233:10 | t | $@ | main.rs:231:13:231:22 | source(...) | source(...) | -| main.rs:260:47:260:47 | i | main.rs:257:13:257:23 | enum_source | main.rs:260:47:260:47 | i | $@ | main.rs:257:13:257:23 | enum_source | enum_source | -| main.rs:260:47:260:47 | i | main.rs:257:13:257:23 | enum_source | main.rs:260:47:260:47 | i | $@ | main.rs:257:13:257:23 | enum_source | enum_source | -| main.rs:271:33:271:33 | i | main.rs:264:13:264:30 | enum_source_nested | main.rs:271:33:271:33 | i | $@ | main.rs:264:13:264:30 | enum_source_nested | enum_source_nested | -| main.rs:271:33:271:33 | i | main.rs:264:13:264:30 | enum_source_nested | main.rs:271:33:271:33 | i | $@ | main.rs:264:13:264:30 | enum_source_nested | enum_source_nested | -| main.rs:282:47:282:47 | i | main.rs:280:15:280:20 | source | main.rs:282:47:282:47 | i | $@ | main.rs:280:15:280:20 | source | source | -| main.rs:282:47:282:47 | i | main.rs:280:15:280:20 | source | main.rs:282:47:282:47 | i | $@ | main.rs:280:15:280:20 | source | source | -| main.rs:303:26:303:26 | a | main.rs:304:9:304:19 | pass_source | main.rs:303:26:303:26 | a | $@ | main.rs:304:9:304:19 | pass_source | pass_source | -| main.rs:303:26:303:26 | a | main.rs:304:9:304:19 | pass_source | main.rs:303:26:303:26 | a | $@ | main.rs:304:9:304:19 | pass_source | pass_source | -| main.rs:307:18:307:18 | a | main.rs:306:9:306:19 | pass_source | main.rs:307:18:307:18 | a | $@ | main.rs:306:9:306:19 | pass_source | pass_source | -| main.rs:307:18:307:18 | a | main.rs:306:9:306:19 | pass_source | main.rs:307:18:307:18 | a | $@ | main.rs:306:9:306:19 | pass_source | pass_source | -| main.rs:311:18:311:18 | a | main.rs:313:9:313:19 | pass_source | main.rs:311:18:311:18 | a | $@ | main.rs:313:9:313:19 | pass_source | pass_source | -| main.rs:311:18:311:18 | a | main.rs:313:9:313:19 | pass_source | main.rs:311:18:311:18 | a | $@ | main.rs:313:9:313:19 | pass_source | pass_source | -| main.rs:316:18:316:18 | a | main.rs:315:9:315:19 | pass_source | main.rs:316:18:316:18 | a | $@ | main.rs:315:9:315:19 | pass_source | pass_source | -| main.rs:316:18:316:18 | a | main.rs:315:9:315:19 | pass_source | main.rs:316:18:316:18 | a | $@ | main.rs:315:9:315:19 | pass_source | pass_source | -| main.rs:326:41:326:41 | i | main.rs:319:9:319:26 | pass_source_nested | main.rs:326:41:326:41 | i | $@ | main.rs:319:9:319:26 | pass_source_nested | pass_source_nested | -| main.rs:326:41:326:41 | i | main.rs:319:9:319:26 | pass_source_nested | main.rs:326:41:326:41 | i | $@ | main.rs:319:9:319:26 | pass_source_nested | pass_source_nested | -| main.rs:365:5:365:13 | enum_sink | main.rs:364:13:364:22 | source(...) | main.rs:365:5:365:13 | enum_sink | $@ | main.rs:364:13:364:22 | source(...) | source(...) | -| main.rs:365:5:365:13 | enum_sink | main.rs:364:13:364:22 | source(...) | main.rs:365:5:365:13 | enum_sink | $@ | main.rs:364:13:364:22 | source(...) | source(...) | -| main.rs:368:5:368:20 | enum_sink_nested | main.rs:364:13:364:22 | source(...) | main.rs:368:5:368:20 | enum_sink_nested | $@ | main.rs:364:13:364:22 | source(...) | source(...) | -| main.rs:368:5:368:20 | enum_sink_nested | main.rs:364:13:364:22 | source(...) | main.rs:368:5:368:20 | enum_sink_nested | $@ | main.rs:364:13:364:22 | source(...) | source(...) | -| main.rs:374:7:374:10 | sink | main.rs:372:13:372:22 | source(...) | main.rs:374:7:374:10 | sink | $@ | main.rs:372:13:372:22 | source(...) | source(...) | -| main.rs:374:7:374:10 | sink | main.rs:372:13:372:22 | source(...) | main.rs:374:7:374:10 | sink | $@ | main.rs:372:13:372:22 | source(...) | source(...) | -| main.rs:384:10:384:10 | s | main.rs:383:13:383:25 | simple_source | main.rs:384:10:384:10 | s | $@ | main.rs:383:13:383:25 | simple_source | simple_source | -| main.rs:384:10:384:10 | s | main.rs:383:13:383:25 | simple_source | main.rs:384:10:384:10 | s | $@ | main.rs:383:13:383:25 | simple_source | simple_source | -| main.rs:392:5:392:15 | simple_sink | main.rs:391:13:391:22 | source(...) | main.rs:392:5:392:15 | simple_sink | $@ | main.rs:391:13:391:22 | source(...) | source(...) | -| main.rs:392:5:392:15 | simple_sink | main.rs:391:13:391:22 | source(...) | main.rs:392:5:392:15 | simple_sink | $@ | main.rs:391:13:391:22 | source(...) | source(...) | -| main.rs:401:10:401:10 | i | main.rs:400:5:400:14 | arg_source | main.rs:401:10:401:10 | i | $@ | main.rs:400:5:400:14 | arg_source | arg_source | -| main.rs:401:10:401:10 | i | main.rs:400:5:400:14 | arg_source | main.rs:401:10:401:10 | i | $@ | main.rs:400:5:400:14 | arg_source | arg_source | +| main.rs:260:47:260:47 | i | main.rs:257:13:257:27 | enum_source(...) | main.rs:260:47:260:47 | i | $@ | main.rs:257:13:257:27 | enum_source(...) | enum_source(...) | +| main.rs:260:47:260:47 | i | main.rs:257:13:257:27 | enum_source(...) | main.rs:260:47:260:47 | i | $@ | main.rs:257:13:257:27 | enum_source(...) | enum_source(...) | +| main.rs:271:33:271:33 | i | main.rs:264:13:264:34 | enum_source_nested(...) | main.rs:271:33:271:33 | i | $@ | main.rs:264:13:264:34 | enum_source_nested(...) | enum_source_nested(...) | +| main.rs:271:33:271:33 | i | main.rs:264:13:264:34 | enum_source_nested(...) | main.rs:271:33:271:33 | i | $@ | main.rs:264:13:264:34 | enum_source_nested(...) | enum_source_nested(...) | +| main.rs:282:47:282:47 | i | main.rs:280:13:280:24 | e.source(...) | main.rs:282:47:282:47 | i | $@ | main.rs:280:13:280:24 | e.source(...) | e.source(...) | +| main.rs:282:47:282:47 | i | main.rs:280:13:280:24 | e.source(...) | main.rs:282:47:282:47 | i | $@ | main.rs:280:13:280:24 | e.source(...) | e.source(...) | +| main.rs:303:26:303:26 | a | main.rs:304:24:304:24 | a | main.rs:303:26:303:26 | a | $@ | main.rs:304:24:304:24 | a | a | +| main.rs:303:26:303:26 | a | main.rs:304:24:304:24 | a | main.rs:303:26:303:26 | a | $@ | main.rs:304:24:304:24 | a | a | +| main.rs:307:18:307:18 | a | main.rs:306:24:308:9 | \|...\| ... | main.rs:307:18:307:18 | a | $@ | main.rs:306:24:308:9 | \|...\| ... | \|...\| ... | +| main.rs:307:18:307:18 | a | main.rs:306:24:308:9 | \|...\| ... | main.rs:307:18:307:18 | a | $@ | main.rs:306:24:308:9 | \|...\| ... | \|...\| ... | +| main.rs:311:18:311:18 | a | main.rs:313:24:313:24 | f | main.rs:311:18:311:18 | a | $@ | main.rs:313:24:313:24 | f | f | +| main.rs:311:18:311:18 | a | main.rs:313:24:313:24 | f | main.rs:311:18:311:18 | a | $@ | main.rs:313:24:313:24 | f | f | +| main.rs:316:18:316:18 | a | main.rs:315:24:317:9 | \|...\| ... | main.rs:316:18:316:18 | a | $@ | main.rs:315:24:317:9 | \|...\| ... | \|...\| ... | +| main.rs:316:18:316:18 | a | main.rs:315:24:317:9 | \|...\| ... | main.rs:316:18:316:18 | a | $@ | main.rs:315:24:317:9 | \|...\| ... | \|...\| ... | +| main.rs:326:41:326:41 | i | main.rs:319:31:331:9 | \|...\| ... | main.rs:326:41:326:41 | i | $@ | main.rs:319:31:331:9 | \|...\| ... | \|...\| ... | +| main.rs:326:41:326:41 | i | main.rs:319:31:331:9 | \|...\| ... | main.rs:326:41:326:41 | i | $@ | main.rs:319:31:331:9 | \|...\| ... | \|...\| ... | +| main.rs:347:19:347:19 | a | main.rs:346:21:346:29 | source(...) | main.rs:347:19:347:19 | a | $@ | main.rs:346:21:346:29 | source(...) | source(...) | +| main.rs:347:19:347:19 | a | main.rs:346:21:346:29 | source(...) | main.rs:347:19:347:19 | a | $@ | main.rs:346:21:346:29 | source(...) | source(...) | +| main.rs:353:26:353:26 | b | main.rs:350:21:350:29 | source(...) | main.rs:353:26:353:26 | b | $@ | main.rs:350:21:350:29 | source(...) | source(...) | +| main.rs:353:26:353:26 | b | main.rs:350:21:350:29 | source(...) | main.rs:353:26:353:26 | b | $@ | main.rs:350:21:350:29 | source(...) | source(...) | +| main.rs:365:15:365:43 | ...::C {...} | main.rs:364:13:364:22 | source(...) | main.rs:365:15:365:43 | ...::C {...} | $@ | main.rs:364:13:364:22 | source(...) | source(...) | +| main.rs:365:15:365:43 | ...::C {...} | main.rs:364:13:364:22 | source(...) | main.rs:365:15:365:43 | ...::C {...} | $@ | main.rs:364:13:364:22 | source(...) | source(...) | +| main.rs:368:22:368:56 | ...::E {...} | main.rs:364:13:364:22 | source(...) | main.rs:368:22:368:56 | ...::E {...} | $@ | main.rs:364:13:364:22 | source(...) | source(...) | +| main.rs:368:22:368:56 | ...::E {...} | main.rs:364:13:364:22 | source(...) | main.rs:368:22:368:56 | ...::E {...} | $@ | main.rs:364:13:364:22 | source(...) | source(...) | +| main.rs:374:5:374:5 | e | main.rs:372:13:372:22 | source(...) | main.rs:374:5:374:5 | e | $@ | main.rs:372:13:372:22 | source(...) | source(...) | +| main.rs:374:5:374:5 | e | main.rs:372:13:372:22 | source(...) | main.rs:374:5:374:5 | e | $@ | main.rs:372:13:372:22 | source(...) | source(...) | +| main.rs:384:10:384:10 | s | main.rs:383:13:383:29 | simple_source(...) | main.rs:384:10:384:10 | s | $@ | main.rs:383:13:383:29 | simple_source(...) | simple_source(...) | +| main.rs:384:10:384:10 | s | main.rs:383:13:383:29 | simple_source(...) | main.rs:384:10:384:10 | s | $@ | main.rs:383:13:383:29 | simple_source(...) | simple_source(...) | +| main.rs:392:17:392:17 | s | main.rs:391:13:391:22 | source(...) | main.rs:392:17:392:17 | s | $@ | main.rs:391:13:391:22 | source(...) | source(...) | +| main.rs:392:17:392:17 | s | main.rs:391:13:391:22 | source(...) | main.rs:392:17:392:17 | s | $@ | main.rs:391:13:391:22 | source(...) | source(...) | +| main.rs:401:10:401:10 | i | main.rs:400:16:400:16 | i | main.rs:401:10:401:10 | i | $@ | main.rs:400:16:400:16 | i | i | +| main.rs:401:10:401:10 | i | main.rs:400:16:400:16 | i | main.rs:401:10:401:10 | i | $@ | main.rs:400:16:400:16 | i | i | +| main.rs:411:14:411:14 | i | main.rs:410:26:410:31 | ...: i64 | main.rs:411:14:411:14 | i | $@ | main.rs:410:26:410:31 | ...: i64 | ...: i64 | +| main.rs:411:14:411:14 | i | main.rs:410:26:410:31 | ...: i64 | main.rs:411:14:411:14 | i | $@ | main.rs:410:26:410:31 | ...: i64 | ...: i64 | | main.rs:465:10:465:11 | x1 | main.rs:464:14:464:23 | source(...) | main.rs:465:10:465:11 | x1 | $@ | main.rs:464:14:464:23 | source(...) | source(...) | | main.rs:465:10:465:11 | x1 | main.rs:464:14:464:23 | source(...) | main.rs:465:10:465:11 | x1 | $@ | main.rs:464:14:464:23 | source(...) | source(...) | | main.rs:475:10:475:18 | x2.field1 | main.rs:468:17:468:26 | source(...) | main.rs:475:10:475:18 | x2.field1 | $@ | main.rs:468:17:468:26 | source(...) | source(...) | @@ -882,14 +893,14 @@ invalidSpecComponent | main.rs:481:10:481:11 | x4 | main.rs:480:14:480:23 | source(...) | main.rs:481:10:481:11 | x4 | $@ | main.rs:480:14:480:23 | source(...) | source(...) | | main.rs:484:10:484:11 | x5 | main.rs:483:14:483:23 | source(...) | main.rs:484:10:484:11 | x5 | $@ | main.rs:483:14:483:23 | source(...) | source(...) | | main.rs:487:10:487:11 | x6 | main.rs:486:14:486:23 | source(...) | main.rs:487:10:487:11 | x6 | $@ | main.rs:486:14:486:23 | source(...) | source(...) | -| main.rs:502:10:502:28 | generated_source(...) | main.rs:502:10:502:25 | generated_source | main.rs:502:10:502:28 | generated_source(...) | $@ | main.rs:502:10:502:25 | generated_source | generated_source | -| main.rs:502:10:502:28 | generated_source(...) | main.rs:502:10:502:25 | generated_source | main.rs:502:10:502:28 | generated_source(...) | $@ | main.rs:502:10:502:25 | generated_source | generated_source | -| main.rs:504:10:504:33 | neutral_manual_source(...) | main.rs:504:10:504:30 | neutral_manual_source | main.rs:504:10:504:33 | neutral_manual_source(...) | $@ | main.rs:504:10:504:30 | neutral_manual_source | neutral_manual_source | -| main.rs:504:10:504:33 | neutral_manual_source(...) | main.rs:504:10:504:30 | neutral_manual_source | main.rs:504:10:504:33 | neutral_manual_source(...) | $@ | main.rs:504:10:504:30 | neutral_manual_source | neutral_manual_source | -| main.rs:505:5:505:18 | generated_sink | main.rs:505:20:505:28 | source(...) | main.rs:505:5:505:18 | generated_sink | $@ | main.rs:505:20:505:28 | source(...) | source(...) | -| main.rs:505:5:505:18 | generated_sink | main.rs:505:20:505:28 | source(...) | main.rs:505:5:505:18 | generated_sink | $@ | main.rs:505:20:505:28 | source(...) | source(...) | -| main.rs:507:5:507:23 | neutral_manual_sink | main.rs:507:25:507:33 | source(...) | main.rs:507:5:507:23 | neutral_manual_sink | $@ | main.rs:507:25:507:33 | source(...) | source(...) | -| main.rs:507:5:507:23 | neutral_manual_sink | main.rs:507:25:507:33 | source(...) | main.rs:507:5:507:23 | neutral_manual_sink | $@ | main.rs:507:25:507:33 | source(...) | source(...) | +| main.rs:502:10:502:28 | generated_source(...) | main.rs:502:10:502:28 | generated_source(...) | main.rs:502:10:502:28 | generated_source(...) | $@ | main.rs:502:10:502:28 | generated_source(...) | generated_source(...) | +| main.rs:502:10:502:28 | generated_source(...) | main.rs:502:10:502:28 | generated_source(...) | main.rs:502:10:502:28 | generated_source(...) | $@ | main.rs:502:10:502:28 | generated_source(...) | generated_source(...) | +| main.rs:504:10:504:33 | neutral_manual_source(...) | main.rs:504:10:504:33 | neutral_manual_source(...) | main.rs:504:10:504:33 | neutral_manual_source(...) | $@ | main.rs:504:10:504:33 | neutral_manual_source(...) | neutral_manual_source(...) | +| main.rs:504:10:504:33 | neutral_manual_source(...) | main.rs:504:10:504:33 | neutral_manual_source(...) | main.rs:504:10:504:33 | neutral_manual_source(...) | $@ | main.rs:504:10:504:33 | neutral_manual_source(...) | neutral_manual_source(...) | +| main.rs:505:20:505:28 | source(...) | main.rs:505:20:505:28 | source(...) | main.rs:505:20:505:28 | source(...) | $@ | main.rs:505:20:505:28 | source(...) | source(...) | +| main.rs:505:20:505:28 | source(...) | main.rs:505:20:505:28 | source(...) | main.rs:505:20:505:28 | source(...) | $@ | main.rs:505:20:505:28 | source(...) | source(...) | +| main.rs:507:25:507:33 | source(...) | main.rs:507:25:507:33 | source(...) | main.rs:507:25:507:33 | source(...) | $@ | main.rs:507:25:507:33 | source(...) | source(...) | +| main.rs:507:25:507:33 | source(...) | main.rs:507:25:507:33 | source(...) | main.rs:507:25:507:33 | source(...) | $@ | main.rs:507:25:507:33 | source(...) | source(...) | | main.rs:508:10:508:37 | generated_summary(...) | main.rs:508:28:508:36 | source(...) | main.rs:508:10:508:37 | generated_summary(...) | $@ | main.rs:508:28:508:36 | source(...) | source(...) | | main.rs:508:10:508:37 | generated_summary(...) | main.rs:508:28:508:36 | source(...) | main.rs:508:10:508:37 | generated_summary(...) | $@ | main.rs:508:28:508:36 | source(...) | source(...) | | main.rs:510:10:510:42 | neutral_manual_summary(...) | main.rs:510:33:510:41 | source(...) | main.rs:510:10:510:42 | neutral_manual_summary(...) | $@ | main.rs:510:33:510:41 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected index 5b3e890545b3..200c4c4aa581 100644 --- a/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected @@ -17,88 +17,82 @@ models | 16 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | edges | test.rs:18:13:18:14 | v1 | test.rs:19:14:19:15 | v1 | provenance | | +| test.rs:18:24:18:33 | row.get(...) | test.rs:18:24:18:33 | row.get(...) [Some] | provenance | Src:MaD:7 | | test.rs:18:24:18:33 | row.get(...) [Some] | test.rs:18:24:18:42 | ... .unwrap() | provenance | MaD:15 | | test.rs:18:24:18:42 | ... .unwrap() | test.rs:18:13:18:14 | v1 | provenance | | -| test.rs:18:28:18:30 | get | test.rs:18:24:18:33 | row.get(...) [Some] | provenance | Src:MaD:7 | | test.rs:21:13:21:14 | v2 | test.rs:22:14:22:15 | v2 | provenance | | +| test.rs:21:24:21:37 | row.get_opt(...) | test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:8 | | test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | test.rs:21:24:21:46 | ... .unwrap() [Ok] | provenance | MaD:15 | | test.rs:21:24:21:46 | ... .unwrap() [Ok] | test.rs:21:24:21:55 | ... .unwrap() | provenance | MaD:16 | | test.rs:21:24:21:55 | ... .unwrap() | test.rs:21:13:21:14 | v2 | provenance | | -| test.rs:21:28:21:34 | get_opt | test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:8 | | test.rs:24:13:24:14 | v3 | test.rs:25:14:25:15 | v3 | provenance | | +| test.rs:24:24:24:34 | row.take(...) | test.rs:24:24:24:34 | row.take(...) [Some] | provenance | Src:MaD:9 | | test.rs:24:24:24:34 | row.take(...) [Some] | test.rs:24:24:24:43 | ... .unwrap() | provenance | MaD:15 | | test.rs:24:24:24:43 | ... .unwrap() | test.rs:24:13:24:14 | v3 | provenance | | -| test.rs:24:28:24:31 | take | test.rs:24:24:24:34 | row.take(...) [Some] | provenance | Src:MaD:9 | | test.rs:27:13:27:14 | v4 | test.rs:28:14:28:15 | v4 | provenance | | +| test.rs:27:24:27:38 | row.take_opt(...) | test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:10 | | test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | test.rs:27:24:27:47 | ... .unwrap() [Ok] | provenance | MaD:15 | | test.rs:27:24:27:47 | ... .unwrap() [Ok] | test.rs:27:24:27:56 | ... .unwrap() | provenance | MaD:16 | | test.rs:27:24:27:56 | ... .unwrap() | test.rs:27:13:27:14 | v4 | provenance | | -| test.rs:27:28:27:35 | take_opt | test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:10 | | test.rs:37:13:37:14 | v6 | test.rs:38:14:38:15 | v6 | provenance | | +| test.rs:37:23:37:63 | conn.query_first(...) | test.rs:37:23:37:63 | conn.query_first(...) [Ok, Some] | provenance | Src:MaD:1 | | test.rs:37:23:37:63 | conn.query_first(...) [Ok, Some] | test.rs:37:23:37:64 | TryExpr [Some] | provenance | | | test.rs:37:23:37:64 | TryExpr [Some] | test.rs:37:23:37:73 | ... .unwrap() | provenance | MaD:15 | | test.rs:37:23:37:73 | ... .unwrap() | test.rs:37:13:37:14 | v6 | provenance | | -| test.rs:37:28:37:38 | query_first | test.rs:37:23:37:63 | conn.query_first(...) [Ok, Some] | provenance | Src:MaD:1 | | test.rs:40:13:40:18 | mut t1 [element] | test.rs:42:20:42:21 | t1 [element] | provenance | | +| test.rs:40:22:40:71 | conn.exec_iter(...) | test.rs:40:22:40:71 | conn.exec_iter(...) [Ok, element] | provenance | Src:MaD:6 | | test.rs:40:22:40:71 | conn.exec_iter(...) [Ok, element] | test.rs:40:22:40:72 | TryExpr [element] | provenance | | | test.rs:40:22:40:72 | TryExpr [element] | test.rs:40:13:40:18 | mut t1 [element] | provenance | | -| test.rs:40:27:40:35 | exec_iter | test.rs:40:22:40:71 | conn.exec_iter(...) [Ok, element] | provenance | Src:MaD:6 | +| test.rs:41:14:41:61 | ... .get(...) | test.rs:41:14:41:61 | ... .get(...) [Some] | provenance | Src:MaD:7 | | test.rs:41:14:41:61 | ... .get(...) [Some] | test.rs:41:14:41:70 | ... .unwrap() | provenance | MaD:15 | -| test.rs:41:42:41:44 | get | test.rs:41:14:41:61 | ... .get(...) [Some] | provenance | Src:MaD:7 | | test.rs:42:13:42:15 | row | test.rs:44:22:44:22 | v | provenance | | | test.rs:42:20:42:21 | t1 [element] | test.rs:42:13:42:15 | row | provenance | | -| test.rs:48:22:48:30 | query_map | test.rs:50:14:50:24 | ...: i64 | provenance | Src:MaD:3 | -| test.rs:50:14:50:24 | ...: i64 | test.rs:51:22:51:27 | values | provenance | | -| test.rs:55:22:55:30 | query_map | test.rs:57:14:57:39 | ...: ... | provenance | Src:MaD:3 | -| test.rs:57:14:57:39 | ...: ... | test.rs:58:22:58:29 | values.0 | provenance | | -| test.rs:57:14:57:39 | ...: ... | test.rs:59:22:59:29 | values.1 | provenance | | -| test.rs:57:14:57:39 | ...: ... | test.rs:60:22:60:29 | values.2 | provenance | | +| test.rs:50:13:52:13 | \|...\| ... | test.rs:51:22:51:27 | values | provenance | Src:MaD:3 | +| test.rs:57:13:61:13 | \|...\| ... | test.rs:58:22:58:29 | values.0 | provenance | Src:MaD:3 | +| test.rs:57:13:61:13 | \|...\| ... | test.rs:59:22:59:29 | values.1 | provenance | Src:MaD:3 | +| test.rs:57:13:61:13 | \|...\| ... | test.rs:60:22:60:29 | values.2 | provenance | Src:MaD:3 | | test.rs:64:13:64:17 | total | test.rs:68:14:68:18 | total | provenance | | | test.rs:64:13:64:17 | total [Wrapping] | test.rs:68:14:68:18 | total | provenance | | | test.rs:64:21:67:10 | conn.query_fold(...) [Ok, Wrapping] | test.rs:64:21:67:11 | TryExpr [Wrapping] | provenance | | | test.rs:64:21:67:10 | conn.query_fold(...) [Ok] | test.rs:64:21:67:11 | TryExpr | provenance | | | test.rs:64:21:67:11 | TryExpr | test.rs:64:13:64:17 | total | provenance | | | test.rs:64:21:67:11 | TryExpr [Wrapping] | test.rs:64:13:64:17 | total [Wrapping] | provenance | | -| test.rs:64:26:64:35 | query_fold | test.rs:64:76:64:83 | ...: i64 | provenance | Src:MaD:2 | -| test.rs:64:76:64:83 | ...: i64 | test.rs:65:18:65:20 | row | provenance | | -| test.rs:64:76:64:83 | ...: i64 | test.rs:66:19:66:21 | row | provenance | | +| test.rs:64:65:67:9 | \|...\| ... | test.rs:65:18:65:20 | row | provenance | Src:MaD:2 | +| test.rs:64:65:67:9 | \|...\| ... | test.rs:66:19:66:21 | row | provenance | Src:MaD:2 | | test.rs:64:86:67:9 | { ... } | test.rs:64:21:67:10 | conn.query_fold(...) [Ok] | provenance | MaD:13 | | test.rs:64:86:67:9 | { ... } [Wrapping] | test.rs:64:21:67:10 | conn.query_fold(...) [Ok, Wrapping] | provenance | MaD:13 | | test.rs:66:13:66:21 | ... + ... | test.rs:64:86:67:9 | { ... } | provenance | | | test.rs:66:13:66:21 | ... + ... [Wrapping] | test.rs:64:86:67:9 | { ... } [Wrapping] | provenance | | | test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... | provenance | MaD:12 | | test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... [Wrapping] | provenance | MaD:11 | -| test.rs:70:22:70:31 | query_fold | test.rs:70:83:70:105 | ...: ... | provenance | Src:MaD:2 | -| test.rs:70:83:70:105 | ...: ... | test.rs:71:17:71:18 | id | provenance | | -| test.rs:70:83:70:105 | ...: ... | test.rs:72:17:72:20 | name | provenance | | -| test.rs:70:83:70:105 | ...: ... | test.rs:73:17:73:19 | age | provenance | | +| test.rs:70:72:78:9 | \|...\| ... | test.rs:71:17:71:18 | id | provenance | Src:MaD:2 | +| test.rs:70:72:78:9 | \|...\| ... | test.rs:72:17:72:20 | name | provenance | Src:MaD:2 | +| test.rs:70:72:78:9 | \|...\| ... | test.rs:73:17:73:19 | age | provenance | Src:MaD:2 | | test.rs:71:17:71:18 | id | test.rs:74:18:74:19 | id | provenance | | | test.rs:72:17:72:20 | name | test.rs:75:18:75:21 | name | provenance | | | test.rs:73:17:73:19 | age | test.rs:76:18:76:20 | age | provenance | | | test.rs:105:13:105:14 | v1 | test.rs:106:14:106:15 | v1 | provenance | | +| test.rs:105:24:105:33 | row.get(...) | test.rs:105:24:105:33 | row.get(...) [Some] | provenance | Src:MaD:7 | | test.rs:105:24:105:33 | row.get(...) [Some] | test.rs:105:24:105:42 | ... .unwrap() | provenance | MaD:15 | | test.rs:105:24:105:42 | ... .unwrap() | test.rs:105:13:105:14 | v1 | provenance | | -| test.rs:105:28:105:30 | get | test.rs:105:24:105:33 | row.get(...) [Some] | provenance | Src:MaD:7 | | test.rs:108:13:108:14 | v2 | test.rs:109:14:109:15 | v2 | provenance | | +| test.rs:108:24:108:37 | row.get_opt(...) | test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:8 | | test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | test.rs:108:24:108:46 | ... .unwrap() [Ok] | provenance | MaD:15 | | test.rs:108:24:108:46 | ... .unwrap() [Ok] | test.rs:108:24:108:55 | ... .unwrap() | provenance | MaD:16 | | test.rs:108:24:108:55 | ... .unwrap() | test.rs:108:13:108:14 | v2 | provenance | | -| test.rs:108:28:108:34 | get_opt | test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:8 | | test.rs:111:13:111:14 | v3 | test.rs:112:14:112:15 | v3 | provenance | | +| test.rs:111:24:111:34 | row.take(...) | test.rs:111:24:111:34 | row.take(...) [Some] | provenance | Src:MaD:9 | | test.rs:111:24:111:34 | row.take(...) [Some] | test.rs:111:24:111:43 | ... .unwrap() | provenance | MaD:15 | | test.rs:111:24:111:43 | ... .unwrap() | test.rs:111:13:111:14 | v3 | provenance | | -| test.rs:111:28:111:31 | take | test.rs:111:24:111:34 | row.take(...) [Some] | provenance | Src:MaD:9 | | test.rs:114:13:114:14 | v4 | test.rs:115:14:115:15 | v4 | provenance | | +| test.rs:114:24:114:38 | row.take_opt(...) | test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:10 | | test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | test.rs:114:24:114:47 | ... .unwrap() [Ok] | provenance | MaD:15 | | test.rs:114:24:114:47 | ... .unwrap() [Ok] | test.rs:114:24:114:56 | ... .unwrap() | provenance | MaD:16 | | test.rs:114:24:114:56 | ... .unwrap() | test.rs:114:13:114:14 | v4 | provenance | | -| test.rs:114:28:114:35 | take_opt | test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:10 | -| test.rs:135:22:135:30 | query_map | test.rs:137:14:137:24 | ...: i64 | provenance | Src:MaD:5 | -| test.rs:137:14:137:24 | ...: i64 | test.rs:138:22:138:27 | values | provenance | | -| test.rs:142:22:142:30 | query_map | test.rs:144:14:144:39 | ...: ... | provenance | Src:MaD:5 | -| test.rs:144:14:144:39 | ...: ... | test.rs:145:22:145:29 | values.0 | provenance | | -| test.rs:144:14:144:39 | ...: ... | test.rs:146:22:146:29 | values.1 | provenance | | -| test.rs:144:14:144:39 | ...: ... | test.rs:147:22:147:29 | values.2 | provenance | | +| test.rs:137:13:139:13 | \|...\| ... | test.rs:138:22:138:27 | values | provenance | Src:MaD:5 | +| test.rs:144:13:148:13 | \|...\| ... | test.rs:145:22:145:29 | values.0 | provenance | Src:MaD:5 | +| test.rs:144:13:148:13 | \|...\| ... | test.rs:146:22:146:29 | values.1 | provenance | Src:MaD:5 | +| test.rs:144:13:148:13 | \|...\| ... | test.rs:147:22:147:29 | values.2 | provenance | Src:MaD:5 | | test.rs:151:13:151:17 | total | test.rs:155:14:155:18 | total | provenance | | | test.rs:151:13:151:17 | total [Wrapping] | test.rs:155:14:155:18 | total | provenance | | | test.rs:151:21:154:10 | conn.query_fold(...) [future, Ok, Wrapping] | test.rs:151:21:154:16 | await ... [Ok, Wrapping] | provenance | | @@ -107,66 +101,62 @@ edges | test.rs:151:21:154:16 | await ... [Ok] | test.rs:151:21:154:17 | TryExpr | provenance | | | test.rs:151:21:154:17 | TryExpr | test.rs:151:13:151:17 | total | provenance | | | test.rs:151:21:154:17 | TryExpr [Wrapping] | test.rs:151:13:151:17 | total [Wrapping] | provenance | | -| test.rs:151:26:151:35 | query_fold | test.rs:151:76:151:83 | ...: i64 | provenance | Src:MaD:4 | -| test.rs:151:76:151:83 | ...: i64 | test.rs:152:18:152:20 | row | provenance | | -| test.rs:151:76:151:83 | ...: i64 | test.rs:153:19:153:21 | row | provenance | | +| test.rs:151:65:154:9 | \|...\| ... | test.rs:152:18:152:20 | row | provenance | Src:MaD:4 | +| test.rs:151:65:154:9 | \|...\| ... | test.rs:153:19:153:21 | row | provenance | Src:MaD:4 | | test.rs:151:86:154:9 | { ... } | test.rs:151:21:154:10 | conn.query_fold(...) [future, Ok] | provenance | MaD:14 | | test.rs:151:86:154:9 | { ... } [Wrapping] | test.rs:151:21:154:10 | conn.query_fold(...) [future, Ok, Wrapping] | provenance | MaD:14 | | test.rs:153:13:153:21 | ... + ... | test.rs:151:86:154:9 | { ... } | provenance | | | test.rs:153:13:153:21 | ... + ... [Wrapping] | test.rs:151:86:154:9 | { ... } [Wrapping] | provenance | | | test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... | provenance | MaD:12 | | test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... [Wrapping] | provenance | MaD:11 | -| test.rs:157:22:157:31 | query_fold | test.rs:157:83:157:105 | ...: ... | provenance | Src:MaD:4 | -| test.rs:157:83:157:105 | ...: ... | test.rs:158:17:158:18 | id | provenance | | -| test.rs:157:83:157:105 | ...: ... | test.rs:159:17:159:20 | name | provenance | | -| test.rs:157:83:157:105 | ...: ... | test.rs:160:17:160:19 | age | provenance | | +| test.rs:157:72:165:9 | \|...\| ... | test.rs:158:17:158:18 | id | provenance | Src:MaD:4 | +| test.rs:157:72:165:9 | \|...\| ... | test.rs:159:17:159:20 | name | provenance | Src:MaD:4 | +| test.rs:157:72:165:9 | \|...\| ... | test.rs:160:17:160:19 | age | provenance | Src:MaD:4 | | test.rs:158:17:158:18 | id | test.rs:161:18:161:19 | id | provenance | | | test.rs:159:17:159:20 | name | test.rs:162:18:162:21 | name | provenance | | | test.rs:160:17:160:19 | age | test.rs:163:18:163:20 | age | provenance | | nodes | test.rs:18:13:18:14 | v1 | semmle.label | v1 | +| test.rs:18:24:18:33 | row.get(...) | semmle.label | row.get(...) | | test.rs:18:24:18:33 | row.get(...) [Some] | semmle.label | row.get(...) [Some] | | test.rs:18:24:18:42 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:18:28:18:30 | get | semmle.label | get | | test.rs:19:14:19:15 | v1 | semmle.label | v1 | | test.rs:21:13:21:14 | v2 | semmle.label | v2 | +| test.rs:21:24:21:37 | row.get_opt(...) | semmle.label | row.get_opt(...) | | test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | semmle.label | row.get_opt(...) [Some, Ok] | | test.rs:21:24:21:46 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | | test.rs:21:24:21:55 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:21:28:21:34 | get_opt | semmle.label | get_opt | | test.rs:22:14:22:15 | v2 | semmle.label | v2 | | test.rs:24:13:24:14 | v3 | semmle.label | v3 | +| test.rs:24:24:24:34 | row.take(...) | semmle.label | row.take(...) | | test.rs:24:24:24:34 | row.take(...) [Some] | semmle.label | row.take(...) [Some] | | test.rs:24:24:24:43 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:24:28:24:31 | take | semmle.label | take | | test.rs:25:14:25:15 | v3 | semmle.label | v3 | | test.rs:27:13:27:14 | v4 | semmle.label | v4 | +| test.rs:27:24:27:38 | row.take_opt(...) | semmle.label | row.take_opt(...) | | test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | semmle.label | row.take_opt(...) [Some, Ok] | | test.rs:27:24:27:47 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | | test.rs:27:24:27:56 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:27:28:27:35 | take_opt | semmle.label | take_opt | | test.rs:28:14:28:15 | v4 | semmle.label | v4 | | test.rs:37:13:37:14 | v6 | semmle.label | v6 | +| test.rs:37:23:37:63 | conn.query_first(...) | semmle.label | conn.query_first(...) | | test.rs:37:23:37:63 | conn.query_first(...) [Ok, Some] | semmle.label | conn.query_first(...) [Ok, Some] | | test.rs:37:23:37:64 | TryExpr [Some] | semmle.label | TryExpr [Some] | | test.rs:37:23:37:73 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:37:28:37:38 | query_first | semmle.label | query_first | | test.rs:38:14:38:15 | v6 | semmle.label | v6 | | test.rs:40:13:40:18 | mut t1 [element] | semmle.label | mut t1 [element] | +| test.rs:40:22:40:71 | conn.exec_iter(...) | semmle.label | conn.exec_iter(...) | | test.rs:40:22:40:71 | conn.exec_iter(...) [Ok, element] | semmle.label | conn.exec_iter(...) [Ok, element] | | test.rs:40:22:40:72 | TryExpr [element] | semmle.label | TryExpr [element] | -| test.rs:40:27:40:35 | exec_iter | semmle.label | exec_iter | +| test.rs:41:14:41:61 | ... .get(...) | semmle.label | ... .get(...) | | test.rs:41:14:41:61 | ... .get(...) [Some] | semmle.label | ... .get(...) [Some] | | test.rs:41:14:41:70 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:41:42:41:44 | get | semmle.label | get | | test.rs:42:13:42:15 | row | semmle.label | row | | test.rs:42:20:42:21 | t1 [element] | semmle.label | t1 [element] | | test.rs:44:22:44:22 | v | semmle.label | v | -| test.rs:48:22:48:30 | query_map | semmle.label | query_map | -| test.rs:50:14:50:24 | ...: i64 | semmle.label | ...: i64 | +| test.rs:50:13:52:13 | \|...\| ... | semmle.label | \|...\| ... | | test.rs:51:22:51:27 | values | semmle.label | values | -| test.rs:55:22:55:30 | query_map | semmle.label | query_map | -| test.rs:57:14:57:39 | ...: ... | semmle.label | ...: ... | +| test.rs:57:13:61:13 | \|...\| ... | semmle.label | \|...\| ... | | test.rs:58:22:58:29 | values.0 | semmle.label | values.0 | | test.rs:59:22:59:29 | values.1 | semmle.label | values.1 | | test.rs:60:22:60:29 | values.2 | semmle.label | values.2 | @@ -176,8 +166,7 @@ nodes | test.rs:64:21:67:10 | conn.query_fold(...) [Ok] | semmle.label | conn.query_fold(...) [Ok] | | test.rs:64:21:67:11 | TryExpr | semmle.label | TryExpr | | test.rs:64:21:67:11 | TryExpr [Wrapping] | semmle.label | TryExpr [Wrapping] | -| test.rs:64:26:64:35 | query_fold | semmle.label | query_fold | -| test.rs:64:76:64:83 | ...: i64 | semmle.label | ...: i64 | +| test.rs:64:65:67:9 | \|...\| ... | semmle.label | \|...\| ... | | test.rs:64:86:67:9 | { ... } | semmle.label | { ... } | | test.rs:64:86:67:9 | { ... } [Wrapping] | semmle.label | { ... } [Wrapping] | | test.rs:65:18:65:20 | row | semmle.label | row | @@ -185,8 +174,7 @@ nodes | test.rs:66:13:66:21 | ... + ... [Wrapping] | semmle.label | ... + ... [Wrapping] | | test.rs:66:19:66:21 | row | semmle.label | row | | test.rs:68:14:68:18 | total | semmle.label | total | -| test.rs:70:22:70:31 | query_fold | semmle.label | query_fold | -| test.rs:70:83:70:105 | ...: ... | semmle.label | ...: ... | +| test.rs:70:72:78:9 | \|...\| ... | semmle.label | \|...\| ... | | test.rs:71:17:71:18 | id | semmle.label | id | | test.rs:72:17:72:20 | name | semmle.label | name | | test.rs:73:17:73:19 | age | semmle.label | age | @@ -194,32 +182,30 @@ nodes | test.rs:75:18:75:21 | name | semmle.label | name | | test.rs:76:18:76:20 | age | semmle.label | age | | test.rs:105:13:105:14 | v1 | semmle.label | v1 | +| test.rs:105:24:105:33 | row.get(...) | semmle.label | row.get(...) | | test.rs:105:24:105:33 | row.get(...) [Some] | semmle.label | row.get(...) [Some] | | test.rs:105:24:105:42 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:105:28:105:30 | get | semmle.label | get | | test.rs:106:14:106:15 | v1 | semmle.label | v1 | | test.rs:108:13:108:14 | v2 | semmle.label | v2 | +| test.rs:108:24:108:37 | row.get_opt(...) | semmle.label | row.get_opt(...) | | test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | semmle.label | row.get_opt(...) [Some, Ok] | | test.rs:108:24:108:46 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | | test.rs:108:24:108:55 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:108:28:108:34 | get_opt | semmle.label | get_opt | | test.rs:109:14:109:15 | v2 | semmle.label | v2 | | test.rs:111:13:111:14 | v3 | semmle.label | v3 | +| test.rs:111:24:111:34 | row.take(...) | semmle.label | row.take(...) | | test.rs:111:24:111:34 | row.take(...) [Some] | semmle.label | row.take(...) [Some] | | test.rs:111:24:111:43 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:111:28:111:31 | take | semmle.label | take | | test.rs:112:14:112:15 | v3 | semmle.label | v3 | | test.rs:114:13:114:14 | v4 | semmle.label | v4 | +| test.rs:114:24:114:38 | row.take_opt(...) | semmle.label | row.take_opt(...) | | test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | semmle.label | row.take_opt(...) [Some, Ok] | | test.rs:114:24:114:47 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | | test.rs:114:24:114:56 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:114:28:114:35 | take_opt | semmle.label | take_opt | | test.rs:115:14:115:15 | v4 | semmle.label | v4 | -| test.rs:135:22:135:30 | query_map | semmle.label | query_map | -| test.rs:137:14:137:24 | ...: i64 | semmle.label | ...: i64 | +| test.rs:137:13:139:13 | \|...\| ... | semmle.label | \|...\| ... | | test.rs:138:22:138:27 | values | semmle.label | values | -| test.rs:142:22:142:30 | query_map | semmle.label | query_map | -| test.rs:144:14:144:39 | ...: ... | semmle.label | ...: ... | +| test.rs:144:13:148:13 | \|...\| ... | semmle.label | \|...\| ... | | test.rs:145:22:145:29 | values.0 | semmle.label | values.0 | | test.rs:146:22:146:29 | values.1 | semmle.label | values.1 | | test.rs:147:22:147:29 | values.2 | semmle.label | values.2 | @@ -231,8 +217,7 @@ nodes | test.rs:151:21:154:16 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:151:21:154:17 | TryExpr | semmle.label | TryExpr | | test.rs:151:21:154:17 | TryExpr [Wrapping] | semmle.label | TryExpr [Wrapping] | -| test.rs:151:26:151:35 | query_fold | semmle.label | query_fold | -| test.rs:151:76:151:83 | ...: i64 | semmle.label | ...: i64 | +| test.rs:151:65:154:9 | \|...\| ... | semmle.label | \|...\| ... | | test.rs:151:86:154:9 | { ... } | semmle.label | { ... } | | test.rs:151:86:154:9 | { ... } [Wrapping] | semmle.label | { ... } [Wrapping] | | test.rs:152:18:152:20 | row | semmle.label | row | @@ -240,8 +225,7 @@ nodes | test.rs:153:13:153:21 | ... + ... [Wrapping] | semmle.label | ... + ... [Wrapping] | | test.rs:153:19:153:21 | row | semmle.label | row | | test.rs:155:14:155:18 | total | semmle.label | total | -| test.rs:157:22:157:31 | query_fold | semmle.label | query_fold | -| test.rs:157:83:157:105 | ...: ... | semmle.label | ...: ... | +| test.rs:157:72:165:9 | \|...\| ... | semmle.label | \|...\| ... | | test.rs:158:17:158:18 | id | semmle.label | id | | test.rs:159:17:159:20 | name | semmle.label | name | | test.rs:160:17:160:19 | age | semmle.label | age | @@ -251,32 +235,32 @@ nodes subpaths testFailures #select -| test.rs:19:14:19:15 | v1 | test.rs:18:28:18:30 | get | test.rs:19:14:19:15 | v1 | $@ | test.rs:18:28:18:30 | get | get | -| test.rs:22:14:22:15 | v2 | test.rs:21:28:21:34 | get_opt | test.rs:22:14:22:15 | v2 | $@ | test.rs:21:28:21:34 | get_opt | get_opt | -| test.rs:25:14:25:15 | v3 | test.rs:24:28:24:31 | take | test.rs:25:14:25:15 | v3 | $@ | test.rs:24:28:24:31 | take | take | -| test.rs:28:14:28:15 | v4 | test.rs:27:28:27:35 | take_opt | test.rs:28:14:28:15 | v4 | $@ | test.rs:27:28:27:35 | take_opt | take_opt | -| test.rs:38:14:38:15 | v6 | test.rs:37:28:37:38 | query_first | test.rs:38:14:38:15 | v6 | $@ | test.rs:37:28:37:38 | query_first | query_first | -| test.rs:41:14:41:70 | ... .unwrap() | test.rs:41:42:41:44 | get | test.rs:41:14:41:70 | ... .unwrap() | $@ | test.rs:41:42:41:44 | get | get | -| test.rs:44:22:44:22 | v | test.rs:40:27:40:35 | exec_iter | test.rs:44:22:44:22 | v | $@ | test.rs:40:27:40:35 | exec_iter | exec_iter | -| test.rs:51:22:51:27 | values | test.rs:48:22:48:30 | query_map | test.rs:51:22:51:27 | values | $@ | test.rs:48:22:48:30 | query_map | query_map | -| test.rs:58:22:58:29 | values.0 | test.rs:55:22:55:30 | query_map | test.rs:58:22:58:29 | values.0 | $@ | test.rs:55:22:55:30 | query_map | query_map | -| test.rs:59:22:59:29 | values.1 | test.rs:55:22:55:30 | query_map | test.rs:59:22:59:29 | values.1 | $@ | test.rs:55:22:55:30 | query_map | query_map | -| test.rs:60:22:60:29 | values.2 | test.rs:55:22:55:30 | query_map | test.rs:60:22:60:29 | values.2 | $@ | test.rs:55:22:55:30 | query_map | query_map | -| test.rs:65:18:65:20 | row | test.rs:64:26:64:35 | query_fold | test.rs:65:18:65:20 | row | $@ | test.rs:64:26:64:35 | query_fold | query_fold | -| test.rs:68:14:68:18 | total | test.rs:64:26:64:35 | query_fold | test.rs:68:14:68:18 | total | $@ | test.rs:64:26:64:35 | query_fold | query_fold | -| test.rs:74:18:74:19 | id | test.rs:70:22:70:31 | query_fold | test.rs:74:18:74:19 | id | $@ | test.rs:70:22:70:31 | query_fold | query_fold | -| test.rs:75:18:75:21 | name | test.rs:70:22:70:31 | query_fold | test.rs:75:18:75:21 | name | $@ | test.rs:70:22:70:31 | query_fold | query_fold | -| test.rs:76:18:76:20 | age | test.rs:70:22:70:31 | query_fold | test.rs:76:18:76:20 | age | $@ | test.rs:70:22:70:31 | query_fold | query_fold | -| test.rs:106:14:106:15 | v1 | test.rs:105:28:105:30 | get | test.rs:106:14:106:15 | v1 | $@ | test.rs:105:28:105:30 | get | get | -| test.rs:109:14:109:15 | v2 | test.rs:108:28:108:34 | get_opt | test.rs:109:14:109:15 | v2 | $@ | test.rs:108:28:108:34 | get_opt | get_opt | -| test.rs:112:14:112:15 | v3 | test.rs:111:28:111:31 | take | test.rs:112:14:112:15 | v3 | $@ | test.rs:111:28:111:31 | take | take | -| test.rs:115:14:115:15 | v4 | test.rs:114:28:114:35 | take_opt | test.rs:115:14:115:15 | v4 | $@ | test.rs:114:28:114:35 | take_opt | take_opt | -| test.rs:138:22:138:27 | values | test.rs:135:22:135:30 | query_map | test.rs:138:22:138:27 | values | $@ | test.rs:135:22:135:30 | query_map | query_map | -| test.rs:145:22:145:29 | values.0 | test.rs:142:22:142:30 | query_map | test.rs:145:22:145:29 | values.0 | $@ | test.rs:142:22:142:30 | query_map | query_map | -| test.rs:146:22:146:29 | values.1 | test.rs:142:22:142:30 | query_map | test.rs:146:22:146:29 | values.1 | $@ | test.rs:142:22:142:30 | query_map | query_map | -| test.rs:147:22:147:29 | values.2 | test.rs:142:22:142:30 | query_map | test.rs:147:22:147:29 | values.2 | $@ | test.rs:142:22:142:30 | query_map | query_map | -| test.rs:152:18:152:20 | row | test.rs:151:26:151:35 | query_fold | test.rs:152:18:152:20 | row | $@ | test.rs:151:26:151:35 | query_fold | query_fold | -| test.rs:155:14:155:18 | total | test.rs:151:26:151:35 | query_fold | test.rs:155:14:155:18 | total | $@ | test.rs:151:26:151:35 | query_fold | query_fold | -| test.rs:161:18:161:19 | id | test.rs:157:22:157:31 | query_fold | test.rs:161:18:161:19 | id | $@ | test.rs:157:22:157:31 | query_fold | query_fold | -| test.rs:162:18:162:21 | name | test.rs:157:22:157:31 | query_fold | test.rs:162:18:162:21 | name | $@ | test.rs:157:22:157:31 | query_fold | query_fold | -| test.rs:163:18:163:20 | age | test.rs:157:22:157:31 | query_fold | test.rs:163:18:163:20 | age | $@ | test.rs:157:22:157:31 | query_fold | query_fold | +| test.rs:19:14:19:15 | v1 | test.rs:18:24:18:33 | row.get(...) | test.rs:19:14:19:15 | v1 | $@ | test.rs:18:24:18:33 | row.get(...) | row.get(...) | +| test.rs:22:14:22:15 | v2 | test.rs:21:24:21:37 | row.get_opt(...) | test.rs:22:14:22:15 | v2 | $@ | test.rs:21:24:21:37 | row.get_opt(...) | row.get_opt(...) | +| test.rs:25:14:25:15 | v3 | test.rs:24:24:24:34 | row.take(...) | test.rs:25:14:25:15 | v3 | $@ | test.rs:24:24:24:34 | row.take(...) | row.take(...) | +| test.rs:28:14:28:15 | v4 | test.rs:27:24:27:38 | row.take_opt(...) | test.rs:28:14:28:15 | v4 | $@ | test.rs:27:24:27:38 | row.take_opt(...) | row.take_opt(...) | +| test.rs:38:14:38:15 | v6 | test.rs:37:23:37:63 | conn.query_first(...) | test.rs:38:14:38:15 | v6 | $@ | test.rs:37:23:37:63 | conn.query_first(...) | conn.query_first(...) | +| test.rs:41:14:41:70 | ... .unwrap() | test.rs:41:14:41:61 | ... .get(...) | test.rs:41:14:41:70 | ... .unwrap() | $@ | test.rs:41:14:41:61 | ... .get(...) | ... .get(...) | +| test.rs:44:22:44:22 | v | test.rs:40:22:40:71 | conn.exec_iter(...) | test.rs:44:22:44:22 | v | $@ | test.rs:40:22:40:71 | conn.exec_iter(...) | conn.exec_iter(...) | +| test.rs:51:22:51:27 | values | test.rs:50:13:52:13 | \|...\| ... | test.rs:51:22:51:27 | values | $@ | test.rs:50:13:52:13 | \|...\| ... | \|...\| ... | +| test.rs:58:22:58:29 | values.0 | test.rs:57:13:61:13 | \|...\| ... | test.rs:58:22:58:29 | values.0 | $@ | test.rs:57:13:61:13 | \|...\| ... | \|...\| ... | +| test.rs:59:22:59:29 | values.1 | test.rs:57:13:61:13 | \|...\| ... | test.rs:59:22:59:29 | values.1 | $@ | test.rs:57:13:61:13 | \|...\| ... | \|...\| ... | +| test.rs:60:22:60:29 | values.2 | test.rs:57:13:61:13 | \|...\| ... | test.rs:60:22:60:29 | values.2 | $@ | test.rs:57:13:61:13 | \|...\| ... | \|...\| ... | +| test.rs:65:18:65:20 | row | test.rs:64:65:67:9 | \|...\| ... | test.rs:65:18:65:20 | row | $@ | test.rs:64:65:67:9 | \|...\| ... | \|...\| ... | +| test.rs:68:14:68:18 | total | test.rs:64:65:67:9 | \|...\| ... | test.rs:68:14:68:18 | total | $@ | test.rs:64:65:67:9 | \|...\| ... | \|...\| ... | +| test.rs:74:18:74:19 | id | test.rs:70:72:78:9 | \|...\| ... | test.rs:74:18:74:19 | id | $@ | test.rs:70:72:78:9 | \|...\| ... | \|...\| ... | +| test.rs:75:18:75:21 | name | test.rs:70:72:78:9 | \|...\| ... | test.rs:75:18:75:21 | name | $@ | test.rs:70:72:78:9 | \|...\| ... | \|...\| ... | +| test.rs:76:18:76:20 | age | test.rs:70:72:78:9 | \|...\| ... | test.rs:76:18:76:20 | age | $@ | test.rs:70:72:78:9 | \|...\| ... | \|...\| ... | +| test.rs:106:14:106:15 | v1 | test.rs:105:24:105:33 | row.get(...) | test.rs:106:14:106:15 | v1 | $@ | test.rs:105:24:105:33 | row.get(...) | row.get(...) | +| test.rs:109:14:109:15 | v2 | test.rs:108:24:108:37 | row.get_opt(...) | test.rs:109:14:109:15 | v2 | $@ | test.rs:108:24:108:37 | row.get_opt(...) | row.get_opt(...) | +| test.rs:112:14:112:15 | v3 | test.rs:111:24:111:34 | row.take(...) | test.rs:112:14:112:15 | v3 | $@ | test.rs:111:24:111:34 | row.take(...) | row.take(...) | +| test.rs:115:14:115:15 | v4 | test.rs:114:24:114:38 | row.take_opt(...) | test.rs:115:14:115:15 | v4 | $@ | test.rs:114:24:114:38 | row.take_opt(...) | row.take_opt(...) | +| test.rs:138:22:138:27 | values | test.rs:137:13:139:13 | \|...\| ... | test.rs:138:22:138:27 | values | $@ | test.rs:137:13:139:13 | \|...\| ... | \|...\| ... | +| test.rs:145:22:145:29 | values.0 | test.rs:144:13:148:13 | \|...\| ... | test.rs:145:22:145:29 | values.0 | $@ | test.rs:144:13:148:13 | \|...\| ... | \|...\| ... | +| test.rs:146:22:146:29 | values.1 | test.rs:144:13:148:13 | \|...\| ... | test.rs:146:22:146:29 | values.1 | $@ | test.rs:144:13:148:13 | \|...\| ... | \|...\| ... | +| test.rs:147:22:147:29 | values.2 | test.rs:144:13:148:13 | \|...\| ... | test.rs:147:22:147:29 | values.2 | $@ | test.rs:144:13:148:13 | \|...\| ... | \|...\| ... | +| test.rs:152:18:152:20 | row | test.rs:151:65:154:9 | \|...\| ... | test.rs:152:18:152:20 | row | $@ | test.rs:151:65:154:9 | \|...\| ... | \|...\| ... | +| test.rs:155:14:155:18 | total | test.rs:151:65:154:9 | \|...\| ... | test.rs:155:14:155:18 | total | $@ | test.rs:151:65:154:9 | \|...\| ... | \|...\| ... | +| test.rs:161:18:161:19 | id | test.rs:157:72:165:9 | \|...\| ... | test.rs:161:18:161:19 | id | $@ | test.rs:157:72:165:9 | \|...\| ... | \|...\| ... | +| test.rs:162:18:162:21 | name | test.rs:157:72:165:9 | \|...\| ... | test.rs:162:18:162:21 | name | $@ | test.rs:157:72:165:9 | \|...\| ... | \|...\| ... | +| test.rs:163:18:163:20 | age | test.rs:157:72:165:9 | \|...\| ... | test.rs:163:18:163:20 | age | $@ | test.rs:157:72:165:9 | \|...\| ... | \|...\| ... | diff --git a/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected index 9132dfaa2b0f..3a0de1e351bb 100644 --- a/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected @@ -1,25 +1,25 @@ -| test.rs:15:47:15:51 | query | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:18:28:18:30 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:21:28:21:34 | get_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:24:28:24:31 | take | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:27:28:27:35 | take_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:30:26:30:31 | as_ref | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:37:28:37:38 | query_first | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:40:27:40:35 | exec_iter | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:41:42:41:44 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:48:22:48:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:55:22:55:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:64:26:64:35 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:70:22:70:31 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:102:53:102:57 | query | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:105:28:105:30 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:108:28:108:34 | get_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:111:28:111:31 | take | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:114:28:114:35 | take_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:117:26:117:31 | as_ref | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:124:28:124:38 | query_first | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:127:27:127:35 | exec_iter | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:135:22:135:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:142:22:142:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:151:26:151:35 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:157:22:157:31 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:15:42:15:87 | conn.query(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:18:24:18:33 | row.get(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:21:24:21:37 | row.get_opt(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:24:24:24:34 | row.take(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:27:24:27:38 | row.take_opt(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:30:22:30:34 | row.as_ref(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:37:23:37:63 | conn.query_first(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:40:22:40:71 | conn.exec_iter(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:41:14:41:61 | ... .get(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:50:13:52:13 | \|...\| ... | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:57:13:61:13 | \|...\| ... | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:64:65:67:9 | \|...\| ... | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:70:72:78:9 | \|...\| ... | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:102:48:102:93 | conn.query(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:105:24:105:33 | row.get(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:108:24:108:37 | row.get_opt(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:111:24:111:34 | row.take(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:114:24:114:38 | row.take_opt(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:117:22:117:34 | row.as_ref(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:124:23:124:63 | conn.query_first(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:127:22:127:71 | conn.exec_iter(...) | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:137:13:139:13 | \|...\| ... | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:144:13:148:13 | \|...\| ... | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:151:65:154:9 | \|...\| ... | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:157:72:165:9 | \|...\| ... | Flow source 'DatabaseSource' of type database (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/database/test.rs b/rust/ql/test/library-tests/dataflow/sources/database/test.rs index 618830091a6c..158cc8188b88 100644 --- a/rust/ql/test/library-tests/dataflow/sources/database/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/database/test.rs @@ -45,29 +45,29 @@ mod test_mysql { } } - let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] + let _ = conn.query_map( "SELECT id FROM person", |values: i64| -> () { sink(values); // $ hasTaintFlow - } + } // $ Alert[rust/summary/taint-sources] )?; - let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] + let _ = conn.query_map( "SELECT id, name, age FROM person", |values: (i64, String, i32)| -> () { sink(values.0); // $ hasTaintFlow sink(values.1); // $ hasTaintFlow sink(values.2); // $ hasTaintFlow - } + } // $ Alert[rust/summary/taint-sources] )?; - let total = conn.query_fold("SELECT id FROM person", 0, |acc: i64, row: i64| { // $ Alert[rust/summary/taint-sources] + let total = conn.query_fold("SELECT id FROM person", 0, |acc: i64, row: i64| { sink(row); // $ hasTaintFlow acc + row - })?; + })?; // $ Alert[rust/summary/taint-sources] sink(total); // $ hasTaintFlow - let _ = conn.query_fold("SELECT id, name, age FROM person", 0, |acc: i64, row: (i64, String, i32)| { // $ Alert[rust/summary/taint-sources] + let _ = conn.query_fold("SELECT id, name, age FROM person", 0, |acc: i64, row: (i64, String, i32)| { let id: i64 = row.0; let name: String = row.1; let age: i32 = row.2; @@ -75,7 +75,7 @@ mod test_mysql { sink(name); // $ hasTaintFlow sink(age); // $ hasTaintFlow acc + 1 - })?; + })?; // $ Alert[rust/summary/taint-sources] Ok(()) } @@ -132,29 +132,29 @@ mod test_mysql_async { } } - let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] + let _ = conn.query_map( "SELECT id FROM person", |values: i64| -> () { sink(values); // $ hasTaintFlow - } + } // $ Alert[rust/summary/taint-sources] ).await?; - let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] + let _ = conn.query_map( "SELECT id, name, age FROM person", |values: (i64, String, i32)| -> () { sink(values.0); // $ hasTaintFlow sink(values.1); // $ hasTaintFlow sink(values.2); // $ hasTaintFlow - } + } // $ Alert[rust/summary/taint-sources] ).await?; - let total = conn.query_fold("SELECT id FROM person", 0, |acc: i64, row: i64| { // $ Alert[rust/summary/taint-sources] + let total = conn.query_fold("SELECT id FROM person", 0, |acc: i64, row: i64| { sink(row); // $ hasTaintFlow acc + row - }).await?; + }).await?; // $ Alert[rust/summary/taint-sources] sink(total); // $ hasTaintFlow - let _ = conn.query_fold("SELECT id, name, age FROM person", 0, |acc: i64, row: (i64, String, i32)| { // $ Alert[rust/summary/taint-sources] + let _ = conn.query_fold("SELECT id, name, age FROM person", 0, |acc: i64, row: (i64, String, i32)| { let id: i64 = row.0; let name: String = row.1; let age: i32 = row.2; @@ -162,7 +162,7 @@ mod test_mysql_async { sink(name); // $ hasTaintFlow sink(age); // $ hasTaintFlow acc + 1 - }).await?; + }).await?; // $ Alert[rust/summary/taint-sources] let ids = "SELECT id FROM person".with(()).map(&mut conn, |person: i64| -> i64 { diff --git a/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.expected index 78527083096e..30c4e844c41e 100644 --- a/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.expected @@ -17,27 +17,27 @@ models | 16 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 17 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | edges -| test.rs:6:10:6:22 | ...::var | test.rs:6:10:6:30 | ...::var(...) | provenance | Src:MaD:6 | -| test.rs:7:10:7:25 | ...::var_os | test.rs:7:10:7:33 | ...::var_os(...) | provenance | Src:MaD:7 | +| test.rs:6:10:6:30 | ...::var(...) | test.rs:6:10:6:30 | ...::var(...) | provenance | Src:MaD:6 | +| test.rs:7:10:7:33 | ...::var_os(...) | test.rs:7:10:7:33 | ...::var_os(...) | provenance | Src:MaD:7 | | test.rs:9:9:9:12 | var1 | test.rs:12:10:12:13 | var1 | provenance | | -| test.rs:9:16:9:28 | ...::var | test.rs:9:16:9:36 | ...::var(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:9:16:9:36 | ...::var(...) | test.rs:9:16:9:36 | ...::var(...) [Ok] | provenance | Src:MaD:6 | | test.rs:9:16:9:36 | ...::var(...) [Ok] | test.rs:9:16:9:59 | ... .expect(...) | provenance | MaD:16 | | test.rs:9:16:9:59 | ... .expect(...) | test.rs:9:9:9:12 | var1 | provenance | | | test.rs:10:9:10:12 | var2 | test.rs:13:10:13:13 | var2 | provenance | | -| test.rs:10:16:10:31 | ...::var_os | test.rs:10:16:10:39 | ...::var_os(...) [Some] | provenance | Src:MaD:7 | +| test.rs:10:16:10:39 | ...::var_os(...) | test.rs:10:16:10:39 | ...::var_os(...) [Some] | provenance | Src:MaD:7 | | test.rs:10:16:10:39 | ...::var_os(...) [Some] | test.rs:10:16:10:48 | ... .unwrap() | provenance | MaD:15 | | test.rs:10:16:10:48 | ... .unwrap() | test.rs:10:9:10:12 | var2 | provenance | | | test.rs:15:9:15:20 | TuplePat | test.rs:16:14:16:16 | key | provenance | | | test.rs:15:9:15:20 | TuplePat | test.rs:17:14:17:18 | value | provenance | | -| test.rs:15:25:15:38 | ...::vars | test.rs:15:25:15:40 | ...::vars(...) [element] | provenance | Src:MaD:8 | +| test.rs:15:25:15:40 | ...::vars(...) | test.rs:15:25:15:40 | ...::vars(...) [element] | provenance | Src:MaD:8 | | test.rs:15:25:15:40 | ...::vars(...) [element] | test.rs:15:9:15:20 | TuplePat | provenance | | | test.rs:20:9:20:20 | TuplePat | test.rs:21:14:21:16 | key | provenance | | | test.rs:20:9:20:20 | TuplePat | test.rs:22:14:22:18 | value | provenance | | -| test.rs:20:25:20:41 | ...::vars_os | test.rs:20:25:20:43 | ...::vars_os(...) [element] | provenance | Src:MaD:9 | +| test.rs:20:25:20:43 | ...::vars_os(...) | test.rs:20:25:20:43 | ...::vars_os(...) [element] | provenance | Src:MaD:9 | | test.rs:20:25:20:43 | ...::vars_os(...) [element] | test.rs:20:9:20:20 | TuplePat | provenance | | | test.rs:27:9:27:12 | args [element] | test.rs:28:20:28:23 | args [element] | provenance | | | test.rs:27:9:27:12 | args [element] | test.rs:29:17:29:20 | args [element] | provenance | | -| test.rs:27:29:27:42 | ...::args | test.rs:27:29:27:44 | ...::args(...) [element] | provenance | Src:MaD:1 | +| test.rs:27:29:27:44 | ...::args(...) | test.rs:27:29:27:44 | ...::args(...) [element] | provenance | Src:MaD:1 | | test.rs:27:29:27:44 | ...::args(...) [element] | test.rs:27:29:27:54 | ... .collect() [element] | provenance | MaD:10 | | test.rs:27:29:27:54 | ... .collect() [element] | test.rs:27:9:27:12 | args [element] | provenance | | | test.rs:28:9:28:15 | my_path [&ref] | test.rs:34:10:34:16 | my_path | provenance | | @@ -49,67 +49,67 @@ edges | test.rs:29:17:29:20 | args [element] | test.rs:29:17:29:23 | args[1] | provenance | MaD:12 | | test.rs:29:17:29:23 | args[1] | test.rs:29:16:29:23 | &... [&ref] | provenance | | | test.rs:30:9:30:12 | arg2 | test.rs:36:10:36:13 | arg2 | provenance | | -| test.rs:30:16:30:29 | ...::args | test.rs:30:16:30:31 | ...::args(...) [element] | provenance | Src:MaD:1 | +| test.rs:30:16:30:31 | ...::args(...) | test.rs:30:16:30:31 | ...::args(...) [element] | provenance | Src:MaD:1 | | test.rs:30:16:30:31 | ...::args(...) [element] | test.rs:30:16:30:38 | ... .nth(...) [Some] | provenance | MaD:11 | | test.rs:30:16:30:38 | ... .nth(...) [Some] | test.rs:30:16:30:47 | ... .unwrap() | provenance | MaD:15 | | test.rs:30:16:30:47 | ... .unwrap() | test.rs:30:9:30:12 | arg2 | provenance | | | test.rs:31:9:31:12 | arg3 | test.rs:37:10:37:13 | arg3 | provenance | | -| test.rs:31:16:31:32 | ...::args_os | test.rs:31:16:31:34 | ...::args_os(...) [element] | provenance | Src:MaD:2 | +| test.rs:31:16:31:34 | ...::args_os(...) | test.rs:31:16:31:34 | ...::args_os(...) [element] | provenance | Src:MaD:2 | | test.rs:31:16:31:34 | ...::args_os(...) [element] | test.rs:31:16:31:41 | ... .nth(...) [Some] | provenance | MaD:11 | | test.rs:31:16:31:41 | ... .nth(...) [Some] | test.rs:31:16:31:50 | ... .unwrap() | provenance | MaD:15 | | test.rs:31:16:31:50 | ... .unwrap() | test.rs:31:9:31:12 | arg3 | provenance | | | test.rs:32:9:32:12 | arg4 | test.rs:38:10:38:13 | arg4 | provenance | | -| test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:1 | +| test.rs:32:16:32:31 | ...::args(...) | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:1 | | test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:11 | | test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:15 | | test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:16:32:64 | ... .parse() [Ok] | provenance | MaD:13 | | test.rs:32:16:32:64 | ... .parse() [Ok] | test.rs:32:16:32:73 | ... .unwrap() | provenance | MaD:17 | | test.rs:32:16:32:73 | ... .unwrap() | test.rs:32:9:32:12 | arg4 | provenance | | | test.rs:40:9:40:11 | arg | test.rs:41:14:41:16 | arg | provenance | | -| test.rs:40:16:40:29 | ...::args | test.rs:40:16:40:31 | ...::args(...) [element] | provenance | Src:MaD:1 | +| test.rs:40:16:40:31 | ...::args(...) | test.rs:40:16:40:31 | ...::args(...) [element] | provenance | Src:MaD:1 | | test.rs:40:16:40:31 | ...::args(...) [element] | test.rs:40:9:40:11 | arg | provenance | | | test.rs:44:9:44:11 | arg | test.rs:45:14:45:16 | arg | provenance | | -| test.rs:44:16:44:32 | ...::args_os | test.rs:44:16:44:34 | ...::args_os(...) [element] | provenance | Src:MaD:2 | +| test.rs:44:16:44:34 | ...::args_os(...) | test.rs:44:16:44:34 | ...::args_os(...) [element] | provenance | Src:MaD:2 | | test.rs:44:16:44:34 | ...::args_os(...) [element] | test.rs:44:9:44:11 | arg | provenance | | | test.rs:50:9:50:11 | dir | test.rs:54:10:54:12 | dir | provenance | | -| test.rs:50:15:50:35 | ...::current_dir | test.rs:50:15:50:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:3 | +| test.rs:50:15:50:37 | ...::current_dir(...) | test.rs:50:15:50:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:3 | | test.rs:50:15:50:37 | ...::current_dir(...) [Ok] | test.rs:50:15:50:54 | ... .expect(...) | provenance | MaD:16 | | test.rs:50:15:50:54 | ... .expect(...) | test.rs:50:9:50:11 | dir | provenance | | | test.rs:51:9:51:11 | exe | test.rs:55:10:55:12 | exe | provenance | | -| test.rs:51:15:51:35 | ...::current_exe | test.rs:51:15:51:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:4 | +| test.rs:51:15:51:37 | ...::current_exe(...) | test.rs:51:15:51:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:4 | | test.rs:51:15:51:37 | ...::current_exe(...) [Ok] | test.rs:51:15:51:54 | ... .expect(...) | provenance | MaD:16 | | test.rs:51:15:51:54 | ... .expect(...) | test.rs:51:9:51:11 | exe | provenance | | | test.rs:52:9:52:12 | home | test.rs:56:10:56:13 | home | provenance | | -| test.rs:52:16:52:33 | ...::home_dir | test.rs:52:16:52:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:5 | +| test.rs:52:16:52:35 | ...::home_dir(...) | test.rs:52:16:52:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:5 | | test.rs:52:16:52:35 | ...::home_dir(...) [Some] | test.rs:52:16:52:52 | ... .expect(...) | provenance | MaD:14 | | test.rs:52:16:52:52 | ... .expect(...) | test.rs:52:9:52:12 | home | provenance | | nodes -| test.rs:6:10:6:22 | ...::var | semmle.label | ...::var | | test.rs:6:10:6:30 | ...::var(...) | semmle.label | ...::var(...) | -| test.rs:7:10:7:25 | ...::var_os | semmle.label | ...::var_os | +| test.rs:6:10:6:30 | ...::var(...) | semmle.label | ...::var(...) | +| test.rs:7:10:7:33 | ...::var_os(...) | semmle.label | ...::var_os(...) | | test.rs:7:10:7:33 | ...::var_os(...) | semmle.label | ...::var_os(...) | | test.rs:9:9:9:12 | var1 | semmle.label | var1 | -| test.rs:9:16:9:28 | ...::var | semmle.label | ...::var | +| test.rs:9:16:9:36 | ...::var(...) | semmle.label | ...::var(...) | | test.rs:9:16:9:36 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | | test.rs:9:16:9:59 | ... .expect(...) | semmle.label | ... .expect(...) | | test.rs:10:9:10:12 | var2 | semmle.label | var2 | -| test.rs:10:16:10:31 | ...::var_os | semmle.label | ...::var_os | +| test.rs:10:16:10:39 | ...::var_os(...) | semmle.label | ...::var_os(...) | | test.rs:10:16:10:39 | ...::var_os(...) [Some] | semmle.label | ...::var_os(...) [Some] | | test.rs:10:16:10:48 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:12:10:12:13 | var1 | semmle.label | var1 | | test.rs:13:10:13:13 | var2 | semmle.label | var2 | | test.rs:15:9:15:20 | TuplePat | semmle.label | TuplePat | -| test.rs:15:25:15:38 | ...::vars | semmle.label | ...::vars | +| test.rs:15:25:15:40 | ...::vars(...) | semmle.label | ...::vars(...) | | test.rs:15:25:15:40 | ...::vars(...) [element] | semmle.label | ...::vars(...) [element] | | test.rs:16:14:16:16 | key | semmle.label | key | | test.rs:17:14:17:18 | value | semmle.label | value | | test.rs:20:9:20:20 | TuplePat | semmle.label | TuplePat | -| test.rs:20:25:20:41 | ...::vars_os | semmle.label | ...::vars_os | +| test.rs:20:25:20:43 | ...::vars_os(...) | semmle.label | ...::vars_os(...) | | test.rs:20:25:20:43 | ...::vars_os(...) [element] | semmle.label | ...::vars_os(...) [element] | | test.rs:21:14:21:16 | key | semmle.label | key | | test.rs:22:14:22:18 | value | semmle.label | value | | test.rs:27:9:27:12 | args [element] | semmle.label | args [element] | -| test.rs:27:29:27:42 | ...::args | semmle.label | ...::args | +| test.rs:27:29:27:44 | ...::args(...) | semmle.label | ...::args(...) | | test.rs:27:29:27:44 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | | test.rs:27:29:27:54 | ... .collect() [element] | semmle.label | ... .collect() [element] | | test.rs:28:9:28:15 | my_path [&ref] | semmle.label | my_path [&ref] | @@ -121,17 +121,17 @@ nodes | test.rs:29:17:29:20 | args [element] | semmle.label | args [element] | | test.rs:29:17:29:23 | args[1] | semmle.label | args[1] | | test.rs:30:9:30:12 | arg2 | semmle.label | arg2 | -| test.rs:30:16:30:29 | ...::args | semmle.label | ...::args | +| test.rs:30:16:30:31 | ...::args(...) | semmle.label | ...::args(...) | | test.rs:30:16:30:31 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | | test.rs:30:16:30:38 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | | test.rs:30:16:30:47 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:31:9:31:12 | arg3 | semmle.label | arg3 | -| test.rs:31:16:31:32 | ...::args_os | semmle.label | ...::args_os | +| test.rs:31:16:31:34 | ...::args_os(...) | semmle.label | ...::args_os(...) | | test.rs:31:16:31:34 | ...::args_os(...) [element] | semmle.label | ...::args_os(...) [element] | | test.rs:31:16:31:41 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | | test.rs:31:16:31:50 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:32:9:32:12 | arg4 | semmle.label | arg4 | -| test.rs:32:16:32:29 | ...::args | semmle.label | ...::args | +| test.rs:32:16:32:31 | ...::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() | @@ -143,23 +143,23 @@ nodes | test.rs:37:10:37:13 | arg3 | semmle.label | arg3 | | test.rs:38:10:38:13 | arg4 | semmle.label | arg4 | | test.rs:40:9:40:11 | arg | semmle.label | arg | -| test.rs:40:16:40:29 | ...::args | semmle.label | ...::args | +| test.rs:40:16:40:31 | ...::args(...) | semmle.label | ...::args(...) | | test.rs:40:16:40:31 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | | test.rs:41:14:41:16 | arg | semmle.label | arg | | test.rs:44:9:44:11 | arg | semmle.label | arg | -| test.rs:44:16:44:32 | ...::args_os | semmle.label | ...::args_os | +| test.rs:44:16:44:34 | ...::args_os(...) | semmle.label | ...::args_os(...) | | test.rs:44:16:44:34 | ...::args_os(...) [element] | semmle.label | ...::args_os(...) [element] | | test.rs:45:14:45:16 | arg | semmle.label | arg | | test.rs:50:9:50:11 | dir | semmle.label | dir | -| test.rs:50:15:50:35 | ...::current_dir | semmle.label | ...::current_dir | +| test.rs:50:15:50:37 | ...::current_dir(...) | semmle.label | ...::current_dir(...) | | test.rs:50:15:50:37 | ...::current_dir(...) [Ok] | semmle.label | ...::current_dir(...) [Ok] | | test.rs:50:15:50:54 | ... .expect(...) | semmle.label | ... .expect(...) | | test.rs:51:9:51:11 | exe | semmle.label | exe | -| test.rs:51:15:51:35 | ...::current_exe | semmle.label | ...::current_exe | +| test.rs:51:15:51:37 | ...::current_exe(...) | semmle.label | ...::current_exe(...) | | test.rs:51:15:51:37 | ...::current_exe(...) [Ok] | semmle.label | ...::current_exe(...) [Ok] | | test.rs:51:15:51:54 | ... .expect(...) | semmle.label | ... .expect(...) | | test.rs:52:9:52:12 | home | semmle.label | home | -| test.rs:52:16:52:33 | ...::home_dir | semmle.label | ...::home_dir | +| test.rs:52:16:52:35 | ...::home_dir(...) | semmle.label | ...::home_dir(...) | | test.rs:52:16:52:35 | ...::home_dir(...) [Some] | semmle.label | ...::home_dir(...) [Some] | | test.rs:52:16:52:52 | ... .expect(...) | semmle.label | ... .expect(...) | | test.rs:54:10:54:12 | dir | semmle.label | dir | @@ -168,21 +168,21 @@ nodes subpaths testFailures #select -| test.rs:6:10:6:30 | ...::var(...) | test.rs:6:10:6:22 | ...::var | test.rs:6:10:6:30 | ...::var(...) | $@ | test.rs:6:10:6:22 | ...::var | ...::var | -| test.rs:7:10:7:33 | ...::var_os(...) | test.rs:7:10:7:25 | ...::var_os | test.rs:7:10:7:33 | ...::var_os(...) | $@ | test.rs:7:10:7:25 | ...::var_os | ...::var_os | -| test.rs:12:10:12:13 | var1 | test.rs:9:16:9:28 | ...::var | test.rs:12:10:12:13 | var1 | $@ | test.rs:9:16:9:28 | ...::var | ...::var | -| test.rs:13:10:13:13 | var2 | test.rs:10:16:10:31 | ...::var_os | test.rs:13:10:13:13 | var2 | $@ | test.rs:10:16:10:31 | ...::var_os | ...::var_os | -| test.rs:16:14:16:16 | key | test.rs:15:25:15:38 | ...::vars | test.rs:16:14:16:16 | key | $@ | test.rs:15:25:15:38 | ...::vars | ...::vars | -| test.rs:17:14:17:18 | value | test.rs:15:25:15:38 | ...::vars | test.rs:17:14:17:18 | value | $@ | test.rs:15:25:15:38 | ...::vars | ...::vars | -| test.rs:21:14:21:16 | key | test.rs:20:25:20:41 | ...::vars_os | test.rs:21:14:21:16 | key | $@ | test.rs:20:25:20:41 | ...::vars_os | ...::vars_os | -| test.rs:22:14:22:18 | value | test.rs:20:25:20:41 | ...::vars_os | test.rs:22:14:22:18 | value | $@ | test.rs:20:25:20:41 | ...::vars_os | ...::vars_os | -| test.rs:34:10:34:16 | my_path | test.rs:27:29:27:42 | ...::args | test.rs:34:10:34:16 | my_path | $@ | test.rs:27:29:27:42 | ...::args | ...::args | -| test.rs:35:10:35:13 | arg1 | test.rs:27:29:27:42 | ...::args | test.rs:35:10:35:13 | arg1 | $@ | test.rs:27:29:27:42 | ...::args | ...::args | -| test.rs:36:10:36:13 | arg2 | test.rs:30:16:30:29 | ...::args | test.rs:36:10:36:13 | arg2 | $@ | test.rs:30:16:30:29 | ...::args | ...::args | -| test.rs:37:10:37:13 | arg3 | test.rs:31:16:31:32 | ...::args_os | test.rs:37:10:37:13 | arg3 | $@ | test.rs:31:16:31:32 | ...::args_os | ...::args_os | -| test.rs:38:10:38:13 | arg4 | test.rs:32:16:32:29 | ...::args | test.rs:38:10:38:13 | arg4 | $@ | test.rs:32:16:32:29 | ...::args | ...::args | -| test.rs:41:14:41:16 | arg | test.rs:40:16:40:29 | ...::args | test.rs:41:14:41:16 | arg | $@ | test.rs:40:16:40:29 | ...::args | ...::args | -| test.rs:45:14:45:16 | arg | test.rs:44:16:44:32 | ...::args_os | test.rs:45:14:45:16 | arg | $@ | test.rs:44:16:44:32 | ...::args_os | ...::args_os | -| test.rs:54:10:54:12 | dir | test.rs:50:15:50:35 | ...::current_dir | test.rs:54:10:54:12 | dir | $@ | test.rs:50:15:50:35 | ...::current_dir | ...::current_dir | -| test.rs:55:10:55:12 | exe | test.rs:51:15:51:35 | ...::current_exe | test.rs:55:10:55:12 | exe | $@ | test.rs:51:15:51:35 | ...::current_exe | ...::current_exe | -| test.rs:56:10:56:13 | home | test.rs:52:16:52:33 | ...::home_dir | test.rs:56:10:56:13 | home | $@ | test.rs:52:16:52:33 | ...::home_dir | ...::home_dir | +| test.rs:6:10:6:30 | ...::var(...) | test.rs:6:10:6:30 | ...::var(...) | test.rs:6:10:6:30 | ...::var(...) | $@ | test.rs:6:10:6:30 | ...::var(...) | ...::var(...) | +| test.rs:7:10:7:33 | ...::var_os(...) | test.rs:7:10:7:33 | ...::var_os(...) | test.rs:7:10:7:33 | ...::var_os(...) | $@ | test.rs:7:10:7:33 | ...::var_os(...) | ...::var_os(...) | +| test.rs:12:10:12:13 | var1 | test.rs:9:16:9:36 | ...::var(...) | test.rs:12:10:12:13 | var1 | $@ | test.rs:9:16:9:36 | ...::var(...) | ...::var(...) | +| test.rs:13:10:13:13 | var2 | test.rs:10:16:10:39 | ...::var_os(...) | test.rs:13:10:13:13 | var2 | $@ | test.rs:10:16:10:39 | ...::var_os(...) | ...::var_os(...) | +| test.rs:16:14:16:16 | key | test.rs:15:25:15:40 | ...::vars(...) | test.rs:16:14:16:16 | key | $@ | test.rs:15:25:15:40 | ...::vars(...) | ...::vars(...) | +| test.rs:17:14:17:18 | value | test.rs:15:25:15:40 | ...::vars(...) | test.rs:17:14:17:18 | value | $@ | test.rs:15:25:15:40 | ...::vars(...) | ...::vars(...) | +| test.rs:21:14:21:16 | key | test.rs:20:25:20:43 | ...::vars_os(...) | test.rs:21:14:21:16 | key | $@ | test.rs:20:25:20:43 | ...::vars_os(...) | ...::vars_os(...) | +| test.rs:22:14:22:18 | value | test.rs:20:25:20:43 | ...::vars_os(...) | test.rs:22:14:22:18 | value | $@ | test.rs:20:25:20:43 | ...::vars_os(...) | ...::vars_os(...) | +| test.rs:34:10:34:16 | my_path | test.rs:27:29:27:44 | ...::args(...) | test.rs:34:10:34:16 | my_path | $@ | test.rs:27:29:27:44 | ...::args(...) | ...::args(...) | +| test.rs:35:10:35:13 | arg1 | test.rs:27:29:27:44 | ...::args(...) | test.rs:35:10:35:13 | arg1 | $@ | test.rs:27:29:27:44 | ...::args(...) | ...::args(...) | +| test.rs:36:10:36:13 | arg2 | test.rs:30:16:30:31 | ...::args(...) | test.rs:36:10:36:13 | arg2 | $@ | test.rs:30:16:30:31 | ...::args(...) | ...::args(...) | +| test.rs:37:10:37:13 | arg3 | test.rs:31:16:31:34 | ...::args_os(...) | test.rs:37:10:37:13 | arg3 | $@ | test.rs:31:16:31:34 | ...::args_os(...) | ...::args_os(...) | +| test.rs:38:10:38:13 | arg4 | test.rs:32:16:32:31 | ...::args(...) | test.rs:38:10:38:13 | arg4 | $@ | test.rs:32:16:32:31 | ...::args(...) | ...::args(...) | +| test.rs:41:14:41:16 | arg | test.rs:40:16:40:31 | ...::args(...) | test.rs:41:14:41:16 | arg | $@ | test.rs:40:16:40:31 | ...::args(...) | ...::args(...) | +| test.rs:45:14:45:16 | arg | test.rs:44:16:44:34 | ...::args_os(...) | test.rs:45:14:45:16 | arg | $@ | test.rs:44:16:44:34 | ...::args_os(...) | ...::args_os(...) | +| test.rs:54:10:54:12 | dir | test.rs:50:15:50:37 | ...::current_dir(...) | test.rs:54:10:54:12 | dir | $@ | test.rs:50:15:50:37 | ...::current_dir(...) | ...::current_dir(...) | +| test.rs:55:10:55:12 | exe | test.rs:51:15:51:37 | ...::current_exe(...) | test.rs:55:10:55:12 | exe | $@ | test.rs:51:15:51:37 | ...::current_exe(...) | ...::current_exe(...) | +| test.rs:56:10:56:13 | home | test.rs:52:16:52:35 | ...::home_dir(...) | test.rs:56:10:56:13 | home | $@ | test.rs:52:16:52:35 | ...::home_dir(...) | ...::home_dir(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/env/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/env/TaintSources.expected index 16f43eff9147..f686e4f83a90 100644 --- a/rust/ql/test/library-tests/dataflow/sources/env/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/env/TaintSources.expected @@ -1,15 +1,15 @@ -| test.rs:6:10:6:22 | ...::var | Flow source 'EnvironmentSource' of type environment (DEFAULT). | -| test.rs:7:10:7:25 | ...::var_os | Flow source 'EnvironmentSource' of type environment (DEFAULT). | -| test.rs:9:16:9:28 | ...::var | Flow source 'EnvironmentSource' of type environment (DEFAULT). | -| test.rs:10:16:10:31 | ...::var_os | Flow source 'EnvironmentSource' of type environment (DEFAULT). | -| test.rs:15:25:15:38 | ...::vars | Flow source 'EnvironmentSource' of type environment (DEFAULT). | -| test.rs:20:25:20:41 | ...::vars_os | Flow source 'EnvironmentSource' of type environment (DEFAULT). | -| test.rs:27:29:27:42 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:30:16:30:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:31:16:31:32 | ...::args_os | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:32:16:32:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:40:16:40:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:44:16:44:32 | ...::args_os | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:50:15:50:35 | ...::current_dir | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:51:15:51:35 | ...::current_exe | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:52:16:52:33 | ...::home_dir | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:6:10:6:30 | ...::var(...) | Flow source 'EnvironmentSource' of type environment (DEFAULT). | +| test.rs:7:10:7:33 | ...::var_os(...) | Flow source 'EnvironmentSource' of type environment (DEFAULT). | +| test.rs:9:16:9:36 | ...::var(...) | Flow source 'EnvironmentSource' of type environment (DEFAULT). | +| test.rs:10:16:10:39 | ...::var_os(...) | Flow source 'EnvironmentSource' of type environment (DEFAULT). | +| test.rs:15:25:15:40 | ...::vars(...) | Flow source 'EnvironmentSource' of type environment (DEFAULT). | +| test.rs:20:25:20:43 | ...::vars_os(...) | Flow source 'EnvironmentSource' of type environment (DEFAULT). | +| test.rs:27:29:27:44 | ...::args(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:30:16:30:31 | ...::args(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:31:16:31:34 | ...::args_os(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:32:16:32:31 | ...::args(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:40:16:40:31 | ...::args(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:44:16:44:34 | ...::args_os(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:50:15:50:37 | ...::current_dir(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:51:15:51:37 | ...::current_exe(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:52:16:52:35 | ...::home_dir(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected index 27d884fe565b..ca467c32f59c 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected @@ -47,15 +47,15 @@ models | 46 | Summary: ::into_os_string; Argument[self].Field[std::path::PathBuf::inner]; ReturnValue; value | edges | test.rs:12:13:12:18 | buffer | test.rs:13:14:13:19 | buffer | provenance | | -| test.rs:12:31:12:43 | ...::read | test.rs:12:31:12:55 | ...::read(...) [Ok] | provenance | Src:MaD:11 | +| test.rs:12:31:12:55 | ...::read(...) | test.rs:12:31:12:55 | ...::read(...) [Ok] | provenance | Src:MaD:11 | | test.rs:12:31:12:55 | ...::read(...) [Ok] | test.rs:12:31:12:56 | TryExpr | provenance | | | test.rs:12:31:12:56 | TryExpr | test.rs:12:13:12:18 | buffer | provenance | | | test.rs:17:13:17:18 | buffer | test.rs:18:14:18:19 | buffer | provenance | | -| test.rs:17:31:17:38 | ...::read | test.rs:17:31:17:50 | ...::read(...) [Ok] | provenance | Src:MaD:11 | +| test.rs:17:31:17:50 | ...::read(...) | test.rs:17:31:17:50 | ...::read(...) [Ok] | provenance | Src:MaD:11 | | test.rs:17:31:17:50 | ...::read(...) [Ok] | test.rs:17:31:17:51 | TryExpr | provenance | | | test.rs:17:31:17:51 | TryExpr | test.rs:17:13:17:18 | buffer | provenance | | | test.rs:22:13:22:18 | buffer | test.rs:23:14:23:19 | buffer | provenance | | -| test.rs:22:22:22:39 | ...::read_to_string | test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:13 | +| test.rs:22:22:22:51 | ...::read_to_string(...) | test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:13 | | test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | test.rs:22:22:22:52 | TryExpr | provenance | | | test.rs:22:22:22:52 | TryExpr | test.rs:22:13:22:18 | buffer | provenance | | | test.rs:30:13:30:16 | path | test.rs:31:14:31:17 | path | provenance | | @@ -70,8 +70,7 @@ edges | test.rs:30:13:30:16 | path | test.rs:40:14:40:17 | path | provenance | | | test.rs:30:13:30:16 | path | test.rs:41:14:41:17 | path | provenance | | | test.rs:30:13:30:16 | path | test.rs:42:14:42:17 | path | provenance | | -| test.rs:30:20:30:27 | e.path() | test.rs:30:13:30:16 | path | provenance | | -| test.rs:30:22:30:25 | path | test.rs:30:20:30:27 | e.path() | provenance | Src:MaD:4 MaD:4 | +| test.rs:30:20:30:27 | e.path() | test.rs:30:13:30:16 | path | provenance | Src:MaD:4 | | test.rs:31:14:31:17 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:18 | | test.rs:32:14:32:17 | path | test.rs:32:14:32:25 | path.clone() | provenance | MaD:18 | | test.rs:32:14:32:25 | path.clone() | test.rs:32:14:32:35 | ... .as_path() | provenance | MaD:44 | @@ -98,8 +97,7 @@ edges | test.rs:44:13:44:21 | file_name | test.rs:48:14:48:22 | file_name | provenance | | | test.rs:44:13:44:21 | file_name | test.rs:49:14:49:22 | file_name | provenance | | | test.rs:44:13:44:21 | file_name | test.rs:50:14:50:22 | file_name | provenance | | -| test.rs:44:25:44:37 | e.file_name() | test.rs:44:13:44:21 | file_name | provenance | | -| test.rs:44:27:44:35 | file_name | test.rs:44:25:44:37 | e.file_name() | provenance | Src:MaD:3 MaD:3 | +| test.rs:44:25:44:37 | e.file_name() | test.rs:44:13:44:21 | file_name | provenance | Src:MaD:3 | | test.rs:45:14:45:22 | file_name | test.rs:45:14:45:30 | file_name.clone() | provenance | MaD:18 | | test.rs:46:14:46:22 | file_name | test.rs:46:14:46:30 | file_name.clone() | provenance | MaD:18 | | test.rs:46:14:46:30 | file_name.clone() | test.rs:46:14:46:44 | ... .into_string() [Ok, String] | provenance | MaD:39 | @@ -111,32 +109,30 @@ edges | test.rs:49:14:49:22 | file_name | test.rs:49:14:49:30 | file_name.clone() | provenance | MaD:18 | | test.rs:49:14:49:30 | file_name.clone() | test.rs:49:14:49:49 | ... .as_encoded_bytes() | provenance | MaD:38 | | test.rs:68:13:68:18 | target | test.rs:69:14:69:19 | target | provenance | | -| test.rs:68:22:68:34 | ...::read_link | test.rs:68:22:68:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:12 | +| test.rs:68:22:68:49 | ...::read_link(...) | test.rs:68:22:68:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:12 | | test.rs:68:22:68:49 | ...::read_link(...) [Ok] | test.rs:68:22:68:50 | TryExpr | provenance | | | test.rs:68:22:68:50 | TryExpr | test.rs:68:13:68:18 | target | provenance | | | test.rs:77:13:77:18 | buffer | test.rs:78:14:78:19 | buffer | provenance | | -| test.rs:77:31:77:45 | ...::read | test.rs:77:31:77:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:14 | +| test.rs:77:31:77:57 | ...::read(...) | test.rs:77:31:77:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:14 | | test.rs:77:31:77:57 | ...::read(...) [future, Ok] | test.rs:77:31:77:63 | await ... [Ok] | provenance | | | test.rs:77:31:77:63 | await ... [Ok] | test.rs:77:31:77:64 | TryExpr | provenance | | | test.rs:77:31:77:64 | TryExpr | test.rs:77:13:77:18 | buffer | provenance | | | test.rs:82:13:82:18 | buffer | test.rs:83:14:83:19 | buffer | provenance | | -| test.rs:82:31:82:45 | ...::read | test.rs:82:31:82:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:14 | +| test.rs:82:31:82:57 | ...::read(...) | test.rs:82:31:82:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:14 | | test.rs:82:31:82:57 | ...::read(...) [future, Ok] | test.rs:82:31:82:63 | await ... [Ok] | provenance | | | test.rs:82:31:82:63 | await ... [Ok] | test.rs:82:31:82:64 | TryExpr | provenance | | | test.rs:82:31:82:64 | TryExpr | test.rs:82:13:82:18 | buffer | provenance | | | test.rs:87:13:87:18 | buffer | test.rs:88:14:88:19 | buffer | provenance | | -| test.rs:87:22:87:46 | ...::read_to_string | test.rs:87:22:87:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:16 | +| test.rs:87:22:87:58 | ...::read_to_string(...) | test.rs:87:22:87:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:16 | | test.rs:87:22:87:58 | ...::read_to_string(...) [future, Ok] | test.rs:87:22:87:64 | await ... [Ok] | provenance | | | test.rs:87:22:87:64 | await ... [Ok] | test.rs:87:22:87:65 | TryExpr | provenance | | | test.rs:87:22:87:65 | TryExpr | test.rs:87:13:87:18 | buffer | provenance | | | test.rs:93:13:93:16 | path | test.rs:95:14:95:17 | path | provenance | | -| test.rs:93:20:93:31 | entry.path() | test.rs:93:13:93:16 | path | provenance | | -| test.rs:93:26:93:29 | path | test.rs:93:20:93:31 | entry.path() | provenance | Src:MaD:10 MaD:10 | +| test.rs:93:20:93:31 | entry.path() | test.rs:93:13:93:16 | path | provenance | Src:MaD:10 | | test.rs:94:13:94:21 | file_name | test.rs:96:14:96:22 | file_name | provenance | | -| test.rs:94:25:94:41 | entry.file_name() | test.rs:94:13:94:21 | file_name | provenance | | -| test.rs:94:31:94:39 | file_name | test.rs:94:25:94:41 | entry.file_name() | provenance | Src:MaD:9 MaD:9 | +| test.rs:94:25:94:41 | entry.file_name() | test.rs:94:13:94:21 | file_name | provenance | Src:MaD:9 | | test.rs:100:13:100:18 | target | test.rs:101:14:101:19 | target | provenance | | -| test.rs:100:22:100:41 | ...::read_link | test.rs:100:22:100:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:15 | +| test.rs:100:22:100:56 | ...::read_link(...) | test.rs:100:22:100:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:15 | | test.rs:100:22:100:56 | ...::read_link(...) [future, Ok] | test.rs:100:22:100:62 | await ... [Ok] | provenance | | | test.rs:100:22:100:62 | await ... [Ok] | test.rs:100:22:100:63 | TryExpr | provenance | | | test.rs:100:22:100:63 | TryExpr | test.rs:100:13:100:18 | target | provenance | | @@ -145,7 +141,7 @@ edges | test.rs:110:9:110:16 | mut file | test.rs:126:22:126:25 | file | provenance | | | test.rs:110:9:110:16 | mut file | test.rs:132:9:132:12 | file | provenance | | | test.rs:110:9:110:16 | mut file | test.rs:136:17:136:20 | file | provenance | | -| test.rs:110:20:110:38 | ...::open | test.rs:110:20:110:50 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:110:20:110:50 | ...::open(...) | test.rs:110:20:110:50 | ...::open(...) [Ok] | provenance | Src:MaD:5 | | test.rs:110:20:110:50 | ...::open(...) [Ok] | test.rs:110:20:110:51 | TryExpr | provenance | | | test.rs:110:20:110:51 | TryExpr | test.rs:110:9:110:16 | mut file | provenance | | | test.rs:114:22:114:25 | file | test.rs:114:32:114:42 | [post] &mut buffer [&ref] | provenance | MaD:22 | @@ -167,35 +163,35 @@ edges | test.rs:136:17:136:20 | file | test.rs:136:17:136:28 | file.bytes() | provenance | MaD:19 | | test.rs:136:17:136:28 | file.bytes() | test.rs:137:14:137:17 | byte | provenance | | | test.rs:143:13:143:18 | mut f1 | test.rs:145:22:145:23 | f1 | provenance | | +| test.rs:143:22:143:63 | ... .open(...) | test.rs:143:22:143:63 | ... .open(...) [Ok] | provenance | Src:MaD:6 | | test.rs:143:22:143:63 | ... .open(...) [Ok] | test.rs:143:22:143:72 | ... .unwrap() | provenance | MaD:37 | | test.rs:143:22:143:72 | ... .unwrap() | test.rs:143:13:143:18 | mut f1 | provenance | | -| test.rs:143:50:143:53 | open | test.rs:143:22:143:63 | ... .open(...) [Ok] | provenance | Src:MaD:6 | | test.rs:145:22:145:23 | f1 | test.rs:145:30:145:40 | [post] &mut buffer [&ref] | provenance | MaD:22 | | test.rs:145:30:145:40 | [post] &mut buffer [&ref] | test.rs:145:35:145:40 | [post] buffer | provenance | | | test.rs:145:35:145:40 | [post] buffer | test.rs:146:15:146:20 | buffer | provenance | | | test.rs:146:15:146:20 | buffer | test.rs:146:14:146:20 | &buffer | provenance | | | test.rs:150:13:150:18 | mut f2 | test.rs:155:22:155:23 | f2 | provenance | | +| test.rs:150:22:152:27 | ... .open(...) | test.rs:150:22:152:27 | ... .open(...) [Ok] | provenance | Src:MaD:6 | | test.rs:150:22:152:27 | ... .open(...) [Ok] | test.rs:150:22:153:21 | ... .unwrap() | provenance | MaD:37 | | test.rs:150:22:153:21 | ... .unwrap() | test.rs:150:13:150:18 | mut f2 | provenance | | -| test.rs:152:14:152:17 | open | test.rs:150:22:152:27 | ... .open(...) [Ok] | provenance | Src:MaD:6 | | test.rs:155:22:155:23 | f2 | test.rs:155:30:155:40 | [post] &mut buffer [&ref] | provenance | MaD:22 | | test.rs:155:30:155:40 | [post] &mut buffer [&ref] | test.rs:155:35:155:40 | [post] buffer | provenance | | | test.rs:155:35:155:40 | [post] buffer | test.rs:156:15:156:20 | buffer | provenance | | | test.rs:156:15:156:20 | buffer | test.rs:156:14:156:20 | &buffer | provenance | | | test.rs:160:13:160:18 | mut f3 | test.rs:168:22:168:23 | f3 | provenance | | +| test.rs:160:22:165:27 | ... .open(...) | test.rs:160:22:165:27 | ... .open(...) [Ok] | provenance | Src:MaD:6 | | test.rs:160:22:165:27 | ... .open(...) [Ok] | test.rs:160:22:166:21 | ... .unwrap() | provenance | MaD:37 | | test.rs:160:22:166:21 | ... .unwrap() | test.rs:160:13:160:18 | mut f3 | provenance | | -| test.rs:165:14:165:17 | open | test.rs:160:22:165:27 | ... .open(...) [Ok] | provenance | Src:MaD:6 | | test.rs:168:22:168:23 | f3 | test.rs:168:30:168:40 | [post] &mut buffer [&ref] | provenance | MaD:22 | | test.rs:168:30:168:40 | [post] &mut buffer [&ref] | test.rs:168:35:168:40 | [post] buffer | provenance | | | test.rs:168:35:168:40 | [post] buffer | test.rs:169:15:169:20 | buffer | provenance | | | test.rs:169:15:169:20 | buffer | test.rs:169:14:169:20 | &buffer | provenance | | | test.rs:176:13:176:17 | file1 | test.rs:178:26:178:30 | file1 | provenance | | -| test.rs:176:21:176:39 | ...::open | test.rs:176:21:176:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:176:21:176:51 | ...::open(...) | test.rs:176:21:176:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | | test.rs:176:21:176:51 | ...::open(...) [Ok] | test.rs:176:21:176:52 | TryExpr | provenance | | | test.rs:176:21:176:52 | TryExpr | test.rs:176:13:176:17 | file1 | provenance | | | test.rs:177:13:177:17 | file2 | test.rs:178:38:178:42 | file2 | provenance | | -| test.rs:177:21:177:39 | ...::open | test.rs:177:21:177:59 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:177:21:177:59 | ...::open(...) | test.rs:177:21:177:59 | ...::open(...) [Ok] | provenance | Src:MaD:5 | | test.rs:177:21:177:59 | ...::open(...) [Ok] | test.rs:177:21:177:60 | TryExpr | provenance | | | test.rs:177:21:177:60 | TryExpr | test.rs:177:13:177:17 | file2 | provenance | | | test.rs:178:13:178:22 | mut reader | test.rs:179:9:179:14 | reader | provenance | | @@ -207,7 +203,7 @@ edges | test.rs:179:36:179:41 | [post] buffer | test.rs:180:15:180:20 | buffer | provenance | | | test.rs:180:15:180:20 | buffer | test.rs:180:14:180:20 | &buffer | provenance | | | test.rs:185:13:185:17 | file1 | test.rs:186:26:186:30 | file1 | provenance | | -| test.rs:185:21:185:39 | ...::open | test.rs:185:21:185:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:185:21:185:51 | ...::open(...) | test.rs:185:21:185:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | | test.rs:185:21:185:51 | ...::open(...) [Ok] | test.rs:185:21:185:52 | TryExpr | provenance | | | test.rs:185:21:185:52 | TryExpr | test.rs:185:13:185:17 | file1 | provenance | | | test.rs:186:13:186:22 | mut reader | test.rs:187:9:187:14 | reader | provenance | | @@ -226,7 +222,7 @@ edges | test.rs:197:9:197:16 | mut file | test.rs:226:18:226:21 | file | provenance | | | test.rs:197:9:197:16 | mut file | test.rs:227:18:227:21 | file | provenance | | | test.rs:197:9:197:16 | mut file | test.rs:236:9:236:12 | file | provenance | | -| test.rs:197:20:197:40 | ...::open | test.rs:197:20:197:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:7 | +| test.rs:197:20:197:52 | ...::open(...) | test.rs:197:20:197:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:7 | | test.rs:197:20:197:52 | ...::open(...) [future, Ok] | test.rs:197:20:197:58 | await ... [Ok] | provenance | | | test.rs:197:20:197:58 | await ... [Ok] | test.rs:197:20:197:59 | TryExpr | provenance | | | test.rs:197:20:197:59 | TryExpr | test.rs:197:9:197:16 | mut file | provenance | | @@ -271,16 +267,16 @@ edges | test.rs:236:28:236:33 | [post] buffer | test.rs:237:15:237:20 | buffer | provenance | | | test.rs:237:15:237:20 | buffer | test.rs:237:14:237:20 | &buffer | provenance | | | test.rs:243:13:243:18 | mut f1 | test.rs:245:22:245:23 | f1 | provenance | | +| test.rs:243:22:243:65 | ... .open(...) | test.rs:243:22:243:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:243:22:243:65 | ... .open(...) [future, Ok] | test.rs:243:22:243:71 | await ... [Ok] | provenance | | | test.rs:243:22:243:71 | await ... [Ok] | test.rs:243:22:243:72 | TryExpr | provenance | | | test.rs:243:22:243:72 | TryExpr | test.rs:243:13:243:18 | mut f1 | provenance | | -| test.rs:243:52:243:55 | open | test.rs:243:22:243:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:245:22:245:23 | f1 | test.rs:245:30:245:40 | [post] &mut buffer [&ref] | provenance | MaD:26 | | test.rs:245:30:245:40 | [post] &mut buffer [&ref] | test.rs:245:35:245:40 | [post] buffer | provenance | | | test.rs:245:35:245:40 | [post] buffer | test.rs:246:15:246:20 | buffer | provenance | | | test.rs:246:15:246:20 | buffer | test.rs:246:14:246:20 | &buffer | provenance | | | test.rs:274:9:274:16 | mut file | test.rs:278:22:278:25 | file | provenance | | -| test.rs:274:20:274:44 | ...::open | test.rs:274:20:274:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:274:20:274:56 | ...::open(...) | test.rs:274:20:274:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:1 | | test.rs:274:20:274:56 | ...::open(...) [future, Ok] | test.rs:274:20:274:62 | await ... [Ok] | provenance | | | test.rs:274:20:274:62 | await ... [Ok] | test.rs:274:20:274:63 | TryExpr | provenance | | | test.rs:274:20:274:63 | TryExpr | test.rs:274:9:274:16 | mut file | provenance | | @@ -289,33 +285,32 @@ edges | test.rs:278:37:278:42 | [post] buffer | test.rs:279:15:279:20 | buffer | provenance | | | test.rs:279:15:279:20 | buffer | test.rs:279:14:279:20 | &buffer | provenance | | | test.rs:285:13:285:18 | mut f1 | test.rs:287:22:287:23 | f1 | provenance | | +| test.rs:285:22:285:69 | ... .open(...) | test.rs:285:22:285:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:285:22:285:69 | ... .open(...) [future, Ok] | test.rs:285:22:285:75 | await ... [Ok] | provenance | | | test.rs:285:22:285:75 | await ... [Ok] | test.rs:285:22:285:76 | TryExpr | provenance | | | test.rs:285:22:285:76 | TryExpr | test.rs:285:13:285:18 | mut f1 | provenance | | -| test.rs:285:56:285:59 | open | test.rs:285:22:285:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:287:22:287:23 | f1 | test.rs:287:30:287:40 | [post] &mut buffer [&ref] | provenance | MaD:17 | | test.rs:287:30:287:40 | [post] &mut buffer [&ref] | test.rs:287:35:287:40 | [post] buffer | provenance | | | test.rs:287:35:287:40 | [post] buffer | test.rs:288:15:288:20 | buffer | provenance | | | test.rs:288:15:288:20 | buffer | test.rs:288:14:288:20 | &buffer | provenance | | nodes | test.rs:12:13:12:18 | buffer | semmle.label | buffer | -| test.rs:12:31:12:43 | ...::read | semmle.label | ...::read | +| test.rs:12:31:12:55 | ...::read(...) | semmle.label | ...::read(...) | | test.rs:12:31:12:55 | ...::read(...) [Ok] | semmle.label | ...::read(...) [Ok] | | test.rs:12:31:12:56 | TryExpr | semmle.label | TryExpr | | test.rs:13:14:13:19 | buffer | semmle.label | buffer | | test.rs:17:13:17:18 | buffer | semmle.label | buffer | -| test.rs:17:31:17:38 | ...::read | semmle.label | ...::read | +| test.rs:17:31:17:50 | ...::read(...) | semmle.label | ...::read(...) | | test.rs:17:31:17:50 | ...::read(...) [Ok] | semmle.label | ...::read(...) [Ok] | | test.rs:17:31:17:51 | TryExpr | semmle.label | TryExpr | | test.rs:18:14:18:19 | buffer | semmle.label | buffer | | test.rs:22:13:22:18 | buffer | semmle.label | buffer | -| test.rs:22:22:22:39 | ...::read_to_string | semmle.label | ...::read_to_string | +| test.rs:22:22:22:51 | ...::read_to_string(...) | semmle.label | ...::read_to_string(...) | | test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | semmle.label | ...::read_to_string(...) [Ok] | | test.rs:22:22:22:52 | TryExpr | semmle.label | TryExpr | | test.rs:23:14:23:19 | buffer | semmle.label | buffer | | test.rs:30:13:30:16 | path | semmle.label | path | | test.rs:30:20:30:27 | e.path() | semmle.label | e.path() | -| test.rs:30:22:30:25 | path | semmle.label | path | | test.rs:31:14:31:17 | path | semmle.label | path | | test.rs:31:14:31:25 | path.clone() | semmle.label | path.clone() | | test.rs:32:14:32:17 | path | semmle.label | path | @@ -350,7 +345,6 @@ nodes | test.rs:42:14:42:17 | path | semmle.label | path | | test.rs:44:13:44:21 | file_name | semmle.label | file_name | | test.rs:44:25:44:37 | e.file_name() | semmle.label | e.file_name() | -| test.rs:44:27:44:35 | file_name | semmle.label | file_name | | test.rs:45:14:45:22 | file_name | semmle.label | file_name | | test.rs:45:14:45:30 | file_name.clone() | semmle.label | file_name.clone() | | test.rs:46:14:46:22 | file_name | semmle.label | file_name | @@ -368,44 +362,42 @@ nodes | test.rs:49:14:49:49 | ... .as_encoded_bytes() | semmle.label | ... .as_encoded_bytes() | | test.rs:50:14:50:22 | file_name | semmle.label | file_name | | test.rs:68:13:68:18 | target | semmle.label | target | -| test.rs:68:22:68:34 | ...::read_link | semmle.label | ...::read_link | +| test.rs:68:22:68:49 | ...::read_link(...) | semmle.label | ...::read_link(...) | | test.rs:68:22:68:49 | ...::read_link(...) [Ok] | semmle.label | ...::read_link(...) [Ok] | | test.rs:68:22:68:50 | TryExpr | semmle.label | TryExpr | | test.rs:69:14:69:19 | target | semmle.label | target | | test.rs:77:13:77:18 | buffer | semmle.label | buffer | -| test.rs:77:31:77:45 | ...::read | semmle.label | ...::read | +| test.rs:77:31:77:57 | ...::read(...) | semmle.label | ...::read(...) | | test.rs:77:31:77:57 | ...::read(...) [future, Ok] | semmle.label | ...::read(...) [future, Ok] | | test.rs:77:31:77:63 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:77:31:77:64 | TryExpr | semmle.label | TryExpr | | test.rs:78:14:78:19 | buffer | semmle.label | buffer | | test.rs:82:13:82:18 | buffer | semmle.label | buffer | -| test.rs:82:31:82:45 | ...::read | semmle.label | ...::read | +| test.rs:82:31:82:57 | ...::read(...) | semmle.label | ...::read(...) | | test.rs:82:31:82:57 | ...::read(...) [future, Ok] | semmle.label | ...::read(...) [future, Ok] | | test.rs:82:31:82:63 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:82:31:82:64 | TryExpr | semmle.label | TryExpr | | test.rs:83:14:83:19 | buffer | semmle.label | buffer | | test.rs:87:13:87:18 | buffer | semmle.label | buffer | -| test.rs:87:22:87:46 | ...::read_to_string | semmle.label | ...::read_to_string | +| test.rs:87:22:87:58 | ...::read_to_string(...) | semmle.label | ...::read_to_string(...) | | test.rs:87:22:87:58 | ...::read_to_string(...) [future, Ok] | semmle.label | ...::read_to_string(...) [future, Ok] | | test.rs:87:22:87:64 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:87:22:87:65 | TryExpr | semmle.label | TryExpr | | test.rs:88:14:88:19 | buffer | semmle.label | buffer | | test.rs:93:13:93:16 | path | semmle.label | path | | test.rs:93:20:93:31 | entry.path() | semmle.label | entry.path() | -| test.rs:93:26:93:29 | path | semmle.label | path | | test.rs:94:13:94:21 | file_name | semmle.label | file_name | | test.rs:94:25:94:41 | entry.file_name() | semmle.label | entry.file_name() | -| test.rs:94:31:94:39 | file_name | semmle.label | file_name | | test.rs:95:14:95:17 | path | semmle.label | path | | test.rs:96:14:96:22 | file_name | semmle.label | file_name | | test.rs:100:13:100:18 | target | semmle.label | target | -| test.rs:100:22:100:41 | ...::read_link | semmle.label | ...::read_link | +| test.rs:100:22:100:56 | ...::read_link(...) | semmle.label | ...::read_link(...) | | test.rs:100:22:100:56 | ...::read_link(...) [future, Ok] | semmle.label | ...::read_link(...) [future, Ok] | | test.rs:100:22:100:62 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:100:22:100:63 | TryExpr | semmle.label | TryExpr | | test.rs:101:14:101:19 | target | semmle.label | target | | test.rs:110:9:110:16 | mut file | semmle.label | mut file | -| test.rs:110:20:110:38 | ...::open | semmle.label | ...::open | +| test.rs:110:20:110:50 | ...::open(...) | semmle.label | ...::open(...) | | test.rs:110:20:110:50 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | | test.rs:110:20:110:51 | TryExpr | semmle.label | TryExpr | | test.rs:114:22:114:25 | file | semmle.label | file | @@ -432,38 +424,38 @@ nodes | test.rs:136:17:136:28 | file.bytes() | semmle.label | file.bytes() | | test.rs:137:14:137:17 | byte | semmle.label | byte | | test.rs:143:13:143:18 | mut f1 | semmle.label | mut f1 | +| test.rs:143:22:143:63 | ... .open(...) | semmle.label | ... .open(...) | | test.rs:143:22:143:63 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | | test.rs:143:22:143:72 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:143:50:143:53 | open | semmle.label | open | | test.rs:145:22:145:23 | f1 | semmle.label | f1 | | test.rs:145:30:145:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:145:35:145:40 | [post] buffer | semmle.label | [post] buffer | | test.rs:146:14:146:20 | &buffer | semmle.label | &buffer | | test.rs:146:15:146:20 | buffer | semmle.label | buffer | | test.rs:150:13:150:18 | mut f2 | semmle.label | mut f2 | +| test.rs:150:22:152:27 | ... .open(...) | semmle.label | ... .open(...) | | test.rs:150:22:152:27 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | | test.rs:150:22:153:21 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:152:14:152:17 | open | semmle.label | open | | test.rs:155:22:155:23 | f2 | semmle.label | f2 | | test.rs:155:30:155:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:155:35:155:40 | [post] buffer | semmle.label | [post] buffer | | test.rs:156:14:156:20 | &buffer | semmle.label | &buffer | | test.rs:156:15:156:20 | buffer | semmle.label | buffer | | test.rs:160:13:160:18 | mut f3 | semmle.label | mut f3 | +| test.rs:160:22:165:27 | ... .open(...) | semmle.label | ... .open(...) | | test.rs:160:22:165:27 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | | test.rs:160:22:166:21 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:165:14:165:17 | open | semmle.label | open | | test.rs:168:22:168:23 | f3 | semmle.label | f3 | | test.rs:168:30:168:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:168:35:168:40 | [post] buffer | semmle.label | [post] buffer | | test.rs:169:14:169:20 | &buffer | semmle.label | &buffer | | test.rs:169:15:169:20 | buffer | semmle.label | buffer | | test.rs:176:13:176:17 | file1 | semmle.label | file1 | -| test.rs:176:21:176:39 | ...::open | semmle.label | ...::open | +| test.rs:176:21:176:51 | ...::open(...) | semmle.label | ...::open(...) | | test.rs:176:21:176:51 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | | test.rs:176:21:176:52 | TryExpr | semmle.label | TryExpr | | test.rs:177:13:177:17 | file2 | semmle.label | file2 | -| test.rs:177:21:177:39 | ...::open | semmle.label | ...::open | +| test.rs:177:21:177:59 | ...::open(...) | semmle.label | ...::open(...) | | test.rs:177:21:177:59 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | | test.rs:177:21:177:60 | TryExpr | semmle.label | TryExpr | | test.rs:178:13:178:22 | mut reader | semmle.label | mut reader | @@ -476,7 +468,7 @@ nodes | test.rs:180:14:180:20 | &buffer | semmle.label | &buffer | | test.rs:180:15:180:20 | buffer | semmle.label | buffer | | test.rs:185:13:185:17 | file1 | semmle.label | file1 | -| test.rs:185:21:185:39 | ...::open | semmle.label | ...::open | +| test.rs:185:21:185:51 | ...::open(...) | semmle.label | ...::open(...) | | test.rs:185:21:185:51 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | | test.rs:185:21:185:52 | TryExpr | semmle.label | TryExpr | | test.rs:186:13:186:22 | mut reader | semmle.label | mut reader | @@ -488,7 +480,7 @@ nodes | test.rs:188:14:188:20 | &buffer | semmle.label | &buffer | | test.rs:188:15:188:20 | buffer | semmle.label | buffer | | test.rs:197:9:197:16 | mut file | semmle.label | mut file | -| test.rs:197:20:197:40 | ...::open | semmle.label | ...::open | +| test.rs:197:20:197:52 | ...::open(...) | semmle.label | ...::open(...) | | test.rs:197:20:197:52 | ...::open(...) [future, Ok] | semmle.label | ...::open(...) [future, Ok] | | test.rs:197:20:197:58 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:197:20:197:59 | TryExpr | semmle.label | TryExpr | @@ -542,17 +534,17 @@ nodes | test.rs:237:14:237:20 | &buffer | semmle.label | &buffer | | test.rs:237:15:237:20 | buffer | semmle.label | buffer | | test.rs:243:13:243:18 | mut f1 | semmle.label | mut f1 | +| test.rs:243:22:243:65 | ... .open(...) | semmle.label | ... .open(...) | | test.rs:243:22:243:65 | ... .open(...) [future, Ok] | semmle.label | ... .open(...) [future, Ok] | | test.rs:243:22:243:71 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:243:22:243:72 | TryExpr | semmle.label | TryExpr | -| test.rs:243:52:243:55 | open | semmle.label | open | | test.rs:245:22:245:23 | f1 | semmle.label | f1 | | test.rs:245:30:245:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:245:35:245:40 | [post] buffer | semmle.label | [post] buffer | | test.rs:246:14:246:20 | &buffer | semmle.label | &buffer | | test.rs:246:15:246:20 | buffer | semmle.label | buffer | | test.rs:274:9:274:16 | mut file | semmle.label | mut file | -| test.rs:274:20:274:44 | ...::open | semmle.label | ...::open | +| test.rs:274:20:274:56 | ...::open(...) | semmle.label | ...::open(...) | | test.rs:274:20:274:56 | ...::open(...) [future, Ok] | semmle.label | ...::open(...) [future, Ok] | | test.rs:274:20:274:62 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:274:20:274:63 | TryExpr | semmle.label | TryExpr | @@ -562,10 +554,10 @@ nodes | test.rs:279:14:279:20 | &buffer | semmle.label | &buffer | | test.rs:279:15:279:20 | buffer | semmle.label | buffer | | test.rs:285:13:285:18 | mut f1 | semmle.label | mut f1 | +| test.rs:285:22:285:69 | ... .open(...) | semmle.label | ... .open(...) | | test.rs:285:22:285:69 | ... .open(...) [future, Ok] | semmle.label | ... .open(...) [future, Ok] | | test.rs:285:22:285:75 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:285:22:285:76 | TryExpr | semmle.label | TryExpr | -| test.rs:285:56:285:59 | open | semmle.label | open | | test.rs:287:22:287:23 | f1 | semmle.label | f1 | | test.rs:287:30:287:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:287:35:287:40 | [post] buffer | semmle.label | [post] buffer | @@ -574,54 +566,54 @@ nodes subpaths testFailures #select -| test.rs:13:14:13:19 | buffer | test.rs:12:31:12:43 | ...::read | test.rs:13:14:13:19 | buffer | $@ | test.rs:12:31:12:43 | ...::read | ...::read | -| test.rs:18:14:18:19 | buffer | test.rs:17:31:17:38 | ...::read | test.rs:18:14:18:19 | buffer | $@ | test.rs:17:31:17:38 | ...::read | ...::read | -| test.rs:23:14:23:19 | buffer | test.rs:22:22:22:39 | ...::read_to_string | test.rs:23:14:23:19 | buffer | $@ | test.rs:22:22:22:39 | ...::read_to_string | ...::read_to_string | -| test.rs:31:14:31:25 | path.clone() | test.rs:30:22:30:25 | path | test.rs:31:14:31:25 | path.clone() | $@ | test.rs:30:22:30:25 | path | path | -| test.rs:32:14:32:35 | ... .as_path() | test.rs:30:22:30:25 | path | test.rs:32:14:32:35 | ... .as_path() | $@ | test.rs:30:22:30:25 | path | path | -| test.rs:33:14:33:42 | ... .into_os_string() | test.rs:30:22:30:25 | path | test.rs:33:14:33:42 | ... .into_os_string() | $@ | test.rs:30:22:30:25 | path | path | -| test.rs:34:14:34:69 | ...::from(...) | test.rs:30:22:30:25 | path | test.rs:34:14:34:69 | ...::from(...) | $@ | test.rs:30:22:30:25 | path | path | -| test.rs:35:14:35:37 | ... .as_os_str() | test.rs:30:22:30:25 | path | test.rs:35:14:35:37 | ... .as_os_str() | $@ | test.rs:30:22:30:25 | path | path | -| test.rs:36:14:36:41 | ... .as_mut_os_str() | test.rs:30:22:30:25 | path | test.rs:36:14:36:41 | ... .as_mut_os_str() | $@ | test.rs:30:22:30:25 | path | path | -| test.rs:37:14:37:26 | path.to_str() | test.rs:30:22:30:25 | path | test.rs:37:14:37:26 | path.to_str() | $@ | test.rs:30:22:30:25 | path | path | -| test.rs:38:14:38:31 | path.to_path_buf() | test.rs:30:22:30:25 | path | test.rs:38:14:38:31 | path.to_path_buf() | $@ | test.rs:30:22:30:25 | path | path | -| test.rs:39:14:39:38 | ... .unwrap() | test.rs:30:22:30:25 | path | test.rs:39:14:39:38 | ... .unwrap() | $@ | test.rs:30:22:30:25 | path | path | -| test.rs:40:14:40:38 | ... .unwrap() | test.rs:30:22:30:25 | path | test.rs:40:14:40:38 | ... .unwrap() | $@ | test.rs:30:22:30:25 | path | path | -| test.rs:41:14:41:41 | ... .unwrap() | test.rs:30:22:30:25 | path | test.rs:41:14:41:41 | ... .unwrap() | $@ | test.rs:30:22:30:25 | path | path | -| test.rs:42:14:42:17 | path | test.rs:30:22:30:25 | path | test.rs:42:14:42:17 | path | $@ | test.rs:30:22:30:25 | path | path | -| test.rs:45:14:45:30 | file_name.clone() | test.rs:44:27:44:35 | file_name | test.rs:45:14:45:30 | file_name.clone() | $@ | test.rs:44:27:44:35 | file_name | file_name | -| test.rs:46:14:46:53 | ... .unwrap() | test.rs:44:27:44:35 | file_name | test.rs:46:14:46:53 | ... .unwrap() | $@ | test.rs:44:27:44:35 | file_name | file_name | -| test.rs:47:14:47:40 | ... .unwrap() | test.rs:44:27:44:35 | file_name | test.rs:47:14:47:40 | ... .unwrap() | $@ | test.rs:44:27:44:35 | file_name | file_name | -| test.rs:48:14:48:49 | ... .to_mut() | test.rs:44:27:44:35 | file_name | test.rs:48:14:48:49 | ... .to_mut() | $@ | test.rs:44:27:44:35 | file_name | file_name | -| test.rs:49:14:49:49 | ... .as_encoded_bytes() | test.rs:44:27:44:35 | file_name | test.rs:49:14:49:49 | ... .as_encoded_bytes() | $@ | test.rs:44:27:44:35 | file_name | file_name | -| test.rs:50:14:50:22 | file_name | test.rs:44:27:44:35 | file_name | test.rs:50:14:50:22 | file_name | $@ | test.rs:44:27:44:35 | file_name | file_name | -| test.rs:69:14:69:19 | target | test.rs:68:22:68:34 | ...::read_link | test.rs:69:14:69:19 | target | $@ | test.rs:68:22:68:34 | ...::read_link | ...::read_link | -| test.rs:78:14:78:19 | buffer | test.rs:77:31:77:45 | ...::read | test.rs:78:14:78:19 | buffer | $@ | test.rs:77:31:77:45 | ...::read | ...::read | -| test.rs:83:14:83:19 | buffer | test.rs:82:31:82:45 | ...::read | test.rs:83:14:83:19 | buffer | $@ | test.rs:82:31:82:45 | ...::read | ...::read | -| test.rs:88:14:88:19 | buffer | test.rs:87:22:87:46 | ...::read_to_string | test.rs:88:14:88:19 | buffer | $@ | test.rs:87:22:87:46 | ...::read_to_string | ...::read_to_string | -| test.rs:95:14:95:17 | path | test.rs:93:26:93:29 | path | test.rs:95:14:95:17 | path | $@ | test.rs:93:26:93:29 | path | path | -| test.rs:96:14:96:22 | file_name | test.rs:94:31:94:39 | file_name | test.rs:96:14:96:22 | file_name | $@ | test.rs:94:31:94:39 | file_name | file_name | -| test.rs:101:14:101:19 | target | test.rs:100:22:100:41 | ...::read_link | test.rs:101:14:101:19 | target | $@ | test.rs:100:22:100:41 | ...::read_link | ...::read_link | -| test.rs:115:14:115:20 | &buffer | test.rs:110:20:110:38 | ...::open | test.rs:115:14:115:20 | &buffer | $@ | test.rs:110:20:110:38 | ...::open | ...::open | -| test.rs:121:14:121:20 | &buffer | test.rs:110:20:110:38 | ...::open | test.rs:121:14:121:20 | &buffer | $@ | test.rs:110:20:110:38 | ...::open | ...::open | -| test.rs:127:14:127:20 | &buffer | test.rs:110:20:110:38 | ...::open | test.rs:127:14:127:20 | &buffer | $@ | test.rs:110:20:110:38 | ...::open | ...::open | -| test.rs:133:14:133:20 | &buffer | test.rs:110:20:110:38 | ...::open | test.rs:133:14:133:20 | &buffer | $@ | test.rs:110:20:110:38 | ...::open | ...::open | -| test.rs:137:14:137:17 | byte | test.rs:110:20:110:38 | ...::open | test.rs:137:14:137:17 | byte | $@ | test.rs:110:20:110:38 | ...::open | ...::open | -| test.rs:146:14:146:20 | &buffer | test.rs:143:50:143:53 | open | test.rs:146:14:146:20 | &buffer | $@ | test.rs:143:50:143:53 | open | open | -| test.rs:156:14:156:20 | &buffer | test.rs:152:14:152:17 | open | test.rs:156:14:156:20 | &buffer | $@ | test.rs:152:14:152:17 | open | open | -| test.rs:169:14:169:20 | &buffer | test.rs:165:14:165:17 | open | test.rs:169:14:169:20 | &buffer | $@ | test.rs:165:14:165:17 | open | open | -| test.rs:180:14:180:20 | &buffer | test.rs:176:21:176:39 | ...::open | test.rs:180:14:180:20 | &buffer | $@ | test.rs:176:21:176:39 | ...::open | ...::open | -| test.rs:180:14:180:20 | &buffer | test.rs:177:21:177:39 | ...::open | test.rs:180:14:180:20 | &buffer | $@ | test.rs:177:21:177:39 | ...::open | ...::open | -| test.rs:188:14:188:20 | &buffer | test.rs:185:21:185:39 | ...::open | test.rs:188:14:188:20 | &buffer | $@ | test.rs:185:21:185:39 | ...::open | ...::open | -| test.rs:202:14:202:20 | &buffer | test.rs:197:20:197:40 | ...::open | test.rs:202:14:202:20 | &buffer | $@ | test.rs:197:20:197:40 | ...::open | ...::open | -| test.rs:208:14:208:20 | &buffer | test.rs:197:20:197:40 | ...::open | test.rs:208:14:208:20 | &buffer | $@ | test.rs:197:20:197:40 | ...::open | ...::open | -| test.rs:214:14:214:20 | &buffer | test.rs:197:20:197:40 | ...::open | test.rs:214:14:214:20 | &buffer | $@ | test.rs:197:20:197:40 | ...::open | ...::open | -| test.rs:220:14:220:20 | &buffer | test.rs:197:20:197:40 | ...::open | test.rs:220:14:220:20 | &buffer | $@ | test.rs:197:20:197:40 | ...::open | ...::open | -| test.rs:228:14:228:15 | v1 | test.rs:197:20:197:40 | ...::open | test.rs:228:14:228:15 | v1 | $@ | test.rs:197:20:197:40 | ...::open | ...::open | -| test.rs:229:14:229:15 | v2 | test.rs:197:20:197:40 | ...::open | test.rs:229:14:229:15 | v2 | $@ | test.rs:197:20:197:40 | ...::open | ...::open | -| test.rs:230:14:230:15 | v3 | test.rs:197:20:197:40 | ...::open | test.rs:230:14:230:15 | v3 | $@ | test.rs:197:20:197:40 | ...::open | ...::open | -| test.rs:231:14:231:15 | v4 | test.rs:197:20:197:40 | ...::open | test.rs:231:14:231:15 | v4 | $@ | test.rs:197:20:197:40 | ...::open | ...::open | -| test.rs:237:14:237:20 | &buffer | test.rs:197:20:197:40 | ...::open | test.rs:237:14:237:20 | &buffer | $@ | test.rs:197:20:197:40 | ...::open | ...::open | -| test.rs:246:14:246:20 | &buffer | test.rs:243:52:243:55 | open | test.rs:246:14:246:20 | &buffer | $@ | test.rs:243:52:243:55 | open | open | -| test.rs:279:14:279:20 | &buffer | test.rs:274:20:274:44 | ...::open | test.rs:279:14:279:20 | &buffer | $@ | test.rs:274:20:274:44 | ...::open | ...::open | -| test.rs:288:14:288:20 | &buffer | test.rs:285:56:285:59 | open | test.rs:288:14:288:20 | &buffer | $@ | test.rs:285:56:285:59 | open | open | +| test.rs:13:14:13:19 | buffer | test.rs:12:31:12:55 | ...::read(...) | test.rs:13:14:13:19 | buffer | $@ | test.rs:12:31:12:55 | ...::read(...) | ...::read(...) | +| test.rs:18:14:18:19 | buffer | test.rs:17:31:17:50 | ...::read(...) | test.rs:18:14:18:19 | buffer | $@ | test.rs:17:31:17:50 | ...::read(...) | ...::read(...) | +| test.rs:23:14:23:19 | buffer | test.rs:22:22:22:51 | ...::read_to_string(...) | test.rs:23:14:23:19 | buffer | $@ | test.rs:22:22:22:51 | ...::read_to_string(...) | ...::read_to_string(...) | +| test.rs:31:14:31:25 | path.clone() | test.rs:30:20:30:27 | e.path() | test.rs:31:14:31:25 | path.clone() | $@ | test.rs:30:20:30:27 | e.path() | e.path() | +| test.rs:32:14:32:35 | ... .as_path() | test.rs:30:20:30:27 | e.path() | test.rs:32:14:32:35 | ... .as_path() | $@ | test.rs:30:20:30:27 | e.path() | e.path() | +| test.rs:33:14:33:42 | ... .into_os_string() | test.rs:30:20:30:27 | e.path() | test.rs:33:14:33:42 | ... .into_os_string() | $@ | test.rs:30:20:30:27 | e.path() | e.path() | +| test.rs:34:14:34:69 | ...::from(...) | test.rs:30:20:30:27 | e.path() | test.rs:34:14:34:69 | ...::from(...) | $@ | test.rs:30:20:30:27 | e.path() | e.path() | +| test.rs:35:14:35:37 | ... .as_os_str() | test.rs:30:20:30:27 | e.path() | test.rs:35:14:35:37 | ... .as_os_str() | $@ | test.rs:30:20:30:27 | e.path() | e.path() | +| test.rs:36:14:36:41 | ... .as_mut_os_str() | test.rs:30:20:30:27 | e.path() | test.rs:36:14:36:41 | ... .as_mut_os_str() | $@ | test.rs:30:20:30:27 | e.path() | e.path() | +| test.rs:37:14:37:26 | path.to_str() | test.rs:30:20:30:27 | e.path() | test.rs:37:14:37:26 | path.to_str() | $@ | test.rs:30:20:30:27 | e.path() | e.path() | +| test.rs:38:14:38:31 | path.to_path_buf() | test.rs:30:20:30:27 | e.path() | test.rs:38:14:38:31 | path.to_path_buf() | $@ | test.rs:30:20:30:27 | e.path() | e.path() | +| test.rs:39:14:39:38 | ... .unwrap() | test.rs:30:20:30:27 | e.path() | test.rs:39:14:39:38 | ... .unwrap() | $@ | test.rs:30:20:30:27 | e.path() | e.path() | +| test.rs:40:14:40:38 | ... .unwrap() | test.rs:30:20:30:27 | e.path() | test.rs:40:14:40:38 | ... .unwrap() | $@ | test.rs:30:20:30:27 | e.path() | e.path() | +| test.rs:41:14:41:41 | ... .unwrap() | test.rs:30:20:30:27 | e.path() | test.rs:41:14:41:41 | ... .unwrap() | $@ | test.rs:30:20:30:27 | e.path() | e.path() | +| test.rs:42:14:42:17 | path | test.rs:30:20:30:27 | e.path() | test.rs:42:14:42:17 | path | $@ | test.rs:30:20:30:27 | e.path() | e.path() | +| test.rs:45:14:45:30 | file_name.clone() | test.rs:44:25:44:37 | e.file_name() | test.rs:45:14:45:30 | file_name.clone() | $@ | test.rs:44:25:44:37 | e.file_name() | e.file_name() | +| test.rs:46:14:46:53 | ... .unwrap() | test.rs:44:25:44:37 | e.file_name() | test.rs:46:14:46:53 | ... .unwrap() | $@ | test.rs:44:25:44:37 | e.file_name() | e.file_name() | +| test.rs:47:14:47:40 | ... .unwrap() | test.rs:44:25:44:37 | e.file_name() | test.rs:47:14:47:40 | ... .unwrap() | $@ | test.rs:44:25:44:37 | e.file_name() | e.file_name() | +| test.rs:48:14:48:49 | ... .to_mut() | test.rs:44:25:44:37 | e.file_name() | test.rs:48:14:48:49 | ... .to_mut() | $@ | test.rs:44:25:44:37 | e.file_name() | e.file_name() | +| test.rs:49:14:49:49 | ... .as_encoded_bytes() | test.rs:44:25:44:37 | e.file_name() | test.rs:49:14:49:49 | ... .as_encoded_bytes() | $@ | test.rs:44:25:44:37 | e.file_name() | e.file_name() | +| test.rs:50:14:50:22 | file_name | test.rs:44:25:44:37 | e.file_name() | test.rs:50:14:50:22 | file_name | $@ | test.rs:44:25:44:37 | e.file_name() | e.file_name() | +| test.rs:69:14:69:19 | target | test.rs:68:22:68:49 | ...::read_link(...) | test.rs:69:14:69:19 | target | $@ | test.rs:68:22:68:49 | ...::read_link(...) | ...::read_link(...) | +| test.rs:78:14:78:19 | buffer | test.rs:77:31:77:57 | ...::read(...) | test.rs:78:14:78:19 | buffer | $@ | test.rs:77:31:77:57 | ...::read(...) | ...::read(...) | +| test.rs:83:14:83:19 | buffer | test.rs:82:31:82:57 | ...::read(...) | test.rs:83:14:83:19 | buffer | $@ | test.rs:82:31:82:57 | ...::read(...) | ...::read(...) | +| test.rs:88:14:88:19 | buffer | test.rs:87:22:87:58 | ...::read_to_string(...) | test.rs:88:14:88:19 | buffer | $@ | test.rs:87:22:87:58 | ...::read_to_string(...) | ...::read_to_string(...) | +| test.rs:95:14:95:17 | path | test.rs:93:20:93:31 | entry.path() | test.rs:95:14:95:17 | path | $@ | test.rs:93:20:93:31 | entry.path() | entry.path() | +| test.rs:96:14:96:22 | file_name | test.rs:94:25:94:41 | entry.file_name() | test.rs:96:14:96:22 | file_name | $@ | test.rs:94:25:94:41 | entry.file_name() | entry.file_name() | +| test.rs:101:14:101:19 | target | test.rs:100:22:100:56 | ...::read_link(...) | test.rs:101:14:101:19 | target | $@ | test.rs:100:22:100:56 | ...::read_link(...) | ...::read_link(...) | +| test.rs:115:14:115:20 | &buffer | test.rs:110:20:110:50 | ...::open(...) | test.rs:115:14:115:20 | &buffer | $@ | test.rs:110:20:110:50 | ...::open(...) | ...::open(...) | +| test.rs:121:14:121:20 | &buffer | test.rs:110:20:110:50 | ...::open(...) | test.rs:121:14:121:20 | &buffer | $@ | test.rs:110:20:110:50 | ...::open(...) | ...::open(...) | +| test.rs:127:14:127:20 | &buffer | test.rs:110:20:110:50 | ...::open(...) | test.rs:127:14:127:20 | &buffer | $@ | test.rs:110:20:110:50 | ...::open(...) | ...::open(...) | +| test.rs:133:14:133:20 | &buffer | test.rs:110:20:110:50 | ...::open(...) | test.rs:133:14:133:20 | &buffer | $@ | test.rs:110:20:110:50 | ...::open(...) | ...::open(...) | +| test.rs:137:14:137:17 | byte | test.rs:110:20:110:50 | ...::open(...) | test.rs:137:14:137:17 | byte | $@ | test.rs:110:20:110:50 | ...::open(...) | ...::open(...) | +| test.rs:146:14:146:20 | &buffer | test.rs:143:22:143:63 | ... .open(...) | test.rs:146:14:146:20 | &buffer | $@ | test.rs:143:22:143:63 | ... .open(...) | ... .open(...) | +| test.rs:156:14:156:20 | &buffer | test.rs:150:22:152:27 | ... .open(...) | test.rs:156:14:156:20 | &buffer | $@ | test.rs:150:22:152:27 | ... .open(...) | ... .open(...) | +| test.rs:169:14:169:20 | &buffer | test.rs:160:22:165:27 | ... .open(...) | test.rs:169:14:169:20 | &buffer | $@ | test.rs:160:22:165:27 | ... .open(...) | ... .open(...) | +| test.rs:180:14:180:20 | &buffer | test.rs:176:21:176:51 | ...::open(...) | test.rs:180:14:180:20 | &buffer | $@ | test.rs:176:21:176:51 | ...::open(...) | ...::open(...) | +| test.rs:180:14:180:20 | &buffer | test.rs:177:21:177:59 | ...::open(...) | test.rs:180:14:180:20 | &buffer | $@ | test.rs:177:21:177:59 | ...::open(...) | ...::open(...) | +| test.rs:188:14:188:20 | &buffer | test.rs:185:21:185:51 | ...::open(...) | test.rs:188:14:188:20 | &buffer | $@ | test.rs:185:21:185:51 | ...::open(...) | ...::open(...) | +| test.rs:202:14:202:20 | &buffer | test.rs:197:20:197:52 | ...::open(...) | test.rs:202:14:202:20 | &buffer | $@ | test.rs:197:20:197:52 | ...::open(...) | ...::open(...) | +| test.rs:208:14:208:20 | &buffer | test.rs:197:20:197:52 | ...::open(...) | test.rs:208:14:208:20 | &buffer | $@ | test.rs:197:20:197:52 | ...::open(...) | ...::open(...) | +| test.rs:214:14:214:20 | &buffer | test.rs:197:20:197:52 | ...::open(...) | test.rs:214:14:214:20 | &buffer | $@ | test.rs:197:20:197:52 | ...::open(...) | ...::open(...) | +| test.rs:220:14:220:20 | &buffer | test.rs:197:20:197:52 | ...::open(...) | test.rs:220:14:220:20 | &buffer | $@ | test.rs:197:20:197:52 | ...::open(...) | ...::open(...) | +| test.rs:228:14:228:15 | v1 | test.rs:197:20:197:52 | ...::open(...) | test.rs:228:14:228:15 | v1 | $@ | test.rs:197:20:197:52 | ...::open(...) | ...::open(...) | +| test.rs:229:14:229:15 | v2 | test.rs:197:20:197:52 | ...::open(...) | test.rs:229:14:229:15 | v2 | $@ | test.rs:197:20:197:52 | ...::open(...) | ...::open(...) | +| test.rs:230:14:230:15 | v3 | test.rs:197:20:197:52 | ...::open(...) | test.rs:230:14:230:15 | v3 | $@ | test.rs:197:20:197:52 | ...::open(...) | ...::open(...) | +| test.rs:231:14:231:15 | v4 | test.rs:197:20:197:52 | ...::open(...) | test.rs:231:14:231:15 | v4 | $@ | test.rs:197:20:197:52 | ...::open(...) | ...::open(...) | +| test.rs:237:14:237:20 | &buffer | test.rs:197:20:197:52 | ...::open(...) | test.rs:237:14:237:20 | &buffer | $@ | test.rs:197:20:197:52 | ...::open(...) | ...::open(...) | +| test.rs:246:14:246:20 | &buffer | test.rs:243:22:243:65 | ... .open(...) | test.rs:246:14:246:20 | &buffer | $@ | test.rs:243:22:243:65 | ... .open(...) | ... .open(...) | +| test.rs:279:14:279:20 | &buffer | test.rs:274:20:274:56 | ...::open(...) | test.rs:279:14:279:20 | &buffer | $@ | test.rs:274:20:274:56 | ...::open(...) | ...::open(...) | +| test.rs:288:14:288:20 | &buffer | test.rs:285:22:285:69 | ... .open(...) | test.rs:288:14:288:20 | &buffer | $@ | test.rs:285:22:285:69 | ... .open(...) | ... .open(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected index dc17269abe81..70a9ed34806f 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected @@ -1,33 +1,33 @@ -| test.rs:12:31:12:43 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:17:31:17:38 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:22:22:22:39 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:27:26:27:37 | ...::read_dir | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:30:22:30:25 | path | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:44:27:44:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:53:60:53:67 | read_dir | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:56:22:56:25 | path | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:57:27:57:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:60:64:60:71 | read_dir | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:63:22:63:25 | path | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:64:27:64:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:68:22:68:34 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:77:31:77:45 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:82:31:82:45 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:87:22:87:46 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:93:26:93:29 | path | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:94:31:94:39 | file_name | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:100:22:100:41 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:110:20:110:38 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:143:50:143:53 | open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:152:14:152:17 | open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:165:14:165:17 | open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:176:21:176:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:177:21:177:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:185:21:185:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:197:20:197:40 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:243:52:243:55 | open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:253:21:253:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:254:21:254:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:262:21:262:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:274:20:274:44 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:285:56:285:59 | open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:12:31:12:55 | ...::read(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:17:31:17:50 | ...::read(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:22:22:22:51 | ...::read_to_string(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:27:26:27:50 | ...::read_dir(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:30:20:30:27 | e.path() | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:44:25:44:37 | e.file_name() | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:53:26:53:69 | ... .read_dir() | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:56:20:56:27 | e.path() | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:57:25:57:37 | e.file_name() | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:60:26:60:73 | ... .read_dir() | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:63:20:63:27 | e.path() | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:64:25:64:37 | e.file_name() | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:68:22:68:49 | ...::read_link(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:77:31:77:57 | ...::read(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:82:31:82:57 | ...::read(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:87:22:87:58 | ...::read_to_string(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:93:20:93:31 | entry.path() | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:94:25:94:41 | entry.file_name() | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:100:22:100:56 | ...::read_link(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:110:20:110:50 | ...::open(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:143:22:143:63 | ... .open(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:150:22:152:27 | ... .open(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:160:22:165:27 | ... .open(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:176:21:176:51 | ...::open(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:177:21:177:59 | ...::open(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:185:21:185:51 | ...::open(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:197:20:197:52 | ...::open(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:243:22:243:65 | ... .open(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:253:21:253:53 | ...::open(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:254:21:254:61 | ...::open(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:262:21:262:53 | ...::open(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:274:20:274:56 | ...::open(...) | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:285:22:285:69 | ... .open(...) | Flow source 'FileSource' of type file (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index b5a008f98388..8e44873ec860 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -45,31 +45,31 @@ models | 44 | Summary: ::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint | edges | test.rs:11:9:11:22 | remote_string1 | test.rs:12:10:12:23 | remote_string1 | provenance | | -| test.rs:11:26:11:47 | ...::get | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | +| test.rs:11:26:11:62 | ...::get(...) | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:11:26:11:62 | ...::get(...) [Ok] | test.rs:11:26:11:63 | TryExpr | provenance | | | test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:38 | | test.rs:11:26:11:70 | ... .text() [Ok] | test.rs:11:26:11:71 | TryExpr | provenance | | | test.rs:11:26:11:71 | TryExpr | test.rs:11:9:11:22 | remote_string1 | provenance | | | test.rs:14:9:14:22 | remote_string2 | test.rs:15:10:15:23 | remote_string2 | provenance | | -| test.rs:14:26:14:47 | ...::get | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | +| test.rs:14:26:14:62 | ...::get(...) | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:28 | | test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:38 | | test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:28 | | test.rs:14:26:14:87 | ... .unwrap() | test.rs:14:9:14:22 | remote_string2 | provenance | | | test.rs:17:9:17:22 | remote_string3 | test.rs:18:10:18:23 | remote_string3 | provenance | | -| test.rs:17:26:17:47 | ...::get | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | +| test.rs:17:26:17:62 | ...::get(...) | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:28 | | test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:39 | | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:28 | | test.rs:17:26:17:107 | ... .unwrap() | test.rs:17:9:17:22 | remote_string3 | provenance | | | test.rs:20:9:20:22 | remote_string4 | test.rs:21:10:21:23 | remote_string4 | provenance | | -| test.rs:20:26:20:47 | ...::get | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | +| test.rs:20:26:20:62 | ...::get(...) | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:28 | | test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:37 | | test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:28 | | test.rs:20:26:20:88 | ... .unwrap() | test.rs:20:9:20:22 | remote_string4 | provenance | | | test.rs:23:9:23:22 | remote_string5 | test.rs:24:10:24:23 | remote_string5 | provenance | | -| test.rs:23:26:23:37 | ...::get | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | +| test.rs:23:26:23:52 | ...::get(...) | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | test.rs:23:26:23:58 | await ... [Ok] | provenance | | | test.rs:23:26:23:58 | await ... [Ok] | test.rs:23:26:23:59 | TryExpr | provenance | | | test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:36 | @@ -77,7 +77,7 @@ edges | test.rs:23:26:23:72 | await ... [Ok] | test.rs:23:26:23:73 | TryExpr | provenance | | | test.rs:23:26:23:73 | TryExpr | test.rs:23:9:23:22 | remote_string5 | provenance | | | test.rs:26:9:26:22 | remote_string6 | test.rs:27:10:27:23 | remote_string6 | provenance | | -| test.rs:26:26:26:37 | ...::get | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | +| test.rs:26:26:26:52 | ...::get(...) | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | test.rs:26:26:26:58 | await ... [Ok] | provenance | | | test.rs:26:26:26:58 | await ... [Ok] | test.rs:26:26:26:59 | TryExpr | provenance | | | test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:34 | @@ -86,7 +86,7 @@ edges | test.rs:26:26:26:74 | TryExpr | test.rs:26:9:26:22 | remote_string6 | provenance | | | test.rs:29:9:29:20 | mut request1 | test.rs:30:10:30:17 | request1 | provenance | | | test.rs:29:9:29:20 | mut request1 | test.rs:31:29:31:36 | request1 | provenance | | -| test.rs:29:24:29:35 | ...::get | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | +| test.rs:29:24:29:50 | ...::get(...) | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | test.rs:29:24:29:56 | await ... [Ok] | provenance | | | test.rs:29:24:29:56 | await ... [Ok] | test.rs:29:24:29:57 | TryExpr | provenance | | | test.rs:29:24:29:57 | TryExpr | test.rs:29:9:29:20 | mut request1 | provenance | | @@ -102,19 +102,19 @@ edges | test.rs:31:29:31:51 | TryExpr [Some] | test.rs:31:15:31:25 | Some(...) [Some] | provenance | | | test.rs:60:13:60:20 | response | test.rs:61:15:61:22 | response | provenance | | | test.rs:60:13:60:20 | response | test.rs:62:14:62:21 | response | provenance | | +| test.rs:60:24:60:51 | sender.send_request(...) | test.rs:60:24:60:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:60:24:60:51 | sender.send_request(...) [future, Ok] | test.rs:60:24:60:57 | await ... [Ok] | provenance | | | test.rs:60:24:60:57 | await ... [Ok] | test.rs:60:24:60:58 | TryExpr | provenance | | | test.rs:60:24:60:58 | TryExpr | test.rs:60:13:60:20 | response | provenance | | -| test.rs:60:31:60:42 | send_request | test.rs:60:24:60:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:61:15:61:22 | response | test.rs:61:14:61:22 | &response | provenance | | | test.rs:67:9:67:20 | mut response | test.rs:68:11:68:18 | response | provenance | | | test.rs:67:9:67:20 | mut response | test.rs:76:18:76:25 | response | provenance | | | test.rs:67:9:67:20 | mut response | test.rs:77:18:77:25 | response | provenance | | | test.rs:67:9:67:20 | mut response | test.rs:79:24:79:31 | response | provenance | | +| test.rs:67:24:67:51 | sender.send_request(...) | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | test.rs:67:24:67:57 | await ... [Ok] | provenance | | | test.rs:67:24:67:57 | await ... [Ok] | test.rs:67:24:67:58 | TryExpr | provenance | | | test.rs:67:24:67:58 | TryExpr | test.rs:67:9:67:20 | mut response | provenance | | -| test.rs:67:31:67:42 | send_request | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:68:11:68:18 | response | test.rs:68:10:68:18 | &response | provenance | | | test.rs:76:18:76:25 | response | test.rs:76:18:76:32 | response.body() | provenance | MaD:31 | | test.rs:77:18:77:25 | response | test.rs:77:18:77:36 | response.body_mut() | provenance | MaD:32 | @@ -123,7 +123,7 @@ edges | test.rs:79:24:79:43 | response.into_body() | test.rs:79:17:79:20 | body | provenance | | | test.rs:80:19:80:22 | body | test.rs:80:18:80:22 | &body | provenance | | | test.rs:155:13:155:22 | mut stream | test.rs:162:17:162:22 | stream | provenance | | -| test.rs:155:26:155:53 | ...::connect | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:4 | +| test.rs:155:26:155:62 | ...::connect(...) | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:4 | | test.rs:155:26:155:62 | ...::connect(...) [Ok] | test.rs:155:26:155:63 | TryExpr | provenance | | | test.rs:155:26:155:63 | TryExpr | test.rs:155:13:155:22 | mut stream | provenance | | | test.rs:162:17:162:22 | stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:20 | @@ -134,7 +134,7 @@ edges | test.rs:166:14:166:19 | buffer | test.rs:166:14:166:22 | buffer[0] | provenance | MaD:10 | | test.rs:174:13:174:22 | mut stream | test.rs:182:58:182:63 | stream | provenance | | | test.rs:174:13:174:22 | mut stream | test.rs:203:54:203:59 | stream | provenance | | -| test.rs:174:26:174:61 | ...::connect_timeout | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:174:26:174:105 | ...::connect_timeout(...) | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:5 | | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | test.rs:174:26:174:106 | TryExpr | provenance | | | test.rs:174:26:174:106 | TryExpr | test.rs:174:13:174:22 | mut stream | provenance | | | test.rs:182:21:182:30 | mut reader | test.rs:185:27:185:32 | reader | provenance | | @@ -158,7 +158,7 @@ edges | test.rs:224:9:224:24 | mut tokio_stream | test.rs:236:18:236:29 | tokio_stream | provenance | | | test.rs:224:9:224:24 | mut tokio_stream | test.rs:252:19:252:30 | tokio_stream | provenance | | | test.rs:224:9:224:24 | mut tokio_stream | test.rs:275:19:275:30 | tokio_stream | provenance | | -| test.rs:224:28:224:57 | ...::connect | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:6 | +| test.rs:224:28:224:66 | ...::connect(...) | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:6 | | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | test.rs:224:28:224:72 | await ... [Ok] | provenance | | | test.rs:224:28:224:72 | await ... [Ok] | test.rs:224:28:224:73 | TryExpr | provenance | | | test.rs:224:28:224:73 | TryExpr | test.rs:224:9:224:24 | mut tokio_stream | provenance | | @@ -183,7 +183,7 @@ edges | test.rs:275:50:275:55 | [post] buffer | test.rs:282:27:282:32 | buffer | provenance | | | test.rs:282:27:282:32 | buffer | test.rs:282:26:282:32 | &buffer | provenance | | | test.rs:332:9:332:18 | mut client | test.rs:333:22:333:27 | client | provenance | | -| test.rs:332:22:332:50 | ...::new | test.rs:332:22:332:75 | ...::new(...) [Ok] | provenance | Src:MaD:3 | +| test.rs:332:22:332:75 | ...::new(...) | test.rs:332:22:332:75 | ...::new(...) [Ok] | provenance | Src:MaD:3 | | test.rs:332:22:332:75 | ...::new(...) [Ok] | test.rs:332:22:332:84 | ... .unwrap() | provenance | MaD:28 | | test.rs:332:22:332:84 | ... .unwrap() | test.rs:332:9:332:18 | mut client | provenance | | | test.rs:333:9:333:18 | mut reader | test.rs:334:11:334:16 | reader | provenance | | @@ -207,7 +207,7 @@ edges | test.rs:351:15:351:20 | buffer | test.rs:351:14:351:20 | &buffer | provenance | | | test.rs:373:13:373:15 | tcp | test.rs:374:15:374:17 | tcp | provenance | | | test.rs:373:13:373:15 | tcp | test.rs:380:57:380:59 | tcp | provenance | | -| test.rs:373:19:373:36 | ...::connect | test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:373:19:373:41 | ...::connect(...) | test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | | test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | test.rs:373:19:373:47 | await ... [Ok] | provenance | | | test.rs:373:19:373:47 | await ... [Ok] | test.rs:373:19:373:48 | TryExpr | provenance | | | test.rs:373:19:373:48 | TryExpr | test.rs:373:13:373:15 | tcp | provenance | | @@ -370,35 +370,35 @@ edges | test.rs:501:19:501:24 | buffer | test.rs:501:18:501:24 | &buffer | provenance | | nodes | test.rs:11:9:11:22 | remote_string1 | semmle.label | remote_string1 | -| test.rs:11:26:11:47 | ...::get | semmle.label | ...::get | +| test.rs:11:26:11:62 | ...::get(...) | semmle.label | ...::get(...) | | test.rs:11:26:11:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | | test.rs:11:26:11:63 | TryExpr | semmle.label | TryExpr | | test.rs:11:26:11:70 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | | test.rs:11:26:11:71 | TryExpr | semmle.label | TryExpr | | test.rs:12:10:12:23 | remote_string1 | semmle.label | remote_string1 | | test.rs:14:9:14:22 | remote_string2 | semmle.label | remote_string2 | -| test.rs:14:26:14:47 | ...::get | semmle.label | ...::get | +| test.rs:14:26:14:62 | ...::get(...) | semmle.label | ...::get(...) | | test.rs:14:26:14:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | | test.rs:14:26:14:71 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:14:26:14:78 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | | test.rs:14:26:14:87 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:15:10:15:23 | remote_string2 | semmle.label | remote_string2 | | test.rs:17:9:17:22 | remote_string3 | semmle.label | remote_string3 | -| test.rs:17:26:17:47 | ...::get | semmle.label | ...::get | +| test.rs:17:26:17:62 | ...::get(...) | semmle.label | ...::get(...) | | test.rs:17:26:17:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | | test.rs:17:26:17:71 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | semmle.label | ... .text_with_charset(...) [Ok] | | test.rs:17:26:17:107 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:18:10:18:23 | remote_string3 | semmle.label | remote_string3 | | test.rs:20:9:20:22 | remote_string4 | semmle.label | remote_string4 | -| test.rs:20:26:20:47 | ...::get | semmle.label | ...::get | +| test.rs:20:26:20:62 | ...::get(...) | semmle.label | ...::get(...) | | test.rs:20:26:20:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | | test.rs:20:26:20:71 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:20:26:20:79 | ... .bytes() [Ok] | semmle.label | ... .bytes() [Ok] | | test.rs:20:26:20:88 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:21:10:21:23 | remote_string4 | semmle.label | remote_string4 | | test.rs:23:9:23:22 | remote_string5 | semmle.label | remote_string5 | -| test.rs:23:26:23:37 | ...::get | semmle.label | ...::get | +| test.rs:23:26:23:52 | ...::get(...) | semmle.label | ...::get(...) | | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | semmle.label | ...::get(...) [future, Ok] | | test.rs:23:26:23:58 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:23:26:23:59 | TryExpr | semmle.label | TryExpr | @@ -407,7 +407,7 @@ nodes | test.rs:23:26:23:73 | TryExpr | semmle.label | TryExpr | | test.rs:24:10:24:23 | remote_string5 | semmle.label | remote_string5 | | test.rs:26:9:26:22 | remote_string6 | semmle.label | remote_string6 | -| test.rs:26:26:26:37 | ...::get | semmle.label | ...::get | +| test.rs:26:26:26:52 | ...::get(...) | semmle.label | ...::get(...) | | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | semmle.label | ...::get(...) [future, Ok] | | test.rs:26:26:26:58 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:26:26:26:59 | TryExpr | semmle.label | TryExpr | @@ -416,7 +416,7 @@ nodes | test.rs:26:26:26:74 | TryExpr | semmle.label | TryExpr | | test.rs:27:10:27:23 | remote_string6 | semmle.label | remote_string6 | | test.rs:29:9:29:20 | mut request1 | semmle.label | mut request1 | -| test.rs:29:24:29:35 | ...::get | semmle.label | ...::get | +| test.rs:29:24:29:50 | ...::get(...) | semmle.label | ...::get(...) | | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | semmle.label | ...::get(...) [future, Ok] | | test.rs:29:24:29:56 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:29:24:29:57 | TryExpr | semmle.label | TryExpr | @@ -433,18 +433,18 @@ nodes | test.rs:31:29:31:51 | TryExpr [Some] | semmle.label | TryExpr [Some] | | test.rs:32:14:32:18 | chunk | semmle.label | chunk | | test.rs:60:13:60:20 | response | semmle.label | response | +| test.rs:60:24:60:51 | sender.send_request(...) | semmle.label | sender.send_request(...) | | test.rs:60:24:60:51 | sender.send_request(...) [future, Ok] | semmle.label | sender.send_request(...) [future, Ok] | | test.rs:60:24:60:57 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:60:24:60:58 | TryExpr | semmle.label | TryExpr | -| test.rs:60:31:60:42 | send_request | semmle.label | send_request | | test.rs:61:14:61:22 | &response | semmle.label | &response | | test.rs:61:15:61:22 | response | semmle.label | response | | test.rs:62:14:62:21 | response | semmle.label | response | | test.rs:67:9:67:20 | mut response | semmle.label | mut response | +| test.rs:67:24:67:51 | sender.send_request(...) | semmle.label | sender.send_request(...) | | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | semmle.label | sender.send_request(...) [future, Ok] | | test.rs:67:24:67:57 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:67:24:67:58 | TryExpr | semmle.label | TryExpr | -| test.rs:67:31:67:42 | send_request | semmle.label | send_request | | test.rs:68:10:68:18 | &response | semmle.label | &response | | test.rs:68:11:68:18 | response | semmle.label | response | | test.rs:76:18:76:25 | response | semmle.label | response | @@ -457,7 +457,7 @@ nodes | test.rs:80:18:80:22 | &body | semmle.label | &body | | test.rs:80:19:80:22 | body | semmle.label | body | | test.rs:155:13:155:22 | mut stream | semmle.label | mut stream | -| test.rs:155:26:155:53 | ...::connect | semmle.label | ...::connect | +| test.rs:155:26:155:62 | ...::connect(...) | semmle.label | ...::connect(...) | | test.rs:155:26:155:62 | ...::connect(...) [Ok] | semmle.label | ...::connect(...) [Ok] | | test.rs:155:26:155:63 | TryExpr | semmle.label | TryExpr | | test.rs:162:17:162:22 | stream | semmle.label | stream | @@ -468,7 +468,7 @@ nodes | test.rs:166:14:166:19 | buffer | semmle.label | buffer | | test.rs:166:14:166:22 | buffer[0] | semmle.label | buffer[0] | | test.rs:174:13:174:22 | mut stream | semmle.label | mut stream | -| test.rs:174:26:174:61 | ...::connect_timeout | semmle.label | ...::connect_timeout | +| test.rs:174:26:174:105 | ...::connect_timeout(...) | semmle.label | ...::connect_timeout(...) | | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | semmle.label | ...::connect_timeout(...) [Ok] | | test.rs:174:26:174:106 | TryExpr | semmle.label | TryExpr | | test.rs:182:21:182:30 | mut reader | semmle.label | mut reader | @@ -491,7 +491,7 @@ nodes | test.rs:205:28:205:37 | Ok(...) | semmle.label | Ok(...) | | test.rs:207:30:207:35 | string | semmle.label | string | | test.rs:224:9:224:24 | mut tokio_stream | semmle.label | mut tokio_stream | -| test.rs:224:28:224:57 | ...::connect | semmle.label | ...::connect | +| test.rs:224:28:224:66 | ...::connect(...) | semmle.label | ...::connect(...) | | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | | test.rs:224:28:224:72 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:224:28:224:73 | TryExpr | semmle.label | TryExpr | @@ -520,7 +520,7 @@ nodes | test.rs:282:26:282:32 | &buffer | semmle.label | &buffer | | test.rs:282:27:282:32 | buffer | semmle.label | buffer | | test.rs:332:9:332:18 | mut client | semmle.label | mut client | -| test.rs:332:22:332:50 | ...::new | semmle.label | ...::new | +| test.rs:332:22:332:75 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:332:22:332:75 | ...::new(...) [Ok] | semmle.label | ...::new(...) [Ok] | | test.rs:332:22:332:84 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:333:9:333:18 | mut reader | semmle.label | mut reader | @@ -544,7 +544,7 @@ nodes | test.rs:351:14:351:20 | &buffer | semmle.label | &buffer | | test.rs:351:15:351:20 | buffer | semmle.label | buffer | | test.rs:373:13:373:15 | tcp | semmle.label | tcp | -| test.rs:373:19:373:36 | ...::connect | semmle.label | ...::connect | +| test.rs:373:19:373:41 | ...::connect(...) | semmle.label | ...::connect(...) | | test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | | test.rs:373:19:373:47 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:373:19:373:48 | TryExpr | semmle.label | TryExpr | @@ -700,57 +700,57 @@ nodes subpaths testFailures #select -| test.rs:12:10:12:23 | remote_string1 | test.rs:11:26:11:47 | ...::get | test.rs:12:10:12:23 | remote_string1 | $@ | test.rs:11:26:11:47 | ...::get | ...::get | -| test.rs:15:10:15:23 | remote_string2 | test.rs:14:26:14:47 | ...::get | test.rs:15:10:15:23 | remote_string2 | $@ | test.rs:14:26:14:47 | ...::get | ...::get | -| test.rs:18:10:18:23 | remote_string3 | test.rs:17:26:17:47 | ...::get | test.rs:18:10:18:23 | remote_string3 | $@ | test.rs:17:26:17:47 | ...::get | ...::get | -| test.rs:21:10:21:23 | remote_string4 | test.rs:20:26:20:47 | ...::get | test.rs:21:10:21:23 | remote_string4 | $@ | test.rs:20:26:20:47 | ...::get | ...::get | -| test.rs:24:10:24:23 | remote_string5 | test.rs:23:26:23:37 | ...::get | test.rs:24:10:24:23 | remote_string5 | $@ | test.rs:23:26:23:37 | ...::get | ...::get | -| test.rs:27:10:27:23 | remote_string6 | test.rs:26:26:26:37 | ...::get | test.rs:27:10:27:23 | remote_string6 | $@ | test.rs:26:26:26:37 | ...::get | ...::get | -| test.rs:30:10:30:41 | ... .unwrap() | test.rs:29:24:29:35 | ...::get | test.rs:30:10:30:41 | ... .unwrap() | $@ | test.rs:29:24:29:35 | ...::get | ...::get | -| test.rs:32:14:32:18 | chunk | test.rs:29:24:29:35 | ...::get | test.rs:32:14:32:18 | chunk | $@ | test.rs:29:24:29:35 | ...::get | ...::get | -| test.rs:61:14:61:22 | &response | test.rs:60:31:60:42 | send_request | test.rs:61:14:61:22 | &response | $@ | test.rs:60:31:60:42 | send_request | send_request | -| test.rs:62:14:62:21 | response | test.rs:60:31:60:42 | send_request | test.rs:62:14:62:21 | response | $@ | test.rs:60:31:60:42 | send_request | send_request | -| test.rs:68:10:68:18 | &response | test.rs:67:31:67:42 | send_request | test.rs:68:10:68:18 | &response | $@ | test.rs:67:31:67:42 | send_request | send_request | -| test.rs:76:18:76:32 | response.body() | test.rs:67:31:67:42 | send_request | test.rs:76:18:76:32 | response.body() | $@ | test.rs:67:31:67:42 | send_request | send_request | -| test.rs:77:18:77:36 | response.body_mut() | test.rs:67:31:67:42 | send_request | test.rs:77:18:77:36 | response.body_mut() | $@ | test.rs:67:31:67:42 | send_request | send_request | -| test.rs:80:18:80:22 | &body | test.rs:67:31:67:42 | send_request | test.rs:80:18:80:22 | &body | $@ | test.rs:67:31:67:42 | send_request | send_request | -| test.rs:165:14:165:20 | &buffer | test.rs:155:26:155:53 | ...::connect | test.rs:165:14:165:20 | &buffer | $@ | test.rs:155:26:155:53 | ...::connect | ...::connect | -| test.rs:166:14:166:22 | buffer[0] | test.rs:155:26:155:53 | ...::connect | test.rs:166:14:166:22 | buffer[0] | $@ | test.rs:155:26:155:53 | ...::connect | ...::connect | -| test.rs:192:34:192:38 | &line | test.rs:174:26:174:61 | ...::connect_timeout | test.rs:192:34:192:38 | &line | $@ | test.rs:174:26:174:61 | ...::connect_timeout | ...::connect_timeout | -| test.rs:207:30:207:35 | string | test.rs:174:26:174:61 | ...::connect_timeout | test.rs:207:30:207:35 | string | $@ | test.rs:174:26:174:61 | ...::connect_timeout | ...::connect_timeout | -| test.rs:239:14:239:21 | &buffer1 | test.rs:224:28:224:57 | ...::connect | test.rs:239:14:239:21 | &buffer1 | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | -| test.rs:240:14:240:23 | buffer1[0] | test.rs:224:28:224:57 | ...::connect | test.rs:240:14:240:23 | buffer1[0] | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | -| test.rs:243:14:243:21 | &buffer2 | test.rs:224:28:224:57 | ...::connect | test.rs:243:14:243:21 | &buffer2 | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | -| test.rs:244:14:244:23 | buffer2[0] | test.rs:224:28:224:57 | ...::connect | test.rs:244:14:244:23 | buffer2[0] | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | -| test.rs:259:26:259:32 | &buffer | test.rs:224:28:224:57 | ...::connect | test.rs:259:26:259:32 | &buffer | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | -| test.rs:282:26:282:32 | &buffer | test.rs:224:28:224:57 | ...::connect | test.rs:282:26:282:32 | &buffer | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | -| test.rs:334:10:334:16 | &reader | test.rs:332:22:332:50 | ...::new | test.rs:334:10:334:16 | &reader | $@ | test.rs:332:22:332:50 | ...::new | ...::new | -| test.rs:339:14:339:20 | &buffer | test.rs:332:22:332:50 | ...::new | test.rs:339:14:339:20 | &buffer | $@ | test.rs:332:22:332:50 | ...::new | ...::new | -| test.rs:345:14:345:20 | &buffer | test.rs:332:22:332:50 | ...::new | test.rs:345:14:345:20 | &buffer | $@ | test.rs:332:22:332:50 | ...::new | ...::new | -| test.rs:351:14:351:20 | &buffer | test.rs:332:22:332:50 | ...::new | test.rs:351:14:351:20 | &buffer | $@ | test.rs:332:22:332:50 | ...::new | ...::new | -| test.rs:374:14:374:17 | &tcp | test.rs:373:19:373:36 | ...::connect | test.rs:374:14:374:17 | &tcp | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:381:14:381:20 | &reader | test.rs:373:19:373:36 | ...::connect | test.rs:381:14:381:20 | &reader | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:387:18:387:24 | &pinned | test.rs:373:19:373:36 | ...::connect | test.rs:387:18:387:24 | &pinned | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:391:22:391:28 | &buffer | test.rs:373:19:373:36 | ...::connect | test.rs:391:22:391:28 | &buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:392:22:392:33 | &... | test.rs:373:19:373:36 | ...::connect | test.rs:392:22:392:33 | &... | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:400:18:400:40 | &... | test.rs:373:19:373:36 | ...::connect | test.rs:400:18:400:40 | &... | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:405:18:405:40 | &... | test.rs:373:19:373:36 | ...::connect | test.rs:405:18:405:40 | &... | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:409:14:409:21 | &reader2 | test.rs:373:19:373:36 | ...::connect | test.rs:409:14:409:21 | &reader2 | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:414:18:414:24 | &pinned | test.rs:373:19:373:36 | ...::connect | test.rs:414:18:414:24 | &pinned | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:418:22:418:28 | &buffer | test.rs:373:19:373:36 | ...::connect | test.rs:418:22:418:28 | &buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:419:22:419:24 | buf | test.rs:373:19:373:36 | ...::connect | test.rs:419:22:419:24 | buf | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:426:26:426:33 | &buffer2 | test.rs:373:19:373:36 | ...::connect | test.rs:426:26:426:33 | &buffer2 | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:427:26:427:28 | buf | test.rs:373:19:373:36 | ...::connect | test.rs:427:26:427:28 | buf | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:438:18:438:23 | buffer | test.rs:373:19:373:36 | ...::connect | test.rs:438:18:438:23 | buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:445:18:445:24 | &pinned | test.rs:373:19:373:36 | ...::connect | test.rs:445:18:445:24 | &pinned | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:448:18:448:24 | &buffer | test.rs:373:19:373:36 | ...::connect | test.rs:448:18:448:24 | &buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:450:22:450:33 | &... | test.rs:373:19:373:36 | ...::connect | test.rs:450:22:450:33 | &... | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:458:18:458:40 | &... | test.rs:373:19:373:36 | ...::connect | test.rs:458:18:458:40 | &... | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:462:18:462:40 | &... | test.rs:373:19:373:36 | ...::connect | test.rs:462:18:462:40 | &... | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:468:18:468:24 | &pinned | test.rs:373:19:373:36 | ...::connect | test.rs:468:18:468:24 | &pinned | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:471:18:471:24 | &buffer | test.rs:373:19:373:36 | ...::connect | test.rs:471:18:471:24 | &buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:473:22:473:24 | buf | test.rs:373:19:373:36 | ...::connect | test.rs:473:22:473:24 | buf | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:480:18:480:23 | buffer | test.rs:373:19:373:36 | ...::connect | test.rs:480:18:480:23 | buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:487:18:487:22 | &line | test.rs:373:19:373:36 | ...::connect | test.rs:487:18:487:22 | &line | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:494:18:494:22 | &line | test.rs:373:19:373:36 | ...::connect | test.rs:494:18:494:22 | &line | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | -| test.rs:501:18:501:24 | &buffer | test.rs:373:19:373:36 | ...::connect | test.rs:501:18:501:24 | &buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:12:10:12:23 | remote_string1 | test.rs:11:26:11:62 | ...::get(...) | test.rs:12:10:12:23 | remote_string1 | $@ | test.rs:11:26:11:62 | ...::get(...) | ...::get(...) | +| test.rs:15:10:15:23 | remote_string2 | test.rs:14:26:14:62 | ...::get(...) | test.rs:15:10:15:23 | remote_string2 | $@ | test.rs:14:26:14:62 | ...::get(...) | ...::get(...) | +| test.rs:18:10:18:23 | remote_string3 | test.rs:17:26:17:62 | ...::get(...) | test.rs:18:10:18:23 | remote_string3 | $@ | test.rs:17:26:17:62 | ...::get(...) | ...::get(...) | +| test.rs:21:10:21:23 | remote_string4 | test.rs:20:26:20:62 | ...::get(...) | test.rs:21:10:21:23 | remote_string4 | $@ | test.rs:20:26:20:62 | ...::get(...) | ...::get(...) | +| test.rs:24:10:24:23 | remote_string5 | test.rs:23:26:23:52 | ...::get(...) | test.rs:24:10:24:23 | remote_string5 | $@ | test.rs:23:26:23:52 | ...::get(...) | ...::get(...) | +| test.rs:27:10:27:23 | remote_string6 | test.rs:26:26:26:52 | ...::get(...) | test.rs:27:10:27:23 | remote_string6 | $@ | test.rs:26:26:26:52 | ...::get(...) | ...::get(...) | +| test.rs:30:10:30:41 | ... .unwrap() | test.rs:29:24:29:50 | ...::get(...) | test.rs:30:10:30:41 | ... .unwrap() | $@ | test.rs:29:24:29:50 | ...::get(...) | ...::get(...) | +| test.rs:32:14:32:18 | chunk | test.rs:29:24:29:50 | ...::get(...) | test.rs:32:14:32:18 | chunk | $@ | test.rs:29:24:29:50 | ...::get(...) | ...::get(...) | +| test.rs:61:14:61:22 | &response | test.rs:60:24:60:51 | sender.send_request(...) | test.rs:61:14:61:22 | &response | $@ | test.rs:60:24:60:51 | sender.send_request(...) | sender.send_request(...) | +| test.rs:62:14:62:21 | response | test.rs:60:24:60:51 | sender.send_request(...) | test.rs:62:14:62:21 | response | $@ | test.rs:60:24:60:51 | sender.send_request(...) | sender.send_request(...) | +| test.rs:68:10:68:18 | &response | test.rs:67:24:67:51 | sender.send_request(...) | test.rs:68:10:68:18 | &response | $@ | test.rs:67:24:67:51 | sender.send_request(...) | sender.send_request(...) | +| test.rs:76:18:76:32 | response.body() | test.rs:67:24:67:51 | sender.send_request(...) | test.rs:76:18:76:32 | response.body() | $@ | test.rs:67:24:67:51 | sender.send_request(...) | sender.send_request(...) | +| test.rs:77:18:77:36 | response.body_mut() | test.rs:67:24:67:51 | sender.send_request(...) | test.rs:77:18:77:36 | response.body_mut() | $@ | test.rs:67:24:67:51 | sender.send_request(...) | sender.send_request(...) | +| test.rs:80:18:80:22 | &body | test.rs:67:24:67:51 | sender.send_request(...) | test.rs:80:18:80:22 | &body | $@ | test.rs:67:24:67:51 | sender.send_request(...) | sender.send_request(...) | +| test.rs:165:14:165:20 | &buffer | test.rs:155:26:155:62 | ...::connect(...) | test.rs:165:14:165:20 | &buffer | $@ | test.rs:155:26:155:62 | ...::connect(...) | ...::connect(...) | +| test.rs:166:14:166:22 | buffer[0] | test.rs:155:26:155:62 | ...::connect(...) | test.rs:166:14:166:22 | buffer[0] | $@ | test.rs:155:26:155:62 | ...::connect(...) | ...::connect(...) | +| test.rs:192:34:192:38 | &line | test.rs:174:26:174:105 | ...::connect_timeout(...) | test.rs:192:34:192:38 | &line | $@ | test.rs:174:26:174:105 | ...::connect_timeout(...) | ...::connect_timeout(...) | +| test.rs:207:30:207:35 | string | test.rs:174:26:174:105 | ...::connect_timeout(...) | test.rs:207:30:207:35 | string | $@ | test.rs:174:26:174:105 | ...::connect_timeout(...) | ...::connect_timeout(...) | +| test.rs:239:14:239:21 | &buffer1 | test.rs:224:28:224:66 | ...::connect(...) | test.rs:239:14:239:21 | &buffer1 | $@ | test.rs:224:28:224:66 | ...::connect(...) | ...::connect(...) | +| test.rs:240:14:240:23 | buffer1[0] | test.rs:224:28:224:66 | ...::connect(...) | test.rs:240:14:240:23 | buffer1[0] | $@ | test.rs:224:28:224:66 | ...::connect(...) | ...::connect(...) | +| test.rs:243:14:243:21 | &buffer2 | test.rs:224:28:224:66 | ...::connect(...) | test.rs:243:14:243:21 | &buffer2 | $@ | test.rs:224:28:224:66 | ...::connect(...) | ...::connect(...) | +| test.rs:244:14:244:23 | buffer2[0] | test.rs:224:28:224:66 | ...::connect(...) | test.rs:244:14:244:23 | buffer2[0] | $@ | test.rs:224:28:224:66 | ...::connect(...) | ...::connect(...) | +| test.rs:259:26:259:32 | &buffer | test.rs:224:28:224:66 | ...::connect(...) | test.rs:259:26:259:32 | &buffer | $@ | test.rs:224:28:224:66 | ...::connect(...) | ...::connect(...) | +| test.rs:282:26:282:32 | &buffer | test.rs:224:28:224:66 | ...::connect(...) | test.rs:282:26:282:32 | &buffer | $@ | test.rs:224:28:224:66 | ...::connect(...) | ...::connect(...) | +| test.rs:334:10:334:16 | &reader | test.rs:332:22:332:75 | ...::new(...) | test.rs:334:10:334:16 | &reader | $@ | test.rs:332:22:332:75 | ...::new(...) | ...::new(...) | +| test.rs:339:14:339:20 | &buffer | test.rs:332:22:332:75 | ...::new(...) | test.rs:339:14:339:20 | &buffer | $@ | test.rs:332:22:332:75 | ...::new(...) | ...::new(...) | +| test.rs:345:14:345:20 | &buffer | test.rs:332:22:332:75 | ...::new(...) | test.rs:345:14:345:20 | &buffer | $@ | test.rs:332:22:332:75 | ...::new(...) | ...::new(...) | +| test.rs:351:14:351:20 | &buffer | test.rs:332:22:332:75 | ...::new(...) | test.rs:351:14:351:20 | &buffer | $@ | test.rs:332:22:332:75 | ...::new(...) | ...::new(...) | +| test.rs:374:14:374:17 | &tcp | test.rs:373:19:373:41 | ...::connect(...) | test.rs:374:14:374:17 | &tcp | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:381:14:381:20 | &reader | test.rs:373:19:373:41 | ...::connect(...) | test.rs:381:14:381:20 | &reader | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:387:18:387:24 | &pinned | test.rs:373:19:373:41 | ...::connect(...) | test.rs:387:18:387:24 | &pinned | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:391:22:391:28 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:391:22:391:28 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:392:22:392:33 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:392:22:392:33 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:400:18:400:40 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:400:18:400:40 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:405:18:405:40 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:405:18:405:40 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:409:14:409:21 | &reader2 | test.rs:373:19:373:41 | ...::connect(...) | test.rs:409:14:409:21 | &reader2 | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:414:18:414:24 | &pinned | test.rs:373:19:373:41 | ...::connect(...) | test.rs:414:18:414:24 | &pinned | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:418:22:418:28 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:418:22:418:28 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:419:22:419:24 | buf | test.rs:373:19:373:41 | ...::connect(...) | test.rs:419:22:419:24 | buf | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:426:26:426:33 | &buffer2 | test.rs:373:19:373:41 | ...::connect(...) | test.rs:426:26:426:33 | &buffer2 | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:427:26:427:28 | buf | test.rs:373:19:373:41 | ...::connect(...) | test.rs:427:26:427:28 | buf | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:438:18:438:23 | buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:438:18:438:23 | buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:445:18:445:24 | &pinned | test.rs:373:19:373:41 | ...::connect(...) | test.rs:445:18:445:24 | &pinned | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:448:18:448:24 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:448:18:448:24 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:450:22:450:33 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:450:22:450:33 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:458:18:458:40 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:458:18:458:40 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:462:18:462:40 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:462:18:462:40 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:468:18:468:24 | &pinned | test.rs:373:19:373:41 | ...::connect(...) | test.rs:468:18:468:24 | &pinned | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:471:18:471:24 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:471:18:471:24 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:473:22:473:24 | buf | test.rs:373:19:373:41 | ...::connect(...) | test.rs:473:22:473:24 | buf | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:480:18:480:23 | buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:480:18:480:23 | buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:487:18:487:22 | &line | test.rs:373:19:373:41 | ...::connect(...) | test.rs:487:18:487:22 | &line | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:494:18:494:22 | &line | test.rs:373:19:373:41 | ...::connect(...) | test.rs:494:18:494:22 | &line | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:501:18:501:24 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:501:18:501:24 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected index bfe1ce0e56bc..bf0333168e4b 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected @@ -1,17 +1,17 @@ -| test.rs:11:26:11:47 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:14:26:14:47 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:17:26:17:47 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:20:26:20:47 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:23:26:23:37 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:26:26:26:37 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:29:24:29:35 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:45:18:45:47 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:60:31:60:42 | send_request | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:67:31:67:42 | send_request | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:155:26:155:53 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:174:26:174:61 | ...::connect_timeout | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:224:28:224:57 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:306:22:306:49 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:332:22:332:50 | ...::new | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:373:19:373:36 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:519:16:519:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:11:26:11:62 | ...::get(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:14:26:14:62 | ...::get(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:17:26:17:62 | ...::get(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:20:26:20:62 | ...::get(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:23:26:23:52 | ...::get(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:26:26:26:52 | ...::get(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:29:24:29:50 | ...::get(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:45:18:45:56 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:60:24:60:51 | sender.send_request(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:67:24:67:51 | sender.send_request(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:155:26:155:62 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:174:26:174:105 | ...::connect_timeout(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:224:28:224:66 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:306:22:306:58 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:332:22:332:75 | ...::new(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:373:19:373:41 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:519:16:519:31 | ...::args(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected index c407a05f90d2..7dbe5d352532 100644 --- a/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected @@ -40,39 +40,39 @@ models | 39 | Summary: ::next_line; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | | 40 | Summary: ::next_segment; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | edges -| test.rs:13:22:13:35 | ...::stdin | test.rs:13:22:13:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:13:22:13:37 | ...::stdin(...) | test.rs:13:22:13:37 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:13:22:13:37 | ...::stdin(...) | test.rs:13:44:13:54 | [post] &mut buffer [&ref] | provenance | MaD:31 | | test.rs:13:44:13:54 | [post] &mut buffer [&ref] | test.rs:13:49:13:54 | [post] buffer | provenance | | | test.rs:13:49:13:54 | [post] buffer | test.rs:14:15:14:20 | buffer | provenance | | | test.rs:14:15:14:20 | buffer | test.rs:14:14:14:20 | &buffer | provenance | | -| test.rs:19:22:19:35 | ...::stdin | test.rs:19:22:19:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:19:22:19:37 | ...::stdin(...) | test.rs:19:22:19:37 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:19:22:19:37 | ...::stdin(...) | test.rs:19:51:19:61 | [post] &mut buffer [&ref] | provenance | MaD:33 | | test.rs:19:51:19:61 | [post] &mut buffer [&ref] | test.rs:19:56:19:61 | [post] buffer | provenance | | | test.rs:19:56:19:61 | [post] buffer | test.rs:20:15:20:20 | buffer | provenance | | | test.rs:20:15:20:20 | buffer | test.rs:20:14:20:20 | &buffer | provenance | | -| test.rs:25:22:25:35 | ...::stdin | test.rs:25:22:25:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:25:22:25:37 | ...::stdin(...) | test.rs:25:22:25:37 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:25:22:25:37 | ...::stdin(...) | test.rs:25:54:25:64 | [post] &mut buffer [&ref] | provenance | MaD:34 | | test.rs:25:54:25:64 | [post] &mut buffer [&ref] | test.rs:25:59:25:64 | [post] buffer | provenance | | | test.rs:25:59:25:64 | [post] buffer | test.rs:26:15:26:20 | buffer | provenance | | | test.rs:26:15:26:20 | buffer | test.rs:26:14:26:20 | &buffer | provenance | | -| test.rs:31:22:31:35 | ...::stdin | test.rs:31:22:31:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:31:22:31:37 | ...::stdin(...) | test.rs:31:22:31:37 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:31:22:31:37 | ...::stdin(...) | test.rs:31:22:31:44 | ... .lock() | provenance | MaD:35 | | test.rs:31:22:31:44 | ... .lock() | test.rs:31:61:31:71 | [post] &mut buffer [&ref] | provenance | MaD:36 | | test.rs:31:61:31:71 | [post] &mut buffer [&ref] | test.rs:31:66:31:71 | [post] buffer | provenance | | | test.rs:31:66:31:71 | [post] buffer | test.rs:32:15:32:20 | buffer | provenance | | | test.rs:32:15:32:20 | buffer | test.rs:32:14:32:20 | &buffer | provenance | | -| test.rs:37:9:37:22 | ...::stdin | test.rs:37:9:37:24 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:37:9:37:24 | ...::stdin(...) | test.rs:37:9:37:24 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:37:9:37:24 | ...::stdin(...) | test.rs:37:37:37:47 | [post] &mut buffer [&ref] | provenance | MaD:32 | | test.rs:37:37:37:47 | [post] &mut buffer [&ref] | test.rs:37:42:37:47 | [post] buffer | provenance | | | test.rs:37:42:37:47 | [post] buffer | test.rs:38:15:38:20 | buffer | provenance | | | test.rs:38:15:38:20 | buffer | test.rs:38:14:38:20 | &buffer | provenance | | -| test.rs:41:17:41:30 | ...::stdin | test.rs:41:17:41:32 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:41:17:41:32 | ...::stdin(...) | test.rs:41:17:41:32 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:41:17:41:32 | ...::stdin(...) | test.rs:41:17:41:40 | ... .bytes() | provenance | MaD:10 | | test.rs:41:17:41:40 | ... .bytes() | test.rs:42:14:42:17 | byte | provenance | | | test.rs:48:13:48:22 | mut reader | test.rs:49:20:49:25 | reader | provenance | | | test.rs:48:26:48:66 | ...::new(...) | test.rs:48:13:48:22 | mut reader | provenance | | -| test.rs:48:50:48:63 | ...::stdin | test.rs:48:50:48:65 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | | test.rs:48:50:48:65 | ...::stdin(...) | test.rs:48:26:48:66 | ...::new(...) | provenance | MaD:30 | +| test.rs:48:50:48:65 | ...::stdin(...) | test.rs:48:50:48:65 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:49:13:49:16 | data | test.rs:50:15:50:18 | data | provenance | | | test.rs:49:20:49:25 | reader | test.rs:49:20:49:36 | reader.fill_buf() [Ok] | provenance | MaD:28 | | test.rs:49:20:49:36 | reader.fill_buf() [Ok] | test.rs:49:20:49:37 | TryExpr | provenance | | @@ -80,24 +80,24 @@ edges | test.rs:50:15:50:18 | data | test.rs:50:14:50:18 | &data | provenance | | | test.rs:54:13:54:18 | reader | test.rs:55:20:55:25 | reader | provenance | | | test.rs:54:22:54:62 | ...::new(...) | test.rs:54:13:54:18 | reader | provenance | | -| test.rs:54:46:54:59 | ...::stdin | test.rs:54:46:54:61 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | | test.rs:54:46:54:61 | ...::stdin(...) | test.rs:54:22:54:62 | ...::new(...) | provenance | MaD:30 | +| test.rs:54:46:54:61 | ...::stdin(...) | test.rs:54:46:54:61 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:55:13:55:16 | data [&ref] | test.rs:56:15:56:18 | data [&ref] | provenance | | | test.rs:55:20:55:25 | reader | test.rs:55:20:55:34 | reader.buffer() [&ref] | provenance | MaD:29 | | test.rs:55:20:55:34 | reader.buffer() [&ref] | test.rs:55:13:55:16 | data [&ref] | provenance | | | test.rs:56:15:56:18 | data [&ref] | test.rs:56:14:56:18 | &data | provenance | | | test.rs:61:13:61:22 | mut reader | test.rs:62:9:62:14 | reader | provenance | | | test.rs:61:26:61:66 | ...::new(...) | test.rs:61:13:61:22 | mut reader | provenance | | -| test.rs:61:50:61:63 | ...::stdin | test.rs:61:50:61:65 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | | test.rs:61:50:61:65 | ...::stdin(...) | test.rs:61:26:61:66 | ...::new(...) | provenance | MaD:30 | +| test.rs:61:50:61:65 | ...::stdin(...) | test.rs:61:50:61:65 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:62:9:62:14 | reader | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | provenance | MaD:7 | | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | test.rs:62:31:62:36 | [post] buffer | provenance | | | test.rs:62:31:62:36 | [post] buffer | test.rs:63:15:63:20 | buffer | provenance | | | test.rs:63:15:63:20 | buffer | test.rs:63:14:63:20 | &buffer | provenance | | | test.rs:68:13:68:22 | mut reader | test.rs:69:9:69:14 | reader | provenance | | | test.rs:68:26:68:66 | ...::new(...) | test.rs:68:13:68:22 | mut reader | provenance | | -| test.rs:68:50:68:63 | ...::stdin | test.rs:68:50:68:65 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | | test.rs:68:50:68:65 | ...::stdin(...) | test.rs:68:26:68:66 | ...::new(...) | provenance | MaD:30 | +| test.rs:68:50:68:65 | ...::stdin(...) | test.rs:68:50:68:65 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:69:9:69:14 | reader | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | provenance | MaD:8 | | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | test.rs:69:38:69:43 | [post] buffer | provenance | | | test.rs:69:38:69:43 | [post] buffer | test.rs:70:15:70:20 | buffer | provenance | | @@ -108,8 +108,8 @@ edges | test.rs:75:13:75:28 | mut reader_split | test.rs:77:33:77:44 | reader_split | provenance | | | test.rs:75:32:75:72 | ...::new(...) | test.rs:75:32:75:84 | ... .split(...) | provenance | MaD:9 | | test.rs:75:32:75:84 | ... .split(...) | test.rs:75:13:75:28 | mut reader_split | provenance | | -| test.rs:75:56:75:69 | ...::stdin | test.rs:75:56:75:71 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | | test.rs:75:56:75:71 | ...::stdin(...) | test.rs:75:32:75:72 | ...::new(...) | provenance | MaD:30 | +| test.rs:75:56:75:71 | ...::stdin(...) | test.rs:75:56:75:71 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:76:14:76:25 | reader_split | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | provenance | MaD:27 | | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | test.rs:76:14:76:41 | ... .unwrap() [Ok] | provenance | MaD:25 | | test.rs:76:14:76:41 | ... .unwrap() [Ok] | test.rs:76:14:76:50 | ... .unwrap() | provenance | MaD:26 | @@ -120,14 +120,14 @@ edges | test.rs:78:18:78:22 | chunk [Ok] | test.rs:78:18:78:31 | chunk.unwrap() | provenance | MaD:26 | | test.rs:83:13:83:18 | reader | test.rs:84:21:84:26 | reader | provenance | | | test.rs:83:22:83:62 | ...::new(...) | test.rs:83:13:83:18 | reader | provenance | | -| test.rs:83:46:83:59 | ...::stdin | test.rs:83:46:83:61 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | | test.rs:83:46:83:61 | ...::stdin(...) | test.rs:83:22:83:62 | ...::new(...) | provenance | MaD:30 | +| test.rs:83:46:83:61 | ...::stdin(...) | test.rs:83:46:83:61 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:84:21:84:26 | reader | test.rs:84:21:84:34 | reader.lines() | provenance | MaD:6 | | test.rs:84:21:84:34 | reader.lines() | test.rs:85:18:85:21 | line | provenance | | | test.rs:90:13:90:18 | reader | test.rs:91:20:91:25 | reader | provenance | | | test.rs:90:22:90:62 | ...::new(...) | test.rs:90:13:90:18 | reader | provenance | | -| test.rs:90:46:90:59 | ...::stdin | test.rs:90:46:90:61 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | | test.rs:90:46:90:61 | ...::stdin(...) | test.rs:90:22:90:62 | ...::new(...) | provenance | MaD:30 | +| test.rs:90:46:90:61 | ...::stdin(...) | test.rs:90:46:90:61 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:91:13:91:16 | line | test.rs:92:14:92:17 | line | provenance | | | test.rs:91:20:91:25 | reader | test.rs:91:20:91:33 | reader.lines() | provenance | MaD:6 | | test.rs:91:20:91:33 | reader.lines() | test.rs:91:20:91:40 | ... .nth(...) [Some] | provenance | MaD:4 | @@ -136,29 +136,25 @@ edges | test.rs:92:14:92:17 | line | test.rs:92:14:92:26 | line.unwrap() | provenance | MaD:26 | | test.rs:92:14:92:26 | line.unwrap() | test.rs:92:14:92:34 | ... .clone() | provenance | MaD:3 | | test.rs:109:13:109:21 | mut stdin | test.rs:111:22:111:26 | stdin | provenance | | -| test.rs:109:25:109:40 | ...::stdin | test.rs:109:25:109:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | -| test.rs:109:25:109:42 | ...::stdin(...) | test.rs:109:13:109:21 | mut stdin | provenance | | +| test.rs:109:25:109:42 | ...::stdin(...) | test.rs:109:13:109:21 | mut stdin | provenance | Src:MaD:2 | | test.rs:111:22:111:26 | stdin | test.rs:111:33:111:43 | [post] &mut buffer [&ref] | provenance | MaD:16 | | test.rs:111:33:111:43 | [post] &mut buffer [&ref] | test.rs:111:38:111:43 | [post] buffer | provenance | | | test.rs:111:38:111:43 | [post] buffer | test.rs:112:15:112:20 | buffer | provenance | | | test.rs:112:15:112:20 | buffer | test.rs:112:14:112:20 | &buffer | provenance | | | test.rs:116:13:116:21 | mut stdin | test.rs:118:22:118:26 | stdin | provenance | | -| test.rs:116:25:116:40 | ...::stdin | test.rs:116:25:116:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | -| test.rs:116:25:116:42 | ...::stdin(...) | test.rs:116:13:116:21 | mut stdin | provenance | | +| test.rs:116:25:116:42 | ...::stdin(...) | test.rs:116:13:116:21 | mut stdin | provenance | Src:MaD:2 | | test.rs:118:22:118:26 | stdin | test.rs:118:40:118:50 | [post] &mut buffer [&ref] | provenance | MaD:22 | | test.rs:118:40:118:50 | [post] &mut buffer [&ref] | test.rs:118:45:118:50 | [post] buffer | provenance | | | test.rs:118:45:118:50 | [post] buffer | test.rs:119:15:119:20 | buffer | provenance | | | test.rs:119:15:119:20 | buffer | test.rs:119:14:119:20 | &buffer | provenance | | | test.rs:123:13:123:21 | mut stdin | test.rs:125:22:125:26 | stdin | provenance | | -| test.rs:123:25:123:40 | ...::stdin | test.rs:123:25:123:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | -| test.rs:123:25:123:42 | ...::stdin(...) | test.rs:123:13:123:21 | mut stdin | provenance | | +| test.rs:123:25:123:42 | ...::stdin(...) | test.rs:123:13:123:21 | mut stdin | provenance | Src:MaD:2 | | test.rs:125:22:125:26 | stdin | test.rs:125:43:125:53 | [post] &mut buffer [&ref] | provenance | MaD:23 | | test.rs:125:43:125:53 | [post] &mut buffer [&ref] | test.rs:125:48:125:53 | [post] buffer | provenance | | | test.rs:125:48:125:53 | [post] buffer | test.rs:126:15:126:20 | buffer | provenance | | | test.rs:126:15:126:20 | buffer | test.rs:126:14:126:20 | &buffer | provenance | | | test.rs:130:13:130:21 | mut stdin | test.rs:132:9:132:13 | stdin | provenance | | -| test.rs:130:25:130:40 | ...::stdin | test.rs:130:25:130:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | -| test.rs:130:25:130:42 | ...::stdin(...) | test.rs:130:13:130:21 | mut stdin | provenance | | +| test.rs:130:25:130:42 | ...::stdin(...) | test.rs:130:13:130:21 | mut stdin | provenance | Src:MaD:2 | | test.rs:132:9:132:13 | stdin | test.rs:132:26:132:36 | [post] &mut buffer [&ref] | provenance | MaD:18 | | test.rs:132:26:132:36 | [post] &mut buffer [&ref] | test.rs:132:31:132:36 | [post] buffer | provenance | | | test.rs:132:31:132:36 | [post] buffer | test.rs:133:15:133:20 | buffer | provenance | | @@ -167,8 +163,7 @@ edges | test.rs:137:13:137:21 | mut stdin | test.rs:139:18:139:22 | stdin | provenance | | | test.rs:137:13:137:21 | mut stdin | test.rs:140:18:140:22 | stdin | provenance | | | test.rs:137:13:137:21 | mut stdin | test.rs:141:18:141:22 | stdin | provenance | | -| test.rs:137:25:137:40 | ...::stdin | test.rs:137:25:137:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | -| test.rs:137:25:137:42 | ...::stdin(...) | test.rs:137:13:137:21 | mut stdin | provenance | | +| test.rs:137:25:137:42 | ...::stdin(...) | test.rs:137:13:137:21 | mut stdin | provenance | Src:MaD:2 | | test.rs:138:13:138:14 | v1 | test.rs:142:14:142:15 | v1 | provenance | | | test.rs:138:18:138:22 | stdin | test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | provenance | MaD:24 | | test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | test.rs:138:18:138:38 | await ... [Ok] | provenance | | @@ -190,16 +185,15 @@ edges | test.rs:141:18:141:42 | await ... [Ok] | test.rs:141:18:141:43 | TryExpr | provenance | | | test.rs:141:18:141:43 | TryExpr | test.rs:141:13:141:14 | v4 | provenance | | | test.rs:149:13:149:21 | mut stdin | test.rs:151:9:151:13 | stdin | provenance | | -| test.rs:149:25:149:40 | ...::stdin | test.rs:149:25:149:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | -| test.rs:149:25:149:42 | ...::stdin(...) | test.rs:149:13:149:21 | mut stdin | provenance | | +| test.rs:149:25:149:42 | ...::stdin(...) | test.rs:149:13:149:21 | mut stdin | provenance | Src:MaD:2 | | test.rs:151:9:151:13 | stdin | test.rs:151:24:151:34 | [post] &mut buffer [&ref] | provenance | MaD:17 | | test.rs:151:24:151:34 | [post] &mut buffer [&ref] | test.rs:151:29:151:34 | [post] buffer | provenance | | | test.rs:151:29:151:34 | [post] buffer | test.rs:152:15:152:20 | buffer | provenance | | | test.rs:152:15:152:20 | buffer | test.rs:152:14:152:20 | &buffer | provenance | | | test.rs:158:13:158:22 | mut reader | test.rs:159:20:159:25 | reader | provenance | | | test.rs:158:26:158:70 | ...::new(...) | test.rs:158:13:158:22 | mut reader | provenance | | -| test.rs:158:52:158:67 | ...::stdin | test.rs:158:52:158:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | | test.rs:158:52:158:69 | ...::stdin(...) | test.rs:158:26:158:70 | ...::new(...) | provenance | MaD:38 | +| test.rs:158:52:158:69 | ...::stdin(...) | test.rs:158:52:158:69 | ...::stdin(...) | provenance | Src:MaD:2 | | test.rs:159:13:159:16 | data | test.rs:160:15:160:18 | data | provenance | | | test.rs:159:20:159:25 | reader | test.rs:159:20:159:36 | reader.fill_buf() [future, Ok] | provenance | MaD:11 | | test.rs:159:20:159:36 | reader.fill_buf() [future, Ok] | test.rs:159:20:159:42 | await ... [Ok] | provenance | | @@ -208,24 +202,24 @@ edges | test.rs:160:15:160:18 | data | test.rs:160:14:160:18 | &data | provenance | | | test.rs:164:13:164:18 | reader | test.rs:165:20:165:25 | reader | provenance | | | test.rs:164:22:164:66 | ...::new(...) | test.rs:164:13:164:18 | reader | provenance | | -| test.rs:164:48:164:63 | ...::stdin | test.rs:164:48:164:65 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | | test.rs:164:48:164:65 | ...::stdin(...) | test.rs:164:22:164:66 | ...::new(...) | provenance | MaD:38 | +| test.rs:164:48:164:65 | ...::stdin(...) | test.rs:164:48:164:65 | ...::stdin(...) | provenance | Src:MaD:2 | | test.rs:165:13:165:16 | data [&ref] | test.rs:166:15:166:18 | data [&ref] | provenance | | | test.rs:165:20:165:25 | reader | test.rs:165:20:165:34 | reader.buffer() [&ref] | provenance | MaD:37 | | test.rs:165:20:165:34 | reader.buffer() [&ref] | test.rs:165:13:165:16 | data [&ref] | provenance | | | test.rs:166:15:166:18 | data [&ref] | test.rs:166:14:166:18 | &data | provenance | | | test.rs:171:13:171:22 | mut reader | test.rs:172:9:172:14 | reader | provenance | | | test.rs:171:26:171:70 | ...::new(...) | test.rs:171:13:171:22 | mut reader | provenance | | -| test.rs:171:52:171:67 | ...::stdin | test.rs:171:52:171:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | | test.rs:171:52:171:69 | ...::stdin(...) | test.rs:171:26:171:70 | ...::new(...) | provenance | MaD:38 | +| test.rs:171:52:171:69 | ...::stdin(...) | test.rs:171:52:171:69 | ...::stdin(...) | provenance | Src:MaD:2 | | test.rs:172:9:172:14 | reader | test.rs:172:26:172:36 | [post] &mut buffer [&ref] | provenance | MaD:13 | | test.rs:172:26:172:36 | [post] &mut buffer [&ref] | test.rs:172:31:172:36 | [post] buffer | provenance | | | test.rs:172:31:172:36 | [post] buffer | test.rs:173:15:173:20 | buffer | provenance | | | test.rs:173:15:173:20 | buffer | test.rs:173:14:173:20 | &buffer | provenance | | | test.rs:178:13:178:22 | mut reader | test.rs:179:9:179:14 | reader | provenance | | | test.rs:178:26:178:70 | ...::new(...) | test.rs:178:13:178:22 | mut reader | provenance | | -| test.rs:178:52:178:67 | ...::stdin | test.rs:178:52:178:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | | test.rs:178:52:178:69 | ...::stdin(...) | test.rs:178:26:178:70 | ...::new(...) | provenance | MaD:38 | +| test.rs:178:52:178:69 | ...::stdin(...) | test.rs:178:52:178:69 | ...::stdin(...) | provenance | Src:MaD:2 | | test.rs:179:9:179:14 | reader | test.rs:179:33:179:43 | [post] &mut buffer [&ref] | provenance | MaD:14 | | test.rs:179:33:179:43 | [post] &mut buffer [&ref] | test.rs:179:38:179:43 | [post] buffer | provenance | | | test.rs:179:38:179:43 | [post] buffer | test.rs:180:15:180:20 | buffer | provenance | | @@ -236,8 +230,8 @@ edges | test.rs:185:13:185:28 | mut reader_split | test.rs:187:33:187:44 | reader_split | provenance | | | test.rs:185:32:185:76 | ...::new(...) | test.rs:185:32:185:88 | ... .split(...) | provenance | MaD:15 | | test.rs:185:32:185:88 | ... .split(...) | test.rs:185:13:185:28 | mut reader_split | provenance | | -| test.rs:185:58:185:73 | ...::stdin | test.rs:185:58:185:75 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | | test.rs:185:58:185:75 | ...::stdin(...) | test.rs:185:32:185:76 | ...::new(...) | provenance | MaD:38 | +| test.rs:185:58:185:75 | ...::stdin(...) | test.rs:185:58:185:75 | ...::stdin(...) | provenance | Src:MaD:2 | | test.rs:186:14:186:25 | reader_split | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:40 | | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:186:14:186:46 | await ... [Ok, Some] | provenance | | | test.rs:186:14:186:46 | await ... [Ok, Some] | test.rs:186:14:186:47 | TryExpr [Some] | provenance | | @@ -250,8 +244,8 @@ edges | test.rs:187:33:187:66 | TryExpr [Some] | test.rs:187:19:187:29 | Some(...) [Some] | provenance | | | test.rs:193:13:193:18 | reader | test.rs:194:25:194:30 | reader | provenance | | | test.rs:193:22:193:66 | ...::new(...) | test.rs:193:13:193:18 | reader | provenance | | -| test.rs:193:48:193:63 | ...::stdin | test.rs:193:48:193:65 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | | test.rs:193:48:193:65 | ...::stdin(...) | test.rs:193:22:193:66 | ...::new(...) | provenance | MaD:38 | +| test.rs:193:48:193:65 | ...::stdin(...) | test.rs:193:48:193:65 | ...::stdin(...) | provenance | Src:MaD:2 | | test.rs:194:13:194:21 | mut lines | test.rs:195:14:195:18 | lines | provenance | | | test.rs:194:13:194:21 | mut lines | test.rs:196:32:196:36 | lines | provenance | | | test.rs:194:25:194:30 | reader | test.rs:194:25:194:38 | reader.lines() | provenance | MaD:12 | @@ -267,44 +261,44 @@ edges | test.rs:196:32:196:54 | await ... [Ok, Some] | test.rs:196:32:196:55 | TryExpr [Some] | provenance | | | test.rs:196:32:196:55 | TryExpr [Some] | test.rs:196:19:196:28 | Some(...) [Some] | provenance | | nodes -| test.rs:13:22:13:35 | ...::stdin | semmle.label | ...::stdin | +| test.rs:13:22:13:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:13:22:13:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:13:44:13:54 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:13:49:13:54 | [post] buffer | semmle.label | [post] buffer | | test.rs:14:14:14:20 | &buffer | semmle.label | &buffer | | test.rs:14:15:14:20 | buffer | semmle.label | buffer | -| test.rs:19:22:19:35 | ...::stdin | semmle.label | ...::stdin | +| test.rs:19:22:19:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:19:22:19:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:19:51:19:61 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:19:56:19:61 | [post] buffer | semmle.label | [post] buffer | | test.rs:20:14:20:20 | &buffer | semmle.label | &buffer | | test.rs:20:15:20:20 | buffer | semmle.label | buffer | -| test.rs:25:22:25:35 | ...::stdin | semmle.label | ...::stdin | +| test.rs:25:22:25:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:25:22:25:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:25:54:25:64 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:25:59:25:64 | [post] buffer | semmle.label | [post] buffer | | test.rs:26:14:26:20 | &buffer | semmle.label | &buffer | | test.rs:26:15:26:20 | buffer | semmle.label | buffer | -| test.rs:31:22:31:35 | ...::stdin | semmle.label | ...::stdin | +| test.rs:31:22:31:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:31:22:31:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:31:22:31:44 | ... .lock() | semmle.label | ... .lock() | | test.rs:31:61:31:71 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:31:66:31:71 | [post] buffer | semmle.label | [post] buffer | | test.rs:32:14:32:20 | &buffer | semmle.label | &buffer | | test.rs:32:15:32:20 | buffer | semmle.label | buffer | -| test.rs:37:9:37:22 | ...::stdin | semmle.label | ...::stdin | +| test.rs:37:9:37:24 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:37:9:37:24 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:37:37:37:47 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:37:42:37:47 | [post] buffer | semmle.label | [post] buffer | | test.rs:38:14:38:20 | &buffer | semmle.label | &buffer | | test.rs:38:15:38:20 | buffer | semmle.label | buffer | -| test.rs:41:17:41:30 | ...::stdin | semmle.label | ...::stdin | +| test.rs:41:17:41:32 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:41:17:41:32 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:41:17:41:40 | ... .bytes() | semmle.label | ... .bytes() | | test.rs:42:14:42:17 | byte | semmle.label | byte | | test.rs:48:13:48:22 | mut reader | semmle.label | mut reader | | test.rs:48:26:48:66 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:48:50:48:63 | ...::stdin | semmle.label | ...::stdin | +| test.rs:48:50:48:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:48:50:48:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:49:13:49:16 | data | semmle.label | data | | test.rs:49:20:49:25 | reader | semmle.label | reader | @@ -314,7 +308,7 @@ nodes | test.rs:50:15:50:18 | data | semmle.label | data | | test.rs:54:13:54:18 | reader | semmle.label | reader | | test.rs:54:22:54:62 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:54:46:54:59 | ...::stdin | semmle.label | ...::stdin | +| test.rs:54:46:54:61 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:54:46:54:61 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:55:13:55:16 | data [&ref] | semmle.label | data [&ref] | | test.rs:55:20:55:25 | reader | semmle.label | reader | @@ -323,7 +317,7 @@ nodes | test.rs:56:15:56:18 | data [&ref] | semmle.label | data [&ref] | | test.rs:61:13:61:22 | mut reader | semmle.label | mut reader | | test.rs:61:26:61:66 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:61:50:61:63 | ...::stdin | semmle.label | ...::stdin | +| test.rs:61:50:61:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:61:50:61:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:62:9:62:14 | reader | semmle.label | reader | | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | @@ -332,7 +326,7 @@ nodes | test.rs:63:15:63:20 | buffer | semmle.label | buffer | | test.rs:68:13:68:22 | mut reader | semmle.label | mut reader | | test.rs:68:26:68:66 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:68:50:68:63 | ...::stdin | semmle.label | ...::stdin | +| test.rs:68:50:68:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:68:50:68:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:69:9:69:14 | reader | semmle.label | reader | | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | @@ -344,7 +338,7 @@ nodes | test.rs:75:13:75:28 | mut reader_split | semmle.label | mut reader_split | | test.rs:75:32:75:72 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:75:32:75:84 | ... .split(...) | semmle.label | ... .split(...) | -| test.rs:75:56:75:69 | ...::stdin | semmle.label | ...::stdin | +| test.rs:75:56:75:71 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:75:56:75:71 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:76:14:76:25 | reader_split | semmle.label | reader_split | | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | semmle.label | reader_split.next() [Some, Ok] | @@ -358,14 +352,14 @@ nodes | test.rs:78:18:78:31 | chunk.unwrap() | semmle.label | chunk.unwrap() | | test.rs:83:13:83:18 | reader | semmle.label | reader | | test.rs:83:22:83:62 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:83:46:83:59 | ...::stdin | semmle.label | ...::stdin | +| test.rs:83:46:83:61 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:83:46:83:61 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:84:21:84:26 | reader | semmle.label | reader | | test.rs:84:21:84:34 | reader.lines() | semmle.label | reader.lines() | | test.rs:85:18:85:21 | line | semmle.label | line | | test.rs:90:13:90:18 | reader | semmle.label | reader | | test.rs:90:22:90:62 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:90:46:90:59 | ...::stdin | semmle.label | ...::stdin | +| test.rs:90:46:90:61 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:90:46:90:61 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:91:13:91:16 | line | semmle.label | line | | test.rs:91:20:91:25 | reader | semmle.label | reader | @@ -376,7 +370,6 @@ nodes | test.rs:92:14:92:26 | line.unwrap() | semmle.label | line.unwrap() | | test.rs:92:14:92:34 | ... .clone() | semmle.label | ... .clone() | | test.rs:109:13:109:21 | mut stdin | semmle.label | mut stdin | -| test.rs:109:25:109:40 | ...::stdin | semmle.label | ...::stdin | | test.rs:109:25:109:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:111:22:111:26 | stdin | semmle.label | stdin | | test.rs:111:33:111:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | @@ -384,7 +377,6 @@ nodes | test.rs:112:14:112:20 | &buffer | semmle.label | &buffer | | test.rs:112:15:112:20 | buffer | semmle.label | buffer | | test.rs:116:13:116:21 | mut stdin | semmle.label | mut stdin | -| test.rs:116:25:116:40 | ...::stdin | semmle.label | ...::stdin | | test.rs:116:25:116:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:118:22:118:26 | stdin | semmle.label | stdin | | test.rs:118:40:118:50 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | @@ -392,7 +384,6 @@ nodes | test.rs:119:14:119:20 | &buffer | semmle.label | &buffer | | test.rs:119:15:119:20 | buffer | semmle.label | buffer | | test.rs:123:13:123:21 | mut stdin | semmle.label | mut stdin | -| test.rs:123:25:123:40 | ...::stdin | semmle.label | ...::stdin | | test.rs:123:25:123:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:125:22:125:26 | stdin | semmle.label | stdin | | test.rs:125:43:125:53 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | @@ -400,7 +391,6 @@ nodes | test.rs:126:14:126:20 | &buffer | semmle.label | &buffer | | test.rs:126:15:126:20 | buffer | semmle.label | buffer | | test.rs:130:13:130:21 | mut stdin | semmle.label | mut stdin | -| test.rs:130:25:130:40 | ...::stdin | semmle.label | ...::stdin | | test.rs:130:25:130:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:132:9:132:13 | stdin | semmle.label | stdin | | test.rs:132:26:132:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | @@ -408,7 +398,6 @@ nodes | test.rs:133:14:133:20 | &buffer | semmle.label | &buffer | | test.rs:133:15:133:20 | buffer | semmle.label | buffer | | test.rs:137:13:137:21 | mut stdin | semmle.label | mut stdin | -| test.rs:137:25:137:40 | ...::stdin | semmle.label | ...::stdin | | test.rs:137:25:137:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:138:13:138:14 | v1 | semmle.label | v1 | | test.rs:138:18:138:22 | stdin | semmle.label | stdin | @@ -435,7 +424,6 @@ nodes | test.rs:144:14:144:15 | v3 | semmle.label | v3 | | test.rs:145:14:145:15 | v4 | semmle.label | v4 | | test.rs:149:13:149:21 | mut stdin | semmle.label | mut stdin | -| test.rs:149:25:149:40 | ...::stdin | semmle.label | ...::stdin | | test.rs:149:25:149:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:151:9:151:13 | stdin | semmle.label | stdin | | test.rs:151:24:151:34 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | @@ -444,7 +432,7 @@ nodes | test.rs:152:15:152:20 | buffer | semmle.label | buffer | | test.rs:158:13:158:22 | mut reader | semmle.label | mut reader | | test.rs:158:26:158:70 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:158:52:158:67 | ...::stdin | semmle.label | ...::stdin | +| test.rs:158:52:158:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:158:52:158:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:159:13:159:16 | data | semmle.label | data | | test.rs:159:20:159:25 | reader | semmle.label | reader | @@ -455,7 +443,7 @@ nodes | test.rs:160:15:160:18 | data | semmle.label | data | | test.rs:164:13:164:18 | reader | semmle.label | reader | | test.rs:164:22:164:66 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:164:48:164:63 | ...::stdin | semmle.label | ...::stdin | +| test.rs:164:48:164:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:164:48:164:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:165:13:165:16 | data [&ref] | semmle.label | data [&ref] | | test.rs:165:20:165:25 | reader | semmle.label | reader | @@ -464,7 +452,7 @@ nodes | test.rs:166:15:166:18 | data [&ref] | semmle.label | data [&ref] | | test.rs:171:13:171:22 | mut reader | semmle.label | mut reader | | test.rs:171:26:171:70 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:171:52:171:67 | ...::stdin | semmle.label | ...::stdin | +| test.rs:171:52:171:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:171:52:171:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:172:9:172:14 | reader | semmle.label | reader | | test.rs:172:26:172:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | @@ -473,7 +461,7 @@ nodes | test.rs:173:15:173:20 | buffer | semmle.label | buffer | | test.rs:178:13:178:22 | mut reader | semmle.label | mut reader | | test.rs:178:26:178:70 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:178:52:178:67 | ...::stdin | semmle.label | ...::stdin | +| test.rs:178:52:178:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:178:52:178:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:179:9:179:14 | reader | semmle.label | reader | | test.rs:179:33:179:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | @@ -485,7 +473,7 @@ nodes | test.rs:185:13:185:28 | mut reader_split | semmle.label | mut reader_split | | test.rs:185:32:185:76 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:185:32:185:88 | ... .split(...) | semmle.label | ... .split(...) | -| test.rs:185:58:185:73 | ...::stdin | semmle.label | ...::stdin | +| test.rs:185:58:185:75 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:185:58:185:75 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:186:14:186:25 | reader_split | semmle.label | reader_split | | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | semmle.label | reader_split.next_segment() [future, Ok, Some] | @@ -501,7 +489,7 @@ nodes | test.rs:188:18:188:22 | chunk | semmle.label | chunk | | test.rs:193:13:193:18 | reader | semmle.label | reader | | test.rs:193:22:193:66 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:193:48:193:63 | ...::stdin | semmle.label | ...::stdin | +| test.rs:193:48:193:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:193:48:193:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:194:13:194:21 | mut lines | semmle.label | mut lines | | test.rs:194:25:194:30 | reader | semmle.label | reader | @@ -521,36 +509,36 @@ nodes subpaths testFailures #select -| test.rs:14:14:14:20 | &buffer | test.rs:13:22:13:35 | ...::stdin | test.rs:14:14:14:20 | &buffer | $@ | test.rs:13:22:13:35 | ...::stdin | ...::stdin | -| test.rs:20:14:20:20 | &buffer | test.rs:19:22:19:35 | ...::stdin | test.rs:20:14:20:20 | &buffer | $@ | test.rs:19:22:19:35 | ...::stdin | ...::stdin | -| test.rs:26:14:26:20 | &buffer | test.rs:25:22:25:35 | ...::stdin | test.rs:26:14:26:20 | &buffer | $@ | test.rs:25:22:25:35 | ...::stdin | ...::stdin | -| test.rs:32:14:32:20 | &buffer | test.rs:31:22:31:35 | ...::stdin | test.rs:32:14:32:20 | &buffer | $@ | test.rs:31:22:31:35 | ...::stdin | ...::stdin | -| test.rs:38:14:38:20 | &buffer | test.rs:37:9:37:22 | ...::stdin | test.rs:38:14:38:20 | &buffer | $@ | test.rs:37:9:37:22 | ...::stdin | ...::stdin | -| test.rs:42:14:42:17 | byte | test.rs:41:17:41:30 | ...::stdin | test.rs:42:14:42:17 | byte | $@ | test.rs:41:17:41:30 | ...::stdin | ...::stdin | -| test.rs:50:14:50:18 | &data | test.rs:48:50:48:63 | ...::stdin | test.rs:50:14:50:18 | &data | $@ | test.rs:48:50:48:63 | ...::stdin | ...::stdin | -| test.rs:56:14:56:18 | &data | test.rs:54:46:54:59 | ...::stdin | test.rs:56:14:56:18 | &data | $@ | test.rs:54:46:54:59 | ...::stdin | ...::stdin | -| test.rs:63:14:63:20 | &buffer | test.rs:61:50:61:63 | ...::stdin | test.rs:63:14:63:20 | &buffer | $@ | test.rs:61:50:61:63 | ...::stdin | ...::stdin | -| test.rs:70:14:70:20 | &buffer | test.rs:68:50:68:63 | ...::stdin | test.rs:70:14:70:20 | &buffer | $@ | test.rs:68:50:68:63 | ...::stdin | ...::stdin | -| test.rs:71:14:71:22 | buffer[0] | test.rs:68:50:68:63 | ...::stdin | test.rs:71:14:71:22 | buffer[0] | $@ | test.rs:68:50:68:63 | ...::stdin | ...::stdin | -| test.rs:76:14:76:50 | ... .unwrap() | test.rs:75:56:75:69 | ...::stdin | test.rs:76:14:76:50 | ... .unwrap() | $@ | test.rs:75:56:75:69 | ...::stdin | ...::stdin | -| test.rs:78:18:78:31 | chunk.unwrap() | test.rs:75:56:75:69 | ...::stdin | test.rs:78:18:78:31 | chunk.unwrap() | $@ | test.rs:75:56:75:69 | ...::stdin | ...::stdin | -| test.rs:85:18:85:21 | line | test.rs:83:46:83:59 | ...::stdin | test.rs:85:18:85:21 | line | $@ | test.rs:83:46:83:59 | ...::stdin | ...::stdin | -| test.rs:92:14:92:34 | ... .clone() | test.rs:90:46:90:59 | ...::stdin | test.rs:92:14:92:34 | ... .clone() | $@ | test.rs:90:46:90:59 | ...::stdin | ...::stdin | -| test.rs:112:14:112:20 | &buffer | test.rs:109:25:109:40 | ...::stdin | test.rs:112:14:112:20 | &buffer | $@ | test.rs:109:25:109:40 | ...::stdin | ...::stdin | -| test.rs:119:14:119:20 | &buffer | test.rs:116:25:116:40 | ...::stdin | test.rs:119:14:119:20 | &buffer | $@ | test.rs:116:25:116:40 | ...::stdin | ...::stdin | -| test.rs:126:14:126:20 | &buffer | test.rs:123:25:123:40 | ...::stdin | test.rs:126:14:126:20 | &buffer | $@ | test.rs:123:25:123:40 | ...::stdin | ...::stdin | -| test.rs:133:14:133:20 | &buffer | test.rs:130:25:130:40 | ...::stdin | test.rs:133:14:133:20 | &buffer | $@ | test.rs:130:25:130:40 | ...::stdin | ...::stdin | -| test.rs:142:14:142:15 | v1 | test.rs:137:25:137:40 | ...::stdin | test.rs:142:14:142:15 | v1 | $@ | test.rs:137:25:137:40 | ...::stdin | ...::stdin | -| test.rs:143:14:143:15 | v2 | test.rs:137:25:137:40 | ...::stdin | test.rs:143:14:143:15 | v2 | $@ | test.rs:137:25:137:40 | ...::stdin | ...::stdin | -| test.rs:144:14:144:15 | v3 | test.rs:137:25:137:40 | ...::stdin | test.rs:144:14:144:15 | v3 | $@ | test.rs:137:25:137:40 | ...::stdin | ...::stdin | -| test.rs:145:14:145:15 | v4 | test.rs:137:25:137:40 | ...::stdin | test.rs:145:14:145:15 | v4 | $@ | test.rs:137:25:137:40 | ...::stdin | ...::stdin | -| test.rs:152:14:152:20 | &buffer | test.rs:149:25:149:40 | ...::stdin | test.rs:152:14:152:20 | &buffer | $@ | test.rs:149:25:149:40 | ...::stdin | ...::stdin | -| test.rs:160:14:160:18 | &data | test.rs:158:52:158:67 | ...::stdin | test.rs:160:14:160:18 | &data | $@ | test.rs:158:52:158:67 | ...::stdin | ...::stdin | -| test.rs:166:14:166:18 | &data | test.rs:164:48:164:63 | ...::stdin | test.rs:166:14:166:18 | &data | $@ | test.rs:164:48:164:63 | ...::stdin | ...::stdin | -| test.rs:173:14:173:20 | &buffer | test.rs:171:52:171:67 | ...::stdin | test.rs:173:14:173:20 | &buffer | $@ | test.rs:171:52:171:67 | ...::stdin | ...::stdin | -| test.rs:180:14:180:20 | &buffer | test.rs:178:52:178:67 | ...::stdin | test.rs:180:14:180:20 | &buffer | $@ | test.rs:178:52:178:67 | ...::stdin | ...::stdin | -| test.rs:181:14:181:22 | buffer[0] | test.rs:178:52:178:67 | ...::stdin | test.rs:181:14:181:22 | buffer[0] | $@ | test.rs:178:52:178:67 | ...::stdin | ...::stdin | -| test.rs:186:14:186:56 | ... .unwrap() | test.rs:185:58:185:73 | ...::stdin | test.rs:186:14:186:56 | ... .unwrap() | $@ | test.rs:185:58:185:73 | ...::stdin | ...::stdin | -| test.rs:188:18:188:22 | chunk | test.rs:185:58:185:73 | ...::stdin | test.rs:188:18:188:22 | chunk | $@ | test.rs:185:58:185:73 | ...::stdin | ...::stdin | -| test.rs:195:14:195:46 | ... .unwrap() | test.rs:193:48:193:63 | ...::stdin | test.rs:195:14:195:46 | ... .unwrap() | $@ | test.rs:193:48:193:63 | ...::stdin | ...::stdin | -| test.rs:197:18:197:21 | line | test.rs:193:48:193:63 | ...::stdin | test.rs:197:18:197:21 | line | $@ | test.rs:193:48:193:63 | ...::stdin | ...::stdin | +| test.rs:14:14:14:20 | &buffer | test.rs:13:22:13:37 | ...::stdin(...) | test.rs:14:14:14:20 | &buffer | $@ | test.rs:13:22:13:37 | ...::stdin(...) | ...::stdin(...) | +| test.rs:20:14:20:20 | &buffer | test.rs:19:22:19:37 | ...::stdin(...) | test.rs:20:14:20:20 | &buffer | $@ | test.rs:19:22:19:37 | ...::stdin(...) | ...::stdin(...) | +| test.rs:26:14:26:20 | &buffer | test.rs:25:22:25:37 | ...::stdin(...) | test.rs:26:14:26:20 | &buffer | $@ | test.rs:25:22:25:37 | ...::stdin(...) | ...::stdin(...) | +| test.rs:32:14:32:20 | &buffer | test.rs:31:22:31:37 | ...::stdin(...) | test.rs:32:14:32:20 | &buffer | $@ | test.rs:31:22:31:37 | ...::stdin(...) | ...::stdin(...) | +| test.rs:38:14:38:20 | &buffer | test.rs:37:9:37:24 | ...::stdin(...) | test.rs:38:14:38:20 | &buffer | $@ | test.rs:37:9:37:24 | ...::stdin(...) | ...::stdin(...) | +| test.rs:42:14:42:17 | byte | test.rs:41:17:41:32 | ...::stdin(...) | test.rs:42:14:42:17 | byte | $@ | test.rs:41:17:41:32 | ...::stdin(...) | ...::stdin(...) | +| test.rs:50:14:50:18 | &data | test.rs:48:50:48:65 | ...::stdin(...) | test.rs:50:14:50:18 | &data | $@ | test.rs:48:50:48:65 | ...::stdin(...) | ...::stdin(...) | +| test.rs:56:14:56:18 | &data | test.rs:54:46:54:61 | ...::stdin(...) | test.rs:56:14:56:18 | &data | $@ | test.rs:54:46:54:61 | ...::stdin(...) | ...::stdin(...) | +| test.rs:63:14:63:20 | &buffer | test.rs:61:50:61:65 | ...::stdin(...) | test.rs:63:14:63:20 | &buffer | $@ | test.rs:61:50:61:65 | ...::stdin(...) | ...::stdin(...) | +| test.rs:70:14:70:20 | &buffer | test.rs:68:50:68:65 | ...::stdin(...) | test.rs:70:14:70:20 | &buffer | $@ | test.rs:68:50:68:65 | ...::stdin(...) | ...::stdin(...) | +| test.rs:71:14:71:22 | buffer[0] | test.rs:68:50:68:65 | ...::stdin(...) | test.rs:71:14:71:22 | buffer[0] | $@ | test.rs:68:50:68:65 | ...::stdin(...) | ...::stdin(...) | +| test.rs:76:14:76:50 | ... .unwrap() | test.rs:75:56:75:71 | ...::stdin(...) | test.rs:76:14:76:50 | ... .unwrap() | $@ | test.rs:75:56:75:71 | ...::stdin(...) | ...::stdin(...) | +| test.rs:78:18:78:31 | chunk.unwrap() | test.rs:75:56:75:71 | ...::stdin(...) | test.rs:78:18:78:31 | chunk.unwrap() | $@ | test.rs:75:56:75:71 | ...::stdin(...) | ...::stdin(...) | +| test.rs:85:18:85:21 | line | test.rs:83:46:83:61 | ...::stdin(...) | test.rs:85:18:85:21 | line | $@ | test.rs:83:46:83:61 | ...::stdin(...) | ...::stdin(...) | +| test.rs:92:14:92:34 | ... .clone() | test.rs:90:46:90:61 | ...::stdin(...) | test.rs:92:14:92:34 | ... .clone() | $@ | test.rs:90:46:90:61 | ...::stdin(...) | ...::stdin(...) | +| test.rs:112:14:112:20 | &buffer | test.rs:109:25:109:42 | ...::stdin(...) | test.rs:112:14:112:20 | &buffer | $@ | test.rs:109:25:109:42 | ...::stdin(...) | ...::stdin(...) | +| test.rs:119:14:119:20 | &buffer | test.rs:116:25:116:42 | ...::stdin(...) | test.rs:119:14:119:20 | &buffer | $@ | test.rs:116:25:116:42 | ...::stdin(...) | ...::stdin(...) | +| test.rs:126:14:126:20 | &buffer | test.rs:123:25:123:42 | ...::stdin(...) | test.rs:126:14:126:20 | &buffer | $@ | test.rs:123:25:123:42 | ...::stdin(...) | ...::stdin(...) | +| test.rs:133:14:133:20 | &buffer | test.rs:130:25:130:42 | ...::stdin(...) | test.rs:133:14:133:20 | &buffer | $@ | test.rs:130:25:130:42 | ...::stdin(...) | ...::stdin(...) | +| test.rs:142:14:142:15 | v1 | test.rs:137:25:137:42 | ...::stdin(...) | test.rs:142:14:142:15 | v1 | $@ | test.rs:137:25:137:42 | ...::stdin(...) | ...::stdin(...) | +| test.rs:143:14:143:15 | v2 | test.rs:137:25:137:42 | ...::stdin(...) | test.rs:143:14:143:15 | v2 | $@ | test.rs:137:25:137:42 | ...::stdin(...) | ...::stdin(...) | +| test.rs:144:14:144:15 | v3 | test.rs:137:25:137:42 | ...::stdin(...) | test.rs:144:14:144:15 | v3 | $@ | test.rs:137:25:137:42 | ...::stdin(...) | ...::stdin(...) | +| test.rs:145:14:145:15 | v4 | test.rs:137:25:137:42 | ...::stdin(...) | test.rs:145:14:145:15 | v4 | $@ | test.rs:137:25:137:42 | ...::stdin(...) | ...::stdin(...) | +| test.rs:152:14:152:20 | &buffer | test.rs:149:25:149:42 | ...::stdin(...) | test.rs:152:14:152:20 | &buffer | $@ | test.rs:149:25:149:42 | ...::stdin(...) | ...::stdin(...) | +| test.rs:160:14:160:18 | &data | test.rs:158:52:158:69 | ...::stdin(...) | test.rs:160:14:160:18 | &data | $@ | test.rs:158:52:158:69 | ...::stdin(...) | ...::stdin(...) | +| test.rs:166:14:166:18 | &data | test.rs:164:48:164:65 | ...::stdin(...) | test.rs:166:14:166:18 | &data | $@ | test.rs:164:48:164:65 | ...::stdin(...) | ...::stdin(...) | +| test.rs:173:14:173:20 | &buffer | test.rs:171:52:171:69 | ...::stdin(...) | test.rs:173:14:173:20 | &buffer | $@ | test.rs:171:52:171:69 | ...::stdin(...) | ...::stdin(...) | +| test.rs:180:14:180:20 | &buffer | test.rs:178:52:178:69 | ...::stdin(...) | test.rs:180:14:180:20 | &buffer | $@ | test.rs:178:52:178:69 | ...::stdin(...) | ...::stdin(...) | +| test.rs:181:14:181:22 | buffer[0] | test.rs:178:52:178:69 | ...::stdin(...) | test.rs:181:14:181:22 | buffer[0] | $@ | test.rs:178:52:178:69 | ...::stdin(...) | ...::stdin(...) | +| test.rs:186:14:186:56 | ... .unwrap() | test.rs:185:58:185:75 | ...::stdin(...) | test.rs:186:14:186:56 | ... .unwrap() | $@ | test.rs:185:58:185:75 | ...::stdin(...) | ...::stdin(...) | +| test.rs:188:18:188:22 | chunk | test.rs:185:58:185:75 | ...::stdin(...) | test.rs:188:18:188:22 | chunk | $@ | test.rs:185:58:185:75 | ...::stdin(...) | ...::stdin(...) | +| test.rs:195:14:195:46 | ... .unwrap() | test.rs:193:48:193:65 | ...::stdin(...) | test.rs:195:14:195:46 | ... .unwrap() | $@ | test.rs:193:48:193:65 | ...::stdin(...) | ...::stdin(...) | +| test.rs:197:18:197:21 | line | test.rs:193:48:193:65 | ...::stdin(...) | test.rs:197:18:197:21 | line | $@ | test.rs:193:48:193:65 | ...::stdin(...) | ...::stdin(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/stdin/TaintSources.expected index 085237733145..aeca83904a13 100644 --- a/rust/ql/test/library-tests/dataflow/sources/stdin/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/TaintSources.expected @@ -1,26 +1,26 @@ -| test.rs:13:22:13:35 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:19:22:19:35 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:25:22:25:35 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:31:22:31:35 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:37:9:37:22 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:41:17:41:30 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:48:50:48:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:54:46:54:59 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:61:50:61:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:68:50:68:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:75:56:75:69 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:83:46:83:59 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:90:46:90:59 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:96:46:96:59 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:109:25:109:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:116:25:116:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:123:25:123:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:130:25:130:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:137:25:137:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:149:25:149:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:158:52:158:67 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:164:48:164:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:171:52:171:67 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:178:52:178:67 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:185:58:185:73 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:193:48:193:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:13:22:13:37 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:19:22:19:37 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:25:22:25:37 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:31:22:31:37 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:37:9:37:24 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:41:17:41:32 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:48:50:48:65 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:54:46:54:61 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:61:50:61:65 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:68:50:68:65 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:75:56:75:71 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:83:46:83:61 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:90:46:90:61 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:96:46:96:61 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:109:25:109:42 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:116:25:116:42 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:123:25:123:42 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:130:25:130:42 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:137:25:137:42 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:149:25:149:42 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:158:52:158:69 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:164:48:164:65 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:171:52:171:69 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:178:52:178:69 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:185:58:185:75 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:193:48:193:65 | ...::stdin(...) | Flow source 'StdInSource' of type stdin (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected index 7b8a4b97e60a..49c37938199e 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected @@ -25,7 +25,6 @@ edges | test.rs:58:14:58:15 | ms | test.rs:60:14:60:17 | ms.a | provenance | | | test.rs:58:14:58:15 | ms | test.rs:61:14:61:17 | ms.b | provenance | | | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | provenance | | -| test.rs:97:33:97:55 | ...: ...::Path::<...> | test.rs:98:17:98:20 | path | provenance | | | test.rs:98:13:98:13 | a | test.rs:99:14:99:14 | a | provenance | | | test.rs:98:13:98:13 | a | test.rs:100:14:100:14 | a | provenance | | | test.rs:98:13:98:13 | a | test.rs:101:14:101:14 | a | provenance | | @@ -33,46 +32,33 @@ edges | test.rs:98:17:98:33 | path.into_inner() | test.rs:98:13:98:13 | a | provenance | | | test.rs:99:14:99:14 | a | test.rs:99:14:99:23 | a.as_str() | provenance | MaD:13 | | test.rs:100:14:100:14 | a | test.rs:100:14:100:25 | a.as_bytes() | provenance | MaD:12 | -| test.rs:106:33:106:65 | ...: ...::Path::<...> | test.rs:107:22:107:25 | path | provenance | | | test.rs:107:13:107:18 | TuplePat | test.rs:109:14:109:14 | a | provenance | | | test.rs:107:13:107:18 | TuplePat | test.rs:110:14:110:14 | b | provenance | | | test.rs:107:22:107:25 | path | test.rs:107:22:107:38 | path.into_inner() | provenance | MaD:11 | | test.rs:107:22:107:38 | path.into_inner() | test.rs:107:13:107:18 | TuplePat | provenance | | -| test.rs:115:33:115:65 | ...: ...::Query::<...> | test.rs:116:14:116:14 | a | provenance | | -| test.rs:121:7:121:19 | to | test.rs:122:33:122:55 | ...: ...::Path::<...> | provenance | Src:MaD:4 | -| test.rs:122:33:122:55 | ...: ...::Path::<...> | test.rs:123:17:123:20 | path | provenance | | +| test.rs:122:14:122:31 | my_actix_handler_4 | test.rs:123:17:123:20 | path | provenance | Src:MaD:4 | | test.rs:123:13:123:13 | a | test.rs:124:14:124:14 | a | provenance | | | test.rs:123:17:123:20 | path | test.rs:123:17:123:33 | path.into_inner() | provenance | MaD:11 | | test.rs:123:17:123:33 | path.into_inner() | test.rs:123:13:123:13 | a | provenance | | -| test.rs:131:41:131:42 | to | test.rs:97:33:97:55 | ...: ...::Path::<...> | provenance | Src:MaD:5 | -| test.rs:132:45:132:46 | to | test.rs:106:33:106:65 | ...: ...::Path::<...> | provenance | Src:MaD:5 | -| test.rs:133:41:133:42 | to | test.rs:115:33:115:65 | ...: ...::Query::<...> | provenance | Src:MaD:5 | -| test.rs:147:32:147:52 | ...: Path::<...> | test.rs:148:14:148:14 | a | provenance | | -| test.rs:147:32:147:52 | ...: Path::<...> | test.rs:149:14:149:14 | a | provenance | | -| test.rs:147:32:147:52 | ...: Path::<...> | test.rs:150:14:150:14 | a | provenance | | +| test.rs:131:44:131:61 | my_actix_handler_1 | test.rs:98:17:98:20 | path | provenance | Src:MaD:5 | +| test.rs:132:48:132:65 | my_actix_handler_2 | test.rs:107:22:107:25 | path | provenance | Src:MaD:5 | +| test.rs:133:44:133:61 | my_actix_handler_3 | test.rs:116:14:116:14 | a | provenance | Src:MaD:5 | | test.rs:148:14:148:14 | a | test.rs:148:14:148:23 | a.as_str() | provenance | MaD:13 | | test.rs:149:14:149:14 | a | test.rs:149:14:149:25 | a.as_bytes() | provenance | MaD:12 | -| test.rs:155:32:155:67 | ...: Path::<...> | test.rs:156:14:156:14 | a | provenance | | -| test.rs:155:32:155:67 | ...: Path::<...> | test.rs:157:14:157:14 | b | provenance | | -| test.rs:162:32:162:76 | ...: Query::<...> | test.rs:164:18:164:20 | key | provenance | | -| test.rs:162:32:162:76 | ...: Query::<...> | test.rs:165:18:165:22 | value | provenance | | -| test.rs:179:32:179:69 | ...: Json::<...> | test.rs:181:14:181:20 | payload | provenance | | -| test.rs:186:32:186:43 | ...: String | test.rs:187:14:187:17 | body | provenance | | -| test.rs:192:32:192:43 | ...: String | test.rs:193:14:193:17 | body | provenance | | -| test.rs:200:30:200:32 | get | test.rs:147:32:147:52 | ...: Path::<...> | provenance | Src:MaD:8 | -| test.rs:201:34:201:37 | post | test.rs:155:32:155:67 | ...: Path::<...> | provenance | Src:MaD:9 | -| test.rs:202:29:202:31 | put | test.rs:162:32:162:76 | ...: Query::<...> | provenance | Src:MaD:10 | -| test.rs:205:40:205:41 | on | test.rs:179:32:179:69 | ...: Json::<...> | provenance | Src:MaD:7 | -| test.rs:207:29:207:31 | get | test.rs:186:32:186:43 | ...: String | provenance | Src:MaD:8 | -| test.rs:207:52:207:54 | get | test.rs:192:32:192:43 | ...: String | provenance | Src:MaD:6 | -| test.rs:222:33:222:35 | map | test.rs:222:38:222:46 | ...: String | provenance | Src:MaD:2 | -| test.rs:222:38:222:46 | ...: String | test.rs:224:18:224:18 | a | provenance | | -| test.rs:230:46:230:49 | then | test.rs:231:25:231:33 | ...: String | provenance | Src:MaD:3 | -| test.rs:231:25:231:33 | ...: String | test.rs:232:22:232:22 | a | provenance | | -| test.rs:239:50:239:57 | and_then | test.rs:240:26:240:32 | ...: u64 | provenance | Src:MaD:1 | -| test.rs:240:26:240:32 | ...: u64 | test.rs:243:22:243:23 | id | provenance | | -| test.rs:252:75:252:77 | map | test.rs:253:15:253:23 | ...: String | provenance | Src:MaD:2 | -| test.rs:253:15:253:23 | ...: String | test.rs:255:22:255:22 | a | provenance | | +| test.rs:200:34:200:50 | my_axum_handler_1 | test.rs:148:14:148:14 | a | provenance | Src:MaD:8 | +| test.rs:200:34:200:50 | my_axum_handler_1 | test.rs:149:14:149:14 | a | provenance | Src:MaD:8 | +| test.rs:200:34:200:50 | my_axum_handler_1 | test.rs:150:14:150:14 | a | provenance | Src:MaD:8 | +| test.rs:201:39:201:55 | my_axum_handler_2 | test.rs:156:14:156:14 | a | provenance | Src:MaD:9 | +| test.rs:201:39:201:55 | my_axum_handler_2 | test.rs:157:14:157:14 | b | provenance | Src:MaD:9 | +| test.rs:202:33:202:49 | my_axum_handler_3 | test.rs:164:18:164:20 | key | provenance | Src:MaD:10 | +| test.rs:202:33:202:49 | my_axum_handler_3 | test.rs:165:18:165:22 | value | provenance | Src:MaD:10 | +| test.rs:205:65:205:81 | my_axum_handler_5 | test.rs:181:14:181:20 | payload | provenance | Src:MaD:7 | +| test.rs:207:33:207:49 | my_axum_handler_6 | test.rs:187:14:187:17 | body | provenance | Src:MaD:8 | +| test.rs:207:56:207:72 | my_axum_handler_7 | test.rs:193:14:193:17 | body | provenance | Src:MaD:6 | +| test.rs:222:37:227:9 | \|...\| ... | test.rs:224:18:224:18 | a | provenance | Src:MaD:2 | +| test.rs:231:13:235:13 | \|...\| ... | test.rs:232:22:232:22 | a | provenance | Src:MaD:3 | +| test.rs:240:13:248:9 | \|...\| ... | test.rs:243:22:243:23 | id | provenance | Src:MaD:1 | +| test.rs:253:13:258:14 | \|...\| ... | test.rs:255:22:255:22 | a | provenance | Src:MaD:2 | nodes | test.rs:11:31:11:31 | a | semmle.label | a | | test.rs:13:14:13:14 | a | semmle.label | a | @@ -91,7 +77,6 @@ nodes | test.rs:61:14:61:17 | ms.b | semmle.label | ms.b | | test.rs:68:15:68:15 | a | semmle.label | a | | test.rs:70:14:70:14 | a | semmle.label | a | -| test.rs:97:33:97:55 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | | test.rs:98:13:98:13 | a | semmle.label | a | | test.rs:98:17:98:20 | path | semmle.label | path | | test.rs:98:17:98:33 | path.into_inner() | semmle.label | path.into_inner() | @@ -100,58 +85,45 @@ nodes | test.rs:100:14:100:14 | a | semmle.label | a | | test.rs:100:14:100:25 | a.as_bytes() | semmle.label | a.as_bytes() | | test.rs:101:14:101:14 | a | semmle.label | a | -| test.rs:106:33:106:65 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | | test.rs:107:13:107:18 | TuplePat | semmle.label | TuplePat | | test.rs:107:22:107:25 | path | semmle.label | path | | test.rs:107:22:107:38 | path.into_inner() | semmle.label | path.into_inner() | | test.rs:109:14:109:14 | a | semmle.label | a | | test.rs:110:14:110:14 | b | semmle.label | b | -| test.rs:115:33:115:65 | ...: ...::Query::<...> | semmle.label | ...: ...::Query::<...> | | test.rs:116:14:116:14 | a | semmle.label | a | -| test.rs:121:7:121:19 | to | semmle.label | to | -| test.rs:122:33:122:55 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | +| test.rs:122:14:122:31 | my_actix_handler_4 | semmle.label | my_actix_handler_4 | | test.rs:123:13:123:13 | a | semmle.label | a | | test.rs:123:17:123:20 | path | semmle.label | path | | test.rs:123:17:123:33 | path.into_inner() | semmle.label | path.into_inner() | | test.rs:124:14:124:14 | a | semmle.label | a | -| test.rs:131:41:131:42 | to | semmle.label | to | -| test.rs:132:45:132:46 | to | semmle.label | to | -| test.rs:133:41:133:42 | to | semmle.label | to | -| test.rs:147:32:147:52 | ...: Path::<...> | semmle.label | ...: Path::<...> | +| test.rs:131:44:131:61 | my_actix_handler_1 | semmle.label | my_actix_handler_1 | +| test.rs:132:48:132:65 | my_actix_handler_2 | semmle.label | my_actix_handler_2 | +| test.rs:133:44:133:61 | my_actix_handler_3 | semmle.label | my_actix_handler_3 | | test.rs:148:14:148:14 | a | semmle.label | a | | test.rs:148:14:148:23 | a.as_str() | semmle.label | a.as_str() | | test.rs:149:14:149:14 | a | semmle.label | a | | test.rs:149:14:149:25 | a.as_bytes() | semmle.label | a.as_bytes() | | test.rs:150:14:150:14 | a | semmle.label | a | -| test.rs:155:32:155:67 | ...: Path::<...> | semmle.label | ...: Path::<...> | | test.rs:156:14:156:14 | a | semmle.label | a | | test.rs:157:14:157:14 | b | semmle.label | b | -| test.rs:162:32:162:76 | ...: Query::<...> | semmle.label | ...: Query::<...> | | test.rs:164:18:164:20 | key | semmle.label | key | | test.rs:165:18:165:22 | value | semmle.label | value | -| test.rs:179:32:179:69 | ...: Json::<...> | semmle.label | ...: Json::<...> | | test.rs:181:14:181:20 | payload | semmle.label | payload | -| test.rs:186:32:186:43 | ...: String | semmle.label | ...: String | | test.rs:187:14:187:17 | body | semmle.label | body | -| test.rs:192:32:192:43 | ...: String | semmle.label | ...: String | | test.rs:193:14:193:17 | body | semmle.label | body | -| test.rs:200:30:200:32 | get | semmle.label | get | -| test.rs:201:34:201:37 | post | semmle.label | post | -| test.rs:202:29:202:31 | put | semmle.label | put | -| test.rs:205:40:205:41 | on | semmle.label | on | -| test.rs:207:29:207:31 | get | semmle.label | get | -| test.rs:207:52:207:54 | get | semmle.label | get | -| test.rs:222:33:222:35 | map | semmle.label | map | -| test.rs:222:38:222:46 | ...: String | semmle.label | ...: String | +| test.rs:200:34:200:50 | my_axum_handler_1 | semmle.label | my_axum_handler_1 | +| test.rs:201:39:201:55 | my_axum_handler_2 | semmle.label | my_axum_handler_2 | +| test.rs:202:33:202:49 | my_axum_handler_3 | semmle.label | my_axum_handler_3 | +| test.rs:205:65:205:81 | my_axum_handler_5 | semmle.label | my_axum_handler_5 | +| test.rs:207:33:207:49 | my_axum_handler_6 | semmle.label | my_axum_handler_6 | +| test.rs:207:56:207:72 | my_axum_handler_7 | semmle.label | my_axum_handler_7 | +| test.rs:222:37:227:9 | \|...\| ... | semmle.label | \|...\| ... | | test.rs:224:18:224:18 | a | semmle.label | a | -| test.rs:230:46:230:49 | then | semmle.label | then | -| test.rs:231:25:231:33 | ...: String | semmle.label | ...: String | +| test.rs:231:13:235:13 | \|...\| ... | semmle.label | \|...\| ... | | test.rs:232:22:232:22 | a | semmle.label | a | -| test.rs:239:50:239:57 | and_then | semmle.label | and_then | -| test.rs:240:26:240:32 | ...: u64 | semmle.label | ...: u64 | +| test.rs:240:13:248:9 | \|...\| ... | semmle.label | \|...\| ... | | test.rs:243:22:243:23 | id | semmle.label | id | -| test.rs:252:75:252:77 | map | semmle.label | map | -| test.rs:253:15:253:23 | ...: String | semmle.label | ...: String | +| test.rs:253:13:258:14 | \|...\| ... | semmle.label | \|...\| ... | | test.rs:255:22:255:22 | a | semmle.label | a | subpaths testFailures @@ -166,24 +138,24 @@ testFailures | test.rs:60:14:60:17 | ms.a | test.rs:58:14:58:15 | ms | test.rs:60:14:60:17 | ms.a | $@ | test.rs:58:14:58:15 | ms | ms | | test.rs:61:14:61:17 | ms.b | test.rs:58:14:58:15 | ms | test.rs:61:14:61:17 | ms.b | $@ | test.rs:58:14:58:15 | ms | ms | | test.rs:70:14:70:14 | a | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | $@ | test.rs:68:15:68:15 | a | a | -| test.rs:99:14:99:23 | a.as_str() | test.rs:131:41:131:42 | to | test.rs:99:14:99:23 | a.as_str() | $@ | test.rs:131:41:131:42 | to | to | -| test.rs:100:14:100:25 | a.as_bytes() | test.rs:131:41:131:42 | to | test.rs:100:14:100:25 | a.as_bytes() | $@ | test.rs:131:41:131:42 | to | to | -| test.rs:101:14:101:14 | a | test.rs:131:41:131:42 | to | test.rs:101:14:101:14 | a | $@ | test.rs:131:41:131:42 | to | to | -| test.rs:109:14:109:14 | a | test.rs:132:45:132:46 | to | test.rs:109:14:109:14 | a | $@ | test.rs:132:45:132:46 | to | to | -| test.rs:110:14:110:14 | b | test.rs:132:45:132:46 | to | test.rs:110:14:110:14 | b | $@ | test.rs:132:45:132:46 | to | to | -| test.rs:116:14:116:14 | a | test.rs:133:41:133:42 | to | test.rs:116:14:116:14 | a | $@ | test.rs:133:41:133:42 | to | to | -| test.rs:124:14:124:14 | a | test.rs:121:7:121:19 | to | test.rs:124:14:124:14 | a | $@ | test.rs:121:7:121:19 | to | to | -| test.rs:148:14:148:23 | a.as_str() | test.rs:200:30:200:32 | get | test.rs:148:14:148:23 | a.as_str() | $@ | test.rs:200:30:200:32 | get | get | -| test.rs:149:14:149:25 | a.as_bytes() | test.rs:200:30:200:32 | get | test.rs:149:14:149:25 | a.as_bytes() | $@ | test.rs:200:30:200:32 | get | get | -| test.rs:150:14:150:14 | a | test.rs:200:30:200:32 | get | test.rs:150:14:150:14 | a | $@ | test.rs:200:30:200:32 | get | get | -| test.rs:156:14:156:14 | a | test.rs:201:34:201:37 | post | test.rs:156:14:156:14 | a | $@ | test.rs:201:34:201:37 | post | post | -| test.rs:157:14:157:14 | b | test.rs:201:34:201:37 | post | test.rs:157:14:157:14 | b | $@ | test.rs:201:34:201:37 | post | post | -| test.rs:164:18:164:20 | key | test.rs:202:29:202:31 | put | test.rs:164:18:164:20 | key | $@ | test.rs:202:29:202:31 | put | put | -| test.rs:165:18:165:22 | value | test.rs:202:29:202:31 | put | test.rs:165:18:165:22 | value | $@ | test.rs:202:29:202:31 | put | put | -| test.rs:181:14:181:20 | payload | test.rs:205:40:205:41 | on | test.rs:181:14:181:20 | payload | $@ | test.rs:205:40:205:41 | on | on | -| test.rs:187:14:187:17 | body | test.rs:207:29:207:31 | get | test.rs:187:14:187:17 | body | $@ | test.rs:207:29:207:31 | get | get | -| test.rs:193:14:193:17 | body | test.rs:207:52:207:54 | get | test.rs:193:14:193:17 | body | $@ | test.rs:207:52:207:54 | get | get | -| test.rs:224:18:224:18 | a | test.rs:222:33:222:35 | map | test.rs:224:18:224:18 | a | $@ | test.rs:222:33:222:35 | map | map | -| test.rs:232:22:232:22 | a | test.rs:230:46:230:49 | then | test.rs:232:22:232:22 | a | $@ | test.rs:230:46:230:49 | then | then | -| test.rs:243:22:243:23 | id | test.rs:239:50:239:57 | and_then | test.rs:243:22:243:23 | id | $@ | test.rs:239:50:239:57 | and_then | and_then | -| test.rs:255:22:255:22 | a | test.rs:252:75:252:77 | map | test.rs:255:22:255:22 | a | $@ | test.rs:252:75:252:77 | map | map | +| test.rs:99:14:99:23 | a.as_str() | test.rs:131:44:131:61 | my_actix_handler_1 | test.rs:99:14:99:23 | a.as_str() | $@ | test.rs:131:44:131:61 | my_actix_handler_1 | my_actix_handler_1 | +| test.rs:100:14:100:25 | a.as_bytes() | test.rs:131:44:131:61 | my_actix_handler_1 | test.rs:100:14:100:25 | a.as_bytes() | $@ | test.rs:131:44:131:61 | my_actix_handler_1 | my_actix_handler_1 | +| test.rs:101:14:101:14 | a | test.rs:131:44:131:61 | my_actix_handler_1 | test.rs:101:14:101:14 | a | $@ | test.rs:131:44:131:61 | my_actix_handler_1 | my_actix_handler_1 | +| test.rs:109:14:109:14 | a | test.rs:132:48:132:65 | my_actix_handler_2 | test.rs:109:14:109:14 | a | $@ | test.rs:132:48:132:65 | my_actix_handler_2 | my_actix_handler_2 | +| test.rs:110:14:110:14 | b | test.rs:132:48:132:65 | my_actix_handler_2 | test.rs:110:14:110:14 | b | $@ | test.rs:132:48:132:65 | my_actix_handler_2 | my_actix_handler_2 | +| test.rs:116:14:116:14 | a | test.rs:133:44:133:61 | my_actix_handler_3 | test.rs:116:14:116:14 | a | $@ | test.rs:133:44:133:61 | my_actix_handler_3 | my_actix_handler_3 | +| test.rs:124:14:124:14 | a | test.rs:122:14:122:31 | my_actix_handler_4 | test.rs:124:14:124:14 | a | $@ | test.rs:122:14:122:31 | my_actix_handler_4 | my_actix_handler_4 | +| test.rs:148:14:148:23 | a.as_str() | test.rs:200:34:200:50 | my_axum_handler_1 | test.rs:148:14:148:23 | a.as_str() | $@ | test.rs:200:34:200:50 | my_axum_handler_1 | my_axum_handler_1 | +| test.rs:149:14:149:25 | a.as_bytes() | test.rs:200:34:200:50 | my_axum_handler_1 | test.rs:149:14:149:25 | a.as_bytes() | $@ | test.rs:200:34:200:50 | my_axum_handler_1 | my_axum_handler_1 | +| test.rs:150:14:150:14 | a | test.rs:200:34:200:50 | my_axum_handler_1 | test.rs:150:14:150:14 | a | $@ | test.rs:200:34:200:50 | my_axum_handler_1 | my_axum_handler_1 | +| test.rs:156:14:156:14 | a | test.rs:201:39:201:55 | my_axum_handler_2 | test.rs:156:14:156:14 | a | $@ | test.rs:201:39:201:55 | my_axum_handler_2 | my_axum_handler_2 | +| test.rs:157:14:157:14 | b | test.rs:201:39:201:55 | my_axum_handler_2 | test.rs:157:14:157:14 | b | $@ | test.rs:201:39:201:55 | my_axum_handler_2 | my_axum_handler_2 | +| test.rs:164:18:164:20 | key | test.rs:202:33:202:49 | my_axum_handler_3 | test.rs:164:18:164:20 | key | $@ | test.rs:202:33:202:49 | my_axum_handler_3 | my_axum_handler_3 | +| test.rs:165:18:165:22 | value | test.rs:202:33:202:49 | my_axum_handler_3 | test.rs:165:18:165:22 | value | $@ | test.rs:202:33:202:49 | my_axum_handler_3 | my_axum_handler_3 | +| test.rs:181:14:181:20 | payload | test.rs:205:65:205:81 | my_axum_handler_5 | test.rs:181:14:181:20 | payload | $@ | test.rs:205:65:205:81 | my_axum_handler_5 | my_axum_handler_5 | +| test.rs:187:14:187:17 | body | test.rs:207:33:207:49 | my_axum_handler_6 | test.rs:187:14:187:17 | body | $@ | test.rs:207:33:207:49 | my_axum_handler_6 | my_axum_handler_6 | +| test.rs:193:14:193:17 | body | test.rs:207:56:207:72 | my_axum_handler_7 | test.rs:193:14:193:17 | body | $@ | test.rs:207:56:207:72 | my_axum_handler_7 | my_axum_handler_7 | +| test.rs:224:18:224:18 | a | test.rs:222:37:227:9 | \|...\| ... | test.rs:224:18:224:18 | a | $@ | test.rs:222:37:227:9 | \|...\| ... | \|...\| ... | +| test.rs:232:22:232:22 | a | test.rs:231:13:235:13 | \|...\| ... | test.rs:232:22:232:22 | a | $@ | test.rs:231:13:235:13 | \|...\| ... | \|...\| ... | +| test.rs:243:22:243:23 | id | test.rs:240:13:248:9 | \|...\| ... | test.rs:243:22:243:23 | id | $@ | test.rs:240:13:248:9 | \|...\| ... | \|...\| ... | +| test.rs:255:22:255:22 | a | test.rs:253:13:258:14 | \|...\| ... | test.rs:255:22:255:22 | a | $@ | test.rs:253:13:258:14 | \|...\| ... | \|...\| ... | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected index 6ff9e7cfa031..456ec4949bbe 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected @@ -3,123 +3,123 @@ | test.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:7:121:19 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:41:131:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:41:131:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:41:131:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:41:131:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:41:131:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:41:131:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:41:131:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:41:131:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:45:132:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:45:132:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:45:132:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:45:132:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:45:132:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:45:132:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:45:132:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:45:132:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:41:133:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:41:133:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:41:133:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:41:133:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:41:133:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:41:133:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:41:133:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:41:133:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:30:200:32 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:30:200:32 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:30:200:32 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:30:200:32 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:30:200:32 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:30:200:32 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:30:200:32 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:30:200:32 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:34:201:37 | post | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:34:201:37 | post | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:34:201:37 | post | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:34:201:37 | post | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:34:201:37 | post | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:34:201:37 | post | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:34:201:37 | post | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:34:201:37 | post | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:29:202:31 | put | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:29:202:31 | put | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:29:202:31 | put | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:29:202:31 | put | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:29:202:31 | put | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:29:202:31 | put | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:29:202:31 | put | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:29:202:31 | put | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:17:205:19 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:17:205:19 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:17:205:19 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:17:205:19 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:17:205:19 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:17:205:19 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:17:205:19 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:17:205:19 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:40:205:41 | on | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:40:205:41 | on | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:40:205:41 | on | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:40:205:41 | on | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:40:205:41 | on | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:40:205:41 | on | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:40:205:41 | on | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:40:205:41 | on | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:29:207:31 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:29:207:31 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:29:207:31 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:29:207:31 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:29:207:31 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:29:207:31 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:29:207:31 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:29:207:31 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:52:207:54 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:52:207:54 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:52:207:54 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:52:207:54 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:52:207:54 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:52:207:54 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:52:207:54 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:52:207:54 | get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:33:222:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:33:222:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:33:222:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:33:222:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:33:222:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:33:222:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:33:222:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:33:222:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:230:46:230:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:230:46:230:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:230:46:230:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:230:46:230:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:230:46:230:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:230:46:230:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:230:46:230:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:230:46:230:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:239:50:239:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:239:50:239:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:239:50:239:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:239:50:239:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:239:50:239:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:239:50:239:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:239:50:239:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:239:50:239:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:252:75:252:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:252:75:252:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:252:75:252:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:252:75:252:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:252:75:252:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:252:75:252:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:252:75:252:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:252:75:252:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/test.rs b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/test.rs index c6c487fed28d..ab9f129dddbe 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/test.rs @@ -118,8 +118,8 @@ mod actix_test { "".to_string() } - #[get("/4/{a}")] // $ Alert[rust/summary/taint-sources] - async fn my_actix_handler_4(path: web::Path) -> String { + #[get("/4/{a}")] + async fn my_actix_handler_4(path: web::Path) -> String { // $ Alert[rust/summary/taint-sources] let a = path.into_inner(); sink(a); // $ hasTaintFlow=my_actix_handler_4 @@ -219,24 +219,24 @@ mod warp_test { async fn test_warp() { // A route with parameter and `map` let map_route = - warp::path::param().map(|a: String| // $ Alert[rust/summary/taint-sources] + warp::path::param().map(|a: String| { sink(a); // $ hasTaintFlow "".to_string() - }); + }); // $ Alert[rust/summary/taint-sources] // A route with parameter and `then` - let then_route = warp::path::param().then( // $ Alert[rust/summary/taint-sources] + let then_route = warp::path::param().then( async move |a: String| { sink(a); // $ hasTaintFlow "".to_string() - }, + }, // $ Alert[rust/summary/taint-sources] ); // A route with parameter and `and_then` - let and_then_route = warp::path::param().and_then( // $ Alert[rust/summary/taint-sources] + let and_then_route = warp::path::param().and_then( async move | id: u64 | { if id != 0 { @@ -245,17 +245,17 @@ mod warp_test { } else { Err(warp::reject::not_found()) } - }, + }, // $ Alert[rust/summary/taint-sources] ); // 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] + let path_and_map_route = warp::path("1").and(warp::path::param()).map( | a: String | { sink(a); // $ hasTaintFlow "".to_string() - }, + }, // $ Alert[rust/summary/taint-sources] ); let routes = warp::get().and( diff --git a/rust/ql/test/library-tests/frameworks/postgres/main.rs b/rust/ql/test/library-tests/frameworks/postgres/main.rs index 262e22855bf1..64844da4b238 100644 --- a/rust/ql/test/library-tests/frameworks/postgres/main.rs +++ b/rust/ql/test/library-tests/frameworks/postgres/main.rs @@ -7,12 +7,12 @@ fn main() -> Result<(), Box> { let mut conn = postgres::Client::connect("host=localhost user=postgres", postgres::NoTls)?; - conn.execute( // $ sql-sink + conn.execute( "CREATE TABLE person ( id SERIAL PRIMARY KEY, name VARCHAR NOT NULL, age INT NOT NULL - )", + )", // $ sql-sink &[], )?; diff --git a/rust/ql/test/library-tests/frameworks/rusqlite/main.rs b/rust/ql/test/library-tests/frameworks/rusqlite/main.rs index 441aa35f798b..58fb407e12e9 100644 --- a/rust/ql/test/library-tests/frameworks/rusqlite/main.rs +++ b/rust/ql/test/library-tests/frameworks/rusqlite/main.rs @@ -16,12 +16,12 @@ fn main() -> Result<(), Box> { let connection = Connection::open_in_memory()?; - connection.execute( // $ sql-sink + connection.execute( "CREATE TABLE person ( id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR NOT NULL, age INT NOT NULL - )", + )", // $ sql-sink (), )?; diff --git a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected index 2814af2b5ede..952fbcef17ff 100644 --- a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected @@ -1,8 +1,8 @@ #select -| main.rs:6:25:6:30 | ®ex | main.rs:4:20:4:32 | ...::var | main.rs:6:25:6:30 | ®ex | This regular expression is constructed from a $@. | main.rs:4:20:4:32 | ...::var | user-provided value | +| main.rs:6:25:6:30 | ®ex | main.rs:4:20:4:40 | ...::var(...) | main.rs:6:25:6:30 | ®ex | This regular expression is constructed from a $@. | main.rs:4:20:4:40 | ...::var(...) | user-provided value | edges | main.rs:4:9:4:16 | username | main.rs:5:25:5:44 | MacroExpr | provenance | | -| main.rs:4:20:4:32 | ...::var | main.rs:4:20:4:40 | ...::var(...) [Ok] | provenance | Src:MaD:1 | +| main.rs:4:20:4:40 | ...::var(...) | main.rs:4:20:4:40 | ...::var(...) [Ok] | provenance | Src:MaD:1 | | main.rs:4:20:4:40 | ...::var(...) [Ok] | main.rs:4:20:4:66 | ... .unwrap_or(...) | provenance | MaD:2 | | main.rs:4:20:4:66 | ... .unwrap_or(...) | main.rs:4:9:4:16 | username | provenance | | | main.rs:5:9:5:13 | regex | main.rs:6:26:6:30 | regex | provenance | | @@ -18,7 +18,7 @@ models | 4 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | main.rs:4:9:4:16 | username | semmle.label | username | -| main.rs:4:20:4:32 | ...::var | semmle.label | ...::var | +| main.rs:4:20:4:40 | ...::var(...) | semmle.label | ...::var(...) | | main.rs:4:20:4:40 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | | main.rs:4:20:4:66 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | | main.rs:5:9:5:13 | regex | semmle.label | regex | 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 182648d9caf6..6c2b7f7f578e 100644 --- a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected +++ b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected @@ -1,58 +1,53 @@ #select -| src/main.rs:11:5:11:22 | ...::read_to_string | src/main.rs:7:11:7:19 | file_name | src/main.rs:11:5:11:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:7:11:7:19 | file_name | user-provided value | -| src/main.rs:46:5:46:22 | ...::read_to_string | src/main.rs:38:11:38:19 | file_path | src/main.rs:46:5:46:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:38:11:38:19 | file_path | user-provided value | -| src/main.rs:71:5:71:22 | ...::read_to_string | src/main.rs:63:11:63:19 | file_path | src/main.rs:71:5:71:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:63:11:63:19 | file_path | user-provided value | -| src/main.rs:85:5:85:22 | ...::read_to_string | src/main.rs:76:11:76:19 | file_path | src/main.rs:85:5:85:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:76:11:76:19 | file_path | user-provided value | -| src/main.rs:99:5:99:22 | ...::read_to_string | src/main.rs:90:11:90:19 | file_path | src/main.rs:99:5:99:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:90:11:90:19 | file_path | user-provided value | -| src/main.rs:104:13:104:31 | ...::open | src/main.rs:103:17:103:30 | ...::args | src/main.rs:104:13:104:31 | ...::open | This path depends on a $@. | src/main.rs:103:17:103:30 | ...::args | user-provided value | -| src/main.rs:107:13:107:31 | ...::open | src/main.rs:103:17:103:30 | ...::args | src/main.rs:107:13:107:31 | ...::open | This path depends on a $@. | src/main.rs:103:17:103:30 | ...::args | user-provided value | -| src/main.rs:110:13:110:33 | ...::open | src/main.rs:103:17:103:30 | ...::args | src/main.rs:110:13:110:33 | ...::open | This path depends on a $@. | src/main.rs:103:17:103:30 | ...::args | user-provided value | -| src/main.rs:113:13:113:37 | ...::open | src/main.rs:103:17:103:30 | ...::args | src/main.rs:113:13:113:37 | ...::open | This path depends on a $@. | src/main.rs:103:17:103:30 | ...::args | user-provided value | -| src/main.rs:116:13:116:31 | ...::open | src/main.rs:103:17:103:30 | ...::args | src/main.rs:116:13:116:31 | ...::open | This path depends on a $@. | src/main.rs:103:17:103:30 | ...::args | user-provided value | -| src/main.rs:119:13:119:31 | ...::open | src/main.rs:103:17:103:30 | ...::args | src/main.rs:119:13:119:31 | ...::open | This path depends on a $@. | src/main.rs:103:17:103:30 | ...::args | user-provided value | -| src/main.rs:122:13:122:25 | ...::copy | src/main.rs:103:17:103:30 | ...::args | src/main.rs:122:13:122:25 | ...::copy | This path depends on a $@. | src/main.rs:103:17:103:30 | ...::args | user-provided value | -| src/main.rs:123:13:123:25 | ...::copy | src/main.rs:103:17:103:30 | ...::args | src/main.rs:123:13:123:25 | ...::copy | This path depends on a $@. | src/main.rs:103:17:103:30 | ...::args | user-provided value | -| src/main.rs:173:13:173:18 | exists | src/main.rs:185:17:185:30 | ...::args | src/main.rs:173:13:173:18 | exists | This path depends on a $@. | src/main.rs:185:17:185:30 | ...::args | user-provided value | -| src/main.rs:174:25:174:34 | ...::open | src/main.rs:185:17:185:30 | ...::args | src/main.rs:174:25:174:34 | ...::open | This path depends on a $@. | src/main.rs:185:17:185:30 | ...::args | user-provided value | -| src/main.rs:177:25:177:34 | ...::open | src/main.rs:185:17:185:30 | ...::args | src/main.rs:177:25:177:34 | ...::open | This path depends on a $@. | src/main.rs:185:17:185:30 | ...::args | user-provided value | +| src/main.rs:11:24:11:32 | file_path | src/main.rs:7:11:7:19 | file_name | src/main.rs:11:24:11:32 | file_path | This path depends on a $@. | src/main.rs:7:11:7:19 | file_name | user-provided value | +| src/main.rs:46:24:46:32 | file_path | src/main.rs:38:11:38:19 | file_path | src/main.rs:46:24:46:32 | file_path | This path depends on a $@. | src/main.rs:38:11:38:19 | file_path | user-provided value | +| src/main.rs:71:24:71:32 | file_path | src/main.rs:63:11:63:19 | file_path | src/main.rs:71:24:71:32 | file_path | This path depends on a $@. | src/main.rs:63:11:63:19 | file_path | user-provided value | +| src/main.rs:85:24:85:32 | file_path | src/main.rs:76:11:76:19 | file_path | src/main.rs:85:24:85:32 | file_path | This path depends on a $@. | src/main.rs:76:11:76:19 | file_path | user-provided value | +| src/main.rs:99:24:99:32 | file_path | src/main.rs:90:11:90:19 | file_path | src/main.rs:99:24:99:32 | file_path | This path depends on a $@. | src/main.rs:90:11:90:19 | file_path | user-provided value | +| src/main.rs:104:33:104:45 | path1.clone() | src/main.rs:103:17:103:32 | ...::args(...) | src/main.rs:104:33:104:45 | path1.clone() | This path depends on a $@. | src/main.rs:103:17:103:32 | ...::args(...) | user-provided value | +| src/main.rs:107:33:107:37 | path2 | src/main.rs:103:17:103:32 | ...::args(...) | src/main.rs:107:33:107:37 | path2 | This path depends on a $@. | src/main.rs:103:17:103:32 | ...::args(...) | user-provided value | +| src/main.rs:110:35:110:39 | path3 | src/main.rs:103:17:103:32 | ...::args(...) | src/main.rs:110:35:110:39 | path3 | This path depends on a $@. | src/main.rs:103:17:103:32 | ...::args(...) | user-provided value | +| src/main.rs:113:39:113:43 | path4 | src/main.rs:103:17:103:32 | ...::args(...) | src/main.rs:113:39:113:43 | path4 | This path depends on a $@. | src/main.rs:103:17:103:32 | ...::args(...) | user-provided value | +| src/main.rs:116:33:116:37 | path5 | src/main.rs:103:17:103:32 | ...::args(...) | src/main.rs:116:33:116:37 | path5 | This path depends on a $@. | src/main.rs:103:17:103:32 | ...::args(...) | user-provided value | +| src/main.rs:119:33:119:37 | path6 | src/main.rs:103:17:103:32 | ...::args(...) | src/main.rs:119:33:119:37 | path6 | This path depends on a $@. | src/main.rs:103:17:103:32 | ...::args(...) | user-provided value | +| src/main.rs:122:27:122:39 | path1.clone() | src/main.rs:103:17:103:32 | ...::args(...) | src/main.rs:122:27:122:39 | path1.clone() | This path depends on a $@. | src/main.rs:103:17:103:32 | ...::args(...) | user-provided value | +| src/main.rs:123:37:123:49 | path1.clone() | src/main.rs:103:17:103:32 | ...::args(...) | src/main.rs:123:37:123:49 | path1.clone() | This path depends on a $@. | src/main.rs:103:17:103:32 | ...::args(...) | user-provided value | +| src/main.rs:173:8:173:11 | path | src/main.rs:185:17:185:32 | ...::args(...) | src/main.rs:173:8:173:11 | path | This path depends on a $@. | src/main.rs:185:17:185:32 | ...::args(...) | user-provided value | +| src/main.rs:174:36:174:43 | path_str | src/main.rs:185:17:185:32 | ...::args(...) | src/main.rs:174:36:174:43 | path_str | This path depends on a $@. | src/main.rs:185:17:185:32 | ...::args(...) | user-provided value | +| src/main.rs:177:36:177:39 | path | src/main.rs:185:17:185:32 | ...::args(...) | src/main.rs:177:36:177:39 | path | This path depends on a $@. | src/main.rs:185:17:185:32 | ...::args(...) | user-provided value | edges | src/main.rs:7:11:7:19 | file_name | src/main.rs:9:35:9:43 | file_name | provenance | | -| src/main.rs:9:9:9:17 | file_path | src/main.rs:11:24:11:32 | file_path | provenance | | +| src/main.rs:9:9:9:17 | file_path | src/main.rs:11:24:11:32 | file_path | provenance | Sink:MaD:6 | | src/main.rs:9:21:9:44 | ...::from(...) | src/main.rs:9:9:9:17 | file_path | provenance | | | src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:14 | -| src/main.rs:11:24:11:32 | file_path | src/main.rs:11:5:11:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:38:11:38:19 | file_path | src/main.rs:41:52:41:60 | file_path | provenance | | -| src/main.rs:41:9:41:17 | file_path | src/main.rs:46:24:46:32 | file_path | provenance | | +| src/main.rs:41:9:41:17 | file_path | src/main.rs:46:24:46:32 | file_path | provenance | Sink:MaD:6 | | src/main.rs:41:21:41:62 | public_path.join(...) | src/main.rs:41:9:41:17 | file_path | provenance | | | src/main.rs:41:38:41:61 | ...::from(...) | src/main.rs:41:21:41:62 | public_path.join(...) | provenance | MaD:12 | | src/main.rs:41:52:41:60 | file_path | src/main.rs:41:38:41:61 | ...::from(...) | provenance | MaD:14 | -| src/main.rs:46:24:46:32 | file_path | src/main.rs:46:5:46:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:63:11:63:19 | file_path | src/main.rs:66:32:66:40 | file_path | provenance | | -| src/main.rs:66:9:66:17 | file_path [&ref] | src/main.rs:71:24:71:32 | file_path [&ref] | provenance | | +| src/main.rs:66:9:66:17 | file_path [&ref] | src/main.rs:71:24:71:32 | file_path | provenance | Sink:MaD:6 | | src/main.rs:66:21:66:41 | ...::new(...) [&ref] | src/main.rs:66:9:66:17 | file_path [&ref] | provenance | | | src/main.rs:66:31:66:40 | &file_path [&ref] | src/main.rs:66:21:66:41 | ...::new(...) [&ref] | provenance | MaD:13 | | src/main.rs:66:32:66:40 | file_path | src/main.rs:66:31:66:40 | &file_path [&ref] | provenance | | -| src/main.rs:71:24:71:32 | file_path [&ref] | src/main.rs:71:5:71:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:76:11:76:19 | file_path | src/main.rs:79:52:79:60 | file_path | provenance | | | src/main.rs:79:9:79:17 | file_path | src/main.rs:80:21:80:29 | file_path | provenance | | | src/main.rs:79:21:79:62 | public_path.join(...) | src/main.rs:79:9:79:17 | file_path | provenance | | | src/main.rs:79:38:79:61 | ...::from(...) | src/main.rs:79:21:79:62 | public_path.join(...) | provenance | MaD:12 | | src/main.rs:79:52:79:60 | file_path | src/main.rs:79:38:79:61 | ...::from(...) | provenance | MaD:14 | -| src/main.rs:80:9:80:17 | file_path | src/main.rs:85:24:85:32 | file_path | provenance | | +| src/main.rs:80:9:80:17 | file_path | src/main.rs:85:24:85:32 | file_path | provenance | Sink:MaD:6 | | src/main.rs:80:21:80:29 | file_path | src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | provenance | MaD:15 | | src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | src/main.rs:80:21:80:53 | ... .unwrap() | provenance | MaD:11 | | src/main.rs:80:21:80:53 | ... .unwrap() | src/main.rs:80:9:80:17 | file_path | provenance | | -| src/main.rs:85:24:85:32 | file_path | src/main.rs:85:5:85:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:90:11:90:19 | file_path | src/main.rs:93:32:93:40 | file_path | provenance | | | src/main.rs:93:9:93:17 | file_path [&ref] | src/main.rs:98:21:98:29 | file_path [&ref] | provenance | | | src/main.rs:93:21:93:41 | ...::new(...) [&ref] | src/main.rs:93:9:93:17 | file_path [&ref] | provenance | | | src/main.rs:93:31:93:40 | &file_path [&ref] | src/main.rs:93:21:93:41 | ...::new(...) [&ref] | provenance | MaD:13 | | src/main.rs:93:32:93:40 | file_path | src/main.rs:93:31:93:40 | &file_path [&ref] | provenance | | -| src/main.rs:98:9:98:17 | file_path | src/main.rs:99:24:99:32 | file_path | provenance | | +| src/main.rs:98:9:98:17 | file_path | src/main.rs:99:24:99:32 | file_path | provenance | Sink:MaD:6 | | src/main.rs:98:21:98:29 | file_path [&ref] | src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | provenance | Config | | src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | src/main.rs:98:21:98:53 | ... .unwrap() | provenance | MaD:11 | | src/main.rs:98:21:98:53 | ... .unwrap() | src/main.rs:98:9:98:17 | file_path | provenance | | -| src/main.rs:99:24:99:32 | file_path | src/main.rs:99:5:99:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:103:9:103:13 | path1 | src/main.rs:104:33:104:37 | path1 | provenance | | | src/main.rs:103:9:103:13 | path1 | src/main.rs:106:39:106:43 | path1 | provenance | | | src/main.rs:103:9:103:13 | path1 | src/main.rs:109:41:109:45 | path1 | provenance | | @@ -60,58 +55,50 @@ edges | src/main.rs:103:9:103:13 | path1 | src/main.rs:115:39:115:43 | path1 | provenance | | | src/main.rs:103:9:103:13 | path1 | src/main.rs:122:27:122:31 | path1 | provenance | | | src/main.rs:103:9:103:13 | path1 | src/main.rs:123:37:123:41 | path1 | provenance | | -| src/main.rs:103:17:103:30 | ...::args | src/main.rs:103:17:103:32 | ...::args(...) [element] | provenance | Src:MaD:7 | +| src/main.rs:103:17:103:32 | ...::args(...) | src/main.rs:103:17:103:32 | ...::args(...) [element] | provenance | Src:MaD:7 | | src/main.rs:103:17:103:32 | ...::args(...) [element] | src/main.rs:103:17:103:39 | ... .nth(...) [Some] | provenance | MaD:9 | | src/main.rs:103:17:103:39 | ... .nth(...) [Some] | src/main.rs:103:17:103:48 | ... .unwrap() | provenance | MaD:10 | | src/main.rs:103:17:103:48 | ... .unwrap() | src/main.rs:103:9:103:13 | path1 | provenance | | | src/main.rs:104:33:104:37 | path1 | src/main.rs:104:33:104:45 | path1.clone() | provenance | MaD:8 | -| src/main.rs:104:33:104:45 | path1.clone() | src/main.rs:104:13:104:31 | ...::open | provenance | MaD:2 Sink:MaD:2 | -| src/main.rs:106:9:106:13 | path2 | src/main.rs:107:33:107:37 | path2 | provenance | | +| src/main.rs:104:33:104:45 | path1.clone() | src/main.rs:104:33:104:45 | path1.clone() | provenance | Sink:MaD:2 | +| src/main.rs:106:9:106:13 | path2 | src/main.rs:107:33:107:37 | path2 | provenance | Sink:MaD:2 | | src/main.rs:106:17:106:52 | ...::canonicalize(...) [Ok] | src/main.rs:106:17:106:61 | ... .unwrap() | provenance | MaD:11 | | src/main.rs:106:17:106:61 | ... .unwrap() | src/main.rs:106:9:106:13 | path2 | provenance | | | src/main.rs:106:39:106:43 | path1 | src/main.rs:106:39:106:51 | path1.clone() | provenance | MaD:8 | | src/main.rs:106:39:106:51 | path1.clone() | src/main.rs:106:17:106:52 | ...::canonicalize(...) [Ok] | provenance | Config | -| src/main.rs:107:33:107:37 | path2 | src/main.rs:107:13:107:31 | ...::open | provenance | MaD:2 Sink:MaD:2 | -| src/main.rs:109:9:109:13 | path3 | src/main.rs:110:35:110:39 | path3 | provenance | | +| src/main.rs:109:9:109:13 | path3 | src/main.rs:110:35:110:39 | path3 | provenance | Sink:MaD:4 | | src/main.rs:109:17:109:54 | ...::canonicalize(...) [future, Ok] | src/main.rs:109:17:109:60 | await ... [Ok] | provenance | | | src/main.rs:109:17:109:60 | await ... [Ok] | src/main.rs:109:17:109:69 | ... .unwrap() | provenance | MaD:11 | | src/main.rs:109:17:109:69 | ... .unwrap() | src/main.rs:109:9:109:13 | path3 | provenance | | | src/main.rs:109:41:109:45 | path1 | src/main.rs:109:41:109:53 | path1.clone() | provenance | MaD:8 | | src/main.rs:109:41:109:53 | path1.clone() | src/main.rs:109:17:109:54 | ...::canonicalize(...) [future, Ok] | provenance | Config | -| src/main.rs:110:35:110:39 | path3 | src/main.rs:110:13:110:33 | ...::open | provenance | MaD:4 Sink:MaD:4 | -| src/main.rs:112:9:112:13 | path4 | src/main.rs:113:39:113:43 | path4 | provenance | | +| src/main.rs:112:9:112:13 | path4 | src/main.rs:113:39:113:43 | path4 | provenance | Sink:MaD:1 | | src/main.rs:112:17:112:58 | ...::canonicalize(...) [future, Ok] | src/main.rs:112:17:112:64 | await ... [Ok] | provenance | | | src/main.rs:112:17:112:64 | await ... [Ok] | src/main.rs:112:17:112:73 | ... .unwrap() | provenance | MaD:11 | | src/main.rs:112:17:112:73 | ... .unwrap() | src/main.rs:112:9:112:13 | path4 | provenance | | | src/main.rs:112:45:112:49 | path1 | src/main.rs:112:45:112:57 | path1.clone() | provenance | MaD:8 | | src/main.rs:112:45:112:57 | path1.clone() | src/main.rs:112:17:112:58 | ...::canonicalize(...) [future, Ok] | provenance | Config | -| src/main.rs:113:39:113:43 | path4 | src/main.rs:113:13:113:37 | ...::open | provenance | MaD:1 Sink:MaD:1 | -| src/main.rs:115:9:115:13 | path5 [&ref] | src/main.rs:116:33:116:37 | path5 [&ref] | provenance | | +| src/main.rs:115:9:115:13 | path5 [&ref] | src/main.rs:116:33:116:37 | path5 | provenance | Sink:MaD:2 | +| src/main.rs:115:9:115:13 | path5 [&ref] | src/main.rs:118:17:118:21 | path5 [&ref] | provenance | | | src/main.rs:115:17:115:44 | ...::new(...) [&ref] | src/main.rs:115:9:115:13 | path5 [&ref] | provenance | | | src/main.rs:115:38:115:43 | &path1 [&ref] | src/main.rs:115:17:115:44 | ...::new(...) [&ref] | provenance | MaD:13 | | src/main.rs:115:39:115:43 | path1 | src/main.rs:115:38:115:43 | &path1 [&ref] | provenance | | -| src/main.rs:116:33:116:37 | path5 [&ref] | src/main.rs:116:13:116:31 | ...::open | provenance | MaD:2 Sink:MaD:2 | -| src/main.rs:116:33:116:37 | path5 [&ref] | src/main.rs:118:17:118:21 | path5 [&ref] | provenance | | -| src/main.rs:118:9:118:13 | path6 | src/main.rs:119:33:119:37 | path6 | provenance | | +| src/main.rs:118:9:118:13 | path6 | src/main.rs:119:33:119:37 | path6 | provenance | Sink:MaD:2 | | src/main.rs:118:17:118:21 | path5 [&ref] | src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | provenance | Config | | src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | src/main.rs:118:17:118:45 | ... .unwrap() | provenance | MaD:11 | | src/main.rs:118:17:118:45 | ... .unwrap() | src/main.rs:118:9:118:13 | path6 | provenance | | -| src/main.rs:119:33:119:37 | path6 | src/main.rs:119:13:119:31 | ...::open | provenance | MaD:2 Sink:MaD:2 | | src/main.rs:122:27:122:31 | path1 | src/main.rs:122:27:122:39 | path1.clone() | provenance | MaD:8 | -| src/main.rs:122:27:122:39 | path1.clone() | src/main.rs:122:13:122:25 | ...::copy | provenance | MaD:5 Sink:MaD:5 | +| src/main.rs:122:27:122:39 | path1.clone() | src/main.rs:122:27:122:39 | path1.clone() | provenance | Sink:MaD:5 | | src/main.rs:123:37:123:41 | path1 | src/main.rs:123:37:123:49 | path1.clone() | provenance | MaD:8 | -| src/main.rs:123:37:123:49 | path1.clone() | src/main.rs:123:13:123:25 | ...::copy | provenance | MaD:5 Sink:MaD:5 | +| src/main.rs:123:37:123:49 | path1.clone() | src/main.rs:123:37:123:49 | path1.clone() | provenance | Sink:MaD:5 | | src/main.rs:170:16:170:29 | ...: ... [&ref] | src/main.rs:172:26:172:33 | path_str [&ref] | provenance | | -| src/main.rs:170:16:170:29 | ...: ... [&ref] | src/main.rs:174:36:174:43 | path_str [&ref] | provenance | | -| src/main.rs:172:9:172:12 | path [&ref] | src/main.rs:173:8:173:11 | path [&ref] | provenance | | +| src/main.rs:170:16:170:29 | ...: ... [&ref] | src/main.rs:174:36:174:43 | path_str | provenance | Sink:MaD:2 | +| src/main.rs:172:9:172:12 | path [&ref] | src/main.rs:173:8:173:11 | path | provenance | Sink:MaD:3 | +| src/main.rs:172:9:172:12 | path [&ref] | src/main.rs:177:36:177:39 | path | provenance | Sink:MaD:2 | | src/main.rs:172:16:172:34 | ...::new(...) [&ref] | src/main.rs:172:9:172:12 | path [&ref] | provenance | | | src/main.rs:172:26:172:33 | path_str [&ref] | src/main.rs:172:16:172:34 | ...::new(...) [&ref] | provenance | MaD:13 | -| src/main.rs:173:8:173:11 | path [&ref] | src/main.rs:173:13:173:18 | exists | provenance | MaD:3 Sink:MaD:3 | -| src/main.rs:173:8:173:11 | path [&ref] | src/main.rs:177:36:177:39 | path [&ref] | provenance | | -| src/main.rs:174:36:174:43 | path_str [&ref] | src/main.rs:174:25:174:34 | ...::open | provenance | MaD:2 Sink:MaD:2 | -| src/main.rs:177:36:177:39 | path [&ref] | src/main.rs:177:25:177:34 | ...::open | provenance | MaD:2 Sink:MaD:2 | | src/main.rs:185:9:185:13 | path1 | src/main.rs:186:18:186:22 | path1 | provenance | | -| src/main.rs:185:17:185:30 | ...::args | src/main.rs:185:17:185:32 | ...::args(...) [element] | provenance | Src:MaD:7 | +| src/main.rs:185:17:185:32 | ...::args(...) | src/main.rs:185:17:185:32 | ...::args(...) [element] | provenance | Src:MaD:7 | | src/main.rs:185:17:185:32 | ...::args(...) [element] | src/main.rs:185:17:185:39 | ... .nth(...) [Some] | provenance | MaD:9 | | src/main.rs:185:17:185:39 | ... .nth(...) [Some] | src/main.rs:185:17:185:48 | ... .unwrap() | provenance | MaD:10 | | src/main.rs:185:17:185:48 | ... .unwrap() | src/main.rs:185:9:185:13 | path1 | provenance | | @@ -138,22 +125,19 @@ nodes | src/main.rs:9:9:9:17 | file_path | semmle.label | file_path | | src/main.rs:9:21:9:44 | ...::from(...) | semmle.label | ...::from(...) | | src/main.rs:9:35:9:43 | file_name | semmle.label | file_name | -| src/main.rs:11:5:11:22 | ...::read_to_string | semmle.label | ...::read_to_string | | src/main.rs:11:24:11:32 | file_path | semmle.label | file_path | | src/main.rs:38:11:38:19 | file_path | semmle.label | file_path | | src/main.rs:41:9:41:17 | file_path | semmle.label | file_path | | src/main.rs:41:21:41:62 | public_path.join(...) | semmle.label | public_path.join(...) | | src/main.rs:41:38:41:61 | ...::from(...) | semmle.label | ...::from(...) | | src/main.rs:41:52:41:60 | file_path | semmle.label | file_path | -| src/main.rs:46:5:46:22 | ...::read_to_string | semmle.label | ...::read_to_string | | src/main.rs:46:24:46:32 | file_path | semmle.label | file_path | | src/main.rs:63:11:63:19 | file_path | semmle.label | file_path | | src/main.rs:66:9:66:17 | file_path [&ref] | semmle.label | file_path [&ref] | | src/main.rs:66:21:66:41 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | | src/main.rs:66:31:66:40 | &file_path [&ref] | semmle.label | &file_path [&ref] | | src/main.rs:66:32:66:40 | file_path | semmle.label | file_path | -| src/main.rs:71:5:71:22 | ...::read_to_string | semmle.label | ...::read_to_string | -| src/main.rs:71:24:71:32 | file_path [&ref] | semmle.label | file_path [&ref] | +| src/main.rs:71:24:71:32 | file_path | semmle.label | file_path | | src/main.rs:76:11:76:19 | file_path | semmle.label | file_path | | src/main.rs:79:9:79:17 | file_path | semmle.label | file_path | | src/main.rs:79:21:79:62 | public_path.join(...) | semmle.label | public_path.join(...) | @@ -163,7 +147,6 @@ nodes | src/main.rs:80:21:80:29 | file_path | semmle.label | file_path | | src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | semmle.label | file_path.canonicalize() [Ok] | | src/main.rs:80:21:80:53 | ... .unwrap() | semmle.label | ... .unwrap() | -| src/main.rs:85:5:85:22 | ...::read_to_string | semmle.label | ...::read_to_string | | src/main.rs:85:24:85:32 | file_path | semmle.label | file_path | | src/main.rs:90:11:90:19 | file_path | semmle.label | file_path | | src/main.rs:93:9:93:17 | file_path [&ref] | semmle.label | file_path [&ref] | @@ -174,22 +157,20 @@ nodes | src/main.rs:98:21:98:29 | file_path [&ref] | semmle.label | file_path [&ref] | | src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | semmle.label | file_path.canonicalize() [Ok] | | src/main.rs:98:21:98:53 | ... .unwrap() | semmle.label | ... .unwrap() | -| src/main.rs:99:5:99:22 | ...::read_to_string | semmle.label | ...::read_to_string | | src/main.rs:99:24:99:32 | file_path | semmle.label | file_path | | src/main.rs:103:9:103:13 | path1 | semmle.label | path1 | -| src/main.rs:103:17:103:30 | ...::args | semmle.label | ...::args | +| src/main.rs:103:17:103:32 | ...::args(...) | semmle.label | ...::args(...) | | src/main.rs:103:17:103:32 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | | src/main.rs:103:17:103:39 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | | src/main.rs:103:17:103:48 | ... .unwrap() | semmle.label | ... .unwrap() | -| src/main.rs:104:13:104:31 | ...::open | semmle.label | ...::open | | src/main.rs:104:33:104:37 | path1 | semmle.label | path1 | | src/main.rs:104:33:104:45 | path1.clone() | semmle.label | path1.clone() | +| src/main.rs:104:33:104:45 | path1.clone() | semmle.label | path1.clone() | | src/main.rs:106:9:106:13 | path2 | semmle.label | path2 | | src/main.rs:106:17:106:52 | ...::canonicalize(...) [Ok] | semmle.label | ...::canonicalize(...) [Ok] | | src/main.rs:106:17:106:61 | ... .unwrap() | semmle.label | ... .unwrap() | | src/main.rs:106:39:106:43 | path1 | semmle.label | path1 | | src/main.rs:106:39:106:51 | path1.clone() | semmle.label | path1.clone() | -| src/main.rs:107:13:107:31 | ...::open | semmle.label | ...::open | | src/main.rs:107:33:107:37 | path2 | semmle.label | path2 | | src/main.rs:109:9:109:13 | path3 | semmle.label | path3 | | src/main.rs:109:17:109:54 | ...::canonicalize(...) [future, Ok] | semmle.label | ...::canonicalize(...) [future, Ok] | @@ -197,7 +178,6 @@ nodes | src/main.rs:109:17:109:69 | ... .unwrap() | semmle.label | ... .unwrap() | | src/main.rs:109:41:109:45 | path1 | semmle.label | path1 | | src/main.rs:109:41:109:53 | path1.clone() | semmle.label | path1.clone() | -| src/main.rs:110:13:110:33 | ...::open | semmle.label | ...::open | | src/main.rs:110:35:110:39 | path3 | semmle.label | path3 | | src/main.rs:112:9:112:13 | path4 | semmle.label | path4 | | src/main.rs:112:17:112:58 | ...::canonicalize(...) [future, Ok] | semmle.label | ...::canonicalize(...) [future, Ok] | @@ -205,38 +185,32 @@ nodes | src/main.rs:112:17:112:73 | ... .unwrap() | semmle.label | ... .unwrap() | | src/main.rs:112:45:112:49 | path1 | semmle.label | path1 | | src/main.rs:112:45:112:57 | path1.clone() | semmle.label | path1.clone() | -| src/main.rs:113:13:113:37 | ...::open | semmle.label | ...::open | | src/main.rs:113:39:113:43 | path4 | semmle.label | path4 | | src/main.rs:115:9:115:13 | path5 [&ref] | semmle.label | path5 [&ref] | | src/main.rs:115:17:115:44 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | | src/main.rs:115:38:115:43 | &path1 [&ref] | semmle.label | &path1 [&ref] | | src/main.rs:115:39:115:43 | path1 | semmle.label | path1 | -| src/main.rs:116:13:116:31 | ...::open | semmle.label | ...::open | -| src/main.rs:116:33:116:37 | path5 [&ref] | semmle.label | path5 [&ref] | +| src/main.rs:116:33:116:37 | path5 | semmle.label | path5 | | src/main.rs:118:9:118:13 | path6 | semmle.label | path6 | | src/main.rs:118:17:118:21 | path5 [&ref] | semmle.label | path5 [&ref] | | src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | semmle.label | path5.canonicalize() [Ok] | | src/main.rs:118:17:118:45 | ... .unwrap() | semmle.label | ... .unwrap() | -| src/main.rs:119:13:119:31 | ...::open | semmle.label | ...::open | | src/main.rs:119:33:119:37 | path6 | semmle.label | path6 | -| src/main.rs:122:13:122:25 | ...::copy | semmle.label | ...::copy | | src/main.rs:122:27:122:31 | path1 | semmle.label | path1 | | src/main.rs:122:27:122:39 | path1.clone() | semmle.label | path1.clone() | -| src/main.rs:123:13:123:25 | ...::copy | semmle.label | ...::copy | +| src/main.rs:122:27:122:39 | path1.clone() | semmle.label | path1.clone() | | src/main.rs:123:37:123:41 | path1 | semmle.label | path1 | | src/main.rs:123:37:123:49 | path1.clone() | semmle.label | path1.clone() | +| src/main.rs:123:37:123:49 | path1.clone() | semmle.label | path1.clone() | | src/main.rs:170:16:170:29 | ...: ... [&ref] | semmle.label | ...: ... [&ref] | | src/main.rs:172:9:172:12 | path [&ref] | semmle.label | path [&ref] | | src/main.rs:172:16:172:34 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | | src/main.rs:172:26:172:33 | path_str [&ref] | semmle.label | path_str [&ref] | -| src/main.rs:173:8:173:11 | path [&ref] | semmle.label | path [&ref] | -| src/main.rs:173:13:173:18 | exists | semmle.label | exists | -| src/main.rs:174:25:174:34 | ...::open | semmle.label | ...::open | -| src/main.rs:174:36:174:43 | path_str [&ref] | semmle.label | path_str [&ref] | -| src/main.rs:177:25:177:34 | ...::open | semmle.label | ...::open | -| src/main.rs:177:36:177:39 | path [&ref] | semmle.label | path [&ref] | +| src/main.rs:173:8:173:11 | path | semmle.label | path | +| src/main.rs:174:36:174:43 | path_str | semmle.label | path_str | +| src/main.rs:177:36:177:39 | path | semmle.label | path | | src/main.rs:185:9:185:13 | path1 | semmle.label | path1 | -| src/main.rs:185:17:185:30 | ...::args | semmle.label | ...::args | +| src/main.rs:185:17:185:32 | ...::args(...) | semmle.label | ...::args(...) | | src/main.rs:185:17:185:32 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | | src/main.rs:185:17:185:39 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | | src/main.rs:185:17:185:48 | ... .unwrap() | semmle.label | ... .unwrap() | diff --git a/rust/ql/test/query-tests/security/CWE-079/actix/XSS.expected b/rust/ql/test/query-tests/security/CWE-079/actix/XSS.expected index c388b6d58f09..2e738540c6ee 100644 --- a/rust/ql/test/query-tests/security/CWE-079/actix/XSS.expected +++ b/rust/ql/test/query-tests/security/CWE-079/actix/XSS.expected @@ -1,17 +1,15 @@ #select -| main.rs:25:5:25:13 | ...::new | main.rs:8:3:8:17 | to | main.rs:25:5:25:13 | ...::new | Cross-site scripting vulnerability due to a $@. | main.rs:8:3:8:17 | to | user-provided value | +| main.rs:25:15:25:18 | html | main.rs:9:10:9:27 | vulnerable_handler | main.rs:25:15:25:18 | html | Cross-site scripting vulnerability due to a $@. | main.rs:9:10:9:27 | vulnerable_handler | user-provided value | edges -| main.rs:8:3:8:17 | to | main.rs:9:29:9:51 | ...: ...::Path::<...> | provenance | Src:MaD:2 | -| main.rs:9:29:9:51 | ...: ...::Path::<...> | main.rs:10:22:10:25 | path | provenance | | +| main.rs:9:10:9:27 | vulnerable_handler | main.rs:10:22:10:25 | path | provenance | Src:MaD:2 | | main.rs:10:9:10:18 | user_input | main.rs:13:9:22:18 | MacroExpr | provenance | | | main.rs:10:22:10:25 | path | main.rs:10:22:10:38 | path.into_inner() | provenance | MaD:3 | | main.rs:10:22:10:38 | path.into_inner() | main.rs:10:9:10:18 | user_input | provenance | | -| main.rs:12:9:12:12 | html | main.rs:25:15:25:18 | html | provenance | | +| main.rs:12:9:12:12 | html | main.rs:25:15:25:18 | html | provenance | Sink:MaD:1 | | main.rs:13:9:22:18 | ...::format(...) | main.rs:13:9:22:18 | { ... } | provenance | | | main.rs:13:9:22:18 | ...::must_use(...) | main.rs:12:9:12:12 | html | provenance | | | main.rs:13:9:22:18 | MacroExpr | main.rs:13:9:22:18 | ...::format(...) | provenance | MaD:4 | | main.rs:13:9:22:18 | { ... } | main.rs:13:9:22:18 | ...::must_use(...) | provenance | MaD:5 | -| main.rs:25:15:25:18 | html | main.rs:25:5:25:13 | ...::new | provenance | MaD:1 Sink:MaD:1 | models | 1 | Sink: ::new; Argument[0]; html-injection | | 2 | Source: ::to; Argument[0].Parameter[0..7]; remote | @@ -19,8 +17,7 @@ models | 4 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | | 5 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes -| main.rs:8:3:8:17 | to | semmle.label | to | -| main.rs:9:29:9:51 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | +| main.rs:9:10:9:27 | vulnerable_handler | semmle.label | vulnerable_handler | | main.rs:10:9:10:18 | user_input | semmle.label | user_input | | main.rs:10:22:10:25 | path | semmle.label | path | | main.rs:10:22:10:38 | path.into_inner() | semmle.label | path.into_inner() | @@ -29,6 +26,5 @@ nodes | main.rs:13:9:22:18 | ...::must_use(...) | semmle.label | ...::must_use(...) | | main.rs:13:9:22:18 | MacroExpr | semmle.label | MacroExpr | | main.rs:13:9:22:18 | { ... } | semmle.label | { ... } | -| main.rs:25:5:25:13 | ...::new | semmle.label | ...::new | | main.rs:25:15:25:18 | html | semmle.label | html | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-079/actix/main.rs b/rust/ql/test/query-tests/security/CWE-079/actix/main.rs index 42cd760ca6cb..9a0cb5def4e2 100644 --- a/rust/ql/test/query-tests/security/CWE-079/actix/main.rs +++ b/rust/ql/test/query-tests/security/CWE-079/actix/main.rs @@ -5,8 +5,8 @@ use actix_web::{ }; // The "bad" example from the qldoc -#[get("/bad/{a}")] // $ Source=a -async fn vulnerable_handler(path: web::Path) -> impl Responder { +#[get("/bad/{a}")] +async fn vulnerable_handler(path: web::Path) -> impl Responder { // $ Source=a let user_input = path.into_inner(); let html = format!( diff --git a/rust/ql/test/query-tests/security/CWE-079/axum/XSS.expected b/rust/ql/test/query-tests/security/CWE-079/axum/XSS.expected index 385ce0f58c48..1a7b911e5ad5 100644 --- a/rust/ql/test/query-tests/security/CWE-079/axum/XSS.expected +++ b/rust/ql/test/query-tests/security/CWE-079/axum/XSS.expected @@ -1,24 +1,22 @@ #select -| main.rs:10:10:10:21 | html_content | main.rs:15:51:15:53 | get | main.rs:10:10:10:21 | html_content | Cross-site scripting vulnerability due to a $@. | main.rs:15:51:15:53 | get | user-provided value | +| main.rs:10:10:10:21 | html_content | main.rs:15:55:15:67 | greet_handler | main.rs:10:10:10:21 | html_content | Cross-site scripting vulnerability due to a $@. | main.rs:15:55:15:67 | greet_handler | user-provided value | edges -| main.rs:8:24:8:59 | ...: Query::<...> | main.rs:9:32:9:63 | MacroExpr | provenance | | | main.rs:9:9:9:20 | html_content | main.rs:10:10:10:21 | html_content | provenance | | | main.rs:9:32:9:63 | ...::format(...) | main.rs:9:32:9:63 | { ... } | provenance | | | main.rs:9:32:9:63 | ...::must_use(...) | main.rs:9:9:9:20 | html_content | provenance | | | main.rs:9:32:9:63 | MacroExpr | main.rs:9:32:9:63 | ...::format(...) | provenance | MaD:2 | | main.rs:9:32:9:63 | { ... } | main.rs:9:32:9:63 | ...::must_use(...) | provenance | MaD:3 | -| main.rs:15:51:15:53 | get | main.rs:8:24:8:59 | ...: Query::<...> | provenance | Src:MaD:1 | +| main.rs:15:55:15:67 | greet_handler | main.rs:9:32:9:63 | MacroExpr | provenance | Src:MaD:1 | models | 1 | Source: axum::routing::method_routing::get; Argument[0].Parameter[0..7]; remote | | 2 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | | 3 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes -| main.rs:8:24:8:59 | ...: Query::<...> | semmle.label | ...: Query::<...> | | main.rs:9:9:9:20 | html_content | semmle.label | html_content | | main.rs:9:32:9:63 | ...::format(...) | semmle.label | ...::format(...) | | main.rs:9:32:9:63 | ...::must_use(...) | semmle.label | ...::must_use(...) | | main.rs:9:32:9:63 | MacroExpr | semmle.label | MacroExpr | | main.rs:9:32:9:63 | { ... } | semmle.label | { ... } | | main.rs:10:10:10:21 | html_content | semmle.label | html_content | -| main.rs:15:51:15:53 | get | semmle.label | get | +| main.rs:15:55:15:67 | greet_handler | semmle.label | greet_handler | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-079/warp/XSS.expected b/rust/ql/test/query-tests/security/CWE-079/warp/XSS.expected index 8a366d3b0d54..e4123b511ef4 100644 --- a/rust/ql/test/query-tests/security/CWE-079/warp/XSS.expected +++ b/rust/ql/test/query-tests/security/CWE-079/warp/XSS.expected @@ -1,27 +1,23 @@ #select -| main.rs:10:13:10:29 | ...::html | main.rs:7:10:7:12 | map | main.rs:10:13:10:29 | ...::html | Cross-site scripting vulnerability due to a $@. | main.rs:7:10:7:12 | map | user-provided value | +| main.rs:10:31:10:34 | body | main.rs:7:14:11:9 | \|...\| ... | main.rs:10:31:10:34 | body | Cross-site scripting vulnerability due to a $@. | main.rs:7:14:11:9 | \|...\| ... | user-provided value | edges -| main.rs:7:10:7:12 | map | main.rs:7:15:7:26 | ...: String | provenance | Src:MaD:2 | -| main.rs:7:15:7:26 | ...: String | main.rs:9:32:9:56 | MacroExpr | provenance | | -| main.rs:9:17:9:20 | body | main.rs:10:31:10:34 | body | provenance | | +| main.rs:7:14:11:9 | \|...\| ... | main.rs:9:32:9:56 | MacroExpr | provenance | Src:MaD:2 | +| main.rs:9:17:9:20 | body | main.rs:10:31:10:34 | body | provenance | Sink:MaD:1 | | main.rs:9:32:9:56 | ...::format(...) | main.rs:9:32:9:56 | { ... } | provenance | | | main.rs:9:32:9:56 | ...::must_use(...) | main.rs:9:17:9:20 | body | provenance | | | main.rs:9:32:9:56 | MacroExpr | main.rs:9:32:9:56 | ...::format(...) | provenance | MaD:3 | | main.rs:9:32:9:56 | { ... } | main.rs:9:32:9:56 | ...::must_use(...) | provenance | MaD:4 | -| main.rs:10:31:10:34 | body | main.rs:10:13:10:29 | ...::html | provenance | MaD:1 Sink:MaD:1 | models | 1 | Sink: warp::reply::html; Argument[0]; html-injection | | 2 | Source: <_ as warp::filter::Filter>::map; 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 -| main.rs:7:10:7:12 | map | semmle.label | map | -| main.rs:7:15:7:26 | ...: String | semmle.label | ...: String | +| main.rs:7:14:11:9 | \|...\| ... | semmle.label | \|...\| ... | | main.rs:9:17:9:20 | body | semmle.label | body | | main.rs:9:32:9:56 | ...::format(...) | semmle.label | ...::format(...) | | main.rs:9:32:9:56 | ...::must_use(...) | semmle.label | ...::must_use(...) | | main.rs:9:32:9:56 | MacroExpr | semmle.label | MacroExpr | | main.rs:9:32:9:56 | { ... } | semmle.label | { ... } | -| main.rs:10:13:10:29 | ...::html | semmle.label | ...::html | | main.rs:10:31:10:34 | body | semmle.label | body | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-079/warp/main.rs b/rust/ql/test/query-tests/security/CWE-079/warp/main.rs index fb300f4cdd42..c40e14f39a92 100644 --- a/rust/ql/test/query-tests/security/CWE-079/warp/main.rs +++ b/rust/ql/test/query-tests/security/CWE-079/warp/main.rs @@ -4,11 +4,11 @@ use warp::Filter; pub async fn main() { let hello = warp::path("greet") .and(warp::path::param()) - .map(|name: String| { // $ Source=name + .map(|name: String| { // Vulnerable to XSS because it directly includes user input in the response let body = format!("

Hello, {name}!

"); warp::reply::html(body) // $ Alert[rust/xss]=name - }); + }); // $ Source=name // Start the web server on port 3000 warp::serve(hello).run(([127, 0, 0, 1], 3000)).await; diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index 570340060556..a53c7483791f 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -1,40 +1,40 @@ #select -| mysql.rs:25:32:25:36 | query | mysql.rs:12:33:12:54 | ...::get | mysql.rs:25:32:25:36 | query | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:26:54:26:62 | query_opt | mysql.rs:12:33:12:54 | ...::get | mysql.rs:26:54:26:62 | query_opt | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:27:14:27:23 | query_drop | mysql.rs:12:33:12:54 | ...::get | mysql.rs:27:14:27:23 | query_drop | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:28:27:28:37 | query_first | mysql.rs:12:33:12:54 | ...::get | mysql.rs:28:27:28:37 | query_first | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:29:49:29:63 | query_first_opt | mysql.rs:12:33:12:54 | ...::get | mysql.rs:29:49:29:63 | query_first_opt | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:30:22:30:31 | query_fold | mysql.rs:12:33:12:54 | ...::get | mysql.rs:30:22:30:31 | query_fold | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:31:22:31:35 | query_fold_opt | mysql.rs:12:33:12:54 | ...::get | mysql.rs:31:22:31:35 | query_fold_opt | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:36:22:36:31 | query_iter | mysql.rs:12:33:12:54 | ...::get | mysql.rs:36:22:36:31 | query_iter | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:37:22:37:30 | query_map | mysql.rs:12:33:12:54 | ...::get | mysql.rs:37:22:37:30 | query_map | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:38:22:38:34 | query_map_opt | mysql.rs:12:33:12:54 | ...::get | mysql.rs:38:22:38:34 | query_map_opt | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:42:33:42:37 | query | mysql.rs:12:33:12:54 | ...::get | mysql.rs:42:33:42:37 | query | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:75:26:75:29 | prep | mysql.rs:12:33:12:54 | ...::get | mysql.rs:75:26:75:29 | prep | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:80:15:80:24 | query_drop | mysql.rs:12:33:12:54 | ...::get | mysql.rs:80:15:80:24 | query_drop | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:110:32:110:36 | query | mysql.rs:97:33:97:54 | ...::get | mysql.rs:110:32:110:36 | query | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | -| mysql.rs:111:14:111:23 | query_drop | mysql.rs:97:33:97:54 | ...::get | mysql.rs:111:14:111:23 | query_drop | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | -| mysql.rs:112:35:112:45 | query_first | mysql.rs:97:33:97:54 | ...::get | mysql.rs:112:35:112:45 | query_first | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | -| mysql.rs:114:14:114:23 | query_fold | mysql.rs:97:33:97:54 | ...::get | mysql.rs:114:14:114:23 | query_fold | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | -| mysql.rs:116:22:116:31 | query_iter | mysql.rs:97:33:97:54 | ...::get | mysql.rs:116:22:116:31 | query_iter | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | -| mysql.rs:118:14:118:25 | query_stream | mysql.rs:97:33:97:54 | ...::get | mysql.rs:118:14:118:25 | query_stream | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | -| mysql.rs:121:14:121:22 | query_map | mysql.rs:97:33:97:54 | ...::get | mysql.rs:121:14:121:22 | query_map | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | -| mysql.rs:149:26:149:29 | prep | mysql.rs:97:33:97:54 | ...::get | mysql.rs:149:26:149:29 | prep | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | -| mysql.rs:154:15:154:24 | query_drop | mysql.rs:97:33:97:54 | ...::get | mysql.rs:154:15:154:24 | query_drop | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | -| sqlx.rs:78:13:78:23 | ...::query | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:78:13:78:23 | ...::query | This query depends on a $@. | sqlx.rs:47:22:47:35 | ...::args | user-provided value | -| sqlx.rs:80:17:80:27 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:80:17:80:27 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | -| sqlx.rs:81:17:81:27 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:81:17:81:27 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | -| sqlx.rs:82:17:82:27 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:82:17:82:27 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | -| sqlx.rs:113:17:113:29 | ...::raw_sql | sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:113:17:113:29 | ...::raw_sql | This query depends on a $@. | sqlx.rs:100:25:100:46 | ...::get | user-provided value | -| sqlx.rs:120:17:120:27 | ...::query | sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:120:17:120:27 | ...::query | This query depends on a $@. | sqlx.rs:100:25:100:46 | ...::get | user-provided value | -| sqlx.rs:127:17:127:27 | ...::query | sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:127:17:127:27 | ...::query | This query depends on a $@. | sqlx.rs:100:25:100:46 | ...::get | user-provided value | -| sqlx.rs:136:40:136:53 | ...::query_as | sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:136:40:136:53 | ...::query_as | This query depends on a $@. | sqlx.rs:100:25:100:46 | ...::get | user-provided value | -| sqlx.rs:145:40:145:53 | ...::query_as | sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:145:40:145:53 | ...::query_as | This query depends on a $@. | sqlx.rs:100:25:100:46 | ...::get | user-provided value | -| sqlx.rs:153:17:153:27 | ...::query | sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:153:17:153:27 | ...::query | This query depends on a $@. | sqlx.rs:100:25:100:46 | ...::get | user-provided value | -| sqlx.rs:188:17:188:27 | ...::query | sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:188:17:188:27 | ...::query | This query depends on a $@. | sqlx.rs:173:25:173:46 | ...::get | user-provided value | +| mysql.rs:25:38:25:58 | unsafe_query.as_str() | mysql.rs:12:33:12:77 | ...::get(...) | mysql.rs:25:38:25:58 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:12:33:12:77 | ...::get(...) | user-provided value | +| mysql.rs:26:64:26:84 | unsafe_query.as_str() | mysql.rs:12:33:12:77 | ...::get(...) | mysql.rs:26:64:26:84 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:12:33:12:77 | ...::get(...) | user-provided value | +| mysql.rs:27:25:27:45 | unsafe_query.as_str() | mysql.rs:12:33:12:77 | ...::get(...) | mysql.rs:27:25:27:45 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:12:33:12:77 | ...::get(...) | user-provided value | +| mysql.rs:28:39:28:59 | unsafe_query.as_str() | mysql.rs:12:33:12:77 | ...::get(...) | mysql.rs:28:39:28:59 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:12:33:12:77 | ...::get(...) | user-provided value | +| mysql.rs:29:65:29:85 | unsafe_query.as_str() | mysql.rs:12:33:12:77 | ...::get(...) | mysql.rs:29:65:29:85 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:12:33:12:77 | ...::get(...) | user-provided value | +| mysql.rs:30:33:30:53 | unsafe_query.as_str() | mysql.rs:12:33:12:77 | ...::get(...) | mysql.rs:30:33:30:53 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:12:33:12:77 | ...::get(...) | user-provided value | +| mysql.rs:32:13:32:33 | unsafe_query.as_str() | mysql.rs:12:33:12:77 | ...::get(...) | mysql.rs:32:13:32:33 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:12:33:12:77 | ...::get(...) | user-provided value | +| mysql.rs:36:33:36:53 | unsafe_query.as_str() | mysql.rs:12:33:12:77 | ...::get(...) | mysql.rs:36:33:36:53 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:12:33:12:77 | ...::get(...) | user-provided value | +| mysql.rs:37:32:37:52 | unsafe_query.as_str() | mysql.rs:12:33:12:77 | ...::get(...) | mysql.rs:37:32:37:52 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:12:33:12:77 | ...::get(...) | user-provided value | +| mysql.rs:39:13:39:33 | unsafe_query.as_str() | mysql.rs:12:33:12:77 | ...::get(...) | mysql.rs:39:13:39:33 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:12:33:12:77 | ...::get(...) | user-provided value | +| mysql.rs:42:39:42:59 | unsafe_query.as_str() | mysql.rs:12:33:12:77 | ...::get(...) | mysql.rs:42:39:42:59 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:12:33:12:77 | ...::get(...) | user-provided value | +| mysql.rs:75:31:75:51 | unsafe_query.as_str() | mysql.rs:12:33:12:77 | ...::get(...) | mysql.rs:75:31:75:51 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:12:33:12:77 | ...::get(...) | user-provided value | +| mysql.rs:80:26:80:46 | unsafe_query.as_str() | mysql.rs:12:33:12:77 | ...::get(...) | mysql.rs:80:26:80:46 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:12:33:12:77 | ...::get(...) | user-provided value | +| mysql.rs:110:38:110:58 | unsafe_query.as_str() | mysql.rs:97:33:97:77 | ...::get(...) | mysql.rs:110:38:110:58 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:97:33:97:77 | ...::get(...) | user-provided value | +| mysql.rs:111:25:111:45 | unsafe_query.as_str() | mysql.rs:97:33:97:77 | ...::get(...) | mysql.rs:111:25:111:45 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:97:33:97:77 | ...::get(...) | user-provided value | +| mysql.rs:112:47:112:67 | unsafe_query.as_str() | mysql.rs:97:33:97:77 | ...::get(...) | mysql.rs:112:47:112:67 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:97:33:97:77 | ...::get(...) | user-provided value | +| mysql.rs:114:25:114:45 | unsafe_query.as_str() | mysql.rs:97:33:97:77 | ...::get(...) | mysql.rs:114:25:114:45 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:97:33:97:77 | ...::get(...) | user-provided value | +| mysql.rs:116:33:116:53 | unsafe_query.as_str() | mysql.rs:97:33:97:77 | ...::get(...) | mysql.rs:116:33:116:53 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:97:33:97:77 | ...::get(...) | user-provided value | +| mysql.rs:118:40:118:60 | unsafe_query.as_str() | mysql.rs:97:33:97:77 | ...::get(...) | mysql.rs:118:40:118:60 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:97:33:97:77 | ...::get(...) | user-provided value | +| mysql.rs:121:24:121:44 | unsafe_query.as_str() | mysql.rs:97:33:97:77 | ...::get(...) | mysql.rs:121:24:121:44 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:97:33:97:77 | ...::get(...) | user-provided value | +| mysql.rs:149:31:149:51 | unsafe_query.as_str() | mysql.rs:97:33:97:77 | ...::get(...) | mysql.rs:149:31:149:51 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:97:33:97:77 | ...::get(...) | user-provided value | +| mysql.rs:154:26:154:46 | unsafe_query.as_str() | mysql.rs:97:33:97:77 | ...::get(...) | mysql.rs:154:26:154:46 | unsafe_query.as_str() | This query depends on a $@. | mysql.rs:97:33:97:77 | ...::get(...) | user-provided value | +| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | sqlx.rs:47:22:47:37 | ...::args(...) | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | This query depends on a $@. | sqlx.rs:47:22:47:37 | ...::args(...) | user-provided value | +| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | sqlx.rs:48:25:48:69 | ...::get(...) | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:69 | ...::get(...) | user-provided value | +| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | sqlx.rs:48:25:48:69 | ...::get(...) | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:69 | ...::get(...) | user-provided value | +| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | sqlx.rs:48:25:48:69 | ...::get(...) | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:69 | ...::get(...) | user-provided value | +| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | sqlx.rs:100:25:100:69 | ...::get(...) | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | This query depends on a $@. | sqlx.rs:100:25:100:69 | ...::get(...) | user-provided value | +| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | sqlx.rs:100:25:100:69 | ...::get(...) | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | This query depends on a $@. | sqlx.rs:100:25:100:69 | ...::get(...) | user-provided value | +| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | sqlx.rs:100:25:100:69 | ...::get(...) | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | This query depends on a $@. | sqlx.rs:100:25:100:69 | ...::get(...) | user-provided value | +| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | sqlx.rs:100:25:100:69 | ...::get(...) | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | This query depends on a $@. | sqlx.rs:100:25:100:69 | ...::get(...) | user-provided value | +| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | sqlx.rs:100:25:100:69 | ...::get(...) | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | This query depends on a $@. | sqlx.rs:100:25:100:69 | ...::get(...) | user-provided value | +| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | sqlx.rs:100:25:100:69 | ...::get(...) | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | This query depends on a $@. | sqlx.rs:100:25:100:69 | ...::get(...) | user-provided value | +| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | sqlx.rs:173:25:173:69 | ...::get(...) | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | This query depends on a $@. | sqlx.rs:173:25:173:69 | ...::get(...) | user-provided value | edges | mysql.rs:12:13:12:29 | mut remote_string | mysql.rs:18:71:18:83 | remote_string | provenance | | -| mysql.rs:12:33:12:54 | ...::get | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| mysql.rs:12:33:12:77 | ...::get(...) | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | mysql.rs:12:33:13:21 | ... .unwrap() | provenance | MaD:30 | | mysql.rs:12:33:13:21 | ... .unwrap() | mysql.rs:12:33:14:19 | ... .text() [Ok] | provenance | MaD:32 | | mysql.rs:12:33:14:19 | ... .text() [Ok] | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | provenance | MaD:31 | @@ -57,33 +57,33 @@ edges | mysql.rs:18:70:18:83 | &remote_string [&ref] | mysql.rs:18:13:18:83 | ... + ... | provenance | MaD:26 | | mysql.rs:18:71:18:83 | remote_string | mysql.rs:18:70:18:83 | &remote_string [&ref] | provenance | | | mysql.rs:25:38:25:49 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | mysql.rs:25:32:25:36 | query | provenance | MaD:1 Sink:MaD:1 | +| mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | mysql.rs:25:38:25:58 | unsafe_query.as_str() | provenance | Sink:MaD:1 | | mysql.rs:26:64:26:75 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | mysql.rs:26:54:26:62 | query_opt | provenance | MaD:9 Sink:MaD:9 | +| mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | mysql.rs:26:64:26:84 | unsafe_query.as_str() | provenance | Sink:MaD:9 | | mysql.rs:27:25:27:36 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | mysql.rs:27:14:27:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | +| mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | mysql.rs:27:25:27:45 | unsafe_query.as_str() | provenance | Sink:MaD:2 | | mysql.rs:28:39:28:50 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | mysql.rs:28:27:28:37 | query_first | provenance | MaD:3 Sink:MaD:3 | +| mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | mysql.rs:28:39:28:59 | unsafe_query.as_str() | provenance | Sink:MaD:3 | | mysql.rs:29:65:29:76 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | mysql.rs:29:49:29:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | +| mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | mysql.rs:29:65:29:85 | unsafe_query.as_str() | provenance | Sink:MaD:4 | | mysql.rs:30:33:30:44 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | mysql.rs:30:22:30:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | +| mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | mysql.rs:30:33:30:53 | unsafe_query.as_str() | provenance | Sink:MaD:5 | | mysql.rs:32:13:32:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | mysql.rs:31:22:31:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | +| mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | mysql.rs:32:13:32:33 | unsafe_query.as_str() | provenance | Sink:MaD:6 | | mysql.rs:36:33:36:44 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | mysql.rs:36:22:36:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | +| mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | mysql.rs:36:33:36:53 | unsafe_query.as_str() | provenance | Sink:MaD:17 | | mysql.rs:37:32:37:43 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | mysql.rs:37:22:37:30 | query_map | provenance | MaD:7 Sink:MaD:7 | +| mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | mysql.rs:37:32:37:52 | unsafe_query.as_str() | provenance | Sink:MaD:7 | | mysql.rs:39:13:39:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | mysql.rs:38:22:38:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | +| mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | mysql.rs:39:13:39:33 | unsafe_query.as_str() | provenance | Sink:MaD:8 | | mysql.rs:42:39:42:50 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | mysql.rs:42:33:42:37 | query | provenance | MaD:1 Sink:MaD:1 | +| mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | mysql.rs:42:39:42:59 | unsafe_query.as_str() | provenance | Sink:MaD:1 | | mysql.rs:75:31:75:42 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | mysql.rs:75:26:75:29 | prep | provenance | MaD:16 Sink:MaD:16 | +| mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | mysql.rs:75:31:75:51 | unsafe_query.as_str() | provenance | Sink:MaD:16 | | mysql.rs:80:26:80:37 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | mysql.rs:80:15:80:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | +| mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | mysql.rs:80:26:80:46 | unsafe_query.as_str() | provenance | Sink:MaD:2 | | mysql.rs:97:13:97:29 | mut remote_string | mysql.rs:103:71:103:83 | remote_string | provenance | | -| mysql.rs:97:33:97:54 | ...::get | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| mysql.rs:97:33:97:77 | ...::get(...) | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | mysql.rs:97:33:98:21 | ... .unwrap() | provenance | MaD:30 | | mysql.rs:97:33:98:21 | ... .unwrap() | mysql.rs:97:33:99:19 | ... .text() [Ok] | provenance | MaD:32 | | mysql.rs:97:33:99:19 | ... .text() [Ok] | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | provenance | MaD:31 | @@ -102,32 +102,32 @@ edges | mysql.rs:103:70:103:83 | &remote_string [&ref] | mysql.rs:103:13:103:83 | ... + ... | provenance | MaD:26 | | mysql.rs:103:71:103:83 | remote_string | mysql.rs:103:70:103:83 | &remote_string [&ref] | provenance | | | mysql.rs:110:38:110:49 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | mysql.rs:110:32:110:36 | query | provenance | MaD:10 Sink:MaD:10 | +| mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | mysql.rs:110:38:110:58 | unsafe_query.as_str() | provenance | Sink:MaD:10 | | mysql.rs:111:25:111:36 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | mysql.rs:111:14:111:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | +| mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | mysql.rs:111:25:111:45 | unsafe_query.as_str() | provenance | Sink:MaD:11 | | mysql.rs:112:47:112:58 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | mysql.rs:112:35:112:45 | query_first | provenance | MaD:12 Sink:MaD:12 | +| mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | mysql.rs:112:47:112:67 | unsafe_query.as_str() | provenance | Sink:MaD:12 | | mysql.rs:114:25:114:36 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | mysql.rs:114:14:114:23 | query_fold | provenance | MaD:13 Sink:MaD:13 | +| mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | mysql.rs:114:25:114:45 | unsafe_query.as_str() | provenance | Sink:MaD:13 | | mysql.rs:116:33:116:44 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | mysql.rs:116:22:116:31 | query_iter | provenance | MaD:19 Sink:MaD:19 | +| mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | mysql.rs:116:33:116:53 | unsafe_query.as_str() | provenance | Sink:MaD:19 | | mysql.rs:118:40:118:51 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | mysql.rs:118:14:118:25 | query_stream | provenance | MaD:15 Sink:MaD:15 | +| mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | mysql.rs:118:40:118:60 | unsafe_query.as_str() | provenance | Sink:MaD:15 | | mysql.rs:121:24:121:35 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | mysql.rs:121:14:121:22 | query_map | provenance | MaD:14 Sink:MaD:14 | +| mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | mysql.rs:121:24:121:44 | unsafe_query.as_str() | provenance | Sink:MaD:14 | | mysql.rs:149:31:149:42 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | mysql.rs:149:26:149:29 | prep | provenance | MaD:18 Sink:MaD:18 | +| mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | mysql.rs:149:31:149:51 | unsafe_query.as_str() | provenance | Sink:MaD:18 | | mysql.rs:154:26:154:37 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | mysql.rs:154:15:154:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | +| mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | mysql.rs:154:26:154:46 | unsafe_query.as_str() | provenance | Sink:MaD:11 | | sqlx.rs:47:9:47:18 | arg_string | sqlx.rs:53:27:53:36 | arg_string | provenance | | -| sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:24 | +| sqlx.rs:47:22:47:37 | ...::args(...) | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:24 | | sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:25 | | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:29 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:55:84:55:96 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | -| sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| sqlx.rs:48:25:48:69 | ...::get(...) | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:30 | | sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:32 | | sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:31 | @@ -149,15 +149,15 @@ edges | sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:33 | | sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:34 | | sqlx.rs:78:25:78:38 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | -| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | provenance | Sink:MaD:20 | | sqlx.rs:80:29:80:42 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:28 | -| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | provenance | Sink:MaD:20 | | sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:28 | -| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | Sink:MaD:20 | | sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:28 | -| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | Sink:MaD:20 | | sqlx.rs:100:9:100:21 | remote_string | sqlx.rs:102:84:102:96 | remote_string | provenance | | -| sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| sqlx.rs:100:25:100:69 | ...::get(...) | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:30 | | sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:32 | | sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:31 | @@ -173,19 +173,19 @@ edges | sqlx.rs:102:83:102:96 | &remote_string [&ref] | sqlx.rs:102:26:102:96 | ... + ... | provenance | MaD:26 | | sqlx.rs:102:84:102:96 | remote_string | sqlx.rs:102:83:102:96 | &remote_string [&ref] | provenance | | | sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | -| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:22 Sink:MaD:22 | +| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | Sink:MaD:22 | | sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | -| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | Sink:MaD:20 | | sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | -| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | Sink:MaD:20 | | sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | -| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | +| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | Sink:MaD:21 | | sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | -| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | +| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | Sink:MaD:21 | | sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | -| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | Sink:MaD:20 | | sqlx.rs:173:9:173:21 | remote_string | sqlx.rs:175:84:175:96 | remote_string | provenance | | -| sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| sqlx.rs:173:25:173:69 | ...::get(...) | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:30 | | sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:32 | | sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:31 | @@ -196,7 +196,7 @@ edges | sqlx.rs:175:83:175:96 | &remote_string [&ref] | sqlx.rs:175:26:175:96 | ... + ... | provenance | MaD:26 | | sqlx.rs:175:84:175:96 | remote_string | sqlx.rs:175:83:175:96 | &remote_string [&ref] | provenance | | | sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | -| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | Sink:MaD:20 | models | 1 | Sink: <_ as mysql::conn::queryable::Queryable>::query; Argument[0]; sql-injection | | 2 | Sink: <_ as mysql::conn::queryable::Queryable>::query_drop; Argument[0]; sql-injection | @@ -234,7 +234,7 @@ models | 34 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | mysql.rs:12:13:12:29 | mut remote_string | semmle.label | mut remote_string | -| mysql.rs:12:33:12:54 | ...::get | semmle.label | ...::get | +| mysql.rs:12:33:12:77 | ...::get(...) | semmle.label | ...::get(...) | | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | | mysql.rs:12:33:13:21 | ... .unwrap() | semmle.label | ... .unwrap() | | mysql.rs:12:33:14:19 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | @@ -244,47 +244,47 @@ nodes | mysql.rs:18:13:18:89 | ... + ... | semmle.label | ... + ... | | mysql.rs:18:70:18:83 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | | mysql.rs:18:71:18:83 | remote_string | semmle.label | remote_string | -| mysql.rs:25:32:25:36 | query | semmle.label | query | | mysql.rs:25:38:25:49 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:25:38:25:58 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:26:54:26:62 | query_opt | semmle.label | query_opt | | mysql.rs:26:64:26:75 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:26:64:26:84 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:27:14:27:23 | query_drop | semmle.label | query_drop | | mysql.rs:27:25:27:36 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:27:25:27:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:28:27:28:37 | query_first | semmle.label | query_first | | mysql.rs:28:39:28:50 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:28:39:28:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:29:49:29:63 | query_first_opt | semmle.label | query_first_opt | | mysql.rs:29:65:29:76 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:29:65:29:85 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:30:22:30:31 | query_fold | semmle.label | query_fold | | mysql.rs:30:33:30:44 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:30:33:30:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:31:22:31:35 | query_fold_opt | semmle.label | query_fold_opt | | mysql.rs:32:13:32:24 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:32:13:32:33 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:36:22:36:31 | query_iter | semmle.label | query_iter | | mysql.rs:36:33:36:44 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:36:33:36:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:37:22:37:30 | query_map | semmle.label | query_map | | mysql.rs:37:32:37:43 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:37:32:37:52 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:38:22:38:34 | query_map_opt | semmle.label | query_map_opt | | mysql.rs:39:13:39:24 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:39:13:39:33 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:42:33:42:37 | query | semmle.label | query | | mysql.rs:42:39:42:50 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:42:39:42:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:75:26:75:29 | prep | semmle.label | prep | | mysql.rs:75:31:75:42 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:75:31:75:51 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:80:15:80:24 | query_drop | semmle.label | query_drop | | mysql.rs:80:26:80:37 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:80:26:80:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:97:13:97:29 | mut remote_string | semmle.label | mut remote_string | -| mysql.rs:97:33:97:54 | ...::get | semmle.label | ...::get | +| mysql.rs:97:33:97:77 | ...::get(...) | semmle.label | ...::get(...) | | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | | mysql.rs:97:33:98:21 | ... .unwrap() | semmle.label | ... .unwrap() | | mysql.rs:97:33:99:19 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | @@ -294,40 +294,40 @@ nodes | mysql.rs:103:13:103:89 | ... + ... | semmle.label | ... + ... | | mysql.rs:103:70:103:83 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | | mysql.rs:103:71:103:83 | remote_string | semmle.label | remote_string | -| mysql.rs:110:32:110:36 | query | semmle.label | query | | mysql.rs:110:38:110:49 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:110:38:110:58 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:111:14:111:23 | query_drop | semmle.label | query_drop | | mysql.rs:111:25:111:36 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:111:25:111:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:112:35:112:45 | query_first | semmle.label | query_first | | mysql.rs:112:47:112:58 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:112:47:112:67 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:114:14:114:23 | query_fold | semmle.label | query_fold | | mysql.rs:114:25:114:36 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:114:25:114:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:116:22:116:31 | query_iter | semmle.label | query_iter | | mysql.rs:116:33:116:44 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:116:33:116:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:118:14:118:25 | query_stream | semmle.label | query_stream | | mysql.rs:118:40:118:51 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:118:40:118:60 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:121:14:121:22 | query_map | semmle.label | query_map | | mysql.rs:121:24:121:35 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:121:24:121:44 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:149:26:149:29 | prep | semmle.label | prep | | mysql.rs:149:31:149:42 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:149:31:149:51 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:154:15:154:24 | query_drop | semmle.label | query_drop | | mysql.rs:154:26:154:37 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:154:26:154:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | sqlx.rs:47:9:47:18 | arg_string | semmle.label | arg_string | -| sqlx.rs:47:22:47:35 | ...::args | semmle.label | ...::args | +| sqlx.rs:47:22:47:37 | ...::args(...) | semmle.label | ...::args(...) | | sqlx.rs:47:22:47:37 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | | sqlx.rs:48:9:48:21 | remote_string | semmle.label | remote_string | -| sqlx.rs:48:25:48:46 | ...::get | semmle.label | ...::get | +| sqlx.rs:48:25:48:69 | ...::get(...) | semmle.label | ...::get(...) | | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | | sqlx.rs:48:25:48:78 | ... .unwrap() | semmle.label | ... .unwrap() | | sqlx.rs:48:25:48:85 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | @@ -348,20 +348,20 @@ nodes | sqlx.rs:59:17:59:72 | ...::must_use(...) | semmle.label | ...::must_use(...) | | sqlx.rs:59:17:59:72 | MacroExpr | semmle.label | MacroExpr | | sqlx.rs:59:17:59:72 | { ... } | semmle.label | { ... } | -| sqlx.rs:78:13:78:23 | ...::query | semmle.label | ...::query | | sqlx.rs:78:25:78:38 | unsafe_query_1 [&ref] | semmle.label | unsafe_query_1 [&ref] | +| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | -| sqlx.rs:80:17:80:27 | ...::query | semmle.label | ...::query | | sqlx.rs:80:29:80:42 | unsafe_query_2 [&ref] | semmle.label | unsafe_query_2 [&ref] | +| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | semmle.label | unsafe_query_2.as_str() | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | semmle.label | unsafe_query_2.as_str() [&ref] | -| sqlx.rs:81:17:81:27 | ...::query | semmle.label | ...::query | | sqlx.rs:81:29:81:42 | unsafe_query_3 | semmle.label | unsafe_query_3 | +| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | semmle.label | unsafe_query_3.as_str() | | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | semmle.label | unsafe_query_3.as_str() [&ref] | -| sqlx.rs:82:17:82:27 | ...::query | semmle.label | ...::query | | sqlx.rs:82:29:82:42 | unsafe_query_4 | semmle.label | unsafe_query_4 | +| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | semmle.label | unsafe_query_4.as_str() | | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | semmle.label | unsafe_query_4.as_str() [&ref] | | sqlx.rs:100:9:100:21 | remote_string | semmle.label | remote_string | -| sqlx.rs:100:25:100:46 | ...::get | semmle.label | ...::get | +| sqlx.rs:100:25:100:69 | ...::get(...) | semmle.label | ...::get(...) | | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | | sqlx.rs:100:25:100:78 | ... .unwrap() | semmle.label | ... .unwrap() | | sqlx.rs:100:25:100:85 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | @@ -371,26 +371,26 @@ nodes | sqlx.rs:102:26:102:102 | ... + ... | semmle.label | ... + ... | | sqlx.rs:102:83:102:96 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | | sqlx.rs:102:84:102:96 | remote_string | semmle.label | remote_string | -| sqlx.rs:113:17:113:29 | ...::raw_sql | semmle.label | ...::raw_sql | | sqlx.rs:113:31:113:44 | unsafe_query_1 | semmle.label | unsafe_query_1 | +| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | -| sqlx.rs:120:17:120:27 | ...::query | semmle.label | ...::query | | sqlx.rs:120:29:120:42 | unsafe_query_1 | semmle.label | unsafe_query_1 | +| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | -| sqlx.rs:127:17:127:27 | ...::query | semmle.label | ...::query | | sqlx.rs:127:29:127:42 | unsafe_query_1 | semmle.label | unsafe_query_1 | +| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | -| sqlx.rs:136:40:136:53 | ...::query_as | semmle.label | ...::query_as | | sqlx.rs:136:55:136:68 | unsafe_query_1 | semmle.label | unsafe_query_1 | +| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | -| sqlx.rs:145:40:145:53 | ...::query_as | semmle.label | ...::query_as | | sqlx.rs:145:55:145:68 | unsafe_query_1 | semmle.label | unsafe_query_1 | +| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | -| sqlx.rs:153:17:153:27 | ...::query | semmle.label | ...::query | | sqlx.rs:153:29:153:42 | unsafe_query_1 | semmle.label | unsafe_query_1 | +| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | | sqlx.rs:173:9:173:21 | remote_string | semmle.label | remote_string | -| sqlx.rs:173:25:173:46 | ...::get | semmle.label | ...::get | +| sqlx.rs:173:25:173:69 | ...::get(...) | semmle.label | ...::get(...) | | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | | sqlx.rs:173:25:173:78 | ... .unwrap() | semmle.label | ... .unwrap() | | sqlx.rs:173:25:173:85 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | @@ -400,7 +400,7 @@ nodes | sqlx.rs:175:26:175:102 | ... + ... | semmle.label | ... + ... | | sqlx.rs:175:83:175:96 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | | sqlx.rs:175:84:175:96 | remote_string | semmle.label | remote_string | -| sqlx.rs:188:17:188:27 | ...::query | semmle.label | ...::query | | sqlx.rs:188:29:188:42 | unsafe_query_1 | semmle.label | unsafe_query_1 | +| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-089/mysql.rs b/rust/ql/test/query-tests/security/CWE-089/mysql.rs index 71ee265e8bab..01b5fe7299c0 100644 --- a/rust/ql/test/query-tests/security/CWE-089/mysql.rs +++ b/rust/ql/test/query-tests/security/CWE-089/mysql.rs @@ -28,15 +28,15 @@ mod sync_test { let _: i64 = conn.query_first(unsafe_query.as_str())?.unwrap(); // $ sql-sink Alert[rust/sql-injection]=remote10 let _: Result = conn.query_first_opt(unsafe_query.as_str())?.unwrap(); // $ sql-sink Alert[rust/sql-injection]=remote10 let _ = conn.query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 })?; // $ sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_fold_opt( // $ sql-sink Alert[rust/sql-injection]=remote10 - unsafe_query.as_str(), + let _ = conn.query_fold_opt( + unsafe_query.as_str(), // $ sql-sink Alert[rust/sql-injection]=remote10 0, |_: i64, _: Result| -> i64 { 0 }, )?; let _ = conn.query_iter(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 let _ = conn.query_map(unsafe_query.as_str(), |_: i64| -> () {})?; // $ sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_map_opt( // $ sql-sink Alert[rust/sql-injection]=remote10 - unsafe_query.as_str(), + let _ = conn.query_map_opt( + unsafe_query.as_str(), // $ sql-sink Alert[rust/sql-injection]=remote10 |_: Result| -> () {}, )?; let _: Vec = conn2.query(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 diff --git a/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected b/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected index 4349f3738eb9..60392bc0df12 100644 --- a/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected @@ -1,67 +1,59 @@ #select -| main.rs:15:5:15:9 | ...::log | main.rs:8:29:8:37 | ...::args | main.rs:15:5:15:9 | ...::log | Log entry depends on a $@. | main.rs:8:29:8:37 | ...::args | user-provided value | -| main.rs:16:5:16:9 | ...::log | main.rs:10:22:10:34 | ...::var | main.rs:16:5:16:9 | ...::log | Log entry depends on a $@. | main.rs:10:22:10:34 | ...::var | user-provided value | -| main.rs:17:5:17:10 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:17:5:17:10 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | -| main.rs:18:5:18:10 | ...::log | main.rs:8:29:8:37 | ...::args | main.rs:18:5:18:10 | ...::log | Log entry depends on a $@. | main.rs:8:29:8:37 | ...::args | user-provided value | -| main.rs:19:5:19:10 | ...::log | main.rs:10:22:10:34 | ...::var | main.rs:19:5:19:10 | ...::log | Log entry depends on a $@. | main.rs:10:22:10:34 | ...::var | user-provided value | -| main.rs:23:5:23:9 | ...::log | main.rs:8:29:8:37 | ...::args | main.rs:23:5:23:9 | ...::log | Log entry depends on a $@. | main.rs:8:29:8:37 | ...::args | user-provided value | -| main.rs:27:5:27:9 | ...::log | main.rs:8:29:8:37 | ...::args | main.rs:27:5:27:9 | ...::log | Log entry depends on a $@. | main.rs:8:29:8:37 | ...::args | user-provided value | -| main.rs:30:5:30:9 | ...::log | main.rs:8:29:8:37 | ...::args | main.rs:30:5:30:9 | ...::log | Log entry depends on a $@. | main.rs:8:29:8:37 | ...::args | user-provided value | -| main.rs:30:5:30:9 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:30:5:30:9 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | -| main.rs:66:5:66:9 | ...::log | main.rs:8:29:8:37 | ...::args | main.rs:66:5:66:9 | ...::log | Log entry depends on a $@. | main.rs:8:29:8:37 | ...::args | user-provided value | -| main.rs:112:9:112:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:112:9:112:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | -| main.rs:113:9:113:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:113:9:113:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | -| main.rs:114:9:114:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:114:9:114:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | -| main.rs:115:9:115:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:115:9:115:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | -| main.rs:116:9:116:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:116:9:116:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | -| main.rs:119:9:119:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:119:9:119:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | -| main.rs:130:9:130:16 | ...::_print | main.rs:127:25:127:37 | ...::var | main.rs:130:9:130:16 | ...::_print | Log entry depends on a $@. | main.rs:127:25:127:37 | ...::var | user-provided value | -| main.rs:131:9:131:17 | ...::_eprint | main.rs:127:25:127:37 | ...::var | main.rs:131:9:131:17 | ...::_eprint | Log entry depends on a $@. | main.rs:127:25:127:37 | ...::var | user-provided value | -| main.rs:143:9:143:16 | ...::_print | main.rs:150:28:150:30 | get | main.rs:143:9:143:16 | ...::_print | Log entry depends on a $@. | main.rs:150:28:150:30 | get | user-provided value | +| main.rs:15:11:15:36 | MacroExpr | main.rs:8:29:8:39 | ...::args(...) | main.rs:15:11:15:36 | MacroExpr | Log entry depends on a $@. | main.rs:8:29:8:39 | ...::args(...) | user-provided value | +| main.rs:16:11:16:44 | MacroExpr | main.rs:10:22:10:48 | ...::var(...) | main.rs:16:11:16:44 | MacroExpr | Log entry depends on a $@. | main.rs:10:22:10:48 | ...::var(...) | user-provided value | +| main.rs:17:12:17:46 | MacroExpr | main.rs:11:23:11:71 | ...::get(...) | main.rs:17:12:17:46 | MacroExpr | Log entry depends on a $@. | main.rs:11:23:11:71 | ...::get(...) | user-provided value | +| main.rs:18:12:18:37 | MacroExpr | main.rs:8:29:8:39 | ...::args(...) | main.rs:18:12:18:37 | MacroExpr | Log entry depends on a $@. | main.rs:8:29:8:39 | ...::args(...) | user-provided value | +| main.rs:19:12:19:39 | MacroExpr | main.rs:10:22:10:48 | ...::var(...) | main.rs:19:12:19:39 | MacroExpr | Log entry depends on a $@. | main.rs:10:22:10:48 | ...::var(...) | user-provided value | +| main.rs:23:11:23:29 | MacroExpr | main.rs:8:29:8:39 | ...::args(...) | main.rs:23:11:23:29 | MacroExpr | Log entry depends on a $@. | main.rs:8:29:8:39 | ...::args(...) | user-provided value | +| main.rs:27:11:27:26 | MacroExpr | main.rs:8:29:8:39 | ...::args(...) | main.rs:27:11:27:26 | MacroExpr | Log entry depends on a $@. | main.rs:8:29:8:39 | ...::args(...) | user-provided value | +| main.rs:30:11:30:66 | MacroExpr | main.rs:8:29:8:39 | ...::args(...) | main.rs:30:11:30:66 | MacroExpr | Log entry depends on a $@. | main.rs:8:29:8:39 | ...::args(...) | user-provided value | +| main.rs:30:11:30:66 | MacroExpr | main.rs:11:23:11:71 | ...::get(...) | main.rs:30:11:30:66 | MacroExpr | Log entry depends on a $@. | main.rs:11:23:11:71 | ...::get(...) | user-provided value | +| main.rs:66:11:66:41 | MacroExpr | main.rs:8:29:8:39 | ...::args(...) | main.rs:66:11:66:41 | MacroExpr | Log entry depends on a $@. | main.rs:8:29:8:39 | ...::args(...) | user-provided value | +| main.rs:112:15:112:35 | MacroExpr | main.rs:109:25:109:40 | ...::args(...) | main.rs:112:15:112:35 | MacroExpr | Log entry depends on a $@. | main.rs:109:25:109:40 | ...::args(...) | user-provided value | +| main.rs:113:15:113:38 | MacroExpr | main.rs:109:25:109:40 | ...::args(...) | main.rs:113:15:113:38 | MacroExpr | Log entry depends on a $@. | main.rs:109:25:109:40 | ...::args(...) | user-provided value | +| main.rs:114:16:114:37 | MacroExpr | main.rs:109:25:109:40 | ...::args(...) | main.rs:114:16:114:37 | MacroExpr | Log entry depends on a $@. | main.rs:109:25:109:40 | ...::args(...) | user-provided value | +| main.rs:115:16:115:37 | MacroExpr | main.rs:109:25:109:40 | ...::args(...) | main.rs:115:16:115:37 | MacroExpr | Log entry depends on a $@. | main.rs:109:25:109:40 | ...::args(...) | user-provided value | +| main.rs:116:16:116:37 | MacroExpr | main.rs:109:25:109:40 | ...::args(...) | main.rs:116:16:116:37 | MacroExpr | Log entry depends on a $@. | main.rs:109:25:109:40 | ...::args(...) | user-provided value | +| main.rs:119:15:119:75 | MacroExpr | main.rs:109:25:109:40 | ...::args(...) | main.rs:119:15:119:75 | MacroExpr | Log entry depends on a $@. | main.rs:109:25:109:40 | ...::args(...) | user-provided value | +| main.rs:130:18:130:38 | MacroExpr | main.rs:127:25:127:45 | ...::var(...) | main.rs:130:18:130:38 | MacroExpr | Log entry depends on a $@. | main.rs:127:25:127:45 | ...::var(...) | user-provided value | +| main.rs:131:19:131:49 | MacroExpr | main.rs:127:25:127:45 | ...::var(...) | main.rs:131:19:131:49 | MacroExpr | Log entry depends on a $@. | main.rs:127:25:127:45 | ...::var(...) | user-provided value | +| main.rs:143:18:143:40 | MacroExpr | main.rs:150:32:150:48 | my_axum_handler_1 | main.rs:143:18:143:40 | MacroExpr | Log entry depends on a $@. | main.rs:150:32:150:48 | my_axum_handler_1 | user-provided value | edges | main.rs:8:9:8:12 | args [element] | main.rs:9:20:9:23 | args [element] | provenance | | -| main.rs:8:29:8:37 | ...::args | main.rs:8:29:8:39 | ...::args(...) [element] | provenance | Src:MaD:6 | +| main.rs:8:29:8:39 | ...::args(...) | main.rs:8:29:8:39 | ...::args(...) [element] | provenance | Src:MaD:6 | | main.rs:8:29:8:39 | ...::args(...) [element] | main.rs:8:29:8:49 | ... .collect() [element] | provenance | MaD:10 | | main.rs:8:29:8:49 | ... .collect() [element] | main.rs:8:9:8:12 | args [element] | provenance | | -| main.rs:9:9:9:16 | username | main.rs:15:11:15:36 | MacroExpr | provenance | | -| main.rs:9:9:9:16 | username | main.rs:18:12:18:37 | MacroExpr | provenance | | +| main.rs:9:9:9:16 | username | main.rs:15:11:15:36 | MacroExpr | provenance | Sink:MaD:1 | +| main.rs:9:9:9:16 | username | main.rs:18:12:18:37 | MacroExpr | provenance | Sink:MaD:1 | | main.rs:9:9:9:16 | username | main.rs:22:33:22:63 | MacroExpr | provenance | | | main.rs:9:9:9:16 | username | main.rs:26:55:26:62 | username | provenance | | -| main.rs:9:9:9:16 | username | main.rs:30:11:30:66 | MacroExpr | provenance | | +| main.rs:9:9:9:16 | username | main.rs:30:11:30:66 | MacroExpr | provenance | Sink:MaD:1 | | main.rs:9:9:9:16 | username | main.rs:52:29:52:36 | username | provenance | | | main.rs:9:20:9:23 | args [element] | main.rs:9:20:9:30 | args.get(...) [Some, &ref] | provenance | MaD:13 | | main.rs:9:20:9:30 | args.get(...) [Some, &ref] | main.rs:9:20:9:64 | ... .unwrap_or(...) [&ref] | provenance | MaD:16 | | main.rs:9:20:9:64 | ... .unwrap_or(...) [&ref] | main.rs:9:20:9:72 | ... .clone() | provenance | MaD:9 | | main.rs:9:20:9:72 | ... .clone() | main.rs:9:9:9:16 | username | provenance | | -| main.rs:10:9:10:18 | user_input | main.rs:16:11:16:44 | MacroExpr | provenance | | -| main.rs:10:9:10:18 | user_input | main.rs:19:12:19:39 | MacroExpr | provenance | | -| main.rs:10:22:10:34 | ...::var | main.rs:10:22:10:48 | ...::var(...) [Ok] | provenance | Src:MaD:7 | +| main.rs:10:9:10:18 | user_input | main.rs:16:11:16:44 | MacroExpr | provenance | Sink:MaD:1 | +| main.rs:10:9:10:18 | user_input | main.rs:19:12:19:39 | MacroExpr | provenance | Sink:MaD:1 | +| main.rs:10:22:10:48 | ...::var(...) | main.rs:10:22:10:48 | ...::var(...) [Ok] | provenance | Src:MaD:7 | | main.rs:10:22:10:48 | ...::var(...) [Ok] | main.rs:10:22:10:81 | ... .unwrap_or(...) | provenance | MaD:19 | | main.rs:10:22:10:81 | ... .unwrap_or(...) | main.rs:10:9:10:18 | user_input | provenance | | -| main.rs:11:9:11:19 | remote_data | main.rs:17:12:17:46 | MacroExpr | provenance | | -| main.rs:11:9:11:19 | remote_data | main.rs:30:11:30:66 | MacroExpr | provenance | | -| main.rs:11:23:11:44 | ...::get | main.rs:11:23:11:71 | ...::get(...) [Ok] | provenance | Src:MaD:5 | +| main.rs:11:9:11:19 | remote_data | main.rs:17:12:17:46 | MacroExpr | provenance | Sink:MaD:1 | +| main.rs:11:9:11:19 | remote_data | main.rs:30:11:30:66 | MacroExpr | provenance | Sink:MaD:1 | +| main.rs:11:23:11:71 | ...::get(...) | main.rs:11:23:11:71 | ...::get(...) [Ok] | provenance | Src:MaD:5 | | main.rs:11:23:11:71 | ...::get(...) [Ok] | main.rs:11:23:12:17 | ... .unwrap() | provenance | MaD:18 | | main.rs:11:23:12:17 | ... .unwrap() | main.rs:11:23:12:24 | ... .text() [Ok] | provenance | MaD:21 | | main.rs:11:23:12:24 | ... .text() [Ok] | main.rs:11:23:12:61 | ... .unwrap_or(...) | provenance | MaD:19 | | main.rs:11:23:12:61 | ... .unwrap_or(...) | main.rs:11:9:11:19 | remote_data | provenance | | -| main.rs:15:11:15:36 | MacroExpr | main.rs:15:5:15:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:16:11:16:44 | MacroExpr | main.rs:16:5:16:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:17:12:17:46 | MacroExpr | main.rs:17:5:17:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:18:12:18:37 | MacroExpr | main.rs:18:5:18:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:19:12:19:39 | MacroExpr | main.rs:19:5:19:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:22:9:22:21 | formatted_msg | main.rs:23:11:23:29 | MacroExpr | provenance | | +| main.rs:22:9:22:21 | formatted_msg | main.rs:23:11:23:29 | MacroExpr | provenance | Sink:MaD:1 | | main.rs:22:33:22:63 | ...::format(...) | main.rs:22:33:22:63 | { ... } | provenance | | | main.rs:22:33:22:63 | ...::must_use(...) | main.rs:22:9:22:21 | formatted_msg | provenance | | | main.rs:22:33:22:63 | MacroExpr | main.rs:22:33:22:63 | ...::format(...) | provenance | MaD:22 | | main.rs:22:33:22:63 | { ... } | main.rs:22:33:22:63 | ...::must_use(...) | provenance | MaD:23 | -| main.rs:23:11:23:29 | MacroExpr | main.rs:23:5:23:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:26:9:26:18 | concat_msg | main.rs:27:11:27:26 | MacroExpr | provenance | | +| main.rs:26:9:26:18 | concat_msg | main.rs:27:11:27:26 | MacroExpr | provenance | Sink:MaD:1 | | main.rs:26:22:26:62 | ... + ... | main.rs:26:9:26:18 | concat_msg | provenance | | | main.rs:26:54:26:62 | &username [&ref] | main.rs:26:22:26:62 | ... + ... | provenance | MaD:12 | | main.rs:26:55:26:62 | username | main.rs:26:54:26:62 | &username [&ref] | provenance | | -| main.rs:27:11:27:26 | MacroExpr | main.rs:27:5:27:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:30:11:30:66 | MacroExpr | main.rs:30:5:30:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:52:28:52:36 | &username [&ref] | main.rs:56:27:56:40 | ...: ... [&ref] | provenance | | | main.rs:52:29:52:36 | username | main.rs:52:28:52:36 | &username [&ref] | provenance | | | main.rs:56:27:56:40 | ...: ... [&ref] | main.rs:65:38:65:45 | username [&ref] | provenance | | @@ -69,42 +61,31 @@ edges | main.rs:65:21:65:59 | UserInfo {...} [UserInfo] | main.rs:65:9:65:17 | user_info [UserInfo] | provenance | | | main.rs:65:38:65:45 | username [&ref] | main.rs:65:38:65:57 | username.to_string() | provenance | MaD:8 | | main.rs:65:38:65:57 | username.to_string() | main.rs:65:21:65:59 | UserInfo {...} [UserInfo] | provenance | | -| main.rs:66:11:66:41 | MacroExpr | main.rs:66:5:66:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:66:28:66:36 | user_info [UserInfo] | main.rs:66:28:66:41 | user_info.name | provenance | | -| main.rs:66:28:66:41 | user_info.name | main.rs:66:11:66:41 | MacroExpr | provenance | | -| main.rs:109:13:109:21 | user_data | main.rs:112:15:112:35 | MacroExpr | provenance | | -| main.rs:109:13:109:21 | user_data | main.rs:113:15:113:38 | MacroExpr | provenance | | -| main.rs:109:13:109:21 | user_data | main.rs:114:16:114:37 | MacroExpr | provenance | | -| main.rs:109:13:109:21 | user_data | main.rs:115:16:115:37 | MacroExpr | provenance | | -| main.rs:109:13:109:21 | user_data | main.rs:116:16:116:37 | MacroExpr | provenance | | -| main.rs:109:13:109:21 | user_data | main.rs:119:15:119:75 | MacroExpr | provenance | | -| main.rs:109:25:109:38 | ...::args | main.rs:109:25:109:40 | ...::args(...) [element] | provenance | Src:MaD:6 | +| main.rs:66:28:66:41 | user_info.name | main.rs:66:11:66:41 | MacroExpr | provenance | Sink:MaD:1 | +| main.rs:109:13:109:21 | user_data | main.rs:112:15:112:35 | MacroExpr | provenance | Sink:MaD:1 | +| main.rs:109:13:109:21 | user_data | main.rs:113:15:113:38 | MacroExpr | provenance | Sink:MaD:1 | +| main.rs:109:13:109:21 | user_data | main.rs:114:16:114:37 | MacroExpr | provenance | Sink:MaD:1 | +| main.rs:109:13:109:21 | user_data | main.rs:115:16:115:37 | MacroExpr | provenance | Sink:MaD:1 | +| main.rs:109:13:109:21 | user_data | main.rs:116:16:116:37 | MacroExpr | provenance | Sink:MaD:1 | +| main.rs:109:13:109:21 | user_data | main.rs:119:15:119:75 | MacroExpr | provenance | Sink:MaD:1 | +| main.rs:109:25:109:40 | ...::args(...) | main.rs:109:25:109:40 | ...::args(...) [element] | provenance | Src:MaD:6 | | main.rs:109:25:109:40 | ...::args(...) [element] | main.rs:109:25:109:47 | ... .nth(...) [Some] | provenance | MaD:11 | | main.rs:109:25:109:47 | ... .nth(...) [Some] | main.rs:109:25:109:67 | ... .unwrap_or_default() | provenance | MaD:17 | | main.rs:109:25:109:67 | ... .unwrap_or_default() | main.rs:109:13:109:21 | user_data | provenance | | -| main.rs:112:15:112:35 | MacroExpr | main.rs:112:9:112:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:113:15:113:38 | MacroExpr | main.rs:113:9:113:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:114:16:114:37 | MacroExpr | main.rs:114:9:114:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:115:16:115:37 | MacroExpr | main.rs:115:9:115:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:116:16:116:37 | MacroExpr | main.rs:116:9:116:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:119:15:119:75 | MacroExpr | main.rs:119:9:119:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:127:13:127:21 | user_data | main.rs:130:18:130:38 | MacroExpr | provenance | | -| main.rs:127:13:127:21 | user_data | main.rs:131:19:131:49 | MacroExpr | provenance | | -| main.rs:127:25:127:37 | ...::var | main.rs:127:25:127:45 | ...::var(...) [Ok] | provenance | Src:MaD:7 | +| main.rs:127:13:127:21 | user_data | main.rs:130:18:130:38 | MacroExpr | provenance | Sink:MaD:3 | +| main.rs:127:13:127:21 | user_data | main.rs:131:19:131:49 | MacroExpr | provenance | Sink:MaD:2 | +| main.rs:127:25:127:45 | ...::var(...) | main.rs:127:25:127:45 | ...::var(...) [Ok] | provenance | Src:MaD:7 | | main.rs:127:25:127:45 | ...::var(...) [Ok] | main.rs:127:25:127:65 | ... .unwrap_or_default() | provenance | MaD:20 | | main.rs:127:25:127:65 | ... .unwrap_or_default() | main.rs:127:13:127:21 | user_data | provenance | | -| main.rs:130:18:130:38 | MacroExpr | main.rs:130:9:130:16 | ...::_print | provenance | MaD:3 Sink:MaD:3 | -| main.rs:131:19:131:49 | MacroExpr | main.rs:131:9:131:17 | ...::_eprint | provenance | MaD:2 Sink:MaD:2 | -| main.rs:140:32:140:59 | ...: Option::<...> | main.rs:141:22:141:27 | o_path | provenance | | | main.rs:141:13:141:18 | m_path [Some] | main.rs:143:26:143:31 | m_path [Some] | provenance | | | main.rs:141:22:141:27 | o_path | main.rs:141:22:141:38 | o_path.map(...) [Some] | provenance | MaD:14 | | main.rs:141:22:141:27 | o_path | main.rs:141:34:141:34 | ... | provenance | MaD:14 | | main.rs:141:22:141:38 | o_path.map(...) [Some] | main.rs:141:13:141:18 | m_path [Some] | provenance | | | main.rs:141:34:141:34 | ... | main.rs:141:37:141:37 | x | provenance | | -| main.rs:143:18:143:40 | MacroExpr | main.rs:143:9:143:16 | ...::_print | provenance | MaD:3 Sink:MaD:3 | | main.rs:143:26:143:31 | m_path [Some] | main.rs:143:26:143:40 | m_path.unwrap() | provenance | MaD:15 | -| main.rs:143:26:143:40 | m_path.unwrap() | main.rs:143:18:143:40 | MacroExpr | provenance | | -| main.rs:150:28:150:30 | get | main.rs:140:32:140:59 | ...: Option::<...> | provenance | Src:MaD:4 | +| main.rs:143:26:143:40 | m_path.unwrap() | main.rs:143:18:143:40 | MacroExpr | provenance | Sink:MaD:3 | +| main.rs:150:32:150:48 | my_axum_handler_1 | main.rs:141:22:141:27 | o_path | provenance | Src:MaD:4 | models | 1 | Sink: log::__private_api::log; Argument[0]; log-injection | | 2 | Sink: std::io::stdio::_eprint; Argument[0]; log-injection | @@ -131,7 +112,7 @@ models | 23 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | main.rs:8:9:8:12 | args [element] | semmle.label | args [element] | -| main.rs:8:29:8:37 | ...::args | semmle.label | ...::args | +| main.rs:8:29:8:39 | ...::args(...) | semmle.label | ...::args(...) | | main.rs:8:29:8:39 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | | main.rs:8:29:8:49 | ... .collect() [element] | semmle.label | ... .collect() [element] | | main.rs:9:9:9:16 | username | semmle.label | username | @@ -140,39 +121,31 @@ nodes | main.rs:9:20:9:64 | ... .unwrap_or(...) [&ref] | semmle.label | ... .unwrap_or(...) [&ref] | | main.rs:9:20:9:72 | ... .clone() | semmle.label | ... .clone() | | main.rs:10:9:10:18 | user_input | semmle.label | user_input | -| main.rs:10:22:10:34 | ...::var | semmle.label | ...::var | +| main.rs:10:22:10:48 | ...::var(...) | semmle.label | ...::var(...) | | main.rs:10:22:10:48 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | | main.rs:10:22:10:81 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | | main.rs:11:9:11:19 | remote_data | semmle.label | remote_data | -| main.rs:11:23:11:44 | ...::get | semmle.label | ...::get | +| main.rs:11:23:11:71 | ...::get(...) | semmle.label | ...::get(...) | | main.rs:11:23:11:71 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | | main.rs:11:23:12:17 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:11:23:12:24 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | | main.rs:11:23:12:61 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| main.rs:15:5:15:9 | ...::log | semmle.label | ...::log | | main.rs:15:11:15:36 | MacroExpr | semmle.label | MacroExpr | -| main.rs:16:5:16:9 | ...::log | semmle.label | ...::log | | main.rs:16:11:16:44 | MacroExpr | semmle.label | MacroExpr | -| main.rs:17:5:17:10 | ...::log | semmle.label | ...::log | | main.rs:17:12:17:46 | MacroExpr | semmle.label | MacroExpr | -| main.rs:18:5:18:10 | ...::log | semmle.label | ...::log | | main.rs:18:12:18:37 | MacroExpr | semmle.label | MacroExpr | -| main.rs:19:5:19:10 | ...::log | semmle.label | ...::log | | main.rs:19:12:19:39 | MacroExpr | semmle.label | MacroExpr | | main.rs:22:9:22:21 | formatted_msg | semmle.label | formatted_msg | | main.rs:22:33:22:63 | ...::format(...) | semmle.label | ...::format(...) | | main.rs:22:33:22:63 | ...::must_use(...) | semmle.label | ...::must_use(...) | | main.rs:22:33:22:63 | MacroExpr | semmle.label | MacroExpr | | main.rs:22:33:22:63 | { ... } | semmle.label | { ... } | -| main.rs:23:5:23:9 | ...::log | semmle.label | ...::log | | main.rs:23:11:23:29 | MacroExpr | semmle.label | MacroExpr | | main.rs:26:9:26:18 | concat_msg | semmle.label | concat_msg | | main.rs:26:22:26:62 | ... + ... | semmle.label | ... + ... | | main.rs:26:54:26:62 | &username [&ref] | semmle.label | &username [&ref] | | main.rs:26:55:26:62 | username | semmle.label | username | -| main.rs:27:5:27:9 | ...::log | semmle.label | ...::log | | main.rs:27:11:27:26 | MacroExpr | semmle.label | MacroExpr | -| main.rs:30:5:30:9 | ...::log | semmle.label | ...::log | | main.rs:30:11:30:66 | MacroExpr | semmle.label | MacroExpr | | main.rs:52:28:52:36 | &username [&ref] | semmle.label | &username [&ref] | | main.rs:52:29:52:36 | username | semmle.label | username | @@ -181,45 +154,34 @@ nodes | main.rs:65:21:65:59 | UserInfo {...} [UserInfo] | semmle.label | UserInfo {...} [UserInfo] | | main.rs:65:38:65:45 | username [&ref] | semmle.label | username [&ref] | | main.rs:65:38:65:57 | username.to_string() | semmle.label | username.to_string() | -| main.rs:66:5:66:9 | ...::log | semmle.label | ...::log | | main.rs:66:11:66:41 | MacroExpr | semmle.label | MacroExpr | | main.rs:66:28:66:36 | user_info [UserInfo] | semmle.label | user_info [UserInfo] | | main.rs:66:28:66:41 | user_info.name | semmle.label | user_info.name | | main.rs:109:13:109:21 | user_data | semmle.label | user_data | -| main.rs:109:25:109:38 | ...::args | semmle.label | ...::args | +| main.rs:109:25:109:40 | ...::args(...) | semmle.label | ...::args(...) | | main.rs:109:25:109:40 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | | main.rs:109:25:109:47 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | | main.rs:109:25:109:67 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | -| main.rs:112:9:112:13 | ...::log | semmle.label | ...::log | | main.rs:112:15:112:35 | MacroExpr | semmle.label | MacroExpr | -| main.rs:113:9:113:13 | ...::log | semmle.label | ...::log | | main.rs:113:15:113:38 | MacroExpr | semmle.label | MacroExpr | -| main.rs:114:9:114:14 | ...::log | semmle.label | ...::log | | main.rs:114:16:114:37 | MacroExpr | semmle.label | MacroExpr | -| main.rs:115:9:115:14 | ...::log | semmle.label | ...::log | | main.rs:115:16:115:37 | MacroExpr | semmle.label | MacroExpr | -| main.rs:116:9:116:14 | ...::log | semmle.label | ...::log | | main.rs:116:16:116:37 | MacroExpr | semmle.label | MacroExpr | -| main.rs:119:9:119:13 | ...::log | semmle.label | ...::log | | main.rs:119:15:119:75 | MacroExpr | semmle.label | MacroExpr | | main.rs:127:13:127:21 | user_data | semmle.label | user_data | -| main.rs:127:25:127:37 | ...::var | semmle.label | ...::var | +| main.rs:127:25:127:45 | ...::var(...) | semmle.label | ...::var(...) | | main.rs:127:25:127:45 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | | main.rs:127:25:127:65 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | -| main.rs:130:9:130:16 | ...::_print | semmle.label | ...::_print | | main.rs:130:18:130:38 | MacroExpr | semmle.label | MacroExpr | -| main.rs:131:9:131:17 | ...::_eprint | semmle.label | ...::_eprint | | main.rs:131:19:131:49 | MacroExpr | semmle.label | MacroExpr | -| main.rs:140:32:140:59 | ...: Option::<...> | semmle.label | ...: Option::<...> | | main.rs:141:13:141:18 | m_path [Some] | semmle.label | m_path [Some] | | main.rs:141:22:141:27 | o_path | semmle.label | o_path | | main.rs:141:22:141:38 | o_path.map(...) [Some] | semmle.label | o_path.map(...) [Some] | | main.rs:141:34:141:34 | ... | semmle.label | ... | | main.rs:141:37:141:37 | x | semmle.label | x | -| main.rs:143:9:143:16 | ...::_print | semmle.label | ...::_print | | main.rs:143:18:143:40 | MacroExpr | semmle.label | MacroExpr | | main.rs:143:26:143:31 | m_path [Some] | semmle.label | m_path [Some] | | main.rs:143:26:143:40 | m_path.unwrap() | semmle.label | m_path.unwrap() | -| main.rs:150:28:150:30 | get | semmle.label | get | +| main.rs:150:32:150:48 | my_axum_handler_1 | semmle.label | my_axum_handler_1 | subpaths | main.rs:141:22:141:27 | o_path | main.rs:141:34:141:34 | ... | main.rs:141:37:141:37 | x | main.rs:141:22:141:38 | o_path.map(...) [Some] | diff --git a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected index c807bc739fd0..922ebc6d2a3c 100644 --- a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected +++ b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected @@ -1,72 +1,63 @@ #select -| main.rs:4:4:4:30 | danger_accept_invalid_certs | main.rs:4:32:4:35 | true | main.rs:4:4:4:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:9:4:9:34 | danger_accept_invalid_hostnames | main.rs:9:36:9:39 | true | main.rs:9:4:9:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:16:4:16:30 | danger_accept_invalid_certs | main.rs:16:32:16:35 | true | main.rs:16:4:16:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:17:4:17:34 | danger_accept_invalid_hostnames | main.rs:17:36:17:39 | true | main.rs:17:4:17:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:37:4:37:30 | danger_accept_invalid_certs | main.rs:37:32:37:35 | true | main.rs:37:4:37:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:42:4:42:34 | danger_accept_invalid_hostnames | main.rs:42:36:42:39 | true | main.rs:42:4:42:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:47:4:47:30 | danger_accept_invalid_certs | main.rs:47:32:47:35 | true | main.rs:47:4:47:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:48:4:48:34 | danger_accept_invalid_hostnames | main.rs:48:36:48:39 | true | main.rs:48:4:48:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:55:4:55:30 | danger_accept_invalid_certs | main.rs:55:32:55:35 | true | main.rs:55:4:55:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:56:4:56:34 | danger_accept_invalid_hostnames | main.rs:56:36:56:39 | true | main.rs:56:4:56:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:83:4:83:30 | danger_accept_invalid_certs | main.rs:74:15:74:18 | true | main.rs:83:4:83:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:88:4:88:30 | danger_accept_invalid_certs | main.rs:75:22:75:25 | true | main.rs:88:4:88:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:93:4:93:30 | danger_accept_invalid_certs | main.rs:154:17:154:20 | true | main.rs:93:4:93:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:109:4:109:34 | danger_accept_invalid_hostnames | main.rs:107:17:107:31 | ...::exists | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:115:4:115:34 | danger_accept_invalid_hostnames | main.rs:113:43:113:50 | metadata | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:121:4:121:34 | danger_accept_invalid_hostnames | main.rs:119:11:119:27 | ...::metadata | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:134:4:134:34 | danger_accept_invalid_hostnames | main.rs:129:14:129:27 | ...::stdin | main.rs:134:4:134:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:146:4:146:34 | danger_accept_invalid_hostnames | main.rs:144:39:144:42 | true | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:4:32:4:35 | true | main.rs:4:32:4:35 | true | main.rs:4:32:4:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:9:36:9:39 | true | main.rs:9:36:9:39 | true | main.rs:9:36:9:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:16:32:16:35 | true | main.rs:16:32:16:35 | true | main.rs:16:32:16:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:17:36:17:39 | true | main.rs:17:36:17:39 | true | main.rs:17:36:17:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:37:32:37:35 | true | main.rs:37:32:37:35 | true | main.rs:37:32:37:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:42:36:42:39 | true | main.rs:42:36:42:39 | true | main.rs:42:36:42:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:47:32:47:35 | true | main.rs:47:32:47:35 | true | main.rs:47:32:47:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:48:36:48:39 | true | main.rs:48:36:48:39 | true | main.rs:48:36:48:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:55:32:55:35 | true | main.rs:55:32:55:35 | true | main.rs:55:32:55:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:56:36:56:39 | true | main.rs:56:36:56:39 | true | main.rs:56:36:56:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:83:32:83:37 | always | main.rs:74:15:74:18 | true | main.rs:83:32:83:37 | always | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:88:32:88:40 | sometimes | main.rs:75:22:75:25 | true | main.rs:88:32:88:40 | sometimes | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:93:32:93:47 | sometimes_global | main.rs:154:17:154:20 | true | main.rs:93:32:93:47 | sometimes_global | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:109:36:109:37 | b1 | main.rs:107:17:107:42 | ...::exists(...) | main.rs:109:36:109:37 | b1 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:115:36:115:37 | b2 | main.rs:113:11:113:52 | ... .metadata() | main.rs:115:36:115:37 | b2 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:121:36:121:37 | b3 | main.rs:119:11:119:38 | ...::metadata(...) | main.rs:121:36:121:37 | b3 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:134:36:134:37 | b4 | main.rs:129:14:129:29 | ...::stdin(...) | main.rs:134:36:134:37 | b4 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:146:36:146:37 | b6 | main.rs:144:39:144:42 | true | main.rs:146:36:146:37 | b6 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | edges -| main.rs:4:32:4:35 | true | main.rs:4:4:4:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | -| main.rs:9:36:9:39 | true | main.rs:9:4:9:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | -| main.rs:16:32:16:35 | true | main.rs:16:4:16:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | -| main.rs:17:36:17:39 | true | main.rs:17:4:17:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | -| main.rs:37:32:37:35 | true | main.rs:37:4:37:30 | danger_accept_invalid_certs | provenance | MaD:3 Sink:MaD:3 | -| main.rs:42:36:42:39 | true | main.rs:42:4:42:34 | danger_accept_invalid_hostnames | provenance | MaD:6 Sink:MaD:6 | -| main.rs:47:32:47:35 | true | main.rs:47:4:47:30 | danger_accept_invalid_certs | provenance | MaD:3 Sink:MaD:3 | -| main.rs:48:36:48:39 | true | main.rs:48:4:48:34 | danger_accept_invalid_hostnames | provenance | MaD:4 Sink:MaD:4 | -| main.rs:55:32:55:35 | true | main.rs:55:4:55:30 | danger_accept_invalid_certs | provenance | MaD:5 Sink:MaD:5 | -| main.rs:56:36:56:39 | true | main.rs:56:4:56:34 | danger_accept_invalid_hostnames | provenance | MaD:6 Sink:MaD:6 | -| main.rs:73:19:73:40 | ...: bool | main.rs:93:32:93:47 | sometimes_global | provenance | | -| main.rs:74:6:74:11 | always | main.rs:83:32:83:37 | always | provenance | | +| main.rs:4:32:4:35 | true | main.rs:4:32:4:35 | true | provenance | Sink:MaD:1 | +| main.rs:9:36:9:39 | true | main.rs:9:36:9:39 | true | provenance | Sink:MaD:2 | +| main.rs:16:32:16:35 | true | main.rs:16:32:16:35 | true | provenance | Sink:MaD:1 | +| main.rs:17:36:17:39 | true | main.rs:17:36:17:39 | true | provenance | Sink:MaD:2 | +| main.rs:37:32:37:35 | true | main.rs:37:32:37:35 | true | provenance | Sink:MaD:3 | +| main.rs:42:36:42:39 | true | main.rs:42:36:42:39 | true | provenance | Sink:MaD:6 | +| main.rs:47:32:47:35 | true | main.rs:47:32:47:35 | true | provenance | Sink:MaD:3 | +| main.rs:48:36:48:39 | true | main.rs:48:36:48:39 | true | provenance | Sink:MaD:4 | +| main.rs:55:32:55:35 | true | main.rs:55:32:55:35 | true | provenance | Sink:MaD:5 | +| main.rs:56:36:56:39 | true | main.rs:56:36:56:39 | true | provenance | Sink:MaD:6 | +| main.rs:73:19:73:40 | ...: bool | main.rs:93:32:93:47 | sometimes_global | provenance | Sink:MaD:1 | +| main.rs:74:6:74:11 | always | main.rs:83:32:83:37 | always | provenance | Sink:MaD:1 | | main.rs:74:15:74:18 | true | main.rs:74:6:74:11 | always | provenance | | -| main.rs:75:6:75:18 | mut sometimes | main.rs:88:32:88:40 | sometimes | provenance | | +| main.rs:75:6:75:18 | mut sometimes | main.rs:88:32:88:40 | sometimes | provenance | Sink:MaD:1 | | main.rs:75:22:75:25 | true | main.rs:75:6:75:18 | mut sometimes | provenance | | -| main.rs:83:32:83:37 | always | main.rs:83:4:83:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | -| main.rs:88:32:88:40 | sometimes | main.rs:88:4:88:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | -| main.rs:93:32:93:47 | sometimes_global | main.rs:93:4:93:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | -| main.rs:107:6:107:7 | b1 | main.rs:109:36:109:37 | b1 | provenance | | -| main.rs:107:17:107:31 | ...::exists | main.rs:107:17:107:42 | ...::exists(...) [Ok] | provenance | Src:MaD:8 | +| main.rs:107:6:107:7 | b1 | main.rs:109:36:109:37 | b1 | provenance | Sink:MaD:2 | +| main.rs:107:17:107:42 | ...::exists(...) | main.rs:107:17:107:42 | ...::exists(...) [Ok] | provenance | Src:MaD:8 | | main.rs:107:17:107:42 | ...::exists(...) [Ok] | main.rs:107:17:107:51 | ... .unwrap() | provenance | MaD:12 | | main.rs:107:17:107:51 | ... .unwrap() | main.rs:107:6:107:7 | b1 | provenance | | -| main.rs:109:36:109:37 | b1 | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | -| main.rs:113:6:113:7 | b2 | main.rs:115:36:115:37 | b2 | provenance | | +| main.rs:113:6:113:7 | b2 | main.rs:115:36:115:37 | b2 | provenance | Sink:MaD:2 | +| main.rs:113:11:113:52 | ... .metadata() | main.rs:113:11:113:52 | ... .metadata() [Ok] | provenance | Src:MaD:7 | | main.rs:113:11:113:52 | ... .metadata() [Ok] | main.rs:113:11:113:61 | ... .unwrap() | provenance | MaD:12 | | main.rs:113:11:113:61 | ... .unwrap() | main.rs:113:11:113:71 | ... .is_file() | provenance | MaD:15 | | main.rs:113:11:113:71 | ... .is_file() | main.rs:113:6:113:7 | b2 | provenance | | -| main.rs:113:43:113:50 | metadata | main.rs:113:11:113:52 | ... .metadata() [Ok] | provenance | Src:MaD:7 | -| main.rs:115:36:115:37 | b2 | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | -| main.rs:119:6:119:7 | b3 | main.rs:121:36:121:37 | b3 | provenance | | -| main.rs:119:11:119:27 | ...::metadata | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | provenance | Src:MaD:9 | +| main.rs:119:6:119:7 | b3 | main.rs:121:36:121:37 | b3 | provenance | Sink:MaD:2 | +| main.rs:119:11:119:38 | ...::metadata(...) | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | provenance | Src:MaD:9 | | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | main.rs:119:11:119:47 | ... .unwrap() | provenance | MaD:12 | | main.rs:119:11:119:47 | ... .unwrap() | main.rs:119:11:119:56 | ... .is_dir() | provenance | MaD:14 | | main.rs:119:11:119:56 | ... .is_dir() | main.rs:119:6:119:7 | b3 | provenance | | -| main.rs:121:36:121:37 | b3 | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:129:6:129:10 | input | main.rs:130:2:130:6 | input | provenance | | -| main.rs:129:14:129:27 | ...::stdin | main.rs:129:14:129:29 | ...::stdin(...) | provenance | Src:MaD:10 MaD:10 | -| main.rs:129:14:129:29 | ...::stdin(...) | main.rs:129:6:129:10 | input | provenance | | +| main.rs:129:14:129:29 | ...::stdin(...) | main.rs:129:6:129:10 | input | provenance | Src:MaD:10 | | main.rs:130:2:130:6 | input | main.rs:130:18:130:32 | [post] &mut input_line [&ref] | provenance | MaD:16 | | main.rs:130:18:130:32 | [post] &mut input_line [&ref] | main.rs:130:23:130:32 | [post] input_line | provenance | | | main.rs:130:23:130:32 | [post] input_line | main.rs:132:17:132:26 | input_line | provenance | | -| main.rs:132:6:132:7 | b4 | main.rs:134:36:134:37 | b4 | provenance | | +| main.rs:132:6:132:7 | b4 | main.rs:134:36:134:37 | b4 | provenance | Sink:MaD:2 | | main.rs:132:17:132:26 | input_line | main.rs:132:17:132:42 | input_line.parse() [Ok] | provenance | MaD:11 | | main.rs:132:17:132:42 | input_line.parse() [Ok] | main.rs:132:17:132:59 | ... .unwrap_or(...) | provenance | MaD:13 | | main.rs:132:17:132:59 | ... .unwrap_or(...) | main.rs:132:6:132:7 | b4 | provenance | | -| main.rs:134:36:134:37 | b4 | main.rs:134:4:134:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | -| main.rs:144:6:144:7 | b6 | main.rs:146:36:146:37 | b6 | provenance | | +| main.rs:144:6:144:7 | b6 | main.rs:146:36:146:37 | b6 | provenance | Sink:MaD:2 | | main.rs:144:39:144:42 | true | main.rs:144:6:144:7 | b6 | provenance | | -| main.rs:146:36:146:37 | b6 | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:154:17:154:20 | true | main.rs:73:19:73:40 | ...: bool | provenance | | models | 1 | Sink: ::danger_accept_invalid_certs; Argument[0]; disable-certificate | @@ -86,59 +77,52 @@ models | 15 | Summary: ::is_file; Argument[self].Reference; ReturnValue; taint | | 16 | Summary: ::read_line; Argument[self].Reference; Argument[0].Reference; taint | nodes -| main.rs:4:4:4:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:4:32:4:35 | true | semmle.label | true | -| main.rs:9:4:9:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | +| main.rs:4:32:4:35 | true | semmle.label | true | +| main.rs:9:36:9:39 | true | semmle.label | true | | main.rs:9:36:9:39 | true | semmle.label | true | -| main.rs:16:4:16:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:16:32:16:35 | true | semmle.label | true | -| main.rs:17:4:17:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | +| main.rs:16:32:16:35 | true | semmle.label | true | | main.rs:17:36:17:39 | true | semmle.label | true | -| main.rs:37:4:37:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | +| main.rs:17:36:17:39 | true | semmle.label | true | +| main.rs:37:32:37:35 | true | semmle.label | true | | main.rs:37:32:37:35 | true | semmle.label | true | -| main.rs:42:4:42:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:42:36:42:39 | true | semmle.label | true | -| main.rs:47:4:47:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | +| main.rs:42:36:42:39 | true | semmle.label | true | +| main.rs:47:32:47:35 | true | semmle.label | true | | main.rs:47:32:47:35 | true | semmle.label | true | -| main.rs:48:4:48:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:48:36:48:39 | true | semmle.label | true | -| main.rs:55:4:55:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | +| main.rs:48:36:48:39 | true | semmle.label | true | | main.rs:55:32:55:35 | true | semmle.label | true | -| main.rs:56:4:56:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | +| main.rs:55:32:55:35 | true | semmle.label | true | +| main.rs:56:36:56:39 | true | semmle.label | true | | main.rs:56:36:56:39 | true | semmle.label | true | | main.rs:73:19:73:40 | ...: bool | semmle.label | ...: bool | | main.rs:74:6:74:11 | always | semmle.label | always | | main.rs:74:15:74:18 | true | semmle.label | true | | main.rs:75:6:75:18 | mut sometimes | semmle.label | mut sometimes | | main.rs:75:22:75:25 | true | semmle.label | true | -| main.rs:83:4:83:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:83:32:83:37 | always | semmle.label | always | -| main.rs:88:4:88:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:88:32:88:40 | sometimes | semmle.label | sometimes | -| main.rs:93:4:93:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:93:32:93:47 | sometimes_global | semmle.label | sometimes_global | | main.rs:107:6:107:7 | b1 | semmle.label | b1 | -| main.rs:107:17:107:31 | ...::exists | semmle.label | ...::exists | +| main.rs:107:17:107:42 | ...::exists(...) | semmle.label | ...::exists(...) | | main.rs:107:17:107:42 | ...::exists(...) [Ok] | semmle.label | ...::exists(...) [Ok] | | main.rs:107:17:107:51 | ... .unwrap() | semmle.label | ... .unwrap() | -| main.rs:109:4:109:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:109:36:109:37 | b1 | semmle.label | b1 | | main.rs:113:6:113:7 | b2 | semmle.label | b2 | +| main.rs:113:11:113:52 | ... .metadata() | semmle.label | ... .metadata() | | main.rs:113:11:113:52 | ... .metadata() [Ok] | semmle.label | ... .metadata() [Ok] | | main.rs:113:11:113:61 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:113:11:113:71 | ... .is_file() | semmle.label | ... .is_file() | -| main.rs:113:43:113:50 | metadata | semmle.label | metadata | -| main.rs:115:4:115:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:115:36:115:37 | b2 | semmle.label | b2 | | main.rs:119:6:119:7 | b3 | semmle.label | b3 | -| main.rs:119:11:119:27 | ...::metadata | semmle.label | ...::metadata | +| main.rs:119:11:119:38 | ...::metadata(...) | semmle.label | ...::metadata(...) | | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | semmle.label | ...::metadata(...) [Ok] | | main.rs:119:11:119:47 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:119:11:119:56 | ... .is_dir() | semmle.label | ... .is_dir() | -| main.rs:121:4:121:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:121:36:121:37 | b3 | semmle.label | b3 | | main.rs:129:6:129:10 | input | semmle.label | input | -| main.rs:129:14:129:27 | ...::stdin | semmle.label | ...::stdin | | main.rs:129:14:129:29 | ...::stdin(...) | semmle.label | ...::stdin(...) | | main.rs:130:2:130:6 | input | semmle.label | input | | main.rs:130:18:130:32 | [post] &mut input_line [&ref] | semmle.label | [post] &mut input_line [&ref] | @@ -147,11 +131,9 @@ nodes | main.rs:132:17:132:26 | input_line | semmle.label | input_line | | main.rs:132:17:132:42 | input_line.parse() [Ok] | semmle.label | input_line.parse() [Ok] | | main.rs:132:17:132:59 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| main.rs:134:4:134:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:134:36:134:37 | b4 | semmle.label | b4 | | main.rs:144:6:144:7 | b6 | semmle.label | b6 | | main.rs:144:39:144:42 | true | semmle.label | true | -| main.rs:146:4:146:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:146:36:146:37 | b6 | semmle.label | b6 | | main.rs:154:17:154:20 | true | semmle.label | true | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-311/CleartextTransmission.expected b/rust/ql/test/query-tests/security/CWE-311/CleartextTransmission.expected index 5807220eef0c..9a12c86d010f 100644 --- a/rust/ql/test/query-tests/security/CWE-311/CleartextTransmission.expected +++ b/rust/ql/test/query-tests/security/CWE-311/CleartextTransmission.expected @@ -1,50 +1,45 @@ #select -| main.rs:7:5:7:26 | ...::get | main.rs:6:50:6:57 | password | main.rs:7:5:7:26 | ...::get | This '...::get' operation transmits data which may contain unencrypted sensitive data from $@. | main.rs:6:50:6:57 | password | password | -| main.rs:14:5:14:26 | ...::get | main.rs:12:50:12:57 | password | main.rs:14:5:14:26 | ...::get | This '...::get' operation transmits data which may contain unencrypted sensitive data from $@. | main.rs:12:50:12:57 | password | password | -| main.rs:21:12:21:15 | post | main.rs:19:50:19:57 | password | main.rs:21:12:21:15 | post | This 'post' operation transmits data which may contain unencrypted sensitive data from $@. | main.rs:19:50:19:57 | password | password | -| main.rs:28:12:28:18 | request | main.rs:26:50:26:57 | password | main.rs:28:12:28:18 | request | This 'request' operation transmits data which may contain unencrypted sensitive data from $@. | main.rs:26:50:26:57 | password | password | -| main.rs:35:12:35:18 | request | main.rs:33:50:33:57 | password | main.rs:35:12:35:18 | request | This 'request' operation transmits data which may contain unencrypted sensitive data from $@. | main.rs:33:50:33:57 | password | password | +| main.rs:7:28:7:30 | url | main.rs:6:50:6:57 | password | main.rs:7:28:7:30 | url | This 'url' operation transmits data which may contain unencrypted sensitive data from $@. | main.rs:6:50:6:57 | password | password | +| main.rs:14:28:14:30 | url | main.rs:12:50:12:57 | password | main.rs:14:28:14:30 | url | This 'url' operation transmits data which may contain unencrypted sensitive data from $@. | main.rs:12:50:12:57 | password | password | +| main.rs:21:17:21:19 | url | main.rs:19:50:19:57 | password | main.rs:21:17:21:19 | url | This 'url' operation transmits data which may contain unencrypted sensitive data from $@. | main.rs:19:50:19:57 | password | password | +| main.rs:28:33:28:35 | url | main.rs:26:50:26:57 | password | main.rs:28:33:28:35 | url | This 'url' operation transmits data which may contain unencrypted sensitive data from $@. | main.rs:26:50:26:57 | password | password | +| main.rs:35:33:35:35 | url | main.rs:33:50:33:57 | password | main.rs:35:33:35:35 | url | This 'url' operation transmits data which may contain unencrypted sensitive data from $@. | main.rs:33:50:33:57 | password | password | edges -| main.rs:6:9:6:11 | url | main.rs:7:28:7:30 | url | provenance | | +| main.rs:6:9:6:11 | url | main.rs:7:28:7:30 | url | provenance | Sink:MaD:4 | | main.rs:6:23:6:57 | ...::format(...) | main.rs:6:23:6:57 | { ... } | provenance | | | main.rs:6:23:6:57 | ...::must_use(...) | main.rs:6:9:6:11 | url | provenance | | | main.rs:6:23:6:57 | MacroExpr | main.rs:6:23:6:57 | ...::format(...) | provenance | MaD:7 | | main.rs:6:23:6:57 | { ... } | main.rs:6:23:6:57 | ...::must_use(...) | provenance | MaD:8 | | main.rs:6:50:6:57 | password | main.rs:6:23:6:57 | MacroExpr | provenance | | -| main.rs:7:28:7:30 | url | main.rs:7:5:7:26 | ...::get | provenance | MaD:4 Sink:MaD:4 | | main.rs:12:9:12:15 | address | main.rs:13:27:13:33 | address | provenance | | | main.rs:12:27:12:59 | ...::format(...) | main.rs:12:27:12:59 | { ... } | provenance | | | main.rs:12:27:12:59 | ...::must_use(...) | main.rs:12:9:12:15 | address | provenance | | | main.rs:12:27:12:59 | MacroExpr | main.rs:12:27:12:59 | ...::format(...) | provenance | MaD:7 | | main.rs:12:27:12:59 | { ... } | main.rs:12:27:12:59 | ...::must_use(...) | provenance | MaD:8 | | main.rs:12:50:12:57 | password | main.rs:12:27:12:59 | MacroExpr | provenance | | -| main.rs:13:9:13:11 | url | main.rs:14:28:14:30 | url | provenance | | +| main.rs:13:9:13:11 | url | main.rs:14:28:14:30 | url | provenance | Sink:MaD:4 | | main.rs:13:15:13:34 | ...::parse(...) [Ok] | main.rs:13:15:13:43 | ... .unwrap() | provenance | MaD:5 | | main.rs:13:15:13:43 | ... .unwrap() | main.rs:13:9:13:11 | url | provenance | | | main.rs:13:26:13:33 | &address [&ref] | main.rs:13:15:13:34 | ...::parse(...) [Ok] | provenance | MaD:6 | | main.rs:13:27:13:33 | address | main.rs:13:26:13:33 | &address [&ref] | provenance | | -| main.rs:14:28:14:30 | url | main.rs:14:5:14:26 | ...::get | provenance | MaD:4 Sink:MaD:4 | -| main.rs:19:9:19:11 | url | main.rs:21:17:21:19 | url | provenance | | +| main.rs:19:9:19:11 | url | main.rs:21:17:21:19 | url | provenance | Sink:MaD:1 | | main.rs:19:23:19:57 | ...::format(...) | main.rs:19:23:19:57 | { ... } | provenance | | | main.rs:19:23:19:57 | ...::must_use(...) | main.rs:19:9:19:11 | url | provenance | | | main.rs:19:23:19:57 | MacroExpr | main.rs:19:23:19:57 | ...::format(...) | provenance | MaD:7 | | main.rs:19:23:19:57 | { ... } | main.rs:19:23:19:57 | ...::must_use(...) | provenance | MaD:8 | | main.rs:19:50:19:57 | password | main.rs:19:23:19:57 | MacroExpr | provenance | | -| main.rs:21:17:21:19 | url | main.rs:21:12:21:15 | post | provenance | MaD:1 Sink:MaD:1 | -| main.rs:26:9:26:11 | url | main.rs:28:33:28:35 | url | provenance | | +| main.rs:26:9:26:11 | url | main.rs:28:33:28:35 | url | provenance | Sink:MaD:3 | | main.rs:26:23:26:57 | ...::format(...) | main.rs:26:23:26:57 | { ... } | provenance | | | main.rs:26:23:26:57 | ...::must_use(...) | main.rs:26:9:26:11 | url | provenance | | | main.rs:26:23:26:57 | MacroExpr | main.rs:26:23:26:57 | ...::format(...) | provenance | MaD:7 | | main.rs:26:23:26:57 | { ... } | main.rs:26:23:26:57 | ...::must_use(...) | provenance | MaD:8 | | main.rs:26:50:26:57 | password | main.rs:26:23:26:57 | MacroExpr | provenance | | -| main.rs:28:33:28:35 | url | main.rs:28:12:28:18 | request | provenance | MaD:3 Sink:MaD:3 | -| main.rs:33:9:33:11 | url | main.rs:35:33:35:35 | url | provenance | | +| main.rs:33:9:33:11 | url | main.rs:35:33:35:35 | url | provenance | Sink:MaD:2 | | main.rs:33:23:33:57 | ...::format(...) | main.rs:33:23:33:57 | { ... } | provenance | | | main.rs:33:23:33:57 | ...::must_use(...) | main.rs:33:9:33:11 | url | provenance | | | main.rs:33:23:33:57 | MacroExpr | main.rs:33:23:33:57 | ...::format(...) | provenance | MaD:7 | | main.rs:33:23:33:57 | { ... } | main.rs:33:23:33:57 | ...::must_use(...) | provenance | MaD:8 | | main.rs:33:50:33:57 | password | main.rs:33:23:33:57 | MacroExpr | provenance | | -| main.rs:35:33:35:35 | url | main.rs:35:12:35:18 | request | provenance | MaD:2 Sink:MaD:2 | models | 1 | Sink: ::post; Argument[0]; request-url | | 2 | Sink: ::request; Argument[1]; request-url | @@ -61,7 +56,6 @@ nodes | main.rs:6:23:6:57 | MacroExpr | semmle.label | MacroExpr | | main.rs:6:23:6:57 | { ... } | semmle.label | { ... } | | main.rs:6:50:6:57 | password | semmle.label | password | -| main.rs:7:5:7:26 | ...::get | semmle.label | ...::get | | main.rs:7:28:7:30 | url | semmle.label | url | | main.rs:12:9:12:15 | address | semmle.label | address | | main.rs:12:27:12:59 | ...::format(...) | semmle.label | ...::format(...) | @@ -74,7 +68,6 @@ nodes | main.rs:13:15:13:43 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:13:26:13:33 | &address [&ref] | semmle.label | &address [&ref] | | main.rs:13:27:13:33 | address | semmle.label | address | -| main.rs:14:5:14:26 | ...::get | semmle.label | ...::get | | main.rs:14:28:14:30 | url | semmle.label | url | | main.rs:19:9:19:11 | url | semmle.label | url | | main.rs:19:23:19:57 | ...::format(...) | semmle.label | ...::format(...) | @@ -82,7 +75,6 @@ nodes | main.rs:19:23:19:57 | MacroExpr | semmle.label | MacroExpr | | main.rs:19:23:19:57 | { ... } | semmle.label | { ... } | | main.rs:19:50:19:57 | password | semmle.label | password | -| main.rs:21:12:21:15 | post | semmle.label | post | | main.rs:21:17:21:19 | url | semmle.label | url | | main.rs:26:9:26:11 | url | semmle.label | url | | main.rs:26:23:26:57 | ...::format(...) | semmle.label | ...::format(...) | @@ -90,7 +82,6 @@ nodes | main.rs:26:23:26:57 | MacroExpr | semmle.label | MacroExpr | | main.rs:26:23:26:57 | { ... } | semmle.label | { ... } | | main.rs:26:50:26:57 | password | semmle.label | password | -| main.rs:28:12:28:18 | request | semmle.label | request | | main.rs:28:33:28:35 | url | semmle.label | url | | main.rs:33:9:33:11 | url | semmle.label | url | | main.rs:33:23:33:57 | ...::format(...) | semmle.label | ...::format(...) | @@ -98,6 +89,5 @@ nodes | main.rs:33:23:33:57 | MacroExpr | semmle.label | MacroExpr | | main.rs:33:23:33:57 | { ... } | semmle.label | { ... } | | main.rs:33:50:33:57 | password | semmle.label | password | -| main.rs:35:12:35:18 | request | semmle.label | request | | main.rs:35:33:35:35 | url | semmle.label | url | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected index 61de9de03b58..3a96605753f6 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected @@ -1,167 +1,140 @@ #select -| test_logging.rs:42:5:42:10 | ...::log | test_logging.rs:42:28:42:35 | password | test_logging.rs:42:5:42:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:42:28:42:35 | password | password | -| test_logging.rs:43:5:43:10 | ...::log | test_logging.rs:43:28:43:35 | password | test_logging.rs:43:5:43:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:43:28:43:35 | password | password | -| test_logging.rs:44:5:44:9 | ...::log | test_logging.rs:44:27:44:34 | password | test_logging.rs:44:5:44:9 | ...::log | This operation writes $@ to a log file. | test_logging.rs:44:27:44:34 | password | password | -| test_logging.rs:45:5:45:10 | ...::log | test_logging.rs:45:28:45:35 | password | test_logging.rs:45:5:45:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:45:28:45:35 | password | password | -| test_logging.rs:46:5:46:9 | ...::log | test_logging.rs:46:27:46:34 | password | test_logging.rs:46:5:46:9 | ...::log | This operation writes $@ to a log file. | test_logging.rs:46:27:46:34 | password | password | -| test_logging.rs:47:5:47:8 | ...::log | test_logging.rs:47:40:47:47 | password | test_logging.rs:47:5:47:8 | ...::log | This operation writes $@ to a log file. | test_logging.rs:47:40:47:47 | password | password | -| test_logging.rs:52:5:52:10 | ...::log | test_logging.rs:52:28:52:35 | password | test_logging.rs:52:5:52:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:52:28:52:35 | password | password | -| test_logging.rs:54:5:54:10 | ...::log | test_logging.rs:54:41:54:48 | password | test_logging.rs:54:5:54:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:54:41:54:48 | password | password | -| test_logging.rs:56:5:56:10 | ...::log | test_logging.rs:56:39:56:46 | password | test_logging.rs:56:5:56:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:56:39:56:46 | password | password | -| test_logging.rs:57:5:57:10 | ...::log | test_logging.rs:57:24:57:31 | password | test_logging.rs:57:5:57:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:57:24:57:31 | password | password | -| test_logging.rs:58:5:58:10 | ...::log | test_logging.rs:58:24:58:31 | password | test_logging.rs:58:5:58:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:58:24:58:31 | password | password | -| test_logging.rs:60:5:60:10 | ...::log | test_logging.rs:60:46:60:53 | password | test_logging.rs:60:5:60:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:60:46:60:53 | password | password | -| test_logging.rs:61:5:61:10 | ...::log | test_logging.rs:61:21:61:28 | password | test_logging.rs:61:5:61:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:61:21:61:28 | password | password | -| test_logging.rs:65:5:65:8 | ...::log | test_logging.rs:65:40:65:47 | password | test_logging.rs:65:5:65:8 | ...::log | This operation writes $@ to a log file. | test_logging.rs:65:40:65:47 | password | password | -| test_logging.rs:67:5:67:8 | ...::log | test_logging.rs:67:58:67:65 | password | test_logging.rs:67:5:67:8 | ...::log | This operation writes $@ to a log file. | test_logging.rs:67:58:67:65 | password | password | -| test_logging.rs:68:5:68:8 | ...::log | test_logging.rs:68:19:68:26 | password | test_logging.rs:68:5:68:8 | ...::log | This operation writes $@ to a log file. | test_logging.rs:68:19:68:26 | password | password | -| test_logging.rs:72:5:72:10 | ...::log | test_logging.rs:72:39:72:46 | password | test_logging.rs:72:5:72:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:72:39:72:46 | password | password | -| test_logging.rs:74:5:74:10 | ...::log | test_logging.rs:74:57:74:64 | password | test_logging.rs:74:5:74:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:74:57:74:64 | password | password | -| test_logging.rs:75:5:75:10 | ...::log | test_logging.rs:75:21:75:28 | password | test_logging.rs:75:5:75:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:75:21:75:28 | password | password | -| test_logging.rs:76:5:76:10 | ...::log | test_logging.rs:76:39:76:46 | password | test_logging.rs:76:5:76:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:76:39:76:46 | password | password | -| test_logging.rs:82:5:82:10 | ...::log | test_logging.rs:82:36:82:43 | password | test_logging.rs:82:5:82:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:82:36:82:43 | password | password | -| test_logging.rs:84:5:84:10 | ...::log | test_logging.rs:84:54:84:61 | password | test_logging.rs:84:5:84:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:84:54:84:61 | password | password | -| test_logging.rs:85:5:85:10 | ...::log | test_logging.rs:85:21:85:28 | password | test_logging.rs:85:5:85:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:85:21:85:28 | password | password | -| test_logging.rs:86:5:86:10 | ...::log | test_logging.rs:86:36:86:43 | password | test_logging.rs:86:5:86:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:86:36:86:43 | password | password | -| test_logging.rs:94:5:94:9 | ...::log | test_logging.rs:93:15:93:22 | password | test_logging.rs:94:5:94:9 | ...::log | This operation writes $@ to a log file. | test_logging.rs:93:15:93:22 | password | password | -| test_logging.rs:97:5:97:9 | ...::log | test_logging.rs:96:42:96:49 | password | test_logging.rs:97:5:97:9 | ...::log | This operation writes $@ to a log file. | test_logging.rs:96:42:96:49 | password | password | -| test_logging.rs:100:5:100:9 | ...::log | test_logging.rs:99:38:99:45 | password | test_logging.rs:100:5:100:9 | ...::log | This operation writes $@ to a log file. | test_logging.rs:99:38:99:45 | password | password | -| test_logging.rs:118:5:118:10 | ...::log | test_logging.rs:118:28:118:41 | get_password(...) | test_logging.rs:118:5:118:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:118:28:118:41 | get_password(...) | get_password(...) | -| test_logging.rs:131:5:131:10 | ...::log | test_logging.rs:129:25:129:32 | password | test_logging.rs:131:5:131:10 | ...::log | This operation writes $@ to a log file. | test_logging.rs:129:25:129:32 | password | password | -| test_logging.rs:141:5:141:9 | ...::log | test_logging.rs:141:27:141:37 | s1.password | test_logging.rs:141:5:141:9 | ...::log | This operation writes $@ to a log file. | test_logging.rs:141:27:141:37 | s1.password | s1.password | -| test_logging.rs:151:5:151:9 | ...::log | test_logging.rs:151:27:151:37 | s2.password | test_logging.rs:151:5:151:9 | ...::log | This operation writes $@ to a log file. | test_logging.rs:151:27:151:37 | s2.password | s2.password | -| test_logging.rs:176:22:176:31 | log_expect | test_logging.rs:176:70:176:78 | password2 | test_logging.rs:176:22:176:31 | log_expect | This operation writes $@ to a log file. | test_logging.rs:176:70:176:78 | password2 | password2 | -| test_logging.rs:180:24:180:33 | log_expect | test_logging.rs:180:72:180:80 | password2 | test_logging.rs:180:24:180:33 | log_expect | This operation writes $@ to a log file. | test_logging.rs:180:72:180:80 | password2 | password2 | -| test_logging.rs:184:25:184:34 | log_expect | test_logging.rs:183:51:183:59 | password2 | test_logging.rs:184:25:184:34 | log_expect | This operation writes $@ to a log file. | test_logging.rs:183:51:183:59 | password2 | password2 | -| test_logging.rs:188:25:188:34 | log_unwrap | test_logging.rs:187:51:187:59 | password2 | test_logging.rs:188:25:188:34 | log_unwrap | This operation writes $@ to a log file. | test_logging.rs:187:51:187:59 | password2 | password2 | -| test_logging.rs:192:5:192:10 | ...::_print | test_logging.rs:192:30:192:37 | password | test_logging.rs:192:5:192:10 | ...::_print | This operation writes $@ to a log file. | test_logging.rs:192:30:192:37 | password | password | -| test_logging.rs:193:5:193:12 | ...::_print | test_logging.rs:193:30:193:37 | password | test_logging.rs:193:5:193:12 | ...::_print | This operation writes $@ to a log file. | test_logging.rs:193:30:193:37 | password | password | -| test_logging.rs:194:5:194:11 | ...::_eprint | test_logging.rs:194:31:194:38 | password | test_logging.rs:194:5:194:11 | ...::_eprint | This operation writes $@ to a log file. | test_logging.rs:194:31:194:38 | password | password | -| test_logging.rs:195:5:195:13 | ...::_eprint | test_logging.rs:195:31:195:38 | password | test_logging.rs:195:5:195:13 | ...::_eprint | This operation writes $@ to a log file. | test_logging.rs:195:31:195:38 | password | password | -| test_logging.rs:199:13:199:18 | ...::panic_fmt | test_logging.rs:199:36:199:43 | password | test_logging.rs:199:13:199:18 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:199:36:199:43 | password | password | -| test_logging.rs:202:13:202:17 | ...::panic_fmt | test_logging.rs:202:35:202:42 | password | test_logging.rs:202:13:202:17 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:202:35:202:42 | password | password | -| test_logging.rs:205:13:205:26 | ...::panic_fmt | test_logging.rs:205:44:205:51 | password | test_logging.rs:205:13:205:26 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:205:44:205:51 | password | password | -| test_logging.rs:208:13:208:24 | ...::panic_fmt | test_logging.rs:208:42:208:49 | password | test_logging.rs:208:13:208:24 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:208:42:208:49 | password | password | -| test_logging.rs:211:13:211:19 | ...::panic_fmt | test_logging.rs:211:44:211:51 | password | test_logging.rs:211:13:211:19 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:211:44:211:51 | password | password | -| test_logging.rs:214:13:214:22 | ...::assert_failed | test_logging.rs:214:46:214:53 | password | test_logging.rs:214:13:214:22 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:214:46:214:53 | password | password | -| test_logging.rs:217:13:217:22 | ...::assert_failed | test_logging.rs:217:46:217:53 | password | test_logging.rs:217:13:217:22 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:217:46:217:53 | password | password | -| test_logging.rs:220:13:220:25 | ...::panic_fmt | test_logging.rs:220:50:220:57 | password | test_logging.rs:220:13:220:25 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:220:50:220:57 | password | password | -| test_logging.rs:223:13:223:28 | ...::assert_failed | test_logging.rs:223:52:223:59 | password | test_logging.rs:223:13:223:28 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:223:52:223:59 | password | password | -| test_logging.rs:226:13:226:28 | ...::assert_failed | test_logging.rs:226:52:226:59 | password | test_logging.rs:226:13:226:28 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:226:52:226:59 | password | password | -| test_logging.rs:229:23:229:28 | expect | test_logging.rs:229:54:229:61 | password | test_logging.rs:229:23:229:28 | expect | This operation writes $@ to a log file. | test_logging.rs:229:54:229:61 | password | password | -| test_logging.rs:242:10:242:14 | write | test_logging.rs:242:42:242:49 | password | test_logging.rs:242:10:242:14 | write | This operation writes $@ to a log file. | test_logging.rs:242:42:242:49 | password | password | -| test_logging.rs:245:10:245:18 | write_all | test_logging.rs:245:46:245:53 | password | test_logging.rs:245:10:245:18 | write_all | This operation writes $@ to a log file. | test_logging.rs:245:46:245:53 | password | password | -| test_logging.rs:248:9:248:13 | write | test_logging.rs:248:41:248:48 | password | test_logging.rs:248:9:248:13 | write | This operation writes $@ to a log file. | test_logging.rs:248:41:248:48 | password | password | -| test_logging.rs:251:9:251:13 | write | test_logging.rs:251:41:251:48 | password | test_logging.rs:251:9:251:13 | write | This operation writes $@ to a log file. | test_logging.rs:251:41:251:48 | password | password | +| test_logging.rs:42:12:42:35 | MacroExpr | test_logging.rs:42:28:42:35 | password | test_logging.rs:42:12:42:35 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:42:28:42:35 | password | password | +| test_logging.rs:43:12:43:35 | MacroExpr | test_logging.rs:43:28:43:35 | password | test_logging.rs:43:12:43:35 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:43:28:43:35 | password | password | +| test_logging.rs:44:11:44:34 | MacroExpr | test_logging.rs:44:27:44:34 | password | test_logging.rs:44:11:44:34 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:44:27:44:34 | password | password | +| test_logging.rs:45:12:45:35 | MacroExpr | test_logging.rs:45:28:45:35 | password | test_logging.rs:45:12:45:35 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:45:28:45:35 | password | password | +| test_logging.rs:46:11:46:34 | MacroExpr | test_logging.rs:46:27:46:34 | password | test_logging.rs:46:11:46:34 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:46:27:46:34 | password | password | +| test_logging.rs:47:24:47:47 | MacroExpr | test_logging.rs:47:40:47:47 | password | test_logging.rs:47:24:47:47 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:47:40:47:47 | password | password | +| test_logging.rs:52:12:52:35 | MacroExpr | test_logging.rs:52:28:52:35 | password | test_logging.rs:52:12:52:35 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:52:28:52:35 | password | password | +| test_logging.rs:54:12:54:48 | MacroExpr | test_logging.rs:54:41:54:48 | password | test_logging.rs:54:12:54:48 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:54:41:54:48 | password | password | +| test_logging.rs:56:12:56:46 | MacroExpr | test_logging.rs:56:39:56:46 | password | test_logging.rs:56:12:56:46 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:56:39:56:46 | password | password | +| test_logging.rs:57:12:57:33 | MacroExpr | test_logging.rs:57:24:57:31 | password | test_logging.rs:57:12:57:33 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:57:24:57:31 | password | password | +| test_logging.rs:58:12:58:35 | MacroExpr | test_logging.rs:58:24:58:31 | password | test_logging.rs:58:12:58:35 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:58:24:58:31 | password | password | +| test_logging.rs:60:30:60:53 | MacroExpr | test_logging.rs:60:46:60:53 | password | test_logging.rs:60:30:60:53 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:60:46:60:53 | password | password | +| test_logging.rs:61:20:61:28 | &... | test_logging.rs:61:21:61:28 | password | test_logging.rs:61:20:61:28 | &... | This operation writes $@ to a log file. | test_logging.rs:61:21:61:28 | password | password | +| test_logging.rs:65:24:65:47 | MacroExpr | test_logging.rs:65:40:65:47 | password | test_logging.rs:65:24:65:47 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:65:40:65:47 | password | password | +| test_logging.rs:67:42:67:65 | MacroExpr | test_logging.rs:67:58:67:65 | password | test_logging.rs:67:42:67:65 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:67:58:67:65 | password | password | +| test_logging.rs:68:18:68:26 | &... | test_logging.rs:68:19:68:26 | password | test_logging.rs:68:18:68:26 | &... | This operation writes $@ to a log file. | test_logging.rs:68:19:68:26 | password | password | +| test_logging.rs:72:23:72:46 | MacroExpr | test_logging.rs:72:39:72:46 | password | test_logging.rs:72:23:72:46 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:72:39:72:46 | password | password | +| test_logging.rs:74:41:74:64 | MacroExpr | test_logging.rs:74:57:74:64 | password | test_logging.rs:74:41:74:64 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:74:57:74:64 | password | password | +| test_logging.rs:75:20:75:28 | &... | test_logging.rs:75:21:75:28 | password | test_logging.rs:75:20:75:28 | &... | This operation writes $@ to a log file. | test_logging.rs:75:21:75:28 | password | password | +| test_logging.rs:76:23:76:46 | MacroExpr | test_logging.rs:76:39:76:46 | password | test_logging.rs:76:23:76:46 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:76:39:76:46 | password | password | +| test_logging.rs:82:20:82:43 | MacroExpr | test_logging.rs:82:36:82:43 | password | test_logging.rs:82:20:82:43 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:82:36:82:43 | password | password | +| test_logging.rs:84:38:84:61 | MacroExpr | test_logging.rs:84:54:84:61 | password | test_logging.rs:84:38:84:61 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:84:54:84:61 | password | password | +| test_logging.rs:85:20:85:28 | &... | test_logging.rs:85:21:85:28 | password | test_logging.rs:85:20:85:28 | &... | This operation writes $@ to a log file. | test_logging.rs:85:21:85:28 | password | password | +| test_logging.rs:86:20:86:43 | MacroExpr | test_logging.rs:86:36:86:43 | password | test_logging.rs:86:20:86:43 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:86:36:86:43 | password | password | +| test_logging.rs:94:11:94:28 | MacroExpr | test_logging.rs:93:15:93:22 | password | test_logging.rs:94:11:94:28 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:93:15:93:22 | password | password | +| test_logging.rs:97:11:97:18 | MacroExpr | test_logging.rs:96:42:96:49 | password | test_logging.rs:97:11:97:18 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:96:42:96:49 | password | password | +| test_logging.rs:100:11:100:18 | MacroExpr | test_logging.rs:99:38:99:45 | password | test_logging.rs:100:11:100:18 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:99:38:99:45 | password | password | +| test_logging.rs:118:12:118:41 | MacroExpr | test_logging.rs:118:28:118:41 | get_password(...) | test_logging.rs:118:12:118:41 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:118:28:118:41 | get_password(...) | get_password(...) | +| test_logging.rs:131:12:131:31 | MacroExpr | test_logging.rs:129:25:129:32 | password | test_logging.rs:131:12:131:31 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:129:25:129:32 | password | password | +| test_logging.rs:141:11:141:37 | MacroExpr | test_logging.rs:141:27:141:37 | s1.password | test_logging.rs:141:11:141:37 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:141:27:141:37 | s1.password | s1.password | +| test_logging.rs:151:11:151:37 | MacroExpr | test_logging.rs:151:27:151:37 | s2.password | test_logging.rs:151:11:151:37 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:151:27:151:37 | s2.password | s2.password | +| test_logging.rs:176:33:176:79 | &... | test_logging.rs:176:70:176:78 | password2 | test_logging.rs:176:33:176:79 | &... | This operation writes $@ to a log file. | test_logging.rs:176:70:176:78 | password2 | password2 | +| test_logging.rs:180:35:180:81 | &... | test_logging.rs:180:72:180:80 | password2 | test_logging.rs:180:35:180:81 | &... | This operation writes $@ to a log file. | test_logging.rs:180:72:180:80 | password2 | password2 | +| test_logging.rs:184:13:184:23 | err_result2 | test_logging.rs:183:51:183:59 | password2 | test_logging.rs:184:13:184:23 | err_result2 | This operation writes $@ to a log file. | test_logging.rs:183:51:183:59 | password2 | password2 | +| test_logging.rs:188:13:188:23 | err_result3 | test_logging.rs:187:51:187:59 | password2 | test_logging.rs:188:13:188:23 | err_result3 | This operation writes $@ to a log file. | test_logging.rs:187:51:187:59 | password2 | password2 | +| test_logging.rs:192:12:192:37 | MacroExpr | test_logging.rs:192:30:192:37 | password | test_logging.rs:192:12:192:37 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:192:30:192:37 | password | password | +| test_logging.rs:193:14:193:37 | MacroExpr | test_logging.rs:193:30:193:37 | password | test_logging.rs:193:14:193:37 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:193:30:193:37 | password | password | +| test_logging.rs:194:13:194:38 | MacroExpr | test_logging.rs:194:31:194:38 | password | test_logging.rs:194:13:194:38 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:194:31:194:38 | password | password | +| test_logging.rs:195:15:195:38 | MacroExpr | test_logging.rs:195:31:195:38 | password | test_logging.rs:195:15:195:38 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:195:31:195:38 | password | password | +| test_logging.rs:199:20:199:43 | MacroExpr | test_logging.rs:199:36:199:43 | password | test_logging.rs:199:20:199:43 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:199:36:199:43 | password | password | +| test_logging.rs:202:19:202:42 | MacroExpr | test_logging.rs:202:35:202:42 | password | test_logging.rs:202:19:202:42 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:202:35:202:42 | password | password | +| test_logging.rs:205:28:205:51 | MacroExpr | test_logging.rs:205:44:205:51 | password | test_logging.rs:205:28:205:51 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:205:44:205:51 | password | password | +| test_logging.rs:208:26:208:49 | MacroExpr | test_logging.rs:208:42:208:49 | password | test_logging.rs:208:26:208:49 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:208:42:208:49 | password | password | +| test_logging.rs:211:28:211:51 | MacroExpr | test_logging.rs:211:44:211:51 | password | test_logging.rs:211:28:211:51 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:211:44:211:51 | password | password | +| test_logging.rs:214:30:214:53 | ...::Some(...) | test_logging.rs:214:46:214:53 | password | test_logging.rs:214:30:214:53 | ...::Some(...) | This operation writes $@ to a log file. | test_logging.rs:214:46:214:53 | password | password | +| test_logging.rs:217:30:217:53 | ...::Some(...) | test_logging.rs:217:46:217:53 | password | test_logging.rs:217:30:217:53 | ...::Some(...) | This operation writes $@ to a log file. | test_logging.rs:217:46:217:53 | password | password | +| test_logging.rs:220:34:220:57 | MacroExpr | test_logging.rs:220:50:220:57 | password | test_logging.rs:220:34:220:57 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:220:50:220:57 | password | password | +| test_logging.rs:223:36:223:59 | ...::Some(...) | test_logging.rs:223:52:223:59 | password | test_logging.rs:223:36:223:59 | ...::Some(...) | This operation writes $@ to a log file. | test_logging.rs:223:52:223:59 | password | password | +| test_logging.rs:226:36:226:59 | ...::Some(...) | test_logging.rs:226:52:226:59 | password | test_logging.rs:226:36:226:59 | ...::Some(...) | This operation writes $@ to a log file. | test_logging.rs:226:52:226:59 | password | password | +| test_logging.rs:229:30:229:71 | ... .as_str() | test_logging.rs:229:54:229:61 | password | test_logging.rs:229:30:229:71 | ... .as_str() | This operation writes $@ to a log file. | test_logging.rs:229:54:229:61 | password | password | +| test_logging.rs:242:16:242:61 | ... .as_bytes() | test_logging.rs:242:42:242:49 | password | test_logging.rs:242:16:242:61 | ... .as_bytes() | This operation writes $@ to a log file. | test_logging.rs:242:42:242:49 | password | password | +| test_logging.rs:245:20:245:65 | ... .as_bytes() | test_logging.rs:245:46:245:53 | password | test_logging.rs:245:20:245:65 | ... .as_bytes() | This operation writes $@ to a log file. | test_logging.rs:245:46:245:53 | password | password | +| test_logging.rs:248:15:248:60 | ... .as_bytes() | test_logging.rs:248:41:248:48 | password | test_logging.rs:248:15:248:60 | ... .as_bytes() | This operation writes $@ to a log file. | test_logging.rs:248:41:248:48 | password | password | +| test_logging.rs:251:15:251:60 | ... .as_bytes() | test_logging.rs:251:41:251:48 | password | test_logging.rs:251:15:251:60 | ... .as_bytes() | This operation writes $@ to a log file. | test_logging.rs:251:41:251:48 | password | password | edges -| test_logging.rs:42:12:42:35 | MacroExpr | test_logging.rs:42:5:42:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:42:28:42:35 | password | test_logging.rs:42:12:42:35 | MacroExpr | provenance | | -| test_logging.rs:43:12:43:35 | MacroExpr | test_logging.rs:43:5:43:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:43:28:43:35 | password | test_logging.rs:43:12:43:35 | MacroExpr | provenance | | -| test_logging.rs:44:11:44:34 | MacroExpr | test_logging.rs:44:5:44:9 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:44:27:44:34 | password | test_logging.rs:44:11:44:34 | MacroExpr | provenance | | -| test_logging.rs:45:12:45:35 | MacroExpr | test_logging.rs:45:5:45:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:45:28:45:35 | password | test_logging.rs:45:12:45:35 | MacroExpr | provenance | | -| test_logging.rs:46:11:46:34 | MacroExpr | test_logging.rs:46:5:46:9 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:46:27:46:34 | password | test_logging.rs:46:11:46:34 | MacroExpr | provenance | | -| test_logging.rs:47:24:47:47 | MacroExpr | test_logging.rs:47:5:47:8 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:47:40:47:47 | password | test_logging.rs:47:24:47:47 | MacroExpr | provenance | | -| test_logging.rs:52:12:52:35 | MacroExpr | test_logging.rs:52:5:52:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:52:28:52:35 | password | test_logging.rs:52:12:52:35 | MacroExpr | provenance | | -| test_logging.rs:54:12:54:48 | MacroExpr | test_logging.rs:54:5:54:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:54:41:54:48 | password | test_logging.rs:54:12:54:48 | MacroExpr | provenance | | -| test_logging.rs:56:12:56:46 | MacroExpr | test_logging.rs:56:5:56:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:56:39:56:46 | password | test_logging.rs:56:12:56:46 | MacroExpr | provenance | | -| test_logging.rs:57:12:57:33 | MacroExpr | test_logging.rs:57:5:57:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:57:24:57:31 | password | test_logging.rs:57:12:57:33 | MacroExpr | provenance | | -| test_logging.rs:58:12:58:35 | MacroExpr | test_logging.rs:58:5:58:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:58:24:58:31 | password | test_logging.rs:58:12:58:35 | MacroExpr | provenance | | -| test_logging.rs:60:30:60:53 | MacroExpr | test_logging.rs:60:5:60:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:60:46:60:53 | password | test_logging.rs:60:30:60:53 | MacroExpr | provenance | | -| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 | -| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 Sink:MaD:12 | -| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | test_logging.rs:61:5:61:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 | +| test_logging.rs:42:28:42:35 | password | test_logging.rs:42:12:42:35 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:43:28:43:35 | password | test_logging.rs:43:12:43:35 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:44:27:44:34 | password | test_logging.rs:44:11:44:34 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:45:28:45:35 | password | test_logging.rs:45:12:45:35 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:46:27:46:34 | password | test_logging.rs:46:11:46:34 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:47:40:47:47 | password | test_logging.rs:47:24:47:47 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:52:28:52:35 | password | test_logging.rs:52:12:52:35 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:54:41:54:48 | password | test_logging.rs:54:12:54:48 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:56:39:56:46 | password | test_logging.rs:56:12:56:46 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:57:24:57:31 | password | test_logging.rs:57:12:57:33 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:58:24:58:31 | password | test_logging.rs:58:12:58:35 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:60:46:60:53 | password | test_logging.rs:60:30:60:53 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:20:61:28 | &... | provenance | Sink:MaD:12 Sink:MaD:12 | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:20:61:28 | &... | provenance | Sink:MaD:12 Sink:MaD:12 Sink:MaD:12 | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | test_logging.rs:61:20:61:28 | &... | provenance | Sink:MaD:12 Sink:MaD:12 | | test_logging.rs:61:20:61:28 | &password | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | provenance | | | test_logging.rs:61:20:61:28 | &password [&ref] | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | provenance | | | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | provenance | | | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | provenance | | | test_logging.rs:61:21:61:28 | password | test_logging.rs:61:20:61:28 | &password | provenance | Config | | test_logging.rs:61:21:61:28 | password | test_logging.rs:61:20:61:28 | &password [&ref] | provenance | | -| test_logging.rs:65:24:65:47 | MacroExpr | test_logging.rs:65:5:65:8 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:65:40:65:47 | password | test_logging.rs:65:24:65:47 | MacroExpr | provenance | | -| test_logging.rs:67:42:67:65 | MacroExpr | test_logging.rs:67:5:67:8 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:67:58:67:65 | password | test_logging.rs:67:42:67:65 | MacroExpr | provenance | | -| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:8 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 | -| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:8 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 Sink:MaD:12 | -| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | test_logging.rs:68:5:68:8 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 | +| test_logging.rs:65:40:65:47 | password | test_logging.rs:65:24:65:47 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:67:58:67:65 | password | test_logging.rs:67:42:67:65 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:18:68:26 | &... | provenance | Sink:MaD:12 Sink:MaD:12 | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:18:68:26 | &... | provenance | Sink:MaD:12 Sink:MaD:12 Sink:MaD:12 | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | test_logging.rs:68:18:68:26 | &... | provenance | Sink:MaD:12 Sink:MaD:12 | | test_logging.rs:68:18:68:26 | &password | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | provenance | | | test_logging.rs:68:18:68:26 | &password [&ref] | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | provenance | | | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | provenance | | | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | provenance | | | test_logging.rs:68:19:68:26 | password | test_logging.rs:68:18:68:26 | &password | provenance | Config | | test_logging.rs:68:19:68:26 | password | test_logging.rs:68:18:68:26 | &password [&ref] | provenance | | -| test_logging.rs:72:23:72:46 | MacroExpr | test_logging.rs:72:5:72:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:72:39:72:46 | password | test_logging.rs:72:23:72:46 | MacroExpr | provenance | | -| test_logging.rs:74:41:74:64 | MacroExpr | test_logging.rs:74:5:74:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:74:57:74:64 | password | test_logging.rs:74:41:74:64 | MacroExpr | provenance | | -| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 | -| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 Sink:MaD:12 | -| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | test_logging.rs:75:5:75:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 | +| test_logging.rs:72:39:72:46 | password | test_logging.rs:72:23:72:46 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:74:57:74:64 | password | test_logging.rs:74:41:74:64 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:20:75:28 | &... | provenance | Sink:MaD:12 Sink:MaD:12 | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:20:75:28 | &... | provenance | Sink:MaD:12 Sink:MaD:12 Sink:MaD:12 | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | test_logging.rs:75:20:75:28 | &... | provenance | Sink:MaD:12 Sink:MaD:12 | | test_logging.rs:75:20:75:28 | &password | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | provenance | | | test_logging.rs:75:20:75:28 | &password [&ref] | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | provenance | | | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | provenance | | | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | provenance | | | test_logging.rs:75:21:75:28 | password | test_logging.rs:75:20:75:28 | &password | provenance | Config | | test_logging.rs:75:21:75:28 | password | test_logging.rs:75:20:75:28 | &password [&ref] | provenance | | -| test_logging.rs:76:23:76:46 | MacroExpr | test_logging.rs:76:5:76:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:76:39:76:46 | password | test_logging.rs:76:23:76:46 | MacroExpr | provenance | | -| test_logging.rs:82:20:82:43 | MacroExpr | test_logging.rs:82:5:82:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:82:36:82:43 | password | test_logging.rs:82:20:82:43 | MacroExpr | provenance | | -| test_logging.rs:84:38:84:61 | MacroExpr | test_logging.rs:84:5:84:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:84:54:84:61 | password | test_logging.rs:84:38:84:61 | MacroExpr | provenance | | -| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 | -| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 Sink:MaD:12 | -| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | test_logging.rs:85:5:85:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 | +| test_logging.rs:76:39:76:46 | password | test_logging.rs:76:23:76:46 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:82:36:82:43 | password | test_logging.rs:82:20:82:43 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:84:54:84:61 | password | test_logging.rs:84:38:84:61 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:20:85:28 | &... | provenance | Sink:MaD:12 Sink:MaD:12 | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:20:85:28 | &... | provenance | Sink:MaD:12 Sink:MaD:12 Sink:MaD:12 | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | test_logging.rs:85:20:85:28 | &... | provenance | Sink:MaD:12 Sink:MaD:12 | | test_logging.rs:85:20:85:28 | &password | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | provenance | | | test_logging.rs:85:20:85:28 | &password [&ref] | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | provenance | | | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | provenance | | | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | provenance | | | test_logging.rs:85:21:85:28 | password | test_logging.rs:85:20:85:28 | &password | provenance | Config | | test_logging.rs:85:21:85:28 | password | test_logging.rs:85:20:85:28 | &password [&ref] | provenance | | -| test_logging.rs:86:20:86:43 | MacroExpr | test_logging.rs:86:5:86:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:86:36:86:43 | password | test_logging.rs:86:20:86:43 | MacroExpr | provenance | | -| test_logging.rs:93:9:93:10 | m1 | test_logging.rs:94:11:94:28 | MacroExpr | provenance | | +| test_logging.rs:86:36:86:43 | password | test_logging.rs:86:20:86:43 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:93:9:93:10 | m1 | test_logging.rs:94:11:94:28 | MacroExpr | provenance | Sink:MaD:11 | | test_logging.rs:93:14:93:22 | &password | test_logging.rs:93:9:93:10 | m1 | provenance | | | test_logging.rs:93:15:93:22 | password | test_logging.rs:93:14:93:22 | &password | provenance | Config | -| test_logging.rs:94:11:94:28 | MacroExpr | test_logging.rs:94:5:94:9 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:96:9:96:10 | m2 | test_logging.rs:97:11:97:18 | MacroExpr | provenance | | +| test_logging.rs:96:9:96:10 | m2 | test_logging.rs:97:11:97:18 | MacroExpr | provenance | Sink:MaD:11 | | test_logging.rs:96:14:96:49 | ... + ... | test_logging.rs:96:9:96:10 | m2 | provenance | | | test_logging.rs:96:41:96:49 | &password | test_logging.rs:96:14:96:49 | ... + ... | provenance | MaD:16 | | test_logging.rs:96:41:96:49 | &password [&ref] | test_logging.rs:96:14:96:49 | ... + ... | provenance | MaD:16 | | test_logging.rs:96:42:96:49 | password | test_logging.rs:96:41:96:49 | &password | provenance | Config | | test_logging.rs:96:42:96:49 | password | test_logging.rs:96:41:96:49 | &password [&ref] | provenance | | -| test_logging.rs:97:11:97:18 | MacroExpr | test_logging.rs:97:5:97:9 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:99:9:99:10 | m3 | test_logging.rs:100:11:100:18 | MacroExpr | provenance | | +| test_logging.rs:99:9:99:10 | m3 | test_logging.rs:100:11:100:18 | MacroExpr | provenance | Sink:MaD:11 | | test_logging.rs:99:22:99:45 | ...::format(...) | test_logging.rs:99:22:99:45 | { ... } | provenance | | | test_logging.rs:99:22:99:45 | ...::must_use(...) | test_logging.rs:99:9:99:10 | m3 | provenance | | | test_logging.rs:99:22:99:45 | MacroExpr | test_logging.rs:99:22:99:45 | ...::format(...) | provenance | MaD:19 | | test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:20 | | test_logging.rs:99:38:99:45 | password | test_logging.rs:99:22:99:45 | MacroExpr | provenance | | -| test_logging.rs:100:11:100:18 | MacroExpr | test_logging.rs:100:5:100:9 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:118:12:118:41 | MacroExpr | test_logging.rs:118:5:118:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:118:28:118:41 | get_password(...) | test_logging.rs:118:12:118:41 | MacroExpr | provenance | | +| test_logging.rs:118:28:118:41 | get_password(...) | test_logging.rs:118:12:118:41 | MacroExpr | provenance | Sink:MaD:11 | | test_logging.rs:129:9:129:10 | t1 [tuple.1] | test_logging.rs:131:28:131:29 | t1 [tuple.1] | provenance | | | test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | test_logging.rs:129:9:129:10 | t1 [tuple.1] | provenance | | | test_logging.rs:129:25:129:32 | password | test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | provenance | | -| test_logging.rs:131:12:131:31 | MacroExpr | test_logging.rs:131:5:131:10 | ...::log | provenance | MaD:11 Sink:MaD:11 | | test_logging.rs:131:28:131:29 | t1 [tuple.1] | test_logging.rs:131:28:131:31 | t1.1 | provenance | | -| test_logging.rs:131:28:131:31 | t1.1 | test_logging.rs:131:12:131:31 | MacroExpr | provenance | | -| test_logging.rs:141:11:141:37 | MacroExpr | test_logging.rs:141:5:141:9 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:141:27:141:37 | s1.password | test_logging.rs:141:11:141:37 | MacroExpr | provenance | | -| test_logging.rs:151:11:151:37 | MacroExpr | test_logging.rs:151:5:151:9 | ...::log | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:151:27:151:37 | s2.password | test_logging.rs:151:11:151:37 | MacroExpr | provenance | | -| test_logging.rs:176:33:176:79 | &... | test_logging.rs:176:22:176:31 | log_expect | provenance | MaD:1 Sink:MaD:1 | -| test_logging.rs:176:33:176:79 | &... [&ref] | test_logging.rs:176:22:176:31 | log_expect | provenance | MaD:1 Sink:MaD:1 | +| test_logging.rs:131:28:131:31 | t1.1 | test_logging.rs:131:12:131:31 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:141:27:141:37 | s1.password | test_logging.rs:141:11:141:37 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:151:27:151:37 | s2.password | test_logging.rs:151:11:151:37 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:176:33:176:79 | &... | test_logging.rs:176:33:176:79 | &... | provenance | Sink:MaD:1 | +| test_logging.rs:176:33:176:79 | &... [&ref] | test_logging.rs:176:33:176:79 | &... | provenance | Sink:MaD:1 | | test_logging.rs:176:34:176:79 | MacroExpr | test_logging.rs:176:33:176:79 | &... | provenance | Config | | test_logging.rs:176:34:176:79 | MacroExpr | test_logging.rs:176:33:176:79 | &... [&ref] | provenance | | | test_logging.rs:176:42:176:78 | ...::format(...) | test_logging.rs:176:42:176:78 | { ... } | provenance | | @@ -169,8 +142,8 @@ edges | test_logging.rs:176:42:176:78 | MacroExpr | test_logging.rs:176:42:176:78 | ...::format(...) | provenance | MaD:19 | | test_logging.rs:176:42:176:78 | { ... } | test_logging.rs:176:42:176:78 | ...::must_use(...) | provenance | MaD:20 | | test_logging.rs:176:70:176:78 | password2 | test_logging.rs:176:42:176:78 | MacroExpr | provenance | | -| test_logging.rs:180:35:180:81 | &... | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:3 Sink:MaD:3 | -| test_logging.rs:180:35:180:81 | &... [&ref] | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:3 Sink:MaD:3 | +| test_logging.rs:180:35:180:81 | &... | test_logging.rs:180:35:180:81 | &... | provenance | Sink:MaD:3 | +| test_logging.rs:180:35:180:81 | &... [&ref] | test_logging.rs:180:35:180:81 | &... | provenance | Sink:MaD:3 | | test_logging.rs:180:36:180:81 | MacroExpr | test_logging.rs:180:35:180:81 | &... | provenance | Config | | test_logging.rs:180:36:180:81 | MacroExpr | test_logging.rs:180:35:180:81 | &... [&ref] | provenance | | | test_logging.rs:180:44:180:80 | ...::format(...) | test_logging.rs:180:44:180:80 | { ... } | provenance | | @@ -178,77 +151,65 @@ edges | test_logging.rs:180:44:180:80 | MacroExpr | test_logging.rs:180:44:180:80 | ...::format(...) | provenance | MaD:19 | | test_logging.rs:180:44:180:80 | { ... } | test_logging.rs:180:44:180:80 | ...::must_use(...) | provenance | MaD:20 | | test_logging.rs:180:72:180:80 | password2 | test_logging.rs:180:44:180:80 | MacroExpr | provenance | | -| test_logging.rs:183:9:183:19 | err_result2 [Err] | test_logging.rs:184:13:184:23 | err_result2 [Err] | provenance | | +| test_logging.rs:183:9:183:19 | err_result2 [Err] | test_logging.rs:184:13:184:23 | err_result2 | provenance | Sink:MaD:4 | | test_logging.rs:183:47:183:68 | Err(...) [Err] | test_logging.rs:183:9:183:19 | err_result2 [Err] | provenance | | | test_logging.rs:183:51:183:59 | password2 | test_logging.rs:183:51:183:67 | password2.clone() | provenance | MaD:15 | | test_logging.rs:183:51:183:67 | password2.clone() | test_logging.rs:183:47:183:68 | Err(...) [Err] | provenance | | -| test_logging.rs:184:13:184:23 | err_result2 [Err] | test_logging.rs:184:25:184:34 | log_expect | provenance | MaD:4 Sink:MaD:4 | -| test_logging.rs:187:9:187:19 | err_result3 [Err] | test_logging.rs:188:13:188:23 | err_result3 [Err] | provenance | | +| test_logging.rs:187:9:187:19 | err_result3 [Err] | test_logging.rs:188:13:188:23 | err_result3 | provenance | Sink:MaD:5 | | test_logging.rs:187:47:187:60 | Err(...) [Err] | test_logging.rs:187:9:187:19 | err_result3 [Err] | provenance | | | test_logging.rs:187:51:187:59 | password2 | test_logging.rs:187:47:187:60 | Err(...) [Err] | provenance | | -| test_logging.rs:188:13:188:23 | err_result3 [Err] | test_logging.rs:188:25:188:34 | log_unwrap | provenance | MaD:5 Sink:MaD:5 | -| test_logging.rs:192:12:192:37 | MacroExpr | test_logging.rs:192:5:192:10 | ...::_print | provenance | MaD:14 Sink:MaD:14 | -| test_logging.rs:192:30:192:37 | password | test_logging.rs:192:12:192:37 | MacroExpr | provenance | | -| test_logging.rs:193:14:193:37 | MacroExpr | test_logging.rs:193:5:193:12 | ...::_print | provenance | MaD:14 Sink:MaD:14 | -| test_logging.rs:193:30:193:37 | password | test_logging.rs:193:14:193:37 | MacroExpr | provenance | | -| test_logging.rs:194:13:194:38 | MacroExpr | test_logging.rs:194:5:194:11 | ...::_eprint | provenance | MaD:13 Sink:MaD:13 | -| test_logging.rs:194:31:194:38 | password | test_logging.rs:194:13:194:38 | MacroExpr | provenance | | -| test_logging.rs:195:15:195:38 | MacroExpr | test_logging.rs:195:5:195:13 | ...::_eprint | provenance | MaD:13 Sink:MaD:13 | -| test_logging.rs:195:31:195:38 | password | test_logging.rs:195:15:195:38 | MacroExpr | provenance | | -| test_logging.rs:199:20:199:43 | MacroExpr | test_logging.rs:199:13:199:18 | ...::panic_fmt | provenance | MaD:10 Sink:MaD:10 | -| test_logging.rs:199:36:199:43 | password | test_logging.rs:199:20:199:43 | MacroExpr | provenance | | -| test_logging.rs:202:19:202:42 | MacroExpr | test_logging.rs:202:13:202:17 | ...::panic_fmt | provenance | MaD:10 Sink:MaD:10 | -| test_logging.rs:202:35:202:42 | password | test_logging.rs:202:19:202:42 | MacroExpr | provenance | | -| test_logging.rs:205:28:205:51 | MacroExpr | test_logging.rs:205:13:205:26 | ...::panic_fmt | provenance | MaD:10 Sink:MaD:10 | -| test_logging.rs:205:44:205:51 | password | test_logging.rs:205:28:205:51 | MacroExpr | provenance | | -| test_logging.rs:208:26:208:49 | MacroExpr | test_logging.rs:208:13:208:24 | ...::panic_fmt | provenance | MaD:10 Sink:MaD:10 | -| test_logging.rs:208:42:208:49 | password | test_logging.rs:208:26:208:49 | MacroExpr | provenance | | -| test_logging.rs:211:28:211:51 | MacroExpr | test_logging.rs:211:13:211:19 | ...::panic_fmt | provenance | MaD:10 Sink:MaD:10 | -| test_logging.rs:211:44:211:51 | password | test_logging.rs:211:28:211:51 | MacroExpr | provenance | | -| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:22 | ...::assert_failed | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:192:30:192:37 | password | test_logging.rs:192:12:192:37 | MacroExpr | provenance | Sink:MaD:14 | +| test_logging.rs:193:30:193:37 | password | test_logging.rs:193:14:193:37 | MacroExpr | provenance | Sink:MaD:14 | +| test_logging.rs:194:31:194:38 | password | test_logging.rs:194:13:194:38 | MacroExpr | provenance | Sink:MaD:13 | +| test_logging.rs:195:31:195:38 | password | test_logging.rs:195:15:195:38 | MacroExpr | provenance | Sink:MaD:13 | +| test_logging.rs:199:36:199:43 | password | test_logging.rs:199:20:199:43 | MacroExpr | provenance | Sink:MaD:10 | +| test_logging.rs:202:35:202:42 | password | test_logging.rs:202:19:202:42 | MacroExpr | provenance | Sink:MaD:10 | +| test_logging.rs:205:44:205:51 | password | test_logging.rs:205:28:205:51 | MacroExpr | provenance | Sink:MaD:10 | +| test_logging.rs:208:42:208:49 | password | test_logging.rs:208:26:208:49 | MacroExpr | provenance | Sink:MaD:10 | +| test_logging.rs:211:44:211:51 | password | test_logging.rs:211:28:211:51 | MacroExpr | provenance | Sink:MaD:10 | +| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:30:214:53 | ...::Some(...) | provenance | Sink:MaD:9 | | test_logging.rs:214:30:214:53 | MacroExpr | test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | provenance | | | test_logging.rs:214:46:214:53 | password | test_logging.rs:214:30:214:53 | MacroExpr | provenance | | -| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:22 | ...::assert_failed | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:30:217:53 | ...::Some(...) | provenance | Sink:MaD:9 | | test_logging.rs:217:30:217:53 | MacroExpr | test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | provenance | | | test_logging.rs:217:46:217:53 | password | test_logging.rs:217:30:217:53 | MacroExpr | provenance | | -| test_logging.rs:220:34:220:57 | MacroExpr | test_logging.rs:220:13:220:25 | ...::panic_fmt | provenance | MaD:10 Sink:MaD:10 | -| test_logging.rs:220:50:220:57 | password | test_logging.rs:220:34:220:57 | MacroExpr | provenance | | -| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:28 | ...::assert_failed | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:220:50:220:57 | password | test_logging.rs:220:34:220:57 | MacroExpr | provenance | Sink:MaD:10 | +| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:36:223:59 | ...::Some(...) | provenance | Sink:MaD:9 | | test_logging.rs:223:36:223:59 | MacroExpr | test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | provenance | | | test_logging.rs:223:52:223:59 | password | test_logging.rs:223:36:223:59 | MacroExpr | provenance | | -| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:28 | ...::assert_failed | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:36:226:59 | ...::Some(...) | provenance | Sink:MaD:9 | | test_logging.rs:226:36:226:59 | MacroExpr | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | provenance | | | test_logging.rs:226:52:226:59 | password | test_logging.rs:226:36:226:59 | MacroExpr | provenance | | | test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:18 | -| test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 | +| test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | Sink:MaD:2 | | test_logging.rs:229:38:229:61 | ...::format(...) | test_logging.rs:229:38:229:61 | { ... } | provenance | | | test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:62 | MacroExpr | provenance | | | test_logging.rs:229:38:229:61 | MacroExpr | test_logging.rs:229:38:229:61 | ...::format(...) | provenance | MaD:19 | | test_logging.rs:229:38:229:61 | { ... } | test_logging.rs:229:38:229:61 | ...::must_use(...) | provenance | MaD:20 | | test_logging.rs:229:54:229:61 | password | test_logging.rs:229:38:229:61 | MacroExpr | provenance | | | test_logging.rs:242:16:242:50 | MacroExpr | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref, element] | provenance | MaD:17 | -| test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref, element] | test_logging.rs:242:10:242:14 | write | provenance | MaD:7 Sink:MaD:7 Sink:MaD:7 | +| test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref, element] | test_logging.rs:242:16:242:61 | ... .as_bytes() | provenance | Sink:MaD:7 Sink:MaD:7 | | test_logging.rs:242:24:242:49 | ...::format(...) | test_logging.rs:242:24:242:49 | { ... } | provenance | | | test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:50 | MacroExpr | provenance | | | test_logging.rs:242:24:242:49 | MacroExpr | test_logging.rs:242:24:242:49 | ...::format(...) | provenance | MaD:19 | | test_logging.rs:242:24:242:49 | { ... } | test_logging.rs:242:24:242:49 | ...::must_use(...) | provenance | MaD:20 | | test_logging.rs:242:42:242:49 | password | test_logging.rs:242:24:242:49 | MacroExpr | provenance | | | test_logging.rs:245:20:245:54 | MacroExpr | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref, element] | provenance | MaD:17 | -| test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref, element] | test_logging.rs:245:10:245:18 | write_all | provenance | MaD:8 Sink:MaD:8 Sink:MaD:8 | +| test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref, element] | test_logging.rs:245:20:245:65 | ... .as_bytes() | provenance | Sink:MaD:8 Sink:MaD:8 | | test_logging.rs:245:28:245:53 | ...::format(...) | test_logging.rs:245:28:245:53 | { ... } | provenance | | | test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:54 | MacroExpr | provenance | | | test_logging.rs:245:28:245:53 | MacroExpr | test_logging.rs:245:28:245:53 | ...::format(...) | provenance | MaD:19 | | test_logging.rs:245:28:245:53 | { ... } | test_logging.rs:245:28:245:53 | ...::must_use(...) | provenance | MaD:20 | | test_logging.rs:245:46:245:53 | password | test_logging.rs:245:28:245:53 | MacroExpr | provenance | | | test_logging.rs:248:15:248:49 | MacroExpr | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref, element] | provenance | MaD:17 | -| test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref, element] | test_logging.rs:248:9:248:13 | write | provenance | MaD:7 Sink:MaD:7 Sink:MaD:7 | +| test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref, element] | test_logging.rs:248:15:248:60 | ... .as_bytes() | provenance | Sink:MaD:7 Sink:MaD:7 | | test_logging.rs:248:23:248:48 | ...::format(...) | test_logging.rs:248:23:248:48 | { ... } | provenance | | | test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:49 | MacroExpr | provenance | | | test_logging.rs:248:23:248:48 | MacroExpr | test_logging.rs:248:23:248:48 | ...::format(...) | provenance | MaD:19 | | test_logging.rs:248:23:248:48 | { ... } | test_logging.rs:248:23:248:48 | ...::must_use(...) | provenance | MaD:20 | | test_logging.rs:248:41:248:48 | password | test_logging.rs:248:23:248:48 | MacroExpr | provenance | | | test_logging.rs:251:15:251:49 | MacroExpr | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref, element] | provenance | MaD:17 | -| test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref, element] | test_logging.rs:251:9:251:13 | write | provenance | MaD:6 Sink:MaD:6 Sink:MaD:6 | +| test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref, element] | test_logging.rs:251:15:251:60 | ... .as_bytes() | provenance | Sink:MaD:6 Sink:MaD:6 | | test_logging.rs:251:23:251:48 | ...::format(...) | test_logging.rs:251:23:251:48 | { ... } | provenance | | | test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:49 | MacroExpr | provenance | | | test_logging.rs:251:23:251:48 | MacroExpr | test_logging.rs:251:23:251:48 | ...::format(...) | provenance | MaD:19 | @@ -276,43 +237,31 @@ models | 19 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | | 20 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes -| test_logging.rs:42:5:42:10 | ...::log | semmle.label | ...::log | | test_logging.rs:42:12:42:35 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:42:28:42:35 | password | semmle.label | password | -| test_logging.rs:43:5:43:10 | ...::log | semmle.label | ...::log | | test_logging.rs:43:12:43:35 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:43:28:43:35 | password | semmle.label | password | -| test_logging.rs:44:5:44:9 | ...::log | semmle.label | ...::log | | test_logging.rs:44:11:44:34 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:44:27:44:34 | password | semmle.label | password | -| test_logging.rs:45:5:45:10 | ...::log | semmle.label | ...::log | | test_logging.rs:45:12:45:35 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:45:28:45:35 | password | semmle.label | password | -| test_logging.rs:46:5:46:9 | ...::log | semmle.label | ...::log | | test_logging.rs:46:11:46:34 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:46:27:46:34 | password | semmle.label | password | -| test_logging.rs:47:5:47:8 | ...::log | semmle.label | ...::log | | test_logging.rs:47:24:47:47 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:47:40:47:47 | password | semmle.label | password | -| test_logging.rs:52:5:52:10 | ...::log | semmle.label | ...::log | | test_logging.rs:52:12:52:35 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:52:28:52:35 | password | semmle.label | password | -| test_logging.rs:54:5:54:10 | ...::log | semmle.label | ...::log | | test_logging.rs:54:12:54:48 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:54:41:54:48 | password | semmle.label | password | -| test_logging.rs:56:5:56:10 | ...::log | semmle.label | ...::log | | test_logging.rs:56:12:56:46 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:56:39:56:46 | password | semmle.label | password | -| test_logging.rs:57:5:57:10 | ...::log | semmle.label | ...::log | | test_logging.rs:57:12:57:33 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:57:24:57:31 | password | semmle.label | password | -| test_logging.rs:58:5:58:10 | ...::log | semmle.label | ...::log | | test_logging.rs:58:12:58:35 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:58:24:58:31 | password | semmle.label | password | -| test_logging.rs:60:5:60:10 | ...::log | semmle.label | ...::log | | test_logging.rs:60:30:60:53 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:60:46:60:53 | password | semmle.label | password | -| test_logging.rs:61:5:61:10 | ...::log | semmle.label | ...::log | +| test_logging.rs:61:20:61:28 | &... | semmle.label | &... | | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | | test_logging.rs:61:20:61:28 | &password | semmle.label | &password | @@ -320,13 +269,11 @@ nodes | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | | test_logging.rs:61:21:61:28 | password | semmle.label | password | -| test_logging.rs:65:5:65:8 | ...::log | semmle.label | ...::log | | test_logging.rs:65:24:65:47 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:65:40:65:47 | password | semmle.label | password | -| test_logging.rs:67:5:67:8 | ...::log | semmle.label | ...::log | | test_logging.rs:67:42:67:65 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:67:58:67:65 | password | semmle.label | password | -| test_logging.rs:68:5:68:8 | ...::log | semmle.label | ...::log | +| test_logging.rs:68:18:68:26 | &... | semmle.label | &... | | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | | test_logging.rs:68:18:68:26 | &password | semmle.label | &password | @@ -334,13 +281,11 @@ nodes | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | | test_logging.rs:68:19:68:26 | password | semmle.label | password | -| test_logging.rs:72:5:72:10 | ...::log | semmle.label | ...::log | | test_logging.rs:72:23:72:46 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:72:39:72:46 | password | semmle.label | password | -| test_logging.rs:74:5:74:10 | ...::log | semmle.label | ...::log | | test_logging.rs:74:41:74:64 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:74:57:74:64 | password | semmle.label | password | -| test_logging.rs:75:5:75:10 | ...::log | semmle.label | ...::log | +| test_logging.rs:75:20:75:28 | &... | semmle.label | &... | | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | | test_logging.rs:75:20:75:28 | &password | semmle.label | &password | @@ -348,16 +293,13 @@ nodes | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | | test_logging.rs:75:21:75:28 | password | semmle.label | password | -| test_logging.rs:76:5:76:10 | ...::log | semmle.label | ...::log | | test_logging.rs:76:23:76:46 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:76:39:76:46 | password | semmle.label | password | -| test_logging.rs:82:5:82:10 | ...::log | semmle.label | ...::log | | test_logging.rs:82:20:82:43 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:82:36:82:43 | password | semmle.label | password | -| test_logging.rs:84:5:84:10 | ...::log | semmle.label | ...::log | | test_logging.rs:84:38:84:61 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:84:54:84:61 | password | semmle.label | password | -| test_logging.rs:85:5:85:10 | ...::log | semmle.label | ...::log | +| test_logging.rs:85:20:85:28 | &... | semmle.label | &... | | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | | test_logging.rs:85:20:85:28 | &password | semmle.label | &password | @@ -365,20 +307,17 @@ nodes | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | | test_logging.rs:85:21:85:28 | password | semmle.label | password | -| test_logging.rs:86:5:86:10 | ...::log | semmle.label | ...::log | | test_logging.rs:86:20:86:43 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:86:36:86:43 | password | semmle.label | password | | test_logging.rs:93:9:93:10 | m1 | semmle.label | m1 | | test_logging.rs:93:14:93:22 | &password | semmle.label | &password | | test_logging.rs:93:15:93:22 | password | semmle.label | password | -| test_logging.rs:94:5:94:9 | ...::log | semmle.label | ...::log | | test_logging.rs:94:11:94:28 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:96:9:96:10 | m2 | semmle.label | m2 | | test_logging.rs:96:14:96:49 | ... + ... | semmle.label | ... + ... | | test_logging.rs:96:41:96:49 | &password | semmle.label | &password | | test_logging.rs:96:41:96:49 | &password [&ref] | semmle.label | &password [&ref] | | test_logging.rs:96:42:96:49 | password | semmle.label | password | -| test_logging.rs:97:5:97:9 | ...::log | semmle.label | ...::log | | test_logging.rs:97:11:97:18 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:99:9:99:10 | m3 | semmle.label | m3 | | test_logging.rs:99:22:99:45 | ...::format(...) | semmle.label | ...::format(...) | @@ -386,25 +325,20 @@ nodes | test_logging.rs:99:22:99:45 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:99:22:99:45 | { ... } | semmle.label | { ... } | | test_logging.rs:99:38:99:45 | password | semmle.label | password | -| test_logging.rs:100:5:100:9 | ...::log | semmle.label | ...::log | | test_logging.rs:100:11:100:18 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:118:5:118:10 | ...::log | semmle.label | ...::log | | test_logging.rs:118:12:118:41 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:118:28:118:41 | get_password(...) | semmle.label | get_password(...) | | test_logging.rs:129:9:129:10 | t1 [tuple.1] | semmle.label | t1 [tuple.1] | | test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] | | test_logging.rs:129:25:129:32 | password | semmle.label | password | -| test_logging.rs:131:5:131:10 | ...::log | semmle.label | ...::log | | test_logging.rs:131:12:131:31 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:131:28:131:29 | t1 [tuple.1] | semmle.label | t1 [tuple.1] | | test_logging.rs:131:28:131:31 | t1.1 | semmle.label | t1.1 | -| test_logging.rs:141:5:141:9 | ...::log | semmle.label | ...::log | | test_logging.rs:141:11:141:37 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:141:27:141:37 | s1.password | semmle.label | s1.password | -| test_logging.rs:151:5:151:9 | ...::log | semmle.label | ...::log | | test_logging.rs:151:11:151:37 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:151:27:151:37 | s2.password | semmle.label | s2.password | -| test_logging.rs:176:22:176:31 | log_expect | semmle.label | log_expect | +| test_logging.rs:176:33:176:79 | &... | semmle.label | &... | | test_logging.rs:176:33:176:79 | &... | semmle.label | &... | | test_logging.rs:176:33:176:79 | &... [&ref] | semmle.label | &... [&ref] | | test_logging.rs:176:34:176:79 | MacroExpr | semmle.label | MacroExpr | @@ -413,7 +347,7 @@ nodes | test_logging.rs:176:42:176:78 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:176:42:176:78 | { ... } | semmle.label | { ... } | | test_logging.rs:176:70:176:78 | password2 | semmle.label | password2 | -| test_logging.rs:180:24:180:33 | log_expect | semmle.label | log_expect | +| test_logging.rs:180:35:180:81 | &... | semmle.label | &... | | test_logging.rs:180:35:180:81 | &... | semmle.label | &... | | test_logging.rs:180:35:180:81 | &... [&ref] | semmle.label | &... [&ref] | | test_logging.rs:180:36:180:81 | MacroExpr | semmle.label | MacroExpr | @@ -426,93 +360,81 @@ nodes | test_logging.rs:183:47:183:68 | Err(...) [Err] | semmle.label | Err(...) [Err] | | test_logging.rs:183:51:183:59 | password2 | semmle.label | password2 | | test_logging.rs:183:51:183:67 | password2.clone() | semmle.label | password2.clone() | -| test_logging.rs:184:13:184:23 | err_result2 [Err] | semmle.label | err_result2 [Err] | -| test_logging.rs:184:25:184:34 | log_expect | semmle.label | log_expect | +| test_logging.rs:184:13:184:23 | err_result2 | semmle.label | err_result2 | | test_logging.rs:187:9:187:19 | err_result3 [Err] | semmle.label | err_result3 [Err] | | test_logging.rs:187:47:187:60 | Err(...) [Err] | semmle.label | Err(...) [Err] | | test_logging.rs:187:51:187:59 | password2 | semmle.label | password2 | -| test_logging.rs:188:13:188:23 | err_result3 [Err] | semmle.label | err_result3 [Err] | -| test_logging.rs:188:25:188:34 | log_unwrap | semmle.label | log_unwrap | -| test_logging.rs:192:5:192:10 | ...::_print | semmle.label | ...::_print | +| test_logging.rs:188:13:188:23 | err_result3 | semmle.label | err_result3 | | test_logging.rs:192:12:192:37 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:192:30:192:37 | password | semmle.label | password | -| test_logging.rs:193:5:193:12 | ...::_print | semmle.label | ...::_print | | test_logging.rs:193:14:193:37 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:193:30:193:37 | password | semmle.label | password | -| test_logging.rs:194:5:194:11 | ...::_eprint | semmle.label | ...::_eprint | | test_logging.rs:194:13:194:38 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:194:31:194:38 | password | semmle.label | password | -| test_logging.rs:195:5:195:13 | ...::_eprint | semmle.label | ...::_eprint | | test_logging.rs:195:15:195:38 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:195:31:195:38 | password | semmle.label | password | -| test_logging.rs:199:13:199:18 | ...::panic_fmt | semmle.label | ...::panic_fmt | | test_logging.rs:199:20:199:43 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:199:36:199:43 | password | semmle.label | password | -| test_logging.rs:202:13:202:17 | ...::panic_fmt | semmle.label | ...::panic_fmt | | test_logging.rs:202:19:202:42 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:202:35:202:42 | password | semmle.label | password | -| test_logging.rs:205:13:205:26 | ...::panic_fmt | semmle.label | ...::panic_fmt | | test_logging.rs:205:28:205:51 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:205:44:205:51 | password | semmle.label | password | -| test_logging.rs:208:13:208:24 | ...::panic_fmt | semmle.label | ...::panic_fmt | | test_logging.rs:208:26:208:49 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:208:42:208:49 | password | semmle.label | password | -| test_logging.rs:211:13:211:19 | ...::panic_fmt | semmle.label | ...::panic_fmt | | test_logging.rs:211:28:211:51 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:211:44:211:51 | password | semmle.label | password | -| test_logging.rs:214:13:214:22 | ...::assert_failed | semmle.label | ...::assert_failed | +| test_logging.rs:214:30:214:53 | ...::Some(...) | semmle.label | ...::Some(...) | | test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | | test_logging.rs:214:30:214:53 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:214:46:214:53 | password | semmle.label | password | -| test_logging.rs:217:13:217:22 | ...::assert_failed | semmle.label | ...::assert_failed | +| test_logging.rs:217:30:217:53 | ...::Some(...) | semmle.label | ...::Some(...) | | test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | | test_logging.rs:217:30:217:53 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:217:46:217:53 | password | semmle.label | password | -| test_logging.rs:220:13:220:25 | ...::panic_fmt | semmle.label | ...::panic_fmt | | test_logging.rs:220:34:220:57 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:220:50:220:57 | password | semmle.label | password | -| test_logging.rs:223:13:223:28 | ...::assert_failed | semmle.label | ...::assert_failed | +| test_logging.rs:223:36:223:59 | ...::Some(...) | semmle.label | ...::Some(...) | | test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | | test_logging.rs:223:36:223:59 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:223:52:223:59 | password | semmle.label | password | -| test_logging.rs:226:13:226:28 | ...::assert_failed | semmle.label | ...::assert_failed | +| test_logging.rs:226:36:226:59 | ...::Some(...) | semmle.label | ...::Some(...) | | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | | test_logging.rs:226:36:226:59 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:226:52:226:59 | password | semmle.label | password | -| test_logging.rs:229:23:229:28 | expect | semmle.label | expect | | test_logging.rs:229:30:229:62 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:229:30:229:71 | ... .as_str() | semmle.label | ... .as_str() | | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | semmle.label | ... .as_str() [&ref] | | test_logging.rs:229:38:229:61 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:229:38:229:61 | ...::must_use(...) | semmle.label | ...::must_use(...) | | test_logging.rs:229:38:229:61 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:229:38:229:61 | { ... } | semmle.label | { ... } | | test_logging.rs:229:54:229:61 | password | semmle.label | password | -| test_logging.rs:242:10:242:14 | write | semmle.label | write | | test_logging.rs:242:16:242:50 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:242:16:242:61 | ... .as_bytes() | semmle.label | ... .as_bytes() | | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref, element] | semmle.label | ... .as_bytes() [&ref, element] | | test_logging.rs:242:24:242:49 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:242:24:242:49 | ...::must_use(...) | semmle.label | ...::must_use(...) | | test_logging.rs:242:24:242:49 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:242:24:242:49 | { ... } | semmle.label | { ... } | | test_logging.rs:242:42:242:49 | password | semmle.label | password | -| test_logging.rs:245:10:245:18 | write_all | semmle.label | write_all | | test_logging.rs:245:20:245:54 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:245:20:245:65 | ... .as_bytes() | semmle.label | ... .as_bytes() | | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref, element] | semmle.label | ... .as_bytes() [&ref, element] | | test_logging.rs:245:28:245:53 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:245:28:245:53 | ...::must_use(...) | semmle.label | ...::must_use(...) | | test_logging.rs:245:28:245:53 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:245:28:245:53 | { ... } | semmle.label | { ... } | | test_logging.rs:245:46:245:53 | password | semmle.label | password | -| test_logging.rs:248:9:248:13 | write | semmle.label | write | | test_logging.rs:248:15:248:49 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:248:15:248:60 | ... .as_bytes() | semmle.label | ... .as_bytes() | | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref, element] | semmle.label | ... .as_bytes() [&ref, element] | | test_logging.rs:248:23:248:48 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:248:23:248:48 | ...::must_use(...) | semmle.label | ...::must_use(...) | | test_logging.rs:248:23:248:48 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:248:23:248:48 | { ... } | semmle.label | { ... } | | test_logging.rs:248:41:248:48 | password | semmle.label | password | -| test_logging.rs:251:9:251:13 | write | semmle.label | write | | test_logging.rs:251:15:251:49 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:251:15:251:60 | ... .as_bytes() | semmle.label | ... .as_bytes() | | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref, element] | semmle.label | ... .as_bytes() [&ref, element] | | test_logging.rs:251:23:251:48 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:251:23:251:48 | ...::must_use(...) | semmle.label | ...::must_use(...) | diff --git a/rust/ql/test/query-tests/security/CWE-312/CleartextStorageDatabase.expected b/rust/ql/test/query-tests/security/CWE-312/CleartextStorageDatabase.expected index 732b422c65f2..920ce2e00c27 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CleartextStorageDatabase.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CleartextStorageDatabase.expected @@ -1,12 +1,12 @@ #select -| test_storage.rs:100:13:100:23 | ...::query | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:100:13:100:23 | ...::query | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:71:97:71:114 | get_phone_number(...) | get_phone_number(...) | -| test_storage.rs:115:13:115:25 | ...::raw_sql | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:115:13:115:25 | ...::raw_sql | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:71:97:71:114 | get_phone_number(...) | get_phone_number(...) | -| test_storage.rs:119:13:119:23 | ...::query | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:119:13:119:23 | ...::query | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:71:97:71:114 | get_phone_number(...) | get_phone_number(...) | -| test_storage.rs:125:13:125:23 | ...::query | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:125:13:125:23 | ...::query | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:71:97:71:114 | get_phone_number(...) | get_phone_number(...) | -| test_storage.rs:139:13:139:23 | ...::query | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:139:13:139:23 | ...::query | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:71:97:71:114 | get_phone_number(...) | get_phone_number(...) | -| test_storage.rs:194:16:194:22 | execute | test_storage.rs:189:100:189:117 | get_phone_number(...) | test_storage.rs:194:16:194:22 | execute | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:189:100:189:117 | get_phone_number(...) | get_phone_number(...) | -| test_storage.rs:196:24:196:32 | query_row | test_storage.rs:190:86:190:103 | get_phone_number(...) | test_storage.rs:196:24:196:32 | query_row | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:190:86:190:103 | get_phone_number(...) | get_phone_number(...) | -| test_storage.rs:204:31:204:37 | prepare | test_storage.rs:190:86:190:103 | get_phone_number(...) | test_storage.rs:204:31:204:37 | prepare | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:190:86:190:103 | get_phone_number(...) | get_phone_number(...) | +| test_storage.rs:100:25:100:46 | insert_query2.as_str() | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:100:25:100:46 | insert_query2.as_str() | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:71:97:71:114 | get_phone_number(...) | get_phone_number(...) | +| test_storage.rs:115:27:115:48 | insert_query2.as_str() | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:115:27:115:48 | insert_query2.as_str() | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:71:97:71:114 | get_phone_number(...) | get_phone_number(...) | +| test_storage.rs:119:25:119:46 | insert_query2.as_str() | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:119:25:119:46 | insert_query2.as_str() | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:71:97:71:114 | get_phone_number(...) | get_phone_number(...) | +| test_storage.rs:125:25:125:46 | insert_query2.as_str() | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:125:25:125:46 | insert_query2.as_str() | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:71:97:71:114 | get_phone_number(...) | get_phone_number(...) | +| test_storage.rs:139:25:139:46 | insert_query2.as_str() | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:139:25:139:46 | insert_query2.as_str() | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:71:97:71:114 | get_phone_number(...) | get_phone_number(...) | +| test_storage.rs:194:24:194:40 | &insert_query_bad | test_storage.rs:189:100:189:117 | get_phone_number(...) | test_storage.rs:194:24:194:40 | &insert_query_bad | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:189:100:189:117 | get_phone_number(...) | get_phone_number(...) | +| test_storage.rs:196:34:196:50 | &select_query_bad | test_storage.rs:190:86:190:103 | get_phone_number(...) | test_storage.rs:196:34:196:50 | &select_query_bad | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:190:86:190:103 | get_phone_number(...) | get_phone_number(...) | +| test_storage.rs:204:39:204:55 | &select_query_bad | test_storage.rs:190:86:190:103 | get_phone_number(...) | test_storage.rs:204:39:204:55 | &select_query_bad | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:190:86:190:103 | get_phone_number(...) | get_phone_number(...) | edges | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:37 | insert_query2 | provenance | | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:39 | insert_query2 | provenance | | @@ -20,15 +20,15 @@ edges | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:71:96:71:114 | &... | provenance | Config | | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:71:96:71:114 | &... [&ref] | provenance | | | test_storage.rs:100:25:100:37 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | provenance | MaD:8 | -| test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | test_storage.rs:100:13:100:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | +| test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | test_storage.rs:100:25:100:46 | insert_query2.as_str() | provenance | Sink:MaD:4 | | test_storage.rs:115:27:115:39 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | provenance | MaD:8 | -| test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | test_storage.rs:115:13:115:25 | ...::raw_sql | provenance | MaD:5 Sink:MaD:5 | +| test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | test_storage.rs:115:27:115:48 | insert_query2.as_str() | provenance | Sink:MaD:5 | | test_storage.rs:119:25:119:37 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | provenance | MaD:8 | -| test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | test_storage.rs:119:13:119:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | +| test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | test_storage.rs:119:25:119:46 | insert_query2.as_str() | provenance | Sink:MaD:4 | | test_storage.rs:125:25:125:37 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | provenance | MaD:8 | -| test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | test_storage.rs:125:13:125:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | +| test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | test_storage.rs:125:25:125:46 | insert_query2.as_str() | provenance | Sink:MaD:4 | | test_storage.rs:139:25:139:37 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | provenance | MaD:8 | -| test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | test_storage.rs:139:13:139:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | +| test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | test_storage.rs:139:25:139:46 | insert_query2.as_str() | provenance | Sink:MaD:4 | | test_storage.rs:189:9:189:24 | insert_query_bad | test_storage.rs:194:25:194:40 | insert_query_bad | provenance | | | test_storage.rs:189:28:189:117 | ... + ... | test_storage.rs:189:28:189:124 | ... + ... | provenance | MaD:7 | | test_storage.rs:189:28:189:124 | ... + ... | test_storage.rs:189:9:189:24 | insert_query_bad | provenance | | @@ -43,17 +43,17 @@ edges | test_storage.rs:190:85:190:103 | &... [&ref] | test_storage.rs:190:28:190:103 | ... + ... | provenance | MaD:6 | | test_storage.rs:190:86:190:103 | get_phone_number(...) | test_storage.rs:190:85:190:103 | &... | provenance | Config | | test_storage.rs:190:86:190:103 | get_phone_number(...) | test_storage.rs:190:85:190:103 | &... [&ref] | provenance | | -| test_storage.rs:194:24:194:40 | &insert_query_bad | test_storage.rs:194:16:194:22 | execute | provenance | MaD:1 Sink:MaD:1 | -| test_storage.rs:194:24:194:40 | &insert_query_bad [&ref] | test_storage.rs:194:16:194:22 | execute | provenance | MaD:1 Sink:MaD:1 | +| test_storage.rs:194:24:194:40 | &insert_query_bad | test_storage.rs:194:24:194:40 | &insert_query_bad | provenance | Sink:MaD:1 | +| test_storage.rs:194:24:194:40 | &insert_query_bad [&ref] | test_storage.rs:194:24:194:40 | &insert_query_bad | provenance | Sink:MaD:1 | | test_storage.rs:194:25:194:40 | insert_query_bad | test_storage.rs:194:24:194:40 | &insert_query_bad | provenance | Config | | test_storage.rs:194:25:194:40 | insert_query_bad | test_storage.rs:194:24:194:40 | &insert_query_bad [&ref] | provenance | | -| test_storage.rs:196:34:196:50 | &select_query_bad | test_storage.rs:196:24:196:32 | query_row | provenance | MaD:3 Sink:MaD:3 | -| test_storage.rs:196:34:196:50 | &select_query_bad [&ref] | test_storage.rs:196:24:196:32 | query_row | provenance | MaD:3 Sink:MaD:3 | +| test_storage.rs:196:34:196:50 | &select_query_bad | test_storage.rs:196:34:196:50 | &select_query_bad | provenance | Sink:MaD:3 | +| test_storage.rs:196:34:196:50 | &select_query_bad [&ref] | test_storage.rs:196:34:196:50 | &select_query_bad | provenance | Sink:MaD:3 | | test_storage.rs:196:35:196:50 | select_query_bad | test_storage.rs:196:34:196:50 | &select_query_bad | provenance | Config | | test_storage.rs:196:35:196:50 | select_query_bad | test_storage.rs:196:34:196:50 | &select_query_bad [&ref] | provenance | | | test_storage.rs:196:35:196:50 | select_query_bad | test_storage.rs:204:40:204:55 | select_query_bad | provenance | | -| test_storage.rs:204:39:204:55 | &select_query_bad | test_storage.rs:204:31:204:37 | prepare | provenance | MaD:2 Sink:MaD:2 | -| test_storage.rs:204:39:204:55 | &select_query_bad [&ref] | test_storage.rs:204:31:204:37 | prepare | provenance | MaD:2 Sink:MaD:2 | +| test_storage.rs:204:39:204:55 | &select_query_bad | test_storage.rs:204:39:204:55 | &select_query_bad | provenance | Sink:MaD:2 | +| test_storage.rs:204:39:204:55 | &select_query_bad [&ref] | test_storage.rs:204:39:204:55 | &select_query_bad | provenance | Sink:MaD:2 | | test_storage.rs:204:40:204:55 | select_query_bad | test_storage.rs:204:39:204:55 | &select_query_bad | provenance | Config | | test_storage.rs:204:40:204:55 | select_query_bad | test_storage.rs:204:39:204:55 | &select_query_bad [&ref] | provenance | | models @@ -72,20 +72,20 @@ nodes | test_storage.rs:71:96:71:114 | &... | semmle.label | &... | | test_storage.rs:71:96:71:114 | &... [&ref] | semmle.label | &... [&ref] | | test_storage.rs:71:97:71:114 | get_phone_number(...) | semmle.label | get_phone_number(...) | -| test_storage.rs:100:13:100:23 | ...::query | semmle.label | ...::query | | test_storage.rs:100:25:100:37 | insert_query2 | semmle.label | insert_query2 | +| test_storage.rs:100:25:100:46 | insert_query2.as_str() | semmle.label | insert_query2.as_str() | | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] | -| test_storage.rs:115:13:115:25 | ...::raw_sql | semmle.label | ...::raw_sql | | test_storage.rs:115:27:115:39 | insert_query2 | semmle.label | insert_query2 | +| test_storage.rs:115:27:115:48 | insert_query2.as_str() | semmle.label | insert_query2.as_str() | | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] | -| test_storage.rs:119:13:119:23 | ...::query | semmle.label | ...::query | | test_storage.rs:119:25:119:37 | insert_query2 | semmle.label | insert_query2 | +| test_storage.rs:119:25:119:46 | insert_query2.as_str() | semmle.label | insert_query2.as_str() | | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] | -| test_storage.rs:125:13:125:23 | ...::query | semmle.label | ...::query | | test_storage.rs:125:25:125:37 | insert_query2 | semmle.label | insert_query2 | +| test_storage.rs:125:25:125:46 | insert_query2.as_str() | semmle.label | insert_query2.as_str() | | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] | -| test_storage.rs:139:13:139:23 | ...::query | semmle.label | ...::query | | test_storage.rs:139:25:139:37 | insert_query2 | semmle.label | insert_query2 | +| test_storage.rs:139:25:139:46 | insert_query2.as_str() | semmle.label | insert_query2.as_str() | | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] | | test_storage.rs:189:9:189:24 | insert_query_bad | semmle.label | insert_query_bad | | test_storage.rs:189:28:189:117 | ... + ... | semmle.label | ... + ... | @@ -99,15 +99,15 @@ nodes | test_storage.rs:190:85:190:103 | &... | semmle.label | &... | | test_storage.rs:190:85:190:103 | &... [&ref] | semmle.label | &... [&ref] | | test_storage.rs:190:86:190:103 | get_phone_number(...) | semmle.label | get_phone_number(...) | -| test_storage.rs:194:16:194:22 | execute | semmle.label | execute | +| test_storage.rs:194:24:194:40 | &insert_query_bad | semmle.label | &insert_query_bad | | test_storage.rs:194:24:194:40 | &insert_query_bad | semmle.label | &insert_query_bad | | test_storage.rs:194:24:194:40 | &insert_query_bad [&ref] | semmle.label | &insert_query_bad [&ref] | | test_storage.rs:194:25:194:40 | insert_query_bad | semmle.label | insert_query_bad | -| test_storage.rs:196:24:196:32 | query_row | semmle.label | query_row | +| test_storage.rs:196:34:196:50 | &select_query_bad | semmle.label | &select_query_bad | | test_storage.rs:196:34:196:50 | &select_query_bad | semmle.label | &select_query_bad | | test_storage.rs:196:34:196:50 | &select_query_bad [&ref] | semmle.label | &select_query_bad [&ref] | | test_storage.rs:196:35:196:50 | select_query_bad | semmle.label | select_query_bad | -| test_storage.rs:204:31:204:37 | prepare | semmle.label | prepare | +| test_storage.rs:204:39:204:55 | &select_query_bad | semmle.label | &select_query_bad | | test_storage.rs:204:39:204:55 | &select_query_bad | semmle.label | &select_query_bad | | test_storage.rs:204:39:204:55 | &select_query_bad [&ref] | semmle.label | &select_query_bad [&ref] | | test_storage.rs:204:40:204:55 | select_query_bad | semmle.label | select_query_bad | diff --git a/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected index 25890c769856..227ed7a408b3 100644 --- a/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected +++ b/rust/ql/test/query-tests/security/CWE-319/UseOfHttp.expected @@ -1,15 +1,15 @@ #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 | +| main.rs:12:45:12:68 | "http://example.com/api" | main.rs:12:45:12:68 | "http://example.com/api" | main.rs:12:45:12:68 | "http://example.com/api" | 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:45:13:68 | "HTTP://EXAMPLE.COM/API" | main.rs:13:45:13:68 | "HTTP://EXAMPLE.COM/API" | main.rs:13:45:13:68 | "HTTP://EXAMPLE.COM/API" | 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:45:14:73 | "http://api.example.com/data" | main.rs:14:45:14:73 | "http://api.example.com/data" | main.rs:14:45:14:73 | "http://api.example.com/data" | 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:44:26:52 | &full_url | main.rs:23:20:23:39 | "http://example.com" | main.rs:26:44:26:52 | &full_url | 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:53:37:65 | &insecure_url | main.rs:34:20:34:28 | "http://" | main.rs:37:53:37:65 | &insecure_url | This URL may be constructed with the HTTP protocol, from $@. | main.rs:34:20:34:28 | "http://" | this HTTP URL | +| main.rs:60:43:60:65 | "http://172.32.0.0/baz" | main.rs:60:43:60:65 | "http://172.32.0.0/baz" | main.rs:60:43:60:65 | "http://172.32.0.0/baz" | 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:47:71:49 | url | main.rs:68:19:68:53 | "http://example.com/sensitive-... | main.rs:71:47:71:49 | url | 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:12:45:12:68 | "http://example.com/api" | main.rs:12:45:12:68 | "http://example.com/api" | provenance | Sink:MaD:1 | +| main.rs:13:45:13:68 | "HTTP://EXAMPLE.COM/API" | main.rs:13:45:13:68 | "HTTP://EXAMPLE.COM/API" | provenance | Sink:MaD:1 | +| main.rs:14:45:14:73 | "http://api.example.com/data" | main.rs:14:45:14:73 | "http://api.example.com/data" | provenance | 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 | | @@ -17,7 +17,7 @@ edges | 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:44:26:52 | &full_url [&ref] | main.rs:26:44:26:52 | &full_url | provenance | 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 | | @@ -26,22 +26,21 @@ edges | 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:53:37:65 | &insecure_url [&ref] | main.rs:37:53:37:65 | &insecure_url | provenance | 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:60:43:60:65 | "http://172.32.0.0/baz" | main.rs:60:43:60:65 | "http://172.32.0.0/baz" | provenance | Sink:MaD:1 | +| main.rs:68:13:68:15 | url | main.rs:71:47:71:49 | url | provenance | Sink:MaD:1 | | 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:12:45:12:68 | "http://example.com/api" | semmle.label | "http://example.com/api" | +| main.rs:13:45:13:68 | "HTTP://EXAMPLE.COM/API" | semmle.label | "HTTP://EXAMPLE.COM/API" | | 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: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" | @@ -50,7 +49,7 @@ nodes | 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 | semmle.label | &full_url | | 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 | @@ -60,13 +59,12 @@ nodes | 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 | semmle.label | &insecure_url | | 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: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-327/WeakSensitiveDataHashing/CryptographicOperations.expected b/rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/CryptographicOperations.expected index a190d85cce9a..e9a73ff6fe43 100644 --- a/rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/CryptographicOperations.expected +++ b/rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/CryptographicOperations.expected @@ -1,7 +1,7 @@ -| test.rs:19:9:19:34 | ...::compute(...) | HashingAlgorithm MD5 WEAK inputs:1 | -| test.rs:20:9:20:40 | ...::compute(...) | HashingAlgorithm MD5 WEAK inputs:1 | -| test.rs:21:9:21:34 | ...::compute(...) | HashingAlgorithm MD5 WEAK inputs:1 | -| test.rs:22:9:22:44 | ...::compute(...) | HashingAlgorithm MD5 WEAK inputs:1 | +| test.rs:19:26:19:33 | harmless | HashingAlgorithm MD5 WEAK inputs:1 | +| test.rs:20:26:20:39 | credit_card_no | HashingAlgorithm MD5 WEAK inputs:1 | +| test.rs:21:26:21:33 | password | HashingAlgorithm MD5 WEAK inputs:1 | +| test.rs:22:26:22:43 | encrypted_password | HashingAlgorithm MD5 WEAK inputs:1 | | test.rs:67:26:67:40 | ...::new(...) | HashingAlgorithm MD5 WEAK | | test.rs:73:9:73:23 | ...::new(...) | HashingAlgorithm MD5 WEAK | | test.rs:74:9:74:23 | ...::new(...) | HashingAlgorithm MD5 WEAK | @@ -9,4 +9,4 @@ | test.rs:156:26:156:40 | ...::new(...) | HashingAlgorithm MD5 WEAK | | test.rs:176:13:176:24 | ...::new(...) | EncryptionAlgorithm SEED | | test.rs:199:22:199:32 | ...::new(...) | HashingAlgorithm SHA1 WEAK | -| test.rs:211:13:211:35 | ...::compute(...) | HashingAlgorithm MD5 WEAK inputs:1 | +| test.rs:211:30:211:34 | value | HashingAlgorithm MD5 WEAK inputs:1 | diff --git a/rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/WeakSensitiveDataHashing.expected b/rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/WeakSensitiveDataHashing.expected index 89078b7c4b9d..e34feaa0592f 100644 --- a/rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/WeakSensitiveDataHashing.expected +++ b/rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/WeakSensitiveDataHashing.expected @@ -1,22 +1,20 @@ #select -| test.rs:20:9:20:24 | ...::compute | test.rs:20:26:20:39 | credit_card_no | test.rs:20:9:20:24 | ...::compute | $@ is used in a hashing algorithm (MD5) that is insecure. | test.rs:20:26:20:39 | credit_card_no | Sensitive data (private) | -| test.rs:21:9:21:24 | ...::compute | test.rs:21:26:21:33 | password | test.rs:21:9:21:24 | ...::compute | $@ is used in a hashing algorithm (MD5) that is insecure for password hashing, since it is not a computationally expensive hash function. | test.rs:21:26:21:33 | password | Sensitive data (password) | -| test.rs:211:13:211:28 | ...::compute | test.rs:226:29:226:36 | password | test.rs:211:13:211:28 | ...::compute | $@ is used in a hashing algorithm (MD5) that is insecure for password hashing, since it is not a computationally expensive hash function. | test.rs:226:29:226:36 | password | Sensitive data (password) | +| test.rs:20:26:20:39 | credit_card_no | test.rs:20:26:20:39 | credit_card_no | test.rs:20:26:20:39 | credit_card_no | $@ is used in a hashing algorithm (MD5) that is insecure. | test.rs:20:26:20:39 | credit_card_no | Sensitive data (private) | +| test.rs:21:26:21:33 | password | test.rs:21:26:21:33 | password | test.rs:21:26:21:33 | password | $@ is used in a hashing algorithm (MD5) that is insecure for password hashing, since it is not a computationally expensive hash function. | test.rs:21:26:21:33 | password | Sensitive data (password) | +| test.rs:211:30:211:34 | value | test.rs:226:29:226:36 | password | test.rs:211:30:211:34 | value | $@ is used in a hashing algorithm (MD5) that is insecure for password hashing, since it is not a computationally expensive hash function. | test.rs:226:29:226:36 | password | Sensitive data (password) | edges -| test.rs:20:26:20:39 | credit_card_no | test.rs:20:9:20:24 | ...::compute | provenance | MaD:1 Sink:MaD:1 | -| test.rs:21:26:21:33 | password | test.rs:21:9:21:24 | ...::compute | provenance | MaD:1 Sink:MaD:1 | -| test.rs:210:20:210:30 | ...: ... | test.rs:211:30:211:34 | value | provenance | | -| test.rs:211:30:211:34 | value | test.rs:211:13:211:28 | ...::compute | provenance | MaD:1 Sink:MaD:1 | +| test.rs:20:26:20:39 | credit_card_no | test.rs:20:26:20:39 | credit_card_no | provenance | Sink:MaD:1 | +| test.rs:21:26:21:33 | password | test.rs:21:26:21:33 | password | provenance | Sink:MaD:1 | +| test.rs:210:20:210:30 | ...: ... | test.rs:211:30:211:34 | value | provenance | Sink:MaD:1 | | test.rs:226:29:226:36 | password | test.rs:210:20:210:30 | ...: ... | provenance | | models | 1 | Sink: md5::compute; Argument[0]; hasher-input | nodes -| test.rs:20:9:20:24 | ...::compute | semmle.label | ...::compute | | test.rs:20:26:20:39 | credit_card_no | semmle.label | credit_card_no | -| test.rs:21:9:21:24 | ...::compute | semmle.label | ...::compute | +| test.rs:20:26:20:39 | credit_card_no | semmle.label | credit_card_no | +| test.rs:21:26:21:33 | password | semmle.label | password | | test.rs:21:26:21:33 | password | semmle.label | password | | test.rs:210:20:210:30 | ...: ... | semmle.label | ...: ... | -| test.rs:211:13:211:28 | ...::compute | semmle.label | ...::compute | | test.rs:211:30:211:34 | value | semmle.label | value | | test.rs:226:29:226:36 | password | semmle.label | password | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected index 7decd880f595..e6a8a85922ca 100644 --- a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected +++ b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected @@ -1,137 +1,135 @@ #select -| main.rs:8:66:8:70 | build | main.rs:8:19:8:50 | ...::build(...) | main.rs:8:66:8:70 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:16:52:16:56 | build | main.rs:16:19:16:31 | ...::build | main.rs:16:52:16:56 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:20:56:20:60 | build | main.rs:20:5:20:36 | ...::build(...) | main.rs:20:56:20:60 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:21:57:21:61 | build | main.rs:21:5:21:36 | ...::build(...) | main.rs:21:57:21:61 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:25:54:25:58 | build | main.rs:25:5:25:36 | ...::build(...) | main.rs:25:54:25:58 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:26:52:26:56 | build | main.rs:26:5:26:36 | ...::build(...) | main.rs:26:52:26:56 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:27:53:27:57 | build | main.rs:27:5:27:36 | ...::build(...) | main.rs:27:53:27:57 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:28:62:28:66 | build | main.rs:28:5:28:36 | ...::build(...) | main.rs:28:62:28:66 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:29:62:29:66 | build | main.rs:29:5:29:36 | ...::build(...) | main.rs:29:62:29:66 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:33:60:33:64 | build | main.rs:33:9:33:40 | ...::build(...) | main.rs:33:60:33:64 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:35:60:35:64 | build | main.rs:35:9:35:40 | ...::build(...) | main.rs:35:60:35:64 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:39:55:39:59 | build | main.rs:39:5:39:39 | ...::new(...) | main.rs:39:55:39:59 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:40:66:40:70 | build | main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:66:40:70 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:41:95:41:99 | build | main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:95:41:99 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:42:74:42:78 | build | main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:74:42:78 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:43:62:43:66 | build | main.rs:43:5:43:46 | ... .path(...) | main.rs:43:62:43:66 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:44:68:44:72 | build | main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:68:44:72 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:45:88:45:92 | build | main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:88:45:92 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:46:64:46:68 | build | main.rs:46:5:46:48 | ... .permanent() | main.rs:46:64:46:68 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:47:62:47:66 | build | main.rs:47:5:47:46 | ... .removal() | main.rs:47:62:47:66 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:48:52:48:57 | finish | main.rs:48:5:48:36 | ...::build(...) | main.rs:48:52:48:57 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:49:41:49:45 | build | main.rs:49:5:49:25 | ...::build(...) | main.rs:49:41:49:45 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:50:56:50:60 | build | main.rs:50:5:50:40 | ...::build(...) | main.rs:50:56:50:60 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:53:65:53:69 | build | main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:65:53:69 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:59:9:59:11 | add | main.rs:58:17:58:27 | ...::new | main.rs:59:9:59:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:60:9:60:20 | add_original | main.rs:58:17:58:27 | ...::new | main.rs:60:9:60:20 | add_original | Cookie attribute 'Secure' is not set to true. | -| main.rs:64:9:64:11 | add | main.rs:63:5:63:5 | [SSA] a | main.rs:64:9:64:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:64:9:64:11 | add | main.rs:63:5:63:5 | a | main.rs:64:9:64:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:69:16:69:18 | add | main.rs:68:17:68:29 | ...::named | main.rs:69:16:69:18 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:70:16:70:27 | add_original | main.rs:63:5:63:5 | [SSA] a | main.rs:70:16:70:27 | add_original | Cookie attribute 'Secure' is not set to true. | -| main.rs:70:16:70:27 | add_original | main.rs:63:5:63:5 | a | main.rs:70:16:70:27 | add_original | Cookie attribute 'Secure' is not set to true. | -| main.rs:72:16:72:18 | add | main.rs:71:5:71:5 | [SSA] b | main.rs:72:16:72:18 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:72:16:72:18 | add | main.rs:71:5:71:5 | b | main.rs:72:16:72:18 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:78:17:78:19 | add | main.rs:77:17:77:28 | ...::from | main.rs:78:17:78:19 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:79:17:79:28 | add_original | main.rs:63:5:63:5 | [SSA] a | main.rs:79:17:79:28 | add_original | Cookie attribute 'Secure' is not set to true. | -| main.rs:79:17:79:28 | add_original | main.rs:63:5:63:5 | a | main.rs:79:17:79:28 | add_original | Cookie attribute 'Secure' is not set to true. | -| main.rs:83:17:83:19 | add | main.rs:77:17:77:28 | ...::from | main.rs:83:17:83:19 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:88:9:88:11 | add | main.rs:87:17:87:28 | ...::from | main.rs:88:9:88:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:94:9:94:11 | add | main.rs:87:17:87:28 | ...::from | main.rs:94:9:94:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:123:13:123:18 | insert | main.rs:122:13:122:41 | ...::new | main.rs:123:13:123:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:131:13:131:18 | insert | main.rs:130:13:130:13 | b | main.rs:131:13:131:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:147:13:147:18 | insert | main.rs:146:13:146:13 | f | main.rs:147:13:147:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:152:13:152:18 | insert | main.rs:151:13:151:42 | ...::from | main.rs:152:13:152:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:156:13:156:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:156:13:156:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:157:13:157:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:157:13:157:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:158:13:158:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:158:13:158:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:159:13:159:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:159:13:159:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:160:13:160:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:160:13:160:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:161:13:161:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:161:13:161:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:162:13:162:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:162:13:162:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:163:13:163:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:163:13:163:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:164:13:164:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:164:13:164:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:165:13:165:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:165:13:165:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:166:13:166:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:166:13:166:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:167:13:167:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:167:13:167:18 | insert | Cookie attribute 'Secure' is not set to true. | -| main.rs:173:61:173:65 | build | main.rs:173:22:173:34 | ...::build | main.rs:173:61:173:65 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:197:55:197:60 | finish | main.rs:197:5:197:39 | ...::build(...) | main.rs:197:55:197:60 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:198:65:198:70 | finish | main.rs:198:5:198:39 | ...::build(...) | main.rs:198:65:198:70 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:202:9:202:11 | add | main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:202:9:202:11 | add | main.rs:201:5:201:11 | cookie1 | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:212:41:212:46 | finish | main.rs:212:5:212:22 | ...::build | main.rs:212:41:212:46 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:215:9:215:11 | add | main.rs:214:19:214:34 | ...::new | main.rs:215:9:215:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:229:9:229:11 | add | main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:9:229:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:229:9:229:11 | add | main.rs:228:5:228:11 | cookie1 | main.rs:229:9:229:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:242:9:242:41 | ...::new | main.rs:241:29:241:62 | ...::new(...) | main.rs:242:9:242:41 | ...::new | Cookie attribute 'Secure' is not set to true. | -| main.rs:245:9:245:41 | ...::new | main.rs:244:30:244:63 | ...::new(...) | main.rs:245:9:245:41 | ...::new | Cookie attribute 'Secure' is not set to true. | -| main.rs:259:59:259:64 | finish | main.rs:259:5:259:43 | ...::build(...) | main.rs:259:59:259:64 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:260:69:260:74 | finish | main.rs:260:5:260:43 | ...::build(...) | main.rs:260:69:260:74 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:264:9:264:11 | add | main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:264:9:264:11 | add | main.rs:263:5:263:11 | cookie1 | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:274:45:274:50 | finish | main.rs:274:5:274:26 | ...::build | main.rs:274:45:274:50 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:277:9:277:11 | add | main.rs:276:19:276:38 | ...::new | main.rs:277:9:277:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:8:19:8:64 | ... .secure(...) | main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:16:19:16:50 | ...::build(...) | main.rs:16:19:16:50 | ...::build(...) | main.rs:16:19:16:50 | ...::build(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:20:5:20:54 | ... .secure(...) | main.rs:20:5:20:36 | ...::build(...) | main.rs:20:5:20:54 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:21:5:21:55 | ... .secure(...) | main.rs:21:5:21:36 | ...::build(...) | main.rs:21:5:21:55 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:25:5:25:52 | ... .secure(...) | main.rs:25:5:25:36 | ...::build(...) | main.rs:25:5:25:52 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:26:5:26:50 | ... .secure(...) | main.rs:26:5:26:36 | ...::build(...) | main.rs:26:5:26:50 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:27:5:27:51 | ... .secure(...) | main.rs:27:5:27:36 | ...::build(...) | main.rs:27:5:27:51 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:28:5:28:60 | ... .secure(...) | main.rs:28:5:28:36 | ...::build(...) | main.rs:28:5:28:60 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:29:5:29:60 | ... .secure(...) | main.rs:29:5:29:36 | ...::build(...) | main.rs:29:5:29:60 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:33:9:33:58 | ... .secure(...) | main.rs:33:9:33:40 | ...::build(...) | main.rs:33:9:33:58 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:35:9:35:58 | ... .secure(...) | main.rs:35:9:35:40 | ...::build(...) | main.rs:35:9:35:58 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:39:5:39:53 | ... .secure(...) | main.rs:39:5:39:39 | ...::new(...) | main.rs:39:5:39:53 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:40:5:40:64 | ... .secure(...) | main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:5:40:64 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:41:5:41:93 | ... .secure(...) | main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:5:41:93 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:42:5:42:72 | ... .secure(...) | main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:5:42:72 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:43:5:43:60 | ... .secure(...) | main.rs:43:5:43:46 | ... .path(...) | main.rs:43:5:43:60 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:44:5:44:66 | ... .secure(...) | main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:5:44:66 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:45:5:45:86 | ... .secure(...) | main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:5:45:86 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:46:5:46:62 | ... .secure(...) | main.rs:46:5:46:48 | ... .permanent() | main.rs:46:5:46:62 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:47:5:47:60 | ... .secure(...) | main.rs:47:5:47:46 | ... .removal() | main.rs:47:5:47:60 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:48:5:48:50 | ... .secure(...) | main.rs:48:5:48:36 | ...::build(...) | main.rs:48:5:48:50 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:49:5:49:39 | ... .secure(...) | main.rs:49:5:49:25 | ...::build(...) | main.rs:49:5:49:39 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:50:5:50:54 | ... .secure(...) | main.rs:50:5:50:40 | ...::build(...) | main.rs:50:5:50:54 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:53:5:53:63 | ... .secure(...) | main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:59:13:59:21 | a.clone() | main.rs:58:17:58:44 | ...::new(...) | main.rs:59:13:59:21 | a.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:60:22:60:30 | a.clone() | main.rs:58:17:58:44 | ...::new(...) | main.rs:60:22:60:30 | a.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:64:13:64:21 | a.clone() | main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:21 | a.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:64:13:64:21 | a.clone() | main.rs:63:5:63:5 | a | main.rs:64:13:64:21 | a.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:69:20:69:28 | b.clone() | main.rs:68:17:68:37 | ...::named(...) | main.rs:69:20:69:28 | b.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:70:29:70:37 | a.clone() | main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:37 | a.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:70:29:70:37 | a.clone() | main.rs:63:5:63:5 | a | main.rs:70:29:70:37 | a.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:72:20:72:28 | b.clone() | main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:28 | b.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:72:20:72:28 | b.clone() | main.rs:71:5:71:5 | b | main.rs:72:20:72:28 | b.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:78:21:78:29 | c.clone() | main.rs:77:17:77:36 | ...::from(...) | main.rs:78:21:78:29 | c.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:79:30:79:38 | a.clone() | main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:38 | a.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:79:30:79:38 | a.clone() | main.rs:63:5:63:5 | a | main.rs:79:30:79:38 | a.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:83:21:83:29 | c.clone() | main.rs:77:17:77:36 | ...::from(...) | main.rs:83:21:83:29 | c.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:88:13:88:21 | d.clone() | main.rs:87:17:87:36 | ...::from(...) | main.rs:88:13:88:21 | d.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:94:13:94:21 | d.clone() | main.rs:87:17:87:36 | ...::from(...) | main.rs:94:13:94:21 | d.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:123:20:123:28 | a.clone() | main.rs:122:13:122:58 | ...::new(...) | main.rs:123:20:123:28 | a.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:131:20:131:28 | c.clone() | main.rs:130:13:130:13 | b | main.rs:131:20:131:28 | c.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:147:20:147:28 | g.clone() | main.rs:146:13:146:13 | f | main.rs:147:20:147:28 | g.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:152:20:152:20 | h | main.rs:151:13:151:61 | ...::from(...) | main.rs:152:20:152:20 | h | Cookie attribute 'Secure' is not set to true. | +| main.rs:156:20:156:46 | ... .set_name(...) | main.rs:155:13:155:58 | ...::new(...) | main.rs:156:20:156:46 | ... .set_name(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:157:20:157:48 | ... .set_value(...) | main.rs:155:13:155:58 | ...::new(...) | main.rs:157:20:157:48 | ... .set_value(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:158:20:158:48 | ... .set_http_only(...) | main.rs:155:13:155:58 | ...::new(...) | main.rs:158:20:158:48 | ... .set_http_only(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:159:20:159:70 | ... .set_same_site(...) | main.rs:155:13:155:58 | ...::new(...) | main.rs:159:20:159:70 | ... .set_same_site(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:160:20:160:46 | ... .set_max_age(...) | main.rs:155:13:155:58 | ...::new(...) | main.rs:160:20:160:46 | ... .set_max_age(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:161:20:161:42 | ... .set_path(...) | main.rs:155:13:155:58 | ...::new(...) | main.rs:161:20:161:42 | ... .set_path(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:162:20:162:41 | ... .unset_path() | main.rs:155:13:155:58 | ...::new(...) | main.rs:162:20:162:41 | ... .unset_path() | Cookie attribute 'Secure' is not set to true. | +| main.rs:163:20:163:54 | ... .set_domain(...) | main.rs:155:13:155:58 | ...::new(...) | main.rs:163:20:163:54 | ... .set_domain(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:164:20:164:43 | ... .unset_domain() | main.rs:155:13:155:58 | ...::new(...) | main.rs:164:20:164:43 | ... .unset_domain() | Cookie attribute 'Secure' is not set to true. | +| main.rs:165:20:165:46 | ... .set_expires(...) | main.rs:155:13:155:58 | ...::new(...) | main.rs:165:20:165:46 | ... .set_expires(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:166:20:166:44 | ... .unset_expires() | main.rs:155:13:155:58 | ...::new(...) | main.rs:166:20:166:44 | ... .unset_expires() | Cookie attribute 'Secure' is not set to true. | +| main.rs:167:20:167:45 | ... .make_permanent() | main.rs:155:13:155:58 | ...::new(...) | main.rs:167:20:167:45 | ... .make_permanent() | Cookie attribute 'Secure' is not set to true. | +| main.rs:173:22:173:59 | ...::build(...) | main.rs:173:22:173:59 | ...::build(...) | main.rs:173:22:173:59 | ...::build(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:197:5:197:53 | ... .secure(...) | main.rs:197:5:197:39 | ...::build(...) | main.rs:197:5:197:53 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:198:5:198:63 | ... .path(...) | main.rs:198:5:198:39 | ...::build(...) | main.rs:198:5:198:63 | ... .path(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:202:13:202:27 | cookie1.clone() | main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:27 | cookie1.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:202:13:202:27 | cookie1.clone() | main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:212:5:212:39 | ...::build(...) | main.rs:212:5:212:39 | ...::build(...) | main.rs:212:5:212:39 | ...::build(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:215:13:215:27 | cookie3.clone() | main.rs:214:19:214:51 | ...::new(...) | main.rs:215:13:215:27 | cookie3.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:219:13:219:27 | cookie2.clone() | main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:27 | cookie2.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:219:13:219:27 | cookie2.clone() | main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:229:13:229:27 | cookie1.clone() | main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:13:229:27 | cookie1.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:229:13:229:27 | cookie1.clone() | main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:242:43:242:59 | cookie_config_bad | main.rs:241:29:241:62 | ...::new(...) | main.rs:242:43:242:59 | cookie_config_bad | Cookie attribute 'Secure' is not set to true. | +| main.rs:245:43:245:60 | cookie_config_bad2 | main.rs:244:30:244:63 | ...::new(...) | main.rs:245:43:245:60 | cookie_config_bad2 | Cookie attribute 'Secure' is not set to true. | +| main.rs:259:5:259:57 | ... .secure(...) | main.rs:259:5:259:43 | ...::build(...) | main.rs:259:5:259:57 | ... .secure(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:260:5:260:67 | ... .path(...) | main.rs:260:5:260:43 | ...::build(...) | main.rs:260:5:260:67 | ... .path(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:264:13:264:27 | cookie1.clone() | main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:27 | cookie1.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:264:13:264:27 | cookie1.clone() | main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:274:5:274:43 | ...::build(...) | main.rs:274:5:274:43 | ...::build(...) | main.rs:274:5:274:43 | ...::build(...) | Cookie attribute 'Secure' is not set to true. | +| main.rs:277:13:277:27 | cookie3.clone() | main.rs:276:19:276:55 | ...::new(...) | main.rs:277:13:277:27 | cookie3.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:281:13:281:27 | cookie2.clone() | main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:27 | cookie2.clone() | Cookie attribute 'Secure' is not set to true. | +| main.rs:281:13:281:27 | cookie2.clone() | main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | Cookie attribute 'Secure' is not set to true. | edges | main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:35 | -| main.rs:8:19:8:64 | ... .secure(...) | main.rs:8:66:8:70 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:16:19:16:31 | ...::build | main.rs:16:19:16:50 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:16:19:16:50 | ...::build(...) | main.rs:16:52:16:56 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:8:19:8:64 | ... .secure(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | Sink:MaD:2 | +| main.rs:16:19:16:50 | ...::build(...) | main.rs:16:19:16:50 | ...::build(...) | provenance | Src:MaD:15 Sink:MaD:2 | | main.rs:20:5:20:36 | ...::build(...) | main.rs:20:5:20:54 | ... .secure(...) | provenance | MaD:35 | -| main.rs:20:5:20:54 | ... .secure(...) | main.rs:20:56:20:60 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:20:5:20:54 | ... .secure(...) | main.rs:20:5:20:54 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:21:5:21:36 | ...::build(...) | main.rs:21:5:21:55 | ... .secure(...) | provenance | MaD:35 | -| main.rs:21:5:21:55 | ... .secure(...) | main.rs:21:57:21:61 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:21:5:21:55 | ... .secure(...) | main.rs:21:5:21:55 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:25:5:25:36 | ...::build(...) | main.rs:25:5:25:52 | ... .secure(...) | provenance | MaD:35 | -| main.rs:25:5:25:52 | ... .secure(...) | main.rs:25:54:25:58 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:25:5:25:52 | ... .secure(...) | main.rs:25:5:25:52 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:26:5:26:36 | ...::build(...) | main.rs:26:5:26:50 | ... .secure(...) | provenance | MaD:35 | -| main.rs:26:5:26:50 | ... .secure(...) | main.rs:26:52:26:56 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:26:5:26:50 | ... .secure(...) | main.rs:26:5:26:50 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:27:5:27:36 | ...::build(...) | main.rs:27:5:27:51 | ... .secure(...) | provenance | MaD:35 | -| main.rs:27:5:27:51 | ... .secure(...) | main.rs:27:53:27:57 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:27:5:27:51 | ... .secure(...) | main.rs:27:5:27:51 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:28:5:28:36 | ...::build(...) | main.rs:28:5:28:60 | ... .secure(...) | provenance | MaD:35 | -| main.rs:28:5:28:60 | ... .secure(...) | main.rs:28:62:28:66 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:28:5:28:60 | ... .secure(...) | main.rs:28:5:28:60 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:29:5:29:36 | ...::build(...) | main.rs:29:5:29:60 | ... .secure(...) | provenance | MaD:35 | -| main.rs:29:5:29:60 | ... .secure(...) | main.rs:29:62:29:66 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:29:5:29:60 | ... .secure(...) | main.rs:29:5:29:60 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:33:9:33:40 | ...::build(...) | main.rs:33:9:33:58 | ... .secure(...) | provenance | MaD:35 | -| main.rs:33:9:33:58 | ... .secure(...) | main.rs:33:60:33:64 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:33:9:33:58 | ... .secure(...) | main.rs:33:9:33:58 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:35:9:35:40 | ...::build(...) | main.rs:35:9:35:58 | ... .secure(...) | provenance | MaD:35 | -| main.rs:35:9:35:58 | ... .secure(...) | main.rs:35:60:35:64 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:35:9:35:58 | ... .secure(...) | main.rs:35:9:35:58 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:39:5:39:39 | ...::new(...) | main.rs:39:5:39:53 | ... .secure(...) | provenance | MaD:35 | -| main.rs:39:5:39:53 | ... .secure(...) | main.rs:39:55:39:59 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:39:5:39:53 | ... .secure(...) | main.rs:39:5:39:53 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:5:40:64 | ... .secure(...) | provenance | MaD:35 | -| main.rs:40:5:40:64 | ... .secure(...) | main.rs:40:66:40:70 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:40:5:40:64 | ... .secure(...) | main.rs:40:5:40:64 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:5:41:93 | ... .secure(...) | provenance | MaD:35 | -| main.rs:41:5:41:93 | ... .secure(...) | main.rs:41:95:41:99 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:41:5:41:93 | ... .secure(...) | main.rs:41:5:41:93 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:5:42:72 | ... .secure(...) | provenance | MaD:35 | -| main.rs:42:5:42:72 | ... .secure(...) | main.rs:42:74:42:78 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:42:5:42:72 | ... .secure(...) | main.rs:42:5:42:72 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:43:5:43:46 | ... .path(...) | main.rs:43:5:43:60 | ... .secure(...) | provenance | MaD:35 | -| main.rs:43:5:43:60 | ... .secure(...) | main.rs:43:62:43:66 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:43:5:43:60 | ... .secure(...) | main.rs:43:5:43:60 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:5:44:66 | ... .secure(...) | provenance | MaD:35 | -| main.rs:44:5:44:66 | ... .secure(...) | main.rs:44:68:44:72 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:44:5:44:66 | ... .secure(...) | main.rs:44:5:44:66 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:5:45:86 | ... .secure(...) | provenance | MaD:35 | -| main.rs:45:5:45:86 | ... .secure(...) | main.rs:45:88:45:92 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:45:5:45:86 | ... .secure(...) | main.rs:45:5:45:86 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:46:5:46:48 | ... .permanent() | main.rs:46:5:46:62 | ... .secure(...) | provenance | MaD:35 | -| main.rs:46:5:46:62 | ... .secure(...) | main.rs:46:64:46:68 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:46:5:46:62 | ... .secure(...) | main.rs:46:5:46:62 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:47:5:47:46 | ... .removal() | main.rs:47:5:47:60 | ... .secure(...) | provenance | MaD:35 | -| main.rs:47:5:47:60 | ... .secure(...) | main.rs:47:62:47:66 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:47:5:47:60 | ... .secure(...) | main.rs:47:5:47:60 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:48:5:48:36 | ...::build(...) | main.rs:48:5:48:50 | ... .secure(...) | provenance | MaD:35 | -| main.rs:48:5:48:50 | ... .secure(...) | main.rs:48:52:48:57 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:48:5:48:50 | ... .secure(...) | main.rs:48:5:48:50 | ... .secure(...) | provenance | Sink:MaD:3 | | main.rs:49:5:49:25 | ...::build(...) | main.rs:49:5:49:39 | ... .secure(...) | provenance | MaD:35 | -| main.rs:49:5:49:39 | ... .secure(...) | main.rs:49:41:49:45 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:49:5:49:39 | ... .secure(...) | main.rs:49:5:49:39 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:50:5:50:40 | ...::build(...) | main.rs:50:5:50:54 | ... .secure(...) | provenance | MaD:35 | -| main.rs:50:5:50:54 | ... .secure(...) | main.rs:50:56:50:60 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:50:5:50:54 | ... .secure(...) | main.rs:50:5:50:54 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:35 | -| main.rs:53:5:53:63 | ... .secure(...) | main.rs:53:65:53:69 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:53:5:53:63 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | Sink:MaD:2 | | main.rs:58:9:58:13 | mut a | main.rs:59:13:59:13 | a | provenance | | | main.rs:58:9:58:13 | mut a | main.rs:60:22:60:22 | a | provenance | | -| main.rs:58:17:58:27 | ...::new | main.rs:58:17:58:44 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | -| main.rs:58:17:58:44 | ...::new(...) | main.rs:58:9:58:13 | mut a | provenance | | +| main.rs:58:17:58:44 | ...::new(...) | main.rs:58:9:58:13 | mut a | provenance | Src:MaD:17 | | main.rs:59:13:59:13 | a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:18 | -| main.rs:59:13:59:21 | a.clone() | main.rs:59:9:59:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:59:13:59:21 | a.clone() | main.rs:59:13:59:21 | a.clone() | provenance | Sink:MaD:4 | | main.rs:60:22:60:22 | a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:18 | -| main.rs:60:22:60:30 | a.clone() | main.rs:60:9:60:20 | add_original | provenance | MaD:5 Sink:MaD:5 | +| main.rs:60:22:60:30 | a.clone() | main.rs:60:22:60:30 | a.clone() | provenance | Sink:MaD:5 | | main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:13 | a | provenance | | | main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:29 | a | provenance | | | main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:30 | a | provenance | | @@ -139,64 +137,58 @@ edges | main.rs:63:5:63:5 | a | main.rs:70:29:70:29 | a | provenance | | | main.rs:63:5:63:5 | a | main.rs:79:30:79:30 | a | provenance | | | main.rs:64:13:64:13 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:18 | -| main.rs:64:13:64:21 | a.clone() | main.rs:64:9:64:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:64:13:64:21 | a.clone() | main.rs:64:13:64:21 | a.clone() | provenance | Sink:MaD:4 | | main.rs:68:9:68:13 | mut b | main.rs:69:20:69:20 | b | provenance | | -| main.rs:68:17:68:29 | ...::named | main.rs:68:17:68:37 | ...::named(...) | provenance | Src:MaD:16 MaD:16 | -| main.rs:68:17:68:37 | ...::named(...) | main.rs:68:9:68:13 | mut b | provenance | | +| main.rs:68:17:68:37 | ...::named(...) | main.rs:68:9:68:13 | mut b | provenance | Src:MaD:16 | | main.rs:69:20:69:20 | b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:18 | -| main.rs:69:20:69:28 | b.clone() | main.rs:69:16:69:18 | add | provenance | MaD:8 Sink:MaD:8 | +| main.rs:69:20:69:28 | b.clone() | main.rs:69:20:69:28 | b.clone() | provenance | Sink:MaD:8 | | main.rs:70:29:70:29 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:18 | -| main.rs:70:29:70:37 | a.clone() | main.rs:70:16:70:27 | add_original | provenance | MaD:9 Sink:MaD:9 | +| main.rs:70:29:70:37 | a.clone() | main.rs:70:29:70:37 | a.clone() | provenance | Sink:MaD:9 | | main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:20 | b | provenance | | | main.rs:71:5:71:5 | b | main.rs:72:20:72:20 | b | provenance | | | main.rs:72:20:72:20 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:18 | -| main.rs:72:20:72:28 | b.clone() | main.rs:72:16:72:18 | add | provenance | MaD:8 Sink:MaD:8 | +| main.rs:72:20:72:28 | b.clone() | main.rs:72:20:72:28 | b.clone() | provenance | Sink:MaD:8 | | main.rs:77:9:77:13 | mut c | main.rs:78:21:78:21 | c | provenance | | | main.rs:77:9:77:13 | mut c | main.rs:83:21:83:21 | c | provenance | | -| main.rs:77:17:77:28 | ...::from | main.rs:77:17:77:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 | -| main.rs:77:17:77:36 | ...::from(...) | main.rs:77:9:77:13 | mut c | provenance | | +| main.rs:77:17:77:36 | ...::from(...) | main.rs:77:9:77:13 | mut c | provenance | Src:MaD:14 | | main.rs:78:21:78:21 | c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:18 | -| main.rs:78:21:78:29 | c.clone() | main.rs:78:17:78:19 | add | provenance | MaD:6 Sink:MaD:6 | +| main.rs:78:21:78:29 | c.clone() | main.rs:78:21:78:29 | c.clone() | provenance | Sink:MaD:6 | | main.rs:79:30:79:30 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:18 | -| main.rs:79:30:79:38 | a.clone() | main.rs:79:17:79:28 | add_original | provenance | MaD:7 Sink:MaD:7 | +| main.rs:79:30:79:38 | a.clone() | main.rs:79:30:79:38 | a.clone() | provenance | Sink:MaD:7 | | main.rs:83:21:83:21 | c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:18 | -| main.rs:83:21:83:29 | c.clone() | main.rs:83:17:83:19 | add | provenance | MaD:6 Sink:MaD:6 | +| main.rs:83:21:83:29 | c.clone() | main.rs:83:21:83:29 | c.clone() | provenance | Sink:MaD:6 | | main.rs:87:9:87:13 | mut d | main.rs:88:13:88:13 | d | provenance | | | main.rs:87:9:87:13 | mut d | main.rs:94:13:94:13 | d | provenance | | -| main.rs:87:17:87:28 | ...::from | main.rs:87:17:87:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 | -| main.rs:87:17:87:36 | ...::from(...) | main.rs:87:9:87:13 | mut d | provenance | | +| main.rs:87:17:87:36 | ...::from(...) | main.rs:87:9:87:13 | mut d | provenance | Src:MaD:14 | | main.rs:88:13:88:13 | d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:18 | -| main.rs:88:13:88:21 | d.clone() | main.rs:88:9:88:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:88:13:88:21 | d.clone() | main.rs:88:13:88:21 | d.clone() | provenance | Sink:MaD:4 | | main.rs:94:13:94:13 | d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:18 | -| main.rs:94:13:94:21 | d.clone() | main.rs:94:9:94:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:114:5:114:17 | ...::build | main.rs:114:5:114:36 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:94:13:94:21 | d.clone() | main.rs:94:13:94:21 | d.clone() | provenance | Sink:MaD:4 | +| main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:36 | ...::build(...) | provenance | Src:MaD:15 | | main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:33 | -| main.rs:114:5:114:54 | ... .partitioned(...) | main.rs:114:56:114:60 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:114:5:114:54 | ... .partitioned(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | Sink:MaD:2 | | main.rs:122:9:122:9 | a | main.rs:123:20:123:20 | a | provenance | | -| main.rs:122:13:122:41 | ...::new | main.rs:122:13:122:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:122:13:122:58 | ...::new(...) | main.rs:122:9:122:9 | a | provenance | | +| main.rs:122:13:122:58 | ...::new(...) | main.rs:122:9:122:9 | a | provenance | Src:MaD:13 | | main.rs:123:20:123:20 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:18 | -| main.rs:123:20:123:28 | a.clone() | main.rs:123:13:123:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:123:20:123:28 | a.clone() | main.rs:123:20:123:28 | a.clone() | provenance | Sink:MaD:1 | | main.rs:130:9:130:9 | c | main.rs:131:20:131:20 | c | provenance | | | main.rs:130:9:130:9 | c | main.rs:134:13:134:13 | c | provenance | | | main.rs:130:13:130:13 | b | main.rs:130:13:130:31 | b.set_secure(...) | provenance | MaD:28 | | main.rs:130:13:130:31 | b.set_secure(...) | main.rs:130:9:130:9 | c | provenance | | | main.rs:131:20:131:20 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:18 | -| main.rs:131:20:131:28 | c.clone() | main.rs:131:13:131:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:131:20:131:28 | c.clone() | main.rs:131:20:131:28 | c.clone() | provenance | Sink:MaD:1 | | main.rs:134:9:134:9 | d | main.rs:135:20:135:20 | d | provenance | | | main.rs:134:13:134:13 | c | main.rs:134:13:134:35 | c.set_partitioned(...) | provenance | MaD:25 | | main.rs:134:13:134:35 | c.set_partitioned(...) | main.rs:134:9:134:9 | d | provenance | | | main.rs:135:20:135:20 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:18 | -| main.rs:135:20:135:28 | d.clone() | main.rs:135:13:135:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:135:20:135:28 | d.clone() | main.rs:135:20:135:28 | d.clone() | provenance | Sink:MaD:1 | | main.rs:146:9:146:9 | g | main.rs:147:20:147:20 | g | provenance | | | main.rs:146:13:146:13 | f | main.rs:146:13:146:31 | f.set_secure(...) | provenance | MaD:28 | | main.rs:146:13:146:31 | f.set_secure(...) | main.rs:146:9:146:9 | g | provenance | | | main.rs:147:20:147:20 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:18 | -| main.rs:147:20:147:28 | g.clone() | main.rs:147:13:147:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:151:9:151:9 | h | main.rs:152:20:152:20 | h | provenance | | -| main.rs:151:13:151:42 | ...::from | main.rs:151:13:151:61 | ...::from(...) | provenance | Src:MaD:12 MaD:12 | -| main.rs:151:13:151:61 | ...::from(...) | main.rs:151:9:151:9 | h | provenance | | -| main.rs:152:20:152:20 | h | main.rs:152:13:152:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:147:20:147:28 | g.clone() | main.rs:147:20:147:28 | g.clone() | provenance | Sink:MaD:1 | +| main.rs:151:9:151:9 | h | main.rs:152:20:152:20 | h | provenance | Sink:MaD:1 | +| main.rs:151:13:151:61 | ...::from(...) | main.rs:151:9:151:9 | h | provenance | Src:MaD:12 | | main.rs:155:9:155:9 | i | main.rs:156:20:156:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:157:20:157:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:158:20:158:20 | i | provenance | | @@ -209,100 +201,92 @@ edges | main.rs:155:9:155:9 | i | main.rs:165:20:165:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:166:20:166:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:167:20:167:20 | i | provenance | | -| main.rs:155:13:155:41 | ...::new | main.rs:155:13:155:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:155:13:155:58 | ...::new(...) | main.rs:155:9:155:9 | i | provenance | | +| main.rs:155:13:155:58 | ...::new(...) | main.rs:155:9:155:9 | i | provenance | Src:MaD:13 | | main.rs:156:20:156:20 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:18 | | main.rs:156:20:156:28 | i.clone() | main.rs:156:20:156:46 | ... .set_name(...) | provenance | MaD:24 | -| main.rs:156:20:156:46 | ... .set_name(...) | main.rs:156:13:156:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:156:20:156:46 | ... .set_name(...) | main.rs:156:20:156:46 | ... .set_name(...) | provenance | Sink:MaD:1 | | main.rs:157:20:157:20 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:18 | | main.rs:157:20:157:28 | i.clone() | main.rs:157:20:157:48 | ... .set_value(...) | provenance | MaD:29 | -| main.rs:157:20:157:48 | ... .set_value(...) | main.rs:157:13:157:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:157:20:157:48 | ... .set_value(...) | main.rs:157:20:157:48 | ... .set_value(...) | provenance | Sink:MaD:1 | | main.rs:158:20:158:20 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:18 | | main.rs:158:20:158:28 | i.clone() | main.rs:158:20:158:48 | ... .set_http_only(...) | provenance | MaD:22 | -| main.rs:158:20:158:48 | ... .set_http_only(...) | main.rs:158:13:158:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:158:20:158:48 | ... .set_http_only(...) | main.rs:158:20:158:48 | ... .set_http_only(...) | provenance | Sink:MaD:1 | | main.rs:159:20:159:20 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:18 | | main.rs:159:20:159:28 | i.clone() | main.rs:159:20:159:70 | ... .set_same_site(...) | provenance | MaD:27 | -| main.rs:159:20:159:70 | ... .set_same_site(...) | main.rs:159:13:159:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:159:20:159:70 | ... .set_same_site(...) | main.rs:159:20:159:70 | ... .set_same_site(...) | provenance | Sink:MaD:1 | | main.rs:160:20:160:20 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:18 | | main.rs:160:20:160:28 | i.clone() | main.rs:160:20:160:46 | ... .set_max_age(...) | provenance | MaD:23 | -| main.rs:160:20:160:46 | ... .set_max_age(...) | main.rs:160:13:160:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:160:20:160:46 | ... .set_max_age(...) | main.rs:160:20:160:46 | ... .set_max_age(...) | provenance | Sink:MaD:1 | | main.rs:161:20:161:20 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:18 | | main.rs:161:20:161:28 | i.clone() | main.rs:161:20:161:42 | ... .set_path(...) | provenance | MaD:26 | -| main.rs:161:20:161:42 | ... .set_path(...) | main.rs:161:13:161:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:161:20:161:42 | ... .set_path(...) | main.rs:161:20:161:42 | ... .set_path(...) | provenance | Sink:MaD:1 | | main.rs:162:20:162:20 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:18 | | main.rs:162:20:162:28 | i.clone() | main.rs:162:20:162:41 | ... .unset_path() | provenance | MaD:32 | -| main.rs:162:20:162:41 | ... .unset_path() | main.rs:162:13:162:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:162:20:162:41 | ... .unset_path() | main.rs:162:20:162:41 | ... .unset_path() | provenance | Sink:MaD:1 | | main.rs:163:20:163:20 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:18 | | main.rs:163:20:163:28 | i.clone() | main.rs:163:20:163:54 | ... .set_domain(...) | provenance | MaD:20 | -| main.rs:163:20:163:54 | ... .set_domain(...) | main.rs:163:13:163:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:163:20:163:54 | ... .set_domain(...) | main.rs:163:20:163:54 | ... .set_domain(...) | provenance | Sink:MaD:1 | | main.rs:164:20:164:20 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:18 | | main.rs:164:20:164:28 | i.clone() | main.rs:164:20:164:43 | ... .unset_domain() | provenance | MaD:30 | -| main.rs:164:20:164:43 | ... .unset_domain() | main.rs:164:13:164:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:164:20:164:43 | ... .unset_domain() | main.rs:164:20:164:43 | ... .unset_domain() | provenance | Sink:MaD:1 | | main.rs:165:20:165:20 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:18 | | main.rs:165:20:165:28 | i.clone() | main.rs:165:20:165:46 | ... .set_expires(...) | provenance | MaD:21 | -| main.rs:165:20:165:46 | ... .set_expires(...) | main.rs:165:13:165:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:165:20:165:46 | ... .set_expires(...) | main.rs:165:20:165:46 | ... .set_expires(...) | provenance | Sink:MaD:1 | | main.rs:166:20:166:20 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:18 | | main.rs:166:20:166:28 | i.clone() | main.rs:166:20:166:44 | ... .unset_expires() | provenance | MaD:31 | -| main.rs:166:20:166:44 | ... .unset_expires() | main.rs:166:13:166:18 | insert | provenance | MaD:1 Sink:MaD:1 | +| main.rs:166:20:166:44 | ... .unset_expires() | main.rs:166:20:166:44 | ... .unset_expires() | provenance | Sink:MaD:1 | | main.rs:167:20:167:20 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:18 | | main.rs:167:20:167:28 | i.clone() | main.rs:167:20:167:45 | ... .make_permanent() | provenance | MaD:19 | -| main.rs:167:20:167:45 | ... .make_permanent() | main.rs:167:13:167:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:173:22:173:34 | ...::build | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:173:22:173:59 | ...::build(...) | main.rs:173:61:173:65 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:167:20:167:45 | ... .make_permanent() | main.rs:167:20:167:45 | ... .make_permanent() | provenance | Sink:MaD:1 | +| main.rs:173:22:173:59 | ...::build(...) | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:15 Sink:MaD:2 | | main.rs:197:5:197:39 | ...::build(...) | main.rs:197:5:197:53 | ... .secure(...) | provenance | MaD:35 | -| main.rs:197:5:197:53 | ... .secure(...) | main.rs:197:55:197:60 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:197:5:197:53 | ... .secure(...) | main.rs:197:5:197:53 | ... .secure(...) | provenance | Sink:MaD:3 | | main.rs:198:5:198:39 | ...::build(...) | main.rs:198:5:198:53 | ... .secure(...) | provenance | MaD:35 | | main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:34 | -| main.rs:198:5:198:63 | ... .path(...) | main.rs:198:65:198:70 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:198:5:198:63 | ... .path(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | Sink:MaD:3 | | main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | | main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | | main.rs:202:13:202:19 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:18 | -| main.rs:202:13:202:27 | cookie1.clone() | main.rs:202:9:202:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:212:5:212:22 | ...::build | main.rs:212:5:212:39 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:212:5:212:39 | ...::build(...) | main.rs:212:41:212:46 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:202:13:202:27 | cookie1.clone() | main.rs:202:13:202:27 | cookie1.clone() | provenance | Sink:MaD:4 | +| main.rs:212:5:212:39 | ...::build(...) | main.rs:212:5:212:39 | ...::build(...) | provenance | Src:MaD:15 Sink:MaD:3 | | main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:19 | cookie3 | provenance | | -| main.rs:214:19:214:34 | ...::new | main.rs:214:19:214:51 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | -| main.rs:214:19:214:51 | ...::new(...) | main.rs:214:9:214:15 | cookie3 | provenance | | +| main.rs:214:19:214:51 | ...::new(...) | main.rs:214:9:214:15 | cookie3 | provenance | Src:MaD:17 | | main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:18 | -| main.rs:215:13:215:27 | cookie3.clone() | main.rs:215:9:215:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:215:13:215:27 | cookie3.clone() | main.rs:215:13:215:27 | cookie3.clone() | provenance | Sink:MaD:4 | | main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | | main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | | main.rs:219:13:219:19 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:18 | -| main.rs:219:13:219:27 | cookie2.clone() | main.rs:219:9:219:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:219:13:219:27 | cookie2.clone() | main.rs:219:13:219:27 | cookie2.clone() | provenance | Sink:MaD:4 | | main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | | | main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | | | main.rs:229:13:229:19 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:18 | -| main.rs:229:13:229:27 | cookie1.clone() | main.rs:229:9:229:11 | add | provenance | MaD:11 Sink:MaD:11 | -| main.rs:241:9:241:25 | cookie_config_bad | main.rs:242:43:242:59 | cookie_config_bad | provenance | | +| main.rs:229:13:229:27 | cookie1.clone() | main.rs:229:13:229:27 | cookie1.clone() | provenance | Sink:MaD:11 | +| main.rs:241:9:241:25 | cookie_config_bad | main.rs:242:43:242:59 | cookie_config_bad | provenance | Sink:MaD:10 | | main.rs:241:29:241:62 | ...::new(...) | main.rs:241:29:241:76 | ... .secure(...) | provenance | MaD:38 | | main.rs:241:29:241:76 | ... .secure(...) | main.rs:241:9:241:25 | cookie_config_bad | provenance | | -| main.rs:242:43:242:59 | cookie_config_bad | main.rs:242:9:242:41 | ...::new | provenance | MaD:10 Sink:MaD:10 | -| main.rs:244:9:244:26 | cookie_config_bad2 | main.rs:245:43:245:60 | cookie_config_bad2 | provenance | | +| main.rs:244:9:244:26 | cookie_config_bad2 | main.rs:245:43:245:60 | cookie_config_bad2 | provenance | Sink:MaD:10 | | main.rs:244:30:244:63 | ...::new(...) | main.rs:244:30:244:77 | ... .secure(...) | provenance | MaD:38 | | main.rs:244:30:244:77 | ... .secure(...) | main.rs:244:30:244:90 | ... .name(...) | provenance | MaD:36 | | main.rs:244:30:244:90 | ... .name(...) | main.rs:244:30:244:100 | ... .path(...) | provenance | MaD:37 | | main.rs:244:30:244:100 | ... .path(...) | main.rs:244:9:244:26 | cookie_config_bad2 | provenance | | -| main.rs:245:43:245:60 | cookie_config_bad2 | main.rs:245:9:245:41 | ...::new | provenance | MaD:10 Sink:MaD:10 | | main.rs:259:5:259:43 | ...::build(...) | main.rs:259:5:259:57 | ... .secure(...) | provenance | MaD:35 | -| main.rs:259:5:259:57 | ... .secure(...) | main.rs:259:59:259:64 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:259:5:259:57 | ... .secure(...) | main.rs:259:5:259:57 | ... .secure(...) | provenance | Sink:MaD:3 | | main.rs:260:5:260:43 | ...::build(...) | main.rs:260:5:260:57 | ... .secure(...) | provenance | MaD:35 | | main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:34 | -| main.rs:260:5:260:67 | ... .path(...) | main.rs:260:69:260:74 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:260:5:260:67 | ... .path(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | Sink:MaD:3 | | main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | | main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | | main.rs:264:13:264:19 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:18 | -| main.rs:264:13:264:27 | cookie1.clone() | main.rs:264:9:264:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:274:5:274:26 | ...::build | main.rs:274:5:274:43 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:274:5:274:43 | ...::build(...) | main.rs:274:45:274:50 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:264:13:264:27 | cookie1.clone() | main.rs:264:13:264:27 | cookie1.clone() | provenance | Sink:MaD:4 | +| main.rs:274:5:274:43 | ...::build(...) | main.rs:274:5:274:43 | ...::build(...) | provenance | Src:MaD:15 Sink:MaD:3 | | main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:19 | cookie3 | provenance | | -| main.rs:276:19:276:38 | ...::new | main.rs:276:19:276:55 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | -| main.rs:276:19:276:55 | ...::new(...) | main.rs:276:9:276:15 | cookie3 | provenance | | +| main.rs:276:19:276:55 | ...::new(...) | main.rs:276:9:276:15 | cookie3 | provenance | Src:MaD:17 | | main.rs:277:13:277:19 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:18 | -| main.rs:277:13:277:27 | cookie3.clone() | main.rs:277:9:277:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:277:13:277:27 | cookie3.clone() | main.rs:277:13:277:27 | cookie3.clone() | provenance | Sink:MaD:4 | | main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | | main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | | main.rs:281:13:281:19 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:18 | -| main.rs:281:13:281:27 | cookie2.clone() | main.rs:281:9:281:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:281:13:281:27 | cookie2.clone() | main.rs:281:13:281:27 | cookie2.clone() | provenance | Sink:MaD:4 | models | 1 | Sink: ::insert; Argument[0]; cookie-use | | 2 | Sink: ::build; Argument[self]; cookie-use | @@ -345,279 +329,263 @@ models nodes | main.rs:8:19:8:50 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:8:19:8:64 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:8:66:8:70 | build | semmle.label | build | -| main.rs:16:19:16:31 | ...::build | semmle.label | ...::build | +| main.rs:8:19:8:64 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:16:19:16:50 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:16:19:16:50 | ...::build(...) | semmle.label | ...::build(...) | -| main.rs:16:52:16:56 | build | semmle.label | build | | main.rs:20:5:20:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:20:5:20:54 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:20:56:20:60 | build | semmle.label | build | +| main.rs:20:5:20:54 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:21:5:21:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:21:5:21:55 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:21:57:21:61 | build | semmle.label | build | +| main.rs:21:5:21:55 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:25:5:25:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:25:5:25:52 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:25:54:25:58 | build | semmle.label | build | +| main.rs:25:5:25:52 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:26:5:26:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:26:5:26:50 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:26:52:26:56 | build | semmle.label | build | +| main.rs:26:5:26:50 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:27:5:27:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:27:5:27:51 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:27:53:27:57 | build | semmle.label | build | +| main.rs:27:5:27:51 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:28:5:28:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:28:5:28:60 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:28:62:28:66 | build | semmle.label | build | +| main.rs:28:5:28:60 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:29:5:29:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:29:5:29:60 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:29:62:29:66 | build | semmle.label | build | +| main.rs:29:5:29:60 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:33:9:33:40 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:33:9:33:58 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:33:60:33:64 | build | semmle.label | build | +| main.rs:33:9:33:58 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:35:9:35:40 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:35:9:35:58 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:35:60:35:64 | build | semmle.label | build | +| main.rs:35:9:35:58 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:39:5:39:39 | ...::new(...) | semmle.label | ...::new(...) | | main.rs:39:5:39:53 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:39:55:39:59 | build | semmle.label | build | +| main.rs:39:5:39:53 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:40:5:40:50 | ... .expires(...) | semmle.label | ... .expires(...) | | main.rs:40:5:40:64 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:40:66:40:70 | build | semmle.label | build | +| main.rs:40:5:40:64 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:41:5:41:79 | ... .max_age(...) | semmle.label | ... .max_age(...) | | main.rs:41:5:41:93 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:41:95:41:99 | build | semmle.label | build | +| main.rs:41:5:41:93 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:42:5:42:58 | ... .domain(...) | semmle.label | ... .domain(...) | | main.rs:42:5:42:72 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:42:74:42:78 | build | semmle.label | build | +| main.rs:42:5:42:72 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:43:5:43:46 | ... .path(...) | semmle.label | ... .path(...) | | main.rs:43:5:43:60 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:43:62:43:66 | build | semmle.label | build | +| main.rs:43:5:43:60 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:44:5:44:52 | ... .http_only(...) | semmle.label | ... .http_only(...) | | main.rs:44:5:44:66 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:44:68:44:72 | build | semmle.label | build | +| main.rs:44:5:44:66 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:45:5:45:72 | ... .same_site(...) | semmle.label | ... .same_site(...) | | main.rs:45:5:45:86 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:45:88:45:92 | build | semmle.label | build | +| main.rs:45:5:45:86 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:46:5:46:48 | ... .permanent() | semmle.label | ... .permanent() | | main.rs:46:5:46:62 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:46:64:46:68 | build | semmle.label | build | +| main.rs:46:5:46:62 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:47:5:47:46 | ... .removal() | semmle.label | ... .removal() | | main.rs:47:5:47:60 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:47:62:47:66 | build | semmle.label | build | +| main.rs:47:5:47:60 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:48:5:48:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:48:5:48:50 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:48:52:48:57 | finish | semmle.label | finish | +| main.rs:48:5:48:50 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:49:5:49:25 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:49:5:49:39 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:49:41:49:45 | build | semmle.label | build | +| main.rs:49:5:49:39 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:50:5:50:40 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:50:5:50:54 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:50:56:50:60 | build | semmle.label | build | +| main.rs:50:5:50:54 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:53:5:53:49 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:53:5:53:63 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:53:65:53:69 | build | semmle.label | build | +| main.rs:53:5:53:63 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:58:9:58:13 | mut a | semmle.label | mut a | -| main.rs:58:17:58:27 | ...::new | semmle.label | ...::new | | main.rs:58:17:58:44 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:59:9:59:11 | add | semmle.label | add | | main.rs:59:13:59:13 | a | semmle.label | a | | main.rs:59:13:59:21 | a.clone() | semmle.label | a.clone() | -| main.rs:60:9:60:20 | add_original | semmle.label | add_original | +| main.rs:59:13:59:21 | a.clone() | semmle.label | a.clone() | | main.rs:60:22:60:22 | a | semmle.label | a | | main.rs:60:22:60:30 | a.clone() | semmle.label | a.clone() | +| main.rs:60:22:60:30 | a.clone() | semmle.label | a.clone() | | main.rs:63:5:63:5 | [SSA] a | semmle.label | [SSA] a | | main.rs:63:5:63:5 | a | semmle.label | a | -| main.rs:64:9:64:11 | add | semmle.label | add | | main.rs:64:13:64:13 | a | semmle.label | a | | main.rs:64:13:64:21 | a.clone() | semmle.label | a.clone() | +| main.rs:64:13:64:21 | a.clone() | semmle.label | a.clone() | | main.rs:68:9:68:13 | mut b | semmle.label | mut b | -| main.rs:68:17:68:29 | ...::named | semmle.label | ...::named | | main.rs:68:17:68:37 | ...::named(...) | semmle.label | ...::named(...) | -| main.rs:69:16:69:18 | add | semmle.label | add | | main.rs:69:20:69:20 | b | semmle.label | b | | main.rs:69:20:69:28 | b.clone() | semmle.label | b.clone() | -| main.rs:70:16:70:27 | add_original | semmle.label | add_original | +| main.rs:69:20:69:28 | b.clone() | semmle.label | b.clone() | | main.rs:70:29:70:29 | a | semmle.label | a | | main.rs:70:29:70:37 | a.clone() | semmle.label | a.clone() | +| main.rs:70:29:70:37 | a.clone() | semmle.label | a.clone() | | main.rs:71:5:71:5 | [SSA] b | semmle.label | [SSA] b | | main.rs:71:5:71:5 | b | semmle.label | b | -| main.rs:72:16:72:18 | add | semmle.label | add | | main.rs:72:20:72:20 | b | semmle.label | b | | main.rs:72:20:72:28 | b.clone() | semmle.label | b.clone() | +| main.rs:72:20:72:28 | b.clone() | semmle.label | b.clone() | | main.rs:77:9:77:13 | mut c | semmle.label | mut c | -| main.rs:77:17:77:28 | ...::from | semmle.label | ...::from | | main.rs:77:17:77:36 | ...::from(...) | semmle.label | ...::from(...) | -| main.rs:78:17:78:19 | add | semmle.label | add | | main.rs:78:21:78:21 | c | semmle.label | c | | main.rs:78:21:78:29 | c.clone() | semmle.label | c.clone() | -| main.rs:79:17:79:28 | add_original | semmle.label | add_original | +| main.rs:78:21:78:29 | c.clone() | semmle.label | c.clone() | | main.rs:79:30:79:30 | a | semmle.label | a | | main.rs:79:30:79:38 | a.clone() | semmle.label | a.clone() | -| main.rs:83:17:83:19 | add | semmle.label | add | +| main.rs:79:30:79:38 | a.clone() | semmle.label | a.clone() | | main.rs:83:21:83:21 | c | semmle.label | c | | main.rs:83:21:83:29 | c.clone() | semmle.label | c.clone() | +| main.rs:83:21:83:29 | c.clone() | semmle.label | c.clone() | | main.rs:87:9:87:13 | mut d | semmle.label | mut d | -| main.rs:87:17:87:28 | ...::from | semmle.label | ...::from | | main.rs:87:17:87:36 | ...::from(...) | semmle.label | ...::from(...) | -| main.rs:88:9:88:11 | add | semmle.label | add | | main.rs:88:13:88:13 | d | semmle.label | d | | main.rs:88:13:88:21 | d.clone() | semmle.label | d.clone() | -| main.rs:94:9:94:11 | add | semmle.label | add | +| main.rs:88:13:88:21 | d.clone() | semmle.label | d.clone() | | main.rs:94:13:94:13 | d | semmle.label | d | | main.rs:94:13:94:21 | d.clone() | semmle.label | d.clone() | -| main.rs:114:5:114:17 | ...::build | semmle.label | ...::build | +| main.rs:94:13:94:21 | d.clone() | semmle.label | d.clone() | +| main.rs:114:5:114:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:114:5:114:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:114:5:114:54 | ... .partitioned(...) | semmle.label | ... .partitioned(...) | -| main.rs:114:56:114:60 | build | semmle.label | build | +| main.rs:114:5:114:54 | ... .partitioned(...) | semmle.label | ... .partitioned(...) | | main.rs:122:9:122:9 | a | semmle.label | a | -| main.rs:122:13:122:41 | ...::new | semmle.label | ...::new | | main.rs:122:13:122:58 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:123:13:123:18 | insert | semmle.label | insert | | main.rs:123:20:123:20 | a | semmle.label | a | | main.rs:123:20:123:28 | a.clone() | semmle.label | a.clone() | +| main.rs:123:20:123:28 | a.clone() | semmle.label | a.clone() | | main.rs:130:9:130:9 | c | semmle.label | c | | main.rs:130:13:130:13 | b | semmle.label | b | | main.rs:130:13:130:31 | b.set_secure(...) | semmle.label | b.set_secure(...) | -| main.rs:131:13:131:18 | insert | semmle.label | insert | | main.rs:131:20:131:20 | c | semmle.label | c | | main.rs:131:20:131:28 | c.clone() | semmle.label | c.clone() | +| main.rs:131:20:131:28 | c.clone() | semmle.label | c.clone() | | main.rs:134:9:134:9 | d | semmle.label | d | | main.rs:134:13:134:13 | c | semmle.label | c | | main.rs:134:13:134:35 | c.set_partitioned(...) | semmle.label | c.set_partitioned(...) | -| main.rs:135:13:135:18 | insert | semmle.label | insert | | main.rs:135:20:135:20 | d | semmle.label | d | | main.rs:135:20:135:28 | d.clone() | semmle.label | d.clone() | +| main.rs:135:20:135:28 | d.clone() | semmle.label | d.clone() | | main.rs:146:9:146:9 | g | semmle.label | g | | main.rs:146:13:146:13 | f | semmle.label | f | | main.rs:146:13:146:31 | f.set_secure(...) | semmle.label | f.set_secure(...) | -| main.rs:147:13:147:18 | insert | semmle.label | insert | | main.rs:147:20:147:20 | g | semmle.label | g | | main.rs:147:20:147:28 | g.clone() | semmle.label | g.clone() | +| main.rs:147:20:147:28 | g.clone() | semmle.label | g.clone() | | main.rs:151:9:151:9 | h | semmle.label | h | -| main.rs:151:13:151:42 | ...::from | semmle.label | ...::from | | main.rs:151:13:151:61 | ...::from(...) | semmle.label | ...::from(...) | -| main.rs:152:13:152:18 | insert | semmle.label | insert | | main.rs:152:20:152:20 | h | semmle.label | h | | main.rs:155:9:155:9 | i | semmle.label | i | -| main.rs:155:13:155:41 | ...::new | semmle.label | ...::new | | main.rs:155:13:155:58 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:156:13:156:18 | insert | semmle.label | insert | | main.rs:156:20:156:20 | i | semmle.label | i | | main.rs:156:20:156:28 | i.clone() | semmle.label | i.clone() | | main.rs:156:20:156:46 | ... .set_name(...) | semmle.label | ... .set_name(...) | -| main.rs:157:13:157:18 | insert | semmle.label | insert | +| main.rs:156:20:156:46 | ... .set_name(...) | semmle.label | ... .set_name(...) | | main.rs:157:20:157:20 | i | semmle.label | i | | main.rs:157:20:157:28 | i.clone() | semmle.label | i.clone() | | main.rs:157:20:157:48 | ... .set_value(...) | semmle.label | ... .set_value(...) | -| main.rs:158:13:158:18 | insert | semmle.label | insert | +| main.rs:157:20:157:48 | ... .set_value(...) | semmle.label | ... .set_value(...) | | main.rs:158:20:158:20 | i | semmle.label | i | | main.rs:158:20:158:28 | i.clone() | semmle.label | i.clone() | | main.rs:158:20:158:48 | ... .set_http_only(...) | semmle.label | ... .set_http_only(...) | -| main.rs:159:13:159:18 | insert | semmle.label | insert | +| main.rs:158:20:158:48 | ... .set_http_only(...) | semmle.label | ... .set_http_only(...) | | main.rs:159:20:159:20 | i | semmle.label | i | | main.rs:159:20:159:28 | i.clone() | semmle.label | i.clone() | | main.rs:159:20:159:70 | ... .set_same_site(...) | semmle.label | ... .set_same_site(...) | -| main.rs:160:13:160:18 | insert | semmle.label | insert | +| main.rs:159:20:159:70 | ... .set_same_site(...) | semmle.label | ... .set_same_site(...) | | main.rs:160:20:160:20 | i | semmle.label | i | | main.rs:160:20:160:28 | i.clone() | semmle.label | i.clone() | | main.rs:160:20:160:46 | ... .set_max_age(...) | semmle.label | ... .set_max_age(...) | -| main.rs:161:13:161:18 | insert | semmle.label | insert | +| main.rs:160:20:160:46 | ... .set_max_age(...) | semmle.label | ... .set_max_age(...) | | main.rs:161:20:161:20 | i | semmle.label | i | | main.rs:161:20:161:28 | i.clone() | semmle.label | i.clone() | | main.rs:161:20:161:42 | ... .set_path(...) | semmle.label | ... .set_path(...) | -| main.rs:162:13:162:18 | insert | semmle.label | insert | +| main.rs:161:20:161:42 | ... .set_path(...) | semmle.label | ... .set_path(...) | | main.rs:162:20:162:20 | i | semmle.label | i | | main.rs:162:20:162:28 | i.clone() | semmle.label | i.clone() | | main.rs:162:20:162:41 | ... .unset_path() | semmle.label | ... .unset_path() | -| main.rs:163:13:163:18 | insert | semmle.label | insert | +| main.rs:162:20:162:41 | ... .unset_path() | semmle.label | ... .unset_path() | | main.rs:163:20:163:20 | i | semmle.label | i | | main.rs:163:20:163:28 | i.clone() | semmle.label | i.clone() | | main.rs:163:20:163:54 | ... .set_domain(...) | semmle.label | ... .set_domain(...) | -| main.rs:164:13:164:18 | insert | semmle.label | insert | +| main.rs:163:20:163:54 | ... .set_domain(...) | semmle.label | ... .set_domain(...) | | main.rs:164:20:164:20 | i | semmle.label | i | | main.rs:164:20:164:28 | i.clone() | semmle.label | i.clone() | | main.rs:164:20:164:43 | ... .unset_domain() | semmle.label | ... .unset_domain() | -| main.rs:165:13:165:18 | insert | semmle.label | insert | +| main.rs:164:20:164:43 | ... .unset_domain() | semmle.label | ... .unset_domain() | | main.rs:165:20:165:20 | i | semmle.label | i | | main.rs:165:20:165:28 | i.clone() | semmle.label | i.clone() | | main.rs:165:20:165:46 | ... .set_expires(...) | semmle.label | ... .set_expires(...) | -| main.rs:166:13:166:18 | insert | semmle.label | insert | +| main.rs:165:20:165:46 | ... .set_expires(...) | semmle.label | ... .set_expires(...) | | main.rs:166:20:166:20 | i | semmle.label | i | | main.rs:166:20:166:28 | i.clone() | semmle.label | i.clone() | | main.rs:166:20:166:44 | ... .unset_expires() | semmle.label | ... .unset_expires() | -| main.rs:167:13:167:18 | insert | semmle.label | insert | +| main.rs:166:20:166:44 | ... .unset_expires() | semmle.label | ... .unset_expires() | | main.rs:167:20:167:20 | i | semmle.label | i | | main.rs:167:20:167:28 | i.clone() | semmle.label | i.clone() | | main.rs:167:20:167:45 | ... .make_permanent() | semmle.label | ... .make_permanent() | -| main.rs:173:22:173:34 | ...::build | semmle.label | ...::build | +| main.rs:167:20:167:45 | ... .make_permanent() | semmle.label | ... .make_permanent() | +| main.rs:173:22:173:59 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:173:22:173:59 | ...::build(...) | semmle.label | ...::build(...) | -| main.rs:173:61:173:65 | build | semmle.label | build | | main.rs:197:5:197:39 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:197:5:197:53 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:197:55:197:60 | finish | semmle.label | finish | +| main.rs:197:5:197:53 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:198:5:198:39 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:198:5:198:53 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:198:5:198:63 | ... .path(...) | semmle.label | ... .path(...) | -| main.rs:198:65:198:70 | finish | semmle.label | finish | +| main.rs:198:5:198:63 | ... .path(...) | semmle.label | ... .path(...) | | main.rs:201:5:201:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | | main.rs:201:5:201:11 | cookie1 | semmle.label | cookie1 | -| main.rs:202:9:202:11 | add | semmle.label | add | | main.rs:202:13:202:19 | cookie1 | semmle.label | cookie1 | | main.rs:202:13:202:27 | cookie1.clone() | semmle.label | cookie1.clone() | -| main.rs:212:5:212:22 | ...::build | semmle.label | ...::build | +| main.rs:202:13:202:27 | cookie1.clone() | semmle.label | cookie1.clone() | +| main.rs:212:5:212:39 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:212:5:212:39 | ...::build(...) | semmle.label | ...::build(...) | -| main.rs:212:41:212:46 | finish | semmle.label | finish | | main.rs:214:9:214:15 | cookie3 | semmle.label | cookie3 | -| main.rs:214:19:214:34 | ...::new | semmle.label | ...::new | | main.rs:214:19:214:51 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:215:9:215:11 | add | semmle.label | add | | main.rs:215:13:215:19 | cookie3 | semmle.label | cookie3 | | main.rs:215:13:215:27 | cookie3.clone() | semmle.label | cookie3.clone() | +| main.rs:215:13:215:27 | cookie3.clone() | semmle.label | cookie3.clone() | | main.rs:218:5:218:11 | [SSA] cookie2 | semmle.label | [SSA] cookie2 | | main.rs:218:5:218:11 | cookie2 | semmle.label | cookie2 | -| main.rs:219:9:219:11 | add | semmle.label | add | | main.rs:219:13:219:19 | cookie2 | semmle.label | cookie2 | | main.rs:219:13:219:27 | cookie2.clone() | semmle.label | cookie2.clone() | +| main.rs:219:13:219:27 | cookie2.clone() | semmle.label | cookie2.clone() | | main.rs:228:5:228:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | | main.rs:228:5:228:11 | cookie1 | semmle.label | cookie1 | -| main.rs:229:9:229:11 | add | semmle.label | add | | main.rs:229:13:229:19 | cookie1 | semmle.label | cookie1 | | main.rs:229:13:229:27 | cookie1.clone() | semmle.label | cookie1.clone() | +| main.rs:229:13:229:27 | cookie1.clone() | semmle.label | cookie1.clone() | | main.rs:241:9:241:25 | cookie_config_bad | semmle.label | cookie_config_bad | | main.rs:241:29:241:62 | ...::new(...) | semmle.label | ...::new(...) | | main.rs:241:29:241:76 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:242:9:242:41 | ...::new | semmle.label | ...::new | | main.rs:242:43:242:59 | cookie_config_bad | semmle.label | cookie_config_bad | | main.rs:244:9:244:26 | cookie_config_bad2 | semmle.label | cookie_config_bad2 | | main.rs:244:30:244:63 | ...::new(...) | semmle.label | ...::new(...) | | main.rs:244:30:244:77 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:244:30:244:90 | ... .name(...) | semmle.label | ... .name(...) | | main.rs:244:30:244:100 | ... .path(...) | semmle.label | ... .path(...) | -| main.rs:245:9:245:41 | ...::new | semmle.label | ...::new | | main.rs:245:43:245:60 | cookie_config_bad2 | semmle.label | cookie_config_bad2 | | main.rs:259:5:259:43 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:259:5:259:57 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:259:59:259:64 | finish | semmle.label | finish | +| main.rs:259:5:259:57 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:260:5:260:43 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:260:5:260:57 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:260:5:260:67 | ... .path(...) | semmle.label | ... .path(...) | -| main.rs:260:69:260:74 | finish | semmle.label | finish | +| main.rs:260:5:260:67 | ... .path(...) | semmle.label | ... .path(...) | | main.rs:263:5:263:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | | main.rs:263:5:263:11 | cookie1 | semmle.label | cookie1 | -| main.rs:264:9:264:11 | add | semmle.label | add | | main.rs:264:13:264:19 | cookie1 | semmle.label | cookie1 | | main.rs:264:13:264:27 | cookie1.clone() | semmle.label | cookie1.clone() | -| main.rs:274:5:274:26 | ...::build | semmle.label | ...::build | +| main.rs:264:13:264:27 | cookie1.clone() | semmle.label | cookie1.clone() | +| main.rs:274:5:274:43 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:274:5:274:43 | ...::build(...) | semmle.label | ...::build(...) | -| main.rs:274:45:274:50 | finish | semmle.label | finish | | main.rs:276:9:276:15 | cookie3 | semmle.label | cookie3 | -| main.rs:276:19:276:38 | ...::new | semmle.label | ...::new | | main.rs:276:19:276:55 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:277:9:277:11 | add | semmle.label | add | | main.rs:277:13:277:19 | cookie3 | semmle.label | cookie3 | | main.rs:277:13:277:27 | cookie3.clone() | semmle.label | cookie3.clone() | +| main.rs:277:13:277:27 | cookie3.clone() | semmle.label | cookie3.clone() | | main.rs:280:5:280:11 | [SSA] cookie2 | semmle.label | [SSA] cookie2 | | main.rs:280:5:280:11 | cookie2 | semmle.label | cookie2 | -| main.rs:281:9:281:11 | add | semmle.label | add | | main.rs:281:13:281:19 | cookie2 | semmle.label | cookie2 | | main.rs:281:13:281:27 | cookie2.clone() | semmle.label | cookie2.clone() | +| main.rs:281:13:281:27 | cookie2.clone() | semmle.label | cookie2.clone() | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected index 477dbee0e0f4..2924834e71c5 100644 --- a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected +++ b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected @@ -1,103 +1,96 @@ #select -| main.rs:18:13:18:31 | ...::realloc | main.rs:339:13:339:26 | ...::args | main.rs:18:13:18:31 | ...::realloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:21:13:21:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:21:13:21:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:22:13:22:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:22:13:22:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:23:13:23:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:23:13:23:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:24:13:24:36 | ...::alloc_zeroed | main.rs:339:13:339:26 | ...::args | main.rs:24:13:24:36 | ...::alloc_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:30:13:30:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:30:13:30:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:33:13:33:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:33:13:33:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:37:13:37:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:37:13:37:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:40:13:40:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:40:13:40:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:50:13:50:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:50:13:50:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:51:13:51:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:51:13:51:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:53:13:53:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:53:13:53:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:54:13:54:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:54:13:54:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:59:13:59:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:59:13:59:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:61:13:61:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:61:13:61:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:63:13:63:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:63:13:63:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:64:13:64:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:64:13:64:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:65:13:65:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:65:13:65:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:68:13:68:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:68:13:68:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:88:13:88:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:88:13:88:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:96:17:96:33 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:96:17:96:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:102:17:102:33 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:102:17:102:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:103:17:103:33 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:103:17:103:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:109:17:109:33 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:109:17:109:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:111:17:111:33 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:111:17:111:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:146:17:146:33 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:146:17:146:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:148:17:148:33 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:148:17:148:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:152:13:152:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:152:13:152:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:155:13:155:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:155:13:155:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:162:17:162:33 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:162:17:162:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:169:17:169:33 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:169:17:169:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:177:13:177:29 | ...::alloc | main.rs:339:13:339:26 | ...::args | main.rs:177:13:177:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:193:32:193:36 | alloc | main.rs:339:13:339:26 | ...::args | main.rs:193:32:193:36 | alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:194:32:194:43 | alloc_zeroed | main.rs:339:13:339:26 | ...::args | main.rs:194:32:194:43 | alloc_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:195:32:195:39 | allocate | main.rs:339:13:339:26 | ...::args | main.rs:195:32:195:39 | allocate | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:196:32:196:46 | allocate_zeroed | main.rs:339:13:339:26 | ...::args | main.rs:196:32:196:46 | allocate_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:197:32:197:39 | allocate | main.rs:339:13:339:26 | ...::args | main.rs:197:32:197:39 | allocate | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:198:32:198:46 | allocate_zeroed | main.rs:339:13:339:26 | ...::args | main.rs:198:32:198:46 | allocate_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:202:32:202:38 | realloc | main.rs:339:13:339:26 | ...::args | main.rs:202:32:202:38 | realloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:208:40:208:43 | grow | main.rs:339:13:339:26 | ...::args | main.rs:208:40:208:43 | grow | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:210:40:210:50 | grow_zeroed | main.rs:339:13:339:26 | ...::args | main.rs:210:40:210:50 | grow_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:213:36:213:41 | shrink | main.rs:339:13:339:26 | ...::args | main.rs:213:36:213:41 | shrink | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:219:13:219:24 | ...::malloc | main.rs:339:13:339:26 | ...::args | main.rs:219:13:219:24 | ...::malloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:220:13:220:31 | ...::aligned_alloc | main.rs:339:13:339:26 | ...::args | main.rs:220:13:220:31 | ...::aligned_alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:222:13:222:24 | ...::calloc | main.rs:339:13:339:26 | ...::args | main.rs:222:13:222:24 | ...::calloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:223:13:223:24 | ...::calloc | main.rs:339:13:339:26 | ...::args | main.rs:223:13:223:24 | ...::calloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:224:13:224:25 | ...::realloc | main.rs:339:13:339:26 | ...::args | main.rs:224:13:224:25 | ...::realloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:228:13:228:41 | ...::try_with_capacity | main.rs:339:13:339:26 | ...::args | main.rs:228:13:228:41 | ...::try_with_capacity | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:229:13:229:37 | ...::with_capacity | main.rs:339:13:339:26 | ...::args | main.rs:229:13:229:37 | ...::with_capacity | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:230:13:230:44 | ...::try_with_capacity_in | main.rs:339:13:339:26 | ...::args | main.rs:230:13:230:44 | ...::try_with_capacity_in | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:231:13:231:40 | ...::with_capacity_in | main.rs:339:13:339:26 | ...::args | main.rs:231:13:231:40 | ...::with_capacity_in | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | -| main.rs:287:22:287:38 | ...::alloc | main.rs:311:25:311:38 | ...::args | main.rs:287:22:287:38 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:311:25:311:38 | ...::args | user-provided value | -| main.rs:331:13:331:24 | ...::malloc | main.rs:339:13:339:26 | ...::args | main.rs:331:13:331:24 | ...::malloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:26 | ...::args | user-provided value | +| main.rs:18:41:18:41 | v | main.rs:339:13:339:28 | ...::args(...) | main.rs:18:41:18:41 | v | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:21:31:21:32 | l2 | main.rs:339:13:339:28 | ...::args(...) | main.rs:21:31:21:32 | l2 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:22:31:22:53 | ... .unwrap() | main.rs:339:13:339:28 | ...::args(...) | main.rs:22:31:22:53 | ... .unwrap() | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:23:31:23:68 | ... .pad_to_align() | main.rs:339:13:339:28 | ...::args(...) | main.rs:23:31:23:68 | ... .pad_to_align() | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:24:38:24:39 | l2 | main.rs:339:13:339:28 | ...::args(...) | main.rs:24:38:24:39 | l2 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:30:31:30:32 | l4 | main.rs:339:13:339:28 | ...::args(...) | main.rs:30:31:30:32 | l4 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:33:31:33:32 | l5 | main.rs:339:13:339:28 | ...::args(...) | main.rs:33:31:33:32 | l5 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:37:31:37:32 | l6 | main.rs:339:13:339:28 | ...::args(...) | main.rs:37:31:37:32 | l6 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:40:31:40:32 | l7 | main.rs:339:13:339:28 | ...::args(...) | main.rs:40:31:40:32 | l7 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:50:31:50:53 | ... .0 | main.rs:339:13:339:28 | ...::args(...) | main.rs:50:31:50:53 | ... .0 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:51:31:51:57 | ... .0 | main.rs:339:13:339:28 | ...::args(...) | main.rs:51:31:51:57 | ... .0 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:53:31:53:58 | ... .unwrap() | main.rs:339:13:339:28 | ...::args(...) | main.rs:53:31:53:58 | ... .unwrap() | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:54:31:54:63 | ... .unwrap() | main.rs:339:13:339:28 | ...::args(...) | main.rs:54:31:54:63 | ... .unwrap() | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:59:31:59:32 | k1 | main.rs:339:13:339:28 | ...::args(...) | main.rs:59:31:59:32 | k1 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:61:31:61:32 | k2 | main.rs:339:13:339:28 | ...::args(...) | main.rs:61:31:61:32 | k2 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:63:31:63:32 | k3 | main.rs:339:13:339:28 | ...::args(...) | main.rs:63:31:63:32 | k3 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:64:31:64:59 | ... .unwrap() | main.rs:339:13:339:28 | ...::args(...) | main.rs:64:31:64:59 | ... .unwrap() | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:65:31:65:59 | ... .unwrap() | main.rs:339:13:339:28 | ...::args(...) | main.rs:65:31:65:59 | ... .unwrap() | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:68:31:68:32 | l4 | main.rs:339:13:339:28 | ...::args(...) | main.rs:68:31:68:32 | l4 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:88:31:88:36 | layout | main.rs:339:13:339:28 | ...::args(...) | main.rs:88:31:88:36 | layout | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:96:35:96:36 | l1 | main.rs:339:13:339:28 | ...::args(...) | main.rs:96:35:96:36 | l1 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:102:35:102:36 | l1 | main.rs:339:13:339:28 | ...::args(...) | main.rs:102:35:102:36 | l1 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:103:35:103:36 | l3 | main.rs:339:13:339:28 | ...::args(...) | main.rs:103:35:103:36 | l3 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:109:35:109:36 | l1 | main.rs:339:13:339:28 | ...::args(...) | main.rs:109:35:109:36 | l1 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:111:35:111:36 | l1 | main.rs:339:13:339:28 | ...::args(...) | main.rs:111:35:111:36 | l1 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:146:35:146:36 | l1 | main.rs:339:13:339:28 | ...::args(...) | main.rs:146:35:146:36 | l1 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:148:35:148:36 | l9 | main.rs:339:13:339:28 | ...::args(...) | main.rs:148:35:148:36 | l9 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:152:31:152:33 | l10 | main.rs:339:13:339:28 | ...::args(...) | main.rs:152:31:152:33 | l10 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:155:31:155:33 | l11 | main.rs:339:13:339:28 | ...::args(...) | main.rs:155:31:155:33 | l11 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:162:35:162:37 | l13 | main.rs:339:13:339:28 | ...::args(...) | main.rs:162:35:162:37 | l13 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:169:35:169:37 | l13 | main.rs:339:13:339:28 | ...::args(...) | main.rs:169:35:169:37 | l13 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:177:31:177:32 | l1 | main.rs:339:13:339:28 | ...::args(...) | main.rs:177:31:177:32 | l1 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:193:38:193:39 | l2 | main.rs:339:13:339:28 | ...::args(...) | main.rs:193:38:193:39 | l2 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:194:45:194:46 | l2 | main.rs:339:13:339:28 | ...::args(...) | main.rs:194:45:194:46 | l2 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:195:41:195:42 | l2 | main.rs:339:13:339:28 | ...::args(...) | main.rs:195:41:195:42 | l2 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:196:48:196:49 | l2 | main.rs:339:13:339:28 | ...::args(...) | main.rs:196:48:196:49 | l2 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:197:41:197:42 | l2 | main.rs:339:13:339:28 | ...::args(...) | main.rs:197:41:197:42 | l2 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:198:48:198:49 | l2 | main.rs:339:13:339:28 | ...::args(...) | main.rs:198:48:198:49 | l2 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:202:48:202:48 | v | main.rs:339:13:339:28 | ...::args(...) | main.rs:202:48:202:48 | v | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:208:53:208:54 | l2 | main.rs:339:13:339:28 | ...::args(...) | main.rs:208:53:208:54 | l2 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:210:60:210:61 | l2 | main.rs:339:13:339:28 | ...::args(...) | main.rs:210:60:210:61 | l2 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:213:51:213:52 | l2 | main.rs:339:13:339:28 | ...::args(...) | main.rs:213:51:213:52 | l2 | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:219:26:219:26 | v | main.rs:339:13:339:28 | ...::args(...) | main.rs:219:26:219:26 | v | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:220:36:220:36 | v | main.rs:339:13:339:28 | ...::args(...) | main.rs:220:36:220:36 | v | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:222:30:222:30 | v | main.rs:339:13:339:28 | ...::args(...) | main.rs:222:30:222:30 | v | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:223:26:223:26 | v | main.rs:339:13:339:28 | ...::args(...) | main.rs:223:26:223:26 | v | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:224:31:224:31 | v | main.rs:339:13:339:28 | ...::args(...) | main.rs:224:31:224:31 | v | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:228:43:228:43 | v | main.rs:339:13:339:28 | ...::args(...) | main.rs:228:43:228:43 | v | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:229:39:229:39 | v | main.rs:339:13:339:28 | ...::args(...) | main.rs:229:39:229:39 | v | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:230:46:230:46 | v | main.rs:339:13:339:28 | ...::args(...) | main.rs:230:46:230:46 | v | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:231:42:231:42 | v | main.rs:339:13:339:28 | ...::args(...) | main.rs:231:42:231:42 | v | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | +| main.rs:287:40:287:45 | layout | main.rs:311:25:311:40 | ...::args(...) | main.rs:287:40:287:45 | layout | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:311:25:311:40 | ...::args(...) | user-provided value | +| main.rs:331:26:331:26 | a | main.rs:339:13:339:28 | ...::args(...) | main.rs:331:26:331:26 | a | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:339:13:339:28 | ...::args(...) | user-provided value | edges -| main.rs:12:36:12:43 | ...: usize | main.rs:18:41:18:41 | v | provenance | | -| main.rs:18:41:18:41 | v | main.rs:18:13:18:31 | ...::realloc | provenance | MaD:17 Sink:MaD:17 | -| main.rs:18:41:18:41 | v | main.rs:20:50:20:50 | v | provenance | | -| main.rs:18:41:18:41 | v | main.rs:29:60:29:60 | v | provenance | | -| main.rs:18:41:18:41 | v | main.rs:32:60:32:60 | v | provenance | | -| main.rs:18:41:18:41 | v | main.rs:35:49:35:49 | v | provenance | | -| main.rs:20:9:20:10 | l2 | main.rs:21:31:21:32 | l2 | provenance | | +| main.rs:12:36:12:43 | ...: usize | main.rs:18:41:18:41 | v | provenance | Sink:MaD:17 | +| main.rs:12:36:12:43 | ...: usize | main.rs:20:50:20:50 | v | provenance | | +| main.rs:12:36:12:43 | ...: usize | main.rs:29:60:29:60 | v | provenance | | +| main.rs:12:36:12:43 | ...: usize | main.rs:32:60:32:60 | v | provenance | | +| main.rs:12:36:12:43 | ...: usize | main.rs:35:49:35:49 | v | provenance | | +| main.rs:20:9:20:10 | l2 | main.rs:21:31:21:32 | l2 | provenance | Sink:MaD:15 | +| main.rs:20:9:20:10 | l2 | main.rs:22:31:22:32 | l2 | provenance | | +| main.rs:20:9:20:10 | l2 | main.rs:23:31:23:32 | l2 | provenance | | +| main.rs:20:9:20:10 | l2 | main.rs:24:38:24:39 | l2 | provenance | Sink:MaD:16 | | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:41 | | main.rs:20:14:20:63 | ... .unwrap() | main.rs:20:9:20:10 | l2 | provenance | | | main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:33 | -| main.rs:21:31:21:32 | l2 | main.rs:21:13:21:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:21:31:21:32 | l2 | main.rs:22:31:22:32 | l2 | provenance | | -| main.rs:21:31:21:32 | l2 | main.rs:23:31:23:32 | l2 | provenance | | -| main.rs:21:31:21:32 | l2 | main.rs:24:38:24:39 | l2 | provenance | | | main.rs:22:31:22:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:27 | | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:41 | -| main.rs:22:31:22:53 | ... .unwrap() | main.rs:22:13:22:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:22:31:22:53 | ... .unwrap() | main.rs:22:31:22:53 | ... .unwrap() | provenance | Sink:MaD:15 | | main.rs:23:31:23:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:27 | | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:41 | | main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:35 | -| main.rs:23:31:23:68 | ... .pad_to_align() | main.rs:23:13:23:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:24:38:24:39 | l2 | main.rs:24:13:24:36 | ...::alloc_zeroed | provenance | MaD:16 Sink:MaD:16 | -| main.rs:29:9:29:10 | l4 | main.rs:30:31:30:32 | l4 | provenance | | +| main.rs:23:31:23:68 | ... .pad_to_align() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | Sink:MaD:15 | +| main.rs:29:9:29:10 | l4 | main.rs:30:31:30:32 | l4 | provenance | Sink:MaD:15 | | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | main.rs:29:9:29:10 | l4 | provenance | | | main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:34 | -| main.rs:30:31:30:32 | l4 | main.rs:30:13:30:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:32:9:32:10 | l5 | main.rs:33:31:33:32 | l5 | provenance | | +| main.rs:32:9:32:10 | l5 | main.rs:33:31:33:32 | l5 | provenance | Sink:MaD:15 | | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | main.rs:32:9:32:10 | l5 | provenance | | | main.rs:32:60:32:60 | v | main.rs:32:60:32:89 | ... * ... | provenance | MaD:25 | | main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:34 | -| main.rs:33:31:33:32 | l5 | main.rs:33:13:33:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:35:9:35:10 | s6 | main.rs:36:60:36:61 | s6 | provenance | | | main.rs:35:14:35:54 | ... + ... | main.rs:35:9:35:10 | s6 | provenance | | | main.rs:35:15:35:49 | ... * ... | main.rs:35:14:35:54 | ... + ... | provenance | MaD:24 | | main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:25 | -| main.rs:36:9:36:10 | l6 | main.rs:37:31:37:32 | l6 | provenance | | +| main.rs:36:9:36:10 | l6 | main.rs:37:31:37:32 | l6 | provenance | Sink:MaD:15 | +| main.rs:36:9:36:10 | l6 | main.rs:39:60:39:61 | l6 | provenance | | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | main.rs:36:9:36:10 | l6 | provenance | | | main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:34 | -| main.rs:37:31:37:32 | l6 | main.rs:37:13:37:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:37:31:37:32 | l6 | main.rs:39:60:39:61 | l6 | provenance | | -| main.rs:39:9:39:10 | l7 | main.rs:40:31:40:32 | l7 | provenance | | +| main.rs:39:9:39:10 | l7 | main.rs:40:31:40:32 | l7 | provenance | Sink:MaD:15 | | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | main.rs:39:9:39:10 | l7 | provenance | | | main.rs:39:60:39:61 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:38 | | main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:34 | -| main.rs:40:31:40:32 | l7 | main.rs:40:13:40:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:43:44:43:51 | ...: usize | main.rs:50:41:50:41 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:51:41:51:41 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:53:48:53:48 | v | provenance | | @@ -106,59 +99,54 @@ edges | main.rs:43:44:43:51 | ...: usize | main.rs:67:46:67:46 | v | provenance | | | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:41 | | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | main.rs:50:31:50:53 | ... .0 | provenance | | -| main.rs:50:31:50:53 | ... .0 | main.rs:50:13:50:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:50:31:50:53 | ... .0 | main.rs:50:31:50:53 | ... .0 | provenance | Sink:MaD:15 | | main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:36 | | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:41 | | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | main.rs:51:31:51:57 | ... .0 | provenance | | -| main.rs:51:31:51:57 | ... .0 | main.rs:51:13:51:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:51:31:51:57 | ... .0 | main.rs:51:31:51:57 | ... .0 | provenance | Sink:MaD:15 | | main.rs:51:41:51:41 | v | main.rs:51:41:51:45 | ... + ... | provenance | MaD:24 | | main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:36 | | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:41 | -| main.rs:53:31:53:58 | ... .unwrap() | main.rs:53:13:53:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:53:31:53:58 | ... .unwrap() | main.rs:53:31:53:58 | ... .unwrap() | provenance | Sink:MaD:15 | | main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:37 | | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:41 | -| main.rs:54:31:54:63 | ... .unwrap() | main.rs:54:13:54:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:54:31:54:63 | ... .unwrap() | main.rs:54:31:54:63 | ... .unwrap() | provenance | Sink:MaD:15 | | main.rs:54:48:54:48 | v | main.rs:54:48:54:53 | ... * ... | provenance | MaD:25 | | main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:37 | | main.rs:58:9:58:20 | TuplePat [tuple.0] | main.rs:58:10:58:11 | k1 | provenance | | -| main.rs:58:10:58:11 | k1 | main.rs:59:31:59:32 | k1 | provenance | | +| main.rs:58:10:58:11 | k1 | main.rs:59:31:59:32 | k1 | provenance | Sink:MaD:15 | +| main.rs:58:10:58:11 | k1 | main.rs:60:34:60:35 | k1 | provenance | | +| main.rs:58:10:58:11 | k1 | main.rs:62:24:62:25 | k1 | provenance | | +| main.rs:58:10:58:11 | k1 | main.rs:64:48:64:49 | k1 | provenance | | +| main.rs:58:10:58:11 | k1 | main.rs:65:31:65:32 | k1 | provenance | | | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:40 | | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | main.rs:58:9:58:20 | TuplePat [tuple.0] | provenance | | | main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:36 | -| main.rs:59:31:59:32 | k1 | main.rs:59:13:59:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:59:31:59:32 | k1 | main.rs:60:34:60:35 | k1 | provenance | | -| main.rs:59:31:59:32 | k1 | main.rs:62:24:62:25 | k1 | provenance | | -| main.rs:59:31:59:32 | k1 | main.rs:64:48:64:49 | k1 | provenance | | -| main.rs:59:31:59:32 | k1 | main.rs:65:31:65:32 | k1 | provenance | | | main.rs:60:9:60:20 | TuplePat [tuple.0] | main.rs:60:10:60:11 | k2 | provenance | | -| main.rs:60:10:60:11 | k2 | main.rs:61:31:61:32 | k2 | provenance | | +| main.rs:60:10:60:11 | k2 | main.rs:61:31:61:32 | k2 | provenance | Sink:MaD:15 | | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:41 | | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | main.rs:60:9:60:20 | TuplePat [tuple.0] | provenance | | | main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:29 | -| main.rs:61:31:61:32 | k2 | main.rs:61:13:61:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:62:9:62:20 | TuplePat [tuple.0] | main.rs:62:10:62:11 | k3 | provenance | | -| main.rs:62:10:62:11 | k3 | main.rs:63:31:63:32 | k3 | provenance | | +| main.rs:62:10:62:11 | k3 | main.rs:63:31:63:32 | k3 | provenance | Sink:MaD:15 | | main.rs:62:24:62:25 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:30 | | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:41 | | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | main.rs:62:9:62:20 | TuplePat [tuple.0] | provenance | | -| main.rs:63:31:63:32 | k3 | main.rs:63:13:63:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:41 | -| main.rs:64:31:64:59 | ... .unwrap() | main.rs:64:13:64:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:64:31:64:59 | ... .unwrap() | main.rs:64:31:64:59 | ... .unwrap() | provenance | Sink:MaD:15 | | main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:31 | | main.rs:65:31:65:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:32 | | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:41 | -| main.rs:65:31:65:59 | ... .unwrap() | main.rs:65:13:65:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:67:9:67:10 | l4 | main.rs:68:31:68:32 | l4 | provenance | | +| main.rs:65:31:65:59 | ... .unwrap() | main.rs:65:31:65:59 | ... .unwrap() | provenance | Sink:MaD:15 | +| main.rs:67:9:67:10 | l4 | main.rs:68:31:68:32 | l4 | provenance | Sink:MaD:15 | | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:41 | | main.rs:67:14:67:56 | ... .unwrap() | main.rs:67:9:67:10 | l4 | provenance | | | main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | -| main.rs:68:31:68:32 | l4 | main.rs:68:13:68:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:86:35:86:42 | ...: usize | main.rs:87:54:87:54 | v | provenance | | -| main.rs:87:9:87:14 | layout | main.rs:88:31:88:36 | layout | provenance | | +| main.rs:87:9:87:14 | layout | main.rs:88:31:88:36 | layout | provenance | Sink:MaD:15 | | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:41 | | main.rs:87:18:87:67 | ... .unwrap() | main.rs:87:9:87:14 | layout | provenance | | | main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:33 | -| main.rs:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:91:38:91:45 | ...: usize | main.rs:92:47:92:47 | v | provenance | | | main.rs:91:38:91:45 | ...: usize | main.rs:101:51:101:51 | v | provenance | | | main.rs:91:38:91:45 | ...: usize | main.rs:105:33:105:33 | v | provenance | | @@ -166,113 +154,77 @@ edges | main.rs:91:38:91:45 | ...: usize | main.rs:151:62:151:62 | v | provenance | | | main.rs:91:38:91:45 | ...: usize | main.rs:154:62:154:62 | v | provenance | | | main.rs:91:38:91:45 | ...: usize | main.rs:161:55:161:55 | v | provenance | | -| main.rs:92:9:92:10 | l1 | main.rs:96:35:96:36 | l1 | provenance | | -| main.rs:92:9:92:10 | l1 | main.rs:102:35:102:36 | l1 | provenance | | +| main.rs:92:9:92:10 | l1 | main.rs:96:35:96:36 | l1 | provenance | Sink:MaD:15 | +| main.rs:92:9:92:10 | l1 | main.rs:102:35:102:36 | l1 | provenance | Sink:MaD:15 | +| main.rs:92:9:92:10 | l1 | main.rs:109:35:109:36 | l1 | provenance | Sink:MaD:15 | +| main.rs:92:9:92:10 | l1 | main.rs:111:35:111:36 | l1 | provenance | Sink:MaD:15 | +| main.rs:92:9:92:10 | l1 | main.rs:146:35:146:36 | l1 | provenance | Sink:MaD:15 | +| main.rs:92:9:92:10 | l1 | main.rs:177:31:177:32 | l1 | provenance | Sink:MaD:15 | | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:41 | | main.rs:92:14:92:57 | ... .unwrap() | main.rs:92:9:92:10 | l1 | provenance | | | main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | -| main.rs:96:35:96:36 | l1 | main.rs:96:17:96:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:96:35:96:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | -| main.rs:96:35:96:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | -| main.rs:101:13:101:14 | l3 | main.rs:103:35:103:36 | l3 | provenance | | +| main.rs:101:13:101:14 | l3 | main.rs:103:35:103:36 | l3 | provenance | Sink:MaD:15 | | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:41 | | main.rs:101:18:101:61 | ... .unwrap() | main.rs:101:13:101:14 | l3 | provenance | | | main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | -| main.rs:102:35:102:36 | l1 | main.rs:102:17:102:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:102:35:102:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | -| main.rs:102:35:102:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | -| main.rs:103:35:103:36 | l3 | main.rs:103:17:103:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:105:33:105:33 | v | main.rs:86:35:86:42 | ...: usize | provenance | | -| main.rs:109:35:109:36 | l1 | main.rs:109:17:109:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:109:35:109:36 | l1 | main.rs:146:35:146:36 | l1 | provenance | | -| main.rs:111:35:111:36 | l1 | main.rs:111:17:111:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:111:35:111:36 | l1 | main.rs:146:35:146:36 | l1 | provenance | | -| main.rs:145:13:145:14 | l9 | main.rs:148:35:148:36 | l9 | provenance | | +| main.rs:145:13:145:14 | l9 | main.rs:148:35:148:36 | l9 | provenance | Sink:MaD:15 | | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:41 | | main.rs:145:18:145:61 | ... .unwrap() | main.rs:145:13:145:14 | l9 | provenance | | | main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | -| main.rs:146:35:146:36 | l1 | main.rs:146:17:146:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:146:35:146:36 | l1 | main.rs:177:31:177:32 | l1 | provenance | | -| main.rs:148:35:148:36 | l9 | main.rs:148:17:148:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:151:9:151:11 | l10 | main.rs:152:31:152:33 | l10 | provenance | | +| main.rs:151:9:151:11 | l10 | main.rs:152:31:152:33 | l10 | provenance | Sink:MaD:15 | | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:41 | | main.rs:151:15:151:78 | ... .unwrap() | main.rs:151:9:151:11 | l10 | provenance | | | main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | | main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:43 | -| main.rs:152:31:152:33 | l10 | main.rs:152:13:152:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:154:9:154:11 | l11 | main.rs:155:31:155:33 | l11 | provenance | | +| main.rs:154:9:154:11 | l11 | main.rs:155:31:155:33 | l11 | provenance | Sink:MaD:15 | | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:41 | | main.rs:154:15:154:78 | ... .unwrap() | main.rs:154:9:154:11 | l11 | provenance | | | main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | | main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:42 | -| main.rs:155:31:155:33 | l11 | main.rs:155:13:155:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:161:13:161:15 | l13 | main.rs:162:35:162:37 | l13 | provenance | | +| main.rs:161:13:161:15 | l13 | main.rs:162:35:162:37 | l13 | provenance | Sink:MaD:15 | +| main.rs:161:13:161:15 | l13 | main.rs:169:35:169:37 | l13 | provenance | Sink:MaD:15 | | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:41 | | main.rs:161:19:161:68 | ... .unwrap() | main.rs:161:13:161:15 | l13 | provenance | | | main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:33 | -| main.rs:162:35:162:37 | l13 | main.rs:162:17:162:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:162:35:162:37 | l13 | main.rs:169:35:169:37 | l13 | provenance | | -| main.rs:169:35:169:37 | l13 | main.rs:169:17:169:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:177:31:177:32 | l1 | main.rs:177:13:177:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:183:29:183:36 | ...: usize | main.rs:192:46:192:46 | v | provenance | | -| main.rs:183:29:183:36 | ...: usize | main.rs:202:48:202:48 | v | provenance | | -| main.rs:192:9:192:10 | l2 | main.rs:193:38:193:39 | l2 | provenance | | +| main.rs:183:29:183:36 | ...: usize | main.rs:202:48:202:48 | v | provenance | Sink:MaD:14 | +| main.rs:192:9:192:10 | l2 | main.rs:193:38:193:39 | l2 | provenance | Sink:MaD:12 | +| main.rs:192:9:192:10 | l2 | main.rs:194:45:194:46 | l2 | provenance | Sink:MaD:13 | +| main.rs:192:9:192:10 | l2 | main.rs:195:41:195:42 | l2 | provenance | Sink:MaD:7 | +| main.rs:192:9:192:10 | l2 | main.rs:196:48:196:49 | l2 | provenance | Sink:MaD:8 | +| main.rs:192:9:192:10 | l2 | main.rs:197:41:197:42 | l2 | provenance | Sink:MaD:1 | +| main.rs:192:9:192:10 | l2 | main.rs:198:48:198:49 | l2 | provenance | Sink:MaD:2 | +| main.rs:192:9:192:10 | l2 | main.rs:208:53:208:54 | l2 | provenance | Sink:MaD:9 | +| main.rs:192:9:192:10 | l2 | main.rs:210:60:210:61 | l2 | provenance | Sink:MaD:10 | +| main.rs:192:9:192:10 | l2 | main.rs:213:51:213:52 | l2 | provenance | Sink:MaD:11 | | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:41 | | main.rs:192:14:192:56 | ... .unwrap() | main.rs:192:9:192:10 | l2 | provenance | | | main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:28 | -| main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:12 Sink:MaD:12 | -| main.rs:193:38:193:39 | l2 | main.rs:194:45:194:46 | l2 | provenance | | -| main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:13 Sink:MaD:13 | -| main.rs:194:45:194:46 | l2 | main.rs:195:41:195:42 | l2 | provenance | | -| main.rs:195:41:195:42 | l2 | main.rs:195:32:195:39 | allocate | provenance | MaD:7 Sink:MaD:7 | -| main.rs:195:41:195:42 | l2 | main.rs:196:48:196:49 | l2 | provenance | | -| main.rs:196:48:196:49 | l2 | main.rs:196:32:196:46 | allocate_zeroed | provenance | MaD:8 Sink:MaD:8 | -| main.rs:196:48:196:49 | l2 | main.rs:197:41:197:42 | l2 | provenance | | -| main.rs:197:41:197:42 | l2 | main.rs:197:32:197:39 | allocate | provenance | MaD:1 Sink:MaD:1 | -| main.rs:197:41:197:42 | l2 | main.rs:198:48:198:49 | l2 | provenance | | -| main.rs:198:48:198:49 | l2 | main.rs:198:32:198:46 | allocate_zeroed | provenance | MaD:2 Sink:MaD:2 | -| main.rs:198:48:198:49 | l2 | main.rs:208:53:208:54 | l2 | provenance | | -| main.rs:198:48:198:49 | l2 | main.rs:210:60:210:61 | l2 | provenance | | -| main.rs:198:48:198:49 | l2 | main.rs:213:51:213:52 | l2 | provenance | | -| main.rs:202:48:202:48 | v | main.rs:202:32:202:38 | realloc | provenance | MaD:14 Sink:MaD:14 | -| main.rs:208:53:208:54 | l2 | main.rs:208:40:208:43 | grow | provenance | MaD:9 Sink:MaD:9 | -| main.rs:210:60:210:61 | l2 | main.rs:210:40:210:50 | grow_zeroed | provenance | MaD:10 Sink:MaD:10 | -| main.rs:213:51:213:52 | l2 | main.rs:213:36:213:41 | shrink | provenance | MaD:11 Sink:MaD:11 | -| main.rs:217:27:217:34 | ...: usize | main.rs:219:26:219:26 | v | provenance | | -| main.rs:219:26:219:26 | v | main.rs:219:13:219:24 | ...::malloc | provenance | MaD:20 Sink:MaD:20 | -| main.rs:219:26:219:26 | v | main.rs:220:36:220:36 | v | provenance | | -| main.rs:220:36:220:36 | v | main.rs:220:13:220:31 | ...::aligned_alloc | provenance | MaD:18 Sink:MaD:18 | -| main.rs:220:36:220:36 | v | main.rs:222:30:222:30 | v | provenance | | -| main.rs:222:30:222:30 | v | main.rs:222:13:222:24 | ...::calloc | provenance | MaD:19 Sink:MaD:19 | -| main.rs:222:30:222:30 | v | main.rs:223:26:223:26 | v | provenance | | -| main.rs:223:26:223:26 | v | main.rs:223:13:223:24 | ...::calloc | provenance | MaD:19 Sink:MaD:19 | -| main.rs:223:26:223:26 | v | main.rs:224:31:224:31 | v | provenance | | -| main.rs:224:31:224:31 | v | main.rs:224:13:224:25 | ...::realloc | provenance | MaD:21 Sink:MaD:21 | -| main.rs:227:24:227:31 | ...: usize | main.rs:228:43:228:43 | v | provenance | | -| main.rs:228:43:228:43 | v | main.rs:228:13:228:41 | ...::try_with_capacity | provenance | MaD:3 Sink:MaD:3 | -| main.rs:228:43:228:43 | v | main.rs:229:39:229:39 | v | provenance | | -| main.rs:229:39:229:39 | v | main.rs:229:13:229:37 | ...::with_capacity | provenance | MaD:5 Sink:MaD:5 | -| main.rs:229:39:229:39 | v | main.rs:230:46:230:46 | v | provenance | | -| main.rs:230:46:230:46 | v | main.rs:230:13:230:44 | ...::try_with_capacity_in | provenance | MaD:4 Sink:MaD:4 | -| main.rs:230:46:230:46 | v | main.rs:231:42:231:42 | v | provenance | | -| main.rs:231:42:231:42 | v | main.rs:231:13:231:40 | ...::with_capacity_in | provenance | MaD:6 Sink:MaD:6 | +| main.rs:217:27:217:34 | ...: usize | main.rs:219:26:219:26 | v | provenance | Sink:MaD:20 | +| main.rs:217:27:217:34 | ...: usize | main.rs:220:36:220:36 | v | provenance | Sink:MaD:18 | +| main.rs:217:27:217:34 | ...: usize | main.rs:222:30:222:30 | v | provenance | Sink:MaD:19 | +| main.rs:217:27:217:34 | ...: usize | main.rs:223:26:223:26 | v | provenance | Sink:MaD:19 | +| main.rs:217:27:217:34 | ...: usize | main.rs:224:31:224:31 | v | provenance | Sink:MaD:21 | +| main.rs:227:24:227:31 | ...: usize | main.rs:228:43:228:43 | v | provenance | Sink:MaD:3 | +| main.rs:227:24:227:31 | ...: usize | main.rs:229:39:229:39 | v | provenance | Sink:MaD:5 | +| main.rs:227:24:227:31 | ...: usize | main.rs:230:46:230:46 | v | provenance | Sink:MaD:4 | +| main.rs:227:24:227:31 | ...: usize | main.rs:231:42:231:42 | v | provenance | Sink:MaD:6 | | main.rs:282:24:282:41 | ...: String | main.rs:283:21:283:30 | user_input | provenance | | | main.rs:283:9:283:17 | num_bytes | main.rs:285:54:285:62 | num_bytes | provenance | | | main.rs:283:21:283:30 | user_input | main.rs:283:21:283:47 | user_input.parse() [Ok] | provenance | MaD:26 | | main.rs:283:21:283:47 | user_input.parse() [Ok] | main.rs:283:21:283:48 | TryExpr | provenance | | | main.rs:283:21:283:48 | TryExpr | main.rs:283:21:283:77 | ... * ... | provenance | MaD:25 | | main.rs:283:21:283:77 | ... * ... | main.rs:283:9:283:17 | num_bytes | provenance | | -| main.rs:285:9:285:14 | layout | main.rs:287:40:287:45 | layout | provenance | | +| main.rs:285:9:285:14 | layout | main.rs:287:40:287:45 | layout | provenance | Sink:MaD:15 | | main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | main.rs:285:18:285:75 | ... .unwrap() | provenance | MaD:41 | | main.rs:285:18:285:75 | ... .unwrap() | main.rs:285:9:285:14 | layout | provenance | | | main.rs:285:54:285:62 | num_bytes | main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | provenance | MaD:33 | -| main.rs:287:40:287:45 | layout | main.rs:287:22:287:38 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:311:25:311:38 | ...::args | main.rs:311:25:311:40 | ...::args(...) [element] | provenance | Src:MaD:22 | +| main.rs:311:25:311:40 | ...::args(...) | main.rs:311:25:311:40 | ...::args(...) [element] | provenance | Src:MaD:22 | | main.rs:311:25:311:40 | ...::args(...) [element] | main.rs:311:25:311:47 | ... .nth(...) [Some] | provenance | MaD:23 | | main.rs:311:25:311:47 | ... .nth(...) [Some] | main.rs:311:25:311:74 | ... .unwrap_or(...) | provenance | MaD:39 | | main.rs:311:25:311:74 | ... .unwrap_or(...) | main.rs:282:24:282:41 | ...: String | provenance | | -| main.rs:317:26:317:33 | ...: usize | main.rs:331:26:331:26 | a | provenance | | -| main.rs:331:26:331:26 | a | main.rs:331:13:331:24 | ...::malloc | provenance | MaD:20 Sink:MaD:20 | +| main.rs:317:26:317:33 | ...: usize | main.rs:331:26:331:26 | a | provenance | Sink:MaD:20 | | main.rs:339:9:339:9 | v | main.rs:342:34:342:34 | v | provenance | | | main.rs:339:9:339:9 | v | main.rs:343:42:343:42 | v | provenance | | | main.rs:339:9:339:9 | v | main.rs:344:36:344:36 | v | provenance | | @@ -280,7 +232,7 @@ edges | main.rs:339:9:339:9 | v | main.rs:346:25:346:25 | v | provenance | | | main.rs:339:9:339:9 | v | main.rs:347:22:347:22 | v | provenance | | | main.rs:339:9:339:9 | v | main.rs:349:24:349:24 | v | provenance | | -| main.rs:339:13:339:26 | ...::args | main.rs:339:13:339:28 | ...::args(...) [element] | provenance | Src:MaD:22 | +| main.rs:339:13:339:28 | ...::args(...) | main.rs:339:13:339:28 | ...::args(...) [element] | provenance | Src:MaD:22 | | main.rs:339:13:339:28 | ...::args(...) [element] | main.rs:339:13:339:35 | ... .nth(...) [Some] | provenance | MaD:23 | | main.rs:339:13:339:35 | ... .nth(...) [Some] | main.rs:339:13:339:65 | ... .unwrap_or(...) | provenance | MaD:39 | | main.rs:339:13:339:65 | ... .unwrap_or(...) | main.rs:339:13:339:82 | ... .parse() [Ok] | provenance | MaD:26 | @@ -339,35 +291,30 @@ models | 43 | Summary: core::cmp::min; Argument[0]; ReturnValue; value | nodes | main.rs:12:36:12:43 | ...: usize | semmle.label | ...: usize | -| main.rs:18:13:18:31 | ...::realloc | semmle.label | ...::realloc | | main.rs:18:41:18:41 | v | semmle.label | v | | main.rs:20:9:20:10 | l2 | semmle.label | l2 | | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | semmle.label | ...::from_size_align(...) [Ok] | | main.rs:20:14:20:63 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:20:50:20:50 | v | semmle.label | v | -| main.rs:21:13:21:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:21:31:21:32 | l2 | semmle.label | l2 | -| main.rs:22:13:22:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:22:31:22:32 | l2 | semmle.label | l2 | | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | semmle.label | l2.align_to(...) [Ok] | | main.rs:22:31:22:53 | ... .unwrap() | semmle.label | ... .unwrap() | -| main.rs:23:13:23:29 | ...::alloc | semmle.label | ...::alloc | +| main.rs:22:31:22:53 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:23:31:23:32 | l2 | semmle.label | l2 | | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | semmle.label | l2.align_to(...) [Ok] | | main.rs:23:31:23:53 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:23:31:23:68 | ... .pad_to_align() | semmle.label | ... .pad_to_align() | -| main.rs:24:13:24:36 | ...::alloc_zeroed | semmle.label | ...::alloc_zeroed | +| main.rs:23:31:23:68 | ... .pad_to_align() | semmle.label | ... .pad_to_align() | | main.rs:24:38:24:39 | l2 | semmle.label | l2 | | main.rs:29:9:29:10 | l4 | semmle.label | l4 | | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | semmle.label | ...::from_size_align_unchecked(...) | | main.rs:29:60:29:60 | v | semmle.label | v | -| main.rs:30:13:30:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:30:31:30:32 | l4 | semmle.label | l4 | | main.rs:32:9:32:10 | l5 | semmle.label | l5 | | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | semmle.label | ...::from_size_align_unchecked(...) | | main.rs:32:60:32:60 | v | semmle.label | v | | main.rs:32:60:32:89 | ... * ... | semmle.label | ... * ... | -| main.rs:33:13:33:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:33:31:33:32 | l5 | semmle.label | l5 | | main.rs:35:9:35:10 | s6 | semmle.label | s6 | | main.rs:35:14:35:54 | ... + ... | semmle.label | ... + ... | @@ -376,33 +323,31 @@ nodes | main.rs:36:9:36:10 | l6 | semmle.label | l6 | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | semmle.label | ...::from_size_align_unchecked(...) | | main.rs:36:60:36:61 | s6 | semmle.label | s6 | -| main.rs:37:13:37:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:37:31:37:32 | l6 | semmle.label | l6 | | main.rs:39:9:39:10 | l7 | semmle.label | l7 | | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | semmle.label | ...::from_size_align_unchecked(...) | | main.rs:39:60:39:61 | l6 | semmle.label | l6 | | main.rs:39:60:39:68 | l6.size() | semmle.label | l6.size() | -| main.rs:40:13:40:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:40:31:40:32 | l7 | semmle.label | l7 | | main.rs:43:44:43:51 | ...: usize | semmle.label | ...: usize | -| main.rs:50:13:50:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | semmle.label | l2.repeat(...) [Ok, tuple.0] | | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | semmle.label | ... .unwrap() [tuple.0] | | main.rs:50:31:50:53 | ... .0 | semmle.label | ... .0 | +| main.rs:50:31:50:53 | ... .0 | semmle.label | ... .0 | | main.rs:50:41:50:41 | v | semmle.label | v | -| main.rs:51:13:51:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | semmle.label | l2.repeat(...) [Ok, tuple.0] | | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | semmle.label | ... .unwrap() [tuple.0] | | main.rs:51:31:51:57 | ... .0 | semmle.label | ... .0 | +| main.rs:51:31:51:57 | ... .0 | semmle.label | ... .0 | | main.rs:51:41:51:41 | v | semmle.label | v | | main.rs:51:41:51:45 | ... + ... | semmle.label | ... + ... | -| main.rs:53:13:53:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | semmle.label | l2.repeat_packed(...) [Ok] | | main.rs:53:31:53:58 | ... .unwrap() | semmle.label | ... .unwrap() | +| main.rs:53:31:53:58 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:53:48:53:48 | v | semmle.label | v | -| main.rs:54:13:54:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | semmle.label | l2.repeat_packed(...) [Ok] | | main.rs:54:31:54:63 | ... .unwrap() | semmle.label | ... .unwrap() | +| main.rs:54:31:54:63 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:54:48:54:48 | v | semmle.label | v | | main.rs:54:48:54:53 | ... * ... | semmle.label | ... * ... | | main.rs:58:9:58:20 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] | @@ -410,139 +355,103 @@ nodes | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | semmle.label | l3.repeat(...) [Ok, tuple.0] | | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | semmle.label | ... .expect(...) [tuple.0] | | main.rs:58:34:58:34 | v | semmle.label | v | -| main.rs:59:13:59:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:59:31:59:32 | k1 | semmle.label | k1 | | main.rs:60:9:60:20 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] | | main.rs:60:10:60:11 | k2 | semmle.label | k2 | | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | semmle.label | l3.extend(...) [Ok, tuple.0] | | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | semmle.label | ... .unwrap() [tuple.0] | | main.rs:60:34:60:35 | k1 | semmle.label | k1 | -| main.rs:61:13:61:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:61:31:61:32 | k2 | semmle.label | k2 | | main.rs:62:9:62:20 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] | | main.rs:62:10:62:11 | k3 | semmle.label | k3 | | main.rs:62:24:62:25 | k1 | semmle.label | k1 | | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | semmle.label | k1.extend(...) [Ok, tuple.0] | | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | semmle.label | ... .unwrap() [tuple.0] | -| main.rs:63:13:63:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:63:31:63:32 | k3 | semmle.label | k3 | -| main.rs:64:13:64:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | semmle.label | l3.extend_packed(...) [Ok] | | main.rs:64:31:64:59 | ... .unwrap() | semmle.label | ... .unwrap() | +| main.rs:64:31:64:59 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:64:48:64:49 | k1 | semmle.label | k1 | -| main.rs:65:13:65:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:65:31:65:32 | k1 | semmle.label | k1 | | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | semmle.label | k1.extend_packed(...) [Ok] | | main.rs:65:31:65:59 | ... .unwrap() | semmle.label | ... .unwrap() | +| main.rs:65:31:65:59 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:67:9:67:10 | l4 | semmle.label | l4 | | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | semmle.label | ...::array::<...>(...) [Ok] | | main.rs:67:14:67:56 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:67:46:67:46 | v | semmle.label | v | -| main.rs:68:13:68:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:68:31:68:32 | l4 | semmle.label | l4 | | main.rs:86:35:86:42 | ...: usize | semmle.label | ...: usize | | main.rs:87:9:87:14 | layout | semmle.label | layout | | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | semmle.label | ...::from_size_align(...) [Ok] | | main.rs:87:18:87:67 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:87:54:87:54 | v | semmle.label | v | -| main.rs:88:13:88:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:88:31:88:36 | layout | semmle.label | layout | | main.rs:91:38:91:45 | ...: usize | semmle.label | ...: usize | | main.rs:92:9:92:10 | l1 | semmle.label | l1 | | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | semmle.label | ...::array::<...>(...) [Ok] | | main.rs:92:14:92:57 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:92:47:92:47 | v | semmle.label | v | -| main.rs:96:17:96:33 | ...::alloc | semmle.label | ...::alloc | | main.rs:96:35:96:36 | l1 | semmle.label | l1 | | main.rs:101:13:101:14 | l3 | semmle.label | l3 | | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | semmle.label | ...::array::<...>(...) [Ok] | | main.rs:101:18:101:61 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:101:51:101:51 | v | semmle.label | v | -| main.rs:102:17:102:33 | ...::alloc | semmle.label | ...::alloc | | main.rs:102:35:102:36 | l1 | semmle.label | l1 | -| main.rs:103:17:103:33 | ...::alloc | semmle.label | ...::alloc | | main.rs:103:35:103:36 | l3 | semmle.label | l3 | | main.rs:105:33:105:33 | v | semmle.label | v | -| main.rs:109:17:109:33 | ...::alloc | semmle.label | ...::alloc | | main.rs:109:35:109:36 | l1 | semmle.label | l1 | -| main.rs:111:17:111:33 | ...::alloc | semmle.label | ...::alloc | | main.rs:111:35:111:36 | l1 | semmle.label | l1 | | main.rs:145:13:145:14 | l9 | semmle.label | l9 | | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | semmle.label | ...::array::<...>(...) [Ok] | | main.rs:145:18:145:61 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:145:51:145:51 | v | semmle.label | v | -| main.rs:146:17:146:33 | ...::alloc | semmle.label | ...::alloc | | main.rs:146:35:146:36 | l1 | semmle.label | l1 | -| main.rs:148:17:148:33 | ...::alloc | semmle.label | ...::alloc | | main.rs:148:35:148:36 | l9 | semmle.label | l9 | | main.rs:151:9:151:11 | l10 | semmle.label | l10 | | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | semmle.label | ...::array::<...>(...) [Ok] | | main.rs:151:15:151:78 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:151:48:151:68 | ...::min(...) | semmle.label | ...::min(...) | | main.rs:151:62:151:62 | v | semmle.label | v | -| main.rs:152:13:152:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:152:31:152:33 | l10 | semmle.label | l10 | | main.rs:154:9:154:11 | l11 | semmle.label | l11 | | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | semmle.label | ...::array::<...>(...) [Ok] | | main.rs:154:15:154:78 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:154:48:154:68 | ...::max(...) | semmle.label | ...::max(...) | | main.rs:154:62:154:62 | v | semmle.label | v | -| main.rs:155:13:155:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:155:31:155:33 | l11 | semmle.label | l11 | | main.rs:161:13:161:15 | l13 | semmle.label | l13 | | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | semmle.label | ...::from_size_align(...) [Ok] | | main.rs:161:19:161:68 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:161:55:161:55 | v | semmle.label | v | -| main.rs:162:17:162:33 | ...::alloc | semmle.label | ...::alloc | | main.rs:162:35:162:37 | l13 | semmle.label | l13 | -| main.rs:169:17:169:33 | ...::alloc | semmle.label | ...::alloc | | main.rs:169:35:169:37 | l13 | semmle.label | l13 | -| main.rs:177:13:177:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:177:31:177:32 | l1 | semmle.label | l1 | | main.rs:183:29:183:36 | ...: usize | semmle.label | ...: usize | | main.rs:192:9:192:10 | l2 | semmle.label | l2 | | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | semmle.label | ...::array::<...>(...) [Ok] | | main.rs:192:14:192:56 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:192:46:192:46 | v | semmle.label | v | -| main.rs:193:32:193:36 | alloc | semmle.label | alloc | | main.rs:193:38:193:39 | l2 | semmle.label | l2 | -| main.rs:194:32:194:43 | alloc_zeroed | semmle.label | alloc_zeroed | | main.rs:194:45:194:46 | l2 | semmle.label | l2 | -| main.rs:195:32:195:39 | allocate | semmle.label | allocate | | main.rs:195:41:195:42 | l2 | semmle.label | l2 | -| main.rs:196:32:196:46 | allocate_zeroed | semmle.label | allocate_zeroed | | main.rs:196:48:196:49 | l2 | semmle.label | l2 | -| main.rs:197:32:197:39 | allocate | semmle.label | allocate | | main.rs:197:41:197:42 | l2 | semmle.label | l2 | -| main.rs:198:32:198:46 | allocate_zeroed | semmle.label | allocate_zeroed | | main.rs:198:48:198:49 | l2 | semmle.label | l2 | -| main.rs:202:32:202:38 | realloc | semmle.label | realloc | | main.rs:202:48:202:48 | v | semmle.label | v | -| main.rs:208:40:208:43 | grow | semmle.label | grow | | main.rs:208:53:208:54 | l2 | semmle.label | l2 | -| main.rs:210:40:210:50 | grow_zeroed | semmle.label | grow_zeroed | | main.rs:210:60:210:61 | l2 | semmle.label | l2 | -| main.rs:213:36:213:41 | shrink | semmle.label | shrink | | main.rs:213:51:213:52 | l2 | semmle.label | l2 | | main.rs:217:27:217:34 | ...: usize | semmle.label | ...: usize | -| main.rs:219:13:219:24 | ...::malloc | semmle.label | ...::malloc | | main.rs:219:26:219:26 | v | semmle.label | v | -| main.rs:220:13:220:31 | ...::aligned_alloc | semmle.label | ...::aligned_alloc | | main.rs:220:36:220:36 | v | semmle.label | v | -| main.rs:222:13:222:24 | ...::calloc | semmle.label | ...::calloc | | main.rs:222:30:222:30 | v | semmle.label | v | -| main.rs:223:13:223:24 | ...::calloc | semmle.label | ...::calloc | | main.rs:223:26:223:26 | v | semmle.label | v | -| main.rs:224:13:224:25 | ...::realloc | semmle.label | ...::realloc | | main.rs:224:31:224:31 | v | semmle.label | v | | main.rs:227:24:227:31 | ...: usize | semmle.label | ...: usize | -| main.rs:228:13:228:41 | ...::try_with_capacity | semmle.label | ...::try_with_capacity | | main.rs:228:43:228:43 | v | semmle.label | v | -| main.rs:229:13:229:37 | ...::with_capacity | semmle.label | ...::with_capacity | | main.rs:229:39:229:39 | v | semmle.label | v | -| main.rs:230:13:230:44 | ...::try_with_capacity_in | semmle.label | ...::try_with_capacity_in | | main.rs:230:46:230:46 | v | semmle.label | v | -| main.rs:231:13:231:40 | ...::with_capacity_in | semmle.label | ...::with_capacity_in | | main.rs:231:42:231:42 | v | semmle.label | v | | main.rs:282:24:282:41 | ...: String | semmle.label | ...: String | | main.rs:283:9:283:17 | num_bytes | semmle.label | num_bytes | @@ -554,17 +463,15 @@ nodes | main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | semmle.label | ...::from_size_align(...) [Ok] | | main.rs:285:18:285:75 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:285:54:285:62 | num_bytes | semmle.label | num_bytes | -| main.rs:287:22:287:38 | ...::alloc | semmle.label | ...::alloc | | main.rs:287:40:287:45 | layout | semmle.label | layout | -| main.rs:311:25:311:38 | ...::args | semmle.label | ...::args | +| main.rs:311:25:311:40 | ...::args(...) | semmle.label | ...::args(...) | | main.rs:311:25:311:40 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | | main.rs:311:25:311:47 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | | main.rs:311:25:311:74 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | | main.rs:317:26:317:33 | ...: usize | semmle.label | ...: usize | -| main.rs:331:13:331:24 | ...::malloc | semmle.label | ...::malloc | | main.rs:331:26:331:26 | a | semmle.label | a | | main.rs:339:9:339:9 | v | semmle.label | v | -| main.rs:339:13:339:26 | ...::args | semmle.label | ...::args | +| main.rs:339:13:339:28 | ...::args(...) | semmle.label | ...::args(...) | | main.rs:339:13:339:28 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | | main.rs:339:13:339:35 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | | main.rs:339:13:339:65 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | 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 f3dfe9220a47..f350a8a4434f 100644 --- a/rust/ql/test/query-tests/security/CWE-798/HardcodedCryptographicValue.expected +++ b/rust/ql/test/query-tests/security/CWE-798/HardcodedCryptographicValue.expected @@ -1,15 +1,15 @@ #select -| 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: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: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 | +| test_cipher.rs:18:29:18:36 | [0u8; 16] | test_cipher.rs:18:29:18:36 | [0u8; 16] | test_cipher.rs:19:49:19:79 | ...::from_slice(...) | This hard-coded value is used as $@. | test_cipher.rs:19:49:19:79 | ...::from_slice(...) | a key | +| test_cipher.rs:25:29:25:36 | [0u8; 16] | test_cipher.rs:25:29:25:36 | [0u8; 16] | test_cipher.rs:26:42:26:72 | ...::from_slice(...) | This hard-coded value is used as $@. | test_cipher.rs:26:42:26:72 | ...::from_slice(...) | a key | +| test_cipher.rs:29:29:29:36 | [0u8; 16] | test_cipher.rs:29:29:29:36 | [0u8; 16] | test_cipher.rs:30:72:30:101 | ...::from_slice(...) | This hard-coded value is used as $@. | test_cipher.rs:30:72:30:101 | ...::from_slice(...) | an initialization vector | +| test_cipher.rs:37:27:37:74 | [...] | test_cipher.rs:37:27:37:74 | [...] | test_cipher.rs:38:49:38:80 | ...::from_slice(...) | This hard-coded value is used as $@. | test_cipher.rs:38:49:38:80 | ...::from_slice(...) | a key | +| test_cipher.rs:41:29:41:76 | [...] | test_cipher.rs:41:29:41:76 | [...] | test_cipher.rs:42:49:42:79 | ...::from_slice(...) | This hard-coded value is used as $@. | test_cipher.rs:42:49:42:79 | ...::from_slice(...) | a key | +| test_cipher.rs:50:37:50:54 | ...::zeroed(...) | test_cipher.rs:50:37:50:54 | ...::zeroed(...) | test_cipher.rs:51:50:51:82 | ...::from_slice(...) | This hard-coded value is used as $@. | test_cipher.rs:51:50:51:82 | ...::from_slice(...) | a key | +| test_cipher.rs:73:19:73:26 | [0u8; 32] | test_cipher.rs:73:19:73:26 | [0u8; 32] | test_cipher.rs:74:46:74:51 | const2 | This hard-coded value is used as $@. | test_cipher.rs:74:46:74:51 | const2 | a key | +| test_cookie.rs:17:28:17:34 | [0; 64] | test_cookie.rs:17:28:17:34 | [0; 64] | test_cookie.rs:18:26:18:32 | &array1 | This hard-coded value is used as $@. | test_cookie.rs:18:26:18:32 | &array1 | a key | +| test_cookie.rs:21:28:21:34 | [0; 64] | test_cookie.rs:21:28:21:34 | [0; 64] | test_cookie.rs:22:26:22:32 | &array2 | This hard-coded value is used as $@. | test_cookie.rs:22:26:22:32 | &array2 | a key | +| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:42:34:42:39 | array2 | This hard-coded value is used as $@. | test_cookie.rs:42:34:42:39 | array2 | a key | +| test_cookie.rs:49:23:49:25 | 0u8 | test_cookie.rs:49:23:49:25 | 0u8 | test_cookie.rs:53:34:53:39 | array3 | This hard-coded value is used as $@. | test_cookie.rs:53:34:53:39 | array3 | a key | | test_heuristic.rs:38:25:38:30 | 0xFFFF | test_heuristic.rs:38:25:38:30 | 0xFFFF | test_heuristic.rs:81:22:81:31 | MY_CONST_1 | This hard-coded value is used as $@. | test_heuristic.rs:81:22:81:31 | MY_CONST_1 | a salt | | test_heuristic.rs:39:25:39:59 | ... as u64 | test_heuristic.rs:39:25:39:59 | ... as u64 | test_heuristic.rs:82:22:82:31 | MY_CONST_2 | This hard-coded value is used as $@. | test_heuristic.rs:82:22:82:31 | MY_CONST_2 | a salt | | test_heuristic.rs:40:27:40:32 | 0xFFFF | test_heuristic.rs:40:27:40:32 | 0xFFFF | test_heuristic.rs:83:22:83:32 | MY_STATIC_3 | This hard-coded value is used as $@. | test_heuristic.rs:83:22:83:32 | MY_STATIC_3 | a salt | @@ -27,58 +27,54 @@ edges | 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:49:19:79 | ...::from_slice(...) [&ref] | test_cipher.rs:19:49:19:79 | ...::from_slice(...) | provenance | Sink:MaD:3 | | test_cipher.rs:19:73:19:78 | const1 [&ref] | test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref] | provenance | MaD:13 | | 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:42:26:72 | ...::from_slice(...) [&ref] | test_cipher.rs:26:42:26:72 | ...::from_slice(...) | provenance | Sink:MaD:4 | | test_cipher.rs:26:66:26:71 | const4 [&ref] | test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref] | provenance | MaD:13 | | 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:72:30:101 | ...::from_slice(...) [&ref] | test_cipher.rs:30:72:30:101 | ...::from_slice(...) | provenance | Sink:MaD:5 | | test_cipher.rs:30:95:30:100 | const5 [&ref] | test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref] | provenance | MaD:13 | | 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:49:38:80 | ...::from_slice(...) | provenance | Sink:MaD:3 | | test_cipher.rs:38:73:38:79 | &const7 [&ref] | test_cipher.rs:38:49:38:80 | ...::from_slice(...) [&ref] | provenance | MaD:13 | | 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:49:42:79 | ...::from_slice(...) | provenance | Sink:MaD:3 | | test_cipher.rs:42:73:42:78 | const8 [&ref] | test_cipher.rs:42:49:42:79 | ...::from_slice(...) [&ref] | provenance | MaD:13 | | 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: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:50:37:50:54 | ...::zeroed(...) | test_cipher.rs:50:9:50:15 | const10 [element] | provenance | Src:MaD:7 | +| test_cipher.rs:51:50:51:82 | ...::from_slice(...) [&ref, element] | test_cipher.rs:51:50:51:82 | ...::from_slice(...) | provenance | Sink:MaD:3 Sink:MaD:3 | | test_cipher.rs:51:74:51:81 | &const10 [&ref, element] | test_cipher.rs:51:50:51:82 | ...::from_slice(...) [&ref, element] | provenance | MaD:13 | | 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] | test_cipher.rs:74:46:74:51 | const2 [&ref] | provenance | | +| test_cipher.rs:73:9:73:14 | const2 [&ref] | test_cipher.rs:74:46:74:51 | const2 | provenance | Sink:MaD:1 | | 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:26:18:32 | &array1 [&ref] | test_cookie.rs:18:26:18:32 | &array1 | provenance | 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:26:22:32 | &array2 [&ref] | test_cookie.rs:22:26:22:32 | &array2 | provenance | 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:9:38:14 | array2 | test_cookie.rs:42:34:42:39 | array2 | provenance | Sink:MaD:2 | | 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:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:9 | | test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:10 | | test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:11 | | test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:12 | -| 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:9:49:14 | array3 [element] | test_cookie.rs:53:34:53:39 | array3 | provenance | Sink:MaD:2 | | test_cookie.rs:49:23:49:25 | 0u8 | test_cookie.rs:49:23:49:29 | ...::from_elem(...) [element] | provenance | MaD:14 | | 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 | | test_heuristic.rs:38:25:38:30 | 0xFFFF | test_heuristic.rs:81:22:81:31 | MY_CONST_1 | provenance | | | test_heuristic.rs:39:25:39:59 | ... as u64 | test_heuristic.rs:82:22:82:31 | MY_CONST_2 | provenance | | | test_heuristic.rs:39:62:40:33 | static MY_STATIC_3 | test_heuristic.rs:83:22:83:32 | MY_STATIC_3 | provenance | | @@ -109,65 +105,61 @@ nodes | 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:49:19:79 | ...::from_slice(...) | semmle.label | ...::from_slice(...) | | 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(...) | semmle.label | ...::from_slice(...) | | 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:72:30:101 | ...::from_slice(...) | semmle.label | ...::from_slice(...) | | 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:49:38:80 | ...::from_slice(...) | semmle.label | ...::from_slice(...) | | 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 | | test_cipher.rs:41:9:41:14 | const8 [&ref] | semmle.label | const8 [&ref] | | 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:49:42:79 | ...::from_slice(...) | semmle.label | ...::from_slice(...) | | 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:50:37:50:54 | ...::zeroed(...) | semmle.label | ...::zeroed(...) | +| test_cipher.rs:51:50:51:82 | ...::from_slice(...) | semmle.label | ...::from_slice(...) | | 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] | 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] | semmle.label | const2 [&ref] | +| test_cipher.rs:74:46:74:51 | const2 | semmle.label | const2 | | 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 | semmle.label | &array1 | | 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 | semmle.label | &array2 | | 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 | 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] | -| test_cookie.rs:53:14:53:32 | ...::from | semmle.label | ...::from | -| test_cookie.rs:53:34:53:39 | array3 [element] | semmle.label | array3 [element] | +| test_cookie.rs:53:34:53:39 | array3 | semmle.label | array3 | | test_heuristic.rs:38:25:38:30 | 0xFFFF | semmle.label | 0xFFFF | | test_heuristic.rs:39:25:39:59 | ... as u64 | semmle.label | ... as u64 | | test_heuristic.rs:39:62:40:33 | static MY_STATIC_3 | semmle.label | static MY_STATIC_3 | diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected index d3b5456063ff..f825c0ad5985 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected @@ -1,87 +1,70 @@ #select -| deallocation.rs:26:15:26:16 | m1 | deallocation.rs:20:3:20:21 | ...::dealloc | deallocation.rs:26:15:26:16 | m1 | This operation dereferences a pointer that may be $@. | deallocation.rs:20:3:20:21 | ...::dealloc | invalid | -| deallocation.rs:37:14:37:33 | ...::read::<...> | deallocation.rs:20:3:20:21 | ...::dealloc | deallocation.rs:37:14:37:33 | ...::read::<...> | This operation dereferences a pointer that may be $@. | deallocation.rs:20:3:20:21 | ...::dealloc | invalid | -| deallocation.rs:44:6:44:7 | m1 | deallocation.rs:20:3:20:21 | ...::dealloc | deallocation.rs:44:6:44:7 | m1 | This operation dereferences a pointer that may be $@. | deallocation.rs:20:3:20:21 | ...::dealloc | invalid | -| deallocation.rs:49:5:49:25 | ...::write::<...> | deallocation.rs:20:3:20:21 | ...::dealloc | deallocation.rs:49:5:49:25 | ...::write::<...> | This operation dereferences a pointer that may be $@. | deallocation.rs:20:3:20:21 | ...::dealloc | invalid | -| deallocation.rs:76:16:76:17 | m2 | deallocation.rs:70:3:70:21 | ...::dealloc | deallocation.rs:76:16:76:17 | m2 | This operation dereferences a pointer that may be $@. | deallocation.rs:70:3:70:21 | ...::dealloc | invalid | -| deallocation.rs:81:16:81:17 | m2 | deallocation.rs:70:3:70:21 | ...::dealloc | deallocation.rs:81:16:81:17 | m2 | This operation dereferences a pointer that may be $@. | deallocation.rs:70:3:70:21 | ...::dealloc | invalid | -| deallocation.rs:86:7:86:8 | m2 | deallocation.rs:70:3:70:21 | ...::dealloc | deallocation.rs:86:7:86:8 | m2 | This operation dereferences a pointer that may be $@. | deallocation.rs:70:3:70:21 | ...::dealloc | invalid | -| deallocation.rs:90:7:90:8 | m2 | deallocation.rs:70:3:70:21 | ...::dealloc | deallocation.rs:90:7:90:8 | m2 | This operation dereferences a pointer that may be $@. | deallocation.rs:70:3:70:21 | ...::dealloc | invalid | -| deallocation.rs:95:5:95:31 | ...::write::<...> | deallocation.rs:70:3:70:21 | ...::dealloc | deallocation.rs:95:5:95:31 | ...::write::<...> | This operation dereferences a pointer that may be $@. | deallocation.rs:70:3:70:21 | ...::dealloc | invalid | -| deallocation.rs:115:13:115:18 | my_ptr | deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:115:13:115:18 | my_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:112:3:112:12 | ...::free | invalid | -| deallocation.rs:130:14:130:15 | p1 | deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:130:14:130:15 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:123:23:123:40 | ...::dangling | invalid | -| deallocation.rs:131:14:131:15 | p2 | deallocation.rs:124:21:124:42 | ...::dangling_mut | deallocation.rs:131:14:131:15 | p2 | This operation dereferences a pointer that may be $@. | deallocation.rs:124:21:124:42 | ...::dangling_mut | invalid | -| deallocation.rs:132:14:132:15 | p3 | deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:132:14:132:15 | p3 | This operation dereferences a pointer that may be $@. | deallocation.rs:125:23:125:36 | ...::null | invalid | -| deallocation.rs:163:13:163:15 | ptr | deallocation.rs:159:9:159:26 | ...::null_mut | deallocation.rs:163:13:163:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:159:9:159:26 | ...::null_mut | invalid | -| deallocation.rs:166:13:166:15 | ptr | deallocation.rs:159:9:159:26 | ...::null_mut | deallocation.rs:166:13:166:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:159:9:159:26 | ...::null_mut | invalid | -| deallocation.rs:175:13:175:15 | ptr | deallocation.rs:171:9:171:26 | ...::null_mut | deallocation.rs:175:13:175:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:171:9:171:26 | ...::null_mut | invalid | -| deallocation.rs:178:13:178:15 | ptr | deallocation.rs:171:9:171:26 | ...::null_mut | deallocation.rs:178:13:178:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:171:9:171:26 | ...::null_mut | invalid | -| deallocation.rs:186:24:186:26 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:186:24:186:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | -| deallocation.rs:190:24:190:26 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:190:24:190:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | -| deallocation.rs:194:25:194:27 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:194:25:194:27 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | -| deallocation.rs:202:24:202:26 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:202:24:202:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | -| deallocation.rs:202:24:202:26 | ptr | deallocation.rs:199:9:199:26 | ...::null_mut | deallocation.rs:202:24:202:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:199:9:199:26 | ...::null_mut | invalid | -| deallocation.rs:210:7:210:9 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | -| deallocation.rs:210:7:210:9 | ptr | deallocation.rs:199:9:199:26 | ...::null_mut | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:199:9:199:26 | ...::null_mut | invalid | -| deallocation.rs:210:7:210:9 | ptr | deallocation.rs:207:9:207:26 | ...::null_mut | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:207:9:207:26 | ...::null_mut | invalid | -| deallocation.rs:226:13:226:21 | const_ptr | deallocation.rs:219:15:219:32 | ...::null_mut | deallocation.rs:226:13:226:21 | const_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:219:15:219:32 | ...::null_mut | invalid | -| deallocation.rs:274:15:274:16 | p1 | deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:274:15:274:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:270:3:270:25 | ...::drop_in_place | invalid | -| deallocation.rs:342:18:342:20 | ptr | deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:342:18:342:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:336:3:336:25 | ...::drop_in_place | invalid | +| deallocation.rs:26:15:26:16 | m1 | deallocation.rs:20:23:20:24 | m1 | deallocation.rs:26:15:26:16 | m1 | This operation dereferences a pointer that may be $@. | deallocation.rs:20:23:20:24 | m1 | invalid | +| deallocation.rs:37:35:37:36 | m1 | deallocation.rs:20:23:20:24 | m1 | deallocation.rs:37:35:37:36 | m1 | This operation dereferences a pointer that may be $@. | deallocation.rs:20:23:20:24 | m1 | invalid | +| deallocation.rs:44:6:44:7 | m1 | deallocation.rs:20:23:20:24 | m1 | deallocation.rs:44:6:44:7 | m1 | This operation dereferences a pointer that may be $@. | deallocation.rs:20:23:20:24 | m1 | invalid | +| deallocation.rs:49:27:49:28 | m1 | deallocation.rs:20:23:20:24 | m1 | deallocation.rs:49:27:49:28 | m1 | This operation dereferences a pointer that may be $@. | deallocation.rs:20:23:20:24 | m1 | invalid | +| deallocation.rs:76:16:76:17 | m2 | deallocation.rs:70:23:70:35 | m2 as ... | deallocation.rs:76:16:76:17 | m2 | This operation dereferences a pointer that may be $@. | deallocation.rs:70:23:70:35 | m2 as ... | invalid | +| deallocation.rs:81:16:81:17 | m2 | deallocation.rs:70:23:70:35 | m2 as ... | deallocation.rs:81:16:81:17 | m2 | This operation dereferences a pointer that may be $@. | deallocation.rs:70:23:70:35 | m2 as ... | invalid | +| deallocation.rs:86:7:86:8 | m2 | deallocation.rs:70:23:70:35 | m2 as ... | deallocation.rs:86:7:86:8 | m2 | This operation dereferences a pointer that may be $@. | deallocation.rs:70:23:70:35 | m2 as ... | invalid | +| deallocation.rs:90:7:90:8 | m2 | deallocation.rs:70:23:70:35 | m2 as ... | deallocation.rs:90:7:90:8 | m2 | This operation dereferences a pointer that may be $@. | deallocation.rs:70:23:70:35 | m2 as ... | invalid | +| deallocation.rs:95:33:95:34 | m2 | deallocation.rs:70:23:70:35 | m2 as ... | deallocation.rs:95:33:95:34 | m2 | This operation dereferences a pointer that may be $@. | deallocation.rs:70:23:70:35 | m2 as ... | invalid | +| deallocation.rs:115:13:115:18 | my_ptr | deallocation.rs:112:14:112:40 | my_ptr as ... | deallocation.rs:115:13:115:18 | my_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:112:14:112:40 | my_ptr as ... | invalid | +| deallocation.rs:130:14:130:15 | p1 | deallocation.rs:123:23:123:42 | ...::dangling(...) | deallocation.rs:130:14:130:15 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:123:23:123:42 | ...::dangling(...) | invalid | +| deallocation.rs:131:14:131:15 | p2 | deallocation.rs:124:21:124:44 | ...::dangling_mut(...) | deallocation.rs:131:14:131:15 | p2 | This operation dereferences a pointer that may be $@. | deallocation.rs:124:21:124:44 | ...::dangling_mut(...) | invalid | +| deallocation.rs:132:14:132:15 | p3 | deallocation.rs:125:23:125:38 | ...::null(...) | deallocation.rs:132:14:132:15 | p3 | This operation dereferences a pointer that may be $@. | deallocation.rs:125:23:125:38 | ...::null(...) | invalid | +| deallocation.rs:163:13:163:15 | ptr | deallocation.rs:159:9:159:28 | ...::null_mut(...) | deallocation.rs:163:13:163:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:159:9:159:28 | ...::null_mut(...) | invalid | +| deallocation.rs:166:13:166:15 | ptr | deallocation.rs:159:9:159:28 | ...::null_mut(...) | deallocation.rs:166:13:166:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:159:9:159:28 | ...::null_mut(...) | invalid | +| deallocation.rs:175:13:175:15 | ptr | deallocation.rs:171:9:171:28 | ...::null_mut(...) | deallocation.rs:175:13:175:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:171:9:171:28 | ...::null_mut(...) | invalid | +| deallocation.rs:178:13:178:15 | ptr | deallocation.rs:171:9:171:28 | ...::null_mut(...) | deallocation.rs:178:13:178:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:171:9:171:28 | ...::null_mut(...) | invalid | +| deallocation.rs:186:24:186:26 | ptr | deallocation.rs:183:9:183:28 | ...::null_mut(...) | deallocation.rs:186:24:186:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:28 | ...::null_mut(...) | invalid | +| deallocation.rs:190:24:190:26 | ptr | deallocation.rs:183:9:183:28 | ...::null_mut(...) | deallocation.rs:190:24:190:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:28 | ...::null_mut(...) | invalid | +| deallocation.rs:194:25:194:27 | ptr | deallocation.rs:183:9:183:28 | ...::null_mut(...) | deallocation.rs:194:25:194:27 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:28 | ...::null_mut(...) | invalid | +| deallocation.rs:202:24:202:26 | ptr | deallocation.rs:183:9:183:28 | ...::null_mut(...) | deallocation.rs:202:24:202:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:28 | ...::null_mut(...) | invalid | +| deallocation.rs:202:24:202:26 | ptr | deallocation.rs:199:9:199:28 | ...::null_mut(...) | deallocation.rs:202:24:202:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:199:9:199:28 | ...::null_mut(...) | invalid | +| deallocation.rs:210:7:210:9 | ptr | deallocation.rs:183:9:183:28 | ...::null_mut(...) | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:28 | ...::null_mut(...) | invalid | +| deallocation.rs:210:7:210:9 | ptr | deallocation.rs:199:9:199:28 | ...::null_mut(...) | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:199:9:199:28 | ...::null_mut(...) | invalid | +| deallocation.rs:210:7:210:9 | ptr | deallocation.rs:207:9:207:28 | ...::null_mut(...) | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:207:9:207:28 | ...::null_mut(...) | invalid | +| deallocation.rs:226:13:226:21 | const_ptr | deallocation.rs:219:15:219:34 | ...::null_mut(...) | deallocation.rs:226:13:226:21 | const_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:219:15:219:34 | ...::null_mut(...) | invalid | +| deallocation.rs:274:15:274:16 | p1 | deallocation.rs:270:27:270:28 | p1 | deallocation.rs:274:15:274:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:270:27:270:28 | p1 | invalid | +| deallocation.rs:342:18:342:20 | ptr | deallocation.rs:336:27:336:29 | ptr | deallocation.rs:342:18:342:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:336:27:336:29 | ptr | invalid | edges -| deallocation.rs:20:3:20:21 | ...::dealloc | deallocation.rs:20:23:20:24 | [post] m1 | provenance | Src:MaD:3 MaD:3 | -| deallocation.rs:20:23:20:24 | [post] m1 | deallocation.rs:26:15:26:16 | m1 | provenance | | -| deallocation.rs:20:23:20:24 | [post] m1 | deallocation.rs:37:35:37:36 | m1 | provenance | | -| deallocation.rs:20:23:20:24 | [post] m1 | deallocation.rs:44:6:44:7 | m1 | provenance | | -| deallocation.rs:20:23:20:24 | [post] m1 | deallocation.rs:49:27:49:28 | m1 | provenance | | -| deallocation.rs:37:35:37:36 | m1 | deallocation.rs:37:14:37:33 | ...::read::<...> | provenance | MaD:1 Sink:MaD:1 | -| deallocation.rs:49:27:49:28 | m1 | deallocation.rs:49:5:49:25 | ...::write::<...> | provenance | MaD:2 Sink:MaD:2 | -| deallocation.rs:70:3:70:21 | ...::dealloc | deallocation.rs:70:23:70:35 | [post] m2 as ... | provenance | Src:MaD:3 MaD:3 | -| deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:76:16:76:17 | m2 | provenance | | -| deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:81:16:81:17 | m2 | provenance | | -| deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:86:7:86:8 | m2 | provenance | | -| deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:90:7:90:8 | m2 | provenance | | -| deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:95:33:95:34 | m2 | provenance | | -| deallocation.rs:95:33:95:34 | m2 | deallocation.rs:95:5:95:31 | ...::write::<...> | provenance | MaD:2 Sink:MaD:2 | -| deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | provenance | Src:MaD:9 MaD:9 | -| deallocation.rs:112:14:112:40 | [post] my_ptr as ... | deallocation.rs:115:13:115:18 | my_ptr | provenance | | +| deallocation.rs:20:23:20:24 | m1 | deallocation.rs:26:15:26:16 | m1 | provenance | Src:MaD:3 | +| deallocation.rs:20:23:20:24 | m1 | deallocation.rs:37:35:37:36 | m1 | provenance | Src:MaD:3 Sink:MaD:1 | +| deallocation.rs:20:23:20:24 | m1 | deallocation.rs:44:6:44:7 | m1 | provenance | Src:MaD:3 | +| deallocation.rs:20:23:20:24 | m1 | deallocation.rs:49:27:49:28 | m1 | provenance | Src:MaD:3 Sink:MaD:2 | +| deallocation.rs:70:23:70:35 | m2 as ... | deallocation.rs:76:16:76:17 | m2 | provenance | Src:MaD:3 | +| deallocation.rs:70:23:70:35 | m2 as ... | deallocation.rs:81:16:81:17 | m2 | provenance | Src:MaD:3 | +| deallocation.rs:70:23:70:35 | m2 as ... | deallocation.rs:86:7:86:8 | m2 | provenance | Src:MaD:3 | +| deallocation.rs:70:23:70:35 | m2 as ... | deallocation.rs:90:7:90:8 | m2 | provenance | Src:MaD:3 | +| deallocation.rs:70:23:70:35 | m2 as ... | deallocation.rs:95:33:95:34 | m2 | provenance | Src:MaD:3 Sink:MaD:2 | +| deallocation.rs:112:14:112:40 | my_ptr as ... | deallocation.rs:115:13:115:18 | my_ptr | provenance | Src:MaD:9 | | deallocation.rs:123:6:123:7 | p1 | deallocation.rs:130:14:130:15 | p1 | provenance | | -| deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:123:23:123:42 | ...::dangling(...) | provenance | Src:MaD:4 MaD:4 | -| deallocation.rs:123:23:123:42 | ...::dangling(...) | deallocation.rs:123:6:123:7 | p1 | provenance | | +| deallocation.rs:123:23:123:42 | ...::dangling(...) | deallocation.rs:123:6:123:7 | p1 | provenance | Src:MaD:4 | | deallocation.rs:124:6:124:7 | p2 | deallocation.rs:131:14:131:15 | p2 | provenance | | -| deallocation.rs:124:21:124:42 | ...::dangling_mut | deallocation.rs:124:21:124:44 | ...::dangling_mut(...) | provenance | Src:MaD:5 MaD:5 | -| deallocation.rs:124:21:124:44 | ...::dangling_mut(...) | deallocation.rs:124:6:124:7 | p2 | provenance | | +| deallocation.rs:124:21:124:44 | ...::dangling_mut(...) | deallocation.rs:124:6:124:7 | p2 | provenance | Src:MaD:5 | | deallocation.rs:125:6:125:7 | p3 | deallocation.rs:132:14:132:15 | p3 | provenance | | -| deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:125:23:125:38 | ...::null(...) | provenance | Src:MaD:7 MaD:7 | -| deallocation.rs:125:23:125:38 | ...::null(...) | deallocation.rs:125:6:125:7 | p3 | provenance | | +| deallocation.rs:125:23:125:38 | ...::null(...) | deallocation.rs:125:6:125:7 | p3 | provenance | Src:MaD:7 | | deallocation.rs:159:3:159:5 | ptr | deallocation.rs:163:13:163:15 | ptr | provenance | | | deallocation.rs:159:3:159:5 | ptr | deallocation.rs:166:13:166:15 | ptr | provenance | | -| deallocation.rs:159:9:159:26 | ...::null_mut | deallocation.rs:159:9:159:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | -| deallocation.rs:159:9:159:28 | ...::null_mut(...) | deallocation.rs:159:3:159:5 | ptr | provenance | | +| deallocation.rs:159:9:159:28 | ...::null_mut(...) | deallocation.rs:159:3:159:5 | ptr | provenance | Src:MaD:8 | | deallocation.rs:171:3:171:5 | ptr | deallocation.rs:175:13:175:15 | ptr | provenance | | | deallocation.rs:171:3:171:5 | ptr | deallocation.rs:178:13:178:15 | ptr | provenance | | -| deallocation.rs:171:9:171:26 | ...::null_mut | deallocation.rs:171:9:171:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | -| deallocation.rs:171:9:171:28 | ...::null_mut(...) | deallocation.rs:171:3:171:5 | ptr | provenance | | +| deallocation.rs:171:9:171:28 | ...::null_mut(...) | deallocation.rs:171:3:171:5 | ptr | provenance | Src:MaD:8 | | deallocation.rs:183:3:183:5 | ptr | deallocation.rs:186:24:186:26 | ptr | provenance | | | deallocation.rs:183:3:183:5 | ptr | deallocation.rs:190:24:190:26 | ptr | provenance | | | deallocation.rs:183:3:183:5 | ptr | deallocation.rs:194:25:194:27 | ptr | provenance | | | deallocation.rs:183:3:183:5 | ptr | deallocation.rs:202:24:202:26 | ptr | provenance | | | deallocation.rs:183:3:183:5 | ptr | deallocation.rs:210:7:210:9 | ptr | provenance | | -| deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:183:9:183:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | -| deallocation.rs:183:9:183:28 | ...::null_mut(...) | deallocation.rs:183:3:183:5 | ptr | provenance | | +| deallocation.rs:183:9:183:28 | ...::null_mut(...) | deallocation.rs:183:3:183:5 | ptr | provenance | Src:MaD:8 | | deallocation.rs:199:3:199:5 | ptr | deallocation.rs:202:24:202:26 | ptr | provenance | | | deallocation.rs:199:3:199:5 | ptr | deallocation.rs:210:7:210:9 | ptr | provenance | | -| deallocation.rs:199:9:199:26 | ...::null_mut | deallocation.rs:199:9:199:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | -| deallocation.rs:199:9:199:28 | ...::null_mut(...) | deallocation.rs:199:3:199:5 | ptr | provenance | | +| deallocation.rs:199:9:199:28 | ...::null_mut(...) | deallocation.rs:199:3:199:5 | ptr | provenance | Src:MaD:8 | | deallocation.rs:207:3:207:5 | ptr | deallocation.rs:210:7:210:9 | ptr | provenance | | -| deallocation.rs:207:9:207:26 | ...::null_mut | deallocation.rs:207:9:207:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | -| deallocation.rs:207:9:207:28 | ...::null_mut(...) | deallocation.rs:207:3:207:5 | ptr | provenance | | +| deallocation.rs:207:9:207:28 | ...::null_mut(...) | deallocation.rs:207:3:207:5 | ptr | provenance | Src:MaD:8 | | deallocation.rs:219:3:219:11 | const_ptr | deallocation.rs:226:13:226:21 | const_ptr | provenance | | -| deallocation.rs:219:15:219:32 | ...::null_mut | deallocation.rs:219:15:219:34 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | -| deallocation.rs:219:15:219:34 | ...::null_mut(...) | deallocation.rs:219:3:219:11 | const_ptr | provenance | | -| deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:270:27:270:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | -| deallocation.rs:270:27:270:28 | [post] p1 | deallocation.rs:274:15:274:16 | p1 | provenance | | -| deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:336:27:336:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 | -| deallocation.rs:336:27:336:29 | [post] ptr | deallocation.rs:342:18:342:20 | ptr | provenance | | +| deallocation.rs:219:15:219:34 | ...::null_mut(...) | deallocation.rs:219:3:219:11 | const_ptr | provenance | Src:MaD:8 | +| deallocation.rs:270:27:270:28 | p1 | deallocation.rs:274:15:274:16 | p1 | provenance | Src:MaD:6 | +| deallocation.rs:336:27:336:29 | ptr | deallocation.rs:342:18:342:20 | ptr | provenance | Src:MaD:6 | models | 1 | Sink: core::ptr::read; Argument[0]; pointer-access | | 2 | Sink: core::ptr::write; Argument[0]; pointer-access | @@ -93,69 +76,52 @@ models | 8 | Source: core::ptr::null_mut; ReturnValue; pointer-invalidate | | 9 | Source: libc::unix::free; Argument[0]; pointer-invalidate | nodes -| deallocation.rs:20:3:20:21 | ...::dealloc | semmle.label | ...::dealloc | -| deallocation.rs:20:23:20:24 | [post] m1 | semmle.label | [post] m1 | +| deallocation.rs:20:23:20:24 | m1 | semmle.label | m1 | | deallocation.rs:26:15:26:16 | m1 | semmle.label | m1 | -| deallocation.rs:37:14:37:33 | ...::read::<...> | semmle.label | ...::read::<...> | | deallocation.rs:37:35:37:36 | m1 | semmle.label | m1 | | deallocation.rs:44:6:44:7 | m1 | semmle.label | m1 | -| deallocation.rs:49:5:49:25 | ...::write::<...> | semmle.label | ...::write::<...> | | deallocation.rs:49:27:49:28 | m1 | semmle.label | m1 | -| deallocation.rs:70:3:70:21 | ...::dealloc | semmle.label | ...::dealloc | -| deallocation.rs:70:23:70:35 | [post] m2 as ... | semmle.label | [post] m2 as ... | +| deallocation.rs:70:23:70:35 | m2 as ... | semmle.label | m2 as ... | | deallocation.rs:76:16:76:17 | m2 | semmle.label | m2 | | deallocation.rs:81:16:81:17 | m2 | semmle.label | m2 | | deallocation.rs:86:7:86:8 | m2 | semmle.label | m2 | | deallocation.rs:90:7:90:8 | m2 | semmle.label | m2 | -| deallocation.rs:95:5:95:31 | ...::write::<...> | semmle.label | ...::write::<...> | | deallocation.rs:95:33:95:34 | m2 | semmle.label | m2 | -| deallocation.rs:112:3:112:12 | ...::free | semmle.label | ...::free | -| deallocation.rs:112:14:112:40 | [post] my_ptr as ... | semmle.label | [post] my_ptr as ... | +| deallocation.rs:112:14:112:40 | my_ptr as ... | semmle.label | my_ptr as ... | | deallocation.rs:115:13:115:18 | my_ptr | semmle.label | my_ptr | | deallocation.rs:123:6:123:7 | p1 | semmle.label | p1 | -| deallocation.rs:123:23:123:40 | ...::dangling | semmle.label | ...::dangling | | deallocation.rs:123:23:123:42 | ...::dangling(...) | semmle.label | ...::dangling(...) | | deallocation.rs:124:6:124:7 | p2 | semmle.label | p2 | -| deallocation.rs:124:21:124:42 | ...::dangling_mut | semmle.label | ...::dangling_mut | | deallocation.rs:124:21:124:44 | ...::dangling_mut(...) | semmle.label | ...::dangling_mut(...) | | deallocation.rs:125:6:125:7 | p3 | semmle.label | p3 | -| deallocation.rs:125:23:125:36 | ...::null | semmle.label | ...::null | | deallocation.rs:125:23:125:38 | ...::null(...) | semmle.label | ...::null(...) | | deallocation.rs:130:14:130:15 | p1 | semmle.label | p1 | | deallocation.rs:131:14:131:15 | p2 | semmle.label | p2 | | deallocation.rs:132:14:132:15 | p3 | semmle.label | p3 | | deallocation.rs:159:3:159:5 | ptr | semmle.label | ptr | -| deallocation.rs:159:9:159:26 | ...::null_mut | semmle.label | ...::null_mut | | deallocation.rs:159:9:159:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | | deallocation.rs:163:13:163:15 | ptr | semmle.label | ptr | | deallocation.rs:166:13:166:15 | ptr | semmle.label | ptr | | deallocation.rs:171:3:171:5 | ptr | semmle.label | ptr | -| deallocation.rs:171:9:171:26 | ...::null_mut | semmle.label | ...::null_mut | | deallocation.rs:171:9:171:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | | deallocation.rs:175:13:175:15 | ptr | semmle.label | ptr | | deallocation.rs:178:13:178:15 | ptr | semmle.label | ptr | | deallocation.rs:183:3:183:5 | ptr | semmle.label | ptr | -| deallocation.rs:183:9:183:26 | ...::null_mut | semmle.label | ...::null_mut | | deallocation.rs:183:9:183:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | | deallocation.rs:186:24:186:26 | ptr | semmle.label | ptr | | deallocation.rs:190:24:190:26 | ptr | semmle.label | ptr | | deallocation.rs:194:25:194:27 | ptr | semmle.label | ptr | | deallocation.rs:199:3:199:5 | ptr | semmle.label | ptr | -| deallocation.rs:199:9:199:26 | ...::null_mut | semmle.label | ...::null_mut | | deallocation.rs:199:9:199:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | | deallocation.rs:202:24:202:26 | ptr | semmle.label | ptr | | deallocation.rs:207:3:207:5 | ptr | semmle.label | ptr | -| deallocation.rs:207:9:207:26 | ...::null_mut | semmle.label | ...::null_mut | | deallocation.rs:207:9:207:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | | deallocation.rs:210:7:210:9 | ptr | semmle.label | ptr | | deallocation.rs:219:3:219:11 | const_ptr | semmle.label | const_ptr | -| deallocation.rs:219:15:219:32 | ...::null_mut | semmle.label | ...::null_mut | | deallocation.rs:219:15:219:34 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | | deallocation.rs:226:13:226:21 | const_ptr | semmle.label | const_ptr | -| deallocation.rs:270:3:270:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | -| deallocation.rs:270:27:270:28 | [post] p1 | semmle.label | [post] p1 | +| deallocation.rs:270:27:270:28 | p1 | semmle.label | p1 | | deallocation.rs:274:15:274:16 | p1 | semmle.label | p1 | -| deallocation.rs:336:3:336:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | -| deallocation.rs:336:27:336:29 | [post] ptr | semmle.label | [post] ptr | +| deallocation.rs:336:27:336:29 | ptr | semmle.label | ptr | | deallocation.rs:342:18:342:20 | ptr | semmle.label | ptr | subpaths 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 0f931ed3a0f8..0b6342593baa 100644 --- a/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected +++ b/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected @@ -1,11 +1,11 @@ #select -| request_forgery_tests.rs:8:24:8:35 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:24:8:35 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:17:25:17:36 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:17:25:17:36 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:21:25:21:36 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:21:25:21:36 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:25:25:25:36 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:25:25:25:36 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:31:29:31:40 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:29:31:40 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs: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:8:37:8:45 | &user_url | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:37:8:45 | &user_url | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | +| request_forgery_tests.rs:17:38:17:41 | &url | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:17:38:17:41 | &url | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | +| request_forgery_tests.rs:21:38:21:41 | &url | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:21:38:21:41 | &url | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | +| request_forgery_tests.rs:25:38:25:41 | &url | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:25:38:25:41 | &url | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | +| request_forgery_tests.rs:31:42:31:50 | &user_url | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:42:31:50 | &user_url | 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:50:37:58 | &user_url | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:50:37:58 | &user_url | 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:41:68:42 | &a | request_forgery_tests.rs:65:42:73:9 | \|...\| ... | request_forgery_tests.rs:68:41:68:42 | &a | The URL of this request depends on a $@. | request_forgery_tests.rs:65:42:73:9 | \|...\| ... | user-provided value | edges | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:38:8:45 | user_url | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:16:27:16:49 | MacroExpr | provenance | | @@ -13,36 +13,35 @@ edges | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:24:27:24:70 | MacroExpr | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:43:31:50 | user_url | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:51:37:58 | user_url | provenance | | -| request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | request_forgery_tests.rs:8:24:8:35 | ...::get | provenance | MaD:1 Sink:MaD:1 | +| request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | request_forgery_tests.rs:8:37:8:45 | &user_url | provenance | Sink:MaD:1 | | request_forgery_tests.rs:8:38:8:45 | user_url | request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | provenance | | | request_forgery_tests.rs:16:13:16:15 | url | request_forgery_tests.rs:17:39:17:41 | url | provenance | | | request_forgery_tests.rs:16:27:16:49 | ...::format(...) | request_forgery_tests.rs:16:27:16:49 | { ... } | provenance | | | request_forgery_tests.rs:16:27:16:49 | ...::must_use(...) | request_forgery_tests.rs:16:13:16:15 | url | provenance | | | 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:38:17:41 | &url [&ref] | request_forgery_tests.rs:17:38:17:41 | &url | provenance | 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:20:27:20:57 | { ... } | 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: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:38:21:41 | &url [&ref] | request_forgery_tests.rs:21:38:21:41 | &url | provenance | 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:24:27:24:70 | { ... } | 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: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:38:25:41 | &url [&ref] | request_forgery_tests.rs:25:38:25:41 | &url | provenance | Sink:MaD:1 | | request_forgery_tests.rs:25:39:25:41 | url | request_forgery_tests.rs:25:38:25:41 | &url [&ref] | provenance | | -| request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | request_forgery_tests.rs:31:29:31:40 | ...::get | provenance | MaD:1 Sink:MaD:1 | +| request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | request_forgery_tests.rs:31:42:31:50 | &user_url | provenance | Sink:MaD:1 | | request_forgery_tests.rs:31:43:31:50 | user_url | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | provenance | | -| request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | request_forgery_tests.rs:37:37:37:48 | ...::get | provenance | MaD:1 Sink:MaD:1 | +| request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | request_forgery_tests.rs:37:50:37:58 | &user_url | provenance | 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: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: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:65:42:73:9 | \|...\| ... | request_forgery_tests.rs:68:42:68:42 | a | provenance | Src:MaD:2 | +| request_forgery_tests.rs:68:41:68:42 | &a [&ref] | request_forgery_tests.rs:68:41:68:42 | &a | provenance | Sink:MaD:1 | | 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 | @@ -51,7 +50,7 @@ models | 4 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | request_forgery_tests.rs:5:29:5:36 | user_url | semmle.label | user_url | -| request_forgery_tests.rs:8:24:8:35 | ...::get | semmle.label | ...::get | +| request_forgery_tests.rs:8:37:8:45 | &user_url | semmle.label | &user_url | | request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | semmle.label | &user_url [&ref] | | request_forgery_tests.rs:8:38:8:45 | user_url | semmle.label | user_url | | request_forgery_tests.rs:16:13:16:15 | url | semmle.label | url | @@ -59,7 +58,7 @@ nodes | request_forgery_tests.rs:16:27:16:49 | ...::must_use(...) | semmle.label | ...::must_use(...) | | request_forgery_tests.rs:16:27:16:49 | MacroExpr | semmle.label | MacroExpr | | request_forgery_tests.rs:16:27:16:49 | { ... } | semmle.label | { ... } | -| request_forgery_tests.rs:17:25:17:36 | ...::get | semmle.label | ...::get | +| request_forgery_tests.rs:17:38:17:41 | &url | semmle.label | &url | | request_forgery_tests.rs:17:38:17:41 | &url [&ref] | semmle.label | &url [&ref] | | request_forgery_tests.rs:17:39:17:41 | url | semmle.label | url | | request_forgery_tests.rs:20:13:20:15 | url | semmle.label | url | @@ -67,7 +66,7 @@ nodes | request_forgery_tests.rs:20:27:20:57 | ...::must_use(...) | semmle.label | ...::must_use(...) | | request_forgery_tests.rs:20:27:20:57 | MacroExpr | semmle.label | MacroExpr | | request_forgery_tests.rs:20:27:20:57 | { ... } | semmle.label | { ... } | -| request_forgery_tests.rs:21:25:21:36 | ...::get | semmle.label | ...::get | +| request_forgery_tests.rs:21:38:21:41 | &url | semmle.label | &url | | request_forgery_tests.rs:21:38:21:41 | &url [&ref] | semmle.label | &url [&ref] | | request_forgery_tests.rs:21:39:21:41 | url | semmle.label | url | | request_forgery_tests.rs:24:13:24:15 | url | semmle.label | url | @@ -75,18 +74,17 @@ nodes | request_forgery_tests.rs:24:27:24:70 | ...::must_use(...) | semmle.label | ...::must_use(...) | | request_forgery_tests.rs:24:27:24:70 | MacroExpr | semmle.label | MacroExpr | | request_forgery_tests.rs:24:27:24:70 | { ... } | semmle.label | { ... } | -| request_forgery_tests.rs:25:25:25:36 | ...::get | semmle.label | ...::get | +| request_forgery_tests.rs:25:38:25:41 | &url | semmle.label | &url | | request_forgery_tests.rs:25:38:25:41 | &url [&ref] | semmle.label | &url [&ref] | | request_forgery_tests.rs:25:39:25:41 | url | semmle.label | url | -| request_forgery_tests.rs:31:29:31:40 | ...::get | semmle.label | ...::get | +| request_forgery_tests.rs:31:42:31:50 | &user_url | semmle.label | &user_url | | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | semmle.label | &user_url [&ref] | | request_forgery_tests.rs:31:43:31:50 | user_url | semmle.label | user_url | -| request_forgery_tests.rs:37:37:37:48 | ...::get | semmle.label | ...::get | +| request_forgery_tests.rs:37:50:37:58 | &user_url | semmle.label | &user_url | | 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: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:68:28:68:39 | ...::get | semmle.label | ...::get | +| request_forgery_tests.rs:65:42:73:9 | \|...\| ... | semmle.label | \|...\| ... | +| request_forgery_tests.rs:68:41:68:42 | &a | semmle.label | &a | | 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 | subpaths 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 f9abf14de4fc..2610d8d7a39d 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 @@ -62,7 +62,7 @@ mod warp_test { async fn test_warp() { // A route with parameter and `and_then` let map_route = - warp::path::param().and_then(async |a: String| // $ Source=a + warp::path::param().and_then(async |a: String| { let response = reqwest::get(&a).await; // $ Alert[rust/request-forgery]=a @@ -70,7 +70,7 @@ mod warp_test { Ok(resp) => Ok(resp.text().await.unwrap_or_default()), Err(_err) => Err(warp::reject::not_found()), } - }); + }); // $ Source=a } } From b6eff32d16dc573bb68dacf4cdc9fd8d0a3ba932 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 9 Jul 2026 13:59:30 +0200 Subject: [PATCH 122/167] C++: Adapt to FlowSummaryImpl changes --- .../cpp/dataflow/internal/FlowSummaryImpl.qll | 33 ++++++++++++------- .../ir/dataflow/internal/DataFlowNodes.qll | 4 +-- .../ir/dataflow/internal/DataFlowPrivate.qll | 3 +- .../cpp/ir/dataflow/internal/DataFlowUtil.qll | 3 +- .../dataflow/internal/TaintTrackingUtil.qll | 3 +- 5 files changed, 26 insertions(+), 20 deletions(-) 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 66b33b1ed522..dda9218855f8 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll @@ -17,9 +17,11 @@ module Input implements InputSig { class SummarizedCallableBase = Function; - class SourceBase = Void; + class SourceBase extends Void { + Location getLocation() { none() } + } - class SinkBase = Void; + class SinkBase = SourceBase; class FlowSummaryCallBase = CallInstruction; @@ -132,10 +134,22 @@ module Input implements InputSig { private import Make as Impl -private module StepsInput implements Impl::Private::StepsInputSig { - Impl::Private::SummaryNode getSummaryNode(Node n) { - result = n.(FlowSummaryNode).getSummaryNode() +private module Input2 implements Impl::Private::InputSig2 { + private import codeql.util.Void + + class SourceSinkReportingElement extends Void { + Location getLocation() { none() } + + DataFlowCallable getEnclosingCallable() { none() } + + SourceSinkReportingElement getASuccessor(Impl::Private::SummaryComponent sc) { none() } } +} + +private import Impl::Private::Make2 as Impl2 + +private module StepsInput implements Impl2::StepsInputSig { + Impl2::SummaryNode getSummaryNode(Node n) { result = n.(FlowSummaryNode).getSummaryNode() } DataFlowCall getACall(Public::SummarizedCallable sc) { result.getStaticCallTarget().getUnderlyingCallable() = sc @@ -148,12 +162,6 @@ private module StepsInput implements Impl::Private::StepsInputSig { pragma[only_bind_out](out.getIndirectionIndex()) ) } - - 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() } } module SourceSinkInterpretationInput implements @@ -270,8 +278,9 @@ module SourceSinkInterpretationInput implements module Private { import Impl::Private + import Impl2 - module Steps = Impl::Private::Steps; + module Steps = Impl2::Steps; module External { import Impl::Private::External diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowNodes.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowNodes.qll index abcff398420c..27f7497422db 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowNodes.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowNodes.qll @@ -1535,10 +1535,10 @@ class FlowSummaryNode extends Node, TFlowSummaryNode { } override DataFlowCallable getEnclosingCallable() { - result = FlowSummaryImpl::Private::getEnclosingCallable(this.getSummaryNode()) + result = this.getSummaryNode().getEnclosingCallable() } - override Location getLocationImpl() { result = this.getSummarizedCallable().getLocation() } + override Location getLocationImpl() { result = this.getSummaryNode().getLocation() } override string toStringImpl() { result = this.getSummaryNode().toString() } } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll index cdcbaa438d3a..df4901b65fe8 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll @@ -119,8 +119,7 @@ private module Cached { ) or // models-as-data summarized flow - FlowSummaryImpl::Private::Steps::summaryJumpStep(n1.(FlowSummaryNode).getSummaryNode(), - n2.(FlowSummaryNode).getSummaryNode()) + FlowSummaryImpl::Private::Steps::summaryJumpStep(n1, n2) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index 2e3274c82c7c..13d16375f236 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -158,8 +158,7 @@ private module Cached { model = "" or // models-as-data summarized flow - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, - nodeTo.(FlowSummaryNode).getSummaryNode(), true, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true, model) } private predicate simpleInstructionLocalFlowStep(Operand opFrom, Instruction iTo) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll index e4e0adf5897b..84c0a92ec8e6 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll @@ -67,8 +67,7 @@ private module Cached { model = "" or // models-as-data summarized flow - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, - nodeTo.(FlowSummaryNode).getSummaryNode(), false, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, false, model) or // object->field conflation for content that is a `TaintInheritingContent`. exists(DataFlow::ContentSet f | From c89504da27f68e9617f0c0e45e42c78c6efeca17 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 9 Jul 2026 14:03:16 +0200 Subject: [PATCH 123/167] Go: Adapt to FlowSummaryImpl changes --- .../go/dataflow/internal/DataFlowNodes.qll | 2 +- .../go/dataflow/internal/DataFlowPrivate.qll | 3 +- .../go/dataflow/internal/DataFlowUtil.qll | 3 +- .../go/dataflow/internal/FlowSummaryImpl.qll | 39 ++++++++++++------- .../dataflow/internal/TaintTrackingUtil.qll | 3 +- 5 files changed, 30 insertions(+), 20 deletions(-) diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll index 7069cf36bd01..247f535e6fad 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll @@ -82,7 +82,7 @@ module Private { result = this.getSummaryNode().getSummarizedCallable() } - override Location getLocation() { result = this.getSummarizedCallable().getLocation() } + override Location getLocation() { result = this.getSummaryNode().getLocation() } override string toString() { result = this.getSummaryNode().toString() } diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll index 2c5c64ace7d5..e65b2493dd9b 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll @@ -153,8 +153,7 @@ predicate jumpStep(Node n1, Node n2) { n2 = recvRead ) or - FlowSummaryImpl::Private::Steps::summaryJumpStep(n1.(FlowSummaryNode).getSummaryNode(), - n2.(FlowSummaryNode).getSummaryNode()) + FlowSummaryImpl::Private::Steps::summaryJumpStep(n1, n2) } /** diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll index e207a72727f9..98e7d90667e0 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll @@ -141,8 +141,7 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo, string model) { any(FunctionModel m).flowStep(nodeFrom, nodeTo) and model = "FunctionModel" or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, - nodeTo.(FlowSummaryNode).getSummaryNode(), true, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true, model) } /** diff --git a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll index 868066af1e45..cce64ab5c32b 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll @@ -27,14 +27,20 @@ module Input implements InputSig { class SummarizedCallableBase = Callable; - class SourceBase = Void; + class SourceBase extends Void { + Location getLocation() { none() } + } - class SinkBase = Void; + class SinkBase = SourceBase; - class FlowSummaryCallBase = Void; + class FlowSummaryCallBase = SourceBase; predicate callableFromSource(SummarizedCallableBase c) { exists(c.getFuncDef()) } + DataFlowCallable getSummarizedCallableAsDataFlowCallable(SummarizedCallableBase c) { + result.asSummarizedCallable() = c + } + predicate neutralElement( Input::SummarizedCallableBase c, string kind, string provenance, boolean isExact ) { @@ -114,10 +120,22 @@ module Input implements InputSig { private import Make as Impl -private module StepsInput implements Impl::Private::StepsInputSig { - Impl::Private::SummaryNode getSummaryNode(Node n) { - result = n.(FlowSummaryNode).getSummaryNode() +private module Input2 implements Impl::Private::InputSig2 { + private import codeql.util.Void + + class SourceSinkReportingElement extends Void { + Location getLocation() { none() } + + DataFlowCallable getEnclosingCallable() { none() } + + SourceSinkReportingElement getASuccessor(Impl::Private::SummaryComponent sc) { none() } } +} + +private import Impl::Private::Make2 as Impl2 + +private module StepsInput implements Impl2::StepsInputSig { + Impl2::SummaryNode getSummaryNode(Node n) { result = n.(FlowSummaryNode).getSummaryNode() } DataFlowCall getACall(Public::SummarizedCallable sc) { exists(DataFlow::CallNode call | @@ -125,12 +143,6 @@ private module StepsInput implements Impl::Private::StepsInputSig { call.getACalleeIncludingExternals() = sc ) } - - 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() } } module SourceSinkInterpretationInput implements @@ -500,8 +512,9 @@ private predicate parseReturn(AccessPath::AccessPathTokenBase c, int n) { module Private { import Impl::Private + import Impl2 - module Steps = Impl::Private::Steps; + module Steps = Impl2::Steps; module External { import Impl::Private::External diff --git a/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll b/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll index de7a1f743c53..4b04c84fc856 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll @@ -109,8 +109,7 @@ private predicate localAdditionalForwardTaintStep( or any(AdditionalTaintStep a).step(pred, succ) and model = "AdditionalTaintStep" or - FlowSummaryImpl::Private::Steps::summaryLocalStep(pred, - succ.(DataFlowPrivate::FlowSummaryNode).getSummaryNode(), false, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(pred, succ, false, model) } /** From 1b64bbc1c8f4e05fbbb66fa1548a85f2b6bbf37b Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 9 Jul 2026 14:06:12 +0200 Subject: [PATCH 124/167] Ruby: Adapt to FlowSummaryImpl changes --- .../dataflow/internal/DataFlowPrivate.qll | 9 ++-- .../dataflow/internal/FlowSummaryImpl.qll | 47 +++++++++++++------ .../internal/TaintTrackingPrivate.qll | 3 +- 3 files changed, 38 insertions(+), 21 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll index 2203ff8e1054..c4b696532b66 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll @@ -198,7 +198,7 @@ module LocalFlow { FlowSummaryNode nodeFrom, FlowSummaryNode nodeTo, FlowSummaryImpl::Public::SummarizedCallable c, string model ) { - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo.getSummaryNode(), true, model) and + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true, model) and c = nodeFrom.getSummarizedCallable() } @@ -1296,10 +1296,10 @@ class FlowSummaryNode extends NodeImpl, TFlowSummaryNode { override CfgScope getCfgScopeImpl() { none() } override DataFlowCallable getEnclosingCallable() { - result.asLibraryCallable() = this.getSummarizedCallable() + result = this.getSummaryNode().getEnclosingCallable() } - override EmptyLocation getLocationImpl() { any() } + override Location getLocationImpl() { result = this.getSummaryNode().getLocation() } override string toStringImpl() { result = this.getSummaryNode().toString() } } @@ -1778,8 +1778,7 @@ import OutNodes predicate jumpStep(Node pred, Node succ) { succ.asExpr().getExpr().(ConstantReadAccess).getValue() = pred.asExpr().getExpr() or - FlowSummaryImpl::Private::Steps::summaryJumpStep(pred.(FlowSummaryNode).getSummaryNode(), - succ.(FlowSummaryNode).getSummaryNode()) + FlowSummaryImpl::Private::Steps::summaryJumpStep(pred, succ) or any(AdditionalJumpStep s).step(pred, succ) or diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll index d94bba89bf5a..629ad0c284ee 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll @@ -12,16 +12,28 @@ private import DataFlowImplSpecific::Public module Input implements InputSig { private import codeql.util.Void - class SummarizedCallableBase = string; + class SummarizedCallableBase extends string { + bindingset[this] + SummarizedCallableBase() { exists(this) } - class SourceBase = Void; + bindingset[this] + Location getLocation() { result instanceof EmptyLocation } + } + + class SourceBase extends Void { + Location getLocation() { none() } + } - class SinkBase = Void; + class SinkBase = SourceBase; - class FlowSummaryCallBase = Void; + class FlowSummaryCallBase = SourceBase; predicate callableFromSource(SummarizedCallableBase c) { none() } + DataFlowCallable getSummarizedCallableAsDataFlowCallable(SummarizedCallableBase c) { + result.asLibraryCallable() = c + } + ArgumentPosition callbackSelfParameterPosition() { result.isLambdaSelf() } ReturnKind getStandardReturnValueKind() { result instanceof NormalReturnKind } @@ -158,28 +170,35 @@ module Input implements InputSig { private import Make as Impl -private module StepsInput implements Impl::Private::StepsInputSig { - Impl::Private::SummaryNode getSummaryNode(Node n) { - result = n.(FlowSummaryNode).getSummaryNode() +private module Input2 implements Impl::Private::InputSig2 { + private import codeql.util.Void + + class SourceSinkReportingElement extends Void { + Location getLocation() { none() } + + DataFlowCallable getEnclosingCallable() { none() } + + SourceSinkReportingElement getASuccessor(Impl::Private::SummaryComponent sc) { none() } } +} + +private import Impl::Private::Make2 as Impl2 + +private module StepsInput implements Impl2::StepsInputSig { + Impl2::SummaryNode getSummaryNode(Node n) { result = n.(FlowSummaryNode).getSummaryNode() } DataFlowCall getACall(Public::SummarizedCallable sc) { result.asCall().getAstNode() = sc.(LibraryCallable).getACall() or result.asCall().getAstNode() = sc.(LibraryCallable).getACallSimple() } - - 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() } } module Private { import Impl::Private + import Impl2 - module Steps = Impl::Private::Steps; + module Steps = Impl2::Steps; /** * Provides predicates for constructing summary components. diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll index a41f7c924820..c1675cd43d4c 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll @@ -109,8 +109,7 @@ private module Cached { ) and model = "" or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, - nodeTo.(FlowSummaryNode).getSummaryNode(), false, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, false, model) or any(FlowSteps::AdditionalTaintStep s).step(nodeFrom, nodeTo) and model = "AdditionalTaintStep" or From 385f721197d105980670d781a0d951a97abaf323 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 9 Jul 2026 14:09:06 +0200 Subject: [PATCH 125/167] Python: Adapt to FlowSummaryImpl changes --- .../new/internal/DataFlowDispatch.qll | 13 +----- .../dataflow/new/internal/DataFlowPrivate.qll | 6 +-- .../dataflow/new/internal/FlowSummaryImpl.qll | 46 +++++++++++++------ .../new/internal/TaintTrackingPrivate.qll | 3 +- 4 files changed, 37 insertions(+), 31 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll index 23b49882445e..4a1f08315caf 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll @@ -1711,21 +1711,12 @@ class FlowSummaryNode extends Node, TFlowSummaryNode { } override DataFlowCallable getEnclosingCallable() { - result.asLibraryCallable() = this.getSummarizedCallable() + result = this.getSummaryNode().getEnclosingCallable() } override string toString() { result = this.getSummaryNode().toString() } - // Hack to return "empty location" - deprecated override predicate hasLocationInfo( - string file, int startline, int startcolumn, int endline, int endcolumn - ) { - file = "" and - startline = 0 and - startcolumn = 0 and - endline = 0 and - endcolumn = 0 - } + override Location getLocation() { result = this.getSummaryNode().getLocation() } } private class SummaryReturnNode extends FlowSummaryNode, ReturnNode { 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 01b9f04c01c4..c8a90b1cc598 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -529,8 +529,7 @@ predicate simpleLocalFlowStepForTypetracking(Node nodeFrom, Node nodeTo) { } private predicate summaryLocalStep(Node nodeFrom, Node nodeTo, string model) { - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, - nodeTo.(FlowSummaryNode).getSummaryNode(), true, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true, model) } predicate variableCaptureLocalFlowStep(Node nodeFrom, Node nodeTo) { @@ -697,8 +696,7 @@ predicate jumpStep(Node nodeFrom, Node nodeTo) { or jumpStepNotSharedWithTypeTracker(nodeFrom, nodeTo) or - FlowSummaryImpl::Private::Steps::summaryJumpStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), - nodeTo.(FlowSummaryNode).getSummaryNode()) + FlowSummaryImpl::Private::Steps::summaryJumpStep(nodeFrom, nodeTo) } /** 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 22c2f75944a0..ca943351f833 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll @@ -14,16 +14,27 @@ private import DataFlowImplSpecific::Public module Input implements InputSig { private import codeql.util.Void - class SummarizedCallableBase = string; + class SummarizedCallableBase extends string { + bindingset[this] + SummarizedCallableBase() { exists(this) } - class SourceBase = Void; + Location getLocation() { none() } + } + + class SourceBase extends Void { + Location getLocation() { none() } + } - class SinkBase = Void; + class SinkBase = SourceBase; - class FlowSummaryCallBase = Void; + class FlowSummaryCallBase = SourceBase; predicate callableFromSource(SummarizedCallableBase c) { none() } + DataFlowCallable getSummarizedCallableAsDataFlowCallable(SummarizedCallableBase c) { + result.asLibraryCallable() = c + } + ArgumentPosition callbackSelfParameterPosition() { result.isLambdaSelf() } ReturnKind getStandardReturnValueKind() { any() } @@ -112,10 +123,22 @@ module Input implements InputSig private import Make as Impl -private module StepsInput implements Impl::Private::StepsInputSig { - Impl::Private::SummaryNode getSummaryNode(Node n) { - result = n.(FlowSummaryNode).getSummaryNode() +private module Input2 implements Impl::Private::InputSig2 { + private import codeql.util.Void + + class SourceSinkReportingElement extends Void { + Location getLocation() { none() } + + DataFlowCallable getEnclosingCallable() { none() } + + SourceSinkReportingElement getASuccessor(Impl::Private::SummaryComponent sc) { none() } } +} + +private import Impl::Private::Make2 as Impl2 + +private module StepsInput implements Impl2::StepsInputSig { + Impl2::SummaryNode getSummaryNode(Node n) { result = n.(FlowSummaryNode).getSummaryNode() } overlay[global] DataFlowCall getACall(Public::SummarizedCallable sc) { @@ -125,18 +148,13 @@ private module StepsInput implements Impl::Private::StepsInputSig { sc.(LibraryCallable).getACallSimple().asCfgNode() ]) } - - 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() } } module Private { import Impl::Private + import Impl2 - module Steps = Impl::Private::Steps; + module Steps = Impl2::Steps; /** * Provides predicates for constructing summary components. diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll index 50a6be72d9b5..b7285a1b3871 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll @@ -80,8 +80,7 @@ private module Cached { ) and model = "" or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, - nodeTo.(DataFlowPrivate::FlowSummaryNode).getSummaryNode(), false, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, false, model) } } From 0abb0388048f56892c5284f70b62e164261ac041 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 9 Jul 2026 14:12:38 +0200 Subject: [PATCH 126/167] C#: Adapt to FlowSummaryImpl changes --- .../dataflow/internal/DataFlowPrivate.qll | 10 ++-- .../dataflow/internal/FlowSummaryImpl.qll | 51 +++++++++++-------- .../internal/TaintTrackingPrivate.qll | 3 +- 3 files changed, 35 insertions(+), 29 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index d12c65c9fffd..d114101a7a38 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -714,8 +714,7 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo, string model) { ) and model = "" or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, - nodeTo.(FlowSummaryNode).getSummaryNode(), true, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true, model) } /** @@ -1778,7 +1777,7 @@ class FlowSummaryNode extends NodeImpl, TFlowSummaryNode { } override DataFlowCallable getEnclosingCallableImpl() { - result.asSummarizedCallable() = this.getSummarizedCallable() + result = this.getSummaryNode().getEnclosingCallable() } override DataFlowType getDataFlowType() { @@ -1789,7 +1788,7 @@ class FlowSummaryNode extends NodeImpl, TFlowSummaryNode { override ControlFlowNode getControlFlowNodeImpl() { none() } - override Location getLocationImpl() { result = this.getSummarizedCallable().getLocation() } + override Location getLocationImpl() { result = this.getSummaryNode().getLocation() } override string toStringImpl() { result = this.getSummaryNode().toString() } } @@ -2085,8 +2084,7 @@ predicate jumpStep(Node pred, Node succ) { ) ) or - FlowSummaryImpl::Private::Steps::summaryJumpStep(pred.(FlowSummaryNode).getSummaryNode(), - succ.(FlowSummaryNode).getSummaryNode()) + FlowSummaryImpl::Private::Steps::summaryJumpStep(pred, succ) or succ = pred.(LocalFunctionCreationNode).getAnAccess(false) } 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 f936a206e2b1..816b31580daf 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll @@ -30,11 +30,17 @@ module Input implements InputSig ) } - class SourceBase = Void; + class SourceBase extends Void { + Location getLocation() { none() } + } + + class SinkBase = SourceBase; - class SinkBase = Void; + class FlowSummaryCallBase = SourceBase; - class FlowSummaryCallBase = Void; + DataFlowCallable getSummarizedCallableAsDataFlowCallable(SummarizedCallableBase c) { + result.asSummarizedCallable() = c + } predicate neutralElement(SummarizedCallableBase c, string kind, string provenance, boolean isExact) { interpretNeutral(c, kind, provenance, isExact) @@ -122,7 +128,21 @@ module Input implements InputSig private import Make as Impl -private module TypesInput implements Impl::Private::TypesInputSig { +private module Input2 implements Impl::Private::InputSig2 { + private import codeql.util.Void + + class SourceSinkReportingElement extends Void { + Location getLocation() { none() } + + DataFlowCallable getEnclosingCallable() { none() } + + SourceSinkReportingElement getASuccessor(Impl::Private::SummaryComponent sc) { none() } + } +} + +private import Impl::Private::Make2 as Impl2 + +private module TypesInput implements Impl2::TypesInputSig { DataFlowType getSyntheticGlobalType(Impl::Private::SyntheticGlobal sg) { exists(sg) and result.asGvnType() = Gvn::getGlobalValueNumber(any(ObjectType t)) @@ -195,27 +215,15 @@ private module TypesInput implements Impl::Private::TypesInputSig { ) } - DataFlowType getSourceType(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { - none() - } - - DataFlowType getSinkType(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { none() } + DataFlowType getSourceSinkType(Input2::SourceSinkReportingElement e) { none() } } -private module StepsInput implements Impl::Private::StepsInputSig { - Impl::Private::SummaryNode getSummaryNode(Node n) { - result = n.(FlowSummaryNode).getSummaryNode() - } +private module StepsInput implements Impl2::StepsInputSig { + Impl2::SummaryNode getSummaryNode(Node n) { result = n.(FlowSummaryNode).getSummaryNode() } DataFlowCall getACall(Public::SummarizedCallable sc) { sc = viableCallable(result).asSummarizedCallable() } - - 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() } } module SourceSinkInterpretationInput implements @@ -339,9 +347,10 @@ module SourceSinkInterpretationInput implements module Private { import Impl::Private - import Impl::Private::Types + import Impl2 + import Types - module Steps = Impl::Private::Steps; + module Steps = Impl2::Steps; module External { import Impl::Private::External diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll index e51eaf4bbcb4..2c90aa678050 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll @@ -171,8 +171,7 @@ private module Cached { ) and model = "" or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, - nodeTo.(FlowSummaryNode).getSummaryNode(), false, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, false, model) } } From c37ef2427ad016efefb1ac6ffa8785991dfa3104 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 9 Jul 2026 14:15:32 +0200 Subject: [PATCH 127/167] Swift: Adapt to FlowSummaryImpl changes --- .../dataflow/internal/DataFlowPrivate.qll | 10 ++--- .../dataflow/internal/FlowSummaryImpl.qll | 37 +++++++++++++------ .../internal/TaintTrackingPrivate.qll | 3 +- 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPrivate.qll b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPrivate.qll index 135924c0eb72..715743b5fe93 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPrivate.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPrivate.qll @@ -305,8 +305,7 @@ private module Cached { model = "" or // flow through a flow summary (extension of `SummaryModelCsv`) - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, - nodeTo.(FlowSummaryNode).getSummaryNode(), true, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true, model) } /** @@ -497,10 +496,10 @@ class FlowSummaryNode extends NodeImpl, TFlowSummaryNode { } override DataFlowCallable getEnclosingCallable() { - result.asSummarizedCallable() = this.getSummarizedCallable() + result = this.getSummaryNode().getEnclosingCallable() } - override Location getLocationImpl() { result = this.getSummarizedCallable().getLocation() } + override Location getLocationImpl() { result = this.getSummaryNode().getLocation() } override string toStringImpl() { result = this.getSummaryNode().toString() } } @@ -1014,8 +1013,7 @@ predicate captureValueStep(Node node1, Node node2) { predicate jumpStep(Node pred, Node succ) { // models-as-data summarized flow - FlowSummaryImpl::Private::Steps::summaryJumpStep(pred.(FlowSummaryNode).getSummaryNode(), - succ.(FlowSummaryNode).getSummaryNode()) + FlowSummaryImpl::Private::Steps::summaryJumpStep(pred, succ) } predicate storeStep(Node node1, ContentSet c, Node node2) { diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll b/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll index 6ca8e12ef6b6..4c83edf66823 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll @@ -16,14 +16,20 @@ module Input implements InputSig class SummarizedCallableBase = Function; - class SourceBase = Void; + class SourceBase extends Void { + Location getLocation() { none() } + } - class SinkBase = Void; + class SinkBase = SourceBase; - class FlowSummaryCallBase = Void; + class FlowSummaryCallBase = SourceBase; predicate callableFromSource(SummarizedCallableBase c) { c.hasBody() } + DataFlowCallable getSummarizedCallableAsDataFlowCallable(SummarizedCallableBase c) { + result.asSummarizedCallable() = c + } + ArgumentPosition callbackSelfParameterPosition() { result instanceof ThisArgumentPosition } ReturnKind getStandardReturnValueKind() { result instanceof NormalReturnKind } @@ -114,18 +120,24 @@ module Input implements InputSig private import Make as Impl -private module StepsInput implements Impl::Private::StepsInputSig { - Impl::Private::SummaryNode getSummaryNode(Node n) { - result = n.(FlowSummaryNode).getSummaryNode() - } +private module Input2 implements Impl::Private::InputSig2 { + private import codeql.util.Void - DataFlowCall getACall(Public::SummarizedCallable sc) { result.asCall().getStaticTarget() = sc } + class SourceSinkReportingElement extends Void { + Location getLocation() { none() } - DataFlowCallable getSourceNodeEnclosingCallable(Input::SourceBase source) { none() } + DataFlowCallable getEnclosingCallable() { none() } - Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { none() } + SourceSinkReportingElement getASuccessor(Impl::Private::SummaryComponent sc) { none() } + } +} + +private import Impl::Private::Make2 as Impl2 - Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { none() } +private module StepsInput implements Impl2::StepsInputSig { + Impl2::SummaryNode getSummaryNode(Node n) { result = n.(FlowSummaryNode).getSummaryNode() } + + DataFlowCall getACall(Public::SummarizedCallable sc) { result.asCall().getStaticTarget() = sc } } module SourceSinkInterpretationInput implements @@ -252,8 +264,9 @@ module SourceSinkInterpretationInput implements module Private { import Impl::Private + import Impl2 - module Steps = Impl::Private::Steps; + module Steps = Impl2::Steps; module External { import Impl::Private::External diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingPrivate.qll b/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingPrivate.qll index 6960dcf6177f..ace77e4584b5 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingPrivate.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingPrivate.qll @@ -76,8 +76,7 @@ private module Cached { model = "" or // flow through a flow summary (extension of `SummaryModelCsv`) - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, - nodeTo.(FlowSummaryNode).getSummaryNode(), false, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, false, model) or any(AdditionalTaintStep a).step(nodeFrom, nodeTo) and model = "AdditionalTaintStep" } From b1c5b5b3af0479ead50a8a61eef7772ef24c2420 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 9 Jul 2026 14:18:31 +0200 Subject: [PATCH 128/167] Java: Adapt to FlowSummaryImpl changes --- .../java/dataflow/internal/DataFlowNodes.qll | 4 +- .../dataflow/internal/DataFlowPrivate.qll | 3 +- .../java/dataflow/internal/DataFlowUtil.qll | 3 +- .../dataflow/internal/FlowSummaryImpl.qll | 51 +++++++++++-------- .../dataflow/internal/TaintTrackingUtil.qll | 3 +- .../localAdditionalTaintStep.ql | 2 +- 6 files changed, 36 insertions(+), 30 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll index 8957442b39ac..5a0df6a222c6 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll @@ -439,7 +439,7 @@ module Private { result.asCallable() = n.(ImplicitInstanceAccess).getInstanceAccess().getEnclosingCallable() or result.asCallable() = n.(MallocNode).getClassInstanceExpr().getEnclosingCallable() or result = nodeGetEnclosingCallable(n.(ImplicitPostUpdateNode).getPreUpdateNode()) or - result.asSummarizedCallable() = n.(FlowSummaryNode).getSummarizedCallable() or + result = n.(FlowSummaryNode).getSummaryNode().getEnclosingCallable() or result.asCallable() = n.(CaptureNode).getSynthesizedCaptureNode().getEnclosingCallable() or result.asFieldScope() = n.(FieldValueNode).getField() or result.asCallable() = any(Expr e | n.(AdditionalNode).nodeAt(e, _)).getEnclosingCallable() or @@ -531,7 +531,7 @@ module Private { result = this.getSummaryNode().getSummarizedCallable() } - override Location getLocation() { result = this.getSummarizedCallable().getLocation() } + override Location getLocation() { result = this.getSummaryNode().getLocation() } override string toString() { result = this.getSummaryNode().toString() } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll index 3dcdc1887614..e727e698e5fa 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll @@ -199,8 +199,7 @@ predicate jumpStep(Node node1, Node node2) { any(AdditionalValueStep a).step(node1, node2) and node1.getEnclosingCallable() != node2.getEnclosingCallable() or - FlowSummaryImpl::Private::Steps::summaryJumpStep(node1.(FlowSummaryNode).getSummaryNode(), - node2.(FlowSummaryNode).getSummaryNode()) + FlowSummaryImpl::Private::Steps::summaryJumpStep(node1, node2) } /** 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 e1df870da7eb..4dea36c40b81 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll @@ -247,8 +247,7 @@ private predicate simpleLocalFlowStep0(Node node1, Node node2, string model) { or cloneStep(node1, node2) and model = "CloneStep" or - FlowSummaryImpl::Private::Steps::summaryLocalStep(node1, node2.(FlowSummaryNode).getSummaryNode(), - true, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(node1, node2, true, model) } /** 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 5ff113db730e..20d26c67baac 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll @@ -37,11 +37,17 @@ module Input implements InputSig { sc.asCallable() = any(Callable c | c.fromSource() and not c.isStub()) } - class SourceBase = Void; + class SourceBase extends Void { + Location getLocation() { none() } + } + + class SinkBase = SourceBase; - class SinkBase = Void; + class FlowSummaryCallBase = SourceBase; - class FlowSummaryCallBase = Void; + DataFlowCallable getSummarizedCallableAsDataFlowCallable(SummarizedCallableBase c) { + result.asSummarizedCallable() = c + } predicate neutralElement( Input::SummarizedCallableBase c, string kind, string provenance, boolean isExact @@ -110,7 +116,21 @@ module Input implements InputSig { private import Make as Impl -private module TypesInput implements Impl::Private::TypesInputSig { +private module Input2 implements Impl::Private::InputSig2 { + private import codeql.util.Void + + class SourceSinkReportingElement extends Void { + Location getLocation() { none() } + + DataFlowCallable getEnclosingCallable() { none() } + + SourceSinkReportingElement getASuccessor(Impl::Private::SummaryComponent sc) { none() } + } +} + +private import Impl::Private::Make2 as Impl2 + +private module TypesInput implements Impl2::TypesInputSig { DataFlowType getSyntheticGlobalType(Impl::Private::SyntheticGlobal sg) { exists(sg) and result instanceof TypeObject @@ -138,27 +158,15 @@ private module TypesInput implements Impl::Private::TypesInputSig { exists(rk) } - DataFlowType getSourceType(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { - none() - } - - DataFlowType getSinkType(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { none() } + DataFlowType getSourceSinkType(Input2::SourceSinkReportingElement e) { none() } } -private module StepsInput implements Impl::Private::StepsInputSig { - Impl::Private::SummaryNode getSummaryNode(Node n) { - result = n.(FlowSummaryNode).getSummaryNode() - } +private module StepsInput implements Impl2::StepsInputSig { + Impl2::SummaryNode getSummaryNode(Node n) { result = n.(FlowSummaryNode).getSummaryNode() } DataFlowCall getACall(Public::SummarizedCallable sc) { sc = viableCallable(result).asSummarizedCallable() } - - 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() } } private predicate relatedArgSpec(Callable c, string spec) { @@ -372,9 +380,10 @@ module SourceSinkInterpretationInput implements module Private { import Impl::Private - import Impl::Private::Types + import Impl2 + import Types - module Steps = Impl::Private::Steps; + module Steps = Impl2::Steps; module External { import Impl::Private::External diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll index dc6b075aed31..7cf0c3d536b3 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll @@ -145,8 +145,7 @@ private module Cached { ) ) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(src, - sink.(DataFlowPrivate::FlowSummaryNode).getSummaryNode(), false, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(src, sink, false, model) } /** diff --git a/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql b/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql index ce43c1a216aa..dc1aa584a890 100644 --- a/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql +++ b/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql @@ -13,7 +13,7 @@ predicate taintFlowUpdate(DataFlow::ParameterNode p1, DataFlow::ParameterNode p2 } predicate summaryStep(FlowSummaryNode src, FlowSummaryNode sink) { - FlowSummaryImpl::Private::Steps::summaryLocalStep(src, sink.getSummaryNode(), false, _) or + FlowSummaryImpl::Private::Steps::summaryLocalStep(src, sink, false, _) or FlowSummaryImpl::Private::Steps::summaryReadStep(src.getSummaryNode(), _, sink.getSummaryNode()) or FlowSummaryImpl::Private::Steps::summaryStoreStep(src.getSummaryNode(), _, sink.getSummaryNode()) } From 8614e9706522f0db4cec3728fd64f6fb40b049f0 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 9 Jul 2026 14:35:26 +0200 Subject: [PATCH 129/167] JS: Adapt to FlowSummaryImpl changes --- .../dataflow/internal/DataFlowPrivate.qll | 10 ++--- .../dataflow/internal/FlowSummaryPrivate.qll | 44 +++++++++++++------ .../internal/TaintTrackingPrivate.qll | 3 +- .../internal/sharedlib/DataFlowArg.qll | 2 - .../internal/sharedlib/FlowSummaryImpl.qll | 11 ++++- 5 files changed, 47 insertions(+), 23 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll index 922dd5acc869..1c3eb1dc9e31 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll @@ -65,6 +65,8 @@ class FlowSummaryNode extends DataFlow::Node, TFlowSummaryNode { cached override string toString() { result = this.getSummaryNode().toString() } + + override Location getLocation() { result = this.getSummaryNode().getLocation() } } class FlowSummaryDynamicParameterArrayNode extends DataFlow::Node, @@ -541,7 +543,7 @@ predicate isArgumentNode(ArgumentNode n, DataFlowCall call, ArgumentPosition pos DataFlowCallable nodeGetEnclosingCallable(Node node) { result.asSourceCallable() = node.getContainer() or - result.asLibraryCallable() = node.(FlowSummaryNode).getSummarizedCallable() + result = node.(FlowSummaryNode).getSummaryNode().getEnclosingCallable() or result.asLibraryCallable() = node.(FlowSummaryDynamicParameterArrayNode).getSummarizedCallable() or @@ -1212,8 +1214,7 @@ private predicate valuePreservingStep(Node node1, Node node2) { or node2 = FlowSteps::getThrowTarget(node1) or - FlowSummaryPrivate::Steps::summaryLocalStep(node1, node2.(FlowSummaryNode).getSummaryNode(), true, - _) // TODO: preserve 'model' + FlowSummaryPrivate::Steps::summaryLocalStep(node1, node2, true, _) // TODO: preserve 'model' } predicate knownSourceModel(Node sink, string model) { none() } @@ -1365,8 +1366,7 @@ predicate jumpStep(Node node1, Node node2) { node1.getContainer() != node2.getContainer() and not excludedJumpStep(node1, node2) or - FlowSummaryPrivate::Steps::summaryJumpStep(node1.(FlowSummaryNode).getSummaryNode(), - node2.(FlowSummaryNode).getSummaryNode()) + FlowSummaryPrivate::Steps::summaryJumpStep(node1, node2) or DataFlow::AdditionalFlowStep::jumpStep(node1, node2) } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll index a7519f4180b4..ba0d84d2a6bf 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll @@ -12,18 +12,28 @@ private import sharedlib.FlowSummaryImpl::Private as Private private import sharedlib.FlowSummaryImpl::Public private import codeql.dataflow.internal.AccessPathSyntax as AccessPathSyntax private import semmle.javascript.internal.flow_summaries.ExceptionFlow +private import codeql.util.Void /** * A class of callables that are candidates for flow summary modeling. */ -class SummarizedCallableBase = string; +class SummarizedCallableBase extends string { + bindingset[this] + SummarizedCallableBase() { exists(this) } -class SourceBase extends Unit { - SourceBase() { none() } + Location getLocation() { none() } } -class SinkBase extends Unit { - SinkBase() { none() } +class SourceBase extends Void { + Location getLocation() { none() } +} + +class SinkBase = SourceBase; + +class FlowSummaryCallBase = SourceBase; + +DataFlowCallable getSummarizedCallableAsDataFlowCallable(SummarizedCallableBase c) { + result.asLibraryCallable() = c } /** Gets the parameter position representing a callback itself, if any. */ @@ -141,8 +151,22 @@ string encodeArgumentPosition(ArgumentPosition pos) { /** Gets the return kind corresponding to specification `"ReturnValue"`. */ ReturnKind getStandardReturnValueKind() { result = MkNormalReturnKind() and Stage::ref() } -private module FlowSummaryStepInput implements Private::StepsInputSig { - Private::SummaryNode getSummaryNode(DataFlow::Node n) { +private module Input2 implements Private::InputSig2 { + private import codeql.util.Void + + class SourceSinkReportingElement extends Void { + Location getLocation() { none() } + + DataFlowCallable getEnclosingCallable() { none() } + + SourceSinkReportingElement getASuccessor(Private::SummaryComponent sc) { none() } + } +} + +import Private::Make2 as Impl2 + +private module FlowSummaryStepInput implements Impl2::StepsInputSig { + Impl2::SummaryNode getSummaryNode(DataFlow::Node n) { result = n.(FlowSummaryNode).getSummaryNode() } @@ -156,12 +180,6 @@ private module FlowSummaryStepInput implements Private::StepsInputSig { ] ) } - - DataFlowCallable getSourceNodeEnclosingCallable(SourceBase source) { none() } - - DataFlow::Node getSourceNode(SourceBase source, Private::SummaryComponentStack s) { none() } - - DataFlow::Node getSinkNode(SinkBase sink, Private::SummaryComponent sc) { none() } } module Steps = Private::Steps; diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/TaintTrackingPrivate.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/TaintTrackingPrivate.qll index e7b3a6e5658a..61678d6fbdab 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/TaintTrackingPrivate.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/TaintTrackingPrivate.qll @@ -12,8 +12,7 @@ cached predicate defaultAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { TaintTracking::AdditionalTaintStep::step(node1, node2) or - FlowSummaryPrivate::Steps::summaryLocalStep(node1, node2.(FlowSummaryNode).getSummaryNode(), - false, _) // TODO: preserve 'model' parameter + FlowSummaryPrivate::Steps::summaryLocalStep(node1, node2, false, _) // TODO: preserve 'model' parameter or // Convert steps out of array elements to plain taint steps FlowSummaryPrivate::Steps::summaryReadStep(node1.(FlowSummaryNode).getSummaryNode(), diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/DataFlowArg.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/DataFlowArg.qll index 0f0966cb27c9..494a216696d5 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/DataFlowArg.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/DataFlowArg.qll @@ -29,8 +29,6 @@ module JSFlowSummary implements FlowSummaryImpl::InputSig private import semmle.javascript.dataflow.internal.FlowSummaryPrivate as FlowSummaryPrivate import FlowSummaryPrivate - class FlowSummaryCallBase = Void; - overlay[local] predicate callableFromSource(SummarizedCallableBase c) { none() } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/FlowSummaryImpl.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/FlowSummaryImpl.qll index bf370eb9a271..93245cdf9088 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/FlowSummaryImpl.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/FlowSummaryImpl.qll @@ -1,4 +1,13 @@ private import semmle.javascript.Locations private import codeql.dataflow.internal.FlowSummaryImpl private import DataFlowArg -import Make +private import semmle.javascript.dataflow.internal.FlowSummaryPrivate as Priv + +private module Impl = Make; + +module Private { + import Impl::Private + import Priv::Impl2 +} + +module Public = Impl::Public; From 2418e606aeedc1966fbd2e76a90eb2de738da765 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 5 Aug 2026 14:29:08 +0200 Subject: [PATCH 130/167] Rust: Add change note --- .../2026-08-05-data-flow-alert-locations.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 rust/ql/lib/change-notes/2026-08-05-data-flow-alert-locations.md diff --git a/rust/ql/lib/change-notes/2026-08-05-data-flow-alert-locations.md b/rust/ql/lib/change-notes/2026-08-05-data-flow-alert-locations.md new file mode 100644 index 000000000000..d5691b49750b --- /dev/null +++ b/rust/ql/lib/change-notes/2026-08-05-data-flow-alert-locations.md @@ -0,0 +1,12 @@ +--- +category: majorAnalysis +--- +* The alert locations for data flow queries have been improved. The new locations are more precise and are based on the actual source and sink nodes. Example: +```rust +let _ = conn.query( +// ^^^^ old alert location + unsafe_query.as_str(), +// ^^^^^^^^^^^^^^^^^^^^^ new alert location +)?; +``` +This means that some alerts will have their locations changed, and hence appear as new alerts (while the old alerts will disappear). \ No newline at end of file From 163e3ca8b0a12784e2a5da8f3114d66b10a129a7 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 10 Aug 2026 09:35:09 +0200 Subject: [PATCH 131/167] FlowSummaryImpl: Fix CP --- .../dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll index 48ce4f30ca3e..05e3bb96d7b5 100644 --- a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll @@ -2218,9 +2218,11 @@ module Make< ) ) or - exists(SourceElement source, SourceSinkReportingElement e | - n.(SourceOutputNode).isExit(source, _, e, _) and - result = getSourceSinkType(e) + exists(SourceElement source | + exists(SourceSinkReportingElement e | + n.(SourceOutputNode).isExit(source, _, e, _) and + result = getSourceSinkType(e) + ) or exists(SummaryComponentStack s, ContentSet cont | n = sourceElementOutputState(source, _, s) and From 4fda454c60e9171d1f967dfda8d74cc90d7f45ab Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 13 Aug 2026 21:11:04 +0200 Subject: [PATCH 132/167] Address review comments --- .../dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll index 05e3bb96d7b5..32273b92507f 100644 --- a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll @@ -1897,7 +1897,7 @@ module Make< not this.isExit(_, _) and ( exists(SummaryComponentStack stack | - state_.isSourceOutputState(_, stack, _, _) and + state_.isSinkInputState(_, stack, _, _) and stack.head() instanceof TContentSummaryComponent ) or @@ -2412,10 +2412,10 @@ module Make< ) ) or - sourceExitStep(StepsInput::getSummaryNode(pred), succ, false) - or - sinkEntryStep(pred, StepsInput::getSummaryNode(succ), false) + sourceExitStep(predSummary, succ, false) ) + or + sinkEntryStep(pred, StepsInput::getSummaryNode(succ), false) } /** From 5c0b66f673af3cb1fcb953aa56b807af9ecd42b3 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 13 Aug 2026 21:32:30 +0200 Subject: [PATCH 133/167] Rust: Update expected test output following bug fix --- .../dataflow/models/models.expected | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/models/models.expected b/rust/ql/test/library-tests/dataflow/models/models.expected index c4fabc6cc1e5..75e57a39edd7 100644 --- a/rust/ql/test/library-tests/dataflow/models/models.expected +++ b/rust/ql/test/library-tests/dataflow/models/models.expected @@ -299,10 +299,8 @@ edges | main.rs:351:39:351:53 | ...::Some(...) [Some] | main.rs:351:13:351:55 | ...::E {...} [E, Some] | provenance | | | main.rs:351:52:351:52 | s | main.rs:351:39:351:53 | ...::Some(...) [Some] | provenance | | | main.rs:351:52:351:52 | s | main.rs:351:39:351:53 | ...::Some(...) [Some] | provenance | | -| main.rs:353:26:353:26 | b [E, Some] | main.rs:353:26:353:26 | b [Some] | provenance | | -| main.rs:353:26:353:26 | b [E, Some] | main.rs:353:26:353:26 | b [Some] | provenance | | -| main.rs:353:26:353:26 | b [Some] | main.rs:353:26:353:26 | b | provenance | Sink:MaD:8 | -| main.rs:353:26:353:26 | b [Some] | main.rs:353:26:353:26 | b | provenance | Sink:MaD:8 | +| main.rs:353:26:353:26 | b [E, Some] | main.rs:353:26:353:26 | b | provenance | Sink:MaD:8 | +| main.rs:353:26:353:26 | b [E, Some] | main.rs:353:26:353:26 | b | provenance | Sink:MaD:8 | | main.rs:364:9:364:9 | s | main.rs:365:41:365:41 | s | provenance | | | main.rs:364:9:364:9 | s | main.rs:365:41:365:41 | s | provenance | | | main.rs:364:9:364:9 | s | main.rs:368:53:368:53 | s | provenance | | @@ -313,10 +311,8 @@ edges | main.rs:365:15:365:43 | ...::C {...} [C] | main.rs:365:15:365:43 | ...::C {...} | provenance | Sink:MaD:2 | | main.rs:365:41:365:41 | s | main.rs:365:15:365:43 | ...::C {...} [C] | provenance | | | main.rs:365:41:365:41 | s | main.rs:365:15:365:43 | ...::C {...} [C] | provenance | | -| main.rs:368:22:368:56 | ...::E {...} [E, Some] | main.rs:368:22:368:56 | ...::E {...} [Some] | provenance | | -| main.rs:368:22:368:56 | ...::E {...} [E, Some] | main.rs:368:22:368:56 | ...::E {...} [Some] | provenance | | -| main.rs:368:22:368:56 | ...::E {...} [Some] | main.rs:368:22:368:56 | ...::E {...} | provenance | Sink:MaD:3 | -| main.rs:368:22:368:56 | ...::E {...} [Some] | main.rs:368:22:368:56 | ...::E {...} | provenance | Sink:MaD:3 | +| main.rs:368:22:368:56 | ...::E {...} [E, Some] | main.rs:368:22:368:56 | ...::E {...} | provenance | Sink:MaD:3 | +| main.rs:368:22:368:56 | ...::E {...} [E, Some] | main.rs:368:22:368:56 | ...::E {...} | provenance | Sink:MaD:3 | | main.rs:368:48:368:54 | Some(...) [Some] | main.rs:368:22:368:56 | ...::E {...} [E, Some] | provenance | | | main.rs:368:48:368:54 | Some(...) [Some] | main.rs:368:22:368:56 | ...::E {...} [E, Some] | provenance | | | main.rs:368:53:368:53 | s | main.rs:368:48:368:54 | Some(...) [Some] | provenance | | @@ -696,8 +692,6 @@ nodes | main.rs:353:26:353:26 | b | semmle.label | b | | main.rs:353:26:353:26 | b [E, Some] | semmle.label | b [E, Some] | | main.rs:353:26:353:26 | b [E, Some] | semmle.label | b [E, Some] | -| main.rs:353:26:353:26 | b [Some] | semmle.label | b [Some] | -| main.rs:353:26:353:26 | b [Some] | semmle.label | b [Some] | | main.rs:364:9:364:9 | s | semmle.label | s | | main.rs:364:9:364:9 | s | semmle.label | s | | main.rs:364:13:364:22 | source(...) | semmle.label | source(...) | @@ -712,8 +706,6 @@ nodes | main.rs:368:22:368:56 | ...::E {...} | semmle.label | ...::E {...} | | main.rs:368:22:368:56 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] | | main.rs:368:22:368:56 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] | -| main.rs:368:22:368:56 | ...::E {...} [Some] | semmle.label | ...::E {...} [Some] | -| main.rs:368:22:368:56 | ...::E {...} [Some] | semmle.label | ...::E {...} [Some] | | main.rs:368:48:368:54 | Some(...) [Some] | semmle.label | Some(...) [Some] | | main.rs:368:48:368:54 | Some(...) [Some] | semmle.label | Some(...) [Some] | | main.rs:368:53:368:53 | s | semmle.label | s | From ce7fee4e97f4e671223df44f26b2e62d0f5d499b Mon Sep 17 00:00:00 2001 From: hugo-syn Date: Sat, 15 Aug 2026 12:25:14 +0200 Subject: [PATCH 134/167] C#: add AdditionalTaintStep extension point for taint-tracking Mirrors Java's AdditionalTaintStep (java/ql/lib/semmle/code/java/dataflow/FlowSteps.qll) and Ruby/Swift's existing ports of the same pattern: a `Unit`-based class that lets library code contribute additional taint steps applied to every taint-tracking configuration, with zero opt-in required. Wired into defaultAdditionalTaintStep in TaintTrackingPrivate.qll, tagged with model = "AdditionalTaintStep" for provenance. Co-Authored-By: Claude Sonnet 5 --- .../2026-08-15-additional-taint-step.md | 4 ++++ .../semmle/code/csharp/dataflow/FlowSteps.qll | 20 +++++++++++++++++++ .../internal/TaintTrackingPrivate.qll | 3 +++ .../AdditionalTaintStep.expected | 1 + .../AdditionalTaintStep.ql | 7 +++++++ .../dataflow/additional-taint-step/Test.cs | 18 +++++++++++++++++ .../TestAdditionalTaintStep.qll | 19 ++++++++++++++++++ 7 files changed, 72 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2026-08-15-additional-taint-step.md create mode 100644 csharp/ql/lib/semmle/code/csharp/dataflow/FlowSteps.qll create mode 100644 csharp/ql/test/library-tests/dataflow/additional-taint-step/AdditionalTaintStep.expected create mode 100644 csharp/ql/test/library-tests/dataflow/additional-taint-step/AdditionalTaintStep.ql create mode 100644 csharp/ql/test/library-tests/dataflow/additional-taint-step/Test.cs create mode 100644 csharp/ql/test/library-tests/dataflow/additional-taint-step/TestAdditionalTaintStep.qll diff --git a/csharp/ql/lib/change-notes/2026-08-15-additional-taint-step.md b/csharp/ql/lib/change-notes/2026-08-15-additional-taint-step.md new file mode 100644 index 000000000000..6b87eef63b3a --- /dev/null +++ b/csharp/ql/lib/change-notes/2026-08-15-additional-taint-step.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* Added the `AdditionalTaintStep` extension point (`semmle.code.csharp.dataflow.FlowSteps`). Extend this class to add additional taint steps that apply to all taint-tracking configurations. diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSteps.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSteps.qll new file mode 100644 index 000000000000..6be7cd936ff1 --- /dev/null +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSteps.qll @@ -0,0 +1,20 @@ +/** + * Provides classes representing various flow steps for taint tracking. + */ + +private import codeql.util.Unit +private import semmle.code.csharp.dataflow.DataFlow + +/** + * A unit class for adding additional taint steps. + * + * Extend this class to add additional taint steps that should apply to all + * taint configurations. + */ +class AdditionalTaintStep extends Unit { + /** + * Holds if the step from `node1` to `node2` should be considered a taint + * step for all configurations. + */ + abstract predicate step(DataFlow::Node node1, DataFlow::Node node2); +} diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll index e51eaf4bbcb4..131b2cb72e73 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll @@ -2,6 +2,7 @@ private import csharp private import TaintTrackingPublic private import FlowSummaryImpl as FlowSummaryImpl private import semmle.code.csharp.Caching +private import semmle.code.csharp.dataflow.FlowSteps private import semmle.code.csharp.dataflow.internal.DataFlowDispatch private import semmle.code.csharp.dataflow.internal.DataFlowPrivate private import semmle.code.csharp.dispatch.Dispatch @@ -173,6 +174,8 @@ private module Cached { or FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo.(FlowSummaryNode).getSummaryNode(), false, model) + or + any(AdditionalTaintStep a).step(nodeFrom, nodeTo) and model = "AdditionalTaintStep" } } diff --git a/csharp/ql/test/library-tests/dataflow/additional-taint-step/AdditionalTaintStep.expected b/csharp/ql/test/library-tests/dataflow/additional-taint-step/AdditionalTaintStep.expected new file mode 100644 index 000000000000..acd241d386f5 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/additional-taint-step/AdditionalTaintStep.expected @@ -0,0 +1 @@ +| Test.cs:13:35:13:45 | access to parameter taintSource | Test.cs:13:23:13:46 | call to method Step | AdditionalTaintStep | diff --git a/csharp/ql/test/library-tests/dataflow/additional-taint-step/AdditionalTaintStep.ql b/csharp/ql/test/library-tests/dataflow/additional-taint-step/AdditionalTaintStep.ql new file mode 100644 index 000000000000..b499c2ce51d1 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/additional-taint-step/AdditionalTaintStep.ql @@ -0,0 +1,7 @@ +import csharp +import semmle.code.csharp.dataflow.internal.TaintTrackingPrivate +import TestAdditionalTaintStep + +from DataFlow::Node src, DataFlow::Node sink, string model +where defaultAdditionalTaintStep(src, sink, model) and model = "AdditionalTaintStep" +select src, sink, model diff --git a/csharp/ql/test/library-tests/dataflow/additional-taint-step/Test.cs b/csharp/ql/test/library-tests/dataflow/additional-taint-step/Test.cs new file mode 100644 index 000000000000..051793e2c855 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/additional-taint-step/Test.cs @@ -0,0 +1,18 @@ +class Marker +{ + // A stand-in for a framework method that isn't otherwise understood by the + // taint-tracking library, whose taint behaviour is modelled by a test-only + // `AdditionalTaintStep` subclass instead. + public static object Step(object x) => new object(); +} + +class Test +{ + void M(object taintSource) + { + var tainted = Marker.Step(taintSource); + Sink(tainted); + } + + static void Sink(object o) { } +} diff --git a/csharp/ql/test/library-tests/dataflow/additional-taint-step/TestAdditionalTaintStep.qll b/csharp/ql/test/library-tests/dataflow/additional-taint-step/TestAdditionalTaintStep.qll new file mode 100644 index 000000000000..d17109ba730c --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/additional-taint-step/TestAdditionalTaintStep.qll @@ -0,0 +1,19 @@ +import csharp +import semmle.code.csharp.dataflow.FlowSteps + +/** + * A test-only additional taint step that treats calls to `Marker.Step` as + * propagating taint from the argument to the call result, to verify that + * `AdditionalTaintStep` subclasses are picked up by `defaultAdditionalTaintStep`. + */ +private class MarkerStepTaintStep extends AdditionalTaintStep { + override predicate step(DataFlow::Node node1, DataFlow::Node node2) { + exists(MethodCall mc | + mc.getTarget().hasName("Step") and + mc.getTarget().getDeclaringType().hasName("Marker") + | + node1.asExpr() = mc.getArgument(0) and + node2.asExpr() = mc + ) + } +} From c88eb8e618b692ffbe6e6722c6999a559b6ede34 Mon Sep 17 00:00:00 2001 From: jtabsbm <317336566@users.noreply.github.com> Date: Sat, 15 Aug 2026 13:40:40 -0700 Subject: [PATCH 135/167] Docs: list psycopg (v3) in supported frameworks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Psycopg 3 has been modeled since python/ql/lib/semmle/python/frameworks/Psycopg.qll (imported in Frameworks.qll) but was never added to the supported frameworks table — only psycopg2 is listed. Signed-off-by: jtabsbm <317336566@users.noreply.github.com> --- docs/codeql/reusables/supported-frameworks.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/codeql/reusables/supported-frameworks.rst b/docs/codeql/reusables/supported-frameworks.rst index 0552a3495175..257fc17e5a44 100644 --- a/docs/codeql/reusables/supported-frameworks.rst +++ b/docs/codeql/reusables/supported-frameworks.rst @@ -263,6 +263,7 @@ and the CodeQL library pack ``codeql/python-all`` (`changelog Date: Mon, 17 Aug 2026 03:05:34 +0000 Subject: [PATCH 136/167] build(deps): bump the extractor-dependencies group Bumps the extractor-dependencies group in /go/extractor with 2 updates: [golang.org/x/mod](https://github.com/golang/mod) and [golang.org/x/tools](https://github.com/golang/tools). Updates `golang.org/x/mod` from 0.39.0 to 0.40.0 - [Commits](https://github.com/golang/mod/compare/v0.39.0...v0.40.0) Updates `golang.org/x/tools` from 0.48.0 to 0.49.0 - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.48.0...v0.49.0) --- updated-dependencies: - dependency-name: golang.org/x/mod dependency-version: 0.40.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: extractor-dependencies - dependency-name: golang.org/x/tools dependency-version: 0.49.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: extractor-dependencies ... Signed-off-by: dependabot[bot] --- go/extractor/go.mod | 4 ++-- go/extractor/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go/extractor/go.mod b/go/extractor/go.mod index fc48b4cffeba..eb29d527ffb7 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -9,8 +9,8 @@ toolchain go1.26.5 // when adding or removing dependencies, run // bazel mod tidy require ( - golang.org/x/mod v0.39.0 - golang.org/x/tools v0.48.0 + golang.org/x/mod v0.40.0 + golang.org/x/tools v0.49.0 ) require ( diff --git a/go/extractor/go.sum b/go/extractor/go.sum index 889863082b11..f06d2fb2b567 100644 --- a/go/extractor/go.sum +++ b/go/extractor/go.sum @@ -6,14 +6,14 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -golang.org/x/mod v0.39.0 h1:UF5zwQdCRRUpHfyPwr7d4UrGiVeldIsogtzWVnczL74= -golang.org/x/mod v0.39.0/go.mod h1:bvIbwjQ0HUFFf5AKukeeYQG4ZBUG9yxQbR9aEweIwYY= +golang.org/x/mod v0.40.0 h1:hUv+3cXcdRHz08UmSiOob7sadHig73uo5bkXxQ/tvUs= +golang.org/x/mod v0.40.0/go.mod h1:0/weTWkPWGBikyTWAX3dkjVztMmBA5hM0DH6BElSupE= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/tools v0.48.0 h1:3+hClM1aLL5mjMKm5ovokw9epgRXPuu2tILgismM6RE= -golang.org/x/tools v0.48.0/go.mod h1:08xX0orndb/F7jJxGDicx061tyd5pcMto75YMAXr6lk= +golang.org/x/tools v0.49.0 h1:3NI7VXzL9+1WZD52Dx2ttoPwD5DWrFGpl9mFZDlmisI= +golang.org/x/tools v0.49.0/go.mod h1:SJNXV9DBKT0UbdttsQjbfJlAE/q+y36++zo3uL3N0Oo= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= From bd657ab9c88d595ebeb678e5a303598d45a63d21 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2026 03:18:12 +0000 Subject: [PATCH 137/167] Go: Update to 1.26.6 --- MODULE.bazel | 2 +- go/actions/test/action.yml | 2 +- go/extractor/go.mod | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 4679589528f5..6d562ff80b69 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -302,7 +302,7 @@ use_repo( ) go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk") -go_sdk.download(version = "1.26.5") +go_sdk.download(version = "1.26.6") go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps") go_deps.from_file(go_mod = "//go/extractor:go.mod") diff --git a/go/actions/test/action.yml b/go/actions/test/action.yml index d4c391cd0103..4f3d7ad9377d 100644 --- a/go/actions/test/action.yml +++ b/go/actions/test/action.yml @@ -4,7 +4,7 @@ inputs: go-test-version: description: Which Go version to use for running the tests required: false - default: "~1.26.5" + default: "~1.26.6" run-code-checks: description: Whether to run formatting, code and qhelp generation checks required: false diff --git a/go/extractor/go.mod b/go/extractor/go.mod index fc48b4cffeba..703623a89f97 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -2,7 +2,7 @@ module github.com/github/codeql-go/extractor go 1.26 -toolchain go1.26.5 +toolchain go1.26.6 // when updating this, run // bazel run @rules_go//go -- mod tidy From 9327d2382b1ad3904326e86de5db41a763a3eb18 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 17 Aug 2026 08:45:56 +0200 Subject: [PATCH 138/167] Add unified jump-to-definition query Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3aaa555d-064b-443a-bc65-61a1b99dd0ad --- unified/ql/lib/codeql/Definitions.qll | 16 +++++++++++++++ .../lib/ide-contextual-queries/definitions.ql | 20 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 unified/ql/lib/codeql/Definitions.qll create mode 100644 unified/ql/lib/ide-contextual-queries/definitions.ql diff --git a/unified/ql/lib/codeql/Definitions.qll b/unified/ql/lib/codeql/Definitions.qll new file mode 100644 index 000000000000..927119530401 --- /dev/null +++ b/unified/ql/lib/codeql/Definitions.qll @@ -0,0 +1,16 @@ +/** + * Provides predicates related to jump-to-definition links in the code viewer. + */ + +private import unified +private import codeql.unified.internal.StaticNameBinding + +/** + * Holds if `reference` refers to `definition`. + */ +cached +predicate definitionOf(Identifier reference, NameDeclaration definition, string kind) { + reference = trackNameDeclaration(definition).asIdentifier() and + not reference instanceof NameDeclaration and + kind = "name" +} diff --git a/unified/ql/lib/ide-contextual-queries/definitions.ql b/unified/ql/lib/ide-contextual-queries/definitions.ql new file mode 100644 index 000000000000..f72c91bcd9dd --- /dev/null +++ b/unified/ql/lib/ide-contextual-queries/definitions.ql @@ -0,0 +1,20 @@ +/** + * @name Jump-to-definition links + * @description Generates use-definition pairs that provide the data + * for jump-to-definition in the code viewer. + * @kind definitions + * @id unified/ide-jump-to-definition + * @tags ide-contextual-queries/local-definitions + */ + +import codeql.Definitions +import codeql.IDEContextual +import unified + +external string selectedSourceFile(); + +from Identifier reference, NameDeclaration definition, string kind +where + definitionOf(reference, definition, kind) and + reference.getLocation().getFile() = getFileBySourceArchiveName(selectedSourceFile()) +select reference, definition, kind From c0b5a4a98b304731113eec189ea9973f0fdcff04 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 17 Aug 2026 09:13:06 +0200 Subject: [PATCH 139/167] Test unified jump-to-definition logic Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3aaa555d-064b-443a-bc65-61a1b99dd0ad --- unified/ql/lib/utils/test/TestUtils.qll | 33 ++++++++++++++++++ .../library-tests/definitions/test.expected | 0 .../ql/test/library-tests/definitions/test.ql | 20 +++++++++++ .../test/library-tests/definitions/test.swift | 18 ++++++++++ .../library-tests/static-name-binding/test.ql | 34 ++----------------- 5 files changed, 73 insertions(+), 32 deletions(-) create mode 100644 unified/ql/lib/utils/test/TestUtils.qll create mode 100644 unified/ql/test/library-tests/definitions/test.expected create mode 100644 unified/ql/test/library-tests/definitions/test.ql create mode 100644 unified/ql/test/library-tests/definitions/test.swift diff --git a/unified/ql/lib/utils/test/TestUtils.qll b/unified/ql/lib/utils/test/TestUtils.qll new file mode 100644 index 000000000000..8a35f6277465 --- /dev/null +++ b/unified/ql/lib/utils/test/TestUtils.qll @@ -0,0 +1,33 @@ +private import unified +private import CommentUtil +private import codeql.unified.internal.StaticNameBinding + +private string deriveClassName(ClassLikeDeclaration cls) { + not exists(cls.getParent().getEnclosingClass()) and + result = cls.getName().getValue() + or + result = deriveClassName(cls.getParent().getEnclosingClass()) + "." + cls.getName().getValue() +} + +private string defaultName(NameDeclaration decl) { + exists(ClassLikeDeclaration cls | + decl.getDeclaration() = cls.getAMember() and + result = deriveClassName(cls) + "." + decl.getName() + ) + or + not decl.getDeclaration() = any(ClassLikeDeclaration cls).getAMember() and + result = decl.getName() +} + +private predicate declAt(NameDeclaration v, string filepath, int line) { + v.getLocation().hasLocationInfo(filepath, line, _, _, _) +} + +predicate nameDeclaration(NameDeclaration v, string alias) { + exists(string filepath, int line | declAt(v, filepath, line) | + keyValueCommentAt(filepath, line, "name", alias) + or + not keyValueCommentAt(filepath, line, "name", _) and + alias = defaultName(v) + ) +} diff --git a/unified/ql/test/library-tests/definitions/test.expected b/unified/ql/test/library-tests/definitions/test.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/unified/ql/test/library-tests/definitions/test.ql b/unified/ql/test/library-tests/definitions/test.ql new file mode 100644 index 000000000000..361a9fd6a03c --- /dev/null +++ b/unified/ql/test/library-tests/definitions/test.ql @@ -0,0 +1,20 @@ +import unified +import utils.test.InlineExpectationsTest +import utils.test.TestUtils +import codeql.Definitions + +module DefinitionsTest implements TestSig { + string getARelevantTag() { result = "definition" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(Identifier reference, NameDeclaration definition | + definitionOf(reference, definition, "name") and + location = reference.getLocation() and + element = reference.toString() and + nameDeclaration(definition, value) and + tag = "definition" + ) + } +} + +import MakeTest diff --git a/unified/ql/test/library-tests/definitions/test.swift b/unified/ql/test/library-tests/definitions/test.swift new file mode 100644 index 000000000000..5bbbd59e21e8 --- /dev/null +++ b/unified/ql/test/library-tests/definitions/test.swift @@ -0,0 +1,18 @@ +class Base { + class Nested {} + static let member = 1 +} + +class Derived : Base {} // $ definition=Base + +func test() { + let local = 1 // name=local1 + local // $ definition=local1 + let local = 2 // name=local2 + local // $ definition=local2 + Derived.member // $ definition=Derived definition=Base.member + let _: Derived.Nested? // $ definition=Derived definition=Base.Nested +} + +typealias Alias = Derived // $ definition=Derived +let _: Alias.Nested? // $ definition=Alias definition=Base.Nested diff --git a/unified/ql/test/library-tests/static-name-binding/test.ql b/unified/ql/test/library-tests/static-name-binding/test.ql index 272606e2bd20..a1e49ce0609c 100644 --- a/unified/ql/test/library-tests/static-name-binding/test.ql +++ b/unified/ql/test/library-tests/static-name-binding/test.ql @@ -1,48 +1,18 @@ import unified import utils.test.InlineExpectationsTest -import utils.test.CommentUtil +import utils.test.TestUtils import codeql.unified.internal.StaticNameBinding module StaticDeclAccess implements TestSig { string getARelevantTag() { result = "access" } - private string deriveClassName(ClassLikeDeclaration cls) { - not exists(cls.getParent().getEnclosingClass()) and - result = cls.getName().getValue() - or - result = deriveClassName(cls.getParent().getEnclosingClass()) + "." + cls.getName().getValue() - } - - private string defaultName(NameDeclaration decl) { - exists(ClassLikeDeclaration cls | - decl.getDeclaration() = cls.getAMember() and - result = deriveClassName(cls) + "." + decl.getName() - ) - or - not decl.getDeclaration() = any(ClassLikeDeclaration cls).getAMember() and - result = decl.getName() - } - - additional predicate declAt(NameDeclaration v, string filepath, int line) { - v.getLocation().hasLocationInfo(filepath, line, _, _, _) - } - - private predicate decl(NameDeclaration v, string alias) { - exists(string filepath, int line | declAt(v, filepath, line) | - keyValueCommentAt(filepath, line, "name", alias) - or - not keyValueCommentAt(filepath, line, "name", _) and - alias = defaultName(v) - ) - } - predicate hasActualResult(Location location, string element, string tag, string value) { exists(NameDeclaration decl, Identifier access | access = trackNameDeclaration(decl).asIdentifier() and not access instanceof NameDeclaration and location = access.getLocation() and element = access.toString() and - decl(decl, value) and + nameDeclaration(decl, value) and tag = "access" ) } From 6d29fdbdb33fa2fe2872004b34a2fc7ad8c0608f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 17 Aug 2026 19:42:50 +0000 Subject: [PATCH 140/167] update codeql documentation --- .../codeql-changelog/codeql-cli-2.26.3.rst | 119 ++++++++++++++++++ .../codeql-changelog/index.rst | 1 + 2 files changed, 120 insertions(+) create mode 100644 docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.26.3.rst diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.26.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.26.3.rst new file mode 100644 index 000000000000..57a19ae4633a --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.26.3.rst @@ -0,0 +1,119 @@ +.. _codeql-cli-2.26.3: + +========================== +CodeQL 2.26.3 (2026-08-12) +========================== + +.. 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.26.3 runs a total of 497 security queries when configured with the Default suite (covering 170 CWE). The Extended suite enables an additional 131 queries (covering 32 more CWE). + +CodeQL CLI +---------- + +Bug Fixes +~~~~~~~~~ + +* Fixed the pack upload format to comply with the OCI-image-manifest specification, by ensuring that all required fields are present/valid, and that no extraneous/non-compliant fields are included. +* Fixed path canonicalization on Windows so that paths located on :code:`subst`\ ed drives are always resolved to their underlying target paths. Previously, :code:`subst`\ ed drives were not handled consistently by the CodeQL CLI and the language-specific extractors. + +Improvements +~~~~~~~~~~~~ + +* Commands that accept a :code:`--ram` option now report a clear error when given a value that is far too large to be a sensible amount of memory in megabytes (for example, a number of bytes passed by mistake), instead of failing with a cryptic "is not an int" message. + +Miscellaneous +~~~~~~~~~~~~~ + +* Upgraded Jackson from 2.18.6 to 2.18.9. + +Query Packs +----------- + +Bug Fixes +~~~~~~~~~ + +GitHub Actions +"""""""""""""" + +* The :code:`actions/output-clobbering/high` query now provides messages tailored to the affected output channel and includes expanded documentation and recommendations. +* The :code:`actions/cache-poisoning/poisonable-step` and :code:`actions/untrusted-checkout/critical` queries now start paths at the expressions that control untrusted checkouts and link their alert messages to those expressions. +* Fixed a performance issue in the :code:`actions/output-clobbering/high` query caused by using unescaped source-code input in a regular expression. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +JavaScript/TypeScript +""""""""""""""""""""" + +* The :code:`js/missing-rate-limiting` query now recognizes the :code:`@fastify/rate-limit` package as a rate limiter. + +GitHub Actions +"""""""""""""" + +* The :code:`actions/output-clobbering/high` query no longer reports simple :code:`jq` path filters when their output remains JSON-encoded. Raw-output modes, complex filters, and unrecognized options remain reportable. +* GitHub Actions queries now correctly classify the :code:`schedule` event when determining whether a workflow is externally triggerable. +* The :code:`actions/envvar-injection/critical` query now requires the untrusted source and privileged context to originate from the same trigger event. The environment variable injection queries also no longer treat pull request head labels as injection-capable because they cannot contain newlines. +* The :code:`actions/cache-poisoning/code-injection`, :code:`actions/cache-poisoning/direct-cache`, and :code:`actions/cache-poisoning/poisonable-step` queries now account for read-only cache access on low-trust triggers that run in the default branch scope. Results are retained for triggers that GitHub allows to write to that cache scope. + +Query Metadata Changes +~~~~~~~~~~~~~~~~~~~~~~ + +GitHub Actions +"""""""""""""" + +* The name and alert message of the :code:`actions/cache-poisoning/code-injection` query have been reworded for clarity. + +Language Libraries +------------------ + +Breaking Changes +~~~~~~~~~~~~~~~~ + +GitHub Actions +"""""""""""""" + +* The :code:`codeql.actions.security.SelfHostedQuery` module has been removed because runner labels do not reliably distinguish self-hosted runners from managed runners. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +JavaScript/TypeScript +""""""""""""""""""""" + +* It is now possible for custom models to refer to specific files in the codebase, using a package name of form :code:`file:`. The model should describe the public exports of that file. This can be used to derive sources and sinks in code that imports the file, but note that sources and sinks will not generally be placed within the file itself. + For example, a source model :code:`['file:lib/service.js', 'Member[getData].ReturnValue', 'remote']` could identify :code:`require('../lib/service').getData()` as a source. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Added flow source models for :code:`RegQueryValue` and related functions from the :code:`winreg.h` Windows header. + +JavaScript/TypeScript +""""""""""""""""""""" + +* JavaScript security queries using the :code:`response` threat model now track promise-wrapped client response data into promise fulfillment values. This may improve results for queries such as :code:`js/xss` when response data is consumed through :code:`.then(...)` chains. +* The route object returned by Vue Router's :code:`useRoute()` Composition API is now recognized as a client-side remote flow source, covering its :code:`query`, :code:`params`, :code:`path`, :code:`fullPath`, and :code:`hash` members. These members are additionally reported under the corresponding :code:`browser-url-query`, :code:`browser-url-path`, and :code:`browser-url-fragment` threat models. +* Added flow models for Vue's :code:`ref`, :code:`shallowRef`, :code:`toRef`, :code:`reactive`, and :code:`computed` Composition API helpers. +* Added support for treating declared :code:`inputs` properties in Sails Action2 controller files as remote flow sources. This may improve results for security queries such as :code:`js/path-injection`. + +Ruby +"""" + +* Removed library input to vendored gems from the set of taint sources. This should reduce false positives for :code:`rb/polynomial-redos`, :code:`rb/regex/badly-anchored-regexp`, :code:`rb/unsafe-code-construction`, :code:`rb/html-constructed-from-input`, and :code:`rb/shell-command-constructed-from-input` whenever vendoring is used. + +GitHub Actions +"""""""""""""" + +* GitHub Actions analysis now recognizes untrusted data in :code:`github.event.merge_group` for workflows triggered by the :code:`merge_group` event. diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index a0a2e1832d83..6562d3482c54 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 Date: Mon, 17 Aug 2026 19:44:12 -0400 Subject: [PATCH 141/167] Actions: ActorIfCheck should not protect events that do not populate the checked field A condition like 'github.event.pull_request.user.login != ...' on a workflow triggered by issues events is always true since github.event.pull_request is not populated for issues events, but ActorIfCheck still treated it as a protective check, suppressing alerts such as actions/code-injection/critical. Override protectsCategoryAndEvent in ActorIfCheck so that checks on event payload fields only protect events whose payload contains the corresponding context, using contextTriggerDataModel as the mapping. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4084febb-f9c7-44df-baf3-c8be8e9932a7 --- ...026-08-17-actor-if-check-event-validity.md | 4 ++ .../codeql/actions/security/ControlChecks.qll | 54 ++++++++++++++++--- .../workflows/actor_check_valid_event.yml | 12 +++++ .../workflows/actor_check_wrong_event.yml | 20 +++++++ .../CWE-094/CodeInjectionCritical.expected | 4 ++ .../CWE-094/CodeInjectionMedium.expected | 5 ++ 6 files changed, 93 insertions(+), 6 deletions(-) create mode 100644 actions/ql/lib/change-notes/2026-08-17-actor-if-check-event-validity.md create mode 100644 actions/ql/test/query-tests/Security/CWE-094/.github/workflows/actor_check_valid_event.yml create mode 100644 actions/ql/test/query-tests/Security/CWE-094/.github/workflows/actor_check_wrong_event.yml diff --git a/actions/ql/lib/change-notes/2026-08-17-actor-if-check-event-validity.md b/actions/ql/lib/change-notes/2026-08-17-actor-if-check-event-validity.md new file mode 100644 index 000000000000..18d10595a756 --- /dev/null +++ b/actions/ql/lib/change-notes/2026-08-17-actor-if-check-event-validity.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Altered the logic of `ActorIfCheck` so that checks on actor fields read from the event payload (e.g. `github.event.pull_request.user.login`) only count as protection for events whose payload actually populates that field. Previously, a condition such as `github.event.pull_request.user.login != 'name'` on a workflow triggered by `issues` events was treated as a protective check even though `github.event.pull_request` is not populated for `issues` events, which makes the condition vacuous. This change will result in more results being found by the queries that rely on control checks, such as `actions/code-injection/critical`. diff --git a/actions/ql/lib/codeql/actions/security/ControlChecks.qll b/actions/ql/lib/codeql/actions/security/ControlChecks.qll index 2228e9f96e21..a1058610871c 100644 --- a/actions/ql/lib/codeql/actions/security/ControlChecks.qll +++ b/actions/ql/lib/codeql/actions/security/ControlChecks.qll @@ -312,17 +312,28 @@ class LabelIfCheck extends LabelCheck instanceof If { } } +/** + * Gets a regular expression matching a condition on an actor field that is + * only populated for events whose payload contains the `context_prefix` context. + */ +private string eventPayloadActorFieldRegex(string context_prefix) { + context_prefix = "github.event.pull_request" and + result = "\\bgithub\\.event\\.pull_request\\.user\\.login\\b" + or + context_prefix = "github.event.head_commit" and + result = "\\bgithub\\.event\\.head_commit\\.author\\.name\\b" + or + context_prefix = "github.event.commits" and + result = "\\bgithub\\.event\\.commits.*\\.author\\.name\\b" +} + class ActorIfCheck extends ActorCheck instanceof If { ActorIfCheck() { // eg: github.event.pull_request.user.login == 'admin' exists( normalizeExpr(this.getCondition()) - .regexpFind([ - "\\bgithub\\.event\\.pull_request\\.user\\.login\\b", - "\\bgithub\\.event\\.head_commit\\.author\\.name\\b", - "\\bgithub\\.event\\.commits.*\\.author\\.name\\b", - "\\bgithub\\.event\\.sender\\.login\\b" - ], _, _) + .regexpFind([eventPayloadActorFieldRegex(_), "\\bgithub\\.event\\.sender\\.login\\b"], _, + _) ) or // eg: github.actor == 'admin' @@ -333,6 +344,37 @@ class ActorIfCheck extends ActorCheck instanceof If { ) and not normalizeExpr(this.getCondition()).matches("%[bot]%") } + + override predicate protectsCategoryAndEvent(string category, string event) { + ActorCheck.super.protectsCategoryAndEvent(category, event) and + ( + // `github.actor`, `github.triggering_actor` and `github.event.sender.login` + // are populated for every event + exists( + normalizeExpr(this.(If).getCondition()) + .regexpFind("\\bgithub\\.event\\.sender\\.login\\b", _, _) + ) + or + exists( + normalizeExpr(this.(If).getCondition()) + .regexpFind(["\\bgithub\\.actor\\b", "\\bgithub\\.triggering_actor\\b",], _, _) + ) and + not normalizeExpr(this.(If).getCondition()).matches("%[bot]%") + or + // actor fields read from the event payload are only populated for events + // whose payload contains the corresponding context. eg: a check on + // `github.event.pull_request.user.login` cannot restrict the actor of an + // `issues` event since `github.event.pull_request` is not populated there, + // which makes the condition vacuous + exists(string context_prefix | + contextTriggerDataModel(event, context_prefix) and + exists( + normalizeExpr(this.(If).getCondition()) + .regexpFind(eventPayloadActorFieldRegex(context_prefix), _, _) + ) + ) + ) + } } class PullRequestTargetRepositoryIfCheck extends RepositoryCheck instanceof If { diff --git a/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/actor_check_valid_event.yml b/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/actor_check_valid_event.yml new file mode 100644 index 000000000000..cd139700f078 --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/actor_check_valid_event.yml @@ -0,0 +1,12 @@ +on: + pull_request_target: + types: [opened] + +jobs: + # The `if:` condition checks an actor field that is populated for + # `pull_request_target` events, so the injectable step is protected. + valid-actor-check: + runs-on: ubuntu-latest + if: github.event.pull_request.user.login == 'trusted-user' + steps: + - run: echo '${{ github.event.pull_request.title }}' diff --git a/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/actor_check_wrong_event.yml b/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/actor_check_wrong_event.yml new file mode 100644 index 000000000000..fce829d4a9b4 --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/actor_check_wrong_event.yml @@ -0,0 +1,20 @@ +on: + issues: + types: [opened] + +jobs: + # The `if:` condition compares an actor field that is never populated for + # `issues` events, so it is always true and does not protect the injectable step. + vacuous-actor-check: + runs-on: ubuntu-latest + if: github.event.pull_request.user.login != 'some-bot[bot]' + steps: + - run: echo '${{ github.event.issue.title }}' + + # The `if:` condition checks an actor context that is populated for every + # event, so the injectable step is protected. + valid-actor-check: + runs-on: ubuntu-latest + if: github.actor == 'trusted-user' + steps: + - run: echo '${{ github.event.issue.title }}' diff --git a/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionCritical.expected b/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionCritical.expected index 02f7f68c05f4..d58f13b44d7f 100644 --- a/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionCritical.expected +++ b/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionCritical.expected @@ -270,6 +270,9 @@ nodes | .github/actions/external/ultralytics/actions/action.yaml:66:3:66:6 | input body | semmle.label | input body | | .github/actions/external/ultralytics/actions/action.yaml:96:16:96:33 | inputs.body | semmle.label | inputs.body | | .github/actions/external/ultralytics/actions/action.yaml:223:25:223:60 | github.head_ref \|\| github.ref | semmle.label | github.head_ref \|\| github.ref | +| .github/workflows/actor_check_valid_event.yml:12:21:12:58 | github.event.pull_request.title | semmle.label | github.event.pull_request.title | +| .github/workflows/actor_check_wrong_event.yml:12:21:12:51 | github.event.issue.title | semmle.label | github.event.issue.title | +| .github/workflows/actor_check_wrong_event.yml:20:21:20:51 | github.event.issue.title | semmle.label | github.event.issue.title | | .github/workflows/argus_case_study.yml:15:9:24:6 | Uses Step: remove_quotations [replaced] | semmle.label | Uses Step: remove_quotations [replaced] | | .github/workflows/argus_case_study.yml:17:25:17:53 | github.event.issue.title | semmle.label | github.event.issue.title | | .github/workflows/argus_case_study.yml:22:20:22:39 | env.ISSUE_TITLE | semmle.label | env.ISSUE_TITLE | @@ -710,6 +713,7 @@ subpaths | .github/actions/external/TestOrg/TestRepo/.github/actions/clone-repo/action.yaml:22:19:22:37 | inputs.title | .github/workflows/composite-action-caller-4.yml:14:19:14:56 | github.event.pull_request.title | .github/actions/external/TestOrg/TestRepo/.github/actions/clone-repo/action.yaml:22:19:22:37 | inputs.title | Potential code injection in $@, which may be controlled by an external user ($@). | .github/actions/external/TestOrg/TestRepo/.github/actions/clone-repo/action.yaml:22:19:22:37 | inputs.title | ${{ inputs.title }} | .github/workflows/composite-action-caller-4.yml:4:3:4:21 | pull_request_target | pull_request_target | | .github/actions/external/ultralytics/actions/action.yaml:96:16:96:33 | inputs.body | .github/workflows/test29.yml:35:18:35:54 | github.event.pull_request.body | .github/actions/external/ultralytics/actions/action.yaml:96:16:96:33 | inputs.body | Potential code injection in $@, which may be controlled by an external user ($@). | .github/actions/external/ultralytics/actions/action.yaml:96:16:96:33 | inputs.body | ${{ inputs.body }} | .github/workflows/test29.yml:12:3:12:21 | pull_request_target | pull_request_target | | .github/actions/external/ultralytics/actions/action.yaml:223:25:223:60 | github.head_ref \|\| github.ref | .github/actions/external/ultralytics/actions/action.yaml:223:25:223:60 | github.head_ref \|\| github.ref | .github/actions/external/ultralytics/actions/action.yaml:223:25:223:60 | github.head_ref \|\| github.ref | Potential code injection in $@, which may be controlled by an external user ($@). | .github/actions/external/ultralytics/actions/action.yaml:223:25:223:60 | github.head_ref \|\| github.ref | ${{ github.head_ref \|\| github.ref }} | .github/workflows/test29.yml:12:3:12:21 | pull_request_target | pull_request_target | +| .github/workflows/actor_check_wrong_event.yml:12:21:12:51 | github.event.issue.title | .github/workflows/actor_check_wrong_event.yml:12:21:12:51 | github.event.issue.title | .github/workflows/actor_check_wrong_event.yml:12:21:12:51 | github.event.issue.title | Potential code injection in $@, which may be controlled by an external user ($@). | .github/workflows/actor_check_wrong_event.yml:12:21:12:51 | github.event.issue.title | ${{ github.event.issue.title }} | .github/workflows/actor_check_wrong_event.yml:2:3:2:8 | issues | issues | | .github/workflows/argus_case_study.yml:27:33:27:77 | steps.remove_quotations.outputs.replaced | .github/workflows/argus_case_study.yml:17:25:17:53 | github.event.issue.title | .github/workflows/argus_case_study.yml:27:33:27:77 | steps.remove_quotations.outputs.replaced | Potential code injection in $@, which may be controlled by an external user ($@). | .github/workflows/argus_case_study.yml:27:33:27:77 | steps.remove_quotations.outputs.replaced | ${{steps.remove_quotations.outputs.replaced}} | .github/workflows/argus_case_study.yml:4:3:4:8 | issues | issues | | .github/workflows/artifactpoisoning1.yml:27:67:27:92 | steps.pr.outputs.id | .github/workflows/artifactpoisoning1.yml:14:9:20:6 | Uses Step | .github/workflows/artifactpoisoning1.yml:27:67:27:92 | steps.pr.outputs.id | Potential code injection in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning1.yml:27:67:27:92 | steps.pr.outputs.id | ${{ steps.pr.outputs.id }} | .github/workflows/artifactpoisoning1.yml:4:3:4:14 | workflow_run | workflow_run | | .github/workflows/artifactpoisoning2.yml:22:17:22:42 | steps.pr.outputs.id | .github/workflows/artifactpoisoning2.yml:13:9:19:6 | Uses Step: pr | .github/workflows/artifactpoisoning2.yml:22:17:22:42 | steps.pr.outputs.id | Potential code injection in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning2.yml:22:17:22:42 | steps.pr.outputs.id | ${{ steps.pr.outputs.id }} | .github/workflows/artifactpoisoning2.yml:4:3:4:14 | workflow_run | workflow_run | diff --git a/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionMedium.expected b/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionMedium.expected index 231d41bc2518..9833fd104e96 100644 --- a/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionMedium.expected +++ b/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionMedium.expected @@ -270,6 +270,9 @@ nodes | .github/actions/external/ultralytics/actions/action.yaml:66:3:66:6 | input body | semmle.label | input body | | .github/actions/external/ultralytics/actions/action.yaml:96:16:96:33 | inputs.body | semmle.label | inputs.body | | .github/actions/external/ultralytics/actions/action.yaml:223:25:223:60 | github.head_ref \|\| github.ref | semmle.label | github.head_ref \|\| github.ref | +| .github/workflows/actor_check_valid_event.yml:12:21:12:58 | github.event.pull_request.title | semmle.label | github.event.pull_request.title | +| .github/workflows/actor_check_wrong_event.yml:12:21:12:51 | github.event.issue.title | semmle.label | github.event.issue.title | +| .github/workflows/actor_check_wrong_event.yml:20:21:20:51 | github.event.issue.title | semmle.label | github.event.issue.title | | .github/workflows/argus_case_study.yml:15:9:24:6 | Uses Step: remove_quotations [replaced] | semmle.label | Uses Step: remove_quotations [replaced] | | .github/workflows/argus_case_study.yml:17:25:17:53 | github.event.issue.title | semmle.label | github.event.issue.title | | .github/workflows/argus_case_study.yml:22:20:22:39 | env.ISSUE_TITLE | semmle.label | env.ISSUE_TITLE | @@ -709,6 +712,8 @@ subpaths | .github/actions/action7/action.yml:214:41:214:69 | inputs.github_username | .github/actions/action7/action.yml:214:41:214:69 | inputs.github_username | .github/actions/action7/action.yml:214:41:214:69 | inputs.github_username | Potential code injection in $@, which may be controlled by an external user. | .github/actions/action7/action.yml:214:41:214:69 | inputs.github_username | ${{ inputs.github_username }} | | .github/actions/action7/action.yml:215:41:215:66 | inputs.github_email | .github/actions/action7/action.yml:215:41:215:66 | inputs.github_email | .github/actions/action7/action.yml:215:41:215:66 | inputs.github_email | Potential code injection in $@, which may be controlled by an external user. | .github/actions/action7/action.yml:215:41:215:66 | inputs.github_email | ${{ inputs.github_email }} | | .github/actions/action7/action.yml:217:25:217:60 | github.head_ref \|\| github.ref | .github/actions/action7/action.yml:217:25:217:60 | github.head_ref \|\| github.ref | .github/actions/action7/action.yml:217:25:217:60 | github.head_ref \|\| github.ref | Potential code injection in $@, which may be controlled by an external user. | .github/actions/action7/action.yml:217:25:217:60 | github.head_ref \|\| github.ref | ${{ github.head_ref \|\| github.ref }} | +| .github/workflows/actor_check_valid_event.yml:12:21:12:58 | github.event.pull_request.title | .github/workflows/actor_check_valid_event.yml:12:21:12:58 | github.event.pull_request.title | .github/workflows/actor_check_valid_event.yml:12:21:12:58 | github.event.pull_request.title | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/actor_check_valid_event.yml:12:21:12:58 | github.event.pull_request.title | ${{ github.event.pull_request.title }} | +| .github/workflows/actor_check_wrong_event.yml:20:21:20:51 | github.event.issue.title | .github/workflows/actor_check_wrong_event.yml:20:21:20:51 | github.event.issue.title | .github/workflows/actor_check_wrong_event.yml:20:21:20:51 | github.event.issue.title | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/actor_check_wrong_event.yml:20:21:20:51 | github.event.issue.title | ${{ github.event.issue.title }} | | .github/workflows/changed-files.yml:20:24:20:76 | steps.changed-files1.outputs.all_changed_files | .github/workflows/changed-files.yml:15:9:18:6 | Uses Step: changed-files1 | .github/workflows/changed-files.yml:20:24:20:76 | steps.changed-files1.outputs.all_changed_files | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/changed-files.yml:20:24:20:76 | steps.changed-files1.outputs.all_changed_files | ${{ steps.changed-files1.outputs.all_changed_files }} | | .github/workflows/changed-files.yml:40:24:40:76 | steps.changed-files3.outputs.all_changed_files | .github/workflows/changed-files.yml:33:9:38:6 | Uses Step: changed-files3 | .github/workflows/changed-files.yml:40:24:40:76 | steps.changed-files3.outputs.all_changed_files | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/changed-files.yml:40:24:40:76 | steps.changed-files3.outputs.all_changed_files | ${{ steps.changed-files3.outputs.all_changed_files }} | | .github/workflows/changed-files.yml:58:24:58:76 | steps.changed-files5.outputs.all_changed_files | .github/workflows/changed-files.yml:53:9:56:6 | Uses Step: changed-files5 | .github/workflows/changed-files.yml:58:24:58:76 | steps.changed-files5.outputs.all_changed_files | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/changed-files.yml:58:24:58:76 | steps.changed-files5.outputs.all_changed_files | ${{ steps.changed-files5.outputs.all_changed_files }} | From 4c4e13c20d5a7b5aef3f2369df1f5074d5d82e45 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 18 Aug 2026 09:58:26 +0200 Subject: [PATCH 142/167] Rust: Set `RUSTUP_AUTO_INSTALL=1` --- rust/extractor/src/config.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/rust/extractor/src/config.rs b/rust/extractor/src/config.rs index 7677025a66f2..8ff68ea8a547 100644 --- a/rust/extractor/src/config.rs +++ b/rust/extractor/src/config.rs @@ -108,14 +108,23 @@ impl Config { figment.extract().context("loading configuration") } + fn get_extra_env(&self) -> FxHashMap> { + let mut extra_env = FxHashMap::default(); + // RUSTUP_AUTO_INSTALL is set to 0 by rust-analyzer (https://github.com/rust-lang/rust-analyzer/issues/20719), + // but we do want to allow rustup to auto-install toolchains if needed, so we set it to 1 here. + extra_env.insert("RUSTUP_AUTO_INSTALL".to_owned(), Some("1".to_owned())); + extra_env.extend(self.cargo_extra_env.clone()); + extra_env + } + fn sysroot(&self, dir: &AbsPath) -> Sysroot { let sysroot_input = self.sysroot.as_ref().map(|p| join_path_buf(dir, p)); let sysroot_src_input = self.sysroot_src.as_ref().map(|p| join_path_buf(dir, p)); match (sysroot_input, sysroot_src_input) { - (None, None) => Sysroot::discover(dir, &self.cargo_extra_env), + (None, None) => Sysroot::discover(dir, &self.get_extra_env()), (Some(sysroot), None) => Sysroot::discover_rust_lib_src_dir(sysroot), (None, Some(sysroot_src)) => { - Sysroot::discover_with_src_override(dir, &self.cargo_extra_env, sysroot_src) + Sysroot::discover_with_src_override(dir, &self.get_extra_env(), sysroot_src) } (Some(sysroot), Some(sysroot_src)) => Sysroot::new(Some(sysroot), Some(sysroot_src)), } @@ -166,7 +175,7 @@ impl Config { .map(ToOwned::to_owned) .map(RustLibSource::Path), - extra_env: self.cargo_extra_env.clone(), + extra_env: self.get_extra_env(), extra_args: self.cargo_extra_args.clone(), extra_includes: self .extra_includes From df3ae641a0b765bac4ad5e3d0df212c806b160c7 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 18 Aug 2026 12:37:12 +0200 Subject: [PATCH 143/167] Go: move extractor smoke test into integration tests The standalone `go/extractor-smoke-test` (run only from `go/Makefile`'s `test` target) was redundant: its core invariant, that traced and untraced extraction produce the same result, is already asserted by the `test-extraction` integration test, whose traced and autobuild cases share a single `test.expected`. The control-flow query it ran is covered far more thoroughly by the CFG library test. The only combination not reproduced was autobuild under build tracing, so add a `test_autobuild_traced` case to `test-extraction` and delete the smoke test. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- CODEOWNERS | 1 - go/Makefile | 1 - go/extractor-smoke-test/.gitignore | 4 --- go/extractor-smoke-test/expected.csv | 12 --------- go/extractor-smoke-test/go.mod | 3 --- go/extractor-smoke-test/main.go | 8 ------ go/extractor-smoke-test/test.sh | 26 ------------------- .../integration-tests/test-extraction/test.py | 9 +++++++ 8 files changed, 9 insertions(+), 55 deletions(-) delete mode 100644 go/extractor-smoke-test/.gitignore delete mode 100644 go/extractor-smoke-test/expected.csv delete mode 100644 go/extractor-smoke-test/go.mod delete mode 100644 go/extractor-smoke-test/main.go delete mode 100755 go/extractor-smoke-test/test.sh diff --git a/CODEOWNERS b/CODEOWNERS index bceaafdbc07c..4b5bfd124d2a 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -11,7 +11,6 @@ /go/codeql-tools/ @github/codeql-go @github/code-scanning-language-coverage /go/downgrades/ @github/codeql-go @github/code-scanning-language-coverage /go/extractor/ @github/codeql-go @github/code-scanning-language-coverage -/go/extractor-smoke-test/ @github/codeql-go @github/code-scanning-language-coverage /go/ql/test/extractor-tests/ @github/codeql-go @github/code-scanning-language-coverage /java/ @github/codeql-java /javascript/ @github/codeql-javascript diff --git a/go/Makefile b/go/Makefile index 0b9dc9e4ea4c..86c690fcad9b 100644 --- a/go/Makefile +++ b/go/Makefile @@ -58,7 +58,6 @@ test: all build/testdb/check-upgrade-path # use GOOS=linux because GOOS=darwin GOARCH=386 is no longer supported env GOOS=linux GOARCH=386 codeql$(EXE) test run -j0 ql/test/query-tests/Security/CWE-681 --search-path .. --check-diff-informed --consistency-queries ql/consistency-queries --compilation-cache=$(cache) --dynamic-join-order-mode=$(rtjo) cd extractor; $(BAZEL) test ... - bash extractor-smoke-test/test.sh || (echo "Extractor smoke test FAILED"; exit 1) .PHONY: build/testdb/check-upgrade-path build/testdb/check-upgrade-path : build/testdb/go.dbscheme ql/lib/go.dbscheme diff --git a/go/extractor-smoke-test/.gitignore b/go/extractor-smoke-test/.gitignore deleted file mode 100644 index e32b11d7ee16..000000000000 --- a/go/extractor-smoke-test/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -*.bqrs -tracing-out.csv -notracing-out.csv -testdb diff --git a/go/extractor-smoke-test/expected.csv b/go/extractor-smoke-test/expected.csv deleted file mode 100644 index cb0eb08f8f42..000000000000 --- a/go/extractor-smoke-test/expected.csv +++ /dev/null @@ -1,12 +0,0 @@ -"1","assignment to i" -"assignment to i","selection of Println" -"call to Println","exit" -"entry","skip" -"entry","skip" -"function declaration","exit" -"i","call to Println" -"nd","col1" -"selection of Println","i" -"skip","1" -"skip","function declaration" -"skip","skip" diff --git a/go/extractor-smoke-test/go.mod b/go/extractor-smoke-test/go.mod deleted file mode 100644 index 0659b4eaec81..000000000000 --- a/go/extractor-smoke-test/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/codeql-go-extractor-smoke-test - -go 1.14 diff --git a/go/extractor-smoke-test/main.go b/go/extractor-smoke-test/main.go deleted file mode 100644 index 2f7b1325daa0..000000000000 --- a/go/extractor-smoke-test/main.go +++ /dev/null @@ -1,8 +0,0 @@ -package main - -import "fmt" - -func main() { - var i int = 1 - fmt.Println(i) -} diff --git a/go/extractor-smoke-test/test.sh b/go/extractor-smoke-test/test.sh deleted file mode 100755 index bd22da4d906e..000000000000 --- a/go/extractor-smoke-test/test.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -set -e - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" -cd $DIR - -rm -rf testdb - -codeql database create --language=go testdb --search-path ../.. -codeql dataset check testdb/db-go -codeql query run ../ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/ControlFlowNode_getASuccessor.ql --database=testdb --output=notracing-out.bqrs --search-path .. -codeql bqrs decode notracing-out.bqrs --format=csv --output=notracing-out.csv -diff -w -u <(sort notracing-out.csv) expected.csv - -# Now do it again with tracing enabled - -export CODEQL_EXTRACTOR_GO_BUILD_TRACING=on - -rm -rf testdb - -codeql database create --language=go testdb --search-path ../.. -codeql dataset check testdb/db-go -codeql query run ../ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/ControlFlowNode_getASuccessor.ql --database=testdb --output=tracing-out.bqrs --search-path .. -codeql bqrs decode tracing-out.bqrs --format=csv --output=tracing-out.csv -diff -w -u <(sort tracing-out.csv) expected.csv diff --git a/go/ql/integration-tests/test-extraction/test.py b/go/ql/integration-tests/test-extraction/test.py index e25b46801146..7b6caad350a1 100644 --- a/go/ql/integration-tests/test-extraction/test.py +++ b/go/ql/integration-tests/test-extraction/test.py @@ -5,3 +5,12 @@ def test_traced(codeql, go): def test_autobuild(codeql, go): codeql.database.create(source_root="src", extractor_option = ["extract_tests=true"]) + +def test_autobuild_traced(codeql, go): + # Autobuild under build tracing must produce the same database as untraced + # autobuild and explicit traced builds, all checked against test.expected. + codeql.database.create( + source_root="src", + extractor_option = ["extract_tests=true"], + _env={"CODEQL_EXTRACTOR_GO_BUILD_TRACING": "on"}, + ) From 5e4b7008390a553fc2e1643d9ba1104e1f376bce Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 18 Aug 2026 14:46:26 +0200 Subject: [PATCH 144/167] Go: de-bazel checks in test action The codegen drift and gofmt checks move to `semmle-code`, so drop them here to avoid duplication and replace the bazel build with a plain `go build ./...` sanity check. Keep the qhelp-to-markdown steps. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- go/actions/test/action.yml | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/go/actions/test/action.yml b/go/actions/test/action.yml index 4f3d7ad9377d..9f641e9125ae 100644 --- a/go/actions/test/action.yml +++ b/go/actions/test/action.yml @@ -1,12 +1,12 @@ name: Test Go extractor -description: Run build, QL tests, and optionally basic code sanity checks (formatting and generated code) for the Go extractor +description: Run build, QL tests, and optionally qhelp generation for the Go extractor inputs: go-test-version: description: Which Go version to use for running the tests required: false default: "~1.26.6" run-code-checks: - description: Whether to run formatting, code and qhelp generation checks + description: Whether to run qhelp generation checks required: false default: false runs: @@ -26,28 +26,11 @@ runs: shell: bash run: 'find .github/problem-matchers -name \*.json -exec echo "::add-matcher::{}" \;' - - name: Check checked-in generated code - if: inputs.run-code-checks == 'true' - shell: bash - run: | - bazel run go:gen - git add . - git diff --exit-code HEAD || ( - echo "please run bazel run //go:gen" - exit 1 - ) - - name: Build shell: bash run: | - bazel run go:go-installer - - - name: Check that all Go code is autoformatted - if: inputs.run-code-checks == 'true' && !cancelled() - shell: bash - run: | - cd go - make check-formatting + cd go/extractor + go build ./... - name: Compile qhelp files to markdown if: inputs.run-code-checks == 'true' && !cancelled() From f499e73c5e28741bd6173bd6b67c39c907a76b20 Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 18 Aug 2026 13:15:03 +0200 Subject: [PATCH 145/167] unified: Disable build on linux-arm64 --- unified/BUILD.bazel | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/unified/BUILD.bazel b/unified/BUILD.bazel index c30dbbdeee58..738a95b31552 100644 --- a/unified/BUILD.bazel +++ b/unified/BUILD.bazel @@ -1,6 +1,6 @@ load("@rules_pkg//pkg:mappings.bzl", "pkg_filegroup") +load("//misc/bazel:os.bzl", "codeql_platform_select") load("//misc/bazel:pkg.bzl", "codeql_pack", "codeql_pkg_files") -load("//misc/bazel:utils.bzl", "select_os") package(default_visibility = ["//visibility:public"]) @@ -41,12 +41,14 @@ codeql_pkg_files( codeql_pkg_files( name = "extractor-arch", - exes = select_os( - posix = ["//unified/extractor"], - windows = ["//unified/extractor-unsupported-os:extractor"], - ) + select_os( - linux = ["//unified/swift-syntax-rs:swift_runtime_libs"], - otherwise = [], + exes = codeql_platform_select( + linux64 = [ + "//unified/extractor", + "//unified/swift-syntax-rs:swift_runtime_libs", + ], + linux_arm64 = ["//unified/extractor-unsupported-os:extractor"], + osx64 = ["//unified/extractor"], + win64 = ["//unified/extractor-unsupported-os:extractor"], ), prefix = "tools/{CODEQL_PLATFORM}", ) From 3048f4788ed8339e238669c2aa85ab2324100cb2 Mon Sep 17 00:00:00 2001 From: Jordan Pike Date: Tue, 18 Aug 2026 10:13:43 -0400 Subject: [PATCH 146/167] Split payload-field actor checks into EventActorIfCheck Per review, ActorIfCheck now only covers github.actor and github.triggering_actor, which are populated for every event and need no event-validity override. Checks on actor fields read from the event payload move to the new EventActorIfCheck class, which only protects events whose payload populates the checked field. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4084febb-f9c7-44df-baf3-c8be8e9932a7 --- ...026-08-17-actor-if-check-event-validity.md | 2 +- .../codeql/actions/security/ControlChecks.qll | 39 ++++++++++--------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/actions/ql/lib/change-notes/2026-08-17-actor-if-check-event-validity.md b/actions/ql/lib/change-notes/2026-08-17-actor-if-check-event-validity.md index 18d10595a756..4397e9487415 100644 --- a/actions/ql/lib/change-notes/2026-08-17-actor-if-check-event-validity.md +++ b/actions/ql/lib/change-notes/2026-08-17-actor-if-check-event-validity.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* Altered the logic of `ActorIfCheck` so that checks on actor fields read from the event payload (e.g. `github.event.pull_request.user.login`) only count as protection for events whose payload actually populates that field. Previously, a condition such as `github.event.pull_request.user.login != 'name'` on a workflow triggered by `issues` events was treated as a protective check even though `github.event.pull_request` is not populated for `issues` events, which makes the condition vacuous. This change will result in more results being found by the queries that rely on control checks, such as `actions/code-injection/critical`. +* Checks on actor fields read from the event payload (e.g. `github.event.pull_request.user.login`) now only count as protection for events whose payload actually populates that field. These checks were split out of `ActorIfCheck` into a new class `EventActorIfCheck`, and `ActorIfCheck` now only covers `github.actor` and `github.triggering_actor`. Previously, a condition such as `github.event.pull_request.user.login != 'name'` on a workflow triggered by `issues` events was treated as a protective check even though `github.event.pull_request` is not populated for `issues` events, which makes the condition vacuous. This change will result in more results being found by the queries that rely on control checks, such as `actions/code-injection/critical`. diff --git a/actions/ql/lib/codeql/actions/security/ControlChecks.qll b/actions/ql/lib/codeql/actions/security/ControlChecks.qll index a1058610871c..a9fd20c12565 100644 --- a/actions/ql/lib/codeql/actions/security/ControlChecks.qll +++ b/actions/ql/lib/codeql/actions/security/ControlChecks.qll @@ -329,13 +329,6 @@ private string eventPayloadActorFieldRegex(string context_prefix) { class ActorIfCheck extends ActorCheck instanceof If { ActorIfCheck() { - // eg: github.event.pull_request.user.login == 'admin' - exists( - normalizeExpr(this.getCondition()) - .regexpFind([eventPayloadActorFieldRegex(_), "\\bgithub\\.event\\.sender\\.login\\b"], _, - _) - ) - or // eg: github.actor == 'admin' // eg: github.triggering_actor == 'admin' exists( @@ -344,28 +337,38 @@ class ActorIfCheck extends ActorCheck instanceof If { ) and not normalizeExpr(this.getCondition()).matches("%[bot]%") } +} + +/** An If node that checks an actor field from the event payload */ +class EventActorIfCheck extends ActorCheck instanceof If { + EventActorIfCheck() { + // eg: github.event.pull_request.user.login == 'admin' + exists( + normalizeExpr(this.getCondition()) + .regexpFind([eventPayloadActorFieldRegex(_), "\\bgithub\\.event\\.sender\\.login\\b"], _, + _) + ) + } override predicate protectsCategoryAndEvent(string category, string event) { ActorCheck.super.protectsCategoryAndEvent(category, event) and ( - // `github.actor`, `github.triggering_actor` and `github.event.sender.login` - // are populated for every event + // the `sender` object is part of every webhook event payload, + // so `github.event.sender.login` is populated for every event exists( normalizeExpr(this.(If).getCondition()) .regexpFind("\\bgithub\\.event\\.sender\\.login\\b", _, _) ) or - exists( - normalizeExpr(this.(If).getCondition()) - .regexpFind(["\\bgithub\\.actor\\b", "\\bgithub\\.triggering_actor\\b",], _, _) - ) and - not normalizeExpr(this.(If).getCondition()).matches("%[bot]%") - or - // actor fields read from the event payload are only populated for events - // whose payload contains the corresponding context. eg: a check on + // other actor fields are only populated for events whose payload contains + // the corresponding context. eg: a check on // `github.event.pull_request.user.login` cannot restrict the actor of an // `issues` event since `github.event.pull_request` is not populated there, - // which makes the condition vacuous + // which makes the condition vacuous. + // note that `github.event.head_commit` and `github.event.commits` are only + // populated for `push` events, which are not protectable by ActorCheck, so + // checks on those fields never count as protection here. they are still + // matched so that these Ifs keep being classified as actor checks exists(string context_prefix | contextTriggerDataModel(event, context_prefix) and exists( From e9d9d3a007b115258255d83210505a8a28dbcf4d Mon Sep 17 00:00:00 2001 From: Jordan Pike Date: Tue, 18 Aug 2026 15:00:09 -0400 Subject: [PATCH 147/167] Simplify EventActorIfCheck by binding context_prefix as a field Per review, fold the sender case into eventPayloadActorFieldRegex and keep the matched context_prefix on the class instead of re-matching in the override. Also move the helper next to the class that uses it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4084febb-f9c7-44df-baf3-c8be8e9932a7 --- .../codeql/actions/security/ControlChecks.qll | 61 ++++++++----------- 1 file changed, 25 insertions(+), 36 deletions(-) diff --git a/actions/ql/lib/codeql/actions/security/ControlChecks.qll b/actions/ql/lib/codeql/actions/security/ControlChecks.qll index a9fd20c12565..675c1d18852b 100644 --- a/actions/ql/lib/codeql/actions/security/ControlChecks.qll +++ b/actions/ql/lib/codeql/actions/security/ControlChecks.qll @@ -312,6 +312,18 @@ class LabelIfCheck extends LabelCheck instanceof If { } } +class ActorIfCheck extends ActorCheck instanceof If { + ActorIfCheck() { + // eg: github.actor == 'admin' + // eg: github.triggering_actor == 'admin' + exists( + normalizeExpr(this.getCondition()) + .regexpFind(["\\bgithub\\.actor\\b", "\\bgithub\\.triggering_actor\\b",], _, _) + ) and + not normalizeExpr(this.getCondition()).matches("%[bot]%") + } +} + /** * Gets a regular expression matching a condition on an actor field that is * only populated for events whose payload contains the `context_prefix` context. @@ -325,57 +337,34 @@ private string eventPayloadActorFieldRegex(string context_prefix) { or context_prefix = "github.event.commits" and result = "\\bgithub\\.event\\.commits.*\\.author\\.name\\b" -} - -class ActorIfCheck extends ActorCheck instanceof If { - ActorIfCheck() { - // eg: github.actor == 'admin' - // eg: github.triggering_actor == 'admin' - exists( - normalizeExpr(this.getCondition()) - .regexpFind(["\\bgithub\\.actor\\b", "\\bgithub\\.triggering_actor\\b",], _, _) - ) and - not normalizeExpr(this.getCondition()).matches("%[bot]%") - } + or + context_prefix = "github.event.sender" and + result = "\\bgithub\\.event\\.sender\\.login\\b" } /** An If node that checks an actor field from the event payload */ class EventActorIfCheck extends ActorCheck instanceof If { + string context_prefix; + EventActorIfCheck() { // eg: github.event.pull_request.user.login == 'admin' exists( normalizeExpr(this.getCondition()) - .regexpFind([eventPayloadActorFieldRegex(_), "\\bgithub\\.event\\.sender\\.login\\b"], _, - _) + .regexpFind(eventPayloadActorFieldRegex(context_prefix), _, _) ) } override predicate protectsCategoryAndEvent(string category, string event) { ActorCheck.super.protectsCategoryAndEvent(category, event) and ( - // the `sender` object is part of every webhook event payload, - // so `github.event.sender.login` is populated for every event - exists( - normalizeExpr(this.(If).getCondition()) - .regexpFind("\\bgithub\\.event\\.sender\\.login\\b", _, _) - ) + // the `sender` object is part of every webhook event payload + context_prefix = "github.event.sender" or - // other actor fields are only populated for events whose payload contains - // the corresponding context. eg: a check on - // `github.event.pull_request.user.login` cannot restrict the actor of an - // `issues` event since `github.event.pull_request` is not populated there, - // which makes the condition vacuous. - // note that `github.event.head_commit` and `github.event.commits` are only - // populated for `push` events, which are not protectable by ActorCheck, so - // checks on those fields never count as protection here. they are still - // matched so that these Ifs keep being classified as actor checks - exists(string context_prefix | - contextTriggerDataModel(event, context_prefix) and - exists( - normalizeExpr(this.(If).getCondition()) - .regexpFind(eventPayloadActorFieldRegex(context_prefix), _, _) - ) - ) + // other actor fields only restrict events whose payload populates them. + // eg: `github.event.pull_request.user.login` cannot restrict the actor + // of an `issues` event since `github.event.pull_request` is not + // populated there, which makes the condition vacuous + contextTriggerDataModel(event, context_prefix) ) } } From dc6ee115443e58ff8f84ad2d2118aaafbf2b65b5 Mon Sep 17 00:00:00 2001 From: Jordan Pike Date: Tue, 18 Aug 2026 15:54:56 -0400 Subject: [PATCH 148/167] Add test coverage for sender, head_commit and commits checks Pins the sender.login special case (protects every event) and that head_commit/commits checks do not protect issues events, where those fields are not populated. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4084febb-f9c7-44df-baf3-c8be8e9932a7 --- .../workflows/actor_check_wrong_event.yml | 26 +++++++++++++++++++ .../CWE-094/CodeInjectionCritical.expected | 5 ++++ .../CWE-094/CodeInjectionMedium.expected | 4 +++ 3 files changed, 35 insertions(+) diff --git a/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/actor_check_wrong_event.yml b/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/actor_check_wrong_event.yml index fce829d4a9b4..982956b3d953 100644 --- a/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/actor_check_wrong_event.yml +++ b/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/actor_check_wrong_event.yml @@ -18,3 +18,29 @@ jobs: if: github.actor == 'trusted-user' steps: - run: echo '${{ github.event.issue.title }}' + + # The `sender` object is part of every webhook event payload, so this + # check is effective and the injectable step is protected. + valid-sender-check: + runs-on: ubuntu-latest + if: github.event.sender.login == 'trusted-user' + steps: + - run: echo '${{ github.event.issue.title }}' + + # `github.event.head_commit` is only populated for `push` events, so this + # condition is always true for `issues` events and does not protect the + # injectable step. + vacuous-head-commit-check: + runs-on: ubuntu-latest + if: github.event.head_commit.author.name != 'some-bot' + steps: + - run: echo '${{ github.event.issue.title }}' + + # `github.event.commits` is only populated for `push` events, so this + # condition is always true for `issues` events and does not protect the + # injectable step. + vacuous-commits-check: + runs-on: ubuntu-latest + if: github.event.commits[0].author.name != 'some-bot' + steps: + - run: echo '${{ github.event.issue.title }}' diff --git a/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionCritical.expected b/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionCritical.expected index d58f13b44d7f..14e50942d734 100644 --- a/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionCritical.expected +++ b/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionCritical.expected @@ -273,6 +273,9 @@ nodes | .github/workflows/actor_check_valid_event.yml:12:21:12:58 | github.event.pull_request.title | semmle.label | github.event.pull_request.title | | .github/workflows/actor_check_wrong_event.yml:12:21:12:51 | github.event.issue.title | semmle.label | github.event.issue.title | | .github/workflows/actor_check_wrong_event.yml:20:21:20:51 | github.event.issue.title | semmle.label | github.event.issue.title | +| .github/workflows/actor_check_wrong_event.yml:28:21:28:51 | github.event.issue.title | semmle.label | github.event.issue.title | +| .github/workflows/actor_check_wrong_event.yml:37:21:37:51 | github.event.issue.title | semmle.label | github.event.issue.title | +| .github/workflows/actor_check_wrong_event.yml:46:21:46:51 | github.event.issue.title | semmle.label | github.event.issue.title | | .github/workflows/argus_case_study.yml:15:9:24:6 | Uses Step: remove_quotations [replaced] | semmle.label | Uses Step: remove_quotations [replaced] | | .github/workflows/argus_case_study.yml:17:25:17:53 | github.event.issue.title | semmle.label | github.event.issue.title | | .github/workflows/argus_case_study.yml:22:20:22:39 | env.ISSUE_TITLE | semmle.label | env.ISSUE_TITLE | @@ -714,6 +717,8 @@ subpaths | .github/actions/external/ultralytics/actions/action.yaml:96:16:96:33 | inputs.body | .github/workflows/test29.yml:35:18:35:54 | github.event.pull_request.body | .github/actions/external/ultralytics/actions/action.yaml:96:16:96:33 | inputs.body | Potential code injection in $@, which may be controlled by an external user ($@). | .github/actions/external/ultralytics/actions/action.yaml:96:16:96:33 | inputs.body | ${{ inputs.body }} | .github/workflows/test29.yml:12:3:12:21 | pull_request_target | pull_request_target | | .github/actions/external/ultralytics/actions/action.yaml:223:25:223:60 | github.head_ref \|\| github.ref | .github/actions/external/ultralytics/actions/action.yaml:223:25:223:60 | github.head_ref \|\| github.ref | .github/actions/external/ultralytics/actions/action.yaml:223:25:223:60 | github.head_ref \|\| github.ref | Potential code injection in $@, which may be controlled by an external user ($@). | .github/actions/external/ultralytics/actions/action.yaml:223:25:223:60 | github.head_ref \|\| github.ref | ${{ github.head_ref \|\| github.ref }} | .github/workflows/test29.yml:12:3:12:21 | pull_request_target | pull_request_target | | .github/workflows/actor_check_wrong_event.yml:12:21:12:51 | github.event.issue.title | .github/workflows/actor_check_wrong_event.yml:12:21:12:51 | github.event.issue.title | .github/workflows/actor_check_wrong_event.yml:12:21:12:51 | github.event.issue.title | Potential code injection in $@, which may be controlled by an external user ($@). | .github/workflows/actor_check_wrong_event.yml:12:21:12:51 | github.event.issue.title | ${{ github.event.issue.title }} | .github/workflows/actor_check_wrong_event.yml:2:3:2:8 | issues | issues | +| .github/workflows/actor_check_wrong_event.yml:37:21:37:51 | github.event.issue.title | .github/workflows/actor_check_wrong_event.yml:37:21:37:51 | github.event.issue.title | .github/workflows/actor_check_wrong_event.yml:37:21:37:51 | github.event.issue.title | Potential code injection in $@, which may be controlled by an external user ($@). | .github/workflows/actor_check_wrong_event.yml:37:21:37:51 | github.event.issue.title | ${{ github.event.issue.title }} | .github/workflows/actor_check_wrong_event.yml:2:3:2:8 | issues | issues | +| .github/workflows/actor_check_wrong_event.yml:46:21:46:51 | github.event.issue.title | .github/workflows/actor_check_wrong_event.yml:46:21:46:51 | github.event.issue.title | .github/workflows/actor_check_wrong_event.yml:46:21:46:51 | github.event.issue.title | Potential code injection in $@, which may be controlled by an external user ($@). | .github/workflows/actor_check_wrong_event.yml:46:21:46:51 | github.event.issue.title | ${{ github.event.issue.title }} | .github/workflows/actor_check_wrong_event.yml:2:3:2:8 | issues | issues | | .github/workflows/argus_case_study.yml:27:33:27:77 | steps.remove_quotations.outputs.replaced | .github/workflows/argus_case_study.yml:17:25:17:53 | github.event.issue.title | .github/workflows/argus_case_study.yml:27:33:27:77 | steps.remove_quotations.outputs.replaced | Potential code injection in $@, which may be controlled by an external user ($@). | .github/workflows/argus_case_study.yml:27:33:27:77 | steps.remove_quotations.outputs.replaced | ${{steps.remove_quotations.outputs.replaced}} | .github/workflows/argus_case_study.yml:4:3:4:8 | issues | issues | | .github/workflows/artifactpoisoning1.yml:27:67:27:92 | steps.pr.outputs.id | .github/workflows/artifactpoisoning1.yml:14:9:20:6 | Uses Step | .github/workflows/artifactpoisoning1.yml:27:67:27:92 | steps.pr.outputs.id | Potential code injection in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning1.yml:27:67:27:92 | steps.pr.outputs.id | ${{ steps.pr.outputs.id }} | .github/workflows/artifactpoisoning1.yml:4:3:4:14 | workflow_run | workflow_run | | .github/workflows/artifactpoisoning2.yml:22:17:22:42 | steps.pr.outputs.id | .github/workflows/artifactpoisoning2.yml:13:9:19:6 | Uses Step: pr | .github/workflows/artifactpoisoning2.yml:22:17:22:42 | steps.pr.outputs.id | Potential code injection in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning2.yml:22:17:22:42 | steps.pr.outputs.id | ${{ steps.pr.outputs.id }} | .github/workflows/artifactpoisoning2.yml:4:3:4:14 | workflow_run | workflow_run | diff --git a/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionMedium.expected b/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionMedium.expected index 9833fd104e96..f10a7a55c049 100644 --- a/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionMedium.expected +++ b/actions/ql/test/query-tests/Security/CWE-094/CodeInjectionMedium.expected @@ -273,6 +273,9 @@ nodes | .github/workflows/actor_check_valid_event.yml:12:21:12:58 | github.event.pull_request.title | semmle.label | github.event.pull_request.title | | .github/workflows/actor_check_wrong_event.yml:12:21:12:51 | github.event.issue.title | semmle.label | github.event.issue.title | | .github/workflows/actor_check_wrong_event.yml:20:21:20:51 | github.event.issue.title | semmle.label | github.event.issue.title | +| .github/workflows/actor_check_wrong_event.yml:28:21:28:51 | github.event.issue.title | semmle.label | github.event.issue.title | +| .github/workflows/actor_check_wrong_event.yml:37:21:37:51 | github.event.issue.title | semmle.label | github.event.issue.title | +| .github/workflows/actor_check_wrong_event.yml:46:21:46:51 | github.event.issue.title | semmle.label | github.event.issue.title | | .github/workflows/argus_case_study.yml:15:9:24:6 | Uses Step: remove_quotations [replaced] | semmle.label | Uses Step: remove_quotations [replaced] | | .github/workflows/argus_case_study.yml:17:25:17:53 | github.event.issue.title | semmle.label | github.event.issue.title | | .github/workflows/argus_case_study.yml:22:20:22:39 | env.ISSUE_TITLE | semmle.label | env.ISSUE_TITLE | @@ -714,6 +717,7 @@ subpaths | .github/actions/action7/action.yml:217:25:217:60 | github.head_ref \|\| github.ref | .github/actions/action7/action.yml:217:25:217:60 | github.head_ref \|\| github.ref | .github/actions/action7/action.yml:217:25:217:60 | github.head_ref \|\| github.ref | Potential code injection in $@, which may be controlled by an external user. | .github/actions/action7/action.yml:217:25:217:60 | github.head_ref \|\| github.ref | ${{ github.head_ref \|\| github.ref }} | | .github/workflows/actor_check_valid_event.yml:12:21:12:58 | github.event.pull_request.title | .github/workflows/actor_check_valid_event.yml:12:21:12:58 | github.event.pull_request.title | .github/workflows/actor_check_valid_event.yml:12:21:12:58 | github.event.pull_request.title | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/actor_check_valid_event.yml:12:21:12:58 | github.event.pull_request.title | ${{ github.event.pull_request.title }} | | .github/workflows/actor_check_wrong_event.yml:20:21:20:51 | github.event.issue.title | .github/workflows/actor_check_wrong_event.yml:20:21:20:51 | github.event.issue.title | .github/workflows/actor_check_wrong_event.yml:20:21:20:51 | github.event.issue.title | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/actor_check_wrong_event.yml:20:21:20:51 | github.event.issue.title | ${{ github.event.issue.title }} | +| .github/workflows/actor_check_wrong_event.yml:28:21:28:51 | github.event.issue.title | .github/workflows/actor_check_wrong_event.yml:28:21:28:51 | github.event.issue.title | .github/workflows/actor_check_wrong_event.yml:28:21:28:51 | github.event.issue.title | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/actor_check_wrong_event.yml:28:21:28:51 | github.event.issue.title | ${{ github.event.issue.title }} | | .github/workflows/changed-files.yml:20:24:20:76 | steps.changed-files1.outputs.all_changed_files | .github/workflows/changed-files.yml:15:9:18:6 | Uses Step: changed-files1 | .github/workflows/changed-files.yml:20:24:20:76 | steps.changed-files1.outputs.all_changed_files | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/changed-files.yml:20:24:20:76 | steps.changed-files1.outputs.all_changed_files | ${{ steps.changed-files1.outputs.all_changed_files }} | | .github/workflows/changed-files.yml:40:24:40:76 | steps.changed-files3.outputs.all_changed_files | .github/workflows/changed-files.yml:33:9:38:6 | Uses Step: changed-files3 | .github/workflows/changed-files.yml:40:24:40:76 | steps.changed-files3.outputs.all_changed_files | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/changed-files.yml:40:24:40:76 | steps.changed-files3.outputs.all_changed_files | ${{ steps.changed-files3.outputs.all_changed_files }} | | .github/workflows/changed-files.yml:58:24:58:76 | steps.changed-files5.outputs.all_changed_files | .github/workflows/changed-files.yml:53:9:56:6 | Uses Step: changed-files5 | .github/workflows/changed-files.yml:58:24:58:76 | steps.changed-files5.outputs.all_changed_files | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/changed-files.yml:58:24:58:76 | steps.changed-files5.outputs.all_changed_files | ${{ steps.changed-files5.outputs.all_changed_files }} | From bb6b3b9ed3ca2f0cc4d79c12a98b41f969d5e438 Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 19 Aug 2026 06:12:22 +0200 Subject: [PATCH 149/167] unified: Update error message --- unified/extractor-unsupported-os/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unified/extractor-unsupported-os/src/main.rs b/unified/extractor-unsupported-os/src/main.rs index a59217a2c09d..f8d4da14845e 100644 --- a/unified/extractor-unsupported-os/src/main.rs +++ b/unified/extractor-unsupported-os/src/main.rs @@ -1,4 +1,4 @@ fn main() { - eprintln!("Unsupported OS. Extraction is not currently supported on Windows."); + eprintln!("Unsupported OS. Extraction is not currently supported on this platform."); std::process::exit(1); } From 29f91cc0d556be67295d5cb40f598cc5cf654a6c Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 19 Aug 2026 09:35:18 +0200 Subject: [PATCH 150/167] Rust: Use `zstd` compression for TRAP files by default --- rust/codeql-extractor.yml | 4 ++-- rust/extractor/src/config.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rust/codeql-extractor.yml b/rust/codeql-extractor.yml index 6675dd3a2718..4556e29ca9d3 100644 --- a/rust/codeql-extractor.yml +++ b/rust/codeql-extractor.yml @@ -25,8 +25,8 @@ options: title: Controls compression for the TRAP files written by the extractor. description: > This option is only intended for use in debugging the extractor. Accepted - values are 'gzip' (to write gzip-compressed TRAP) 'zstd' (to write - Zstandard-compressed TRAP) and 'none' (the default, to write uncompressed + values are 'gzip' (to write gzip-compressed TRAP) 'zstd' (the default, + to write Zstandard-compressed TRAP) and 'none' (to write uncompressed TRAP). type: string pattern: "^(none|gzip|zstd)$" diff --git a/rust/extractor/src/config.rs b/rust/extractor/src/config.rs index 8ff68ea8a547..bd615c083bc2 100644 --- a/rust/extractor/src/config.rs +++ b/rust/extractor/src/config.rs @@ -28,9 +28,9 @@ use std::path::{Path, PathBuf}; #[serde(rename_all = "lowercase")] #[clap(rename_all = "lowercase")] pub enum Compression { - #[default] // TODO make gzip default None, Gzip, + #[default] Zstd, } From 946e116fa327062ed6c46a235e5ab9a7a3fab655 Mon Sep 17 00:00:00 2001 From: hugo-syn Date: Wed, 19 Aug 2026 12:07:14 +0200 Subject: [PATCH 151/167] C#: inline TestAdditionalTaintStep.qll into AdditionalTaintStep.ql Addresses review comment: the test-only AdditionalTaintStep subclass only has a single consumer, so fold it directly into the query file instead of keeping it in a separate .qll. Co-Authored-By: Claude Sonnet 5 --- .../AdditionalTaintStep.ql | 19 ++++++++++++++++++- .../TestAdditionalTaintStep.qll | 19 ------------------- 2 files changed, 18 insertions(+), 20 deletions(-) delete mode 100644 csharp/ql/test/library-tests/dataflow/additional-taint-step/TestAdditionalTaintStep.qll diff --git a/csharp/ql/test/library-tests/dataflow/additional-taint-step/AdditionalTaintStep.ql b/csharp/ql/test/library-tests/dataflow/additional-taint-step/AdditionalTaintStep.ql index b499c2ce51d1..39d9e154b6f7 100644 --- a/csharp/ql/test/library-tests/dataflow/additional-taint-step/AdditionalTaintStep.ql +++ b/csharp/ql/test/library-tests/dataflow/additional-taint-step/AdditionalTaintStep.ql @@ -1,6 +1,23 @@ import csharp +import semmle.code.csharp.dataflow.FlowSteps import semmle.code.csharp.dataflow.internal.TaintTrackingPrivate -import TestAdditionalTaintStep + +/** + * A test-only additional taint step that treats calls to `Marker.Step` as + * propagating taint from the argument to the call result, to verify that + * `AdditionalTaintStep` subclasses are picked up by `defaultAdditionalTaintStep`. + */ +private class MarkerStepTaintStep extends AdditionalTaintStep { + override predicate step(DataFlow::Node node1, DataFlow::Node node2) { + exists(MethodCall mc | + mc.getTarget().hasName("Step") and + mc.getTarget().getDeclaringType().hasName("Marker") + | + node1.asExpr() = mc.getArgument(0) and + node2.asExpr() = mc + ) + } +} from DataFlow::Node src, DataFlow::Node sink, string model where defaultAdditionalTaintStep(src, sink, model) and model = "AdditionalTaintStep" diff --git a/csharp/ql/test/library-tests/dataflow/additional-taint-step/TestAdditionalTaintStep.qll b/csharp/ql/test/library-tests/dataflow/additional-taint-step/TestAdditionalTaintStep.qll deleted file mode 100644 index d17109ba730c..000000000000 --- a/csharp/ql/test/library-tests/dataflow/additional-taint-step/TestAdditionalTaintStep.qll +++ /dev/null @@ -1,19 +0,0 @@ -import csharp -import semmle.code.csharp.dataflow.FlowSteps - -/** - * A test-only additional taint step that treats calls to `Marker.Step` as - * propagating taint from the argument to the call result, to verify that - * `AdditionalTaintStep` subclasses are picked up by `defaultAdditionalTaintStep`. - */ -private class MarkerStepTaintStep extends AdditionalTaintStep { - override predicate step(DataFlow::Node node1, DataFlow::Node node2) { - exists(MethodCall mc | - mc.getTarget().hasName("Step") and - mc.getTarget().getDeclaringType().hasName("Marker") - | - node1.asExpr() = mc.getArgument(0) and - node2.asExpr() = mc - ) - } -} From 54750786824defe2da92cd2bc7d8d5376903f5c7 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 19 Aug 2026 14:01:02 +0200 Subject: [PATCH 152/167] C#: Address review comments. --- csharp/ql/lib/change-notes/2026-07-17-nuget-package-restore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/ql/lib/change-notes/2026-07-17-nuget-package-restore.md b/csharp/ql/lib/change-notes/2026-07-17-nuget-package-restore.md index 0673bffa3049..5dd7388d04fe 100644 --- a/csharp/ql/lib/change-notes/2026-07-17-nuget-package-restore.md +++ b/csharp/ql/lib/change-notes/2026-07-17-nuget-package-restore.md @@ -1,4 +1,4 @@ --- category: majorAnalysis --- -* Simplified and streamlined the use of NuGet sources when downloading dependencies. In fallback scenarios and specialized package downloads, NuGet sources are now passed directly to `dotnet restore` via `-s`. Furthermore, no `nuget.config` files are created for fallback scenarios, and private registries are used when attempting to download missing packages that were not restored as part of the normal `dotnet restore` process. +* Simplified and streamlined the use of NuGet sources when downloading dependencies. In fallback scenarios and specialized package downloads, NuGet sources are now passed directly to `dotnet restore` via the CLI. Furthermore, no `nuget.config` files are created for fallback scenarios, and private registries are used when attempting to download missing packages that were not restored as part of the normal `dotnet restore` process. From 9919db5493601eaa1c5354602f36c39351168b07 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 19 Aug 2026 16:33:44 +0200 Subject: [PATCH 153/167] Actions: Fix typo in change note --- .../change-notes/2026-07-22-environment-check-sanitizer-mad.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/ql/lib/change-notes/2026-07-22-environment-check-sanitizer-mad.md b/actions/ql/lib/change-notes/2026-07-22-environment-check-sanitizer-mad.md index ef901cdc7603..0af62ba426de 100644 --- a/actions/ql/lib/change-notes/2026-07-22-environment-check-sanitizer-mad.md +++ b/actions/ql/lib/change-notes/2026-07-22-environment-check-sanitizer-mad.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* Added an option to `EnvironmentCheck` to become specified by a MaD model, otherwise it will continue as the default it previously was. Without adding models to `actions/ql/lib/ext/config/deployment_environment.yml` the behavior of every query will be unchanged. When models are added queries using `ControlCheck` may find more results in cases where an enironment is no longer a sufficient sanitizer. \ No newline at end of file +* Added an option to `EnvironmentCheck` to become specified by a MaD model, otherwise it will continue as the default it previously was. Without adding models to `actions/ql/lib/ext/config/deployment_environment.yml` the behavior of every query will be unchanged. When models are added queries using `ControlCheck` may find more results in cases where an environment is no longer a sufficient sanitizer. \ No newline at end of file From f6e24e33d9f7064e2fa0aa71e91cc7a887eb2a38 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 19 Aug 2026 17:52:15 +0200 Subject: [PATCH 154/167] C++/Ruby: Clean up supported compilers * C++: Since preliminary support for clang-cl was added, our frontend provider has much improved support. Drop the preliminary note. * Ruby: We require glibc 2.17 everywhere on Linux x86. So, Ruby isn't special here anymore. Drop the note. --- .../supported-versions-compilers.rst | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index 15b21cc94b04..8e7928cb2784 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -4,13 +4,13 @@ :stub-columns: 1 Language,Variants,Compilers,Extensions - C/C++,"C89, C99, C11, C17, C23, C++98, C++03, C++11, C++14, C++17, C++20, C++23 [1]_ [2]_ [3]_","Clang (including clang-cl [4]_ and armclang) extensions (up to Clang 21), + C/C++,"C89, C99, C11, C17, C23, C++98, C++03, C++11, C++14, C++17, C++20, C++23 [1]_ [2]_ [3]_","Clang (including clang-cl and armclang) extensions (up to Clang 21), GNU extensions (up to GCC 15), Microsoft extensions (up to VS 2022), - Arm Compiler 5 [5]_","``.cpp``, ``.c++``, ``.cxx``, ``.hpp``, ``.hh``, ``.h++``, ``.hxx``, ``.c``, ``.cc``, ``.h``" + Arm Compiler 5 [4]_","``.cpp``, ``.c++``, ``.cxx``, ``.hpp``, ``.hh``, ``.h++``, ``.hxx``, ``.c``, ``.cc``, ``.h``" C#,C# up to 14,"Microsoft Visual Studio up to 2019 with .NET up to 4.8, .NET Core up to 3.1 @@ -18,30 +18,28 @@ .NET 5, .NET 6, .NET 7, .NET 8, .NET 9, .NET 10","``.sln``, ``.slnx``, ``.csproj``, ``.cs``, ``.cshtml``, ``.xaml``" GitHub Actions,"Not applicable",Not applicable,"``.github/workflows/*.yml``, ``.github/workflows/*.yaml``, ``**/action.yml``, ``**/action.yaml``" Go (aka Golang), "Go up to 1.26", "Go 1.11 or more recent", ``.go`` - Java,"Java 7 to 26 [6]_","javac (OpenJDK and Oracle JDK), + Java,"Java 7 to 26 [5]_","javac (OpenJDK and Oracle JDK), - Eclipse compiler for Java (ECJ) [7]_",``.java`` + Eclipse compiler for Java (ECJ) [6]_",``.java`` Kotlin,"Kotlin 1.8.0 to 2.4.1\ *x*","kotlinc",``.kt`` - JavaScript,ECMAScript 2022 or lower,Not applicable,"``.js``, ``.jsx``, ``.mjs``, ``.es``, ``.es6``, ``.htm``, ``.html``, ``.xhtm``, ``.xhtml``, ``.vue``, ``.hbs``, ``.ejs``, ``.njk``, ``.json``, ``.yaml``, ``.yml``, ``.raml``, ``.xml`` [8]_" - Python [9]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14",Not applicable,``.py`` - Ruby [10]_,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" - Rust [11]_,"Rust editions 2021 and 2024","Rust compiler","``.rs``, ``Cargo.toml``" - Swift [12]_ [13]_,"Swift 5.4-6.3","Swift compiler","``.swift``" - TypeScript [14]_,"2.6-7.0",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" + JavaScript,ECMAScript 2022 or lower,Not applicable,"``.js``, ``.jsx``, ``.mjs``, ``.es``, ``.es6``, ``.htm``, ``.html``, ``.xhtm``, ``.xhtml``, ``.vue``, ``.hbs``, ``.ejs``, ``.njk``, ``.json``, ``.yaml``, ``.yml``, ``.raml``, ``.xml`` [7]_" + Python [8]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14",Not applicable,``.py`` + Ruby,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" + Rust [9]_,"Rust editions 2021 and 2024","Rust compiler","``.rs``, ``Cargo.toml``" + Swift [10]_ [11]_,"Swift 5.4-6.3","Swift compiler","``.swift``" + TypeScript [12]_,"2.6-7.0",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" .. container:: footnote-group .. [1] C++20 modules are *not* supported. .. [2] C23 and C++23 support is currently in beta. .. [3] Objective-C, Objective-C++, C++/CLI, and C++/CX are not supported. - .. [4] Support for the clang-cl compiler is preliminary. - .. [5] Support for the Arm Compiler (armcc) is preliminary. - .. [6] Builds that execute on Java 7 to 26 can be analyzed. The analysis understands standard language features in Java 8 to 26; "preview" and "incubator" features are not supported. Source code using Java language versions older than Java 8 are analyzed as Java 8 code. - .. [7] ECJ is supported when the build invokes it via the Maven Compiler plugin or the Takari Lifecycle plugin. - .. [8] JSX and Flow code, YAML, JSON, HTML, and XML files may also be analyzed with JavaScript files. - .. [9] The extractor requires Python 3 to run. To analyze Python 2.7 you should install both versions of Python. - .. [10] Requires glibc 2.17. - .. [11] Requires ``rustup`` and ``cargo`` to be installed. Features from nightly toolchains are not supported. - .. [12] Support for the analysis of Swift requires macOS. - .. [13] Embedded Swift is not supported. - .. [14] TypeScript analysis is performed by running the JavaScript extractor with TypeScript enabled. This is the default. + .. [4] Support for the Arm Compiler (armcc) is preliminary. + .. [5] Builds that execute on Java 7 to 26 can be analyzed. The analysis understands standard language features in Java 8 to 26; "preview" and "incubator" features are not supported. Source code using Java language versions older than Java 8 are analyzed as Java 8 code. + .. [6] ECJ is supported when the build invokes it via the Maven Compiler plugin or the Takari Lifecycle plugin. + .. [7] JSX and Flow code, YAML, JSON, HTML, and XML files may also be analyzed with JavaScript files. + .. [8] The extractor requires Python 3 to run. To analyze Python 2.7 you should install both versions of Python. + .. [9] Requires ``rustup`` and ``cargo`` to be installed. Features from nightly toolchains are not supported. + .. [10] Support for the analysis of Swift requires macOS. + .. [11] Embedded Swift is not supported. + .. [12] TypeScript analysis is performed by running the JavaScript extractor with TypeScript enabled. This is the default. From 0a376e8023eebdfc888cbc87fae8f295f2f3fc1e Mon Sep 17 00:00:00 2001 From: Jordan Pike Date: Wed, 19 Aug 2026 11:59:07 -0400 Subject: [PATCH 155/167] Split change note into breaking and minorAnalysis notes The introduction of EventActorIfCheck is technically a breaking change for anything extending or referencing ActorIfCheck, so record the class split separately under the breaking category. Also stop naming a specific query in the analysis note since many queries use ControlCheck. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4084febb-f9c7-44df-baf3-c8be8e9932a7 --- .../change-notes/2026-08-17-actor-if-check-event-validity.md | 2 +- .../lib/change-notes/2026-08-18-split-event-actor-if-check.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 actions/ql/lib/change-notes/2026-08-18-split-event-actor-if-check.md diff --git a/actions/ql/lib/change-notes/2026-08-17-actor-if-check-event-validity.md b/actions/ql/lib/change-notes/2026-08-17-actor-if-check-event-validity.md index 4397e9487415..72f3c3fd4ece 100644 --- a/actions/ql/lib/change-notes/2026-08-17-actor-if-check-event-validity.md +++ b/actions/ql/lib/change-notes/2026-08-17-actor-if-check-event-validity.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* Checks on actor fields read from the event payload (e.g. `github.event.pull_request.user.login`) now only count as protection for events whose payload actually populates that field. These checks were split out of `ActorIfCheck` into a new class `EventActorIfCheck`, and `ActorIfCheck` now only covers `github.actor` and `github.triggering_actor`. Previously, a condition such as `github.event.pull_request.user.login != 'name'` on a workflow triggered by `issues` events was treated as a protective check even though `github.event.pull_request` is not populated for `issues` events, which makes the condition vacuous. This change will result in more results being found by the queries that rely on control checks, such as `actions/code-injection/critical`. +* Checks on actor fields read from the event payload (e.g. `github.event.pull_request.user.login`) now only count as protection for events whose payload actually populates that field. Previously, a condition such as `github.event.pull_request.user.login != 'name'` on a workflow triggered by `issues` events was treated as a protective check even though `github.event.pull_request` is not populated for `issues` events, which makes the condition vacuous. This change may result in more alerts for queries using the `ControlCheck` class. diff --git a/actions/ql/lib/change-notes/2026-08-18-split-event-actor-if-check.md b/actions/ql/lib/change-notes/2026-08-18-split-event-actor-if-check.md new file mode 100644 index 000000000000..6b6d94df337c --- /dev/null +++ b/actions/ql/lib/change-notes/2026-08-18-split-event-actor-if-check.md @@ -0,0 +1,4 @@ +--- +category: breaking +--- +* Checks on actor fields read from the event payload (e.g. `github.event.pull_request.user.login`) were split out of `ActorIfCheck` into a new class `EventActorIfCheck`. The `ActorIfCheck` class now only covers `github.actor` and `github.triggering_actor`. From 50455bddda2b25073b277775dfa31850cd937527 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 24 Jun 2026 11:08:57 +0200 Subject: [PATCH 156/167] Go: Update to 1.27 --- MODULE.bazel | 2 +- go/actions/test/action.yml | 2 +- go/extractor/go.mod | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 6d562ff80b69..91c871445eb4 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -302,7 +302,7 @@ use_repo( ) go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk") -go_sdk.download(version = "1.26.6") +go_sdk.download(version = "1.27.0") go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps") go_deps.from_file(go_mod = "//go/extractor:go.mod") diff --git a/go/actions/test/action.yml b/go/actions/test/action.yml index 9f641e9125ae..25ff389dc01e 100644 --- a/go/actions/test/action.yml +++ b/go/actions/test/action.yml @@ -4,7 +4,7 @@ inputs: go-test-version: description: Which Go version to use for running the tests required: false - default: "~1.26.6" + default: "~1.27.0" run-code-checks: description: Whether to run qhelp generation checks required: false diff --git a/go/extractor/go.mod b/go/extractor/go.mod index 4518f3b8a98d..74a25627fdce 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -1,8 +1,8 @@ module github.com/github/codeql-go/extractor -go 1.26 +go 1.27 -toolchain go1.26.6 +toolchain go1.27.0 // when updating this, run // bazel run @rules_go//go -- mod tidy From 3dfe5e6703200a845a17898c3ff5ad7478d55e49 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 24 Jun 2026 11:38:38 +0200 Subject: [PATCH 157/167] Go: Bump `maxGoVersion` to 1.27 --- go/extractor/autobuilder/build-environment.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/extractor/autobuilder/build-environment.go b/go/extractor/autobuilder/build-environment.go index c660373205b2..bd7fc0adabe1 100644 --- a/go/extractor/autobuilder/build-environment.go +++ b/go/extractor/autobuilder/build-environment.go @@ -12,7 +12,7 @@ import ( ) var minGoVersion = util.NewSemVer("1.11") -var maxGoVersion = util.NewSemVer("1.26") +var maxGoVersion = util.NewSemVer("1.27") type versionInfo struct { goModVersion util.SemVer // The version of Go found in the go directive in the `go.mod` file. From f404c6ad43453738f188e65d17166863cee7d098 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 24 Jun 2026 11:42:04 +0200 Subject: [PATCH 158/167] Go: Update test formatting --- go/extractor/toolchain/toolchain_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/go/extractor/toolchain/toolchain_test.go b/go/extractor/toolchain/toolchain_test.go index 8a6b38318cb9..a62c9016a700 100644 --- a/go/extractor/toolchain/toolchain_test.go +++ b/go/extractor/toolchain/toolchain_test.go @@ -8,9 +8,9 @@ import ( func TestParseGoVersion(t *testing.T) { tests := map[string]string{ - "go version go1.18.9 linux/amd64": "go1.18.9", - "go version go1.26.3-X:nodwarf5 linux/amd64": "go1.26.3", - "go version go1.26.3rc1 linux/amd64": "go1.26.3rc1", + "go version go1.18.9 linux/amd64": "go1.18.9", + "go version go1.26.3-X:nodwarf5 linux/amd64": "go1.26.3", + "go version go1.26.3rc1 linux/amd64": "go1.26.3rc1", "warning: GOPATH set to GOROOT (/usr/local/go) has no effect\ngo version go1.18.9 linux/amd64": "go1.18.9", } for input, expected := range tests { From 31851854b69ca7e844c91505f57993b8dd7b3400 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 24 Jun 2026 12:37:39 +0200 Subject: [PATCH 159/167] Go: Add change note --- go/ql/lib/change-notes/2026-06-25-go-1.27.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 go/ql/lib/change-notes/2026-06-25-go-1.27.md diff --git a/go/ql/lib/change-notes/2026-06-25-go-1.27.md b/go/ql/lib/change-notes/2026-06-25-go-1.27.md new file mode 100644 index 000000000000..b1998aee7f54 --- /dev/null +++ b/go/ql/lib/change-notes/2026-06-25-go-1.27.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Go 1.27 is now supported. From 777c089e30624b9ae6ad0bda2b893305ac62bb07 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 24 Jun 2026 12:39:14 +0200 Subject: [PATCH 160/167] Go: Update supported versions to include 1.27 --- docs/codeql/reusables/supported-versions-compilers.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index 8e7928cb2784..8651fa91a269 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -17,7 +17,7 @@ .NET 5, .NET 6, .NET 7, .NET 8, .NET 9, .NET 10","``.sln``, ``.slnx``, ``.csproj``, ``.cs``, ``.cshtml``, ``.xaml``" GitHub Actions,"Not applicable",Not applicable,"``.github/workflows/*.yml``, ``.github/workflows/*.yaml``, ``**/action.yml``, ``**/action.yaml``" - Go (aka Golang), "Go up to 1.26", "Go 1.11 or more recent", ``.go`` + Go (aka Golang), "Go up to 1.27", "Go 1.11 or more recent", ``.go`` Java,"Java 7 to 26 [5]_","javac (OpenJDK and Oracle JDK), Eclipse compiler for Java (ECJ) [6]_",``.java`` From 9db5585299075dc9ec9912b0c8e19f192d7eb630 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 24 Jun 2026 15:36:53 +0200 Subject: [PATCH 161/167] Go: Fix `findMethodOnTypeWithGivenReceiver` for Go 1.27 --- go/extractor/trap/labels.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/extractor/trap/labels.go b/go/extractor/trap/labels.go index 473e2e761f2e..ca43bc370252 100644 --- a/go/extractor/trap/labels.go +++ b/go/extractor/trap/labels.go @@ -187,7 +187,7 @@ func findMethodOnTypeWithGivenReceiver(tp types.Type, object types.Object) *type if definedType, ok := tp.(*types.Named); ok { for i := 0; i < definedType.NumMethods(); i++ { meth := definedType.Method(i) - if object == meth.Type().(*types.Signature).Recv() { + if object == meth.Type().(*types.Signature).Recv().Origin() { return meth } } From 28d44f7f4d7233773b5dbbd13a80ff9ee213bbb1 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 30 Jun 2026 10:25:06 +0200 Subject: [PATCH 162/167] Go: Add generic method test --- .../GenericFunctionInstantiationExpr.expected | 1 + .../semmle/go/Function/TypeParamType.expected | 7 +++++++ .../semmle/go/Function/genericMethods.go | 19 +++++++++++++++++++ .../semmle/go/Function/getParameter.expected | 4 ++++ .../go/Function/getTypeParameter.expected | 3 +++ .../library-tests/semmle/go/Function/go.mod | 2 +- 6 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 go/ql/test/library-tests/semmle/go/Function/genericMethods.go diff --git a/go/ql/test/library-tests/semmle/go/Function/GenericFunctionInstantiationExpr.expected b/go/ql/test/library-tests/semmle/go/Function/GenericFunctionInstantiationExpr.expected index 6528a0ae7f3d..d244960a5e09 100644 --- a/go/ql/test/library-tests/semmle/go/Function/GenericFunctionInstantiationExpr.expected +++ b/go/ql/test/library-tests/semmle/go/Function/GenericFunctionInstantiationExpr.expected @@ -6,3 +6,4 @@ | genericFunctions.go:45:6:45:50 | generic function instantiation expression | genericFunctions.go:45:6:45:33 | GenericFunctionTwoTypeParams | 1 | genericFunctions.go:45:43:45:49 | float64 | | genericFunctions.go:141:6:141:41 | generic function instantiation expression | genericFunctions.go:141:6:141:33 | GenericFunctionInAnotherFile | 0 | genericFunctions.go:141:35:141:40 | string | | genericFunctions.go:146:6:146:55 | generic function instantiation expression | genericFunctions.go:146:6:146:47 | selection of GenericFunctionInAnotherPackage | 0 | genericFunctions.go:146:49:146:54 | string | +| genericMethods.go:13:2:13:23 | generic function instantiation expression | genericMethods.go:13:2:13:18 | selection of GenericMethod1 | 0 | genericMethods.go:13:20:13:22 | int | diff --git a/go/ql/test/library-tests/semmle/go/Function/TypeParamType.expected b/go/ql/test/library-tests/semmle/go/Function/TypeParamType.expected index 4addfa50f349..a04289ef71b7 100644 --- a/go/ql/test/library-tests/semmle/go/Function/TypeParamType.expected +++ b/go/ql/test/library-tests/semmle/go/Function/TypeParamType.expected @@ -19,6 +19,9 @@ numberOfTypeParameters | genericFunctions.go:150:6:150:36 | multipleAnonymousTypeParamsFunc | 3 | | genericFunctions.go:152:6:152:36 | multipleAnonymousTypeParamsType | 3 | | genericFunctions.go:154:51:154:51 | f | 3 | +| genericMethods.go:5:33:5:46 | GenericMethod1 | 1 | +| genericMethods.go:7:6:7:28 | StructForGenericMethod2 | 1 | +| genericMethods.go:9:37:9:50 | GenericMethod2 | 2 | #select | codeql-go-tests/function.EdgeConstraint | 0 | | Node | interface { } | | codeql-go-tests/function.Element | 0 | | S | interface { } | @@ -44,6 +47,10 @@ numberOfTypeParameters | codeql-go-tests/function.New | 0 | | Node | NodeConstraint | | codeql-go-tests/function.New | 1 | | Edge | EdgeConstraint | | codeql-go-tests/function.NodeConstraint | 0 | | Edge | interface { } | +| codeql-go-tests/function.StructForGenericMethod1.GenericMethod1 | 0 | | P1 | interface { } | +| codeql-go-tests/function.StructForGenericMethod2 | 0 | | P2 | interface { } | +| codeql-go-tests/function.StructForGenericMethod2.GenericMethod2 | 0 | | P4 | interface { } | +| codeql-go-tests/function.StructForGenericMethod2.GenericMethod2 | 0 | from receiver | P3 | interface { } | | codeql-go-tests/function.multipleAnonymousTypeParamsFunc | 0 | | _ | interface { } | | codeql-go-tests/function.multipleAnonymousTypeParamsFunc | 1 | | _ | interface { string } | | codeql-go-tests/function.multipleAnonymousTypeParamsFunc | 2 | | _ | interface { } | diff --git a/go/ql/test/library-tests/semmle/go/Function/genericMethods.go b/go/ql/test/library-tests/semmle/go/Function/genericMethods.go new file mode 100644 index 000000000000..860430088ed2 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/Function/genericMethods.go @@ -0,0 +1,19 @@ +package main + +type StructForGenericMethod1 struct{} + +func (*StructForGenericMethod1) GenericMethod1[P1 any](x P1) {} + +type StructForGenericMethod2[P2 any] struct{} + +func (*StructForGenericMethod2[P3]) GenericMethod2[P4 any](x P4) {} + +func generic_methods(s1 StructForGenericMethod1, s2 StructForGenericMethod2[int]) { + // Call the generic method specifying the type + s1.GenericMethod1[int](1) + //s2.GenericMethod2[string]("hello") + + // Call the generic method without specifying the type + s1.GenericMethod1("hello") + //s2.GenericMethod2(42) +} diff --git a/go/ql/test/library-tests/semmle/go/Function/getParameter.expected b/go/ql/test/library-tests/semmle/go/Function/getParameter.expected index 80171d5e79a6..55fb6e4a9579 100644 --- a/go/ql/test/library-tests/semmle/go/Function/getParameter.expected +++ b/go/ql/test/library-tests/semmle/go/Function/getParameter.expected @@ -11,6 +11,10 @@ | genericFunctions.go:138:29:138:40 | ShortestPath | 1 | genericFunctions.go:138:48:138:49 | to | | genericFunctions.go:138:29:138:40 | ShortestPath | -1 | genericFunctions.go:138:7:138:7 | g | | genericFunctions.go:154:51:154:51 | f | -1 | genericFunctions.go:154:7:154:7 | x | +| genericMethods.go:5:33:5:46 | GenericMethod1 | 0 | genericMethods.go:5:56:5:56 | x | +| genericMethods.go:9:37:9:50 | GenericMethod2 | 0 | genericMethods.go:9:60:9:60 | x | +| genericMethods.go:11:6:11:20 | generic_methods | 0 | genericMethods.go:11:22:11:23 | s1 | +| genericMethods.go:11:6:11:20 | generic_methods | 1 | genericMethods.go:11:50:11:51 | s2 | | main.go:7:6:7:7 | f1 | 0 | main.go:7:9:7:9 | x | | main.go:9:12:9:13 | f2 | 0 | main.go:9:15:9:15 | x | | main.go:9:12:9:13 | f2 | 1 | main.go:9:18:9:18 | y | diff --git a/go/ql/test/library-tests/semmle/go/Function/getTypeParameter.expected b/go/ql/test/library-tests/semmle/go/Function/getTypeParameter.expected index 27a89adf95e2..9f758d14ee88 100644 --- a/go/ql/test/library-tests/semmle/go/Function/getTypeParameter.expected +++ b/go/ql/test/library-tests/semmle/go/Function/getTypeParameter.expected @@ -19,3 +19,6 @@ | genericFunctions.go:152:6:152:69 | type declaration specifier | TypeSpec | 0 | genericFunctions.go:152:38:152:42 | type parameter declaration | 0 | genericFunctions.go:152:38:152:38 | _ | genericFunctions.go:152:40:152:42 | any | interface { } | | genericFunctions.go:152:6:152:69 | type declaration specifier | TypeSpec | 1 | genericFunctions.go:152:45:152:52 | type parameter declaration | 0 | genericFunctions.go:152:45:152:45 | _ | genericFunctions.go:152:47:152:52 | string | interface { string } | | genericFunctions.go:152:6:152:69 | type declaration specifier | TypeSpec | 2 | genericFunctions.go:152:55:152:59 | type parameter declaration | 0 | genericFunctions.go:152:55:152:55 | _ | genericFunctions.go:152:57:152:59 | any | interface { } | +| genericMethods.go:5:1:5:63 | function declaration | MethodDecl | 0 | genericMethods.go:5:48:5:53 | type parameter declaration | 0 | genericMethods.go:5:48:5:49 | P1 | genericMethods.go:5:51:5:53 | any | interface { } | +| genericMethods.go:7:6:7:45 | type declaration specifier | TypeSpec | 0 | genericMethods.go:7:30:7:35 | type parameter declaration | 0 | genericMethods.go:7:30:7:31 | P2 | genericMethods.go:7:33:7:35 | any | interface { } | +| genericMethods.go:9:1:9:67 | function declaration | MethodDecl | 0 | genericMethods.go:9:52:9:57 | type parameter declaration | 0 | genericMethods.go:9:52:9:53 | P4 | genericMethods.go:9:55:9:57 | any | interface { } | diff --git a/go/ql/test/library-tests/semmle/go/Function/go.mod b/go/ql/test/library-tests/semmle/go/Function/go.mod index 85d3db5c5a37..6be32d80e106 100644 --- a/go/ql/test/library-tests/semmle/go/Function/go.mod +++ b/go/ql/test/library-tests/semmle/go/Function/go.mod @@ -1,6 +1,6 @@ module codeql-go-tests/function -go 1.18 +go 1.27 require github.com/anotherpkg v0.0.0-20200203000000-0000000000000 From 072b298c66bb0c085c3cc24319f00ccbfcf0c25a Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 14 Jul 2026 11:35:28 +0200 Subject: [PATCH 163/167] Go: Fix crash in `getTypeParamParentLabel` --- go/extractor/extractor.go | 24 ++++++++++++++++++- .../GenericFunctionInstantiationExpr.expected | 1 + .../semmle/go/Function/genericMethods.go | 4 ++-- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index 7f8ae557e3c4..5d33576e03e9 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -1657,8 +1657,30 @@ func extractType(tw *trap.Writer, tp types.Type) trap.Label { // parent scope, so they are not dealt with by `extractScopes` for i := 0; i < origintp.NumMethods(); i++ { meth := origintp.Method(i).Origin() - extractMethod(tw, meth) + + // Consider a generic struct and a generic method: + // + // type S[P any] struct{} + // func (*S[P]) m[Q any](x Q) {} + // + // If we have a variable 's' of type 'S[int]' and the expression + // 's.m[string]("")', then the type of the selector expression 's.m' + // is ' func(Q)'. The method 'm' here is an instantiation of the + // declaration, which has its own type with type parameter 'Q'. + // As we do not extract method instantiations, 'populateTypeParamParents' + // does not automatically get called for the type parameter 'Q' + // from the instantiation of 'm'. To compensate, we add the type + // parameters here. + // + // As a parent we use the origin method. This suffices, as the name + // and index of the type parameter in the instantiation will be + // identical to those of the uninstantiated method, and as only + // these two properties will be extracted for a type parameter. + if tp.Method(i) != meth { + signature := tp.Method(i).Type().(*types.Signature) + populateTypeParamParents(signature.TypeParams(), meth, false) + } } underlyingInterface, underlyingIsInterface := underlying.(*types.Interface) diff --git a/go/ql/test/library-tests/semmle/go/Function/GenericFunctionInstantiationExpr.expected b/go/ql/test/library-tests/semmle/go/Function/GenericFunctionInstantiationExpr.expected index d244960a5e09..5c01d626b28a 100644 --- a/go/ql/test/library-tests/semmle/go/Function/GenericFunctionInstantiationExpr.expected +++ b/go/ql/test/library-tests/semmle/go/Function/GenericFunctionInstantiationExpr.expected @@ -7,3 +7,4 @@ | genericFunctions.go:141:6:141:41 | generic function instantiation expression | genericFunctions.go:141:6:141:33 | GenericFunctionInAnotherFile | 0 | genericFunctions.go:141:35:141:40 | string | | genericFunctions.go:146:6:146:55 | generic function instantiation expression | genericFunctions.go:146:6:146:47 | selection of GenericFunctionInAnotherPackage | 0 | genericFunctions.go:146:49:146:54 | string | | genericMethods.go:13:2:13:23 | generic function instantiation expression | genericMethods.go:13:2:13:18 | selection of GenericMethod1 | 0 | genericMethods.go:13:20:13:22 | int | +| genericMethods.go:14:2:14:26 | generic function instantiation expression | genericMethods.go:14:2:14:18 | selection of GenericMethod2 | 0 | genericMethods.go:14:20:14:25 | string | diff --git a/go/ql/test/library-tests/semmle/go/Function/genericMethods.go b/go/ql/test/library-tests/semmle/go/Function/genericMethods.go index 860430088ed2..54bd4135da2f 100644 --- a/go/ql/test/library-tests/semmle/go/Function/genericMethods.go +++ b/go/ql/test/library-tests/semmle/go/Function/genericMethods.go @@ -11,9 +11,9 @@ func (*StructForGenericMethod2[P3]) GenericMethod2[P4 any](x P4) {} func generic_methods(s1 StructForGenericMethod1, s2 StructForGenericMethod2[int]) { // Call the generic method specifying the type s1.GenericMethod1[int](1) - //s2.GenericMethod2[string]("hello") + s2.GenericMethod2[string]("hello") // Call the generic method without specifying the type s1.GenericMethod1("hello") - //s2.GenericMethod2(42) + s2.GenericMethod2(42) } From 35a32e0902a497ed5103634787afaf2cfe868915 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 13 Aug 2026 17:40:40 +0200 Subject: [PATCH 164/167] Extract the inline-expectation parser into its own module `getAnExpectation` -- the low-level parse of a `// $ ...` expectation comment -- lived as a private predicate inside `Make`, reachable only by that module's expectation classes. The upcoming `--learn` postprocessing needs the same parse (to see every expectation on a comment, including ones the running test ignores, so it can preserve them), but it lives in `TestPostProcessing`, outside `Make`. Move the predicate into a new top-level `private module ExpectationParser` that both consumers `private import`, so neither has to expose the parse as part of its API nor reach into the other's internals. This is a pure refactor: the predicate body and its callers' behavior are unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1adfa307-c48e-43f5-94e3-8286e4a8c083 --- .../util/test/InlineExpectationsTest.qll | 72 ++++++++++++------- 1 file changed, 46 insertions(+), 26 deletions(-) diff --git a/shared/util/codeql/util/test/InlineExpectationsTest.qll b/shared/util/codeql/util/test/InlineExpectationsTest.qll index 4e0b2f678449..b1e0bedb7bd0 100644 --- a/shared/util/codeql/util/test/InlineExpectationsTest.qll +++ b/shared/util/codeql/util/test/InlineExpectationsTest.qll @@ -125,6 +125,8 @@ signature module InlineExpectationsTestSig { * Module implementing inline expectations. */ module Make { + private import ExpectationParser + /** * A signature specifying the required parts of an inline expectation test. */ @@ -378,32 +380,6 @@ module Make { } } - private predicate getAnExpectation( - Impl::ExpectationComment comment, TColumn column, string expectation, string tags, string value - ) { - exists(string content | - content = comment.getContents().regexpCapture(expectationCommentPattern(), 1) and - ( - column = TDefaultColumn() and - exists(int end | - end = getEndOfColumnPosition(0, content) and - expectation = content.prefix(end).regexpFind(expectationPattern(), _, _).trim() - ) - or - exists(string name, int start, int end | - column = TNamedColumn(name) and - start = content.indexOf(name + ":") + name.length() + 1 and - end = getEndOfColumnPosition(start, content) and - expectation = content.substring(start, end).regexpFind(expectationPattern(), _, _).trim() - ) - ) - ) and - tags = expectation.regexpCapture(expectationPattern(), 1) and - if exists(expectation.regexpCapture(expectationPattern(), 2)) - then value = expectation.regexpCapture(expectationPattern(), 2) - else value = "" - } - /** * A module that merges two test signatures. * @@ -582,6 +558,50 @@ private string expectationPattern() { /** Gets the string `#select` or `problems`, which are equivalent result sets for a `problem` or `path-problem` query. */ private string mainResultSet() { result = ["#select", "problems"] } +/** + * Provides the low-level parse of an inline expectation comment, shared by the expectation classes + * in `Make::MakeTest` and by the `--learn` postprocessing in `TestPostProcessing`. + * + * It is a separate module so that both consumers can `private import` it without either exposing + * the parse as part of a `MakeTest` consumer's API or forcing the postprocessing to reach into + * `MakeTest`'s internals. + */ +private module ExpectationParser { + /** + * Holds if `comment` carries the expectation `expectation` (its verbatim text, for example + * `Alert[q]=v`) in `column` (`TDefaultColumn`, or a `TNamedColumn` such as `MISSING`/`SPURIOUS`), + * whose comma-separated tags are `tags` and whose expected value is `value` (`""` if none). + * + * The `--learn` postprocessing needs to see *every* parsed expectation on a comment - including + * ones the running test ignores - so it can preserve them when rewriting. + */ + predicate getAnExpectation( + Impl::ExpectationComment comment, TColumn column, string expectation, string tags, string value + ) { + exists(string content | + content = comment.getContents().regexpCapture(expectationCommentPattern(), 1) and + ( + column = TDefaultColumn() and + exists(int end | + end = getEndOfColumnPosition(0, content) and + expectation = content.prefix(end).regexpFind(expectationPattern(), _, _).trim() + ) + or + exists(string name, int start, int end | + column = TNamedColumn(name) and + start = content.indexOf(name + ":") + name.length() + 1 and + end = getEndOfColumnPosition(start, content) and + expectation = content.substring(start, end).regexpFind(expectationPattern(), _, _).trim() + ) + ) + ) and + tags = expectation.regexpCapture(expectationPattern(), 1) and + if exists(expectation.regexpCapture(expectationPattern(), 2)) + then value = expectation.regexpCapture(expectationPattern(), 2) + else value = "" + } +} + /** * Provides logic for creating a `@kind test-postprocess` query that checks * inline test expectations using `$ Alert` markers. From 1a68518e3af41c9cd18d5cc2c05461293ae24a2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 13 Aug 2026 17:52:06 +0200 Subject: [PATCH 165/167] Add per-file comment markers to the postprocessing InputSig The `--learn` support that follows needs to render inline-expectation comments in the syntax of the file being edited, and a single CodeQL database can mix source languages (e.g. Java plus XML), so the marker must be chosen per file rather than per database. Extend `TestPostProcessing::InputSig` with `getStartCommentMarker(relativePath)` (no result -> that file is left untouched by `--learn`) and a defaulted `getEndCommentMarker(relativePath)` (`none()` by default: line-comment languages render no closing marker; block-comment languages can override it later). Each language's `InlineExpectationsTestQuery.ql` implements `getStartCommentMarker`, gated to that language's own source extensions so that other file types (XML/YAML/HTML/ERB/Razor) extracted into the same database are not rewritten with the wrong syntax. This commit only wires the marker API through the signature and the per-language inputs; nothing consumes it yet, so behavior is unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1adfa307-c48e-43f5-94e3-8286e4a8c083 --- .../utils/test/InlineExpectationsTestQuery.ql | 9 ++++++++ .../utils/test/InlineExpectationsTestQuery.ql | 8 +++++++ .../utils/test/InlineExpectationsTestQuery.ql | 8 +++++++ .../utils/test/InlineExpectationsTestQuery.ql | 8 +++++++ .../utils/test/InlineExpectationsTestQuery.ql | 8 +++++++ .../utils/test/InlineExpectationsTestQuery.ql | 8 +++++++ .../utils/test/InlineExpectationsTestQuery.ql | 8 +++++++ .../utils/test/InlineExpectationsTestQuery.ql | 8 +++++++ .../utils/test/InlineExpectationsTestQuery.ql | 8 +++++++ .../util/test/InlineExpectationsTest.qll | 22 +++++++++++++++++++ .../utils/test/InlineExpectationsTestQuery.ql | 7 ++++++ .../utils/test/InlineExpectationsTestQuery.ql | 10 +++++++++ 12 files changed, 112 insertions(+) diff --git a/cpp/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/cpp/ql/lib/utils/test/InlineExpectationsTestQuery.ql index 8e6977ba5321..c46f895431c7 100644 --- a/cpp/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/cpp/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -18,4 +18,13 @@ private module Input implements T::TestPostProcessing::InputSig { f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn ) } + + bindingset[relativePath] + string getStartCommentMarker(string relativePath) { + // C/C++ databases can also contain XML (e.g. `.xml`, `.props`), whose block-comment + // syntax is not yet supported, so we only render for C/C++ sources. + relativePath + .regexpMatch(".*\\.(c|cc|cpp|cxx|cp|c\\+\\+|h|hh|hpp|hxx|h\\+\\+|inl|tcc|ipp|tpp|cu|cuh)") and + result = "//" + } } diff --git a/csharp/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/csharp/ql/lib/utils/test/InlineExpectationsTestQuery.ql index 35901ee64012..1609ca867e80 100644 --- a/csharp/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/csharp/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -18,4 +18,12 @@ private module Input implements T::TestPostProcessing::InputSig { f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn ) } + + bindingset[relativePath] + string getStartCommentMarker(string relativePath) { + // C# databases can also contain XML (e.g. `.csproj`, `.config`) and Razor markup, whose + // comment syntaxes are not yet supported, so we only render for C# sources. + relativePath.regexpMatch(".*\\.(cs|csx)") and + result = "//" + } } diff --git a/go/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/go/ql/lib/utils/test/InlineExpectationsTestQuery.ql index 1cf2f5ea1d9b..9a180ed8a173 100644 --- a/go/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/go/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -18,4 +18,12 @@ private module Input implements T::TestPostProcessing::InputSig { f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn ) } + + bindingset[relativePath] + string getStartCommentMarker(string relativePath) { + // Go databases can also contain XML, whose block-comment syntax is not yet supported, so + // we only render for Go sources. + relativePath.matches("%.go") and + result = "//" + } } diff --git a/java/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/java/ql/lib/utils/test/InlineExpectationsTestQuery.ql index b0360dfecd8d..ad330a3d1f2c 100644 --- a/java/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/java/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -18,4 +18,12 @@ private module Input implements T::TestPostProcessing::InputSig { f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn ) } + + bindingset[relativePath] + string getStartCommentMarker(string relativePath) { + // Java databases can also contain XML; those files use a different (block) comment + // syntax that is not yet supported, so we only render for Java and Kotlin sources. + (relativePath.matches("%.java") or relativePath.matches("%.kt")) and + result = "//" + } } diff --git a/javascript/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/javascript/ql/lib/utils/test/InlineExpectationsTestQuery.ql index 55892be75d79..c1151457a0a2 100644 --- a/javascript/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/javascript/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -18,4 +18,12 @@ private module Input implements T::TestPostProcessing::InputSig { f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn ) } + + bindingset[relativePath] + string getStartCommentMarker(string relativePath) { + // JavaScript databases can also contain HTML, whose (block) comment syntax is not yet + // supported, so we only render for the line-comment source files. + relativePath.regexpMatch(".*\\.(js|cjs|mjs|jsx|ts|cts|mts|tsx)") and + result = "//" + } } diff --git a/python/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/python/ql/lib/utils/test/InlineExpectationsTestQuery.ql index 9ce5fdf326ca..d849809f6d9d 100644 --- a/python/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/python/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -18,4 +18,12 @@ private module Input implements T::TestPostProcessing::InputSig { f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn ) } + + bindingset[relativePath] + string getStartCommentMarker(string relativePath) { + // Python databases can also contain XML, whose block-comment syntax is not yet supported, + // so we only render for Python sources. + relativePath.regexpMatch(".*\\.(py|pyi)") and + result = "#" + } } diff --git a/ql/ql/src/utils/test/InlineExpectationsTestQuery.ql b/ql/ql/src/utils/test/InlineExpectationsTestQuery.ql index 979839480e1d..89d8a2788e99 100644 --- a/ql/ql/src/utils/test/InlineExpectationsTestQuery.ql +++ b/ql/ql/src/utils/test/InlineExpectationsTestQuery.ql @@ -18,4 +18,12 @@ private module Input implements T::TestPostProcessing::InputSig { f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn ) } + + bindingset[relativePath] + string getStartCommentMarker(string relativePath) { + // The QL extractor can also extract YAML (e.g. `qlpack.yml`), whose `#` comment syntax + // differs, so we only render for QL sources and dbscheme files. + relativePath.regexpMatch(".*\\.(ql|qll|dbscheme)") and + result = "//" + } } diff --git a/ruby/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/ruby/ql/lib/utils/test/InlineExpectationsTestQuery.ql index 1cbc37a7fe85..08e60a966a15 100644 --- a/ruby/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/ruby/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -18,4 +18,12 @@ private module Input implements T::TestPostProcessing::InputSig { f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn ) } + + bindingset[relativePath] + string getStartCommentMarker(string relativePath) { + // Ruby databases can also contain ERB, whose comment syntax is not yet supported, so we + // only render for plain Ruby sources. + relativePath.matches("%.rb") and + result = "#" + } } diff --git a/rust/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/rust/ql/lib/utils/test/InlineExpectationsTestQuery.ql index e5821ba4f50c..b20a70450dce 100644 --- a/rust/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/rust/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -18,4 +18,12 @@ private module Input implements T::TestPostProcessing::InputSig { f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn ) } + + bindingset[relativePath] + string getStartCommentMarker(string relativePath) { + // Rust databases can also contain YAML, whose `#` comment syntax differs, so we only + // render for Rust sources. + relativePath.matches("%.rs") and + result = "//" + } } diff --git a/shared/util/codeql/util/test/InlineExpectationsTest.qll b/shared/util/codeql/util/test/InlineExpectationsTest.qll index b1e0bedb7bd0..a476ce71693e 100644 --- a/shared/util/codeql/util/test/InlineExpectationsTest.qll +++ b/shared/util/codeql/util/test/InlineExpectationsTest.qll @@ -655,6 +655,28 @@ module TestPostProcessing { signature module InputSig { string getRelativeUrl(Input::Location location); + + /** + * Gets the marker that starts a line comment (for example `"//"` or `"#"`) in the source + * file with the given `relativePath`, provided that `codeql test run --learn` is able to + * render inline expectations for that file. Files for which this has no result are left + * untouched by `--learn`. + * + * This is keyed on the file rather than on the analyzed language because a single database + * may contain source files in several languages with different comment syntaxes (for + * example Java together with XML). `relativePath` is the path reported by `getRelativeUrl`. + */ + bindingset[relativePath] + string getStartCommentMarker(string relativePath); + + /** + * Gets the marker that ends a comment (for example `"-->"`) in the source file with the + * given `relativePath`. Has no result by default, which is correct for languages whose + * inline expectations use line comments (so `--learn` renders no closing marker); + * block-comment languages can override it so that `--learn` renders a closing marker. + */ + bindingset[relativePath] + default string getEndCommentMarker(string relativePath) { none() } } module Make Input2> { diff --git a/swift/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/swift/ql/lib/utils/test/InlineExpectationsTestQuery.ql index a7c112bc00e0..8f7e397d0afe 100644 --- a/swift/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/swift/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -18,4 +18,11 @@ private module Input implements T::TestPostProcessing::InputSig { f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn ) } + + bindingset[relativePath] + string getStartCommentMarker(string relativePath) { + // The Swift extractor only ingests Swift sources (no XML/YAML/HTML in its dbscheme), so a + // constant marker is safe; revisit if Swift ever gains extraction of another file type. + exists(relativePath) and result = "//" + } } diff --git a/unified/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/unified/ql/lib/utils/test/InlineExpectationsTestQuery.ql index 039194bc2e38..950898fb12be 100644 --- a/unified/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/unified/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -18,4 +18,14 @@ private module Input implements T::TestPostProcessing::InputSig { f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn ) } + + bindingset[relativePath] + string getStartCommentMarker(string relativePath) { + // The unified extractor is a new tree-sitter-based extractor that currently ingests only + // Swift sources (see `file_types` in its `codeql-extractor.yml`), which use `//`. Gating on + // the extension keeps this correct if it later gains a language with a different comment + // syntax. + relativePath.regexpMatch(".*\\.(swift|swiftinterface)") and + result = "//" + } } From 1bfe080bc56cefbe285279749c8b96a586279b9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 13 Aug 2026 17:52:28 +0200 Subject: [PATCH 166/167] Support `--learn` for inline expectations via learnEdits `codeql test run --learn` could previously only rewrite `.expected` files; inline expectations (the `// $ Alert` comments checked by `InlineExpectationsTest`) had to be fixed by hand. This teaches the shared test library to compute those source edits so the test runner can apply them. The `test-postprocess` query now exposes a `learnEdits` relation (`file, line, operation, startColumn, endColumn, text`) describing the minimal source rewrite that would make the inline expectations match the actual query results. It covers: - appending a fresh comment carrying every tag learned for a line that has an unexpected result and no existing comment to merge into; - rewriting an existing expectation comment as a whole so it matches the current results: dropping fixed-spurious tags, promoting a `MISSING:` expectation that now fires, clearing a stale `SPURIOUS:` annotation, and merging in freshly learned tags, re-rendering the remaining expectations (or deleting the comment when none remain); - preserving expectations this test does not own -- e.g. a tag annotated with a different query's id that shares the source file -- and any trailing regular note (`// $ Alert // note`); - recording any unexpected result, not just `Alert`. The comment syntax comes from the `getStartCommentMarker` / `getEndCommentMarker` markers added to `InputSig` in the previous commit, so `LearnEditsImpl` renders each edit in the target file's own syntax and stays language-agnostic. Edits are emitted as a query predicate rather than applied here: the engine consumes `learnEdits` only under `--learn` and ignores it otherwise, so ordinary `test run` output is unchanged. The supporting predicates are wrapped in a `private module LearnEditsImpl` so only the `query predicate learnEdits` is re-exposed. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1adfa307-c48e-43f5-94e3-8286e4a8c083 --- .../util/test/InlineExpectationsTest.qll | 446 ++++++++++++++++++ 1 file changed, 446 insertions(+) diff --git a/shared/util/codeql/util/test/InlineExpectationsTest.qll b/shared/util/codeql/util/test/InlineExpectationsTest.qll index a476ce71693e..17dfc02494f6 100644 --- a/shared/util/codeql/util/test/InlineExpectationsTest.qll +++ b/shared/util/codeql/util/test/InlineExpectationsTest.qll @@ -773,6 +773,7 @@ module TestPostProcessing { } private import InlineExpectationsTest::Make + private import ExpectationParser /** Holds if the given locations refer to the same lines, but possibly with different column numbers. */ bindingset[loc1, loc2] @@ -1053,5 +1054,450 @@ module TestPostProcessing { Test::testFailures(_, _) and relation = "testFailures" } + + /** + * The implementation of `--learn`'s inline-expectation editing. Every helper is grouped in this + * private module so that only the public `query predicate learnEdits` leaks into the enclosing + * scope (re-exposed by the `import LearnEditsImpl` below); all the supporting predicates stay + * private to this module. + */ + private module LearnEditsImpl { + /** + * Gets `content` wrapped in the comment markers of the file with the given `relativePath`, for + * example `// content` for a line-comment file or `` for a block-comment file, + * or has no result if that file's comment syntax is not supported. + * + * This renders the comment markers only; the caller supplies whatever `content` goes between + * them, whether a ` $ `-prefixed inline expectation or a plain trailing note kept when the last + * expectation is removed. No leading whitespace is added: the append path adds its own separator + * from the preceding code, while the replace path substitutes the comment in place. + */ + bindingset[relativePath, content] + private string wrapInComment(string relativePath, string content) { + exists(string startMarker | + startMarker = Input2::getStartCommentMarker(relativePath) and + if exists(Input2::getEndCommentMarker(relativePath)) + then + result = startMarker + " " + content + " " + Input2::getEndCommentMarker(relativePath) + else result = startMarker + " " + content + ) + } + + /** + * Gets the fully rendered inline expectation comment (including the leading separator and the + * comment markers) that `--learn` should *append* to `line` of `relativePath`, carrying *every* + * expectation freshly learned for that line (see `unexpectedResultExpectation`) in a single + * comment, or has no result if that file's comment syntax is not supported. + * + * The leading space separates the appended comment from the existing code on the line (for a + * `//`-comment file this yields ` // $ Alert`). The expectations are ordered lexically, matching + * `renderLearnedColumn`, so that a line on which several results fire (for example a path-problem + * source and sink that coincide) grows one deterministic comment such as `// $ Sink Source` + * rather than several separate comments. + */ + bindingset[relativePath, line] + private string renderAppendedComment(string relativePath, int line) { + exists(string body | + body = + concat(string text | + unexpectedResultExpectation(relativePath, line, text) + | + text, " " order by text + ) and + result = " " + wrapInComment(relativePath, "$ " + body) + ) + } + + /** + * Holds if `comment` is one that `codeql test run --learn` may rewrite as a whole. + * + * Almost every comment is rewritable. It may carry parseable expectations; only a trailing + * note (`// note`, into which a freshly learned tag is merged to give `// $ Alert // note` + * rather than being appended as a second comment); or nothing at all (an empty `//`, into + * which a learned tag is likewise merged to give `// $ Alert`). The only comments excluded are + * one carrying an unparseable expectation, and one that mixes (in a single comma-separated + * group) a tag this test understands with a tag it ignores (for example a query ID that does + * not match the current query). The latter keeps the rewrite from having to take apart a group + * such as `Alert,Source[other-query]` whose parts this test treats differently; such comments + * are left untouched. + * + * A rewritable comment may still carry whole expectations this test ignores (for example + * `// $ Alert[other-query]`). Those are preserved verbatim by `foreignExpectation` when the + * comment is rewritten, so that a `--learn` run for one query never drops an expectation that + * belongs to a different query sharing the same source file. A comment carrying *only* such + * ignored expectations (or nothing to change) is therefore rewritable but is left as is. + */ + private predicate isRewritableComment(TestImpl2::ExpectationComment comment) { + not exists(Test::InvalidTestExpectation invalid | + invalid.getLocation() = comment.getLocation() + ) and + not exists(string tags | + getAnExpectation(comment, _, _, tags, _) and + not TestInput::tagIsIgnored(tags.splitAt(",")) and + TestInput::tagIsIgnored(tags.splitAt(",")) + ) + } + + /** + * Holds if `comment` carries a whole expectation this test ignores (for example one annotated + * with a query ID that does not match the current query), whose verbatim text is `text` and + * which sits in `column` (`""` for the default column, or a named column such as `"SPURIOUS"` / + * `"MISSING"`). + * + * `codeql test run --learn` preserves such expectations unchanged when it rewrites the comment, + * because they belong to a different query that shares the same source file and this test + * cannot tell whether they still hold. + */ + private predicate foreignExpectation( + TestImpl2::ExpectationComment comment, string column, string text + ) { + exists(TColumn col, string tags | + getAnExpectation(comment, col, text, tags, _) and + column = getColumnString(col) and + forall(string tag | tag = tags.splitAt(",") | TestInput::tagIsIgnored(tag)) + ) + } + + /** + * Holds if `comment` carries a trailing regular (non-interpreted) note `note`, with the note's + * own comment marker and surrounding whitespace stripped. This is either: + * + * - the text after a `//` that follows the expectations in an expectation comment (for example + * `note` in `// $ Alert // note` or `# $ Alert // note`), which the framework treats as an + * ordinary comment (see `expectationCommentPattern`); or + * - the whole content of a plain comment that carries no expectation at all (for example `note` + * in `// note` or `# note`), into which `--learn` may merge a freshly learned tag. + * + * `codeql test run --learn` keeps this note when it rewrites, deletes, or merges into the + * comment, re-wrapping it with the appropriate markers (` $ ... // note` when + * expectations remain, or ` note` when none do), so an explanatory note written next to + * code is never lost. Only `//` delimits such a note within an expectation comment, mirroring + * `expectationCommentPattern`'s `(?:[^/]|/[^/])*` expectation region, which ends only at `//`; a + * `#` never does, so `# $ Alert # note` reads `note` as a tag rather than a note. + */ + private string getTrailingNote(TestImpl2::ExpectationComment comment) { + ( + result = comment.getContents().regexpCapture("\\s*\\$ (?:[^/]|/[^/])*//(.*)", 1).trim() + or + // A plain comment with no expectation of its own: its whole content is the note. + not getAnExpectation(comment, _, _, _, _) and + not exists(Test::InvalidTestExpectation invalid | + invalid.getLocation() = comment.getLocation() + ) and + result = comment.getContents().trim() + ) and + result != "" + } + + /** + * Holds if, after `--learn`, `comment` should carry the expectation `text` in `column` (`""` + * for the default column, or `"SPURIOUS"` / `"MISSING"`). + * + * These are the expectations that survive learning: a default or `SPURIOUS:` expectation is + * kept only while it still matches a result, a `MISSING:` expectation whose result now fires is + * promoted to the default column, and a `MISSING:` expectation whose result is still absent is + * kept unchanged. + * + * This revisits expectations that are *already written* in `comment` (each + * `Test::FailureLocatable` is a parsed expectation), deciding which to keep and in which column. + * It is the counterpart of `unexpectedResultExpectation`, which instead introduces a *brand-new* + * expectation for a result that currently has none; the two feed `desiredExpectation` together. + */ + private predicate survivingExpectation( + TestImpl2::ExpectationComment comment, string column, string text + ) { + exists(Test::FailureLocatable e | + e.getLocation() = comment.getLocation() and text = e.getExpectationText() + | + // a default expectation that still matches a result is kept + e instanceof Test::GoodTestExpectation and + e = Test::getAMatchingExpectation(_, _, _, _, _) and + column = "" + or + // a `SPURIOUS:` expectation whose result still fires is kept + e instanceof Test::FalsePositiveTestExpectation and + e = Test::getAMatchingExpectation(_, _, _, _, _) and + column = "SPURIOUS" + or + // a `MISSING:` expectation whose result now fires is promoted to the default column + e instanceof Test::FalseNegativeTestExpectation and + e = Test::getAMatchingExpectation(_, _, _, _, _) and + column = "" + or + // a `MISSING:` expectation whose result is still absent is kept + e instanceof Test::FalseNegativeTestExpectation and + not e = Test::getAMatchingExpectation(_, _, _, _, _) and + column = "MISSING" + ) + } + + /** + * Holds if `--learn` should record a new expectation `text` on `endLine` of `relativePath`, + * because a non-optional actual result there has no matching expectation (an *unexpected + * result*). `text` is the fully rendered expectation, so it carries a value where the result + * has one (`Alert`, `Source`, or a custom `tag=value`). + * + * Unlike `survivingExpectation`, which revisits an expectation *already written* in a comment, + * this introduces an expectation for a result that has *no* expectation yet. It is therefore + * keyed on the result's own location (a `relativePath`/line pair) rather than on a comment + * location: there may be no comment on the line at all. Specifically it is keyed on the + * result's *end* line, because an expectation matches a result when the expectation's start + * line equals the result's end line (see `onSameLine`); for most languages a result occupies a + * single line, but some (e.g. Rust) fold leading trivia into the location so its start and end + * lines differ, and the expectation must land on the end line to match. Whether the new + * expectation is appended as a fresh comment or merged into an existing one is decided by the + * callers (see the append disjunct of `learnEdits` and `mergedNewExpectation`). + * + * `RelatedLocation` results are excluded: they are only reported when an expectation on the + * line already references them (see `hasRelatedLocation`/`shouldReportRelatedLocations`), so + * they never constitute a genuinely new result that learning should introduce on its own. + */ + private predicate unexpectedResultExpectation(string relativePath, int endLine, string text) { + exists(Test::ActualTestResult actualResult | + not actualResult.isOptional() and + actualResult.getTag() != "RelatedLocation" and + not exists( + Test::getAMatchingExpectation(actualResult.getLocation(), actualResult.toString(), + actualResult.getTag(), actualResult.getValue(), false) + ) and + text = actualResult.getExpectationText() and + parseLocationString(actualResult.getLocation().getRelativeUrl(), relativePath, _, _, + endLine, _) + ) + } + + /** + * Holds if `--learn` should merge a freshly learned expectation `text` into the existing, + * rewritable `comment` (in `column` `""`, the default), because an unexpected result fires on + * that comment's line. Merging keeps the new tag alongside the comment's existing expectations + * rather than appending a second comment to the line; when several new expectations land on the + * same line they are all merged and re-rendered together (see `renderLearnedColumn`). + */ + private predicate mergedNewExpectation( + TestImpl2::ExpectationComment comment, string column, string text + ) { + exists(string relativePath, int line | + parseLocationString(comment.getLocation().getRelativeUrl(), relativePath, line, _, _, _) and + unexpectedResultExpectation(relativePath, line, text) and + column = "" + ) + } + + /** + * Holds if, after `--learn`, `comment` should carry the expectation `text` in `column` (`""` + * for the default column, or a named column such as `"SPURIOUS"` / `"MISSING"`). + * + * This combines the surviving expectations this test understands (see `survivingExpectation`) + * with the expectations it ignores (see `foreignExpectation`), which are preserved + * verbatim so that rewriting a comment for one query never drops another query's expectation on + * the same line, and with any freshly learned expectations merged into the comment (see + * `mergedNewExpectation`). + */ + private predicate desiredExpectation( + TestImpl2::ExpectationComment comment, string column, string text + ) { + survivingExpectation(comment, column, text) + or + foreignExpectation(comment, column, text) + or + mergedNewExpectation(comment, column, text) + } + + /** + * Holds if `column` (`""` for the default column, or a named column such as `"SPURIOUS"` / + * `"MISSING"`) currently carries the expectation `text` on `comment`. This includes + * expectations this test ignores, so it can be compared against `desiredExpectation`. + */ + private predicate currentExpectation( + TestImpl2::ExpectationComment comment, string column, string text + ) { + exists(Test::FailureLocatable e | + e.getLocation() = comment.getLocation() and text = e.getExpectationText() + | + e instanceof Test::GoodTestExpectation and column = "" + or + e instanceof Test::FalsePositiveTestExpectation and column = "SPURIOUS" + or + e instanceof Test::FalseNegativeTestExpectation and column = "MISSING" + ) + or + foreignExpectation(comment, column, text) + } + + /** Holds if `--learn` should change the set of expectations carried by `comment`. */ + private predicate commentNeedsRewrite(TestImpl2::ExpectationComment comment) { + exists(string column, string text | + desiredExpectation(comment, column, text) and + not currentExpectation(comment, column, text) + ) + or + exists(string column, string text | + currentExpectation(comment, column, text) and + not desiredExpectation(comment, column, text) + ) + } + + /** Gets the rank that orders the default, `SPURIOUS:`, and `MISSING:` columns within a comment. */ + private int getColumnRank(string column) { + column = "" and result = 0 + or + column = "SPURIOUS" and result = 1 + or + column = "MISSING" and result = 2 + } + + /** + * Gets the rendered text of `column` on the learned `comment`, for example `Alert Alert[foo]` + * for the default column or `MISSING: Alert` for the `MISSING:` column, or has no result if + * that column carries no expectation after learning. Expectations within a column are ordered + * lexically, so a rewritten comment has a deterministic layout. + */ + private string renderLearnedColumn(TestImpl2::ExpectationComment comment, string column) { + desiredExpectation(comment, column, _) and + exists(string joined | + joined = + concat(string text | desiredExpectation(comment, column, text) | text, " " order by text) + | + column = "" and result = joined + or + column != "" and result = column + ": " + joined + ) + } + + /** + * Gets the fully rendered inline expectation comment (including the comment markers, but with no + * leading whitespace) that `--learn` should leave in place of `comment` in the file with the + * given `relativePath`. Has no result if no expectation survives learning (in which case the + * caller deletes the comment instead) or the file's comment syntax is unsupported. + */ + bindingset[relativePath] + private string renderReplacementComment( + string relativePath, TestImpl2::ExpectationComment comment + ) { + exists(string body, string trailingSuffix | + // Preserve a trailing regular note (e.g. the `note` in `// $ Alert // note`) that sits + // after the expectations, so rewriting the expectations never drops an explanatory note. + // The inner delimiter is always `//`, which the framework recognises regardless of the + // outer comment marker (so a `#`-comment file renders `# $ Alert // note`). + ( + exists(string note | + note = getTrailingNote(comment) and + trailingSuffix = " // " + note + ) + or + not exists(getTrailingNote(comment)) and trailingSuffix = "" + ) and + body = + concat(string column | + exists(renderLearnedColumn(comment, column)) + | + renderLearnedColumn(comment, column), " " order by getColumnRank(column) + ) and + result = wrapInComment(relativePath, "$ " + body + trailingSuffix) + ) + } + + /** + * Holds if `codeql test run --learn` should edit the source file `file` so that its inline + * expectations match the current query results. Each row asks the test runner to change + * `line`, where `operation` is either: + * + * - `"append"`: add `text` (a fully rendered comment) at the end of the line; `startColumn` + * and `endColumn` are both 0. + * - `"replace"`: replace the 1-based inclusive column range `[startColumn, endColumn]` with + * `text` (the empty string deletes the range). + * + * The following edits are emitted: + * + * - an actual result with no matching expectation records a new expectation (an *unexpected + * result*): the expectation is the result's tag, carrying a value where the result has one + * (`Alert`, a path-problem `Source`/`Sink`, or a custom `tag=value`). If the result's line + * already has a rewritable comment the expectation is merged into it (see below), otherwise a + * fresh comment carrying every expectation learned for the line is appended (for example + * `// $ Alert`, or `// $ Sink Source` when several results fire on one line); and + * - an existing rewritable expectation comment is rewritten as a whole so that it matches the + * current results: obsolete default and `// $ SPURIOUS:` expectations are dropped (a *missing + * result* or a *fixed spurious result*), a `// $ MISSING:` expectation whose result now fires + * is promoted to the default column (a *fixed missing result*), any freshly learned tags on + * the line are merged in, and the resulting expectations are re-rendered. If nothing remains, + * the comment is deleted. + * + * The rewrite handles comments that carry several expectations across the default, + * `SPURIOUS:`, and `MISSING:` columns. Expectations this test ignores (for example a tag + * annotated with a different query's ID) are preserved verbatim, so the comment keeps any + * expectation belonging to a different query that shares the same source file; see + * `isRewritableComment` and `foreignExpectation`. A trailing regular note after the + * expectations (for example the `note` in `// $ Alert // note` or `# $ Alert // note`) is + * likewise preserved, and freshly learned tags can be merged into a plain comment that carries + * only such a note (`// note` -> `// $ Alert // note`); see `getTrailingNote`. + */ + query predicate learnEdits( + string file, int line, string operation, int startColumn, int endColumn, string text + ) { + // Unexpected result with no comment to merge into: append a fresh comment carrying every + // expectation learned for the result's line (see `unexpectedResultExpectation`). The comment must + // go on the result's *end* line, because an expectation matches a result when the + // expectation's start line equals the result's end line (see `onSameLine`). For most + // languages a result spans a single line, but some (e.g. Rust) include leading trivia in the + // location, so the start and end lines differ. If the line already has a rewritable comment, + // the new expectations are merged into it by the rewrite disjunct below (see + // `mergedNewExpectation`) rather than appended as a separate comment. + exists(string relativePath, int el, string comment | + unexpectedResultExpectation(relativePath, el, _) and + not exists(TestImpl2::ExpectationComment existing | + isRewritableComment(existing) and + parseLocationString(existing.getLocation().getRelativeUrl(), relativePath, el, _, _, _) + ) and + comment = renderAppendedComment(relativePath, el) and + file = relativePath and + line = el and + operation = "append" and + startColumn = 0 and + endColumn = 0 and + text = comment + ) + or + // Rewrite an existing expectation comment as a whole so that it matches the current results. + // This subsumes the single-expectation removal and MISSING-promotion cases and additionally + // handles comments that carry several expectations across the default, `SPURIOUS:`, and + // `MISSING:` columns. The comment is replaced from its marker to the end of the line: with + // the re-rendered desired expectations (keeping any trailing regular comment), with just the + // trailing regular comment when no expectation remains but a note like `// $ Alert // note` + // does, or with the empty string when nothing remains (in which case `endColumn = 0` also + // trims the whitespace gap the removed comment leaves behind). `endColumn = 0` is the + // engine's "to end of line" convention, which avoids depending on how each extractor reports + // a line comment's end column (e.g. Swift reports it as ending at column 1 of the next line). + exists(TestImpl2::ExpectationComment comment, string relativePath, int sl, int sc | + isRewritableComment(comment) and + commentNeedsRewrite(comment) and + parseLocationString(comment.getLocation().getRelativeUrl(), relativePath, sl, sc, _, _) and + file = relativePath and + line = sl and + operation = "replace" and + startColumn = sc and + endColumn = 0 and + ( + desiredExpectation(comment, _, _) and + text = renderReplacementComment(relativePath, comment) + or + not desiredExpectation(comment, _, _) and + // No expectation survives, so drop the `$ ...` part of the comment. If it carried a + // trailing regular note, keep that note re-wrapped in the file's own comment markers (so a + // `#`-comment file yields `# note`, not an invalid `// note`, and a block-comment file + // yields ``); otherwise delete to the end of line. + ( + exists(string note | + note = getTrailingNote(comment) and + text = wrapInComment(relativePath, note) + ) + or + not exists(getTrailingNote(comment)) and text = "" + ) + ) + ) + } + } + + import LearnEditsImpl } } From 8d9192d1ea097122718916abc4ba81859cde1451 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 13 Aug 2026 17:52:31 +0200 Subject: [PATCH 167/167] Rename getAnExpectation to hasExpectation `getAnExpectation` is a relation that holds between an expectation comment and the parsed parts it carries, not a function returning a single value, so the `get` prefix is misleading and trips the CodeQL predicate-naming style check. Rename it to `hasExpectation`, matching the `has`-prefixed convention for such predicates (and the sibling `hasExpectationWithValue`). Pure rename with no behavior change; reformatted with `codeql query format`. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1adfa307-c48e-43f5-94e3-8286e4a8c083 --- .../codeql/util/test/InlineExpectationsTest.qll | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/shared/util/codeql/util/test/InlineExpectationsTest.qll b/shared/util/codeql/util/test/InlineExpectationsTest.qll index 17dfc02494f6..5fc3a8989166 100644 --- a/shared/util/codeql/util/test/InlineExpectationsTest.qll +++ b/shared/util/codeql/util/test/InlineExpectationsTest.qll @@ -252,14 +252,14 @@ module Make { Impl::ExpectationComment comment, string tag, string value, string knownFailure ) { exists(TColumn column, string tags | - getAnExpectation(comment, column, _, tags, value) and + hasExpectation(comment, column, _, tags, value) and tag = tags.splitAt(",") and knownFailure = getColumnString(column) and not TestImpl::tagIsIgnored(tag) ) } or TInvalidExpectation(Impl::ExpectationComment comment, string expectation) { - getAnExpectation(comment, _, expectation, _, _) and + hasExpectation(comment, _, expectation, _, _) and not expectation.regexpMatch(expectationPattern()) } @@ -480,7 +480,7 @@ module Make { */ predicate hasExpectationWithValue(string tag, string value) { exists(string tags | - getAnExpectation(_, _, _, tags, value) and + hasExpectation(_, _, _, tags, value) and tag = tags.splitAt(",") ) } @@ -575,7 +575,7 @@ private module ExpectationParser { * The `--learn` postprocessing needs to see *every* parsed expectation on a comment - including * ones the running test ignores - so it can preserve them when rewriting. */ - predicate getAnExpectation( + predicate hasExpectation( Impl::ExpectationComment comment, TColumn column, string expectation, string tags, string value ) { exists(string content | @@ -1132,7 +1132,7 @@ module TestPostProcessing { invalid.getLocation() = comment.getLocation() ) and not exists(string tags | - getAnExpectation(comment, _, _, tags, _) and + hasExpectation(comment, _, _, tags, _) and not TestInput::tagIsIgnored(tags.splitAt(",")) and TestInput::tagIsIgnored(tags.splitAt(",")) ) @@ -1152,7 +1152,7 @@ module TestPostProcessing { TestImpl2::ExpectationComment comment, string column, string text ) { exists(TColumn col, string tags | - getAnExpectation(comment, col, text, tags, _) and + hasExpectation(comment, col, text, tags, _) and column = getColumnString(col) and forall(string tag | tag = tags.splitAt(",") | TestInput::tagIsIgnored(tag)) ) @@ -1180,7 +1180,7 @@ module TestPostProcessing { result = comment.getContents().regexpCapture("\\s*\\$ (?:[^/]|/[^/])*//(.*)", 1).trim() or // A plain comment with no expectation of its own: its whole content is the note. - not getAnExpectation(comment, _, _, _, _) and + not hasExpectation(comment, _, _, _, _) and not exists(Test::InvalidTestExpectation invalid | invalid.getLocation() = comment.getLocation() ) and