diff --git a/Cargo.lock b/Cargo.lock index 856e6fb42e6..4fab55a6444 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -140,6 +140,26 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.9.4", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "log 0.4.28", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.1", + "shlex", + "syn", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -250,6 +270,15 @@ dependencies = [ "shlex", ] +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.3" @@ -328,7 +357,7 @@ dependencies = [ "chalk-derive 0.103.0", "chalk-ir 0.103.0", "ena", - "indexmap 2.11.4", + "indexmap 2.14.0", "itertools 0.12.1", "petgraph", "rustc-hash 1.1.0", @@ -349,6 +378,17 @@ dependencies = [ "windows-link 0.2.0", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" version = "4.5.48" @@ -505,6 +545,15 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "convert_case" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -758,6 +807,12 @@ dependencies = [ "typeid", ] +[[package]] +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + [[package]] name = "figment" version = "0.10.19" @@ -806,6 +861,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "form_urlencoded" version = "1.2.2" @@ -890,9 +951,26 @@ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", - "foldhash", + "foldhash 0.1.5", ] +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + [[package]] name = "hashlink" version = "0.10.0" @@ -1079,16 +1157,25 @@ 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.1", "serde", "serde_core", ] +[[package]] +name = "indoc" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" +dependencies = [ + "rustversion", +] + [[package]] name = "inlinable_string" version = "0.1.15" @@ -1218,6 +1305,16 @@ version = "0.2.175" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link 0.2.0", +] + [[package]] name = "line-index" version = "0.1.2" @@ -1283,6 +1380,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -1329,6 +1432,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "notify" version = "8.2.0" @@ -1456,6 +1569,12 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + [[package]] name = "pear" version = "0.2.9" @@ -1511,7 +1630,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.11.4", + "indexmap 2.14.0", +] + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_shared", + "serde", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", ] [[package]] @@ -1556,6 +1704,25 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit 0.25.11+spec-1.1.0", +] + [[package]] name = "proc-macro2" version = "1.0.101" @@ -1687,7 +1854,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e876bb2c3e52a8d4e6684526a2d4e81f9d028b939ee4dc5dc775fe10deb44d59" dependencies = [ "dashmap", - "indexmap 2.11.4", + "indexmap 2.14.0", "la-arena", "ra_ap_cfg", "ra_ap_intern", @@ -1729,7 +1896,7 @@ checksum = "ebffdc134eccabc17209d7760cfff7fd12ed18ab6e21188c5e084b97aa38504c" dependencies = [ "arrayvec", "either", - "indexmap 2.11.4", + "indexmap 2.14.0", "itertools 0.14.0", "ra_ap_base_db", "ra_ap_cfg", @@ -1759,7 +1926,7 @@ dependencies = [ "drop_bomb", "either", "fst", - "indexmap 2.11.4", + "indexmap 2.14.0", "itertools 0.14.0", "la-arena", "ra-ap-rustc_abi", @@ -1828,7 +1995,7 @@ dependencies = [ "cov-mark", "either", "ena", - "indexmap 2.11.4", + "indexmap 2.14.0", "itertools 0.14.0", "la-arena", "oorandom", @@ -1866,7 +2033,7 @@ dependencies = [ "crossbeam-channel", "either", "fst", - "indexmap 2.11.4", + "indexmap 2.14.0", "itertools 0.14.0", "line-index", "memchr", @@ -1968,7 +2135,7 @@ version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45db9e2df587d56f0738afa89fb2c100ff7c1e9cbe49e07f6a8b62342832211b" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.0", "ra_ap_intern", "ra_ap_paths", "ra_ap_span", @@ -2127,7 +2294,7 @@ checksum = "6c174d6b9b7a7f54687df7e00c3e75ed6f082a7943a9afb1d54f33c0c12773de" dependencies = [ "crossbeam-channel", "fst", - "indexmap 2.11.4", + "indexmap 2.14.0", "nohash-hasher", "ra_ap_paths", "ra_ap_stdx", @@ -2259,6 +2426,15 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" +[[package]] +name = "relative-path" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bca40a312222d8ba74837cb474edef44b37f561da5f773981007a10bbaa992b0" +dependencies = [ + "serde", +] + [[package]] name = "rowan" version = "0.15.15" @@ -2272,6 +2448,57 @@ dependencies = [ "text-size", ] +[[package]] +name = "rquickjs" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a135375fbac5ba723bb6a48f432a72f81539cedde422f0121a86c7c4e96d8e0d" +dependencies = [ + "rquickjs-core", + "rquickjs-macro", +] + +[[package]] +name = "rquickjs-core" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bccb7121a123865c8ace4dea42e7ed84d78b90cbaf4ca32c59849d8d210c9672" +dependencies = [ + "hashbrown 0.16.1", + "phf", + "relative-path", + "rquickjs-sys", +] + +[[package]] +name = "rquickjs-macro" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89f93602cc3112c7f30bf5f29e722784232138692c7df4c52ebbac7e035d900d" +dependencies = [ + "convert_case", + "fnv", + "ident_case", + "indexmap 2.14.0", + "phf_generator", + "phf_shared", + "proc-macro-crate", + "proc-macro2", + "quote", + "rquickjs-core", + "syn", +] + +[[package]] +name = "rquickjs-sys" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57b1b6528590d4d65dc86b5159eae2d0219709546644c66408b2441696d1d725" +dependencies = [ + "bindgen", + "cc", +] + [[package]] name = "rust-extractor-macros" version = "0.1.0" @@ -2337,7 +2564,7 @@ dependencies = [ "crossbeam-utils", "hashbrown 0.15.5", "hashlink", - "indexmap 2.11.4", + "indexmap 2.14.0", "intrusive-collections", "papaya", "parking_lot", @@ -2426,11 +2653,12 @@ dependencies = [ [[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]] @@ -2490,7 +2718,7 @@ version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.0", "itoa", "memchr", "ryu", @@ -2526,7 +2754,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.4", + "indexmap 2.14.0", "schemars 0.9.0", "schemars 1.0.4", "serde", @@ -2554,7 +2782,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", @@ -2576,6 +2804,18 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "siphasher" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "smallbitvec" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b0e903ee191d8f7a8fbf0d712c3a1699d19e04ceba5ad1eb673053c7d938a09" + [[package]] name = "smallvec" version = "1.15.1" @@ -2652,18 +2892,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", @@ -2728,7 +2968,7 @@ dependencies = [ "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", - "toml_edit", + "toml_edit 0.22.27", ] [[package]] @@ -2737,13 +2977,13 @@ version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00e5e5d9bf2475ac9d4f0d9edab68cc573dc2fd644b0dba36b0c30a92dd9eaa0" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.0", "serde_core", "serde_spanned 1.0.2", "toml_datetime 0.7.2", "toml_parser", "toml_writer", - "winnow", + "winnow 0.7.13", ] [[package]] @@ -2764,27 +3004,48 @@ dependencies = [ "serde_core", ] +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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", + "indexmap 2.14.0", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", "toml_write", - "winnow", + "winnow 0.7.13", +] + +[[package]] +name = "toml_edit" +version = "0.25.11+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "winnow 1.0.2", ] [[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.2", ] [[package]] @@ -2799,6 +3060,12 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d163a63c116ce562a22cda521fcc4d79152e7aba014456fb5eb442f6d6a10109" +[[package]] +name = "topological-sort" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea68304e134ecd095ac6c3574494fc62b909f416c4fca77e440530221e549d3d" + [[package]] name = "tracing" version = "0.1.41" @@ -2895,6 +3162,30 @@ dependencies = [ "tree-sitter-language", ] +[[package]] +name = "tree-sitter-generate" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3fb2e1bdb1d5f9d23cd5fa68cf98b3bedbd223c92a2edd60bbcf30bcf7180a5" +dependencies = [ + "bitflags 2.9.4", + "dunce", + "indexmap 2.14.0", + "indoc", + "log 0.4.28", + "pathdiff", + "regex", + "regex-syntax", + "rquickjs", + "rustc-hash 2.1.1", + "semver", + "serde", + "serde_json", + "smallbitvec", + "thiserror", + "topological-sort", +] + [[package]] name = "tree-sitter-json" version = "0.24.8" @@ -2944,10 +3235,9 @@ dependencies = [ [[package]] name = "tree-sitter-swift" version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3b98fb6bc8e6a6a10023f401aa6a1858115e849dfaf7de57dd8b8ea0f257bd9" dependencies = [ "cc", + "tree-sitter-generate", "tree-sitter-language", ] @@ -3000,6 +3290,12 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" +[[package]] +name = "unicode-segmentation" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -3389,6 +3685,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" +dependencies = [ + "memchr", +] + [[package]] name = "wit-bindgen" version = "0.45.1" diff --git a/Cargo.toml b/Cargo.toml index 4054c3a50be..62eb2e7e920 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,6 +8,7 @@ members = [ "shared/yeast-macros", "ruby/extractor", "unified/extractor", + "unified/extractor/tree-sitter-swift", "rust/extractor", "rust/extractor/macros", "rust/ast-generator", diff --git a/MODULE.bazel b/MODULE.bazel index ee40f7789e4..fd923a32e62 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -102,6 +102,7 @@ use_repo( tree_sitter_extractors_deps, "vendor_ts__anyhow-1.0.100", "vendor_ts__argfile-0.2.1", + "vendor_ts__cc-1.2.61", "vendor_ts__chalk-ir-0.104.0", "vendor_ts__chrono-0.4.42", "vendor_ts__clap-4.5.48", @@ -149,11 +150,12 @@ use_repo( "vendor_ts__tracing-subscriber-0.3.20", "vendor_ts__tree-sitter-0.26.8", "vendor_ts__tree-sitter-embedded-template-0.25.0", + "vendor_ts__tree-sitter-generate-0.26.8", "vendor_ts__tree-sitter-json-0.24.8", + "vendor_ts__tree-sitter-language-0.1.5", "vendor_ts__tree-sitter-python-0.23.6", "vendor_ts__tree-sitter-ql-0.23.1", "vendor_ts__tree-sitter-ruby-0.23.1", - "vendor_ts__tree-sitter-swift-0.7.2", "vendor_ts__triomphe-0.1.14", "vendor_ts__ungrammar-1.16.1", "vendor_ts__zstd-0.13.3", diff --git a/csharp/ql/src/Security Features/CWE-502/UnsafeDeserialization.qhelp b/csharp/ql/src/Security Features/CWE-502/UnsafeDeserialization.qhelp index 3c68b74a1d9..4cc76003fbf 100644 --- a/csharp/ql/src/Security Features/CWE-502/UnsafeDeserialization.qhelp +++ b/csharp/ql/src/Security Features/CWE-502/UnsafeDeserialization.qhelp @@ -7,6 +7,17 @@

Deserializing an object from untrusted input may result in security problems, such as denial of service or remote code execution.

+

+Note that a deserialization method is only dangerous if it can instantiate +arbitrary classes. Serialization frameworks that use a schema to instantiate +only expected, predefined types are generally not tracked by this query. Such +frameworks are generally safe with respect to arbitrary-class-instantiation and +gadget-chain attacks when the schema is trusted and does not permit +user-controlled type resolution. However, care must be taken to ensure the schema +strictly limits the allowed types. Permitting common standard library classes +can still leave the application vulnerable to gadget-chain attacks. +

+ diff --git a/csharp/ql/src/Security Features/CWE-502/UnsafeDeserializationUntrustedInput.qhelp b/csharp/ql/src/Security Features/CWE-502/UnsafeDeserializationUntrustedInput.qhelp index 7c8781b15a1..b2c123bed5c 100644 --- a/csharp/ql/src/Security Features/CWE-502/UnsafeDeserializationUntrustedInput.qhelp +++ b/csharp/ql/src/Security Features/CWE-502/UnsafeDeserializationUntrustedInput.qhelp @@ -7,6 +7,17 @@

Deserializing an object from untrusted input may result in security problems, such as denial of service or remote code execution.

+

+Note that a deserialization method is only dangerous if it can instantiate +arbitrary classes. Serialization frameworks that use a schema to instantiate +only expected, predefined types are generally not tracked by this query. Such +frameworks are generally safe with respect to arbitrary-class-instantiation and +gadget-chain attacks when the schema is trusted and does not permit +user-controlled type resolution. However, care must be taken to ensure the schema +strictly limits the allowed types. Permitting common standard library classes +can still leave the application vulnerable to gadget-chain attacks. +

+ diff --git a/go/extractor/BUILD.bazel b/go/extractor/BUILD.bazel index fbc53f20720..23158e25b15 100644 --- a/go/extractor/BUILD.bazel +++ b/go/extractor/BUILD.bazel @@ -1,4 +1,4 @@ -load("@rules_go//go:def.bzl", "go_library") +load("@rules_go//go:def.bzl", "go_library", "go_test") load("@rules_java//java:defs.bzl", "java_library") load("@rules_pkg//pkg:mappings.bzl", "pkg_files") @@ -60,3 +60,10 @@ pkg_files( }, visibility = ["//go:__pkg__"], ) + +go_test( + name = "extractor_test", + srcs = ["extractor_test.go"], + embed = [":extractor"], + deps = ["@org_golang_x_tools//go/packages"], +) diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index bbcd32c10d2..158f0029704 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -59,6 +59,63 @@ func init() { } } +// isExactTestPackage checks if a package ID represents an exact test match. +// Returns true for IDs like "github.com/foo/bar [github.com/foo/bar.test]" +// Returns false for IDs like "github.com/foo/bar [github.com/foo/bar/nested.test]" +func isExactTestPackage(pkg *packages.Package) bool { + // Test packages have IDs in the format: "pkgpath [pkgpath.test]" + // or for nested test dependencies: "pkgpath [pkgpath/nested.test]" + expectedTestID := pkg.PkgPath + " [" + pkg.PkgPath + ".test]" + return pkg.ID == expectedTestID +} + +// isBetterPackage determines if pkg is a better choice than current for extraction. +// Preferences: +// 1. Exact test package (e.g., "pkg [pkg.test]") over nested test dependencies +// 2. More Syntax nodes (more files to extract) +// 3. Longer ID string as tiebreaker +func isBetterPackage(pkg, current *packages.Package) bool { + pkgIsExact := isExactTestPackage(pkg) + currentIsExact := isExactTestPackage(current) + + // Prefer exact test packages + if pkgIsExact != currentIsExact { + return pkgIsExact + } + + // Prefer packages with more syntax nodes (more files) + pkgSyntaxCount := len(pkg.Syntax) + currentSyntaxCount := len(current.Syntax) + if pkgSyntaxCount != currentSyntaxCount { + return pkgSyntaxCount > currentSyntaxCount + } + + // Fall back to string length + return len(pkg.ID) > len(current.ID) +} + +// selectBestPackages builds a map from package paths to their best package variants. +// In the context of a `go test -c` compilation, we see the same package more than +// once, with IDs like "abc.com/pkgname [abc.com/pkgname.test]" to distinguish the version +// that contains and is used by test code. +// We prefer the version with the most complete test coverage, which is typically: +// 1. The exact test package (e.g., "pkg [pkg.test]") over nested test dependencies +// 2. The package with the most Syntax nodes (most files to extract) +// 3. The longest ID string as a tiebreaker +func selectBestPackages(pkgs []*packages.Package) map[string]*packages.Package { + bestPackageIds := make(map[string]*packages.Package) + packages.Visit(pkgs, nil, func(pkg *packages.Package) { + if bestSoFar, present := bestPackageIds[pkg.PkgPath]; present { + if isBetterPackage(pkg, bestSoFar) { + bestPackageIds[pkg.PkgPath] = pkg + } + } else { + bestPackageIds[pkg.PkgPath] = pkg + } + }) + return bestPackageIds +} + // ExtractWithFlags extracts the packages specified by the given patterns and build flags func ExtractWithFlags(buildFlags []string, patterns []string, extractTests bool, sourceRoot string) error { startTime := time.Now() @@ -153,22 +210,8 @@ func ExtractWithFlags(buildFlags []string, patterns []string, extractTests bool, pkgsNotFound := make([]string, 0, len(pkgs)) - // Build a map from package paths to their longest IDs-- - // in the context of a `go test -c` compilation, we will see the same package more than - // once, with IDs like "abc.com/pkgname [abc.com/pkgname.test]" to distinguish the version - // that contains and is used by test code. - // For our purposes it is simplest to just ignore the non-test version, since the test - // version seems to be a superset of it. - longestPackageIds := make(map[string]string) - packages.Visit(pkgs, nil, func(pkg *packages.Package) { - if longestIDSoFar, present := longestPackageIds[pkg.PkgPath]; present { - if len(pkg.ID) > len(longestIDSoFar) { - longestPackageIds[pkg.PkgPath] = pkg.ID - } - } else { - longestPackageIds[pkg.PkgPath] = pkg.ID - } - }) + // Build a map from package paths to their best IDs + bestPackageIds := selectBestPackages(pkgs) // Do a post-order traversal and extract the package scope of each package packages.Visit(pkgs, nil, func(pkg *packages.Package) { @@ -257,15 +300,15 @@ func ExtractWithFlags(buildFlags []string, patterns []string, extractTests bool, // extract AST information for all packages packages.Visit(pkgs, nil, func(pkg *packages.Package) { - // If this is a variant of a package that also occurs with a longer ID, skip it; + // If this is a variant of a package that also occurs with a better ID, skip it; // otherwise we would extract the same file more than once including extracting the // body of methods twice, causing database inconsistencies. // - // We prefer the version with the longest ID because that is (so far as I know) always - // the version that defines more entities -- the only case I'm aware of being a test - // variant of a package, which includes test-only functions in addition to the complete - // contents of the main variant. - if pkg.ID != longestPackageIds[pkg.PkgPath] { + // We prefer the version with the most complete test coverage, prioritizing: + // 1. Exact test packages (e.g., "pkg [pkg.test]") over nested test dependencies + // 2. Packages with more Syntax nodes (more files to extract) + // 3. Longer ID strings as a tiebreaker + if pkg.ID != bestPackageIds[pkg.PkgPath].ID { return } diff --git a/go/extractor/extractor_test.go b/go/extractor/extractor_test.go new file mode 100644 index 00000000000..2b585ec7fa1 --- /dev/null +++ b/go/extractor/extractor_test.go @@ -0,0 +1,343 @@ +package extractor + +import ( + "go/ast" + "testing" + + "golang.org/x/tools/go/packages" +) + +func TestIsExactTestPackage(t *testing.T) { + tests := []struct { + name string + pkgID string + pkgPath string + expected bool + }{ + { + name: "exact test package", + pkgID: "github.com/foo/bar [github.com/foo/bar.test]", + pkgPath: "github.com/foo/bar", + expected: true, + }, + { + name: "nested test package", + pkgID: "github.com/foo/bar [github.com/foo/bar/nested.test]", + pkgPath: "github.com/foo/bar", + expected: false, + }, + { + name: "deeply nested test package", + pkgID: "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6/plumbing/format/packfile.test]", + pkgPath: "github.com/go-git/go-git/v6", + expected: false, + }, + { + name: "exact test package with version", + pkgID: "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6.test]", + pkgPath: "github.com/go-git/go-git/v6", + expected: true, + }, + { + name: "non-test package", + pkgID: "github.com/foo/bar", + pkgPath: "github.com/foo/bar", + expected: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + pkg := &packages.Package{ + ID: tt.pkgID, + PkgPath: tt.pkgPath, + } + result := isExactTestPackage(pkg) + if result != tt.expected { + t.Errorf("isExactTestPackage(%q) = %v, want %v", tt.pkgID, result, tt.expected) + } + }) + } +} + +func TestIsBetterPackage(t *testing.T) { + // Helper to create a package with specified properties + makePkg := func(id, path string, syntaxCount int) *packages.Package { + syntax := make([]*ast.File, syntaxCount) + return &packages.Package{ + ID: id, + PkgPath: path, + Syntax: syntax, + } + } + + tests := []struct { + name string + pkg *packages.Package + current *packages.Package + expected bool // true if pkg is better than current + }{ + { + name: "exact test package beats nested test package", + pkg: makePkg( + "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6.test]", + "github.com/go-git/go-git/v6", + 39, // 19 production + 20 test files + ), + current: makePkg( + "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6/plumbing/format/packfile.test]", + "github.com/go-git/go-git/v6", + 19, // production files only + ), + expected: true, + }, + { + name: "nested test package loses to exact test package", + pkg: makePkg( + "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6/plumbing/format/packfile.test]", + "github.com/go-git/go-git/v6", + 19, + ), + current: makePkg( + "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6.test]", + "github.com/go-git/go-git/v6", + 39, + ), + expected: false, + }, + { + name: "more syntax nodes wins when both are exact tests", + pkg: makePkg( + "github.com/foo/bar [github.com/foo/bar.test]", + "github.com/foo/bar", + 50, + ), + current: makePkg( + "github.com/foo/bar [github.com/foo/bar.test]", + "github.com/foo/bar", + 30, + ), + expected: true, + }, + { + name: "fewer syntax nodes loses when both are exact tests", + pkg: makePkg( + "github.com/foo/bar [github.com/foo/bar.test]", + "github.com/foo/bar", + 30, + ), + current: makePkg( + "github.com/foo/bar [github.com/foo/bar.test]", + "github.com/foo/bar", + 50, + ), + expected: false, + }, + { + name: "more syntax nodes wins when both are nested tests", + pkg: makePkg( + "github.com/foo/bar [github.com/foo/bar/pkg1.test]", + "github.com/foo/bar", + 25, + ), + current: makePkg( + "github.com/foo/bar [github.com/foo/bar/pkg2.test]", + "github.com/foo/bar", + 20, + ), + expected: true, + }, + { + name: "longer ID wins when same syntax count", + pkg: makePkg( + "github.com/foo/bar [github.com/foo/bar/verylongpackagename.test]", + "github.com/foo/bar", + 20, + ), + current: makePkg( + "github.com/foo/bar [github.com/foo/bar/short.test]", + "github.com/foo/bar", + 20, + ), + expected: true, + }, + { + name: "test package beats non-test with same syntax count", + pkg: makePkg( + "github.com/foo/bar [github.com/foo/bar.test]", + "github.com/foo/bar", + 20, + ), + current: makePkg( + "github.com/foo/bar", + "github.com/foo/bar", + 20, + ), + expected: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := isBetterPackage(tt.pkg, tt.current) + if result != tt.expected { + t.Errorf("isBetterPackage() = %v, want %v\n pkg: %q (%d syntax nodes)\n current: %q (%d syntax nodes)", + result, tt.expected, + tt.pkg.ID, len(tt.pkg.Syntax), + tt.current.ID, len(tt.current.Syntax)) + } + }) + } +} + +// TestSelectBestPackages tests the selectBestPackages function +func TestSelectBestPackages(t *testing.T) { + // Helper to create a package with specified properties + makePkg := func(id, path string, syntaxCount int) *packages.Package { + syntax := make([]*ast.File, syntaxCount) + return &packages.Package{ + ID: id, + PkgPath: path, + Syntax: syntax, + } + } + + tests := []struct { + name string + pkgs []*packages.Package + expectedPkgIDs map[string]string // pkgPath -> expected selected ID + }{ + { + name: "single package", + pkgs: []*packages.Package{ + makePkg("example.com/pkg", "example.com/pkg", 10), + }, + expectedPkgIDs: map[string]string{ + "example.com/pkg": "example.com/pkg", + }, + }, + { + name: "test package preferred over production", + pkgs: []*packages.Package{ + makePkg("example.com/pkg", "example.com/pkg", 10), + makePkg("example.com/pkg [example.com/pkg.test]", "example.com/pkg", 15), + }, + expectedPkgIDs: map[string]string{ + "example.com/pkg": "example.com/pkg [example.com/pkg.test]", + }, + }, + { + name: "exact test preferred over nested test", + pkgs: []*packages.Package{ + makePkg("example.com/pkg [example.com/pkg.test]", "example.com/pkg", 20), + makePkg("example.com/pkg [example.com/pkg/nested.test]", "example.com/pkg", 15), + }, + expectedPkgIDs: map[string]string{ + "example.com/pkg": "example.com/pkg [example.com/pkg.test]", + }, + }, + { + name: "multiple packages with different paths", + pkgs: []*packages.Package{ + makePkg("example.com/pkg1", "example.com/pkg1", 10), + makePkg("example.com/pkg1 [example.com/pkg1.test]", "example.com/pkg1", 15), + makePkg("example.com/pkg2", "example.com/pkg2", 8), + makePkg("example.com/pkg2 [example.com/pkg2.test]", "example.com/pkg2", 12), + }, + expectedPkgIDs: map[string]string{ + "example.com/pkg1": "example.com/pkg1 [example.com/pkg1.test]", + "example.com/pkg2": "example.com/pkg2 [example.com/pkg2.test]", + }, + }, + { + name: "more syntax nodes wins among nested tests", + pkgs: []*packages.Package{ + makePkg("example.com/pkg [example.com/pkg/a.test]", "example.com/pkg", 10), + makePkg("example.com/pkg [example.com/pkg/b.test]", "example.com/pkg", 20), + }, + expectedPkgIDs: map[string]string{ + "example.com/pkg": "example.com/pkg [example.com/pkg/b.test]", + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := selectBestPackages(tt.pkgs) + + // Check that all expected packages are present + for pkgPath, expectedID := range tt.expectedPkgIDs { + selected, found := result[pkgPath] + if !found { + t.Errorf("Expected package path %q not found in result", pkgPath) + continue + } + if selected.ID != expectedID { + t.Errorf("For package path %q: got ID %q, want %q", + pkgPath, selected.ID, expectedID) + } + } + + // Check that no unexpected packages are present + if len(result) != len(tt.expectedPkgIDs) { + t.Errorf("Expected %d packages in result, got %d", + len(tt.expectedPkgIDs), len(result)) + } + }) + } +} + +// TestPackageSelectionRealWorld simulates the real-world go-git scenario +func TestPackageSelectionRealWorld(t *testing.T) { + // Simulate the actual packages.Load result for go-git repository + // when EXTRACT_TESTS=true + pkgs := []*packages.Package{ + // Production package only + { + ID: "github.com/go-git/go-git/v6", + PkgPath: "github.com/go-git/go-git/v6", + Syntax: make([]*ast.File, 19), // 19 production files + }, + // Root test package - this is what we want! + { + ID: "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6.test]", + PkgPath: "github.com/go-git/go-git/v6", + Syntax: make([]*ast.File, 39), // 19 production + 20 test files + }, + // Nested test dependency 1 + { + ID: "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6/plumbing/format/packfile.test]", + PkgPath: "github.com/go-git/go-git/v6", + Syntax: make([]*ast.File, 19), // production files only (dependency) + }, + // Nested test dependency 2 + { + ID: "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6/plumbing/object.test]", + PkgPath: "github.com/go-git/go-git/v6", + Syntax: make([]*ast.File, 19), // production files only (dependency) + }, + } + + // Use the actual selection logic from the extractor + bestPackageIds := selectBestPackages(pkgs) + + // Verify the correct package was selected + selected := bestPackageIds["github.com/go-git/go-git/v6"] + expectedID := "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6.test]" + expectedSyntaxCount := 39 + + if selected.ID != expectedID { + t.Errorf("Wrong package selected!\n got: %q (%d syntax nodes)\n want: %q (%d syntax nodes)", + selected.ID, len(selected.Syntax), + expectedID, expectedSyntaxCount) + } + + if len(selected.Syntax) != expectedSyntaxCount { + t.Errorf("Wrong syntax count: got %d, want %d", len(selected.Syntax), expectedSyntaxCount) + } + + // Verify it's recognized as an exact test package + if !isExactTestPackage(selected) { + t.Errorf("Selected package %q should be recognized as exact test package", selected.ID) + } +} diff --git a/go/ql/integration-tests/root-internal-tests/src/go.mod b/go/ql/integration-tests/root-internal-tests/src/go.mod new file mode 100644 index 00000000000..12e11856e55 --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/src/go.mod @@ -0,0 +1,3 @@ +module example.com/testpkg + +go 1.26 diff --git a/go/ql/integration-tests/root-internal-tests/src/main.go b/go/ql/integration-tests/root-internal-tests/src/main.go new file mode 100644 index 00000000000..fff083caa0a --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/src/main.go @@ -0,0 +1,13 @@ +package main + +func PublicFunc() int { + return 42 +} + +func privateFunc() int { + return 24 +} + +func main() { + PublicFunc() +} diff --git a/go/ql/integration-tests/root-internal-tests/src/main_test.go b/go/ql/integration-tests/root-internal-tests/src/main_test.go new file mode 100644 index 00000000000..7c38d61d4c8 --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/src/main_test.go @@ -0,0 +1,16 @@ +package main + +import "testing" + +// Root internal test - tests private functions +func TestPrivateFunc(t *testing.T) { + if privateFunc() != 24 { + t.Error("privateFunc failed") + } +} + +func TestPublicFunc(t *testing.T) { + if PublicFunc() != 42 { + t.Error("PublicFunc failed") + } +} diff --git a/go/ql/integration-tests/root-internal-tests/src/nested/nested.go b/go/ql/integration-tests/root-internal-tests/src/nested/nested.go new file mode 100644 index 00000000000..427af1e44b6 --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/src/nested/nested.go @@ -0,0 +1,5 @@ +package nested + +func NestedFunc() string { + return "nested" +} diff --git a/go/ql/integration-tests/root-internal-tests/src/nested/nested_test.go b/go/ql/integration-tests/root-internal-tests/src/nested/nested_test.go new file mode 100644 index 00000000000..a7e063c6185 --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/src/nested/nested_test.go @@ -0,0 +1,9 @@ +package nested + +import "testing" + +func TestNestedFunc(t *testing.T) { + if NestedFunc() != "nested" { + t.Error("NestedFunc failed") + } +} diff --git a/go/ql/integration-tests/root-internal-tests/test.expected b/go/ql/integration-tests/root-internal-tests/test.expected new file mode 100644 index 00000000000..f68c14d1338 --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/test.expected @@ -0,0 +1,7 @@ +#select +| main_test.go | +| nested/nested_test.go | +testFunctions +| TestNestedFunc | nested/nested_test.go | +| TestPrivateFunc | main_test.go | +| TestPublicFunc | main_test.go | diff --git a/go/ql/integration-tests/root-internal-tests/test.py b/go/ql/integration-tests/root-internal-tests/test.py new file mode 100644 index 00000000000..a8f376e3397 --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/test.py @@ -0,0 +1,5 @@ +import os + +def test(codeql, go): + # Test that root internal test files are extracted when nested packages have tests + codeql.database.create(source_root="src", extractor_option = ["extract_tests=true"]) diff --git a/go/ql/integration-tests/root-internal-tests/test.ql b/go/ql/integration-tests/root-internal-tests/test.ql new file mode 100644 index 00000000000..234fd1a0420 --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/test.ql @@ -0,0 +1,15 @@ +import go + +// Verify that root internal test files are extracted +// when nested packages also have tests +from File f +where f.getBaseName().matches("%_test.go") +select f.getRelativePath() + +query predicate testFunctions(string name, string file) { + exists(FuncDecl fn | + fn.getName().matches("Test%") and + name = fn.getName() and + file = fn.getFile().getRelativePath() + ) +} diff --git a/java/documentation/library-coverage/cwe-sink.csv b/java/documentation/library-coverage/cwe-sink.csv index 16fff1e653b..c673888f683 100644 --- a/java/documentation/library-coverage/cwe-sink.csv +++ b/java/documentation/library-coverage/cwe-sink.csv @@ -1,6 +1,6 @@ CWE,Sink identifier,Label CWE‑089,sql-injection,SQL injection -CWE‑022,path-injection,Path injection +CWE‑022,path-injection path-injection[read],Path injection CWE‑094,bean-validation,Code injection CWE‑918,request-forgery,Request Forgery CWE‑079,html-injection js-injection,Cross-site scripting diff --git a/java/ql/src/Security/CWE/CWE-502/UnsafeDeserialization.qhelp b/java/ql/src/Security/CWE/CWE-502/UnsafeDeserialization.qhelp index bf7205d535f..a6d2d9936a5 100644 --- a/java/ql/src/Security/CWE/CWE-502/UnsafeDeserialization.qhelp +++ b/java/ql/src/Security/CWE/CWE-502/UnsafeDeserialization.qhelp @@ -5,26 +5,37 @@

Deserializing untrusted data using any deserialization framework that allows the construction of arbitrary serializable objects is easily exploitable -and in many cases allows an attacker to execute arbitrary code. Even before a +and in many cases allows an attacker to execute arbitrary code. Even before a deserialized object is returned to the caller of a deserialization method a lot of code may have been executed, including static initializers, constructors, -and finalizers. Automatic deserialization of fields means that an attacker may +and finalizers. Automatic deserialization of fields means that an attacker may craft a nested combination of objects on which the executed initialization code may have unforeseen effects, such as the execution of arbitrary code.

-There are many different serialization frameworks. This query currently +There are many different serialization frameworks. This query currently supports Kryo, XmlDecoder, XStream, SnakeYaml, JYaml, JsonIO, YAMLBeans, HessianBurlap, Castor, Burlap, Jackson, Jabsorb, Jodd JSON, Flexjson, Gson, JMS, and Java IO serialization through ObjectInputStream/ObjectOutputStream.

+

+Note that a deserialization method is only dangerous if it can instantiate +arbitrary classes. Serialization frameworks that use a schema to instantiate +only expected, predefined types are generally not tracked by this query. For +example, Apache Avro's deserialization methods follow a schema and are +therefore generally safe with respect to arbitrary-class-instantiation and +gadget-chain attacks when the schema is trusted and does not permit +user-controlled type resolution. However, care must be taken to ensure the schema +strictly limits the allowed types. Permitting common standard library classes +can still leave the application vulnerable to gadget-chain attacks. +

-Avoid deserialization of untrusted data if at all possible. If the +Avoid deserialization of untrusted data if at all possible. If the architecture permits it then use other formats instead of serialized objects, -for example JSON or XML. However, these formats should not be deserialized +for example JSON or XML. However, these formats should not be deserialized into complex objects because this provides further opportunities for attack. For example, XML-based deserialization attacks are possible through libraries such as XStream and XmlDecoder. @@ -43,7 +54,7 @@ Recommendations specific to particular frameworks supported by this query:

  • Recommendation: Call com.alibaba.fastjson.parser.ParserConfig#setSafeMode with the argument true before deserializing untrusted data.
  • -

    FasterXML - com.fasterxml.jackson.core:jackson-databind

    +

    FasterXML - com.fasterxml.jackson.core:jackson-databind

    • Secure by Default: Yes
    • Recommendation: Don't call com.fasterxml.jackson.databind.ObjectMapper#enableDefaultTyping and don't annotate any object fields with com.fasterxml.jackson.annotation.JsonTypeInfo passing either the CLASS or MINIMAL_CLASS values to the annotation. @@ -56,16 +67,16 @@ Recommendations specific to particular frameworks supported by this query:
    • Recommendation: Don't call com.esotericsoftware.kryo(5).Kryo#setRegistrationRequired with the argument false on any Kryo instance that may deserialize untrusted data.

    -

    ObjectInputStream - Java Standard Library

    +

    ObjectInputStream - Java Standard Library

    • Secure by Default: No
    • -
    • Recommendation: Use a validating input stream, such as org.apache.commons.io.serialization.ValidatingObjectInputStream.
    • +
    • Recommendation: Use a validating input stream, such as org.apache.commons.io.serialization.ValidatingObjectInputStream.

    SnakeYAML - org.yaml:snakeyaml

    • Secure by Default: As of version 2.0.
    • -
    • Recommendation: For versions before 2.0, pass an instance of org.yaml.snakeyaml.constructor.SafeConstructor to org.yaml.snakeyaml.Yaml's constructor before using it to deserialize untrusted data.
    • +
    • Recommendation: For versions before 2.0, pass an instance of org.yaml.snakeyaml.constructor.SafeConstructor to org.yaml.snakeyaml.Yaml's constructor before using it to deserialize untrusted data.

    XML Decoder - Standard Java Library

    diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel index 1d1b47192a2..bb32aa97a5e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel @@ -55,6 +55,18 @@ alias( tags = ["manual"], ) +alias( + name = "cc-1.2.61", + actual = "@vendor_ts__cc-1.2.61//:cc", + tags = ["manual"], +) + +alias( + name = "cc", + actual = "@vendor_ts__cc-1.2.61//:cc", + tags = ["manual"], +) + alias( name = "chalk-ir-0.104.0", actual = "@vendor_ts__chalk-ir-0.104.0//:chalk_ir", @@ -625,6 +637,18 @@ alias( tags = ["manual"], ) +alias( + name = "tree-sitter-generate-0.26.8", + actual = "@vendor_ts__tree-sitter-generate-0.26.8//:tree_sitter_generate", + tags = ["manual"], +) + +alias( + name = "tree-sitter-generate", + actual = "@vendor_ts__tree-sitter-generate-0.26.8//:tree_sitter_generate", + tags = ["manual"], +) + alias( name = "tree-sitter-json-0.24.8", actual = "@vendor_ts__tree-sitter-json-0.24.8//:tree_sitter_json", @@ -637,6 +661,18 @@ alias( tags = ["manual"], ) +alias( + name = "tree-sitter-language-0.1.5", + actual = "@vendor_ts__tree-sitter-language-0.1.5//:tree_sitter_language", + tags = ["manual"], +) + +alias( + name = "tree-sitter-language", + actual = "@vendor_ts__tree-sitter-language-0.1.5//:tree_sitter_language", + tags = ["manual"], +) + alias( name = "tree-sitter-python-0.23.6", actual = "@vendor_ts__tree-sitter-python-0.23.6//:tree_sitter_python", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bindgen-0.72.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bindgen-0.72.1.bazel new file mode 100644 index 00000000000..903b1c8fc77 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bindgen-0.72.1.bazel @@ -0,0 +1,190 @@ +############################################################################### +# @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 = "bindgen", + 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", + "logging", + "prettyplease", + "runtime", + ], + crate_root = "lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=bindgen", + "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.72.1", + deps = [ + "@vendor_ts__bindgen-0.72.1//:build_script_build", + "@vendor_ts__bitflags-2.9.4//:bitflags", + "@vendor_ts__cexpr-0.6.0//:cexpr", + "@vendor_ts__clang-sys-1.8.1//:clang_sys", + "@vendor_ts__itertools-0.12.1//:itertools", + "@vendor_ts__log-0.4.28//:log", + "@vendor_ts__prettyplease-0.2.37//:prettyplease", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", + "@vendor_ts__quote-1.0.41//:quote", + "@vendor_ts__regex-1.11.3//:regex", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__shlex-1.3.0//:shlex", + "@vendor_ts__syn-2.0.106//:syn", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "logging", + "prettyplease", + "runtime", + ], + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + link_deps = [ + "@vendor_ts__clang-sys-1.8.1//:clang_sys", + "@vendor_ts__prettyplease-0.2.37//:prettyplease", + ], + pkg_name = "bindgen", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=bindgen", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.72.1", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel index 802e8d67808..79d9696b3cd 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel @@ -95,11 +95,11 @@ rust_library( }), version = "0.8.2", deps = [ - "@vendor_ts__semver-1.0.26//:semver", + "@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__thiserror-2.0.18//:thiserror", "@vendor_ts__toml-0.8.23//:toml", "@vendor_ts__unicode-xid-0.2.6//:unicode_xid", "@vendor_ts__url-2.5.7//:url", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel index aefea796d4c..10cd194b507 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel @@ -101,9 +101,9 @@ rust_library( "@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__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__thiserror-2.0.18//:thiserror", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cexpr-0.6.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cexpr-0.6.0.bazel new file mode 100644 index 00000000000..500c657be10 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cexpr-0.6.0.bazel @@ -0,0 +1,100 @@ +############################################################################### +# @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 = "cexpr", + 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=cexpr", + "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.6.0", + deps = [ + "@vendor_ts__nom-7.1.3//:nom", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel index f1124f1108f..4fb684fec28 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel @@ -100,7 +100,7 @@ rust_library( 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__indexmap-2.14.0//:indexmap", "@vendor_ts__itertools-0.12.1//:itertools", "@vendor_ts__petgraph-0.6.5//:petgraph", "@vendor_ts__rustc-hash-1.1.0//:rustc_hash", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clang-sys-1.8.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clang-sys-1.8.1.bazel new file mode 100644 index 00000000000..b039f4c28e5 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clang-sys-1.8.1.bazel @@ -0,0 +1,203 @@ +############################################################################### +# @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 = "clang_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 = [ + "clang_10_0", + "clang_11_0", + "clang_3_5", + "clang_3_6", + "clang_3_7", + "clang_3_8", + "clang_3_9", + "clang_4_0", + "clang_5_0", + "clang_6_0", + "clang_7_0", + "clang_8_0", + "clang_9_0", + "libloading", + "runtime", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=clang-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 = "1.8.1", + deps = [ + "@vendor_ts__clang-sys-1.8.1//:build_script_build", + "@vendor_ts__glob-0.3.3//:glob", + "@vendor_ts__libc-0.2.175//:libc", + "@vendor_ts__libloading-0.8.9//:libloading", + ], +) + +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 = [ + "clang_10_0", + "clang_11_0", + "clang_3_5", + "clang_3_6", + "clang_3_7", + "clang_3_8", + "clang_3_9", + "clang_4_0", + "clang_5_0", + "clang_6_0", + "clang_7_0", + "clang_8_0", + "clang_9_0", + "libloading", + "runtime", + ], + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + links = "clang", + pkg_name = "clang-sys", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=clang-sys", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.8.1", + visibility = ["//visibility:private"], + deps = [ + "@vendor_ts__glob-0.3.3//:glob", + ], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.convert_case-0.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.convert_case-0.8.0.bazel new file mode 100644 index 00000000000..a1a2df07bf1 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.convert_case-0.8.0.bazel @@ -0,0 +1,100 @@ +############################################################################### +# @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 = "convert_case", + 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=convert_case", + "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__unicode-segmentation-1.13.2//:unicode_segmentation", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fastrand-2.4.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fastrand-2.4.1.bazel new file mode 100644 index 00000000000..f6f016a9f46 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fastrand-2.4.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 = "fastrand", + 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=fastrand", + "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.4.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.2.0.bazel new file mode 100644 index 00000000000..03940fb08ac --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.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 = "foldhash", + 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=foldhash", + "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.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.16.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.16.1.bazel new file mode 100644 index 00000000000..8090f6f8c7f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.16.1.bazel @@ -0,0 +1,110 @@ +############################################################################### +# @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_features = [ + "allocator-api2", + "default", + "default-hasher", + "equivalent", + "inline-more", + "raw-entry", + ], + crate_root = "src/lib.rs", + edition = "2021", + 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.16.1", + deps = [ + "@vendor_ts__allocator-api2-0.2.21//:allocator_api2", + "@vendor_ts__equivalent-1.0.2//:equivalent", + "@vendor_ts__foldhash-0.2.0//:foldhash", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.17.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.17.1.bazel new file mode 100644 index 00000000000..eba4862da68 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.17.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 = "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.1", +) 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 53cca2f5677..5a727af4c88 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.1//:hashbrown", "@vendor_ts__serde_core-1.0.228//:serde_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indoc-2.0.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indoc-2.0.7.bazel new file mode 100644 index 00000000000..f3a9dea14d4 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indoc-2.0.7.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_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_proc_macro( + name = "indoc", + 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=indoc", + "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.7", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libloading-0.8.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libloading-0.8.9.bazel new file mode 100644 index 00000000000..e87fddeaaa5 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libloading-0.8.9.bazel @@ -0,0 +1,190 @@ +############################################################################### +# @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 = "libloading", + 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=libloading", + "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.9", + deps = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-apple-ios": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-linux-android": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "@vendor_ts__windows-link-0.2.0//:windows_link", # cfg(windows) + ], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:armv7-linux-androideabi": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-linux-android": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__windows-link-0.2.0//:windows_link", # cfg(windows) + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-linux-android": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__windows-link-0.2.0//:windows_link", # cfg(windows) + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__cfg-if-1.0.3//:cfg_if", # cfg(unix) + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.minimal-lexical-0.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.minimal-lexical-0.2.1.bazel new file mode 100644 index 00000000000..40e1e2259be --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.minimal-lexical-0.2.1.bazel @@ -0,0 +1,100 @@ +############################################################################### +# @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 = "minimal_lexical", + 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 = "2018", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=minimal-lexical", + "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.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nom-7.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nom-7.1.3.bazel new file mode 100644 index 00000000000..b1524d8a86d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nom-7.1.3.bazel @@ -0,0 +1,105 @@ +############################################################################### +# @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 = "nom", + 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=nom", + "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 = "7.1.3", + deps = [ + "@vendor_ts__memchr-2.7.5//:memchr", + "@vendor_ts__minimal-lexical-0.2.1//:minimal_lexical", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pathdiff-0.2.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pathdiff-0.2.3.bazel new file mode 100644 index 00000000000..48df9a3c3d8 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pathdiff-0.2.3.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 = "pathdiff", + 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=pathdiff", + "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", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel index 1ad22b9f498..675b426dd1a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel @@ -102,6 +102,6 @@ rust_library( version = "0.6.5", deps = [ "@vendor_ts__fixedbitset-0.4.2//:fixedbitset", - "@vendor_ts__indexmap-2.11.4//:indexmap", + "@vendor_ts__indexmap-2.14.0//:indexmap", ], ) 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.phf-0.13.1.bazel similarity index 96% 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.phf-0.13.1.bazel index 3ad30e38760..8c41939eb97 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.phf-0.13.1.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "toml_parser", + name = "phf", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -35,7 +35,7 @@ rust_library( ], ), crate_features = [ - "alloc", + "default", "std", ], crate_root = "src/lib.rs", @@ -48,7 +48,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=toml_parser", + "crate-name=phf", "manual", "noclippy", "norustfmt", @@ -97,8 +97,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.3", + version = "0.13.1", deps = [ - "@vendor_ts__winnow-0.7.13//:winnow", + "@vendor_ts__phf_shared-0.13.1//:phf_shared", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.phf_generator-0.13.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.phf_generator-0.13.1.bazel new file mode 100644 index 00000000000..c270102428d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.phf_generator-0.13.1.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 = "phf_generator", + 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=phf_generator", + "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.13.1", + deps = [ + "@vendor_ts__fastrand-2.4.1//:fastrand", + "@vendor_ts__phf_shared-0.13.1//:phf_shared", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.phf_shared-0.13.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.phf_shared-0.13.1.bazel new file mode 100644 index 00000000000..164cee33522 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.phf_shared-0.13.1.bazel @@ -0,0 +1,104 @@ +############################################################################### +# @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 = "phf_shared", + 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=phf_shared", + "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.13.1", + deps = [ + "@vendor_ts__siphasher-1.0.3//:siphasher", + ], +) 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.prettyplease-0.2.37.bazel similarity index 92% 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.prettyplease-0.2.37.bazel index a495f639d42..5d0886807cb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.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 = "semver", + name = "prettyplease", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -39,12 +39,10 @@ rust_library( ], ), crate_features = [ - "default", - "serde", - "std", + "verbatim", ], crate_root = "src/lib.rs", - edition = "2018", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -53,7 +51,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=semver", + "crate-name=prettyplease", "manual", "noclippy", "norustfmt", @@ -102,10 +100,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.26", + version = "0.2.37", deps = [ - "@vendor_ts__semver-1.0.26//:build_script_build", - "@vendor_ts__serde-1.0.228//:serde", + "@vendor_ts__prettyplease-0.2.37//:build_script_build", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", + "@vendor_ts__syn-2.0.106//:syn", ], ) @@ -129,9 +128,7 @@ cargo_build_script( ], ), crate_features = [ - "default", - "serde", - "std", + "verbatim", ], crate_name = "build_script_build", crate_root = "build.rs", @@ -147,8 +144,9 @@ cargo_build_script( "WORKSPACE.bazel", ], ), - edition = "2018", - pkg_name = "semver", + edition = "2021", + links = "prettyplease02", + pkg_name = "prettyplease", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -157,12 +155,12 @@ cargo_build_script( ], tags = [ "cargo-bazel", - "crate-name=semver", + "crate-name=prettyplease", "manual", "noclippy", "norustfmt", ], - version = "1.0.26", + version = "0.2.37", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro-crate-3.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro-crate-3.5.0.bazel new file mode 100644 index 00000000000..0ae50367fac --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro-crate-3.5.0.bazel @@ -0,0 +1,100 @@ +############################################################################### +# @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 = "proc_macro_crate", + 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=proc-macro-crate", + "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 = "3.5.0", + deps = [ + "@vendor_ts__toml_edit-0.25.11-spec-1.1.0//:toml_edit", + ], +) 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.301.bazel index 60cece39191..073916cafe7 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.301.bazel @@ -108,7 +108,7 @@ rust_library( version = "0.0.301", 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", @@ -117,7 +117,7 @@ rust_library( "@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__semver-1.0.28//:semver", "@vendor_ts__tracing-0.1.41//:tracing", "@vendor_ts__triomphe-0.1.14//:triomphe", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel index c1272206d93..2d77b3cb351 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.301.bazel @@ -109,7 +109,7 @@ rust_library( deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", "@vendor_ts__either-1.15.0//:either", - "@vendor_ts__indexmap-2.11.4//:indexmap", + "@vendor_ts__indexmap-2.14.0//: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", 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.301.bazel index bd85f440ba5..caaa0ae151e 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.301.bazel @@ -117,7 +117,7 @@ rust_library( "@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", 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.301.bazel index 2dbbe4f7717..23f08b41491 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.301.bazel @@ -118,7 +118,7 @@ rust_library( "@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", 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.301.bazel index 66d015a2efb..b004cb57d39 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.301.bazel @@ -116,7 +116,7 @@ rust_library( "@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__indexmap-2.14.0//:indexmap", "@vendor_ts__itertools-0.14.0//:itertools", "@vendor_ts__line-index-0.1.2//:line_index", "@vendor_ts__memchr-2.7.5//:memchr", 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.301.bazel index 12961c51aec..f0e9033583f 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.301.bazel @@ -105,7 +105,7 @@ rust_library( }), version = "0.0.301", deps = [ - "@vendor_ts__indexmap-2.11.4//:indexmap", + "@vendor_ts__indexmap-2.14.0//: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", 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.301.bazel index 8f551d7bd0b..0939c28b54b 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.301.bazel @@ -119,7 +119,7 @@ rust_library( "@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__semver-1.0.28//:semver", "@vendor_ts__serde-1.0.228//:serde", "@vendor_ts__serde_json-1.0.145//:serde_json", "@vendor_ts__temp-dir-0.1.16//:temp_dir", 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.301.bazel index 67dd8bdd610..4508df3a376 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.301.bazel @@ -101,7 +101,7 @@ rust_library( 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", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.relative-path-2.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.relative-path-2.0.1.bazel new file mode 100644 index 00000000000..67aef624737 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.relative-path-2.0.1.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 = "relative_path", + 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 = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=relative-path", + "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", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rquickjs-0.10.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rquickjs-0.10.0.bazel new file mode 100644 index 00000000000..3c57513b3d3 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rquickjs-0.10.0.bazel @@ -0,0 +1,112 @@ +############################################################################### +# @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 = "rquickjs", + 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 = [ + "bindgen", + "default", + "loader", + "macro", + "phf", + "rquickjs-macro", + "std", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__rquickjs-macro-0.10.0//:rquickjs_macro", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=rquickjs", + "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__rquickjs-core-0.10.0//:rquickjs_core", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rquickjs-core-0.10.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rquickjs-core-0.10.0.bazel new file mode 100644 index 00000000000..415c9ee4e4b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rquickjs-core-0.10.0.bazel @@ -0,0 +1,110 @@ +############################################################################### +# @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 = "rquickjs_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 = [ + "bindgen", + "loader", + "phf", + "relative-path", + "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=rquickjs-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.0", + deps = [ + "@vendor_ts__hashbrown-0.16.1//:hashbrown", + "@vendor_ts__phf-0.13.1//:phf", + "@vendor_ts__relative-path-2.0.1//:relative_path", + "@vendor_ts__rquickjs-sys-0.10.0//:rquickjs_sys", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rquickjs-macro-0.10.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rquickjs-macro-0.10.0.bazel new file mode 100644 index 00000000000..055e627f3be --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rquickjs-macro-0.10.0.bazel @@ -0,0 +1,116 @@ +############################################################################### +# @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 = "rquickjs_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_features = [ + "bindgen", + "phf", + "phf_generator", + "phf_shared", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=rquickjs-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.10.0", + deps = [ + "@vendor_ts__convert_case-0.8.0//:convert_case", + "@vendor_ts__fnv-1.0.7//:fnv", + "@vendor_ts__ident_case-1.0.1//:ident_case", + "@vendor_ts__indexmap-2.14.0//:indexmap", + "@vendor_ts__phf_generator-0.13.1//:phf_generator", + "@vendor_ts__phf_shared-0.13.1//:phf_shared", + "@vendor_ts__proc-macro-crate-3.5.0//:proc_macro_crate", + "@vendor_ts__proc-macro2-1.0.101//:proc_macro2", + "@vendor_ts__quote-1.0.41//:quote", + "@vendor_ts__rquickjs-core-0.10.0//:rquickjs_core", + "@vendor_ts__syn-2.0.106//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-swift-0.7.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rquickjs-sys-0.10.0.bazel similarity index 89% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-swift-0.7.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rquickjs-sys-0.10.0.bazel index f9bb6fa50c3..185637f6ba4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-swift-0.7.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rquickjs-sys-0.10.0.bazel @@ -21,7 +21,7 @@ cargo_toml_env_vars( ) rust_library( - name = "tree_sitter_swift", + name = "rquickjs_sys", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -38,8 +38,12 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_root = "bindings/rust/lib.rs", - edition = "2018", + crate_features = [ + "bindgen", + "bindgen-rs", + ], + crate_root = "src/lib.rs", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -48,7 +52,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=tree-sitter-swift", + "crate-name=rquickjs-sys", "manual", "noclippy", "norustfmt", @@ -97,10 +101,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.7.2", + version = "0.10.0", deps = [ - "@vendor_ts__tree-sitter-language-0.1.5//:tree_sitter_language", - "@vendor_ts__tree-sitter-swift-0.7.2//:build_script_build", + "@vendor_ts__rquickjs-sys-0.10.0//:build_script_build", ], ) @@ -110,6 +113,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + aliases = { + "@vendor_ts__bindgen-0.72.1//:bindgen": "bindgen_rs", + }, compile_data = glob( include = ["**"], allow_empty = True, @@ -123,8 +129,12 @@ cargo_build_script( "WORKSPACE.bazel", ], ), + crate_features = [ + "bindgen", + "bindgen-rs", + ], crate_name = "build_script_build", - crate_root = "bindings/rust/build.rs", + crate_root = "build.rs", data = glob( include = ["**"], allow_empty = True, @@ -137,8 +147,8 @@ cargo_build_script( "WORKSPACE.bazel", ], ), - edition = "2018", - pkg_name = "tree-sitter-swift", + edition = "2021", + pkg_name = "rquickjs-sys", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -147,14 +157,15 @@ cargo_build_script( ], tags = [ "cargo-bazel", - "crate-name=tree-sitter-swift", + "crate-name=rquickjs-sys", "manual", "noclippy", "norustfmt", ], - version = "0.7.2", + version = "0.10.0", visibility = ["//visibility:private"], deps = [ + "@vendor_ts__bindgen-0.72.1//:bindgen", "@vendor_ts__cc-1.2.61//:cc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel index 25fcd798c65..5e02ff49c08 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel @@ -109,7 +109,7 @@ rust_library( "@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__parking_lot-0.12.4//:parking_lot", 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 00000000000..5c659d959e2 --- /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_json-1.0.145.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.145.bazel index eaee1ee4b28..dbbf22985e3 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.145.bazel @@ -173,49 +173,49 @@ rust_library( "@vendor_ts__serde_json-1.0.145//:build_script_build", ] + 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": [], }), 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 42f05a8553a..1cb0484417b 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,7 +95,7 @@ rust_library( }), version = "0.9.34+deprecated", deps = [ - "@vendor_ts__indexmap-2.11.4//:indexmap", + "@vendor_ts__indexmap-2.14.0//:indexmap", "@vendor_ts__itoa-1.0.15//:itoa", "@vendor_ts__ryu-1.0.20//:ryu", "@vendor_ts__serde-1.0.228//:serde", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.siphasher-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.siphasher-1.0.3.bazel new file mode 100644 index 00000000000..472af635f83 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.siphasher-1.0.3.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 = "siphasher", + 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=siphasher", + "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.3", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallbitvec-2.6.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallbitvec-2.6.1.bazel new file mode 100644 index 00000000000..6dc39e35260 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallbitvec-2.6.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 = "smallbitvec", + 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=smallbitvec", + "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.6.1", +) 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 3e1ae194c3b..7ba5989625a 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 99% 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 9d87f60d5d1..1c39cdf0659 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,7 +93,7 @@ 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", 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.7.bazel index 04609ea84f5..fad5edad1a2 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.7.bazel @@ -105,7 +105,7 @@ rust_library( "@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_parser-1.1.2-spec-1.1.0//:toml_parser", "@vendor_ts__toml_writer-1.0.3//:toml_writer", "@vendor_ts__winnow-0.7.13//:winnow", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-1.1.1+spec-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-1.1.1+spec-1.1.0.bazel new file mode 100644 index 00000000000..a4809f145b6 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-1.1.1+spec-1.1.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 = "toml_datetime", + 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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=toml_datetime", + "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.1+spec-1.1.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel index b8a2048b67f..bdee2627082 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel @@ -100,7 +100,7 @@ rust_library( }), version = "0.22.27", deps = [ - "@vendor_ts__indexmap-2.11.4//:indexmap", + "@vendor_ts__indexmap-2.14.0//: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", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.25.11+spec-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.25.11+spec-1.1.0.bazel new file mode 100644 index 00000000000..59612771452 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.25.11+spec-1.1.0.bazel @@ -0,0 +1,106 @@ +############################################################################### +# @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 = [ + "parse", + ], + crate_root = "src/lib.rs", + edition = "2024", + 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.25.11+spec-1.1.0", + deps = [ + "@vendor_ts__indexmap-2.14.0//:indexmap", + "@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__winnow-1.0.2//:winnow", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.1.2+spec-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.1.2+spec-1.1.0.bazel new file mode 100644 index 00000000000..4504ea44e88 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.1.2+spec-1.1.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 = "toml_parser", + 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", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "default", # aarch64-apple-darwin + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "default", # aarch64-pc-windows-msvc + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "default", # aarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "default", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "default", # arm-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "default", # i686-pc-windows-msvc + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "default", # i686-unknown-linux-gnu + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "default", # powerpc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "default", # riscv64gc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "default", # s390x-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "default", # x86_64-apple-darwin + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "default", # x86_64-pc-windows-msvc + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "default", # x86_64-unknown-freebsd + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "default", # x86_64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "default", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + ], + "//conditions: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=toml_parser", + "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.2+spec-1.1.0", + deps = [ + "@vendor_ts__winnow-1.0.2//:winnow", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.topological-sort-0.2.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.topological-sort-0.2.2.bazel new file mode 100644 index 00000000000..4cba2e91967 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.topological-sort-0.2.2.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 = "topological_sort", + 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=topological-sort", + "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", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-generate-0.26.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-generate-0.26.8.bazel new file mode 100644 index 00000000000..12951a95548 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-generate-0.26.8.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 = "tree_sitter_generate", + 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", + "load", + "pathdiff", + "qjs-rt", + "rquickjs", + ], + crate_root = "src/generate.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__indoc-2.0.7//:indoc", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=tree-sitter-generate", + "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.26.8", + deps = [ + "@vendor_ts__bitflags-2.9.4//:bitflags", + "@vendor_ts__dunce-1.0.5//:dunce", + "@vendor_ts__indexmap-2.14.0//:indexmap", + "@vendor_ts__log-0.4.28//:log", + "@vendor_ts__pathdiff-0.2.3//:pathdiff", + "@vendor_ts__regex-1.11.3//:regex", + "@vendor_ts__regex-syntax-0.8.6//:regex_syntax", + "@vendor_ts__rquickjs-0.10.0//:rquickjs", + "@vendor_ts__rustc-hash-2.1.1//: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__smallbitvec-2.6.1//:smallbitvec", + "@vendor_ts__thiserror-2.0.18//:thiserror", + "@vendor_ts__topological-sort-0.2.2//:topological_sort", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-segmentation-1.13.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-segmentation-1.13.2.bazel new file mode 100644 index 00000000000..020b1bf1a71 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-segmentation-1.13.2.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 = "unicode_segmentation", + 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=unicode-segmentation", + "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.13.2", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.2.bazel new file mode 100644 index 00000000000..e9d478c9c66 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.2.bazel @@ -0,0 +1,220 @@ +############################################################################### +# @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 = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "alloc", # aarch64-apple-darwin + "ascii", # aarch64-apple-darwin + "binary", # aarch64-apple-darwin + "default", # aarch64-apple-darwin + "parser", # aarch64-apple-darwin + "std", # aarch64-apple-darwin + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "alloc", # aarch64-pc-windows-msvc + "ascii", # aarch64-pc-windows-msvc + "binary", # aarch64-pc-windows-msvc + "default", # aarch64-pc-windows-msvc + "parser", # aarch64-pc-windows-msvc + "std", # aarch64-pc-windows-msvc + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "alloc", # aarch64-unknown-linux-gnu + "ascii", # aarch64-unknown-linux-gnu + "binary", # aarch64-unknown-linux-gnu + "default", # aarch64-unknown-linux-gnu + "parser", # aarch64-unknown-linux-gnu + "std", # aarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "alloc", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "ascii", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "binary", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "default", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "parser", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "std", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "alloc", # arm-unknown-linux-gnueabi + "ascii", # arm-unknown-linux-gnueabi + "binary", # arm-unknown-linux-gnueabi + "default", # arm-unknown-linux-gnueabi + "parser", # arm-unknown-linux-gnueabi + "std", # arm-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "alloc", # i686-pc-windows-msvc + "ascii", # i686-pc-windows-msvc + "binary", # i686-pc-windows-msvc + "default", # i686-pc-windows-msvc + "parser", # i686-pc-windows-msvc + "std", # i686-pc-windows-msvc + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "alloc", # i686-unknown-linux-gnu + "ascii", # i686-unknown-linux-gnu + "binary", # i686-unknown-linux-gnu + "default", # i686-unknown-linux-gnu + "parser", # i686-unknown-linux-gnu + "std", # i686-unknown-linux-gnu + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "alloc", # powerpc-unknown-linux-gnu + "ascii", # powerpc-unknown-linux-gnu + "binary", # powerpc-unknown-linux-gnu + "default", # powerpc-unknown-linux-gnu + "parser", # powerpc-unknown-linux-gnu + "std", # powerpc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "alloc", # riscv64gc-unknown-linux-gnu + "ascii", # riscv64gc-unknown-linux-gnu + "binary", # riscv64gc-unknown-linux-gnu + "default", # riscv64gc-unknown-linux-gnu + "parser", # riscv64gc-unknown-linux-gnu + "std", # riscv64gc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "alloc", # s390x-unknown-linux-gnu + "ascii", # s390x-unknown-linux-gnu + "binary", # s390x-unknown-linux-gnu + "default", # s390x-unknown-linux-gnu + "parser", # s390x-unknown-linux-gnu + "std", # s390x-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "alloc", # x86_64-apple-darwin + "ascii", # x86_64-apple-darwin + "binary", # x86_64-apple-darwin + "default", # x86_64-apple-darwin + "parser", # x86_64-apple-darwin + "std", # x86_64-apple-darwin + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "alloc", # x86_64-pc-windows-msvc + "ascii", # x86_64-pc-windows-msvc + "binary", # x86_64-pc-windows-msvc + "default", # x86_64-pc-windows-msvc + "parser", # x86_64-pc-windows-msvc + "std", # x86_64-pc-windows-msvc + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "alloc", # x86_64-unknown-freebsd + "ascii", # x86_64-unknown-freebsd + "binary", # x86_64-unknown-freebsd + "default", # x86_64-unknown-freebsd + "parser", # x86_64-unknown-freebsd + "std", # x86_64-unknown-freebsd + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "alloc", # x86_64-unknown-linux-gnu + "ascii", # x86_64-unknown-linux-gnu + "binary", # x86_64-unknown-linux-gnu + "default", # x86_64-unknown-linux-gnu + "parser", # x86_64-unknown-linux-gnu + "std", # x86_64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "alloc", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "ascii", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "binary", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "default", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "parser", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "std", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + ], + "//conditions:default": [], + }), + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=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.2", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl index 4f70edd6ab3..11842460638 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl @@ -415,7 +415,11 @@ _NORMAL_DEPENDENCIES = { "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.20//:tracing_subscriber"), "tree-sitter": Label("@vendor_ts__tree-sitter-0.26.8//:tree_sitter"), "tree-sitter-embedded-template": Label("@vendor_ts__tree-sitter-embedded-template-0.25.0//:tree_sitter_embedded_template"), - "tree-sitter-swift": Label("@vendor_ts__tree-sitter-swift-0.7.2//:tree_sitter_swift"), + }, + }, + "unified/extractor/tree-sitter-swift": { + _COMMON_CONDITION: { + "tree-sitter-language": Label("@vendor_ts__tree-sitter-language-0.1.5//:tree_sitter_language"), }, }, } @@ -456,6 +460,10 @@ _NORMAL_ALIASES = { _COMMON_CONDITION: { }, }, + "unified/extractor/tree-sitter-swift": { + _COMMON_CONDITION: { + }, + }, } _NORMAL_DEV_DEPENDENCIES = { @@ -482,6 +490,8 @@ _NORMAL_DEV_DEPENDENCIES = { }, "unified/extractor": { }, + "unified/extractor/tree-sitter-swift": { + }, } _NORMAL_DEV_ALIASES = { @@ -505,6 +515,8 @@ _NORMAL_DEV_ALIASES = { }, "unified/extractor": { }, + "unified/extractor/tree-sitter-swift": { + }, } _PROC_MACRO_DEPENDENCIES = { @@ -526,6 +538,8 @@ _PROC_MACRO_DEPENDENCIES = { }, "unified/extractor": { }, + "unified/extractor/tree-sitter-swift": { + }, } _PROC_MACRO_ALIASES = { @@ -547,6 +561,8 @@ _PROC_MACRO_ALIASES = { }, "unified/extractor": { }, + "unified/extractor/tree-sitter-swift": { + }, } _PROC_MACRO_DEV_DEPENDENCIES = { @@ -568,6 +584,8 @@ _PROC_MACRO_DEV_DEPENDENCIES = { }, "unified/extractor": { }, + "unified/extractor/tree-sitter-swift": { + }, } _PROC_MACRO_DEV_ALIASES = { @@ -591,6 +609,8 @@ _PROC_MACRO_DEV_ALIASES = { }, "unified/extractor": { }, + "unified/extractor/tree-sitter-swift": { + }, } _BUILD_DEPENDENCIES = { @@ -612,6 +632,12 @@ _BUILD_DEPENDENCIES = { }, "unified/extractor": { }, + "unified/extractor/tree-sitter-swift": { + _COMMON_CONDITION: { + "cc": Label("@vendor_ts__cc-1.2.61//:cc"), + "tree-sitter-generate": Label("@vendor_ts__tree-sitter-generate-0.26.8//:tree_sitter_generate"), + }, + }, } _BUILD_ALIASES = { @@ -633,6 +659,10 @@ _BUILD_ALIASES = { }, "unified/extractor": { }, + "unified/extractor/tree-sitter-swift": { + _COMMON_CONDITION: { + }, + }, } _BUILD_PROC_MACRO_DEPENDENCIES = { @@ -654,6 +684,8 @@ _BUILD_PROC_MACRO_DEPENDENCIES = { }, "unified/extractor": { }, + "unified/extractor/tree-sitter-swift": { + }, } _BUILD_PROC_MACRO_ALIASES = { @@ -675,6 +707,8 @@ _BUILD_PROC_MACRO_ALIASES = { }, "unified/extractor": { }, + "unified/extractor/tree-sitter-swift": { + }, } _CONDITIONS = { @@ -916,6 +950,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.base64-0.22.1.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__bindgen-0.72.1", + sha256 = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895", + type = "tar.gz", + urls = ["https://static.crates.io/crates/bindgen/0.72.1/download"], + strip_prefix = "bindgen-0.72.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bindgen-0.72.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__bitflags-1.3.2", @@ -1036,6 +1080,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cc-1.2.61.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__cexpr-0.6.0", + sha256 = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766", + type = "tar.gz", + urls = ["https://static.crates.io/crates/cexpr/0.6.0/download"], + strip_prefix = "cexpr-0.6.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cexpr-0.6.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__cfg-if-1.0.3", @@ -1126,6 +1180,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chrono-0.4.42.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__clang-sys-1.8.1", + sha256 = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4", + type = "tar.gz", + urls = ["https://static.crates.io/crates/clang-sys/1.8.1/download"], + strip_prefix = "clang-sys-1.8.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clang-sys-1.8.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__clap-4.5.48", @@ -1176,6 +1240,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.colorchoice-1.0.4.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__convert_case-0.8.0", + sha256 = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/convert_case/0.8.0/download"], + strip_prefix = "convert_case-0.8.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.convert_case-0.8.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__core-foundation-sys-0.8.7", @@ -1466,6 +1540,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.erased-serde-0.4.6.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__fastrand-2.4.1", + sha256 = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6", + type = "tar.gz", + urls = ["https://static.crates.io/crates/fastrand/2.4.1/download"], + strip_prefix = "fastrand-2.4.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fastrand-2.4.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__figment-0.10.19", @@ -1526,6 +1610,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.foldhash-0.1.5.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__foldhash-0.2.0", + sha256 = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb", + type = "tar.gz", + urls = ["https://static.crates.io/crates/foldhash/0.2.0/download"], + strip_prefix = "foldhash-0.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.foldhash-0.2.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__form_urlencoded-1.2.2", @@ -1626,6 +1720,26 @@ 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.16.1", + sha256 = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100", + type = "tar.gz", + urls = ["https://static.crates.io/crates/hashbrown/0.16.1/download"], + strip_prefix = "hashbrown-0.16.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashbrown-0.16.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__hashbrown-0.17.1", + sha256 = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/hashbrown/0.17.1/download"], + strip_prefix = "hashbrown-0.17.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashbrown-0.17.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__hashlink-0.10.0", @@ -1808,12 +1922,22 @@ 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( + http_archive, + name = "vendor_ts__indoc-2.0.7", + sha256 = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706", + type = "tar.gz", + urls = ["https://static.crates.io/crates/indoc/2.0.7/download"], + strip_prefix = "indoc-2.0.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.indoc-2.0.7.bazel"), ) maybe( @@ -1976,6 +2100,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.libc-0.2.175.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__libloading-0.8.9", + sha256 = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55", + type = "tar.gz", + urls = ["https://static.crates.io/crates/libloading/0.8.9/download"], + strip_prefix = "libloading-0.8.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.libloading-0.8.9.bazel"), + ) + maybe( http_archive, name = "vendor_ts__line-index-0.1.2", @@ -2056,6 +2190,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.memoffset-0.9.1.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__minimal-lexical-0.2.1", + sha256 = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/minimal-lexical/0.2.1/download"], + strip_prefix = "minimal-lexical-0.2.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.minimal-lexical-0.2.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__miniz_oxide-0.8.9", @@ -2106,6 +2250,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.nohash-hasher-0.2.0.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__nom-7.1.3", + sha256 = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/nom/7.1.3/download"], + strip_prefix = "nom-7.1.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.nom-7.1.3.bazel"), + ) + maybe( http_archive, name = "vendor_ts__notify-8.2.0", @@ -2246,6 +2400,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.parking_lot_core-0.9.11.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__pathdiff-0.2.3", + sha256 = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/pathdiff/0.2.3/download"], + strip_prefix = "pathdiff-0.2.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.pathdiff-0.2.3.bazel"), + ) + maybe( http_archive, name = "vendor_ts__pear-0.2.9", @@ -2306,6 +2470,36 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.petgraph-0.6.5.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__phf-0.13.1", + sha256 = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf", + type = "tar.gz", + urls = ["https://static.crates.io/crates/phf/0.13.1/download"], + strip_prefix = "phf-0.13.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.phf-0.13.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__phf_generator-0.13.1", + sha256 = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737", + type = "tar.gz", + urls = ["https://static.crates.io/crates/phf_generator/0.13.1/download"], + strip_prefix = "phf_generator-0.13.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.phf_generator-0.13.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__phf_shared-0.13.1", + sha256 = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266", + type = "tar.gz", + urls = ["https://static.crates.io/crates/phf_shared/0.13.1/download"], + strip_prefix = "phf_shared-0.13.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.phf_shared-0.13.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__pin-project-lite-0.2.16", @@ -2366,6 +2560,26 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ppv-lite86-0.2.21.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__prettyplease-0.2.37", + sha256 = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b", + type = "tar.gz", + 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-macro-crate-3.5.0", + sha256 = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/proc-macro-crate/3.5.0/download"], + strip_prefix = "proc-macro-crate-3.5.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.proc-macro-crate-3.5.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__proc-macro2-1.0.101", @@ -2846,6 +3060,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-syntax-0.8.6.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__relative-path-2.0.1", + sha256 = "bca40a312222d8ba74837cb474edef44b37f561da5f773981007a10bbaa992b0", + type = "tar.gz", + urls = ["https://static.crates.io/crates/relative-path/2.0.1/download"], + strip_prefix = "relative-path-2.0.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.relative-path-2.0.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__rowan-0.15.15", @@ -2856,6 +3080,46 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rowan-0.15.15.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__rquickjs-0.10.0", + sha256 = "a135375fbac5ba723bb6a48f432a72f81539cedde422f0121a86c7c4e96d8e0d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rquickjs/0.10.0/download"], + strip_prefix = "rquickjs-0.10.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rquickjs-0.10.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rquickjs-core-0.10.0", + sha256 = "bccb7121a123865c8ace4dea42e7ed84d78b90cbaf4ca32c59849d8d210c9672", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rquickjs-core/0.10.0/download"], + strip_prefix = "rquickjs-core-0.10.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rquickjs-core-0.10.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rquickjs-macro-0.10.0", + sha256 = "89f93602cc3112c7f30bf5f29e722784232138692c7df4c52ebbac7e035d900d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rquickjs-macro/0.10.0/download"], + strip_prefix = "rquickjs-macro-0.10.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rquickjs-macro-0.10.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rquickjs-sys-0.10.0", + sha256 = "57b1b6528590d4d65dc86b5159eae2d0219709546644c66408b2441696d1d725", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rquickjs-sys/0.10.0/download"], + strip_prefix = "rquickjs-sys-0.10.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rquickjs-sys-0.10.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__rustc-hash-1.1.0", @@ -3018,12 +3282,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__semver-1.0.26", - sha256 = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0", + name = "vendor_ts__semver-1.0.28", + sha256 = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd", 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( @@ -3156,6 +3420,26 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.shlex-1.3.0.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__siphasher-1.0.3", + sha256 = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649", + type = "tar.gz", + urls = ["https://static.crates.io/crates/siphasher/1.0.3/download"], + strip_prefix = "siphasher-1.0.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.siphasher-1.0.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__smallbitvec-2.6.1", + sha256 = "9b0e903ee191d8f7a8fbf0d712c3a1699d19e04ceba5ad1eb673053c7d938a09", + type = "tar.gz", + urls = ["https://static.crates.io/crates/smallbitvec/2.6.1/download"], + strip_prefix = "smallbitvec-2.6.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.smallbitvec-2.6.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__smallvec-1.15.1", @@ -3258,22 +3542,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( @@ -3366,6 +3650,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_datetime-0.7.2.bazel"), ) + maybe( + http_archive, + 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/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", @@ -3378,12 +3672,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__toml_parser-1.0.3", - sha256 = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627", + name = "vendor_ts__toml_edit-0.25.11-spec-1.1.0", + sha256 = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b", 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_edit/0.25.11+spec-1.1.0/download"], + strip_prefix = "toml_edit-0.25.11+spec-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_edit-0.25.11+spec-1.1.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__toml_parser-1.1.2-spec-1.1.0", + sha256 = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526", + type = "tar.gz", + 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( @@ -3406,6 +3710,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_writer-1.0.3.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__topological-sort-0.2.2", + sha256 = "ea68304e134ecd095ac6c3574494fc62b909f416c4fca77e440530221e549d3d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/topological-sort/0.2.2/download"], + strip_prefix = "topological-sort-0.2.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.topological-sort-0.2.2.bazel"), + ) + maybe( http_archive, name = "vendor_ts__tracing-0.1.41", @@ -3486,6 +3800,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-embedded-template-0.25.0.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__tree-sitter-generate-0.26.8", + sha256 = "c3fb2e1bdb1d5f9d23cd5fa68cf98b3bedbd223c92a2edd60bbcf30bcf7180a5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tree-sitter-generate/0.26.8/download"], + strip_prefix = "tree-sitter-generate-0.26.8", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-generate-0.26.8.bazel"), + ) + maybe( http_archive, name = "vendor_ts__tree-sitter-json-0.24.8", @@ -3536,16 +3860,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-ruby-0.23.1.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__tree-sitter-swift-0.7.2", - sha256 = "f3b98fb6bc8e6a6a10023f401aa6a1858115e849dfaf7de57dd8b8ea0f257bd9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter-swift/0.7.2/download"], - strip_prefix = "tree-sitter-swift-0.7.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-swift-0.7.2.bazel"), - ) - maybe( http_archive, name = "vendor_ts__triomphe-0.1.14", @@ -3616,6 +3930,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unicode-properties-0.1.3.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__unicode-segmentation-1.13.2", + sha256 = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/unicode-segmentation/1.13.2/download"], + strip_prefix = "unicode-segmentation-1.13.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unicode-segmentation-1.13.2.bazel"), + ) + maybe( http_archive, name = "vendor_ts__unicode-xid-0.2.6", @@ -4086,6 +4410,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winnow-0.7.13.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__winnow-1.0.2", + sha256 = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0", + type = "tar.gz", + urls = ["https://static.crates.io/crates/winnow/1.0.2/download"], + strip_prefix = "winnow-1.0.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winnow-1.0.2.bazel"), + ) + maybe( http_archive, name = "vendor_ts__wit-bindgen-0.45.1", @@ -4239,6 +4573,7 @@ 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__cc-1.2.61", 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), @@ -4285,9 +4620,10 @@ def crate_repositories(): struct(repo = "vendor_ts__tracing-subscriber-0.3.20", is_dev_dep = False), struct(repo = "vendor_ts__tree-sitter-0.26.8", 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-generate-0.26.8", is_dev_dep = False), + struct(repo = "vendor_ts__tree-sitter-language-0.1.5", is_dev_dep = False), struct(repo = "vendor_ts__tree-sitter-python-0.23.6", is_dev_dep = False), struct(repo = "vendor_ts__tree-sitter-ruby-0.23.1", is_dev_dep = False), - struct(repo = "vendor_ts__tree-sitter-swift-0.7.2", is_dev_dep = False), struct(repo = "vendor_ts__triomphe-0.1.14", 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), diff --git a/python/ql/src/Security/CWE-502/UnsafeDeserialization.qhelp b/python/ql/src/Security/CWE-502/UnsafeDeserialization.qhelp index 2c5afee586b..dea8a8794bb 100644 --- a/python/ql/src/Security/CWE-502/UnsafeDeserialization.qhelp +++ b/python/ql/src/Security/CWE-502/UnsafeDeserialization.qhelp @@ -5,22 +5,32 @@

    Deserializing untrusted data using any deserialization framework that allows the construction of arbitrary serializable objects is easily exploitable -and in many cases allows an attacker to execute arbitrary code. Even before a +and in many cases allows an attacker to execute arbitrary code. Even before a deserialized object is returned to the caller of a deserialization method a lot of code may have been executed, including static initializers, constructors, -and finalizers. Automatic deserialization of fields means that an attacker may +and finalizers. Automatic deserialization of fields means that an attacker may craft a nested combination of objects on which the executed initialization code may have unforeseen effects, such as the execution of arbitrary code.

    -There are many different serialization frameworks. This query currently +There are many different serialization frameworks. This query currently supports Pickle, Marshal and Yaml.

    +

    +Note that a deserialization method is only dangerous if it can instantiate +arbitrary classes. Serialization frameworks that use a schema to instantiate +only expected, predefined types are generally not tracked by this query. Such +frameworks are generally safe with respect to arbitrary-class-instantiation and +gadget-chain attacks when the schema is trusted and does not permit +user-controlled type resolution. However, care must be taken to ensure the schema +strictly limits the allowed types. Permitting common standard library classes +can still leave the application vulnerable to gadget-chain attacks. +

    -Avoid deserialization of untrusted data if at all possible. If the +Avoid deserialization of untrusted data if at all possible. If the architecture permits it then use other formats instead of serialized objects, for example JSON.

    diff --git a/ruby/ql/src/queries/security/cwe-502/UnsafeDeserialization.qhelp b/ruby/ql/src/queries/security/cwe-502/UnsafeDeserialization.qhelp index b84c7dce067..001f7ef1448 100644 --- a/ruby/ql/src/queries/security/cwe-502/UnsafeDeserialization.qhelp +++ b/ruby/ql/src/queries/security/cwe-502/UnsafeDeserialization.qhelp @@ -7,6 +7,16 @@ Deserializing untrusted data using any method that allows the construction of arbitrary objects is easily exploitable and, in many cases, allows an attacker to execute arbitrary code.

    +

    +Note that a deserialization method is only dangerous if it can instantiate +arbitrary classes or objects. Serialization frameworks that use a schema to instantiate +only expected, predefined types are generally not tracked by this query. Such +frameworks are generally safe with respect to arbitrary-class-instantiation and +gadget-chain attacks when the schema is trusted and does not permit +user-controlled type resolution. However, care must be taken to ensure the schema +strictly limits the allowed types. Permitting common standard library classes +can still leave the application vulnerable to gadget-chain attacks. +

    @@ -31,7 +41,7 @@ safely be used. If deserializing an untrusted XML document using the ox gem, do not use parse_obj and load using the non-default :object mode. Instead use the load method in the default mode or better explicitly set a safe -mode such as :hash. +mode such as :hash.

    diff --git a/shared/tree-sitter-extractor/src/extractor/mod.rs b/shared/tree-sitter-extractor/src/extractor/mod.rs index 0c3e1366081..00816a00fd0 100644 --- a/shared/tree-sitter-extractor/src/extractor/mod.rs +++ b/shared/tree-sitter-extractor/src/extractor/mod.rs @@ -479,13 +479,14 @@ impl<'a> Visitor<'a> { let (id, _, child_nodes) = self.stack.pop().expect("Vistor: empty stack"); let loc = location_for(self, self.file_label, node); let loc_label = location_label(self.trap_writer, loc); + let type_name = TypeName { + kind: node.kind().to_owned(), + named: node.is_named(), + }; let table = self .schema - .get(&TypeName { - kind: node.kind().to_owned(), - named: node.is_named(), - }) - .unwrap(); + .get(&type_name) + .unwrap_or_else(|| panic!("missing extractor schema entry for {type_name:?}")); let mut valid = true; let parent_info = match self.stack.last_mut() { Some(p) if !node.is_extra() => { diff --git a/unified/AGENTS.md b/unified/AGENTS.md index 44cb7437288..488a94f44bd 100644 --- a/unified/AGENTS.md +++ b/unified/AGENTS.md @@ -5,6 +5,21 @@ This is a CodeQL extractor based on tree-sitter. ## Building To build the extractor, run `scripts/create-extractor-pack.sh` +## Editing the Swift grammar +The vendored tree-sitter-swift grammar lives at +`extractor/tree-sitter-swift/`. After editing `grammar.js` (or any other +grammar source), run `scripts/regenerate-grammar.sh` to: +- regenerate `extractor/tree-sitter-swift/src/{parser.c, grammar.json, + node-types.json}` (and the `src/tree_sitter/*.h` headers) via + `tree-sitter generate`; and +- refresh `extractor/tree-sitter-swift/node-types.yml`, the + human-readable companion to `src/node-types.json` produced by yeast's + `node_types_yaml` binary. + +`node-types.yml` is the recommended review surface for grammar changes — +it shows the impact of a grammar tweak on the named node kinds, fields, +and child types in a form much easier to read than the raw JSON. + ## Testing - If you changed the extractor code, always rebuild it before running tests. diff --git a/unified/extractor/BUILD.bazel b/unified/extractor/BUILD.bazel index 5a53d7cc3e0..80ca1c0057b 100644 --- a/unified/extractor/BUILD.bazel +++ b/unified/extractor/BUILD.bazel @@ -16,5 +16,6 @@ codeql_rust_binary( ) + [ "//shared/tree-sitter-extractor", "//shared/yeast", + "//unified/extractor/tree-sitter-swift", ], ) diff --git a/unified/extractor/Cargo.toml b/unified/extractor/Cargo.toml index 3877ec2e106..39c20598b1f 100644 --- a/unified/extractor/Cargo.toml +++ b/unified/extractor/Cargo.toml @@ -9,7 +9,7 @@ edition = "2024" [dependencies] tree-sitter = ">= 0.23.0" tree-sitter-embedded-template = "0.25.0" -tree-sitter-swift = "0.7.2" +tree-sitter-swift = { path = "tree-sitter-swift" } clap = { version = "4.5", features = ["derive"] } tracing = "0.1" tracing-subscriber = { version = "0.3.20", features = ["env-filter"] } diff --git a/unified/extractor/tree-sitter-swift/.gitignore b/unified/extractor/tree-sitter-swift/.gitignore new file mode 100644 index 00000000000..53796875297 --- /dev/null +++ b/unified/extractor/tree-sitter-swift/.gitignore @@ -0,0 +1,9 @@ +# Generated by tree-sitter from grammar.js. The Cargo build script +# (bindings/rust/build.rs) and Bazel's cargo_build_script regenerate them into +# OUT_DIR. The tree-sitter CLI (parse, test, playground, etc.) expects them in +# src/, so contributors can run `tree-sitter generate` locally to populate +# these — they are intentionally untracked. +src/parser.c +src/grammar.json +src/node-types.json +src/tree_sitter/ diff --git a/unified/extractor/tree-sitter-swift/BUILD.bazel b/unified/extractor/tree-sitter-swift/BUILD.bazel new file mode 100644 index 00000000000..f865f22a142 --- /dev/null +++ b/unified/extractor/tree-sitter-swift/BUILD.bazel @@ -0,0 +1,42 @@ +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") +load("//misc/bazel/3rdparty/tree_sitter_extractors_deps:defs.bzl", "aliases", "all_crate_deps") + +package(default_visibility = ["//visibility:public"]) + +# This will run the build script from the root of the workspace, and +# collect the outputs. +cargo_build_script( + name = "tree-sitter-swift-build", + srcs = ["bindings/rust/build.rs"], + data = glob([ + "src/scanner.c", + ]) + [ + "grammar.js", + ], + deps = all_crate_deps( + build = True, + ), +) + +rust_library( + name = "tree-sitter-swift", + srcs = [ + "bindings/rust/lib.rs", + ], + aliases = aliases(), + compile_data = glob([ + "src/**", + "queries/**", + ]) + [ + "grammar.js", + ], + proc_macro_deps = all_crate_deps( + proc_macro = True, + ), + deps = [":tree-sitter-swift-build"] + all_crate_deps( + normal = True, + ), +) + +exports_files(["Cargo.toml"]) diff --git a/unified/extractor/tree-sitter-swift/Cargo.toml b/unified/extractor/tree-sitter-swift/Cargo.toml new file mode 100644 index 00000000000..8cec03889a8 --- /dev/null +++ b/unified/extractor/tree-sitter-swift/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "tree-sitter-swift" +description = "Swift grammar for the tree-sitter parsing library (vendored copy for the unified extractor)" +version = "0.7.2" +keywords = ["incremental", "parsing", "swift"] +categories = ["parsing", "text-editors"] +repository = "https://github.com/alex-pinkus/tree-sitter-swift" +edition = "2024" +license = "MIT" + +build = "bindings/rust/build.rs" + +[lib] +path = "bindings/rust/lib.rs" + +# When updating these dependencies, run `misc/bazel/3rdparty/update_cargo_deps.sh` +[dependencies] +tree-sitter-language = "0.1" + +[build-dependencies] +cc = "1.2" +tree-sitter-generate = "0.26.8" diff --git a/unified/extractor/tree-sitter-swift/LICENSE b/unified/extractor/tree-sitter-swift/LICENSE new file mode 100644 index 00000000000..f158d700531 --- /dev/null +++ b/unified/extractor/tree-sitter-swift/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 alex-pinkus + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/unified/extractor/tree-sitter-swift/README.md b/unified/extractor/tree-sitter-swift/README.md new file mode 100644 index 00000000000..5b54f4b617f --- /dev/null +++ b/unified/extractor/tree-sitter-swift/README.md @@ -0,0 +1,127 @@ +![Parse rate badge](https://byob.yarr.is/alex-pinkus/tree-sitter-swift/parse_rate) +[![Crates.io badge](https://byob.yarr.is/alex-pinkus/tree-sitter-swift/crates_io_version)](https://crates.io/crates/tree-sitter-swift) +[![NPM badge](https://byob.yarr.is/alex-pinkus/tree-sitter-swift/npm_version)](https://www.npmjs.com/package/tree-sitter-swift) +[![Build](https://github.com/alex-pinkus/tree-sitter-swift/actions/workflows/top-repos.yml/badge.svg)](https://github.com/alex-pinkus/tree-sitter-swift/actions/workflows/top-repos.yml) + +# tree-sitter-swift + +This contains a [`tree-sitter`](https://tree-sitter.github.io/tree-sitter) grammar for the Swift programming language. + +## Getting started + +To use this parser to parse Swift code, you'll want to depend on either the Rust crate or the NPM package. + +### Rust + +To use the Rust crate, you'll add this to your `Cargo.toml`: + +``` +tree-sitter = "0.23.0" +tree-sitter-swift = "=0.7.0" +``` + +Then you can use a `tree-sitter` parser with the language declared here: + +``` +let mut parser = tree_sitter::Parser::new(); +parser.set_language(tree_sitter_swift::language())?; + +// ... + +let tree = parser.parse(&my_source_code, None) + .ok_or_else(|| /* error handling code */)?; +``` + +### Javascript + +To use this from NPM, you'll add similar dependencies to `package.json`: + +``` +"dependencies: { + "tree-sitter-swift": "0.7.0", + "tree-sitter": "^0.22.1" +} +``` + +Your usage of the parser will look like: + +``` +const Parser = require("tree-sitter"); +const Swift = require("tree-sitter-swift"); + +const parser = new Parser(); +parser.setLanguage(Swift); + +// ... + +const tree = parser.parse(mySourceCode); +``` + +### Editing the grammar + +With this package checked out, a common workflow for editing the grammar will look something like: + +1. Make a change to `grammar.ts`. +2. Run `npm install && npm test` to see whether the change has had impact on existing parsing behavior. The default + `npm test` target requires `valgrind` to be installed; if you do not have it installed, and do not wish to, you can + substitute `tree-sitter test` directly. +3. Run `tree-sitter parse` on some real Swift codebase and see whether (or where) it fails. +4. Use any failures to create new corpus test cases. + +## Contributions + +All contributions to this repository are welcome. + +If said contribution is to check generated files (e.g., `parser.c`) into the repository, be aware that your contribution will not be accepted. Make sure to read the [FAQ entry](https://github.com/alex-pinkus/tree-sitter-swift?tab=readme-ov-file#where-is-your-parserc) and the [prior](https://github.com/alex-pinkus/tree-sitter-swift/issues/362) [discussions](https://github.com/alex-pinkus/tree-sitter-swift/pull/315) and [compromises](https://github.com/alex-pinkus/tree-sitter-swift/issues/149) that have occurred already on this topic. + +## Using tree-sitter-swift in Web Assembly + +To use tree-sitter-swift as a language for the web bindings version tree-sitter, which will likely be a more modern version than the published node +module. [see](https://github.com/tree-sitter/tree-sitter/blob/master/lib/binding_web/README.md). Follow the instructions below + +1. Install the node modules `npm install web-tree-sitter tree-sitter-swift` +2. Run the tree-sitter cli to create the wasm bundle + ```sh + $ npx tree-sitter build-asm ./node_modules/tree-sitter + ``` +3. Boot tree-sitter wasm like this. + +```js +const Parser = require("web-tree-sitter"); +async function run() { + //needs to happen first + await Parser.init(); + //wait for the load of swift + const Swift = await Parser.Language.load("./tree-sitter-swift.wasm"); + + const parser = new Parser(); + parser.setLanguage(Swift); + + //Parse your swift code here. + const tree = parser.parse('print("Hello, World!")'); +} +//if you want to run this +run().then(console.log, console.error); +``` + +## Frequently asked questions + +### Where is your `parser.c`? + +This repository currently omits most of the code that is autogenerated during a build. This means, for instance, that +`grammar.json` and `parser.c` are both only available following a build. It also significantly reduces noise during +diffs. + +The side benefit of not checking in `parser.c` is that you can guarantee backwards compatibility. Parsers generated by +the tree-sitter CLI aren't always backwards compatible. If you need a parser, generate it yourself using the CLI; all +the information to do so is available in this package. By doing that, you'll also know for sure that your parser version +and your library version are compatible. + +If you need a `parser.c`, and you don't care about the tree-sitter version, but you don't have a local setup that would +allow you to obtain the parser, you can just download one from a recent workflow run in this package. To do so: + +- Go to the [GitHub actions page](https://github.com/alex-pinkus/tree-sitter-swift/actions) for this + repository. +- Click on the "Publish `grammar.json` and `parser.c`" action for the appropriate commit. +- Go down to `Artifacts` and click on `generated-parser-src`. All the relevant parser files will be available in your + download. diff --git a/unified/extractor/tree-sitter-swift/binding.gyp b/unified/extractor/tree-sitter-swift/binding.gyp new file mode 100644 index 00000000000..4d9270af7d4 --- /dev/null +++ b/unified/extractor/tree-sitter-swift/binding.gyp @@ -0,0 +1,44 @@ +{ + "targets": [ + { + "target_name": "tree_sitter_swift_binding", + "dependencies": [ + " + +typedef struct TSLanguage TSLanguage; + +extern "C" TSLanguage *tree_sitter_swift(); + +// "tree-sitter", "language" hashed with BLAKE2 +const napi_type_tag LANGUAGE_TYPE_TAG = { + 0x8AF2E5212AD58ABF, 0xD5006CAD83ABBA16 +}; + +Napi::Object Init(Napi::Env env, Napi::Object exports) { + exports["name"] = Napi::String::New(env, "swift"); + auto language = Napi::External::New(env, tree_sitter_swift()); + language.TypeTag(&LANGUAGE_TYPE_TAG); + exports["language"] = language; + return exports; +} + +NODE_API_MODULE(tree_sitter_swift_binding, Init) diff --git a/unified/extractor/tree-sitter-swift/bindings/node/index.js b/unified/extractor/tree-sitter-swift/bindings/node/index.js new file mode 100644 index 00000000000..6657bcf42de --- /dev/null +++ b/unified/extractor/tree-sitter-swift/bindings/node/index.js @@ -0,0 +1,7 @@ +const root = require("path").join(__dirname, "..", ".."); + +module.exports = require("node-gyp-build")(root); + +try { + module.exports.nodeTypeInfo = require("../../src/node-types.json"); +} catch (_) {} diff --git a/unified/extractor/tree-sitter-swift/bindings/rust/build.rs b/unified/extractor/tree-sitter-swift/bindings/rust/build.rs new file mode 100644 index 00000000000..6b939358ed4 --- /dev/null +++ b/unified/extractor/tree-sitter-swift/bindings/rust/build.rs @@ -0,0 +1,49 @@ +use std::env; +use std::path::PathBuf; + +fn main() { + // tree-sitter-generate produces parser.c, grammar.json, node-types.json, + // and src/tree_sitter/*.h headers from grammar.js. We write them into + // OUT_DIR so the build is sandbox-friendly and we don't litter the source + // tree. + let crate_dir: PathBuf = env::var("CARGO_MANIFEST_DIR").unwrap().into(); + let out_dir: PathBuf = env::var("OUT_DIR").unwrap().into(); + let grammar_js = crate_dir.join("grammar.js"); + + tree_sitter_generate::generate_parser_in_directory( + &crate_dir, + Some(&out_dir), + Some(&grammar_js), + tree_sitter_generate::ABI_VERSION_MAX, + None, + None, + true, + tree_sitter_generate::OptLevel::default(), + ) + .expect("failed to generate tree-sitter-swift parser"); + + let mut c_config = cc::Build::new(); + c_config + .std("c11") + .include(&out_dir) + .include(out_dir.join("tree_sitter")); + + #[cfg(target_env = "msvc")] + c_config.flag("-utf-8"); + + c_config.file(out_dir.join("parser.c")); + + // scanner.c is hand-written and lives in the source tree. + let scanner_path = crate_dir.join("src").join("scanner.c"); + c_config.include(crate_dir.join("src")).file(&scanner_path); + + println!("cargo:rerun-if-changed={}", grammar_js.to_str().unwrap()); + println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap()); + // Re-export OUT_DIR so consumers can include_str! the generated files. + println!( + "cargo:rustc-env=TREE_SITTER_SWIFT_OUT_DIR={}", + out_dir.to_str().unwrap() + ); + + c_config.compile("tree-sitter-swift"); +} diff --git a/unified/extractor/tree-sitter-swift/bindings/rust/lib.rs b/unified/extractor/tree-sitter-swift/bindings/rust/lib.rs new file mode 100644 index 00000000000..891df87778f --- /dev/null +++ b/unified/extractor/tree-sitter-swift/bindings/rust/lib.rs @@ -0,0 +1,68 @@ +//! This crate provides Swift language support for the [tree-sitter][] parsing library. +//! +//! Typically, you will use the [language][language func] function to add this language to a +//! tree-sitter [Parser][], and then use the parser to parse some code: +//! +//! ``` +//! let code = r#" +//! "#; +//! let mut parser = tree_sitter::Parser::new(); +//! let language = tree_sitter_swift::LANGUAGE; +//! parser +//! .set_language(&language.into()) +//! .expect("Error loading Swift parser"); +//! let tree = parser.parse(code, None).unwrap(); +//! assert!(!tree.root_node().has_error()); +//! ``` +//! +//! [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html +//! [language func]: fn.language.html +//! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html +//! [tree-sitter]: https://tree-sitter.github.io/ + +use tree_sitter_language::LanguageFn; + +unsafe extern "C" { + fn tree_sitter_swift() -> *const (); +} + +/// The tree-sitter [`LanguageFn`] for this grammar. +pub const LANGUAGE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_swift) }; + +/// The content of the [`node-types.json`][] file for this grammar. +/// +/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types +pub const NODE_TYPES: &str = include_str!(concat!(env!("TREE_SITTER_SWIFT_OUT_DIR"), "/node-types.json")); + +pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/highlights.scm"); +pub const INJECTIONS_QUERY: &str = include_str!("../../queries/injections.scm"); +pub const LOCALS_QUERY: &str = include_str!("../../queries/locals.scm"); +pub const TAGS_QUERY: &str = include_str!("../../queries/tags.scm"); + +#[cfg(test)] +mod tests { + #[test] + fn test_can_load_grammar() { + let mut parser = tree_sitter::Parser::new(); + parser + .set_language(&super::LANGUAGE.into()) + .expect("Error loading Swift parser"); + } + + #[test] + fn test_can_parse_basic_file() { + let mut parser = tree_sitter::Parser::new(); + parser + .set_language(&super::LANGUAGE.into()) + .expect("Error loading Swift parser"); + + let tree = parser + .parse("_ = \"Hello!\"\n", None) + .expect("Unable to parse!"); + + assert_eq!( + "(source_file (assignment target: (directly_assignable_expression (simple_identifier)) result: (line_string_literal text: (line_str_text))))", + tree.root_node().to_sexp(), + ); + } +} diff --git a/unified/extractor/tree-sitter-swift/grammar.js b/unified/extractor/tree-sitter-swift/grammar.js new file mode 100644 index 00000000000..5dbfd7fdbbf --- /dev/null +++ b/unified/extractor/tree-sitter-swift/grammar.js @@ -0,0 +1,2114 @@ +"use strict"; +/* + * MIT License + * + * Copyright (c) 2021 alex-pinkus + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +const PRECS = { + multiplication: 11, + addition: 10, + infix_operations: 9, + nil_coalescing: 8, + check: 7, + prefix_operations: 7, + comparison: 6, + postfix_operations: 6, + equality: 5, + conjunction: 4, + disjunction: 3, + block: 2, + loop: 1, + keypath: 1, + parameter_pack: 1, + control_transfer: 0, + as: -1, + tuple: -1, + if: -1, + switch: -1, + do: -1, + fully_open_range: -1, + range: -1, + navigation: -1, + expr: -1, + ty: -1, + call: -2, + ternary: -2, + try: -2, + call_suffix: -2, + range_suffix: -2, + ternary_binary_suffix: -2, + await: -2, + assignment: -3, + comment: -3, + lambda: -3, + regex: -4, +}; + +const DYNAMIC_PRECS = { + call: 1, +}; + +const DEC_DIGITS = token(sep1(/[0-9]+/, /_+/)); +const HEX_DIGITS = token(sep1(/[0-9a-fA-F]+/, /_+/)); +const OCT_DIGITS = token(sep1(/[0-7]+/, /_+/)); +const BIN_DIGITS = token(sep1(/[01]+/, /_+/)); +const REAL_EXPONENT = token(seq(/[eE]/, optional(/[+-]/), DEC_DIGITS)); +const HEX_REAL_EXPONENT = token(seq(/[pP]/, optional(/[+-]/), DEC_DIGITS)); + +var LEXICAL_IDENTIFIER; + +if (tree_sitter_version_supports_emoji()) { + LEXICAL_IDENTIFIER = + /[_\p{XID_Start}\p{Emoji}&&[^0-9#*]](\p{EMod}|\x{FE0F}\x{20E3}?)?([_\p{XID_Continue}\p{Emoji}\x{200D}](\p{EMod}|\x{FE0F}\x{20E3}?)?)*/; +} else { + LEXICAL_IDENTIFIER = /[_\p{XID_Start}][_\p{XID_Continue}]*/; +} + +module.exports = grammar({ + name: "swift", + supertypes: ($) => [ + $.expression, + $.unannotated_type, + $.global_declaration, + $.type_level_declaration, + $.local_declaration, + $.protocol_member_declaration, + ], + conflicts: ($) => [ + // @Type(... could either be an annotation constructor invocation or an annotated expression + [$.attribute], + [$._attribute_argument], + // Is `foo { ... }` a constructor invocation or function invocation? + [$._simple_user_type, $.expression], + // To support nested types A.B not being interpreted as `(navigation_expression ... (type_identifier)) (navigation_suffix)` + [$.user_type], + // How to tell the difference between Foo.bar(with:and:), and Foo.bar(with: smth, and: other)? You need GLR + [$.value_argument], + // { (foo, bar) ... + [$.expression, $.lambda_parameter], + [$._primary_expression, $.lambda_parameter], + // (start: start, end: end) + [$._tuple_type_item_identifier, $.tuple_expression], + // After a `{` in a function or switch context, it's ambigous whether we're starting a set of local statements or + // applying some modifiers to a capture or pattern. + [$.modifiers], + // `+(...)` is ambigously either "call the function produced by a reference to the operator `+`" or "use the unary + // operator `+` on the result of the parenthetical expression." + [$._additive_operator, $._prefix_unary_operator], + [$.referenceable_operator, $._prefix_unary_operator], + // `{ [self, b, c] ...` could be a capture list or an array literal depending on what else happens. + [$.capture_list_item, $.expression], + [$.capture_list_item, $.expression, $._simple_user_type], + [$._primary_expression, $.capture_list_item], + // a ? b : c () could be calling c(), or it could be calling a function that's produced by the result of + // `(a ? b : c)`. We have a small hack to force it to be the former of these by intentionally introducing a + // conflict. + [$.call_suffix, $.expr_hack_at_ternary_binary_call_suffix], + // try {expression} is a bit magic and applies quite broadly: `try foo()` and `try foo { }` show that this is right + // associative, and `try foo ? bar() : baz` even more so. But it doesn't always win: something like + // `if try foo { } ...` should award its braces to the `if`. In order to make this actually happen, we need to parse + // all the options and pick the best one that doesn't error out. + [$.try_expression, $._unary_expression], + [$.try_expression, $.expression], + // await {expression} has the same special cases as `try`. + [$.await_expression, $._unary_expression], + [$.await_expression, $.expression], + // In a computed property, when you see an @attribute, it's not yet clear if that's going to be for a + // locally-declared class or a getter / setter specifier. + [ + $._local_property_declaration, + $._local_typealias_declaration, + $._local_function_declaration, + $._local_class_declaration, + $.computed_getter, + $.computed_modify, + $.computed_setter, + ], + // The `class` modifier is legal in many of the same positions that a class declaration itself would be. + [$._bodyless_function_declaration, $.property_modifier], + [$.init_declaration, $.property_modifier], + // Patterns, man + [$._navigable_type_expression, $._case_pattern], + [$._no_expr_pattern_already_bound, $._binding_pattern_no_expr], + + // On encountering a closure starting with `{ @Foo ...`, we don't yet know if that attribute applies to the closure + // type or to a declaration within the closure. What a mess! We just have to hope that if we keep going, only one of + // those will parse (because there will be an `in` or a `let`). + [ + $._lambda_type_declaration, + $._local_property_declaration, + $._local_typealias_declaration, + $._local_function_declaration, + $._local_class_declaration, + ], + + // We want `foo() { }` to be treated as one function call, but we _also_ want `if foo() { ... }` to be treated as a + // full if-statement. This means we have to treat it as a conflict rather than purely a left or right associative + // construct, and let the parser realize that the second expression won't parse properly with the `{ ... }` as a + // lambda. + [$.constructor_suffix], + [$.call_suffix], + + // `actor` is allowed to be an identifier, even though it is also a locally permitted declaration. If we encounter + // it, the only way to know what it's meant to be is to keep going. + [$._modifierless_class_declaration, $.property_modifier], + [$._fn_call_lambda_arguments], + + // `borrowing` and `consuming` are legal as identifiers, but are also legal modifiers + [$.parameter_modifiers], + + // These are keywords sometimes, but simple identifiers other times, and it just depends on the rest of their usage. + [$._contextual_simple_identifier, $._modifierless_class_declaration], + [$._contextual_simple_identifier, $.property_behavior_modifier], + [$._contextual_simple_identifier, $.parameter_modifier], + [$._contextual_simple_identifier, $.type_parameter_pack], + [$._contextual_simple_identifier, $.type_pack_expansion], + [$._contextual_simple_identifier, $.visibility_modifier], + ], + extras: ($) => [ + $.comment, + $.multiline_comment, + /\s+/, // Whitespace + ], + externals: ($) => [ + // Comments and raw strings are parsed in a custom scanner because they require us to carry forward state to + // maintain symmetry. For instance, parsing a multiline comment requires us to increment a counter whenever we see + // `/*`, and decrement it whenever we see `*/`. A standard grammar would only be able to exit the comment at the + // first `*/` (like C does). Similarly, when you start a string with `##"`, you're required to include the same + // number of `#` symbols to end it. + $.multiline_comment, + $.raw_str_part, + $.raw_str_continuing_indicator, + $.raw_str_end_part, + // Because Swift doesn't have explicit semicolons, we also do some whitespace handling in a custom scanner. Line + // breaks are _sometimes_ meaningful as the end of a statement: try to write `let foo: Foo let bar: Bar`, for + // instance and the compiler will complain, but add either a newline or a semicolon and it's fine. We borrow the + // idea from the Kotlin grammar that a newline is sometimes a "semicolon". By including `\n` in both `_semi` and + // an anonymous `whitespace` extras, we _should_ be able to let the parser decide if a newline is meaningful. If the + // parser sees something like `foo.bar(1\n)`, it knows that a "semicolon" would not be valid there, so it parses + // that as whitespace. On the other hand, `let foo: Foo\n let bar: Bar` has a meaningful newline. + // Unfortunately, we can't simply stop at that. There are some expressions and statements that remain valid if you + // end them early, but are expected to be parsed across multiple lines. One particular nefarious example is a + // function declaration, where you might have something like `func foo(args: A) -> Foo throws where A: Hashable`. + // This would still be a valid declaration even if it ended after the `)`, the `Foo`, or the `throws`, so a grammar + // that simply interprets a newline as "sometimes a semi" would parse those incorrectly. + // To solve that case, our custom scanner must do a bit of extra lookahead itself. If we're about to generate a + // `_semi`, we advance a bit further to see if the next non-whitespace token would be one of these other operators. + // If so, we ignore the `_semi` and just produce the operator; if not, we produce the `_semi` and let the rest of + // the grammar sort it out. This isn't perfect, but it works well enough most of the time. + $._implicit_semi, + $._explicit_semi, + // Every one of the below operators will suppress a `_semi` if we encounter it after a newline. + $._arrow_operator_custom, + $._dot_custom, + $._conjunction_operator_custom, + $._disjunction_operator_custom, + $._nil_coalescing_operator_custom, + $._eq_custom, + $._eq_eq_custom, + $._plus_then_ws, + $._minus_then_ws, + $._bang_custom, + $._throws_keyword, + $._rethrows_keyword, + $.default_keyword, + $.where_keyword, + $["else"], + $.catch_keyword, + $._as_custom, + $._as_quest_custom, + $._as_bang_custom, + $._async_keyword_custom, + $._custom_operator, + $._hash_symbol_custom, + $._directive_if, + $._directive_elseif, + $._directive_else, + $._directive_endif, + + // Fake operator that will never get triggered, but follows the sequence of characters for `try!`. Tracked by the + // custom scanner so that it can avoid triggering `$.bang` for that case. + $._fake_try_bang, + ], + inline: ($) => [$._locally_permitted_modifiers], + rules: { + //////////////////////////////// + // File Structure + //////////////////////////////// + source_file: ($) => + seq( + optional($.shebang_line), + optional( + seq( + $._top_level_statement, + repeat(seq($._semi, $._top_level_statement)), + optional($._semi) + ) + ) + ), + _semi: ($) => choice($._implicit_semi, $._explicit_semi), + shebang_line: ($) => seq($._hash_symbol, "!", /[^\r\n]*/), + //////////////////////////////// + // Lexical Structure - https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html + //////////////////////////////// + comment: ($) => token(prec(PRECS.comment, seq("//", /.*/))), + // Identifiers + simple_identifier: ($) => + choice( + LEXICAL_IDENTIFIER, + /`[^\r\n` ]*`/, + /\$[0-9]+/, + token(seq("$", LEXICAL_IDENTIFIER)), + $._contextual_simple_identifier + ), + // Keywords that were added after they were already legal as identifiers. `tree-sitter` will prefer exact matches + // when parsing so unless we explicitly say that these are legal, the parser will interpret them as their keyword. + _contextual_simple_identifier: ($) => + choice( + "actor", + "async", + "each", + "lazy", + "repeat", + "package", + $._parameter_ownership_modifier + ), + identifier: ($) => sep1($.simple_identifier, $._dot), + // Literals + _basic_literal: ($) => + choice( + $.integer_literal, + $.hex_literal, + $.oct_literal, + $.bin_literal, + $.real_literal, + $.boolean_literal, + $._string_literal, + $.regex_literal, + "nil" + ), + real_literal: ($) => + token( + choice( + seq(DEC_DIGITS, REAL_EXPONENT), + seq(optional(DEC_DIGITS), ".", DEC_DIGITS, optional(REAL_EXPONENT)), + seq( + "0x", + HEX_DIGITS, + optional(seq(".", HEX_DIGITS)), + HEX_REAL_EXPONENT + ) + ) + ), + integer_literal: ($) => token(seq(optional(/[1-9]/), DEC_DIGITS)), + hex_literal: ($) => token(seq("0", /[xX]/, HEX_DIGITS)), + oct_literal: ($) => token(seq("0", /[oO]/, OCT_DIGITS)), + bin_literal: ($) => token(seq("0", /[bB]/, BIN_DIGITS)), + boolean_literal: ($) => choice("true", "false"), + // String literals + _string_literal: ($) => + choice( + $.line_string_literal, + $.multi_line_string_literal, + $.raw_string_literal + ), + line_string_literal: ($) => + seq( + '"', + repeat(choice(field("text", $._line_string_content), $._interpolation)), + '"' + ), + _line_string_content: ($) => choice($.line_str_text, $.str_escaped_char), + line_str_text: ($) => /[^\\"]+/, + str_escaped_char: ($) => + choice($._escaped_identifier, $._uni_character_literal), + _uni_character_literal: ($) => seq("\\", "u", /\{[0-9a-fA-F]+\}/), + multi_line_string_literal: ($) => + seq( + '"""', + repeat( + choice(field("text", $._multi_line_string_content), $._interpolation) + ), + '"""' + ), + raw_string_literal: ($) => + seq( + repeat( + seq( + field("text", $.raw_str_part), + field("interpolation", $.raw_str_interpolation), + optional($.raw_str_continuing_indicator) + ) + ), + field("text", $.raw_str_end_part) + ), + raw_str_interpolation: ($) => + seq($.raw_str_interpolation_start, $._interpolation_contents, ")"), + raw_str_interpolation_start: ($) => /\\#*\(/, + _multi_line_string_content: ($) => + choice($.multi_line_str_text, $.str_escaped_char, '"'), + _interpolation: ($) => seq("\\(", $._interpolation_contents, ")"), + _interpolation_contents: ($) => + sep1Opt( + field( + "interpolation", + alias($.value_argument, $.interpolated_expression) + ), + "," + ), + _escaped_identifier: ($) => /\\[0\\tnr"'\n]/, + multi_line_str_text: ($) => /[^\\"]+/, + // Based on https://gitlab.com/woolsweater/tree-sitter-swifter/-/blob/3d47c85bd47ce54cdf2023a9c0e01eb90adfcc1d/grammar.js#L1019 + // But required modifications to hit all of the cases in SE-354 + regex_literal: ($) => + choice( + $._extended_regex_literal, + $._multiline_regex_literal, + $._oneline_regex_literal + ), + + _extended_regex_literal: ($) => + seq($._hash_symbol, /\/((\/[^#])|[^\n])+\/#/), + + _multiline_regex_literal: ($) => + seq($._hash_symbol, /\/\n/, /(\/[^#]|[^/])*?\n\/#/), + + _oneline_regex_literal: ($) => + token( + prec( + PRECS.regex, + seq( + "/", + token.immediate(/[^ \t\n]?[^/\n]*[^ \t\n/]/), + token.immediate("/") + ) + ) + ), + //////////////////////////////// + // Types - https://docs.swift.org/swift-book/ReferenceManual/Types.html + //////////////////////////////// + type_annotation: ($) => + seq(":", field("type", $._possibly_implicitly_unwrapped_type)), + _possibly_implicitly_unwrapped_type: ($) => + choice($.type, $.implicitly_unwrapped_type), + implicitly_unwrapped_type: ($) => + seq($.type, token.immediate("!")), + type: ($) => + prec.right( + PRECS.ty, + seq(field("modifiers", optional($.type_modifiers)), field("name", $.unannotated_type)) + ), + unannotated_type: ($) => + prec.right( + PRECS.ty, + choice( + $.user_type, + $.tuple_type, + $.function_type, + $.array_type, + $.dictionary_type, + $.optional_type, + $.metatype, + $.opaque_type, + $.existential_type, + $.protocol_composition_type, + $.type_parameter_pack, + $.type_pack_expansion, + $.suppressed_constraint + ) + ), + // The grammar just calls this whole thing a `type-identifier` but that's a bit confusing. + user_type: ($) => sep1($._simple_user_type, $._dot), + _simple_user_type: ($) => + prec.right( + PRECS.ty, + seq( + alias($.simple_identifier, $.type_identifier), + optional($.type_arguments) + ) + ), + tuple_type: ($) => + choice( + seq( + "(", + optional(sep1Opt(field("element", $.tuple_type_item), ",")), + ")" + ), + alias($._parenthesized_type, $.tuple_type_item) + ), + tuple_type_item: ($) => + prec( + PRECS.expr, + seq( + optional($._tuple_type_item_identifier), + optional($.parameter_modifiers), + field("type", $.type) + ) + ), + _tuple_type_item_identifier: ($) => + prec( + PRECS.expr, + seq( + optional($.wildcard_pattern), + field("name", $.simple_identifier), + ":" + ) + ), + function_type: ($) => + seq( + field("params", choice($.tuple_type, $.unannotated_type)), + optional($._async_keyword), + optional(choice($.throws_clause, $.throws)), + $._arrow_operator, + field("return_type", $.type) + ), + array_type: ($) => seq("[", field("element", $.type), "]"), + dictionary_type: ($) => + seq("[", field("key", $.type), ":", field("value", $.type), "]"), + optional_type: ($) => + prec.left( + seq( + field( + "wrapped", + choice($.user_type, $.tuple_type, $.array_type, $.dictionary_type) + ), + repeat1(alias($._immediate_quest, "?")) + ) + ), + metatype: ($) => seq($.unannotated_type, ".", choice("Type", "Protocol")), + _quest: ($) => "?", + _immediate_quest: ($) => token.immediate("?"), + opaque_type: ($) => prec.right(seq("some", $.unannotated_type)), + existential_type: ($) => prec.right(seq("any", $.unannotated_type)), + type_parameter_pack: ($) => prec.left(seq("each", $.unannotated_type)), + type_pack_expansion: ($) => prec.left(seq("repeat", $.unannotated_type)), + protocol_composition_type: ($) => + prec.left( + seq( + $.unannotated_type, + repeat1(seq("&", prec.right($.unannotated_type))) + ) + ), + suppressed_constraint: ($) => + prec.right( + seq( + "~", + field("suppressed", alias($.simple_identifier, $.type_identifier)) + ) + ), + //////////////////////////////// + // Expressions - https://docs.swift.org/swift-book/ReferenceManual/Expressions.html + //////////////////////////////// + expression: ($) => + prec( + PRECS.expr, + choice( + $.simple_identifier, + $._unary_expression, + $._binary_expression, + $.ternary_expression, + $._primary_expression, + $.if_statement, + $.switch_statement, + $.assignment, + $.value_parameter_pack, + $.value_pack_expansion, + $.optional_chain_marker + ) + ), + optional_chain_marker: ($) => + seq($.expression, alias($._immediate_quest, "?")), + // Unary expressions + _unary_expression: ($) => + choice( + $.postfix_expression, + $.call_expression, + $.macro_invocation, + $.constructor_expression, + $.navigation_expression, + $.prefix_expression, + $.as_expression, + $.selector_expression, + $.open_start_range_expression, + $.open_end_range_expression, + $.directive, + $.diagnostic + ), + postfix_expression: ($) => + prec.left( + PRECS.postfix_operations, + seq( + field("target", $.expression), + field("operation", $._postfix_unary_operator) + ) + ), + constructor_expression: ($) => + prec( + PRECS.call, + seq( + field( + "constructed_type", + choice($.array_type, $.dictionary_type, $.user_type) + ), + $.constructor_suffix + ) + ), + _parenthesized_type: ($) => + seq( + "(", + choice($.opaque_type, $.existential_type, $.dictionary_type), + ")" + ), + navigation_expression: ($) => + prec.left( + PRECS.navigation, + seq( + field( + "target", + choice( + $._navigable_type_expression, + $.expression, + $._parenthesized_type + ) + ), + field("suffix", $.navigation_suffix) + ) + ), + _navigable_type_expression: ($) => + choice($.user_type, $.array_type, $.dictionary_type), + open_start_range_expression: ($) => + prec.right( + PRECS.range, + seq( + $._range_operator, + prec.right(PRECS.range_suffix, field("end", $.expression)) + ) + ), + _range_operator: ($) => + choice($._open_ended_range_operator, $._three_dot_operator), + open_end_range_expression: ($) => + prec.right( + PRECS.range, + seq(field("start", $.expression), $._three_dot_operator) + ), + prefix_expression: ($) => + prec.left( + PRECS.prefix_operations, + seq( + field("operation", $._prefix_unary_operator), + field( + "target", + choice( + $.expression, + alias(choice("async", "if", "switch"), $.expression) + ) + ) + ) + ), + as_expression: ($) => + prec.left( + PRECS.as, + seq(field("expr", $.expression), $.as_operator, field("type", $.type)) + ), + selector_expression: ($) => + seq( + $._hash_symbol, + "selector", + "(", + optional(choice("getter:", "setter:")), + $.expression, + ")" + ), + // Binary expressions + _binary_expression: ($) => + choice( + $.multiplicative_expression, + $.additive_expression, + $.range_expression, + $.infix_expression, + $.nil_coalescing_expression, + $.check_expression, + $.equality_expression, + $.comparison_expression, + $.conjunction_expression, + $.disjunction_expression, + $.bitwise_operation + ), + multiplicative_expression: ($) => + prec.left( + PRECS.multiplication, + seq( + field("lhs", $.expression), + field("op", $._multiplicative_operator), + field("rhs", $.expression) + ) + ), + additive_expression: ($) => + prec.left( + PRECS.addition, + seq( + field("lhs", $.expression), + field("op", $._additive_operator), + field("rhs", $.expression) + ) + ), + range_expression: ($) => + prec.right( + PRECS.range, + seq( + field("start", $.expression), + field("op", $._range_operator), + field("end", $._expr_hack_at_ternary_binary_suffix) + ) + ), + infix_expression: ($) => + prec.left( + PRECS.infix_operations, + seq( + field("lhs", $.expression), + field("op", $.custom_operator), + field("rhs", $._expr_hack_at_ternary_binary_suffix) + ) + ), + nil_coalescing_expression: ($) => + prec.right( + PRECS.nil_coalescing, + seq( + field("value", $.expression), + $._nil_coalescing_operator, + field("if_nil", $._expr_hack_at_ternary_binary_suffix) + ) + ), + check_expression: ($) => + prec.left( + PRECS.check, + seq( + field("target", $.expression), + field("op", $._is_operator), + field("type", $.type) + ) + ), + comparison_expression: ($) => + prec.left( + seq( + field("lhs", $.expression), + field("op", $._comparison_operator), + field("rhs", $._expr_hack_at_ternary_binary_suffix) + ) + ), + equality_expression: ($) => + prec.left( + PRECS.equality, + seq( + field("lhs", $.expression), + field("op", $._equality_operator), + field("rhs", $._expr_hack_at_ternary_binary_suffix) + ) + ), + conjunction_expression: ($) => + prec.left( + PRECS.conjunction, + seq( + field("lhs", $.expression), + field("op", $._conjunction_operator), + field("rhs", $._expr_hack_at_ternary_binary_suffix) + ) + ), + disjunction_expression: ($) => + prec.left( + PRECS.disjunction, + seq( + field("lhs", $.expression), + field("op", $._disjunction_operator), + field("rhs", $._expr_hack_at_ternary_binary_suffix) + ) + ), + bitwise_operation: ($) => + prec.left( + seq( + field("lhs", $.expression), + field("op", $._bitwise_binary_operator), + field("rhs", $._expr_hack_at_ternary_binary_suffix) + ) + ), + custom_operator: ($) => choice(token(/[\/]+[*]+/), $._custom_operator), + // Suffixes + navigation_suffix: ($) => + seq( + $._dot, + field("suffix", choice($.simple_identifier, $.integer_literal)) + ), + call_suffix: ($) => + prec( + PRECS.call_suffix, + choice( + $.value_arguments, + prec.dynamic(-1, $._fn_call_lambda_arguments), // Prefer to treat `foo() { }` as one call not two + seq($.value_arguments, $._fn_call_lambda_arguments) + ) + ), + constructor_suffix: ($) => + prec( + PRECS.call_suffix, + choice( + alias($._constructor_value_arguments, $.value_arguments), + prec.dynamic(-1, $._fn_call_lambda_arguments), // As above + seq( + alias($._constructor_value_arguments, $.value_arguments), + $._fn_call_lambda_arguments + ) + ) + ), + _constructor_value_arguments: ($) => + seq("(", optional(sep1Opt($.value_argument, ",")), ")"), + _fn_call_lambda_arguments: ($) => + sep1($.lambda_literal, seq(field("name", $.simple_identifier), ":")), + type_arguments: ($) => prec.left(seq("<", sep1Opt($.type, ","), ">")), + value_arguments: ($) => + seq( + choice( + seq("(", optional(sep1Opt($.value_argument, ",")), ")"), + seq("[", optional(sep1Opt($.value_argument, ",")), "]") + ) + ), + value_argument_label: ($) => + prec.left( + choice( + $.simple_identifier, + // We don't rely on $._contextual_simple_identifier here because + // these don't usually fall into that category. + alias("if", $.simple_identifier), + alias("switch", $.simple_identifier) + ) + ), + value_argument: ($) => + prec.left( + seq( + optional($.type_modifiers), + choice( + repeat1( + seq(field("reference_specifier", $.value_argument_label), ":") + ), + seq( + optional(seq(field("name", $.value_argument_label), ":")), + field("value", $.expression) + ) + ) + ) + ), + try_expression: ($) => + prec.right( + PRECS["try"], + seq( + $.try_operator, + field( + "expr", + choice( + // Prefer direct calls, e.g. `try foo()`, over indirect like `try a ? b() : c`. This allows us to have + // left associativity for the direct calls, which is technically wrong but is the only way to resolve the + // ambiguity of `if foo { ... }` in the correct direction. + prec.right(-2, $.expression), + prec.left(0, $._binary_expression), + prec.left(0, $.call_expression), + // Similarly special case the ternary expression, where `try` may come earlier than it is actually needed. + // When the parser just encounters some identifier after a `try`, it should prefer the `call_expression` (so + // this should be lower in priority than that), but when we encounter an ambiguous expression that might be + // either `try (foo() ? ...)` or `(try foo()) ? ...`, we should prefer the former. We accomplish that by + // giving it a _static precedence_ of -1 but a _dynamic precedence_ of 1. + prec.dynamic(1, prec.left(-1, $.ternary_expression)) + ) + ) + ) + ), + await_expression: ($) => + prec.right( + PRECS.await, + seq( + $._await_operator, + field( + "expr", + choice( + // Prefer direct calls over indirect (same as with `try`). + prec.right(-2, $.expression), + prec.left(0, $.call_expression), + // Special case ternary to `await` the whole thing (same as with `try`). + prec.dynamic(1, prec.left(-1, $.ternary_expression)) + ) + ) + ) + ), + _await_operator: ($) => alias("await", "await"), + ternary_expression: ($) => + prec.right( + PRECS.ternary, + seq( + field("condition", $.expression), + $._quest, + field("if_true", $.expression), + ":", + field("if_false", $._expr_hack_at_ternary_binary_suffix) + ) + ), + _expr_hack_at_ternary_binary_suffix: ($) => + prec.left( + PRECS.ternary_binary_suffix, + choice( + $.expression, + alias($.expr_hack_at_ternary_binary_call, $.call_expression) + ) + ), + expr_hack_at_ternary_binary_call: ($) => + seq( + $.expression, + alias($.expr_hack_at_ternary_binary_call_suffix, $.call_suffix) + ), + expr_hack_at_ternary_binary_call_suffix: ($) => + prec(PRECS.call_suffix, $.value_arguments), + call_expression: ($) => + prec( + PRECS.call, + prec.dynamic(DYNAMIC_PRECS.call, seq($.expression, $.call_suffix)) + ), + macro_invocation: ($) => + prec( + PRECS.call, + prec.dynamic( + DYNAMIC_PRECS.call, + seq( + $._hash_symbol, + $.simple_identifier, + optional($.type_parameters), + $.call_suffix + ) + ) + ), + _primary_expression: ($) => + choice( + $.tuple_expression, + $._basic_literal, + $.lambda_literal, + $.special_literal, + $.playground_literal, + $.array_literal, + $.dictionary_literal, + $.self_expression, + $.super_expression, + $.try_expression, + $.await_expression, + $.referenceable_operator, + $.key_path_expression, + $.key_path_string_expression, + prec.right( + PRECS.fully_open_range, + alias($._three_dot_operator, $.fully_open_range) + ) + ), + tuple_expression: ($) => + prec.right( + PRECS.tuple, + seq( + "(", + sep1Opt( + seq( + optional(seq(field("name", $.simple_identifier), ":")), + field("value", $.expression) + ), + "," + ), + ")" + ) + ), + array_literal: ($) => + seq("[", optional(sep1Opt(field("element", $.expression), ",")), "]"), + dictionary_literal: ($) => + seq( + "[", + choice(":", sep1Opt($._dictionary_literal_item, ",")), + optional(","), + "]" + ), + _dictionary_literal_item: ($) => + seq(field("key", $.expression), ":", field("value", $.expression)), + special_literal: ($) => + seq( + $._hash_symbol, + choice( + "file", + "fileID", + "filePath", + "line", + "column", + "function", + "dsohandle" + ) + ), + playground_literal: ($) => + seq( + $._hash_symbol, + choice("colorLiteral", "fileLiteral", "imageLiteral"), + "(", + sep1Opt(seq($.simple_identifier, ":", $.expression), ","), + ")" + ), + lambda_literal: ($) => + prec.left( + PRECS.lambda, + seq( + choice("{", "^{"), + optional($._lambda_type_declaration), + optional($.statements), + "}" + ) + ), + _lambda_type_declaration: ($) => + seq( + repeat($.attribute), + prec(PRECS.expr, optional(field("captures", $.capture_list))), + optional(field("type", $.lambda_function_type)), + "in" + ), + capture_list: ($) => seq("[", sep1Opt($.capture_list_item, ","), "]"), + capture_list_item: ($) => + choice( + field("name", $.self_expression), + prec( + PRECS.expr, + seq( + optional($.ownership_modifier), + field("name", $.simple_identifier), + optional(seq($._equal_sign, field("value", $.expression))) + ) + ) + ), + lambda_function_type: ($) => + prec( + PRECS.expr, + seq( + choice( + $.lambda_function_type_parameters, + seq("(", optional($.lambda_function_type_parameters), ")") + ), + optional($._async_keyword), + optional(choice($.throws_clause, $.throws)), + optional( + seq( + $._arrow_operator, + field("return_type", $._possibly_implicitly_unwrapped_type) + ) + ) + ) + ), + lambda_function_type_parameters: ($) => sep1Opt($.lambda_parameter, ","), + lambda_parameter: ($) => + seq( + choice( + $.self_expression, + prec(PRECS.expr, field("name", $.simple_identifier)), + prec( + PRECS.expr, + seq( + optional(field("external_name", $.simple_identifier)), + field("name", $.simple_identifier), + ":", + optional($.parameter_modifiers), + field("type", $._possibly_implicitly_unwrapped_type) + ) + ) + ) + ), + self_expression: ($) => "self", + super_expression: ($) => seq("super"), + _else_options: ($) => choice($._block, $.if_statement), + if_statement: ($) => + prec.right( + PRECS["if"], + seq( + "if", + sep1(field("condition", $.if_condition), ","), + $._block, + optional(seq($["else"], $._else_options)) + ) + ), + if_condition: ($) => + choice($.if_let_binding, $.expression, $.availability_condition), + if_let_binding: ($) => + seq( + $._direct_or_indirect_binding, + optional(seq($._equal_sign, $.expression)), + optional($.where_clause) + ), + guard_statement: ($) => + prec.right( + PRECS["if"], + seq( + "guard", + sep1(field("condition", $.if_condition), ","), + $["else"], + $._block + ) + ), + switch_statement: ($) => + prec.right( + PRECS["switch"], + seq( + "switch", + field("expr", $.expression), + "{", + repeat($.switch_entry), + "}" + ) + ), + switch_entry: ($) => + seq( + optional($.modifiers), + choice( + seq( + "case", + seq( + $.switch_pattern, + optional(seq($.where_keyword, $.expression)) + ), + repeat(seq(",", $.switch_pattern)) + ), + $.default_keyword + ), + ":", + $.statements, + optional("fallthrough") + ), + switch_pattern: ($) => alias($._binding_pattern_with_expr, $.pattern), + do_statement: ($) => + prec.right(PRECS["do"], seq("do", $._block, repeat($.catch_block))), + catch_block: ($) => + seq( + $.catch_keyword, + field("error", optional(alias($._binding_pattern_no_expr, $.pattern))), + optional($.where_clause), + $._block + ), + where_clause: ($) => prec.left(seq($.where_keyword, $.expression)), + key_path_expression: ($) => + prec.right( + PRECS.keypath, + seq( + "\\", + optional( + choice($._simple_user_type, $.array_type, $.dictionary_type) + ), + repeat(seq(".", $._key_path_component)) + ) + ), + key_path_string_expression: ($) => + prec.left(seq($._hash_symbol, "keyPath", "(", $.expression, ")")), + _key_path_component: ($) => + prec.left( + choice( + seq($.simple_identifier, repeat($._key_path_postfixes)), + repeat1($._key_path_postfixes) + ) + ), + _key_path_postfixes: ($) => + choice( + "?", + $.bang, + "self", + seq("[", optional(sep1($.value_argument, ",")), "]") + ), + try_operator: ($) => + prec.right( + seq("try", choice(optional($._try_operator_type), $._fake_try_bang)) + ), + _try_operator_type: ($) => + choice(token.immediate("!"), token.immediate("?")), + _assignment_and_operator: ($) => + choice("+=", "-=", "*=", "/=", "%=", $._equal_sign), + _equality_operator: ($) => choice("!=", "!==", $._eq_eq, "==="), + _comparison_operator: ($) => choice("<", ">", "<=", ">="), + _three_dot_operator: ($) => alias("...", "..."), // Weird alias to satisfy highlight queries + _open_ended_range_operator: ($) => alias("..<", "..<"), + _is_operator: ($) => "is", + _additive_operator: ($) => + choice( + alias($._plus_then_ws, "+"), + alias($._minus_then_ws, "-"), + "+", + "-" + ), + // The `/` operator conflicts with a regex literal (which itself appears to conflict with a + // comment, for some reason), so we must give it equivalent token precedence. + _multiplicative_operator: ($) => + choice("*", alias(token(prec(PRECS.regex, "/")), "/"), "%"), + as_operator: ($) => choice($._as, $._as_quest, $._as_bang), + _prefix_unary_operator: ($) => + prec.right( + choice( + "++", + "--", + "-", + "+", + $.bang, + "&", + "~", + $._dot, + $.custom_operator + ) + ), + _bitwise_binary_operator: ($) => choice("&", "|", "^", "<<", ">>"), + _postfix_unary_operator: ($) => choice("++", "--", $.bang), + directly_assignable_expression: ($) => $.expression, + + //////////////////////////////// + // Statements - https://docs.swift.org/swift-book/ReferenceManual/Statements.html + //////////////////////////////// + statements: ($) => + prec.left( + // Left precedence is required in switch statements + seq( + $._local_statement, + repeat(seq($._semi, $._local_statement)), + optional($._semi) + ) + ), + _local_statement: ($) => + choice( + $.expression, + $.local_declaration, + $._labeled_statement, + $.control_transfer_statement + ), + _top_level_statement: ($) => + choice( + $.expression, + $.global_declaration, + $._labeled_statement, + $._throw_statement + ), + _block: ($) => prec(PRECS.block, seq("{", optional($.statements), "}")), + _labeled_statement: ($) => + seq( + optional($.statement_label), + choice( + $.for_statement, + $.while_statement, + $.repeat_while_statement, + $.do_statement, + $.if_statement, + $.guard_statement, + $.switch_statement + ) + ), + statement_label: ($) => token(/[a-zA-Z_][a-zA-Z_0-9]*:/), + for_statement: ($) => + prec( + PRECS.loop, + seq( + "for", + optional($.try_operator), + optional($._await_operator), + field("item", alias($._binding_pattern_no_expr, $.pattern)), + optional($.type_annotation), + "in", + field("collection", $._for_statement_collection), + optional($.where_clause), + $._block + ) + ), + _for_statement_collection: ($) => + // If this expression has "await", this triggers some special-cased logic to prefer function calls. We prefer + // the opposite, though, since function calls may contain trailing code blocks, which are undesirable here. + // + // To fix that, we simply undo the special casing by defining our own `await_expression`. + choice($.expression, alias($.for_statement_await, $.await_expression)), + for_statement_await: ($) => seq($._await_operator, $.expression), + + while_statement: ($) => + prec( + PRECS.loop, + seq( + "while", + sep1(field("condition", $.if_condition), ","), + "{", + optional($.statements), + "}" + ) + ), + repeat_while_statement: ($) => + prec( + PRECS.loop, + seq( + "repeat", + "{", + optional($.statements), + "}", + // Make sure we make it to the `while` before assuming this is a parameter pack. + repeat($._implicit_semi), + "while", + sep1(field("condition", $.if_condition), ",") + ) + ), + control_transfer_statement: ($) => + choice( + prec.right(PRECS.control_transfer, $._throw_statement), + prec.right( + PRECS.control_transfer, + seq( + $._optionally_valueful_control_keyword, + field("result", optional($.expression)) + ) + ) + ), + _throw_statement: ($) => seq($.throw_keyword, $.expression), + throw_keyword: ($) => "throw", + _optionally_valueful_control_keyword: ($) => + choice("return", "continue", "break", "yield"), + assignment: ($) => + prec.left( + PRECS.assignment, + seq( + field("target", $.directly_assignable_expression), + field("operator", $._assignment_and_operator), + field("result", $.expression) + ) + ), + value_parameter_pack: ($) => + prec.left(PRECS.parameter_pack, seq("each", $.expression)), + value_pack_expansion: ($) => + prec.left(PRECS.parameter_pack, seq("repeat", $.expression)), + availability_condition: ($) => + seq( + $._hash_symbol, + choice("available", "unavailable"), + "(", + sep1Opt($._availability_argument, ","), + ")" + ), + _availability_argument: ($) => + choice(seq($.identifier, sep1($.integer_literal, ".")), "*"), + //////////////////////////////// + // Declarations - https://docs.swift.org/swift-book/ReferenceManual/Declarations.html + //////////////////////////////// + global_declaration: ($) => + choice( + $.import_declaration, + $.property_declaration, + $.typealias_declaration, + $.function_declaration, + $.init_declaration, + $.class_declaration, + $.protocol_declaration, + $.operator_declaration, + $.precedence_group_declaration, + $.associatedtype_declaration, + $.macro_declaration + ), + type_level_declaration: ($) => + choice( + $.import_declaration, + $.property_declaration, + $.typealias_declaration, + $.function_declaration, + $.init_declaration, + $.class_declaration, + $.protocol_declaration, + $.deinit_declaration, + $.subscript_declaration, + $.operator_declaration, + $.precedence_group_declaration, + $.associatedtype_declaration + ), + local_declaration: ($) => + choice( + alias($._local_property_declaration, $.property_declaration), + alias($._local_typealias_declaration, $.typealias_declaration), + alias($._local_function_declaration, $.function_declaration), + alias($._local_class_declaration, $.class_declaration) + ), + _local_property_declaration: ($) => + seq( + optional($._locally_permitted_modifiers), + $._modifierless_property_declaration + ), + _local_typealias_declaration: ($) => + seq( + optional($._locally_permitted_modifiers), + $._modifierless_typealias_declaration + ), + _local_function_declaration: ($) => + seq( + optional($._locally_permitted_modifiers), + $._modifierless_function_declaration + ), + _local_class_declaration: ($) => + seq( + optional($._locally_permitted_modifiers), + $._modifierless_class_declaration + ), + import_declaration: ($) => + seq( + optional($.modifiers), + "import", + optional($._import_kind), + $.identifier + ), + _import_kind: ($) => + choice( + "typealias", + "struct", + "class", + "enum", + "protocol", + "let", + "var", + "func" + ), + protocol_property_declaration: ($) => + prec.right( + seq( + optional($.modifiers), + field("name", alias($._binding_kind_and_pattern, $.pattern)), + optional($.type_annotation), + optional($.type_constraints), + $.protocol_property_requirements + ) + ), + protocol_property_requirements: ($) => + seq("{", repeat(choice($.getter_specifier, $.setter_specifier)), "}"), + property_declaration: ($) => + seq(optional($.modifiers), $._modifierless_property_declaration), + _modifierless_property_declaration: ($) => + prec.right( + seq( + $._possibly_async_binding_pattern_kind, + sep1($._single_modifierless_property_declaration, ",") + ) + ), + _single_modifierless_property_declaration: ($) => + prec.left( + seq( + field("name", alias($._no_expr_pattern_already_bound, $.pattern)), + optional($.type_annotation), + optional($.type_constraints), + optional( + choice( + $._expression_with_willset_didset, + $._expression_without_willset_didset, + $.willset_didset_block, + field("computed_value", $.computed_property) + ) + ) + ) + ), + _expression_with_willset_didset: ($) => + prec.dynamic( + 1, + seq( + $._equal_sign, + field("value", $.expression), + $.willset_didset_block + ) + ), + _expression_without_willset_didset: ($) => + seq($._equal_sign, field("value", $.expression)), + willset_didset_block: ($) => + choice( + seq("{", $.willset_clause, optional($.didset_clause), "}"), + seq("{", $.didset_clause, optional($.willset_clause), "}") + ), + willset_clause: ($) => + seq( + optional($.modifiers), + "willSet", + optional(seq("(", $.simple_identifier, ")")), + $._block + ), + didset_clause: ($) => + seq( + optional($.modifiers), + "didSet", + optional(seq("(", $.simple_identifier, ")")), + $._block + ), + typealias_declaration: ($) => + seq(optional($.modifiers), $._modifierless_typealias_declaration), + _modifierless_typealias_declaration: ($) => + seq( + "typealias", + field("name", alias($.simple_identifier, $.type_identifier)), + optional($.type_parameters), + $._equal_sign, + field("value", $.type) + ), + function_declaration: ($) => + prec.right( + seq($._bodyless_function_declaration, field("body", $.function_body)) + ), + _modifierless_function_declaration: ($) => + prec.right( + seq( + $._modifierless_function_declaration_no_body, + field("body", $.function_body) + ) + ), + _bodyless_function_declaration: ($) => + seq( + optional($.modifiers), + optional("class"), // XXX: This should be possible in non-last position, but that creates parsing ambiguity + $._modifierless_function_declaration_no_body + ), + _modifierless_function_declaration_no_body: ($) => + prec.right( + seq( + $._non_constructor_function_decl, + optional($.type_parameters), + $._function_value_parameters, + optional($._async_keyword), + optional(choice($.throws_clause, $.throws)), + optional( + seq( + $._arrow_operator, + field("return_type", $._possibly_implicitly_unwrapped_type) + ) + ), + optional($.type_constraints) + ) + ), + function_body: ($) => $._block, + macro_declaration: ($) => + seq( + $._macro_head, + $.simple_identifier, + optional($.type_parameters), + $._macro_signature, + optional(field("definition", $.macro_definition)), + optional($.type_constraints) + ), + _macro_head: ($) => seq(optional($.modifiers), "macro"), + _macro_signature: ($) => + seq( + $._function_value_parameters, + optional(seq($._arrow_operator, $.unannotated_type)) + ), + macro_definition: ($) => + seq( + $._equal_sign, + field("body", choice($.expression, $.external_macro_definition)) + ), + + external_macro_definition: ($) => + seq($._hash_symbol, "externalMacro", $.value_arguments), + + class_declaration: ($) => + seq(optional($.modifiers), $._modifierless_class_declaration), + _modifierless_class_declaration: ($) => + prec.right( + choice( + seq( + field("declaration_kind", choice("class", "struct", "actor")), + field("name", alias($.simple_identifier, $.type_identifier)), + optional($.type_parameters), + optional(seq(":", $._inheritance_specifiers)), + optional($.type_constraints), + field("body", $.class_body) + ), + seq( + field("declaration_kind", "extension"), + field("name", $.unannotated_type), + optional($.type_parameters), + optional(seq(":", $._inheritance_specifiers)), + optional($.type_constraints), + field("body", $.class_body) + ), + seq( + optional("indirect"), + field("declaration_kind", "enum"), + field("name", alias($.simple_identifier, $.type_identifier)), + optional($.type_parameters), + optional(seq(":", $._inheritance_specifiers)), + optional($.type_constraints), + field("body", $.enum_class_body) + ) + ) + ), + class_body: ($) => seq("{", optional($._class_member_declarations), "}"), + _inheritance_specifiers: ($) => + prec.left(sep1($._annotated_inheritance_specifier, choice(",", "&"))), + inheritance_specifier: ($) => + prec.left( + field( + "inherits_from", + choice($.user_type, $.function_type, $.suppressed_constraint) + ) + ), + _annotated_inheritance_specifier: ($) => + seq(repeat($.attribute), $.inheritance_specifier), + type_parameters: ($) => + seq( + "<", + sep1Opt($.type_parameter, ","), + optional($.type_constraints), + ">" + ), + type_parameter: ($) => + seq( + optional($.type_parameter_modifiers), + $._type_parameter_possibly_packed, + optional(seq(":", $.type)) + ), + _type_parameter_possibly_packed: ($) => + choice( + alias($.simple_identifier, $.type_identifier), + $.type_parameter_pack + ), + + type_constraints: ($) => + prec.right(seq($.where_keyword, sep1Opt($.type_constraint, ","))), + type_constraint: ($) => + choice($.inheritance_constraint, $.equality_constraint), + inheritance_constraint: ($) => + seq( + repeat($.attribute), + field("constrained_type", $._constrained_type), + ":", + field("inherits_from", $._possibly_implicitly_unwrapped_type) + ), + equality_constraint: ($) => + seq( + repeat($.attribute), + field("constrained_type", $._constrained_type), + choice($._equal_sign, $._eq_eq), + field("must_equal", $.type) + ), + _constrained_type: ($) => choice($.identifier, $.nested_type_identifier), + nested_type_identifier: ($) => + seq( + $.unannotated_type, + optional(seq(".", sep1($.simple_identifier, "."))) + ), + _class_member_separator: ($) => choice($._semi, $.multiline_comment), + _class_member_declarations: ($) => + seq( + sep1($.type_level_declaration, $._class_member_separator), + optional($._class_member_separator) + ), + _function_value_parameters: ($) => + repeat1( + seq("(", optional(sep1Opt($._function_value_parameter, ",")), ")") + ), + _function_value_parameter: ($) => + seq( + optional($.attribute), + $.parameter, + optional(seq($._equal_sign, field("default_value", $.expression))) + ), + parameter: ($) => + seq( + optional(field("external_name", $.simple_identifier)), + field("name", $.simple_identifier), + ":", + optional($.parameter_modifiers), + field("type", $._possibly_implicitly_unwrapped_type), + optional($._three_dot_operator) + ), + _non_constructor_function_decl: ($) => + seq( + "func", + field("name", choice($.simple_identifier, $.referenceable_operator)) + ), + referenceable_operator: ($) => + choice( + $.custom_operator, + $._comparison_operator, + $._additive_operator, + $._multiplicative_operator, + $._equality_operator, + $._assignment_and_operator, + "++", + "--", + $.bang, + "~", + "|", + "^", + "<<", + ">>", + "&" + ), + // Hide the fact that certain symbols come from the custom scanner by aliasing them to their + // string variants. This keeps us from having to see them in the syntax tree (which would be + // noisy) but allows callers to refer to them as nodes by their text form like with any + // operator. + _equal_sign: ($) => alias($._eq_custom, "="), + _eq_eq: ($) => alias($._eq_eq_custom, "=="), + _dot: ($) => alias($._dot_custom, "."), + _arrow_operator: ($) => alias($._arrow_operator_custom, "->"), + _conjunction_operator: ($) => alias($._conjunction_operator_custom, "&&"), + _disjunction_operator: ($) => alias($._disjunction_operator_custom, "||"), + _nil_coalescing_operator: ($) => + alias($._nil_coalescing_operator_custom, "??"), + _as: ($) => alias($._as_custom, "as"), + _as_quest: ($) => alias($._as_quest_custom, "as?"), + _as_bang: ($) => alias($._as_bang_custom, "as!"), + _hash_symbol: ($) => alias($._hash_symbol_custom, "#"), + bang: ($) => choice($._bang_custom, "!"), + _async_keyword: ($) => alias($._async_keyword_custom, "async"), + _async_modifier: ($) => token("async"), + throws: ($) => choice($._throws_keyword, $._rethrows_keyword), + throws_clause: ($) => + seq($._throws_keyword, "(", field("type", $.unannotated_type), ")"), + enum_class_body: ($) => + seq("{", repeat(choice($.enum_entry, $.type_level_declaration)), "}"), + enum_entry: ($) => + seq( + optional($.modifiers), + optional("indirect"), + "case", + sep1( + seq( + field("name", $.simple_identifier), + optional($._enum_entry_suffix) + ), + "," + ), + optional(";") + ), + _enum_entry_suffix: ($) => + choice( + field("data_contents", $.enum_type_parameters), + seq($._equal_sign, field("raw_value", $.expression)) + ), + enum_type_parameters: ($) => + seq( + "(", + optional( + sep1( + seq( + optional( + seq(optional($.wildcard_pattern), $.simple_identifier, ":") + ), + $.type, + optional(seq($._equal_sign, $.expression)) + ), + "," + ) + ), + ")" + ), + protocol_declaration: ($) => + prec.right( + seq( + optional($.modifiers), + field("declaration_kind", "protocol"), + field("name", alias($.simple_identifier, $.type_identifier)), + optional($.type_parameters), + optional(seq(":", $._inheritance_specifiers)), + optional($.type_constraints), + field("body", $.protocol_body) + ) + ), + protocol_body: ($) => + seq("{", optional($._protocol_member_declarations), "}"), + _protocol_member_declarations: ($) => + seq(sep1($.protocol_member_declaration, $._semi), optional($._semi)), + protocol_member_declaration: ($) => + choice( + $.protocol_function_declaration, + $.init_declaration, + $.deinit_declaration, + $.protocol_property_declaration, + $.typealias_declaration, + $.associatedtype_declaration, + $.subscript_declaration + ), + protocol_function_declaration: ($) => + seq( + $._bodyless_function_declaration, + optional(field("body", $.function_body)) + ), + init_declaration: ($) => + prec.right( + seq( + optional($.modifiers), + optional("class"), + field("name", "init"), + optional(choice($._quest, $.bang)), + optional($.type_parameters), + $._function_value_parameters, + optional($._async_keyword), + optional(choice($.throws_clause, $.throws)), + optional($.type_constraints), + optional(field("body", $.function_body)) + ) + ), + deinit_declaration: ($) => + prec.right( + seq(optional($.modifiers), "deinit", field("body", $.function_body)) + ), + subscript_declaration: ($) => + prec.right( + seq( + optional($.modifiers), + "subscript", + optional($.type_parameters), + $._function_value_parameters, + optional( + seq( + $._arrow_operator, + field("return_type", $._possibly_implicitly_unwrapped_type) + ) + ), + optional($.type_constraints), + $.computed_property + ) + ), + computed_property: ($) => + seq( + "{", + choice( + optional($.statements), + repeat( + choice($.computed_getter, $.computed_setter, $.computed_modify) + ) + ), + "}" + ), + computed_getter: ($) => + seq(repeat($.attribute), $.getter_specifier, optional($._block)), + computed_modify: ($) => + seq(repeat($.attribute), $.modify_specifier, optional($._block)), + computed_setter: ($) => + seq( + repeat($.attribute), + $.setter_specifier, + optional(seq("(", $.simple_identifier, ")")), + optional($._block) + ), + getter_specifier: ($) => + seq(optional($.mutation_modifier), "get", optional($._getter_effects)), + setter_specifier: ($) => seq(optional($.mutation_modifier), "set"), + modify_specifier: ($) => seq(optional($.mutation_modifier), "_modify"), + _getter_effects: ($) => + repeat1(choice($._async_keyword, $.throws_clause, $.throws)), + operator_declaration: ($) => + seq( + choice("prefix", "infix", "postfix"), + "operator", + $.referenceable_operator, + optional(seq(":", $.simple_identifier)), + optional($.deprecated_operator_declaration_body) + ), + // The Swift compiler no longer accepts these, but some very old code still uses it. + deprecated_operator_declaration_body: ($) => + seq("{", repeat(choice($.simple_identifier, $._basic_literal)), "}"), + precedence_group_declaration: ($) => + seq( + "precedencegroup", + $.simple_identifier, + "{", + optional($.precedence_group_attributes), + "}" + ), + precedence_group_attributes: ($) => repeat1($.precedence_group_attribute), + precedence_group_attribute: ($) => + seq( + $.simple_identifier, + ":", + choice($.simple_identifier, $.boolean_literal) + ), + associatedtype_declaration: ($) => + seq( + optional($.modifiers), + "associatedtype", + field("name", alias($.simple_identifier, $.type_identifier)), + optional(seq(":", field("must_inherit", $.type))), + optional($.type_constraints), + optional(seq($._equal_sign, field("default_value", $.type))) + ), + //////////////////////////////// + // Attributes - https://docs.swift.org/swift-book/ReferenceManual/Attributes.html + //////////////////////////////// + attribute: ($) => + seq( + "@", + $.user_type, + // attribute arguments are a mess of special cases, maybe this is good enough? + optional(seq("(", sep1Opt($._attribute_argument, ","), ")")) + ), + _attribute_argument: ($) => + choice( + // labeled function parameters, used in custom property wrappers + seq($.simple_identifier, ":", $.expression), + // Unlabeled function parameters, simple identifiers, or `*` + $.expression, + // References to param names (used in `@objc(foo:bar:)`) + repeat1(seq($.simple_identifier, ":")), + // Version restrictions (iOS 3.4.5, Swift 5.0.0) + seq(repeat1($.simple_identifier), sep1($.integer_literal, ".")) + ), + //////////////////////////////// + // Patterns - https://docs.swift.org/swift-book/ReferenceManual/Patterns.html + //////////////////////////////// + _universally_allowed_pattern: ($) => + choice( + $.wildcard_pattern, + $._tuple_pattern, + $._type_casting_pattern, + $._case_pattern + ), + _bound_identifier: ($) => field("bound_identifier", $.simple_identifier), + + _binding_pattern_no_expr: ($) => + seq( + choice( + $._universally_allowed_pattern, + $._binding_pattern, + $._bound_identifier + ), + optional($._quest) + ), + _no_expr_pattern_already_bound: ($) => + seq( + choice($._universally_allowed_pattern, $._bound_identifier), + optional($._quest) + ), + _binding_pattern_with_expr: ($) => + seq( + choice( + $._universally_allowed_pattern, + $._binding_pattern, + $.expression + ), + optional($._quest) + ), + _non_binding_pattern_with_expr: ($) => + seq( + choice($._universally_allowed_pattern, $.expression), + optional($._quest) + ), + _direct_or_indirect_binding: ($) => + seq( + choice( + $._binding_kind_and_pattern, + seq("case", $._binding_pattern_no_expr) + ), + optional($.type_annotation) + ), + value_binding_pattern: ($) => field("mutability", choice("var", "let")), + _possibly_async_binding_pattern_kind: ($) => + seq(optional($._async_modifier), $.value_binding_pattern), + _binding_kind_and_pattern: ($) => + seq( + $._possibly_async_binding_pattern_kind, + $._no_expr_pattern_already_bound + ), + wildcard_pattern: ($) => "_", + _tuple_pattern_item: ($) => + choice( + seq( + $.simple_identifier, + seq(":", alias($._binding_pattern_with_expr, $.pattern)) + ), + alias($._binding_pattern_with_expr, $.pattern) + ), + _tuple_pattern: ($) => seq("(", sep1Opt($._tuple_pattern_item, ","), ")"), + _case_pattern: ($) => + seq( + optional("case"), + optional($.user_type), // XXX this should just be _type but that creates ambiguity + $._dot, + $.simple_identifier, + optional($._tuple_pattern) + ), + _type_casting_pattern: ($) => + choice( + seq("is", $.type), + seq(alias($._binding_pattern_no_expr, $.pattern), $._as, $.type) + ), + _binding_pattern: ($) => + seq( + seq(optional("case"), $.value_binding_pattern), + $._no_expr_pattern_already_bound + ), + + // ========== + // Modifiers + // ========== + modifiers: ($) => + repeat1( + prec.left( + choice($._non_local_scope_modifier, $._locally_permitted_modifiers) + ) + ), + _locally_permitted_modifiers: ($) => + repeat1(choice($.attribute, $._locally_permitted_modifier)), + parameter_modifiers: ($) => repeat1($.parameter_modifier), + _modifier: ($) => + choice($._non_local_scope_modifier, $._locally_permitted_modifier), + _non_local_scope_modifier: ($) => + choice( + $.member_modifier, + $.visibility_modifier, + $.function_modifier, + $.mutation_modifier, + $.property_modifier, + $.parameter_modifier + ), + _locally_permitted_modifier: ($) => + choice( + $.ownership_modifier, + $.inheritance_modifier, + $.property_behavior_modifier + ), + property_behavior_modifier: ($) => "lazy", + type_modifiers: ($) => repeat1($.attribute), + member_modifier: ($) => + choice("override", "convenience", "required", "nonisolated"), + visibility_modifier: ($) => + seq( + choice( + "public", + "private", + "internal", + "fileprivate", + "open", + "package" + ), + optional(seq("(", "set", ")")) + ), + type_parameter_modifiers: ($) => repeat1($.attribute), + function_modifier: ($) => choice("infix", "postfix", "prefix"), + mutation_modifier: ($) => choice("mutating", "nonmutating"), + property_modifier: ($) => + choice("static", "dynamic", "optional", "class", "distributed"), + inheritance_modifier: ($) => choice("final"), + parameter_modifier: ($) => + choice( + "inout", + "@escaping", + "@autoclosure", + $._parameter_ownership_modifier + ), + ownership_modifier: ($) => + choice("weak", "unowned", "unowned(safe)", "unowned(unsafe)"), + _parameter_ownership_modifier: ($) => choice("borrowing", "consuming"), + use_site_target: ($) => + seq( + choice( + "property", + "get", + "set", + "receiver", + "param", + "setparam", + "delegate" + ), + ":" + ), + directive: ($) => + prec.right( + PRECS.comment, + choice( + seq(alias($._directive_if, "#if"), $._compilation_condition), + seq(alias($._directive_elseif, "#elseif"), $._compilation_condition), + seq(alias($._directive_else, "#else")), + seq(alias($._directive_endif, "#endif")) + ) + ), + _compilation_condition: ($) => + prec.right( + choice( + seq("os", "(", $.simple_identifier, ")"), + seq("arch", "(", $.simple_identifier, ")"), + seq( + "swift", + "(", + $._comparison_operator, + sep1($.integer_literal, "."), + ")" + ), + seq( + "compiler", + "(", + $._comparison_operator, + sep1($.integer_literal, "."), + ")" + ), + seq("canImport", "(", sep1($.simple_identifier, "."), ")"), + seq("targetEnvironment", "(", $.simple_identifier, ")"), + $.boolean_literal, + $.simple_identifier, + seq("(", $._compilation_condition, ")"), + seq("!", $._compilation_condition), + seq( + $._compilation_condition, + $._conjunction_operator, + $._compilation_condition + ), + seq( + $._compilation_condition, + $._disjunction_operator, + $._compilation_condition + ) + ) + ), + diagnostic: ($) => + prec( + PRECS.comment, + seq( + $._hash_symbol, + choice( + // Using regexes here, rather than actually validating the string literal, because complex string literals + // cannot be used inside `token()` and we need that to ensure we get the right precedence. + seq(/error([^\r\n]*)/), + seq(/warning([^\r\n]*)/), + seq(/sourceLocation([^\r\n]*)/) + ) + ) + ), + // Dumping ground for any nodes that used to exist in the grammar, but have since been removed for whatever + // reason. + // Neovim applies updates non-atomically to the parser and the queries. Meanwhile, `tree-sitter` rejects any query + // that contains any unrecognized nodes. Putting those two facts together, we see that we must never remove nodes + // that once existed. + unused_for_backward_compatibility: ($) => + choice(alias("unused1", "try?"), alias("unused2", "try!")), + }, +}); +function sep1(rule, separator) { + return seq(rule, repeat(seq(separator, rule))); +} +function sep1Opt(rule, separator) { + return seq(rule, repeat(seq(separator, rule)), optional(separator)); +} + +function tree_sitter_version_supports_emoji() { + try { + return ( + TREE_SITTER_CLI_VERSION_MAJOR > 0 || + TREE_SITTER_CLI_VERSION_MINOR > 20 || + TREE_SITTER_CLI_VERSION_PATCH >= 5 + ); + } catch (err) { + if (err instanceof ReferenceError) { + return false; + } else { + throw err; + } + } +} diff --git a/unified/extractor/tree-sitter-swift/node-types.yml b/unified/extractor/tree-sitter-swift/node-types.yml new file mode 100644 index 00000000000..c4bf650944b --- /dev/null +++ b/unified/extractor/tree-sitter-swift/node-types.yml @@ -0,0 +1,728 @@ +supertypes: + expression: + - additive_expression + - array_literal + - as_expression + - assignment + - await_expression + - bin_literal + - bitwise_operation + - boolean_literal + - call_expression + - check_expression + - comparison_expression + - conjunction_expression + - constructor_expression + - diagnostic + - dictionary_literal + - directive + - disjunction_expression + - equality_expression + - fully_open_range + - hex_literal + - if_statement + - infix_expression + - integer_literal + - key_path_expression + - key_path_string_expression + - lambda_literal + - line_string_literal + - macro_invocation + - multi_line_string_literal + - multiplicative_expression + - navigation_expression + - "nil" + - nil_coalescing_expression + - oct_literal + - open_end_range_expression + - open_start_range_expression + - optional_chain_marker + - playground_literal + - postfix_expression + - prefix_expression + - range_expression + - raw_string_literal + - real_literal + - referenceable_operator + - regex_literal + - selector_expression + - self_expression + - simple_identifier + - special_literal + - super_expression + - switch_statement + - ternary_expression + - try_expression + - tuple_expression + - value_pack_expansion + - value_parameter_pack + global_declaration: + - associatedtype_declaration + - class_declaration + - function_declaration + - import_declaration + - init_declaration + - macro_declaration + - operator_declaration + - precedence_group_declaration + - property_declaration + - protocol_declaration + - typealias_declaration + local_declaration: + - class_declaration + - function_declaration + - property_declaration + - typealias_declaration + protocol_member_declaration: + - associatedtype_declaration + - deinit_declaration + - init_declaration + - protocol_function_declaration + - protocol_property_declaration + - subscript_declaration + - typealias_declaration + type_level_declaration: + - associatedtype_declaration + - class_declaration + - deinit_declaration + - function_declaration + - import_declaration + - init_declaration + - operator_declaration + - precedence_group_declaration + - property_declaration + - protocol_declaration + - subscript_declaration + - typealias_declaration + unannotated_type: + - array_type + - dictionary_type + - existential_type + - function_type + - metatype + - opaque_type + - optional_type + - protocol_composition_type + - suppressed_constraint + - tuple_type + - type_pack_expansion + - type_parameter_pack + - user_type + +named: + additive_expression: + lhs: expression + op: ["+", "-"] + rhs: expression + array_literal: + element*: expression + array_type: + element: type + as_expression: + $children: as_operator + expr: expression + type: type + as_operator: + assignment: + operator: ["%=", "*=", "+=", "-=", "/=", "="] + result: expression + target: directly_assignable_expression + associatedtype_declaration: + $children*: [modifiers, type_constraints] + default_value?: type + must_inherit?: type + name: type_identifier + attribute: + $children+: [expression, user_type] + availability_condition: + $children*: [identifier, integer_literal] + await_expression: + $children?: expression + expr?: expression + bang: + bin_literal: + bitwise_operation: + lhs: expression + op: ["&", "<<", ">>", "^", "|"] + rhs: expression + boolean_literal: + call_expression: + $children+: [call_suffix, expression] + call_suffix: + $children+: [lambda_literal, value_arguments] + name*: simple_identifier + capture_list: + $children+: capture_list_item + capture_list_item: + $children?: ownership_modifier + name: [self_expression, simple_identifier] + value?: expression + catch_block: + $children+: [catch_keyword, statements, where_clause] + error?: pattern + catch_keyword: + check_expression: + op: "is" + target: expression + type: type + class_body: + $children*: [multiline_comment, type_level_declaration] + class_declaration: + $children*: [attribute, inheritance_modifier, inheritance_specifier, modifiers, ownership_modifier, property_behavior_modifier, type_constraints, type_parameters] + body: [class_body, enum_class_body] + declaration_kind: ["actor", "class", "enum", "extension", "struct"] + name: [type_identifier, unannotated_type] + comment: + comparison_expression: + lhs: expression + op: ["<", "<=", ">", ">="] + rhs: expression + computed_getter: + $children+: [attribute, getter_specifier, statements] + computed_modify: + $children+: [attribute, modify_specifier, statements] + computed_property: + $children*: [computed_getter, computed_modify, computed_setter, statements] + computed_setter: + $children+: [attribute, setter_specifier, simple_identifier, statements] + conjunction_expression: + lhs: expression + op: "&&" + rhs: expression + constructor_expression: + $children: constructor_suffix + constructed_type: [array_type, dictionary_type, user_type] + constructor_suffix: + $children+: [lambda_literal, value_arguments] + name*: simple_identifier + control_transfer_statement: + $children*: [expression, throw_keyword] + result?: expression + custom_operator: + default_keyword: + deinit_declaration: + $children?: modifiers + body: function_body + deprecated_operator_declaration_body: + $children*: [bin_literal, boolean_literal, hex_literal, integer_literal, line_string_literal, multi_line_string_literal, oct_literal, raw_string_literal, real_literal, regex_literal, simple_identifier] + diagnostic: + dictionary_literal: + key*: expression + value*: expression + dictionary_type: + key: type + value: type + didset_clause: + $children*: [modifiers, simple_identifier, statements] + directive: + $children*: [boolean_literal, integer_literal, simple_identifier] + directly_assignable_expression: + $children: expression + disjunction_expression: + lhs: expression + op: "||" + rhs: expression + do_statement: + $children*: [catch_block, statements] + else: + enum_class_body: + $children*: [enum_entry, type_level_declaration] + enum_entry: + $children?: modifiers + data_contents*: enum_type_parameters + name+: simple_identifier + raw_value*: expression + enum_type_parameters: + $children*: [expression, type, wildcard_pattern] + equality_constraint: + $children*: attribute + constrained_type: [identifier, nested_type_identifier] + must_equal: type + equality_expression: + lhs: expression + op: ["!=", "!==", "==", "==="] + rhs: expression + existential_type: + $children: unannotated_type + external_macro_definition: + $children: value_arguments + for_statement: + $children*: [statements, try_operator, type_annotation, where_clause] + collection: expression + item: pattern + fully_open_range: + function_body: + $children?: statements + function_declaration: + $children*: [attribute, inheritance_modifier, modifiers, ownership_modifier, parameter, property_behavior_modifier, throws, throws_clause, type_constraints, type_parameters] + body: function_body + default_value*: expression + name: [referenceable_operator, simple_identifier] + return_type?: [implicitly_unwrapped_type, type] + function_modifier: + function_type: + $children?: [throws, throws_clause] + params: unannotated_type + return_type: type + getter_specifier: + $children*: [mutation_modifier, throws, throws_clause] + guard_statement: + $children+: [else, statements] + condition+: if_condition + hex_literal: + identifier: + $children+: simple_identifier + if_condition: + $children: [availability_condition, expression, if_let_binding] + if_let_binding: + $children*: [expression, pattern, type, type_annotation, user_type, value_binding_pattern, where_clause, wildcard_pattern] + bound_identifier?: simple_identifier + if_statement: + $children*: [else, if_statement, statements] + condition+: if_condition + implicitly_unwrapped_type: + $children: type + import_declaration: + $children+: [identifier, modifiers] + infix_expression: + lhs: expression + op: custom_operator + rhs: expression + inheritance_constraint: + $children*: attribute + constrained_type: [identifier, nested_type_identifier] + inherits_from: [implicitly_unwrapped_type, type] + inheritance_modifier: + inheritance_specifier: + inherits_from: [function_type, suppressed_constraint, user_type] + init_declaration: + $children*: [attribute, bang, modifiers, parameter, throws, throws_clause, type_constraints, type_parameters] + body?: function_body + default_value*: expression + name: "init" + integer_literal: + interpolated_expression: + $children?: type_modifiers + name?: value_argument_label + reference_specifier*: value_argument_label + value?: expression + key_path_expression: + $children*: [array_type, bang, dictionary_type, simple_identifier, type_arguments, type_identifier, value_argument] + key_path_string_expression: + $children: expression + lambda_function_type: + $children*: [lambda_function_type_parameters, throws, throws_clause] + return_type?: [implicitly_unwrapped_type, type] + lambda_function_type_parameters: + $children+: lambda_parameter + lambda_literal: + $children*: [attribute, statements] + captures?: capture_list + type?: lambda_function_type + lambda_parameter: + $children?: [parameter_modifiers, self_expression] + external_name?: simple_identifier + name?: simple_identifier + type?: [implicitly_unwrapped_type, type] + line_str_text: + line_string_literal: + interpolation*: interpolated_expression + text*: [line_str_text, str_escaped_char] + macro_declaration: + $children+: [attribute, modifiers, parameter, simple_identifier, type_constraints, type_parameters, unannotated_type] + default_value*: expression + definition?: macro_definition + macro_definition: + body: [expression, external_macro_definition] + macro_invocation: + $children+: [call_suffix, simple_identifier, type_parameters] + member_modifier: + metatype: + $children: unannotated_type + modifiers: + $children+: [attribute, function_modifier, inheritance_modifier, member_modifier, mutation_modifier, ownership_modifier, parameter_modifier, property_behavior_modifier, property_modifier, visibility_modifier] + modify_specifier: + $children?: mutation_modifier + multi_line_str_text: + multi_line_string_literal: + interpolation*: interpolated_expression + text*: ["\"", multi_line_str_text, str_escaped_char] + multiline_comment: + multiplicative_expression: + lhs: expression + op: ["%", "*", "/"] + rhs: expression + mutation_modifier: + navigation_expression: + suffix: navigation_suffix + target+: ["(", ")", array_type, dictionary_type, existential_type, expression, opaque_type, user_type] + navigation_suffix: + suffix: [integer_literal, simple_identifier] + nested_type_identifier: + $children+: [simple_identifier, unannotated_type] + nil_coalescing_expression: + if_nil: expression + value: expression + oct_literal: + opaque_type: + $children: unannotated_type + open_end_range_expression: + start: expression + open_start_range_expression: + end: expression + operator_declaration: + $children+: [deprecated_operator_declaration_body, referenceable_operator, simple_identifier] + optional_chain_marker: + $children: expression + optional_type: + wrapped: [array_type, dictionary_type, tuple_type, user_type] + ownership_modifier: + parameter: + $children?: parameter_modifiers + external_name?: simple_identifier + name: simple_identifier + type: [implicitly_unwrapped_type, type] + parameter_modifier: + parameter_modifiers: + $children+: parameter_modifier + pattern: + $children*: [expression, pattern, type, user_type, value_binding_pattern, wildcard_pattern] + bound_identifier?: simple_identifier + playground_literal: + $children+: expression + postfix_expression: + operation: ["++", "--", bang] + target: expression + precedence_group_attribute: + $children+: [boolean_literal, simple_identifier] + precedence_group_attributes: + $children+: precedence_group_attribute + precedence_group_declaration: + $children+: [precedence_group_attributes, simple_identifier] + prefix_expression: + operation: ["&", "+", "++", "-", "--", ".", bang, custom_operator, "~"] + target: expression + property_behavior_modifier: + property_declaration: + $children*: [attribute, inheritance_modifier, modifiers, ownership_modifier, property_behavior_modifier, type_annotation, type_constraints, value_binding_pattern, willset_didset_block] + computed_value*: computed_property + name+: pattern + value*: expression + property_modifier: + protocol_body: + $children*: protocol_member_declaration + protocol_composition_type: + $children+: unannotated_type + protocol_declaration: + $children*: [attribute, inheritance_specifier, modifiers, type_constraints, type_parameters] + body: protocol_body + declaration_kind: "protocol" + name: type_identifier + protocol_function_declaration: + $children*: [attribute, modifiers, parameter, throws, throws_clause, type_constraints, type_parameters] + body?: function_body + default_value*: expression + name: [referenceable_operator, simple_identifier] + return_type?: [implicitly_unwrapped_type, type] + protocol_property_declaration: + $children+: [modifiers, protocol_property_requirements, type_annotation, type_constraints] + name: pattern + protocol_property_requirements: + $children*: [getter_specifier, setter_specifier] + range_expression: + end: expression + op: ["...", "..<"] + start: expression + raw_str_continuing_indicator: + raw_str_end_part: + raw_str_interpolation: + $children: raw_str_interpolation_start + interpolation+: interpolated_expression + raw_str_interpolation_start: + raw_str_part: + raw_string_literal: + $children*: raw_str_continuing_indicator + interpolation*: raw_str_interpolation + text+: [raw_str_end_part, raw_str_part] + real_literal: + referenceable_operator: + $children?: [bang, custom_operator] + regex_literal: + repeat_while_statement: + $children?: statements + condition+: if_condition + selector_expression: + $children: expression + self_expression: + setter_specifier: + $children?: mutation_modifier + shebang_line: + simple_identifier: + source_file: + $children*: [do_statement, expression, for_statement, global_declaration, guard_statement, repeat_while_statement, shebang_line, statement_label, throw_keyword, while_statement] + special_literal: + statement_label: + statements: + $children+: [control_transfer_statement, do_statement, expression, for_statement, guard_statement, local_declaration, repeat_while_statement, statement_label, while_statement] + str_escaped_char: + subscript_declaration: + $children+: [attribute, computed_property, modifiers, parameter, type_constraints, type_parameters] + default_value*: expression + return_type?: [implicitly_unwrapped_type, type] + super_expression: + suppressed_constraint: + suppressed: type_identifier + switch_entry: + $children+: [default_keyword, expression, modifiers, statements, switch_pattern, where_keyword] + switch_pattern: + $children: pattern + switch_statement: + $children*: switch_entry + expr: expression + ternary_expression: + condition: expression + if_false: expression + if_true: expression + throw_keyword: + throws: + throws_clause: + type: unannotated_type + try_expression: + $children: try_operator + expr: expression + try_operator: + tuple_expression: + name*: simple_identifier + value+: expression + tuple_type: + $children?: tuple_type_item + element*: tuple_type_item + tuple_type_item: + $children*: [dictionary_type, existential_type, opaque_type, parameter_modifiers, wildcard_pattern] + name?: simple_identifier + type?: type + type: + modifiers?: type_modifiers + name: unannotated_type + type_annotation: + type: [implicitly_unwrapped_type, type] + type_arguments: + $children+: type + type_constraint: + $children: [equality_constraint, inheritance_constraint] + type_constraints: + $children+: [type_constraint, where_keyword] + type_identifier: + type_modifiers: + $children+: attribute + type_pack_expansion: + $children: unannotated_type + type_parameter: + $children+: [type, type_identifier, type_parameter_modifiers, type_parameter_pack] + type_parameter_modifiers: + $children+: attribute + type_parameter_pack: + $children: unannotated_type + type_parameters: + $children+: [type_constraints, type_parameter] + typealias_declaration: + $children*: [attribute, inheritance_modifier, modifiers, ownership_modifier, property_behavior_modifier, type_parameters] + name: type_identifier + value: type + user_type: + $children+: [type_arguments, type_identifier] + value_argument: + $children?: type_modifiers + name?: value_argument_label + reference_specifier*: value_argument_label + value?: expression + value_argument_label: + $children: simple_identifier + value_arguments: + $children*: value_argument + value_binding_pattern: + mutability: ["let", "var"] + value_pack_expansion: + $children: expression + value_parameter_pack: + $children: expression + visibility_modifier: + where_clause: + $children+: [expression, where_keyword] + where_keyword: + while_statement: + $children?: statements + condition+: if_condition + wildcard_pattern: + willset_clause: + $children*: [modifiers, simple_identifier, statements] + willset_didset_block: + $children+: [didset_clause, willset_clause] + +unnamed: + - "?" + - "!" + - "!=" + - "!==" + - "\"" + - "\"\"\"" + - "#" + - "#else" + - "#elseif" + - "#endif" + - "#if" + - "%" + - "%=" + - "&" + - "&&" + - "(" + - ")" + - "*" + - "*=" + - "+" + - "++" + - "+=" + - "," + - "-" + - "--" + - "-=" + - "->" + - "." + - "..." + - "..<" + - "/" + - "/=" + - ":" + - ";" + - "<" + - "<<" + - "<=" + - "=" + - "==" + - "===" + - ">" + - ">=" + - ">>" + - "?" + - "??" + - "@" + - "@autoclosure" + - "@escaping" + - "Protocol" + - "Type" + - "[" + - "\\" + - "\\(" + - "]" + - "^" + - "^{" + - "_modify" + - "actor" + - "any" + - "arch" + - "as" + - "as!" + - "as?" + - "associatedtype" + - "async" + - "available" + - "await" + - "borrowing" + - "break" + - "canImport" + - "case" + - "class" + - "colorLiteral" + - "column" + - "compiler" + - "consuming" + - "continue" + - "convenience" + - "deinit" + - "didSet" + - "distributed" + - "do" + - "dsohandle" + - "dynamic" + - "each" + - "enum" + - "extension" + - "externalMacro" + - "fallthrough" + - "false" + - "file" + - "fileID" + - "fileLiteral" + - "filePath" + - "fileprivate" + - "final" + - "for" + - "func" + - "function" + - "get" + - "getter:" + - "guard" + - "if" + - "imageLiteral" + - "import" + - "in" + - "indirect" + - "infix" + - "init" + - "inout" + - "internal" + - "is" + - "keyPath" + - "lazy" + - "let" + - "line" + - "macro" + - "mutating" + - "nil" + - "nonisolated" + - "nonmutating" + - "open" + - "operator" + - "optional" + - "os" + - "override" + - "package" + - "postfix" + - "precedencegroup" + - "prefix" + - "private" + - "protocol" + - "public" + - "repeat" + - "required" + - "return" + - "selector" + - "self" + - "set" + - "setter:" + - "some" + - "static" + - "struct" + - "subscript" + - "super" + - "swift" + - "switch" + - "targetEnvironment" + - "true" + - "try" + - "typealias" + - "u" + - "unavailable" + - "unowned" + - "unowned(safe)" + - "unowned(unsafe)" + - "var" + - "weak" + - "while" + - "willSet" + - "yield" + - "{" + - "|" + - "||" + - "}" + - "~" diff --git a/unified/extractor/tree-sitter-swift/package.json b/unified/extractor/tree-sitter-swift/package.json new file mode 100644 index 00000000000..68dcf7cc42f --- /dev/null +++ b/unified/extractor/tree-sitter-swift/package.json @@ -0,0 +1,68 @@ +{ + "name": "tree-sitter-swift", + "version": "0.7.2", + "description": "A tree-sitter grammar for the Swift programming language.", + "main": "bindings/node/index.js", + "types": "bindings/node", + "scripts": { + "install": "node-gyp-build", + "prestart": "tree-sitter build --wasm", + "start": "tree-sitter playground", + "test": "node --test bindings/node/*_test.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/alex-pinkus/tree-sitter-swift.git" + }, + "tree-sitter": [ + { + "scope": "source.swift", + "file-types": [ + "swift" + ], + "injection-regex": "swift", + "highlights": "queries/highlights.scm", + "locals": "queries/locals.scm", + "injections": "queries/injections.scm" + } + ], + "keywords": [ + "parser", + "swift" + ], + "files": [ + "grammar.js", + "tree-sitter.json", + "binding.gyp", + "prebuilds/**", + "bindings/node/*", + "queries/*", + "scripts/*", + "src/**" + ], + "author": "Alex Pinkus ", + "license": "MIT", + "bugs": { + "url": "https://github.com/alex-pinkus/tree-sitter-swift/issues" + }, + "homepage": "https://github.com/alex-pinkus/tree-sitter-swift#readme", + "dependencies": { + "node-addon-api": "^8.0.0", + "node-gyp-build": "^4.8.0", + "tree-sitter-cli": "^0.23", + "which": "2.0.2" + }, + "peerDependencies": { + "tree-sitter": "^0.22.1" + }, + "peerDependenciesMeta": { + "tree_sitter": { + "optional": true + } + }, + "devDependencies": { + "node-gyp": "^10.0.1", + "prebuildify": "^6.0.0", + "prettier": "2.3.2" + } +} diff --git a/unified/extractor/tree-sitter-swift/queries/folds.scm b/unified/extractor/tree-sitter-swift/queries/folds.scm new file mode 100644 index 00000000000..ca7f72593aa --- /dev/null +++ b/unified/extractor/tree-sitter-swift/queries/folds.scm @@ -0,0 +1,35 @@ +; format-ignore +[ + (protocol_body) ; protocol Foo { ... } + (class_body) ; class Foo { ... } + (enum_class_body) ; enum Foo { ... } + (function_body) ; func Foo (...) {...} + (computed_property) ; { ... } + + (computed_getter) ; get { ... } + (computed_setter) ; set { ... } + + (do_statement) + (if_statement) + (for_statement) + (switch_statement) + (while_statement) + (guard_statement) + (switch_entry) + + (type_parameters) ; x + (tuple_type) ; (...) + (array_type) ; [String] + (dictionary_type) ; [Foo: Bar] + + (call_expression) ; callFunc(...) + (tuple_expression) ; ( foo + bar ) + (array_literal) ; [ foo, bar ] + (dictionary_literal) ; [ foo: bar, x: y ] + (lambda_literal) + (willset_didset_block) + (willset_clause) + (didset_clause) + + (import_declaration)+ +] @fold diff --git a/unified/extractor/tree-sitter-swift/queries/highlights.scm b/unified/extractor/tree-sitter-swift/queries/highlights.scm new file mode 100644 index 00000000000..82ad68d4ed1 --- /dev/null +++ b/unified/extractor/tree-sitter-swift/queries/highlights.scm @@ -0,0 +1,336 @@ +[ + "." + ";" + ":" + "," +] @punctuation.delimiter + +[ + "(" + ")" + "[" + "]" + "{" + "}" +] @punctuation.bracket + +; Identifiers +(type_identifier) @type + +[ + (self_expression) + (super_expression) +] @variable.builtin + +; Declarations +[ + "func" + "deinit" +] @keyword.function + +[ + (visibility_modifier) + (member_modifier) + (function_modifier) + (property_modifier) + (parameter_modifier) + (inheritance_modifier) + (mutation_modifier) +] @keyword.modifier + +(simple_identifier) @variable + +(function_declaration + (simple_identifier) @function.method) + +(protocol_function_declaration + name: (simple_identifier) @function.method) + +(init_declaration + "init" @constructor) + +(parameter + external_name: (simple_identifier) @variable.parameter) + +(parameter + name: (simple_identifier) @variable.parameter) + +(type_parameter + (type_identifier) @variable.parameter) + +(inheritance_constraint + (identifier + (simple_identifier) @variable.parameter)) + +(equality_constraint + (identifier + (simple_identifier) @variable.parameter)) + +[ + "protocol" + "extension" + "indirect" + "nonisolated" + "override" + "convenience" + "required" + "some" + "any" + "weak" + "unowned" + "didSet" + "willSet" + "subscript" + "let" + "var" + (throws) + (where_keyword) + (getter_specifier) + (setter_specifier) + (modify_specifier) + (else) + (as_operator) +] @keyword + +[ + "enum" + "struct" + "class" + "typealias" +] @keyword.type + +[ + "async" + "await" +] @keyword.coroutine + +(shebang_line) @keyword.directive + +(class_body + (property_declaration + (pattern + (simple_identifier) @variable.member))) + +(protocol_property_declaration + (pattern + (simple_identifier) @variable.member)) + +(navigation_expression + (navigation_suffix + (simple_identifier) @variable.member)) + +(value_argument + name: (value_argument_label + (simple_identifier) @variable.member)) + +(import_declaration + "import" @keyword.import) + +(enum_entry + "case" @keyword) + +(modifiers + (attribute + "@" @attribute + (user_type + (type_identifier) @attribute))) + +; Function calls +(call_expression + (simple_identifier) @function.call) ; foo() + +(call_expression + ; foo.bar.baz(): highlight the baz() + (navigation_expression + (navigation_suffix + (simple_identifier) @function.call))) + +(call_expression + (prefix_expression + (simple_identifier) @function.call)) ; .foo() + +((navigation_expression + (simple_identifier) @type) ; SomeType.method(): highlight SomeType as a type + (#match? @type "^[A-Z]")) + +(directive) @keyword.directive + +; See https://docs.swift.org/swift-book/documentation/the-swift-programming-language/lexicalstructure/#Keywords-and-Punctuation +[ + (diagnostic) + (availability_condition) + (playground_literal) + (key_path_string_expression) + (selector_expression) + (external_macro_definition) +] @function.macro + +(special_literal) @constant.macro + +; Statements +(for_statement + "for" @keyword.repeat) + +(for_statement + "in" @keyword.repeat) + +[ + "while" + "repeat" + "continue" + "break" +] @keyword.repeat + +(guard_statement + "guard" @keyword.conditional) + +(if_statement + "if" @keyword.conditional) + +(switch_statement + "switch" @keyword.conditional) + +(switch_entry + "case" @keyword) + +(switch_entry + "fallthrough" @keyword) + +(switch_entry + (default_keyword) @keyword) + +"return" @keyword.return + +(ternary_expression + [ + "?" + ":" + ] @keyword.conditional.ternary) + +[ + (try_operator) + "do" + (throw_keyword) + (catch_keyword) +] @keyword.exception + +(statement_label) @label + +; Comments +[ + (comment) + (multiline_comment) +] @comment @spell + +((comment) @comment.documentation + (#match? @comment.documentation "^///[^/]")) + +((comment) @comment.documentation + (#match? @comment.documentation "^///$")) + +((multiline_comment) @comment.documentation + (#match? @comment.documentation "^/[*][*][^*].*[*]/$")) + +; String literals +(line_str_text) @string + +(str_escaped_char) @string.escape + +(multi_line_str_text) @string + +(raw_str_part) @string + +(raw_str_end_part) @string + +(line_string_literal + [ + "\\(" + ")" + ] @punctuation.special) + +(multi_line_string_literal + [ + "\\(" + ")" + ] @punctuation.special) + +(raw_str_interpolation + [ + (raw_str_interpolation_start) + ")" + ] @punctuation.special) + +[ + "\"" + "\"\"\"" +] @string + +; Lambda literals +(lambda_literal + "in" @keyword.operator) + +; Basic literals +[ + (integer_literal) + (hex_literal) + (oct_literal) + (bin_literal) +] @number + +(real_literal) @number.float + +(boolean_literal) @boolean + +"nil" @constant.builtin + +(wildcard_pattern) @character.special + +; Regex literals +(regex_literal) @string.regexp + +; Operators +(custom_operator) @operator + +[ + "+" + "-" + "*" + "/" + "%" + "=" + "+=" + "-=" + "*=" + "/=" + "<" + ">" + "<<" + ">>" + "<=" + ">=" + "++" + "--" + "^" + "&" + "&&" + "|" + "||" + "~" + "%=" + "!=" + "!==" + "==" + "===" + "?" + "??" + "->" + "..<" + "..." + (bang) +] @operator + +(type_arguments + [ + "<" + ">" + ] @punctuation.bracket) diff --git a/unified/extractor/tree-sitter-swift/queries/indents.scm b/unified/extractor/tree-sitter-swift/queries/indents.scm new file mode 100644 index 00000000000..ec8f8af95c6 --- /dev/null +++ b/unified/extractor/tree-sitter-swift/queries/indents.scm @@ -0,0 +1,123 @@ +; format-ignore +[ + ; ... refers to the section that will get affected by this indent.begin capture + (protocol_body) ; protocol Foo { ... } + (class_body) ; class Foo { ... } + (enum_class_body) ; enum Foo { ... } + (function_declaration) ; func Foo (...) {...} + (init_declaration) ; init(...) {...} + (deinit_declaration) ; deinit {...} + (computed_property) ; { ... } + (subscript_declaration) ; subscript Foo(...) { ... } + + (computed_getter) ; get { ... } + (computed_setter) ; set { ... } + + (assignment) ; a = b + + (control_transfer_statement) ; return ... + (for_statement) + (while_statement) + (repeat_while_statement) + (do_statement) + (if_statement) + (switch_statement) + (guard_statement) + + (type_parameters) ; x + (tuple_type) ; (...) + (array_type) ; [String] + (dictionary_type) ; [Foo: Bar] + + (call_expression) ; callFunc(...) + (tuple_expression) ; ( foo + bar ) + (array_literal) ; [ foo, bar ] + (dictionary_literal) ; [ foo: bar, x: y ] + (lambda_literal) + (willset_didset_block) + (willset_clause) + (didset_clause) +] @indent.begin + +(init_declaration) @indent.begin + +(init_declaration + [ + "init" + "(" + ] @indent.branch) + +; indentation for init parameters +(init_declaration + ")" @indent.branch @indent.end) + +(init_declaration + (parameter) @indent.begin + (#set! indent.immediate)) + +; @something(...) +(modifiers + (attribute) @indent.begin) + +(function_declaration + (modifiers + . + (attribute) + (_)* @indent.branch) + . + _ @indent.branch + (#not-kind-eq? @indent.branch "type_parameters" "parameter")) + +(ERROR + [ + "<" + "{" + "(" + "[" + ]) @indent.begin + +; if-elseif +(if_statement + (if_statement) @indent.dedent) + +; case Foo: +; default Foo: +; @attribute default Foo: +(switch_entry + . + _ @indent.branch) + +(function_declaration + ")" @indent.branch) + +(type_parameters + ">" @indent.branch @indent.end .) + +(tuple_expression + ")" @indent.branch @indent.end) + +(value_arguments + ")" @indent.branch @indent.end) + +(tuple_type + ")" @indent.branch @indent.end) + +(modifiers + (attribute + ")" @indent.branch @indent.end)) + +[ + "}" + "]" +] @indent.branch @indent.end + +[ + ; (ERROR) + (comment) + (multiline_comment) + (raw_str_part) + (multi_line_string_literal) +] @indent.auto + +(directive) @indent.ignore + diff --git a/unified/extractor/tree-sitter-swift/queries/injections.scm b/unified/extractor/tree-sitter-swift/queries/injections.scm new file mode 100644 index 00000000000..512cfa0d522 --- /dev/null +++ b/unified/extractor/tree-sitter-swift/queries/injections.scm @@ -0,0 +1,10 @@ +; Parse regex syntax within regex literals + +((regex_literal) @injection.content + (#set! injection.language "regex")) + +([ + (comment) + (multiline_comment) +] @injection.content + (#set! injection.language "comment")) diff --git a/unified/extractor/tree-sitter-swift/queries/locals.scm b/unified/extractor/tree-sitter-swift/queries/locals.scm new file mode 100644 index 00000000000..78032a81810 --- /dev/null +++ b/unified/extractor/tree-sitter-swift/queries/locals.scm @@ -0,0 +1,23 @@ +(import_declaration + (identifier) @local.definition.import) + +(function_declaration + name: (simple_identifier) @local.definition.function) + +; Scopes +[ + (statements) + (for_statement) + (while_statement) + (repeat_while_statement) + (do_statement) + (if_statement) + (guard_statement) + (switch_statement) + (property_declaration) + (function_declaration) + (class_declaration) + (protocol_declaration) +] @local.scope + + diff --git a/unified/extractor/tree-sitter-swift/queries/outline.scm b/unified/extractor/tree-sitter-swift/queries/outline.scm new file mode 100644 index 00000000000..31fe5d9d4a4 --- /dev/null +++ b/unified/extractor/tree-sitter-swift/queries/outline.scm @@ -0,0 +1,66 @@ +(protocol_declaration + declaration_kind: "protocol" @name + . + _ * @name + . + body: (protocol_body) +) @item + +(class_declaration + declaration_kind: ( + [ + "actor" + "class" + "extension" + "enum" + "struct" + ] + ) @name + . + _ * @name + . + body: (_) +) @item + +(init_declaration + name: "init" @name + . + _ * @name + . + body: (function_body) +) @item + +(deinit_declaration + "deinit" @name) @item + +(function_declaration + "func" @name + . + _ * @name + . + body: (function_body) +) @item + +(class_body + (property_declaration + (value_binding_pattern) @name + name: (pattern) @name + (type_annotation)? @name + ) @item +) + +(enum_class_body + (property_declaration + (value_binding_pattern) @name + name: (pattern) @name + (type_annotation)? @name + ) @item +) + +( + (protocol_function_declaration) @name +) @item + +( + (protocol_property_declaration) @name +) @item diff --git a/unified/extractor/tree-sitter-swift/queries/tags.scm b/unified/extractor/tree-sitter-swift/queries/tags.scm new file mode 100644 index 00000000000..0038571e5d7 --- /dev/null +++ b/unified/extractor/tree-sitter-swift/queries/tags.scm @@ -0,0 +1,51 @@ +(class_declaration + name: (type_identifier) @name) @definition.class + +(protocol_declaration + name: (type_identifier) @name) @definition.interface + +(class_declaration + (class_body + [ + (function_declaration + name: (simple_identifier) @name + ) + (subscript_declaration + (parameter (simple_identifier) @name) + ) + (init_declaration "init" @name) + (deinit_declaration "deinit" @name) + ] + ) +) @definition.method + +(protocol_declaration + (protocol_body + [ + (protocol_function_declaration + name: (simple_identifier) @name + ) + (subscript_declaration + (parameter (simple_identifier) @name) + ) + (init_declaration "init" @name) + ] + ) +) @definition.method + +(class_declaration + (class_body + [ + (property_declaration + (pattern (simple_identifier) @name) + ) + ] + ) +) @definition.property + +(property_declaration + (pattern (simple_identifier) @name) +) @definition.property + +(function_declaration + name: (simple_identifier) @name) @definition.function \ No newline at end of file diff --git a/unified/extractor/tree-sitter-swift/queries/textobjects.scm b/unified/extractor/tree-sitter-swift/queries/textobjects.scm new file mode 100644 index 00000000000..da689a1b29f --- /dev/null +++ b/unified/extractor/tree-sitter-swift/queries/textobjects.scm @@ -0,0 +1,19 @@ + + +; MARK: Structure + +(function_declaration + body: (_) @function.inside) @function.around + +; TODO: Classes/structs/enums + + +; MARK: Tests + +; Only matches prefix test. Other conventions +; might be nice to add! +(function_declaration + name: (simple_identifier) @_name + (#match? @_name "^test") +) + diff --git a/unified/extractor/tree-sitter-swift/src/scanner.c b/unified/extractor/tree-sitter-swift/src/scanner.c new file mode 100644 index 00000000000..bb2dcac58b2 --- /dev/null +++ b/unified/extractor/tree-sitter-swift/src/scanner.c @@ -0,0 +1,929 @@ +#include "tree_sitter/parser.h" +#include +#include + +#define TOKEN_COUNT 33 + +enum TokenType { + BLOCK_COMMENT, + RAW_STR_PART, + RAW_STR_CONTINUING_INDICATOR, + RAW_STR_END_PART, + IMPLICIT_SEMI, + EXPLICIT_SEMI, + ARROW_OPERATOR, + DOT_OPERATOR, + CONJUNCTION_OPERATOR, + DISJUNCTION_OPERATOR, + NIL_COALESCING_OPERATOR, + EQUAL_SIGN, + EQ_EQ, + PLUS_THEN_WS, + MINUS_THEN_WS, + BANG, + THROWS_KEYWORD, + RETHROWS_KEYWORD, + DEFAULT_KEYWORD, + WHERE_KEYWORD, + ELSE_KEYWORD, + CATCH_KEYWORD, + AS_KEYWORD, + AS_QUEST, + AS_BANG, + ASYNC_KEYWORD, + CUSTOM_OPERATOR, + HASH_SYMBOL, + DIRECTIVE_IF, + DIRECTIVE_ELSEIF, + DIRECTIVE_ELSE, + DIRECTIVE_ENDIF, + FAKE_TRY_BANG +}; + +#define OPERATOR_COUNT 20 + +const char* OPERATORS[OPERATOR_COUNT] = { + "->", + ".", + "&&", + "||", + "??", + "=", + "==", + "+", + "-", + "!", + "throws", + "rethrows", + "default", + "where", + "else", + "catch", + "as", + "as?", + "as!", + "async" +}; + +enum IllegalTerminatorGroup { + ALPHANUMERIC, + OPERATOR_SYMBOLS, + OPERATOR_OR_DOT, + NON_WHITESPACE +}; + +const enum IllegalTerminatorGroup OP_ILLEGAL_TERMINATORS[OPERATOR_COUNT] = { + OPERATOR_SYMBOLS, // -> + OPERATOR_OR_DOT, // . + OPERATOR_SYMBOLS, // && + OPERATOR_SYMBOLS, // || + OPERATOR_SYMBOLS, // ?? + OPERATOR_SYMBOLS, // = + OPERATOR_SYMBOLS, // == + NON_WHITESPACE, // + + NON_WHITESPACE, // - + OPERATOR_SYMBOLS, // ! + ALPHANUMERIC, // throws + ALPHANUMERIC, // rethrows + ALPHANUMERIC, // default + ALPHANUMERIC, // where + ALPHANUMERIC, // else + ALPHANUMERIC, // catch + ALPHANUMERIC, // as + OPERATOR_SYMBOLS, // as? + OPERATOR_SYMBOLS, // as! + ALPHANUMERIC // async +}; + +const enum TokenType OP_SYMBOLS[OPERATOR_COUNT] = { + ARROW_OPERATOR, + DOT_OPERATOR, + CONJUNCTION_OPERATOR, + DISJUNCTION_OPERATOR, + NIL_COALESCING_OPERATOR, + EQUAL_SIGN, + EQ_EQ, + PLUS_THEN_WS, + MINUS_THEN_WS, + BANG, + THROWS_KEYWORD, + RETHROWS_KEYWORD, + DEFAULT_KEYWORD, + WHERE_KEYWORD, + ELSE_KEYWORD, + CATCH_KEYWORD, + AS_KEYWORD, + AS_QUEST, + AS_BANG, + ASYNC_KEYWORD +}; + +const uint64_t OP_SYMBOL_SUPPRESSOR[OPERATOR_COUNT] = { + 0, // ARROW_OPERATOR, + 0, // DOT_OPERATOR, + 0, // CONJUNCTION_OPERATOR, + 0, // DISJUNCTION_OPERATOR, + 0, // NIL_COALESCING_OPERATOR, + 0, // EQUAL_SIGN, + 0, // EQ_EQ, + 0, // PLUS_THEN_WS, + 0, // MINUS_THEN_WS, + 1UL << FAKE_TRY_BANG, // BANG, + 0, // THROWS_KEYWORD, + 0, // RETHROWS_KEYWORD, + 0, // DEFAULT_KEYWORD, + 0, // WHERE_KEYWORD, + 0, // ELSE_KEYWORD, + 0, // CATCH_KEYWORD, + 0, // AS_KEYWORD, + 0, // AS_QUEST, + 0, // AS_BANG, + 0, // ASYNC_KEYWORD +}; + +#define RESERVED_OP_COUNT 31 + +const char* RESERVED_OPS[RESERVED_OP_COUNT] = { + "/", + "=", + "-", + "+", + "!", + "*", + "%", + "<", + ">", + "&", + "|", + "^", + "?", + "~", + ".", + "..", + "->", + "/*", + "*/", + "+=", + "-=", + "*=", + "/=", + "%=", + ">>", + "<<", + "++", + "--", + "===", + "...", + "..<" +}; + +static bool is_cross_semi_token(enum TokenType op) { + switch(op) { + case ARROW_OPERATOR: + case DOT_OPERATOR: + case CONJUNCTION_OPERATOR: + case DISJUNCTION_OPERATOR: + case NIL_COALESCING_OPERATOR: + case EQUAL_SIGN: + case EQ_EQ: + case PLUS_THEN_WS: + case MINUS_THEN_WS: + case THROWS_KEYWORD: + case RETHROWS_KEYWORD: + case DEFAULT_KEYWORD: + case WHERE_KEYWORD: + case ELSE_KEYWORD: + case CATCH_KEYWORD: + case AS_KEYWORD: + case AS_QUEST: + case AS_BANG: + case ASYNC_KEYWORD: + case CUSTOM_OPERATOR: + return true; + case BANG: + default: + return false; + } +} + +#define NON_CONSUMING_CROSS_SEMI_CHAR_COUNT 3 +const uint32_t NON_CONSUMING_CROSS_SEMI_CHARS[NON_CONSUMING_CROSS_SEMI_CHAR_COUNT] = { '?', ':', '{' }; + +/** + * All possible results of having performed some sort of parsing. + * + * A parser can return a result along two dimensions: + * 1. Should the scanner continue trying to find another result? + * 2. Was some result produced by this parsing attempt? + * + * These are flattened into a single enum together. When the function returns one of the `TOKEN_FOUND` cases, it + * will always populate its `symbol_result` field. When it returns one of the `STOP_PARSING` cases, callers should + * immediately return (with the value, if there is one). + */ +enum ParseDirective { + CONTINUE_PARSING_NOTHING_FOUND, + CONTINUE_PARSING_TOKEN_FOUND, + CONTINUE_PARSING_SLASH_CONSUMED, + STOP_PARSING_NOTHING_FOUND, + STOP_PARSING_TOKEN_FOUND, + STOP_PARSING_END_OF_FILE +}; + +struct ScannerState { + uint32_t ongoing_raw_str_hash_count; +}; + +void *tree_sitter_swift_external_scanner_create() { + return calloc(1, sizeof(struct ScannerState)); +} + +void tree_sitter_swift_external_scanner_destroy(void *payload) { + free(payload); +} + +void tree_sitter_swift_external_scanner_reset(void *payload) { + struct ScannerState *state = (struct ScannerState *)payload; + state->ongoing_raw_str_hash_count = 0; +} + +unsigned tree_sitter_swift_external_scanner_serialize(void *payload, char *buffer) { + struct ScannerState *state = (struct ScannerState *)payload; + uint32_t hash_count = state->ongoing_raw_str_hash_count; + buffer[0] = (hash_count >> 24) & 0xff; + buffer[1] = (hash_count >> 16) & 0xff; + buffer[2] = (hash_count >> 8) & 0xff; + buffer[3] = (hash_count) & 0xff; + return 4; +} + +void tree_sitter_swift_external_scanner_deserialize( + void *payload, + const char *buffer, + unsigned length +) { + if (length < 4) { + return; + } + + uint32_t hash_count = ( + (((uint32_t) buffer[0]) << 24) | + (((uint32_t) buffer[1]) << 16) | + (((uint32_t) buffer[2]) << 8) | + (((uint32_t) buffer[3])) + ); + struct ScannerState *state = (struct ScannerState *)payload; + state->ongoing_raw_str_hash_count = hash_count; +} + +static void advance(TSLexer *lexer) { + lexer->advance(lexer, false); +} + +static bool should_treat_as_wspace(int32_t character) { + return iswspace(character) || (((int32_t) ';') == character); +} + +static int32_t encountered_op_count(bool *encountered_operator) { + int32_t encountered = 0; + for (int op_idx = 0; op_idx < OPERATOR_COUNT; op_idx++) { + if (encountered_operator[op_idx]) { + encountered++; + } + } + + return encountered; +} + +static bool any_reserved_ops(uint8_t *encountered_reserved_ops) { + for (int op_idx = 0; op_idx < RESERVED_OP_COUNT; op_idx++) { + if (encountered_reserved_ops[op_idx] == 2) { + return true; + } + } + + return false; +} + +static bool is_legal_custom_operator( + int32_t char_idx, + int32_t first_char, + int32_t cur_char +) { + bool is_first_char = !char_idx; + switch (cur_char) { + case '=': + case '-': + case '+': + case '!': + case '%': + case '<': + case '>': + case '&': + case '|': + case '^': + case '?': + case '~': + return true; + case '.': + // Grammar allows `.` for any operator that starts with `.` + return is_first_char || first_char == '.'; + case '*': + case '/': + // Not listed in the grammar, but `/*` and `//` can't be the start of an operator since they start comments + return char_idx != 1 || first_char != '/'; + default: + if ( + (cur_char >= 0x00A1 && cur_char <= 0x00A7) || + (cur_char == 0x00A9) || + (cur_char == 0x00AB) || + (cur_char == 0x00AC) || + (cur_char == 0x00AE) || + (cur_char >= 0x00B0 && cur_char <= 0x00B1) || + (cur_char == 0x00B6) || + (cur_char == 0x00BB) || + (cur_char == 0x00BF) || + (cur_char == 0x00D7) || + (cur_char == 0x00F7) || + (cur_char >= 0x2016 && cur_char <= 0x2017) || + (cur_char >= 0x2020 && cur_char <= 0x2027) || + (cur_char >= 0x2030 && cur_char <= 0x203E) || + (cur_char >= 0x2041 && cur_char <= 0x2053) || + (cur_char >= 0x2055 && cur_char <= 0x205E) || + (cur_char >= 0x2190 && cur_char <= 0x23FF) || + (cur_char >= 0x2500 && cur_char <= 0x2775) || + (cur_char >= 0x2794 && cur_char <= 0x2BFF) || + (cur_char >= 0x2E00 && cur_char <= 0x2E7F) || + (cur_char >= 0x3001 && cur_char <= 0x3003) || + (cur_char >= 0x3008 && cur_char <= 0x3020) || + (cur_char == 0x3030) + ) { + return true; + } else if ( + (cur_char >= 0x0300 && cur_char <= 0x036f) || + (cur_char >= 0x1DC0 && cur_char <= 0x1DFF) || + (cur_char >= 0x20D0 && cur_char <= 0x20FF) || + (cur_char >= 0xFE00 && cur_char <= 0xFE0F) || + (cur_char >= 0xFE20 && cur_char <= 0xFE2F) || + (cur_char >= 0xE0100 && cur_char <= 0xE01EF) + ) { + return !is_first_char; + } else { + return false; + } + } +} + +static bool eat_operators( + TSLexer *lexer, + const bool *valid_symbols, + bool mark_end, + const int32_t prior_char, + enum TokenType *symbol_result +) { + bool possible_operators[OPERATOR_COUNT]; + uint8_t reserved_operators[RESERVED_OP_COUNT]; + for (int op_idx = 0; op_idx < OPERATOR_COUNT; op_idx++) { + possible_operators[op_idx] = valid_symbols[OP_SYMBOLS[op_idx]] && (!prior_char || OPERATORS[op_idx][0] == prior_char); + } + for (int op_idx = 0; op_idx < RESERVED_OP_COUNT; op_idx++) { + reserved_operators[op_idx] = !prior_char || RESERVED_OPS[op_idx][0] == prior_char; + } + + bool possible_custom_operator = valid_symbols[CUSTOM_OPERATOR]; + int32_t first_char = prior_char ? prior_char : lexer->lookahead; + int32_t last_examined_char = first_char; + + int32_t str_idx = prior_char ? 1 : 0; + int32_t full_match = -1; + while(true) { + for (int op_idx = 0; op_idx < OPERATOR_COUNT; op_idx++) { + if (!possible_operators[op_idx]) { + continue; + } + + if (OPERATORS[op_idx][str_idx] == '\0') { + // Make sure that the operator is allowed to have the next character as its lookahead. + enum IllegalTerminatorGroup illegal_terminators = OP_ILLEGAL_TERMINATORS[op_idx]; + switch (lexer->lookahead) { + // See "Operators": + // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418 + case '/': + case '=': + case '-': + case '+': + case '!': + case '*': + case '%': + case '<': + case '>': + case '&': + case '|': + case '^': + case '?': + case '~': + if (illegal_terminators == OPERATOR_SYMBOLS) { + break; + } // Otherwise, intentionally fall through to the OPERATOR_OR_DOT case + // fall through + case '.': + if (illegal_terminators == OPERATOR_OR_DOT) { + break; + } // Otherwise, fall through to DEFAULT which checks its groups directly + // fall through + default: + if (iswalnum(lexer->lookahead) && illegal_terminators == ALPHANUMERIC) { + break; + } + + if (!iswspace(lexer->lookahead) && illegal_terminators == NON_WHITESPACE) { + break; + } + + full_match = op_idx; + if (mark_end) { + lexer->mark_end(lexer); + } + } + + possible_operators[op_idx] = false; + continue; + } + + if (OPERATORS[op_idx][str_idx] != lexer->lookahead) { + possible_operators[op_idx] = false; + continue; + } + } + + for (int op_idx = 0; op_idx < RESERVED_OP_COUNT; op_idx++) { + if (!reserved_operators[op_idx]) { + continue; + } + + if (RESERVED_OPS[op_idx][str_idx] == '\0') { + reserved_operators[op_idx] = 0; + continue; + } + + if (RESERVED_OPS[op_idx][str_idx] != lexer->lookahead) { + reserved_operators[op_idx] = 0; + continue; + } + + if (RESERVED_OPS[op_idx][str_idx + 1] == '\0') { + reserved_operators[op_idx] = 2; + continue; + } + } + + possible_custom_operator = possible_custom_operator && is_legal_custom_operator( + str_idx, + first_char, + lexer->lookahead + ); + + uint32_t encountered_ops = encountered_op_count(possible_operators); + if (encountered_ops == 0) { + if (!possible_custom_operator) { + break; + } else if (mark_end && full_match == -1) { + lexer->mark_end(lexer); + } + } + + last_examined_char = lexer->lookahead; + lexer->advance(lexer, false); + str_idx += 1; + + if (encountered_ops == 0 && !is_legal_custom_operator( + str_idx, + first_char, + lexer->lookahead + )) { + break; + } + } + + if (full_match != -1) { + // We have a match -- first see if that match has a symbol that suppresses it. For example, in `try!`, we do not + // want to emit the `!` as a symbol in our scanner, because we want the parser to have the chance to parse it as + // an immediate token. + uint64_t suppressing_symbols = OP_SYMBOL_SUPPRESSOR[full_match]; + if (suppressing_symbols) { + for (uint64_t suppressor = 0; suppressor < TOKEN_COUNT; suppressor++) { + if (!(suppressing_symbols & 1ULL << suppressor)) { + continue; + } + + // The suppressing symbol is valid in this position, so skip it. + if (valid_symbols[suppressor]) { + return false; + } + } + } + *symbol_result = OP_SYMBOLS[full_match]; + return true; + } + + if (possible_custom_operator && !any_reserved_ops(reserved_operators)) { + if ((last_examined_char != '<' || iswspace(lexer->lookahead)) && mark_end) { + lexer->mark_end(lexer); + } + *symbol_result = CUSTOM_OPERATOR; + return true; + } + + return false; +} + +static enum ParseDirective eat_comment( + TSLexer *lexer, + const bool *valid_symbols, + bool mark_end, + enum TokenType *symbol_result +) { + if (lexer->lookahead != '/') { + return CONTINUE_PARSING_NOTHING_FOUND; + } + + advance(lexer); + + if (lexer->lookahead != '*') { + return CONTINUE_PARSING_SLASH_CONSUMED; + } + + advance(lexer); + + bool after_star = false; + unsigned nesting_depth = 1; + for (;;) { + switch (lexer->lookahead) { + case '\0': + return STOP_PARSING_END_OF_FILE; + case '*': + advance(lexer); + after_star = true; + break; + case '/': + if (after_star) { + advance(lexer); + after_star = false; + nesting_depth--; + if (nesting_depth == 0) { + if (mark_end) { + lexer->mark_end(lexer); + } + *symbol_result = BLOCK_COMMENT; + return STOP_PARSING_TOKEN_FOUND; + } + } else { + advance(lexer); + after_star = false; + if (lexer->lookahead == '*') { + nesting_depth++; + advance(lexer); + } + } + break; + default: + advance(lexer); + after_star = false; + break; + } + } +} + +static enum ParseDirective eat_whitespace( + TSLexer *lexer, + const bool *valid_symbols, + enum TokenType *symbol_result +) { + enum ParseDirective ws_directive = CONTINUE_PARSING_NOTHING_FOUND; + bool semi_is_valid = valid_symbols[IMPLICIT_SEMI] && valid_symbols[EXPLICIT_SEMI]; + uint32_t lookahead; + while (should_treat_as_wspace(lookahead = lexer->lookahead)) { + if (lookahead == ';') { + if (semi_is_valid) { + ws_directive = STOP_PARSING_TOKEN_FOUND; + lexer->advance(lexer, false); + } + + break; + } + + lexer->advance(lexer, true); + + lexer->mark_end(lexer); + + if (ws_directive == CONTINUE_PARSING_NOTHING_FOUND && (lookahead == '\n' || lookahead == '\r')) { + ws_directive = CONTINUE_PARSING_TOKEN_FOUND; + } + } + + enum ParseDirective any_comment = CONTINUE_PARSING_NOTHING_FOUND; + if (ws_directive == CONTINUE_PARSING_TOKEN_FOUND && lookahead == '/') { + bool has_seen_single_comment = false; + while (lexer->lookahead == '/') { + // It's possible that this is a comment - start an exploratory mission to find out, and if it is, look for what + // comes after it. We care about what comes after it for the purpose of suppressing the newline. + + enum TokenType multiline_comment_result; + any_comment = eat_comment(lexer, valid_symbols, /* mark_end */ false, &multiline_comment_result); + if (any_comment == STOP_PARSING_TOKEN_FOUND) { + // This is a multiline comment. This scanner should be parsing those, so we might want to bail out and + // emit it instead. However, we only want to do that if we haven't advanced through a _single_ line + // comment on the way - otherwise that will get lumped into this. + if (!has_seen_single_comment) { + lexer->mark_end(lexer); + *symbol_result = multiline_comment_result; + return STOP_PARSING_TOKEN_FOUND; + } + } else if (any_comment == STOP_PARSING_END_OF_FILE) { + return STOP_PARSING_END_OF_FILE; + } else if (any_comment == CONTINUE_PARSING_SLASH_CONSUMED) { + // We accidentally ate a slash -- we should actually bail out, say we saw nothing, and let the next pass + // take it from after the newline. + return CONTINUE_PARSING_SLASH_CONSUMED; + } else if (lexer->lookahead == '/') { + // There wasn't a multiline comment, which we know means that the comment parser ate its `/` and then + // bailed out. If it had seen anything comment-like after that first `/` it would have continued going + // and eventually had a well-formed comment or an EOF. Thus, if we're currently looking at a `/`, it's + // the second one of those and it means we have a single-line comment. + has_seen_single_comment = true; + while (lexer->lookahead != '\n' && lexer->lookahead != '\0') { + lexer->advance(lexer, true); + } + } else if (iswspace(lexer->lookahead)) { + // We didn't see any type of comment - in fact, we saw an operator that we don't normally treat as an + // operator. Still, this is a reason to stop parsing. + return STOP_PARSING_NOTHING_FOUND; + } + + // If we skipped through some comment, we're at whitespace now, so advance. + while(iswspace(lexer->lookahead)) { + any_comment = CONTINUE_PARSING_NOTHING_FOUND; // We're advancing, so clear out the comment + lexer->advance(lexer, true); + } + } + + enum TokenType operator_result; + bool saw_operator = eat_operators( + lexer, + valid_symbols, + /* mark_end */ false, + '\0', + &operator_result + ); + if (saw_operator) { + // The operator we saw should suppress the newline, so bail out. + return STOP_PARSING_NOTHING_FOUND; + } else { + // Promote the implicit newline to an explicit one so we don't check for operators again. + *symbol_result = IMPLICIT_SEMI; + ws_directive = STOP_PARSING_TOKEN_FOUND; + } + } + + // Let's consume operators that can live after a "semicolon" style newline. Before we do that, though, we want to + // check for a set of characters that we do not consume, but that still suppress the semi. + if (ws_directive == CONTINUE_PARSING_TOKEN_FOUND) { + for (int i = 0; i < NON_CONSUMING_CROSS_SEMI_CHAR_COUNT; i++) { + if (NON_CONSUMING_CROSS_SEMI_CHARS[i] == lookahead) { + return CONTINUE_PARSING_NOTHING_FOUND; + } + } + } + + if (semi_is_valid && ws_directive != CONTINUE_PARSING_NOTHING_FOUND) { + *symbol_result = lookahead == ';' ? EXPLICIT_SEMI : IMPLICIT_SEMI; + return ws_directive; + } + + return CONTINUE_PARSING_NOTHING_FOUND; +} + +#define DIRECTIVE_COUNT 4 +const char* DIRECTIVES[OPERATOR_COUNT] = { + "if", + "elseif", + "else", + "endif" +}; + +const enum TokenType DIRECTIVE_SYMBOLS[DIRECTIVE_COUNT] = { + DIRECTIVE_IF, + DIRECTIVE_ELSEIF, + DIRECTIVE_ELSE, + DIRECTIVE_ENDIF +}; + +static enum TokenType find_possible_compiler_directive(TSLexer *lexer) { + bool possible_directives[DIRECTIVE_COUNT]; + for (int dir_idx = 0; dir_idx < DIRECTIVE_COUNT; dir_idx++) { + possible_directives[dir_idx] = true; + } + + int32_t str_idx = 0; + int32_t full_match = -1; + while(true) { + for (int dir_idx = 0; dir_idx < DIRECTIVE_COUNT; dir_idx++) { + if (!possible_directives[dir_idx]) { + continue; + } + + uint8_t expected_char = DIRECTIVES[dir_idx][str_idx]; + if (expected_char == '\0') { + full_match = dir_idx; + lexer->mark_end(lexer); + } + + if (expected_char != lexer->lookahead) { + possible_directives[dir_idx] = false; + continue; + } + } + + uint8_t match_count = 0; + for (int dir_idx = 0; dir_idx < DIRECTIVE_COUNT; dir_idx += 1) { + if (possible_directives[dir_idx]) { + match_count += 1; + } + } + + if (match_count == 0) { + break; + } + + lexer->advance(lexer, false); + str_idx += 1; + } + + if (full_match == -1) { + // No compiler directive found, so just match the starting symbol + return HASH_SYMBOL; + } + + return DIRECTIVE_SYMBOLS[full_match]; +} + +static bool eat_raw_str_part( + struct ScannerState *state, + TSLexer *lexer, + const bool *valid_symbols, + enum TokenType *symbol_result +) { + uint32_t hash_count = state->ongoing_raw_str_hash_count; + if (!valid_symbols[RAW_STR_PART]) { + return false; + } else if (hash_count == 0) { + // If this is a raw_str_part, it's the first one - look for hashes + while (lexer->lookahead == '#') { + hash_count += 1; + advance(lexer); + } + + if (hash_count == 0) { + return false; + } + + if (lexer->lookahead == '"') { + advance(lexer); + } else if (hash_count == 1) { + lexer->mark_end(lexer); + *symbol_result = find_possible_compiler_directive(lexer); + return true; + } else { + return false; + } + + } else if (valid_symbols[RAW_STR_CONTINUING_INDICATOR]) { + // This is the end of an interpolation - now it's another raw_str_part. This is a synthetic + // marker to tell us that the grammar just consumed a `(` symbol to close a raw + // interpolation (since we don't want to fire on every `(` in existence). We don't have + // anything to do except continue. + } else { + return false; + } + + // We're in a state where anything other than `hash_count` hash symbols in a row should be eaten + // and is part of a string. + // The last character _before_ the hashes will tell us what happens next. + // Matters are also complicated by the fact that we don't want to consume every character we + // visit; if we see a `\#(`, for instance, with the appropriate number of hash symbols, we want + // to end our parsing _before_ that sequence. This allows highlighting tools to treat that as a + // separate token. + while (lexer->lookahead != '\0') { + uint8_t last_char = '\0'; + lexer->mark_end(lexer); // We always want to parse thru the start of the string so far + // Advance through anything that isn't a hash symbol, because we want to count those. + while (lexer->lookahead != '#' && lexer->lookahead != '\0') { + last_char = lexer->lookahead; + advance(lexer); + if (last_char != '\\' || lexer->lookahead == '\\') { + // Mark a new end, but only if we didn't just advance past a `\` symbol, since we + // don't want to consume that. Exception: if this is a `\` that happens _right + // after_ another `\`, we for some reason _do_ want to consume that, because + // apparently that is parsed as a literal `\` followed by something escaped. + lexer->mark_end(lexer); + } + } + + // We hit at least one hash - count them and see if they match. + uint32_t current_hash_count = 0; + while (lexer->lookahead == '#' && current_hash_count < hash_count) { + current_hash_count += 1; + advance(lexer); + } + + // If we saw exactly the right number of hashes, one of three things is true: + // 1. We're trying to interpolate into this string. + // 2. The string just ended. + // 3. This was just some hash characters doing nothing important. + if (current_hash_count == hash_count) { + if (last_char == '\\' && lexer->lookahead == '(') { + // Interpolation case! Don't consume those chars; they get saved for grammar.js. + *symbol_result = RAW_STR_PART; + state->ongoing_raw_str_hash_count = hash_count; + return true; + } else if (last_char == '"') { + // The string is finished! Mark the end here, on the very last hash symbol. + lexer->mark_end(lexer); + *symbol_result = RAW_STR_END_PART; + state->ongoing_raw_str_hash_count = 0; + return true; + } + // Nothing special happened - let the string continue. + } + } + + return false; +} + +bool tree_sitter_swift_external_scanner_scan( + void *payload, + TSLexer *lexer, + const bool *valid_symbols +) { + // Figure out our scanner state + struct ScannerState *state = (struct ScannerState *)payload; + + // Consume any whitespace at the start. + enum TokenType ws_result; + enum ParseDirective ws_directive = eat_whitespace(lexer, valid_symbols, &ws_result); + if (ws_directive == STOP_PARSING_TOKEN_FOUND) { + lexer->result_symbol = ws_result; + return true; + } + + if (ws_directive == STOP_PARSING_NOTHING_FOUND || ws_directive == STOP_PARSING_END_OF_FILE) { + return false; + } + + bool has_ws_result = (ws_directive == CONTINUE_PARSING_TOKEN_FOUND); + + // Now consume comments (before custom operators so that those aren't treated as comments) + enum TokenType comment_result; + enum ParseDirective comment = ws_directive == CONTINUE_PARSING_SLASH_CONSUMED ? ws_directive : eat_comment(lexer, valid_symbols, /* mark_end */ true, &comment_result); + if (comment == STOP_PARSING_TOKEN_FOUND) { + lexer->mark_end(lexer); + lexer->result_symbol = comment_result; + return true; + } + + if (comment == STOP_PARSING_END_OF_FILE) { + return false; + } + // Now consume any operators that might cause our whitespace to be suppressed. + enum TokenType operator_result; + bool saw_operator = eat_operators( + lexer, + valid_symbols, + /* mark_end */ !has_ws_result, + comment == CONTINUE_PARSING_SLASH_CONSUMED ? '/' : '\0', + &operator_result + ); + + if (saw_operator && (!has_ws_result || is_cross_semi_token(operator_result))) { + lexer->result_symbol = operator_result; + if (has_ws_result) lexer->mark_end(lexer); + return true; + } + + if (has_ws_result) { + // Don't `mark_end`, since we may have advanced through some operators. + lexer->result_symbol = ws_result; + return true; + } + + // NOTE: this will consume any `#` characters it sees, even if it does not find a result. Keep + // it at the end so that it doesn't interfere with special literals or selectors! + enum TokenType raw_str_result; + bool saw_raw_str_part = eat_raw_str_part(state, lexer, valid_symbols, &raw_str_result); + if (saw_raw_str_part) { + lexer->result_symbol = raw_str_result; + return true; + } + + return false; +} + diff --git a/unified/extractor/tree-sitter-swift/tree-sitter.json b/unified/extractor/tree-sitter-swift/tree-sitter.json new file mode 100644 index 00000000000..3cd49a28a38 --- /dev/null +++ b/unified/extractor/tree-sitter-swift/tree-sitter.json @@ -0,0 +1,39 @@ +{ + "grammars": [ + { + "name": "swift", + "camelcase": "Swift", + "scope": "source.swift", + "path": ".", + "file-types": [ + "swift" + ], + "highlights": "queries/highlights.scm", + "injections": "queries/injections.scm", + "locals": "queries/locals.scm", + "injection-regex": "swift" + } + ], + "metadata": { + "version": "0.7.2", + "license": "MIT", + "description": "A tree-sitter grammar for the Swift programming language.", + "authors": [ + { + "name": "Alex Pinkus", + "email": "alex.pinkus@gmail.com" + } + ], + "links": { + "repository": "git+https://github.com/alex-pinkus/tree-sitter-swift.git" + } + }, + "bindings": { + "c": true, + "go": true, + "node": true, + "python": true, + "rust": true, + "swift": true + } +} diff --git a/unified/ql/lib/codeql/unified/Ast.qll b/unified/ql/lib/codeql/unified/Ast.qll index 54c1caceaf4..5b9491fdb9f 100644 --- a/unified/ql/lib/codeql/unified/Ast.qll +++ b/unified/ql/lib/codeql/unified/Ast.qll @@ -87,23 +87,17 @@ module Swift { ) } - /** A class representing `_expression` tokens. */ - class UnderscoreExpression extends @swift_token__expression, Token { - /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "UnderscoreExpression" } - } - /** A class representing `additive_expression` nodes. */ class AdditiveExpression extends @swift_additive_expression, AstNode { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AdditiveExpression" } /** Gets the node corresponding to the field `lhs`. */ - final AstNode getLhs(int i) { swift_additive_expression_lhs(this, i, result) } + final Expression getLhs() { swift_additive_expression_def(this, result, _, _) } /** Gets the node corresponding to the field `op`. */ final string getOp() { - exists(int value | swift_additive_expression_def(this, value) | + exists(int value | swift_additive_expression_def(this, _, value, _) | result = "+" and value = 0 or result = "-" and value = 1 @@ -111,12 +105,12 @@ module Swift { } /** Gets the node corresponding to the field `rhs`. */ - final AstNode getRhs(int i) { swift_additive_expression_rhs(this, i, result) } + final Expression getRhs() { swift_additive_expression_def(this, _, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_additive_expression_lhs(this, _, result) or - swift_additive_expression_rhs(this, _, result) + swift_additive_expression_def(this, result, _, _) or + swift_additive_expression_def(this, _, _, result) } } @@ -126,7 +120,7 @@ module Swift { final override string getAPrimaryQlClass() { result = "ArrayLiteral" } /** Gets the node corresponding to the field `element`. */ - final AstNode getElement(int i) { swift_array_literal_element(this, i, result) } + final Expression getElement(int i) { swift_array_literal_element(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { swift_array_literal_element(this, _, result) } @@ -138,15 +132,10 @@ module Swift { final override string getAPrimaryQlClass() { result = "ArrayType" } /** Gets the node corresponding to the field `element`. */ - final AstNode getElement(int i) { swift_array_type_element(this, i, result) } - - /** Gets the node corresponding to the field `name`. */ - final AstNode getName() { swift_array_type_def(this, result) } + final Type getElement() { swift_array_type_def(this, result) } /** Gets a field or child node of this node. */ - final override AstNode getAFieldOrChild() { - swift_array_type_element(this, _, result) or swift_array_type_def(this, result) - } + final override AstNode getAFieldOrChild() { swift_array_type_def(this, result) } } /** A class representing `as_expression` nodes. */ @@ -155,23 +144,19 @@ module Swift { final override string getAPrimaryQlClass() { result = "AsExpression" } /** Gets the node corresponding to the field `expr`. */ - final AstNode getExpr(int i) { swift_as_expression_expr(this, i, result) } - - /** Gets the node corresponding to the field `name`. */ - final AstNode getName() { swift_as_expression_def(this, result, _) } + final Expression getExpr() { swift_as_expression_def(this, result, _, _) } /** Gets the node corresponding to the field `type`. */ - final AstNode getType(int i) { swift_as_expression_type(this, i, result) } + final Type getType() { swift_as_expression_def(this, _, result, _) } /** Gets the child of this node. */ - final AsOperator getChild() { swift_as_expression_def(this, _, result) } + final AsOperator getChild() { swift_as_expression_def(this, _, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_as_expression_expr(this, _, result) or - swift_as_expression_def(this, result, _) or - swift_as_expression_type(this, _, result) or - swift_as_expression_def(this, _, result) + swift_as_expression_def(this, result, _, _) or + swift_as_expression_def(this, _, result, _) or + swift_as_expression_def(this, _, _, result) } } @@ -188,7 +173,7 @@ module Swift { /** Gets the node corresponding to the field `operator`. */ final string getOperator() { - exists(int value | swift_assignment_def(this, value, _) | + exists(int value | swift_assignment_def(this, value, _, _) | result = "%=" and value = 0 or result = "*=" and value = 1 @@ -204,14 +189,14 @@ module Swift { } /** Gets the node corresponding to the field `result`. */ - final AstNode getResult(int i) { swift_assignment_result(this, i, result) } + final Expression getResult() { swift_assignment_def(this, _, result, _) } /** Gets the node corresponding to the field `target`. */ - final DirectlyAssignableExpression getTarget() { swift_assignment_def(this, _, result) } + final DirectlyAssignableExpression getTarget() { swift_assignment_def(this, _, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_assignment_result(this, _, result) or swift_assignment_def(this, _, result) + swift_assignment_def(this, _, result, _) or swift_assignment_def(this, _, _, result) } } @@ -221,26 +206,22 @@ module Swift { final override string getAPrimaryQlClass() { result = "AssociatedtypeDeclaration" } /** Gets the node corresponding to the field `default_value`. */ - final AstNode getDefaultValue(int i) { - swift_associatedtype_declaration_default_value(this, i, result) - } + final Type getDefaultValue() { swift_associatedtype_declaration_default_value(this, result) } /** Gets the node corresponding to the field `must_inherit`. */ - final AstNode getMustInherit(int i) { - swift_associatedtype_declaration_must_inherit(this, i, result) - } + final Type getMustInherit() { swift_associatedtype_declaration_must_inherit(this, result) } /** Gets the node corresponding to the field `name`. */ - final AstNode getName(int i) { swift_associatedtype_declaration_name(this, i, result) } + final TypeIdentifier getName() { swift_associatedtype_declaration_def(this, result) } /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_associatedtype_declaration_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_associatedtype_declaration_default_value(this, _, result) or - swift_associatedtype_declaration_must_inherit(this, _, result) or - swift_associatedtype_declaration_name(this, _, result) or + swift_associatedtype_declaration_default_value(this, result) or + swift_associatedtype_declaration_must_inherit(this, result) or + swift_associatedtype_declaration_def(this, result) or swift_associatedtype_declaration_child(this, _, result) } } @@ -277,14 +258,14 @@ module Swift { final override string getAPrimaryQlClass() { result = "AwaitExpression" } /** Gets the node corresponding to the field `expr`. */ - final AstNode getExpr(int i) { swift_await_expression_expr(this, i, result) } + final Expression getExpr() { swift_await_expression_expr(this, result) } /** Gets the child of this node. */ - final AstNode getChild() { swift_await_expression_child(this, result) } + final Expression getChild() { swift_await_expression_child(this, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_await_expression_expr(this, _, result) or swift_await_expression_child(this, result) + swift_await_expression_expr(this, result) or swift_await_expression_child(this, result) } } @@ -306,11 +287,11 @@ module Swift { final override string getAPrimaryQlClass() { result = "BitwiseOperation" } /** Gets the node corresponding to the field `lhs`. */ - final AstNode getLhs(int i) { swift_bitwise_operation_lhs(this, i, result) } + final Expression getLhs() { swift_bitwise_operation_def(this, result, _, _) } /** Gets the node corresponding to the field `op`. */ final string getOp() { - exists(int value | swift_bitwise_operation_def(this, value) | + exists(int value | swift_bitwise_operation_def(this, _, value, _) | result = "&" and value = 0 or result = "<<" and value = 1 @@ -324,11 +305,12 @@ module Swift { } /** Gets the node corresponding to the field `rhs`. */ - final AstNode getRhs(int i) { swift_bitwise_operation_rhs(this, i, result) } + final Expression getRhs() { swift_bitwise_operation_def(this, _, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_bitwise_operation_lhs(this, _, result) or swift_bitwise_operation_rhs(this, _, result) + swift_bitwise_operation_def(this, result, _, _) or + swift_bitwise_operation_def(this, _, _, result) } } @@ -388,7 +370,7 @@ module Swift { final AstNode getName() { swift_capture_list_item_def(this, result) } /** Gets the node corresponding to the field `value`. */ - final AstNode getValue(int i) { swift_capture_list_item_value(this, i, result) } + final Expression getValue() { swift_capture_list_item_value(this, result) } /** Gets the child of this node. */ final OwnershipModifier getChild() { swift_capture_list_item_child(this, result) } @@ -396,7 +378,7 @@ module Swift { /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { swift_capture_list_item_def(this, result) or - swift_capture_list_item_value(this, _, result) or + swift_capture_list_item_value(this, result) or swift_capture_list_item_child(this, result) } } @@ -429,25 +411,23 @@ module Swift { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CheckExpression" } - /** Gets the node corresponding to the field `name`. */ - final AstNode getName() { swift_check_expression_def(this, result, _) } - /** Gets the node corresponding to the field `op`. */ final string getOp() { - exists(int value | swift_check_expression_def(this, _, value) | (result = "is" and value = 0)) + exists(int value | swift_check_expression_def(this, value, _, _) | + (result = "is" and value = 0) + ) } /** Gets the node corresponding to the field `target`. */ - final AstNode getTarget(int i) { swift_check_expression_target(this, i, result) } + final Expression getTarget() { swift_check_expression_def(this, _, result, _) } /** Gets the node corresponding to the field `type`. */ - final AstNode getType(int i) { swift_check_expression_type(this, i, result) } + final Type getType() { swift_check_expression_def(this, _, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_check_expression_def(this, result, _) or - swift_check_expression_target(this, _, result) or - swift_check_expression_type(this, _, result) + swift_check_expression_def(this, _, result, _) or + swift_check_expression_def(this, _, _, result) } } @@ -512,11 +492,11 @@ module Swift { final override string getAPrimaryQlClass() { result = "ComparisonExpression" } /** Gets the node corresponding to the field `lhs`. */ - final AstNode getLhs(int i) { swift_comparison_expression_lhs(this, i, result) } + final Expression getLhs() { swift_comparison_expression_def(this, result, _, _) } /** Gets the node corresponding to the field `op`. */ final string getOp() { - exists(int value | swift_comparison_expression_def(this, value) | + exists(int value | swift_comparison_expression_def(this, _, value, _) | result = "<" and value = 0 or result = "<=" and value = 1 @@ -528,12 +508,12 @@ module Swift { } /** Gets the node corresponding to the field `rhs`. */ - final AstNode getRhs(int i) { swift_comparison_expression_rhs(this, i, result) } + final Expression getRhs() { swift_comparison_expression_def(this, _, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_comparison_expression_lhs(this, _, result) or - swift_comparison_expression_rhs(this, _, result) + swift_comparison_expression_def(this, result, _, _) or + swift_comparison_expression_def(this, _, _, result) } } @@ -591,22 +571,22 @@ module Swift { final override string getAPrimaryQlClass() { result = "ConjunctionExpression" } /** Gets the node corresponding to the field `lhs`. */ - final AstNode getLhs(int i) { swift_conjunction_expression_lhs(this, i, result) } + final Expression getLhs() { swift_conjunction_expression_def(this, result, _, _) } /** Gets the node corresponding to the field `op`. */ final string getOp() { - exists(int value | swift_conjunction_expression_def(this, value) | + exists(int value | swift_conjunction_expression_def(this, _, value, _) | (result = "&&" and value = 0) ) } /** Gets the node corresponding to the field `rhs`. */ - final AstNode getRhs(int i) { swift_conjunction_expression_rhs(this, i, result) } + final Expression getRhs() { swift_conjunction_expression_def(this, _, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_conjunction_expression_lhs(this, _, result) or - swift_conjunction_expression_rhs(this, _, result) + swift_conjunction_expression_def(this, result, _, _) or + swift_conjunction_expression_def(this, _, _, result) } } @@ -652,14 +632,14 @@ module Swift { final override string getAPrimaryQlClass() { result = "ControlTransferStatement" } /** Gets the node corresponding to the field `result`. */ - final AstNode getResult(int i) { swift_control_transfer_statement_result(this, i, result) } + final Expression getResult() { swift_control_transfer_statement_result(this, result) } /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_control_transfer_statement_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_control_transfer_statement_result(this, _, result) or + swift_control_transfer_statement_result(this, result) or swift_control_transfer_statement_child(this, _, result) } } @@ -723,10 +703,10 @@ module Swift { final override string getAPrimaryQlClass() { result = "DictionaryLiteral" } /** Gets the node corresponding to the field `key`. */ - final AstNode getKey(int i) { swift_dictionary_literal_key(this, i, result) } + final Expression getKey(int i) { swift_dictionary_literal_key(this, i, result) } /** Gets the node corresponding to the field `value`. */ - final AstNode getValue(int i) { swift_dictionary_literal_value(this, i, result) } + final Expression getValue(int i) { swift_dictionary_literal_value(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { @@ -741,19 +721,14 @@ module Swift { final override string getAPrimaryQlClass() { result = "DictionaryType" } /** Gets the node corresponding to the field `key`. */ - final AstNode getKey(int i) { swift_dictionary_type_key(this, i, result) } - - /** Gets the node corresponding to the field `name`. */ - final AstNode getName(int i) { swift_dictionary_type_name(this, i, result) } + final Type getKey() { swift_dictionary_type_def(this, result, _) } /** Gets the node corresponding to the field `value`. */ - final AstNode getValue(int i) { swift_dictionary_type_value(this, i, result) } + final Type getValue() { swift_dictionary_type_def(this, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_dictionary_type_key(this, _, result) or - swift_dictionary_type_name(this, _, result) or - swift_dictionary_type_value(this, _, result) + swift_dictionary_type_def(this, result, _) or swift_dictionary_type_def(this, _, result) } } @@ -787,11 +762,11 @@ module Swift { final override string getAPrimaryQlClass() { result = "DirectlyAssignableExpression" } /** Gets the child of this node. */ - final AstNode getChild() { swift_directly_assignable_expression_child(this, result) } + final Expression getChild() { swift_directly_assignable_expression_def(this, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_directly_assignable_expression_child(this, result) + swift_directly_assignable_expression_def(this, result) } } @@ -801,22 +776,22 @@ module Swift { final override string getAPrimaryQlClass() { result = "DisjunctionExpression" } /** Gets the node corresponding to the field `lhs`. */ - final AstNode getLhs(int i) { swift_disjunction_expression_lhs(this, i, result) } + final Expression getLhs() { swift_disjunction_expression_def(this, result, _, _) } /** Gets the node corresponding to the field `op`. */ final string getOp() { - exists(int value | swift_disjunction_expression_def(this, value) | + exists(int value | swift_disjunction_expression_def(this, _, value, _) | (result = "||" and value = 0) ) } /** Gets the node corresponding to the field `rhs`. */ - final AstNode getRhs(int i) { swift_disjunction_expression_rhs(this, i, result) } + final Expression getRhs() { swift_disjunction_expression_def(this, _, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_disjunction_expression_lhs(this, _, result) or - swift_disjunction_expression_rhs(this, _, result) + swift_disjunction_expression_def(this, result, _, _) or + swift_disjunction_expression_def(this, _, _, result) } } @@ -864,7 +839,7 @@ module Swift { final SimpleIdentifier getName(int i) { swift_enum_entry_name(this, i, result) } /** Gets the node corresponding to the field `raw_value`. */ - final AstNode getRawValue(int i) { swift_enum_entry_raw_value(this, i, result) } + final Expression getRawValue(int i) { swift_enum_entry_raw_value(this, i, result) } /** Gets the child of this node. */ final Modifiers getChild() { swift_enum_entry_child(this, result) } @@ -883,17 +858,11 @@ module Swift { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "EnumTypeParameters" } - /** Gets the node corresponding to the field `name`. */ - final AstNode getName(int i) { swift_enum_type_parameters_name(this, i, result) } - /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_enum_type_parameters_child(this, i, result) } /** Gets a field or child node of this node. */ - final override AstNode getAFieldOrChild() { - swift_enum_type_parameters_name(this, _, result) or - swift_enum_type_parameters_child(this, _, result) - } + final override AstNode getAFieldOrChild() { swift_enum_type_parameters_child(this, _, result) } } /** A class representing `equality_constraint` nodes. */ @@ -902,24 +871,18 @@ module Swift { final override string getAPrimaryQlClass() { result = "EqualityConstraint" } /** Gets the node corresponding to the field `constrained_type`. */ - final AstNode getConstrainedType(int i) { - swift_equality_constraint_constrained_type(this, i, result) - } + final AstNode getConstrainedType() { swift_equality_constraint_def(this, result, _) } /** Gets the node corresponding to the field `must_equal`. */ - final AstNode getMustEqual(int i) { swift_equality_constraint_must_equal(this, i, result) } - - /** Gets the node corresponding to the field `name`. */ - final AstNode getName() { swift_equality_constraint_def(this, result) } + final Type getMustEqual() { swift_equality_constraint_def(this, _, result) } /** Gets the `i`th child of this node. */ final Attribute getChild(int i) { swift_equality_constraint_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_equality_constraint_constrained_type(this, _, result) or - swift_equality_constraint_must_equal(this, _, result) or - swift_equality_constraint_def(this, result) or + swift_equality_constraint_def(this, result, _) or + swift_equality_constraint_def(this, _, result) or swift_equality_constraint_child(this, _, result) } } @@ -930,11 +893,11 @@ module Swift { final override string getAPrimaryQlClass() { result = "EqualityExpression" } /** Gets the node corresponding to the field `lhs`. */ - final AstNode getLhs(int i) { swift_equality_expression_lhs(this, i, result) } + final Expression getLhs() { swift_equality_expression_def(this, result, _, _) } /** Gets the node corresponding to the field `op`. */ final string getOp() { - exists(int value | swift_equality_expression_def(this, value) | + exists(int value | swift_equality_expression_def(this, _, value, _) | result = "!=" and value = 0 or result = "!==" and value = 1 @@ -946,12 +909,12 @@ module Swift { } /** Gets the node corresponding to the field `rhs`. */ - final AstNode getRhs(int i) { swift_equality_expression_rhs(this, i, result) } + final Expression getRhs() { swift_equality_expression_def(this, _, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_equality_expression_lhs(this, _, result) or - swift_equality_expression_rhs(this, _, result) + swift_equality_expression_def(this, result, _, _) or + swift_equality_expression_def(this, _, _, result) } } @@ -961,12 +924,14 @@ module Swift { final override string getAPrimaryQlClass() { result = "ExistentialType" } /** Gets the child of this node. */ - final AstNode getChild() { swift_existential_type_def(this, result) } + final UnannotatedType getChild() { swift_existential_type_def(this, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { swift_existential_type_def(this, result) } } + class Expression extends @swift_expression, AstNode { } + /** A class representing `external_macro_definition` nodes. */ class ExternalMacroDefinition extends @swift_external_macro_definition, AstNode { /** Gets the name of the primary QL class for this element. */ @@ -985,18 +950,18 @@ module Swift { final override string getAPrimaryQlClass() { result = "ForStatement" } /** Gets the node corresponding to the field `collection`. */ - final AstNode getCollection(int i) { swift_for_statement_collection(this, i, result) } + final Expression getCollection() { swift_for_statement_def(this, result, _) } /** Gets the node corresponding to the field `item`. */ - final Pattern getItem() { swift_for_statement_def(this, result) } + final Pattern getItem() { swift_for_statement_def(this, _, result) } /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_for_statement_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_for_statement_collection(this, _, result) or - swift_for_statement_def(this, result) or + swift_for_statement_def(this, result, _) or + swift_for_statement_def(this, _, result) or swift_for_statement_child(this, _, result) } } @@ -1025,28 +990,28 @@ module Swift { final override string getAPrimaryQlClass() { result = "FunctionDeclaration" } /** Gets the node corresponding to the field `body`. */ - final FunctionBody getBody() { swift_function_declaration_def(this, result) } + final FunctionBody getBody() { swift_function_declaration_def(this, result, _) } /** Gets the node corresponding to the field `default_value`. */ - final AstNode getDefaultValue(int i) { + final Expression getDefaultValue(int i) { swift_function_declaration_default_value(this, i, result) } /** Gets the node corresponding to the field `name`. */ - final AstNode getName(int i) { swift_function_declaration_name(this, i, result) } + final AstNode getName() { swift_function_declaration_def(this, _, result) } /** Gets the node corresponding to the field `return_type`. */ - final AstNode getReturnType(int i) { swift_function_declaration_return_type(this, i, result) } + final AstNode getReturnType() { swift_function_declaration_return_type(this, result) } /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_function_declaration_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_function_declaration_def(this, result) or + swift_function_declaration_def(this, result, _) or swift_function_declaration_default_value(this, _, result) or - swift_function_declaration_name(this, _, result) or - swift_function_declaration_return_type(this, _, result) or + swift_function_declaration_def(this, _, result) or + swift_function_declaration_return_type(this, result) or swift_function_declaration_child(this, _, result) } } @@ -1062,14 +1027,11 @@ module Swift { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FunctionType" } - /** Gets the node corresponding to the field `name`. */ - final AstNode getName() { swift_function_type_def(this, result, _) } - /** Gets the node corresponding to the field `params`. */ - final AstNode getParams() { swift_function_type_def(this, _, result) } + final UnannotatedType getParams() { swift_function_type_def(this, result, _) } /** Gets the node corresponding to the field `return_type`. */ - final AstNode getReturnType(int i) { swift_function_type_return_type(this, i, result) } + final Type getReturnType() { swift_function_type_def(this, _, result) } /** Gets the child of this node. */ final AstNode getChild() { swift_function_type_child(this, result) } @@ -1078,7 +1040,6 @@ module Swift { final override AstNode getAFieldOrChild() { swift_function_type_def(this, result, _) or swift_function_type_def(this, _, result) or - swift_function_type_return_type(this, _, result) or swift_function_type_child(this, result) } } @@ -1095,30 +1056,22 @@ module Swift { final override AstNode getAFieldOrChild() { swift_getter_specifier_child(this, _, result) } } + class GlobalDeclaration extends @swift_global_declaration, AstNode { } + /** A class representing `guard_statement` nodes. */ class GuardStatement extends @swift_guard_statement, AstNode { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "GuardStatement" } - /** Gets the node corresponding to the field `bound_identifier`. */ - final SimpleIdentifier getBoundIdentifier(int i) { - swift_guard_statement_bound_identifier(this, i, result) - } - /** Gets the node corresponding to the field `condition`. */ - final AstNode getCondition(int i) { swift_guard_statement_condition(this, i, result) } - - /** Gets the node corresponding to the field `name`. */ - final AstNode getName(int i) { swift_guard_statement_name(this, i, result) } + final IfCondition getCondition(int i) { swift_guard_statement_condition(this, i, result) } /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_guard_statement_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_guard_statement_bound_identifier(this, _, result) or swift_guard_statement_condition(this, _, result) or - swift_guard_statement_name(this, _, result) or swift_guard_statement_child(this, _, result) } } @@ -1141,34 +1094,67 @@ module Swift { final override AstNode getAFieldOrChild() { swift_identifier_child(this, _, result) } } + /** A class representing `if_condition` nodes. */ + class IfCondition extends @swift_if_condition, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "IfCondition" } + + /** Gets the child of this node. */ + final AstNode getChild() { swift_if_condition_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_if_condition_def(this, result) } + } + + /** A class representing `if_let_binding` nodes. */ + class IfLetBinding extends @swift_if_let_binding, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "IfLetBinding" } + + /** Gets the node corresponding to the field `bound_identifier`. */ + final SimpleIdentifier getBoundIdentifier() { + swift_if_let_binding_bound_identifier(this, result) + } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_if_let_binding_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_if_let_binding_bound_identifier(this, result) or + swift_if_let_binding_child(this, _, result) + } + } + /** A class representing `if_statement` nodes. */ class IfStatement extends @swift_if_statement, AstNode { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "IfStatement" } - /** Gets the node corresponding to the field `bound_identifier`. */ - final SimpleIdentifier getBoundIdentifier(int i) { - swift_if_statement_bound_identifier(this, i, result) - } - /** Gets the node corresponding to the field `condition`. */ - final AstNode getCondition(int i) { swift_if_statement_condition(this, i, result) } - - /** Gets the node corresponding to the field `name`. */ - final AstNode getName(int i) { swift_if_statement_name(this, i, result) } + final IfCondition getCondition(int i) { swift_if_statement_condition(this, i, result) } /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_if_statement_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_if_statement_bound_identifier(this, _, result) or - swift_if_statement_condition(this, _, result) or - swift_if_statement_name(this, _, result) or - swift_if_statement_child(this, _, result) + swift_if_statement_condition(this, _, result) or swift_if_statement_child(this, _, result) } } + /** A class representing `implicitly_unwrapped_type` nodes. */ + class ImplicitlyUnwrappedType extends @swift_implicitly_unwrapped_type, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ImplicitlyUnwrappedType" } + + /** Gets the child of this node. */ + final Type getChild() { swift_implicitly_unwrapped_type_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_implicitly_unwrapped_type_def(this, result) } + } + /** A class representing `import_declaration` nodes. */ class ImportDeclaration extends @swift_import_declaration, AstNode { /** Gets the name of the primary QL class for this element. */ @@ -1187,19 +1173,19 @@ module Swift { final override string getAPrimaryQlClass() { result = "InfixExpression" } /** Gets the node corresponding to the field `lhs`. */ - final AstNode getLhs(int i) { swift_infix_expression_lhs(this, i, result) } + final Expression getLhs() { swift_infix_expression_def(this, result, _, _) } /** Gets the node corresponding to the field `op`. */ - final CustomOperator getOp() { swift_infix_expression_def(this, result) } + final CustomOperator getOp() { swift_infix_expression_def(this, _, result, _) } /** Gets the node corresponding to the field `rhs`. */ - final AstNode getRhs(int i) { swift_infix_expression_rhs(this, i, result) } + final Expression getRhs() { swift_infix_expression_def(this, _, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_infix_expression_lhs(this, _, result) or - swift_infix_expression_def(this, result) or - swift_infix_expression_rhs(this, _, result) + swift_infix_expression_def(this, result, _, _) or + swift_infix_expression_def(this, _, result, _) or + swift_infix_expression_def(this, _, _, result) } } @@ -1209,26 +1195,18 @@ module Swift { final override string getAPrimaryQlClass() { result = "InheritanceConstraint" } /** Gets the node corresponding to the field `constrained_type`. */ - final AstNode getConstrainedType(int i) { - swift_inheritance_constraint_constrained_type(this, i, result) - } + final AstNode getConstrainedType() { swift_inheritance_constraint_def(this, result, _) } /** Gets the node corresponding to the field `inherits_from`. */ - final AstNode getInheritsFrom(int i) { - swift_inheritance_constraint_inherits_from(this, i, result) - } - - /** Gets the node corresponding to the field `name`. */ - final AstNode getName() { swift_inheritance_constraint_def(this, result) } + final AstNode getInheritsFrom() { swift_inheritance_constraint_def(this, _, result) } /** Gets the `i`th child of this node. */ final Attribute getChild(int i) { swift_inheritance_constraint_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_inheritance_constraint_constrained_type(this, _, result) or - swift_inheritance_constraint_inherits_from(this, _, result) or - swift_inheritance_constraint_def(this, result) or + swift_inheritance_constraint_def(this, result, _) or + swift_inheritance_constraint_def(this, _, result) or swift_inheritance_constraint_child(this, _, result) } } @@ -1260,7 +1238,9 @@ module Swift { final FunctionBody getBody() { swift_init_declaration_body(this, result) } /** Gets the node corresponding to the field `default_value`. */ - final AstNode getDefaultValue(int i) { swift_init_declaration_default_value(this, i, result) } + final Expression getDefaultValue(int i) { + swift_init_declaration_default_value(this, i, result) + } /** Gets the node corresponding to the field `name`. */ final string getName() { @@ -1298,7 +1278,7 @@ module Swift { } /** Gets the node corresponding to the field `value`. */ - final AstNode getValue(int i) { swift_interpolated_expression_value(this, i, result) } + final Expression getValue() { swift_interpolated_expression_value(this, result) } /** Gets the child of this node. */ final TypeModifiers getChild() { swift_interpolated_expression_child(this, result) } @@ -1307,7 +1287,7 @@ module Swift { final override AstNode getAFieldOrChild() { swift_interpolated_expression_name(this, result) or swift_interpolated_expression_reference_specifier(this, _, result) or - swift_interpolated_expression_value(this, _, result) or + swift_interpolated_expression_value(this, result) or swift_interpolated_expression_child(this, result) } } @@ -1330,12 +1310,10 @@ module Swift { final override string getAPrimaryQlClass() { result = "KeyPathStringExpression" } /** Gets the child of this node. */ - final AstNode getChild() { swift_key_path_string_expression_child(this, result) } + final Expression getChild() { swift_key_path_string_expression_def(this, result) } /** Gets a field or child node of this node. */ - final override AstNode getAFieldOrChild() { - swift_key_path_string_expression_child(this, result) - } + final override AstNode getAFieldOrChild() { swift_key_path_string_expression_def(this, result) } } /** A class representing `lambda_function_type` nodes. */ @@ -1343,19 +1321,15 @@ module Swift { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "LambdaFunctionType" } - /** Gets the node corresponding to the field `name`. */ - final AstNode getName() { swift_lambda_function_type_name(this, result) } - /** Gets the node corresponding to the field `return_type`. */ - final AstNode getReturnType(int i) { swift_lambda_function_type_return_type(this, i, result) } + final AstNode getReturnType() { swift_lambda_function_type_return_type(this, result) } /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_lambda_function_type_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_lambda_function_type_name(this, result) or - swift_lambda_function_type_return_type(this, _, result) or + swift_lambda_function_type_return_type(this, result) or swift_lambda_function_type_child(this, _, result) } } @@ -1407,10 +1381,10 @@ module Swift { final SimpleIdentifier getExternalName() { swift_lambda_parameter_external_name(this, result) } /** Gets the node corresponding to the field `name`. */ - final AstNode getName(int i) { swift_lambda_parameter_name(this, i, result) } + final SimpleIdentifier getName() { swift_lambda_parameter_name(this, result) } /** Gets the node corresponding to the field `type`. */ - final AstNode getType(int i) { swift_lambda_parameter_type(this, i, result) } + final AstNode getType() { swift_lambda_parameter_type(this, result) } /** Gets the child of this node. */ final AstNode getChild() { swift_lambda_parameter_child(this, result) } @@ -1418,8 +1392,8 @@ module Swift { /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { swift_lambda_parameter_external_name(this, result) or - swift_lambda_parameter_name(this, _, result) or - swift_lambda_parameter_type(this, _, result) or + swift_lambda_parameter_name(this, result) or + swift_lambda_parameter_type(this, result) or swift_lambda_parameter_child(this, result) } } @@ -1450,13 +1424,17 @@ module Swift { } } + class LocalDeclaration extends @swift_local_declaration, AstNode { } + /** A class representing `macro_declaration` nodes. */ class MacroDeclaration extends @swift_macro_declaration, AstNode { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "MacroDeclaration" } /** Gets the node corresponding to the field `default_value`. */ - final AstNode getDefaultValue(int i) { swift_macro_declaration_default_value(this, i, result) } + final Expression getDefaultValue(int i) { + swift_macro_declaration_default_value(this, i, result) + } /** Gets the node corresponding to the field `definition`. */ final MacroDefinition getDefinition() { swift_macro_declaration_definition(this, result) } @@ -1478,10 +1456,10 @@ module Swift { final override string getAPrimaryQlClass() { result = "MacroDefinition" } /** Gets the node corresponding to the field `body`. */ - final AstNode getBody(int i) { swift_macro_definition_body(this, i, result) } + final AstNode getBody() { swift_macro_definition_def(this, result) } /** Gets a field or child node of this node. */ - final override AstNode getAFieldOrChild() { swift_macro_definition_body(this, _, result) } + final override AstNode getAFieldOrChild() { swift_macro_definition_def(this, result) } } /** A class representing `macro_invocation` nodes. */ @@ -1508,7 +1486,7 @@ module Swift { final override string getAPrimaryQlClass() { result = "Metatype" } /** Gets the child of this node. */ - final AstNode getChild() { swift_metatype_def(this, result) } + final UnannotatedType getChild() { swift_metatype_def(this, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { swift_metatype_def(this, result) } @@ -1576,11 +1554,11 @@ module Swift { final override string getAPrimaryQlClass() { result = "MultiplicativeExpression" } /** Gets the node corresponding to the field `lhs`. */ - final AstNode getLhs(int i) { swift_multiplicative_expression_lhs(this, i, result) } + final Expression getLhs() { swift_multiplicative_expression_def(this, result, _, _) } /** Gets the node corresponding to the field `op`. */ final string getOp() { - exists(int value | swift_multiplicative_expression_def(this, value) | + exists(int value | swift_multiplicative_expression_def(this, _, value, _) | result = "%" and value = 0 or result = "*" and value = 1 @@ -1590,12 +1568,12 @@ module Swift { } /** Gets the node corresponding to the field `rhs`. */ - final AstNode getRhs(int i) { swift_multiplicative_expression_rhs(this, i, result) } + final Expression getRhs() { swift_multiplicative_expression_def(this, _, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_multiplicative_expression_lhs(this, _, result) or - swift_multiplicative_expression_rhs(this, _, result) + swift_multiplicative_expression_def(this, result, _, _) or + swift_multiplicative_expression_def(this, _, _, result) } } @@ -1610,9 +1588,6 @@ module Swift { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "NavigationExpression" } - /** Gets the node corresponding to the field `element`. */ - final AstNode getElement() { swift_navigation_expression_element(this, result) } - /** Gets the node corresponding to the field `suffix`. */ final NavigationSuffix getSuffix() { swift_navigation_expression_def(this, result) } @@ -1621,7 +1596,6 @@ module Swift { /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_navigation_expression_element(this, result) or swift_navigation_expression_def(this, result) or swift_navigation_expression_target(this, _, result) } @@ -1639,21 +1613,35 @@ module Swift { final override AstNode getAFieldOrChild() { swift_navigation_suffix_def(this, result) } } + /** A class representing `nested_type_identifier` nodes. */ + class NestedTypeIdentifier extends @swift_nested_type_identifier, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "NestedTypeIdentifier" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_nested_type_identifier_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_nested_type_identifier_child(this, _, result) + } + } + /** A class representing `nil_coalescing_expression` nodes. */ class NilCoalescingExpression extends @swift_nil_coalescing_expression, AstNode { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "NilCoalescingExpression" } /** Gets the node corresponding to the field `if_nil`. */ - final AstNode getIfNil(int i) { swift_nil_coalescing_expression_if_nil(this, i, result) } + final Expression getIfNil() { swift_nil_coalescing_expression_def(this, result, _) } /** Gets the node corresponding to the field `value`. */ - final AstNode getValue(int i) { swift_nil_coalescing_expression_value(this, i, result) } + final Expression getValue() { swift_nil_coalescing_expression_def(this, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_nil_coalescing_expression_if_nil(this, _, result) or - swift_nil_coalescing_expression_value(this, _, result) + swift_nil_coalescing_expression_def(this, result, _) or + swift_nil_coalescing_expression_def(this, _, result) } } @@ -1669,7 +1657,7 @@ module Swift { final override string getAPrimaryQlClass() { result = "OpaqueType" } /** Gets the child of this node. */ - final AstNode getChild() { swift_opaque_type_def(this, result) } + final UnannotatedType getChild() { swift_opaque_type_def(this, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { swift_opaque_type_def(this, result) } @@ -1681,12 +1669,10 @@ module Swift { final override string getAPrimaryQlClass() { result = "OpenEndRangeExpression" } /** Gets the node corresponding to the field `start`. */ - final AstNode getStart(int i) { swift_open_end_range_expression_start(this, i, result) } + final Expression getStart() { swift_open_end_range_expression_def(this, result) } /** Gets a field or child node of this node. */ - final override AstNode getAFieldOrChild() { - swift_open_end_range_expression_start(this, _, result) - } + final override AstNode getAFieldOrChild() { swift_open_end_range_expression_def(this, result) } } /** A class representing `open_start_range_expression` nodes. */ @@ -1695,11 +1681,11 @@ module Swift { final override string getAPrimaryQlClass() { result = "OpenStartRangeExpression" } /** Gets the node corresponding to the field `end`. */ - final AstNode getEnd(int i) { swift_open_start_range_expression_end(this, i, result) } + final Expression getEnd() { swift_open_start_range_expression_def(this, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_open_start_range_expression_end(this, _, result) + swift_open_start_range_expression_def(this, result) } } @@ -1715,6 +1701,18 @@ module Swift { final override AstNode getAFieldOrChild() { swift_operator_declaration_child(this, _, result) } } + /** A class representing `optional_chain_marker` nodes. */ + class OptionalChainMarker extends @swift_optional_chain_marker, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "OptionalChainMarker" } + + /** Gets the child of this node. */ + final Expression getChild() { swift_optional_chain_marker_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_optional_chain_marker_def(this, result) } + } + /** A class representing `optional_type` nodes. */ class OptionalType extends @swift_optional_type, AstNode { /** Gets the name of the primary QL class for this element. */ @@ -1742,10 +1740,10 @@ module Swift { final SimpleIdentifier getExternalName() { swift_parameter_external_name(this, result) } /** Gets the node corresponding to the field `name`. */ - final AstNode getName(int i) { swift_parameter_name(this, i, result) } + final SimpleIdentifier getName() { swift_parameter_def(this, result, _) } /** Gets the node corresponding to the field `type`. */ - final AstNode getType(int i) { swift_parameter_type(this, i, result) } + final AstNode getType() { swift_parameter_def(this, _, result) } /** Gets the child of this node. */ final ParameterModifiers getChild() { swift_parameter_child(this, result) } @@ -1753,8 +1751,8 @@ module Swift { /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { swift_parameter_external_name(this, result) or - swift_parameter_name(this, _, result) or - swift_parameter_type(this, _, result) or + swift_parameter_def(this, result, _) or + swift_parameter_def(this, _, result) or swift_parameter_child(this, result) } } @@ -1785,17 +1783,12 @@ module Swift { /** Gets the node corresponding to the field `bound_identifier`. */ final SimpleIdentifier getBoundIdentifier() { swift_pattern_bound_identifier(this, result) } - /** Gets the node corresponding to the field `name`. */ - final AstNode getName() { swift_pattern_name(this, result) } - /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_pattern_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_pattern_bound_identifier(this, result) or - swift_pattern_name(this, result) or - swift_pattern_child(this, _, result) + swift_pattern_bound_identifier(this, result) or swift_pattern_child(this, _, result) } } @@ -1805,7 +1798,7 @@ module Swift { final override string getAPrimaryQlClass() { result = "PlaygroundLiteral" } /** Gets the `i`th child of this node. */ - final AstNode getChild(int i) { swift_playground_literal_child(this, i, result) } + final Expression getChild(int i) { swift_playground_literal_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { swift_playground_literal_child(this, _, result) } @@ -1817,14 +1810,14 @@ module Swift { final override string getAPrimaryQlClass() { result = "PostfixExpression" } /** Gets the node corresponding to the field `operation`. */ - final AstNode getOperation() { swift_postfix_expression_def(this, result) } + final AstNode getOperation() { swift_postfix_expression_def(this, result, _) } /** Gets the node corresponding to the field `target`. */ - final AstNode getTarget(int i) { swift_postfix_expression_target(this, i, result) } + final Expression getTarget() { swift_postfix_expression_def(this, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_postfix_expression_def(this, result) or swift_postfix_expression_target(this, _, result) + swift_postfix_expression_def(this, result, _) or swift_postfix_expression_def(this, _, result) } } @@ -1878,14 +1871,14 @@ module Swift { final override string getAPrimaryQlClass() { result = "PrefixExpression" } /** Gets the node corresponding to the field `operation`. */ - final AstNode getOperation() { swift_prefix_expression_def(this, result) } + final AstNode getOperation() { swift_prefix_expression_def(this, result, _) } /** Gets the node corresponding to the field `target`. */ - final AstNode getTarget(int i) { swift_prefix_expression_target(this, i, result) } + final Expression getTarget() { swift_prefix_expression_def(this, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_prefix_expression_def(this, result) or swift_prefix_expression_target(this, _, result) + swift_prefix_expression_def(this, result, _) or swift_prefix_expression_def(this, _, result) } } @@ -1909,7 +1902,7 @@ module Swift { final Pattern getName(int i) { swift_property_declaration_name(this, i, result) } /** Gets the node corresponding to the field `value`. */ - final AstNode getValue(int i) { swift_property_declaration_value(this, i, result) } + final Expression getValue(int i) { swift_property_declaration_value(this, i, result) } /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_property_declaration_child(this, i, result) } @@ -1934,16 +1927,11 @@ module Swift { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ProtocolBody" } - /** Gets the node corresponding to the field `body`. */ - final ProtocolFunctionDeclaration getBody(int i) { swift_protocol_body_body(this, i, result) } - /** Gets the `i`th child of this node. */ - final AstNode getChild(int i) { swift_protocol_body_child(this, i, result) } + final ProtocolMemberDeclaration getChild(int i) { swift_protocol_body_child(this, i, result) } /** Gets a field or child node of this node. */ - final override AstNode getAFieldOrChild() { - swift_protocol_body_body(this, _, result) or swift_protocol_body_child(this, _, result) - } + final override AstNode getAFieldOrChild() { swift_protocol_body_child(this, _, result) } } /** A class representing `protocol_composition_type` nodes. */ @@ -1952,7 +1940,7 @@ module Swift { final override string getAPrimaryQlClass() { result = "ProtocolCompositionType" } /** Gets the `i`th child of this node. */ - final AstNode getChild(int i) { swift_protocol_composition_type_child(this, i, result) } + final UnannotatedType getChild(int i) { swift_protocol_composition_type_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { @@ -1994,31 +1982,35 @@ module Swift { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ProtocolFunctionDeclaration" } + /** Gets the node corresponding to the field `body`. */ + final FunctionBody getBody() { swift_protocol_function_declaration_body(this, result) } + /** Gets the node corresponding to the field `default_value`. */ - final AstNode getDefaultValue(int i) { + final Expression getDefaultValue(int i) { swift_protocol_function_declaration_default_value(this, i, result) } /** Gets the node corresponding to the field `name`. */ - final AstNode getName(int i) { swift_protocol_function_declaration_name(this, i, result) } + final AstNode getName() { swift_protocol_function_declaration_def(this, result) } /** Gets the node corresponding to the field `return_type`. */ - final AstNode getReturnType(int i) { - swift_protocol_function_declaration_return_type(this, i, result) - } + final AstNode getReturnType() { swift_protocol_function_declaration_return_type(this, result) } /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_protocol_function_declaration_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { + swift_protocol_function_declaration_body(this, result) or swift_protocol_function_declaration_default_value(this, _, result) or - swift_protocol_function_declaration_name(this, _, result) or - swift_protocol_function_declaration_return_type(this, _, result) or + swift_protocol_function_declaration_def(this, result) or + swift_protocol_function_declaration_return_type(this, result) or swift_protocol_function_declaration_child(this, _, result) } } + class ProtocolMemberDeclaration extends @swift_protocol_member_declaration, AstNode { } + /** A class representing `protocol_property_declaration` nodes. */ class ProtocolPropertyDeclaration extends @swift_protocol_property_declaration, AstNode { /** Gets the name of the primary QL class for this element. */ @@ -2057,11 +2049,11 @@ module Swift { final override string getAPrimaryQlClass() { result = "RangeExpression" } /** Gets the node corresponding to the field `end`. */ - final AstNode getEnd(int i) { swift_range_expression_end(this, i, result) } + final Expression getEnd() { swift_range_expression_def(this, result, _, _) } /** Gets the node corresponding to the field `op`. */ final string getOp() { - exists(int value | swift_range_expression_def(this, value) | + exists(int value | swift_range_expression_def(this, _, value, _) | result = "..." and value = 0 or result = "..<" and value = 1 @@ -2069,11 +2061,12 @@ module Swift { } /** Gets the node corresponding to the field `start`. */ - final AstNode getStart(int i) { swift_range_expression_start(this, i, result) } + final Expression getStart() { swift_range_expression_def(this, _, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_range_expression_end(this, _, result) or swift_range_expression_start(this, _, result) + swift_range_expression_def(this, result, _, _) or + swift_range_expression_def(this, _, _, result) } } @@ -2153,6 +2146,18 @@ module Swift { final override string getAPrimaryQlClass() { result = "RealLiteral" } } + /** A class representing `referenceable_operator` nodes. */ + class ReferenceableOperator extends @swift_referenceable_operator, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ReferenceableOperator" } + + /** Gets the child of this node. */ + final AstNode getChild() { swift_referenceable_operator_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_referenceable_operator_child(this, result) } + } + /** A class representing `regex_literal` tokens. */ class RegexLiteral extends @swift_token_regex_literal, Token { /** Gets the name of the primary QL class for this element. */ @@ -2164,25 +2169,17 @@ module Swift { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "RepeatWhileStatement" } - /** Gets the node corresponding to the field `bound_identifier`. */ - final SimpleIdentifier getBoundIdentifier(int i) { - swift_repeat_while_statement_bound_identifier(this, i, result) - } - /** Gets the node corresponding to the field `condition`. */ - final AstNode getCondition(int i) { swift_repeat_while_statement_condition(this, i, result) } - - /** Gets the node corresponding to the field `name`. */ - final AstNode getName(int i) { swift_repeat_while_statement_name(this, i, result) } + final IfCondition getCondition(int i) { + swift_repeat_while_statement_condition(this, i, result) + } /** Gets the child of this node. */ final Statements getChild() { swift_repeat_while_statement_child(this, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_repeat_while_statement_bound_identifier(this, _, result) or swift_repeat_while_statement_condition(this, _, result) or - swift_repeat_while_statement_name(this, _, result) or swift_repeat_while_statement_child(this, result) } } @@ -2193,10 +2190,10 @@ module Swift { final override string getAPrimaryQlClass() { result = "SelectorExpression" } /** Gets the child of this node. */ - final AstNode getChild() { swift_selector_expression_child(this, result) } + final Expression getChild() { swift_selector_expression_def(this, result) } /** Gets a field or child node of this node. */ - final override AstNode getAFieldOrChild() { swift_selector_expression_child(this, result) } + final override AstNode getAFieldOrChild() { swift_selector_expression_def(this, result) } } /** A class representing `self_expression` tokens. */ @@ -2277,15 +2274,12 @@ module Swift { final override string getAPrimaryQlClass() { result = "SubscriptDeclaration" } /** Gets the node corresponding to the field `default_value`. */ - final AstNode getDefaultValue(int i) { + final Expression getDefaultValue(int i) { swift_subscript_declaration_default_value(this, i, result) } - /** Gets the node corresponding to the field `name`. */ - final AstNode getName() { swift_subscript_declaration_name(this, result) } - /** Gets the node corresponding to the field `return_type`. */ - final AstNode getReturnType(int i) { swift_subscript_declaration_return_type(this, i, result) } + final AstNode getReturnType() { swift_subscript_declaration_return_type(this, result) } /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_subscript_declaration_child(this, i, result) } @@ -2293,8 +2287,7 @@ module Swift { /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { swift_subscript_declaration_default_value(this, _, result) or - swift_subscript_declaration_name(this, result) or - swift_subscript_declaration_return_type(this, _, result) or + swift_subscript_declaration_return_type(this, result) or swift_subscript_declaration_child(this, _, result) } } @@ -2347,14 +2340,14 @@ module Swift { final override string getAPrimaryQlClass() { result = "SwitchStatement" } /** Gets the node corresponding to the field `expr`. */ - final AstNode getExpr(int i) { swift_switch_statement_expr(this, i, result) } + final Expression getExpr() { swift_switch_statement_def(this, result) } /** Gets the `i`th child of this node. */ final SwitchEntry getChild(int i) { swift_switch_statement_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_switch_statement_expr(this, _, result) or swift_switch_statement_child(this, _, result) + swift_switch_statement_def(this, result) or swift_switch_statement_child(this, _, result) } } @@ -2364,19 +2357,19 @@ module Swift { final override string getAPrimaryQlClass() { result = "TernaryExpression" } /** Gets the node corresponding to the field `condition`. */ - final AstNode getCondition(int i) { swift_ternary_expression_condition(this, i, result) } + final Expression getCondition() { swift_ternary_expression_def(this, result, _, _) } /** Gets the node corresponding to the field `if_false`. */ - final AstNode getIfFalse(int i) { swift_ternary_expression_if_false(this, i, result) } + final Expression getIfFalse() { swift_ternary_expression_def(this, _, result, _) } /** Gets the node corresponding to the field `if_true`. */ - final AstNode getIfTrue(int i) { swift_ternary_expression_if_true(this, i, result) } + final Expression getIfTrue() { swift_ternary_expression_def(this, _, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_ternary_expression_condition(this, _, result) or - swift_ternary_expression_if_false(this, _, result) or - swift_ternary_expression_if_true(this, _, result) + swift_ternary_expression_def(this, result, _, _) or + swift_ternary_expression_def(this, _, result, _) or + swift_ternary_expression_def(this, _, _, result) } } @@ -2398,7 +2391,7 @@ module Swift { final override string getAPrimaryQlClass() { result = "ThrowsClause" } /** Gets the node corresponding to the field `type`. */ - final AstNode getType() { swift_throws_clause_def(this, result) } + final UnannotatedType getType() { swift_throws_clause_def(this, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { swift_throws_clause_def(this, result) } @@ -2410,14 +2403,14 @@ module Swift { final override string getAPrimaryQlClass() { result = "TryExpression" } /** Gets the node corresponding to the field `expr`. */ - final AstNode getExpr(int i) { swift_try_expression_expr(this, i, result) } + final Expression getExpr() { swift_try_expression_def(this, result, _) } /** Gets the child of this node. */ - final TryOperator getChild() { swift_try_expression_def(this, result) } + final TryOperator getChild() { swift_try_expression_def(this, _, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_try_expression_expr(this, _, result) or swift_try_expression_def(this, result) + swift_try_expression_def(this, result, _) or swift_try_expression_def(this, _, result) } } @@ -2436,7 +2429,7 @@ module Swift { final SimpleIdentifier getName(int i) { swift_tuple_expression_name(this, i, result) } /** Gets the node corresponding to the field `value`. */ - final AstNode getValue(int i) { swift_tuple_expression_value(this, i, result) } + final Expression getValue(int i) { swift_tuple_expression_value(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { @@ -2466,42 +2459,50 @@ module Swift { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TupleTypeItem" } - /** Gets the node corresponding to the field `element`. */ - final AstNode getElement() { swift_tuple_type_item_element(this, result) } - /** Gets the node corresponding to the field `name`. */ - final AstNode getName(int i) { swift_tuple_type_item_name(this, i, result) } + final SimpleIdentifier getName() { swift_tuple_type_item_name(this, result) } /** Gets the node corresponding to the field `type`. */ - final AstNode getType(int i) { swift_tuple_type_item_type(this, i, result) } + final Type getType() { swift_tuple_type_item_type(this, result) } /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_tuple_type_item_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_tuple_type_item_element(this, result) or - swift_tuple_type_item_name(this, _, result) or - swift_tuple_type_item_type(this, _, result) or + swift_tuple_type_item_name(this, result) or + swift_tuple_type_item_type(this, result) or swift_tuple_type_item_child(this, _, result) } } + /** A class representing `type` nodes. */ + class Type extends @swift_type__, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Type" } + + /** Gets the node corresponding to the field `modifiers`. */ + final TypeModifiers getModifiers() { swift_type_modifiers(this, result) } + + /** Gets the node corresponding to the field `name`. */ + final UnannotatedType getName() { swift_type_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_type_modifiers(this, result) or swift_type_def(this, result) + } + } + /** A class representing `type_annotation` nodes. */ class TypeAnnotation extends @swift_type_annotation, AstNode { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeAnnotation" } - /** Gets the node corresponding to the field `name`. */ - final AstNode getName() { swift_type_annotation_def(this, result) } - /** Gets the node corresponding to the field `type`. */ - final AstNode getType(int i) { swift_type_annotation_type(this, i, result) } + final AstNode getType() { swift_type_annotation_def(this, result) } /** Gets a field or child node of this node. */ - final override AstNode getAFieldOrChild() { - swift_type_annotation_def(this, result) or swift_type_annotation_type(this, _, result) - } + final override AstNode getAFieldOrChild() { swift_type_annotation_def(this, result) } } /** A class representing `type_arguments` nodes. */ @@ -2509,16 +2510,11 @@ module Swift { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeArguments" } - /** Gets the node corresponding to the field `name`. */ - final AstNode getName(int i) { swift_type_arguments_name(this, i, result) } - /** Gets the `i`th child of this node. */ - final TypeModifiers getChild(int i) { swift_type_arguments_child(this, i, result) } + final Type getChild(int i) { swift_type_arguments_child(this, i, result) } /** Gets a field or child node of this node. */ - final override AstNode getAFieldOrChild() { - swift_type_arguments_name(this, _, result) or swift_type_arguments_child(this, _, result) - } + final override AstNode getAFieldOrChild() { swift_type_arguments_child(this, _, result) } } /** A class representing `type_constraint` nodes. */ @@ -2551,6 +2547,8 @@ module Swift { final override string getAPrimaryQlClass() { result = "TypeIdentifier" } } + class TypeLevelDeclaration extends @swift_type_level_declaration, AstNode { } + /** A class representing `type_modifiers` nodes. */ class TypeModifiers extends @swift_type_modifiers, AstNode { /** Gets the name of the primary QL class for this element. */ @@ -2569,7 +2567,7 @@ module Swift { final override string getAPrimaryQlClass() { result = "TypePackExpansion" } /** Gets the child of this node. */ - final AstNode getChild() { swift_type_pack_expansion_def(this, result) } + final UnannotatedType getChild() { swift_type_pack_expansion_def(this, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { swift_type_pack_expansion_def(this, result) } @@ -2580,16 +2578,11 @@ module Swift { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeParameter" } - /** Gets the node corresponding to the field `name`. */ - final AstNode getName() { swift_type_parameter_name(this, result) } - /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_type_parameter_child(this, i, result) } /** Gets a field or child node of this node. */ - final override AstNode getAFieldOrChild() { - swift_type_parameter_name(this, result) or swift_type_parameter_child(this, _, result) - } + final override AstNode getAFieldOrChild() { swift_type_parameter_child(this, _, result) } } /** A class representing `type_parameter_modifiers` nodes. */ @@ -2612,7 +2605,7 @@ module Swift { final override string getAPrimaryQlClass() { result = "TypeParameterPack" } /** Gets the child of this node. */ - final AstNode getChild() { swift_type_parameter_pack_def(this, result) } + final UnannotatedType getChild() { swift_type_parameter_pack_def(this, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { swift_type_parameter_pack_def(this, result) } @@ -2636,22 +2629,24 @@ module Swift { final override string getAPrimaryQlClass() { result = "TypealiasDeclaration" } /** Gets the node corresponding to the field `name`. */ - final AstNode getName(int i) { swift_typealias_declaration_name(this, i, result) } + final TypeIdentifier getName() { swift_typealias_declaration_def(this, result, _) } /** Gets the node corresponding to the field `value`. */ - final AstNode getValue(int i) { swift_typealias_declaration_value(this, i, result) } + final Type getValue() { swift_typealias_declaration_def(this, _, result) } /** Gets the `i`th child of this node. */ final AstNode getChild(int i) { swift_typealias_declaration_child(this, i, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_typealias_declaration_name(this, _, result) or - swift_typealias_declaration_value(this, _, result) or + swift_typealias_declaration_def(this, result, _) or + swift_typealias_declaration_def(this, _, result) or swift_typealias_declaration_child(this, _, result) } } + class UnannotatedType extends @swift_unannotated_type, AstNode { } + /** A class representing `user_type` nodes. */ class UserType extends @swift_user_type, AstNode { /** Gets the name of the primary QL class for this element. */ @@ -2678,7 +2673,7 @@ module Swift { } /** Gets the node corresponding to the field `value`. */ - final AstNode getValue(int i) { swift_value_argument_value(this, i, result) } + final Expression getValue() { swift_value_argument_value(this, result) } /** Gets the child of this node. */ final TypeModifiers getChild() { swift_value_argument_child(this, result) } @@ -2687,7 +2682,7 @@ module Swift { final override AstNode getAFieldOrChild() { swift_value_argument_name(this, result) or swift_value_argument_reference_specifier(this, _, result) or - swift_value_argument_value(this, _, result) or + swift_value_argument_value(this, result) or swift_value_argument_child(this, result) } } @@ -2740,10 +2735,10 @@ module Swift { final override string getAPrimaryQlClass() { result = "ValuePackExpansion" } /** Gets the child of this node. */ - final AstNode getChild() { swift_value_pack_expansion_child(this, result) } + final Expression getChild() { swift_value_pack_expansion_def(this, result) } /** Gets a field or child node of this node. */ - final override AstNode getAFieldOrChild() { swift_value_pack_expansion_child(this, result) } + final override AstNode getAFieldOrChild() { swift_value_pack_expansion_def(this, result) } } /** A class representing `value_parameter_pack` nodes. */ @@ -2752,10 +2747,10 @@ module Swift { final override string getAPrimaryQlClass() { result = "ValueParameterPack" } /** Gets the child of this node. */ - final AstNode getChild() { swift_value_parameter_pack_child(this, result) } + final Expression getChild() { swift_value_parameter_pack_def(this, result) } /** Gets a field or child node of this node. */ - final override AstNode getAFieldOrChild() { swift_value_parameter_pack_child(this, result) } + final override AstNode getAFieldOrChild() { swift_value_parameter_pack_def(this, result) } } /** A class representing `visibility_modifier` tokens. */ @@ -2787,26 +2782,15 @@ module Swift { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "WhileStatement" } - /** Gets the node corresponding to the field `bound_identifier`. */ - final SimpleIdentifier getBoundIdentifier(int i) { - swift_while_statement_bound_identifier(this, i, result) - } - /** Gets the node corresponding to the field `condition`. */ - final AstNode getCondition(int i) { swift_while_statement_condition(this, i, result) } - - /** Gets the node corresponding to the field `name`. */ - final AstNode getName(int i) { swift_while_statement_name(this, i, result) } + final IfCondition getCondition(int i) { swift_while_statement_condition(this, i, result) } /** Gets the child of this node. */ final Statements getChild() { swift_while_statement_child(this, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { - swift_while_statement_bound_identifier(this, _, result) or - swift_while_statement_condition(this, _, result) or - swift_while_statement_name(this, _, result) or - swift_while_statement_child(this, result) + swift_while_statement_condition(this, _, result) or swift_while_statement_child(this, result) } } diff --git a/unified/ql/lib/unified.dbscheme b/unified/ql/lib/unified.dbscheme index c580e8e6927..b50bc56eaa2 100644 --- a/unified/ql/lib/unified.dbscheme +++ b/unified/ql/lib/unified.dbscheme @@ -132,87 +132,39 @@ overlayChangedFiles( ); /*- Swift dbscheme -*/ -@swift_additive_expression_lhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_additive_expression, index] -swift_additive_expression_lhs( - int swift_additive_expression: @swift_additive_expression ref, - int index: int ref, - unique int lhs: @swift_additive_expression_lhs_type ref -); - case @swift_additive_expression.op of 0 = @swift_additive_expression_plus | 1 = @swift_additive_expression_minus ; -@swift_additive_expression_rhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_additive_expression, index] -swift_additive_expression_rhs( - int swift_additive_expression: @swift_additive_expression ref, - int index: int ref, - unique int rhs: @swift_additive_expression_rhs_type ref -); - swift_additive_expression_def( unique int id: @swift_additive_expression, - int op: int ref + int lhs: @swift_expression ref, + int op: int ref, + int rhs: @swift_expression ref ); -@swift_array_literal_element_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - #keyset[swift_array_literal, index] swift_array_literal_element( int swift_array_literal: @swift_array_literal ref, int index: int ref, - unique int element: @swift_array_literal_element_type ref + unique int element: @swift_expression ref ); swift_array_literal_def( unique int id: @swift_array_literal ); -@swift_array_type_element_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_array_type, index] -swift_array_type_element( - int swift_array_type: @swift_array_type ref, - int index: int ref, - unique int element: @swift_array_type_element_type ref -); - -@swift_array_type_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - swift_array_type_def( unique int id: @swift_array_type, - int name: @swift_array_type_name_type ref -); - -@swift_as_expression_expr_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_as_expression, index] -swift_as_expression_expr( - int swift_as_expression: @swift_as_expression ref, - int index: int ref, - unique int expr: @swift_as_expression_expr_type ref -); - -@swift_as_expression_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -@swift_as_expression_type_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_as_expression, index] -swift_as_expression_type( - int swift_as_expression: @swift_as_expression ref, - int index: int ref, - unique int type__: @swift_as_expression_type_type ref + int element: @swift_type__ ref ); swift_as_expression_def( unique int id: @swift_as_expression, - int name: @swift_as_expression_name_type ref, + int expr: @swift_expression ref, + int type__: @swift_type__ ref, int child: @swift_token_as_operator ref ); @@ -226,46 +178,21 @@ case @swift_assignment.operator of ; -@swift_assignment_result_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_assignment, index] -swift_assignment_result( - int swift_assignment: @swift_assignment ref, - int index: int ref, - unique int result: @swift_assignment_result_type ref -); - swift_assignment_def( unique int id: @swift_assignment, int operator: int ref, + int result: @swift_expression ref, int target: @swift_directly_assignable_expression ref ); -@swift_associatedtype_declaration_default_value_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_associatedtype_declaration, index] swift_associatedtype_declaration_default_value( - int swift_associatedtype_declaration: @swift_associatedtype_declaration ref, - int index: int ref, - unique int default_value: @swift_associatedtype_declaration_default_value_type ref + unique int swift_associatedtype_declaration: @swift_associatedtype_declaration ref, + unique int default_value: @swift_type__ ref ); -@swift_associatedtype_declaration_must_inherit_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_associatedtype_declaration, index] swift_associatedtype_declaration_must_inherit( - int swift_associatedtype_declaration: @swift_associatedtype_declaration ref, - int index: int ref, - unique int must_inherit: @swift_associatedtype_declaration_must_inherit_type ref -); - -@swift_associatedtype_declaration_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_token_type_identifier | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_associatedtype_declaration, index] -swift_associatedtype_declaration_name( - int swift_associatedtype_declaration: @swift_associatedtype_declaration ref, - int index: int ref, - unique int name: @swift_associatedtype_declaration_name_type ref + unique int swift_associatedtype_declaration: @swift_associatedtype_declaration ref, + unique int must_inherit: @swift_type__ ref ); @swift_associatedtype_declaration_child_type = @swift_modifiers | @swift_type_constraints @@ -278,10 +205,11 @@ swift_associatedtype_declaration_child( ); swift_associatedtype_declaration_def( - unique int id: @swift_associatedtype_declaration + unique int id: @swift_associatedtype_declaration, + int name: @swift_token_type_identifier ref ); -@swift_attribute_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_user_type | @swift_value_pack_expansion | @swift_value_parameter_pack +@swift_attribute_child_type = @swift_expression | @swift_user_type #keyset[swift_attribute, index] swift_attribute_child( @@ -307,35 +235,20 @@ swift_availability_condition_def( unique int id: @swift_availability_condition ); -@swift_await_expression_expr_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_await_expression, index] swift_await_expression_expr( - int swift_await_expression: @swift_await_expression ref, - int index: int ref, - unique int expr: @swift_await_expression_expr_type ref + unique int swift_await_expression: @swift_await_expression ref, + unique int expr: @swift_expression ref ); -@swift_await_expression_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - swift_await_expression_child( unique int swift_await_expression: @swift_await_expression ref, - unique int child: @swift_await_expression_child_type ref + unique int child: @swift_expression ref ); swift_await_expression_def( unique int id: @swift_await_expression ); -@swift_bitwise_operation_lhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_bitwise_operation, index] -swift_bitwise_operation_lhs( - int swift_bitwise_operation: @swift_bitwise_operation ref, - int index: int ref, - unique int lhs: @swift_bitwise_operation_lhs_type ref -); - case @swift_bitwise_operation.op of 0 = @swift_bitwise_operation_ampersand | 1 = @swift_bitwise_operation_langlelangle @@ -345,21 +258,14 @@ case @swift_bitwise_operation.op of ; -@swift_bitwise_operation_rhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_bitwise_operation, index] -swift_bitwise_operation_rhs( - int swift_bitwise_operation: @swift_bitwise_operation ref, - int index: int ref, - unique int rhs: @swift_bitwise_operation_rhs_type ref -); - swift_bitwise_operation_def( unique int id: @swift_bitwise_operation, - int op: int ref + int lhs: @swift_expression ref, + int op: int ref, + int rhs: @swift_expression ref ); -@swift_call_expression_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_call_suffix | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack +@swift_call_expression_child_type = @swift_call_suffix | @swift_expression #keyset[swift_call_expression, index] swift_call_expression_child( @@ -405,13 +311,9 @@ swift_capture_list_def( @swift_capture_list_item_name_type = @swift_token_self_expression | @swift_token_simple_identifier -@swift_capture_list_item_value_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_capture_list_item, index] swift_capture_list_item_value( - int swift_capture_list_item: @swift_capture_list_item ref, - int index: int ref, - unique int value: @swift_capture_list_item_value_type ref + unique int swift_capture_list_item: @swift_capture_list_item ref, + unique int value: @swift_expression ref ); swift_capture_list_item_child( @@ -442,38 +344,19 @@ swift_catch_block_def( unique int id: @swift_catch_block ); -@swift_check_expression_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - case @swift_check_expression.op of 0 = @swift_check_expression_is ; -@swift_check_expression_target_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_check_expression, index] -swift_check_expression_target( - int swift_check_expression: @swift_check_expression ref, - int index: int ref, - unique int target: @swift_check_expression_target_type ref -); - -@swift_check_expression_type_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_check_expression, index] -swift_check_expression_type( - int swift_check_expression: @swift_check_expression ref, - int index: int ref, - unique int type__: @swift_check_expression_type_type ref -); - swift_check_expression_def( unique int id: @swift_check_expression, - int name: @swift_check_expression_name_type ref, - int op: int ref + int op: int ref, + int target: @swift_expression ref, + int type__: @swift_type__ ref ); -@swift_class_body_child_type = @swift_associatedtype_declaration | @swift_class_declaration | @swift_deinit_declaration | @swift_function_declaration | @swift_import_declaration | @swift_init_declaration | @swift_operator_declaration | @swift_precedence_group_declaration | @swift_property_declaration | @swift_protocol_declaration | @swift_subscript_declaration | @swift_token_multiline_comment | @swift_typealias_declaration +@swift_class_body_child_type = @swift_token_multiline_comment | @swift_type_level_declaration #keyset[swift_class_body, index] swift_class_body_child( @@ -497,7 +380,7 @@ case @swift_class_declaration.declaration_kind of ; -@swift_class_declaration_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_token_type_identifier | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type +@swift_class_declaration_name_type = @swift_token_type_identifier | @swift_unannotated_type @swift_class_declaration_child_type = @swift_attribute | @swift_inheritance_specifier | @swift_modifiers | @swift_token_inheritance_modifier | @swift_token_ownership_modifier | @swift_token_property_behavior_modifier | @swift_type_constraints | @swift_type_parameters @@ -515,15 +398,6 @@ swift_class_declaration_def( int name: @swift_class_declaration_name_type ref ); -@swift_comparison_expression_lhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_comparison_expression, index] -swift_comparison_expression_lhs( - int swift_comparison_expression: @swift_comparison_expression ref, - int index: int ref, - unique int lhs: @swift_comparison_expression_lhs_type ref -); - case @swift_comparison_expression.op of 0 = @swift_comparison_expression_langle | 1 = @swift_comparison_expression_langleequal @@ -532,18 +406,11 @@ case @swift_comparison_expression.op of ; -@swift_comparison_expression_rhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_comparison_expression, index] -swift_comparison_expression_rhs( - int swift_comparison_expression: @swift_comparison_expression ref, - int index: int ref, - unique int rhs: @swift_comparison_expression_rhs_type ref -); - swift_comparison_expression_def( unique int id: @swift_comparison_expression, - int op: int ref + int lhs: @swift_expression ref, + int op: int ref, + int rhs: @swift_expression ref ); @swift_computed_getter_child_type = @swift_attribute | @swift_getter_specifier | @swift_statements @@ -598,32 +465,16 @@ swift_computed_setter_def( unique int id: @swift_computed_setter ); -@swift_conjunction_expression_lhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_conjunction_expression, index] -swift_conjunction_expression_lhs( - int swift_conjunction_expression: @swift_conjunction_expression ref, - int index: int ref, - unique int lhs: @swift_conjunction_expression_lhs_type ref -); - case @swift_conjunction_expression.op of 0 = @swift_conjunction_expression_ampersandampersand ; -@swift_conjunction_expression_rhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_conjunction_expression, index] -swift_conjunction_expression_rhs( - int swift_conjunction_expression: @swift_conjunction_expression ref, - int index: int ref, - unique int rhs: @swift_conjunction_expression_rhs_type ref -); - swift_conjunction_expression_def( unique int id: @swift_conjunction_expression, - int op: int ref + int lhs: @swift_expression ref, + int op: int ref, + int rhs: @swift_expression ref ); @swift_constructor_expression_constructed_type_type = @swift_array_type | @swift_dictionary_type | @swift_user_type @@ -654,16 +505,12 @@ swift_constructor_suffix_def( unique int id: @swift_constructor_suffix ); -@swift_control_transfer_statement_result_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_control_transfer_statement, index] swift_control_transfer_statement_result( - int swift_control_transfer_statement: @swift_control_transfer_statement ref, - int index: int ref, - unique int result: @swift_control_transfer_statement_result_type ref + unique int swift_control_transfer_statement: @swift_control_transfer_statement ref, + unique int result: @swift_expression ref ); -@swift_control_transfer_statement_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_token_throw_keyword | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack +@swift_control_transfer_statement_child_type = @swift_expression | @swift_token_throw_keyword #keyset[swift_control_transfer_statement, index] swift_control_transfer_statement_child( @@ -699,57 +546,28 @@ swift_deprecated_operator_declaration_body_def( unique int id: @swift_deprecated_operator_declaration_body ); -@swift_dictionary_literal_key_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - #keyset[swift_dictionary_literal, index] swift_dictionary_literal_key( int swift_dictionary_literal: @swift_dictionary_literal ref, int index: int ref, - unique int key__: @swift_dictionary_literal_key_type ref + unique int key__: @swift_expression ref ); -@swift_dictionary_literal_value_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - #keyset[swift_dictionary_literal, index] swift_dictionary_literal_value( int swift_dictionary_literal: @swift_dictionary_literal ref, int index: int ref, - unique int value: @swift_dictionary_literal_value_type ref + unique int value: @swift_expression ref ); swift_dictionary_literal_def( unique int id: @swift_dictionary_literal ); -@swift_dictionary_type_key_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_dictionary_type, index] -swift_dictionary_type_key( - int swift_dictionary_type: @swift_dictionary_type ref, - int index: int ref, - unique int key__: @swift_dictionary_type_key_type ref -); - -@swift_dictionary_type_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_dictionary_type, index] -swift_dictionary_type_name( - int swift_dictionary_type: @swift_dictionary_type ref, - int index: int ref, - unique int name: @swift_dictionary_type_name_type ref -); - -@swift_dictionary_type_value_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_dictionary_type, index] -swift_dictionary_type_value( - int swift_dictionary_type: @swift_dictionary_type ref, - int index: int ref, - unique int value: @swift_dictionary_type_value_type ref -); - swift_dictionary_type_def( - unique int id: @swift_dictionary_type + unique int id: @swift_dictionary_type, + int key__: @swift_type__ ref, + int value: @swift_type__ ref ); @swift_didset_clause_child_type = @swift_modifiers | @swift_statements | @swift_token_simple_identifier @@ -778,24 +596,9 @@ swift_directive_def( unique int id: @swift_directive ); -@swift_directly_assignable_expression_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -swift_directly_assignable_expression_child( - unique int swift_directly_assignable_expression: @swift_directly_assignable_expression ref, - unique int child: @swift_directly_assignable_expression_child_type ref -); - swift_directly_assignable_expression_def( - unique int id: @swift_directly_assignable_expression -); - -@swift_disjunction_expression_lhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_disjunction_expression, index] -swift_disjunction_expression_lhs( - int swift_disjunction_expression: @swift_disjunction_expression ref, - int index: int ref, - unique int lhs: @swift_disjunction_expression_lhs_type ref + unique int id: @swift_directly_assignable_expression, + int child: @swift_expression ref ); case @swift_disjunction_expression.op of @@ -803,18 +606,11 @@ case @swift_disjunction_expression.op of ; -@swift_disjunction_expression_rhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_disjunction_expression, index] -swift_disjunction_expression_rhs( - int swift_disjunction_expression: @swift_disjunction_expression ref, - int index: int ref, - unique int rhs: @swift_disjunction_expression_rhs_type ref -); - swift_disjunction_expression_def( unique int id: @swift_disjunction_expression, - int op: int ref + int lhs: @swift_expression ref, + int op: int ref, + int rhs: @swift_expression ref ); @swift_do_statement_child_type = @swift_catch_block | @swift_statements @@ -830,7 +626,7 @@ swift_do_statement_def( unique int id: @swift_do_statement ); -@swift_enum_class_body_child_type = @swift_associatedtype_declaration | @swift_class_declaration | @swift_deinit_declaration | @swift_enum_entry | @swift_function_declaration | @swift_import_declaration | @swift_init_declaration | @swift_operator_declaration | @swift_precedence_group_declaration | @swift_property_declaration | @swift_protocol_declaration | @swift_subscript_declaration | @swift_typealias_declaration +@swift_enum_class_body_child_type = @swift_enum_entry | @swift_type_level_declaration #keyset[swift_enum_class_body, index] swift_enum_class_body_child( @@ -857,13 +653,11 @@ swift_enum_entry_name( unique int name: @swift_token_simple_identifier ref ); -@swift_enum_entry_raw_value_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - #keyset[swift_enum_entry, index] swift_enum_entry_raw_value( int swift_enum_entry: @swift_enum_entry ref, int index: int ref, - unique int raw_value: @swift_enum_entry_raw_value_type ref + unique int raw_value: @swift_expression ref ); swift_enum_entry_child( @@ -875,16 +669,7 @@ swift_enum_entry_def( unique int id: @swift_enum_entry ); -@swift_enum_type_parameters_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_enum_type_parameters, index] -swift_enum_type_parameters_name( - int swift_enum_type_parameters: @swift_enum_type_parameters ref, - int index: int ref, - unique int name: @swift_enum_type_parameters_name_type ref -); - -@swift_enum_type_parameters_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_token_wildcard_pattern | @swift_try_expression | @swift_tuple_expression | @swift_type_modifiers | @swift_value_pack_expansion | @swift_value_parameter_pack +@swift_enum_type_parameters_child_type = @swift_expression | @swift_token_wildcard_pattern | @swift_type__ #keyset[swift_enum_type_parameters, index] swift_enum_type_parameters_child( @@ -897,25 +682,7 @@ swift_enum_type_parameters_def( unique int id: @swift_enum_type_parameters ); -@swift_equality_constraint_constrained_type_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_identifier | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_reserved_word | @swift_suppressed_constraint | @swift_token_simple_identifier | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_equality_constraint, index] -swift_equality_constraint_constrained_type( - int swift_equality_constraint: @swift_equality_constraint ref, - int index: int ref, - unique int constrained_type: @swift_equality_constraint_constrained_type_type ref -); - -@swift_equality_constraint_must_equal_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_equality_constraint, index] -swift_equality_constraint_must_equal( - int swift_equality_constraint: @swift_equality_constraint ref, - int index: int ref, - unique int must_equal: @swift_equality_constraint_must_equal_type ref -); - -@swift_equality_constraint_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type +@swift_equality_constraint_constrained_type_type = @swift_identifier | @swift_nested_type_identifier #keyset[swift_equality_constraint, index] swift_equality_constraint_child( @@ -926,16 +693,8 @@ swift_equality_constraint_child( swift_equality_constraint_def( unique int id: @swift_equality_constraint, - int name: @swift_equality_constraint_name_type ref -); - -@swift_equality_expression_lhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_equality_expression, index] -swift_equality_expression_lhs( - int swift_equality_expression: @swift_equality_expression ref, - int index: int ref, - unique int lhs: @swift_equality_expression_lhs_type ref + int constrained_type: @swift_equality_constraint_constrained_type_type ref, + int must_equal: @swift_type__ ref ); case @swift_equality_expression.op of @@ -946,41 +705,25 @@ case @swift_equality_expression.op of ; -@swift_equality_expression_rhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_equality_expression, index] -swift_equality_expression_rhs( - int swift_equality_expression: @swift_equality_expression ref, - int index: int ref, - unique int rhs: @swift_equality_expression_rhs_type ref -); - swift_equality_expression_def( unique int id: @swift_equality_expression, - int op: int ref + int lhs: @swift_expression ref, + int op: int ref, + int rhs: @swift_expression ref ); -@swift_existential_type_child_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - swift_existential_type_def( unique int id: @swift_existential_type, - int child: @swift_existential_type_child_type ref + int child: @swift_unannotated_type ref ); +@swift_expression = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_optional_chain_marker | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_referenceable_operator | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack + swift_external_macro_definition_def( unique int id: @swift_external_macro_definition, int child: @swift_value_arguments ref ); -@swift_for_statement_collection_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_for_statement, index] -swift_for_statement_collection( - int swift_for_statement: @swift_for_statement ref, - int index: int ref, - unique int collection: @swift_for_statement_collection_type ref -); - @swift_for_statement_child_type = @swift_statements | @swift_token_try_operator | @swift_type_annotation | @swift_where_clause #keyset[swift_for_statement, index] @@ -992,6 +735,7 @@ swift_for_statement_child( swift_for_statement_def( unique int id: @swift_for_statement, + int collection: @swift_expression ref, int item: @swift_pattern ref ); @@ -1004,30 +748,19 @@ swift_function_body_def( unique int id: @swift_function_body ); -@swift_function_declaration_default_value_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - #keyset[swift_function_declaration, index] swift_function_declaration_default_value( int swift_function_declaration: @swift_function_declaration ref, int index: int ref, - unique int default_value: @swift_function_declaration_default_value_type ref + unique int default_value: @swift_expression ref ); -@swift_function_declaration_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_reserved_word | @swift_suppressed_constraint | @swift_token_bang | @swift_token_custom_operator | @swift_token_simple_identifier | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type +@swift_function_declaration_name_type = @swift_referenceable_operator | @swift_token_simple_identifier -#keyset[swift_function_declaration, index] -swift_function_declaration_name( - int swift_function_declaration: @swift_function_declaration ref, - int index: int ref, - unique int name: @swift_function_declaration_name_type ref -); +@swift_function_declaration_return_type_type = @swift_implicitly_unwrapped_type | @swift_type__ -@swift_function_declaration_return_type_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_reserved_word | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_function_declaration, index] swift_function_declaration_return_type( - int swift_function_declaration: @swift_function_declaration ref, - int index: int ref, + unique int swift_function_declaration: @swift_function_declaration ref, unique int return_type: @swift_function_declaration_return_type_type ref ); @@ -1042,20 +775,8 @@ swift_function_declaration_child( swift_function_declaration_def( unique int id: @swift_function_declaration, - int body: @swift_function_body ref -); - -@swift_function_type_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -@swift_function_type_params_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -@swift_function_type_return_type_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_function_type, index] -swift_function_type_return_type( - int swift_function_type: @swift_function_type ref, - int index: int ref, - unique int return_type: @swift_function_type_return_type_type ref + int body: @swift_function_body ref, + int name: @swift_function_declaration_name_type ref ); @swift_function_type_child_type = @swift_throws_clause | @swift_token_throws @@ -1067,8 +788,8 @@ swift_function_type_child( swift_function_type_def( unique int id: @swift_function_type, - int name: @swift_function_type_name_type ref, - int params: @swift_function_type_params_type ref + int params: @swift_unannotated_type ref, + int return_type: @swift_type__ ref ); @swift_getter_specifier_child_type = @swift_throws_clause | @swift_token_mutation_modifier | @swift_token_throws @@ -1084,29 +805,13 @@ swift_getter_specifier_def( unique int id: @swift_getter_specifier ); -#keyset[swift_guard_statement, index] -swift_guard_statement_bound_identifier( - int swift_guard_statement: @swift_guard_statement ref, - int index: int ref, - unique int bound_identifier: @swift_token_simple_identifier ref -); - -@swift_guard_statement_condition_type = @swift_additive_expression | @swift_array_literal | @swift_array_type | @swift_as_expression | @swift_assignment | @swift_availability_condition | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_dictionary_type | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_existential_type | @swift_function_type | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_metatype | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_opaque_type | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_optional_type | @swift_pattern | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_protocol_composition_type | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_suppressed_constraint | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_token_wildcard_pattern | @swift_try_expression | @swift_tuple_expression | @swift_tuple_type | @swift_type_annotation | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type | @swift_value_binding_pattern | @swift_value_pack_expansion | @swift_value_parameter_pack | @swift_where_clause +@swift_global_declaration = @swift_associatedtype_declaration | @swift_class_declaration | @swift_function_declaration | @swift_import_declaration | @swift_init_declaration | @swift_macro_declaration | @swift_operator_declaration | @swift_precedence_group_declaration | @swift_property_declaration | @swift_protocol_declaration | @swift_typealias_declaration #keyset[swift_guard_statement, index] swift_guard_statement_condition( int swift_guard_statement: @swift_guard_statement ref, int index: int ref, - unique int condition: @swift_guard_statement_condition_type ref -); - -@swift_guard_statement_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_guard_statement, index] -swift_guard_statement_name( - int swift_guard_statement: @swift_guard_statement ref, - int index: int ref, - unique int name: @swift_guard_statement_name_type ref + unique int condition: @swift_if_condition ref ); @swift_guard_statement_child_type = @swift_statements | @swift_token_else @@ -1133,29 +838,36 @@ swift_identifier_def( unique int id: @swift_identifier ); -#keyset[swift_if_statement, index] -swift_if_statement_bound_identifier( - int swift_if_statement: @swift_if_statement ref, - int index: int ref, +@swift_if_condition_child_type = @swift_availability_condition | @swift_expression | @swift_if_let_binding + +swift_if_condition_def( + unique int id: @swift_if_condition, + int child: @swift_if_condition_child_type ref +); + +swift_if_let_binding_bound_identifier( + unique int swift_if_let_binding: @swift_if_let_binding ref, unique int bound_identifier: @swift_token_simple_identifier ref ); -@swift_if_statement_condition_type = @swift_additive_expression | @swift_array_literal | @swift_array_type | @swift_as_expression | @swift_assignment | @swift_availability_condition | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_dictionary_type | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_existential_type | @swift_function_type | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_metatype | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_opaque_type | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_optional_type | @swift_pattern | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_protocol_composition_type | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_suppressed_constraint | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_token_wildcard_pattern | @swift_try_expression | @swift_tuple_expression | @swift_tuple_type | @swift_type_annotation | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type | @swift_value_binding_pattern | @swift_value_pack_expansion | @swift_value_parameter_pack | @swift_where_clause +@swift_if_let_binding_child_type = @swift_expression | @swift_pattern | @swift_token_wildcard_pattern | @swift_type__ | @swift_type_annotation | @swift_user_type | @swift_value_binding_pattern | @swift_where_clause + +#keyset[swift_if_let_binding, index] +swift_if_let_binding_child( + int swift_if_let_binding: @swift_if_let_binding ref, + int index: int ref, + unique int child: @swift_if_let_binding_child_type ref +); + +swift_if_let_binding_def( + unique int id: @swift_if_let_binding +); #keyset[swift_if_statement, index] swift_if_statement_condition( int swift_if_statement: @swift_if_statement ref, int index: int ref, - unique int condition: @swift_if_statement_condition_type ref -); - -@swift_if_statement_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_if_statement, index] -swift_if_statement_name( - int swift_if_statement: @swift_if_statement ref, - int index: int ref, - unique int name: @swift_if_statement_name_type ref + unique int condition: @swift_if_condition ref ); @swift_if_statement_child_type = @swift_if_statement | @swift_statements | @swift_token_else @@ -1171,6 +883,11 @@ swift_if_statement_def( unique int id: @swift_if_statement ); +swift_implicitly_unwrapped_type_def( + unique int id: @swift_implicitly_unwrapped_type, + int child: @swift_type__ ref +); + @swift_import_declaration_child_type = @swift_identifier | @swift_modifiers #keyset[swift_import_declaration, index] @@ -1184,48 +901,16 @@ swift_import_declaration_def( unique int id: @swift_import_declaration ); -@swift_infix_expression_lhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_infix_expression, index] -swift_infix_expression_lhs( - int swift_infix_expression: @swift_infix_expression ref, - int index: int ref, - unique int lhs: @swift_infix_expression_lhs_type ref -); - -@swift_infix_expression_rhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_infix_expression, index] -swift_infix_expression_rhs( - int swift_infix_expression: @swift_infix_expression ref, - int index: int ref, - unique int rhs: @swift_infix_expression_rhs_type ref -); - swift_infix_expression_def( unique int id: @swift_infix_expression, - int op: @swift_token_custom_operator ref + int lhs: @swift_expression ref, + int op: @swift_token_custom_operator ref, + int rhs: @swift_expression ref ); -@swift_inheritance_constraint_constrained_type_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_identifier | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_reserved_word | @swift_suppressed_constraint | @swift_token_simple_identifier | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type +@swift_inheritance_constraint_constrained_type_type = @swift_identifier | @swift_nested_type_identifier -#keyset[swift_inheritance_constraint, index] -swift_inheritance_constraint_constrained_type( - int swift_inheritance_constraint: @swift_inheritance_constraint ref, - int index: int ref, - unique int constrained_type: @swift_inheritance_constraint_constrained_type_type ref -); - -@swift_inheritance_constraint_inherits_from_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_reserved_word | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_inheritance_constraint, index] -swift_inheritance_constraint_inherits_from( - int swift_inheritance_constraint: @swift_inheritance_constraint ref, - int index: int ref, - unique int inherits_from: @swift_inheritance_constraint_inherits_from_type ref -); - -@swift_inheritance_constraint_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type +@swift_inheritance_constraint_inherits_from_type = @swift_implicitly_unwrapped_type | @swift_type__ #keyset[swift_inheritance_constraint, index] swift_inheritance_constraint_child( @@ -1236,7 +921,8 @@ swift_inheritance_constraint_child( swift_inheritance_constraint_def( unique int id: @swift_inheritance_constraint, - int name: @swift_inheritance_constraint_name_type ref + int constrained_type: @swift_inheritance_constraint_constrained_type_type ref, + int inherits_from: @swift_inheritance_constraint_inherits_from_type ref ); @swift_inheritance_specifier_inherits_from_type = @swift_function_type | @swift_suppressed_constraint | @swift_user_type @@ -1251,13 +937,11 @@ swift_init_declaration_body( unique int body: @swift_function_body ref ); -@swift_init_declaration_default_value_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - #keyset[swift_init_declaration, index] swift_init_declaration_default_value( int swift_init_declaration: @swift_init_declaration ref, int index: int ref, - unique int default_value: @swift_init_declaration_default_value_type ref + unique int default_value: @swift_expression ref ); case @swift_init_declaration.name of @@ -1291,13 +975,9 @@ swift_interpolated_expression_reference_specifier( unique int reference_specifier: @swift_value_argument_label ref ); -@swift_interpolated_expression_value_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_interpolated_expression, index] swift_interpolated_expression_value( - int swift_interpolated_expression: @swift_interpolated_expression ref, - int index: int ref, - unique int value: @swift_interpolated_expression_value_type ref + unique int swift_interpolated_expression: @swift_interpolated_expression ref, + unique int value: @swift_expression ref ); swift_interpolated_expression_child( @@ -1322,30 +1002,15 @@ swift_key_path_expression_def( unique int id: @swift_key_path_expression ); -@swift_key_path_string_expression_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -swift_key_path_string_expression_child( - unique int swift_key_path_string_expression: @swift_key_path_string_expression ref, - unique int child: @swift_key_path_string_expression_child_type ref -); - swift_key_path_string_expression_def( - unique int id: @swift_key_path_string_expression + unique int id: @swift_key_path_string_expression, + int child: @swift_expression ref ); -@swift_lambda_function_type_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type +@swift_lambda_function_type_return_type_type = @swift_implicitly_unwrapped_type | @swift_type__ -swift_lambda_function_type_name( - unique int swift_lambda_function_type: @swift_lambda_function_type ref, - unique int name: @swift_lambda_function_type_name_type ref -); - -@swift_lambda_function_type_return_type_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_reserved_word | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_lambda_function_type, index] swift_lambda_function_type_return_type( - int swift_lambda_function_type: @swift_lambda_function_type ref, - int index: int ref, + unique int swift_lambda_function_type: @swift_lambda_function_type ref, unique int return_type: @swift_lambda_function_type_return_type_type ref ); @@ -1401,21 +1066,15 @@ swift_lambda_parameter_external_name( unique int external_name: @swift_token_simple_identifier ref ); -@swift_lambda_parameter_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_token_simple_identifier | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_lambda_parameter, index] swift_lambda_parameter_name( - int swift_lambda_parameter: @swift_lambda_parameter ref, - int index: int ref, - unique int name: @swift_lambda_parameter_name_type ref + unique int swift_lambda_parameter: @swift_lambda_parameter ref, + unique int name: @swift_token_simple_identifier ref ); -@swift_lambda_parameter_type_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_reserved_word | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type +@swift_lambda_parameter_type_type = @swift_implicitly_unwrapped_type | @swift_type__ -#keyset[swift_lambda_parameter, index] swift_lambda_parameter_type( - int swift_lambda_parameter: @swift_lambda_parameter ref, - int index: int ref, + unique int swift_lambda_parameter: @swift_lambda_parameter ref, unique int type__: @swift_lambda_parameter_type_type ref ); @@ -1450,13 +1109,13 @@ swift_line_string_literal_def( unique int id: @swift_line_string_literal ); -@swift_macro_declaration_default_value_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack +@swift_local_declaration = @swift_class_declaration | @swift_function_declaration | @swift_property_declaration | @swift_typealias_declaration #keyset[swift_macro_declaration, index] swift_macro_declaration_default_value( int swift_macro_declaration: @swift_macro_declaration ref, int index: int ref, - unique int default_value: @swift_macro_declaration_default_value_type ref + unique int default_value: @swift_expression ref ); swift_macro_declaration_definition( @@ -1464,7 +1123,7 @@ swift_macro_declaration_definition( unique int definition: @swift_macro_definition ref ); -@swift_macro_declaration_child_type = @swift_array_type | @swift_attribute | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_modifiers | @swift_opaque_type | @swift_optional_type | @swift_parameter | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_token_simple_identifier | @swift_tuple_type | @swift_type_constraints | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_type_parameters | @swift_user_type +@swift_macro_declaration_child_type = @swift_attribute | @swift_modifiers | @swift_parameter | @swift_token_simple_identifier | @swift_type_constraints | @swift_type_parameters | @swift_unannotated_type #keyset[swift_macro_declaration, index] swift_macro_declaration_child( @@ -1477,17 +1136,11 @@ swift_macro_declaration_def( unique int id: @swift_macro_declaration ); -@swift_macro_definition_body_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_external_macro_definition | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_macro_definition, index] -swift_macro_definition_body( - int swift_macro_definition: @swift_macro_definition ref, - int index: int ref, - unique int body: @swift_macro_definition_body_type ref -); +@swift_macro_definition_body_type = @swift_expression | @swift_external_macro_definition swift_macro_definition_def( - unique int id: @swift_macro_definition + unique int id: @swift_macro_definition, + int body: @swift_macro_definition_body_type ref ); @swift_macro_invocation_child_type = @swift_call_suffix | @swift_token_simple_identifier | @swift_type_parameters @@ -1503,11 +1156,9 @@ swift_macro_invocation_def( unique int id: @swift_macro_invocation ); -@swift_metatype_child_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - swift_metatype_def( unique int id: @swift_metatype, - int child: @swift_metatype_child_type ref + int child: @swift_unannotated_type ref ); @swift_modifiers_child_type = @swift_attribute | @swift_token_function_modifier | @swift_token_inheritance_modifier | @swift_token_member_modifier | @swift_token_mutation_modifier | @swift_token_ownership_modifier | @swift_token_parameter_modifier | @swift_token_property_behavior_modifier | @swift_token_property_modifier | @swift_token_visibility_modifier @@ -1552,15 +1203,6 @@ swift_multi_line_string_literal_def( unique int id: @swift_multi_line_string_literal ); -@swift_multiplicative_expression_lhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_multiplicative_expression, index] -swift_multiplicative_expression_lhs( - int swift_multiplicative_expression: @swift_multiplicative_expression ref, - int index: int ref, - unique int lhs: @swift_multiplicative_expression_lhs_type ref -); - case @swift_multiplicative_expression.op of 0 = @swift_multiplicative_expression_percent | 1 = @swift_multiplicative_expression_star @@ -1568,28 +1210,14 @@ case @swift_multiplicative_expression.op of ; -@swift_multiplicative_expression_rhs_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_multiplicative_expression, index] -swift_multiplicative_expression_rhs( - int swift_multiplicative_expression: @swift_multiplicative_expression ref, - int index: int ref, - unique int rhs: @swift_multiplicative_expression_rhs_type ref -); - swift_multiplicative_expression_def( unique int id: @swift_multiplicative_expression, - int op: int ref + int lhs: @swift_expression ref, + int op: int ref, + int rhs: @swift_expression ref ); -@swift_navigation_expression_element_type = @swift_dictionary_type | @swift_existential_type | @swift_opaque_type - -swift_navigation_expression_element( - unique int swift_navigation_expression: @swift_navigation_expression ref, - unique int element: @swift_navigation_expression_element_type ref -); - -@swift_navigation_expression_target_type = @swift_additive_expression | @swift_array_literal | @swift_array_type | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_dictionary_type | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_existential_type | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_opaque_type | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_user_type | @swift_value_pack_expansion | @swift_value_parameter_pack +@swift_navigation_expression_target_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_expression | @swift_opaque_type | @swift_reserved_word | @swift_user_type #keyset[swift_navigation_expression, index] swift_navigation_expression_target( @@ -1610,62 +1238,41 @@ swift_navigation_suffix_def( int suffix: @swift_navigation_suffix_suffix_type ref ); -@swift_nil_coalescing_expression_if_nil_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack +@swift_nested_type_identifier_child_type = @swift_token_simple_identifier | @swift_unannotated_type -#keyset[swift_nil_coalescing_expression, index] -swift_nil_coalescing_expression_if_nil( - int swift_nil_coalescing_expression: @swift_nil_coalescing_expression ref, +#keyset[swift_nested_type_identifier, index] +swift_nested_type_identifier_child( + int swift_nested_type_identifier: @swift_nested_type_identifier ref, int index: int ref, - unique int if_nil: @swift_nil_coalescing_expression_if_nil_type ref + unique int child: @swift_nested_type_identifier_child_type ref ); -@swift_nil_coalescing_expression_value_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_nil_coalescing_expression, index] -swift_nil_coalescing_expression_value( - int swift_nil_coalescing_expression: @swift_nil_coalescing_expression ref, - int index: int ref, - unique int value: @swift_nil_coalescing_expression_value_type ref +swift_nested_type_identifier_def( + unique int id: @swift_nested_type_identifier ); swift_nil_coalescing_expression_def( - unique int id: @swift_nil_coalescing_expression + unique int id: @swift_nil_coalescing_expression, + int if_nil: @swift_expression ref, + int value: @swift_expression ref ); -@swift_opaque_type_child_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - swift_opaque_type_def( unique int id: @swift_opaque_type, - int child: @swift_opaque_type_child_type ref -); - -@swift_open_end_range_expression_start_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_open_end_range_expression, index] -swift_open_end_range_expression_start( - int swift_open_end_range_expression: @swift_open_end_range_expression ref, - int index: int ref, - unique int start: @swift_open_end_range_expression_start_type ref + int child: @swift_unannotated_type ref ); swift_open_end_range_expression_def( - unique int id: @swift_open_end_range_expression -); - -@swift_open_start_range_expression_end_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_open_start_range_expression, index] -swift_open_start_range_expression_end( - int swift_open_start_range_expression: @swift_open_start_range_expression ref, - int index: int ref, - unique int end: @swift_open_start_range_expression_end_type ref + unique int id: @swift_open_end_range_expression, + int start: @swift_expression ref ); swift_open_start_range_expression_def( - unique int id: @swift_open_start_range_expression + unique int id: @swift_open_start_range_expression, + int end: @swift_expression ref ); -@swift_operator_declaration_child_type = @swift_deprecated_operator_declaration_body | @swift_token_bang | @swift_token_custom_operator | @swift_token_simple_identifier +@swift_operator_declaration_child_type = @swift_deprecated_operator_declaration_body | @swift_referenceable_operator | @swift_token_simple_identifier #keyset[swift_operator_declaration, index] swift_operator_declaration_child( @@ -1678,6 +1285,11 @@ swift_operator_declaration_def( unique int id: @swift_operator_declaration ); +swift_optional_chain_marker_def( + unique int id: @swift_optional_chain_marker, + int child: @swift_expression ref +); + @swift_optional_type_wrapped_type = @swift_array_type | @swift_dictionary_type | @swift_tuple_type | @swift_user_type swift_optional_type_def( @@ -1690,23 +1302,7 @@ swift_parameter_external_name( unique int external_name: @swift_token_simple_identifier ref ); -@swift_parameter_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_token_simple_identifier | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_parameter, index] -swift_parameter_name( - int swift_parameter: @swift_parameter ref, - int index: int ref, - unique int name: @swift_parameter_name_type ref -); - -@swift_parameter_type_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_reserved_word | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_parameter, index] -swift_parameter_type( - int swift_parameter: @swift_parameter ref, - int index: int ref, - unique int type__: @swift_parameter_type_type ref -); +@swift_parameter_type_type = @swift_implicitly_unwrapped_type | @swift_type__ swift_parameter_child( unique int swift_parameter: @swift_parameter ref, @@ -1714,7 +1310,9 @@ swift_parameter_child( ); swift_parameter_def( - unique int id: @swift_parameter + unique int id: @swift_parameter, + int name: @swift_token_simple_identifier ref, + int type__: @swift_parameter_type_type ref ); #keyset[swift_parameter_modifiers, index] @@ -1733,14 +1331,7 @@ swift_pattern_bound_identifier( unique int bound_identifier: @swift_token_simple_identifier ref ); -@swift_pattern_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -swift_pattern_name( - unique int swift_pattern: @swift_pattern ref, - unique int name: @swift_pattern_name_type ref -); - -@swift_pattern_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_pattern | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_token_wildcard_pattern | @swift_try_expression | @swift_tuple_expression | @swift_type_modifiers | @swift_user_type | @swift_value_binding_pattern | @swift_value_pack_expansion | @swift_value_parameter_pack +@swift_pattern_child_type = @swift_expression | @swift_pattern | @swift_token_wildcard_pattern | @swift_type__ | @swift_user_type | @swift_value_binding_pattern #keyset[swift_pattern, index] swift_pattern_child( @@ -1753,13 +1344,11 @@ swift_pattern_def( unique int id: @swift_pattern ); -@swift_playground_literal_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - #keyset[swift_playground_literal, index] swift_playground_literal_child( int swift_playground_literal: @swift_playground_literal ref, int index: int ref, - unique int child: @swift_playground_literal_child_type ref + unique int child: @swift_expression ref ); swift_playground_literal_def( @@ -1768,18 +1357,10 @@ swift_playground_literal_def( @swift_postfix_expression_operation_type = @swift_reserved_word | @swift_token_bang -@swift_postfix_expression_target_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_postfix_expression, index] -swift_postfix_expression_target( - int swift_postfix_expression: @swift_postfix_expression ref, - int index: int ref, - unique int target: @swift_postfix_expression_target_type ref -); - swift_postfix_expression_def( unique int id: @swift_postfix_expression, - int operation: @swift_postfix_expression_operation_type ref + int operation: @swift_postfix_expression_operation_type ref, + int target: @swift_expression ref ); @swift_precedence_group_attribute_child_type = @swift_token_boolean_literal | @swift_token_simple_identifier @@ -1821,18 +1402,10 @@ swift_precedence_group_declaration_def( @swift_prefix_expression_operation_type = @swift_reserved_word | @swift_token_bang | @swift_token_custom_operator -@swift_prefix_expression_target_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token__expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_prefix_expression, index] -swift_prefix_expression_target( - int swift_prefix_expression: @swift_prefix_expression ref, - int index: int ref, - unique int target: @swift_prefix_expression_target_type ref -); - swift_prefix_expression_def( unique int id: @swift_prefix_expression, - int operation: @swift_prefix_expression_operation_type ref + int operation: @swift_prefix_expression_operation_type ref, + int target: @swift_expression ref ); #keyset[swift_property_declaration, index] @@ -1849,13 +1422,11 @@ swift_property_declaration_name( unique int name: @swift_pattern ref ); -@swift_property_declaration_value_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - #keyset[swift_property_declaration, index] swift_property_declaration_value( int swift_property_declaration: @swift_property_declaration ref, int index: int ref, - unique int value: @swift_property_declaration_value_type ref + unique int value: @swift_expression ref ); @swift_property_declaration_child_type = @swift_attribute | @swift_modifiers | @swift_token_inheritance_modifier | @swift_token_ownership_modifier | @swift_token_property_behavior_modifier | @swift_type_annotation | @swift_type_constraints | @swift_value_binding_pattern | @swift_willset_didset_block @@ -1871,33 +1442,22 @@ swift_property_declaration_def( unique int id: @swift_property_declaration ); -#keyset[swift_protocol_body, index] -swift_protocol_body_body( - int swift_protocol_body: @swift_protocol_body ref, - int index: int ref, - unique int body: @swift_protocol_function_declaration ref -); - -@swift_protocol_body_child_type = @swift_associatedtype_declaration | @swift_deinit_declaration | @swift_init_declaration | @swift_protocol_function_declaration | @swift_protocol_property_declaration | @swift_subscript_declaration | @swift_typealias_declaration - #keyset[swift_protocol_body, index] swift_protocol_body_child( int swift_protocol_body: @swift_protocol_body ref, int index: int ref, - unique int child: @swift_protocol_body_child_type ref + unique int child: @swift_protocol_member_declaration ref ); swift_protocol_body_def( unique int id: @swift_protocol_body ); -@swift_protocol_composition_type_child_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - #keyset[swift_protocol_composition_type, index] swift_protocol_composition_type_child( int swift_protocol_composition_type: @swift_protocol_composition_type ref, int index: int ref, - unique int child: @swift_protocol_composition_type_child_type ref + unique int child: @swift_unannotated_type ref ); swift_protocol_composition_type_def( @@ -1925,34 +1485,28 @@ swift_protocol_declaration_def( int name: @swift_token_type_identifier ref ); -@swift_protocol_function_declaration_default_value_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack +swift_protocol_function_declaration_body( + unique int swift_protocol_function_declaration: @swift_protocol_function_declaration ref, + unique int body: @swift_function_body ref +); #keyset[swift_protocol_function_declaration, index] swift_protocol_function_declaration_default_value( int swift_protocol_function_declaration: @swift_protocol_function_declaration ref, int index: int ref, - unique int default_value: @swift_protocol_function_declaration_default_value_type ref + unique int default_value: @swift_expression ref ); -@swift_protocol_function_declaration_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_reserved_word | @swift_suppressed_constraint | @swift_token_bang | @swift_token_custom_operator | @swift_token_simple_identifier | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type +@swift_protocol_function_declaration_name_type = @swift_referenceable_operator | @swift_token_simple_identifier -#keyset[swift_protocol_function_declaration, index] -swift_protocol_function_declaration_name( - int swift_protocol_function_declaration: @swift_protocol_function_declaration ref, - int index: int ref, - unique int name: @swift_protocol_function_declaration_name_type ref -); +@swift_protocol_function_declaration_return_type_type = @swift_implicitly_unwrapped_type | @swift_type__ -@swift_protocol_function_declaration_return_type_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_reserved_word | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_protocol_function_declaration, index] swift_protocol_function_declaration_return_type( - int swift_protocol_function_declaration: @swift_protocol_function_declaration ref, - int index: int ref, + unique int swift_protocol_function_declaration: @swift_protocol_function_declaration ref, unique int return_type: @swift_protocol_function_declaration_return_type_type ref ); -@swift_protocol_function_declaration_child_type = @swift_attribute | @swift_modifiers | @swift_parameter | @swift_statements | @swift_throws_clause | @swift_token_throws | @swift_type_constraints | @swift_type_parameters +@swift_protocol_function_declaration_child_type = @swift_attribute | @swift_modifiers | @swift_parameter | @swift_throws_clause | @swift_token_throws | @swift_type_constraints | @swift_type_parameters #keyset[swift_protocol_function_declaration, index] swift_protocol_function_declaration_child( @@ -1962,9 +1516,12 @@ swift_protocol_function_declaration_child( ); swift_protocol_function_declaration_def( - unique int id: @swift_protocol_function_declaration + unique int id: @swift_protocol_function_declaration, + int name: @swift_protocol_function_declaration_name_type ref ); +@swift_protocol_member_declaration = @swift_associatedtype_declaration | @swift_deinit_declaration | @swift_init_declaration | @swift_protocol_function_declaration | @swift_protocol_property_declaration | @swift_subscript_declaration | @swift_typealias_declaration + @swift_protocol_property_declaration_child_type = @swift_modifiers | @swift_protocol_property_requirements | @swift_type_annotation | @swift_type_constraints #keyset[swift_protocol_property_declaration, index] @@ -1992,33 +1549,17 @@ swift_protocol_property_requirements_def( unique int id: @swift_protocol_property_requirements ); -@swift_range_expression_end_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_range_expression, index] -swift_range_expression_end( - int swift_range_expression: @swift_range_expression ref, - int index: int ref, - unique int end: @swift_range_expression_end_type ref -); - case @swift_range_expression.op of 0 = @swift_range_expression_dotdotdot | 1 = @swift_range_expression_dotdotlangle ; -@swift_range_expression_start_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_range_expression, index] -swift_range_expression_start( - int swift_range_expression: @swift_range_expression ref, - int index: int ref, - unique int start: @swift_range_expression_start_type ref -); - swift_range_expression_def( unique int id: @swift_range_expression, - int op: int ref + int end: @swift_expression ref, + int op: int ref, + int start: @swift_expression ref ); #keyset[swift_raw_str_interpolation, index] @@ -2060,29 +1601,22 @@ swift_raw_string_literal_def( unique int id: @swift_raw_string_literal ); -#keyset[swift_repeat_while_statement, index] -swift_repeat_while_statement_bound_identifier( - int swift_repeat_while_statement: @swift_repeat_while_statement ref, - int index: int ref, - unique int bound_identifier: @swift_token_simple_identifier ref +@swift_referenceable_operator_child_type = @swift_token_bang | @swift_token_custom_operator + +swift_referenceable_operator_child( + unique int swift_referenceable_operator: @swift_referenceable_operator ref, + unique int child: @swift_referenceable_operator_child_type ref ); -@swift_repeat_while_statement_condition_type = @swift_additive_expression | @swift_array_literal | @swift_array_type | @swift_as_expression | @swift_assignment | @swift_availability_condition | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_dictionary_type | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_existential_type | @swift_function_type | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_metatype | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_opaque_type | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_optional_type | @swift_pattern | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_protocol_composition_type | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_suppressed_constraint | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_token_wildcard_pattern | @swift_try_expression | @swift_tuple_expression | @swift_tuple_type | @swift_type_annotation | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type | @swift_value_binding_pattern | @swift_value_pack_expansion | @swift_value_parameter_pack | @swift_where_clause +swift_referenceable_operator_def( + unique int id: @swift_referenceable_operator +); #keyset[swift_repeat_while_statement, index] swift_repeat_while_statement_condition( int swift_repeat_while_statement: @swift_repeat_while_statement ref, int index: int ref, - unique int condition: @swift_repeat_while_statement_condition_type ref -); - -@swift_repeat_while_statement_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_repeat_while_statement, index] -swift_repeat_while_statement_name( - int swift_repeat_while_statement: @swift_repeat_while_statement ref, - int index: int ref, - unique int name: @swift_repeat_while_statement_name_type ref + unique int condition: @swift_if_condition ref ); swift_repeat_while_statement_child( @@ -2094,15 +1628,9 @@ swift_repeat_while_statement_def( unique int id: @swift_repeat_while_statement ); -@swift_selector_expression_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -swift_selector_expression_child( - unique int swift_selector_expression: @swift_selector_expression ref, - unique int child: @swift_selector_expression_child_type ref -); - swift_selector_expression_def( - unique int id: @swift_selector_expression + unique int id: @swift_selector_expression, + int child: @swift_expression ref ); swift_setter_specifier_child( @@ -2114,7 +1642,7 @@ swift_setter_specifier_def( unique int id: @swift_setter_specifier ); -@swift_source_file_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_associatedtype_declaration | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_class_declaration | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_do_statement | @swift_equality_expression | @swift_for_statement | @swift_function_declaration | @swift_guard_statement | @swift_if_statement | @swift_import_declaration | @swift_infix_expression | @swift_init_declaration | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_declaration | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_operator_declaration | @swift_playground_literal | @swift_postfix_expression | @swift_precedence_group_declaration | @swift_prefix_expression | @swift_property_declaration | @swift_protocol_declaration | @swift_range_expression | @swift_raw_string_literal | @swift_repeat_while_statement | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_shebang_line | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_statement_label | @swift_token_super_expression | @swift_token_throw_keyword | @swift_try_expression | @swift_tuple_expression | @swift_typealias_declaration | @swift_value_pack_expansion | @swift_value_parameter_pack | @swift_while_statement +@swift_source_file_child_type = @swift_do_statement | @swift_expression | @swift_for_statement | @swift_global_declaration | @swift_guard_statement | @swift_repeat_while_statement | @swift_token_shebang_line | @swift_token_statement_label | @swift_token_throw_keyword | @swift_while_statement #keyset[swift_source_file, index] swift_source_file_child( @@ -2127,7 +1655,7 @@ swift_source_file_def( unique int id: @swift_source_file ); -@swift_statements_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_class_declaration | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_control_transfer_statement | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_do_statement | @swift_equality_expression | @swift_for_statement | @swift_function_declaration | @swift_guard_statement | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_property_declaration | @swift_range_expression | @swift_raw_string_literal | @swift_repeat_while_statement | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_statement_label | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_typealias_declaration | @swift_value_pack_expansion | @swift_value_parameter_pack | @swift_while_statement +@swift_statements_child_type = @swift_control_transfer_statement | @swift_do_statement | @swift_expression | @swift_for_statement | @swift_guard_statement | @swift_local_declaration | @swift_repeat_while_statement | @swift_token_statement_label | @swift_while_statement #keyset[swift_statements, index] swift_statements_child( @@ -2140,28 +1668,17 @@ swift_statements_def( unique int id: @swift_statements ); -@swift_subscript_declaration_default_value_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - #keyset[swift_subscript_declaration, index] swift_subscript_declaration_default_value( int swift_subscript_declaration: @swift_subscript_declaration ref, int index: int ref, - unique int default_value: @swift_subscript_declaration_default_value_type ref + unique int default_value: @swift_expression ref ); -@swift_subscript_declaration_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type +@swift_subscript_declaration_return_type_type = @swift_implicitly_unwrapped_type | @swift_type__ -swift_subscript_declaration_name( - unique int swift_subscript_declaration: @swift_subscript_declaration ref, - unique int name: @swift_subscript_declaration_name_type ref -); - -@swift_subscript_declaration_return_type_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_reserved_word | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_subscript_declaration, index] swift_subscript_declaration_return_type( - int swift_subscript_declaration: @swift_subscript_declaration ref, - int index: int ref, + unique int swift_subscript_declaration: @swift_subscript_declaration ref, unique int return_type: @swift_subscript_declaration_return_type_type ref ); @@ -2183,7 +1700,7 @@ swift_suppressed_constraint_def( int suppressed: @swift_token_type_identifier ref ); -@swift_switch_entry_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_modifiers | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_selector_expression | @swift_statements | @swift_switch_pattern | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_default_keyword | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_token_where_keyword | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack +@swift_switch_entry_child_type = @swift_expression | @swift_modifiers | @swift_statements | @swift_switch_pattern | @swift_token_default_keyword | @swift_token_where_keyword #keyset[swift_switch_entry, index] swift_switch_entry_child( @@ -2201,15 +1718,6 @@ swift_switch_pattern_def( int child: @swift_pattern ref ); -@swift_switch_statement_expr_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_switch_statement, index] -swift_switch_statement_expr( - int swift_switch_statement: @swift_switch_statement ref, - int index: int ref, - unique int expr: @swift_switch_statement_expr_type ref -); - #keyset[swift_switch_statement, index] swift_switch_statement_child( int swift_switch_statement: @swift_switch_statement ref, @@ -2218,58 +1726,25 @@ swift_switch_statement_child( ); swift_switch_statement_def( - unique int id: @swift_switch_statement -); - -@swift_ternary_expression_condition_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_ternary_expression, index] -swift_ternary_expression_condition( - int swift_ternary_expression: @swift_ternary_expression ref, - int index: int ref, - unique int condition: @swift_ternary_expression_condition_type ref -); - -@swift_ternary_expression_if_false_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_ternary_expression, index] -swift_ternary_expression_if_false( - int swift_ternary_expression: @swift_ternary_expression ref, - int index: int ref, - unique int if_false: @swift_ternary_expression_if_false_type ref -); - -@swift_ternary_expression_if_true_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_ternary_expression, index] -swift_ternary_expression_if_true( - int swift_ternary_expression: @swift_ternary_expression ref, - int index: int ref, - unique int if_true: @swift_ternary_expression_if_true_type ref + unique int id: @swift_switch_statement, + int expr: @swift_expression ref ); swift_ternary_expression_def( - unique int id: @swift_ternary_expression + unique int id: @swift_ternary_expression, + int condition: @swift_expression ref, + int if_false: @swift_expression ref, + int if_true: @swift_expression ref ); -@swift_throws_clause_type_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - swift_throws_clause_def( unique int id: @swift_throws_clause, - int type__: @swift_throws_clause_type_type ref -); - -@swift_try_expression_expr_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_try_expression, index] -swift_try_expression_expr( - int swift_try_expression: @swift_try_expression ref, - int index: int ref, - unique int expr: @swift_try_expression_expr_type ref + int type__: @swift_unannotated_type ref ); swift_try_expression_def( unique int id: @swift_try_expression, + int expr: @swift_expression ref, int child: @swift_token_try_operator ref ); @@ -2280,13 +1755,11 @@ swift_tuple_expression_name( unique int name: @swift_token_simple_identifier ref ); -@swift_tuple_expression_value_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - #keyset[swift_tuple_expression, index] swift_tuple_expression_value( int swift_tuple_expression: @swift_tuple_expression ref, int index: int ref, - unique int value: @swift_tuple_expression_value_type ref + unique int value: @swift_expression ref ); swift_tuple_expression_def( @@ -2309,32 +1782,17 @@ swift_tuple_type_def( unique int id: @swift_tuple_type ); -@swift_tuple_type_item_element_type = @swift_dictionary_type | @swift_existential_type | @swift_opaque_type - -swift_tuple_type_item_element( - unique int swift_tuple_type_item: @swift_tuple_type_item ref, - unique int element: @swift_tuple_type_item_element_type ref -); - -@swift_tuple_type_item_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_token_simple_identifier | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_tuple_type_item, index] swift_tuple_type_item_name( - int swift_tuple_type_item: @swift_tuple_type_item ref, - int index: int ref, - unique int name: @swift_tuple_type_item_name_type ref + unique int swift_tuple_type_item: @swift_tuple_type_item ref, + unique int name: @swift_token_simple_identifier ref ); -@swift_tuple_type_item_type_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_tuple_type_item, index] swift_tuple_type_item_type( - int swift_tuple_type_item: @swift_tuple_type_item ref, - int index: int ref, - unique int type__: @swift_tuple_type_item_type_type ref + unique int swift_tuple_type_item: @swift_tuple_type_item ref, + unique int type__: @swift_type__ ref ); -@swift_tuple_type_item_child_type = @swift_parameter_modifiers | @swift_token_wildcard_pattern +@swift_tuple_type_item_child_type = @swift_dictionary_type | @swift_existential_type | @swift_opaque_type | @swift_parameter_modifiers | @swift_token_wildcard_pattern #keyset[swift_tuple_type_item, index] swift_tuple_type_item_child( @@ -2347,36 +1805,28 @@ swift_tuple_type_item_def( unique int id: @swift_tuple_type_item ); -@swift_type_annotation_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -@swift_type_annotation_type_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_reserved_word | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_type_annotation, index] -swift_type_annotation_type( - int swift_type_annotation: @swift_type_annotation ref, - int index: int ref, - unique int type__: @swift_type_annotation_type_type ref +swift_type_modifiers( + unique int swift_type__: @swift_type__ ref, + unique int modifiers: @swift_type_modifiers ref ); +swift_type_def( + unique int id: @swift_type__, + int name: @swift_unannotated_type ref +); + +@swift_type_annotation_type_type = @swift_implicitly_unwrapped_type | @swift_type__ + swift_type_annotation_def( unique int id: @swift_type_annotation, - int name: @swift_type_annotation_name_type ref -); - -@swift_type_arguments_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_type_arguments, index] -swift_type_arguments_name( - int swift_type_arguments: @swift_type_arguments ref, - int index: int ref, - unique int name: @swift_type_arguments_name_type ref + int type__: @swift_type_annotation_type_type ref ); #keyset[swift_type_arguments, index] swift_type_arguments_child( int swift_type_arguments: @swift_type_arguments ref, int index: int ref, - unique int child: @swift_type_modifiers ref + unique int child: @swift_type__ ref ); swift_type_arguments_def( @@ -2403,6 +1853,8 @@ swift_type_constraints_def( unique int id: @swift_type_constraints ); +@swift_type_level_declaration = @swift_associatedtype_declaration | @swift_class_declaration | @swift_deinit_declaration | @swift_function_declaration | @swift_import_declaration | @swift_init_declaration | @swift_operator_declaration | @swift_precedence_group_declaration | @swift_property_declaration | @swift_protocol_declaration | @swift_subscript_declaration | @swift_typealias_declaration + #keyset[swift_type_modifiers, index] swift_type_modifiers_child( int swift_type_modifiers: @swift_type_modifiers ref, @@ -2414,21 +1866,12 @@ swift_type_modifiers_def( unique int id: @swift_type_modifiers ); -@swift_type_pack_expansion_child_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - swift_type_pack_expansion_def( unique int id: @swift_type_pack_expansion, - int child: @swift_type_pack_expansion_child_type ref + int child: @swift_unannotated_type ref ); -@swift_type_parameter_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -swift_type_parameter_name( - unique int swift_type_parameter: @swift_type_parameter ref, - unique int name: @swift_type_parameter_name_type ref -); - -@swift_type_parameter_child_type = @swift_token_type_identifier | @swift_type_modifiers | @swift_type_parameter_modifiers | @swift_type_parameter_pack +@swift_type_parameter_child_type = @swift_token_type_identifier | @swift_type__ | @swift_type_parameter_modifiers | @swift_type_parameter_pack #keyset[swift_type_parameter, index] swift_type_parameter_child( @@ -2452,11 +1895,9 @@ swift_type_parameter_modifiers_def( unique int id: @swift_type_parameter_modifiers ); -@swift_type_parameter_pack_child_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - swift_type_parameter_pack_def( unique int id: @swift_type_parameter_pack, - int child: @swift_type_parameter_pack_child_type ref + int child: @swift_unannotated_type ref ); @swift_type_parameters_child_type = @swift_type_constraints | @swift_type_parameter @@ -2472,24 +1913,6 @@ swift_type_parameters_def( unique int id: @swift_type_parameters ); -@swift_typealias_declaration_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_token_type_identifier | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_typealias_declaration, index] -swift_typealias_declaration_name( - int swift_typealias_declaration: @swift_typealias_declaration ref, - int index: int ref, - unique int name: @swift_typealias_declaration_name_type ref -); - -@swift_typealias_declaration_value_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_typealias_declaration, index] -swift_typealias_declaration_value( - int swift_typealias_declaration: @swift_typealias_declaration ref, - int index: int ref, - unique int value: @swift_typealias_declaration_value_type ref -); - @swift_typealias_declaration_child_type = @swift_attribute | @swift_modifiers | @swift_token_inheritance_modifier | @swift_token_ownership_modifier | @swift_token_property_behavior_modifier | @swift_type_parameters #keyset[swift_typealias_declaration, index] @@ -2500,9 +1923,13 @@ swift_typealias_declaration_child( ); swift_typealias_declaration_def( - unique int id: @swift_typealias_declaration + unique int id: @swift_typealias_declaration, + int name: @swift_token_type_identifier ref, + int value: @swift_type__ ref ); +@swift_unannotated_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type + @swift_user_type_child_type = @swift_token_type_identifier | @swift_type_arguments #keyset[swift_user_type, index] @@ -2528,13 +1955,9 @@ swift_value_argument_reference_specifier( unique int reference_specifier: @swift_value_argument_label ref ); -@swift_value_argument_value_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -#keyset[swift_value_argument, index] swift_value_argument_value( - int swift_value_argument: @swift_value_argument ref, - int index: int ref, - unique int value: @swift_value_argument_value_type ref + unique int swift_value_argument: @swift_value_argument ref, + unique int value: @swift_expression ref ); swift_value_argument_child( @@ -2573,29 +1996,17 @@ swift_value_binding_pattern_def( int mutability: int ref ); -@swift_value_pack_expansion_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -swift_value_pack_expansion_child( - unique int swift_value_pack_expansion: @swift_value_pack_expansion ref, - unique int child: @swift_value_pack_expansion_child_type ref -); - swift_value_pack_expansion_def( - unique int id: @swift_value_pack_expansion -); - -@swift_value_parameter_pack_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack - -swift_value_parameter_pack_child( - unique int swift_value_parameter_pack: @swift_value_parameter_pack ref, - unique int child: @swift_value_parameter_pack_child_type ref + unique int id: @swift_value_pack_expansion, + int child: @swift_expression ref ); swift_value_parameter_pack_def( - unique int id: @swift_value_parameter_pack + unique int id: @swift_value_parameter_pack, + int child: @swift_expression ref ); -@swift_where_clause_child_type = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_token_where_keyword | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack +@swift_where_clause_child_type = @swift_expression | @swift_token_where_keyword #keyset[swift_where_clause, index] swift_where_clause_child( @@ -2608,29 +2019,11 @@ swift_where_clause_def( unique int id: @swift_where_clause ); -#keyset[swift_while_statement, index] -swift_while_statement_bound_identifier( - int swift_while_statement: @swift_while_statement ref, - int index: int ref, - unique int bound_identifier: @swift_token_simple_identifier ref -); - -@swift_while_statement_condition_type = @swift_additive_expression | @swift_array_literal | @swift_array_type | @swift_as_expression | @swift_assignment | @swift_availability_condition | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_dictionary_type | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_existential_type | @swift_function_type | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_metatype | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_opaque_type | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_optional_type | @swift_pattern | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_protocol_composition_type | @swift_range_expression | @swift_raw_string_literal | @swift_reserved_word | @swift_selector_expression | @swift_suppressed_constraint | @swift_switch_statement | @swift_ternary_expression | @swift_token_bang | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_custom_operator | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_token_wildcard_pattern | @swift_try_expression | @swift_tuple_expression | @swift_tuple_type | @swift_type_annotation | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type | @swift_value_binding_pattern | @swift_value_pack_expansion | @swift_value_parameter_pack | @swift_where_clause - #keyset[swift_while_statement, index] swift_while_statement_condition( int swift_while_statement: @swift_while_statement ref, int index: int ref, - unique int condition: @swift_while_statement_condition_type ref -); - -@swift_while_statement_name_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type - -#keyset[swift_while_statement, index] -swift_while_statement_name( - int swift_while_statement: @swift_while_statement ref, - int index: int ref, - unique int name: @swift_while_statement_name_type ref + unique int condition: @swift_if_condition ref ); swift_while_statement_child( @@ -2676,56 +2069,55 @@ swift_tokeninfo( case @swift_token.kind of 0 = @swift_reserved_word -| 1 = @swift_token__expression -| 2 = @swift_token_as_operator -| 3 = @swift_token_bang -| 4 = @swift_token_bin_literal -| 5 = @swift_token_boolean_literal -| 6 = @swift_token_catch_keyword -| 7 = @swift_token_comment -| 8 = @swift_token_custom_operator -| 9 = @swift_token_default_keyword -| 10 = @swift_token_diagnostic -| 11 = @swift_token_else -| 12 = @swift_token_fully_open_range -| 13 = @swift_token_function_modifier -| 14 = @swift_token_hex_literal -| 15 = @swift_token_inheritance_modifier -| 16 = @swift_token_integer_literal -| 17 = @swift_token_line_str_text -| 18 = @swift_token_member_modifier -| 19 = @swift_token_multi_line_str_text -| 20 = @swift_token_multiline_comment -| 21 = @swift_token_mutation_modifier -| 22 = @swift_token_oct_literal -| 23 = @swift_token_ownership_modifier -| 24 = @swift_token_parameter_modifier -| 25 = @swift_token_property_behavior_modifier -| 26 = @swift_token_property_modifier -| 27 = @swift_token_raw_str_continuing_indicator -| 28 = @swift_token_raw_str_end_part -| 29 = @swift_token_raw_str_interpolation_start -| 30 = @swift_token_raw_str_part -| 31 = @swift_token_real_literal -| 32 = @swift_token_regex_literal -| 33 = @swift_token_self_expression -| 34 = @swift_token_shebang_line -| 35 = @swift_token_simple_identifier -| 36 = @swift_token_special_literal -| 37 = @swift_token_statement_label -| 38 = @swift_token_str_escaped_char -| 39 = @swift_token_super_expression -| 40 = @swift_token_throw_keyword -| 41 = @swift_token_throws -| 42 = @swift_token_try_operator -| 43 = @swift_token_type_identifier -| 44 = @swift_token_visibility_modifier -| 45 = @swift_token_where_keyword -| 46 = @swift_token_wildcard_pattern +| 1 = @swift_token_as_operator +| 2 = @swift_token_bang +| 3 = @swift_token_bin_literal +| 4 = @swift_token_boolean_literal +| 5 = @swift_token_catch_keyword +| 6 = @swift_token_comment +| 7 = @swift_token_custom_operator +| 8 = @swift_token_default_keyword +| 9 = @swift_token_diagnostic +| 10 = @swift_token_else +| 11 = @swift_token_fully_open_range +| 12 = @swift_token_function_modifier +| 13 = @swift_token_hex_literal +| 14 = @swift_token_inheritance_modifier +| 15 = @swift_token_integer_literal +| 16 = @swift_token_line_str_text +| 17 = @swift_token_member_modifier +| 18 = @swift_token_multi_line_str_text +| 19 = @swift_token_multiline_comment +| 20 = @swift_token_mutation_modifier +| 21 = @swift_token_oct_literal +| 22 = @swift_token_ownership_modifier +| 23 = @swift_token_parameter_modifier +| 24 = @swift_token_property_behavior_modifier +| 25 = @swift_token_property_modifier +| 26 = @swift_token_raw_str_continuing_indicator +| 27 = @swift_token_raw_str_end_part +| 28 = @swift_token_raw_str_interpolation_start +| 29 = @swift_token_raw_str_part +| 30 = @swift_token_real_literal +| 31 = @swift_token_regex_literal +| 32 = @swift_token_self_expression +| 33 = @swift_token_shebang_line +| 34 = @swift_token_simple_identifier +| 35 = @swift_token_special_literal +| 36 = @swift_token_statement_label +| 37 = @swift_token_str_escaped_char +| 38 = @swift_token_super_expression +| 39 = @swift_token_throw_keyword +| 40 = @swift_token_throws +| 41 = @swift_token_try_operator +| 42 = @swift_token_type_identifier +| 43 = @swift_token_visibility_modifier +| 44 = @swift_token_where_keyword +| 45 = @swift_token_wildcard_pattern ; -@swift_ast_node = @swift_additive_expression | @swift_array_literal | @swift_array_type | @swift_as_expression | @swift_assignment | @swift_associatedtype_declaration | @swift_attribute | @swift_availability_condition | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_call_suffix | @swift_capture_list | @swift_capture_list_item | @swift_catch_block | @swift_check_expression | @swift_class_body | @swift_class_declaration | @swift_comparison_expression | @swift_computed_getter | @swift_computed_modify | @swift_computed_property | @swift_computed_setter | @swift_conjunction_expression | @swift_constructor_expression | @swift_constructor_suffix | @swift_control_transfer_statement | @swift_deinit_declaration | @swift_deprecated_operator_declaration_body | @swift_dictionary_literal | @swift_dictionary_type | @swift_didset_clause | @swift_directive | @swift_directly_assignable_expression | @swift_disjunction_expression | @swift_do_statement | @swift_enum_class_body | @swift_enum_entry | @swift_enum_type_parameters | @swift_equality_constraint | @swift_equality_expression | @swift_existential_type | @swift_external_macro_definition | @swift_for_statement | @swift_function_body | @swift_function_declaration | @swift_function_type | @swift_getter_specifier | @swift_guard_statement | @swift_identifier | @swift_if_statement | @swift_import_declaration | @swift_infix_expression | @swift_inheritance_constraint | @swift_inheritance_specifier | @swift_init_declaration | @swift_interpolated_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_function_type | @swift_lambda_function_type_parameters | @swift_lambda_literal | @swift_lambda_parameter | @swift_line_string_literal | @swift_macro_declaration | @swift_macro_definition | @swift_macro_invocation | @swift_metatype | @swift_modifiers | @swift_modify_specifier | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_navigation_suffix | @swift_nil_coalescing_expression | @swift_opaque_type | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_operator_declaration | @swift_optional_type | @swift_parameter | @swift_parameter_modifiers | @swift_pattern | @swift_playground_literal | @swift_postfix_expression | @swift_precedence_group_attribute | @swift_precedence_group_attributes | @swift_precedence_group_declaration | @swift_prefix_expression | @swift_property_declaration | @swift_protocol_body | @swift_protocol_composition_type | @swift_protocol_declaration | @swift_protocol_function_declaration | @swift_protocol_property_declaration | @swift_protocol_property_requirements | @swift_range_expression | @swift_raw_str_interpolation | @swift_raw_string_literal | @swift_repeat_while_statement | @swift_selector_expression | @swift_setter_specifier | @swift_source_file | @swift_statements | @swift_subscript_declaration | @swift_suppressed_constraint | @swift_switch_entry | @swift_switch_pattern | @swift_switch_statement | @swift_ternary_expression | @swift_throws_clause | @swift_token | @swift_try_expression | @swift_tuple_expression | @swift_tuple_type | @swift_tuple_type_item | @swift_type_annotation | @swift_type_arguments | @swift_type_constraint | @swift_type_constraints | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter | @swift_type_parameter_modifiers | @swift_type_parameter_pack | @swift_type_parameters | @swift_typealias_declaration | @swift_user_type | @swift_value_argument | @swift_value_argument_label | @swift_value_arguments | @swift_value_binding_pattern | @swift_value_pack_expansion | @swift_value_parameter_pack | @swift_where_clause | @swift_while_statement | @swift_willset_clause | @swift_willset_didset_block +@swift_ast_node = @swift_additive_expression | @swift_array_literal | @swift_array_type | @swift_as_expression | @swift_assignment | @swift_associatedtype_declaration | @swift_attribute | @swift_availability_condition | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_call_suffix | @swift_capture_list | @swift_capture_list_item | @swift_catch_block | @swift_check_expression | @swift_class_body | @swift_class_declaration | @swift_comparison_expression | @swift_computed_getter | @swift_computed_modify | @swift_computed_property | @swift_computed_setter | @swift_conjunction_expression | @swift_constructor_expression | @swift_constructor_suffix | @swift_control_transfer_statement | @swift_deinit_declaration | @swift_deprecated_operator_declaration_body | @swift_dictionary_literal | @swift_dictionary_type | @swift_didset_clause | @swift_directive | @swift_directly_assignable_expression | @swift_disjunction_expression | @swift_do_statement | @swift_enum_class_body | @swift_enum_entry | @swift_enum_type_parameters | @swift_equality_constraint | @swift_equality_expression | @swift_existential_type | @swift_external_macro_definition | @swift_for_statement | @swift_function_body | @swift_function_declaration | @swift_function_type | @swift_getter_specifier | @swift_guard_statement | @swift_identifier | @swift_if_condition | @swift_if_let_binding | @swift_if_statement | @swift_implicitly_unwrapped_type | @swift_import_declaration | @swift_infix_expression | @swift_inheritance_constraint | @swift_inheritance_specifier | @swift_init_declaration | @swift_interpolated_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_function_type | @swift_lambda_function_type_parameters | @swift_lambda_literal | @swift_lambda_parameter | @swift_line_string_literal | @swift_macro_declaration | @swift_macro_definition | @swift_macro_invocation | @swift_metatype | @swift_modifiers | @swift_modify_specifier | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_navigation_suffix | @swift_nested_type_identifier | @swift_nil_coalescing_expression | @swift_opaque_type | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_operator_declaration | @swift_optional_chain_marker | @swift_optional_type | @swift_parameter | @swift_parameter_modifiers | @swift_pattern | @swift_playground_literal | @swift_postfix_expression | @swift_precedence_group_attribute | @swift_precedence_group_attributes | @swift_precedence_group_declaration | @swift_prefix_expression | @swift_property_declaration | @swift_protocol_body | @swift_protocol_composition_type | @swift_protocol_declaration | @swift_protocol_function_declaration | @swift_protocol_property_declaration | @swift_protocol_property_requirements | @swift_range_expression | @swift_raw_str_interpolation | @swift_raw_string_literal | @swift_referenceable_operator | @swift_repeat_while_statement | @swift_selector_expression | @swift_setter_specifier | @swift_source_file | @swift_statements | @swift_subscript_declaration | @swift_suppressed_constraint | @swift_switch_entry | @swift_switch_pattern | @swift_switch_statement | @swift_ternary_expression | @swift_throws_clause | @swift_token | @swift_try_expression | @swift_tuple_expression | @swift_tuple_type | @swift_tuple_type_item | @swift_type__ | @swift_type_annotation | @swift_type_arguments | @swift_type_constraint | @swift_type_constraints | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter | @swift_type_parameter_modifiers | @swift_type_parameter_pack | @swift_type_parameters | @swift_typealias_declaration | @swift_user_type | @swift_value_argument | @swift_value_argument_label | @swift_value_arguments | @swift_value_binding_pattern | @swift_value_pack_expansion | @swift_value_parameter_pack | @swift_where_clause | @swift_while_statement | @swift_willset_clause | @swift_willset_didset_block swift_ast_node_location( unique int node: @swift_ast_node ref, diff --git a/unified/scripts/regenerate-grammar.sh b/unified/scripts/regenerate-grammar.sh new file mode 100755 index 00000000000..b7a5ce263fb --- /dev/null +++ b/unified/scripts/regenerate-grammar.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# Regenerate the vendored tree-sitter-swift parser tables from grammar.js, +# then refresh the human-readable node-types.yml companion file. +# +# Run this after editing +# unified/extractor/tree-sitter-swift/grammar.js so that: +# * src/parser.c, src/grammar.json, src/node-types.json (and the +# src/tree_sitter/*.h headers) reflect the current grammar; and +# * node-types.yml shows the same information in a form that's +# pleasant to review in PR diffs. +# +# Requirements: tree-sitter CLI on PATH, and a working cargo toolchain. +set -euo pipefail + +cd "$(dirname "$0")/.." +SWIFT_DIR="extractor/tree-sitter-swift" + +( + cd "$SWIFT_DIR" + tree-sitter generate +) + +# Build yeast's node_types_yaml binary and use it to convert the freshly +# generated src/node-types.json into the human-readable node-types.yml. +cargo run --release --quiet -p yeast --bin node_types_yaml -- \ + --from-json "$SWIFT_DIR/src/node-types.json" > "$SWIFT_DIR/node-types.yml" + +echo "Regenerated $SWIFT_DIR/{src/parser.c,src/grammar.json,src/node-types.json,node-types.yml}"